From 4cfb32cd72bb57cdc349fd69a836d56640d74a83 Mon Sep 17 00:00:00 2001 From: seuzw <930zhaowei@163.com> Date: Tue, 12 May 2020 14:12:30 +0800 Subject: [PATCH] update to 4.4.2 --- 0001-change-bug-url.patch | 78 ++++ ... => 0002-additional-dhclient-options.patch | 101 +++-- ...ng-interfaces-requested-by-sbin-ifup.patch | 22 +- ...BOOTP-for-IBM-pSeries-systems-and-ma.patch | 37 +- ...005-Change-default-requested-options.patch | 22 +- 0006-Various-man-page-only-fixes.patch | 168 +++++++++ ...ge-paths-to-conform-to-our-standards.patch | 54 +++ ...en-file-descriptors-are-closed-on-ex.patch | 179 +++++---- 0009-Fix-garbage-in-format-string-error.patch | 27 ++ 0010-Handle-null-timeout.patch | 32 ++ ...> 0011-Drop-unnecessary-capabilities.patch | 89 +++-- ...ss-Static-Route-Option-for-DHCPv4-51.patch | 164 ++++---- ... 0013-DHCPv6-over-PPP-support-626514.patch | 104 ++++-- ...b.patch => 0014-IPoIB-support-660681.patch | 165 ++++---- ...-Add-GUID-DUID-to-dhcpd-logs-1064416.patch | 332 +++++++++++++++++ 0016-Turn-on-creating-sending-of-DUID.patch | 126 +++++++ ...equest-release-via-correct-interface.patch | 30 +- ...ation-for-iface-should-be-info-not-e.patch | 25 +- ...UID_LLT-even-in-stateless-mode-11563.patch | 29 ++ ...ver-all-hwaddress-for-xid-uniqueness.patch | 31 +- ...ad-leases-DB-in-non-replay-mode-only.patch | 50 +++ ...re-link-local-address-is-ready-in-st.patch | 30 +- ...atch => 0023-option-97-pxe-client-id.patch | 114 +++--- 0024-Detect-system-time-changes.patch | 93 +++++ 0025-bind-Detect-system-time-changes.patch | 197 ++++++++++ ...-Add-dhclient-5-B-option-description.patch | 24 ++ ...tify-patch-to-manage-dhcpd-with-syst.patch | 48 ++- 12-dhcpd | 19 - CVE-2019-6470.patch | 218 ----------- Correct-BIND9-dns-API-call-constant.patch | 35 -- ...nt-command-line-parsing-of-dad-wait-.patch | 27 -- bugfix-dhclient-check-if-pid-was-held.patch | 16 +- dhcp-4.3.6-isc-util.patch | 77 ---- dhcp-4.3.6-omapi-leak.patch | 52 --- dhcp-4.3.6-options_overflow.patch | 41 -- dhcp-4.3.6-reference_count_overflow.patch | 13 - dhcp-4.3.6.tar.gz => dhcp-4.4.2b1.tar.gz | Bin 10182593 -> 9902887 bytes dhcp-64_bit_lease_parse.patch | 75 ---- dhcp-IPoIB-log-id.patch | 164 -------- dhcp-add_timeout_when_NULL.patch | 14 - dhcp-dhclient-decline-backoff.patch | 63 ---- dhcp-garbage-chars.patch | 12 - dhcp-handle_ctx_signals.patch | 44 --- dhcp-honor-expired.patch | 49 --- dhcp-improved-xid.patch | 138 ------- dhcp-paths.patch | 38 -- dhcp-remove-bind.patch | 351 ------------------ dhcp-sendDecline.patch | 231 ------------ dhcp-sharedlib.patch | 149 -------- dhcp-stateless-DUID-LLT.patch | 13 - dhcp.spec | 139 ++++--- 51 files changed, 2000 insertions(+), 2349 deletions(-) create mode 100644 0001-change-bug-url.patch rename dhcp-dhclient-options.patch => 0002-additional-dhclient-options.patch (85%) rename dhcp-release-by-ifup.patch => 0003-Handle-releasing-interfaces-requested-by-sbin-ifup.patch (80%) rename dhcp-unicast-bootp.patch => 0004-Support-unicast-BOOTP-for-IBM-pSeries-systems-and-ma.patch (75%) rename dhcp-default-requested-options.patch => 0005-Change-default-requested-options.patch (69%) create mode 100644 0006-Various-man-page-only-fixes.patch create mode 100644 0007-Change-paths-to-conform-to-our-standards.patch rename dhcp-CLOEXEC.patch => 0008-Make-sure-all-open-file-descriptors-are-closed-on-ex.patch (67%) create mode 100644 0009-Fix-garbage-in-format-string-error.patch create mode 100644 0010-Handle-null-timeout.patch rename dhcp-capability.patch => 0011-Drop-unnecessary-capabilities.patch (75%) rename dhcp-rfc3442-classless-static-routes.patch => 0012-RFC-3442-Classless-Static-Route-Option-for-DHCPv4-51.patch (76%) rename dhcp-PPP.patch => 0013-DHCPv6-over-PPP-support-626514.patch (64%) rename dhcp-lpf-ib.patch => 0014-IPoIB-support-660681.patch (77%) create mode 100644 0015-Add-GUID-DUID-to-dhcpd-logs-1064416.patch create mode 100644 0016-Turn-on-creating-sending-of-DUID.patch rename dhcp-client-request-release-bind-iface.patch => 0017-Send-unicast-request-release-via-correct-interface.patch (70%) rename dhcp-no-subnet-error2info.patch => 0018-No-subnet-declaration-for-iface-should-be-info-not-e.patch (70%) create mode 100644 0019-dhclient-write-DUID_LLT-even-in-stateless-mode-11563.patch rename dhcp-iface_hwaddr_discovery.patch => 0020-Discover-all-hwaddress-for-xid-uniqueness.patch (71%) create mode 100644 0021-Load-leases-DB-in-non-replay-mode-only.patch rename dhcp-dhclient-preinit6s.patch => 0022-dhclient-make-sure-link-local-address-is-ready-in-st.patch (67%) rename dhcp-option97-pxe-client-id.patch => 0023-option-97-pxe-client-id.patch (69%) create mode 100644 0024-Detect-system-time-changes.patch create mode 100644 0025-bind-Detect-system-time-changes.patch create mode 100644 0026-Add-dhclient-5-B-option-description.patch rename dhcp-sd_notify.patch => 0027-Add-missed-sd-notify-patch-to-manage-dhcpd-with-syst.patch (63%) delete mode 100644 12-dhcpd delete mode 100644 CVE-2019-6470.patch delete mode 100644 Correct-BIND9-dns-API-call-constant.patch delete mode 100644 Corrected-dhclient-command-line-parsing-of-dad-wait-.patch delete mode 100644 dhcp-4.3.6-isc-util.patch delete mode 100644 dhcp-4.3.6-omapi-leak.patch delete mode 100644 dhcp-4.3.6-options_overflow.patch delete mode 100644 dhcp-4.3.6-reference_count_overflow.patch rename dhcp-4.3.6.tar.gz => dhcp-4.4.2b1.tar.gz (54%) delete mode 100644 dhcp-64_bit_lease_parse.patch delete mode 100644 dhcp-IPoIB-log-id.patch delete mode 100644 dhcp-add_timeout_when_NULL.patch delete mode 100644 dhcp-dhclient-decline-backoff.patch delete mode 100644 dhcp-garbage-chars.patch delete mode 100644 dhcp-handle_ctx_signals.patch delete mode 100644 dhcp-honor-expired.patch delete mode 100644 dhcp-improved-xid.patch delete mode 100644 dhcp-paths.patch delete mode 100644 dhcp-remove-bind.patch delete mode 100644 dhcp-sendDecline.patch delete mode 100644 dhcp-sharedlib.patch delete mode 100644 dhcp-stateless-DUID-LLT.patch diff --git a/0001-change-bug-url.patch b/0001-change-bug-url.patch new file mode 100644 index 0000000..b6afa57 --- /dev/null +++ b/0001-change-bug-url.patch @@ -0,0 +1,78 @@ +From 23dfbc560028bf7429196db1a3826f8b80c19d3e Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:09:57 +0100 +Subject: [PATCH 01/26] change bug url +Cc: pzhukov@redhat.com + +--- + omapip/errwarn.c | 47 ++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 42 insertions(+), 5 deletions(-) + +diff --git a/omapip/errwarn.c b/omapip/errwarn.c +index e30f8a0..09a3004 100644 +--- a/omapip/errwarn.c ++++ b/omapip/errwarn.c +@@ -48,6 +48,41 @@ void (*log_cleanup) (void); + static char mbuf [CVT_BUF_MAX + 1]; + static char fbuf [CVT_BUF_MAX + 1]; + ++// get BUG_REPORT_URL from /etc/os-release ++char * bug_report_url(void) { ++ FILE * file = fopen("/etc/os-release", "r"); ++ size_t len; ++ char * line = NULL; ++ char * url = NULL; ++ size_t url_len = 256; ++ ++ url = (char *) malloc(url_len * sizeof(char)); ++ strcpy(url, "https://bugzilla.redhat.com/"); ++ ++ if (!file) ++ return url; ++ ++ while ((getline(&line, &len, file)) != -1) { ++ if (strstr(line, "BUG_REPORT_URL") != NULL) { ++ char * start = strchr(line, '='); ++ char * rquotes = strrchr(line, '"'); ++ ++ if (rquotes != NULL) { ++ *rquotes = '\0'; ++ strncpy(url, start+2, url_len); ++ } else { ++ strncpy(url, start+1, url_len); ++ } ++ url[url_len-1] = '\0'; ++ fclose(file); ++ return url; ++ } ++ } ++ fclose(file); ++ return url; ++} ++ ++ + /* Log an error message, then exit... */ + + void log_fatal (const char * fmt, ... ) +@@ -74,11 +109,13 @@ void log_fatal (const char * fmt, ... ) + } + + log_error ("%s", ""); +- log_error ("If you think you have received this message due to a bug rather"); +- log_error ("than a configuration issue please read the section on submitting"); +- log_error ("bugs on either our web page at www.isc.org or in the README file"); +- log_error ("before submitting a bug. These pages explain the proper"); +- log_error ("process and the information we find helpful for debugging."); ++ log_error ("This version of ISC DHCP is based on the release available"); ++ log_error ("on ftp.isc.org. Features have been added and other changes"); ++ log_error ("have been made to the base software release in order to make"); ++ log_error ("it work better with this distribution."); ++ log_error ("%s", ""); ++ log_error ("Please report issues with this software via: "); ++ log_error ("%s", bug_report_url()); + log_error ("%s", ""); + log_error ("exiting."); + +-- +2.14.5 + diff --git a/dhcp-dhclient-options.patch b/0002-additional-dhclient-options.patch similarity index 85% rename from dhcp-dhclient-options.patch rename to 0002-additional-dhclient-options.patch index 806ac63..d700c00 100644 --- a/dhcp-dhclient-options.patch +++ b/0002-additional-dhclient-options.patch @@ -1,5 +1,20 @@ +From a26161b0fd45cdbeed3038ac63ff04e3b727248f Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:19:47 +0100 +Subject: [PATCH 02/26] additional dhclient options +Cc: pzhukov@redhat.com + +--- + client/clparse.c | 10 +- + client/dhclient.8 | 27 ++++++ + client/dhclient.c | 271 +++++++++++++++++++++++++++++++++++++++++++++++++++- + common/conflex.c | 2 + + includes/dhcpd.h | 3 + + includes/dhctoken.h | 1 + + 6 files changed, 308 insertions(+), 6 deletions(-) + diff --git a/client/clparse.c b/client/clparse.c -index 03190c3..2033427 100644 +index eaf48a8..7212e3a 100644 --- a/client/clparse.c +++ b/client/clparse.c @@ -189,6 +189,7 @@ isc_result_t read_client_conf () @@ -34,7 +49,7 @@ index 03190c3..2033427 100644 default: lose = 0; diff --git a/client/dhclient.8 b/client/dhclient.8 -index 24f8f12..aa2238d 100644 +index ebc750f..6d7fbdb 100644 --- a/client/dhclient.8 +++ b/client/dhclient.8 @@ -134,6 +134,33 @@ dhclient - Dynamic Host Configuration Protocol Client @@ -72,12 +87,12 @@ index 24f8f12..aa2238d 100644 .I seconds ] diff --git a/client/dhclient.c b/client/dhclient.c -index dcf3f1a..270a960 100644 +index 825ab00..26a333c 100644 --- a/client/dhclient.c +++ b/client/dhclient.c -@@ -40,6 +40,12 @@ - #include - #include +@@ -41,6 +41,12 @@ + #include + #include +/* + * Defined in stdio.h when _GNU_SOURCE is set, but we don't want to define @@ -88,7 +103,7 @@ index dcf3f1a..270a960 100644 TIME default_lease_time = 43200; /* 12 hours... */ TIME max_lease_time = 86400; /* 24 hours... */ -@@ -101,6 +107,10 @@ char *mockup_relay = NULL; +@@ -110,6 +116,10 @@ char *mockup_relay = NULL; char *progname = NULL; @@ -99,25 +114,27 @@ index dcf3f1a..270a960 100644 void run_stateless(int exit_mode, u_int16_t port); static isc_result_t write_duid(struct data_string *duid); -@@ -179,7 +189,11 @@ usage(const char *sfmt, const char *sarg) - " [-s server-addr] [-cf config-file]\n" - " [-df duid-file] [-lf lease-file]\n" - " [-pf pid-file] [--no-pid] [-e VAR=val]\n" -- " [-sf script-file] [interface]*", -+ " [-sf script-file] [interface]*\n" -+ " [-C ] [-B]\n" -+ " [-H | -F ] [--timeout ]\n" -+ " [-V ]\n" -+ " [--request-options ]", - isc_file_basename(progname)); - } +@@ -183,8 +193,12 @@ static const char use_v6command[] = "Command not used for DHCPv4: %s"; + " [-s server-addr] [-cf config-file]\n" \ + " [-df duid-file] [-lf lease-file]\n" \ + " [-pf pid-file] [--no-pid] [-e VAR=val]\n" \ +-" [-sf script-file] [interface]*" +- ++" [-sf script-file] [interface]*\n" \ ++" [-C ] [-B]\n" \ ++" [-H | -F ] [--timeout ]\n" \ ++" [-V ]\n" \ ++" [--request-options ]" ++ + #define DHCLIENT_USAGEH "{--version|--help|-h}" -@@ -216,6 +230,16 @@ main(int argc, char **argv) { + static void +@@ -243,6 +257,16 @@ main(int argc, char **argv) { + #else progname = argv[0]; #endif - -+ char *dhcp_client_identifier_arg = NULL; -+ char *dhcp_host_name_arg = NULL; ++ char *dhcp_client_identifier_arg = NULL; ++ char *dhcp_host_name_arg = NULL; + char *dhcp_fqdn_arg = NULL; + char *dhcp_vendor_class_identifier_arg = NULL; + char *dhclient_request_options = NULL; @@ -129,10 +146,10 @@ index dcf3f1a..270a960 100644 /* Initialize client globals. */ memset(&default_duid, 0, sizeof(default_duid)); -@@ -442,6 +466,88 @@ main(int argc, char **argv) { - strlen(PACKAGE_VERSION))); - IGNORE_RET(write(STDERR_FILENO, "\n", 1)); - exit(0); +@@ -558,6 +582,89 @@ main(int argc, char **argv) { + std_dhcid = 1; + } else if (!strcmp(argv[i], "-v")) { + quiet = 0; + } else if (!strcmp(argv[i], "-C")) { + if ((++i == argc) || (argv[i] == NULL) || (*(argv[i])=='\0')) { + usage(use_noarg, argv[i-1]); @@ -215,10 +232,11 @@ index dcf3f1a..270a960 100644 + } + + dhclient_request_options = argv[i]; ++ } else if (argv[i][0] == '-') { usage("Unknown command: %s", argv[i]); } else if (interfaces_requested < 0) { -@@ -641,6 +747,156 @@ main(int argc, char **argv) { +@@ -754,6 +861,156 @@ main(int argc, char **argv) { /* Parse the dhclient.conf file. */ read_client_conf(); @@ -375,7 +393,7 @@ index dcf3f1a..270a960 100644 /* Parse the lease database. */ read_client_leases(); -@@ -3092,7 +3348,8 @@ void make_discover (client, lease) +@@ -3226,7 +3483,8 @@ void make_discover (client, lease) client -> packet.xid = random (); client -> packet.secs = 0; /* filled in by send_discover. */ @@ -385,7 +403,7 @@ index dcf3f1a..270a960 100644 client -> packet.flags = 0; else client -> packet.flags = htons (BOOTP_BROADCAST); -@@ -3177,7 +3434,9 @@ void make_request (client, lease) +@@ -3311,7 +3569,9 @@ void make_request (client, lease) } else { memset (&client -> packet.ciaddr, 0, sizeof client -> packet.ciaddr); @@ -396,7 +414,7 @@ index dcf3f1a..270a960 100644 client -> packet.flags = 0; else client -> packet.flags = htons (BOOTP_BROADCAST); -@@ -3240,7 +3499,8 @@ void make_decline (client, lease) +@@ -3374,7 +3634,8 @@ void make_decline (client, lease) client -> packet.hops = 0; client -> packet.xid = client -> xid; client -> packet.secs = 0; /* Filled in by send_request. */ @@ -407,7 +425,7 @@ index dcf3f1a..270a960 100644 else client -> packet.flags = htons (BOOTP_BROADCAST); diff --git a/common/conflex.c b/common/conflex.c -index fe994ac..bdb4a52 100644 +index 045b655..71c0bf5 100644 --- a/common/conflex.c +++ b/common/conflex.c @@ -832,6 +832,8 @@ intern(char *atom, enum dhcp_token dfv) { @@ -420,10 +438,10 @@ index fe994ac..bdb4a52 100644 case 'c': if (!strcasecmp(atom + 1, "ase")) diff --git a/includes/dhcpd.h b/includes/dhcpd.h -index eab09a6..cfdac23 100644 +index 5930e6a..018fa34 100644 --- a/includes/dhcpd.h +++ b/includes/dhcpd.h -@@ -1251,6 +1251,9 @@ struct client_config { +@@ -1269,6 +1269,9 @@ struct client_config { int lease_id_format; /* format for IDs in lease file, TOKEN_OCTAL or TOKEN_HEX */ @@ -434,16 +452,17 @@ index eab09a6..cfdac23 100644 /* Per-interface state used in the dhcp client... */ diff --git a/includes/dhctoken.h b/includes/dhctoken.h -index 15bbd1c..b312e7a 100644 +index 5920f4f..7e7215a 100644 --- a/includes/dhctoken.h +++ b/includes/dhctoken.h -@@ -373,7 +373,8 @@ enum dhcp_token { - TOKEN_BIG_ENDIAN = 675, - LEASE_ID_FORMAT = 676, +@@ -377,6 +377,7 @@ enum dhcp_token { TOKEN_HEX = 677, -- TOKEN_OCTAL = 678 -+ TOKEN_OCTAL = 678, -+ BOOTP_BROADCAST_ALWAYS = 679 + TOKEN_OCTAL = 678, + KEY_ALGORITHM = 679 ++ BOOTP_BROADCAST_ALWAYS = 680 }; #define is_identifier(x) ((x) >= FIRST_TOKEN && \ +-- +2.14.5 + diff --git a/dhcp-release-by-ifup.patch b/0003-Handle-releasing-interfaces-requested-by-sbin-ifup.patch similarity index 80% rename from dhcp-release-by-ifup.patch rename to 0003-Handle-releasing-interfaces-requested-by-sbin-ifup.patch index 677eb5c..2953c0f 100644 --- a/dhcp-release-by-ifup.patch +++ b/0003-Handle-releasing-interfaces-requested-by-sbin-ifup.patch @@ -1,7 +1,18 @@ -diff -up dhcp-4.3.0a1/client/dhclient.c.ifup dhcp-4.3.0a1/client/dhclient.c ---- dhcp-4.3.0a1/client/dhclient.c.ifup 2013-12-19 14:53:08.817760677 +0100 -+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-19 15:05:16.290518574 +0100 -@@ -521,9 +521,81 @@ main(int argc, char **argv) { +From af504e99abde04b881768d18eaa0054b36b16303 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:21:14 +0100 +Subject: [PATCH 03/26] Handle releasing interfaces requested by /sbin/ifup +Cc: pzhukov@redhat.com + +--- + client/dhclient.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 72 insertions(+) + +diff --git a/client/dhclient.c b/client/dhclient.c +index 26a333c..2a2e9e6 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -787,9 +787,81 @@ main(int argc, char **argv) { } } fclose(pidfd); @@ -83,3 +94,6 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.ifup dhcp-4.3.0a1/client/dhclient.c if (!quiet) { log_info("%s %s", message, PACKAGE_VERSION); log_info(copyright); +-- +2.14.5 + diff --git a/dhcp-unicast-bootp.patch b/0004-Support-unicast-BOOTP-for-IBM-pSeries-systems-and-ma.patch similarity index 75% rename from dhcp-unicast-bootp.patch rename to 0004-Support-unicast-BOOTP-for-IBM-pSeries-systems-and-ma.patch index abf89f2..7f414a3 100644 --- a/dhcp-unicast-bootp.patch +++ b/0004-Support-unicast-BOOTP-for-IBM-pSeries-systems-and-ma.patch @@ -1,6 +1,19 @@ -diff -up dhcp-4.3.4/server/bootp.c.unicast dhcp-4.3.4/server/bootp.c ---- dhcp-4.3.4/server/bootp.c.unicast 2016-03-22 14:16:51.000000000 +0100 -+++ dhcp-4.3.4/server/bootp.c 2016-05-02 15:09:40.023243008 +0200 +From 7e8cc8388ac31c5c2b1a423c6b2da0491b19f6f9 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:22:41 +0100 +Subject: [PATCH 04/26] Support unicast BOOTP for IBM pSeries systems (and + maybe others) +Cc: pzhukov@redhat.com + +--- + server/bootp.c | 12 +++++++++++- + server/dhcp.c | 33 ++++++++++++++++++++++++++------- + 2 files changed, 37 insertions(+), 8 deletions(-) + +diff --git a/server/bootp.c b/server/bootp.c +index 26a7607..2212f31 100644 +--- a/server/bootp.c ++++ b/server/bootp.c @@ -52,6 +52,7 @@ void bootp (packet) char msgbuf [1024]; int ignorep; @@ -34,10 +47,11 @@ diff -up dhcp-4.3.4/server/bootp.c.unicast dhcp-4.3.4/server/bootp.c /* If it comes from a client that already knows its address and is not requesting a broadcast response, and we can -diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c ---- dhcp-4.3.4/server/dhcp.c.unicast 2016-03-22 14:16:51.000000000 +0100 -+++ dhcp-4.3.4/server/dhcp.c 2016-05-02 15:10:13.255267511 +0200 -@@ -5132,6 +5132,7 @@ int locate_network (packet) +diff --git a/server/dhcp.c b/server/dhcp.c +index 6f3a91f..20f2a62 100644 +--- a/server/dhcp.c ++++ b/server/dhcp.c +@@ -5224,6 +5224,7 @@ int locate_network (packet) struct data_string data; struct subnet *subnet = (struct subnet *)0; struct option_cache *oc; @@ -45,7 +59,7 @@ diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c #if defined(DHCPv6) && defined(DHCP4o6) if (dhcpv4_over_dhcpv6 && (packet->dhcp4o6_response != NULL)) { -@@ -5153,12 +5154,24 @@ int locate_network (packet) +@@ -5245,12 +5246,24 @@ int locate_network (packet) from the interface, if there is one. If not, fail. */ if (!oc && !packet -> raw -> giaddr.s_addr) { if (packet -> interface -> shared_network) { @@ -75,7 +89,7 @@ diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c } /* If there's an option indicating link connection, and it's valid, -@@ -5185,7 +5198,10 @@ int locate_network (packet) +@@ -5277,7 +5290,10 @@ int locate_network (packet) data_string_forget (&data, MDL); } else { ia.len = 4; @@ -87,7 +101,7 @@ diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c } /* If we know the subnet on which the IP address lives, use it. */ -@@ -5193,7 +5209,10 @@ int locate_network (packet) +@@ -5285,7 +5301,10 @@ int locate_network (packet) shared_network_reference (&packet -> shared_network, subnet -> shared_network, MDL); subnet_dereference (&subnet, MDL); @@ -99,3 +113,6 @@ diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c } /* Otherwise, fail. */ +-- +2.14.5 + diff --git a/dhcp-default-requested-options.patch b/0005-Change-default-requested-options.patch similarity index 69% rename from dhcp-default-requested-options.patch rename to 0005-Change-default-requested-options.patch index f57fa1f..34ff7b5 100644 --- a/dhcp-default-requested-options.patch +++ b/0005-Change-default-requested-options.patch @@ -1,6 +1,19 @@ -diff -up dhcp-4.3.4/client/clparse.c.requested dhcp-4.3.4/client/clparse.c ---- dhcp-4.3.4/client/clparse.c.requested 2016-04-29 12:18:50.157151352 +0200 -+++ dhcp-4.3.4/client/clparse.c 2016-04-29 12:19:22.235137243 +0200 +From a2a3554ff9e05d1a8e2c8aa843f1b6a33fce87e3 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:24:24 +0100 +Subject: [PATCH 05/26] Change default requested options +Cc: pzhukov@redhat.com + +Add NIS domain, NIS servers, NTP servers, interface-mtu and domain-search +to the list of default requested DHCP options +--- + client/clparse.c | 27 ++++++++++++++++++++++++++- + 1 file changed, 26 insertions(+), 1 deletion(-) + +diff --git a/client/clparse.c b/client/clparse.c +index 7212e3a..39b95a0 100644 +--- a/client/clparse.c ++++ b/client/clparse.c @@ -31,7 +31,7 @@ struct client_config top_level_config; @@ -42,3 +55,6 @@ diff -up dhcp-4.3.4/client/clparse.c.requested dhcp-4.3.4/client/clparse.c for (code = 0 ; code < NUM_DEFAULT_REQUESTED_OPTS ; code++) { if (default_requested_options[code] == NULL) log_fatal("Unable to find option definition for " +-- +2.14.5 + diff --git a/0006-Various-man-page-only-fixes.patch b/0006-Various-man-page-only-fixes.patch new file mode 100644 index 0000000..a98783c --- /dev/null +++ b/0006-Various-man-page-only-fixes.patch @@ -0,0 +1,168 @@ +From 846779467f7393b19e8d206405116e1e26e16efc Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:25:53 +0100 +Subject: [PATCH 06/26] Various man-page-only fixes +Cc: pzhukov@redhat.com + +--- + client/dhclient-script.8 | 22 +++++++++++++++++++++- + client/dhclient.conf.5 | 14 +++++++++++++- + common/dhcp-options.5 | 15 +++++++++++++++ + server/dhcpd.conf.5 | 14 +++++++++----- + 4 files changed, 58 insertions(+), 7 deletions(-) + +diff --git a/client/dhclient-script.8 b/client/dhclient-script.8 +index 3553afd..0db5516 100644 +--- a/client/dhclient-script.8 ++++ b/client/dhclient-script.8 +@@ -43,7 +43,7 @@ customizations are needed, they should be possible using the enter and + exit hooks provided (see HOOKS for details). These hooks will allow the + user to override the default behaviour of the client in creating a + .B /etc/resolv.conf +-file. ++file, and to handle DHCP options not handled by default. + .PP + No standard client script exists for some operating systems, even though + the actual client may work, so a pioneering user may well need to create +@@ -87,6 +87,26 @@ present. The + .B ETCDIR/dhclient-exit-hooks + script can modify the valid of exit_status to change the exit status + of dhclient-script. ++.PP ++Immediately after dhclient brings an interface UP with a new IP address, ++subnet mask, and routes, in the REBOOT/BOUND states, it will check for the ++existence of an executable ++.B ETCDIR/dhclient-up-hooks ++script, and source it if found. This script can handle DHCP options in ++the environment that are not handled by default. A per-interface. ++.B ETCDIR/dhclient-${IF}-up-hooks ++script will override the generic script and be sourced when interface ++$IF has been brought up. ++.PP ++Immediately before dhclient brings an interface DOWN, removing its IP ++address, subnet mask, and routes, in the STOP/RELEASE states, it will ++check for the existence of an executable ++.B ETCDIR/dhclient-down-hooks ++script, and source it if found. This script can handle DHCP options in ++the environment that are not handled by default. A per-interface ++.B ETCDIR/dhclient-${IF}-down-hooks ++script will override the generic script and be sourced when interface ++$IF is about to be brought down. + .SH OPERATION + When dhclient needs to invoke the client configuration script, it + defines a set of variables in the environment, and then invokes +diff --git a/client/dhclient.conf.5 b/client/dhclient.conf.5 +index fa3b908..566a881 100644 +--- a/client/dhclient.conf.5 ++++ b/client/dhclient.conf.5 +@@ -228,7 +228,8 @@ responding to the client send the client its values for the specified + options. Only the option names should be specified in the request + statement - not option parameters. By default, the DHCPv4 client + requests the subnet-mask, broadcast-address, time-offset, routers, +-domain-name, domain-name-servers and host-name options while the DHCPv6 ++domain-search, domain-name, domain-name-servers, host-name, nis-domain, ++nis-servers, ntp-servers and interface-mtu options while the DHCPv6 + client requests the dhcp6 name-servers and domain-search options. Note + that if you enter a \'request\' statement, you over-ride these defaults + and these options will not be requested. +@@ -735,6 +736,17 @@ broadcast packets transmitted by DHCP clients, but is only useful if you + know the DHCP service(s) anycast MAC address prior to configuring your + client. The \fIlink-type\fR and \fImac-address\fR parameters are configured + in a similar manner to the \fBhardware\fR statement. ++.PP ++ \fBbootp-broadcast-always;\fR ++.PP ++The ++.B bootp-broadcast-always ++statement instructs dhclient to always set the bootp broadcast flag in ++request packets, so that servers will always broadcast replies. ++This is equivalent to supplying the dhclient -B argument, and has ++the same effect as specifying 'always-broadcast' in the server's dhcpd.conf. ++This option is provided as an extension to enable dhclient to work ++on IBM s390 Linux guests. + .PP + .SH SAMPLE + The following configuration file was used on a laptop running NetBSD +diff --git a/common/dhcp-options.5 b/common/dhcp-options.5 +index 33d4804..d9e1197 100644 +--- a/common/dhcp-options.5 ++++ b/common/dhcp-options.5 +@@ -1068,6 +1068,21 @@ classless IP routing - it does not include a subnet mask. Since + classless IP routing is now the most widely deployed routing standard, + this option is virtually useless, and is not implemented by any of the + popular DHCP clients, for example the Microsoft DHCP client. ++.PP ++NOTE to Fedora dhclient users: ++.br ++dhclient-script interprets trailing 0 octets of the target as indicating ++the subnet class of the route, so for the following static-routes value: ++.br ++ option static-routes 172.0.0.0 172.16.2.254, ++.br ++ 192.168.0.0 192.168.2.254; ++.br ++dhclient-script will create routes: ++.br ++ 172/8 via 172.16.2.254 dev $interface ++.br ++ 192.168/16 via 192.168.2.254 dev $interface + .RE + .PP + .nf +diff --git a/server/dhcpd.conf.5 b/server/dhcpd.conf.5 +index 17330d4..89b5540 100644 +--- a/server/dhcpd.conf.5 ++++ b/server/dhcpd.conf.5 +@@ -527,6 +527,9 @@ pool { + }; + .fi + .PP ++Dynamic BOOTP leases are not compatible with failover, and, as such, ++you need to disallow BOOTP in pools that you are using failover for. ++.PP + The server currently does very little sanity checking, so if you + configure it wrong, it will just fail in odd ways. I would recommend + therefore that you either do failover or don't do failover, but don't +@@ -541,9 +544,9 @@ primary server might look like this: + failover peer "foo" { + primary; + address anthrax.rc.example.com; +- port 519; ++ port 647; + peer address trantor.rc.example.com; +- peer port 520; ++ peer port 847; + max-response-delay 60; + max-unacked-updates 10; + mclt 3600; +@@ -1323,7 +1326,7 @@ the zone containing PTR records - for ISC BIND, something like this: + .PP + .nf + key DHCP_UPDATER { +- algorithm HMAC-MD5.SIG-ALG.REG.INT; ++ algorithm hmac-md5; + secret pRP5FapFoJ95JEL06sv4PQ==; + }; + +@@ -1346,7 +1349,7 @@ dhcpd.conf file: + .PP + .nf + key DHCP_UPDATER { +- algorithm HMAC-MD5.SIG-ALG.REG.INT; ++ algorithm hmac-md5; + secret pRP5FapFoJ95JEL06sv4PQ==; + }; + +@@ -2912,7 +2915,8 @@ statement + The \fInext-server\fR statement is used to specify the host address of + the server from which the initial boot file (specified in the + \fIfilename\fR statement) is to be loaded. \fIServer-name\fR should +-be a numeric IP address or a domain name. ++be a numeric IP address or a domain name. If no \fInext-server\fR statement ++applies to a given client, the address 0.0.0.0 is used. + .RE + .PP + The +-- +2.14.5 + diff --git a/0007-Change-paths-to-conform-to-our-standards.patch b/0007-Change-paths-to-conform-to-our-standards.patch new file mode 100644 index 0000000..87c4f8c --- /dev/null +++ b/0007-Change-paths-to-conform-to-our-standards.patch @@ -0,0 +1,54 @@ +From ac65289663532db0bc1de449ca2a0eb4c8c2ca6f Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:26:34 +0100 +Subject: [PATCH 07/26] Change paths to conform to our standards +Cc: pzhukov@redhat.com + +--- + doc/examples/dhcpd-dhcpv6.conf | 2 +- + includes/dhcpd.h | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/doc/examples/dhcpd-dhcpv6.conf b/doc/examples/dhcpd-dhcpv6.conf +index 448a6a6..2357824 100644 +--- a/doc/examples/dhcpd-dhcpv6.conf ++++ b/doc/examples/dhcpd-dhcpv6.conf +@@ -43,7 +43,7 @@ option dhcp6.domain-search "test.example.com","example.com"; + option dhcp6.info-refresh-time 21600; + + # The path of the lease file +-dhcpv6-lease-file-name "/usr/local/var/db/dhcpd6.leases"; ++dhcpv6-lease-file-name "/var/lib/dhcpd/dhcpd6.leases"; + + # Static definition (must be global) + host myclient { +diff --git a/includes/dhcpd.h b/includes/dhcpd.h +index 018fa34..3632a6b 100644 +--- a/includes/dhcpd.h ++++ b/includes/dhcpd.h +@@ -1545,7 +1545,7 @@ typedef unsigned char option_mask [16]; + #else /* !DEBUG */ + + #ifndef _PATH_DHCPD_CONF +-#define _PATH_DHCPD_CONF "/etc/dhcpd.conf" ++#define _PATH_DHCPD_CONF "/etc/dhcp/dhcpd.conf" + #endif /* DEBUG */ + + #ifndef _PATH_DHCPD_DB +@@ -1567,11 +1567,11 @@ typedef unsigned char option_mask [16]; + #endif /* DEBUG */ + + #ifndef _PATH_DHCLIENT_CONF +-#define _PATH_DHCLIENT_CONF "/etc/dhclient.conf" ++#define _PATH_DHCLIENT_CONF "/etc/dhcp/dhclient.conf" + #endif + + #ifndef _PATH_DHCLIENT_SCRIPT +-#define _PATH_DHCLIENT_SCRIPT "/sbin/dhclient-script" ++#define _PATH_DHCLIENT_SCRIPT "/usr/sbin/dhclient-script" + #endif + + #ifndef _PATH_DHCLIENT_PID +-- +2.14.5 + diff --git a/dhcp-CLOEXEC.patch b/0008-Make-sure-all-open-file-descriptors-are-closed-on-ex.patch similarity index 67% rename from dhcp-CLOEXEC.patch rename to 0008-Make-sure-all-open-file-descriptors-are-closed-on-ex.patch index 309a87c..8294563 100644 --- a/dhcp-CLOEXEC.patch +++ b/0008-Make-sure-all-open-file-descriptors-are-closed-on-ex.patch @@ -1,7 +1,32 @@ -diff -up dhcp-4.3.3b1/client/clparse.c.cloexec dhcp-4.3.3b1/client/clparse.c ---- dhcp-4.3.3b1/client/clparse.c.cloexec 2015-08-10 10:46:20.264755543 +0200 -+++ dhcp-4.3.3b1/client/clparse.c 2015-08-10 10:46:20.274755510 +0200 -@@ -247,7 +247,7 @@ int read_client_conf_file (const char *n +From d2da34706f140101c34f6a9806c258411806a939 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:27:18 +0100 +Subject: [PATCH 08/26] Make sure all open file descriptors are closed-on-exec + for SELinux +Cc: pzhukov@redhat.com + +ISC-bug: #19148 +--- + client/clparse.c | 4 ++-- + client/dhclient.c | 28 ++++++++++++++-------------- + common/bpf.c | 2 +- + common/dlpi.c | 2 +- + common/nit.c | 2 +- + common/resolv.c | 2 +- + common/upf.c | 2 +- + omapip/trace.c | 6 +++--- + relay/dhcrelay.c | 10 +++++----- + server/confpars.c | 2 +- + server/db.c | 4 ++-- + server/dhcpd.c | 14 +++++++------- + server/ldap.c | 2 +- + 13 files changed, 40 insertions(+), 40 deletions(-) + +diff --git a/client/clparse.c b/client/clparse.c +index 39b95a0..44387ed 100644 +--- a/client/clparse.c ++++ b/client/clparse.c +@@ -288,7 +288,7 @@ int read_client_conf_file (const char *name, struct interface_info *ip, int token; isc_result_t status; @@ -10,7 +35,7 @@ diff -up dhcp-4.3.3b1/client/clparse.c.cloexec dhcp-4.3.3b1/client/clparse.c return uerr2isc (errno); cfile = NULL; -@@ -323,7 +323,7 @@ void read_client_leases () +@@ -364,7 +364,7 @@ void read_client_leases () /* Open the lease file. If we can't open it, just return - we can safely trust the server to remember our state. */ @@ -19,10 +44,11 @@ diff -up dhcp-4.3.3b1/client/clparse.c.cloexec dhcp-4.3.3b1/client/clparse.c return; cfile = NULL; -diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c ---- dhcp-4.3.3b1/client/dhclient.c.cloexec 2015-08-10 10:46:20.260755556 +0200 -+++ dhcp-4.3.3b1/client/dhclient.c 2015-08-10 10:46:20.275755506 +0200 -@@ -153,11 +153,11 @@ main(int argc, char **argv) { +diff --git a/client/dhclient.c b/client/dhclient.c +index 2a2e9e6..a86ab9e 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -273,11 +273,11 @@ main(int argc, char **argv) { /* Make sure that file descriptors 0 (stdin), 1, (stdout), and 2 (stderr) are open. To do this, we assume that when we open a file the lowest available file descriptor is used. */ @@ -37,7 +63,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c if (fd == 2) log_perror = 0; /* No sense logging to /dev/null. */ else if (fd != -1) -@@ -519,7 +519,7 @@ main(int argc, char **argv) { +@@ -765,7 +765,7 @@ main(int argc, char **argv) { long temp; int e; @@ -46,7 +72,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c e = fscanf(pidfd, "%ld\n", &temp); oldpid = (pid_t)temp; -@@ -574,7 +574,7 @@ main(int argc, char **argv) { +@@ -820,7 +820,7 @@ main(int argc, char **argv) { strncpy(new_path_dhclient_pid, path_dhclient_pid, pfx); sprintf(new_path_dhclient_pid + pfx, "-%s.pid", ip->name); @@ -55,7 +81,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c e = fscanf(pidfd, "%ld\n", &temp); oldpid = (pid_t)temp; -@@ -599,7 +599,7 @@ main(int argc, char **argv) { +@@ -845,7 +845,7 @@ main(int argc, char **argv) { int dhc_running = 0; char procfn[256] = ""; @@ -64,7 +90,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c if ((fscanf(pidfp, "%ld", &temp)==1) && ((dhcpid=(pid_t)temp) > 0)) { snprintf(procfn,256,"/proc/%u",dhcpid); dhc_running = (access(procfn, F_OK) == 0); -@@ -3120,7 +3120,7 @@ void rewrite_client_leases () +@@ -3808,7 +3808,7 @@ void rewrite_client_leases () if (leaseFile != NULL) fclose (leaseFile); @@ -73,7 +99,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c if (leaseFile == NULL) { log_error ("can't create %s: %m", path_dhclient_db); return; -@@ -3313,7 +3313,7 @@ write_duid(struct data_string *duid) +@@ -4003,7 +4003,7 @@ write_duid(struct data_string *duid) return DHCP_R_INVALIDARG; if (leaseFile == NULL) { /* XXX? */ @@ -82,7 +108,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c if (leaseFile == NULL) { log_error("can't create %s: %m", path_dhclient_db); return ISC_R_IOERROR; -@@ -3493,7 +3493,7 @@ int write_client_lease (client, lease, r +@@ -4207,7 +4207,7 @@ int write_client_lease (client, lease, rewrite, makesure) return 1; if (leaseFile == NULL) { /* XXX */ @@ -91,7 +117,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c if (leaseFile == NULL) { log_error ("can't create %s: %m", path_dhclient_db); return 0; -@@ -4011,9 +4011,9 @@ void go_daemon () +@@ -4786,9 +4786,9 @@ void detach () (void) close(2); /* Reopen them on /dev/null. */ @@ -104,7 +130,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c write_client_pid_file (); -@@ -4030,14 +4030,14 @@ void write_client_pid_file () +@@ -4806,14 +4806,14 @@ void write_client_pid_file () return; } @@ -121,10 +147,11 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c if (!pf) { close(pfdesc); log_error ("Can't fdopen %s: %m", path_dhclient_pid); -diff -up dhcp-4.3.3b1/common/bpf.c.cloexec dhcp-4.3.3b1/common/bpf.c ---- dhcp-4.3.3b1/common/bpf.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/common/bpf.c 2015-08-10 10:46:20.275755506 +0200 -@@ -95,7 +95,7 @@ int if_register_bpf (info) +diff --git a/common/bpf.c b/common/bpf.c +index 16076fe..67b6d64 100644 +--- a/common/bpf.c ++++ b/common/bpf.c +@@ -94,7 +94,7 @@ int if_register_bpf (info) for (b = 0; 1; b++) { /* %Audit% 31 bytes max. %2004.06.17,Safe% */ sprintf(filename, BPF_FORMAT, b); @@ -133,10 +160,11 @@ diff -up dhcp-4.3.3b1/common/bpf.c.cloexec dhcp-4.3.3b1/common/bpf.c if (sock < 0) { if (errno == EBUSY) { continue; -diff -up dhcp-4.3.3b1/common/dlpi.c.cloexec dhcp-4.3.3b1/common/dlpi.c ---- dhcp-4.3.3b1/common/dlpi.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/common/dlpi.c 2015-08-10 10:46:20.275755506 +0200 -@@ -804,7 +804,7 @@ dlpiopen(const char *ifname) { +diff --git a/common/dlpi.c b/common/dlpi.c +index 3990bf1..a941258 100644 +--- a/common/dlpi.c ++++ b/common/dlpi.c +@@ -817,7 +817,7 @@ dlpiopen(const char *ifname) { } *dp = '\0'; @@ -145,9 +173,10 @@ diff -up dhcp-4.3.3b1/common/dlpi.c.cloexec dhcp-4.3.3b1/common/dlpi.c } /* -diff -up dhcp-4.3.3b1/common/nit.c.cloexec dhcp-4.3.3b1/common/nit.c ---- dhcp-4.3.3b1/common/nit.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/common/nit.c 2015-08-10 10:46:20.275755506 +0200 +diff --git a/common/nit.c b/common/nit.c +index d822c15..a9132bc 100644 +--- a/common/nit.c ++++ b/common/nit.c @@ -75,7 +75,7 @@ int if_register_nit (info) struct strioctl sio; @@ -157,10 +186,11 @@ diff -up dhcp-4.3.3b1/common/nit.c.cloexec dhcp-4.3.3b1/common/nit.c if (sock < 0) log_fatal ("Can't open NIT device for %s: %m", info -> name); -diff -up dhcp-4.3.3b1/common/resolv.c.cloexec dhcp-4.3.3b1/common/resolv.c ---- dhcp-4.3.3b1/common/resolv.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/common/resolv.c 2015-08-10 10:46:20.276755503 +0200 -@@ -44,7 +44,7 @@ void read_resolv_conf (parse_time) +diff --git a/common/resolv.c b/common/resolv.c +index a01f520..b209e3f 100644 +--- a/common/resolv.c ++++ b/common/resolv.c +@@ -43,7 +43,7 @@ void read_resolv_conf (parse_time) struct domain_search_list *dp, *dl, *nd; isc_result_t status; @@ -169,9 +199,10 @@ diff -up dhcp-4.3.3b1/common/resolv.c.cloexec dhcp-4.3.3b1/common/resolv.c log_error ("Can't open %s: %m", path_resolv_conf); return; } -diff -up dhcp-4.3.3b1/common/upf.c.cloexec dhcp-4.3.3b1/common/upf.c ---- dhcp-4.3.3b1/common/upf.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/common/upf.c 2015-08-10 10:46:20.276755503 +0200 +diff --git a/common/upf.c b/common/upf.c +index 9785879..e0a524f 100644 +--- a/common/upf.c ++++ b/common/upf.c @@ -71,7 +71,7 @@ int if_register_upf (info) /* %Audit% Cannot exceed 36 bytes. %2004.06.17,Safe% */ sprintf(filename, "/dev/pf/pfilt%d", b); @@ -181,10 +212,11 @@ diff -up dhcp-4.3.3b1/common/upf.c.cloexec dhcp-4.3.3b1/common/upf.c if (sock < 0) { if (errno == EBUSY) { continue; -diff -up dhcp-4.3.3b1/omapip/trace.c.cloexec dhcp-4.3.3b1/omapip/trace.c ---- dhcp-4.3.3b1/omapip/trace.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/omapip/trace.c 2015-08-10 10:46:20.276755503 +0200 -@@ -138,10 +138,10 @@ isc_result_t trace_begin (const char *fi +diff --git a/omapip/trace.c b/omapip/trace.c +index 45bd508..5ea7486 100644 +--- a/omapip/trace.c ++++ b/omapip/trace.c +@@ -136,10 +136,10 @@ isc_result_t trace_begin (const char *filename, return DHCP_R_INVALIDARG; } @@ -197,7 +229,7 @@ diff -up dhcp-4.3.3b1/omapip/trace.c.cloexec dhcp-4.3.3b1/omapip/trace.c 0600); } -@@ -429,7 +429,7 @@ void trace_file_replay (const char *file +@@ -427,7 +427,7 @@ void trace_file_replay (const char *filename) isc_result_t result; int len; @@ -206,10 +238,11 @@ diff -up dhcp-4.3.3b1/omapip/trace.c.cloexec dhcp-4.3.3b1/omapip/trace.c if (!traceinfile) { log_error("Can't open tracefile %s: %m", filename); return; -diff -up dhcp-4.3.3b1/relay/dhcrelay.c.cloexec dhcp-4.3.3b1/relay/dhcrelay.c ---- dhcp-4.3.3b1/relay/dhcrelay.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/relay/dhcrelay.c 2015-08-10 10:46:20.276755503 +0200 -@@ -187,11 +187,11 @@ main(int argc, char **argv) { +diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c +index d8caaaf..ea1be18 100644 +--- a/relay/dhcrelay.c ++++ b/relay/dhcrelay.c +@@ -296,11 +296,11 @@ main(int argc, char **argv) { /* Make sure that file descriptors 0(stdin), 1,(stdout), and 2(stderr) are open. To do this, we assume that when we open a file the lowest available file descriptor is used. */ @@ -224,8 +257,8 @@ diff -up dhcp-4.3.3b1/relay/dhcrelay.c.cloexec dhcp-4.3.3b1/relay/dhcrelay.c if (fd == 2) log_perror = 0; /* No sense logging to /dev/null. */ else if (fd != -1) -@@ -558,13 +558,13 @@ main(int argc, char **argv) { - +@@ -776,13 +776,13 @@ main(int argc, char **argv) { + /* Create the pid file. */ if (no_pid_file == ISC_FALSE) { pfdesc = open(path_dhcrelay_pid, - O_CREAT | O_TRUNC | O_WRONLY, 0644); @@ -240,10 +273,11 @@ diff -up dhcp-4.3.3b1/relay/dhcrelay.c.cloexec dhcp-4.3.3b1/relay/dhcrelay.c if (!pf) log_error("Can't fdopen %s: %m", path_dhcrelay_pid); -diff -up dhcp-4.3.3b1/server/confpars.c.cloexec dhcp-4.3.3b1/server/confpars.c ---- dhcp-4.3.3b1/server/confpars.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/server/confpars.c 2015-08-10 10:46:20.277755500 +0200 -@@ -111,7 +111,7 @@ isc_result_t read_conf_file (const char +diff --git a/server/confpars.c b/server/confpars.c +index d2cedfe..2743979 100644 +--- a/server/confpars.c ++++ b/server/confpars.c +@@ -118,7 +118,7 @@ isc_result_t read_conf_file (const char *filename, struct group *group, } #endif @@ -252,19 +286,11 @@ diff -up dhcp-4.3.3b1/server/confpars.c.cloexec dhcp-4.3.3b1/server/confpars.c if (leasep) { log_error ("Can't open lease database %s: %m --", path_dhcpd_db); -diff -up dhcp-4.3.3b1/server/db.c.cloexec dhcp-4.3.3b1/server/db.c ---- dhcp-4.3.3b1/server/db.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/server/db.c 2015-08-10 10:47:32.644518358 +0200 -@@ -1072,7 +1072,7 @@ void db_startup (testp) - } - #endif - if (!testp) { -- db_file = fopen (path_dhcpd_db, "a"); -+ db_file = fopen (path_dhcpd_db, "ae"); - if (!db_file) - log_fatal ("Can't open %s for append.", path_dhcpd_db); - expire_all_pools (); -@@ -1120,7 +1120,7 @@ int new_lease_file () +diff --git a/server/db.c b/server/db.c +index 67e6cc1..6181528 100644 +--- a/server/db.c ++++ b/server/db.c +@@ -1154,7 +1154,7 @@ int new_lease_file (int test_mode) path_dhcpd_db, (int)t) >= sizeof newfname) log_fatal("new_lease_file: lease file path too long"); @@ -273,7 +299,7 @@ diff -up dhcp-4.3.3b1/server/db.c.cloexec dhcp-4.3.3b1/server/db.c if (db_fd < 0) { log_error ("Can't create new lease file: %m"); return 0; -@@ -1141,7 +1141,7 @@ int new_lease_file () +@@ -1175,7 +1175,7 @@ int new_lease_file (int test_mode) } #endif /* PARANOIA */ @@ -282,10 +308,11 @@ diff -up dhcp-4.3.3b1/server/db.c.cloexec dhcp-4.3.3b1/server/db.c log_error("Can't fdopen new lease file: %m"); close(db_fd); goto fdfail; -diff -up dhcp-4.3.3b1/server/dhcpd.c.cloexec dhcp-4.3.3b1/server/dhcpd.c ---- dhcp-4.3.3b1/server/dhcpd.c.cloexec 2015-07-30 15:17:16.000000000 +0200 -+++ dhcp-4.3.3b1/server/dhcpd.c 2015-08-10 10:46:20.278755497 +0200 -@@ -194,11 +194,11 @@ main(int argc, char **argv) { +diff --git a/server/dhcpd.c b/server/dhcpd.c +index 55ffae7..530a923 100644 +--- a/server/dhcpd.c ++++ b/server/dhcpd.c +@@ -300,11 +300,11 @@ main(int argc, char **argv) { /* Make sure that file descriptors 0 (stdin), 1, (stdout), and 2 (stderr) are open. To do this, we assume that when we open a file the lowest available file descriptor is used. */ @@ -300,7 +327,7 @@ diff -up dhcp-4.3.3b1/server/dhcpd.c.cloexec dhcp-4.3.3b1/server/dhcpd.c if (fd == 2) log_perror = 0; /* No sense logging to /dev/null. */ else if (fd != -1) -@@ -743,7 +743,7 @@ main(int argc, char **argv) { +@@ -975,7 +975,7 @@ main(int argc, char **argv) { * appropriate. */ if (no_pid_file == ISC_FALSE) { @@ -309,7 +336,7 @@ diff -up dhcp-4.3.3b1/server/dhcpd.c.cloexec dhcp-4.3.3b1/server/dhcpd.c if (i >= 0) { sprintf(pbuf, "%d\n", (int) getpid()); IGNORE_RET(write(i, pbuf, strlen(pbuf))); -@@ -787,9 +787,9 @@ main(int argc, char **argv) { +@@ -1028,9 +1028,9 @@ main(int argc, char **argv) { (void) close(2); /* Reopen them on /dev/null. */ @@ -322,10 +349,11 @@ diff -up dhcp-4.3.3b1/server/dhcpd.c.cloexec dhcp-4.3.3b1/server/dhcpd.c log_perror = 0; /* No sense logging to /dev/null. */ IGNORE_RET (chdir("/")); -diff -up dhcp-4.3.3b1/server/ldap.c.cloexec dhcp-4.3.3b1/server/ldap.c ---- dhcp-4.3.3b1/server/ldap.c.cloexec 2015-07-30 21:03:40.000000000 +0200 -+++ dhcp-4.3.3b1/server/ldap.c 2015-08-10 10:46:20.279755493 +0200 -@@ -1442,7 +1442,7 @@ ldap_start (void) +diff --git a/server/ldap.c b/server/ldap.c +index 5126d24..555545c 100644 +--- a/server/ldap.c ++++ b/server/ldap.c +@@ -1446,7 +1446,7 @@ ldap_start (void) if (ldap_debug_file != NULL && ldap_debug_fd == -1) { @@ -334,3 +362,6 @@ diff -up dhcp-4.3.3b1/server/ldap.c.cloexec dhcp-4.3.3b1/server/ldap.c S_IRUSR | S_IWUSR)) < 0) log_error ("Error opening debug LDAP log file %s: %s", ldap_debug_file, strerror (errno)); +-- +2.14.5 + diff --git a/0009-Fix-garbage-in-format-string-error.patch b/0009-Fix-garbage-in-format-string-error.patch new file mode 100644 index 0000000..f9d81ab --- /dev/null +++ b/0009-Fix-garbage-in-format-string-error.patch @@ -0,0 +1,27 @@ +From a0a2186ce52a31357d4eb3c32d7d6887e4603814 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:28:13 +0100 +Subject: [PATCH 09/26] Fix 'garbage in format string' error +Cc: pzhukov@redhat.com + +RHBZ: 450042 +--- + common/tables.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/common/tables.c b/common/tables.c +index c1aa214..d2294c0 100644 +--- a/common/tables.c ++++ b/common/tables.c +@@ -215,7 +215,7 @@ static struct option dhcp_options[] = { + { "name-service-search", "Sa", &dhcp_universe, 117, 1 }, + #endif + { "subnet-selection", "I", &dhcp_universe, 118, 1 }, +- { "domain-search", "Dc", &dhcp_universe, 119, 1 }, ++ { "domain-search", "D", &dhcp_universe, 119, 1 }, + { "vivco", "Evendor-class.", &dhcp_universe, 124, 1 }, + { "vivso", "Evendor.", &dhcp_universe, 125, 1 }, + #if 0 +-- +2.14.5 + diff --git a/0010-Handle-null-timeout.patch b/0010-Handle-null-timeout.patch new file mode 100644 index 0000000..2b6e49b --- /dev/null +++ b/0010-Handle-null-timeout.patch @@ -0,0 +1,32 @@ +From ed7610cdb2e8ebdbaee618e477879e7e008d4f29 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:29:08 +0100 +Subject: [PATCH 10/26] Handle null timeout +Cc: pzhukov@redhat.com + +Handle cases in add_timeout() where the function is called with a NULL +value for the 'when' parameter + +ISC-Bugs: #19867 (rejected) +--- + common/dispatch.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/common/dispatch.c b/common/dispatch.c +index 0207ad3..d7fe200 100644 +--- a/common/dispatch.c ++++ b/common/dispatch.c +@@ -209,6 +209,10 @@ void add_timeout (when, where, what, ref, unref) + isc_interval_t interval; + isc_time_t expires; + ++ if (when == NULL) { ++ return; ++ } ++ + /* See if this timeout supersedes an existing timeout. */ + t = (struct timeout *)0; + for (q = timeouts; q; q = q->next) { +-- +2.14.5 + diff --git a/dhcp-capability.patch b/0011-Drop-unnecessary-capabilities.patch similarity index 75% rename from dhcp-capability.patch rename to 0011-Drop-unnecessary-capabilities.patch index 49dfbee..4277baf 100644 --- a/dhcp-capability.patch +++ b/0011-Drop-unnecessary-capabilities.patch @@ -1,21 +1,38 @@ +From 3b37f4b7bb3a17f8bd655be919915a1912062ea6 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:30:28 +0100 +Subject: [PATCH 11/26] Drop unnecessary capabilities +Cc: pzhukov@redhat.com + +dhclient (#517649, #546765), dhcpd/dhcrelay (#699713) +--- + client/Makefile.am | 3 ++- + client/dhclient-script.8 | 10 ++++++++++ + client/dhclient.8 | 29 +++++++++++++++++++++++++++++ + client/dhclient.c | 24 ++++++++++++++++++++++++ + configure.ac | 35 +++++++++++++++++++++++++++++++++++ + relay/Makefile.am | 3 ++- + relay/dhcrelay.c | 29 +++++++++++++++++++++++++++++ + 7 files changed, 131 insertions(+), 2 deletions(-) + diff --git a/client/Makefile.am b/client/Makefile.am -index b1ecf82..387c097 100644 +index d177159..0689185 100644 --- a/client/Makefile.am +++ b/client/Makefile.am -@@ -15,6 +15,7 @@ dhclient_SOURCES = clparse.c dhclient.c dhc6.c \ - scripts/bsdos scripts/freebsd scripts/linux scripts/macos \ - scripts/netbsd scripts/nextstep scripts/openbsd \ - scripts/solaris scripts/openwrt --dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la $(BIND_LIBS) -+dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \ -+ $(CAPNG_LDADD) $(BIND_LIBS) +@@ -17,6 +17,7 @@ dhclient_LDADD = ../common/libdhcp.@A@ ../omapip/libomapi.@A@ \ + @BINDLIBIRSDIR@/libirs.@A@ \ + @BINDLIBDNSDIR@/libdns.@A@ \ + @BINDLIBISCCFGDIR@/libisccfg.@A@ \ +- @BINDLIBISCDIR@/libisc.@A@ ++ @BINDLIBISCDIR@/libisc.@A@ \ ++ $(CAPNG_LDADD) man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5 EXTRA_DIST = $(man_MANS) diff --git a/client/dhclient-script.8 b/client/dhclient-script.8 -index 3a3aaf7..fec726c 100644 +index 0db5516..2eddb8f 100644 --- a/client/dhclient-script.8 +++ b/client/dhclient-script.8 -@@ -245,6 +245,16 @@ repeatedly initialized to the values provided by one server, and then +@@ -243,6 +243,16 @@ repeatedly initialized to the values provided by one server, and then the other. Assuming the information provided by both servers is valid, this shouldn't cause any real problems, but it could be confusing. @@ -33,7 +50,7 @@ index 3a3aaf7..fec726c 100644 dhclient(8), dhcpd(8), dhcrelay(8), dhclient.conf(5) and dhclient.leases(5). diff --git a/client/dhclient.8 b/client/dhclient.8 -index aa2238d..005cda5 100644 +index 6d7fbdb..0145b9f 100644 --- a/client/dhclient.8 +++ b/client/dhclient.8 @@ -134,6 +134,9 @@ dhclient - Dynamic Host Configuration Protocol Client @@ -46,7 +63,7 @@ index aa2238d..005cda5 100644 .B -B ] [ -@@ -320,6 +323,32 @@ not to exit when it doesn't find any such interfaces. The +@@ -328,6 +331,32 @@ not to exit when it doesn't find any such interfaces. The program can then be used to notify the client when a network interface has been added or removed, so that the client can attempt to configure an IP address on that interface. @@ -80,12 +97,12 @@ index aa2238d..005cda5 100644 .BI \-n Do not configure any interfaces. This is most likely to be useful in diff --git a/client/dhclient.c b/client/dhclient.c -index 09ae09b..2d564ff 100644 +index a86ab9e..5d3f5bc 100644 --- a/client/dhclient.c +++ b/client/dhclient.c -@@ -40,6 +40,10 @@ - #include - #include +@@ -41,6 +41,10 @@ + #include + #include +#ifdef HAVE_LIBCAP_NG +#include @@ -94,7 +111,7 @@ index 09ae09b..2d564ff 100644 /* * Defined in stdio.h when _GNU_SOURCE is set, but we don't want to define * that when building ISC code. -@@ -239,6 +243,9 @@ main(int argc, char **argv) { +@@ -266,6 +270,9 @@ main(int argc, char **argv) { int timeout_arg = 0; char *arg_conf = NULL; int arg_conf_len = 0; @@ -104,18 +121,18 @@ index 09ae09b..2d564ff 100644 /* Initialize client globals. */ memset(&default_duid, 0, sizeof(default_duid)); -@@ -548,6 +555,10 @@ main(int argc, char **argv) { - } +@@ -665,6 +672,10 @@ main(int argc, char **argv) { dhclient_request_options = argv[i]; + + } else if (!strcmp(argv[i], "-nc")) { +#ifdef HAVE_LIBCAP_NG -+ keep_capabilities = 1; ++ keep_capabilities = 1; +#endif } else if (argv[i][0] == '-') { usage("Unknown command: %s", argv[i]); } else if (interfaces_requested < 0) { -@@ -608,6 +619,19 @@ main(int argc, char **argv) { +@@ -725,6 +736,19 @@ main(int argc, char **argv) { path_dhclient_script = s; } @@ -136,10 +153,10 @@ index 09ae09b..2d564ff 100644 initialize_common_option_spaces(); diff --git a/configure.ac b/configure.ac -index adc98a8..8bbe5ca 100644 +index a797438..15fc0d7 100644 --- a/configure.ac +++ b/configure.ac -@@ -592,6 +592,41 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void foo() __attribute__((noreturn)); +@@ -612,6 +612,41 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void foo() __attribute__((noreturn)); # Look for optional headers. AC_CHECK_HEADERS(sys/socket.h net/if_dl.h net/if6.h regex.h) @@ -182,20 +199,21 @@ index adc98a8..8bbe5ca 100644 AC_SEARCH_LIBS(socket, [socket]) AC_SEARCH_LIBS(inet_ntoa, [nsl]) diff --git a/relay/Makefile.am b/relay/Makefile.am -index 316a524..999e543 100644 +index 2ba5979..8900e0b 100644 --- a/relay/Makefile.am +++ b/relay/Makefile.am -@@ -5,7 +5,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"' - sbin_PROGRAMS = dhcrelay - dhcrelay_SOURCES = dhcrelay.c - dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \ -- $(BIND_LIBS) -+ $(CAPNG_LDADD) $(BIND_LIBS) +@@ -6,7 +6,8 @@ dhcrelay_LDADD = ../common/libdhcp.@A@ ../omapip/libomapi.@A@ \ + @BINDLIBIRSDIR@/libirs.@A@ \ + @BINDLIBDNSDIR@/libdns.@A@ \ + @BINDLIBISCCFGDIR@/libisccfg.@A@ \ +- @BINDLIBISCDIR@/libisc.@A@ ++ @BINDLIBISCDIR@/libisc.@A@ \ ++ $(CAPNG_LDADD) man_MANS = dhcrelay.8 EXTRA_DIST = $(man_MANS) diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c -index eac119c..d2ab448 100644 +index ea1be18..7b4f4f1 100644 --- a/relay/dhcrelay.c +++ b/relay/dhcrelay.c @@ -32,6 +32,11 @@ @@ -210,7 +228,7 @@ index eac119c..d2ab448 100644 TIME default_lease_time = 43200; /* 12 hours... */ TIME max_lease_time = 86400; /* 24 hours... */ struct tree_cache *global_options[256]; -@@ -472,6 +477,10 @@ main(int argc, char **argv) { +@@ -590,6 +595,10 @@ main(int argc, char **argv) { if (++i == argc) usage(use_noarg, argv[i-1]); dhcrelay_sub_id = argv[i]; @@ -221,7 +239,7 @@ index eac119c..d2ab448 100644 #endif } else if (!strcmp(argv[i], "-pf")) { if (++i == argc) -@@ -547,6 +556,17 @@ main(int argc, char **argv) { +@@ -660,6 +669,17 @@ main(int argc, char **argv) { #endif } @@ -239,7 +257,7 @@ index eac119c..d2ab448 100644 if (!quiet) { log_info("%s %s", message, PACKAGE_VERSION); log_info(copyright); -@@ -699,6 +719,15 @@ main(int argc, char **argv) { +@@ -816,6 +836,15 @@ main(int argc, char **argv) { signal(SIGTERM, dhcp_signal_handler); /* kill */ #endif @@ -255,3 +273,6 @@ index eac119c..d2ab448 100644 /* Start dispatching packets and timeouts... */ dispatch(); +-- +2.14.5 + diff --git a/dhcp-rfc3442-classless-static-routes.patch b/0012-RFC-3442-Classless-Static-Route-Option-for-DHCPv4-51.patch similarity index 76% rename from dhcp-rfc3442-classless-static-routes.patch rename to 0012-RFC-3442-Classless-Static-Route-Option-for-DHCPv4-51.patch index 6c3a239..866527c 100644 --- a/dhcp-rfc3442-classless-static-routes.patch +++ b/0012-RFC-3442-Classless-Static-Route-Option-for-DHCPv4-51.patch @@ -1,6 +1,27 @@ -diff -up dhcp-4.3.4/client/clparse.c.rfc3442 dhcp-4.3.4/client/clparse.c ---- dhcp-4.3.4/client/clparse.c.rfc3442 2016-04-29 12:23:34.192032714 +0200 -+++ dhcp-4.3.4/client/clparse.c 2016-04-29 12:24:37.531016317 +0200 +From 01b1dcfef129a4eccfaf0f63a216774019f82dca Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:32:35 +0100 +Subject: [PATCH 12/26] RFC 3442 - Classless Static Route Option for DHCPv4 + (#516325) +Cc: pzhukov@redhat.com + +(Submitted to dhcp-bugs@isc.org - [ISC-Bugs #24572]) +--- + client/clparse.c | 13 ++++++++++-- + common/dhcp-options.5 | 43 +++++++++++++++++++++++++++++++++++++++ + common/inet.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ + common/options.c | 49 +++++++++++++++++++++++++++++++++++++++++++- + common/parse.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++- + common/tables.c | 2 ++ + includes/dhcp.h | 1 + + includes/dhcpd.h | 2 ++ + includes/dhctoken.h | 5 +++-- + 9 files changed, 219 insertions(+), 6 deletions(-) + +diff --git a/client/clparse.c b/client/clparse.c +index 44387ed..862e4f9 100644 +--- a/client/clparse.c ++++ b/client/clparse.c @@ -31,7 +31,7 @@ struct client_config top_level_config; @@ -35,10 +56,11 @@ diff -up dhcp-4.3.4/client/clparse.c.rfc3442 dhcp-4.3.4/client/clparse.c for (code = 0 ; code < NUM_DEFAULT_REQUESTED_OPTS ; code++) { if (default_requested_options[code] == NULL) log_fatal("Unable to find option definition for " -diff -up dhcp-4.3.4/common/dhcp-options.5.rfc3442 dhcp-4.3.4/common/dhcp-options.5 ---- dhcp-4.3.4/common/dhcp-options.5.rfc3442 2016-04-29 12:23:34.183032716 +0200 -+++ dhcp-4.3.4/common/dhcp-options.5 2016-04-29 12:23:34.237032703 +0200 -@@ -111,6 +111,26 @@ hexadecimal, separated by colons. For e +diff --git a/common/dhcp-options.5 b/common/dhcp-options.5 +index d9e1197..2343b19 100644 +--- a/common/dhcp-options.5 ++++ b/common/dhcp-options.5 +@@ -110,6 +110,26 @@ hexadecimal, separated by colons. For example: or option dhcp-client-identifier 43:4c:49:45:54:2d:46:4f:4f; .fi @@ -65,7 +87,7 @@ diff -up dhcp-4.3.4/common/dhcp-options.5.rfc3442 dhcp-4.3.4/common/dhcp-options .SH SETTING OPTION VALUES USING EXPRESSIONS Sometimes it's helpful to be able to set the value of a DHCP option based on some value that the client has sent. To do this, you can -@@ -1031,6 +1051,29 @@ dhclient-script will create routes: +@@ -1086,6 +1106,29 @@ dhclient-script will create routes: .RE .PP .nf @@ -95,10 +117,11 @@ diff -up dhcp-4.3.4/common/dhcp-options.5.rfc3442 dhcp-4.3.4/common/dhcp-options .B option \fBstreettalk-directory-assistance-server\fR \fIip-address\fR [\fB,\fR \fIip-address\fR...]\fB;\fR .fi -diff -up dhcp-4.3.4/common/inet.c.rfc3442 dhcp-4.3.4/common/inet.c ---- dhcp-4.3.4/common/inet.c.rfc3442 2016-03-22 14:16:51.000000000 +0100 -+++ dhcp-4.3.4/common/inet.c 2016-04-29 12:23:34.237032703 +0200 -@@ -519,6 +519,60 @@ free_iaddrcidrnetlist(struct iaddrcidrne +diff --git a/common/inet.c b/common/inet.c +index c4da73c..981fb92 100644 +--- a/common/inet.c ++++ b/common/inet.c +@@ -519,6 +519,60 @@ free_iaddrcidrnetlist(struct iaddrcidrnetlist **result) { return ISC_R_SUCCESS; } @@ -159,10 +182,11 @@ diff -up dhcp-4.3.4/common/inet.c.rfc3442 dhcp-4.3.4/common/inet.c /* piaddr() turns an iaddr structure into a printable address. */ /* XXX: should use a const pointer rather than passing the structure */ const char * -diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c ---- dhcp-4.3.4/common/options.c.rfc3442 2016-03-22 14:16:51.000000000 +0100 -+++ dhcp-4.3.4/common/options.c 2016-04-29 12:23:34.237032703 +0200 -@@ -713,7 +713,11 @@ cons_options(struct packet *inpacket, st +diff --git a/common/options.c b/common/options.c +index fc0e088..3034cf0 100644 +--- a/common/options.c ++++ b/common/options.c +@@ -729,7 +729,11 @@ cons_options(struct packet *inpacket, struct dhcp_packet *outpacket, * packet. */ priority_list[priority_len++] = DHO_SUBNET_MASK; @@ -175,7 +199,7 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c priority_list[priority_len++] = DHO_DOMAIN_NAME_SERVERS; priority_list[priority_len++] = DHO_HOST_NAME; priority_list[priority_len++] = DHO_FQDN; -@@ -1694,6 +1698,7 @@ const char *pretty_print_option (option, +@@ -1804,6 +1808,7 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) unsigned long tval; isc_boolean_t a_array = ISC_FALSE; int len_used; @@ -183,7 +207,7 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c if (emit_commas) comma = ','; -@@ -1702,6 +1707,7 @@ const char *pretty_print_option (option, +@@ -1812,6 +1817,7 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) memset (enumbuf, 0, sizeof enumbuf); @@ -191,7 +215,7 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c /* Figure out the size of the data. */ for (l = i = 0; option -> format [i]; i++, l++) { if (l >= sizeof(fmtbuf) - 1) -@@ -1894,6 +1900,33 @@ const char *pretty_print_option (option, +@@ -2004,6 +2010,33 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) if (numhunk < 0) numhunk = 1; @@ -225,7 +249,7 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c /* Cycle through the array (or hunk) printing the data. */ for (i = 0; i < numhunk; i++) { if ((a_array == ISC_TRUE) && (i != 0) && (numelem > 0)) { -@@ -2049,6 +2082,20 @@ const char *pretty_print_option (option, +@@ -2159,6 +2192,20 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) strcpy(op, piaddr(iaddr)); dp += 4; break; @@ -246,13 +270,15 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c case '6': iaddr.len = 16; memcpy(iaddr.iabuf, dp, 16); -diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c ---- dhcp-4.3.4/common/parse.c.rfc3442 2016-04-29 12:23:34.220032707 +0200 -+++ dhcp-4.3.4/common/parse.c 2016-04-29 12:23:34.238032702 +0200 -@@ -341,6 +341,39 @@ int parse_ip_addr (cfile, addr) +diff --git a/common/parse.c b/common/parse.c +index 3ac4ebf..f17bc0b 100644 +--- a/common/parse.c ++++ b/common/parse.c +@@ -344,6 +344,39 @@ int parse_ip_addr (cfile, addr) + return 0; } - /* ++/* + * destination-descriptor :== NUMBER DOT NUMBER | + * NUMBER DOT NUMBER DOT NUMBER | + * NUMBER DOT NUMBER DOT NUMBER DOT NUMBER | @@ -285,11 +311,10 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c + return 0; +} + -+/* + /* * Return true if every character in the string is hexadecimal. */ - static int -@@ -720,8 +753,10 @@ unsigned char *parse_numeric_aggregate ( +@@ -724,8 +757,10 @@ unsigned char *parse_numeric_aggregate (cfile, buf, if (count) { token = peek_token (&val, (unsigned *)0, cfile); if (token != separator) { @@ -301,7 +326,7 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c if (token != RBRACE && token != LBRACE) token = next_token (&val, (unsigned *)0, -@@ -1668,6 +1703,9 @@ int parse_option_code_definition (cfile, +@@ -1672,6 +1707,9 @@ int parse_option_code_definition (cfile, option) case IP_ADDRESS: type = 'I'; break; @@ -311,7 +336,7 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c case IP6_ADDRESS: type = '6'; break; -@@ -5097,6 +5135,15 @@ int parse_option_token (rv, cfile, fmt, +@@ -5101,6 +5139,15 @@ int parse_option_token (rv, cfile, fmt, expr, uniform, lookups) } break; @@ -327,7 +352,7 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c case '6': /* IPv6 address. */ if (!parse_ip6_addr(cfile, &addr)) { return 0; -@@ -5374,6 +5421,13 @@ int parse_option_decl (oc, cfile) +@@ -5378,6 +5425,13 @@ int parse_option_decl (oc, cfile) goto exit; len = ip_addr.len; dp = ip_addr.iabuf; @@ -341,10 +366,11 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c alloc: if (hunkix + len > sizeof hunkbuf) { -diff -up dhcp-4.3.4/common/tables.c.rfc3442 dhcp-4.3.4/common/tables.c ---- dhcp-4.3.4/common/tables.c.rfc3442 2016-04-29 12:23:34.209032710 +0200 -+++ dhcp-4.3.4/common/tables.c 2016-04-29 12:23:34.238032702 +0200 -@@ -45,6 +45,7 @@ HASH_FUNCTIONS (option_code, const unsig +diff --git a/common/tables.c b/common/tables.c +index d2294c0..f1be07d 100644 +--- a/common/tables.c ++++ b/common/tables.c +@@ -45,6 +45,7 @@ HASH_FUNCTIONS (option_code, const unsigned *, struct option, Format codes: I - IPv4 address @@ -360,29 +386,11 @@ diff -up dhcp-4.3.4/common/tables.c.rfc3442 dhcp-4.3.4/common/tables.c { "vivco", "Evendor-class.", &dhcp_universe, 124, 1 }, { "vivso", "Evendor.", &dhcp_universe, 125, 1 }, #if 0 -diff -up dhcp-4.3.4/includes/dhcpd.h.rfc3442 dhcp-4.3.4/includes/dhcpd.h ---- dhcp-4.3.4/includes/dhcpd.h.rfc3442 2016-04-29 12:23:34.186032716 +0200 -+++ dhcp-4.3.4/includes/dhcpd.h 2016-04-29 12:23:34.239032702 +0200 -@@ -2894,6 +2894,7 @@ isc_result_t range2cidr(struct iaddrcidr - const struct iaddr *lo, const struct iaddr *hi); - isc_result_t free_iaddrcidrnetlist(struct iaddrcidrnetlist **result); - const char *piaddr (struct iaddr); -+const char *pdestdesc (struct iaddr); - char *piaddrmask(struct iaddr *, struct iaddr *); - char *piaddrcidr(const struct iaddr *, unsigned int); - u_int16_t validate_port(char *); -@@ -3108,6 +3109,7 @@ void parse_client_lease_declaration (str - int parse_option_decl (struct option_cache **, struct parse *); - void parse_string_list (struct parse *, struct string_list **, int); - int parse_ip_addr (struct parse *, struct iaddr *); -+int parse_destination_descriptor (struct parse *, struct iaddr *); - int parse_ip_addr_with_subnet(struct parse *, struct iaddrmatch *); - void parse_reject_statement (struct parse *, struct client_config *); - -diff -up dhcp-4.3.4/includes/dhcp.h.rfc3442 dhcp-4.3.4/includes/dhcp.h ---- dhcp-4.3.4/includes/dhcp.h.rfc3442 2016-03-22 14:16:51.000000000 +0100 -+++ dhcp-4.3.4/includes/dhcp.h 2016-04-29 12:23:34.239032702 +0200 -@@ -159,6 +159,7 @@ struct dhcp_packet { +diff --git a/includes/dhcp.h b/includes/dhcp.h +index 0a74137..95bf539 100644 +--- a/includes/dhcp.h ++++ b/includes/dhcp.h +@@ -158,6 +158,7 @@ struct dhcp_packet { #define DHO_ASSOCIATED_IP 92 #define DHO_SUBNET_SELECTION 118 /* RFC3011! */ #define DHO_DOMAIN_SEARCH 119 /* RFC3397 */ @@ -390,16 +398,42 @@ diff -up dhcp-4.3.4/includes/dhcp.h.rfc3442 dhcp-4.3.4/includes/dhcp.h #define DHO_VIVCO_SUBOPTIONS 124 #define DHO_VIVSO_SUBOPTIONS 125 -diff -up dhcp-4.3.4/includes/dhctoken.h.rfc3442 dhcp-4.3.4/includes/dhctoken.h ---- dhcp-4.3.4/includes/dhctoken.h.rfc3442 2016-04-29 12:23:34.239032702 +0200 -+++ dhcp-4.3.4/includes/dhctoken.h 2016-04-29 12:25:07.236008628 +0200 -@@ -374,7 +374,8 @@ enum dhcp_token { +diff --git a/includes/dhcpd.h b/includes/dhcpd.h +index 3632a6b..2ac39ae 100644 +--- a/includes/dhcpd.h ++++ b/includes/dhcpd.h +@@ -2951,6 +2951,7 @@ isc_result_t range2cidr(struct iaddrcidrnetlist **result, + const struct iaddr *lo, const struct iaddr *hi); + isc_result_t free_iaddrcidrnetlist(struct iaddrcidrnetlist **result); + const char *piaddr (struct iaddr); ++const char *pdestdesc (struct iaddr); + char *piaddrmask(struct iaddr *, struct iaddr *); + char *piaddrcidr(const struct iaddr *, unsigned int); + u_int16_t validate_port(char *); +@@ -3169,6 +3170,7 @@ void parse_client_lease_declaration (struct parse *, + int parse_option_decl (struct option_cache **, struct parse *); + void parse_string_list (struct parse *, struct string_list **, int); + int parse_ip_addr (struct parse *, struct iaddr *); ++int parse_destination_descriptor (struct parse *, struct iaddr *); + int parse_ip_addr_with_subnet(struct parse *, struct iaddrmatch *); + void parse_reject_statement (struct parse *, struct client_config *); + +diff --git a/includes/dhctoken.h b/includes/dhctoken.h +index 7e7215a..b4d93ba 100644 +--- a/includes/dhctoken.h ++++ b/includes/dhctoken.h +@@ -376,8 +376,9 @@ enum dhcp_token { LEASE_ID_FORMAT = 676, TOKEN_HEX = 677, TOKEN_OCTAL = 678, -- BOOTP_BROADCAST_ALWAYS = 679 -+ BOOTP_BROADCAST_ALWAYS = 679, -+ DESTINATION_DESCRIPTOR = 680 +- KEY_ALGORITHM = 679 +- BOOTP_BROADCAST_ALWAYS = 680 ++ KEY_ALGORITHM = 679, ++ BOOTP_BROADCAST_ALWAYS = 680, ++ DESTINATION_DESCRIPTOR = 681 }; #define is_identifier(x) ((x) >= FIRST_TOKEN && \ +-- +2.14.5 + diff --git a/dhcp-PPP.patch b/0013-DHCPv6-over-PPP-support-626514.patch similarity index 64% rename from dhcp-PPP.patch rename to 0013-DHCPv6-over-PPP-support-626514.patch index b3d82ea..5e0a6ba 100644 --- a/dhcp-PPP.patch +++ b/0013-DHCPv6-over-PPP-support-626514.patch @@ -1,7 +1,24 @@ -diff -up dhcp-4.3.4/client/dhc6.c.PPP dhcp-4.3.4/client/dhc6.c ---- dhcp-4.3.4/client/dhc6.c.PPP 2016-04-29 12:46:29.824988665 +0200 -+++ dhcp-4.3.4/client/dhc6.c 2016-04-29 12:46:29.828988666 +0200 -@@ -5641,7 +5641,8 @@ make_client6_options(struct client_state +From 234747fbfd6c6429619ba843713d5b39fb4a513d Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:33:06 +0100 +Subject: [PATCH 13/26] DHCPv6 over PPP support (#626514) +Cc: pzhukov@redhat.com + +--- + client/dhc6.c | 3 ++- + client/dhclient.c | 17 ++++++++++++++--- + common/bpf.c | 16 ++++++++++++++++ + common/lpf.c | 16 ++++++++++++++++ + includes/dhcp.h | 2 ++ + includes/dhcpd.h | 2 +- + server/dhcpv6.c | 3 +++ + 7 files changed, 54 insertions(+), 5 deletions(-) + +diff --git a/client/dhc6.c b/client/dhc6.c +index 16a0838..3171828 100644 +--- a/client/dhc6.c ++++ b/client/dhc6.c +@@ -5744,7 +5744,8 @@ make_client6_options(struct client_state *client, struct option_state **op, */ if ((oc = lookup_option(&dhcpv6_universe, *op, D6O_CLIENTID)) == NULL) { @@ -11,10 +28,11 @@ diff -up dhcp-4.3.4/client/dhc6.c.PPP dhcp-4.3.4/client/dhc6.c MDL)) log_fatal("Failure assembling a DUID."); -diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c ---- dhcp-4.3.4/client/dhclient.c.PPP 2016-04-29 12:46:29.815988664 +0200 -+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 12:46:29.830988666 +0200 -@@ -1077,8 +1077,8 @@ main(int argc, char **argv) { +diff --git a/client/dhclient.c b/client/dhclient.c +index 5d3f5bc..301132c 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -1202,8 +1202,8 @@ main(int argc, char **argv) { if (default_duid.buffer != NULL) data_string_forget(&default_duid, MDL); @@ -25,7 +43,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c } } -@@ -3808,7 +3808,7 @@ write_options(struct client_state *clien +@@ -3956,7 +3956,7 @@ write_options(struct client_state *client, struct option_state *options, * is not how it is intended. Upcoming rearchitecting the client should * address this "one daemon model." */ @@ -34,7 +52,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c form_duid(struct data_string *duid, const char *file, int line) { struct interface_info *ip; -@@ -3821,6 +3821,15 @@ form_duid(struct data_string *duid, cons +@@ -3969,6 +3969,15 @@ form_duid(struct data_string *duid, const char *file, int line) if (ip == NULL) log_fatal("Impossible condition at %s:%d.", MDL); @@ -50,7 +68,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c if ((ip->hw_address.hlen == 0) || (ip->hw_address.hlen > sizeof(ip->hw_address.hbuf))) log_fatal("Impossible hardware address length at %s:%d.", MDL); -@@ -3866,6 +3875,8 @@ form_duid(struct data_string *duid, cons +@@ -4014,6 +4023,8 @@ form_duid(struct data_string *duid, const char *file, int line) log_info("Created duid %s.", str); dfree(str, MDL); } @@ -59,10 +77,11 @@ diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c } /* Write the default DUID to the lease store. */ -diff -up dhcp-4.3.4/common/bpf.c.PPP dhcp-4.3.4/common/bpf.c ---- dhcp-4.3.4/common/bpf.c.PPP 2016-04-29 12:46:29.794988660 +0200 -+++ dhcp-4.3.4/common/bpf.c 2016-04-29 12:46:29.830988666 +0200 -@@ -599,6 +599,22 @@ get_hw_addr(const char *name, struct har +diff --git a/common/bpf.c b/common/bpf.c +index 67b6d64..ffbd09a 100644 +--- a/common/bpf.c ++++ b/common/bpf.c +@@ -650,6 +650,22 @@ get_hw_addr(const char *name, struct hardware *hw) { memcpy(&hw->hbuf[1], LLADDR(sa), sa->sdl_alen); break; #endif /* IFT_FDDI */ @@ -85,10 +104,11 @@ diff -up dhcp-4.3.4/common/bpf.c.PPP dhcp-4.3.4/common/bpf.c default: log_fatal("Unsupported device type %d for \"%s\"", sa->sdl_type, name); -diff -up dhcp-4.3.4/common/lpf.c.PPP dhcp-4.3.4/common/lpf.c ---- dhcp-4.3.4/common/lpf.c.PPP 2016-03-22 14:16:51.000000000 +0100 -+++ dhcp-4.3.4/common/lpf.c 2016-04-29 12:46:29.830988666 +0200 -@@ -548,6 +548,22 @@ get_hw_addr(const char *name, struct har +diff --git a/common/lpf.c b/common/lpf.c +index 82a279b..b0ed01c 100644 +--- a/common/lpf.c ++++ b/common/lpf.c +@@ -563,6 +563,22 @@ get_hw_addr(const char *name, struct hardware *hw) { hw->hbuf[0] = HTYPE_FDDI; memcpy(&hw->hbuf[1], sa->sa_data, 6); break; @@ -111,22 +131,11 @@ diff -up dhcp-4.3.4/common/lpf.c.PPP dhcp-4.3.4/common/lpf.c default: log_fatal("Unsupported device type %ld for \"%s\"", (long int)sa->sa_family, name); -diff -up dhcp-4.3.4/includes/dhcpd.h.PPP dhcp-4.3.4/includes/dhcpd.h ---- dhcp-4.3.4/includes/dhcpd.h.PPP 2016-04-29 12:46:29.831988667 +0200 -+++ dhcp-4.3.4/includes/dhcpd.h 2016-04-29 12:47:13.167995959 +0200 -@@ -2990,7 +2990,7 @@ void client_dns_remove(struct client_sta - - void dhcpv4_client_assignments(void); - void dhcpv6_client_assignments(void); --void form_duid(struct data_string *duid, const char *file, int line); -+isc_result_t form_duid(struct data_string *duid, const char *file, int line); - - void dhcp4o6_start(void); - -diff -up dhcp-4.3.4/includes/dhcp.h.PPP dhcp-4.3.4/includes/dhcp.h ---- dhcp-4.3.4/includes/dhcp.h.PPP 2016-04-29 12:46:29.822988665 +0200 -+++ dhcp-4.3.4/includes/dhcp.h 2016-04-29 12:46:29.832988667 +0200 -@@ -81,6 +81,8 @@ struct dhcp_packet { +diff --git a/includes/dhcp.h b/includes/dhcp.h +index 95bf539..4cc547a 100644 +--- a/includes/dhcp.h ++++ b/includes/dhcp.h +@@ -80,6 +80,8 @@ struct dhcp_packet { * is no standard for this so we * just steal a type */ @@ -135,10 +144,24 @@ diff -up dhcp-4.3.4/includes/dhcp.h.PPP dhcp-4.3.4/includes/dhcp.h /* Magic cookie validating dhcp options field (and bootp vendor extensions field). */ #define DHCP_OPTIONS_COOKIE "\143\202\123\143" -diff -up dhcp-4.3.4/server/dhcpv6.c.PPP dhcp-4.3.4/server/dhcpv6.c ---- dhcp-4.3.4/server/dhcpv6.c.PPP 2016-03-22 14:16:51.000000000 +0100 -+++ dhcp-4.3.4/server/dhcpv6.c 2016-04-29 12:46:29.833988667 +0200 -@@ -454,6 +454,9 @@ generate_new_server_duid(void) { +diff --git a/includes/dhcpd.h b/includes/dhcpd.h +index 2ac39ae..faa9251 100644 +--- a/includes/dhcpd.h ++++ b/includes/dhcpd.h +@@ -3051,7 +3051,7 @@ void client_dns_remove(struct client_state *client, struct iaddr *addr); + + void dhcpv4_client_assignments(void); + void dhcpv6_client_assignments(void); +-void form_duid(struct data_string *duid, const char *file, int line); ++isc_result_t form_duid(struct data_string *duid, const char *file, int line); + + void dhcp4o6_start(void); + +diff --git a/server/dhcpv6.c b/server/dhcpv6.c +index a7110f9..c5ce7e8 100644 +--- a/server/dhcpv6.c ++++ b/server/dhcpv6.c +@@ -482,6 +482,9 @@ generate_new_server_duid(void) { if (p->hw_address.hlen > 0) { break; } @@ -148,3 +171,6 @@ diff -up dhcp-4.3.4/server/dhcpv6.c.PPP dhcp-4.3.4/server/dhcpv6.c } if (p == NULL) { return ISC_R_UNEXPECTED; +-- +2.14.5 + diff --git a/dhcp-lpf-ib.patch b/0014-IPoIB-support-660681.patch similarity index 77% rename from dhcp-lpf-ib.patch rename to 0014-IPoIB-support-660681.patch index 766d518..a792e4f 100644 --- a/dhcp-lpf-ib.patch +++ b/0014-IPoIB-support-660681.patch @@ -1,16 +1,33 @@ -diff -up dhcp-4.3.4/client/dhclient.c.lpf-ib dhcp-4.3.4/client/dhclient.c ---- dhcp-4.3.4/client/dhclient.c.lpf-ib 2016-05-02 14:37:36.945128001 +0200 -+++ dhcp-4.3.4/client/dhclient.c 2016-05-02 14:37:36.952128005 +0200 -@@ -163,6 +163,8 @@ static const char use_noarg[] = "No argu - static const char use_v6command[] = "Command not used for DHCPv4: %s"; - #endif +From 6d74c2d0ceadef2eb1c43c2da47f1d5b732adf8c Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:34:21 +0100 +Subject: [PATCH 14/26] IPoIB support (#660681) +Cc: pzhukov@redhat.com + +(Submitted to dhcp-bugs@isc.org - [ISC-Bugs #24249]) +--- + client/dhclient.c | 32 +++++++ + common/bpf.c | 32 +++++++ + common/discover.c | 4 +- + common/lpf.c | 262 +++++++++++++++++++++++++++++++++++++++++++++++++----- + common/socket.c | 8 +- + includes/dhcpd.h | 6 +- + 6 files changed, 315 insertions(+), 29 deletions(-) + +diff --git a/client/dhclient.c b/client/dhclient.c +index 301132c..dc9080e 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -205,6 +205,8 @@ static const char use_v6command[] = "Command not used for DHCPv4: %s"; + + #define DHCLIENT_USAGEH "{--version|--help|-h}" +static void setup_ib_interface(struct interface_info *ip); + static void usage(const char *sfmt, const char *sarg) { -@@ -1066,6 +1068,13 @@ main(int argc, char **argv) { +@@ -1191,6 +1193,13 @@ main(int argc, char **argv) { } srandom(seed + cur_time + (unsigned)getpid()); @@ -24,7 +41,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.lpf-ib dhcp-4.3.4/client/dhclient.c /* * Establish a default DUID. We always do so for v6 and -@@ -1361,6 +1370,29 @@ int find_subnet (struct subnet **sp, +@@ -1486,6 +1495,29 @@ int find_subnet (struct subnet **sp, return 0; } @@ -54,12 +71,13 @@ diff -up dhcp-4.3.4/client/dhclient.c.lpf-ib dhcp-4.3.4/client/dhclient.c /* Individual States: * * Each routine is called from the dhclient_state_machine() in one of -diff -up dhcp-4.3.4/common/bpf.c.lpf-ib dhcp-4.3.4/common/bpf.c ---- dhcp-4.3.4/common/bpf.c.lpf-ib 2016-05-02 14:37:36.946128001 +0200 -+++ dhcp-4.3.4/common/bpf.c 2016-05-02 14:37:36.952128005 +0200 -@@ -198,11 +198,43 @@ struct bpf_insn dhcp_bpf_filter [] = { - BPF_STMT(BPF_RET+BPF_K, 0), - }; +diff --git a/common/bpf.c b/common/bpf.c +index ffbd09a..568e3d9 100644 +--- a/common/bpf.c ++++ b/common/bpf.c +@@ -237,11 +237,43 @@ int dhcp_bpf_relay_filter_len = + sizeof dhcp_bpf_relay_filter / sizeof (struct bpf_insn); + #endif +/* Packet filter program for DHCP over Infiniband. + * @@ -101,10 +119,11 @@ diff -up dhcp-4.3.4/common/bpf.c.lpf-ib dhcp-4.3.4/common/bpf.c #if defined (HAVE_TR_SUPPORT) struct bpf_insn dhcp_bpf_tr_filter [] = { /* accept all token ring packets due to variable length header */ -diff -up dhcp-4.3.4/common/discover.c.lpf-ib dhcp-4.3.4/common/discover.c ---- dhcp-4.3.4/common/discover.c.lpf-ib 2016-03-22 14:16:51.000000000 +0100 -+++ dhcp-4.3.4/common/discover.c 2016-05-02 14:38:08.257147982 +0200 -@@ -1235,7 +1235,7 @@ discover_interfaces(int state) { +diff --git a/common/discover.c b/common/discover.c +index 6ef8852..65881fc 100644 +--- a/common/discover.c ++++ b/common/discover.c +@@ -894,7 +894,7 @@ discover_interfaces(int state) { if_register_send(tmp); } else { /* get_hw_addr() was called by register. */ @@ -113,7 +132,7 @@ diff -up dhcp-4.3.4/common/discover.c.lpf-ib dhcp-4.3.4/common/discover.c } break; #ifdef DHCPv6 -@@ -1248,7 +1248,7 @@ discover_interfaces(int state) { +@@ -907,7 +907,7 @@ discover_interfaces(int state) { so now we have to call it explicitly to not leave the hardware address unknown (some code expects it cannot be. */ @@ -122,10 +141,11 @@ diff -up dhcp-4.3.4/common/discover.c.lpf-ib dhcp-4.3.4/common/discover.c } else { if_register_linklocal6(tmp); } -diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c ---- dhcp-4.3.4/common/lpf.c.lpf-ib 2016-05-02 14:37:36.947128002 +0200 -+++ dhcp-4.3.4/common/lpf.c 2016-05-02 14:37:36.953128006 +0200 -@@ -47,6 +47,17 @@ +diff --git a/common/lpf.c b/common/lpf.c +index b0ed01c..b732a86 100644 +--- a/common/lpf.c ++++ b/common/lpf.c +@@ -45,6 +45,17 @@ #include #include #include @@ -143,7 +163,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c #endif #if defined (USE_LPF_SEND) || defined (USE_LPF_RECEIVE) -@@ -80,10 +91,20 @@ int if_register_lpf (info) +@@ -78,10 +89,20 @@ int if_register_lpf (info) struct sockaddr common; } sa; struct ifreq ifr; @@ -166,7 +186,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT || errno == ESOCKTNOSUPPORT || errno == EPFNOSUPPORT || errno == EAFNOSUPPORT || errno == EINVAL) { -@@ -106,6 +127,7 @@ int if_register_lpf (info) +@@ -104,6 +125,7 @@ int if_register_lpf (info) /* Bind to the interface name */ memset (&sa, 0, sizeof sa); sa.ll.sll_family = AF_PACKET; @@ -174,7 +194,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c sa.ll.sll_ifindex = ifr.ifr_ifindex; if (bind (sock, &sa.common, sizeof sa)) { if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT || -@@ -122,8 +144,6 @@ int if_register_lpf (info) +@@ -120,8 +142,6 @@ int if_register_lpf (info) } @@ -183,16 +203,16 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c return sock; } #endif /* USE_LPF_SEND || USE_LPF_RECEIVE */ -@@ -178,6 +198,8 @@ void if_deregister_send (info) +@@ -176,6 +196,8 @@ void if_deregister_send (info) in bpf includes... */ extern struct sock_filter dhcp_bpf_filter []; extern int dhcp_bpf_filter_len; +extern struct sock_filter dhcp_ib_bpf_filter []; +extern int dhcp_ib_bpf_filter_len; - #if defined (HAVE_TR_SUPPORT) - extern struct sock_filter dhcp_bpf_tr_filter []; -@@ -196,11 +218,12 @@ void if_register_receive (info) + #if defined(RELAY_PORT) + extern struct sock_filter dhcp_bpf_relay_filter []; +@@ -199,11 +221,12 @@ void if_register_receive (info) #ifdef PACKET_AUXDATA { int val = 1; @@ -210,45 +230,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c } } } -@@ -250,15 +273,28 @@ static void lpf_gen_filter_setup (info) - - memset(&p, 0, sizeof(p)); - -- /* Set up the bpf filter program structure. This is defined in -- bpf.c */ -- p.len = dhcp_bpf_filter_len; -- p.filter = dhcp_bpf_filter; -- -- /* Patch the server port into the LPF program... -- XXX changes to filter program may require changes -- to the insn number(s) used below! XXX */ -- dhcp_bpf_filter [8].k = ntohs ((short)local_port); -+ if (info->hw_address.hbuf[0] == HTYPE_INFINIBAND) { -+ /* Set up the bpf filter program structure. */ -+ p.len = dhcp_ib_bpf_filter_len; -+ p.filter = dhcp_ib_bpf_filter; -+ -+ /* Patch the server port into the LPF program... -+ XXX -+ changes to filter program may require changes -+ to the insn number(s) used below! -+ XXX */ -+ dhcp_ib_bpf_filter[6].k = ntohs ((short)local_port); -+ } else { -+ /* Set up the bpf filter program structure. -+ This is defined in bpf.c */ -+ p.len = dhcp_bpf_filter_len; -+ p.filter = dhcp_bpf_filter; -+ -+ /* Patch the server port into the LPF program... -+ XXX changes to filter program may require changes -+ to the insn number(s) used below! XXX */ -+ dhcp_bpf_filter [8].k = ntohs ((short)local_port); -+ } - - if (setsockopt (info -> rfdesc, SOL_SOCKET, SO_ATTACH_FILTER, &p, - sizeof p) < 0) { -@@ -315,6 +351,54 @@ static void lpf_tr_filter_setup (info) +@@ -330,6 +353,54 @@ static void lpf_tr_filter_setup (info) #endif /* USE_LPF_RECEIVE */ #ifdef USE_LPF_SEND @@ -303,7 +285,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c ssize_t send_packet (interface, packet, raw, len, from, to, hto) struct interface_info *interface; struct packet *packet; -@@ -335,6 +419,11 @@ ssize_t send_packet (interface, packet, +@@ -350,6 +421,11 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto) return send_fallback (interface, packet, raw, len, from, to, hto); @@ -315,7 +297,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c if (hto == NULL && interface->anycast_mac_addr.hlen) hto = &interface->anycast_mac_addr; -@@ -355,6 +444,42 @@ ssize_t send_packet (interface, packet, +@@ -370,6 +446,42 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto) #endif /* USE_LPF_SEND */ #ifdef USE_LPF_RECEIVE @@ -358,7 +340,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c ssize_t receive_packet (interface, buf, len, from, hfrom) struct interface_info *interface; unsigned char *buf; -@@ -393,6 +518,10 @@ ssize_t receive_packet (interface, buf, +@@ -408,6 +520,10 @@ ssize_t receive_packet (interface, buf, len, from, hfrom) }; #endif /* PACKET_AUXDATA */ @@ -369,7 +351,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c length = recvmsg (interface->rfdesc, &msg, 0); if (length <= 0) return length; -@@ -506,11 +635,33 @@ void maybe_setup_fallback () +@@ -521,11 +637,33 @@ void maybe_setup_fallback () #endif #if defined (USE_LPF_RECEIVE) || defined (USE_LPF_HWADDR) @@ -406,7 +388,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c if (strlen(name) >= sizeof(tmp.ifr_name)) { log_fatal("Device name too long: \"%s\"", name); -@@ -524,16 +675,61 @@ get_hw_addr(const char *name, struct har +@@ -539,16 +677,61 @@ get_hw_addr(const char *name, struct hardware *hw) { memset(&tmp, 0, sizeof(tmp)); strcpy(tmp.ifr_name, name); if (ioctl(sock, SIOCGIFHWADDR, &tmp) < 0) { @@ -471,7 +453,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c break; case ARPHRD_IEEE802: #ifdef ARPHRD_IEEE802_TR -@@ -541,18 +737,50 @@ get_hw_addr(const char *name, struct har +@@ -556,18 +739,50 @@ get_hw_addr(const char *name, struct hardware *hw) { #endif /* ARPHRD_IEEE802_TR */ hw->hlen = 7; hw->hbuf[0] = HTYPE_IEEE802; @@ -526,7 +508,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c hw->hlen = 0; hw->hbuf[0] = HTYPE_RESERVED; /* 0xdeadbeef should never occur on the wire, -@@ -565,10 +793,13 @@ get_hw_addr(const char *name, struct har +@@ -580,10 +795,13 @@ get_hw_addr(const char *name, struct hardware *hw) { break; #endif default: @@ -543,10 +525,11 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c + freeifaddrs(ifaddrs); } #endif -diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c ---- dhcp-4.3.4/common/socket.c.lpf-ib 2016-03-22 14:16:51.000000000 +0100 -+++ dhcp-4.3.4/common/socket.c 2016-05-02 14:37:36.953128006 +0200 -@@ -328,7 +328,7 @@ void if_register_send (info) +diff --git a/common/socket.c b/common/socket.c +index 483eb9c..6e1caac 100644 +--- a/common/socket.c ++++ b/common/socket.c +@@ -350,7 +350,7 @@ void if_register_send (info) info->wfdesc = if_register_socket(info, AF_INET, 0, NULL); /* If this is a normal IPv4 address, get the hardware address. */ if (strcmp(info->name, "fallback") != 0) @@ -555,7 +538,7 @@ diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c #if defined (USE_SOCKET_FALLBACK) /* Fallback only registers for send, but may need to receive as well. */ -@@ -391,7 +391,7 @@ void if_register_receive (info) +@@ -413,7 +413,7 @@ void if_register_receive (info) #endif /* IP_PKTINFO... */ /* If this is a normal IPv4 address, get the hardware address. */ if (strcmp(info->name, "fallback") != 0) @@ -564,7 +547,7 @@ diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c if (!quiet_interface_discovery) log_info ("Listening on Socket/%s%s%s", -@@ -505,7 +505,7 @@ if_register6(struct interface_info *info +@@ -567,7 +567,7 @@ if_register6(struct interface_info *info, int do_multicast) { if (req_multi) if_register_multicast(info); @@ -573,7 +556,7 @@ diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c if (!quiet_interface_discovery) { if (info->shared_network != NULL) { -@@ -561,7 +561,7 @@ if_register_linklocal6(struct interface_ +@@ -623,7 +623,7 @@ if_register_linklocal6(struct interface_info *info) { info->rfdesc = sock; info->wfdesc = sock; @@ -582,10 +565,11 @@ diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c if (!quiet_interface_discovery) { if (info->shared_network != NULL) { -diff -up dhcp-4.3.4/includes/dhcpd.h.lpf-ib dhcp-4.3.4/includes/dhcpd.h ---- dhcp-4.3.4/includes/dhcpd.h.lpf-ib 2016-05-02 14:37:36.948128002 +0200 -+++ dhcp-4.3.4/includes/dhcpd.h 2016-05-02 14:37:36.954128006 +0200 -@@ -482,6 +482,9 @@ struct packet { +diff --git a/includes/dhcpd.h b/includes/dhcpd.h +index faa9251..0c1a0aa 100644 +--- a/includes/dhcpd.h ++++ b/includes/dhcpd.h +@@ -485,6 +485,9 @@ struct packet { #define HARDWARE_ADDR_LEN 20 @@ -595,7 +579,7 @@ diff -up dhcp-4.3.4/includes/dhcpd.h.lpf-ib dhcp-4.3.4/includes/dhcpd.h struct hardware { u_int8_t hlen; u_int8_t hbuf[HARDWARE_ADDR_LEN + 1]; -@@ -1343,6 +1346,7 @@ struct interface_info { +@@ -1365,6 +1368,7 @@ struct interface_info { struct shared_network *shared_network; /* Networks connected to this interface. */ struct hardware hw_address; /* Its physical address. */ @@ -603,7 +587,7 @@ diff -up dhcp-4.3.4/includes/dhcpd.h.lpf-ib dhcp-4.3.4/includes/dhcpd.h struct in_addr *addresses; /* Addresses associated with this * interface. */ -@@ -2580,7 +2584,7 @@ void print_dns_status (int, struct dhcp_ +@@ -2633,7 +2637,7 @@ void print_dns_status (int, struct dhcp_ddns_cb *, isc_result_t); #endif const char *print_time(TIME); @@ -612,3 +596,6 @@ diff -up dhcp-4.3.4/includes/dhcpd.h.lpf-ib dhcp-4.3.4/includes/dhcpd.h char *buf_to_hex (const unsigned char *s, unsigned len, const char *file, int line); char *format_lease_id(const unsigned char *s, unsigned len, int format, +-- +2.14.5 + diff --git a/0015-Add-GUID-DUID-to-dhcpd-logs-1064416.patch b/0015-Add-GUID-DUID-to-dhcpd-logs-1064416.patch new file mode 100644 index 0000000..1f88d7d --- /dev/null +++ b/0015-Add-GUID-DUID-to-dhcpd-logs-1064416.patch @@ -0,0 +1,332 @@ +From 3d3e442ed1316930a5360e4d5a56b46a42a29419 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:35:47 +0100 +Subject: [PATCH 15/26] Add GUID/DUID to dhcpd logs (#1064416) +Cc: pzhukov@redhat.com + +--- + client/dhclient.c | 75 ++++++++++++++++++++++++++++++++++++++++++---------- + server/dhcp.c | 78 +++++++++++++++++++++++++++++++++---------------------- + 2 files changed, 108 insertions(+), 45 deletions(-) + +diff --git a/client/dhclient.c b/client/dhclient.c +index dc9080e..8e57da9 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -1170,6 +1170,26 @@ main(int argc, char **argv) { + } + } + ++ /* We create a backup seed before rediscovering interfaces in order to ++ have a seed built using all of the available interfaces ++ It's interesting if required interfaces doesn't let us defined ++ a really unique seed due to a lack of valid HW addr later ++ (this is the case with DHCP over IB) ++ We only use the last device as using a sum could broke the ++ uniqueness of the seed among multiple nodes ++ */ ++ unsigned backup_seed = 0; ++ for (ip = interfaces; ip; ip = ip -> next) { ++ int junk; ++ if ( ip -> hw_address.hlen <= sizeof seed ) ++ continue; ++ memcpy (&junk, ++ &ip -> hw_address.hbuf [ip -> hw_address.hlen - ++ sizeof seed], sizeof seed); ++ backup_seed = junk; ++ } ++ ++ + /* At this point, all the interfaces that the script thinks + are relevant should be running, so now we once again call + discover_interfaces(), and this time ask it to actually set +@@ -1184,14 +1204,36 @@ main(int argc, char **argv) { + Not much entropy, but we're booting, so we're not likely to + find anything better. */ + seed = 0; ++ int seed_flag = 0; + for (ip = interfaces; ip; ip = ip->next) { + int junk; ++ if ( ip -> hw_address.hlen <= sizeof seed ) ++ continue; + memcpy(&junk, + &ip->hw_address.hbuf[ip->hw_address.hlen - + sizeof seed], sizeof seed); + seed += junk; ++ seed_flag = 1; + } +- srandom(seed + cur_time + (unsigned)getpid()); ++ if ( seed_flag == 0 ) { ++ if ( backup_seed != 0 ) { ++ seed = backup_seed; ++ log_info ("xid: rand init seed (0x%x) built using all" ++ " available interfaces",seed); ++ } ++ else { ++ seed = cur_time^((unsigned) gethostid()) ; ++ log_info ("xid: warning: no netdev with useable HWADDR found" ++ " for seed's uniqueness enforcement"); ++ log_info ("xid: rand init seed (0x%x) built using gethostid", ++ seed); ++ } ++ /* we only use seed and no current time as a broadcast reply */ ++ /* will certainly be used by the hwaddrless interface */ ++ srandom(seed + ((unsigned)(cur_tv.tv_usec * 1000000)) + (unsigned)getpid()); ++ } ++ else ++ srandom(seed + ((unsigned)(cur_tv.tv_usec * 1000000)) + (unsigned)getpid()); + + /* Setup specific Infiniband options */ + for (ip = interfaces; ip; ip = ip->next) { +@@ -1746,10 +1788,10 @@ void dhcpack (packet) + #endif + return; + } +- +- log_info ("DHCPACK of %s from %s", +- inet_ntoa(packet->raw->yiaddr), +- piaddr (packet->client_addr)); ++ log_info ("DHCPACK of %s from %s (xid=0x%x)", ++ inet_ntoa(packet->raw->yiaddr), ++ piaddr (packet -> client_addr), ++ ntohl(client -> xid)); + + lease = packet_to_lease (packet, client); + if (!lease) { +@@ -2669,7 +2711,7 @@ void dhcpnak (packet) + return; + } + +- log_info ("DHCPNAK from %s", piaddr (packet -> client_addr)); ++ log_info ("DHCPNAK from %s (xid=0x%x)", piaddr (packet -> client_addr), ntohl(client -> xid)); + + if (!client -> active) { + #if defined (DEBUG) +@@ -2802,10 +2844,10 @@ void send_discover (cpp) + (long)(client -> interval)); + } else + #endif +- log_info ("DHCPDISCOVER on %s to %s port %d interval %ld", ++ log_info ("DHCPDISCOVER on %s to %s port %d interval %ld (xid=0x%x)", + client -> name ? client -> name : client -> interface -> name, + inet_ntoa (sockaddr_broadcast.sin_addr), +- ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval)); ++ ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval), ntohl(client -> xid)); + + /* Send out a packet. */ + #if defined(DHCPv6) && defined(DHCP4o6) +@@ -3108,10 +3150,12 @@ void send_request (cpp) + } + + strncpy(rip_buf, rip_str, sizeof(rip_buf)-1); +- log_info ("DHCPREQUEST for %s on %s to %s port %d", rip_buf, ++ log_info ("DHCPREQUEST for %s on %s to %s port %d (xid=0x%x)", ++ rip_buf, + client->name ? client->name : client->interface->name, + inet_ntoa(destination.sin_addr), +- ntohs (destination.sin_port)); ++ ntohs (destination.sin_port), ++ ntohl(client -> xid)); + + #if defined(DHCPv6) && defined(DHCP4o6) + if (dhcpv4_over_dhcpv6) { +@@ -3168,11 +3212,13 @@ void send_decline (cpp) + log_info ("DHCPDECLINE"); + } else + #endif +- log_info ("DHCPDECLINE of %s on %s to %s port %d", ++ log_info ("DHCPDECLINE of %s on %s to %s port %d (xid=0x%x)", + piaddr(client->requested_address), + (client->name ? client->name : client->interface->name), + inet_ntoa(sockaddr_broadcast.sin_addr), +- ntohs(sockaddr_broadcast.sin_port)); ++ ntohs(sockaddr_broadcast.sin_port), ++ ntohl(client -> xid)); ++ + + /* Send out a packet. */ + #if defined(DHCPv6) && defined(DHCP4o6) +@@ -3231,11 +3277,12 @@ void send_release (cpp) + log_info ("DHCPRELEASE"); + } else + #endif +- log_info ("DHCPRELEASE of %s on %s to %s port %d", ++ log_info ("DHCPRELEASE of %s on %s to %s port %d (xid=0x%x)", + piaddr(client->active->address), + client->name ? client->name : client->interface->name, + inet_ntoa (destination.sin_addr), +- ntohs (destination.sin_port)); ++ ntohs (destination.sin_port), ++ ntohl(client -> xid)); + + #if defined(DHCPv6) && defined(DHCP4o6) + if (dhcpv4_over_dhcpv6) { +diff --git a/server/dhcp.c b/server/dhcp.c +index 20f2a62..0582c4c 100644 +--- a/server/dhcp.c ++++ b/server/dhcp.c +@@ -87,6 +87,42 @@ const int dhcp_type_name_max = ((sizeof dhcp_type_names) / sizeof (char *)); + + static TIME leaseTimeCheck(TIME calculated, TIME alternate); + ++char *print_client_identifier_from_packet (packet) ++ struct packet *packet; ++{ ++ struct option_cache *oc; ++ struct data_string client_identifier; ++ char *ci; ++ ++ memset (&client_identifier, 0, sizeof client_identifier); ++ ++ oc = lookup_option (&dhcp_universe, packet -> options, ++ DHO_DHCP_CLIENT_IDENTIFIER); ++ if (oc && ++ evaluate_option_cache (&client_identifier, ++ packet, (struct lease *)0, ++ (struct client_state *)0, ++ packet -> options, ++ (struct option_state *)0, ++ &global_scope, oc, MDL)) { ++ ci = print_hw_addr (HTYPE_INFINIBAND, client_identifier.len, client_identifier.data); ++ data_string_forget (&client_identifier, MDL); ++ return ci; ++ } else ++ return "\"no client id\""; ++} ++ ++char *print_hw_addr_or_client_id (packet) ++ struct packet *packet; ++{ ++ if (packet -> raw -> htype == HTYPE_INFINIBAND) ++ return print_client_identifier_from_packet (packet); ++ else ++ return print_hw_addr (packet -> raw -> htype, ++ packet -> raw -> hlen, ++ packet -> raw -> chaddr); ++} ++ + void + dhcp (struct packet *packet) { + int ms_nulltp = 0; +@@ -129,9 +165,7 @@ dhcp (struct packet *packet) { + + log_info("%s from %s via %s: %s", s, + (packet->raw->htype +- ? print_hw_addr(packet->raw->htype, +- packet->raw->hlen, +- packet->raw->chaddr) ++ ? print_hw_addr_or_client_id(packet) + : ""), + packet->raw->giaddr.s_addr + ? inet_ntoa(packet->raw->giaddr) +@@ -328,9 +362,7 @@ void dhcpdiscover (packet, ms_nulltp) + #endif + snprintf (msgbuf, sizeof msgbuf, "DHCPDISCOVER from %s %s%s%svia %s", + (packet -> raw -> htype +- ? print_hw_addr (packet -> raw -> htype, +- packet -> raw -> hlen, +- packet -> raw -> chaddr) ++ ? print_hw_addr_or_client_id (packet) + : (lease + ? print_hex_1(lease->uid_len, lease->uid, 60) + : "")), +@@ -542,9 +574,7 @@ void dhcprequest (packet, ms_nulltp, ip_lease) + "DHCPREQUEST for %s%s from %s %s%s%svia %s", + piaddr (cip), smbuf, + (packet -> raw -> htype +- ? print_hw_addr (packet -> raw -> htype, +- packet -> raw -> hlen, +- packet -> raw -> chaddr) ++ ? print_hw_addr_or_client_id(packet) + : (lease + ? print_hex_1(lease->uid_len, lease->uid, 60) + : "")), +@@ -785,9 +815,7 @@ void dhcprelease (packet, ms_nulltp) + if ((oc = lookup_option (&dhcp_universe, packet -> options, + DHO_DHCP_REQUESTED_ADDRESS))) { + log_info ("DHCPRELEASE from %s specified requested-address.", +- print_hw_addr (packet -> raw -> htype, +- packet -> raw -> hlen, +- packet -> raw -> chaddr)); ++ print_hw_addr_or_client_id(packet)); + } + + oc = lookup_option (&dhcp_universe, packet -> options, +@@ -879,9 +907,7 @@ void dhcprelease (packet, ms_nulltp) + "DHCPRELEASE of %s from %s %s%s%svia %s (%sfound)", + cstr, + (packet -> raw -> htype +- ? print_hw_addr (packet -> raw -> htype, +- packet -> raw -> hlen, +- packet -> raw -> chaddr) ++ ? print_hw_addr_or_client_id(packet) + : (lease + ? print_hex_1(lease->uid_len, lease->uid, 60) + : "")), +@@ -986,9 +1012,7 @@ void dhcpdecline (packet, ms_nulltp) + "DHCPDECLINE of %s from %s %s%s%svia %s", + piaddr (cip), + (packet -> raw -> htype +- ? print_hw_addr (packet -> raw -> htype, +- packet -> raw -> hlen, +- packet -> raw -> chaddr) ++ ? print_hw_addr_or_client_id(packet) + : (lease + ? print_hex_1(lease->uid_len, lease->uid, 60) + : "")), +@@ -1732,8 +1756,7 @@ void dhcpinform (packet, ms_nulltp) + /* Report what we're sending. */ + snprintf(msgbuf, sizeof msgbuf, "DHCPACK to %s (%s) via", piaddr(cip), + (packet->raw->htype && packet->raw->hlen) ? +- print_hw_addr(packet->raw->htype, packet->raw->hlen, +- packet->raw->chaddr) : ++ print_hw_addr_or_client_id(packet) : + ""); + log_info("%s %s", msgbuf, gip.len ? piaddr(gip) : + packet->interface->name); +@@ -1918,9 +1941,7 @@ void nak_lease (packet, cip, network_group) + #endif + log_info ("DHCPNAK on %s to %s via %s", + piaddr (*cip), +- print_hw_addr (packet -> raw -> htype, +- packet -> raw -> hlen, +- packet -> raw -> chaddr), ++ print_hw_addr_or_client_id(packet), + packet -> raw -> giaddr.s_addr + ? inet_ntoa (packet -> raw -> giaddr) + : packet -> interface -> name); +@@ -3936,7 +3957,7 @@ void dhcp_reply (lease) + ? (state -> offer == DHCPACK ? "DHCPACK" : "DHCPOFFER") + : "BOOTREPLY"), + piaddr (lease -> ip_addr), +- (lease -> hardware_addr.hlen ++ (lease -> hardware_addr.hlen > 1 + ? print_hw_addr (lease -> hardware_addr.hbuf [0], + lease -> hardware_addr.hlen - 1, + &lease -> hardware_addr.hbuf [1]) +@@ -4497,10 +4518,7 @@ int find_lease (struct lease **lp, + if (uid_lease) { + if (uid_lease->binding_state == FTS_ACTIVE) { + log_error ("client %s has duplicate%s on %s", +- (print_hw_addr +- (packet -> raw -> htype, +- packet -> raw -> hlen, +- packet -> raw -> chaddr)), ++ (print_hw_addr_or_client_id(packet)), + " leases", + (ip_lease -> subnet -> + shared_network -> name)); +@@ -4667,9 +4685,7 @@ int find_lease (struct lease **lp, + log_error("uid lease %s for client %s is duplicate " + "on %s", + piaddr(uid_lease->ip_addr), +- print_hw_addr(packet->raw->htype, +- packet->raw->hlen, +- packet->raw->chaddr), ++ print_hw_addr_or_client_id(packet), + uid_lease->subnet->shared_network->name); + + if (!packet -> raw -> ciaddr.s_addr && +-- +2.14.5 + diff --git a/0016-Turn-on-creating-sending-of-DUID.patch b/0016-Turn-on-creating-sending-of-DUID.patch new file mode 100644 index 0000000..bafffb5 --- /dev/null +++ b/0016-Turn-on-creating-sending-of-DUID.patch @@ -0,0 +1,126 @@ +From 2f6b827e89305adcff45288c632785ac054adb8e Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:36:30 +0100 +Subject: [PATCH 16/26] Turn on creating/sending of DUID +Cc: pzhukov@redhat.com + +as client identifier with DHCPv4 clients (#560361c#40, rfc4361) +--- + client/dhclient.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 70 insertions(+), 4 deletions(-) + +diff --git a/client/dhclient.c b/client/dhclient.c +index 8e57da9..ccc98e4 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -4021,6 +4021,59 @@ write_options(struct client_state *client, struct option_state *options, + } + } + ++int unhexchar(char c) { ++ ++ if (c >= '0' && c <= '9') ++ return c - '0'; ++ ++ if (c >= 'a' && c <= 'f') ++ return c - 'a' + 10; ++ ++ if (c >= 'A' && c <= 'F') ++ return c - 'A' + 10; ++ ++ return -1; ++} ++ ++isc_result_t ++read_uuid(u_int8_t* uuid) { ++ const char *id_fname = "/etc/machine-id"; ++ char id[32]; ++ size_t nread; ++ FILE * file = fopen( id_fname , "r"); ++ if (!file) { ++ log_debug("Cannot open %s", id_fname); ++ return ISC_R_IOERROR; ++ } ++ nread = fread(id, 1, sizeof id, file); ++ fclose(file); ++ ++ if (nread < 32) { ++ log_debug("Not enough data in %s", id_fname); ++ return ISC_R_IOERROR; ++ } ++ int j; ++ for (j = 0; j < 16; j++) { ++ int a, b; ++ ++ a = unhexchar(id[j*2]); ++ b = unhexchar(id[j*2+1]); ++ ++ if (a < 0 || b < 0) { ++ log_debug("Wrong data in %s", id_fname); ++ return ISC_R_IOERROR; ++ } ++ uuid[j] = a << 4 | b; ++ } ++ ++ /* Set UUID version to 4 --- truly random generation */ ++ uuid[6] = (uuid[6] & 0x0F) | 0x40; ++ /* Set the UUID variant to DCE */ ++ uuid[8] = (uuid[8] & 0x3F) | 0x80; ++ ++ return ISC_R_SUCCESS; ++} ++ + /* + * The "best" default DUID, since we cannot predict any information + * about the system (such as whether or not the hardware addresses are +@@ -4041,6 +4094,7 @@ form_duid(struct data_string *duid, const char *file, int line) + struct interface_info *ip; + int len; + char *str; ++ u_int8_t uuid[16]; + + /* For now, just use the first interface on the list. */ + ip = interfaces; +@@ -4061,9 +4115,16 @@ form_duid(struct data_string *duid, const char *file, int line) + (ip->hw_address.hlen > sizeof(ip->hw_address.hbuf))) + log_fatal("Impossible hardware address length at %s:%d.", MDL); + +- if (duid_type == 0) +- duid_type = stateless ? DUID_LL : DUID_LLT; +- ++ if (duid_type == 0) { ++ if (read_uuid(uuid) == ISC_R_SUCCESS) ++ duid_type = DUID_UUID; ++ else ++ duid_type = stateless ? DUID_LL : DUID_LLT; ++ } ++ ++ if (duid_type == DUID_UUID) ++ len = 2 + sizeof (uuid); ++ else { + /* + * 2 bytes for the 'duid type' field. + * 2 bytes for the 'htype' field. +@@ -4074,13 +4135,18 @@ form_duid(struct data_string *duid, const char *file, int line) + len = 4 + (ip->hw_address.hlen - 1); + if (duid_type == DUID_LLT) + len += 4; ++ } + if (!buffer_allocate(&duid->buffer, len, MDL)) + log_fatal("no memory for default DUID!"); + duid->data = duid->buffer->data; + duid->len = len; + ++ if (duid_type == DUID_UUID) { ++ putUShort(duid->buffer->data, DUID_UUID); ++ memcpy(duid->buffer->data + 2, uuid, sizeof(uuid)); ++ } + /* Basic Link Local Address type of DUID. */ +- if (duid_type == DUID_LLT) { ++ else if (duid_type == DUID_LLT) { + putUShort(duid->buffer->data, DUID_LLT); + putUShort(duid->buffer->data + 2, ip->hw_address.hbuf[0]); + putULong(duid->buffer->data + 4, cur_time - DUID_TIME_EPOCH); +-- +2.14.5 + diff --git a/dhcp-client-request-release-bind-iface.patch b/0017-Send-unicast-request-release-via-correct-interface.patch similarity index 70% rename from dhcp-client-request-release-bind-iface.patch rename to 0017-Send-unicast-request-release-via-correct-interface.patch index 7b9f271..26c8b96 100644 --- a/dhcp-client-request-release-bind-iface.patch +++ b/0017-Send-unicast-request-release-via-correct-interface.patch @@ -1,7 +1,20 @@ -diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c ---- dhcp-4.3.4/client/dhclient.c.bind-iface 2016-04-29 13:06:50.595257108 +0200 -+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 13:08:30.237281528 +0200 -@@ -3023,6 +3023,14 @@ void send_request (cpp) +From 193c4d7631fd623efa601f52fdab6018bf8be771 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:39:36 +0100 +Subject: [PATCH 17/26] Send unicast request/release via correct interface +Cc: pzhukov@redhat.com + +(#800561, #1177351) +(Submitted to dhcp-bugs@isc.org - [ISC-Bugs #30544]) +--- + client/dhclient.c | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +diff --git a/client/dhclient.c b/client/dhclient.c +index ccc98e4..27fde69 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -3171,6 +3171,14 @@ void send_request (cpp) #endif if (destination.sin_addr.s_addr != INADDR_BROADCAST && fallback_interface) { @@ -16,7 +29,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c result = send_packet(fallback_interface, NULL, &client->packet, client->packet_length, from, &destination, NULL); -@@ -3032,6 +3040,13 @@ void send_request (cpp) +@@ -3180,6 +3188,13 @@ void send_request (cpp) client->packet_length, fallback_interface->name); } @@ -30,7 +43,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c } else { /* Send out a packet. */ -@@ -3144,6 +3159,14 @@ void send_release (cpp) +@@ -3297,6 +3312,14 @@ void send_release (cpp) } else #endif if (fallback_interface) { @@ -45,7 +58,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c result = send_packet(fallback_interface, NULL, &client->packet, client->packet_length, from, &destination, NULL); -@@ -3153,6 +3176,13 @@ void send_release (cpp) +@@ -3306,6 +3329,13 @@ void send_release (cpp) client->packet_length, fallback_interface->name); } @@ -59,3 +72,6 @@ diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c } else { /* Send out a packet. */ result = send_packet(client->interface, NULL, &client->packet, +-- +2.14.5 + diff --git a/dhcp-no-subnet-error2info.patch b/0018-No-subnet-declaration-for-iface-should-be-info-not-e.patch similarity index 70% rename from dhcp-no-subnet-error2info.patch rename to 0018-No-subnet-declaration-for-iface-should-be-info-not-e.patch index 975a4d4..2ff4030 100644 --- a/dhcp-no-subnet-error2info.patch +++ b/0018-No-subnet-declaration-for-iface-should-be-info-not-e.patch @@ -1,7 +1,19 @@ -diff -up dhcp-4.3.0a1/common/discover.c.error2info dhcp-4.3.0a1/common/discover.c ---- dhcp-4.3.0a1/common/discover.c.error2info 2013-12-20 13:59:15.148553898 +0100 -+++ dhcp-4.3.0a1/common/discover.c 2013-12-20 13:59:15.181553438 +0100 -@@ -779,9 +779,9 @@ discover_interfaces(int state) { +From 2277d041692b8ebdf6b86d41e3a0bc0381cd1e47 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:40:51 +0100 +Subject: [PATCH 18/26] No subnet declaration for ' should be info, not + error. +Cc: pzhukov@redhat.com + +--- + common/discover.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/common/discover.c b/common/discover.c +index 65881fc..056342c 100644 +--- a/common/discover.c ++++ b/common/discover.c +@@ -801,9 +801,9 @@ discover_interfaces(int state) { /* We must have a subnet declaration for each interface. */ if (!tmp->shared_network && (state == DISCOVER_SERVER)) { @@ -13,7 +25,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.error2info dhcp-4.3.0a1/common/discover. tmp->name, (tmp->addresses == NULL) ? "no IPv4 addresses" : -@@ -796,26 +796,26 @@ discover_interfaces(int state) { +@@ -818,26 +818,26 @@ discover_interfaces(int state) { } else { strcpy(abuf, "no IPv6 addresses"); } @@ -46,3 +58,6 @@ diff -up dhcp-4.3.0a1/common/discover.c.error2info dhcp-4.3.0a1/common/discover. goto next; } else { log_error ("You must write a %s", +-- +2.14.5 + diff --git a/0019-dhclient-write-DUID_LLT-even-in-stateless-mode-11563.patch b/0019-dhclient-write-DUID_LLT-even-in-stateless-mode-11563.patch new file mode 100644 index 0000000..3405ea1 --- /dev/null +++ b/0019-dhclient-write-DUID_LLT-even-in-stateless-mode-11563.patch @@ -0,0 +1,29 @@ +From 6ea56e988df1da51f7d0bdd8984b38e40102c17b Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:41:14 +0100 +Subject: [PATCH 19/26] dhclient: write DUID_LLT even in stateless mode + (#1156356) +Cc: pzhukov@redhat.com + +(Submitted to dhcp-bugs@isc.org - [ISC-Bugs #38144]) +--- + client/dhclient.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/client/dhclient.c b/client/dhclient.c +index 27fde69..4e5546a 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -1442,6 +1442,9 @@ void run_stateless(int exit_mode, u_int16_t port) + data_string_forget(&default_duid, MDL); + + form_duid(&default_duid, MDL); ++ if (form_duid(&default_duid, MDL) == ISC_R_SUCCESS && ++ duid_type == DUID_LLT) ++ write_duid(&default_duid); + } + + #ifdef DHCP4o6 +-- +2.14.5 + diff --git a/dhcp-iface_hwaddr_discovery.patch b/0020-Discover-all-hwaddress-for-xid-uniqueness.patch similarity index 71% rename from dhcp-iface_hwaddr_discovery.patch rename to 0020-Discover-all-hwaddress-for-xid-uniqueness.patch index 2cd1d8a..c838d7a 100644 --- a/dhcp-iface_hwaddr_discovery.patch +++ b/0020-Discover-all-hwaddress-for-xid-uniqueness.patch @@ -1,8 +1,20 @@ +From 01ce61b8a0331a2f068ca2191bfb897b505c1b9d Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 21 Feb 2019 10:42:50 +0100 +Subject: [PATCH 20/26] Discover all hwaddress for xid uniqueness +Cc: pzhukov@redhat.com + +--- + common/discover.c | 2 ++ + common/lpf.c | 27 ++++++++++++++++++++++----- + includes/dhcpd.h | 3 +++ + 3 files changed, 27 insertions(+), 5 deletions(-) + diff --git a/common/discover.c b/common/discover.c -index 26a78ca..ed01e45 100644 +index 056342c..e66e1c5 100644 --- a/common/discover.c +++ b/common/discover.c -@@ -635,6 +635,8 @@ discover_interfaces(int state) { +@@ -648,6 +648,8 @@ discover_interfaces(int state) { interface_dereference(&tmp, MDL); tmp = interfaces; /* XXX */ } @@ -12,10 +24,10 @@ index 26a78ca..ed01e45 100644 if (dhcp_interface_discovery_hook) { (*dhcp_interface_discovery_hook)(tmp); diff --git a/common/lpf.c b/common/lpf.c -index 4a252ca..467b055 100644 +index b732a86..a708a5d 100644 --- a/common/lpf.c +++ b/common/lpf.c -@@ -697,8 +697,22 @@ ioctl_get_ll(char *name) +@@ -699,8 +699,22 @@ ioctl_get_ll(char *name) return sll; } @@ -38,7 +50,7 @@ index 4a252ca..467b055 100644 { struct hardware *hw = &info->hw_address; char *name = info->name; -@@ -708,7 +722,8 @@ get_hw_addr(struct interface_info *info) +@@ -710,7 +724,8 @@ get_hw_addr(struct interface_info *info) int sll_allocated = 0; char *dup = NULL; char *colon = NULL; @@ -48,7 +60,7 @@ index 4a252ca..467b055 100644 if (getifaddrs(&ifaddrs) == -1) log_fatal("Failed to get interfaces"); -@@ -792,14 +807,16 @@ get_hw_addr(struct interface_info *info) +@@ -794,14 +809,16 @@ get_hw_addr(struct interface_info *info) hw->hbuf[4] = 0xef; break; #endif @@ -70,10 +82,10 @@ index 4a252ca..467b055 100644 } #endif diff --git a/includes/dhcpd.h b/includes/dhcpd.h -index d534f8c..66a21fb 100644 +index 0c1a0aa..635c510 100644 --- a/includes/dhcpd.h +++ b/includes/dhcpd.h -@@ -2591,7 +2591,10 @@ void print_dns_status (int, struct dhcp_ddns_cb *, isc_result_t); +@@ -2637,7 +2637,10 @@ void print_dns_status (int, struct dhcp_ddns_cb *, isc_result_t); #endif const char *print_time(TIME); @@ -84,3 +96,6 @@ index d534f8c..66a21fb 100644 char *buf_to_hex (const unsigned char *s, unsigned len, const char *file, int line); char *format_lease_id(const unsigned char *s, unsigned len, int format, +-- +2.14.5 + diff --git a/0021-Load-leases-DB-in-non-replay-mode-only.patch b/0021-Load-leases-DB-in-non-replay-mode-only.patch new file mode 100644 index 0000000..d398918 --- /dev/null +++ b/0021-Load-leases-DB-in-non-replay-mode-only.patch @@ -0,0 +1,50 @@ +commit 50c2b3ba8ce030a47b55dd707bb8a6ab20444a05 +Author: Pavel Zhukov +Date: Thu Feb 21 10:44:06 2019 +0100 + + Load leases DB in non-replay mode only + +diff --git a/server/confpars.c b/server/confpars.c +index 2743979..6b61964 100644 +--- a/server/confpars.c ++++ b/server/confpars.c +@@ -134,6 +134,11 @@ isc_result_t read_conf_file (const char *filename, struct group *group, + + cfile = (struct parse *)0; + #if defined (TRACING) ++ // No need to dmalloc huge memory region if we're not going to re-play ++ if (!trace_record()){ ++ status = new_parse(&cfile, file, NULL, 0, filename, 0); ++ goto noreplay; ++ }; + flen = lseek (file, (off_t)0, SEEK_END); + if (flen < 0) { + boom: +@@ -165,7 +170,6 @@ isc_result_t read_conf_file (const char *filename, struct group *group, + if (result != ulen) + log_fatal ("%s: short read of %d bytes instead of %d.", + filename, ulen, result); +- close (file); + memfile: + /* If we're recording, write out the filename and file contents. */ + if (trace_record ()) +@@ -174,6 +178,9 @@ isc_result_t read_conf_file (const char *filename, struct group *group, + #else + status = new_parse(&cfile, file, NULL, 0, filename, 0); + #endif ++ noreplay: ++ if (!trace_playback()) ++ close (file); + if (status != ISC_R_SUCCESS || cfile == NULL) + return status; + +@@ -183,7 +190,8 @@ isc_result_t read_conf_file (const char *filename, struct group *group, + status = conf_file_subparse (cfile, group, group_type); + end_parse (&cfile); + #if defined (TRACING) +- dfree (dbuf, MDL); ++ if (trace_record()) ++ dfree (dbuf, MDL); + #endif + return status; + } diff --git a/dhcp-dhclient-preinit6s.patch b/0022-dhclient-make-sure-link-local-address-is-ready-in-st.patch similarity index 67% rename from dhcp-dhclient-preinit6s.patch rename to 0022-dhclient-make-sure-link-local-address-is-ready-in-st.patch index 0ce1cf8..85ea650 100644 --- a/dhcp-dhclient-preinit6s.patch +++ b/0022-dhclient-make-sure-link-local-address-is-ready-in-st.patch @@ -1,7 +1,20 @@ -diff -up dhcp-4.3.4/client/dhclient.c.preinit6s dhcp-4.3.4/client/dhclient.c ---- dhcp-4.3.4/client/dhclient.c.preinit6s 2016-04-29 13:15:10.361379493 +0200 -+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 13:17:43.622415423 +0200 -@@ -812,6 +812,12 @@ main(int argc, char **argv) { +From 9975d198a2c02e32c31c3e0f43d2aa79dfa7f508 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 28 Feb 2019 15:30:21 +0100 +Subject: [PATCH 22/26] dhclient: make sure link-local address is ready in + stateless mode +Cc: pzhukov@redhat.com + +Bug-url: https://bugzilla.redhat.com/1263466 +--- + client/dhclient.c | 30 ++++++++++++++++++++---------- + 1 file changed, 20 insertions(+), 10 deletions(-) + +diff --git a/client/dhclient.c b/client/dhclient.c +index 4e5546a..9b65438 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -937,6 +937,12 @@ main(int argc, char **argv) { inaddr_any.s_addr = INADDR_ANY; @@ -14,8 +27,8 @@ diff -up dhcp-4.3.4/client/dhclient.c.preinit6s dhcp-4.3.4/client/dhclient.c /* Stateless special case. */ if (stateless) { if (release_mode || (wanted_ia_na > 0) || -@@ -828,12 +834,6 @@ main(int argc, char **argv) { - return 0; +@@ -953,12 +959,6 @@ main(int argc, char **argv) { + finish(0); } - /* Discover all the network interfaces. */ @@ -27,7 +40,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.preinit6s dhcp-4.3.4/client/dhclient.c /* Parse any extra command line configuration arguments: */ if ((dhcp_client_identifier_arg != NULL) && (*dhcp_client_identifier_arg != '\0')) { arg_conf_len = asprintf(&arg_conf, "send dhcp-client-identifier \"%s\";", dhcp_client_identifier_arg); -@@ -1288,20 +1288,30 @@ void run_stateless(int exit_mode, u_int1 +@@ -1413,20 +1413,30 @@ void run_stateless(int exit_mode, u_int16_t port) IGNORE_UNUSED(port); #endif @@ -62,3 +75,6 @@ diff -up dhcp-4.3.4/client/dhclient.c.preinit6s dhcp-4.3.4/client/dhclient.c /* Parse the lease database. */ read_client_leases(); +-- +2.14.5 + diff --git a/dhcp-option97-pxe-client-id.patch b/0023-option-97-pxe-client-id.patch similarity index 69% rename from dhcp-option97-pxe-client-id.patch rename to 0023-option-97-pxe-client-id.patch index fac2ace..6cc4328 100644 --- a/dhcp-option97-pxe-client-id.patch +++ b/0023-option-97-pxe-client-id.patch @@ -1,7 +1,27 @@ -diff -up dhcp-4.3.5b1/common/options.c.option97 dhcp-4.3.5b1/common/options.c ---- dhcp-4.3.5b1/common/options.c.option97 2016-09-12 17:17:13.972691041 +0200 -+++ dhcp-4.3.5b1/common/options.c 2016-09-12 17:19:17.706790276 +0200 -@@ -4434,13 +4434,26 @@ int validate_packet(struct packet *packe +From 6fd7894ea57791c8eee16c21d19da34b909e016e Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 28 Feb 2019 16:40:38 +0100 +Subject: [PATCH 23/26] option 97 - pxe-client-id +Cc: pzhukov@redhat.com + +Bug-url: https://bugzilla.redhat.com/1058674 +ISC-Bugs #38110 +--- + common/options.c | 27 ++++++++++++++++++++------- + common/tables.c | 3 ++- + includes/dhcp.h | 1 + + server/dhcp.c | 19 +++++++++++++++++++ + server/dhcpd.conf.5 | 9 ++++++--- + server/dhcpleasequery.c | 18 +++++++++++++++--- + server/failover.c | 3 +++ + server/mdb.c | 5 +++-- + 8 files changed, 69 insertions(+), 16 deletions(-) + +diff --git a/common/options.c b/common/options.c +index 3034cf0..686dd12 100644 +--- a/common/options.c ++++ b/common/options.c +@@ -4465,13 +4465,26 @@ int validate_packet(struct packet *packet) "a future version of ISC DHCP will reject this"); } } else { @@ -35,12 +55,13 @@ diff -up dhcp-4.3.5b1/common/options.c.option97 dhcp-4.3.5b1/common/options.c } } -diff -up dhcp-4.3.5b1/common/tables.c.option97 dhcp-4.3.5b1/common/tables.c ---- dhcp-4.3.5b1/common/tables.c.option97 2016-09-12 17:17:13.927691005 +0200 -+++ dhcp-4.3.5b1/common/tables.c 2016-09-12 17:17:13.972691041 +0200 +diff --git a/common/tables.c b/common/tables.c +index f1be07d..4419220 100644 +--- a/common/tables.c ++++ b/common/tables.c @@ -196,8 +196,9 @@ static struct option dhcp_options[] = { /* Defined by RFC 4578 */ - { "pxe-system-type", "S", &dhcp_universe, 93, 1 }, + { "pxe-system-type", "Sa", &dhcp_universe, 93, 1 }, { "pxe-interface-id", "BBB", &dhcp_universe, 94, 1 }, - { "pxe-client-id", "BX", &dhcp_universe, 97, 1 }, #endif @@ -49,10 +70,11 @@ diff -up dhcp-4.3.5b1/common/tables.c.option97 dhcp-4.3.5b1/common/tables.c { "uap-servers", "t", &dhcp_universe, 98, 1 }, #if defined(RFC4776_OPTIONS) { "geoconf-civic", "X", &dhcp_universe, 99, 1 }, -diff -up dhcp-4.3.5b1/includes/dhcp.h.option97 dhcp-4.3.5b1/includes/dhcp.h ---- dhcp-4.3.5b1/includes/dhcp.h.option97 2016-09-12 17:17:13.936691013 +0200 -+++ dhcp-4.3.5b1/includes/dhcp.h 2016-09-12 17:17:13.972691041 +0200 -@@ -159,6 +159,7 @@ struct dhcp_packet { +diff --git a/includes/dhcp.h b/includes/dhcp.h +index 4cc547a..4eb9791 100644 +--- a/includes/dhcp.h ++++ b/includes/dhcp.h +@@ -158,6 +158,7 @@ struct dhcp_packet { #define DHO_AUTHENTICATE 90 /* RFC3118, was 210 */ #define DHO_CLIENT_LAST_TRANSACTION_TIME 91 #define DHO_ASSOCIATED_IP 92 @@ -60,21 +82,22 @@ diff -up dhcp-4.3.5b1/includes/dhcp.h.option97 dhcp-4.3.5b1/includes/dhcp.h #define DHO_SUBNET_SELECTION 118 /* RFC3011! */ #define DHO_DOMAIN_SEARCH 119 /* RFC3397 */ #define DHO_CLASSLESS_STATIC_ROUTES 121 /* RFC3442 */ -diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c ---- dhcp-4.3.5b1/server/dhcp.c.option97 2016-09-12 17:17:13.947691021 +0200 -+++ dhcp-4.3.5b1/server/dhcp.c 2016-09-12 17:17:13.973691042 +0200 -@@ -221,6 +221,10 @@ dhcp (struct packet *packet) { +diff --git a/server/dhcp.c b/server/dhcp.c +index 0582c4c..4e86262 100644 +--- a/server/dhcp.c ++++ b/server/dhcp.c +@@ -222,6 +222,10 @@ dhcp (struct packet *packet) { + if (lease -> uid_len) { oc = lookup_option (&dhcp_universe, packet -> options, DHO_DHCP_CLIENT_IDENTIFIER); - if (!oc) ++ if (!oc) + oc = lookup_option (&dhcp_universe, + packet -> options, + DHO_PXE_CLIENT_ID); -+ if (!oc) + if (!oc) goto nolease; - memset (&data, 0, sizeof data); -@@ -818,6 +822,9 @@ void dhcprelease (packet, ms_nulltp) +@@ -820,6 +824,9 @@ void dhcprelease (packet, ms_nulltp) oc = lookup_option (&dhcp_universe, packet -> options, DHO_DHCP_CLIENT_IDENTIFIER); @@ -84,7 +107,7 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c memset (&data, 0, sizeof data); if (oc && evaluate_option_cache (&data, packet, (struct lease *)0, -@@ -1286,6 +1293,9 @@ void dhcpinform (packet, ms_nulltp) +@@ -1331,6 +1338,9 @@ void dhcpinform (packet, ms_nulltp) */ oc = lookup_option(&dhcp_universe, packet->options, DHO_DHCP_CLIENT_IDENTIFIER); @@ -94,7 +117,7 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c memset(&d1, 0, sizeof(d1)); if (oc && evaluate_option_cache(&d1, packet, NULL, NULL, -@@ -2381,6 +2391,9 @@ void ack_lease (packet, lease, offer, wh +@@ -2441,6 +2451,9 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) can be used. */ oc = lookup_option (&dhcp_universe, packet -> options, DHO_DHCP_CLIENT_IDENTIFIER); @@ -104,7 +127,7 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c if (oc && evaluate_option_cache (&d1, packet, lease, (struct client_state *)0, -@@ -2962,6 +2975,9 @@ void ack_lease (packet, lease, offer, wh +@@ -3033,6 +3046,9 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) /* Record the uid, if given... */ oc = lookup_option (&dhcp_universe, packet -> options, DHO_DHCP_CLIENT_IDENTIFIER); @@ -114,7 +137,7 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c if (oc && evaluate_option_cache(&d1, packet, lease, NULL, packet->options, state->options, -@@ -4068,6 +4084,9 @@ int find_lease (struct lease **lp, +@@ -4150,6 +4166,9 @@ int find_lease (struct lease **lp, specified unique client identifier. */ oc = lookup_option (&dhcp_universe, packet -> options, DHO_DHCP_CLIENT_IDENTIFIER); @@ -124,10 +147,11 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c memset (&client_identifier, 0, sizeof client_identifier); if (oc && evaluate_option_cache (&client_identifier, -diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.option97 dhcp-4.3.5b1/server/dhcpd.conf.5 ---- dhcp-4.3.5b1/server/dhcpd.conf.5.option97 2016-09-12 17:17:13.885690972 +0200 -+++ dhcp-4.3.5b1/server/dhcpd.conf.5 2016-09-12 17:17:13.974691043 +0200 -@@ -1587,10 +1587,12 @@ should be a name identifying the host. +diff --git a/server/dhcpd.conf.5 b/server/dhcpd.conf.5 +index 89b5540..4751a8b 100644 +--- a/server/dhcpd.conf.5 ++++ b/server/dhcpd.conf.5 +@@ -1664,10 +1664,12 @@ should be a name identifying the host. If a \fIhostname\fR option is not specified for the host, \fIhostname\fR is used. .PP \fIHost\fR declarations are matched to actual DHCP or BOOTP clients @@ -142,7 +166,7 @@ diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.option97 dhcp-4.3.5b1/server/dhcpd.con parameter in the \fIhost\fR declaration to the network hardware address supplied by the client. BOOTP clients do not normally provide a \fIdhcp-client-identifier\fR, so the hardware address must -@@ -1602,7 +1604,8 @@ to identify hosts. +@@ -1679,7 +1681,8 @@ to identify hosts. .PP Please be aware that .B only @@ -152,10 +176,11 @@ diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.option97 dhcp-4.3.5b1/server/dhcpd.con used to match a host declaration, or the \fIhost-identifier option\fR parameter for DHCPv6 servers. For example, it is not possible to match a host declaration to a \fIhost-name\fR option. This is -diff -up dhcp-4.3.5b1/server/dhcpleasequery.c.option97 dhcp-4.3.5b1/server/dhcpleasequery.c ---- dhcp-4.3.5b1/server/dhcpleasequery.c.option97 2016-08-26 20:19:53.000000000 +0200 -+++ dhcp-4.3.5b1/server/dhcpleasequery.c 2016-09-12 17:17:13.974691043 +0200 -@@ -273,7 +273,7 @@ dhcpleasequery(struct packet *packet, in +diff --git a/server/dhcpleasequery.c b/server/dhcpleasequery.c +index 7be0788..2fee698 100644 +--- a/server/dhcpleasequery.c ++++ b/server/dhcpleasequery.c +@@ -276,7 +276,7 @@ dhcpleasequery(struct packet *packet, int ms_nulltp) { */ memset(&uid, 0, sizeof(uid)); @@ -164,7 +189,7 @@ diff -up dhcp-4.3.5b1/server/dhcpleasequery.c.option97 dhcp-4.3.5b1/server/dhcpl &dhcp_universe, packet, NULL, -@@ -283,8 +283,20 @@ dhcpleasequery(struct packet *packet, in +@@ -286,8 +286,20 @@ dhcpleasequery(struct packet *packet, int ms_nulltp) { packet->options, &global_scope, DHO_DHCP_CLIENT_IDENTIFIER, @@ -187,10 +212,11 @@ diff -up dhcp-4.3.5b1/server/dhcpleasequery.c.option97 dhcp-4.3.5b1/server/dhcpl snprintf(dbg_info, sizeof(dbg_info), "client-id %s", -diff -up dhcp-4.3.5b1/server/failover.c.option97 dhcp-4.3.5b1/server/failover.c ---- dhcp-4.3.5b1/server/failover.c.option97 2016-08-26 20:19:53.000000000 +0200 -+++ dhcp-4.3.5b1/server/failover.c 2016-09-12 17:17:13.975691044 +0200 -@@ -5957,6 +5957,9 @@ int load_balance_mine (struct packet *pa +diff --git a/server/failover.c b/server/failover.c +index 72f7b00..40fa691 100644 +--- a/server/failover.c ++++ b/server/failover.c +@@ -5988,6 +5988,9 @@ int load_balance_mine (struct packet *packet, dhcp_failover_state_t *state) oc = lookup_option(&dhcp_universe, packet->options, DHO_DHCP_CLIENT_IDENTIFIER); @@ -200,10 +226,11 @@ diff -up dhcp-4.3.5b1/server/failover.c.option97 dhcp-4.3.5b1/server/failover.c memset(&ds, 0, sizeof ds); if (oc && evaluate_option_cache(&ds, packet, NULL, NULL, -diff -up dhcp-4.3.5b1/server/mdb.c.option97 dhcp-4.3.5b1/server/mdb.c ---- dhcp-4.3.5b1/server/mdb.c.option97 2016-08-26 20:19:53.000000000 +0200 -+++ dhcp-4.3.5b1/server/mdb.c 2016-09-12 17:17:13.975691044 +0200 -@@ -129,8 +129,9 @@ static int find_uid_statement (struct ex +diff --git a/server/mdb.c b/server/mdb.c +index 052df67..8851366 100644 +--- a/server/mdb.c ++++ b/server/mdb.c +@@ -129,8 +129,9 @@ static int find_uid_statement (struct executable_statement *esp, esp -> data.option && (esp -> data.option -> option -> universe == &dhcp_universe) && @@ -215,3 +242,6 @@ diff -up dhcp-4.3.5b1/server/mdb.c.option97 dhcp-4.3.5b1/server/mdb.c if (condp) { log_error ("dhcp client identifier may not be %s", "specified conditionally."); +-- +2.14.5 + diff --git a/0024-Detect-system-time-changes.patch b/0024-Detect-system-time-changes.patch new file mode 100644 index 0000000..cf38d0d --- /dev/null +++ b/0024-Detect-system-time-changes.patch @@ -0,0 +1,93 @@ +From 41c6032ace65119e6a400365f7e90283c930afd4 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Tue, 22 Oct 2019 16:23:01 +0200 +Subject: [PATCH 24/26] Detect system time changes +Cc: pzhukov@redhat.com + +--- + client/dhclient.c | 6 ++++++ + common/dispatch.c | 11 ++++++++++- + includes/dhcpd.h | 3 ++- + server/dhcpd.c | 6 ++++++ + 4 files changed, 24 insertions(+), 2 deletions(-) + +diff --git a/client/dhclient.c b/client/dhclient.c +index 9b65438..44d508a 100644 +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -5408,6 +5408,12 @@ isc_result_t dhcp_set_control_state (control_object_state_t oldstate, + case server_awaken: + state_reboot (client); + break; ++ ++ case server_time_changed: ++ if (client->active){ ++ state_reboot (client); ++ } ++ break; + } + } + } +diff --git a/common/dispatch.c b/common/dispatch.c +index d7fe200..8a24499 100644 +--- a/common/dispatch.c ++++ b/common/dispatch.c +@@ -118,7 +118,6 @@ dispatch(void) + * signal. It will return ISC_R_RELOAD in that + * case. That is a normal behavior. + */ +- + if (status == ISC_R_RELOAD) { + /* + * dhcp_set_control_state() will do the job. +@@ -129,6 +128,16 @@ dispatch(void) + if (status == ISC_R_SUCCESS) + status = ISC_R_RELOAD; + } ++ ++ ++ if (status == ISC_R_TIMESHIFTED){ ++ status = dhcp_set_control_state(server_time_changed, ++ server_time_changed); ++ status = ISC_R_RELOAD; ++ log_info ("System time has been changed. Unable to use existing leases. Restarting"); ++ // do nothing, restart context ++ }; ++ + } while (status == ISC_R_RELOAD); + + log_fatal ("Dispatch routine failed: %s -- exiting", +diff --git a/includes/dhcpd.h b/includes/dhcpd.h +index 635c510..ec6c227 100644 +--- a/includes/dhcpd.h ++++ b/includes/dhcpd.h +@@ -524,7 +524,8 @@ typedef enum { + server_running = 1, + server_shutdown = 2, + server_hibernate = 3, +- server_awaken = 4 ++ server_awaken = 4, ++ server_time_changed = 5 + } control_object_state_t; + + typedef struct { +diff --git a/server/dhcpd.c b/server/dhcpd.c +index 530a923..4aef16b 100644 +--- a/server/dhcpd.c ++++ b/server/dhcpd.c +@@ -1767,6 +1767,12 @@ isc_result_t dhcp_set_control_state (control_object_state_t oldstate, + { + struct timeval tv; + ++ if (newstate == server_time_changed){ ++ log_error ("System time has been changed. Leases information unreliable!"); ++ return ISC_R_SUCCESS; ++ } ++ ++ + if (newstate != server_shutdown) + return DHCP_R_INVALIDARG; + /* Re-entry. */ +-- +2.14.5 + diff --git a/0025-bind-Detect-system-time-changes.patch b/0025-bind-Detect-system-time-changes.patch new file mode 100644 index 0000000..80191b2 --- /dev/null +++ b/0025-bind-Detect-system-time-changes.patch @@ -0,0 +1,197 @@ +From ef4f5e80d8a1ea1507829ea6f5214f276478f475 Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Tue, 22 Oct 2019 16:23:24 +0200 +Subject: [PATCH 25/27] bind: Detect system time changes +Cc: pzhukov@redhat.com + +--- + bind/bind/lib/isc/include/isc/result.h | 4 ++- + bind/bind/lib/isc/include/isc/util.h | 4 +++ + bind/bind/lib/isc/result.c | 2 ++ + bind/bind/lib/isc/unix/app.c | 41 ++++++++++++++++++++++++++++--- + bind/bind/lib/isc/unix/include/isc/time.h | 20 +++++++++++++++ + bind/bind/lib/isc/unix/time.c | 22 +++++++++++++++++ + 6 files changed, 89 insertions(+), 4 deletions(-) + +diff --git a/bind/bind/lib/isc/include/isc/result.h b/bind/bind/lib/isc/include/isc/result.h +index 0389efa..0e35f98 100644 +--- a/bind/bind/lib/isc/include/isc/result.h ++++ b/bind/bind/lib/isc/include/isc/result.h +@@ -89,7 +89,9 @@ + #define ISC_R_DISCFULL 67 /*%< disc full */ + #define ISC_R_DEFAULT 68 /*%< default */ + #define ISC_R_IPV4PREFIX 69 /*%< IPv4 prefix */ +-#define ISC_R_NRESULTS 70 ++#define ISC_R_TIMESHIFTED 70 /*%< system time changed */ ++/*% Not a result code: the number of results. */ ++#define ISC_R_NRESULTS 71 + + ISC_LANG_BEGINDECLS + +diff --git a/bind/bind/lib/isc/include/isc/util.h b/bind/bind/lib/isc/include/isc/util.h +index 973c348..cceeb5e 100644 +--- a/bind/bind/lib/isc/include/isc/util.h ++++ b/bind/bind/lib/isc/include/isc/util.h +@@ -289,6 +289,10 @@ extern void mock_assert(const int result, const char* const expression, + * Time + */ + #define TIME_NOW(tp) RUNTIME_CHECK(isc_time_now((tp)) == ISC_R_SUCCESS) ++#ifdef CLOCK_BOOTTIME ++#define TIME_MONOTONIC(tp) RUNTIME_CHECK(isc_time_boottime((tp)) == ISC_R_SUCCESS) ++#endif ++ + + /*% + * Alignment +diff --git a/bind/bind/lib/isc/result.c b/bind/bind/lib/isc/result.c +index a9db132..7c04831 100644 +--- a/bind/bind/lib/isc/result.c ++++ b/bind/bind/lib/isc/result.c +@@ -105,6 +105,7 @@ static const char *description[ISC_R_NRESULTS] = { + "disc full", /*%< 67 */ + "default", /*%< 68 */ + "IPv4 prefix", /*%< 69 */ ++ "time changed", /*%< 70 */ + }; + + static const char *identifier[ISC_R_NRESULTS] = { +@@ -178,6 +179,7 @@ static const char *identifier[ISC_R_NRESULTS] = { + "ISC_R_DISCFULL", + "ISC_R_DEFAULT", + "ISC_R_IPV4PREFIX", ++ "ISC_R_TIMESHIFTED", + }; + + #define ISC_RESULT_RESULTSET 2 +diff --git a/bind/bind/lib/isc/unix/app.c b/bind/bind/lib/isc/unix/app.c +index a6e9882..dbd23f7 100644 +--- a/bind/bind/lib/isc/unix/app.c ++++ b/bind/bind/lib/isc/unix/app.c +@@ -442,15 +442,51 @@ isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task, + static isc_result_t + evloop(isc__appctx_t *ctx) { + isc_result_t result; ++ isc_time_t now; ++#ifdef CLOCK_BOOTTIME ++ isc_time_t monotonic; ++ uint64_t diff = 0; ++#else ++ isc_time_t prev; ++ TIME_NOW(&prev); ++#endif ++ ++ ++ + + while (!ctx->want_shutdown) { + int n; +- isc_time_t when, now; ++ isc_time_t when; ++ + struct timeval tv, *tvp; + isc_socketwait_t *swait; + bool readytasks; + bool call_timer_dispatch = false; + ++ uint64_t us; ++ ++#ifdef CLOCK_BOOTTIME ++ // TBD macros for following three lines ++ TIME_NOW(&now); ++ TIME_MONOTONIC(&monotonic); ++ INSIST(now.seconds > monotonic.seconds) ++ us = isc_time_microdiff (&now, &monotonic); ++ if (us < diff){ ++ us = diff - us; ++ if (us > 1000000){ // ignoring shifts less than one second ++ return ISC_R_TIMESHIFTED; ++ }; ++ diff = isc_time_microdiff (&now, &monotonic); ++ } else { ++ diff = isc_time_microdiff (&now, &monotonic); ++ // not implemented ++ } ++#else ++ TIME_NOW(&now); ++ if (isc_time_compare (&now, &prev) < 0) ++ return ISC_R_TIMESHIFTED; ++ TIME_NOW(&prev); ++#endif + /* + * Check the reload (or suspend) case first for exiting the + * loop as fast as possible in case: +@@ -475,9 +511,8 @@ evloop(isc__appctx_t *ctx) { + if (result != ISC_R_SUCCESS) + tvp = NULL; + else { +- uint64_t us; +- + TIME_NOW(&now); ++ + us = isc_time_microdiff(&when, &now); + if (us == 0) + call_timer_dispatch = true; +diff --git a/bind/bind/lib/isc/unix/include/isc/time.h b/bind/bind/lib/isc/unix/include/isc/time.h +index b864c29..5dd43c9 100644 +--- a/bind/bind/lib/isc/unix/include/isc/time.h ++++ b/bind/bind/lib/isc/unix/include/isc/time.h +@@ -132,6 +132,26 @@ isc_time_isepoch(const isc_time_t *t); + *\li 't' is a valid pointer. + */ + ++#ifdef CLOCK_BOOTTIME ++isc_result_t ++isc_time_boottime(isc_time_t *t); ++/*%< ++ * Set 't' to monotonic time from previous boot ++ * it's not affected by system time change. It also ++ * includes the time system was suspended ++ * ++ * Requires: ++ *\li 't' is a valid pointer. ++ * ++ * Returns: ++ * ++ *\li Success ++ *\li Unexpected error ++ * Getting the time from the system failed. ++ */ ++#endif /* CLOCK_BOOTTIME */ ++ ++ + isc_result_t + isc_time_now(isc_time_t *t); + /*%< +diff --git a/bind/bind/lib/isc/unix/time.c b/bind/bind/lib/isc/unix/time.c +index 8edc9df..fe0bb91 100644 +--- a/bind/bind/lib/isc/unix/time.c ++++ b/bind/bind/lib/isc/unix/time.c +@@ -498,3 +498,25 @@ isc_time_formatISO8601ms(const isc_time_t *t, char *buf, unsigned int len) { + t->nanoseconds / NS_PER_MS); + } + } ++ ++ ++#ifdef CLOCK_BOOTTIME ++isc_result_t ++isc_time_boottime(isc_time_t *t) { ++ struct timespec ts; ++ ++ char strbuf[ISC_STRERRORSIZE]; ++ ++ if (clock_gettime (CLOCK_BOOTTIME, &ts) != 0){ ++ isc__strerror(errno, strbuf, sizeof(strbuf)); ++ UNEXPECTED_ERROR(__FILE__, __LINE__, "%s", strbuf); ++ return (ISC_R_UNEXPECTED); ++ } ++ ++ t->seconds = ts.tv_sec; ++ t->nanoseconds = ts.tv_nsec; ++ ++ return (ISC_R_SUCCESS); ++ ++}; ++#endif +-- +2.14.5 + diff --git a/0026-Add-dhclient-5-B-option-description.patch b/0026-Add-dhclient-5-B-option-description.patch new file mode 100644 index 0000000..7ddfacf --- /dev/null +++ b/0026-Add-dhclient-5-B-option-description.patch @@ -0,0 +1,24 @@ +commit 6acfd3125546a0e5db8fae8a9964cd2f88bf68c0 +Author: Pavel Zhukov +Date: Tue Oct 22 16:28:04 2019 +0200 + + Add dhclient(5) -B option description + + Bug-Url: https://bugzilla.redhat.com/1764088 + +diff --git a/client/dhclient.8 b/client/dhclient.8 +index 0145b9f..5226de5 100644 +--- a/client/dhclient.8 ++++ b/client/dhclient.8 +@@ -552,6 +552,11 @@ Path to the network configuration script invoked by + when it gets a lease. If unspecified, the default + .B CLIENTBINDIR/dhclient-script + is used. See \fBdhclient-script(8)\fR for a description of this file. ++.TP ++.BI \-B ++Always set the bootp broadcast flag in request packets, so that ++servers will always broadcast replies. This option is provided as ++an extension to enable dhclient to work on IBM s390 Linux guests. + .PP + .SH PORTS + During operations the client may use multiple UDP ports diff --git a/dhcp-sd_notify.patch b/0027-Add-missed-sd-notify-patch-to-manage-dhcpd-with-syst.patch similarity index 63% rename from dhcp-sd_notify.patch rename to 0027-Add-missed-sd-notify-patch-to-manage-dhcpd-with-syst.patch index a123923..cde51de 100644 --- a/dhcp-sd_notify.patch +++ b/0027-Add-missed-sd-notify-patch-to-manage-dhcpd-with-syst.patch @@ -1,7 +1,20 @@ -diff -up dhcp-4.3.4/configure.ac.sd_notify dhcp-4.3.4/configure.ac ---- dhcp-4.3.4/configure.ac.sd_notify 2016-04-29 13:08:52.813287060 +0200 -+++ dhcp-4.3.4/configure.ac 2016-04-29 13:08:52.872287075 +0200 -@@ -832,6 +832,17 @@ if test x$ldap = xyes || test x$ldapcryp +From 8d974fd1f667e1b957ad4092fe66a8bb94f5f8fd Mon Sep 17 00:00:00 2001 +From: Pavel Zhukov +Date: Thu, 7 Nov 2019 14:47:45 +0100 +Subject: [PATCH 1/1] Add missed sd notify patch to manage dhcpd with systemd +Cc: pzhukov@redhat.com + +--- + configure.ac | 11 +++++++++++ + relay/dhcrelay.c | 12 ++++++++++++ + server/dhcpd.c | 12 ++++++++++++ + 3 files changed, 35 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 15fc0d7..0c08000 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1014,6 +1014,17 @@ if test x$ldap = xyes || test x$ldapcrypto = xyes || test x$ldap_gssapi = xyes; AC_SUBST(LDAP_CFLAGS, [$LDAP_CFLAGS]) fi @@ -19,9 +32,10 @@ diff -up dhcp-4.3.4/configure.ac.sd_notify dhcp-4.3.4/configure.ac # Append selected warning levels to CFLAGS before substitution (but after # AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) & etc). CFLAGS="$CFLAGS $STD_CWARNINGS" -diff -up dhcp-4.3.4/relay/dhcrelay.c.sd_notify dhcp-4.3.4/relay/dhcrelay.c ---- dhcp-4.3.4/relay/dhcrelay.c.sd_notify 2016-04-29 13:08:52.814287061 +0200 -+++ dhcp-4.3.4/relay/dhcrelay.c 2016-04-29 13:08:52.872287075 +0200 +diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c +index 7b4f4f1..9eb5bfd 100644 +--- a/relay/dhcrelay.c ++++ b/relay/dhcrelay.c @@ -37,6 +37,10 @@ int keep_capabilities = 0; #endif @@ -33,7 +47,7 @@ diff -up dhcp-4.3.4/relay/dhcrelay.c.sd_notify dhcp-4.3.4/relay/dhcrelay.c TIME default_lease_time = 43200; /* 12 hours... */ TIME max_lease_time = 86400; /* 24 hours... */ struct tree_cache *global_options[256]; -@@ -709,6 +713,14 @@ main(int argc, char **argv) { +@@ -845,6 +849,14 @@ main(int argc, char **argv) { } #endif @@ -48,12 +62,13 @@ diff -up dhcp-4.3.4/relay/dhcrelay.c.sd_notify dhcp-4.3.4/relay/dhcrelay.c /* Start dispatching packets and timeouts... */ dispatch(); -diff -up dhcp-4.3.4/server/dhcpd.c.sd_notify dhcp-4.3.4/server/dhcpd.c ---- dhcp-4.3.4/server/dhcpd.c.sd_notify 2016-04-29 13:08:52.873287075 +0200 -+++ dhcp-4.3.4/server/dhcpd.c 2016-04-29 13:12:00.655333096 +0200 -@@ -57,6 +57,10 @@ uid_t set_uid = 0; - gid_t set_gid = 0; - #endif /* PARANOIA */ +diff --git a/server/dhcpd.c b/server/dhcpd.c +index 4aef16b..778ef8d 100644 +--- a/server/dhcpd.c ++++ b/server/dhcpd.c +@@ -60,6 +60,10 @@ gid_t set_gid = 0; + struct class unknown_class; + struct class known_class; +#ifdef HAVE_LIBSYSTEMD +#include @@ -62,7 +77,7 @@ diff -up dhcp-4.3.4/server/dhcpd.c.sd_notify dhcp-4.3.4/server/dhcpd.c struct iaddr server_identifier; int server_identifier_matched; -@@ -931,6 +935,14 @@ main(int argc, char **argv) { +@@ -1057,6 +1061,14 @@ main(int argc, char **argv) { /* Log that we are about to start working */ log_info("Server starting service."); @@ -77,3 +92,6 @@ diff -up dhcp-4.3.4/server/dhcpd.c.sd_notify dhcp-4.3.4/server/dhcpd.c /* * Receive packets and dispatch them... * dispatch() will never return. +-- +2.14.5 + diff --git a/12-dhcpd b/12-dhcpd deleted file mode 100644 index e75aa93..0000000 --- a/12-dhcpd +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -INTERFACE=$1 # The interface which is brought up or down -STATUS=$2 # The new state of the interface - -# whenever interface is brought up by NM (rhbz #565921) -if [ "$STATUS" = "up" ]; then - # wait a few seconds to allow interface startup to complete - # (important at boot time without this the service still fails - # time-out for dispatcher script is 3s (rhbz#1003695#8) - sleep 2 - # restart the services - # In case this dispatcher script is called several times in a short period of time, it might happen that - # systemd refuses to further restart the units. Therefore we use reset-failed command to prevent it. - systemctl -q is-enabled dhcpd.service && systemctl restart dhcpd.service && systemctl reset-failed dhcpd.service - systemctl -q is-enabled dhcpd6.service && systemctl restart dhcpd6.service && systemctl reset-failed dhcpd6.service -fi - -exit 0 diff --git a/CVE-2019-6470.patch b/CVE-2019-6470.patch deleted file mode 100644 index b431817..0000000 --- a/CVE-2019-6470.patch +++ /dev/null @@ -1,218 +0,0 @@ -From abacf8ad0d8844685e5cd76645a34ef2b8da3253 Mon Sep 17 00:00:00 2001 -From: Thomas Markwalder -Date: Fri, 1 Dec 2017 09:13:26 -0500 -Subject: [PATCH] [master] Use 0 instead of -1 to indicate empty heap index - - Merges in rt46719. ---- - RELNOTES | 5 +++++ - includes/dhcpd.h | 5 +++-- - server/mdb6.c | 42 ++++++++++++++++++++++-------------------- - server/tests/mdb6_unittest.c | 9 +++++++-- - 4 files changed, 37 insertions(+), 24 deletions(-) - -#diff --git a/RELNOTES b/RELNOTES -#index ececd89e..b93af612 100644 -#--- a/RELNOTES -#+++ b/RELNOTES -#@@ -1176,6 +1176,11 @@ dhcp-users@lists.isc.org. -# in the lease file causing issues with DDNS and so forth. -# [ISC-bugs #43786] -# -#+- Replaced iasubopt::heap_index with separate values for active and inactive -#+ heaps: iasubopt::active_index and iasubopt::inactive_index. This was done -#+ to accomodate a change in behavior in BIND9 isc_heap_delete(). -#+ [ISC-bugs #46719] -#+ -# Changes since 4.2.0 (new features) -# -# - If a client renews before 'dhcp-cache-threshold' percent of its lease -Index: isc-dhcp-4.3.5/includes/dhcpd.h -=================================================================== ---- isc-dhcp-4.3.5.orig/includes/dhcpd.h 2019-05-06 08:57:34.738578132 -0400 -+++ isc-dhcp-4.3.5/includes/dhcpd.h 2019-05-06 08:57:34.734578119 -0400 -@@ -1624,8 +1624,9 @@ struct iasubopt { - */ - #define EXPIRED_IPV6_CLEANUP_TIME (60*60) - -- int heap_index; /* index into heap, or -1 -- (internal use only) */ -+ /* index into heaps, or -1 (internal use only) */ -+ int active_index; -+ int inactive_index; - - /* - * A pointer to the state of the ddns update for this lease. -Index: isc-dhcp-4.3.5/server/mdb6.c -=================================================================== ---- isc-dhcp-4.3.5.orig/server/mdb6.c 2019-05-06 08:57:34.738578132 -0400 -+++ isc-dhcp-4.3.5/server/mdb6.c 2019-05-06 08:57:34.734578119 -0400 -@@ -216,7 +216,8 @@ iasubopt_allocate(struct iasubopt **iasu - - tmp->refcnt = 1; - tmp->state = FTS_FREE; -- tmp->heap_index = -1; -+ tmp->active_index = 0; -+ tmp->inactive_index = 0; - tmp->plen = 255; - - *iasubopt = tmp; -@@ -600,14 +601,18 @@ lease_older(void *a, void *b) { - } - - /* -- * Helper function for lease address/prefix heaps. -+ * Helper functions for lease address/prefix heaps. - * Callback when an address's position in the heap changes. - */ - static void --lease_index_changed(void *iasubopt, unsigned int new_heap_index) { -- ((struct iasubopt *)iasubopt)-> heap_index = new_heap_index; -+active_changed(void *iasubopt, unsigned int new_heap_index) { -+ ((struct iasubopt *)iasubopt)->active_index = new_heap_index; - } - -+static void -+inactive_changed(void *iasubopt, unsigned int new_heap_index) { -+ ((struct iasubopt *)iasubopt)->inactive_index = new_heap_index; -+} - - /*! - * -@@ -660,13 +665,13 @@ ipv6_pool_allocate(struct ipv6_pool **po - dfree(tmp, file, line); - return ISC_R_NOMEMORY; - } -- if (isc_heap_create(dhcp_gbl_ctx.mctx, lease_older, lease_index_changed, -+ if (isc_heap_create(dhcp_gbl_ctx.mctx, lease_older, active_changed, - 0, &(tmp->active_timeouts)) != ISC_R_SUCCESS) { - iasubopt_free_hash_table(&(tmp->leases), file, line); - dfree(tmp, file, line); - return ISC_R_NOMEMORY; - } -- if (isc_heap_create(dhcp_gbl_ctx.mctx, lease_older, lease_index_changed, -+ if (isc_heap_create(dhcp_gbl_ctx.mctx, lease_older, inactive_changed, - 0, &(tmp->inactive_timeouts)) != ISC_R_SUCCESS) { - isc_heap_destroy(&(tmp->active_timeouts)); - iasubopt_free_hash_table(&(tmp->leases), file, line); -@@ -1186,7 +1191,7 @@ cleanup_lease6(ia_hash_t *ia_table, - * Remove the old lease from the active heap and from the hash table - * then remove the lease from the IA and clean up the IA if necessary. - */ -- isc_heap_delete(pool->active_timeouts, test_iasubopt->heap_index); -+ isc_heap_delete(pool->active_timeouts, test_iasubopt->active_index); - pool->num_active--; - if (pool->ipv6_pond) - pool->ipv6_pond->num_active--; -@@ -1259,7 +1264,7 @@ add_lease6(struct ipv6_pool *pool, struc - if ((test_iasubopt->state == FTS_ACTIVE) || - (test_iasubopt->state == FTS_ABANDONED)) { - isc_heap_delete(pool->active_timeouts, -- test_iasubopt->heap_index); -+ test_iasubopt->active_index); - pool->num_active--; - if (pool->ipv6_pond) - pool->ipv6_pond->num_active--; -@@ -1271,7 +1276,7 @@ add_lease6(struct ipv6_pool *pool, struc - } - } else { - isc_heap_delete(pool->inactive_timeouts, -- test_iasubopt->heap_index); -+ test_iasubopt->inactive_index); - pool->num_inactive--; - } - -@@ -1392,14 +1397,13 @@ lease6_usable(struct iasubopt *lease) { - static isc_result_t - move_lease_to_active(struct ipv6_pool *pool, struct iasubopt *lease) { - isc_result_t insert_result; -- int old_heap_index; - -- old_heap_index = lease->heap_index; - insert_result = isc_heap_insert(pool->active_timeouts, lease); - if (insert_result == ISC_R_SUCCESS) { - iasubopt_hash_add(pool->leases, &lease->addr, - sizeof(lease->addr), lease, MDL); -- isc_heap_delete(pool->inactive_timeouts, old_heap_index); -+ isc_heap_delete(pool->inactive_timeouts, -+ lease->inactive_index); - pool->num_active++; - pool->num_inactive--; - lease->state = FTS_ACTIVE; -@@ -1449,16 +1453,16 @@ renew_lease6(struct ipv6_pool *pool, str - if (lease->state == FTS_ACTIVE) { - if (old_end_time <= lease->hard_lifetime_end_time) { - isc_heap_decreased(pool->active_timeouts, -- lease->heap_index); -+ lease->active_index); - } else { - isc_heap_increased(pool->active_timeouts, -- lease->heap_index); -+ lease->active_index); - } - return ISC_R_SUCCESS; - } else if (lease->state == FTS_ABANDONED) { - char tmp_addr[INET6_ADDRSTRLEN]; - lease->state = FTS_ACTIVE; -- isc_heap_increased(pool->active_timeouts, lease->heap_index); -+ isc_heap_increased(pool->active_timeouts, lease->active_index); - log_info("Reclaiming previously abandoned address %s", - inet_ntop(AF_INET6, &(lease->addr), tmp_addr, - sizeof(tmp_addr))); -@@ -1480,9 +1484,7 @@ static isc_result_t - move_lease_to_inactive(struct ipv6_pool *pool, struct iasubopt *lease, - binding_state_t state) { - isc_result_t insert_result; -- int old_heap_index; - -- old_heap_index = lease->heap_index; - insert_result = isc_heap_insert(pool->inactive_timeouts, lease); - if (insert_result == ISC_R_SUCCESS) { - /* -@@ -1533,7 +1535,7 @@ move_lease_to_inactive(struct ipv6_pool - - iasubopt_hash_delete(pool->leases, - &lease->addr, sizeof(lease->addr), MDL); -- isc_heap_delete(pool->active_timeouts, old_heap_index); -+ isc_heap_delete(pool->active_timeouts, lease->active_index); - lease->state = state; - pool->num_active--; - pool->num_inactive++; -@@ -1611,7 +1613,7 @@ decline_lease6(struct ipv6_pool *pool, s - pool->ipv6_pond->num_abandoned++; - - lease->hard_lifetime_end_time = MAX_TIME; -- isc_heap_decreased(pool->active_timeouts, lease->heap_index); -+ isc_heap_decreased(pool->active_timeouts, lease->active_index); - return ISC_R_SUCCESS; - } - -@@ -1884,7 +1886,7 @@ cleanup_old_expired(struct ipv6_pool *po - break; - } - -- isc_heap_delete(pool->inactive_timeouts, tmp->heap_index); -+ isc_heap_delete(pool->inactive_timeouts, tmp->inactive_index); - pool->num_inactive--; - - if (tmp->ia != NULL) { -Index: isc-dhcp-4.3.5/server/tests/mdb6_unittest.c -=================================================================== ---- isc-dhcp-4.3.5.orig/server/tests/mdb6_unittest.c 2019-05-06 08:57:34.738578132 -0400 -+++ isc-dhcp-4.3.5/server/tests/mdb6_unittest.c 2019-05-06 08:57:34.734578119 -0400 -@@ -65,8 +65,13 @@ ATF_TC_BODY(iaaddr_basic, tc) - if (iaaddr->state != FTS_FREE) { - atf_tc_fail("ERROR: bad state %s:%d", MDL); - } -- if (iaaddr->heap_index != -1) { -- atf_tc_fail("ERROR: bad heap_index %s:%d", MDL); -+ if (iaaddr->active_index != 0) { -+ atf_tc_fail("ERROR: bad active_index :%d %s:%d", -+ iaaddr->active_index, MDL); -+ } -+ if (iaaddr->inactive_index != 0) { -+ atf_tc_fail("ERROR: bad inactive_index %d %s:%d", -+ iaaddr->inactive_index, MDL); - } - if (iasubopt_reference(&iaaddr_copy, iaaddr, MDL) != ISC_R_SUCCESS) { - atf_tc_fail("ERROR: iasubopt_reference() %s:%d", MDL); diff --git a/Correct-BIND9-dns-API-call-constant.patch b/Correct-BIND9-dns-API-call-constant.patch deleted file mode 100644 index ded9b08..0000000 --- a/Correct-BIND9-dns-API-call-constant.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 63b155800d98d3d245147c7cfcf9053e574fedbf Mon Sep 17 00:00:00 2001 -From: Thomas Markwalder -Date: Wed, 26 Sep 2018 10:54:45 -0400 -Subject: [PATCH 2/2] Correct BIND9 dns API call constant - - Merges in rt47757 ---- - common/dns.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/common/dns.c b/common/dns.c -index 18ad704..1646760 100644 ---- a/common/dns.c -+++ b/common/dns.c -@@ -2271,7 +2271,7 @@ ddns_modify_fwd(dhcp_ddns_cb_t *ddns_cb, const char *file, int line) - dns_rdataclass_in, zname, - &prereqlist, &updatelist, - zlist, tsec_key, -- DNS_CLIENTRESOPT_ALLOWRUN, -+ DNS_CLIENTUPDOPT_ALLOWRUN, - dhcp_gbl_ctx.task, - ddns_interlude, - (void *)ddns_cb, -@@ -2498,7 +2498,7 @@ ddns_modify_ptr(dhcp_ddns_cb_t *ddns_cb, const char *file, int line) - dns_rdataclass_in, zname, - NULL, &updatelist, - zlist, tsec_key, -- DNS_CLIENTRESOPT_ALLOWRUN, -+ DNS_CLIENTUPDOPT_ALLOWRUN, - dhcp_gbl_ctx.task, - ddns_interlude, (void *)ddns_cb, - &ddns_cb->transaction); --- -1.8.3.1 - diff --git a/Corrected-dhclient-command-line-parsing-of-dad-wait-.patch b/Corrected-dhclient-command-line-parsing-of-dad-wait-.patch deleted file mode 100644 index de5783a..0000000 --- a/Corrected-dhclient-command-line-parsing-of-dad-wait-.patch +++ /dev/null @@ -1,27 +0,0 @@ -From cbe1a3e5e51beabaf0a8dad3b51d349bd900b076 Mon Sep 17 00:00:00 2001 -From: Thomas Markwalder -Date: Mon, 27 Nov 2017 13:30:27 -0500 -Subject: [PATCH 1/2] Corrected dhclient command line parsing of - --dad-wait-time - - Merges in rt46535 ---- - client/dhclient.c | 2 ++ - 1 files changed, 2 insertions(+) - -diff --git a/client/dhclient.c b/client/dhclient.c -index 057dec9..5d9538b 100644 ---- a/client/dhclient.c -+++ b/client/dhclient.c -@@ -446,6 +446,8 @@ main(int argc, char **argv) { - if (++i == argc) { - usage(use_noarg, argv[i-1]); - } -+ -+ errno = 0; - dad_wait_time = (int)strtol(argv[i], &s, 10); - if (errno || (*s != '\0') || (dad_wait_time < 0)) { - usage("Invalid value for --dad-wait-time: %s", argv[i]); --- -1.8.3.1 - diff --git a/bugfix-dhclient-check-if-pid-was-held.patch b/bugfix-dhclient-check-if-pid-was-held.patch index dd53f0b..89cb262 100644 --- a/bugfix-dhclient-check-if-pid-was-held.patch +++ b/bugfix-dhclient-check-if-pid-was-held.patch @@ -1,7 +1,7 @@ -From bab9f6ff2345fb5a1db048349fe088c1ee7d440b Mon Sep 17 00:00:00 2001 -From: Anonymous_Z -Date: Tue, 3 Mar 2020 17:36:41 +0800 -Subject: [PATCH] dhcp: recheck whether last pid was held by other process +From 569ca7918daa63832207e0d96f7d0b2d78300850 Mon Sep 17 00:00:00 2001 +From: zhanglu +Date: Thu, 27 Feb 2020 20:47:22 +0800 +Subject: [PATCH] dhcp: solve start dhclient when last pid was held. Signed-off-by: zhanglu --- @@ -9,7 +9,7 @@ Signed-off-by: zhanglu 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/client/dhclient.c b/client/dhclient.c -index 9f8ba06..97b04e0 100644 +index 9f8ba06..eff3444 100644 --- a/client/dhclient.c +++ b/client/dhclient.c @@ -774,15 +774,26 @@ main(int argc, char **argv) { @@ -30,8 +30,8 @@ index 9f8ba06..97b04e0 100644 - dhc_running = (access(procfn, F_OK) == 0); + snprintf(pidname_path,256,"%s/comm",procfn); + -+ if(access(procfn, F_OK) == 0) { -+ if((commfp = fopen(pidname_path, "r")) != NULL) { ++ if (access(procfn, F_OK) == 0) { ++ if ((commfp = fopen(pidname_path, "r")) != NULL) { + fscanf(commfp, "%s", pidname); + dhc_running = (strncmp("dhclient", pidname, strlen("dhclient")) == 0); + fclose(commfp); @@ -41,5 +41,5 @@ index 9f8ba06..97b04e0 100644 fclose(pidfp); -- -1.8.3.1 +2.19.1 diff --git a/dhcp-4.3.6-isc-util.patch b/dhcp-4.3.6-isc-util.patch deleted file mode 100644 index 50a0248..0000000 --- a/dhcp-4.3.6-isc-util.patch +++ /dev/null @@ -1,77 +0,0 @@ -From c37721f799e6b32da156759a830011949311205a Mon Sep 17 00:00:00 2001 -From: Petr Mensik -Date: Fri, 16 Feb 2018 17:50:40 +0100 -Subject: [PATCH] New bind includes never includes isc/util.h from any public - headers. Include them to all compiled files that require it. - ---- - client/dhclient.c | 1 + - common/execute.c | 1 + - common/parse.c | 1 + - common/socket.c | 1 + - omapip/connection.c | 1 + - 5 files changed, 5 insertions(+) - -diff --git a/client/dhclient.c b/client/dhclient.c -index 228b4fe..014365d 100644 ---- a/client/dhclient.c -+++ b/client/dhclient.c -@@ -38,6 +38,7 @@ - #include - #include - #include -+#include - #include - - #ifdef HAVE_LIBCAP_NG -diff --git a/common/execute.c b/common/execute.c -index fa4e0f8..1ee1e7d 100644 ---- a/common/execute.c -+++ b/common/execute.c -@@ -28,6 +28,7 @@ - - #include "dhcpd.h" - #include -+#include - #include - #include - -diff --git a/common/parse.c b/common/parse.c -index d08cd2c..729d442 100644 ---- a/common/parse.c -+++ b/common/parse.c -@@ -27,6 +27,7 @@ - */ - - #include "dhcpd.h" -+#include - #include - - /* Enumerations can be specified in option formats, and are used for -diff --git a/common/socket.c b/common/socket.c -index 2b352a1..94ce334 100644 ---- a/common/socket.c -+++ b/common/socket.c -@@ -35,6 +35,7 @@ - */ - - #include "dhcpd.h" -+#include - #include - #include - #include -diff --git a/omapip/connection.c b/omapip/connection.c -index 9aac0c8..a74becc 100644 ---- a/omapip/connection.c -+++ b/omapip/connection.c -@@ -30,6 +30,7 @@ - #include "dhcpd.h" - - #include -+#include - #include - #include - #include --- -2.14.3 - diff --git a/dhcp-4.3.6-omapi-leak.patch b/dhcp-4.3.6-omapi-leak.patch deleted file mode 100644 index 0ffcfe3..0000000 --- a/dhcp-4.3.6-omapi-leak.patch +++ /dev/null @@ -1,52 +0,0 @@ -commit ccff9ed69d0b26d33ce9cac8e83dab535b64d627 -Author: Thomas Markwalder -Date: Tue Dec 5 15:12:34 2017 -0500 - - [46767] Plugged a socket descriptor leak in OMAPI - - If disconnect is triggered by the reader closing the socket, while there - is data left to write, the socket would be orphaned. - - omapip/buffer.c - omapi_connection_writea() - added logic to recall disconnect once - pending data has been written - - omapip/message.c - Removed static declaration from omapi_message_unregister so you can - actually compile when DEBUG_PROTOCOL is defined. - - Added a release note - -diff --git a/omapip/buffer.c b/omapip/buffer.c -index 6e0621b..a21f0a8 100644 ---- a/omapip/buffer.c -+++ b/omapip/buffer.c -@@ -565,6 +565,15 @@ isc_result_t omapi_connection_writer (omapi_object_t *h) - omapi_buffer_dereference (&buffer, MDL); - } - } -+ -+ /* If we had data left to write when we're told to disconnect, -+ * we need recall disconnect, now that we're done writing. -+ * See rt46767. */ -+ if (c->out_bytes == 0 && c->state == omapi_connection_disconnecting) { -+ omapi_disconnect (h, 1); -+ return ISC_R_SHUTTINGDOWN; -+ } -+ - return ISC_R_SUCCESS; - } - -diff --git a/omapip/message.c b/omapip/message.c -index ee15d82..37abbd2 100644 ---- a/omapip/message.c -+++ b/omapip/message.c -@@ -339,7 +339,7 @@ isc_result_t omapi_message_unregister (omapi_object_t *mo) - } - - #ifdef DEBUG_PROTOCOL --static const char *omapi_message_op_name(int op) { -+const char *omapi_message_op_name(int op) { - switch (op) { - case OMAPI_OP_OPEN: return "OMAPI_OP_OPEN"; - case OMAPI_OP_REFRESH: return "OMAPI_OP_REFRESH"; diff --git a/dhcp-4.3.6-options_overflow.patch b/dhcp-4.3.6-options_overflow.patch deleted file mode 100644 index a51c0cc..0000000 --- a/dhcp-4.3.6-options_overflow.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff --git a/common/options.c b/common/options.c -index 83e0384..8a1deca 100644 ---- a/common/options.c -+++ b/common/options.c -@@ -1672,7 +1672,8 @@ format_min_length(format, oc) - - - /* Format the specified option so that a human can easily read it. */ -- -+/* Maximum pretty printed size */ -+#define MAX_OUTPUT_SIZE 32*1024 - const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) - struct option *option; - const unsigned char *data; -@@ -1680,8 +1681,9 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) - int emit_commas; - int emit_quotes; - { -- static char optbuf [32768]; /* XXX */ -- static char *endbuf = &optbuf[sizeof(optbuf)]; -+ /* We add 128 byte pad so we don't have to add checks everywhere. */ -+ static char optbuf [MAX_OUTPUT_SIZE + 128]; /* XXX */ -+ static char *endbuf = optbuf + MAX_OUTPUT_SIZE; - int hunksize = 0; - int opthunk = 0; - int hunkinc = 0; -@@ -2132,7 +2134,14 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) - log_error ("Unexpected format code %c", - fmtbuf [j]); - } -+ - op += strlen (op); -+ if (op >= endbuf) { -+ log_error ("Option data exceeds" -+ " maximum size %d", MAX_OUTPUT_SIZE); -+ return (""); -+ } -+ - if (dp == data + len) - break; - if (j + 1 < numelem && comma != ':') diff --git a/dhcp-4.3.6-reference_count_overflow.patch b/dhcp-4.3.6-reference_count_overflow.patch deleted file mode 100644 index c6c94cd..0000000 --- a/dhcp-4.3.6-reference_count_overflow.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/common/options.c b/common/options.c -index 83e0384..a58c5fc 100644 ---- a/common/options.c -+++ b/common/options.c -@@ -189,6 +189,8 @@ int parse_option_buffer (options, buffer, length, universe) - - /* If the length is outrageous, the options are bad. */ - if (offset + len > length) { -+ /* Avoid reference count overflow */ -+ option_dereference(&option, MDL); - reason = "option length exceeds option buffer length"; - bogus: - log_error("parse_option_buffer: malformed option " diff --git a/dhcp-4.3.6.tar.gz b/dhcp-4.4.2b1.tar.gz similarity index 54% rename from dhcp-4.3.6.tar.gz rename to dhcp-4.4.2b1.tar.gz index f77bfc0445608eeb97c52c33c08bdad4809739d1..bb6ef52f9f01d7c7e406392263b88157841fadf9 100644 GIT binary patch literal 9902887 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ⅅkYVe5*f=#TJo0~lS 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

n@!edMkQj#SL^X*r^fvM>*4zv`*1vp*Kj}N&UPA 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

3;Ra}j-aXp^y0?WLSGR=L-Zy;iVK z6!<_7jkOt^X<4Eve_m3%F9m=-nkd(zB06Griq=C||9QK(%kT9VGbgh}vJ4Wc{ByNX zmXw5L(1ljYP9|V5xmiFDSvW9u0V#=><3R2*%-YVj$1)gWo*5?2pMm`-1=C@bY%vYt|?;u^?Map0fFwW{(NW5vczxIxGW#M(VX z1p8U7E1{oJ7lwelT2H4YEurIDLV&rHhj!5K?fua35@?LRTNM`sd7CnIgUwfB6;1bV}ANOLmzs9{ydqE zuc9?pdpTtm}7Y&tF!EEtCXlps%Zb+9$QA3?mFQo8=W_Od2Xv4BB*Vd(; zSE`;BECVF6V{G4Cbbh~7x8}yhHse+4fc4cllI1vLY~i_1s*zG8Gu?Yb{@(A#T(oBCVB29Sxa8*VlLPkS};G!QkI9u=yvfxA^%8Z?IoHbcjV$7gX` zSZJBUo$6$9`C#R3%Jge2{-gYg%ij8Ng%a>{C4s`MC7bf29)P{xrbya1bY>2jG|Uw- zsJYe*Tw&{q&%huos*zyv6fR5JXd~=7ON+;qc3_&wSK3bUVML}aw(jPKotN@oV_CCj zO7$;U*)y&AXGP*YVH|rbXEH zyE%}hffI1Mrja5?h>IgYyi`flgon~;$g*(+cEjufBv)u@@v)2|ch$vwi7jl??nh2& zFz+nenV-!79WK5tjTFAC(rZVZZ6((B<~OuX*ao9S4K5Cv*(AAuk@8}*hGdMs9MJdS z2ScF<#~aU;Mmk-yW50#dpon7G2Q2nOk z1N&ex0U3ngnM`Q9u(`TT_?W7TDHrHZ?o-|mi;Qct8VFO8LyEb`SA8eM>Zxh;@m5lj zAiTu)oiTY_5{yR~t#!yyO9lK_17kaM4h_OWeRM%LlVhGfr)j#gt?v@)D~B)fDbsD&^!v$vJ0@ z#5WhN2Q>D~N=kYO-L?|+v~)a~Ou;35+amDPb&XKHz$q#KX+RKDF?Aea zdfk6vr!#j=MEopJW zI#j5Nk&$^vO4py0@gx@q&*kAobV-k(9sY6F@-Y8pu(Ml@@^W0n2>=#plk`U=4R^~$ zSf`~xw!jWtfKglr*gy@Yj5Wr%tOqLr5l03wIa-fL0mwrdtN@s~@+DN&0HeXr0I7L4 z_6~W74YB8CA8|6Iv?*@54BReCo21NM4JF$l+^opOSREy`VesAO-5U@Z8vCu@&q++` zyhmY>L_y+3e0@zO6^@aI9Jb9kpE9bhm{%;B^L(67T1W_I9_L)tGF?$p8qd z@&pBv>YS0{bbw6#Xd1p{XLV-A_AIeSg;5{x8=0(e&?+Nkr54drwZ;nS2&tA;0#N_B zl459#8d6NGT3(*HW^|h1Ny5^Ntjob}sgfIL`0Voin^XF~qs#L@ynnfWe6qx-sAYGk19D`BlpgdvJ*fH)Q6ln=+p~H~ znu^$q))+ojJg%!dN1}Fe{CM6nk;l$n3aXKCFq=`1T!zFJE=N9H8VAV~lA$y)G>-GR z?&F(Wa~?V2ZJ$(aIvdWQaE$J1G0EO;PwNlX!Zb>mS5Ht4sHW$hW?Z~rl2Rm@N$RDq z4oag~u;=CHR3WvHJC}h_vxp+!%jp+z7AP|it4Ihw7vh{(8bh)Co!>XjeCrJd+OFE` zTr$+=SY)nNbo1IPXXY9bn48kf$>#2gty>bjF~sKGU+qx>3?=B@^IA ztw01MLf6bTCbaT-O%Aw2M=4e$t0INZs!TIlIixTZu=Tu>SfA~^;lPVkw*q>-3i7Z_ zl>Wkw?fk}<0Fmq|JooM4nF>|1Q`GcLv#@Z?ed5_@craGM#lc|w)p0_PU-eeB$#J+4 zNepl(-`Cc;rUAi{Dw(caZRtt}NV1rU=F?v40r;Mk_N(T=gXpXXqQRfaYd3hBg<_M>~tYn*l#(>%JLv+_N@={7(fTf?1Nj=Wo70Tz9QR?`YEzZC%} ztjN+?A)O#D^_Px(P}eKtM5TP-lIqva(%@Uo*zh0A09O{4uf~QXS&rvExgJRq4(> zvm{Or4P+`yie|+vrGZ4fiH{ONJ{4sNVl45}2+MHLSN`%Pt7quLO|BfmeO#a-g6L>g zd18szs#2}0US}y&W-pB)VqeU;KAl?OS{X{}!;ex)&z zyQ;pNcpyFl$w$TF>MCIvfMt0I4uj!#L6vpqU0~ls$7dNr#{=3!4I*A!P;6elVO_|a zUi>cl#_R_zgngo3yCm?`vtDd2d~84{Q(DkYZA}%lj;t~G&Wa)V(V@kPui$ zZISjzqV%p!0ws%%?y-_#%YibbxO>b()X0)@VNVE_{-#DBk7Ws*9PXbKT7CbS&zXt$&zgw8Ac_nQT$sIuea#2SRP5!$exT z)%)Aq6|AJ=cAKT6yN(pAvN)$z8DI*|0B~1v8nGH{@M%l9v8!WAa>&5r7PL2BXkd$e zT!;&GMoP7Y4I5qVZv{0VW$7GBy46^6Hzo=D5crp~%X6!Y%OFmnrDPg~xbW#?jFIIV znf^%b-NymFPycBPjd=cGZ)+G>=StoCWcp2f1;L#Ku@1}O@R>KdC~D4N!(EY7WI|+Z zNpp%T*~YuW?M+|2y%nlnRoXuZfpUHLvRXKPExist8ta7Wm+KxG#@kt0Qe2NLR+77Y zS&fB&2O~sqJ%!!+*a?O+F2Gzbcz0MtJ%$Cy1umX~YVG#6s%zegB_YSv0ZD|%P|y1% zAegR+za1PLYKuG%rKxu!5DaThzCrK$y7;3%l-luNJ7*;H&e7ecS4E zi0`bin-n?l)`yUvu8u1%ZU%D-F!36x&10z;iiK!_Xj(GQIh)?_)iq$Z0UKF&7jHX9 zt$ko*MMFFivX{`u3j8lKi_VSU&1MY>V8SeMC95zDd|gF)9?%>VG;(J+U81$o)eNgI zLk%Z*y-3$u4?rQyrDab`F)PT=!u9%M2xl(Ip$^kF>>%^R_jZuE{EvOIgN;3xas8Yi z0r~Ov_%LD(s~A5pDBp#*G%7$FaCNTPl#+E_$tkYb6t79{#B@r22h}c{FEcGT{V_ez(+`c2G9vKzI$mkJ5DqUUZb&>>6_!%u}EVq6LYz?gdv1$vVu!%3- zdHLL2DnecAE&=_)g~A%czo*>6%Pgl)LdOSnyIhI8W1QVTaw1J(*cwjI$Tp;&Q_>yP z7yV#IG!x_gl(MpU07Mt07$c1`i;SDuf5nWfobD`9@0&uZHl*2oerNEDwHP?9;^zMQ z%^%v)Jt?bF-e|7Xf7ew(CHu=_=^8Q?;wNJ&W&d6ISiZewBc>qdXb z7YrxT66ML+{Z z#?e&`MVQc?hve=cLFh+UsgM$|g|)$L zfzsM6T{iJ7=g@{$!;v^Fosw8iBhuD%iTz&GPzU>mAN#DMa3X&YlL z-rR?`xtmxFT7 zqCB~?DI_Rr3Xv)WNS!oKRTySoxz?O#_MtHuN#H|=`Jm8f0ZlZMPfCgBt858qw(IIt zRgF1~+0}fSETF+BTq^Q4%}P#+adh!7m-P$|iK#4OnWP06au?&#T4^h+jUn0KXsVRR zumcpX80Yl!m4H9k@w6M*UqdTSL9NoVd$tK*0Ibw~B{3M6HKL*F5*EASDdK45F)3GY zD6eGsioxd^@p9MjB)K+%n$%(OTyDCh4>7U`kBL2zKy{t$R(U8wn|Cq4&7sN#tYhtF z1>q2CCGaEEaf7=`9L{lAC}Ez@tWa#|a;`!aOtcyEoxlM&Wq%UVjICXzICaJdY%$yR zd_GC^i*-L2Rx?2=W_hVityGA z>C1GQvl9w&P^M_pFqwo8m!%@QLg2b3Bnw&;dd@0poP>kD?P`H`DB7kdS>~pt9np?4 z;IgfJ!`Y7201=L@MF#To$)h0BxpqrX1;vv=lBEpto<-SQb$ff84d}r&tqCEt4?4&V zajo-Jc=8S(450xp?&DiDR|1&ZRIkGC>A|y$04}*cyhICx9XRYSk+Pf(UgLgG z#`<-v%pz5?d{5_Ys0VO-7kODarfOQe8OMjV0Y(pKz3Ts;t;kDWnH+I4I4+VPTwkwPF))LBwDj( zx%Yn0t#i@byBn?6fQ_biX$c-$TC4(=N(krL@k-(Pk}P7M8YL-9TK~j>AxH;j47R1M zl#8np)^-+v`LL((G*_SKdd{w^CrYl8#wnV_nE_$NFU|%cPpP9T1cOajx4uYjl#JBK9us%V7 zX3v8(D_By=W}M;AwvXgF{ywDywXmSuL55UVo@wT*>Zq9Vv{+3vzs~NJ@L_0lj)B=( z9>t0gufW$n>s)*?ghof7`KSV(fKn4NeZDLitOI@RnEj3`Mm)mP9lWrM7{7n<_SFUQNqf6{)otY{ ze^gCkgk5wsyH@{3bsIckBY)CDehTT@8!9?O4!-dxA`X(C7u}%H^o_&iNH z?{Xl>&XdsNUh*QEn@&{Q=JOn9)r%xv%!>d0A6Y1hcB^U3X5cqB{qC+i6)Mgusfnm5 zh76yQY2!Gj;}H#0jC>!z3o;TPYSeHz^5S@bD}ekjI&7t-ob^zS)F>h zS~g-f{ND0w2l@EuY0>ck9Yu)>?32lxw)X~m&Es;Q@n`nZ$GjidZL32bBt1HW!Nxeb z-w^1!h7aqs;Q}!KfcmO}Ult;{hG%BG zUkTWX^JK0eTi#M4jhhToeCjKeZ$Mze8_JdV;ucK5NYy>Xj&;8PmYAQzC)Z)kDeO-P zsi|7rC*wMMTv%r`UYdHS^=sdJ(45DYLLRnamx4pqT3-<-ieW;dPjJN0`kXLJT*y+X zFJapR5$$O#c2X4@80+feuC7XnCgWE3dmk&Fjqrx+I)o*()q)G?_xstPY$RpJd* zteCqtWXut?7nvt>L3~A;lfv)3q4$YN+5GJsYgPf_Qm5v_3oYL@+r>fPuC5-{}$ zWiOhQa807Vgdj&@wUd!!k`#h#2F9}sl}Su!b!rs7YqUJPvZ?>kSLhin>yH=8UNTzM zm#XG2BO;6g156&0R;SU_YeVpKEM<8Vl3=ndRO0wNzl)gDV6>r;`>@(K8shVE41DCI zxd3)7r9ltLD*7m@p+CiBKRh`*u2vq6dcAJ6Uy5VYf7gzf4?1JsJ}&huPH(6*#?4Qw ze1(+@x@yG=@0i&1&V;43L0SYzOxSe3h@Hba9{(A93iB{~L2wvjHrO~;8RQBvfV{Z7 z%cIM@n9brRG4qab#*xk{9JS&XX>hkL!-T zswCSP)+AXFU8#ZV+m0knILQ_G7Yj-gy}^8waDiZgcUHCt7pU)AU0Tz;#s0av~H6Rbk8D_yP$?lIPFZxFy;4g zdXrWo)6~i*^9Cy9CZCmI*WZ>j+h5D@XO5~XiyW>X0^(bf)q~_6b!;fw9|J9Fw$e|Q zjZA8BbqmOz;$8OLGV5SeQMyg*7MMf=aFE)bM3cK9YhWw7(4`JsLzK4nVy=h&`j(;ut@ z9*Xlyw%d7Pn^_0BG__VwW34T|#ALWnw89Bz_i9S76g^;8PkX*>8nY@riEODrCRQCs zsuf_H-xTreHtI=g9aFzMN)p{Xz1?oVO{Wt6?GE(cZLLp@zjwGMm?~ZB+_oS=)#A|C zDZ$+QXbwkN$TA+n$<1Z*Bx);QmzoVE_sN2?TiZ|bs4z*88lc+PvO%-uBibu!(-xHk zluDkEh(TWj&KFM-4dW_-p<8mtqA)Ng_YziLODAgaT#GdcBmpAcbDY?Bzv2 zEUDzS<+d0CC~NzINuXOU6;ARJhbi80o#Qp753Aaw15EL^$SS(JeZi72KEsEVP; zdjn2yka17$eJQ(me%(QK@rL{*5j{nnOPV&rdDp)AI@;{^H`iS%3C5Y;!jRexrQg#~ zMl0P7@21nxGCl2U^k=0ZiFUSzZLa;j*^I|GuuD)&1*q>hCcvg`SLm{vi}v(BUVN}0ZY75sVAI^W#W^i8vm&VuoJ;oCOx|dGO^9pb&gu#6XfvOE$id|8Mbq z$y=?y`JCT;v!~@pxhSZ);ZbqiWQ=m98KBSfmR+MMhcf%5F~HtilOh3arrRRhf3(i~RG3g88n5H> zRyLjsEC6(%v@{R#^kdaa{Ln5F!{eusx-+uUCjMij{&Tg_KE{OobZ+*O>tkr!yo{LlBV~4sE!VokYRfRX5)56pi3mzC2jjy zNuJM2pQ}@?+>AiMf{P(L=SHQtj7`AK_7XLQ`3_J?@YdNm;9diFi^sDI6|S`uGNDP*B88t7B&uwzUV|rkrN-^u>?VJ$|@thB91seb?zyXgWBJ9 z;}}46yvlNh7fpMj7ZEa_*z6q}cYEozyij_$b#?Oi3Jc|8>PFU*R7L81m{tOBOjKoD0*n9WBn=7keh$MiIklG~vqdq$h9hNbIcWfwg#Y$344 zAx%=p*2jvuM?az8i57Hpwx?^jQs7ED(YA6<#;q9iGb~B2YaxhNEWNK{opa(|nM|&m z2Bo-Q5+8S--cvdb@S9ILblhV-@ zRdMq+DyrQ;1PJiTVF~nlU$cc;>o7_7lhN|Q_E7UdkFs0#^>A+f{`vmto8x^e&+hG( z>(MPq$F=pkXb7r>$^meNm~@tEg$pH!3*JWEm)hJo~(9iT2#Wr0^+uz`@+RPI8TIiQX(K1`KlovS=l$~?IQ zjsQa{@8a}!NpcVYPlgXkTXpR>qMsue29Ui#d|L)bSwob2Z1z zib~sciRz|G*=raieza=+jVh$zj#Nf}ez+i1#TCHfo1ds#Qkf<==A-2|%8EU~7EINl zE>NMOUat3@fl-kgBJW6(P~#5P?U@!5Pm%ZMp0CA|*=>B4XwuL+ z=z@_?pL{^6j`+@MdGObthiT+XpH{}AkChDJ-`Ajbr12DA#)x>+2y~P2q8l&P+pM2d zgH`)_O~WjJgg4{Ho8`WLm`9cf-v_fzdw0o9o{- ztCI|RJKIaXYg9Jb9&YY6zT>cG&H1vcyyxEv9yG31@(IGLRmb$xz|WV(|NhVTfB&Z- z`EZ7^xoWn&DDqLP>Wt}3PT{ine^?c2xhdCYJkjz{TQTZ?A{bYUdcTY}b+9w+ZJFCw zi))JELd{5SGb1h;BN_NtZFh6B@I1Z=DWoI;MpL5W#RpP;IQu4^$Mwj+`Cp)WOO+{w zSg>R%6>f6v^OEUN9j!FY#9b0+tdzCacV*;)>Ec!YT@ zpLSC<{h3-x^{oXd6!?f0hSy;r8n16M3l=xfanO~8Me-|pNWj>l^XX#;kq3bVDJcag zEvAy|g7Ck@Hgt#i_(m6TeX?daWJd2gnJBTjgf!ZU8U>VLG37`NM>A{o2h~nVwe4~M;Sn+^%~;x(w)2I1b!r$dQTnmZN4^iOv0M3sP zjAiYXqvAdUVw51_9t%}Mc~Mq&{B#(oNQJ*}RFTDKEHN~2v_&f~`vVXE_Am@;(_tie zrqa>h2o;YwvO$ibpC#g8b|m}X1#pyn&;%wW7%BtDgalluUm<)!j)hT?%Of5+0%{dx zev@90QPM_SwVXU?CB&{0?+w9WEKy7jZp!JI7@W_1Kl(1APm0xr_$G$?5snss%0%S= zij+2?xUhWu2m$B!=kK5SSE%uPB113yo!J^;c*_s3-=16^pPd{vIl2w4AZEIBb!>o< zhK|?k@76^ppL~pg+jePa>4)v$B(dNNhs{v3#z!ZWIy0ncVOKsUib*lx&vvrGuTf1* zUn+~>2&4QpEelfB~y7R%e&ZJ3nmJDVg75*ngnp9-}#Va9lNtD zZq+bn=Vda^i`Wi`I^YSYoBD`u?KK<#H1dPJ#>j6rM_x#nYmNtwEL$RwPWOLTGM}ttk2MoS>R6&j4%=vg zOb($nF+0{R@zO?H?5%jNj!$#J>UvVlqxgRBGOm!}-0hWoiM_3cC#uh$GPfd3@vU(< zHRgl1V+ToU9mv5BCmXlLVySQtK1Gc_*zOMo!DAg=d3uvc@pmD|LFrM_+Ru*9jx6qD z)x@~IwHb1ym8#@|AR5renW5rEwvB8WXvET_K0*pA)6H)#YFr4*Je@)`^7i70bxo)B zELWA)5g}4(G0U?6stT_aA{X%zt*=l2h0q_TvW%G6QnSOu!dsOT8(-^;CJTXO?ny1$ zP-?BRc;Ynbvp1JVrgr!P;A4=x@16Tbn6p^UHD()T?QxWWTKhBHGrdAynp z%VIe{x_EQ)_VW16Y3KO#^632h?b+qgAv+~dx;ZXA+{@rgMhIYLviEU@co_#K=ST{J zrSv{R?A3GZVBE@noH!PSaNp10T~-|JQ?1B2|^jG+n>Jzw1KM&H8k#83LH zI|f~{0~`iIZ(;GkZJ=(N$T{?8-}p?_howw4Sl&fS(je0s@RBdX1=k!GzEz-1O09LP za#QL@Yv6djp4A(Sxdt$sMkqF#PR()r#@;+bQ=U9;Zfl>Yz6>v_krpXa4#6Y zfnZ}Fa9XSQGC4KuOG{iz<APaQ zP*lz*rxx4W)-xJlZNxf?On~$V!d?F z(5(smtQ1BuU+&s9=)vAe2D-<4ux){8-LXe@s1qX-^nQ%<_XvW^qI6X2%;Ej7#Emgv&ma&W+To%4jw zzSqJ87$7YY?*zxA&J%hd(dvD7cYFWs>DdpTt{Eba&jHjW`nL|LmMFgUEO$?b<yB&k%0&nGfab1JW-?rvSJwq*R30VCZvBwr3|mb#tJh{ z6h)J48kWLf9TSwQ5(=FV8G-PX)!0ZIsWE_f2I*<&xX(Ttsn)8DuN1&3NW;un(;@bN zJFR+_5|vzEW5c=UEg~x*msl0X+RCm86f>osG$bPmCWMqm#v-h7I)Mx;&t(?3$v9A4 zwluCxAeNlBQorZBD4cW-y#m=-FALCyjH|gq4GB?^f6Yj&fKIFKmvDyUtX&WPQuzcq zA`wmjNeD3%&)=#I%fs;t{9uo!RW3(V#Y}GCzwIt9XdbUAARvF*?`Qy0K&`(+`ce>} zn&~+bjMR!wqRwrYvaBuE@t$xt%__O1bbgQ06g90&A2kD;guawE!abRc#r6*Eo7JKQ zrM%dq)jTJnviu&adwWNB-dK`xay&v^gZnXP|2XsD&QwUyPcy3lYlW?HAmZHX#gE&H zihIYqyCadLk@kmJpvXGcm*ndHv1S-a>6J{7PVZa;M?*srZ7=rlXXg0w3)`^6+(6%Q@h%tFe_lV z2y14fi(wk9W4twgZB)qdP-Pp+7E`Cw6n_a0vyo`slPt5K*1pOQIAxK3j+GXLs7haLPqNzJ3(SXFR={Zek z15kA+myLjhL`s&nM;&Vi(N>rgAcN_I5hqocH)TeOP|#HeCyCxTg;^%Uqk?wI|!_F@@O3spN@ml#{BKkzaH-I^oMIW zA`aWuYcHilmlN7$4Y}sh=QdIiX<-vBNq|)yxltev2CC{8KZOF%QK*K}U0G{_Ts>+N z5Vn+;mA;U=nugd1t4o+>6fK-4crA-<5y5uUnNWUS){zVx#UJP3p z<5tgrv*Op&#^0n{atJ_ID}Q?2$UBe+6plI)wjUR~UzHfFTU#Ll(IcQb(eyu8b2bm; zrGWS(9!~{>{A$`?4A0*i#a(ZbLDs=YOBW_@%o5uA2ki(Y>V`;`wc8AE#M|hvB74)E zPR5vO?oZ>NED!3{j}}&3Kx)pOlGc$mJc!>wht*pZhvo#mM2DCZo(xQl9Y4*<>s*Z8a3>O@F1Z$BGp#Z+=d-kwt}X%HaaTvM2UM2r>y_4_}@B*Yeo?P&x(H;^K?}3<- z?oQI!lhwpgE(i)t=mEX_%&^|f?wuT>TuiM@T5{lCq^(KSmkeuP61rQyw$c9k*6(rk zT5Y6zBRFmH_QO`a$B99~k|%kP&?h|oYE8*$Z|~%YtJFjot{xY$^vHShu)^tLY#)pb z@H&xh1GE_n503p31>NX!kzuDR%%y(1m;7Zok1SAW<;iy)ooc3weG=9e@HCLM-`Z<5CwP}uM*7DBZkZE%7MIw7%Vf2!S(eAfj)3NAly$c7kNadE` z1XAG-Wz1L?Z|@I9n8^678T@0}$*^&%2&&~>n3dKrPU#eC9k{yvbbWq$chO2q?8*yr z!VHuoE|I{kmsM~EndV7pmtom@RKFB+{3895Q$E@_4J2uHPFmB|c7z~-Df#GTCgLQS zijB#!g9GWPb0(TTM_7?0v#k8A+@YsOljv(R8E0^>TUTe8#`m$fih`QMcHe&b_Uhv9 z{=@0*4@Oob3cCzW(x$A)CaF!YMcu-l>>mgc-4Uj+0YS*bIn~UCkzDK}KLKt+On0gK z7}W^E4j@h#W`AEjtw6^y+?CRic-IlPb9pLT!Sa8PX_TVHbxw%3!6wHid&enGu6g=2 zXZv_RRbdugXe|R3GwrZdu*am*g(82XJZ|uK#aH=ob0;nYdl4UQ&i|kC7wg%Pj-%mG z={{NbpQS}F^DVORthAJvMIly>5q@nWghib28U1{X5eyGcj&@tnq>=30+h|iD>%5xR zjjkXyEJ>xjipnc0Trze6`a@MM!!L>$#}-7@v}QpE1IHN!|4JKbGprZDsDYfEikbgQVttTo42|Kt^m7sL!$oxiS%oCC&& z?ty5ca<@7( zE(P5vhi6t+MHV}~$$T0Zd|phPK-hoXiaroPBeONdGchBY7+KR>2G8Qft!vt?`ZSht zt6j_=cBZh-gx~kW<7~0)O(&(kZZ;1!pnEvEG$Ql@0zD^cCkE0W(; zQ7E@w8Mhjg77Hj~95zY6DeumI z#mHr$hW*pSh$lJvaLGPjMLOyq*DE}EHC}z(27G1#Xoxg&&WOVB@Gyh!LT@k zY0)9gL4&X=(n7;-{<@yIR3Aufxx#li7cQ=un(u05xf9gBH&eUqA0KOX@t0(R9_!a~ z+$N%sqlSMclr;i|N*GI?iGBqraB^xYQxvbCi7$_ot=rzA0w|ZK$$J>2k0!ekzg%zYKRYDt!c@@3L+9WY=J-WI2P9gkwMp_ZVZ1p6%GyKQJ=~bu+?CFHG~ciP1SdZ=+a~2! zEzCwoqM?$t2=V9jlo%_*4*Blxbdw-jgFk>tMYZmdnRJ`G*Suc@mxaOa7p$ zwNeA+4z3bDnmZ?B@=?bE7Bc-_ zbdlAa;8xA)l-pKsVRZ06cG?)_MXnWCB^;mFWws-ed1Ok{sMFkp#`l0#+-WqkFcy~= zJUz7?KZXY(xz;av!pj{w7=;9i`R2$D;1Jv1q13&y{dxj2;%#_fifGIpG18*aD&kl( zda&FW>=+7?wEB!V?W&4l%ZQUF%P$91Mx%HRAs*4+oS$Fa4y>=I#)~JFS`4kViWBGM)imjA2sqMo(5!j%8(xrru6|04j zsEbnol_eJFu8Hj6iQf?e$RB-H%=)-fMx*5dPA$I);}xqMO}>1-m6AC+kmFHLPzH`+ zw}opw<;(l$mwP5=6|>By!ALU+$1Tb!QVM|QC*^f4IkcR8clGHFFd4lLbsW>&)33f? zEhg&zvQCVG?%ah@dGM1o=JJBq9YEFqL?7WRx{e4Le1{xE`7VX%ay zv`ABybpqd$bUs<96&1lB!?GZb2dapdQHq=cpUq|jl%*v=(?_Ab zCKtj7zf@e650CHk-dcoGQNIUTDUN_8eDN*e5kMRoc4R~?Jgy+y$af5{t&IUclw_|b zrDbYLP^XuDD$^EAVqWPpho}f__Ju~YdBvlX;d(VJ#voy1<E24@BPD<@;fC z)Fo1&99LC{MjO!&oLvQ%SRMr5q-1EpQjRYK4U&KathMieug}zTbV>Em43lmx3 z7`txiK(>0WRa&kCR50`_%s^4o$*)}wo@6oGGLkR4U~tCbBy45DF|Nj2EsS_dQ}B%3 z*meGtR}A^79I=^|iV}AIw5v*+z?6XyR(tW8-y9c;5cW%NSIYzr_xuiCOK{)PucP$> z-~lfdIVSL2wp&sQ?i@uWS>s)y&Fn1b z=;F$UITr%a!r>KZfK&Ez9C@5qD;zEj^DNAeNlIQ088;pEvYOM{{8Tp|8_z=bcgkk% zAbRLFHoYy4%^ZOQGFB2?H8EiYQ@y`Ro{fGobXV0l$wjFEcKu=WQ{jECIy5^sVfr{S=5+e zi2Irj9aafisFRa2k?TKoEPHdgk_aI8Gc=oEAYp>HeDhx_yYa+ zij>}>{Yg9fHcwmH^6amkB#c_rhlj(p+oVoe|O zDRE=rmNSAt#_ISp690(v~_`Irp%)%j~mtZ6Rx! zl{h~&T+%&LWPQ=Eqv(p<&3mM^pIB-65|KJT2?{SAG2WK)XDL5pjd#mi zXjc3!6KQe>Q%@KuP!%0l)6Qg(JuWp(qWw@YfripJa<0z!Ych^|j#JKxzGJJf=FBkv z-9`Qq)^RrqnO6=j28K))00XiloZ8}#0>)5tdn+MIsB4ltx9CvT?lI|54tq9)OeF(8 zH;>D^qcJnEs*S@&N6Vw@s>QEL=SXp7!Q>mzpp|Lk>Oc{K;)INI&vK3K#RZAp7&1hA z+p08#A2ecnF6n7-ALGkky+)^Vxs)C&X}ds&VxoXUAY!~vwNKoa#kfpuvWh6_f$dpj zuE^{ed6<$AL?tr;Q7?g8VJ%f|_Lt*zK_?rECDaW5MchHPigoy1jaK$ljX^QJ;L~7L zG4TSK#evG*lxtosbN{Gz6QK|L0zXTNevCFIns??gOcARGY(clkQ;*!}TWT@2m#SDm zR$IdYY*(7`o=bO8c^}8{hpaAhb~JAXKV;L_tjy|F8Mfsj)9#Z3JOzSk0+ISy;YTuq zD8%oZ0$*5F=UE8b!^s{NC*hQ1L>*btuT@+T9SmOz2JEC>Kwe2g0 zu`fbnn)<-TlUq6NeP0fguP+(F6G&ASfi2fmr0d& za($GkosckLuu*RqysZ6kx>{pxQWW5JqMwmWrbQao8xtn$BwB;LL=Q&564QK3<8~$P!y5eup%A=|3G*|3I+;O~sVjby9 zsm*W&A&=gHa|hD4m*L?r8=MtvY(~*DR9ntUNd;%z3awr?mE~C)URE<3WOwqCHKY@e z^O}QJ|4pkaK(mjM1b<9A$?opnYgaKntj||yb`uQc6k>B#ArXP;ESFQ{nvjnOKS%~n zFE8q&l$DGX5OI@-Z$`Mpw)OAtc&jaz4KQ}AOXyOKXV5lXrtvk(?aDVdk4(;#k{eqS*oM95k8qzyyCvDwt7)}~(`}*suqV!u7ZsP-zr9ERgCsWQX z#1aewE*EeU!>zNqiY`1tA})kA+$)tqqy_hAw^4*Q(J=_7g5D@>%OAKgypxesrO<4} z<7QHg5zTj>@@3!n_Xu9G%HMV)LW55e#ffy+G1>7~1Q3BQMeZoA<8q!F))h(ic~&g= zvm(7!Rs!(B@&4Ahc$gN@cj#wMGcx93Qcl1OX%8|bki8@hCk2-~Vd z+223-yJBYsci%%!Msq#Q>JAb@=;VK$S2B|Vj*m|wz<)f-zZH`#SdfSW-Z)?gKZGGS zM|^bH81doW;c)Noe2_v!JlVODBIpb4XE9~SqGXQsQ5wKZ$;ZM*M^=NF{M2|4G=K5E zL1t&Mbnj0C>_%+5vDuQW!2U1NF}*<8){LUUpLLjnV|~6RE|gWA8@rIIbq`P*C;&M9 z_<@AI#Nly0O!}c3;;$36&Y1_bwv6!ZVM6~!rWU>@g&{R3wI!!y*Ptp3<(1P+GF($f zNaHTEqmACxEBb0RVsre6Rab?M6x6JQLPqOI{%J;5n?j+w;|=ut!l>N z?>cy?kC0J7Ux3cQG61Tb5?I0r&L;}*W|q$?Cn~@mJ9Q!sC|#OnqWvxSnqp6D8B)8~ zCp<#uI-6!Ki@kpm-n%q%7E6L}BVoB9VxL(l@cjjl4i+(DzWN$|po(SiU$79WdXmov2)V-q zyebXbD_#;DMUXXI8IGjubLa26(csz3b zC8YtM*K`~S+AcOU;6Z~WSQ;mXo(@8`QM<&+Y^HSb+=j%iq|8qnxpg%B1uKQxHW<7y z&Zd4(@DgWeAXky)S2@kUy zp!|U;!b=gW6M$Ize?l_av9_trt1dlq*IsSoS{$An9S+$es9Zt!B|@0U5eE@H*>NNr zn^!p54=>JmI*=sBOF*>OK^cRrmn_6KRQTjz#AnmtK4d(BR7pBS!|b=%!%0wyzO+TS z@IRqj^6dTP#nl}H#n*M3H)@0_dkwi7!P^MS*u|qpc_YMlXq_6oi8;;i1|{B>epKG`{pon|I;T^S7=GuV z%p>m$Ps=RdRt}eVpY!vm0(UjI>dFJ-%#wt*)?6oGac4p{?%(UaS=9?lXLVbTcX;HL zaOcH5s(R2?;@yzuZDI9#bZR7w zSmeO!>3P{u$CzN*iuBNGL5XMKjY;%Ign1a;N7Nq@{Eu*^QvpEf2lZZI5d#{mavp%U zOjIyEl2uZUROYm~(npdUSAzzlFCDGzbHw6u0?UV8+rcR`06TlQ9ezS9qq2TJD+hzR zfZP#_6H9vW{Fz0MO)n!HR?Hw``T}4KjNOf_Vj)8%!Y^vqQqN<}Rer+SBBt!}3qiM@ zAoYQh9Aly5hKGZ|k}JIO{LCO#+tNwq?+{7uKUkH+cLawmR0{sgBtohtTt;Nboju6b ze9`FQP~i5JHyD^&+t9#H8%(0*g9^Tn?p_mlP`vy7**gdudZ)Ces^dq%cUf}^HNk(`OmIhM`}efdoO8w_L- znRQ~vGR#FIbTvFKs#{M5XZ>-kY>^b{mQj34k%uz$VQaCpX(sJ4^ig7>0D)GYdW^Ts zhZEgM&+y%P41u4#XNE;)P|B%d6g-rolCGYJ^|H1AeYnxT{_EbTKNQe^Bg$@^P`}UP zA5pV?uk*i@;3WLI^T)%{v2qzT=}SbcWJb*=)9k5E$Z{2U8XCPzOODTSRO~Kc6-`+zqZsFXkmMVTWV5rn zhLEH^SqBHLrgJIqd=BO#N&}<^foDW zp_T}uMorLh_D2guu7!Zegw7yCiBVmhfyiYpaw;dd+D9$7l9W5kco6s8*d;Ucm z`9{=Fgr5T0P-&Uw$k*3N*=Ilnb;dA3!K@1mnQN;GU1bV>QOs#vM%Z4}w>C#ZgFPC~ z;bIb@^=0yTJStY{wD`fbb_Fn3|Y|C?NaE{4T38jd=D>ij$MyyW^G_uM}Tdi>vt z`Jwh1^rUb~dEvSKvh(-1$z_L!o#Ae0w7Wa}=9|uNFdFO)_IsU!!QtR&aQxP}u895w zRk0}1Jy+)@WY!55fnj?QeF0c&HWrAx$9APGikXvl(yDX$8pWU7bqo!Jo<=pX$f$3o z@f__9clRRK9DDtsX*oZ=ZgplK?@{{VQgC`xVrNpvA9n^_6mV;kY~Ir4JVr+6qBMg? zpHeI=f14dKPPz$jBYU9zDB*|#NH?BI4baFmcpa9z<2d&zU(V_$NOF)zFS;HTbq0OO z*YBwj=NkV&!EIzHVfoZ&<{gOWPRTA=^BGouY;P)A;f|$~qVvPW7Ij^?TbnE%7Kd`- zIFanz)_Xh}aj@vTwPAnvLDEAffJgbBWTxr)MFYy+XNz7*AJ;piC+Xu(E&**pxiqf+?i)sq zQ*Kk_&T??%p+aZ)r8cB=w6}LK{G~yZCm>T7#mB1rOUAf z|54}H+?1=!JL&H>9)$Px;Y>5Fm|< zI+yhw1uA6dP9K=OILH|BBn@|ZT3r`4FQ)(pexHI^$Z;7;0F5(-CMr{X2}}-I3zSzI z;It&KmAGm&Z^exC?uq36)qJhsrZgX#vCkAvK%9CiRL4?KQmzGzaKjqB(>_X>dZeo; zWSFd|#6+AqoIaQQw8LGZcH`#2vRb}1$MiijN7Ca+WW--(<5I64`oq37fnz4?U!AtB zGty62q{8`v`E&PqSp(yBw0hjL-ipM~4k2?u&ug==WJtL!`n5AETr2D|F{*;S2L3lq z#Zu~fg#01s(Q9Yuwvzh2M1Nl=1bR@d6N;NPoI@Zj`0J_|eBGBm%q#}7dbb!bm6ATe& zq8Y%1^rEZ13lG?9h(*384@YZPP`>f$kp!85VE|c8oU5CLe%CNPiHo^pknj78(_0c1 zz4?o)g(FG&1e>-JeZ$LZ7f(XEwqo^fpbAw7uxu!)f`vBGYOGA?UDy%EsQfTnJhkQk z3I0SEFJntc6hSE(T_Dqinh!o+8?9*KdtGzC3Uc;UTQyt)XQQTx{@ggqWF@ z>!5QRXEl>#0qr*U48dhv^uZ0(FDAx15xsd~AZ&GD?5~0Iu0wGhoe)6R;J0BWPcMHq zm&~DYfi|hQEL1F&JV4u&%r6S_+pnmu;Cj*<0Iq{yRMDHWFHDE4XsNI|-^hOldy;Sv zSPIr|i>HZzk#fCAd@(p^vJR6~Vi%>hHUiG1kf#*AWu$ZRT7+F0zRn=1!l~L-UsBZ^ zM)V_@^UC=Y%{mwZKPQ4r!CF~o47UQhm#|sK*+L*%CV2;pOc@MbSOU+awIRQ8LY(+E zVPU>x=$Q0qxK_lwzpF(ie)g9bCkh#yDfz(#`t8RS?XU!$pERWt;*E3KB++xt*M3(_ zm&pZ%#g7GCDZ@$Ex}Seux*k(up`v&(kwBDB5A@RY%xA~N-S_v`_m|gg z0M5}t6Z&Y>{C$KsB|!p^K6m`elxR6QY=&w31oE?t1*7juDGJISC-w$9scSpCVAlkj zx+*DE#%MJ8y!L>z79U;6hZRrbaXSOV7#Ei}0drykZ%YKMkxxODyOj7p=I`*}e%3Xo z!DTS(Y?qB)&3GZp8mBUED*Wxg2RL1h*=XKX}=8V?p$2I z|I7W|$NSrlpKi`B?yo=I+(kv+gq&Lw4?h_Zv9yhHp)c2LS5ZsLU_wSQUoGZUo0OJn zyg&+_0cpbBR7T8$Hp9q^I}elHvZ18h-ihR|*6qQ-6ZZQGvWWLw&IGnGuH|oxtd_c_ z!%5emTTYa%IkiT6y9C*}dkxbYv7T=P_4J0szaHvI^E(IB zoRUhlswx;`TY*^)CU)Byq{&V=Y^6{j&XypfoJJfl7GSz*zN*pD5$?&n8;_gr-R#2S zC^L&eu}02Rwr_|*h}OMS__epp(f(lTxX%nWHu|&@O`~8tlrQxr;@7p;pl2#y#xf<1 zc`O$pZjBwS6c4a?DvqnGPw(FwQ2#|Z2Amt!lCgKhEEE>iJ`NZ(NKp2VWMPu@_wv_D z*!-v4PiJTJdmab)@z{T@Jn3yxZj~bTAO+Q^E-VMqvgp~J;3T7JED2ySOv#ctaD6n^ zlL(stfZ0N8;cS_u7VbDPxfwnyB`wLN@IiC^i=Nd*In5TLO)Mf|&<)epLZqOj7H%fY^cei})0{o-bHL2SAD7uZAFc6fQ4uk~L0H5|mE<8S^4ip}aKXL|(KT zkkQmpcw~yC!jt%-sveG%p(pH81xu@llVi*lMlZ7>UyQ8XZJu{d!`8XJyMKRqdl$CY z{dovb!+)+$KU|1k1J10r?nN@&LjjCY0Zl-Tq?baS{lO`YvuBP95>Vu=>x9O};K=G9 zsZLrAG{Pu>E`T7t=?|gm?Uby6w1)J8z%9CkLpq5p+J$@_vL6XoN5%Q}LWlrL$T^ z1B~CqQ6pOPqL2qT%>SmER(dOH2Lx! zMQpN~PYxmcMYN!2KVE2Z+_;07Mw>u$%nQb~Jud47D|g)Z`NX4|9ONS!BoMMo*|=GQ zj!n(2A~N$k#)Z=}Rl*k`Jt0dMVzx*y(Arz7AEVW5C$UGyivSq>cW9lUhfw(6;}Bb> z_c-z%oPM|`dvX{4@8ahE!^iWBCbl|ioh)*#Qn%7N03kQ;Gu%B|OQ5L5+vfZT9ZUG7 z5@c~@AxohWEmWd-BNyc}y@!co8OF|Vz8}m4^JT<5nXqibO>5!BY-=^eShBF}2u~*- zmKL+JnC4#OPx;q;Y~d56yUc?`^^Gn@2vRb)J)z2BUNT}onlW)>jeZPluk@alQ%>(= zjgG9HQRh#_2(%III9=suVO?G+H%ChvZkJB$W{rIRVDE(H#>KyQrxyMyaaQRX{^j+& zz_Q0&jcX-pT_;vkCV4ztTtle9vkGBGb&#Y~GbM3~L9jweXzoJy^Te`HG+-hydy1BU zNnLd9sLlZ!`yTztsD39(U+trlhPYd^OI6%ba!5c*2AdjO*piYLO#8=(Wcz~XyNR`i z$rmTWto5UXDCoTXMtTHwDELkc{Jk2Y=^In!0jHCs39-zRH-*oIP{r0@i;gB!)D~gO z*riY%(l1<*ZkYpf<)cYxD8ywo32gs4L_i@%syCk>O}6;mqvJN>WB>T@IJO(FJq(J+ z6j$eYtMQ&pd*fLev^tEA1?LofbiysE#@_GakgP$JDjYg1rdsfDGj^qLXb=##Af_~F zc5Uz7ed!~+EE~l3ViX%1L9GS?Yfu$Ksmax`!riFB<=?DHO0Wc$W(#p8J8A;L;<}GE zvFqz?h;k+mFcMKDP08@OVND*cLSZWt-%F{PZxTYmdVmK+SDCEj7B75qe^_aXT~E_p^~#3voj!&K&kbzWTI5Fu5uKicUg0$f0hRWvv%OX4 z5{H!)Yr1b);&(?dXHVmCXMb?WTOZ`Y+=ub$VHHk`5ET!GyP|B-7{&2%lYJ@L5XS<~ zcEmYsYDIyyrPpfmHoR-1pn$9c#vgEkjz1w5l~C61x(eT&@>vk#Y9_Mee2NQIBEa4= zki;%O5i~;H1>d{-`3~>>`tC+6wqR!qXKi`7cDN8F_#APAh9Xdo7+D?E4eDG&W|Ld zzIuJ+e%l}E1STLsKFg>uJl zfmUK+0s-S*Qj$tplUpG6;KZM5^h0*C2FoWyK`YSfn{;A4>sTlc`S)#6ycH#2GJFqJ zI1ut+7C0)|0q~JPS-C;q!Y#^(s>0d5S>vkDx@A#MI!fS9v9UL4V{?c5Y zheBp;I^|ImOC27s5{8<7%v$OyKsK3om(eN9iL@;=Q=XpXk-cz`^#}zA$9M(sv*gwX z?=gP}aIKqLL?&oB`Vy}$5!tyS+}QLtSdJ-l(9zx5w}<%5U_n^RM7R`P>HhlW;{M|1=Jf9Lo^Eu%d%P}jnaBrtG$tP>tqke!my2GjT|6R$ zgDxp01((Ikz7&}nD&$aye>Q!s*~*^=SA=rZL|E#%QEByHdHc8%J*C;aaD<9Xo+b;O zE3=-hfI8iw5-We{Oj-i-qhmW^+m0BGy+e65gGFm@RT2g8;IM)Kpz z*sMb%Tbjy_HWh6>US?a(b0Ms)^xkOdbG&AWl!T4N9Rxg@|B|sV#KMW-iWe=}QO4SZ zEi*hM!EirKtHhc)_cb95qEgLS9HNrX8U@;r-U|5-6n`sR%(P-u zAPlN|?xHaL!s!9jc}c1g@HRy+ToNe0%@Cn6_3*JS`jUj{^Ad-jJP03u+R=kIxPH(r z3b4;%5q@9f%iyih2MD-QRv{D!w>`W0cza847p0wO_LWs68bB;h>UHnGyJSYx)s+0$ z2i9~NS9l$3d*)7#3Dc5h-bVesgQKA}zBc$`1!5p7@WKq>SlDCf3{hN5ePm4@D!yjj z+W&u?r_tJZ+C?p*19s6cFz0(D6+gN&>Kxt*k^U(G94~^imvKht19jBCx{6${a~00d zf622cE&)3qlL_kg z(TA2T9}{{wK@d@e{9LZL=+g1}-Kv=6u~3Q{25!W$9L4p^rL4{|ebp_E0UB$&vZnOEp|z z!(#olr8+tuu3f4J4FV{)wIHS*nVu8Pn3kGsxWmbjA%MR&lQWu&ndZvGa7up5Y51R{ z(HaaXtr`o)U|I!$KhS6FGVqjHTTNVbO4Z4)kbQP!Gd^uJ7JUkSLzXfvyuapkiG2Mg zOw$*&63GpzJvWbc3o|0k+8OG341F!Qv1R{gcds>@M|=CtoT??a8nJ#XP=OEzw3tls zz|G`Mx5!}6BKaNJ6lZkkBAcXEg=uSpxsDJA-l<%#MM{b0o0XFF(?Yw0KewK2Z?wBc zt2W|_M3XysGIjsqb(zDH=y6puOu6I^68hN*??L)BJ08NFz+TE&D7g}Tlt^1ee~F1_ z>U`mHu)7=#4?i*Ama^p_SLnQuJmWx;WvOtiL7}`D3VAuwreXe>4Nyd7!exovy5@^_ zwjqpz(UjrBa4$hW3+xttPruvg)GyiGCZcX=5)`#ILQh)h2Gne(uZfBv=fI~`2rwVW z(u|e0rYLPCwo+BYT_bN~ax3s9a9k)!&;@55rPGB4JEg+S`iv}rTvgM-<~&DudIS}n z@2kK4Eo&t`sN+E635p`xm6N^Wy*=Z_L@~JpHQxjjzK8q9a4GErlL0emF4EQpVaa3` zNqk-^z|7uY)lbo+YT%7qRTI;Ra~0)^k5c9fWGAtXI;d+gt+AP01ui&k_(Q80czAqb z-B_-TZ=OlXwb>1l5PdH-pT~IvL!c(De?m=wH%u>k9S5OmZjfNS{)%;)9*y-U-s}D! zc?9uBDc%3%BFB6c8jLHyr-#WNuJ}FE{4au-(=K<=KB_sHjv2Ydz z9r0AR7dJm%+}vND-=BSdarT3l5ho_B*$x-I>28y)-d9f$oY_i?>vY##D@3ee^ zh=d3&*C<&UFy;-ZZBb-R22OBBTh*MKXxvH3T<@dr~*k_Z{CeZ_cHNj|-Zt zj`|FLEFM9!?)H1u5>53m7e*d_cXrmAp5X3!Z#RNWDiKV3c@DO)o@ZP!QHK~52{Eaf zBx(FqMivj)N*aNJm<9a>cce zJUabFbbK|Ym2Tj&CYsGs;)A4(b7*axT-fKW4g`~!ai1}fe2Fsh8+g-FA&M+nW{U^H za;3Qx#1V=5iqEZ}K4{q$6{A3xMv`AicG{7&LP)5eG>oN!Z`A7cvRJlrbNgu-T5wj0 znxW7}S#YK=%sL-bmc3@?TFYrdGDBJ)X4&{zRFv>?EM1v|vJ|k0*1NKy2t^4)(|h|T zf?N~0_ZmV(1t>O})E(0v`KL${OaFM}w`zi6%!G=LCE~eKrJE~baf+x)kzBD7t}9Mb zosl#RszpmOogf_leXY#*kYv8eWm4f*D1E>4oVpD#er$~jmh(|y&?=XQ&mZm|?J(T5 zrET3GjsSf2Rb9Io%Uo|`F(``}XlE`@uTFP#An^un5sRKKz@ySQsMZ2R96om$q6Bx57h=zqAY)`ddHTePZe1 zoT7tX6icB#>FTw!_30sByss9MEh;(8$&CKvqI&(GGyY+Ku&#a6{<({5xqbYVt0Slu z0!&qMBkC!9ZI>=vOU2=3jhE0D7VPZuxvDuHu~4-Z98E%|BUF?|)%V(YT7`>;iD1_q zJ$hSA)obpmjp~lBR4EGt&Rcr@Yj}PwSCw$PP$e(|sp{-8XHnwVcjr?+)Pw_6J*T9D z6=0AvgZ(u-@7i~jE6v@rY{ebh2RkNRCaoY^s1{2k@K_Q;X7X2e>^FL8B;(P8bR99& z&_dYW>GqUA6qsiwq#=0^ve=p>(Kwj`eP-V)P5ic2MpIY9g)T{u2jQjMm+DSY6 zi~%o?ZXIvV{668$82d-K-h&mfKt&85r)OlWRRB6tzD$7glA-&{riy)lf4%$X^DD~( z#Ra!B&|DJ4?SzSoDWw#i+BashzEj?*&DuTWX~(vC75nb=G0xX;CD9L{h)EmU={Awg z3aNcY+yHVy-5y-XX4Fhdm&P@q?R@Yw=%szfnk>;y7gsde;cV562$I+YU8lU&m}}|? zj9p%yh*jtrG7@}z4kicm6GQEoH zZKsL6!LF5*{})(K%6$31^X2%L&R{Tj+fB_vLSLm;6%@WgOp`VzAwF-qiqa%LrPHb! zFLM^`qx>e>`2PF%^wjdtyGT?gUlS71&7K7LbU-ZbxQH+%lB1J%}e`7;lNYDF~6Wxn8>hQa!OZ7cnA_uuzn^Jd|_W| zKRDf-0d>Gqm|(*;kAzmkL-n*`fFGDz_?|O-_7YRKwul_kQVn5g?^%1e z2AIp23YsF&rg*l_s5?V07FMxd)5_Y69SqWRdUj8u(6@iNy}S5ufARC(#ntWQ$E#aa zD`8qkzIGg>w9E*+Q7C~?0ZPP7;;HcfgWVUFf7vrHS&W6*VHcN!m8w3~Y|^CCA~5%e zc5*EvUFqhav8lZW>7bM@Sx>!${RF3ew;{jS+ob&WZo%z5SHT2k&(lGyfuVO;F2i(W z=-cRtlg^Sx4Zsk;KEp`JeZ6fOklq= zK2aUgaa9M4PyG`{=^6Ita{1afR44D7RPD=1-~diQvA?Cv9x3mIkf_XQZ}SW}*}Kkm z_lc4tPjEtHNpO{|yEBOUTcs4m@<_BKKu5{X^*Y~Qzxnj@&IS`;3>b3>$XWDK7(Z$U zDH0cxNfzpGl;xR1LFsZKCX0O>n#(uX9k)AnVL`jJ&S>0ymJAiey7akf5Ff`33wA=R zokliVUE>u?o%8p$ci8ip#-eLRjHbN}lCY-jfa=)SrCkOWaqVuL*=9#ko${adaL zP2nTbX|CxYtm*Y*6-M)RCZS$EunWxD5rNr10));?`>tm|du*y~a?b#R{GR;ku-+^T zOZHw7Z3r&#AEVv=-mW@})Dcbo(D~)<*~cF*Zj5UXJ?$1by&$BLEUKhUOR_CfVcupp zkNpkbO3CdmvEF4Tu4WAdI7QZ-3*zS&-+ub8^G9Z@sn^ogm~~|e!!#+|U6s_5#8D6M z;*5HeLrGHd>_)pwX+p+_aC~|CjTkH0tMNnX%(5wbpf$H56b^$TRC0uqxdJ#aAKWg2 z6pskD$7=`g7d&S4a~E^o-7bTf+UdGc+Y6#q>6EdS+Iq#HSPpWqJLoUVDt^9^0~7jL zBVR^hU*a3jEa!?im`}JlAJ2ZcxVtq1#rCTs;}+=y*}R2G`iT3}C2Sh30Kt$V#$>UT zPdkn=M&1R~HF6k{CS@up-4Mg&|5>oL< zJ?Ge165_!kgaeM*?sPMVh z-sRXFQgq{46IOUPQd+B3f5;#BaMna}Uf#cy-)`==@ zk&S>z33C_sXIcH(i(wH&oK)lXheWtb+?9Z(?w<5_4^KwxmzKzUfG|06EW-j|?g()j z*gYy!Vj<3XU0%KWc=Le`z53mIgWbVbBf2I#U==GeVf}xC4U&K);$>>#fsLF7FauZB zlAGUq3IJef0oW));F-q)P6O~*w8X98f&bDrL^?qO?+Wh99tV9-7Z7O7u?_Pv(?ie>H*U8a}|}6 zK~A}*(o?J1(I?5kc2}Pu{ZvwI8HV;kNa>{{4AUrwQw%z8%jqMHn$C$qa-^q}6_Nx2 zTpN|=D{PT`hM)xWDW#i1c~iV6ktKs~6`l!6*%urq;$TgpvSEA$+zW*Al23LA6VM|= zK{zUnXereTQUV>g?<7UdRTxW35gcbmG8tf3WyGvwq?WWNIUl{0Aejw9VPBTQL?NWe zaF?{VT#`sgs2Fxg|EL_JZt`P#rWnh+Z?s&gO;+!7PH9b?QfnjH?^#fj0x^8f=qZ>} zMBAH`%xWHG0$5{E@+M^sa*K~umQMGz)$K(BtiTBsJl^5=Vg<*R%7fjO-+R4d`<_Hcc8 z$m}O1kslLyiOwF@{_U#l)&>ZRB65W+b*~WIfKVE#AlXa9I6>{Us0=e@QGxp|N3w-e zqTuB=U`j|8FEtg)LX&E+c}Dc6*1*|WJp`pj!?rtyRbuzzsVGhX8#VG8LhSO{y;dz_ zQF@XCE@e(JK#-qcCH3x%1}6uDeL5`PE%N-^+w<^f2G-m$Ayv^(ckoPwCiYQS?StZ0_uEo9qM7o z2i8nLWLp%?ZTY-#7|1wkrAuVNEFr4Cph_hV94|cSG_Sv9Hj-e|XK%%gA`*6DW%sp0 z3oEqf&LcnquwISnb5yKxUsv26;g2{Ewnbw^3*DA?7ocLS60BPu;nAu@C>XnTsIoy6 zoitz$A-w^5vNTJ~&~U76p{z1aQw4_lX&zCXDaWr-TSoLxp--6S^W+9$dp%TBOD&$g zzq?C|pf)IxhTw)8$t4DtM5PkRw~{tKX`G_J+PBqF`b%aSjPQd9$29iZ5pngLW{3NWl3?EynbTlmqZdez$ zKIWzW5EkU}K3MBglIsElxu1ntFr0d0HY}5WTh(HWyZ`v7&Tf~nYxZT6&=R$-VXw1` zXre!qH=}uhzQcKb$i^RUJ3o8$6MGAavk|)Ha3_;~?DP-28sYN0@|~H+*^UE1m%Nhx z3V4Btp=wF@@IE7H%&9nb=9<=88V!dG)L|YWG0lueu3NNbVk`}t5j2bA8onYE0w=Mm z^PSj;36Y3Ymu|A+TUg5hN)~cImo7&>f3r~@I$jt^7uP9$ z8K;9HFAS@1t0F=x2jJ6CSghJ|#GX!KpOYp?Q^t_IaLuBc(XbhjUQt_HTkITS=?H6i z6u%q6DeF~H&d2JwoWPO#8eW#YJn2+@XU5>pwM=F}>B~7==Mm@bU`Ph(=WMG5h7m@$ zCa~1XTyQAD1a#3!LOroH)*LFrymLv=i<@4kMMYLanZHb5`$EB$>(X;Z+U@#SLk$tu zY9{R~M3TntCeZVy_cn;FIvRLzd7f;#XBW{4Z|l&{cm@_l=VFpi!wE781G+xFIlcOL zsR47#0p;W)P9e~{yuqy)w1QhleP0$ zArv^7&63|Px`3#Tu3+F^CnDtZz4jckYK+8+o!&0Q;mjx5UCwywYFp&-&@oNXH~Z|t z3%)^>HYXj{Le)IlgikJt4axQ0-s#qe{sl$oga#ymKFhw+F(;C$%~;MRc5TWzR(&Jm zNfv7`fd9~uFC0@7qhA-DK{3;u(x@hrKBeGj`M4@05r#fi)!-ppg#Xj_w?UY)E%rKY zL-0>+t$8S-fx~7LtcibJ#!HuM{u^I zoL9rw^QwE6x!(Tq_VVM7d1|nSu)vBIeihIFjHQSCf4uqlt7jTrI3~z*CI6JFLzslC z({Rp@vw6*nB&v^t!HRL|lxbpe5|f(^%MC{p@v8Qmb7#tQ47;TlMChg`UDDonIMv!> zgDfrawWI+sk&KQ~w28iutOYslxx{4ovMHw}wG^)|lIBz^ zLv%*Ecwr5IhoM`O3Ax-`{K<YzgBMz(E1(@&51YO~TTe zRw4?}TZ6}DFOSMT&pA(F`x;Vs&a`tGV?b{2CC90gv7*I#6JE!Mk4{kqzWU_~q|Ttb zLY-_2D8$!D)v1K?7W{9)y*K-qyP;1S<0fIes;A-{S@WqVG>YHtiEE>HclW?;DO1bY z)x{)n_Wu3vvO3f>MRb(9`Dw~f;6Hp4phc9XQkGAZE|{KBj8II(UcFmjLKd%m&G{t0 zrprgj>(Laldm)6voZaL_LD$a~%porIQC?BgSC29cD{VGkzP6UguN>2tkwKwv0Mazu zf`l1q7N!CtW|Jifkeg`lDF=v?L?A(ojJv)qbVK;Qf-71Zc=$NNl+C#RtAUO%#BKPu zKu-Da6g$LJ$|AWKwc(;aAWpyA=j7RkQGR=SuH|+j*{LRYBqzWlvOU}q`04!GeFJ8P z^2O-lA*3U18&^C;uSNLOul(7(kynxS7*n@!_{2~_$*FlO?*Tcol$Ido*icU`UcZ~JVo#@|YbukvU zl?D1FWhq8Y4GetiD0)($*%M0dQ0rQ|z5VL>cau%Kb zu+v}ctPjI?*ESe(LQ=;Sd^+yWFP5nbgHNfI;HYbnw8c@B))xmIFIf&%kxgSKhA!Xd z%l8mst@B(i3CD->a}_qV#GX#d$y(I)fv5d=;A>m|H^%Jap!B+7l6X9tN#j7~c zd=XCjG14^y_X6=X*nBfpENxUyrDY*Pr<0MgKE>QI?K%h`N5T%*Aa=XRXvvcY{cI)G zTJ3;CFuAU;T7{?BiByi+=vJ~8GWqK- zpE#3ndCoRRQqFXIE-J`9Zg*E*>WS@mBsQa<8Ly77Qb{PEuxI$Ggbgq+jIK-7!cw>% z$K!BN$r}S_^~Kf2PrOqT%53guz!ctoe1Ca%c_-l#=TT12f4sQ4ySxo9HN>^VO^}Z! z?HYca`WBZPhUd}@PKB**krmjcgpAeYYFIVC2Ze>KcNfb$p_oL?7zVc#)a}9D58jP$xyX@f*S>SQByGCyygsVryHzAzHzoIJsldTw5jm-_n`=dLanl4CzX{{KMk2B? z0EUw@3!7s3map^5XOS|e5(d*FZ76dV(enBmK2DFNcjCoa`pSL^0A$8z!;L7VlHl{q~23^8ruE@9r$Vn4mjZjWD+t^ z%i%yAjrM6_?xA;=!leb7Q{I2F!AK8R!b)F1 zN<^@BC^gc>uQMx?j#m|!tBFujp`|u6djs52*ena?_|pPD$1L+{wJ>6ZWQ3DkNT9u7 z7h!soqlj-f<<_k5?uVmeRm}C{1SFN^nlr#O$obMbnEGPvjG(Ph>(UaWHQ_X7u|du{ z4tb!mc@hdZUBiOLTc&|9t`Yep)x8bNyYFV!ysz%X)p=JfiF^RhX@^bi(L~xI!h&vS z>0c$y9Vfr%d&VW!`ML8xujWM8wmsY(9PGptWt2X2sTv_pa>@|oDr*Z!&#e;11`t8l zB>FgO05HhxXN_uzl+yu*NR+XNSc301A*nNNmde0h8Y0pR`20M=x_uT2g&+b~vGtTo z`{vttWuxK{p=@!UdH;cIJW44E9Z{qFxkj6=Dow9m>3mt>I}^h|OXA)6`DJX0S4(c> z{~*3dXHmfXaC9|AWBefTb+!S=^$I++AUGwfk4;Sn6+?EZNUU&lN*61oBexJVF6Q67 zp&?>3T7e$gYFUk|DbsmUb$%9{LhM$EtkM}7GiRHN*usHH1%!(8TtE$L>oKa=_9!f? zJCAHyB*M!$DYqG|Qh{_*2m;b>Xb#|*Co4kQG)eEoQnqvzv)f&^Ki>Fsg84@fl~7&z z!kR`=MBA~~9+zDOgbA{Z@}5jAIm!Du^cm}ok;21X zOh_{41N9`JOiX)*W6>qae;9X+u5%nt|IVxA2W%VYvv2&^=KfykWsGHPgDqEGuq(K~kK? zXy1s;7`?@XTF%wH(k^YXEv_)(v2O4gnxKvPnY!WXW%GkQ1{A40kig-`Sv}4~xfP^Q zme%7B85~kG2|Mn z6)yy8x00AJ|0h~Sy$ss*4~=>)pAX0mX4%vZ_hb* zX(oo!(64MkEEdu^6%ue&@V4P9oIxblyo8&-u_M^+DR(1liYt#Bv5`8N*f*PdlzGmB8Fp1 z^{jl#)qivG&z~-C?|vhxlWvnRFP!L4$}+r&WGU;4WI$G2QbIMu6z%vR-jZ;t%a;gB z2`-E;`E;`jIAV-1Wqzn+k$CXzI^^39O1ihXv zf@-07Alc=vcv$T8QArFna7o0FJBq>tDVsO*V8pY^8la0@@qr?ls}>jlK!pJbt07}o zh+=pNa?7~P6B&hTtvV5#eV1U>k<+q^XAz8!%U6_~Gk8M}79N$UYQoHPCDKfrk(1u% zb`|ulp$Oxe4gDb&Rz;WhQ{!Y)SP>hl88{K#W=Mkxq$#;pE)c`~vn4?kyG)o0IyTIW z+OVF6O4lB>nZuJlbED36h`W#(Gs9YM=-*~S0SAjSn5wm6W5-j^rbft-adibuVL_9U zfj$a+&=D?TmDvVTo<u1ixpo>(Y*SGF z=7d^9l}w+4I{clxM5&H@sw&nToYjPymL)M?p}f7C^HXr97BR(GyBa86(`8x)+SOg9 zW^2%5dDiuCh82%X!&S>lU?d#pr;-u{Rsx1g;n1vp+TICn?Dz}*WhRGTyK9KjnhsEn z1jgu4ahKgmYaD&W=c6AI3>|o%*$#BJ!vQf6l>gF^j$J#IBmp~F_${I_ z=nIh+QDijmF&z2tVi~^*FAxnuf9a$u`dmrl-VlYy19LA)pw1;P5 z5_Kkidz|o6ogzsvGD7J;<2kJN8$^Ea_j(Sg-;k(Lp69_B)}0@!RZF?yVU;9IC3N0E z*hXEqv;!+W!(*t`GvVqMNp3hB{v50-pv2j%^J7-8m>$DMl^9L$Dn|cH6Xq;J$qJl; zPG$)WAfbQ4=m{E~>a6UvqQwxwkU2%bDE-#q*m|F5!ck922Q?ESV+7D901HHz-Kg}m zaEzeJBAP&;ta)HKwD!ycGv z5t3xRX$TLG2cy9VtbL#?>50$a+T^GsZZSc|OG-5fMT6!pt(1#)yV+dpxSDzqR&weg z4eNRRYdQB8gpa&LpG>TK@Uz6WcT+-?t^$!+ojVH0*FHus2x{_}k6*`AQP4Aut(u3h z3_dvZlgY7UmuP4!Xx*>i(HP~9zIfp$LtPb6Mm$ihb!;VX@PQSzF`gP@6J=BT2Ek}j zeb=4sF6BwXmh1efvxO*f>uq<(M5KujD{>YIsIib{t4(zpuxL8->t4`?lSVl}SSvuv z2o^CdR3as*6boNY>D{=7P;uN-Exr1t5k)nP^&aL+R@M287l(BktxdfC9l7kmMfhw- zhtUPJ0V{RBu+GaU=}nWnToHR$$uAerjq_XNV;_hth@2TOD(^?}-75G=*$U~yAA)6` z=hICJCBfQ=#haM?jiZn>5VxHO!7yzR;X?nXu${NOSrRmZ!@mtWe+dT_dERnln*|fN zs~t_S`F;6RpNSO&1%xx55T{g?^%YN39L5SPqnm392xt1oubZmX374yMbtvCO;bdkK zh6|y8_q+^%E{CFBK8)_%oNVZunjfPL}rW+Ccf>fsi8 zu~8xkZZy*UG^2-uYEgChHOVP}$W5xQwqkv1Voh~fGh_9~7eei>5-3TuuXA>L`SI+#_m}U^ zK3=_pr>($NsXKPLS(A=uPSZHXYji%>wNI83Pd06D#mNTm=8 zOeORsZ$DUPqODP7&Id{;JyCktNr$jh2YFIHfrZ2jH`f@eQ3P4;tYygymp`56U&9E) za-jq7lpxR5m-_RoMpDQ}<-`N1(g1PrtHhi6q_&Lq1BDPFZ3dNG4te+r542v*EtI`0mFR!$DEX9FXQ_&iRNC z<3q4If)JFd$<-*=>vG9HypeVXHBIru{jV-jugPqE56eaI^h7BIt0aiqo=XXudQ=Fp zJ{Fk+%~D3zCvh9Wb1hv3);S4MXo&WFbr*o*iH78qbQF18t3!)GZwGXd092a(rno^TjU6(}&j=1iubv~7E zp6sP0L}~O(?|P%TCl0!!-TfgF9UsH9Zi_3vqcgAZf~p0=w0hG?e}tJx6o1YAmfR^= zWcl`AiVO>%tWFodJ8S}+E#Ix~PWAAmaQ)Yu>qid^6N4Hg^!)JS{n`7=i>o_5ftQksop>6g+;P+R8> zZr}gwx=D=$*H!5aH<_Y7nnwCxOlex2%D=7(qKB@RVfmSk;*L{az~Ji2v6y`TtVNQR;9&*LsLoeD9cO{yf-=1Hze7(`Z=FYdDWuG3t5<}Pv(-s zICkiNse$BN{r1(xPn~xcr+1%jE^c>R1b8NqQg~;#QplA0i?u*@Pyp%@DHMfK64LQ$ zBY7oZP_U2gulp!IxX)Az+ZJvb8wI=9|5P#5@l5Jf{TUaV{IqeE1&puIr?Fz6A~ z`k6*nwUeXLL^q#vMBy6+K$s0jkY|hBymC2YFF&fD2K$-QO^7%EEq&%6QjEhMkgFCm zgOpyfauV*!A*?~Z60o7Vr-Y%w!wAQAVMh*$B@wMI*t03C!WxiBKH#?W7yN6q(=4(w z86Vy91~KXx$EXY|v!JF4=;o+4`G%a+S<++z_rKlt_u_fi4NEvJo)P4Nxq#Sg^iLyX;-=p|RR4kj4`yn*fa?*g(3*`u2Xo=Dw z-H5jdD{NQ^nwAA>cBmIC${mAXk1AIefz|}`iZ@*ZNe$JS(qQB&laE?X*U*EK24K8_ z800tka{Pu{V1Ojx+!1D7_F_5lEK5x+Y|WK=*#;>gmfnLsut+Z=#-V6+-6#F(cgdy} zQCXsFB@c)JKbO}Y8`&W5yOubP9FXsU3WFG{QAzQB8;LDwn)=GZ0S z?1`7+J}E8LNKc>{Iil%`C5HywkuF&WZs!iOGS25~x%cGc`;dVRglZ}~X~f&eDw4$R zsd#p$kLVlc(9WDHw6jlmkEWzM?#-wFz=HhZ2Cq>8R?f&1S+E<`$Y) z=0Kj3=jT z4$W{cmp@W70j^4@KT``MVN1h**HqdNbXAjyb5^ysXx-Vgaib1t^p5KA7MBv+y;M#U zk&gaI{fVlu!{QvNEa4(a7H-?&}Hfhfn2{rXeQ8 zQm@SAu#2T+4<~JsWhy$;Dx;Nfa1chY%zd3Rr91;;AZLpN&KQnTx-nO#X$=g<+j}Pm zdpqAC$yKf>+sU1B-3^62lOF*M zQvS7c*&7cKhF@Ys6RKmXMd-~(j*2*}YdlC>ROh74wv5DU1$Y5W0htxQsQPU{3%C}& z&eo?=iLFs^(8LKF|NWD#jZ}2cb^uU$QZoR{5Wgbm7qd*lS)4Vcz9Tw7(V;!`F5_k4SB$s+J<1r&(h@WL+0pxbrHMs7lZd7WF_$qucVa zUPI{sGz$Gl+=dg?y*J`6mGdvS!P#f+L=D#p{{Ezvp9rmopUG*IwG<4-l1pNKj2Taq z#-n;mwRlYZOa!O@JyMA<+&Uh|Qc&U=7|wJsw%4m!h})Po%Ccl({M=n2W0@A8g&B$% zxvIG`cn2Hb{GR*Ps^ssn5C2|z0-_u^hp^Z)6ej2?hndXlZ|JCt*&hfwe!4u@4A;YJ ztI8#ULrAsiD41BS&LfX2Zq}2fDmd+#I>qsR7=@(=9F4GDqq7|X;!oUJf_R3FN`3wa3)uC4uVF3=Ypi7qkw0;TSG z#T*PS6Ru+NJnlbS+}@skcX5CBm+Onp_Q!YcE^d0A5X*{K>ecBFJDTcoonF3Uob`14 zICPi--ASm+(PF20ux@92UgxXemeZ+HjF~SX$)12vG?F@{Q`EXLYf)62nww_NqJsV+Da8&UHXRhmhwZM*K+|2Ui~_i|kRDF^G&* zb$Gg**~9LyrB#a4;U37CG^jGc&ZBgl8i8UG>!kv?T!m%+DIRh`8>a^rraouTeR-p1 z@0Owy;em)8LjYJKqO?RD(HB;7Lm#%6Nmp;BD9SAepQ2Z`{7jubAa6!r?`BB5rOM zmef5Jbp;bZLJw%>*5LJF^Aq5b3GWq_yWvS#eDvGuRV?eK)O77ZqmzV70JOVH%qLy| z^3TQcRoyzG9E7OfjE>3RPvNh0k|m4=>Wf%_qF$qfD0NSemROw7_*t$WtYeQdCXnD> zb6HGeNf(T@%$1Z$gMWlq$nr?R6Hww()!5f$prdNC&5mZAily7I?AchpeSI7jwaX+H z$iHe$pn6P6yCxMEy6CD>{n`-QbvmEstYF2xy9^yC;K7Vt0)1ml_mMFAZ44LtogXun z^6|EWOPJhN%c?)9P)w-lcKi6v@bJyvXvfw0y%M$3J`>?maB!An@8}#GKNmUj$gmkF zql3=YkC#8*e%ul#D~0&G^bm_J2A532L#-<9xKz;t)Y|$&W)0)`ma|1l@#u{V7_Mqz z86i803KH=JFiXIj#B`_BO`q=0HgCfp!j0Z%!NC#~526SaiDs-X`J|qMJ?13lxnloM z%U~E@NKiU_5BAoBhr_u|5-1Axdgqm+d4HR^?sQR^lZsr|H4jNnU;BY+4KfL`q>tI! z)!Y$h-A1e$5o>d8K~K8SB9F3$-v;mG)3s{NJG9xmn~Mt$zzDfYW4ZYG`ts)DTw_*b zh`BuHOL{1ophV73f*vy_cLuVRZtDK5th=Ij;cANXzR7oPQ?;mvOkQB!<{yo8OPl~A z<3WyZj#x9g-Nrg1+FXy>m#}uXf4%>Ik_WGEDz%a8G{4j;-aM1tD0vp6Q06ouMTIYp ziLJwg2KNO7f1(|ZZ*vp7xa=h1v1xp~OdP|ixNDAOHIn+SBQ!`5J>YtH?VN%a(m|1g zgtGI7FcY7{XjInWcJ+CFI0DW!vIJ5G-Bvdn$T0?WXtSgfexa|Kc%j_JY2Q&Q<$LYrIzDKF?t60>(F@fi zBr0nz?b5Xfg9F}%CXpPPAu0`&dJ#OW-0aCmd0JSN5!O3PzzLoMpN2Edmkr*$a83j_ zMK!No(a2JUqLIsY3_XckHg`~ zPE-X-t^50n(_6xR-25d*)2K#1s=8M&)%$zL$7;%b@EHc-zK?05Mow0BSvEK%(0k;& zveD|NY9i?5LX#V#I@#1%;*s1Vj|G=E;VMb$>nSah^Y;E6Y;Jgv@52SM2)sYnCt|G6 z(6B!HgQ3Oo%g*-0A_U`r)N5xc3R)r$!hGy@6w-LK9;xofbD5mv80GlSqr~bqDdfS@;iU^(+$Qm}m0&A`=&pML@%A872!=X&J%oOgz>_%W*VUjdxopE6j*H2YkBBO?KAmL(7 z?Nlln7GrG&EkzME_Ix6X(XQ}o2WJhmOxYlqC6`!Yr|xR5nhhf9@hT10>ftnDJ&7&G zd|%yN+`KzIySNu9WC(ES5*u>};Ua&o#&owIE9&mTZhqoS(uy0E#@ z8mUVF{GK!IjCSDlvcE zntX+>*gwjo3ip4{M2P0EcCa(dr9sHSzONcJp%_`RlBmK?x>Wd)yZpxR%9sDc-n(|U zZDi@f=d1ZE5JhJwx_OagVlxWp5`7qkwNwbt;9l3*J@E!@wqOol6irU{K?yL8S8B_w&{xB7M^b&qiVO+h=HR?qm@MJ)_cVkO6rT`iT$Y@a^6vD&cWzK0SU0fyDJiI#5{kk*sU^?ORI0i-<~sF{$Vz@k$Qs zDj=?6zmgY~e0!B&cPFetO^jKPMr~pZ3P)yxkpb<%{uUI?_C$5Ko@Cd$9%olba%&A~ z4+daBo|NR`wE_V{$cch*h_|49b!~Aei1vw9N?A~0eX$ptn{GmEs>Ak1=OUH1L#`{@ zb`Bp81fv(@_0bVKdUIQC62j4NfyHF_U8d z;Ij8aS8PWnr~)R6F_U@lUkGc$DCGwKNdm_Zq|;|;1XS%O*|cSg*5(mn!4jq}m4(Vg zha4^BM{WQ#0sf}aV8YNP*-sgGt@Q&k97eK2z6w+=fmESp0HmBMXMuW$?5L`wW6>R2 z0rf<938g|4h+HeidU9ewOSlDLORxA$2vn#uBbPy-foyhCe~hku)=JQtgIdNq|2Ig4 zO}ShTn5<|TOnE12M)fOLL3MTgP)Em{!cp~}d4nQ$_!6*SFf0O`o)HOWw7QH*gpdXN z7?>%R43%BUZxHP$RAPdyME5Y1cq_IsuHXUFMPN4YZ=o7B+74sNAtG;||5&a}^fzEt z0Wv$CM(CVrZ|MwzaYcQa)9Z~X@_8NpuUUSR-lVr#bP>;&&Nf&|$_MBa>69S0RBI2m z45bT3rU$J;i-!rTpyc*nI;qZK3c#<8877-aWzvx07kuq11P5lGLX=b}3v~=^vCM?C z4z(g*oyu~xv=XMTQHjVS3As{;#;?j~t;(xTisI)A$by6Bm_LX$$|>Hj5kY7P-2%2b z8u2Tr88W5X$U|rUWdmZD+5lb~EtJx*ndm}sFnus9M^atqf>xR-tYppuUpn&|x#ry%sm1icC2t)J8*JIiyDMbV_ z%9YG6M#{TK6iy--XU0Rk17*e#vQ~l3Q79Gt$VC6=v$l<&9*B=fKnM^4nUYxapeNUq zSQgAPaht&0Rjz6Cunno)C)EcfKP?BwF7T@fiHbOmdHRarfe$^my~Oj4zyc5IoiaPB zqD0wb8M1Z=LGy8(FHAvqe=)^@i2Op>uJB2WE+JkLrc}Zx+L{#K-P(S!7C0Ol!Y7qYs{o`FSVH z@wjEvo6vF)dyVrO0=sPqQhu?V65km+j){VT$=BHQd#sofj5~5N;wLl&MKNx`_^ETd zyW)7R{kX=PJ!X9`)+BJZ(9%>|hm;6ITw7RL(VL-?5>qr(O>Yr#<_yOOK$-$uFrE~z5FJr&5J;9Il`bJA@{?u>sXPa^Ah@UMkH!cZh1?k%K{N z)CHCYsaBX&qW~(diu2&H??Zh#8`>adQM~cIi;#~)XP-Q9h6-ZUJdUQxRu!nnq#y(} z4Ab1A-8}7SDhPc=wb4}0QSPY$hxir-v1&3?D8=pbVK|r{)4(LCr=hF^b56y6Wk9?c^qQOW~=&Y%WPrb?MaZD zVYM{bV*X{1kC5;H##NE{FLbUI5=F_2>R#gF^00Tp-YdXtA+~&)V54nc92UL3Q2F2r zxlM}=;g>D5Tcu;p0uVPX@}ngfSi4I(`9a=~@@7evq8P!w921e9{Z(hV)dCL1+`Fxzkho2bqH-Y}olRMapi2_Bk8Xhv#TE=AdMAjU2I?v?&^Rr{hSP;Ol86x3 zeOLCukcy7HBqNR75k${I0cmcF^P4I!V^efL%rkg0SgnX8kFPWO>S)K}_h7!?0xCbD zjBfS95WEQW@a&eHXn?o(f5((;2oQpmxJ(8Z9}5*=T@w?46`^-#{P1WT6us$-VzLMiG8K+!_+7H_HKVEEORCYl&BVv)Xq&9Wq z29nFhO%eQHaS~sFd@kYXLFZm1ycfEQ$6`_Pe1m6tIu`JoH)R==J_iPV@PmZJ0yjxK z`|RgfogG>D8m-9d9HfeDH0o^3IcYmgV99U5*fb(6jpI3sRmyn7**y$$W!-EzP*G55 zmG>1z&H!Xddw>Ip09-($zbpr+&<&kbj3x0JGluBMAoXlTp1hpG62K*39WQJmQfi)) z|9!UwZhhTn=b@-q1Z(Xq=IsG^?Jp6McTUCj(Bf~bG$-TSJ>>`Y1rGrr>R$NVz16!| zK(nf8D!&)vOMq|6D(i4UQl+4z26Rr8XJOBY7WrsKI!V5m;YL83xFowF0tCB=xYjhk z;XO4E^-!S@$t&4=_Awt6JU(RRG?iscSayx`KDq^cmkcsrSS>@x4=)@@{gqUsRUNS| zf7+UdSC}`E09h{)kWsEMR?YO(&m2pmZ;xz5LD2_ zGMI6YrH_i*Lm|w0d2xBxF#DQkn26j$#YmLry1PmWVCurW7P}8?@(|jA@nHbUhwM|1 z-EzrxTU8bL9#|yNZU@dk>AWVWH5ofabvvn`kCaFn;77=BLCes*W@LZxtU!!tBF`%# z<@NhOpzs?1CLOw5FCX*JL+tOJ2!dLWl}=s9tJ&5Wu0( zv#HXvZnvYlJco8)a7A@wZD1sq+^`Hu@jS0S6dfdq1->ouMPr6Ls(VhX#q(=&mw9?v zB!7XwIe2W_#@Wh*F!0$HDXi2A6dak!;-G>r0PZv9G^Ic|78!*o_yCH}4H)jn`1&LS z9HB^ZW+|%h@?f_mpo)`7P3-h)x$y8;iMQiJa0EU;M2bTkPQVk_A(gCGl0wdL888D5 z%1O-8V0MSiuQxZFq~bxS$*IKvpn%B_g^{B8Qdh~)q; zcZYjk-7EjL9ya^w(4S}{-4q!4>YJ~dG>o>mCXvawo40mI{o`$m^E?&A>?X`ucbDE7 zm1Kuto>SpBgi=Vk9R$20b*9}7a3PTXee<<(8A1psmV)tcS`>>8YaAVN5{m2Z#*~+& zEr|C?@*6=K*%X{ru)kRRLT^!7`d7?K5U=RY!M8X*IJy+K$;IXA1%}Vvykn)Z?kSW= zu6wVgo8Vk7mo~GEvd*vgdM0-fzKc(|*iaZW5Efg?8J5#`K)&g2) zB3qFNkbACxmWY9qx$8EhFa;sFz!Y$Tmk7}yOg)&)`suJCWNZbi2+$E)-;Q4s?mX(9 zy#KL(y#JTea|4Y`IG~jgvBZn^Pn%nRZ{L?G7w(MnRN|-ePbq8J>MHckK6H>W8Upaw zGn7PC;eLuKdUJukuNWvR{i+n#(}*m(pTmMYlz1w+M!)`E3^}rhMkftQlofG5$jPK| zeh~J<3>XU}rIK@IH`2U!H7leW{F^dY&Tx(Q)Vt z(%W)^d(2pvF{t9)B5Ap)8tX%MI`h@T#CNjbrY77DtNb{LXB zAY`97?1kYITN}hv`(bIboTt|u4)SRO zqt6`~AKCAPDO&ioS}6F4#!xCLO{n-9Z0->9v1ONxKgg3>Ujf46XIWGUTo#{%0xq0_Cw%kFr@P2+0x{72H@f zrFOB<1DW!m5kWdKYGiD7zSu?;%RHZy)74CUbC}X+$i;S+C6lo)LoOI4ixLesvlX6Y z(8^t(OKnOJ4uiusb}t))f6iAspD%DL(Zu z9o#sLI$L5fErh5LmjaeuXWC7K@xf9X5WSdN9&GeT$)`K2WjiA74jiAYR@kp5@OPUy zrKM#gKo5ob?_w!8Zfq|z3?&Ll2?`r<5*Oz5?Aei0k9hpqqWEO|uoEY(B$im80s?`z z304q50|1}ROz>6C*iO(VG+Ia^vTR#H>+Bvv-36jFt_K`ghNraTDVFF52M8dE%b8L# z5TKevTO06sO zc);`(bVUe7MdzZYnul-a$>wn&3gid+>cT)xbf)Gjp~wXg(h%bh<4=bE$s(fBDXh#7 z-&l8@DHa6|BAVjtys4z~ZnycvAVw+d2xel%=|niC$w1D< z_$L??KBqDhAos#4n^y41V8D!RAa!XX|9&6S8t0>z{{d4@W8ULd<{ z_lj8yjg_X?e88BsRRO^j^~;-49m!fXKc*?f9#sKBSy?_3xT-g33trx3ret~9udsc! zMf0j$#N4LO65OU>g-tmui@}!OQ5T|c(FLpwp+_LgRVfvz1RR2pGQ>|>$ZUb61)i|T zaC$R!omk-}1m`~2l)14*Z_R{B(>$g~o6Z|9ys4Cj;08BL>6V-##?p>*H05j&Z*7uq zue~PR^cC#v^8}W;<}ZRIlIXqkI@Y{Fz*mFp^;vZsLLkqBQVs#EZg8_?DLCRnxyPRV z66xG=M|bV}&rhHAvtK&khY&5kST2j&RC1zzn)QcZLuG&^8+&o1c9{^?;*wPP4v;JF zUeD$;_l|(vB6}sLkk1Wq3yRJ`*5&PED-m5-vJb1)#UI2|pU_KsR3Ew23`9`M2QLWO zqh1U5&GujKpB$c^IFpjLak_&0#2!etTyTp!odDuNa?}My8IVB)6 z)F8HHgp37S->wI&<$=9}65=|ehIZNjEUrq%Akim8Rf_B+C7 zn@pb>Jk&kT=`Y0~e!$B-jjxeWlrn<2;spJez`)G#HHqhfUd27Aj?r^d2STeF6UVK* z8Er{C+h7q(PE6Ii_!_8~G|wc|=;E#yG$G-@xYDGA+zu!Q%FGRJ$0lwI@F{@x!^vA% zN!84bpp2lODXUiM8>eU7y9d5;E0$~jUHGshmI1mSIJrP!2lrF}Nev3YGtQ^=G)1e^ z@GftVIp=%G#1_h?*NnoJP$aw46HX4OOo*<)-w0YSzIL(@Xi>Ad;G3v4TmWEXfrjVD z4+<`0spR*4!OUO`5@TwZ>5Ntw7U%S5NjRFCAEblFmc*m|N9vc@N`s}{x>$iX@VujS z!_<##k_Qz3VOem3SFou*Ws>}hGoM9=DvOkprcQ|%BXcShdb~huT{3ot6f{#yDBO4R zCQdTS5p#3kCWhK1Ii{JQR0>JwSB?r6t?bKV`rzc~!{Ue6*l5&+C<2(uDYTAya;YSM zz;oQl>PWbgaenQEw+TZ)fofoaX6zu-bhCO=s;L0hc;ZPExpa#60b;D8&?8#tgm9K! zk06$yl0p)(lOkNu19m1ZTBa({a+>8|wZ6gxIlv+SY*hT9ei<1!53dr5gP?bJNkpK4 z$BFY41U=|}&>(8Dj80Ih0oi96@q%@BDJ7f5{_dJzA9j%<3p*joIRA)0dv8S5mJDkm z#^uO`SGO^_I_7s0hdRae?Bs)aj_6?WkozPADCR&FVt5`qc@d{WO_YI^?9?<3^jPJX zy%L7xJ2A09sHc=&vop$%&#@(8$76qu7W6^rOHsF3wGF&oPNy-n^5#FWviDTb zaGV0to@NG*g%Jhz!@vxq91?;eAwcSlwb*NZnL*x`Dh$$!5B2w5b+|aojBHjyo zCOH{!vG~%$l*OfxC8(Dd*_1)RV*C%A&7|ZE;OT+4f@)#;j!h^R2-9kbdw9jzzaNjH?yXaWxBwEA zpSc=m_w2kUM(iYKhDSHZZ|AT*MnANp%Ot&?C#*fN{|21F(;L`DCaf2wlG7t*m7h7d zg}$lU;|TH>87lTl3tqeyM zi!w+w3RHz+_>58E)|2exQIcmXe0XG(2`L#m2Z_}}Ax?Q{=_zgs#$^U`2cLxg7t|)| z5(!eM6z3zeDA`~yCmJ|-GwC2m%JH6E;YZkdKu$+*1Qkg(ZG7QF| zzKhmETzn7U-sh?MNJ;y^IaWausjvbxN9Vlz4bxBQGzn9dB^2Rtzpe*^L_A{@|M9eW z;OB*J6ioX4sgprar|QBz`X)M$?=+LH2%s?je91>}@@mOMre!3YC$2d$G6^>hQ@Lwpw2@z#n)5q!kiDbc0?ax4omen*9XgaA2w4m zVE|1xXPgvpaXGC7M$ItaHYpZqE=4Px6u_ws1i^q;#9(?qt{SFDY<#EmJ82t$reKtu zIO$)UoSpYhF5h64mIB&Y=$F4tNA3pb!l!)7-35}#-j8+rq?|OnQ9RB)++=?|yNNre z7jOPhC#iq6$o3Eh^z=e2=H{I0fZD-Md-E+m5~Ccm4(y)o0YTPrK-)K5fsu_X$-{YU zcE5lW@Pqx6*7oM+PHS`L>&?ii_ucc$=!f@TzS#Qa#aEjzqc(P2tJSSV#YkG5VwaWBs3@rDJc zGT{0<1c2-$opQ7hXem&>QFNQwxW#JpTSNFgw#@hV`m3E6-?{H`DgalvbAL(h2UWUK(B>cxfaJkJmakOk1>uam%}%&9Ou^cj6_O4E)ADeh>;%O}8rICGi7M_haiOSt(DD!Y6$nC_mlYX8{ z2_)Bc1r-Vvr(t4W_qxu2kugCB7P1f`48L4oh;!nJZjf&_;iHwX&~s;{03Fdga9fr5 zS!nc?$b=A>BmwXUd3M;Hi_mUWnLX53tEYkEU(@ADpR4Cu)x%UV)0%@gG4Iezf$yGa ztkaZCqYqg1L3T0Vx4yA|-mnhXICPjF10_Dx+REn3Sug~HIaO`C4g(-ED6^qr>$tRx zjgX?`#X2R#r=UJCf+xN?>sIn3c-M@(sDQ1el(cB`{tf>VZM3!;lB`Zov6Z{IcaI^g zUoYnitd0^=@z#-&hJ7vd2&p?*8HdRm5N1G|t;56a>-TR_>_}eNJmHXg$gda&47sF5 zLGf13hb;1EbNMt-KKRARvL?GEwtBf#3V_dS$`=B{iBVHez6a@VVVm zYQG4wS{8R$sOYhUzGYtndxeEdoY!Gzvy?Hav=AbkmWjEj%EcK@3U*gV)P>@{RJM6&ZYRneo^M0|$CJy0kJ z)~kCyRlMYaXeu1Yo1=&aA4@+(I2@9u88_7^z1AvpVJQLYNLO6A&EpoR4n^=};kBlB zAx44+!W0|9!G=c&(4*4Ha}0vrnUpNx^KAOE_DqR3?ADC>EI-DOWEO)sdbbwL;96gr zW+5}siP-PEfAvl&@cco4vAfJK(3#}hZoUM$VQ%0rZkDZMHz>H4#G44YDPxGxVNr7o z-9+f22;1twnw=!=#XW_L#0-Je&NKhe521Vr;_gQBLLPT~w_D6%oQ5bcnjg+=NXDb4 zuOLgv`D=jNO7{I~=i4z9P6bQzHSmX(pgN`EA{FT@u|hbM#~PPpi40M*K4(yi5tKbA z*%ILv^wntGTDnb=S*}kP5_P9Y%m{U&PzBDAA}owJMjoqGM=xw%HxNIsVVs>roVjN6 z3Ng>AA|UC-Q|ikfVDQT9eU^+fh-~E5_@prUAwXk;?p~=jkqm#UpU)F1Vy^|Om)jaF z>H*Jh(-|^ic^wHYEOfcH7Fi4b2q=73M7$1Tr)hxZayK0(iJ`Bi&;F2zQqS?ba&1&x zodm9Cyu_)Rce%p`?C+edUW5>67@H52m$)H+@% zY7kH-(x!!9V(YPOf0M9K!Y9OWQSm?ER2A`A!0Xb`OWHZ;rkAZBRt906N8qH0U zpN$8c!a9i`*rJ1iKJEgGz#-xODefmo8K1<{*xgoCYYQoWT8{8ok#0L!@(gPJ#%PfdPqr+zKPZ$yD% zrgb^Kh)ynd$lVhPGyIZb;=U-=9l;fdUsKBEV0;7spF_g`h`4aOSs*rPc37v^Yf34& z_+<$>2bejMjJiVz2=}IdvfH?xXW5?H;6^~6;;w z@XKc-tQU`#M3{MqabEXA5?Oj=#eT;+WZ>g1^g@d_c-G`?Mk{6KJV10**iq zn-def&7SvM66EiX)YdS;aeN;td*5;$cKsMKE)apV!4Oo|)zM0*;1TysbNix(`1&Vo z{3_osrU*-#XAr#is`5UOl=wyr1tRAH`)Y87d*3;6l@ur_;=JW{vK9;eu+U#qsX5Wu z;G@B=18HmEClZ;E;GW2FLktQRSZY|>pprQrwYUn1FNvk8>LEQJwju~)CU!$)wIoNO zAi6;>ulP+{qIvVcA=I{&jatek$WcGgdA1o9Ar)ubyKPZ@D1$gnH9WXVs524YF-((O z;cwm~SL?u7dgb`hYT5oRJN3YF3gmm}NDcznvfDCBVJL)yAeo>i95ObWP`7F z+Wr-cNDf>kqJZ({t+f>P$9dKiL#mi@ti51#m+b+5*POotZYQ8j%CnD*W~x=hu(=-u zK#JHmU!5KpBj!_I9msW5%wACPutEEtfV~7PL@v~jAYd?BKp=O{+C^dxRKiF$VMhBy z0ZmTQK1_2&o>nbcVd#9M2T0r+Aq8saV!+xNvPSA3Y zHWPbc24`;Wbiiggv+6_fa;6W3mb#Pt7WW+Qb0?aL1p(P;iqJD zsX&pb%|I|RWU3oQb7wyFC-J=>=r@-a{iFShOL&iXnvS3;q)z1mIv{ixRzX`O8orT^ z0c5SD+4-+PS@>FwjjrU(R^B8*;KIIlJpkFxG}HOQeF(%v!eZdE!%R1>C|4L#DK;va zEW}F^%ICh5^1O_PT+XSrTzdt|%M)JqYySlaJgrC-*KS?qDl<7YeZ>{5%dE9uB<+{t z8@!A6Bmk*%3DhpBGgOE_N~Qo9KW=XYCJ=PBTRwi}?`d-4!I=5zB=O9BYj=9+gXB}aT8vX%M< zsLEVHPNu+-EJMviGSXt7w|SR|E1&Y6un8W<_r!rgD%0V~MgRTT;r?a!!Y~3hNd{6r z6Cko%BM80@#}Am~i5xU}CVaz_nH!FVDL#aP&@-~+<=5j`g^In?Z(6)(nxZB?-uUJ} z4o|EK>l^Z4+guZpJ9)+qyJg`fi#U5Em1~lD98=C2x^qr-T92T^#@y=7A&v)H;$ z*f`eB*EUZzyAVQv!z!}Rm*Bv+!axlQ5JQ$>hX?kw zf!xki3R=Agim+u;dxR>v0EA^SSBt6gAyD!7A}}5s%fvLOc^OZEyaVuj zc=jS@o23uNO_4H+q&DD3rZiv7kj7`k8YFH)vK-O&0X4FNoYhZ%uwF z&aGksHS01)DKg(hT^tYO#HloINkLIT0Ak>HIiJT5(FIU1NFJA6A=A81JJx)o;W3TH z3NgyyAPMjz@mmP9md~Ovk_de&Zi>8%=U{q~ItM^2oV1`2|EJscE5uTo_dWSTsbg9v zN09N|Q-qZHxH!uGlf(Y$8_bMlf{P85CM$Z^s9f}^&Bb@0i{h2+HBMmpd-J`_8B03% za5+H)gHx?PAnXkMx$f?HqgoZV#z!(8#Iu}%wNm&myo)Q8BMq>-=;VW&;m%M}8ww^N zVRYFL)i59w5g;++bPz&x!is=jut%Q%;Py+dh=40a_eF3ufN;(^oC?4?Cr*@>8(Oec zp^N*Tk{6kTyKIpSvT-O8;U%R8jp$!)nar=1WD;NARsu21MYMw$pBc_TbfgKF0BJW2 zFoxKH`<^N8Gp05WP?(+ePA3)5I%yH?&(}*FLVm|liiJ8OHCJ^ z5X0;cFv%wAKb4%k9K?S_hx>|keawAE`GFNCLSqM9`+T$Y)P5h&$I<>$9QnAT8OXV2 zK^-OclNcT5Oddf4mrUu~EZs}APTn6ul~Y3iT`cz~#Hx(9pM&?fQtyC47`3h*TCf=@ zk1P7O_Yc%sQ~8Bcm@tVTHdskD^-zXGPs;)$Rw<(-%qly9t!?aKg6Og&Tm!0z3P(3o z6~JOl%u|sP=u)wRCNDAyp%RjZd}RT572OhWYnh^kb}Q?RJb?*$OXw!_!@)8K+AB>J zX6o)-6Yc;yLHm#?Gl6((4xtsBV;&;9w?KW?M46Ikz7J-^8yk_7)Yvfdj$HEq66^Db zO56&g$ynKi;N7f)V3sCV=;b&zJ9WwW0F*v!Ls*s>SxV#S1J?Y?$P2285Ra^=or;}- z=B$=I5B4X}=4UA-YUd2kL~Q_lE8?TPO^I{elQyc4HZX>1lPWxzHzq%NW|3c%KoI&6V$oK{xGvFbSrb0k*xfCzoj>a`Xq;)zhM6%wR%lS?s3a;Mrj(Iwk$ zcsO^eGgx>z#bj`=xl4Q%G?=g8(}vU~V5A&HJ$4ISC$a&Ne~F2v$EdttEt$m|P{j1A zl#49pLEWx)&uvIOlx`&;Z>C9tT=NJbOu?phUF_8-Zd=V_t>S@^YLEd0vB8|F!4{W# zW|VE9&$z*Iy&iJ8%`3yNh0oR`ij`q^LE(&U;Lb(fhZ({+%AmkV7L<2x+nCdqTB+aQrE4LNRMB|;KP8{#Ui=Tt`7 zR(G_Utf<<|4|B5reYy91!WK_9l5jZB5S_22&5u7y3=oWwW=r0cLmCK@${Ly^O(C1m z;FG3|UVf6(iV|mtt$U6A!tZ^V? z?odXWdo8MF*nQ4xhX#rW8zf&P6-4oTkFnt8_M?pP0&f5d-Q5cnzHz;QrIYSZ>2uaxq|B zK!w+8Zlp92awDditsww1;Nrwj#6b|u=!#q)7Majt!x{x22UB$>W3JuJ7ZnSO#(FoG z)(kDJz|PVa9x$`Emf;X$^5lL2r8_<)HfDs_>}zJoOfVCX0m-htlGOE~3R3l8%R$;k zi0mLA4)&vrODDED23;$CTs|=oA!k2RG}@?K3z5^GH7N-H^k}yFW0`Sl@ zxB_p7s371upaWD%Xo@gQ@D(6XBMFR(t9-D;^$YB;lbMa^kqCtBp_}DmD8%h0rvh1J z>{TeTVn*{NEC98$4Yth&6?{=S&>Hn>Zq3QkieW;(hwt+pXNf^|8+NW>n3l&_6KPfa zF!wMIm6I}rE)o`5Pk(?Dr8G&L=%$xBkd(1V6IKd@#r!rB@+rMa_!;n>h$f7z1Na;e zeFGPRGh;nND~9?wpjqav;ws-1ikUAlfz1m1G$+|cNjMboS_6(}Uq^Y3>>dNZuF@~_ zrw$RXDhA%e3d{DNq8I&%S2o%|Mw4hDMkJdIjsnqOZ=2FyasgNRj)U5?0 z?1@Th@ze>sS!MUes(o>i7dkQ|hX$1|^ek!Qof0)=TD5osGTwlqL`$bZRKu_p6ZQ~y zzYU=hMqi{SA{OWG6gWfN=cR4fdv&g|>m{Z7@aP$=OtKL2FZ2%Bx}a@&KTICuHO78( z*kuR}Ojgbef{WW;#48k{2;GOen{(mcXa6~qHoG^(BwwMao+a6giZW@>2`rzByc#Ahx2+;-1Us{9H@(v>_FN={J17%5_t*g3)S51|=Tjj+1geO=+H zC%Kw>vr~h-25XQ=eN9&IFmnj|2KF%^ZXxy{5n+4*+#!id+B+UK6OGsz5oxV>Hvl^& z_^#w=Abq;2xNYbvB^4{y7$HcDCoi~fD`x-TNxo5n^U;!MIZZ(X8Yb|ol~TC@3D>Re z83;v%fPLnJT5et?nv&(L3Q+!F-=W+?2`&ZoMLDWAWC#=0DUy6^Oa!ES;De(}0SW}P zR0ffvlZ}gymZI0PJ;UeXz>^cJcj!$(YAWFkk1g93yPR}uPpGqqESiF}0mLVoBTG{6 zTAaXWGF4U88?3&|WBHkuzaX_aUMnAm>r{cwK z-!rugVXY2k=F5Z;Vaj|5mu~3QskF)m@hmn0#DSDVu!D_@1%UVq@1-|Nk}!C9)ll{E zk`1e!QHzNm&U1@EnOw=px*^3HccNm6WjAP#c0adBn{a=9%enS(dL6yJdl;s3B6`I< zjG0G5iJzb>ywyt`pl6C=#jkwvg2xLVo+P4N67BHuDO)UaJ1`az0tK1q$et$Sz9~%^ zUGcQl+$D(6Agn&tz& zQtI&u5P-v(wCbs92O-B>22%}$V(>-L!9>O)$K0S>5_&+~hZ`dde?YAx6E#Li76b^{ z88an%7-KP66g9ixDI9>6x)DoGVLX_0UsqxiP*nrQxAg*5aTEuKQoifTc z2AV2~L1y#3UBRGYi8V=HP%T$h%%)goB*>J26;VKI;?lrVEThDANl_8+Rp=NP@G4 zy&jz3yTOeJ$)o|9u0VR3^38~ zGDWi*>IB`AE41((guXVB4GbaMd8aN{)VM-7HU+))0^G+wB?Li5*gg2KWOk4N0joM_ zk+V>!RjaG{Bt+5G)GA=PK)}suo=8+@1S}d{_m~JP?7rj~VX-y(@LE#=IQlS_1^e50 zoL&>9{|4*4Qgna{lww{(_u%y8guvtmdf4rq{IGx2s8UL;&S^n@0kJQND>SP}>`CPq z8E%d$AYh%LTY3p{@GBuM>S8m-KR;QA_#qFXg)07<$E z+#h`2`vN=ubtDRFtWDZ$ZCQY6A3RvZ* zA^$TQa);f6quxnZ-#T<2(}!jKNfc|jq-ku~8)FJ7I+mBa+Y`@}o~vm@JSCJMFaT3Z zu%My|m0_0EK;RnUT&S?vIPD2098@1G2$(s7;a7*xDnf{81ygcAJQck?;2U+DDR?&E zt7FayBVaxQU!fg3zX|;qg@Da@7gUtq$y?nXiL))?Y)K9T&^Ioq{FH0Yt4EUE6`#YK zR0snMV60aOYzYcyC#hi4H_pjt#)hF*H<((5PJGG?xR@wh@<1mE`I7>Uc%tm^+DWm# zDghpr;I&=w#2p9F#Wgp7*X(N%HXKBlAxc&?pKgaY;?PGF290grAy_ClPcXp~_joV^ z5ItbI&qjZE3x7e6k}1gvc-fQ;Rl;z^%&6`Lv===G?zY?KG+-k)=3^|N!+1At ziTfEvkpLhWRpKVx6%vQ#oGUJ|kKvNw8iDqrVIdZfv@pC*|HMGgc4eR^4~X8x0xy{0 z6e(A}bSxHCi=)7Ek-7_((WXrEasczs$yz0r^#S}dr+vITD9J#1v*EEVJ5YCjJU zUAv2Cfj1XL@mvI zhhiEmUK&h#ANz+Xp9)JRQBX;NKTmZQrn~2bG8mpvL_8hC5DyCLc~qJevUZU^-Q=Yg z;YdE}X2E;1_kyT}FMOC@r%;mYJ>dK{2&4Ldyd1a{>e!b!1s5iiY|Eg`sq2P~ z*AO2V8v5`>EF}UB4v=2MxCW>=166UOQf|)><=Z%#3I2fMl(etg&ERX)a+AS@H2Q#qz1kzB;BBgxN{0xakmC6aA+btf9}rK0mm z6<~B-+CchFOcmdw z!E(Vl6qLn;jB1@zq^T@}$72t@L~mohc);K^FxDEU+f4#FgH(W#>_Luap=XFfAt|IL zQQX!lQ(VlO>Hw`mkb0dyz`5GQ4W)?8rdp=ct3gd)#Tv$|GBB&SS|6T8t;%T0?19{H z>l1mjaND4%8cRCyKD!5nCJtqo-aj4*IQQS>N{W*B?khv)&D!j?ETgi2MAopAt z1R<7sf<`0{b%+^jUCyTi*-9=aLM4~?iqJVG0Tiy;4%n9clfOEZ__7=AUq&C^^$y-e zZ+bs=4_o_(hv(gki|FEV|FV1BJ-NJy_RqV~>n>PY?|~uX;@#={qeIuk`?I&_`-k1A zcYNGE?77R2{;E^+Cguc^s>o<7U|iZCe*#*elk7@Lgo>{KMH2aLB?E5aYtN*MFIJ$f zodV%ZPM{Z!^Ff+g#phi+I!hpsxjzN^3xrf$f-rU3Z7l3`SSbL)??}QHNQvSe90r4E zRs&^N{0kKuF%?>P&HBBTt)jSGwgO=|D%>=&kEmAgEqx(YOm4isSx8DSQTH{;l%lX- zseQ!H-_MBa&owm{xw!J>S7_A?_b?%t7|Uc{H+^ZH1!i}176Vh#HEosgU{qGD1zehe z`oE2yoe$^*{N#%^V-V~S=r1X2*z*K^09afJay$jR;%^o%>pS8(8B>*}_*xky1%OaS zAq7#eqWvuOenWa4oL|f7GDl2;+d&Y6n0vF{a0?;>k&{g1W!rA=ShX$CPG6tB>3=vq zKiog+y*=UdP-DngQC3xyn3!7VgVQD(10yHzNax-C!{e?`1Q0*t+k*pi4ji05{d2x} zQXo|-wsY)Gbv4alMqh9ObtwXi!0QcV$d!-6TNu7~)ienv%8ZC6&LFiyXwnB}g+`c~ z1yD6(!nq!5a8nbj9iml@+ZqIml{@Q0A)cbM6eo8qS7`F_!!@syYNVNe?C9Nm;Gd12#}+AEZA!#S`> zU}?xq1Z)$qa$GLmj`}`h%B4Uz9lCv@J*d`Oz3oUH5!FK}<~SG7ZulNaT1eRUB{G2G zhUz~ewn2)UFlr+7e;^YkDebN6kQAdBc;?(?5y+Ho0W*J?vev&CA~r-lJ~HFEqC6Aw zLyVqYNF1Mo0S35GSrmXsVBjF)HLIl3&8@P*X1vFZyDqtgMD>lQCIFD;KAF^xpYYrg zs);ug1b)d0%TTtsbXG;)|DbPs=0m!5ndr7w+j?M!oV3Ujf00dm?zPZTlJsj39Pv+LLrz+ zfeco>g*!^CXdRleOOXaJDv}zEgXihJrvzxsa!fhJ8)o=R<}OGGOhih#7|!Io|q? z31=wriOB7-vuN#gj*O z>$@kwr9DzQzCv?zBq|WO!AitAkD#Sjw~fQc)Q?yLp7DaQvZi1-$LuM8$-qN2W@7R7PFo&B;G$^bFrGL`=)_|>ZiHNh3ZCJ;F|0&0%uG=}h$CE^ znz7uS4Vt-bg*4jbCzYITs8nffh9N@pJa~ysR`a&v0#Z~}hz(G3H`p_Tt;WJ;eGU)D zRAr*@suuEV1(5hO&S>K=7;1VwhfRH6{XY6K15VPQym*8_@dg8#(ab+1nG~|MaB844 zZ2Kl94%rA$Qh62=dp{0bN=l|yiLLU=ri)O`2>E(S8R?#ep#Au}QW>X!sHcpf8L+Ji zJ9_#lu{o3CeJxS57(RMs2T{_*0zL;(B1mFmS&=EX>D!3vh zf>lvLp@x)D3vw4PNRbrA5oCrTa3*PY^iUQg&~_+VnjAcsKCp8aJ=6$vG!lvL0mWzl zW}w?x;u*Z1n~#!we?iUxMHVjDkqI^jL=5u<1yuzQO|uhJf6@W@9@Hez1^-Z}eFS41 z+LO59Go~E+E<|ntYaK8IFQ+g__*R~PQyB5(V)qWwhyC-D-pSjS+y|=7K;&EC<6Nn` z$`(RxwWiZ4Is2wka7ju{Gs7-m&z#PXcq<4U(sGAK>kHE#?)D56U^PBdT4XfqQ$n4M z(_3opWeu@-1_Qy}a^?~I@rtLwE?oCl*EbN)m>sPSWJsCCsJ_7(nx@zn3r}1fp^!ve z3N;|y#c7A&j_)Y7d?(yi@x=bY_nqRgll|{?&Z)Z2>0Lp<7+wLmYN_OGo`Ps+4?rRD z+5-^+-zz}L)gb`3e=|%Rh$$ZEs|8Zr*X_sC=qO%>89h`Uc?u$^kX3`~y2hLX3+U7F(f5=Ja2e!dNzXvu3;5^xb2b!78iKC*jXU^c z_2TO)PLQfMH%fy~>|(|~7&8Qi zpgLAcIO|QNHcq0zPR=H>M23N`s$9gNoT3^(xFuq97##LjVh$O&A}Zrys0z9DO;`~q zW`bI#nN)yBA*Ct!3)smnUv52AyXhKc7=q0E+s; zghC#!NOdk@63}E106jPyvcDQ7BWLxqKT${!BWp>l@$f>xm*k3qDtoWit7h7B!7z)TP&*U5m|Kyf0U)_%$l zV5l&WHgxPmI{ofjyS2y$1;p73@6NSAhDx1MYt&Lqe{J7}iErp&z?28p&DcCw1T%|o zjN*6|jyN!AiA)~|4~_mzgKncTo7uGy;D&x(7|94&)Y;dVvFf*BsNwka4kbOJ{HSE$#^hy{81?%)mf8RTEVqMM z3~V&w(=+r>g#cGTsJ|QtkF`Izf!ZDi?wbIciR-4+Yrlx6l!tuBwrQ-z07-GiaA9bhdwBL;F^mC1}CZN!$>3PB7O)a|KG?P1(kKRAx_hxNRSgiTVQh@vTsLg zO_D^WcBC-Kn%j@oERIO?I|pjMSPR1j0F4XMTMVHA$ghc-cmsnt9L?yrUR8^*%1|>MM(2i zy5A-)K?448P{y@_njj|I3A;6`*;p3ByAgtXLJe10#zrMsqX=a=ro~zBV zZsVJX!))YC9zsFLgkooN6)&yms9^CS77sO&HwS^=1o)$1p1Ql30L2VvJcP3L0KerL zd{XoVfyz?DB~0G-^&2Yc*Z^Y%GfbGZD$L^)4M2vYr>hN{MK6$IQihc3<^{yY7Y*u# zMTcp^7A0^T{P1+lf&xUW&&fKJ-9j3=fqOy)s|s)Q=c)GPO(}E1z^(~}a{-or!K4S= zqRHgQK}K`Q0$L^tK7pIDX%$KfvJBm_SMOWJe!37ufD$Q&x@ce(m+*H^O}}0iV)8|@ z*<#vb=n1=@3EIcdSo;Wv%~RB^R)R7^1y)Qm{hnFAP~Jvi2GnO(Kh94%6a*vA8&6{N zN+*lOLmyA{rGk6L1$Imsg>aY1Y=WR_h4va-1&V2>m7JBK%q0eiK=b-eC}NFE6YG)p?V z5SUtEiZeW%su$1ibs6R40eSeud^wp=Nr=psH4MU9F&Z~b&V0cD5~{Wk!Z+>;aMPK3 za!!(rvvk3;#c9-YujRqSDAeU;)*r*p*TM=9R?+le@B@0GvTN$X>ZSO=Q0|02OrP=u z8oaR?z=@n2U^D6*LA5;0^g!-2+!F0mipEt_fn`P>OtPG1%@>FZI`&14; zl)^&C%3-F3DF3B?@eRYrUt?*ir&x9%u=nCyBnpt+AW4C5)n za7%Eu`Z8avDEVi#8Hnp+kf;#&mHk&a;i(7_+FUmY!?8H$oQA)g+@e$-hSrrGiX#65 zK7;_?DCiFqAOi7%-h-p*i_p7O&^}i2{b-)pVxC@KC-WeEcFx6=L{+ybHs}p7X#}QJ znAD$gm#4!d50F|+rWn5Dh5IXszIWof_=eVlMp7Zo4e`U%#OGJ5>Z-s}NTxU7W1VoY z3aG8VZ}gLty*`k(?;YeN|YtC+Rpt^Uw) z2*_p3*)BRHwT7kF06d-{ma>az^kh;_9uOXo9zYQn_k=5iyb-(@&myMEZB%y@)8Zfo z=@Dp;=QC&0LRy4pbMnX(sFQKU1BvOGF(MC{ByhHds3eo2nNN0;dV1tNnX7nq(_N)~I z@JUyIQm0gl)`u3nKu39rdAaUt>KjV+_*V2fk}eqOq~ggL3U=B&F-D7i<$Q^@%peA; zUuT$QSGe96(FQ31whl6L*g#OM@dYnOvXHQ|DQ6^By%co)Wxe6IPo~ZyG1Rsj)p>?- zp6-}nsZ1ytbiuGy6){5A1z`@_qjT~eLY2KHMRLdw2(tulTY>8($aWTL`uNIR zAAXVfWDu%$2bx=-oP&MzvOz5ycC`7Rk>P!>_B64KSBF!P!`W0qw4%Sdv8yaw%xv~D z*V?8;AQVvW5ysx<<(#$+_Ix#ouz*O;vcVwEDV}2~`_W_aPxOq%xsuBA&PCZH zx5-23h0}!S%DNThN#vBnSx|S5eYf;Mm^*SUo2~`mBjP0H_zkmm`nZiEth1>_X!b_F zEYl>uZ?TiCMQl|wsW=yu;>GT%?dUy0%%_i78k&Xdc-Q<3fGm_+Vp*M#9?MvHt`IAv zSsVhuRrK_P&`M7lY812$Tq*UBuMDTwVOSfk5;Iej0R@67>jtCpq)ttr!5%uNr27ak z$}s{X7;9mWs;v7Wr8j&Y-T^im@*al%o#~PgC?;5QASz&mxqYKFyR-hReWUAAim;%a zs09j90a4~P*Ti5l+h{yJ27%sFO76ye1IPp3^xh(Q096m=)P%4#y2s6j%G>4UZk<7~b#p1Bw|I#sW>ZkOk;Dl^kHk)@*wJNF*chC4HoI|l zeX?YRLslbh0Pz36{^y_nH~&HLzSG`mZ(nV7&~oeimp@~3bMu?8zKZa_U(&M|aBJG$Ho@WLsgW<=Z6MYHxkr-lA}lUL8-`wJ)PR zRfYNpG1{xSg9q8{VUAku#z7<6`tG}(*7oMsx5zRRU1XyLI;`G6bdpPMIHj}=cVghf zb_m#@;I5qS+Eu!ms)k$(Kq>$v#N%|5B8>-_4!I<-Iimt`ryXJzltKpSqUml$e+fji z*<70dkV#6Jp#g}2cuZR+R6t5zQN+Q{3GMKu&~aiO9h~*g8Txq7%(ELwbed8Ipd%30 z_|Ut2cl!Pkxfws~pP%oaT>iBwJ^(0F0Y!b_-4^_{#_`>*bltVVWjzUf05;VfxZ|b^ zfKf)r-SdNYuEqV=y`$dcU*V+#L$d9?5DKifaQ>>a#6+CPuZ-k+bHBE8Sv zMfb9Qy#IaIedZs|_AlQ>ucEztJ{YF+y;?l!_tU(8Jze&3*1U>-jXr{@G$N==>z`45 zeFN@3>i*C@YSecrz6jTV%{|WD*M%R+SZ|riE&X?=7ng-w7W3s}cR)f~@ARZmkN)l7 z?8$@o=ZC%XN7{0hTB%Q?6#n}=z9c!8D5}(l5f^mIE4&mC++@+(V~xKgBLsX7XlKB0XCkD-HEl=!S)(V5jb1PJrS6S{wdl|P zw!LfHz!dr|?q8C}1N!SG&f)%7(~N%S@if8SB5~QP^>rBZH%I$#FLvd#uWuCQL?amU zatr2m^BH(RwS7C1&p&?r>0|Wq+27qD`ggd>Uw!;&U#jq^p9yUg)&FIcn9f>|F}I>&A- zqYdixuQK1p*A-oJN7rmew%X6v*E=2eWW4QnekPc7WAs3*uZOR@3*K&?=CBOhdFhy& zvJXyNx&`uUp|=t~-IWLEci^Y!7kKsjw^qvyzusX7zV*D{UGbNXnrr&Z0K7MmTHuNgnu?6|7gv2C{X)3AFu`Fmq^BR~D+a^-11t5$x1 z_4QzRyZ*>pg@%X)rJ_B+@X=p9EBG#&6JF8{=MPYN@>R4EJm%GOmlyadk=1DUMxZz( z@rsw)xqU)Av)gO%2tno5SMF;5yV2PLx{>|2Za;EYFa@Vvd%t4gFa@5AIZR z4ga*)L5BxJcfr9SY=p1eLjCn`7w=@(`BVG%^$j@Dzv#NHbpP`7ys-xBY%r{GOs=2b z^bhwh_qnrjtP!;aQEL)8joDs#c7FQyeE+!OVtdua!FliOvg)GV$;IXV(NX_hcmJ?^ zj#tPb=tQH2`AqTKy{7U$?5s={!yQAb(g-Zot<~X-)^T44)8tiPl|UH zj=+84Aq4AHZ;~gBLMKM8ZaA$Xh+5H0yWq2Jb#&UIS|G57{|4hH=r~X-g z50358;K1+F$;0lO{r5+g!9|kH2_HxwQ%hiAi4_4Tv7;_A|o;wbqBU=f)U;d6q<-93dd zTuw_5BqO{u5S9GSoO|#!lP8)2Mi9X}Boeeui zp7o{?{TbG22Xmsf|NL*(q@j5>i=B=U5C5~DCqR1gDk4dU+T5$3X$h#{6dk;t|JHW@ zyRQGd8@2)xjb3Bsd+p_}>*z=uU7vZC{8MDICj;SJzl zIZ4J{+cZt?Msj+C;Is0Q46Sl+~<%U!2q1)~X^fx&*x;26iNWi7F##-QGVeM+z zu#dufR`)f}YB0Xw})v^SIo01C*00ErIST zUH{T|_EjUg1TWJ8{u@*T!lJ+{!vy31ww(S9f8xJdfU(3efejU3*X@bd$&h9zK37%c z^$k{J;7@o6DU0yysCRMJsC`MLg<{HL&PI>{4@$17$t%3DKE*?*+0YFSUSz@>!-~ap zI)chTMN2@=i;r6?Gy;sQM)m89>crkf%q)vn%zwvXei>u^Slz`;QU5v zeW76?mYtKT#(0&VcCmJU1jQ8p?*4drzK^fdsEKHRCfGyNXsvHZ1fmA-Vz1%98!Q*0 z5{5Y+1WjOv((Bj4kO@@2vS*_fBFcxbUqNgrYHe?BMrdm|duWmkqvfCOqF;ZH>brH_ zjdg2;^yMA(h(&yGaZYi{Fv$~%`{w&Haw zo&)nDd`zLc+>9H~PQ{RjOf&-|L(?%`lS};N{x6sbpPLu9m)=e9)`z?NmAo7IME1`Q z-Z>5DB9JTW&8)rsTkovjJ^8_%Y_+ajqjZnghER98{%1Nv5vDpdYB8wH%VvbKrp*Fo z6cO7z?O>1JNS#`B0cmn-SpVZ=yYm}3pWRk)-{|}XHo^7WiJsOch}?pGPy0bSUth1+ zR0(}*f5F$jx4$QzT>M3Ux?{&~Snvq^0l&SUs(b$W^a29qc)EPtT}`*beV1>*2aP}J zPdau$u}eNozv#@-VQ`9nx^wR@PZ1dlC-`qVsxHhu|BKE*98-={px)_bc;LhLdo}Ql zldlpE`CoJf+%0_A{Yl4qr^oMql%x2Ajvw`2ADJM@5_@0}OU(*b|};^5%T+rlMs z%wAQx#Gk*^6PI-4;@n$Lk`0KEHc6@r+r33uK9oLT|-|XP* z41b=T;otr||Lulyet+Ku<(3Z7-|p!55KF@W=0Epp?tcCT^w(aEbzV560aE^>|N1?AnbY%2bJid9 z*PZMi+XnErKMTWm^46ZGBmN2}w2MvfA%D&L^CNrS{q*NpS-0o;5L{yexpav=vRC^L zIQSoXwe$TGH^T6P{@SYvWD1UX_|(O_F3nQ>!~KTofxqF8z1sVe-sNTY0ypVB{jpaw zz0}^tSGh*9;Dr56XUUF|a|+mUf7=L{oVUmPRbduVaQqhvBy4`xg2$W?y>vA9K|1dHB6|$gY?%P zMV?K>nIh5gIE`~XNDWBW7Unqrbmubpiu9K|@+p-g_}5+y>_z@e7z*@1De~?k?ih#HLGi!%3=fI? z%||nTaVA&#;V?hlxy5A6o#Q|EY5~e)&;Noms2Bj~XF+N&uFWRL#BBOdp$ z=YP2~5QUdV>JL7S**x}~9N4QtYCN5wzub{q_n-a@57D1{wamR(@KV8nz1nOz;uG{2 zf>Z{h>;4FdlHs`d?au0_ldo2d=AbL8&bT{rd1Q`H%>5F{WsQ&z%)Wkj#9g5>Lu5t% zkb_@Fj_R+y8iRs#Hrd~MHI+$bViu2?tGNA8l7&*tO0e3O?67kmeUW8j_gkP8`^U2B zwtCTIhc5k~B(>uVeT=4}6ckPZHtPHa(xr#KRQS-8)NH$EyaUNKe%?JgIdw8VI_e#C zPcFKVg^2uVEXlF(7x}rMsm_b`=G7L{+ft2ssu2X|hBwUVvG`{TAe~T^zU`KQxgD_o zZ9szRO?k2q8aKFB4|81@$fCCmO!DnCA9T)>Yk0SZ_G}UrPSJnbvvI|3K>p;Ov$*%2 z9uMOgc54XlGlKdNaLC@Qm$Y+d_D$mOUh)aHi#K7G1C0|{iO?VLDT2D&QjaX$07oG? z^V3cXQtev!_t$uFZ~tV!70+iaCBesha`jxw?dOtzoVP(}MTKMVx`jjcld;?!&(c3B zSqB{W&$$1Wvv#r^{N>DlQm#q-t=v_0kvqHc6pU^At4HtVMBuNg8kw~qJ8@+LvzAad z>J`a-41`>{e+9Vi)7M0QS#gn@0QL&+0ERL+?O}E=H}TQM2oL%r{N)Qrk#DekyPJ)z zadw@x|8sV2u4ZXaz8)f7$QTf|j%l=oW52|5JH2=Zd|G*De=#Da-fS|-riFu)d|EhI zY~lNdWn6ATkGji)X7t2lhZjlYEHtNVzJ7n{^yv0v=pkH!m}@{f1C-$drmQ8*N%twB zVAmpDP_p@_T+Sin-%vzHkcsSWUqA^gsCpsSC|?9@Bj6271`A|V5vCX?tbj9%EcA4PD|GXt$zN*U7mcS^6&T3BGc^N{ZYPI&o`!{cTKXxx(I*qvH z&Wz?se)CcjZ`@N})+$3YFWFpl|L>mn!9hYe%N6*-s1il!ny0E51k3n$_L@Iq7*M_P zraED2o-yLt9Ye%FSG_}bY8_(m+7Sp=tZ#@PtP!Z$Ex;dXrB<89PxMVMm%o_x6y11eBcXK3$V zzP||JrqC<2TpLk4Y%qfPL{aeCil!f#M3uAU(T@b3Y}5ki>u1_8f@&Xo05#h1e~LZ` zkF09!Wvv{md>K9Z38E*&I-Tqv7F(e%uJ{V;YWlQ7!Nzj!WeTD^wsO3}oH|H8HM2(po;$Is;} z8b8wur1MuRSI({nb5vsJ8k)wc>RCOHC=&vIg0Tddw}cmSOTfuKr!hL+YZq&d0C&@1 z=o--ycSOswoJMs}0_%!DqMV?`%^XW3ErRr4=tSmO%7jP?iBqT*#oN5Jm5vk8L4hNS z8_EIHv$53>#%Q?<*^3fnm#GKRv);ruibq{5@DH=-QVA-hJl2OPsglp7MwJ)F#ScJZ z7y7i_@FmBZSSyk|1xcRHJyR1igYi3urCL_N*%~l6fiFgdu1T@dT&#wbyl}N^`&Aup zdq{H9J~%vXFCal$w~}<2E!@;hrkv>bjJhGP$}=$PmOCB2SQEAb|gI|ie`C!!Fs zfwDim{m8GnSgz!c;HIY0WVl15C6IRLw3y?*X1c;Pwp~`I zK^nS=2ip>T@KBjGZ!E8c?>xCkP!y+ijd1eB`*EbV0!rYqC{vqlGNc!BHMOF?FaNmiBp01 zInc}zA=i>n$0KP9W*BAX;8e*%BQjCI(sSLpf7LE5+0yN+ZnSH;w020@S-n~+7eSj} zP>%Rr~6B2-La z^3hl8@1MI*x4!;d=FeKyOBr>RuY$K>Waj$14st4=3M41RI}j z$RGCQ!vhBuFRxOh_7-1C7JSh_4=gm02Gjxy;%ZY~&R@g$M6J}Ferr0gMzemcMmXA+ zjHhkm2=LpxHI)a)?MovL*U6x(sPzlKEgtf(Yk#`u2Mx(->P?NdVeU%pS&PyZf-cz~ zFC%+{$-}GpKVMd+=he&=JZUQC$Kw!b(Jy@JlBgL!ef-$@J7^gH{*wM|L^;9h{Iy1- zz;o`@k`l(fqo6{uNFS4u1t4}{37Pisiqh&8*dX-AUSmXG^yfd9{SEfxc-UME*Q|a* z6vS?~#Hkm(J*WR%{Po!V8_8a94HrH*DDnJfI<>!Mnf+xR?Ro^C^7Z@Pkq1}9I_lgzZ1PH&r_;75trhU1ecT0YxU=DXemy&+E zVn%>Ir<54*O(`*8es>S40Uvku+4^$f>lGYPnk47m8}RC8bi&RJW^SBk=j8@WhYKE= zt=<2Ichi39cY8vQN;++8RM|Pc#N7^$nXPz8#pS`%jCeQRrO^ESuhi0wvw+xNj0R{{ zNcaZQs=YFF3x4L}!Y47hpim&Fkz>a~5P#iWbaKoG`%nm^(0g7kdaP4Gy( zsfx;oo1j)`9H{NqIi3sjFilC(8HesfQor?^s4?YELDU9aR*>%UDuR2#fa2U2?8KkT zxiPFVRwSu4NYQLvxrVm?P%mD)XKuTN|118{YJK;6gpE{n;p(5;Pw2z=j}8Rf0FQH> zID!#4J-fty6dyl+$_U*5^AA1y$G^ej;Qi^ZRx9~Ey8ma@+uuLs@$SOEnGO&s&4>N- zlitbOm(iLn$!EcJ5nzOn1{9J$u_z9~@JLn&OX4`Wjt39Q)LEB{>qy!O#qE*ozl{uu z<)`;Nb0_uQEtT;iyH2>6cC;^um+kf@xAFNQlulHQ+25WpWPreY;*i0mE5vp#5Weg;-iGW#)xK#?7 zjYoja#Hb8X&rT>%!u3!A^cBx3f~O!U8hW-AMR%3lMFsafXW=Z+o<}Fba8S;8G!W%TfEvMM#No!>DJ4!pLatFKvlY&s|HZ6YqvY? zc1Qt8Dm>)7uEI4o{AHiNrqv?5{}n#U{Up>r<}-(*{`n#J>=1oQKYI;aR~ zkFFyCaQFQD^!z2%cjD@efCgIMqXZ!+9|eKpx|wvY1FKtS*7j$SbxHhQ01W>N-5bPH z0O1dA$c?zjqJOOuI6}O8KF$E~TXZ*wTH~MHnEw)O^7|WZHSQS26~@VE5yc~@@To1n zT#I(?S`8qk3V|y*%dLNGgXTD2D@Ao1YeBoCGwo2BtC_E(D7Zr{ z@xhMW_Nuokz#4AGNOE|M`dgJs_HXNPV4i7xIXms-@@%u2UMpz|-s=I{oDS2P*MC)I z13QVi7Yy&Vs#J3Br*;97Bb)Ru+9@}pV&Uit%~hps_k?TWhE>xs!fM>35N7L!508Tz zs^}ceq#!C5xQ*ix^`C`YAiBysyp>JOsdpZ4t2bRQv#0i?kTD8Uc{=*B@(k_`)5^pe z*`e$VBu%D29s7h!Taw4R>y=W$yaZc*Hg0-Gh?f!rY-O@@^HYA0@&8+yblv<^zxObc zMURD!{!V+GRAF*&uZ{l^L5I#0o_=xCZ@-n_PcN$|CAib8nA z<$7&s=mPXusnGss_TB6^?z6wYdS5Ml#*uG{O{rAcNL;qc^4(fu?a*nWxX|$C}AqJan*Yo{j|52s=M+*|~vb9bl5;7nv zV?k5KHlmDSNr{C^Y3qPNLNsLq6rY2=vMjlqIyj@35ls~%4Z>(j?meL|C70P~MVw>H zlpn~lTP~hbK61)dA}HnDXg(Qyl&wmjGI&QhSjTN!2&XO{QaW6+z7X9AN|(t7<4x3&zufYtGH+nzxE- z>=f$psi=<2_|Z)Pu1TCnIk1XrXOk5xgbk61h(w)#)&Bb1=2z{&4NTqSXNl z#2Es(5M_gE`5z{z%oZz51`VjM0Dm%j&;wK76wAXd_$ybz}3%pY>n=HT7R@oFZe9Gy)I+ zoPZTz86I>2*w$K$4EU4>1pX+j_4@cuwO-jj_s=4)|BH&ejvw`+A&`$@{d{*%GvKdw z_l~I`&&j){I;U(0!}+9s-osduq9*Sewo%zIg`MlGe{H;j|I5rn=X%gd8Q(Q4iY9`m zUB_QCSsU>KMg3st!DPgv*LjYU;x9B{goo|N-@a=$EBFD}Tuk&*KTi$hUIU!i`-4=* z^9ShwR#0oxiRIA2L%{P(p@aMX*YN>Bvd+Sy;m4-`zpq*g{=?py zeS6dXQKhq>AIj&(L4OwG8o~+HwXg&lYkUGiA;%pD0(ChMXuwLPppX6{!Gw%X?st%3 zstX#6J|M90#}e2EfER>5z*l(GFfQy&5)DFSAiv$Hz?IqWJU=^v%adO`T+ee(B^C7q z+1zq z>UE3-LMZouAXJ7+T4h`A|M}`B;t8g2gtnTJx*ajX^WD?k!}|F?bDg*qYITF}3rzUn z=-|}Mnnr50HFn|4(354kSY=tLK(Nr{w-6#|-*8!mBI~v5yA+|vmw&iv9K+U}VdV?O zxDTWpl@R$DMpUp1<3H~F=h?w= zhj3u_yxTtbFIov+g(CEzq0W+{e;TnX1jNO(uVGGU_v{T4<{k(~yGQ$K+5c{57J)i! z{xPV-bF4u(i~lF=r!Wz^eU>MZ{jHx5;~04kvuR0~;)Prd`n_QOk&2tad}|WBw+_u~ zRJ4h6h?oyF5nD=X6F`;sO^;gBc5b)fFPN3{0H5(*cTqr}&oC#6p%`P3lYpg#OV3L+ zNmMYo3Gksa{3@bIKsuE6FCJNH1k;a35tdmpc3^fp)m#kDmsn+)j;h0nFfy8jn9|JK z1=#NEa5QS@YaB+j0l`HQkMQhZjuN0l^_*B8f}0K}eidKa+^YE5*?i&@go1NRQ-p^} zj1;p8=x)*v**O;XA@L>x1SrLFm-B@4$xJdya<;TAkj7IOLn=v`Jpcfjkk8AQA15R=|cVG~`GKF;~iRaTPXM(~1z#$63$E`G+tZ< zoKN1MD}}pW+%EY%j%_vX>$iL-KaM`E=AEW9@qHQSUP@XX4sx>F<9tsL2xaw3nD-_s z7o_NlfS(pvU=Vcj1S1{s2BNe_7jWSedoMDFEKtk05nwW!wB)RLnyEn7Jeecw48vRn zv+)R>c%|-`0eomx!@G$90Nt?08_SNfSSQZ}ejkA;4NwQ>Z3h7UT+(&wyP&5=dvHQ} zzdkW|*brGK`Uq0>XcQ2Fx#d{#z@p(02V&(bZ6#-9H>;q-b2`%vLp>yY`Xbz-Ljwj; z-tW}j`i7j^PvOTY`W4zSs%i`VmWi#ey{%)_&FW85>5kk1F!wTjK^U9WR|h92ST`U@ z=!5d-PWA2TFO)d%lUlWt&?~HJa$_&0gXr~;BB8m^YVb-^A1jPBpTGrA=M!MUfNk>g zJ|GW2iPbm^P_RVswrQWC>&y6>Fe_m}f;^ESwbHXm`dqcQrx`SAGfZJC<_T#cU=(Lo zxKVui7O~E^^L7y)yhpmH{IYv?7;!~i9N ztPp^~EV#Y^;nG|`CXc2mVmU&~A5a+*xa+~NhASLI&d*UMhvM6!pE zt|5?I|N4BFhq+ZGa+Y(zG%mS9!-~nvj5(k8>8j1WTe%H?;7XtjHLE~KKK<*(mQKAEP8xlk=m~+nQzm%+jhfNU{?UO%@GS1n>I@SPcDx&u-^L**s1nu^jn+RM8FMwM4o{*E*#~q+3 z_49}AuOISJD^KSn_uEx8Ap}PgfURg?KeeS0RE%CqNq5Ex&1JjO1fc23*|U>VoC3jl z!DGQS8f583@2GpKm0V80;`hz~MQG37UqzQnuHfoJzH)eF_!~R?D-E|(yI(UmN?zk5 zrv+T3ibX6~!WAg{37$f|a_-&nUu1+&w!XJ{PGfzlnz_J;uTEa{$g#P8e(qv8L@cEL zXX%$03h;NvJich_fV1OxOxC|)d!j3FPQcF(T!P(lVag_ z12qh*p1Rx3cQ z%q5n-KrcTd4z+b{9(HxHEWNB^22eJQSrg>!6KQx{g}^mQiwwMMQRCa1-^RVY#4n)T-(OB>A-?h=Cw-mQs^tVRQfmLoxI3j3)T@a7Xo*^h9DiXBvK+@K1}&fO(K z*~#Uk8rD*CsY!$Q-Phf-)7NLGc90(p8ZB&2%It%qy~DHpPGJKW2oUY=-rxDHZ*tk& zL*l2-u{3vor@9IN!x{k%Z4~*jW9>20?adn^nx-4T(-Pef^6;nbMi80rR=e!?zf$l| zt!M!Hv^NBP{0@Tv)O(Z1Td>6BU+n$O>jr-pbu0L;|DPEEDOb^V8zd(0?e4wo^eC3M ze(v1!B)u7-c0sMuIQfsD!LR=TXnW6fK(imgq%jDU9yQ*5#b5$Vw+2g z>2|Z9o6dBF*J{A_J+25tC>cUQF$hc$ewE3neZZtj$9tk6fM0B*-cm`NZssBL7)th; z&@1n%{%GuO;x%mz*&WfsfGWV+ETmyXX=AmoR?lCd3~SzbW~b2~#vGc_fAw&q-E3{v)<&gPFF z)e;4#h*LP&vt%8P1&8O8@Fy3b#vaEY+j%$~;soNM5LDsWP|=Iy(Q5U%X4Xi95D}XL z5yJ{cX1QFhg68K9G1j~SZyk-`9SQ>kY+a?oxZswXyEDO{G&hf27J*P6aC=#cP|Qyh zf;&;?wPgLj@2|bBp9igf?6&@EqxJ2(wYQDN>iXNw^=a*$`cAdi1zdirVCW@J5)%NU znL8Nm3F4s)doqZ{6P-nGc|fL~U<#4@_mD z2PQ)B&-z9Kk3-5MAxu(ab9NswrjYs|qn6I6cn8?tKrHwe%}VY`8htc7OX#r@8H1F_ z0K?a_UXG_dJvL{l1F`Sx6!BH+ouswZsMfx!)-bbg!Js%r_UNd3pH0%$2)ZfW zK#@D0x0~%Nwx8)iPPodW+T2j+zP+AYwY`b0uL+S_Td(CmRN+bogd*6P;?4cA(6jg_;g=|r|bEPK^KkX((EbO2bn zDq|o3vZq}-pTR-KgeQd)KbcQngLuC8<(C$WOhLNoECwNXq=D)RK0P9Otl<01*k4Xlh9eonc)DK&XvK)GK(TD z)yf6jx%U;FHo#x+IQh_jf|X71=Qz1Z`1c6)M*Znj-r$SOxtL>MM(lDHzsI}4P>5_q zK)^=YCWL~RS9294W*po$lrC?=l)3W)N zKwuEzBQip1ZK9;;Y}2^glhPzgk~#Wmlk2v<2;?G!5g&=FlNUW9-_{SXzwxXAcY|Fe zc!$yfZaZt(KvD>kB)AOCP;?6tG<^qp5+n_>ha@>=;8hTL!CnL)Ylx6oC)9fNx=G7> z(%vA7@}#{<7k(7bHJm4-n=R8(Vbd)T-YmDGm$=2>C2uF53lOT>Hd@Aju_Lc;?KwMe z&w+j3@$E@lZRoq5m zFtRNbsTWyDOCux!7>`}Hs$|@C0dBL(&;oZ|QG^z2Ne?@_`v*radi&ketc^_fQ|H3o zitkfz5T~E8258l~fb+7A9yGIRe@<3g%2V1se$ne3?LIr~xLUZDJ{p1voY+YZXw7TN z>v8k~WzX|gi%+yw*bQ3@*rRHwF%bnWWnrICsaC4?RHTYR0 zJ7MN>P(R$z<)`IcRR6oB#?hi?b`Ueq(*BtiY$SZ4Lw)+l?TCQ{_T4#8J@@u!cno~| z$8jDiH-FsfDv&Y5EHI?N-TsAiaorIx6?Xqg^2OrGoU&IawWvBiU<3v-_;_hais5oP zI1VxG5xM>9J>Ws$v=76y1}mi^=)sUP0h2_;@Xb+%FgWW<$)(dsuOUr|%zDHjboaYk zXphA2lP4hUC!q?m%xYh3o%T6Ky*T-Z1~b+^GS{KQkR(R#$p)StN*$y*0c^9kOKvpU zLkQD-c&3K)wYRl3ysVVPmWuBINphQ4Gwrc4xAR9u@rvrdRak|>^80WUTynKi(&np+ zI0n{u7EGr&b#WFZsT}U(tiQ7%`a1Y)JS5IQYv#y1_SJJ8ZBIIXt2QFyCi)6amMl!l zc)0Tu>_cboWw(A##CALcn&Re}UEgZ2t*)=vev(h^v2w&cnTXg?^+PP*Iue7d?xZzjFJP}~T*wv2jYqsBA?4`qAmNOtirONL8L@Tf z{~8bzX*7`-t`EENaO2T8TByZS9@Nn1pY1YaX9e^T&QMK1uqwGn8yg!uB~deDMqbQD zA`)8y+tz&3oYs`yR@hXU$eSz=X(X|%+9IF|xl;gYIwfEQ(B|zP)K9t{e$q6224G#> z5)j7m*-`JX`=Wl%UZUm`RWl7>zVzv@!=)daQjRU;y+a^_vMBx0sv}GOs#cMLpq$lG z?tUOt{VH(0`j?8)-GnWCgYlWZ^jzx zhO^+3P@7SRnyB**%9!RM8D-+>8(euvO9M{} z*PXP-?<=2xHMo_e32*xOM9*izMdzdSZQ8wws6eYl9vmN{z+uxJrhzz@NEFmsHf1`u zaF?+UQ!*REr!&p1X1i9Kq>0QB)ofx3t;0a(#Tl>()YLkWj*oSqO5df7f4 z7bj`c+v{~bcX!(zV9bpk)lVDj4ej)|Zq0tQw1lrVmBgC@hj!F$!5um{Vn_FUe0BFV zifbo#afA20`#FG{j#xfVsKJB`8=gC2dt!`P6VT@cV@|MZeL4$G(uUT<_SYMYrZs6^ zpsSvm0!zd3@)&~7pOFY96N9YP&IWSV2m(tW`7;v z6wxjR+yR9zz&ONw;|==3%YsGksXNVO5+=M3Ja+U2qT4VfC&5XN8rRSN8-_dIZT;7~ zFDa4hYN03G!tn5X2f0y_l+_PYsA43M4zrUOA|eh|s{7#jN`XY9S_igLEuk19tM(am zY>VYA;0V`R;&~N`2{ay!=32%?$tWa=pxQcUSJ_S4(PBg}ILcf#_v^KHjS`gxHD?ET z)TZMiNsSRA8>-_lN1Pwt#(q`&>YWl6D0#&|E=cD|o?{h1?ra=x!SLH;CaV(Mn(LnY|qOy5cH_%Fjowx5^|X0Hrh2%xzBuZlxF2KST$qMgr$UNpNU!6TU>2bIEl)Wj=3u8X zmChVwLUcIK5MDthA@%b~++v!h10x&&7MxAt37fgMPPzpQUeNJBcJLD$*~9xpMwQUn z9F6AbCfQwbGeqEfouPz1oT8yl4WSc1pe%{gh~K|!Y!$X}=8BC-FB`w#g5R4uorFYA z=_v_ivT0vvj+zI-6VTa<%o!}+!J0Fj(_NC3Ym4@@mY;r2e}Ocj2hR%*u_@3*+yh8S z|9RFu?d*FKsjkW&Rs8EnR4=kJyvarVorzUfei)|B5`khZ~70Ps! zydTt4NM>0(rn%e>mve_ta0W}=`3i7tI4f$4pEx*r-lZI4@CnQ)%9?g}!(8Ina}??2 zZ7_LxIh~ah{5rZ9JwO4cq5BC2CWC-6AWJN;$`{cHFe2(C;+(G2obqP-+xACv{zuG=yNu(3c$bbbTm(nHoT1o4Q63l%|J_xZPLr+mb#l0CUry%jcy_ri6;jqQ`|7&h z`*o0`9=0}~tdEmRN}|}t*H3@jD4UOD6ni(xNwhbmyJ>3`)QAb!UV6dxd&6W_NusIh zdUTk@19%4zzAi?bN9=U>HE?_A9MoV36wGA6smZD^P?b38fH+2SnwpM+l+b*;@aT4b z`1^u$MO+G~xs)Z#S@|+323FCc^pKi}(6E5W>gW8pAyKGEsS5f|gOB;1_>lTZCCbd} z4^Q54`nw`@XRWOo=|RWu5B7m%Jm>IJPe#KpkW>`8c za-A)k7rb0JG3i`3GwfbE?Co>o7?HBc(c49{Gu=z3#{-m)yxasA?Vr5AZIX+3Q4g|c ze4FGfd#Mf%QN%euBlC)8f=+d824&0P+wUbTbfPUfZ#tbfrzDXC1Ck|ah#FEFepmD3 z%!d-%|LQe-`&inL{|%s3o!N)RFunqq$(XPm<ac*9OjNg!!(hVvAa;F=>N`AzG{ ztE3sO3Xf?$e<~!-}}*&WayLF zB%Qgu#KM%3WT&Lz*l*Vfc|%rGe>qAh%blpmjDL@+itFJu)hm+R8vTAaO(kptzC#&O zFig>;Be$obRQi};gSUN z5kZJ zLJ*K6oE|XGm`NQMCzI5!*`dx@L-7PLrqLN|hy4n{5;}h16TTi~3?lDh(;x=(45Z>94{&31%XFEVC+2 zF@S1|Cy1K!uo4fs%_=2iBEuxW9yt_R9!T7~FF0seV#LXxP@^h@4GdZWNI~D(8Rlh| zyKW#|yN|ak6*zB46@oT{y}i!sQ{a7{ca9Ib$GziMT6iGO+5U7gKG=Mx*2@^Da=KZ`f5~6PM@LV?k!xWMBA}}fb-{}8oxsG z)5j$_^2xL#WVn9FL_^4NxXc_iku*-hI~m>I5M z7DQx5n}pZoN*cL=&owu*C>LcPMHl48&_s!YhA9@&SX~seM%R9(20dz8Ed}_D?9ez$ zAkhZ-#I9r*=}V>TJh^%N&7;jWSvhc+mspRNiYC?y7>gQn7B+28luEiRNm54tNAiUBl()uX1wBMqW6(stf$~t!rvshc8d{I1tt)Y%aSew+grWh5 zh;n?;*i-o?&IOYXRK%G(a*}#Wnlk!~PN|IXC#3pe_LcDAAQ}!sip^x(LPgR#iwOnu zV&V?jjOVNq>AmcB|E}spNhO6yLuL#EjN*8TRCX3-HbTr<6xiWnConIxwE=SztR_b{dhh} zcQz}i9l)pDx}ZP$YLnj-M<{u13Dc~~_~^m;Fvje)P>hOiHGV+OE)yYfTWV zw!C4+2$)s>HR$W8E{Cy*rC4!Hs%xiR={tDEn+aV>H8QA*WLnf{R%%;))>U> zIBrJCnwwJ6)G4~ERT;<@_ATyO)v)QAZtMu9$@jndV*ppy{ZYIFN0jp(7u6CKqez&% zQo_@E5`jr!I*8Lu8UXd`q_y8Y(E?sUEP<;?1aOpKkai02=2-439CDv~Y|MiLdgpq) zyTJuJZ6~6{d(lI{n2ieu_f4}-FAX%iz-gF>0jKg6MbBBUIm`c*yZqb-Fp0egQHXUACOcG$|TyNu%6{yS!f4Ae2zzMu`-d*`w9V?LWyHr z=a2$q_O;5wxIc)`H^{HBEhtFT_}FVScXmVp?ipAIOhzWAkmLsVLXf!Ft5n2P^y7Ayt3B2rQ@qT76B|#+ReqbgPht+8yWF$6w zvYws4V$0VMQ;QCkW>b5V?!@cvTaXH|&>^u^|2s~3`!9D77?Pk|Q`Rg+DwiC`Rk5Y;~^sKuiY;8{Ecqd^pp6O-%$ zg(4I$7dvSecu0GhPDpda*~?tRPR?SCUwaUY}B)pecog8*^N@ku0u&~ zSV!9S61?zStLSUT0pm53{-h0K>9UqQrmuZWRQ<)#S<^|}(!|)B1|~!+`mp}4vqeQ; zg)vEp2VetazB7qQfG0%?szzZ_BCWfTD}GGB4(M;MCTO|9lW}%c2Q)~i*I%}N$~15} z*q>}VyxPXrf`fC??b)#tKNbw;PF^U^0h;5eDSM8!s-Hy9?@`o&{FJikv2+)9(7f;J z-JK0aWvi;gPLX1=!MR#=;5lkbQ6u5hO@%#L)BC$t$>RH8?8u+IC{<@ZnkR7H&@!}4 z@Laq5h95DsaKZ|7W1k@u!9`hZd3#JZ`ez#IEPi&~n>Y`(XxSTg2`bHuRG{+EuU`V_ z!<~d_O~dCWn9YiPKvy zNieYZNjRE@Hn9)~GKfAxhhMe-tUR_vVEe1xqZfxA?Mb#c^>a3q-Rp~&iUZu~&mIaW z7gJ!?=NCx|hy*C>`G1>)j=gu}{HAG2#tD1TG{~_d)rXBOF_?y(3doO;va616BpWIl z2`T?51#b^^jWQk}nhg0DE=T^2TX8+cWE%9tR)WEv z6heV+nn+xY`>3QbDxdXKk-}7JH6W`4RwG;J>`^p^=F~)D>^%QSwG)158WKr=zM1cO3aIIG6y7>kPRtf3oD~uhOCFHm`v8l@b>!sUcVQM z51)Jvjisj@O8ufIz+7GZT*QF;q%TwCi-Hm4F=iU0*gQI8oCmq!;U82{6{NC0r`mWP zqtk+)q@It5(o>sM*DAfn(|0qwQh$@(6%K4jPHwT22o)1yf8^*L)sCf#HRV2wo04Xj zlK)YeRB{B81gs#0v`scEXJ>Y9D0zgWz|h%EO;%I5`JR{v3x`d&$^U|W591G8v3d58 z9%5p?k02?!De;{A;6;tSWO3*pS1}10-3(yv+$V7*o9D}>_p$-@Vt>aEuEFE^MEKRn z&1STk8=iPXn<|nrTpY#;Yeo2w$ZBu&<3=aWOj4V>JU@8zscPOVFAz&G0mrzVNYo&m;U^70NntjIA z!Fa%s+b775aHiUE2btg|kL1OI(ipO9&>p#1uil^Rhl0m@dn^KDE0@F7O|VpeSVH;g zbzjrf7tu8?4cjpIsMkH(bHYS4PEzMZQ3QK?rRLQ?j-FB9UvYmf;RoR9@f>T6Q6m8D z;Db>kq)J>@sH$|2|6mWZQG5v#w)Mz$Wpfn_f~l!$t~vS|JJQIEq?~uA8o9irY)d*7 zagg-J;nwQm!BOX^i-wV^dinr_#aEq^6O1>5_Pyui*M=f-(K}2GQ`o_*hm)w3eDUq- zU(^m24dlk<->2=e4IA6)(>q^fJ~qU~cvf?weAm|xS*>8g2HQW=GkEaq#@rRKN4|mI zjn7-8tu8$Q;-8N>*&fgiOvMFU7UtMPDvjupxxGB9CTYiQ!BZ{ zvpB)1Hn`BGrJQ0mRD^Og+^JP+6;e=8l(?uS&d=YzeOrBd|LyAA2XAX{e_Exs@7{^V z!FTVJiI>lfX7;YJyfT&9Zn?q+I1KKF~U5`i6!v>yowSd0y&nxR3S0Eq}zjLgjvX`%CpUhL*Ono_N@;{ z0IoPC9vT!yK(z?an+|YMG6H}Rjz_q)lxr%x{F=(Rz5y1;ep{q$GQ;Q;?Zm@TLTZN6VlhUMtb&)42jMTs|B4YhI~&tnh`@Guel+LaaO zi%Wb^zM(U6XTF6x`Zp>!hCc-6)mpKsP@Rtc((+T0Rp2rXhH4^3%PCqU95fB9BvquS z-t$C_5*07r<1O|B*&K1xj`4xF5Mnmn(QD|Tx~=!H+Aw{d`d&Cn_sML}ZA zv^%Ivf0Yb{0_ND4XFzVTCs=4R(9xTHH|IAj8hvlkKembpunH&T-)ufG94wfTe+nkn z!<*+2wvcZbj;Z$p1rVBZG-3aDXUf`dqTqBN5+wNt^y{xS#~EGq@MrbV6CvE>zk1O7 z>Th$44kVQ`T#0b1HcibFd)rtxGG!4K%m-gLDppSDzNf*rw0<>%8PQ?>MntoLp~NvI zl?0Yx;t)@Mo!qN1_u#~_AV%!JXQgY#jKt=Bf>gwxeCKGLP0s2V>5N%6=7P`@A&rEq z+_)agm_Po$lZMc`QsX=+Ng%9A2o`;)H;o26h{QMpw4k9$T+1Bf(~^|ob$u?Xp&qd0 zYR6r@x2Rwwi~2s5Cq}Di{xoggbaUAm7L8-ygr!6Cd9O&$ef5%LKS@z8;YPENY8Jdc z*q1De&>&)HHN$w0eg;T0CyB5}5{#cMj)AU3u=)0n!w5PNtHwL;7JVnGH`!;39GgIR zzrYk9%>I!_(Y7V?+9itOrD7#tKtfM3Hj*~V9jK|Qlemh@3&+#+Mq0?rY_()B;x?Z+ zIzd0zv_+FzCS$bU9$ytKQDWHYaF+3wgAW-28;GY{8e zA1=VifBjerJQj1SWCG`%N82Q1ad@VtB*5y77*U z1ezT+NvNoprMNZaTsOk@WxJ`4;>k%GPgVDXi1ktUF+EAcX@drkJl)z8XF}CVYz&u) z9ZEPWPcA&^+ixF!L&I`t?8C2~5PHS;JFdeX^&g> zvMo^|sI%Li*C;*VYW>;n@oN41Mxz41Y)EM@_;r&CWK{sTJQtqTI(BR1oO5dLC{3=J zH03)jBM(c=n8>%6#eZ>g^ptT`f~!k(Qoe=|kCBTx)mFc+5qlS6I*cLw4I5Nro+MER z#|Ljn3(#giobPw|J^y9E7M~V@al@2TroO91ZL&iZH}XOfa4?giCYSx(ymQ-|5f}8! zwkhndXJp3l6Ty3(mdVwgZS-gSPA;WR8I?qv=OomnS8xI!LO|&=^gtv3*qRhwd2w{s zU~jH~0<2NUsbQ7^_CV&8F*=%bE_o6Y%By`5P2dWJi4$ZVQZJHJQ2RWIDgFal^;w)G zE!H37BS&aRni5}URA{w?zreW?aL?a|9JDEgzbNJ|PB68)nFK4I)Ac3R zT*VUJ;FYX-Y?ndOKmmm`ot}kDA_cZqBUS~cg~6hLiMY84Yi-Bel<7@s z2&Y~Kl5`~Iz0+>@uzoH_sLpB2;Fm2D`@9p@R!p+a*zmFjTI^a$)xn{K-Ae5wkN-Gk zcb|-Wzk7UujQB176PV#;h6vHg!%9jSW{AmFtA_$0`K$i@uL#pRE~6by@?~+*3){wi zGry4WD{&`m905OP8Muo1#VG2l1f51HwMXs?S@FgDy7pS}KEC?bhHLzwqV%ygN(bos zdl69Z(QnC34M6(n59S+!*~XrCk6-PcE^xzIxaSCcn3M%*HxEQ)kbZMgNusG4+1C$G zYE4z6ylLFFk1AFk$(DPD6tmGK)AL2(knND%CAt zZ|MnI)i}%Iju~YY+Q8p9WlH-`f9+Uf#)Aj$_n#{EsBXhwx6XJzv2&JMN+3V=uaL-_ zy~BjFe92+*e03?%-5udO|EmS=G;oL{C?ytsql9oNlp}ej;ozY;#H(p?RMMavuSpiIdJtC_!Up(Q%&+cP{w^q zZ-DfYlFoA#KddAX50WgrDM?@mcL%0RKt(<^oOyuqZ0^)9Cv$A-iRdPOA63$$qnqD)y`74WInlsPZIhp;HJDa~jSyJ3Z-QCoFX8B5oOS4r z3}r_9@Xc3`zA|GOEyPz}fAdYF?MCK(?9HRW&clswpKN};2~8jVH_W)D_366JC2DPL zd#`rks$R@0&cw>rx>77k-VV3zRF_647`t9}uA*~jaaME8#y_ZUHuMg_HgzzglSwO5 zi?AFa=JzneP|`R_OHAo&P$aN%o1EN^6VnK{o9Hk&jLtRV)CKDSa{mxV16_x57D~`l zJaP9C_wXlZ)taMegRFQ`8S^LG=u$VjENfJ1-Nr4Z)CO~0Fy!r5t@L?3kqa}eIHh-TFss^yQ{`^^IvjLS6985k*I z)i36(X|gSJO`aFY`)Eq>W$}Qc}X&u5w;*D%wFZ_7EZTS?a?JP3^ zz#Va{J2S^n+$3N6~QwzWeY-P4%vr1 zy!+HGC@vN04u%dw!?d!D%z%ia)do;1qcy5EjVb(`lwk7Vie-SzR}s@OAX)=)9%p^3 zTAU!Gz>9SrAy9+)czk1p8rBKYv?NQZPT47(GLBGGrdoW8x67y5FnN_4q-@ z7UT8f;x!SY+=jRWiZff)2cc{^bK=JrPR!WQ6Xo{uh^vQL?H+$u@R>}xJqbJZ7G+wJ z-+?SX*Qy9#lsl1US0?&7GP!*(*?|4CmoR1j;f|q3?}}1A4YjfP=+Re?|3iKKuh;)29rj~n8ak0K7`G_JPL)SVF&}Ta~J?|O+1}DY`fi7YwMND`dUS;xn`TbHQPKv z9nHZ6>+*%EIuYOdJ?M=I%;sY@-l%%@;AF4bC>#gFB3Z(nI zJ|v-o@@qIAy<*~z5*!BE(WcTV&EpFy5{epfI6ldQKjv>!8gdwO9lo~S){A-BQ77H! zr$6i-chtd&lJX<_s=9jue^=G+(LVg#Q~U7G;qJk!6SaGIsG#}r?$PN%=L84&;o$V8 zI_|vKJ>FNRT^JJvvV&5pCrlTC9S>jv2Qa)HKy{zv7_U0VdoSV1?z4l#gVP`ByU!0! zk2)tOsGUAiM_twVzH@Y{PF~VLFsEl7b;x$n=iOr*WcTPtb@IBicd&cdgc%=q_DHOyzj00`d{_d;Y7dVAu>MDQIl3wnfo^;`Z$BH>@T)^|=?kjcJJ;6Dv zvy%>dWA}6yd&9QDWKWvVuLE0pj1%5HqABfBMHX3;q&8yF4z+&>3>;Oh3P z!p*+@dPD791v50}o}{xdO!@h7IJl1Ef!d2wkUIBv)who}9)HE}zQdYbe~pqp!rD`Q z<|f0JH|snXxYzehHY_AXgZ5R`KKf1w694E;+gDGWm*H$SiSZFU8yW*i9d{UZtx+MR zd3}xWOAiF@9y+M^u=+~_S{=OVG`1_~ogVcuK2~G69!k*DaFBZ!0$#+cmVZHMvCU)t zUV1Zyf7IHV{WHn;webUiXSd$2fVlCNuM9OwaI%q}T4Hxkm-lz!)a9 zBla-6#&*Sy6dn@I`8_K3+o=3f zS@AbKoo-iFuww*2)2Z4~xg%J)zCz_dJ)Jfb^k2y|fG*Il^^}V4LhBWb(UK>@IOIMn z19B>Go;TI2{lf;fU$GBitU87fs-KbPn zTtMP4KFGkF`D{Vc9Ng)~pDOpm$sih5%q>g$lB})g-TGPBk7tAIBB*Yc&WAalB+=yr zRgoBOMTt8A7O*x=3SX+^@2|i#M->*|?N4q$JqPM#&RMV^>bve`P$nL@jJ~;TKD5EZ z<`;^lQB@Z#t?{!)&0M0)T^X}EI6W*CQgA(Iah%d0@NEZ)(PJ2XKGlbdYq3wASp!GW zJMNvF?d<{2fh`MY2MnVB#unzIJ}Aw?OLl^)SLtbsXhaL(Vv4?ce2^=$dVtNQ*%N36 zfH;NUrt?&{b6?_S_hjdr!u-*WZ1c+QnJMK~c6QWx1H92`XJ6Xp(9@3cdgsws_KC%1 zb|>H&SBjwhc25b8CApH#r*D`o)Cc4MPUbXWshq@)vI45^)CjEEpH`Kd6#m#RCS#`|B&_m z?7!T54I6ZD^!@JP!T#>?3qtEMSA9))u%s7kkl7T~?d=_Rc2Cu>@Y@f^-J`=F>DSJi zJ>Zx(9&c=DK=Q``&5>Kfk7W&P|$Xvq6*1Om#1y2+WYe*psjoPg>!}u#b*7dcyAXG?`feSZm2M6>4a9gl3+nQDSoV5UcqN%v~si8Ye7xci= z$%s#>F(d9dA{x$ali8#PFdCL3qyF%_236^`>>whAK@5Ma%ibg4WLVV0FS2_7E4=n*XD ze)Vw}Lc)AH^RjoNbOb9szAo8~O!1edVF?w?{xZE1+~^X(i}|p*99I>^A7EtomuOl1 zp$%PO58>Z!{+q8fe`!0zR=RV=kzl?&!%euu@OS3A-M(NMq+rn&|KlQvt2fLPEnyA6 zXIm|^c#V@(I-X`Z0WJSgFIha@tK*QPTgY1$ku@gX5^~N(+c3Qz26b@tj4O1@MMWWQ zTRa?6C26f@9Y=!%6XB1wE#D!b7I`J;M@?l3C?l@9r{#RP;eYSZ?%js0JecEZvS{!Y zl`Rb5p)B-GOT=m|<*{8tvbEest2hCK{bfoCYHS1XE=a zZU>!(JZ3gHD{eb7Hm;DHez}9aQSin4C6M)l_NPu_wN*REIo505WQl@N~!F7!zzhNHOiphNiQ1_>(F5c-p4Brp=c&i^ z>y{MGW!qqGh&ugX#1A7XSlXL6Z|Kw5!|ayy;lD{lxQ#2IJT*cYVYYYX3VbNaF$W9T z@Vl}INEIlUaGfb75mn4~!_-ggbDL{uEGZD`F__5cdk{6$i-HgeVB9_#4($i}+%yP#^WfVgBl1~daLD3?`# zM8TFA@i7W0uxnyTja=F<)Hk$~ln#e=FGOPh5zb~6%pVB3L%hY_}kFHEm%PBK@QMpP7G_M?5CpB*f|2x(XyGqE2qYQtg`e9VMV)gRyo&;5_QLrBKv^|ImBnoPr$)-*Wsp%{_dvY%<$2<^nxBNhrSD#z*?e*Rh{_r}R#a zO&_;+f=_pHb8PsVVbt+nzb{cA2=JHzydpiT%hwz2A1;+utQW!MWpJ5!T3fC4FLxlwNPn{ zFB~~RzD~n9>fF|*^H7XX_8T~{FHyuR8Q(W^X$UNsk)B17y5JLXgEP7h?wC!bcSJvR zjuv@J`E&yKAd4klp z-+9w}wfp)tmXtX;_^(beOh@CKiRGxvmh6Jd^W~SWw?KheBo)~Or{?rCVwN);Hq&H5 znlrTcu#*Tko`KjhRZ>E^tn9|$wkfuywnW2RvRkF$HUB1~8~cP#UW&3|afCFZ_Hf|n z8+5kH*^PvLv-28xk~mBYb36EejhC#mS=QuTDK%?*h@Oc4+O5r45tuWd3j{c78n%A< z+*igPxTN0CD*F~*5BS}sFr;uOwsfscXW<8}Iuf@0yHdEwGq%jU@-Z@4YfGqu?uElZ z(ZlF!bCYh60Hp#3{Fk7-V<2UvQ1DA9tf*- z4=*a*N^d;4skl({7hY7M0zL}_i%8=uy#LbP-2as#6oNcCy<3wV$|=h&TZ?F0?_;JJ zsk+<~Jc^4iBnN5YFT@Uf(OyePEJ2)ro(Q+@lfMxbEfn7bk6;&F2G~R8cbtXj&wPejU&D>;dhNRv`$y#WD^e**M=1}S!*WIr#wu*kPQPfhy zA!!Y2f z@NvKI2_alk1jm!Yz615eXwWvwtP%fQ6Rrm;O4V7_3XVtaO6bR=;i7hNIQFN{LL-= zs@|ukDsQ6CkzRXEbvHP74Ca&!_!bHfWm66z#M@;b&9^Lc6If;$y!Ga;5ZcUboSnX~ ztCaNwO9v*%x&vXs<$Q<#>QyXQ1bs5s%$q=d@(duQS3;|&vf#FDxTONcqq{Kf^V=4- zXkED(7oQJK^r@bxMUhDuzIV}-MiC_8o^(2Y@9mu(FQM_TSNnpk!}nMKKFy&qcTQRx zE~He%w0d2W#Z=4F&VO&-znqZTQ^<>OqVZ1%?fD?tGy2R5Sj_@{5i) z!y$Z*40)4#vT0gNQ>W=?w>H;`*Qz~TQJ8xn2|Y;3Ae(E-4G{Xn zXaoS!bgHH?z$|6L2{5LgEC=)~q)2dj?(m(!q|f`nVT35{P+6SJcO<0_rH`oTC>$!! zBZ+tvZy;qRB4g=rD79=^o-9ydWKKEfWDM)DLU93CXkRiT$o?3H-&=D5#50Sm36vD+ z3EAV-v7p=t_A!iS6S4g?PRM(eY|-!sbmphq8mckR5nhu_V+R?)`r(a_4jypxrBHw{ zY-G%~h&@gs^pduiz)@4Vli6g%;LV6QI0n4UCL`(IEr?&4!?BR>&%A^UupaMa+}myJ zn}=VvR8?bws=XjfH1|KOikUzE%jUzXN@T`i1%2W!@Kf-nlvP^E z`cS++?w)q{x`$M{!W<#0deE7{8Z_CcxWWj{b2Jd<43Q4ViT0HQI9LRjYwK8Cxt+Kr z_^t3EyC2fD7;8{6*c#>> z0mdKGL7<&?a0a@Aen1sWwAEeqPv;k+YCT>7DeNJ0mjXV#fNQFk8cBjZ!gCT7N)DhC ziKV3&PUuEHs4eBIO&Hw*~b{vbVdpJIAK{p6C+2Vm>kjEIlCLh z?2MF&G$fRYed7D|iU4;VNwlW;=n0NY$<(q}2C(bSJ%je}&0hMUoqp&gVc%<35L%(f zcQCC*|BgqegJmbNP%+vpED(&pW7=$kTMecX6nh&qudq1-|8d#i#gwm@^tm&2=4NT1 z<6N-xathBn1Qq)*qU@q@-jVU83&|6ZhBP;{}CbKl^&qu(hypP!X zgdwL%3}#;!Bjm(|K}t{*r#1mMb#uHD0bT%b*5oJSH#l;9kmt{jk$gFbmi&YesF;1j z`}0L&1XtsO#_Fs(kLl`evqz~umy1!$9_6h_v($6swEOqYk(?5sE4Pk<5wa5I9dDG?uK?422Gp&KNQaH@~A&Z4A zYo4`XwO;g$StT(G@e}KNV0xj*tp`JYkB46Y_E7&1e>t-)8=n7%?wfJwkgw*?anF|l z*~B92MNSeJBbP{;1?8R29J8MmU40(au5`00Ec#*%BDcvZ4AlaSp(^7!Z$@!2SfDN} zWf^rx+y|>FbX<&XG|RUb)=lI=ER`0xq+G^rR=&pwLqwqhxHrfISIuurHIC zF*un8HWGgImTEl+F3yB8TYW;YvG|1$Dqpdn?TmPvne)2hL~ocG0~vZ-^;}c}!b`$g zNqJS~L~%Q=kZsqQNaaf{bhfrB&W-=2b-$GCz}69+^&F&$n8az*bKGZX_X6%7msdHLNi7g2mVwas;~pZ0CGQEM9TWpRO@ncM1tE606@r|r5w`I(uLYBOmqZS^3;UO;8!XNsbp&j4e9EY*U@vdSTEn-?F4$HIq z6t2Qs#Q$L?wu~;bMHT}=Bx?)q^`A)@|IPW|m;?U(62RS-|LxJE$C>xQLuM*oULZJXbI`|Y2J z+Wt(`_GhBD{}qYaey>bz;xq2}-Pznp?D$&j{@PTz(2VV624nZ&jF0>+J-HU!?==q@ zZSh2kqF%CVS++5MaJ$ewKbx+qHJ6#o4FwuV_Kbr)Q(>;ulPp zdPdPbpL$u@vOA%6{D>ka1(R*sqNY{XbKRt1vd8WV!8~XX}FM z67AgieyV)-WpvUptf<>u(w)~s%+~-S7-}B+qEO(*l5XLvhdt8X;2e57dZJK`wvvNn z3$-|OeZl(%rAE*(6%V}ciC`=KRNgB*WAA}=*v_`gq>78-mi4c60;_z=IDK%Xa|TI! zY6aqv8*5TB2ay5`?mJ}!z{~!ikHb20bguCrbenr^wRMR@jfz%_QOuvcR--5Fm$*49 z+mqFQ=yd5n^i1ELdQhf*hV+OVXBC!>BjC_W2A?gno7&=rJLlfOI7O?me4vpB22oSdY#iHe-#Q#F{(dj} zeR5r4G{m*;)J2He6;yD}$Kjx@&8cPhnugL~%eKRg&3CJ46 zq;4l!aLL8owjny1Sw>d}Qd5BO4d_dX8evRzz%~Cw`|jHFq+&L?_lbHPYnM&p`Q?@L zgvnFw!ueFHg%0J23$*Sfw=>TyUEyXIbG=$CcFRq_qErbc)hqn!uvQx$)cqE&?y87) zOH$app7mK>F`kS32FYR(%g1l|zT^5O@WSWo2o{IotdyFY@o?rn>(oepE=BV_D;yp& zpeou26Wx373M~m&+OG_eBM&G}TYA*Rc7~N(xeJ{o%5^RySam_rs+#*u%zF%(Pj@(7 ze(%}Ya}F+RsZH{wA)}7pmjC9}qCMZs|CG&e>U|B4L$VG~44oLlca-ybTbsw7h%#a> zO=JH(S*VR69;W}ibKHCO<7wxl_x!li(I3&ANrw6fq@V*-{eeHQ!*whoZI$92Y$dbJ zM@cW5kh3km!@;7-a45k6Ni6XnS)*q8+z(kR6uz;EWPj+M9qvCn?C$-&k(s~og|>|k zx&_YA2VLtPSJVd)b)&$!&con^T~UE|+&Sr-YItKbFaUbRSf0r9rti8Zm;UA1DQY73 zyFVN`hm>!a$yX)5(d?ObNg-nx3egg|0(X?Ey~oyF&)GtWTO=2}a13lY<&C0XkAc(# z)YQrGT=w9>`dJn(cB8=iDZAEBOWbdhU0g>!`&lQ|`NMaN-HR0f;@s%T-I6Gw??y?} z5IEe%JIP?FIjIL(0nRq`a9~NZO+DT%SH$bV1AF|7NA~K)nJ+6kOKG7%(Nqs9{TdUY z+i9YJaxMYc9Yw%pWI)b!YLHKc2z{B^3OG@ZmC3&^pkzDdpnO{8ka^RTrMx_1GPui= zTYd7|%1-8!%RIU47Us6{7Q#Euw+WfiU_>{mN||=6AeeDFzH;w1zz45Ek|75f-Ws?S zu`8s>O4(sNbH{IyT+obVHBdQ$z)iqncxfX_PTfYX#7Q#d9r=Ca?Rg_%P7x)<*l;;` zoT(!Qz*CCb$BT1v@S^vsyWi=Zz24tF?c6FB5HAi$URR#}5YD3E4T+I}Tggq!N;B*K z9#P?7n8Da2iW4et=Dfpn$ydxbJCjth5ev0sr;H{U;R1I(#M_fsZWx4*BK@zwI#Nb? zC!SY9I-FB6f+2ZxJ`ZraP~4FBS@}XU>bJ=ocVXe>Q_J)46cIWKgAZYzfw%Mil;z0< zsJ~N&e>I0Z3t5e&k||={-~*s5tZUAi40t6<3|md!{^$5|C5eY=bzN=n`3DThe6JQUT)PAcETjwJBWdmr97obWyK96eMu z46j)1_N#;54vr2^w+kd?=O!Z7>S1bN&O2nrX)1RD=q#4`uAp)}^eM10&Jx}=4epgj zb&L51^f9Ti^I5<_0B{%KYVi~s+l8!#Lp@f^(hZ~GzV)ta=H2hXfp~7xS&a;D%T|Tr z>68`(IFxO2V^x(2GWJy6+XT8zXYmvxHDdA7q5f#*pRr#wOLr12CILIwMBGvbXh*b#td1{5)VpkE11r~f5te5`4@Aub?sdiAG+PW ztdKs%axMQ_EMp)k7$E0JBZFid2o`nxR9UvKFTu)@ELs6e2>uY7VE{xxyT4gx-r2UF z7OSxqvo56cEVG~&av9Xa(;MNF)X$-~9P4qLw&>rX|JjvNT*J{kxq_R}b|T??0cKGN z%M$g3e`)MUe`M}}i!1z&?12n;2mZhVV_W2+*f>{UpUcx5X_%cAPuyx5-C7qMwcuEl zFj^I5#aWz&;x|X>xoFTP2Gq`HsKt^|Sf;!f!F-#N3k4-qU95t^8TG8=dH)K3UWX)T zif0kV%64fuQf(&E51l1uTw{x$i<-;fsr0@%2{_7Zjd+#q^W7J_2Sg@mLS@*PTkmt`1Uied@=8ejI1N0@m8rHm$ zp8-s~dv*+{pmg>}-ILdQ#nV4|y}Q>b?WirW<)+wMY_W@tv5T#-1z*nDTP?a+guk+E zxw(49dAD46C^d2}uyU4IJ{H(NOFf_^Ma@!HP}6v6Q|Pj`(9bZ2W~`xE%B`omlu>jE ztEfSPR(ZXQd9=trT3{gkA`uguYZ)c)R68N}@og4UhDTc`d`X^OgRRHWTh&}Ex6Ky& zW6G+C3Kjw+N6D2bFGm~R#P`F9ixOXH9Nul8v@@nhQgAIG1kw}80d1+x;7{~`@qQUT zzqga8UzJ;M_3tCEtgIACEZ)kK-y*FDKemLpq77ylc|{NK`2tI3ggZzqr9GDsSqiOg zOUNv_{=ZpZaWY|D!Tmx70fnU?a0(o=M!be@$MJ{^#@0v*o4ICkCjq|4{7BAQglsL; z;sBftfeT}|u`7Cn&eBJZpFDojE>^4~Ey9dh@Nh}1t?O}6=&ZDebS|t6wpfP4^bm6* zSa~_FZ#~m{nx?JsP%Pn@rzDD&D{jlRQAYcnQzJc~F)c0Vn`j<-k;&sxqy@@ofZ*gz zY7B|BF(ZBE=AkS6T{iDSFq((OTZb|+6J+5Axb3!6bGXzGq~BDFw=c7CO9RE`<6GCY z`M3xu=;{AOph$i{pjcw_ih#o1Iv*&Ke=krlH)mC{<*QpM(%#}vF72}*4v_P<_EJgU zDr%J@tYA!^j1t_g$VpLnkH=jp-4FMU_SqQ{U=QSF5M=8#sAz{w@@^%Wh8Pz^3(2jD zS-2NKZRSJT*TEcg=P}&e3h67VRE^(s0sdZr=75~ zkh~S6B_iAk_X0Z5x zGGF1bvcw)Dap-dmsXNoGrBHvN`)9*eu3B=p7#}PmWbU?c>m@hN7}%v#ww9MXhh74x zBOP;FSsq9~Z-b?{#v-y}vC4w&<|UX}{04?Xql5yuEw;Ygk;>wVuNp<(mnAq!U47P- zH(19(I!NMAF(D(8d48VB=yzvS^gCUsGCZ_2q8Z#O9;_5s!ChG?Vi51lN$Yvw>`ndI zrS`@;O)Ym0_82l8&p+>Th8ZsM^ZH}ue;Y)}lrmxV{}uV)9&daNFEjby9&JAQGymJa zDF2&1Zpr|6u--L~fM@+Pr`w-7-Tut!_GeDFY)-f2CRxYI6O`6X@=xUbvCR`wTql@+ z49j*=brPVsQXXWxqMuVWn4jn2JXCA5>mL2qL*vQ~wBZ~G-DiJ;{qF$~cK56cxGvb4 zn?keLwS2)~*8w^r`2+H^;z9XcgL9WvbSAGJEk#NP)eDxlMn9XJ8l}D_EgL$+7qMss z-Qe46KZ`0WodsBykzDsfuFx@pj}yD=RG_8ss-NL+{-oMgKhytq)X%M_)@p>j)z4UD zj;kH*?C8Qr4)48|AOq)CpF!?e~Vuc^N z8>2TMU#qw>pZtr?f8}-n`2Eh``f-Um(AhBl&G*le@Az-IM&Qq4d_y?erv&?wYW8Op z3=!8MVZFzOU@wD|160{fm&!-H+m>F>J;WebNpm@ zCIE4&E;x(lDHg>_O+qq`-$gt^JeOqFMLW6#>L8P4j0r^{!bEH0$}poF$^Qh1;5xWTXml~^ zQ^+*M455ax$R!z6XWSSe`0i5mB!y5P5R)1Omk)UC><{beu1lxm?32LUB^ zB#xu0>JBIJ4`kRmAb^H*t`#L@q5Xl~w|is4^R9ytLez|sIMGFoIZ8SqOx(mn16f7i zZrFRSEH~r$x+I)^h_F}*)^_9UWGcFx5VWT{(vENw3}BQPhM#J4Ff_iCC_DaR2mj6D zE_$(}=m5M-2Rf61G_dt@8PV1^7^jIVBAU=(mgKt$5Pl&p4UxTj>^y{d6?JJoUcI%m z6{RnvX_YuvTfWUCek2|MrOJuMV6w$rk75jRJ0foOX1JKNuBO`2i=LatwUU~pn` zHBSjA4zS2&{US)BK6wjcA_Vl=;SNMj@RTsO&P05e8}=-8MhG}eDX@46BE7DL=;^3! z!Dh#S##L1F4&r3VpZPk1p=kF1z>KyI}8Kr|}tF`XoaH;pL5nTwaHqR>o1Ud`oQ`;Xb|Xu#Q_5DI0o8MQsd| z5Ju#NctvL|DKhFHy8>r{-1&rKqfHIzM1^U;p~(N-Ukb1;p>RrkiKrt`^AaXt5KHYt zbZC_O=0XDp4Ik@t&oDXU{ltEuSs`ITV5}gyne>6WOt2;rafuV66(y0tM))uY?UuYQ zM1<>W2zbLmBj31D(3tjRnbz+7_!}ZiBIA6gz6@xe*B8D!UDWqh16P(40Rc?MB@YKC zEE$B$;Xqpy;fOPo8p%eWw4OxBq0|HeM&0-*QkmcidkRyKh49W%BGrjzKt>#pVG3*| za16N6saZ8DizZPT1tSbSCO$(w3;V&GNrTBe!q@P~s8J6HofLQBn`?;f6XwiQai$VhN9H^BZ>Y`556>iV$aI>@zu zf}X5bOU=vQQr{=mU0dG5y3~}e#39#s78js~Ww-D*O;zZ@Zkh&Cr`eIL#V+75_pVTe zuc)(#WTy6wUv$}(xEvvpx={BRfj!VoG&;YSN28PlNt^ohB2KTMspd$SUlaibQuNsalV37Q6BN5YKhLUdn zSf;zp5Mp2|FAMi!I%!x(g>>)oV$|!WAKTnwd^xk;OT$6apkMnmE37(i0CvnD-r!n- z5S5)Ta5u_ER^xm#%x|B~r5(_Lm>kE!l4#TS*rbbMqYIrUt{fFq%id7h5Rrb}ei5CQQu zUIOll@*~yjmI5D?z;bpqwm-c?g@Q&VFiOWGJn2PS94l!#42sbCIhI2hi}Q3W0wVJbXg9rDBvuylC|5pvQDR$o&iN4V4za<8rEtsy zhc}h$I}>U@(7Ey2Fhrt-dUoR)mf}f)nSLR)k>9U~xRqg`? zcToePqd3r9DY2-YNd-v8J=cWhVBbC_e;irFTOx$oRFr$@Np^_NNi2-op#~u;IO?vf zYV31)g%cWf90(`@n(5W;vP1z1(5|AMK^0xQ);NOG^M*%PDXaz8>&N3Mny`_P%7a(- z5}WXlw3HGRj+`A>6qq`xUD0$GDS|UjU}}vYWI+tmlOh0a+uLR=m)ye=jNFioqOd7x z5zWi%yuIlE#;v;;=d5Yg0sG$mSKo7t(%Pdh6?` z|K7Kbo9efZCAX+e-1>5-S1r@z8%9zy4^t*aq5_}8t& zM9wS)kd+k>go>hhCZTixOP8n8&y4PoOd0oNlEB^FvmiiTK&B>S1~e>H%e=5~=Wb*n zaVYDVCt{foS-4&)1`!_M)-R~ckVOeLmYKOrJWFP})L{N39K(QZg1;4G&4oakIr?H0 z??YP_*sfzCpT&3`q?`nkxPbKAR3Ab1#ozGPkD`tk2OlM975^eLoculrlm2!kOD}*i z2f&Vtt%OmGat(;J@I%y_cO@a|c&dt6FQY5DcOB!6fPahS9PO68EYVpSAza5eh3EUd z|LPof;VeIDx2fl7oNT%!B+2n=o|1<^_;DJMfl>-FCb75%Sc{+#$&AMq?R1H|*2)U| zbG6eCaK4yY5$*2$hyQl&y`IZ^{HpDtU?XWa`7bPe!M-X^6X1v4HV+=SLt>>q{TBaj z-g9o|_=n>UOuQFNpI11XRS)soMT5Mk7A3H?oDy8-U( zTAA(Oc5}bs+-vFXjMLnv)N>wwxuZ5Y-f7#uffucoSIUZfrcjj=p?ze?%2xv$z-yrM z2Hwt5FuNpGZ7{KQtmt7Pdy|AC0K<9%M|9jx(T8}Nwz<=Bh_O0-;~(jKD8OqTjpt)> zN}Hf}s`gWnO^wkYJA>OlAZZ&U?biP5BluB24u@On+5A%7f3*3yVLeyu-al3K#~UE; z(mxL$@!`8i=t@)`7DRUqRT_olc@xb=5Cv0F%i%**|Qw<4v?88mZhl&Rz!>@ zU#BfEA<_p_f4bJ4Ypr=8H#g6qU#GPEMPhcNG|9PC#Z0vd!}w>311`u#lIhW69P&f5 ze_l6?2RCq;G5!zP%-EOcF;_oTx#c2B^c}IFD(&IRpg<}`VRdbuGU~v<8zqiixv8v$ z!7#|ImJH=PAQWngMw7J9X>BypXV=b3Bsr4O7S|IPfQEuVlC2{H7V*S^uv{h6#c z5F6=R3%hmFIpwZR#XBg;Byg~&crln|VL~WGPxHKZMrd*#gh2Xm6C__K2%<@D`dW9o z^!&A6^9~ERzQY1Uxjl_x)1gB^drw+i@}-{Lzyefd#YOVO2)KxypUh@EAjni!uCI5l z@#n{nJ0G{5(PQLpa5sp5!1M!*uW(9VqF>B|8O|O42P_B@HWS-I9kAZ9GBiO?4po3O z!4*Hy;ej6@rG4{$fJ-kh&dCxL{VrG#y`tZ|c_ZcoR7_K)jBDiLuJJeAJ7S8KT0^S- zq8`BI*itt3;h*7={R3JF;)~#7bfc@CT;O#?`2bIP7ERN5h8Ov{rJ8J^!GcJHD}UfD zZkXn9Kz2mOTuEAbeMi~g*>qwisQ);)!O#V4xXaeUW^io**J%r*xJYs`mc5lMnqJ8u zY9xsp4!5%5Uom~DZ$*TkjR~<|F*f8vcP`M&2l7`p-7sA);>#FmCigEmbw6$BGfXjP zAXa@bXjhx`K=OY&&i;AkKZ>`lr=zPM%{<=mUW%F48K0sAw*98ARP01PQeFf)-w*a9 zC>EK*w6;E=hs6h`<=b;vzb|gu6aRw`sy>}&XvgYdaWd3k|CMcaZmXghswe)t<%Oy_V zt5&^HoZb6mesdwL%Y5V)qmSx~1pcqR=9cWFYhyF#fKbt}`>m@3F+|YLAP;2|iD+XB z%;Ybs3jenS)62aB@g;K{wj{F)3>oG92S;he`CC`qi%qs_|6<#0zKAmOz?)ZcBWBH8 zUCcZkrqP{l)_&)XVt^5ch>HgIjb`Os&Z(nRjKS-0X!E!#1UY zZbbYHCjDfxYyUn}VF?y=Ngnj`na~n0bmfjzBf}f;DbN-YG4b<~6J#$s3Dz?$Hav10 z@647tSN(kt%sdFrb}hbOx*oV$%Th~WW|D0SajE^bRNy1N+C56C84YqZBj!^5eL9{t zU9hoJDiR_sH8;8~<5&;Orz8>(t(X+`=9)KTOAk^bhL(wex66GnV;@p+6adzP6Q9pv zK&pEqFj}P%ZkPD%Vi(DMO9*<-jCEQ1!Z}~(<}5yI**PyzVbggU9k_%rUIV+LPty8B zN&zC2y(Te{N5C57!Ndv|JYca0!y%7-?*!fv;oc?qo{yMw9j8HI@xN3`$~Ll6TXsWW>;r2_ z^l6Fd5f>-OM#4~<*^A{PeaT4RExmXz<#uximxvWR*%q|)aC7M=y-~1b{)?nPggwzi zlu>c7zr%32fSutpN<4-OVaQDhdiTlQ%DFh~p+8}#M2A})y%$aDChKgD{nwLSDe)3m zS&_o(nX}3*rFe&&8CIMv{k#*;!c5u8`lMMD=j;#K`FS1z{vjPoyv5IyCU^`H{O}nN z6n3M+c=Jp|89x3H$AdVwk*t!zL*K>)*QjXP3_1DB@u^aNk$g-2k{`luWxiG3__=wA zxif!cOB~o;li(v1YALon<}&9eGVoqdc54TfdH3vSf5Dz#{?qr|s4f0&`+a$r{l5IY z_S+3%9iT-mzR|8s`jSx6l@${PgpS$JFdV3Zt~%$Y?_7on_0m~q&M2mICyc-qhNWt= zosM#{u^<>;Ei<7w)}z?Tq<{$@aHuOR(BU!^;;^c%Ys4hMbadFNAUxaNM3+b-UYdRz z@o4=k%=4!+4Wflo=bvb|+p!7uk7!Ec;0A3$v>@0WToZ1?e1ay3dBQ;^#qe!+J_p^N z&W+O$l3FgBgbVzw1>rZXKec_bhI?oI)_yyLFYUzp8+~+(owQ47ijH%02|Z_NhV5Y9 zfOi7@iCvdnKg*SEQykG&F6VO3?AKl2-ct6}b}n%8U0Jz{OR%Y7>$zwy4hhV8CEp!o z3y-JMj4jSjkjrNbsH;aX6iojeq|clCQuNR7(QvbU4BL8nEd(2`J7d{N1VoF=Q!rke0uOzjsG1P}H--@0r>F~0w5KVA zFk|1E9tS^LrqErAgU)R+^5))vNSKOY!6;hRuWbsLhF2`?uBIbw7##=e6>}$mM$l|R zC=LAE0^jO=4f0}TPCO#NM7vr^#x;Zv0_7ELbOGOtz2G!KcUYW?mdo<^!Z_pFOF|h4 zu=y-Xqbkj#r2OG)KiRXeDzFJ%HP)K~iWhI@_`nc2&eSf)uzHuE7{g$L8`0|o-G(8( zDEkv;(P|{uS}U~IP%J%#JltR?gzB&o6C{;G;Z-(lv7T`$1!uFST&`SSo<`Qb)A8L9 zP*$LLKVjc$L~n{JtE#?29<;L6}$Foz8*ph>pC0joCGm5z}TgA@YYcs?=;^9+kHo zmK|(#-61Cv8@<~4^MF>(qFb$AEw=g{**K_nsC5S?q=kW33D=jR@Vj+7QLN-B)S_(K zI{|E(-pfWQi-xHn0&1#v@$fvGsxxR5tYNW}j- zzUTGDy1JkfZm5w~)&MO*K_;*$aRnw6AAC&+{$r%7eqL}!4{cOQ1<<0u9{kuva(?{k{~mDOq0-zB zkKP=-IePb_8*NsxhsL>;f|r8371%D@_)Erb5Vj7fq0X!)CD+2huBM9miZ-I^zgTgb z(=l-4oKpZCLCKC)%bqfz>M%X+f}2v8@!FCLhYDEIN?UsUIVG<)k6_7f3$4C(qPmXM|2n1!?x-S9&-JoUf1Svu8fLp9VH3l;nj4%s7_C)9zr11)u2mD~ zwhhDSB6!^IM-B6H*X7?U3ad4&U$_s$-@;qnVE1Q*BA`e)1Gks?;df!wy9 z83j#K79^j)TGqK~E(;YV8@ejz6zhwZ6EwW|eyV^$6z zWF8g>Q{H%(PN;H(sl}S>0Cu6;*MM$yxiTwRw-gP?N{Ftt2Ng_COAx(J+V3pliheo6`l6MeM{5?OO51#QeneS!9y-EV+%DI)~LYrhCn8 z(!l0AistcU=5w|EwJa5~!v2!GiXig-@Zg8H2QN+z_M0ezcs_a8GaMq!2T5tu+O1kt zEm>fq=*AGi*^>Vo3ui3ISph?nSZ$YDNos8hv8s`(DTN0Lz#$Re!%$im)F$%y9N*D8 zd;kp~OR$Gh-77#8t8U#_SK2rR-ly@qd&UynD4jKp()qr9ukrL!r#o~0)nJ@SiS)gt~=6j|@vx{Zjc|0kmR-KE~@8AE9Xh`$Ka#a=XL`FC> z#k{5elVoS!^x7Tg=A8RcHA4|J^=%Y&uiB>3QBUY_aE7^O&cr*MJO)Ul_Y28@I7T!q ztyz>PTHwOog)0VJPRsDUw+Mi#tj_$AVhEuqjlPLA2q?O9lsV4IBbaCzrth=N$Dmb|Gp3&Ep`Daqb<}`8WYblz2Lic;Z~baAxn3VoE?H z2rma+E(4&Z4{K^#O7=4m(uc(y-OIfu`xgtkq^_zMftRCa)!AOy_{x)MHo>eYR9EqV zBHpwUtTeue(;-|B<3&q8iLK)|!w{o@;AP(elb+Gi~so=d*+_MfBn3A};}$TCKHi0I2=nWSW^>&ih-(d>Sck1Q2YM zNBEN**3Wnw-10^QgQU?y`|dP$4F+L=E#RzC*ckFQAnKZq3p*fIJlGIarbWEyGR`7e ze?bE^XzrBmc=VwRPUDxMNw!;Gh^=3{g6 zXtxy`7s5<*DpNFb=0e=C9FH5_))-SMcW#Cm)gd0TfLEWhGRFBbhn%0v?+%9zcJ()A-$K{O&YO&(Z>;!LR5m^%X6fb2b6+ncC*Nr6?5BS^Old0w0GdaY_h=73F_Bm&TTR1)|NEj}3vh6iR z-qxxb=^#l2HV~F8yHr3K>);(oTXk9-Ft||E8tSuvJ^VzBa9_*KxD zn(;%ooZ0TC)JDF6rXwfuuI6Tthi9*%}w4iXhOtQFc^(7MdF-M zH_bI@G+Z#-!YG44bi8aEm{|x^H+je89znSV@+;$Uk#Z1dTA53fG~^h#b4pF5W@Lg) z8�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 z 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