From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dedi548.your-server.de (dedi548.your-server.de [85.10.215.148]) by sourceware.org (Postfix) with ESMTPS id 9EACA3858C50 for ; Wed, 23 Mar 2022 14:50:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9EACA3858C50 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embedded-brains.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embedded-brains.de Received: from sslproxy02.your-server.de ([78.47.166.47]) by dedi548.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92.3) (envelope-from ) id 1nX2JN-000FzA-0o; Wed, 23 Mar 2022 15:50:09 +0100 Received: from [82.100.198.138] (helo=mail.embedded-brains.de) by sslproxy02.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nX2JM-0005RZ-TB; Wed, 23 Mar 2022 15:50:08 +0100 Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id 92EEF4800CD; Wed, 23 Mar 2022 15:50:08 +0100 (CET) Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id vkj4uUUhRySC; Wed, 23 Mar 2022 15:50:07 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id B25834800BA; Wed, 23 Mar 2022 15:50:07 +0100 (CET) X-Virus-Scanned: amavisd-new at zimbra.eb.localhost Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id FHQy-LtmC3Fy; Wed, 23 Mar 2022 15:50:07 +0100 (CET) Received: from [10.10.171.14] (unknown [10.10.171.14]) by mail.embedded-brains.de (Postfix) with ESMTPSA id 650AF4800D2; Wed, 23 Mar 2022 15:50:07 +0100 (CET) Content-Type: multipart/mixed; boundary="------------UZINmi0jlSVPqn0un5mj6tb6" Message-ID: <76777016-d1d4-6e44-59f6-fbe3ff8249ac@embedded-brains.de> Date: Wed, 23 Mar 2022 15:50:06 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.6.2 Subject: Re: [PATCH] gcov-tool: Allow merging of empty profile lists Content-Language: en-US To: =?UTF-8?Q?Martin_Li=c5=a1ka?= , gcc-patches@gcc.gnu.org References: <20220323093404.13225-1-sebastian.huber@embedded-brains.de> <0b4c9c67-0810-4521-2cca-522dbed52bb8@suse.cz> From: Sebastian Huber In-Reply-To: <0b4c9c67-0810-4521-2cca-522dbed52bb8@suse.cz> X-Authenticated-Sender: smtp-embedded@poldinet.de X-Virus-Scanned: Clear (ClamAV 0.103.5/26490/Wed Mar 23 09:44:38 2022) X-Spam-Status: No, score=-9.1 required=5.0 tests=BAYES_00, BITCOIN_SPAM_02, BODY_8BITS, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LOTSOFHASH, NICE_REPLY_A, PDS_BTC_ID, SPF_HELO_NONE, SPF_PASS, TXREP, T_FILL_THIS_FORM_SHORT, T_SCC_BODY_TEXT_LINE, UPPERCASE_50_75 autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Mar 2022 14:50:14 -0000 This is a multi-part message in MIME format. --------------UZINmi0jlSVPqn0un5mj6tb6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hello Martin, On 23/03/2022 13:19, Martin Li=C5=A1ka wrote: > On 3/23/22 10:34, Sebastian Huber wrote: >=20 > Hello. >=20 > Thanks for the patch. Note we're in stage4, so the patch can eventually= go > in in the next stage1. ok, good. >=20 >> The gcov_profile_merge() already had code to deal with profile=20 >> information >> which had no counterpart to merge with.=C2=A0 For profile information = from=20 >> files >> with no associated counterpart, the profile information is simply used= =20 >> as is >> with the weighting transformation applied.=C2=A0 Make sure that=20 >> gcov_profile_merge() >> works with an empty target profile list.=C2=A0 Return the merged profi= le list. >=20 > Can you please provide a simple demo with a pair of profiles > where I'll see what changes? The background for this feature is that I would like to combine the gcov=20 information obtained from several test executables. Each test executable=20 will print something like this (log.txt): *** BEGIN OF GCOV INFO *** /home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/init.gcda YWRjZ1IzMEKtLjW3AAAAAQMAAADcaps855EX05p4KUUAAKEBOgAAAAEAAAAAAAAAAQAAAAAAA= AAB AAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA= AEA AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAA= QAA AAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAA= AAA AAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAwAAACXn3= k16 TDqmuIMwpAAAoQECAAAAAgAAAAAAAAAAAAABAwAAADzkvDcfSnvcuIMwpAAAoQH+////AAAAA= QMA AACnWNZaIM7GWZ9hiOIAAKEBBAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAwAAAPkGW3YHFUOO6= Old 2wAAoQECAAAAAQAAAAAAAAAAAAABAwAAAIvy4CE9FxuM6Old2wAAoQECAAAAAQAAAAAAAAAAA= AAB AwAAANyvBDZiERlQ6Old2wAAoQECAAAAAQAAAAAAAAAAAAABAwAAACKQjCp2pYlIuIMwpAAAo= QEC AAAAAQAAAAAAAAAAAAABAwAAAKSSXEjQFDluuIMwpAAAoQH+////AAAAAA=3D=3D ... *** END OF GCOV INFO *** The attached script reads the log file and creates the *.gcda files=20 using gcov-tool. Initially, the target files do not exist. >=20 >> >> gcc/ >> =C2=A0=C2=A0=C2=A0=C2=A0* gcov-tool.cc (gcov_profile_merge): Adjust re= turn type. >> =C2=A0=C2=A0=C2=A0=C2=A0(profile_merge): Allow merging of directories = which contain no=20 >> profile >> =C2=A0=C2=A0=C2=A0=C2=A0files. >> >> libgcc/ >> =C2=A0=C2=A0=C2=A0=C2=A0* libgcov-util.c (gcov_profile_merge): Return = the list of merged >> =C2=A0=C2=A0=C2=A0=C2=A0profiles.=C2=A0 Accept empty target and source= profile lists. >> --- >> =C2=A0 gcc/gcov-tool.cc=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 27 ++++++++++-= ---------------- >> =C2=A0 libgcc/libgcov-util.c | 15 +++++++++------ >> =C2=A0 2 files changed, 19 insertions(+), 23 deletions(-) >> >> diff --git a/gcc/gcov-tool.cc b/gcc/gcov-tool.cc >> index f4e42ae763c..2e4083a664d 100644 >> --- a/gcc/gcov-tool.cc >> +++ b/gcc/gcov-tool.cc >> @@ -40,7 +40,8 @@ see the files COPYING3 and COPYING.RUNTIME=20 >> respectively.=C2=A0 If not, see >> =C2=A0 #endif >> =C2=A0 #include >> -extern int gcov_profile_merge (struct gcov_info*, struct gcov_info*,=20 >> int, int); >> +extern struct gcov_info *gcov_profile_merge (struct gcov_info*, >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= struct gcov_info*, int, int); >> =C2=A0 extern int gcov_profile_overlap (struct gcov_info*, struct gcov= _info*); >> =C2=A0 extern int gcov_profile_normalize (struct gcov_info*, gcov_type= ); >> =C2=A0 extern int gcov_profile_scale (struct gcov_info*, float, int, i= nt); >> @@ -141,26 +142,18 @@ profile_merge (const char *d1, const char *d2,=20 >> const char *out, int w1, int w2) >> =C2=A0 { >> =C2=A0=C2=A0=C2=A0 struct gcov_info *d1_profile; >> =C2=A0=C2=A0=C2=A0 struct gcov_info *d2_profile; >> -=C2=A0 int ret; >> +=C2=A0 struct gcov_info *merged_profile; >> =C2=A0=C2=A0=C2=A0 d1_profile =3D gcov_read_profile_dir (d1, 0); >> -=C2=A0 if (!d1_profile) >> -=C2=A0=C2=A0=C2=A0 return 1; >> - >> -=C2=A0 if (d2) >> -=C2=A0=C2=A0=C2=A0 { >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 d2_profile =3D gcov_read_profile_dir (= d2, 0); >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!d2_profile) >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return 1; >> +=C2=A0 d2_profile =3D gcov_read_profile_dir (d2, 0); >=20 > Is it fine calling 'gcov_read_profile_dir (d2, 0)' without 'if (d2)'? Yes, the caller ensures that d1 and d2 are both provided: if (argc - optind !=3D 2) merge_usage (); return profile_merge (argv[optind], argv[optind+1], output_dir, w1, w2= ); Maybe we should provide a better error message, if the user doesn't=20 provide two directories instead of the general usage message. >=20 >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* The actual merge: we overwrite to d= 1_profile.=C2=A0 */ >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ret =3D gcov_profile_merge (d1_profile= , d2_profile, w1, w2); >> +=C2=A0 /* The actual merge: we overwrite to d1_profile.=C2=A0 */ >> +=C2=A0 merged_profile =3D gcov_profile_merge (d1_profile, d2_profile,= w1, w2); >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (ret) >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return ret; >> -=C2=A0=C2=A0=C2=A0 } >> - >> -=C2=A0 gcov_output_files (out, d1_profile); >> +=C2=A0 if (merged_profile) >> +=C2=A0=C2=A0=C2=A0 gcov_output_files (out, merged_profile); >> +=C2=A0 else if (verbose) >> +=C2=A0=C2=A0=C2=A0 fnotice (stdout, "no profile files were merged\n")= ; >> =C2=A0=C2=A0=C2=A0 return 0; >> =C2=A0 } >> diff --git a/libgcc/libgcov-util.c b/libgcc/libgcov-util.c >> index ba7fb924b53..e5496f4ade2 100644 >> --- a/libgcc/libgcov-util.c >> +++ b/libgcc/libgcov-util.c >> @@ -677,13 +677,13 @@ find_match_gcov_info (struct gcov_info **array,=20 >> int size, >> =C2=A0=C2=A0=C2=A0=C2=A0 Return 0 on success: without mismatch. >> =C2=A0=C2=A0=C2=A0=C2=A0 Reutrn 1 on error.=C2=A0 */ >=20 > Please adjust the function comment. Oh, yes. --=20 embedded brains GmbH Herr Sebastian HUBER Dornierstr. 4 82178 Puchheim Germany email: sebastian.huber@embedded-brains.de phone: +49-89-18 94 741 - 16 fax: +49-89-18 94 741 - 08 Registergericht: Amtsgericht M=C3=BCnchen Registernummer: HRB 157899 Vertretungsberechtigte Gesch=C3=A4ftsf=C3=BChrer: Peter Rasmussen, Thomas= D=C3=B6rfler Unsere Datenschutzerkl=C3=A4rung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/ --------------UZINmi0jlSVPqn0un5mj6tb6 Content-Type: text/x-python; charset=UTF-8; name="gcov.py" Content-Disposition: attachment; filename="gcov.py" Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZQoiIiIgUmVhZCBsb2cgZmlsZSBhbmQgY3JlYXRlICouZ2NkYSBmaWxlcy4gIiIi CgojIENvcHlyaWdodCAoQykgMjAyMiBlbWJlZGRlZCBicmFpbnMgR21iSCAoaHR0cDovL3d3 dy5lbWJlZGRlZC1icmFpbnMuZGUpCiMKIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIyBtb2RpZmljYXRpb24s IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK IyBhcmUgbWV0OgojIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgojIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0 CiMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluIHRoZQojICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiMKIyBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU T1JTICJBUyBJUyIKIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiMgSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UKIyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBP V05FUiBPUiBDT05UUklCVVRPUlMgQkUKIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCiMgQ09OU0VRVUVOVElB TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg T0YKIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgojIENPTlRSQUNU LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpCiMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKIyBQT1NTSUJJTElUWSBPRiBTVUNI IERBTUFHRS4KCmltcG9ydCBiYXNlNjQKaW1wb3J0IG9zIAppbXBvcnQgc3VicHJvY2Vzcwpp bXBvcnQgc3lzIAppbXBvcnQgdGVtcGZpbGUKCgpkZWYgX2xvbmdlc3RfY29tbW9uX3ByZWZp eChuYW1lcyk6CiAgICBuYW1lcyA9IHNvcnRlZChuYW1lcykKICAgIHRyeToKICAgICAgICBz aG9ydGVzdCA9IG5hbWVzWzBdCiAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgcmV0dXJu ICIiCiAgICBwcmVmaXggPSAiIgogICAgbG9uZ2VzdCA9IG5hbWVzWy0xXQogICAgZm9yIGlk eCwgY2hhciBpbiBlbnVtZXJhdGUoc2hvcnRlc3QpOgogICAgICAgIGlmIGxvbmdlc3RbaWR4 XSA9PSBjaGFyOgogICAgICAgICAgICBwcmVmaXggKz0gY2hhcgogICAgICAgIGVsc2U6CiAg ICAgICAgICAgIGJyZWFrCiAgICByZXR1cm4gcHJlZml4CgoKZ2Nvdl9pbmZvID0ge30KZm9y IG5hbWUgaW4gc3lzLmFyZ3ZbMTpdOgogICAgd2l0aCBvcGVuKG5hbWUsICJyIikgYXMgbG9n OgogICAgICAgIGFmdGVyID0gbG9nLnJlYWQoKS5zcGxpdCgiKioqIEJFR0lOIE9GIEdDT1Yg SU5GTyAqKioiKVsxXQogICAgICAgIGJlZm9yZSA9IGFmdGVyLnNwbGl0KCIqKiogRU5EIE9G IEdDT1YgSU5GTyAqKioiKVswXQogICAgICAgIGZvciBibG9jayBpbiBiZWZvcmUuc3BsaXQo IlxuXG4iKToKICAgICAgICAgICAgaWYgYmxvY2s6CiAgICAgICAgICAgICAgICBnY292X2Zp bGUsIGdjb3ZfZGF0YSA9IGJsb2NrLnNwbGl0KCJcbiIsIDEpCiAgICAgICAgICAgICAgICBn Y292X2luZm9bZ2Nvdl9maWxlXSA9IGJhc2U2NC5iNjRkZWNvZGUoZ2Nvdl9kYXRhKQpwcmVm aXggPSBfbG9uZ2VzdF9jb21tb25fcHJlZml4KGdjb3ZfaW5mby5rZXlzKCkpCndpdGggdGVt cGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wX2RpcjoKICAgIGZvciBnY292X2Zp bGUsIGdjb3ZfZGF0YSBpbiBnY292X2luZm8uaXRlbXMoKToKICAgICAgICBuYW1lID0gb3Mu cGF0aC5qb2luKHRtcF9kaXIsIGdjb3ZfZmlsZVtsZW4ocHJlZml4KTpdKQogICAgICAgIHBy aW50KG5hbWUpCiAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKG5hbWUpLCBl eGlzdF9vaz1UcnVlKQogICAgICAgIHdpdGggb3BlbihuYW1lLCAid2IiKSBhcyBvdXQ6CiAg ICAgICAgICAgIG91dC53cml0ZShnY292X2RhdGEpCiAgICBzdWJwcm9jZXNzLnJ1bihbImdj b3YtdG9vbCIsICJtZXJnZSIsICItdiIsICItbyIsIHByZWZpeCwgcHJlZml4LCB0bXBfZGly XSkK --------------UZINmi0jlSVPqn0un5mj6tb6 Content-Type: text/plain; charset=UTF-8; name="log.txt" Content-Disposition: attachment; filename="log.txt" Content-Transfer-Encoding: base64 KioqIEJFR0lOIE9GIEdDT1YgSU5GTyAqKioKCi9ob21lL0VCL3NlYmFzdGlhbl9oL3NyYy9s d2lwL2IteGlsaW54X3p5bnFfYTlfcWVtdS9pbml0LmdjZGEKWVdSaloxSXpNRUt0TGpXM0FB QUFBUU1BQUFEY2Fwczg1NUVYMDVwNEtVVUFBS0VCT2dBQUFBRUFBQUFBQUFBQUFRQUFBQUFB QUFBQgpBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFB QUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBCkFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFB QUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUEKQUFB QUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFB QUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQXdBQUFDWG4zazE2ClREcW11SU13cEFB QW9RRUNBQUFBQWdBQUFBQUFBQUFBQUFBQkF3QUFBRHprdkRjZlNudmN1SU13cEFBQW9RSCsv Ly8vQUFBQUFRTUEKQUFDbldOWmFJTTdHV1o5aGlPSUFBS0VCQkFBQUFBRUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUJBd0FBQVBrR1czWUhGVU9PNk9sZAoyd0FBb1FFQ0FBQUFBUUFBQUFB QUFBQUFBQUFCQXdBQUFJdnk0Q0U5Rnh1TTZPbGQyd0FBb1FFQ0FBQUFBUUFBQUFBQUFBQUFB QUFCCkF3QUFBTnl2QkRaaUVSbFE2T2xkMndBQW9RRUNBQUFBQVFBQUFBQUFBQUFBQUFBQkF3 QUFBQ0tRakNwMnBZbEl1SU13cEFBQW9RRUMKQUFBQUFRQUFBQUFBQUFBQUFBQUJBd0FBQUtT U1hFalFGRGx1dUlNd3BBQUFvUUgrLy8vL0FBQUFBQT09CgovaG9tZS9FQi9zZWJhc3RpYW5f aC9zcmMvbHdpcC9iLXhpbGlueF96eW5xX2E5X3FlbXUvaW9kdW1wZ2NvdmluZm8uZ2NkYQpZ V1JqWjFJek1FTDVMalczQUFBQUFRTUFBQUIvcWYwcFZIU1FwK0dzTm00QUFLRUJGQUFBQUFF QUFBQUFBQUFBQVFBQUFBQUFBQUFDCkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFC QUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB QUFBQVFNQUFBQlk0TnBINkhyY2NlanBYZHNBQUtFQi92Ly8vd0FBQUFFREFBQUE3NmFZV0FC S1RRZ2lLWFNZQUFDaApBUWdBQUFDM0FBQUFBQUFBQUF3QUFBQUFBQUFBNEFJQUFBQUFBQUM5 QUFBQUFBQUFBQUFBQUFFREFBQUEzZ0NzRWtsejhvNCtzcnZBCkFBQ2hBUVFBQUFBQ0FBQUFB QUFBQUFJQUFBQUFBQUFBQUFBQUFRTUFBQUNZbUJRMUZUY0UyajZ5dThBQUFLRUJCQUFBQUFF QUFBQUEKQUFBQUFRQUFBQUFBQUFBQUFBQUJBd0FBQUVwSDhVV2lSaUxRV1haVDdRQUFvUUVJ QUFBQVpBUUFBQUFBQUFCa0JBQUFBQUFBQUE0QQpBQUFBQUFBQUR3QUFBQUFBQUFBQUFBQUJB d0FBQUFGbi8xSWorUHc1Nk9sZDJ3QUFvUUVDQUFBQUFRQUFBQUFBQUFBQUFBQUEKCi9ob21l L0VCL3NlYmFzdGlhbl9oL3NyYy9sd2lwL2IteGlsaW54X3p5bnFfYTlfcWVtdS9ydGVtcy9z eXNfYXJjaC5nY2RhCllXUmpaMUl6TUVJUEx6VzNBQUFBQVFNQUFBQmp1b0k0MW42bXgranBY ZHNBQUtFQkFnQUFBQU1BQUFBQUFBQUFBQUFBQUE9PQoKL2hvbWUvRUIvc2ViYXN0aWFuX2gv c3JjL2x3aXAvYi14aWxpbnhfenlucV9hOV9xZW11L3NyYy9jb3JlL2luZXRfY2hrc3VtLmdj ZGEKWVdSaloxSXpNRUkxTHpXM0FBQUFBUU1BQUFCc3RNdG1OMjlQOHNiS3BHNEFBS0VCOXYv Ly93QUFBQUVEQUFBQWVlMnRZekdqNEM3NQpTck44QUFDaEFRUUFBQUFDQUFBQUFBQUFBQUlB QUFBQUFBQUFBQUFBQVFNQUFBQ0dZYkZYZlBJK1dqNnl1OEFBQUtFQi9QLy8vd0FBCkFBRURB QUFBcTQrM0FWU2lnSXcrc3J2QUFBQ2hBZnovLy84QUFBQUJBd0FBQVBQUmZpZURIMFlCcXRB dldBQUFvUUh3Ly8vL0FBQUEKQVFNQUFBQjc1bkFYUEt5cm5UNnl1OEFBQUtFQkJBQUFBQU1B QUFBQUFBQUFBd0FBQUFBQUFBQUFBQUFCQXdBQUFNU01lR2w0dWNBbwpQcks3d0FBQW9RRUVB QUFBQXdBQUFBQUFBQUFEQUFBQUFBQUFBQUFBQUFFREFBQUFaeXBOUEpLL3k0dkd5cVJ1QUFD aEFRb0FBQUFECkFBQUFBQUFBQUFNQUFBQUFBQUFBQVFBQUFBQUFBQUFEQUFBQUFBQUFBQUVB QUFBQUFBQUFBQUFBQVFNQUFBQThVNEpzYUczenpocncKcndNQUFLRUJEQUFBQUFVQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRmdBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFB QQpBQUFBQUFBPQoKL2hvbWUvRUIvc2ViYXN0aWFuX2gvc3JjL2x3aXAvYi14aWxpbnhfenlu cV9hOV9xZW11L3NyYy9jb3JlL2luaXQuZ2NkYQpZV1JqWjFJek1FSmhMelczQUFBQUFRTUFB QUFlMGkwejZFSDJ2bXJpd29nQUFLRUJEQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCCkFB QUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBPQoKL2hvbWUv RUIvc2ViYXN0aWFuX2gvc3JjL2x3aXAvYi14aWxpbnhfenlucV9hOV9xZW11L3NyYy9jb3Jl L2lwdjQvZXRoYXJwLmdjZGEKWVdSaloxSXpNRUtaTHpXM0FBQUFBUU1BQUFEWDRabzliSE9n WHo2eXU4QUFBS0VCQkFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQQpBQUFCQXdBQUFOcVJH eWE4NUI3T1BySzd3QUFBb1FFRUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUVEQUFB QVBCQXpTSEtvCmVLaVVoYm4vQUFDaEFSQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUJBQUFBQUFBQUFBRUFB QUFBQUFBQUFBQUFBUU1BQUFCY2FDNS9oQk91TUVpN004QUFBS0VCc3YvLy93QUFBQUVEQUFB QQo0NG9VWmtvb3dXMjVVVVIxQUFDaEFkYi8vLzhBQUFBQkF3QUFBRThUemhpWFpicWgvRmpB VkFBQW9RSHMvLy8vQUFBQUFRTUFBQUNWCmQvRkc3enZnQk14MWZWSUFBS0VCNFAvLy93QUFB QUVEQUFBQWpLOXZKVXpZZE8xbllTQmdBQUNoQWZULy8vOEFBQUFCQXdBQUFFU0sKaWpGeUZj dXhQQTU4ZlFBQW9RSDAvLy8vQUFBQUFRTUFBQUJLa1E5dng2bEhWMUtQUUhBQUFLRUI5di8v L3dBQUFBRURBQUFBbFozVQpkd01TRFZsOGJwamlBQUNoQWViLy8vOEFBQUFCQXdBQUFGMmUz eDFyUVdwaytYUExaUUFBb1FIRS8vLy9BQUFBQVFNQUFBQ0ROZGRDClBhekRKKzg4ZVY4QUFL RUI2di8vL3dBQUFBRURBQUFBMW03OVJoOXNDN0xpSkJLY0FBQ2hBZnIvLy84QUFBQUJBd0FB QUFsZnN3aDgKN0RNY25TcCtqQUFBb1FIMC8vLy9BQUFBQUE9PQoKL2hvbWUvRUIvc2ViYXN0 aWFuX2gvc3JjL2x3aXAvYi14aWxpbnhfenlucV9hOV9xZW11L3NyYy9jb3JlL2lwdjQvaWNt cC5nY2RhCllXUmpaMUl6TUVMaUx6VzNBQUFBQVFNQUFBQ29KeEZJUVZ0K2M2aUdzcWNBQUtF QjZ2Ly8vd0FBQUFFREFBQUFGNWkzRjdGSVpvTSsKc3J2QUFBQ2hBZnovLy84QUFBQUJBd0FB QUIvbStDenRjVitLUHJLN3dBQUFvUUg4Ly8vL0FBQUFBUU1BQUFEMFZxWmdhdWJ5bmRIOQpU NlVBQUtFQnV2Ly8vd0FBQUFBPQoKL2hvbWUvRUIvc2ViYXN0aWFuX2gvc3JjL2x3aXAvYi14 aWxpbnhfenlucV9hOV9xZW11L3NyYy9jb3JlL2lwdjQvaXA0X2FkZHIuZ2NkYQpZV1JqWjFJ ek1FSUdNRFczQUFBQUFRTUFBQUJlVzVZNlAxTjZEWWlOSmVRQUFLRUI5UC8vL3dBQUFBRURB QUFBZlNCTmJMbnZSbk0rCnNydkFBQUNoQWZ6Ly8vOEFBQUFCQXdBQUFFY3h3R3ZPcGtWYjds UmpMd0FBb1FFOEFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBZ0EKQUFBQUFBQUFBUUFBQUFB QUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUZBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQWdBQUFBQUFBQUFDQUFBQUFB QUFBQUlBQUFBQUFBQUFBQUFBQVFNQQpBQUM5b1R4b1BwWDJyOUxMV3FvQUFLRUJCZ0FBQUFJ QUFBQUFBQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFFREFBQUFPTmFWCkk2cHM0QWJl Y2hQT0FBQ2hBZmIvLy84QUFBQUJBd0FBQVA4ZzgwZzk1eThqQTA2cmlRQUFvUUVPQUFBQUJn QUFBQUFBQUFBR0FBQUEKQUFBQUFBWUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQoKL2hvbWUvRUIvc2ViYXN0aWFuX2gvc3JjL2x3 aXAvYi14aWxpbnhfenlucV9hOV9xZW11L3NyYy9jb3JlL2lwdjQvaXA0LmdjZGEKWVdSalox SXpNRUl4TURXM0FBQUFBUU1BQUFEaVRray8vT1NXWU54UGVSNEFBS0VCOXYvLy93QUFBQUVE QUFBQW5MQkpZMVFpWE9iUworbEQ1QUFDaEFSd0FBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFB UUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUEKQUFFQUFBQUFBQUFBQUFBQUFRTUFBQUJHQWpGYnI0cWZHaHBsM213QUFLRUI5 di8vL3dBQUFBRURBQUFBOTh6N2IvNUNOeHBaMEhLbwpBQUNoQVdBQUFBQUNBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQWdBQUFBQUFBQUFD CkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUNBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFB SUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFB QUFBQUFBQUFBQUFJQUFBQUFBQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUEKQUFBQUFnQUFBQUFBQUFB QUFBQUFBQUFBQUFJQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUJBd0FBCkFIZHEvVFlMRXpGdXAwYWJaZ0FBb1FF TUFBQUFBZ0FBQUFBQUFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK QUFBQUFBSUFBQUFBQUFBQUFBQUFBUU1BQUFCUjl5SjJYOXJ1LzlQYXFIc0FBS0VCMnYvLy93 QUFBQUVEQUFBQXNaWk9LQmhBMXE2TgoxZUF3QUFDaEFmRC8vLzhBQUFBQkF3QUFBUDg5aHdk b0FsYzJXUkdoQlFBQW9RSG0vLy8vQUFBQUFBPT0KCi9ob21lL0VCL3NlYmFzdGlhbl9oL3Ny Yy9sd2lwL2IteGlsaW54X3p5bnFfYTlfcWVtdS9zcmMvY29yZS9pcHY0L2lwNF9mcmFnLmdj ZGEKWVdSaloxSXpNRUpxTURXM0FBQUFBUU1BQUFBSkxIdFYyRzB6bWVYaExVWUFBS0VCenYv Ly93QUFBQUVEQUFBQTNpQllYZ1RqbVlXUQovb0Z3QUFDaEFmVC8vLzhBQUFBQkF3QUFBS016 QlRGWW1pNjZGUXpOQWdBQW9RSDYvLy8vQUFBQUFRTUFBQUJrVjJ3ZjNRQ2FlajZ5CnU4QUFB S0VCL1AvLy93QUFBQUVEQUFBQVpmY1pMek8wd1d1K3NYLzBBQUNoQWJMLy8vOEFBQUFCQXdB QUFOdXVYR3RJcmtCMXlFdUYKb1FBQW9RSEUvLy8vQUFBQUFRTUFBQURWOEVwY2NxbFBxVUJy MmdrQUFLRUIrUC8vL3dBQUFBRURBQUFBVWlpdEZEZUVNNy9NMWY5bQpBQUNoQWZMLy8vOEFB QUFCQXdBQUFLdUkwaDNrWXJUTXU3Q1JvQUFBb1FIby8vLy9BQUFBQVFNQUFBQnpJQjVQK2tJ Q2YxbUp6Z0lBCkFLRUI0di8vL3dBQUFBRURBQUFBZHpQWUlBRFhOOFRtM1JOaUFBQ2hBZmov Ly84QUFBQUEKCi9ob21lL0VCL3NlYmFzdGlhbl9oL3NyYy9sd2lwL2IteGlsaW54X3p5bnFf YTlfcWVtdS9zcmMvY29yZS9tZW0uZ2NkYQpZV1JqWjFJek1FS3BNRFczQUFBQUFRTUFBQUJ2 Z3UxaW1mQlZVNEtWWG5ZQUFLRUIrUC8vL3dBQUFBRURBQUFBV0pUbU5rQ1NZVzJCCjBkYlRB QUNoQVRJQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFBQUFBQUFN QUFBQUFBQUFBQXdBQUFBQUEKQUFBREFBQUFBQUFBQUFNQUFBQUFBQUFBQXdBQUFBQUFBQUFB QUFBQUFBQUFBQU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQU1BQUFBQUFBQUFB d0FBQUFBQUFBQURBQUFBQUFBQUFBTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFN QUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFFREFBQUFkOU1tZDBCU1hXRWIKQ3doaEFBQ2hBY3ovLy84QUFBQUJB d0FBQUJlSEFXVjF0aG5WRzNqM29RQUFvUUVVQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFB QQpBQUFBQUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFB QUFBQUFBQUFBQUlBQUFBQUFBQUFBZ0FBCkFBQUFBQUFBQUFBQkF3QUFBUGNjTjMxZEduc2hO Z3NEaVFBQW9RRVVBQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUFBQUlBQUFBQUFBQUEKQWdBQUFB QUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFB QUFBQUFnQUFBQUFBQUFBQQpBQUFCQXdBQUFFTGU3Mlk0cWdKY04wWTFTd0FBb1FFRUFBQUFB UUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUVEQUFBQWVTRzVId253Ck1scnZ0UW9MQUFDaEFT Z0FBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFnQUEKQUFBQUFBQUNBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB CkFBQUFBQUFBQVFNQUFBQXVTWFlaMTZBa1oranBYZHNBQUtFQkFnQUFBQVVBQUFBQUFBQUFB QUFBQVFNQUFBRHJMdlpxbkRIU3kranAKWGRzQUFLRUJBZ0FBQUJJQUFBQUFBQUFBQUFBQUFB PT0KCi9ob21lL0VCL3NlYmFzdGlhbl9oL3NyYy9sd2lwL2IteGlsaW54X3p5bnFfYTlfcWVt dS9zcmMvY29yZS9tZW1wLmdjZGEKWVdSaloxSXpNRUxhTURXM0FBQUFBUU1BQUFBVkY1QWlR anorbWUraFVFRUFBS0VCK1AvLy93QUFBQUVEQUFBQWdheXFFVmpLaDJxMwpVNVA5QUFDaEFm Yi8vLzhBQUFBQkF3QUFBSS9nd1c3a0FnNkRiTER3RXdBQW9RSDgvLy8vQUFBQUFRTUFBQURm ZUQxemtZMlVER2JNCkdGQUFBS0VCQmdBQUFBTUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFB QUFBQUFBQUFBRURBQUFBc2c3V2FrMC9IaGpsaWpsZEFBQ2gKQWZqLy8vOEFBQUFCQXdBQUFE QW1YRWhhNjZ5SWpRRHlIQUFBb1FFR0FBQUFBd0FBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUFB QUFBQQpBQUFBQVFNQUFBQkFUbjRoVWpaRVFrSWcvM01BQUtFQkJnQUFBQUVBQUFBQUFBQUFD QUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUVECkFBQUFYQ1V5VEZZYzEvV1RWK3E0QUFDaEFR UUFBQUFJQUFBQUFBQUFBQTBCQUFBQUFBQUFBQUFBQUE9PQoKL2hvbWUvRUIvc2ViYXN0aWFu X2gvc3JjL2x3aXAvYi14aWxpbnhfenlucV9hOV9xZW11L3NyYy9jb3JlL25ldGlmLmdjZGEK WVdSaloxSXpNRUlETVRXM0FBQUFBUU1BQUFCS0RMQlhlTUJxblY4dXhrVUFBS0VCQ0FBQUFB Y0FBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUU1BQUFC aXVUTVpycldMV1VDbURmY0FBS0VCOHYvLy93QUFBQUVEQUFBQWd1cFdHZTdaCjhuQW1xMVFv QUFDaEFmci8vLzhBQUFBQkF3QUFBQXFaZDBrTnZ1RE9rb2YvRXdBQW9RSHUvLy8vQUFBQUFR TUFBQUNXK1lnc0cvaVQKWHkwaDNXUUFBS0VCK1AvLy93QUFBQUVEQUFBQVZreE9Oc1VSaTBy SVAyK05BQUNoQWZqLy8vOEFBQUFCQXdBQUFDNEFSSFMydmszawpHaUdYd3dBQW9RSDYvLy8v QUFBQUFRTUFBQUNDNXN3MEtnMUhLZWpwWGRzQUFLRUIvdi8vL3dBQUFBRURBQUFBTmppWFVX VjIyc0JDCklQOXpBQUNoQVFZQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFBQUFBQUFB QUFBQUJBd0FBQUIrbFhUR3Z5SFJmOUlkdWZBQUEKb1FFV0FBQUFBZ0FBQUFBQUFBQUFBQUFB QUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQQpB QUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFF REFBQUExZkhiZjY3MXRaaytzcnZBCkFBQ2hBZnovLy84QUFBQUJBd0FBQUQrNldpS2RPb1lh eEwvc1lnQUFvUUVjQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFRQUFB QUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFB QUFBQUFBQUFBQUFBQQpBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUVEQUFBQTM4S1lHSVhVMzdIM3Jrb1ZBQUNoCkFmei8vLzhBQUFBQkF3QUFB RDBNbldHeVNRalJqZnhnUWdBQW9RSDAvLy8vQUFBQUFRTUFBQUMvRlQ0Tmx5cXJ0Mko3Y3FF QUFLRUIKRGdBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQQpBQUFBQUFBQUFRTUFBQUF4a0M0cGpYK1ZW ZmV1U2hVQUFLRUJCQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQkF3QUFBT2Y4Ck1G UkxMbjk2ZHNWamd3QUFvUUh3Ly8vL0FBQUFBUU1BQUFDOHoydEJOUGNnRHFIYjEySUFBS0VC RUFBQUFBVUFBQUFBQUFBQUFBQUEKQUFBQUFBQURBQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFB QUFBQUFBQ0FBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQgpBd0FBQUxyK1RD Z0EranlMeFB5MDNRQUFvUUVPQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFB QVFBQUFBQUFBQUFCCkFBQUFBQUFBQUFJQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQkF3QUFB QXg2RG1Ga29DWjY2T2xkMndBQW9RRUNBQUFBQVFBQUFBQUEKQUFBQUFBQUJBd0FBQUpFZDFY UURrVzNSWlNHTURRQUFvUUhtLy8vL0FBQUFBUU1BQUFDYzlvcGtwMU10clVKODhvWUFBS0VC S0FBQQpBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFB QUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFB QUFBQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUFBQUFBQUMKQUFB QUFBQUFBQUlBQUFBQUFBQUFBZ0FBQUFBQUFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFB QUFBQUFBQUFBQUJBd0FBQUw0Ugp1QUZRT3J0QmhXMWF3QUFBb1FIMC8vLy9BQUFBQVFNQUFB QnUrY2M4ejRDbEV0cjFwNm9BQUtFQkNBQUFBQUlBQUFBQUFBQUFBUUFBCkFBQUFBQUFBQUFB QUFBQUFBQUVBQUFBQUFBQUFBQUFBQVFNQUFBQ2tacjVUU1c1QkFvVnRXc0FBQUtFQjlQLy8v d0FBQUFFREFBQUEKUytDQlJXZ3d0SERhOWFlcUFBQ2hBUWdBQUFBQ0FBQUFBQUFBQUFJQUFB QUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFFRApBQUFBOFRnYmVHdEJsRTJGYlZy QUFBQ2hBZlQvLy84QUFBQUJBd0FBQUdRYWYxckZVSUVidWdkSU5BQUFvUUVTQUFBQUFnQUFB QUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQUFJQUFB QUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUEKQUFJQUFBQUFBQUFBQUFBQUFRTUFBQUNaSUZr cG9MbFJxOXFjdFBNQUFLRUJCZ0FBQUFJQUFBQUFBQUFBQWdBQUFBQUFBQUFDQUFBQQpBQUFB QUFBQUFBRURBQUFBNXhDVEQydVhvZnh1TU9FR0FBQ2hBU0lBQUFBQ0FBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUEKQUFBQUFBQUFBUUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFB QUFBQUFBQUFBQQpBUU1BQUFBaTFHMXpaQTZXL0Q2eXU4QUFBS0VCL1AvLy93QUFBQUVEQUFB QWxyMStaRGI4VWdoaTRzNE1BQUNoQVF3QUFBQUJBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBd0FBQVBXWHBY cVQKRDhnNHVVUHpnUUFBb1FFSUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFB QUFRQUFBQUFBQUFBQUFBQUJBd0FBQU54UgpkVlk3dTBxUm4yR0k0Z0FBb1FFRUFBQUFBUUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9CgovaG9tZS9FQi9zZWJhc3RpYW5faC9zcmMvbHdp cC9iLXhpbGlueF96eW5xX2E5X3FlbXUvc3JjL2NvcmUvcGJ1Zi5nY2RhCllXUmpaMUl6TUVK T01UVzNBQUFBQVFNQUFBQzF6andKSlNOR1I0aTA0R2tBQUtFQjlQLy8vd0FBQUFFREFBQUFQ UmdMU1FTT25uV0EKMlZaUEFBQ2hBZmIvLy84QUFBQUJBd0FBQUh4NWhXcUFacngzeVQ0aTh3 QUFvUUh5Ly8vL0FBQUFBUU1BQUFEVXpCTmdiZ3RTdEtLbgpISTRBQUtFQitQLy8vd0FBQUFF REFBQUF4V1pQUi9sa1RCNVNORGtsQUFDaEFmai8vLzhBQUFBQkF3QUFBTy8wUlZqWHZFUmRH aUdYCnd3QUFvUUg2Ly8vL0FBQUFBUU1BQUFDYlEvd3lxTDU4TTVBY0RCb0FBS0VCOXYvLy93 QUFBQUVEQUFBQTdMRkdUQkxvalY5RUdwTzYKQUFDaEFmYi8vLzhBQUFBQkF3QUFBRVl6Q0JW ZDlpNVBYOEJmTEFBQW9RSHcvLy8vQUFBQUFRTUFBQURwem10eVdHNnZsQjNESU5nQQpBS0VC NlAvLy93QUFBQUVEQUFBQVJuZWxTT0JLZFpqNVNyTjhBQUNoQWZ6Ly8vOEFBQUFCQXdBQUFH YnlHbjlteU1rRjZJSXZoUUFBCm9RSDQvLy8vQUFBQUFRTUFBQUJHVjRrN2J6cHprSUFUdUdv QUFLRUI3di8vL3dBQUFBRURBQUFBVVhkTVVNVyszS0JpTWxCU0FBQ2gKQWZELy8vOEFBQUFC QXdBQUFGaW56U2Q1NXZEUEVEYk5lQUFBb1FFcUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFB RUFBQUFBQUFBQQpBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFCCkFBQUFBQUFBQUFBQUFBQUFBQUFB QVFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUU1BQUFB T3QwUjk0Yk96bmZVNWJXNEFBS0VCQmdBQQpBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFB QUFBQUFBQUFBQUVEQUFBQVJCVEtZQm1jL1BHUEFyQXZBQUNoQWZULy8vOEFBQUFCCkF3QUFB TnBucFZhYitKT3MycHkwOHdBQW9RSDYvLy8vQUFBQUFRTUFBQUNLS01NdCswRzNoSVJhOWNB QUFLRUI5UC8vL3dBQUFBRUQKQUFBQW5paDdNVFFoQjV0OUZZUzdBQUNoQWZyLy8vOEFBQUFC QXdBQUFPSTJuU0dVeHMrWEh2ODdPZ0FBb1FFRUFBQUFBUUFBQUFBQQpBQUFCQUFBQUFBQUFB QUFBQUFFREFBQUFHQi9XZm5LYm9hUWhzYm5aQUFDaEFSNEFBQUFDQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQkF3QUFBSG01cVhB SApsU083ZHZTRktRQUFvUUgwLy8vL0FBQUFBUU1BQUFDV0lGRVR5dXlaRkQ2eXU4QUFBS0VC L1AvLy93QUFBQUVEQUFBQVJ5em1UOGdOCnZFaytzcnZBQUFDaEFmei8vLzhBQUFBQkF3QUFB TFJuejMyUGdJK1FuMWxFdlFBQW9RSDQvLy8vQUFBQUFRTUFBQUJocmdJYXlLNFMKUUxZR2Ez OEFBS0VCREFBQUFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFVQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBRURBQUFBQ3QxdUlEeHFRQjgrc3J2QUFBQ2hB ZnovLy84QUFBQUJBd0FBQURQeVVtQTF0WTVVUHJLN3dBQUFvUUVFCkFBQUFBd0FBQUFBQUFB QURBQUFBQUFBQUFBQUFBQUVEQUFBQXdsYkhUSSt0Vzh6WWVMRUdBQUNoQVJJQUFBQURBQUFB QUFBQUFBQUEKQUFBQUFBQUFBd0FBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUJBd0FBQUhyN1ow Wml0b1IvU0FkQWlRQUFvUUhtLy8vL0FBQUFBUU1BQUFBYTh0RWtjMzczd0JYNDloUUFBS0VC CkNBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFB UU1BQUFENkc0bGNZT25la0VGMU44TUEKQUtFQjlQLy8vd0FBQUFFREFBQUFKUGpWQUxLbVUv UUdDdG9TQUFDaEFTZ0FBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFEQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQXdBQUFBQUFBQUFEQUFBQUFBQUFBQU1BQUFBQUFBQUEKQUFBQUFBQUFBQUFEQUFB QUFBQUFBQU1BQUFBQUFBQUFBQUFBQVFNQUFBQXA4V0lJVkIxWk03aURNS1FBQUtFQkFnQUFB QVVBQUFBQQpBQUFBQUFBQUFBPT0KCi9ob21lL0VCL3NlYmFzdGlhbl9oL3NyYy9sd2lwL2It eGlsaW54X3p5bnFfYTlfcWVtdS9zcmMvY29yZS9yYXcuZ2NkYQpZV1JqWjFJek1FS2NNVFcz QUFBQUFRTUFBQUNYaWVCWVVtUk8xMC9KV2I4QUFLRUJEZ0FBQUFJQUFBQUFBQUFBQWdBQUFB QUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQVFNQUFBQkZzc00vSEZGczcvbEsKczN3QUFLRUIvUC8vL3dBQUFBRURBQUFB VmVLOEYxbWwyaENOaVlBWUFBQ2hBZnIvLy84QUFBQUJBd0FBQUhXcE5SREphRXlKOTgvRQpM QUFBb1FIMC8vLy9BQUFBQVFNQUFBQ1RxQ3dhL3lxcHd6Nnl1OEFBQUtFQi9QLy8vd0FBQUFF REFBQUFEQnUyWVYrUEZ4QTRKU3Y5CkFBQ2hBZGovLy84QUFBQUJBd0FBQU1USDR6UnBMcmV2 TDQ0c2N3QUFvUUhvLy8vL0FBQUFBUU1BQUFDaHNQMXJPSDl5YmJpRE1LUUEKQUtFQi92Ly8v d0FBQUFFREFBQUFTWE1TYXo1alVDcTRnekNrQUFDaEFmNy8vLzhBQUFBQkF3QUFBRkY2RDBo NW9MWFNmY2NFQ3dBQQpvUUg0Ly8vL0FBQUFBUU1BQUFBQlM1OXkzdGl0MkJ6aWZNSUFBS0VC L1AvLy93QUFBQUVEQUFBQUhSWHNWVWd6dTMxOXh3UUxBQUNoCkFmai8vLzhBQUFBQkF3QUFB R0xmVDJvVmhDUGpmZFh0S3dBQW9RRWFBQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFB QUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUJBd0FBQVBoTzgwaktUaDNINnpIZUR3QUFvUUh1Ly8vL0FBQUFBQT09Cgov aG9tZS9FQi9zZWJhc3RpYW5faC9zcmMvbHdpcC9iLXhpbGlueF96eW5xX2E5X3FlbXUvc3Jj L2NvcmUvdGltZW91dHMuZ2NkYQpZV1JqWjFJek1FTEpNVFczQUFBQUFRTUFBQUJUUDhwb2R3 N2hYV09LMjdJQUFLRUI5di8vL3dBQUFBRURBQUFBVDM2a1ZmQVpneXFXCnR1MmxBQUNoQWZq Ly8vOEFBQUFCQXdBQUFML1FLMC9XdEFKNjFzUkhGUUFBb1FFT0FBQUFBUUFBQUFBQUFBQUFB QUFBQUFBQUFBRUEKQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUJBd0FBQUpUdjl5eEpJWEZ4RUVVVgp0QUFBb1FIeS8vLy9BQUFBQVFN QUFBRCtaZnhTM0kvOGFRT0YzNEVBQUtFQkNBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUNB QUFBCkFBQUFBQUlBQUFBQUFBQUFBQUFBQVFNQUFBRGR4MEZlNkUvNWtFSWcvM01BQUtFQkJn QUFBQUVBQUFBQUFBQUFBZ0FBQUFBQUFBQUMKQUFBQUFBQUFBQUFBQUFFREFBQUFEQVR6Vk4z UG5VYno0MEhQQUFDaEFmVC8vLzhBQUFBQkF3QUFBTXQya3pNNkxXcmtYLzIvUlFBQQpvUUVT QUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUE9 PQoKL2hvbWUvRUIvc2ViYXN0aWFuX2gvc3JjL2x3aXAvYi14aWxpbnhfenlucV9hOV9xZW11 L3NyYy9jb3JlL3VkcC5nY2RhCllXUmpaMUl6TUVMMU1UVzNBQUFBQVFNQUFBQWVOMmtpZGcw RVJrL0pXYjhBQUtFQkRnQUFBQUlBQUFBQUFBQUFBZ0FBQUFBQUFBQUEKQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUU1BQUFCd3VM QUdxcmk2Ui9sSwpzM3dBQUtFQi9QLy8vd0FBQUFFREFBQUFIaDRMSnJrN2RrbU5pWUFZQUFD aEFRWUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBCkFBQUFBQUFBQUFBQkF3QUFBRmh6 SVNrMzVKN3FFd3R6U2dBQW9RSHkvLy8vQUFBQUFRTUFBQUJvYS81bEVtM2tXeHppZk1JQUFL RUIKQkFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBd0FBQUg2ZnFUOXk3NzFySE9K OHdnQUFvUUg4Ly8vL0FBQUFBUU1BQUFBZwpLaUpEOW9vaVVHeEE2YmtBQUtFQjd2Ly8vd0FB QUFFREFBQUFOcWNrSmdPMVhqOGM0bnpDQUFDaEFRUUFBQUFCQUFBQUFBQUFBQUVBCkFBQUFB QUFBQUFBQUFRTUFBQURVenU5YlF0aUVTQmNlcEc0QUFLRUJKQUFBQUFFQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFB QUFBQUFBQUFCCkFBQUFBQUFBQUFBQUFBRURBQUFBRWRkYmJFSW9saTIwQ3BGTEFBQ2hBVGdB QUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QQpBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUEKQUFBQUFB QUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUVEQUFBQVh3Y3JYU1k3 MzdCK2tRV0FBQUNoQVJRQQpBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBRURBQUFBNlIzM0RYUlVHV0ZPK2NCU0FBQ2hBZTcv Ly84QUFBQUIKQXdBQUFGcHpMeFRldlIrNDc2RlFRUUFBb1FINC8vLy9BQUFBQVFNQUFBQm90 aHBWdmFOZFZGR05zcThBQUtFQldBQUFBQUlBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFBQUFB CkFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBQQpBZ0FBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQWdBQUFBQUFBQUFDCkFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFDQUFBQUFB QUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUNBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFB QUFBQUFBQQpBQUFBQUFBQUFBQUJBd0FBQUs1a3AyTENHSHI1TzFOYTJ3QUFvUUVhQUFBQUFn QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFnQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUMK QUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFCQXdBQUFCcWE3U2wwQ1JaemMr MGlWUUFBb1FIMi8vLy9BQUFBQVFNQQpBQUNvUThsSXpuSWU5YmlETUtRQUFLRUJBZ0FBQUFF QUFBQUFBQUFBQUFBQUFBPT0KCi9ob21lL0VCL3NlYmFzdGlhbl9oL3NyYy9sd2lwL2IteGls aW54X3p5bnFfYTlfcWVtdS9zcmMvbmV0aWYvZXRoZXJuZXQuZ2NkYQpZV1JqWjFJek1FSXdN alczQUFBQUFRTUFBQUMrRUJRdVhhN3N0dU5BWVRrQUFLRUJDZ0FBQUFFQUFBQUFBQUFBQVFB QUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQkF3QUFBQVFi R1dtbWhicEJKNWxSOEFBQW9RRW1BQUFBQVFBQUFBQUEKQUFBQUFBQUFBQUFBQUFFQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QQpBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFB QUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQQoKKioqIEVORCBPRiBHQ09WIElORk8gKioqCg== --------------UZINmi0jlSVPqn0un5mj6tb6--