From user-return-1540-archive-asf-public=cust-asf.ponee.io@kudu.apache.org Mon Nov 26 07:13:16 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id EF899180647 for ; Mon, 26 Nov 2018 07:13:15 +0100 (CET) Received: (qmail 45099 invoked by uid 500); 26 Nov 2018 06:13:15 -0000 Mailing-List: contact user-help@kudu.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@kudu.apache.org Delivered-To: mailing list user@kudu.apache.org Received: (qmail 45088 invoked by uid 99); 26 Nov 2018 06:13:14 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Nov 2018 06:13:14 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id F06A4182F1E for ; Mon, 26 Nov 2018 06:13:13 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.799 X-Spam-Level: * X-Spam-Status: No, score=1.799 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=cloudera.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id AsLigV85hvmI for ; Mon, 26 Nov 2018 06:13:11 +0000 (UTC) Received: from mail-ot1-f51.google.com (mail-ot1-f51.google.com [209.85.210.51]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 8618F6103D for ; Mon, 26 Nov 2018 06:13:11 +0000 (UTC) Received: by mail-ot1-f51.google.com with SMTP id e12so11240958otl.5 for ; Sun, 25 Nov 2018 22:13:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudera.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=NCoq1l0q55AMNAUAHyeVqkuOx6VJESrsE35CODqomQU=; b=f4oDhVX+OZfphhJycRCeUKMQMGciWCqMgTW9sZokObOaWgGGF8DZXpzS8Gy8TbUrjT /fihlfAJlerhGPpUNef79tQv2kZYspk3q4NiukBc4Rt2de8AIqEChjZSEJm5a78IKqiK 8nUY43AgLs5WEgXhnFLaCc8i2lY+kTLvDHtiiEi/thqdp8AjWR66a9qSsdRTUFJwfJAs MOabQFlKnU1hIB2tPHS9IHgNJXuoO/Mwzg86rXnSwNhB7MZoavnYNNWwoFTpjDF53Xal ZEBDXVItKQ8hmGuimwp4Z0NzEV7p+8MgI80SPsiCDTrOpuREU3TaofhT7Rb3gX85zxUY 6kmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=NCoq1l0q55AMNAUAHyeVqkuOx6VJESrsE35CODqomQU=; b=chxGcoWlyzzKVfO5d4Zlr07ixpLt5dX+ooaBLJ1nkUTksc/nwV7KAVbNUHnYb7IVa5 UmbTZ+Gk6QoA2kSfpXFOWmXK4WaANU6107HeqhmQ2Z/DsC+PjlN4jjDYJCoI/3bUJBDz 5kCwMMYGdPElC3NjcnWiLKdLIwDP2iDZSk/10ZEdqR5mSylIFp5bxlCiXu+LUThyQi7K qLX8TGBHrW+M5U86xt5Ncu77KDiE2br6X/VUSstZs3+8UolomB+EfyETyT3OpYUvybTM Ii/haX2EKvhaHihHS9ysXxLbZtC7myr0GbxbfYMxZk0nCHr1F4PK9a+kzIM9Vc8DuAV9 C0Fg== X-Gm-Message-State: AA+aEWaSriXUFzTLg9SL1ctSr05IRGuouMputzbX46Sb6fndKhmfq1Sm 7/3N+R6VB/jP7yIrMsUm8Vu5KOfVCQTYW7hSd3sPTmcYXkU= X-Google-Smtp-Source: AFSGD/X23ED38OkTDRoYuo0V4l3EpKIFK8kno/auTPnMHK3O2GGfb5EmTH/OwiOvm46oOKf1QCQKlPVUnVuTIdKix54= X-Received: by 2002:a9d:738a:: with SMTP id j10mr14975430otk.188.1543212784734; Sun, 25 Nov 2018 22:13:04 -0800 (PST) MIME-Version: 1.0 References: <0e3b946efe604b12b4a1d54ef64188c3@intrum.com> In-Reply-To: From: William Berkeley Date: Sun, 25 Nov 2018 22:12:52 -0800 Message-ID: Subject: Re: Slow queries after massive deletions. Is it due to compaction? To: user@kudu.apache.org Content-Type: multipart/alternative; boundary="000000000000d91290057b8b39fa" --000000000000d91290057b8b39fa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Sergejs. You are correct. Kudu tracks deletes as a past data plus a "redo" that contains delete operations. The base data and the redos are stored on disk separately and are logically reconciled on scan. Brock is right that this situation is improved greatly for certain deletion patterns with the fix to KUDU-2429. In particular, if deletions come in large contiguous blocks (where contiguity is determined by the primary key ordering), then the KUDU-2429 improvement will greatly increase the speed of scans over deleted data. Your problem might be solved by upgrading to a version that contains that improvement. Unfortunately, as implied by the description for the --tablet_delta_store_major_compact_min_ratio flag, major delta compaction will not eliminate delete operations in the redo files. Those are only compacted with the base data when a merge compaction (also known as a rowset compaction) occurs. However, right now that sort of compaction is triggered only by having rowsets whose minimum and maximum key bounds overlap. So, for example, if you are inserting data in increasing or decreasing primary key order, there won't be any merge compactions. KUDU-1625 tracks the improvement to trigger rowset compaction based on having a high percentage of deleted data. I can't think of a great workaround without potentially changing the partitioning or schema of the table, unfortunately. It's possible to coax Kudu into doing merge compactions by inserting rows in the same approximate key range as the deleted data and deleting them quickly. This would hopefully cause the merge compaction to compact away a lot of the older deleted data, but it would leave the newly inserted and deleted data. Plus, if there are concurrent queries, this sort of workaround could cause wrong results, and filtering them out efficiently, at least Kudu-side, would mean a change to the primary key. There is a good solution if you can change your partitioning scheme. If you use range partitioning to group together the blocks of rows that will be deleted, for example by range partitioning with one partition by day and deleting a day at a time, then deletes can be done efficiently by dropping range partitions. See range-partitioning . Besides the restrictions this places on your schema and on the manner in which deletes can be done efficiently, keep in mind that dropping a range partition is not transactional and scans concurrent with drops of range partitions do not have consistency guarantees. -Will On Sun, Nov 25, 2018 at 3:40 PM Brock Noland wrote: > Hi, > > I believe you are hitting a known issue and I think if you upgrade to > 5.15.1 you'll see the fix: > > > https://www.cloudera.com/documentation/enterprise/release-notes/topics/ku= du_fixed_issues.html#fixed-5-15-1 > > "Greatly improved the performance of many types of queries on tables from > which many rows have been deleted." > > I think there might have been more than one JIRA, but here is one of the > fixes: > > https://issues.apache.org/jira/browse/KUDU-2429 > > On Thu, Nov 22, 2018 at 9:57 AM Sergejs Andrejevs > wrote: > >> Hi, >> >> >> >> Is there a way to call of MajorDeltaCompactionOp for a >> table/tablet/rowset? >> >> >> >> We=E2=80=99ve faced with an issue: >> >> 0. Kudu table is created >> >> 1. Data is inserted there >> >> 2. Run select query - it goes fast (matter of a few seconds) >> >> 3. Delete all data from the table (but not dropping the table) >> >> 4. Run select query - it goes slow (4-6 minutes) >> >> >> >> Investigating and reading documentation of Kudu has leaded to a thought >> that delete operations are done logically, but physically the table >> contains written data and deletes are applied each time on top of it. >> >> I had a look at kudu tablet and there are quite large =E2=80=9Credo=E2= =80=9D blocks (see >> one of rowset examples below). >> >> There was a thought that compression and encoding play their role >> (reducing the chances to run compaction), but removing them (keeping col= umn >> defaults) hasn=E2=80=99t helped as well. >> >> We run tservers >> >> - maintenance_manager_num_threads=3D10 (increased comparing to >> default) >> >> - tablet_delta_store_major_compact_min_ratio=3D0.10000000149011= 612 >> (default value) >> >> - kudu 1.7.0-cdh5.15.0 >> >> >> >> From documentation and comments in code I saw the description of >> tablet_delta_store_major_compact_min_ratio: =E2=80=9CMinimum ratio of >> sizeof(deltas) to sizeof(base data) before a major compaction.=E2=80=9D >> >> And =E2=80=9CMajor compactions: the score will be the result of >> sizeof(deltas)/sizeof(base data), unless it is smaller than >> tablet_delta_store_major_compact_min_ratio or if the delta files are onl= y >> composed of deletes, in which case the score is brought down to zero.=E2= =80=9D >> >> So basically the table stays in such state for more than a day. >> >> >> >> While majority of tables will have mostly scans, there will be a couple >> of large tables with large number of deletions (but not of all data). >> >> Could you advise how to improve scans after large deletions? >> >> >> >> block-id | block-kind | column| cfile-size | cfile-data-type >> | >> cfile-delta-stats >> | cfile-encoding | cfile-compression >> >> ----------+-------------+-------+----------- >> +-----------------+-----------------------------------------------------= ------------------------------------------------------------------------+--= ---------------+------------------- >> >> 24693586 | column | var1 | 2.80M | int64 >> | >> | BIT_SHUFFLE | >> NO_COMPRESSION >> >> 24693587 | column | var2 | 100.7K | int64 >> | >> | BIT_SHUFFLE | NO_COMPRESSION >> >> 24693588 | column | var3 | 4.95M | int64 >> | >> | BIT_SHUFFLE | NO_COMPRESSION >> >> 24693589 | column | var4 | 1.58M | string >> | >> | DICT_ENCODING | LZ4 >> >> 24693590 | column | var5 | 8.82M | string >> | >> | PLAIN_ENCODING | LZ4 >> >> 24693591 | column | var6 | 2.7K | string | >> = | >> DICT_ENCODING | LZ4 >> >> 24700691 | redo | | 14.04M | binary | ts >> range=3D[6319363930065100800, 6319364908129189926], delete_count=3D[2190= 649], >> reinsert_count=3D[0], update_counts_by_col_id=3D[] | PLAIN_ENCODING | L= Z4 >> >> 24693592 | bloom | | 5.04M | binary >> | >> | PLAIN_ENCODING | NO_COMPRESSION >> >> 24693593 | adhoc-index | | 8.94M | binary >> | >> | PREFIX_ENCODING | LZ4 >> >> >> >> Kind Regards, >> >> Sergejs Andrejevs >> >> >> > --000000000000d91290057b8b39fa Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+SGkgU2VyZ2Vqcy4gWW91IGFyZSBjb3JyZWN0LiBLdWR1IHRyYWNrcyBk ZWxldGVzIGFzIGEgcGFzdCBkYXRhIHBsdXMgYSAmcXVvdDtyZWRvJnF1b3Q7IHRoYXQgY29udGFp bnMgZGVsZXRlIG9wZXJhdGlvbnMuIFRoZSBiYXNlIGRhdGEgYW5kIHRoZSByZWRvcyBhcmUgc3Rv cmVkIG9uIGRpc2sgc2VwYXJhdGVseSBhbmQgYXJlIGxvZ2ljYWxseSByZWNvbmNpbGVkIG9uIHNj YW4uPGRpdj48YnI+PC9kaXY+PGRpdj5Ccm9jayBpcyByaWdodCB0aGF0IHRoaXMgc2l0dWF0aW9u IGlzIGltcHJvdmVkIGdyZWF0bHkgZm9yIGNlcnRhaW4gZGVsZXRpb24gcGF0dGVybnMgd2l0aCB0 aGUgZml4IHRvIEtVRFUtMjQyOS4gSW4gcGFydGljdWxhciwgaWYgZGVsZXRpb25zIGNvbWUgaW4g bGFyZ2UgY29udGlndW91cyBibG9ja3MgKHdoZXJlIGNvbnRpZ3VpdHkgaXMgZGV0ZXJtaW5lZCBi eSB0aGUgcHJpbWFyeSBrZXkgb3JkZXJpbmcpLCB0aGVuIHRoZSBLVURVLTI0MjkgaW1wcm92ZW1l bnQgd2lsbCBncmVhdGx5IGluY3JlYXNlIHRoZSBzcGVlZCBvZiBzY2FucyBvdmVyIGRlbGV0ZWQg ZGF0YS4gWW91ciBwcm9ibGVtIG1pZ2h0IGJlIHNvbHZlZCBieSB1cGdyYWRpbmcgdG8gYSB2ZXJz aW9uIHRoYXQgY29udGFpbnMgdGhhdCBpbXByb3ZlbWVudC48L2Rpdj48ZGl2Pjxicj48L2Rpdj48 ZGl2PlVuZm9ydHVuYXRlbHksIGFzIGltcGxpZWQgYnkgdGhlIGRlc2NyaXB0aW9uIGZvciB0aGUg LS10YWJsZXRfZGVsdGFfc3RvcmVfbWFqb3JfY29tcGFjdF9taW5fcmF0aW8gZmxhZywgbWFqb3Ig ZGVsdGEgY29tcGFjdGlvbiB3aWxsIG5vdCBlbGltaW5hdGUgZGVsZXRlIG9wZXJhdGlvbnMgaW4g dGhlIHJlZG8gZmlsZXMuIFRob3NlIGFyZSBvbmx5IGNvbXBhY3RlZCB3aXRoIHRoZSBiYXNlIGRh dGEgd2hlbiBhIG1lcmdlIGNvbXBhY3Rpb24gKGFsc28ga25vd24gYXMgYSByb3dzZXQgY29tcGFj dGlvbikgb2NjdXJzLiBIb3dldmVyLCByaWdodCBub3cgdGhhdCBzb3J0IG9mIGNvbXBhY3Rpb24g aXMgdHJpZ2dlcmVkIG9ubHkgYnkgaGF2aW5nIHJvd3NldHMgd2hvc2UgbWluaW11bSBhbmQgbWF4 aW11bSBrZXkgYm91bmRzIG92ZXJsYXAuIFNvLCBmb3IgZXhhbXBsZSwgaWYgeW91IGFyZSBpbnNl cnRpbmcgZGF0YSBpbiBpbmNyZWFzaW5nIG9yIGRlY3JlYXNpbmcgcHJpbWFyeSBrZXkgb3JkZXIs IHRoZXJlIHdvbiYjMzk7dCBiZSBhbnkgbWVyZ2UgY29tcGFjdGlvbnMuwqA8YSBocmVmPSJodHRw czovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL0tVRFUtMTYyNSI+S1VEVS0xNjI1PC9h PsKgdHJhY2tzIHRoZSBpbXByb3ZlbWVudCB0byB0cmlnZ2VyIHJvd3NldCBjb21wYWN0aW9uIGJh c2VkIG9uIGhhdmluZyBhIGhpZ2ggcGVyY2VudGFnZSBvZiBkZWxldGVkIGRhdGEuPC9kaXY+PGRp dj48YnI+PC9kaXY+PGRpdj5JIGNhbiYjMzk7dCB0aGluayBvZiBhIGdyZWF0IHdvcmthcm91bmQg d2l0aG91dCBwb3RlbnRpYWxseSBjaGFuZ2luZyB0aGUgcGFydGl0aW9uaW5nIG9yIHNjaGVtYSBv ZiB0aGUgdGFibGUsIHVuZm9ydHVuYXRlbHkuIEl0JiMzOTtzIHBvc3NpYmxlIHRvIGNvYXggS3Vk dSBpbnRvIGRvaW5nIG1lcmdlIGNvbXBhY3Rpb25zIGJ5IGluc2VydGluZyByb3dzIGluIHRoZSBz YW1lIGFwcHJveGltYXRlIGtleSByYW5nZSBhcyB0aGUgZGVsZXRlZCBkYXRhIGFuZCBkZWxldGlu ZyB0aGVtIHF1aWNrbHkuIFRoaXMgd291bGQgaG9wZWZ1bGx5IGNhdXNlIHRoZSBtZXJnZSBjb21w YWN0aW9uIHRvIGNvbXBhY3QgYXdheSBhIGxvdCBvZiB0aGUgb2xkZXIgZGVsZXRlZCBkYXRhLCBi dXQgaXQgd291bGQgbGVhdmUgdGhlIG5ld2x5IGluc2VydGVkIGFuZCBkZWxldGVkIGRhdGEuIFBs dXMsIGlmIHRoZXJlIGFyZSBjb25jdXJyZW50IHF1ZXJpZXMsIHRoaXMgc29ydCBvZiB3b3JrYXJv dW5kIGNvdWxkIGNhdXNlIHdyb25nIHJlc3VsdHMsIGFuZCBmaWx0ZXJpbmcgdGhlbSBvdXQgZWZm aWNpZW50bHksIGF0IGxlYXN0IEt1ZHUtc2lkZSwgd291bGQgbWVhbiBhIGNoYW5nZSB0byB0aGUg cHJpbWFyeSBrZXkuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaGVyZSBpcyBhIGdvb2Qgc29s dXRpb24gaWYgeW91IGNhbiBjaGFuZ2UgeW91ciBwYXJ0aXRpb25pbmcgc2NoZW1lLiBJZiB5b3Ug dXNlIHJhbmdlIHBhcnRpdGlvbmluZyB0byBncm91cCB0b2dldGhlciB0aGUgYmxvY2tzIG9mIHJv d3MgdGhhdCB3aWxsIGJlIGRlbGV0ZWQsIGZvciBleGFtcGxlIGJ5IHJhbmdlIHBhcnRpdGlvbmlu ZyB3aXRoIG9uZSBwYXJ0aXRpb24gYnkgZGF5IGFuZCBkZWxldGluZyBhIGRheSBhdCBhIHRpbWUs IHRoZW4gZGVsZXRlcyBjYW4gYmUgZG9uZSBlZmZpY2llbnRseSBieSBkcm9wcGluZyByYW5nZSBw YXJ0aXRpb25zLiBTZWXCoDxhIGhyZWY9Imh0dHBzOi8va3VkdS5hcGFjaGUub3JnL2RvY3Mvc2No ZW1hX2Rlc2lnbi5odG1sI3JhbmdlLXBhcnRpdGlvbmluZyI+cmFuZ2UtcGFydGl0aW9uaW5nPC9h Pi4gQmVzaWRlcyB0aGUgcmVzdHJpY3Rpb25zIHRoaXMgcGxhY2VzIG9uIHlvdXIgc2NoZW1hIGFu ZCBvbiB0aGUgbWFubmVyIGluIHdoaWNoIGRlbGV0ZXMgY2FuIGJlIGRvbmUgZWZmaWNpZW50bHks IGtlZXAgaW4gbWluZCB0aGF0IGRyb3BwaW5nIGEgcmFuZ2UgcGFydGl0aW9uIGlzIG5vdCB0cmFu c2FjdGlvbmFsIGFuZCBzY2FucyBjb25jdXJyZW50IHdpdGggZHJvcHMgb2YgcmFuZ2UgcGFydGl0 aW9ucyBkbyBub3QgaGF2ZSBjb25zaXN0ZW5jeSBndWFyYW50ZWVzLjwvZGl2PjxkaXY+PGJyPjwv ZGl2PjxkaXY+LVdpbGw8L2Rpdj48L2Rpdj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxk aXYgZGlyPSJsdHIiPk9uIFN1biwgTm92IDI1LCAyMDE4IGF0IDM6NDAgUE0gQnJvY2sgTm9sYW5k ICZsdDs8YSBocmVmPSJtYWlsdG86YnJvY2tAcGhkYXRhLmlvIj5icm9ja0BwaGRhdGEuaW88L2E+ Jmd0OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHls ZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1s ZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRp diBkaXI9Imx0ciI+SGksPC9kaXY+PGRpdiBkaXI9Imx0ciI+PGJyPjwvZGl2PjxkaXYgZGlyPSJs dHIiPkkgYmVsaWV2ZSB5b3UgYXJlIGhpdHRpbmcgYSBrbm93biBpc3N1ZSBhbmQgSSB0aGluayBp ZiB5b3UgdXBncmFkZSB0byA1LjE1LjEgeW91JiMzOTtsbCBzZWUgdGhlIGZpeDo8L2Rpdj48ZGl2 IGRpcj0ibHRyIj48YnI+PC9kaXY+PGRpdiBkaXI9Imx0ciI+PGEgaHJlZj0iaHR0cHM6Ly93d3cu Y2xvdWRlcmEuY29tL2RvY3VtZW50YXRpb24vZW50ZXJwcmlzZS9yZWxlYXNlLW5vdGVzL3RvcGlj cy9rdWR1X2ZpeGVkX2lzc3Vlcy5odG1sI2ZpeGVkLTUtMTUtMSIgdGFyZ2V0PSJfYmxhbmsiPmh0 dHBzOi8vd3d3LmNsb3VkZXJhLmNvbS9kb2N1bWVudGF0aW9uL2VudGVycHJpc2UvcmVsZWFzZS1u b3Rlcy90b3BpY3Mva3VkdV9maXhlZF9pc3N1ZXMuaHRtbCNmaXhlZC01LTE1LTE8L2E+PC9kaXY+ PGRpdiBkaXI9Imx0ciI+PGJyPjwvZGl2PjxkaXYgZGlyPSJsdHIiPiZxdW90O0dyZWF0bHkgaW1w cm92ZWQgdGhlIHBlcmZvcm1hbmNlIG9mIG1hbnkgdHlwZXMgb2YgcXVlcmllcyBvbiB0YWJsZXMg ZnJvbSB3aGljaCBtYW55IHJvd3MgaGF2ZSBiZWVuIGRlbGV0ZWQuJnF1b3Q7PGJyPjxkaXY+PGJy PjwvZGl2PjxkaXY+SSB0aGluayB0aGVyZSBtaWdodCBoYXZlIGJlZW4gbW9yZSB0aGFuIG9uZSBK SVJBLCBidXQgaGVyZSBpcyBvbmUgb2YgdGhlIGZpeGVzOjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk aXY+PGEgaHJlZj0iaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9LVURVLTI0 MjkiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3Nl L0tVRFUtMjQyOTwvYT48YnI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGJyPjxkaXYg Y2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIj5PbiBUaHUsIE5vdiAyMiwgMjAxOCBh dCA5OjU3IEFNIFNlcmdlanMgQW5kcmVqZXZzICZsdDs8YSBocmVmPSJtYWlsdG86Uy5BbmRyZWpl dnNAaW50cnVtLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPlMuQW5kcmVqZXZzQGludHJ1bS5jb208L2E+ Jmd0OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHls ZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1s ZWZ0OjFleCI+DQoNCg0KDQoNCg0KPGRpdiBsYW5nPSJMViIgbGluaz0iIzA1NjNDMSIgdmxpbms9 IiM5NTRGNzIiPg0KPGRpdiBjbGFzcz0ibV8tNTk4MDI4MjI1Nzg5NjUzOTg2OW1fMjgzNDUyNjUw ODk1NDU0NjY3N1dvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IaSw8dT48L3U+ PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj5JcyB0aGVyZSBhIHdheSB0byBjYWxsIG9mIE1ham9yRGVsdGFD b21wYWN0aW9uT3AgZm9yIGEgdGFibGUvdGFibGV0L3Jvd3NldD88dT48L3U+PHU+PC91PjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj5XZeKAmXZlIGZhY2VkIHdpdGggYW4gaXNzdWU6PHU+PC91Pjx1PjwvdT48L3A+DQo8 cCBjbGFzcz0ibV8tNTk4MDI4MjI1Nzg5NjUzOTg2OW1fMjgzNDUyNjUwODk1NDU0NjY3N01zb0xp c3RQYXJhZ3JhcGgiPjx1PjwvdT48c3Bhbj4wLjxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90 O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+wqDCoMKgwqDCoMKgDQo8L3NwYW4+PC9zcGFuPjx1Pjwv dT5LdWR1IHRhYmxlIGlzIGNyZWF0ZWQ8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJtXy01 OTgwMjgyMjU3ODk2NTM5ODY5bV8yODM0NTI2NTA4OTU0NTQ2Njc3TXNvTGlzdFBhcmFncmFwaCI+ PHU+PC91PjxzcGFuPjEuPHNwYW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJv bWFuJnF1b3Q7Ij7CoMKgwqDCoMKgwqANCjwvc3Bhbj48L3NwYW4+PHU+PC91PkRhdGEgaXMgaW5z ZXJ0ZWQgdGhlcmU8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJtXy01OTgwMjgyMjU3ODk2 NTM5ODY5bV8yODM0NTI2NTA4OTU0NTQ2Njc3TXNvTGlzdFBhcmFncmFwaCI+PHU+PC91PjxzcGFu PjIuPHNwYW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij7C oMKgwqDCoMKgwqANCjwvc3Bhbj48L3NwYW4+PHU+PC91PlJ1biBzZWxlY3QgcXVlcnkgLSBpdCBn b2VzIGZhc3QgKG1hdHRlciBvZiBhIGZldyBzZWNvbmRzKTx1PjwvdT48dT48L3U+PC9wPg0KPHAg Y2xhc3M9Im1fLTU5ODAyODIyNTc4OTY1Mzk4NjltXzI4MzQ1MjY1MDg5NTQ1NDY2NzdNc29MaXN0 UGFyYWdyYXBoIj48dT48L3U+PHNwYW4+My48c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtU aW1lcyBOZXcgUm9tYW4mcXVvdDsiPsKgwqDCoMKgwqDCoA0KPC9zcGFuPjwvc3Bhbj48dT48L3U+ RGVsZXRlIGFsbCBkYXRhIGZyb20gdGhlIHRhYmxlIChidXQgbm90IGRyb3BwaW5nIHRoZSB0YWJs ZTxzcGFuIGxhbmc9IkVOLVVTIj4pPC9zcGFuPjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9 Im1fLTU5ODAyODIyNTc4OTY1Mzk4NjltXzI4MzQ1MjY1MDg5NTQ1NDY2NzdNc29MaXN0UGFyYWdy YXBoIj48dT48L3U+PHNwYW4+NC48c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBO ZXcgUm9tYW4mcXVvdDsiPsKgwqDCoMKgwqDCoA0KPC9zcGFuPjwvc3Bhbj48dT48L3U+UnVuIHNl bGVjdCBxdWVyeSAtIGl0IGdvZXMgc2xvdyAoNC02IG1pbnV0ZXMpPHU+PC91Pjx1PjwvdT48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+SW52ZXN0aWdhdGluZyBhbmQgcmVhZGluZyBkb2N1bWVudGF0aW9uIG9mIEt1ZHUg aGFzIGxlYWRlZCB0byBhIHRob3VnaHQgdGhhdCBkZWxldGUgb3BlcmF0aW9ucyBhcmUgZG9uZSBs b2dpY2FsbHksIGJ1dCBwaHlzaWNhbGx5IHRoZSB0YWJsZSBjb250YWlucyB3cml0dGVuIGRhdGEg YW5kIGRlbGV0ZXMgYXJlIGFwcGxpZWQgZWFjaCB0aW1lIG9uIHRvcCBvZiBpdC48dT48L3U+PHU+ PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkkgaGFkIGEgbG9vayBhdCBrdWR1IHRhYmxl dCBhbmQgdGhlcmUgYXJlIHF1aXRlIGxhcmdlIOKAnHJlZG/igJ0gYmxvY2tzIChzZWUgb25lIG9m IHJvd3NldCBleGFtcGxlcyBiZWxvdykuPHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj5UaGVyZSB3YXMgYSB0aG91Z2h0IHRoYXQgY29tcHJlc3Npb24gYW5kIGVuY29kaW5n IHBsYXkgdGhlaXIgcm9sZSAocmVkdWNpbmcgdGhlIGNoYW5jZXMgdG8gcnVuIGNvbXBhY3Rpb24p LCBidXQgcmVtb3ZpbmcgdGhlbSAoa2VlcGluZyBjb2x1bW4gZGVmYXVsdDxzcGFuIGxhbmc9IkVO LVVTIj5zPC9zcGFuPikgaGFzbuKAmXQgaGVscGVkIGFzIHdlbGwuPHU+PC91Pjx1PjwvdT48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5XZSBydW4gdHNlcnZlcnM8dT48L3U+PHU+PC91PjwvcD4N CjxwIGNsYXNzPSJtXy01OTgwMjgyMjU3ODk2NTM5ODY5bV8yODM0NTI2NTA4OTU0NTQ2Njc3TXNv TGlzdFBhcmFncmFwaCI+PHU+PC91PjxzcGFuPi08c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVv dDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPsKgwqDCoMKgwqDCoMKgwqDCoA0KPC9zcGFuPjwvc3Bh bj48dT48L3U+bWFpbnRlbmFuY2VfbWFuYWdlcl9udW1fdGhyZWFkcz0xMCAoaW5jcmVhc2VkIGNv bXBhcmluZyB0byBkZWZhdWx0KTx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Im1fLTU5ODAy ODIyNTc4OTY1Mzk4NjltXzI4MzQ1MjY1MDg5NTQ1NDY2NzdNc29MaXN0UGFyYWdyYXBoIj48dT48 L3U+PHNwYW4+LTxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90O1RpbWVzIE5ldyBSb21hbiZx dW90OyI+wqDCoMKgwqDCoMKgwqDCoMKgDQo8L3NwYW4+PC9zcGFuPjx1PjwvdT50YWJsZXRfZGVs dGFfc3RvcmVfbWFqb3JfY29tcGFjdF9taW5fcmF0aW89MC4xMDAwMDAwMDE0OTAxMTYxMiAoZGVm YXVsdCB2YWx1ZSk8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJtXy01OTgwMjgyMjU3ODk2 NTM5ODY5bV8yODM0NTI2NTA4OTU0NTQ2Njc3TXNvTGlzdFBhcmFncmFwaCI+PHU+PC91PjxzcGFu Pi08c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPsKg wqDCoMKgwqDCoMKgwqDCoA0KPC9zcGFuPjwvc3Bhbj48dT48L3U+a3VkdSAxLjcuMC1jZGg1LjE1 LjA8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1Pjwv dT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5Gcm9tIGRvY3VtZW50YXRpb24gYW5kIGNvbW1l bnRzIGluIGNvZGUgSSBzYXcgdGhlIGRlc2NyaXB0aW9uIG9mIHRhYmxldF9kZWx0YV9zdG9yZV9t YWpvcl9jb21wYWN0X21pbl9yYXRpbzog4oCcTWluaW11bSByYXRpbyBvZiBzaXplb2YoZGVsdGFz KSB0byBzaXplb2YoYmFzZSBkYXRhKSBiZWZvcmUgYSBtYWpvciBjb21wYWN0aW9uLuKAnTx1Pjwv dT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+QW5kIOKAnE1ham9yIGNvbXBhY3Rp b25zOiB0aGUgc2NvcmUgd2lsbCBiZSB0aGUgcmVzdWx0IG9mIHNpemVvZihkZWx0YXMpL3NpemVv ZihiYXNlIGRhdGEpLCB1bmxlc3MgaXQgaXMgc21hbGxlciB0aGFuIHRhYmxldF9kZWx0YV9zdG9y ZV9tYWpvcl9jb21wYWN0X21pbl9yYXRpbyBvciBpZiB0aGUgZGVsdGEgZmlsZXMgYXJlIG9ubHkg Y29tcG9zZWQgb2YgZGVsZXRlcywgaW4gd2hpY2ggY2FzZSB0aGUgc2NvcmUgaXMNCiBicm91Z2h0 IGRvd24gdG8gemVyby7igJ08dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi PlNvIGJhc2ljYWxseSB0aGUgdGFibGUgc3RheXMgaW4gPHNwYW4gbGFuZz0iRU4tVVMiPnN1Y2gg PC9zcGFuPg0Kc3RhdGUgZm9yIG1vcmUgdGhhbiBhIGRheS48dT48L3U+PHU+PC91PjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj5XaGlsZSBtYWpvcml0eSBvZiB0YWJsZXMgd2lsbCBoYXZlIG1vc3RseSBzY2FucywgdGhl cmUgd2lsbCBiZSBhIGNvdXBsZSBvZiBsYXJnZSB0YWJsZXMgd2l0aCBsYXJnZSBudW1iZXIgb2Yg ZGVsZXRpb25zIChidXQgbm90IG9mIGFsbCBkYXRhKS48dT48L3U+PHU+PC91PjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPkNvdWxkIHlvdSBhZHZpc2UgaG93IHRvIGltcHJvdmUgc2NhbnMgYWZ0 ZXIgbGFyZ2UgZGVsZXRpb25zPzx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHU+PC91PsKgPHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPmJsb2NrLWlkIHwg YmxvY2sta2luZMKgIHwgY29sdW1ufCBjZmlsZS1zaXplIHwgY2ZpbGUtZGF0YS10eXBlIHzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNmaWxlLWRlbHRh LXN0YXRzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IGNmaWxlLWVuY29kaW5nwqAgfCBjZmlsZS1jb21wcmVzc2lvbjx1PjwvdT48dT48L3U+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0gKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS08dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjI0NjkzNTg2IHwgY29sdW1uwqDCoMKgwqDCoCB8IHZhcjHCoCB8IDIuODBNwqDCoMKgwqDC oCB8IGludDY0wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgQklU X1NIVUZGTEXCoMKgwqDCoCB8IE5PX0NPTVBSRVNTSU9OPHU+PC91Pjx1PjwvdT48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj4yNDY5MzU4NyB8IGNvbHVtbsKgwqDCoMKgwqAgfCB2YXIywqAgfCAx MDAuN0vCoMKgwqDCoCB8IGludDY0wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHwgQklUX1NIVUZGTEXCoMKgwqDCoCB8IE5PX0NPTVBSRVNTSU9OPHU+PC91Pjx1Pjwv dT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4yNDY5MzU4OCB8IGNvbHVtbsKgwqDCoMKgwqAg fCB2YXIzwqAgfCA0Ljk1TcKgwqDCoMKgwqAgfCBpbnQ2NMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IEJJVF9TSFVGRkxFwqDCoMKgIMKgfCBOT19DT01QUkVTU0lP Tjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+MjQ2OTM1ODkgfCBjb2x1 bW7CoMKgwqDCoMKgIHwgdmFyNMKgIHwgMS41OE3CoMKgwqDCoMKgIHwgc3RyaW5nwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IERJQ1RfRU5DT0RJTkfCoMKgIHwgTFo0 PHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4yNDY5MzU5MCB8IGNvbHVt bsKgwqDCoMKgwqAgfCB2YXI1wqAgfCA4LjgyTcKgwqDCoMKgwqAgfCBzdHJpbmfCoMKgwqDCoMKg wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgUExBSU5fRU5DT0RJTkfCoCB8IExaNDx1 PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+MjQ2OTM1OTEgfCBjb2x1bW7C oMKgwqDCoMKgIHwgdmFyNsKgIHwgMi43S8KgwqDCoMKgwqDCoCB8IHN0cmluZ8KgwqDCoMKgwqDC oMKgwqDCoCB8wqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBESUNUX0VOQ09ESU5HwqDCoCB8IExaNDx1 PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+MjQ3MDA2OTEgfCByZWRvwqDC oMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoCB8IDE0LjA0TcKgwqDCoMKgIHwgYmluYXJ5wqDCoMKg wqDCoMKgwqDCoMKgIHwgdHMgcmFuZ2U9WzYzMTkzNjM5MzAwNjUxMDA4MDAsIDYzMTkzNjQ5MDgx MjkxODk5MjZdLCBkZWxldGVfY291bnQ9WzIxOTA2NDldLCByZWluc2VydF9jb3VudD1bMF0sIHVw ZGF0ZV9jb3VudHNfYnlfY29sX2lkPVtdIHwgUExBSU5fRU5DT0RJTkfCoCB8IExaNDx1PjwvdT48 dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+MjQ2OTM1OTIgfCBibG9vbcKgwqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgIHwgNS4wNE3CoMKgwqDCoMKgIHwgYmluYXJ5wqDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IFBMQUlOX0VOQ09ESU5HwqAgfCBOT19DT01Q UkVTU0lPTjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+MjQ2OTM1OTMg fCBhZGhvYy1pbmRleCB8wqDCoMKgwqDCoMKgIHwgOC45NE3CoMKgwqDCoMKgIHwgYmluYXJ5wqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqB8IFBSRUZJWF9FTkNPRElORyB8 IExaNDx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+ PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i Zm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlm O2NvbG9yOiMxZjQ5N2QiPktpbmQgUmVnYXJkcyw8dT48L3U+PHU+PC91Pjwvc3Bhbj48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZTox MC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMWY0 OTdkIj5TZXJnZWpzIEFuZHJlamV2czx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KDQo8L2Js b2NrcXVvdGU+PC9kaXY+DQo8L2Jsb2NrcXVvdGU+PC9kaXY+DQo= --000000000000d91290057b8b39fa--