Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sorYf-00EMSs-RR for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Sep 2024 21:40:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sorYf-000vut-Ib for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Sep 2024 21:40:57 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sorYe-000vuI-At for pgsql-hackers@lists.postgresql.org; Thu, 12 Sep 2024 21:40:57 +0000 Received: from relay6-d.mail.gandi.net ([2001:4b98:dc4:8::226]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sorYY-000saV-6S for pgsql-hackers@lists.postgresql.org; Thu, 12 Sep 2024 21:40:55 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 4F127C0004; Thu, 12 Sep 2024 21:40:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vondra.me; s=gm1; t=1726177249; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=NL5UpqQzF95Btd3AEtsFX8C9JW67+ivGENIsyIxPsFQ=; b=OHaSydUqNv93BrPdakp269oLo/qzW611VvIO1/ItKjCu/cNgQCehgSLwy3EoMGwGdj3T0s O6OGU9p0Yz0g/1lENQ4W/dTB3RumUQEWMDtaFukj4HxY6pxqaaX4J260WlITJ7hDpznpwo WPvWmmzv9l5gi98wNAPMLb3smvbJvWJxP8SQUp74CVx2i+kXfITv+8tcVJkwW5f1dnQp3a lg1k0Q9ZXm8JpUkGkpmuq/6mJ7izakTHpHDMhHCBR74HEVhvzr7gYtcxYFh61SpCqqH2eA QyaSc6O4Hx7BXRvqkuwMRd4HrX/L1dzz0CIUam1cXBdPc8WT0xA5Zt1hToMfcQ== Content-Type: multipart/mixed; boundary="------------xDvyz2FLlM3bSG98iLe0rV1u" Message-ID: <0775ba8a-920c-4d37-b202-989a90b6ee4c@vondra.me> Date: Thu, 12 Sep 2024 23:40:47 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: scalability bottlenecks with (many) partitions (and more) From: Tomas Vondra To: Robert Haas Cc: PostgreSQL Hackers , Andres Freund References: <510b887e-c0ce-4a0c-a17a-2c6abb8d9a5c@enterprisedb.com> <9266c8df-0df7-4605-ba5a-b204c5e52586@enterprisedb.com> <52afd566-d110-43ea-ae72-69349d4414f6@vondra.me> <52f026c4-6c4e-4de2-bd78-609091d7c772@vondra.me> <14cd8763-c905-4705-99c5-cbcc5db06f50@vondra.me> Content-Language: en-US In-Reply-To: <14cd8763-c905-4705-99c5-cbcc5db06f50@vondra.me> X-GND-Sasl: tomas@vondra.me List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------xDvyz2FLlM3bSG98iLe0rV1u Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, I've spent quite a bit of time trying to identify cases where having more fast-path lock slots could be harmful, without any luck. I started with the EPYC machine I used for the earlier tests, but found nothing, except for a couple cases unrelated to this patch, because it affects even cases without the patch applied at all. More like random noise or maybe some issue with the VM (or differences to the VM used earlier). I pushed the results to githus [1] anyway, if anyone wants to look. So I switched to my smaller machines, and ran a simple test on master, with the hard-coded arrays, and with the arrays moves out of PGPROC (and sized per max_locks_per_transaction). I was looking for regressions, so I wanted to test a case that can't benefit from fast-path locking, while paying the costs. So I decided to do pgbench -S with 4 partitions, because that fits into the 16 slots we had before, and scale 1 to keep everything in memory. And then did a couple read-only runs, first with 64 locks/transaction (default), then with 1024 locks/transaction. Attached is a shell script I used to collect this - it creates and removes clusters, so be careful. Should be fairly obvious what it tests and how. The results for max_locks_per_transaction=64 look like this (the numbers are throughput): machine mode clients master built-in with-guc --------------------------------------------------------- i5 prepared 1 14970 14991 14981 4 51638 51615 51388 simple 1 14042 14136 14008 4 48705 48572 48457 ------------------------------------------------------ xeon prepared 1 13213 13330 13170 4 49280 49191 49263 16 151413 152268 151560 simple 1 12250 12291 12316 4 45910 46148 45843 16 141774 142165 142310 And compared to master machine mode clients built-in with-guc ------------------------------------------------- i5 prepared 1 100.14% 100.08% 4 99.95% 99.51% simple 1 100.67% 99.76% 4 99.73% 99.49% ---------------------------------------------- xeon prepared 1 100.89% 99.68% 4 99.82% 99.97% 16 100.56% 100.10% simple 1 100.34% 100.54% 4 100.52% 99.85% 16 100.28% 100.38% So, no difference whatsoever - it's +/- 0.5%, well within random noise. And with max_locks_per_transaction=1024 the story is exactly the same: machine mode clients master built-in with-guc --------------------------------------------------------- i5 prepared 1 15000 14928 14948 4 51498 51351 51504 simple 1 14124 14092 14065 4 48531 48517 48351 xeon prepared 1 13384 13325 13290 4 49257 49309 49345 16 151668 151940 152201 simple 1 12357 12351 12363 4 46039 46126 46201 16 141851 142402 142427 machine mode clients built-in with-guc ------------------------------------------------- i5 prepared 1 99.52% 99.65% 4 99.71% 100.01% simple 1 99.77% 99.58% 4 99.97% 99.63% xeon prepared 1 99.56% 99.30% 4 100.11% 100.18% 16 100.18% 100.35% simple 1 99.96% 100.05% 4 100.19% 100.35% 16 100.39% 100.41% with max_locks_per_transaction=1024, it's fair to expect the fast-path locking to be quite beneficial. Of course, it's possible the GUC is set this high because of some rare issue (say, to run pg_dump, which needs to lock everything). I did look at docs if anything needs updating, but I don't think so. The SGML docs only talk about fast-path locking at fairly high level, not about how many we have etc. Same for src/backend/storage/lmgr/README, which is focusing on the correctness of fast-path locking, and that's not changed by this patch. I also cleaned up (removed) some of the Asserts checking that we got a valid group / slot index. I don't think this really helped in practice, once I added asserts to the macros. Anyway, at this point I'm quite happy with this improvement. I didn't have any clear plan when to commit this, but I'm considering doing so sometime next week, unless someone objects or asks for some additional benchmarks etc. One thing I'm not quite sure about yet is whether to commit this as a single change, or the way the attached patches do that, with the first patch keeping the larger array in PGPROC and the second patch making it separate and sized on max_locks_per_transaction ... Opinions? regards [1] https://github.com/tvondra/pg-lock-scalability-results -- Tomas Vondra --------------xDvyz2FLlM3bSG98iLe0rV1u Content-Type: text/x-patch; charset=UTF-8; name="v20240912-0001-Increase-the-number-of-fast-path-lock-slot.patch" Content-Disposition: attachment; filename*0="v20240912-0001-Increase-the-number-of-fast-path-lock-slot.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3YWU2N2ExNjJmZGNiODA3NDZiZWQ0NTI2MGZhOTM3ZmMwMjViMDhiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVGh1LCAxMiBTZXAgMjAyNCAyMzowOTo0MSArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjQwOTEyIDEvMl0gSW5jcmVhc2UgdGhlIG51bWJlciBvZiBmYXN0LXBhdGggbG9jayBz bG90cwoKVGhlIGZhc3QtcGF0aCBsb2NraW5nIGludHJvZHVjZWQgaW4gOS4yIGFsbG93ZWQg ZWFjaCBiYWNrZW5kIHRvIGFjcXVpcmUKdXAgdG8gMTYgcmVsYXRpb24gbG9ja3MgY2hlYXBs eSwgcHJvdmlkZWQgdGhlIGxvY2sgbGV2ZWwgYWxsb3dzIHRoYXQuCklmIGEgYmFja2VuZCBu ZWVkcyB0byBob2xkIG1vcmUgbG9ja3MsIGl0IGhhcyB0byBpbnNlcnQgdGhlbSBpbnRvIHRo ZQpyZWd1bGFyIGxvY2sgdGFibGUgaW4gc2hhcmVkIG1lbW9yeS4gVGhpcyBpcyBjb25zaWRl cmFibHkgbW9yZQpleHBlbnNpdmUsIGFuZCBvbiBtYW55LWNvcmUgc3lzdGVtcyBtYXkgYmUg c3ViamVjdCB0byBjb250ZW50aW9uLgoKVGhlIGxpbWl0IG9mIDE2IGVudHJpZXMgd2FzIGFs d2F5cyByYXRoZXIgbG93LCBldmVuIHdpdGggc2ltcGxlIHF1ZXJpZXMKYW5kIHNjaGVtYXMg d2l0aCBvbmx5IGEgZmV3IHRhYmxlcy4gV2UgaGF2ZSB0byBsb2NrIGFsbCByZWxhdGlvbnMg LSBub3QKanVzdCB0YWJsZXMsIGJ1dCBhbHNvIGluZGV4ZXMsIHZpZXdzLCBldGMuIE1vcmVv dmVyLCBmb3IgcGxhbm5pbmcgd2UKbmVlZCB0byBsb2NrIGFsbCByZWxhdGlvbnMgdGhhdCBt aWdodCBiZSB1c2VkIGluIHRoZSBwbGFuLCBub3QganVzdAp0aG9zZSB0aGF0IGFjdHVhbGx5 IGdldCB1c2VkIGluIHRoZSBmaW5hbCBwbGFuLiBJdCBvbmx5IHRha2VzIGEgY291cGxlCnRh YmxlcyB3aXRoIG11bHRpcGxlIGluZGV4ZXMgdG8gbmVlZCBtb3JlIHRoYW4gMTYgbG9ja3Mu IEl0IHdhcyBxdWl0ZQpjb21tb24gdG8gZmlsbCBhbGwgZmFzdC1wYXRoIHNsb3RzLgoKQXMg cGFydGl0aW9uaW5nIGdldHMgdXNlZCBtb3JlIHdpZGVseSwgd2l0aCBtb3JlIGFuZCBtb3Jl IHBhcnRpdGlvbnMsCnRoaXMgbGltaXQgaXMgdHJpdmlhbCB0byBoaXQsIHdpdGggY29tcGxl eCBxdWVyaWVzIGVhc2lseSB1c2luZyBodW5kcmVkcwpvciBldmVuIHRob3VzYW5kcyBvZiBs b2Nrcy4gRm9yIHdvcmtsb2FkcyBkb2luZyBhIGxvdCBvZiBJL08gdGhpcyBpcyBub3QKbm90 aWNlYWJsZSwgYnV0IG9uIGxhcmdlIG1hY2hpbmVzIHdpdGggZW5vdWdoIFJBTSB0byBrZWVw IHRoZSBkYXRhIGluCm1lbW9yeSwgdGhlIGFjY2VzcyB0byB0aGUgc2hhcmVkIGxvY2sgdGFi bGUgbWF5IGJlIGEgc2VyaW91cyBpc3N1ZS4KClRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhpcyBi eSBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgZmFzdC1wYXRoIHNsb3RzCmZyb20gMTYgdG8g MTAyNC4gVGhlIHNsb3RzIHJlbWFpbiBpbiBQR1BST0MsIGFuZCBhcmUgb3JnYW5pemVkIGFz IGFuCmFycmF5IG9mIDE2LXNsb3QgZ3JvdXBzIChlYWNoIGdyb3VwIGJlaW5nIGVmZmVjdGl2 ZWx5IGEgY2xvbmUgb2YgdGhlCm9yaWdpbmFsIGZhc3QtcGF0aCBhcHByb2FjaCkuIEluc3Rl YWQgb2YgYWNjZXNzaW5nIHRoaXMgYXMgYSBiaWcgaGFzaAp0YWJsZSB3aXRoIG9wZW4gYWRk cmVzc2luZywgd2UgdHJlYXQgdGhpcyBhcyBhIDE2LXdheSBzZXQgYXNzb2NpYXRpdmUKY2Fj aGUuIEVhY2ggcmVsYXRpb24gKGlkZW50aWZpZWQgYnkgYSAicmVsaWQiIE9JRCkgaXMgbWFw cGVkIHRvIGEKcGFydGljdWxhciAxNi1zbG90IGdyb3VwIGJ5IGNhbGN1bGF0aW5nIGEgaGFz aAoKICAgIGgocmVsaWQpID0gKChyZWxpZCAqIFApIG1vZCBOKQoKd2hlcmUgUCBpcyBhIGhh cmQtY29kZWQgcHJpbWUsIGFuZCBOIGlzIHRoZSBudW1iZXIgb2YgZ3JvdXBzLiBUaGlzIGlz Cm5vdCBhIGdyZWF0IGhhc2ggZnVuY3Rpb24sIGJ1dCBpdCB3b3JrcyB3ZWxsIGVub3VnaCAt IHRoZSBtYWluIHB1cnBvc2UKaXMgdG8gcHJldmVudCAiaG90IGdyb3VwcyIgd2l0aCBydW5z IG9mIGNvbnNlY3V0aXZlIE9JRHMsIHdoaWNoIG1pZ2h0CmZpbGwgc29tZSBvZiB0aGUgZmFz dC1wYXRoIGdyb3Vwcy4gVGhlIG11bHRpcGxpY2F0aW9uIGJ5IFAgZW5zdXJlcyB0aGF0LgpJ ZiB0aGUgT0lEcyBhcmUgYWxyZWFkeSBzcHJlYWQgb3V0LCB0aGUgaGFzaCBzaG91bGQgbm90 IGdyb3VwIHRoZW0uCgpUaGUgZ3JvdXBzIGFyZSBwcm9jZXNzZWQgYnkgbGluZWFyIHNlYXJj aC4gV2l0aCBvbmx5IDE2IGVudHJpZXMgdGhpcyBpcwpjaGVhcCwgYW5kIHRoZSBncm91cHMg aGF2ZSB2ZXJ5IGdvb2QgbG9jYWxpdHkuCgpUcmVhdGluZyB0aGlzIGFzIGEgc2ltcGxlIGhh c2ggdGFibGUgd2l0aCBvcGVuIGFkZHJlc3Npbmcgd291bGQgbm90IGJlCmVmZmljaWVudCwg ZXNwZWNpYWxseSBvbmNlIHRoZSBoYXNoIHRhYmxlIGlzIGdldHRpbmcgYWxtb3N0IGZ1bGwu IFRoZQp1c3VhbCBzb2x1dGlvbiBpcyB0byBncm93IHRoZSB0YWJsZSwgYnV0IGZvciBoYXNo IHRhYmxlcyBpbiBzaGFyZWQKbWVtb3J5IHRoYXQncyBub3QgdHJpdmlhbC4gSXQgd291bGQg YWxzbyBoYXZlIHdvcnNlIGxvY2FsaXR5LCBkdWUgdG8KbW9yZSByYW5kb20gYWNjZXNzLgoK THVja2lseSwgZmFzdC1wYXRoIGxvY2tpbmcgYWxyZWFkeSBoYXMgYSBzaW1wbGUgc29sdXRp b24gdG8gZGVhbCB3aXRoIGEKZnVsbCBoYXNoIHRhYmxlLiBUaGUgbG9jayBjYW4gYmUgc2lt cGx5IGluc2VydGVkIGludG8gdGhlIHNoYXJlZCBsb2NrCnRhYmxlLCBqdXN0IGxpa2UgYmVm b3JlLiBPZiBjb3Vyc2UsIGlmIHRoaXMgaGFwcGVucyB0b28gb2Z0ZW4sIHRoYXQKcmVkdWNl cyB0aGUgYmVuZWZpdCBvZiBmYXN0LXBhdGggbG9ja2luZy4KClRoaXMgcGF0Y2ggaGFyZC1j b2RlcyB0aGUgbnVtYmVyIG9mIGdyb3VwcyB0byA2NCwgd2hpY2ggbWVhbnMgMTAyNApmYXN0 LXBhdGggbG9ja3MuIEFzIGFsbCB0aGUgaW5mb3JtYXRpb24gaXMgc3RpbGwgc3RvcmVkIGlu IFBHUFJPQywgdGhpcwpncm93cyBQR1BST0MgYnkgYWJvdXQgNC41a0IgKGZyb20gfjg0MEIg dG8gfjVrQikuIFRoaXMgaXMgYSB0cmFkZSBvZmYKZXhjaGFuZ2luZyBtZW1vcnkgZm9yIGNo ZWFwZXIgbG9ja2luZy4KClVsdGltYXRlbHksIHRoZSBudW1iZXIgb2YgZmFzdC1wYXRoIHNs b3RzIHNob3VsZCBub3QgYmUgaGFyZCBjb2RlZCwgYnV0CmFkanVzdGFibGUgYmFzZWQgb24g d2hhdCB0aGUgd29ya2xvYWQgZG9lcywgcGVyaGFwcyB1c2luZyBhIEdVQy4gVGhhdApob3dl dmVyIG1lYW5zIGl0IGNhbid0IGJlIHN0b3JlZCBpbiBQR1BST0MgZGlyZWN0bHkuCi0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyB8IDExOCArKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICB8ICAg OCArKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IDgzYjk5YTk4ZjA4Li5kMDUz YWUwYzQwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCkBAIC0xNjcsNyArMTY3LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgVHdvUGhhc2VMb2NrUmVjb3JkCiAgKiBvdXIgbG9ja3MgdG8g dGhlIHByaW1hcnkgbG9jayB0YWJsZSwgYnV0IGl0IGNhbiBuZXZlciBiZSBsb3dlciB0aGFu IHRoZQogICogcmVhbCB2YWx1ZSwgc2luY2Ugb25seSB3ZSBjYW4gYWNxdWlyZSBsb2NrcyBv biBvdXIgb3duIGJlaGFsZi4KICAqLwotc3RhdGljIGludAlGYXN0UGF0aExvY2FsVXNlQ291 bnQgPSAwOworc3RhdGljIGludAlGYXN0UGF0aExvY2FsVXNlQ291bnRzW0ZQX0xPQ0tfR1JP VVBTX1BFUl9CQUNLRU5EXTsKIAogLyoKICAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIHJl bGF0aW9uIGV4dGVuc2lvbiBsb2NrIGlzIGhlbGQgYnkgdGhpcyBiYWNrZW5kLgpAQCAtMTg0 LDIzICsxODQsNTMgQEAgc3RhdGljIGludAlGYXN0UGF0aExvY2FsVXNlQ291bnQgPSAwOwog ICovCiBzdGF0aWMgYm9vbCBJc1JlbGF0aW9uRXh0ZW5zaW9uTG9ja0hlbGQgUEdfVVNFRF9G T1JfQVNTRVJUU19PTkxZID0gZmFsc2U7CiAKKy8qCisgKiBNYWNyb3MgdG8gY2FsY3VsYXRl IHRoZSBncm91cCBhbmQgaW5kZXggZm9yIGEgcmVsYXRpb24uCisgKgorICogVGhlIGZvcm11 bGEgaXMgYSBzaW1wbGUgaGFzaCBmdW5jdGlvbiwgZGVzaWduZWQgdG8gc3ByZWFkIHRoZSBP SURzIGEgYml0LAorICogc28gdGhhdCBldmVuIGNvbnRpZ3VvdXMgdmFsdWVzIGVuZCB1cCBp biBkaWZmZXJlbnQgZ3JvdXBzLiBJbiBtb3N0IGNhc2VzCisgKiB0aGVyZSB3aWxsIGJlIGdh cHMgYW55d2F5LCBidXQgdGhlIG11bHRpcGxpY2F0aW9uIHNob3VsZCBoZWxwIGEgYml0Lgor ICoKKyAqIFRoZSBzZWxlY3RlZCB2YWx1ZSAoNDkxNTcpIGlzIGEgcHJpbWUgbm90IHRvbyBj bG9zZSB0byAyXmssIGFuZCBpdCdzCisgKiBzbWFsbCBlbm91Z2ggdG8gbm90IGNhdXNlIG92 ZXJmbG93cyAoaW4gNjQtYml0KS4KKyAqLworI2RlZmluZSBGQVNUX1BBVEhfTE9DS19SRUxf R1JPVVAocmVsKSBcCisJKCgodWludDY0KSAocmVsKSAqIDQ5MTU3KSAlIEZQX0xPQ0tfR1JP VVBTX1BFUl9CQUNLRU5EKQorCisvKiBDYWxjdWxhdGUgaW5kZXggaW4gdGhlIHdob2xlIHBl ci1iYWNrZW5kIGFycmF5IG9mIGxvY2sgc2xvdHMuICovCisjZGVmaW5lIEZQX0xPQ0tfU0xP VF9JTkRFWChncm91cCwgaW5kZXgpIFwKKwkoQXNzZXJ0TWFjcm8oKChncm91cCkgPj0gMCkg JiYgKChncm91cCkgPCBGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORCkpLCBcCisJIEFzc2Vy dE1hY3JvKCgoaW5kZXgpID49IDApICYmICgoaW5kZXgpIDwgRlBfTE9DS19TTE9UU19QRVJf R1JPVVApKSwgXAorCSAoKGdyb3VwKSAqIEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQICsgKGlu ZGV4KSkpCisKKy8qCisgKiBHaXZlbiBhIGxvY2sgaW5kZXggKGludG8gdGhlIHBlci1iYWNr ZW5kIGFycmF5KSwgY2FsY3VsYXRlZCB1c2luZyB0aGUKKyAqIEZQX0xPQ0tfU0xPVF9JTkRF WCBtYWNybywgY2FsY3VsYXRlIGdyb3VwIGFuZCBpbmRleCAod2l0aGluIHRoZSBncm91cCku CisgKi8KKyNkZWZpbmUgRkFTVF9QQVRIX0xPQ0tfR1JPVVAoaW5kZXgpCVwKKwkoQXNzZXJ0 TWFjcm8oKChpbmRleCkgPj0gMCkgJiYgKChpbmRleCkgPCBGUF9MT0NLX1NMT1RTX1BFUl9C QUNLRU5EKSksIFwKKwkgKChpbmRleCkgLyBGUF9MT0NLX1NMT1RTX1BFUl9HUk9VUCkpCisj ZGVmaW5lIEZBU1RfUEFUSF9MT0NLX0lOREVYKGluZGV4KQlcCisJKEFzc2VydE1hY3JvKCgo aW5kZXgpID49IDApICYmICgoaW5kZXgpIDwgRlBfTE9DS19TTE9UU19QRVJfQkFDS0VORCkp LCBcCisJICgoaW5kZXgpICUgRlBfTE9DS19TTE9UU19QRVJfR1JPVVApKQorCiAvKiBNYWNy b3MgZm9yIG1hbmlwdWxhdGluZyBwcm9jLT5mcExvY2tCaXRzICovCiAjZGVmaW5lIEZBU1Rf UEFUSF9CSVRTX1BFUl9TTE9UCQkJMwogI2RlZmluZSBGQVNUX1BBVEhfTE9DS05VTUJFUl9P RkZTRVQJCTEKICNkZWZpbmUgRkFTVF9QQVRIX01BU0sJCQkJCSgoMSA8PCBGQVNUX1BBVEhf QklUU19QRVJfU0xPVCkgLSAxKQogI2RlZmluZSBGQVNUX1BBVEhfR0VUX0JJVFMocHJvYywg bikgXAotCSgoKHByb2MpLT5mcExvY2tCaXRzID4+IChGQVNUX1BBVEhfQklUU19QRVJfU0xP VCAqIG4pKSAmIEZBU1RfUEFUSF9NQVNLKQorCSgoKHByb2MpLT5mcExvY2tCaXRzWyhuKS8x Nl0gPj4gKEZBU1RfUEFUSF9CSVRTX1BFUl9TTE9UICogRkFTVF9QQVRIX0xPQ0tfSU5ERVgo bikpKSAmIEZBU1RfUEFUSF9NQVNLKQogI2RlZmluZSBGQVNUX1BBVEhfQklUX1BPU0lUSU9O KG4sIGwpIFwKIAkoQXNzZXJ0TWFjcm8oKGwpID49IEZBU1RfUEFUSF9MT0NLTlVNQkVSX09G RlNFVCksIFwKIAkgQXNzZXJ0TWFjcm8oKGwpIDwgRkFTVF9QQVRIX0JJVFNfUEVSX1NMT1Qr RkFTVF9QQVRIX0xPQ0tOVU1CRVJfT0ZGU0VUKSwgXAogCSBBc3NlcnRNYWNybygobikgPCBG UF9MT0NLX1NMT1RTX1BFUl9CQUNLRU5EKSwgXAotCSAoKGwpIC0gRkFTVF9QQVRIX0xPQ0tO VU1CRVJfT0ZGU0VUICsgRkFTVF9QQVRIX0JJVFNfUEVSX1NMT1QgKiAobikpKQorCSAoKGwp IC0gRkFTVF9QQVRIX0xPQ0tOVU1CRVJfT0ZGU0VUICsgRkFTVF9QQVRIX0JJVFNfUEVSX1NM T1QgKiAoRkFTVF9QQVRIX0xPQ0tfSU5ERVgobikpKSkKICNkZWZpbmUgRkFTVF9QQVRIX1NF VF9MT0NLTU9ERShwcm9jLCBuLCBsKSBcCi0JIChwcm9jKS0+ZnBMb2NrQml0cyB8PSBVSU5U NjRDT05TVCgxKSA8PCBGQVNUX1BBVEhfQklUX1BPU0lUSU9OKG4sIGwpCisJIChwcm9jKS0+ ZnBMb2NrQml0c1tGQVNUX1BBVEhfTE9DS19HUk9VUChuKV0gfD0gVUlOVDY0Q09OU1QoMSkg PDwgRkFTVF9QQVRIX0JJVF9QT1NJVElPTihuLCBsKQogI2RlZmluZSBGQVNUX1BBVEhfQ0xF QVJfTE9DS01PREUocHJvYywgbiwgbCkgXAotCSAocHJvYyktPmZwTG9ja0JpdHMgJj0gfihV SU5UNjRDT05TVCgxKSA8PCBGQVNUX1BBVEhfQklUX1BPU0lUSU9OKG4sIGwpKQorCSAocHJv YyktPmZwTG9ja0JpdHNbRkFTVF9QQVRIX0xPQ0tfR1JPVVAobildICY9IH4oVUlOVDY0Q09O U1QoMSkgPDwgRkFTVF9QQVRIX0JJVF9QT1NJVElPTihuLCBsKSkKICNkZWZpbmUgRkFTVF9Q QVRIX0NIRUNLX0xPQ0tNT0RFKHByb2MsIG4sIGwpIFwKLQkgKChwcm9jKS0+ZnBMb2NrQml0 cyAmIChVSU5UNjRDT05TVCgxKSA8PCBGQVNUX1BBVEhfQklUX1BPU0lUSU9OKG4sIGwpKSkK KwkgKChwcm9jKS0+ZnBMb2NrQml0c1tGQVNUX1BBVEhfTE9DS19HUk9VUChuKV0gJiAoVUlO VDY0Q09OU1QoMSkgPDwgRkFTVF9QQVRIX0JJVF9QT1NJVElPTihuLCBsKSkpCiAKIC8qCiAg KiBUaGUgZmFzdC1wYXRoIGxvY2sgbWVjaGFuaXNtIGlzIGNvbmNlcm5lZCBvbmx5IHdpdGgg cmVsYXRpb24gbG9ja3Mgb24KQEAgLTkyNiw3ICs5NTYsNyBAQCBMb2NrQWNxdWlyZUV4dGVu ZGVkKGNvbnN0IExPQ0tUQUcgKmxvY2t0YWcsCiAJICogZm9yIG5vdyB3ZSBkb24ndCB3b3Jy eSBhYm91dCB0aGF0IGNhc2UgZWl0aGVyLgogCSAqLwogCWlmIChFbGlnaWJsZUZvclJlbGF0 aW9uRmFzdFBhdGgobG9ja3RhZywgbG9ja21vZGUpICYmCi0JCUZhc3RQYXRoTG9jYWxVc2VD b3VudCA8IEZQX0xPQ0tfU0xPVFNfUEVSX0JBQ0tFTkQpCisJCUZhc3RQYXRoTG9jYWxVc2VD b3VudHNbRkFTVF9QQVRIX0xPQ0tfUkVMX0dST1VQKGxvY2t0YWctPmxvY2t0YWdfZmllbGQy KV0gPCBGUF9MT0NLX1NMT1RTX1BFUl9HUk9VUCkKIAl7CiAJCXVpbnQzMgkJZmFzdGhhc2hj b2RlID0gRmFzdFBhdGhTdHJvbmdMb2NrSGFzaFBhcnRpdGlvbihoYXNoY29kZSk7CiAJCWJv b2wJCWFjcXVpcmVkOwpAQCAtMTk3MCw2ICsyMDAwLDcgQEAgTG9ja1JlbGVhc2UoY29uc3Qg TE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgc2Vzc2lvbkxvY2sp CiAJUFJPQ0xPQ0sgICAqcHJvY2xvY2s7CiAJTFdMb2NrCSAgICpwYXJ0aXRpb25Mb2NrOwog CWJvb2wJCXdha2V1cE5lZWRlZDsKKwlpbnQJCQlncm91cDsKIAogCWlmIChsb2NrbWV0aG9k aWQgPD0gMCB8fCBsb2NrbWV0aG9kaWQgPj0gbGVuZ3Rob2YoTG9ja01ldGhvZHMpKQogCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGxvY2sgbWV0aG9kOiAlZCIsIGxvY2ttZXRob2Rp ZCk7CkBAIC0yMDYzLDkgKzIwOTQsMTIgQEAgTG9ja1JlbGVhc2UoY29uc3QgTE9DS1RBRyAq bG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgc2Vzc2lvbkxvY2spCiAJICovCiAJ bG9jYWxsb2NrLT5sb2NrQ2xlYXJlZCA9IGZhbHNlOwogCisJLyogZmFzdC1wYXRoIGdyb3Vw IHRoZSBsb2NrIGJlbG9uZ3MgdG8gKi8KKwlncm91cCA9IEZBU1RfUEFUSF9MT0NLX1JFTF9H Uk9VUChsb2NrdGFnLT5sb2NrdGFnX2ZpZWxkMik7CisKIAkvKiBBdHRlbXB0IGZhc3QgcmVs ZWFzZSBvZiBhbnkgbG9jayBlbGlnaWJsZSBmb3IgdGhlIGZhc3QgcGF0aC4gKi8KIAlpZiAo RWxpZ2libGVGb3JSZWxhdGlvbkZhc3RQYXRoKGxvY2t0YWcsIGxvY2ttb2RlKSAmJgotCQlG YXN0UGF0aExvY2FsVXNlQ291bnQgPiAwKQorCQlGYXN0UGF0aExvY2FsVXNlQ291bnRzW2dy b3VwXSA+IDApCiAJewogCQlib29sCQlyZWxlYXNlZDsKIApAQCAtMjYzMywxMiArMjY2Nywy MSBAQCBMb2NrUmVhc3NpZ25Pd25lcihMT0NBTExPQ0sgKmxvY2FsbG9jaywgUmVzb3VyY2VP d25lciBwYXJlbnQpCiBzdGF0aWMgYm9vbAogRmFzdFBhdGhHcmFudFJlbGF0aW9uTG9jayhP aWQgcmVsaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogewotCXVpbnQzMgkJZjsKIAl1aW50MzIJ CXVudXNlZF9zbG90ID0gRlBfTE9DS19TTE9UU19QRVJfQkFDS0VORDsKKwl1aW50MzIJCWks CisJCQkJZ3JvdXA7CisKKwkvKiBmYXN0LXBhdGggZ3JvdXAgdGhlIGxvY2sgYmVsb25ncyB0 byAqLworCWdyb3VwID0gRkFTVF9QQVRIX0xPQ0tfUkVMX0dST1VQKHJlbGlkKTsKIAogCS8q IFNjYW4gZm9yIGV4aXN0aW5nIGVudHJ5IGZvciB0aGlzIHJlbGlkLCByZW1lbWJlcmluZyBl bXB0eSBzbG90LiAqLwotCWZvciAoZiA9IDA7IGYgPCBGUF9MT0NLX1NMT1RTX1BFUl9CQUNL RU5EOyBmKyspCisJZm9yIChpID0gMDsgaSA8IEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQOyBp KyspCiAJeworCQl1aW50MzIJCWY7CisKKwkJLyogaW5kZXggaW50byB0aGUgd2hvbGUgcGVy LWJhY2tlbmQgYXJyYXkgKi8KKwkJZiA9IEZQX0xPQ0tfU0xPVF9JTkRFWChncm91cCwgaSk7 CisKIAkJaWYgKEZBU1RfUEFUSF9HRVRfQklUUyhNeVByb2MsIGYpID09IDApCiAJCQl1bnVz ZWRfc2xvdCA9IGY7CiAJCWVsc2UgaWYgKE15UHJvYy0+ZnBSZWxJZFtmXSA9PSByZWxpZCkK QEAgLTI2NTQsNyArMjY5Nyw3IEBAIEZhc3RQYXRoR3JhbnRSZWxhdGlvbkxvY2soT2lkIHJl bGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAl7CiAJCU15UHJvYy0+ZnBSZWxJZFt1bnVzZWRf c2xvdF0gPSByZWxpZDsKIAkJRkFTVF9QQVRIX1NFVF9MT0NLTU9ERShNeVByb2MsIHVudXNl ZF9zbG90LCBsb2NrbW9kZSk7Ci0JCSsrRmFzdFBhdGhMb2NhbFVzZUNvdW50OworCQkrK0Zh c3RQYXRoTG9jYWxVc2VDb3VudHNbZ3JvdXBdOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKQEAg LTI2NzAsMTIgKzI3MTMsMjEgQEAgRmFzdFBhdGhHcmFudFJlbGF0aW9uTG9jayhPaWQgcmVs aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogc3RhdGljIGJvb2wKIEZhc3RQYXRoVW5HcmFudFJl bGF0aW9uTG9jayhPaWQgcmVsaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogewotCXVpbnQzMgkJ ZjsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsKKwl1aW50MzIJCWksCisJCQkJZ3JvdXA7CiAK LQlGYXN0UGF0aExvY2FsVXNlQ291bnQgPSAwOwotCWZvciAoZiA9IDA7IGYgPCBGUF9MT0NL X1NMT1RTX1BFUl9CQUNLRU5EOyBmKyspCisJLyogZmFzdC1wYXRoIGdyb3VwIHRoZSBsb2Nr IGJlbG9uZ3MgdG8gKi8KKwlncm91cCA9IEZBU1RfUEFUSF9MT0NLX1JFTF9HUk9VUChyZWxp ZCk7CisKKwlGYXN0UGF0aExvY2FsVXNlQ291bnRzW2dyb3VwXSA9IDA7CisJZm9yIChpID0g MDsgaSA8IEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQOyBpKyspCiAJeworCQl1aW50MzIJCWY7 CisKKwkJLyogaW5kZXggaW50byB0aGUgd2hvbGUgcGVyLWJhY2tlbmQgYXJyYXkgKi8KKwkJ ZiA9IEZQX0xPQ0tfU0xPVF9JTkRFWChncm91cCwgaSk7CisKIAkJaWYgKE15UHJvYy0+ZnBS ZWxJZFtmXSA9PSByZWxpZAogCQkJJiYgRkFTVF9QQVRIX0NIRUNLX0xPQ0tNT0RFKE15UHJv YywgZiwgbG9ja21vZGUpKQogCQl7CkBAIC0yNjg1LDcgKzI3MzcsNyBAQCBGYXN0UGF0aFVu R3JhbnRSZWxhdGlvbkxvY2soT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJCS8q IHdlIGNvbnRpbnVlIGl0ZXJhdGluZyBzbyBhcyB0byB1cGRhdGUgRmFzdFBhdGhMb2NhbFVz ZUNvdW50ICovCiAJCX0KIAkJaWYgKEZBU1RfUEFUSF9HRVRfQklUUyhNeVByb2MsIGYpICE9 IDApCi0JCQkrK0Zhc3RQYXRoTG9jYWxVc2VDb3VudDsKKwkJCSsrRmFzdFBhdGhMb2NhbFVz ZUNvdW50c1tncm91cF07CiAJfQogCXJldHVybiByZXN1bHQ7CiB9CkBAIC0yNzE0LDcgKzI3 NjYsOCBAQCBGYXN0UGF0aFRyYW5zZmVyUmVsYXRpb25Mb2NrcyhMb2NrTWV0aG9kIGxvY2tN ZXRob2RUYWJsZSwgY29uc3QgTE9DS1RBRyAqbG9ja3RhZwogCWZvciAoaSA9IDA7IGkgPCBQ cm9jR2xvYmFsLT5hbGxQcm9jQ291bnQ7IGkrKykKIAl7CiAJCVBHUFJPQwkgICAqcHJvYyA9 ICZQcm9jR2xvYmFsLT5hbGxQcm9jc1tpXTsKLQkJdWludDMyCQlmOworCQl1aW50MzIJCWos CisJCQkJCWdyb3VwOwogCiAJCUxXTG9ja0FjcXVpcmUoJnByb2MtPmZwSW5mb0xvY2ssIExX X0VYQ0xVU0lWRSk7CiAKQEAgLTI3MzksOSArMjc5MiwxNiBAQCBGYXN0UGF0aFRyYW5zZmVy UmVsYXRpb25Mb2NrcyhMb2NrTWV0aG9kIGxvY2tNZXRob2RUYWJsZSwgY29uc3QgTE9DS1RB RyAqbG9ja3RhZwogCQkJY29udGludWU7CiAJCX0KIAotCQlmb3IgKGYgPSAwOyBmIDwgRlBf TE9DS19TTE9UU19QRVJfQkFDS0VORDsgZisrKQorCQkvKiBmYXN0LXBhdGggZ3JvdXAgdGhl IGxvY2sgYmVsb25ncyB0byAqLworCQlncm91cCA9IEZBU1RfUEFUSF9MT0NLX1JFTF9HUk9V UChyZWxpZCk7CisKKwkJZm9yIChqID0gMDsgaiA8IEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQ OyBqKyspCiAJCXsKIAkJCXVpbnQzMgkJbG9ja21vZGU7CisJCQl1aW50MzIJCWY7CisKKwkJ CS8qIGluZGV4IGludG8gdGhlIHdob2xlIHBlci1iYWNrZW5kIGFycmF5ICovCisJCQlmID0g RlBfTE9DS19TTE9UX0lOREVYKGdyb3VwLCBqKTsKIAogCQkJLyogTG9vayBmb3IgYW4gYWxs b2NhdGVkIHNsb3QgbWF0Y2hpbmcgdGhlIGdpdmVuIHJlbGlkLiAqLwogCQkJaWYgKHJlbGlk ICE9IHByb2MtPmZwUmVsSWRbZl0gfHwgRkFTVF9QQVRIX0dFVF9CSVRTKHByb2MsIGYpID09 IDApCkBAIC0yNzkzLDEzICsyODUzLDIxIEBAIEZhc3RQYXRoR2V0UmVsYXRpb25Mb2NrRW50 cnkoTE9DQUxMT0NLICpsb2NhbGxvY2spCiAJUFJPQ0xPQ0sgICAqcHJvY2xvY2sgPSBOVUxM OwogCUxXTG9jawkgICAqcGFydGl0aW9uTG9jayA9IExvY2tIYXNoUGFydGl0aW9uTG9jayhs b2NhbGxvY2stPmhhc2hjb2RlKTsKIAlPaWQJCQlyZWxpZCA9IGxvY2t0YWctPmxvY2t0YWdf ZmllbGQyOwotCXVpbnQzMgkJZjsKKwl1aW50MzIJCWksCisJCQkJZ3JvdXA7CisKKwkvKiBm YXN0LXBhdGggZ3JvdXAgdGhlIGxvY2sgYmVsb25ncyB0byAqLworCWdyb3VwID0gRkFTVF9Q QVRIX0xPQ0tfUkVMX0dST1VQKHJlbGlkKTsKIAogCUxXTG9ja0FjcXVpcmUoJk15UHJvYy0+ ZnBJbmZvTG9jaywgTFdfRVhDTFVTSVZFKTsKIAotCWZvciAoZiA9IDA7IGYgPCBGUF9MT0NL X1NMT1RTX1BFUl9CQUNLRU5EOyBmKyspCisJZm9yIChpID0gMDsgaSA8IEZQX0xPQ0tfU0xP VFNfUEVSX0dST1VQOyBpKyspCiAJewogCQl1aW50MzIJCWxvY2ttb2RlOworCQl1aW50MzIJ CWY7CisKKwkJLyogaW5kZXggaW50byB0aGUgd2hvbGUgcGVyLWJhY2tlbmQgYXJyYXkgKi8K KwkJZiA9IEZQX0xPQ0tfU0xPVF9JTkRFWChncm91cCwgaSk7CiAKIAkJLyogTG9vayBmb3Ig YW4gYWxsb2NhdGVkIHNsb3QgbWF0Y2hpbmcgdGhlIGdpdmVuIHJlbGlkLiAqLwogCQlpZiAo cmVsaWQgIT0gTXlQcm9jLT5mcFJlbElkW2ZdIHx8IEZBU1RfUEFUSF9HRVRfQklUUyhNeVBy b2MsIGYpID09IDApCkBAIC0yOTAzLDYgKzI5NzEsMTAgQEAgR2V0TG9ja0NvbmZsaWN0cyhj b25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwgaW50ICpjb3VudHAp CiAJTFdMb2NrCSAgICpwYXJ0aXRpb25Mb2NrOwogCWludAkJCWNvdW50ID0gMDsKIAlpbnQJ CQlmYXN0X2NvdW50ID0gMDsKKwl1aW50MzIJCWdyb3VwOworCisJLyogZmFzdC1wYXRoIGdy b3VwIHRoZSBsb2NrIGJlbG9uZ3MgdG8gKi8KKwlncm91cCA9IEZBU1RfUEFUSF9MT0NLX1JF TF9HUk9VUChsb2NrdGFnLT5sb2NrdGFnX2ZpZWxkMik7CiAKIAlpZiAobG9ja21ldGhvZGlk IDw9IDAgfHwgbG9ja21ldGhvZGlkID49IGxlbmd0aG9mKExvY2tNZXRob2RzKSkKIAkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBsb2NrIG1ldGhvZDogJWQiLCBsb2NrbWV0aG9kaWQp OwpAQCAtMjk1Nyw3ICszMDI5LDcgQEAgR2V0TG9ja0NvbmZsaWN0cyhjb25zdCBMT0NLVEFH ICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwgaW50ICpjb3VudHApCiAJCWZvciAoaSA9 IDA7IGkgPCBQcm9jR2xvYmFsLT5hbGxQcm9jQ291bnQ7IGkrKykKIAkJewogCQkJUEdQUk9D CSAgICpwcm9jID0gJlByb2NHbG9iYWwtPmFsbFByb2NzW2ldOwotCQkJdWludDMyCQlmOwor CQkJdWludDMyCQlqOwogCiAJCQkvKiBBIGJhY2tlbmQgbmV2ZXIgYmxvY2tzIGl0c2VsZiAq LwogCQkJaWYgKHByb2MgPT0gTXlQcm9jKQpAQCAtMjk3OSw5ICszMDUxLDEzIEBAIEdldExv Y2tDb25mbGljdHMoY29uc3QgTE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUs IGludCAqY291bnRwKQogCQkJCWNvbnRpbnVlOwogCQkJfQogCi0JCQlmb3IgKGYgPSAwOyBm IDwgRlBfTE9DS19TTE9UU19QRVJfQkFDS0VORDsgZisrKQorCQkJZm9yIChqID0gMDsgaiA8 IEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQOyBqKyspCiAJCQl7CiAJCQkJdWludDMyCQlsb2Nr bWFzazsKKwkJCQl1aW50MzIJCWY7CisKKwkJCQkvKiBpbmRleCBpbnRvIHRoZSB3aG9sZSBw ZXItYmFja2VuZCBhcnJheSAqLworCQkJCWYgPSBGUF9MT0NLX1NMT1RfSU5ERVgoZ3JvdXAs IGopOwogCiAJCQkJLyogTG9vayBmb3IgYW4gYWxsb2NhdGVkIHNsb3QgbWF0Y2hpbmcgdGhl IGdpdmVuIHJlbGlkLiAqLwogCQkJCWlmIChyZWxpZCAhPSBwcm9jLT5mcFJlbElkW2ZdKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3Byb2MuaAppbmRleCBkZWViMDZjOWUwMS4uODQ1MDU4ZGE5ZmEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvYy5oCkBAIC04Myw4ICs4Myw5IEBAIHN0cnVjdCBYaWRDYWNoZQogICogcmF0aGVy IHRoYW4gdGhlIG1haW4gbG9jayB0YWJsZS4gIFRoaXMgZWFzZXMgY29udGVudGlvbiBvbiB0 aGUgbG9jawogICogbWFuYWdlciBMV0xvY2tzLiAgU2VlIHN0b3JhZ2UvbG1nci9SRUFETUUg Zm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KICAqLwotI2RlZmluZQkJRlBfTE9DS19TTE9UU19Q RVJfQkFDS0VORCAxNgotCisjZGVmaW5lCQlGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORAk2 NAorI2RlZmluZQkJRlBfTE9DS19TTE9UU19QRVJfR1JPVVAJCTE2CS8qIGRvbid0IGNoYW5n ZSAqLworI2RlZmluZQkJRlBfTE9DS19TTE9UU19QRVJfQkFDS0VORAkoRlBfTE9DS19TTE9U U19QRVJfR1JPVVAgKiBGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORCkKIC8qCiAgKiBGbGFn cyBmb3IgUEdQUk9DLmRlbGF5Q2hrcHRGbGFncwogICoKQEAgLTI5Miw3ICsyOTMsOCBAQCBz dHJ1Y3QgUEdQUk9DCiAKIAkvKiBMb2NrIG1hbmFnZXIgZGF0YSwgcmVjb3JkaW5nIGZhc3Qt cGF0aCBsb2NrcyB0YWtlbiBieSB0aGlzIGJhY2tlbmQuICovCiAJTFdMb2NrCQlmcEluZm9M b2NrOwkJLyogcHJvdGVjdHMgcGVyLWJhY2tlbmQgZmFzdC1wYXRoIHN0YXRlICovCi0JdWlu dDY0CQlmcExvY2tCaXRzOwkJLyogbG9jayBtb2RlcyBoZWxkIGZvciBlYWNoIGZhc3QtcGF0 aCBzbG90ICovCisJdWludDY0CQlmcExvY2tCaXRzW0ZQX0xPQ0tfR1JPVVBTX1BFUl9CQUNL RU5EXTsgLyogbG9jayBtb2RlcyBoZWxkIGZvcgorCQkJCQkJCQkJCQkJCQkgKiBlYWNoIGZh c3QtcGF0aCBzbG90ICovCiAJT2lkCQkJZnBSZWxJZFtGUF9MT0NLX1NMT1RTX1BFUl9CQUNL RU5EXTsgLyogc2xvdHMgZm9yIHJlbCBvaWRzICovCiAJYm9vbAkJZnBWWElETG9jazsJCS8q IGFyZSB3ZSBob2xkaW5nIGEgZmFzdC1wYXRoIFZYSUQgbG9jaz8gKi8KIAlMb2NhbFRyYW5z YWN0aW9uSWQgZnBMb2NhbFRyYW5zYWN0aW9uSWQ7CS8qIGx4aWQgZm9yIGZhc3QtcGF0aCBW WElECi0tIAoyLjQ2LjAKCg== --------------xDvyz2FLlM3bSG98iLe0rV1u Content-Type: text/x-patch; charset=UTF-8; name="v20240912-0002-Set-fast-path-slots-using-max_locks_per_tr.patch" Content-Disposition: attachment; filename*0="v20240912-0002-Set-fast-path-slots-using-max_locks_per_tr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxZTNiZTE1ZTM5YWFkYzU4ZGI0YzliZTg2Y2ZlZTY0ZjAzOTVkZmQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVGh1LCAxMiBTZXAgMjAyNCAyMzowOTo1MCArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjQwOTEyIDIvMl0gU2V0IGZhc3QtcGF0aCBzbG90cyB1c2luZwogbWF4X2xvY2tzX3Bl cl90cmFuc2FjdGlvbgoKSW5zdGVhZCBvZiB1c2luZyBhIGhhcmQtY29kZWQgdmFsdWUgb2Yg NjQgZ3JvdXBzICgxMDI0IGZhc3QtcGF0aCBzbG90cyksCmRldGVybWluZSB0aGUgdmFsdWUg YmFzZWQgb24gbWF4X2xvY2tzX3Blcl90cmFuc2FjdGlvbiBHVUMuIFRoaXMgc2l6ZQppcyBj YWxjdWxhdGVkIGF0IHN0YXJ0dXAsIGJlZm9yZSBhbGxvY2F0aW5nIHNoYXJlZCBtZW1vcnku CgpUaGUgZGVmYXVsdCB2YWx1ZSBvZiBtYXhfbG9ja3NfcGVyX3RyYW5zYWN0aW9uIHZhbHVl IGlzIDY0LCB3aGljaCBtZWFucwo0IGdyb3VwcyBvZiBmYXN0LXBhdGggbG9ja3MuCgpUaGUg cHVycG9zZSBvZiB0aGUgbWF4X2xvY2tzX3Blcl90cmFuc2FjdGlvbiBHVUMgaXMgdG8gc2l6 ZSB0aGUgc2hhcmVkCmxvY2sgdGFibGUsIGJ1dCBpdCdzIHRoZSBiZXN0IGluZm9ybWF0aW9u IGFib3V0IHRoZSBleHBlY3RlZCBudW1iZXIgb2YKbG9ja3MgYXZhaWxhYmxlLiBJdCBpcyBv ZnRlbiBzZXQgdG8gYW4gYXZlcmFnZSBudW1iZXIgb2YgbG9ja3MgbmVlZGVkIGJ5CmEgYmFj a2VuZCwgYnV0IHNvbWUgYmFja2VuZHMgbWF5IG5lZWQgc3Vic3RhbnRpYWxseSBmZXdlci9t b3JlIGxvY2tzLgoKVGhpcyBtZWFucyBmYXN0LXBhdGggY2FwYWNpdHkgY2FsY3VsYXRlZCBm cm9tIG1heF9sb2Nrc19wZXJfdHJhbnNhY3Rpb24KbWF5IG5vdCBiZSBzdWZmaWNpZW50IGZv ciBzb21lIGJhY2tlbmRzLCBmb3JjaW5nIHVzZSBvZiB0aGUgc2hhcmVkIGxvY2sKdGFibGUu IFRoZSBhc3N1bXB0aW9uIGlzIHRoaXMgaXMgbm90IGEgbWFqb3IgaXNzdWUgLSB0aGVyZSBj YW4ndCBiZSB0b28KbWFueSBvZiBzdWNoIGJhY2tlbmRzLCBvdGhlcndpc2UgdGhlIG1heF9s b2Nrc19wZXJfdHJhbnNhY3Rpb24gd291bGQKbmVlZCB0byBiZSBoaWdoZXIgYW55d2F5IChy ZXNvbHZpbmcgdGhlIGZhc3QtcGF0aCBpc3N1ZSB0b28pLgoKSWYgdGhhdCBoYXBwZW5zIHRv IGJlIGEgcHJvYmxlbSwgdGhlIG9ubHkgc29sdXRpb24gaXMgdG8gaW5jcmVhc2UgdGhlCkdV QywgZXZlbiBpZiB0aGUgc2hhcmVkIGxvY2sgdGFibGUgaGFkIHN1ZmZpY2llbnQgY2FwYWNp dHkuIFRoYXQgaXMgbm90CmZyZWUsIGJlY2F1c2UgZWFjaCBsb2NrIGluIHRoZSBzaGFyZWQg bG9jayB0YWJsZSByZXF1aXJlcyBhYm91dCA1MDBCLgpXaXRoIG1hbnkgYmFja2VuZHMgdGhp cyBtYXkgYmUgYSBzdWJzdGFudGlhbCBhbW91bnQgb2YgbWVtb3J5LCBidXQgdGhlbgphZ2Fp biAtIHRoYXQgc2hvdWxkIG9ubHkgaGFwcGVuIG9uIG1hY2hpbmVzIHdpdGggcGxlbnR5IG9m IG1lbW9yeS4KCkluIHRoZSBmdXR1cmUgd2UgY2FuIGNvbnNpZGVyIGEgc2VwYXJhdGUgR1VD IGZvciB0aGUgbnVtYmVyIG9mIGZhc3QtcGF0aApzbG90cywgYnV0IGxldCdzIHRyeSB3aXRo b3V0IG9uZSBmaXJzdC4KCkFuIGFsdGVybmF0aXZlIHNvbHV0aW9uIG1pZ2h0IGJlIHRvIHNp emUgdGhlIGZhc3QtcGF0aCBhcnJheXMgZm9yIGEKbXVsdGlwbGUgb2YgbWF4X2xvY2tzX3Bl cl90cmFuc2FjdGlvbi4gVGhlIGNvc3Qgb2YgYWRkaW5nIGEgZmFzdC1wYXRoCnNsb3QgaXMg bXVjaCBsb3dlciAob25seSB+NUIgY29tcGFyZWQgdG8gfjUwMEIgcGVyIGVudHJ5KSwgc28g dGhpcyB3b3VsZApiZSBjaGVhcGVyIHRoYW4gaW5jcmVhc2luZyBtYXhfbG9ja3NfcGVyX3Ry YW5zYWN0aW9uLiBCdXQgaXQncyBub3QgY2xlYXIKd2hhdCBtdWx0aXBsZSBvZiBtYXhfbG9j a3NfcGVyX3RyYW5zYWN0aW9uIHRvIHVzZS4KLS0tCiBzcmMvYmFja2VuZC9ib290c3RyYXAv Ym9vdHN0cmFwLmMgICB8ICAyICsrCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuYyB8ICA1ICsrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyAgICAgfCAy OCArKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAg ICAgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jICAgICAgICAgfCAgMyArKwogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9w b3N0aW5pdC5jICAgfCAzNCArKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL21p c2NhZG1pbi5oICAgICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j LmggICAgICAgICAgfCAxMSArKysrLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRp b25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ib290 c3RyYXAvYm9vdHN0cmFwLmMgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMK aW5kZXggNzYzNzU4MWExODQuLmVkNTlkZmNlODkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jv b3RzdHJhcC5jCkBAIC0zMDksNiArMzA5LDggQEAgQm9vdHN0cmFwTW9kZU1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSwgYm9vbCBjaGVja19vbmx5KQogCiAJSW5pdGlhbGl6ZU1heEJh Y2tlbmRzKCk7CiAKKwlJbml0aWFsaXplRmFzdFBhdGhMb2NrcygpOworCiAJQ3JlYXRlU2hh cmVkTWVtb3J5QW5kU2VtYXBob3JlcygpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMKaW5kZXggOTZiYzFkMWNmZWQuLmY0YTE2NTk1ZDdmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtOTAzLDYgKzkwMywxMSBAQCBQb3N0bWFz dGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqLwogCUluaXRpYWxpemVNYXhC YWNrZW5kcygpOwogCisJLyoKKwkgKiBBbHNvIGNhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUg ZmFzdC1wYXRoIGxvY2sgYXJyYXlzIGluIFBHUFJPQy4KKwkgKi8KKwlJbml0aWFsaXplRmFz dFBhdGhMb2NrcygpOworCiAJLyoKIAkgKiBHaXZlIHByZWxvYWRlZCBsaWJyYXJpZXMgYSBj aGFuY2UgdG8gcmVxdWVzdCBhZGRpdGlvbmFsIHNoYXJlZCBtZW1vcnkuCiAJICovCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL2xvY2suYwppbmRleCBkMDUzYWUwYzQwOS4uNTA1YWE1MjY2OGUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwpAQCAtMTY2LDggKzE2NiwxMyBAQCB0eXBlZGVm IHN0cnVjdCBUd29QaGFzZUxvY2tSZWNvcmQKICAqIG1pZ2h0IGJlIGhpZ2hlciB0aGFuIHRo ZSByZWFsIG51bWJlciBpZiBhbm90aGVyIGJhY2tlbmQgaGFzIHRyYW5zZmVycmVkCiAgKiBv dXIgbG9ja3MgdG8gdGhlIHByaW1hcnkgbG9jayB0YWJsZSwgYnV0IGl0IGNhbiBuZXZlciBi ZSBsb3dlciB0aGFuIHRoZQogICogcmVhbCB2YWx1ZSwgc2luY2Ugb25seSB3ZSBjYW4gYWNx dWlyZSBsb2NrcyBvbiBvdXIgb3duIGJlaGFsZi4KKyAqCisgKiBYWFggQWxsb2NhdGUgYSBz dGF0aWMgYXJyYXkgb2YgdGhlIG1heGltdW0gc2l6ZS4gV2UgY291bGQgaGF2ZSBhIHBvaW50 ZXIKKyAqIGFuZCB0aGVuIGFsbG9jYXRlIGp1c3QgdGhlIHJpZ2h0IHNpemUgdG8gc2F2ZSBh IGNvdXBsZSBrQiwgYnV0IHRoYXQgZG9lcworICogbm90IHNlZW0gd29ydGggdGhlIGV4dHJh IGNvbXBsZXhpdHkgb2YgaGF2aW5nIHRvIGluaXRpYWxpemUgaXQgZXRjLiBUaGlzCisgKiB3 YXkgaXQgZ2V0cyBpbml0aWFsaXplZCBhdXRvbWF0aWNhbHkuCiAgKi8KLXN0YXRpYyBpbnQJ RmFzdFBhdGhMb2NhbFVzZUNvdW50c1tGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORF07Citz dGF0aWMgaW50CUZhc3RQYXRoTG9jYWxVc2VDb3VudHNbRlBfTE9DS19HUk9VUFNfUEVSX0JB Q0tFTkRfTUFYXTsKIAogLyoKICAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIHJlbGF0aW9u IGV4dGVuc2lvbiBsb2NrIGlzIGhlbGQgYnkgdGhpcyBiYWNrZW5kLgpAQCAtMTg0LDYgKzE4 OSwxNyBAQCBzdGF0aWMgaW50CUZhc3RQYXRoTG9jYWxVc2VDb3VudHNbRlBfTE9DS19HUk9V UFNfUEVSX0JBQ0tFTkRdOwogICovCiBzdGF0aWMgYm9vbCBJc1JlbGF0aW9uRXh0ZW5zaW9u TG9ja0hlbGQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gZmFsc2U7CiAKKy8qCisgKiBO dW1iZXIgb2YgZmFzdC1wYXRoIGxvY2tzIHBlciBiYWNrZW5kIC0gc2l6ZSBvZiB0aGUgYXJy YXlzIGluIFBHUFJPQy4KKyAqIFRoaXMgaXMgc2V0IG9ubHkgb25jZSBkdXJpbmcgc3RhcnQs IGJlZm9yZSBpbml0aWFsaXppbmcgc2hhcmVkIG1lbW9yeSwKKyAqIGFuZCByZW1haW5zIGNv bnN0YW50IGFmdGVyIHRoYXQuCisgKgorICogV2Ugc2V0IHRoZSBsaW1pdCBiYXNlZCBvbiBt YXhfbG9ja3NfcGVyX3RyYW5zYWN0aW9uIEdVQywgYmVjYXVzZSB0aGF0J3MKKyAqIHRoZSBi ZXN0IGluZm9ybWF0aW9uIGFib3V0IGV4cGVjdGVkIG51bWJlciBvZiBsb2NrcyBwZXIgYmFj a2VuZCB3ZSBoYXZlLgorICogU2VlIEluaXRpYWxpemVGYXN0UGF0aExvY2tzIGZvciBkZXRh aWxzLgorICovCitpbnQJCQlGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5kID0gMDsKKwog LyoKICAqIE1hY3JvcyB0byBjYWxjdWxhdGUgdGhlIGdyb3VwIGFuZCBpbmRleCBmb3IgYSBy ZWxhdGlvbi4KICAqCkBAIC0xOTUsMTEgKzIxMSwxMSBAQCBzdGF0aWMgYm9vbCBJc1JlbGF0 aW9uRXh0ZW5zaW9uTG9ja0hlbGQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gZmFsc2U7 CiAgKiBzbWFsbCBlbm91Z2ggdG8gbm90IGNhdXNlIG92ZXJmbG93cyAoaW4gNjQtYml0KS4K ICAqLwogI2RlZmluZSBGQVNUX1BBVEhfTE9DS19SRUxfR1JPVVAocmVsKSBcCi0JKCgodWlu dDY0KSAocmVsKSAqIDQ5MTU3KSAlIEZQX0xPQ0tfR1JPVVBTX1BFUl9CQUNLRU5EKQorCSgo KHVpbnQ2NCkgKHJlbCkgKiA0OTE1NykgJSBGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5k KQogCiAvKiBDYWxjdWxhdGUgaW5kZXggaW4gdGhlIHdob2xlIHBlci1iYWNrZW5kIGFycmF5 IG9mIGxvY2sgc2xvdHMuICovCiAjZGVmaW5lIEZQX0xPQ0tfU0xPVF9JTkRFWChncm91cCwg aW5kZXgpIFwKLQkoQXNzZXJ0TWFjcm8oKChncm91cCkgPj0gMCkgJiYgKChncm91cCkgPCBG UF9MT0NLX0dST1VQU19QRVJfQkFDS0VORCkpLCBcCisJKEFzc2VydE1hY3JvKCgoZ3JvdXAp ID49IDApICYmICgoZ3JvdXApIDwgRmFzdFBhdGhMb2NrR3JvdXBzUGVyQmFja2VuZCkpLCBc CiAJIEFzc2VydE1hY3JvKCgoaW5kZXgpID49IDApICYmICgoaW5kZXgpIDwgRlBfTE9DS19T TE9UU19QRVJfR1JPVVApKSwgXAogCSAoKGdyb3VwKSAqIEZQX0xPQ0tfU0xPVFNfUEVSX0dS T1VQICsgKGluZGV4KSkpCiAKQEAgLTI5NzMsOSArMjk4OSw2IEBAIEdldExvY2tDb25mbGlj dHMoY29uc3QgTE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUsIGludCAqY291 bnRwKQogCWludAkJCWZhc3RfY291bnQgPSAwOwogCXVpbnQzMgkJZ3JvdXA7CiAKLQkvKiBm YXN0LXBhdGggZ3JvdXAgdGhlIGxvY2sgYmVsb25ncyB0byAqLwotCWdyb3VwID0gRkFTVF9Q QVRIX0xPQ0tfUkVMX0dST1VQKGxvY2t0YWctPmxvY2t0YWdfZmllbGQyKTsKLQogCWlmIChs b2NrbWV0aG9kaWQgPD0gMCB8fCBsb2NrbWV0aG9kaWQgPj0gbGVuZ3Rob2YoTG9ja01ldGhv ZHMpKQogCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGxvY2sgbWV0aG9kOiAlZCIsIGxv Y2ttZXRob2RpZCk7CiAJbG9ja01ldGhvZFRhYmxlID0gTG9ja01ldGhvZHNbbG9ja21ldGhv ZGlkXTsKQEAgLTMwMDUsNiArMzAxOCw5IEBAIEdldExvY2tDb25mbGljdHMoY29uc3QgTE9D S1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUsIGludCAqY291bnRwKQogCXBhcnRp dGlvbkxvY2sgPSBMb2NrSGFzaFBhcnRpdGlvbkxvY2soaGFzaGNvZGUpOwogCWNvbmZsaWN0 TWFzayA9IGxvY2tNZXRob2RUYWJsZS0+Y29uZmxpY3RUYWJbbG9ja21vZGVdOwogCisJLyog ZmFzdC1wYXRoIGdyb3VwIHRoZSBsb2NrIGJlbG9uZ3MgdG8gKi8KKwlncm91cCA9IEZBU1Rf UEFUSF9MT0NLX1JFTF9HUk9VUChsb2NrdGFnLT5sb2NrdGFnX2ZpZWxkMik7CisKIAkvKgog CSAqIEZhc3QgcGF0aCBsb2NrcyBtaWdodCBub3QgaGF2ZSBiZWVuIGVudGVyZWQgaW4gdGhl IHByaW1hcnkgbG9jayB0YWJsZS4KIAkgKiBJZiB0aGUgbG9jayB3ZSdyZSBkZWFsaW5nIHdp dGggY291bGQgY29uZmxpY3Qgd2l0aCBzdWNoIGEgbG9jaywgd2UgbXVzdApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcm9jLmMKaW5kZXggYWM2NmRhODYzOGYuLmE5MWI2ZjhhNmMwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTEwMyw2ICsxMDMsOCBAQCBQcm9jR2xvYmFsU2ht ZW1TaXplKHZvaWQpCiAJU2l6ZQkJc2l6ZSA9IDA7CiAJU2l6ZQkJVG90YWxQcm9jcyA9CiAJ CWFkZF9zaXplKE1heEJhY2tlbmRzLCBhZGRfc2l6ZShOVU1fQVVYSUxJQVJZX1BST0NTLCBt YXhfcHJlcGFyZWRfeGFjdHMpKTsKKwlTaXplCQlmcExvY2tCaXRzU2l6ZSwKKwkJCQlmcFJl bElkU2l6ZTsKIAogCS8qIFByb2NHbG9iYWwgKi8KIAlzaXplID0gYWRkX3NpemUoc2l6ZSwg c2l6ZW9mKFBST0NfSERSKSk7CkBAIC0xMTMsNiArMTE1LDE4IEBAIFByb2NHbG9iYWxTaG1l bVNpemUodm9pZCkKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9j cywgc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKSk7CiAJc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+c3Rh dHVzRmxhZ3MpKSk7CiAKKwkvKgorCSAqIGZhc3QtcGF0aCBsb2NrIGFycmF5cworCSAqCisJ ICogWFhYIFRoZSBleHBsaWNpdCBhbGlnbm1lbnQgbWF5IG5vdCBiZSBzdHJpY3RseSBuZWNl c3NhcnksIGFzIGJvdGgKKwkgKiB2YWx1ZXMgYXJlIGFscmVhZHkgbXVsdGlwbGVzIG9mIDgg Ynl0ZXMsIHdoaWNoIGlzIHdoYXQgTUFYQUxJR04gZG9lcy4KKwkgKiBCdXQgYmV0dGVyIHRv IG1ha2UgdGhhdCBvYnZpb3VzLgorCSAqLworCWZwTG9ja0JpdHNTaXplID0gTUFYQUxJR04o RmFzdFBhdGhMb2NrR3JvdXBzUGVyQmFja2VuZCAqIHNpemVvZih1aW50NjQpKTsKKwlmcFJl bElkU2l6ZSA9IE1BWEFMSUdOKEZhc3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgKiBzaXpl b2YoT2lkKSAqIEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQKTsKKworCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBtdWxfc2l6ZShUb3RhbFByb2NzLCAoZnBMb2NrQml0c1NpemUgKyBmcFJlbElk U2l6ZSkpKTsKKwogCXJldHVybiBzaXplOwogfQogCkBAIC0xNjIsNiArMTc2LDEwIEBAIElu aXRQcm9jR2xvYmFsKHZvaWQpCiAJCQkJajsKIAlib29sCQlmb3VuZDsKIAl1aW50MzIJCVRv dGFsUHJvY3MgPSBNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElBUllfUFJPQ1MgKyBtYXhfcHJl cGFyZWRfeGFjdHM7CisJY2hhcgkgICAqZnBQdHIsCisJCQkgICAqZnBFbmRQdHIgUEdfVVNF RF9GT1JfQVNTRVJUU19PTkxZOworCVNpemUJCWZwTG9ja0JpdHNTaXplLAorCQkJCWZwUmVs SWRTaXplOwogCiAJLyogQ3JlYXRlIHRoZSBQcm9jR2xvYmFsIHNoYXJlZCBzdHJ1Y3R1cmUg Ki8KIAlQcm9jR2xvYmFsID0gKFBST0NfSERSICopCkBAIC0yMTEsMTIgKzIyOSwzOCBAQCBJ bml0UHJvY0dsb2JhbCh2b2lkKQogCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzID0gKHVpbnQ4 ICopIFNobWVtQWxsb2MoVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVz RmxhZ3MpKTsKIAlNZW1TZXQoUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MsIDAsIFRvdGFsUHJv Y3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSk7CiAKKwkvKgorCSAqIEFs bG9jYXRlIGFycmF5cyBmb3IgZmFzdC1wYXRoIGxvY2tzLiBUaG9zZSBhcmUgdmFyaWFibGUt bGVuZ3RoLCBzbworCSAqIGNhbid0IGJlIGluY2x1ZGVkIGluIFBHUFJPQy4gV2UgYWxsb2Nh dGUgYSBzZXBhcmF0ZSBwaWVjZSBvZiBzaGFyZWQKKwkgKiBtZW1vcnkgYW5kIHRoZW4gZGl2 aWRlIHRoYXQgYmV0d2VlbiBiYWNrZW5kcy4KKwkgKi8KKwlmcExvY2tCaXRzU2l6ZSA9IE1B WEFMSUdOKEZhc3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgKiBzaXplb2YodWludDY0KSk7 CisJZnBSZWxJZFNpemUgPSBNQVhBTElHTihGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5k ICogc2l6ZW9mKE9pZCkgKiBGUF9MT0NLX1NMT1RTX1BFUl9HUk9VUCk7CisKKwlmcFB0ciA9 IFNobWVtQWxsb2MoVG90YWxQcm9jcyAqIChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXpl KSk7CisJTWVtU2V0KGZwUHRyLCAwLCBUb3RhbFByb2NzICogKGZwTG9ja0JpdHNTaXplICsg ZnBSZWxJZFNpemUpKTsKKworCS8qIEZvciBhc3NlcnRzIGNoZWNraW5nIHdlIGRpZCBub3Qg b3ZlcmZsb3cuICovCisJZnBFbmRQdHIgPSBmcFB0ciArIChUb3RhbFByb2NzICogKGZwTG9j a0JpdHNTaXplICsgZnBSZWxJZFNpemUpKTsKKwogCWZvciAoaSA9IDA7IGkgPCBUb3RhbFBy b2NzOyBpKyspCiAJewogCQlQR1BST0MJICAgKnByb2MgPSAmcHJvY3NbaV07CiAKIAkJLyog Q29tbW9uIGluaXRpYWxpemF0aW9uIGZvciBhbGwgUEdQUk9DcywgcmVnYXJkbGVzcyBvZiB0 eXBlLiAqLwogCisJCS8qCisJCSAqIFNldCB0aGUgZmFzdC1wYXRoIGxvY2sgYXJyYXlzLCBh bmQgbW92ZSB0aGUgcG9pbnRlci4gV2UgaW50ZXJsZWF2ZQorCQkgKiB0aGUgdHdvIGFycmF5 cywgdG8ga2VlcCBhdCBsZWFzdCBzb21lIGxvY2FsaXR5LgorCQkgKi8KKwkJcHJvYy0+ZnBM b2NrQml0cyA9ICh1aW50NjQgKikgZnBQdHI7CisJCWZwUHRyICs9IGZwTG9ja0JpdHNTaXpl OworCisJCXByb2MtPmZwUmVsSWQgPSAoT2lkICopIGZwUHRyOworCQlmcFB0ciArPSBmcFJl bElkU2l6ZTsKKworCQlBc3NlcnQoZnBQdHIgPD0gZnBFbmRQdHIpOworCiAJCS8qCiAJCSAq IFNldCB1cCBwZXItUEdQUk9DIHNlbWFwaG9yZSwgbGF0Y2gsIGFuZCBmcEluZm9Mb2NrLiAg UHJlcGFyZWQgeGFjdAogCQkgKiBkdW1teSBQR1BST0NzIGRvbid0IG5lZWQgdGhlc2UgdGhv dWdoIC0gdGhleSdyZSBuZXZlciBhc3NvY2lhdGVkCkBAIC0yNzgsNiArMzIyLDkgQEAgSW5p dFByb2NHbG9iYWwodm9pZCkKIAkJcGdfYXRvbWljX2luaXRfdTY0KCYocHJvYy0+d2FpdFN0 YXJ0KSwgMCk7CiAJfQogCisJLyogV2UgZXhwZWN0IHRvIGNvbnN1bWUgZXhhY3RseSB0aGUg ZXhwZWN0ZWQgYW1vdW50IG9mIGRhdGEuICovCisJQXNzZXJ0KGZwUHRyID0gZnBFbmRQdHIp OworCiAJLyoKIAkgKiBTYXZlIHBvaW50ZXJzIHRvIHRoZSBibG9ja3Mgb2YgUEdQUk9DIHN0 cnVjdHVyZXMgcmVzZXJ2ZWQgZm9yIGF1eGlsaWFyeQogCSAqIHByb2Nlc3NlcyBhbmQgcHJl cGFyZWQgdHJhbnNhY3Rpb25zLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDhiYzZiZWExMTM1 Li5mNTRhZTAwYWJjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtNDE2Niw2ICs0MTY2LDkg QEAgUG9zdGdyZXNTaW5nbGVVc2VyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdLAogCS8q IEluaXRpYWxpemUgTWF4QmFja2VuZHMgKi8KIAlJbml0aWFsaXplTWF4QmFja2VuZHMoKTsK IAorCS8qIEluaXRpYWxpemUgc2l6ZSBvZiBmYXN0LXBhdGggbG9jayBjYWNoZS4gKi8KKwlJ bml0aWFsaXplRmFzdFBhdGhMb2NrcygpOworCiAJLyoKIAkgKiBHaXZlIHByZWxvYWRlZCBs aWJyYXJpZXMgYSBjaGFuY2UgdG8gcmVxdWVzdCBhZGRpdGlvbmFsIHNoYXJlZCBtZW1vcnku CiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggM2I1MGNlMTlhMmMu LjFmYWY3NTZjOGQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rp bml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC01NTcs NiArNTU3LDQwIEBAIEluaXRpYWxpemVNYXhCYWNrZW5kcyh2b2lkKQogCQkJCQkJICAgTUFY X0JBQ0tFTkRTKSkpOwogfQogCisvKgorICogSW5pdGlhbGl6ZSB0aGUgbnVtYmVyIG9mIGZh c3QtcGF0aCBsb2NrIHNsb3RzIGluIFBHUFJPQy4KKyAqCisgKiBUaGlzIG11c3QgYmUgY2Fs bGVkIGFmdGVyIG1vZHVsZXMgaGF2ZSBoYWQgdGhlIGNoYW5jZSB0byBhbHRlciBHVUNzIGlu CisgKiBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgYW5kIGJlZm9yZSBzaGFyZWQgbWVtb3J5 IHNpemUgaXMgZGV0ZXJtaW5lZC4KKyAqCisgKiBUaGUgZGVmYXVsdCBtYXhfbG9ja3NfcGVy X3hhY3Q9NjQgbWVhbnMgNCBncm91cHMgYnkgZGVmYXVsdC4KKyAqCisgKiBXZSBhbGxvdyBh bnl0aGluZyBiZXR3ZWVuIDEgYW5kIDEwMjQgZ3JvdXBzLCB3aXRoIHRoZSB1c3VhbCBwb3dl ci1vZi0yCisgKiBsb2dpYy4gVGhlIDEgaXMgdGhlICJvbGQiIHZhbHVlIGJlZm9yZSBhbGxv d2luZyBtdWx0aXBsZSBncm91cHMsIDEwMjQKKyAqIGlzIGFuIGFyYml0cmFyeSBsaW1pdCAo bWF0Y2hpbmcgbWF4X2xvY2tzX3Blcl94YWN0ID0gMTZrKS4gVmFsdWVzIG92ZXIKKyAqIDEw MjQgYXJlIHVubGlrZWx5IHRvIGJlIGJlbmVmaWNpYWwgLSB3ZSdyZSBsaWtlbHkgdG8gaGl0 IG90aGVyCisgKiBib3R0bGVuZWNrcyBsb25nIGJlZm9yZSB0aGF0LgorICovCit2b2lkCitJ bml0aWFsaXplRmFzdFBhdGhMb2Nrcyh2b2lkKQoreworCUFzc2VydChGYXN0UGF0aExvY2tH cm91cHNQZXJCYWNrZW5kID09IDApOworCisJLyogd2UgbmVlZCBhdCBsZWFzdCBvbmUgZ3Jv dXAgKi8KKwlGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5kID0gMTsKKworCXdoaWxlIChG YXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5kIDwgRlBfTE9DS19HUk9VUFNfUEVSX0JBQ0tF TkRfTUFYKQorCXsKKwkJLyogc3RvcCBvbmNlIHdlIGV4Y2VlZCBtYXhfbG9ja3NfcGVyX3hh Y3QgKi8KKwkJaWYgKEZhc3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgKiBGUF9MT0NLX1NM T1RTX1BFUl9HUk9VUCA+PSBtYXhfbG9ja3NfcGVyX3hhY3QpCisJCQlicmVhazsKKworCQlG YXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5kICo9IDI7CisJfQorCisJQXNzZXJ0KEZhc3RQ YXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgPD0gRlBfTE9DS19HUk9VUFNfUEVSX0JBQ0tFTkRf TUFYKTsKK30KKwogLyoKICAqIEVhcmx5IGluaXRpYWxpemF0aW9uIG9mIGEgYmFja2VuZCAo ZWl0aGVyIHN0YW5kYWxvbmUgb3IgdW5kZXIgcG9zdG1hc3RlcikuCiAgKiBUaGlzIGhhcHBl bnMgZXZlbiBiZWZvcmUgSW5pdFBvc3RncmVzLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCAyNTM0OGU3MWVi OS4uZTI2ZDEwOGE0NzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisr KyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC00NzUsNiArNDc1LDcgQEAgZXh0ZXJu IFBHRExMSU1QT1JUIFByb2Nlc3NpbmdNb2RlIE1vZGU7CiAjZGVmaW5lIElOSVRfUEdfT1ZF UlJJREVfUk9MRV9MT0dJTgkJMHgwMDA0CiBleHRlcm4gdm9pZCBwZ19zcGxpdF9vcHRzKGNo YXIgKiphcmd2LCBpbnQgKmFyZ2NwLCBjb25zdCBjaGFyICpvcHRzdHIpOwogZXh0ZXJuIHZv aWQgSW5pdGlhbGl6ZU1heEJhY2tlbmRzKHZvaWQpOworZXh0ZXJuIHZvaWQgSW5pdGlhbGl6 ZUZhc3RQYXRoTG9ja3Modm9pZCk7CiBleHRlcm4gdm9pZCBJbml0UG9zdGdyZXMoY29uc3Qg Y2hhciAqaW5fZGJuYW1lLCBPaWQgZGJvaWQsCiAJCQkJCQkgY29uc3QgY2hhciAqdXNlcm5h bWUsIE9pZCB1c2Vyb2lkLAogCQkJCQkJIGJpdHMzMiBmbGFncywKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgK aW5kZXggODQ1MDU4ZGE5ZmEuLjBlNTVjMTY2NTI5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaApAQCAt ODMsOSArODMsMTEgQEAgc3RydWN0IFhpZENhY2hlCiAgKiByYXRoZXIgdGhhbiB0aGUgbWFp biBsb2NrIHRhYmxlLiAgVGhpcyBlYXNlcyBjb250ZW50aW9uIG9uIHRoZSBsb2NrCiAgKiBt YW5hZ2VyIExXTG9ja3MuICBTZWUgc3RvcmFnZS9sbWdyL1JFQURNRSBmb3IgYWRkaXRpb25h bCBkZXRhaWxzLgogICovCi0jZGVmaW5lCQlGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORAk2 NAorZXh0ZXJuIFBHRExMSU1QT1JUIGludCBGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5k OworI2RlZmluZQkJRlBfTE9DS19HUk9VUFNfUEVSX0JBQ0tFTkRfTUFYCTEwMjQKICNkZWZp bmUJCUZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQCQkxNgkvKiBkb24ndCBjaGFuZ2UgKi8KLSNk ZWZpbmUJCUZQX0xPQ0tfU0xPVFNfUEVSX0JBQ0tFTkQJKEZQX0xPQ0tfU0xPVFNfUEVSX0dS T1VQICogRlBfTE9DS19HUk9VUFNfUEVSX0JBQ0tFTkQpCisjZGVmaW5lCQlGUF9MT0NLX1NM T1RTX1BFUl9CQUNLRU5ECShGUF9MT0NLX1NMT1RTX1BFUl9HUk9VUCAqIEZhc3RQYXRoTG9j a0dyb3Vwc1BlckJhY2tlbmQpCisKIC8qCiAgKiBGbGFncyBmb3IgUEdQUk9DLmRlbGF5Q2hr cHRGbGFncwogICoKQEAgLTI5Myw5ICsyOTUsOCBAQCBzdHJ1Y3QgUEdQUk9DCiAKIAkvKiBM b2NrIG1hbmFnZXIgZGF0YSwgcmVjb3JkaW5nIGZhc3QtcGF0aCBsb2NrcyB0YWtlbiBieSB0 aGlzIGJhY2tlbmQuICovCiAJTFdMb2NrCQlmcEluZm9Mb2NrOwkJLyogcHJvdGVjdHMgcGVy LWJhY2tlbmQgZmFzdC1wYXRoIHN0YXRlICovCi0JdWludDY0CQlmcExvY2tCaXRzW0ZQX0xP Q0tfR1JPVVBTX1BFUl9CQUNLRU5EXTsgLyogbG9jayBtb2RlcyBoZWxkIGZvcgotCQkJCQkJ CQkJCQkJCQkgKiBlYWNoIGZhc3QtcGF0aCBzbG90ICovCi0JT2lkCQkJZnBSZWxJZFtGUF9M T0NLX1NMT1RTX1BFUl9CQUNLRU5EXTsgLyogc2xvdHMgZm9yIHJlbCBvaWRzICovCisJdWlu dDY0CSAgICpmcExvY2tCaXRzOwkJLyogbG9jayBtb2RlcyBoZWxkIGZvciBlYWNoIGZhc3Qt cGF0aCBzbG90ICovCisJT2lkCQkgICAqZnBSZWxJZDsJCS8qIHNsb3RzIGZvciByZWwgb2lk cyAqLwogCWJvb2wJCWZwVlhJRExvY2s7CQkvKiBhcmUgd2UgaG9sZGluZyBhIGZhc3QtcGF0 aCBWWElEIGxvY2s/ICovCiAJTG9jYWxUcmFuc2FjdGlvbklkIGZwTG9jYWxUcmFuc2FjdGlv bklkOwkvKiBseGlkIGZvciBmYXN0LXBhdGggVlhJRAogCQkJCQkJCQkJCQkJICogbG9jayAq LwotLSAKMi40Ni4wCgo= --------------xDvyz2FLlM3bSG98iLe0rV1u Content-Type: text/csv; charset=UTF-8; name="results-1024.csv" Content-Disposition: attachment; filename="results-1024.csv" Content-Transfer-Encoding: base64 aTUJMQltYXN0ZXIJc2ltcGxlCTEJMTQwODAuOQkxNDEwMi4xMTAwNDcKaTUJMQltYXN0ZXIJ c2ltcGxlCTQJNDgzOTUuMAk0ODM1NC4xMTY1MDMKaTUJMQltYXN0ZXIJcHJlcGFyZWQJMQkx NDg5MC4zCTE0OTM0LjE5NTUyNwppNQkxCW1hc3RlcglwcmVwYXJlZAk0CTUxNTM3LjMJNTE1 MjIuNjI0ODM5Cmk1CTEJYnVpbHQtaW4Jc2ltcGxlCTEJMTQxNDguMwkxNDE0Mi43ODgzMDAK aTUJMQlidWlsdC1pbglzaW1wbGUJNAk0ODYxMi42CTQ4NjEyLjg5MDExNwppNQkxCWJ1aWx0 LWluCXByZXBhcmVkCTEJMTUwMDEuMgkxNDk3Mi4xOTA2MjkKaTUJMQlidWlsdC1pbglwcmVw YXJlZAk0CTUwODg0LjYJNTA5MDkuNjUwNTY2Cmk1CTEJYnVpbHQtaW4tZ3VjCXNpbXBsZQkx CTE0MDQ0LjcJMTQwMzAuOTAzNjQ2Cmk1CTEJYnVpbHQtaW4tZ3VjCXNpbXBsZQk0CTQ4MzE1 LjIJNDgyNjkuNDY4NjA1Cmk1CTEJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTQ5MDYuNAkx NDkxMC43MDE1NzkKaTUJMQlidWlsdC1pbi1ndWMJcHJlcGFyZWQJNAk1MTc1Ni40CTUxNzQ5 LjI5MzUxNAppNQkyCW1hc3RlcglzaW1wbGUJMQkxNDAyMi43CTE0MDE2LjQ3MDM5OAppNQky CW1hc3RlcglzaW1wbGUJNAk0ODM4OS4wCTQ4Mzc1LjEyMDEwNAppNQkyCW1hc3RlcglwcmVw YXJlZAkxCTE1MDA2LjkJMTQ5ODcuMTc1Mzg2Cmk1CTIJbWFzdGVyCXByZXBhcmVkCTQJNTEx MTUuNgk1MTExNS4zMzU2NzYKaTUJMglidWlsdC1pbglzaW1wbGUJMQkxNDA4OS41CTE0MDg0 Ljg0OTc3OAppNQkyCWJ1aWx0LWluCXNpbXBsZQk0CTQ4NDE0LjQJNDg0MjkuNTY1NTg1Cmk1 CTIJYnVpbHQtaW4JcHJlcGFyZWQJMQkxNDkyOC40CTE0OTUzLjk1NTUzMwppNQkyCWJ1aWx0 LWluCXByZXBhcmVkCTQJNTE0ODIuMwk1MTQ2OS4yNDk5NTEKaTUJMglidWlsdC1pbi1ndWMJ c2ltcGxlCTEJMTQwNzAuMAkxNDAyNi41NjIxMzUKaTUJMglidWlsdC1pbi1ndWMJc2ltcGxl CTQJNDg0MzYuMQk0ODQyMC41MzY1MDYKaTUJMglidWlsdC1pbi1ndWMJcHJlcGFyZWQJMQkx NDc0NC43CTE0NzUwLjAzMTE0MwppNQkyCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTUxMjM0 LjIJNTEyMjAuMzk2ODIyCmk1CTMJbWFzdGVyCXNpbXBsZQkxCTE0MDk2LjgJMTQwNzcuNDgx ODg2Cmk1CTMJbWFzdGVyCXNpbXBsZQk0CTQ4NTYzLjcJNDg1NjIuOTIxMjU4Cmk1CTMJbWFz dGVyCXByZXBhcmVkCTEJMTQ5OTguNwkxNTAwOC42MTYzMzIKaTUJMwltYXN0ZXIJcHJlcGFy ZWQJNAk1MTQyNC43CTUxMzk1LjI3NzY0NwppNQkzCWJ1aWx0LWluCXNpbXBsZQkxCTE0MTcy LjYJMTQxNjYuNzY4MTI5Cmk1CTMJYnVpbHQtaW4Jc2ltcGxlCTQJNDg2MDUuMAk0ODU3OC41 MTM5MzQKaTUJMwlidWlsdC1pbglwcmVwYXJlZAkxCTE1MDQ4LjgJMTUwMzQuOTkxNDA1Cmk1 CTMJYnVpbHQtaW4JcHJlcGFyZWQJNAk1MTg2Ny4wCTUxODU2Ljg3Njk4NQppNQkzCWJ1aWx0 LWluLWd1YwlzaW1wbGUJMQkxNDA1OC4wCTE0MDUzLjEyMzk0NwppNQkzCWJ1aWx0LWluLWd1 YwlzaW1wbGUJNAk0ODUzOC4wCTQ4NTMwLjg1NjMyNwppNQkzCWJ1aWx0LWluLWd1YwlwcmVw YXJlZAkxCTE1MDEwLjkJMTUwMjYuMzM1MjYzCmk1CTMJYnVpbHQtaW4tZ3VjCXByZXBhcmVk CTQJNTE5ODIuNQk1MTk4OS40NjY0NzUKaTUJNAltYXN0ZXIJc2ltcGxlCTEJMTQxNTQuNgkx NDExNy4zNTk2NzYKaTUJNAltYXN0ZXIJc2ltcGxlCTQJNDg1NzAuNAk0ODU3MC44NTIxNjgK aTUJNAltYXN0ZXIJcHJlcGFyZWQJMQkxNDkyMC45CTE0OTM5Ljc4ODcxNgppNQk0CW1hc3Rl cglwcmVwYXJlZAk0CTUxNTg4LjQJNTE1NzguNjA0ODI0Cmk1CTQJYnVpbHQtaW4Jc2ltcGxl CTEJMTQxMDcuOQkxNDEwOS42NTE0NTIKaTUJNAlidWlsdC1pbglzaW1wbGUJNAk0ODM5OC42 CTQ4NDAwLjMwNDI1MQppNQk0CWJ1aWx0LWluCXByZXBhcmVkCTEJMTQ3NzUuNAkxNDc4Mi42 NjUzOTMKaTUJNAlidWlsdC1pbglwcmVwYXJlZAk0CTUxNDk1LjcJNTE0NjAuNDM4NjY4Cmk1 CTQJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTE0MDAyLjMJMTQwMDYuOTgzMDU3Cmk1CTQJYnVp bHQtaW4tZ3VjCXNpbXBsZQk0CTQ4NDc3LjkJNDg0NTUuNjIxNDE3Cmk1CTQJYnVpbHQtaW4t Z3VjCXByZXBhcmVkCTEJMTQ5NDMuNgkxNDk1Ni4wMDcwODcKaTUJNAlidWlsdC1pbi1ndWMJ cHJlcGFyZWQJNAk1MTUxMS41CTUxNDcyLjU4NjQ3MAppNQk1CW1hc3RlcglzaW1wbGUJMQkx NDIzMC40CTE0MTk1LjA1MTU4NAppNQk1CW1hc3RlcglzaW1wbGUJNAk0ODgzMy44CTQ4ODI2 LjUxNjc2OQppNQk1CW1hc3RlcglwcmVwYXJlZAkxCTE0OTg4LjYJMTUwMTguNjk1OTUxCmk1 CTUJbWFzdGVyCXByZXBhcmVkCTQJNTE1NzUuNwk1MTU2OS44NTU1NDQKaTUJNQlidWlsdC1p bglzaW1wbGUJMQkxMzkxMS4yCTEzOTA5LjI0MjY0MwppNQk1CWJ1aWx0LWluCXNpbXBsZQk0 CTQ4MzUzLjUJNDgzNTcuMjUwNzYwCmk1CTUJYnVpbHQtaW4JcHJlcGFyZWQJMQkxNDc4Ny42 CTE0ODA0LjM1OTQ1MgppNQk1CWJ1aWx0LWluCXByZXBhcmVkCTQJNTExNzQuMQk1MTE1OS44 NzkzNjkKaTUJNQlidWlsdC1pbi1ndWMJc2ltcGxlCTEJMTQxMzguOAkxNDE0My4zNTk3MDIK aTUJNQlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDg2MTcuMAk0ODYwMS43NDMyODIKaTUJNQli dWlsdC1pbi1ndWMJcHJlcGFyZWQJMQkxNTAzMi43CTE1MDI2LjgzMDUxOQppNQk1CWJ1aWx0 LWluLWd1YwlwcmVwYXJlZAk0CTUxNzQxLjQJNTE3MjMuNjAyODU0Cmk1CTYJbWFzdGVyCXNp bXBsZQkxCTE0MTM2LjIJMTQxMDYuNTA3MTU1Cmk1CTYJbWFzdGVyCXNpbXBsZQk0CTQ4NTI3 LjgJNDg1MDkuODgyMDU3Cmk1CTYJbWFzdGVyCXByZXBhcmVkCTEJMTQ5NzAuNgkxNDk3Ny45 MzM1NTIKaTUJNgltYXN0ZXIJcHJlcGFyZWQJNAk1MTY0NS40CTUxNjAyLjM1NjkyNAppNQk2 CWJ1aWx0LWluCXNpbXBsZQkxCTE0MTAzLjUJMTQxMDguNTk0MTIxCmk1CTYJYnVpbHQtaW4J c2ltcGxlCTQJNDg3MTYuMQk0ODcwNy43NTMwNjUKaTUJNglidWlsdC1pbglwcmVwYXJlZAkx CTE1MDQwLjkJMTUwMTQuMjk1ODI1Cmk1CTYJYnVpbHQtaW4JcHJlcGFyZWQJNAk1MTY5OC42 CTUxNjk4Ljk5NjQ5MgppNQk2CWJ1aWx0LWluLWd1YwlzaW1wbGUJMQkxNDA4OC43CTE0MDcw LjM2Njg1MQppNQk2CWJ1aWx0LWluLWd1YwlzaW1wbGUJNAk0ODEyNy44CTQ4MDUzLjI0MTg4 OQppNQk2CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAkxCTE0OTgxLjcJMTQ5ODcuMDE1NDU5Cmk1 CTYJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTQJNTEyNjIuMwk1MTI3Mi43NzQ0MzgKaTUJNwlt YXN0ZXIJc2ltcGxlCTEJMTQxOTYuNwkxNDE0OS41MTkyODcKaTUJNwltYXN0ZXIJc2ltcGxl CTQJNDgzODYuNQk0ODM2NC44OTIyMDMKaTUJNwltYXN0ZXIJcHJlcGFyZWQJMQkxNDk4NC40 CTE1MDA3LjQ2MzcwNgppNQk3CW1hc3RlcglwcmVwYXJlZAk0CTUxNjQ5LjkJNTE2NDcuMzEx NTAwCmk1CTcJYnVpbHQtaW4Jc2ltcGxlCTEJMTQwNDEuMgkxNDAzMC43ODAxMzAKaTUJNwli dWlsdC1pbglzaW1wbGUJNAk0ODQ5OS40CTQ4NDc3LjAyNzE2OQppNQk3CWJ1aWx0LWluCXBy ZXBhcmVkCTEJMTQ5MzUuOAkxNDk2NS41Mzc0NDgKaTUJNwlidWlsdC1pbglwcmVwYXJlZAk0 CTUxMzMxLjUJNTEzMjguNDkyNjkzCmk1CTcJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTE0MDcw LjIJMTQwNTEuMTcwMzIyCmk1CTcJYnVpbHQtaW4tZ3VjCXNpbXBsZQk0CTQ4MjQ4LjAJNDgy MzMuNTU1MzI4Cmk1CTcJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTUwMDIuMgkxNDk4NC45 MDQxNTkKaTUJNwlidWlsdC1pbi1ndWMJcHJlcGFyZWQJNAk1MTIyOC4yCTUxMjIyLjAwNDg1 NgppNQk4CW1hc3RlcglzaW1wbGUJMQkxNDEwNS42CTE0MTA2LjYxMDI0MQppNQk4CW1hc3Rl cglzaW1wbGUJNAk0ODQ3NS43CTQ4NDY1LjA0MjI2NAppNQk4CW1hc3RlcglwcmVwYXJlZAkx CTE0OTI3LjYJMTQ5MjQuOTk2NzU1Cmk1CTgJbWFzdGVyCXByZXBhcmVkCTQJNTExMTYuOQk1 MTEwOS41MjQ0MTkKaTUJOAlidWlsdC1pbglzaW1wbGUJMQkxMzk4NC44CTEzOTgzLjMzODI0 NQppNQk4CWJ1aWx0LWluCXNpbXBsZQk0CTQ4MDUxLjUJNDgwNjYuMTcwMTA2Cmk1CTgJYnVp bHQtaW4JcHJlcGFyZWQJMQkxNDc2Ny42CTE0NzI4LjQ3MDcxOAppNQk4CWJ1aWx0LWluCXBy ZXBhcmVkCTQJNTA3MzEuNgk1MDcyNS41NDcwMTMKaTUJOAlidWlsdC1pbi1ndWMJc2ltcGxl CTEJMTQyMDcuMAkxNDE3Mi40MTQwOTAKaTUJOAlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDgy MzQuNAk0ODIzOC43Njg2MDIKaTUJOAlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMQkxNDk1MS42 CTE0OTU2LjQwNzU5NwppNQk4CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTUxODE5LjAJNTE4 MTcuMDMyNzg3Cmk1CTkJbWFzdGVyCXNpbXBsZQkxCTE0MTI4LjkJMTQxNTguMTYxMTk3Cmk1 CTkJbWFzdGVyCXNpbXBsZQk0CTQ4NDM1LjkJNDg0NDYuMzE5ODAwCmk1CTkJbWFzdGVyCXBy ZXBhcmVkCTEJMTUwMzIuMwkxNTA3MC4xMzIxMDAKaTUJOQltYXN0ZXIJcHJlcGFyZWQJNAk1 MTcyNC41CTUxNzE0LjYyNTc5OAppNQk5CWJ1aWx0LWluCXNpbXBsZQkxCTE0MDk2LjQJMTQw OTEuOTkzNzE2Cmk1CTkJYnVpbHQtaW4Jc2ltcGxlCTQJNDg4MDYuOQk0ODgwMi41MTk0OTAK aTUJOQlidWlsdC1pbglwcmVwYXJlZAkxCTE0OTI4LjUJMTQ5NTEuMzc4MzI4Cmk1CTkJYnVp bHQtaW4JcHJlcGFyZWQJNAk1MTU4MC41CTUxNTU3LjY1MTYxOAppNQk5CWJ1aWx0LWluLWd1 YwlzaW1wbGUJMQkxNDA4NS44CTE0MDk1LjM1NzIxMQppNQk5CWJ1aWx0LWluLWd1YwlzaW1w bGUJNAk0ODY0NC44CTQ4NjM4LjM0ODE5NAppNQk5CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAkx CTE0OTA5LjYJMTQ4NzguMDIzMjgwCmk1CTkJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTQJNTA5 OTEuMQk1MDk0Ny43NjE1MDkKaTUJMTAJbWFzdGVyCXNpbXBsZQkxCTE0MTk0LjYJMTQyMTIu NjI5NzI0Cmk1CTEwCW1hc3RlcglzaW1wbGUJNAk0ODg0OC4yCTQ4ODM4LjMzNDI2NwppNQkx MAltYXN0ZXIJcHJlcGFyZWQJMQkxNTE2Mi43CTE1MTM0LjAyODUyNgppNQkxMAltYXN0ZXIJ cHJlcGFyZWQJNAk1MTcxMC44CTUxNzIyLjIxMTk5NgppNQkxMAlidWlsdC1pbglzaW1wbGUJ MQkxNDMyMS41CTE0Mjk1LjUzNTg0NAppNQkxMAlidWlsdC1pbglzaW1wbGUJNAk0ODcyNS40 CTQ4NzM1LjYzMjEwMAppNQkxMAlidWlsdC1pbglwcmVwYXJlZAkxCTE1MTEyLjkJMTUwNzUu Nzk5Njc3Cmk1CTEwCWJ1aWx0LWluCXByZXBhcmVkCTQJNTEzMzYuNgk1MTM0MC41OTQ0NzgK aTUJMTAJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTE0MDE2LjYJMTM5OTUuMTE0NjgxCmk1CTEw CWJ1aWx0LWluLWd1YwlzaW1wbGUJNAk0ODA4NS4wCTQ4MDY5LjQ0ODI4MwppNQkxMAlidWls dC1pbi1ndWMJcHJlcGFyZWQJMQkxNTAyMC44CTE1MDA2LjUyNzQzNgppNQkxMAlidWlsdC1p bi1ndWMJcHJlcGFyZWQJNAk1MTY1NC42CTUxNjIxLjk4MzU2Mwp4ZW9uCTEJbWFzdGVyCXNp bXBsZQkxCTEyMzIxLjAJMTIxMTMuNjg2MzUyCnhlb24JMQltYXN0ZXIJc2ltcGxlCTQJNDYw NjEuOAk0NjE2Ny45MDg5MTYKeGVvbgkxCW1hc3RlcglzaW1wbGUJMTYJMTQxOTEzLjEJMTQy NDg0LjA3NzI4Mgp4ZW9uCTEJbWFzdGVyCXByZXBhcmVkCTEJMTMxMzYuNwkxMzM3Ni40Njc1 MDgKeGVvbgkxCW1hc3RlcglwcmVwYXJlZAk0CTQ4OTI3LjAJNDkxMjUuNjk5ODMyCnhlb24J MQltYXN0ZXIJcHJlcGFyZWQJMTYJMTQ5NjE3LjYJMTQ5ODkwLjk0MjA5MQp4ZW9uCTEJYnVp bHQtaW4Jc2ltcGxlCTEJMTE2OTguNgkxMTk4NC41NTk0MzkKeGVvbgkxCWJ1aWx0LWluCXNp bXBsZQk0CTQ2MjUzLjMJNDY0MDUuODE0NzU1Cnhlb24JMQlidWlsdC1pbglzaW1wbGUJMTYJ MTQyMTA4LjcJMTQyMjA0LjE1OTI1MQp4ZW9uCTEJYnVpbHQtaW4JcHJlcGFyZWQJMQkxMzI2 Mi42CTEzMjc4Ljc2NjE3MAp4ZW9uCTEJYnVpbHQtaW4JcHJlcGFyZWQJNAk0OTM3My40CTQ5 MTE2LjY4MjkyNgp4ZW9uCTEJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUwOTc1LjEJMTUwODgy LjkwMTAyNgp4ZW9uCTEJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyNDExLjMJMTIyMDkuNTY5 Njc1Cnhlb24JMQlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDYzNjIuOAk0NjI5Mi42MDgyNDEK eGVvbgkxCWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQzMDk3LjYJMTQzMjU1LjIxMzQxNAp4 ZW9uCTEJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTI4OTEuNAkxMjkwNC44MzAwNTYKeGVv bgkxCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ5MDM3LjUJNDk2NTAuMjA3Mjk4Cnhlb24J MQlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUxNjA1LjIJMTUxNzY2LjQ5MjYzOQp4ZW9u CTIJbWFzdGVyCXNpbXBsZQkxCTEyNTk0LjAJMTI1NjkuOTc1MTQ3Cnhlb24JMgltYXN0ZXIJ c2ltcGxlCTQJNDYwOTUuMAk0NjMzNC4zNzI0OTcKeGVvbgkyCW1hc3RlcglzaW1wbGUJMTYJ MTQzMTEwLjYJMTQzMjUxLjY1NDk2Nwp4ZW9uCTIJbWFzdGVyCXByZXBhcmVkCTEJMTM1OTMu MAkxMzg0OS4yMTY0MzMKeGVvbgkyCW1hc3RlcglwcmVwYXJlZAk0CTUwMjQxLjMJNTA3NzEu OTQzNDgxCnhlb24JMgltYXN0ZXIJcHJlcGFyZWQJMTYJMTUzNzE5LjIJMTUzOTY0LjE2NTIx NAp4ZW9uCTIJYnVpbHQtaW4Jc2ltcGxlCTEJMTI1ODEuNgkxMjM2Mi43NjA1NjAKeGVvbgky CWJ1aWx0LWluCXNpbXBsZQk0CTQ2Njg4LjAJNDY5MjAuMzkzMDMyCnhlb24JMglidWlsdC1p bglzaW1wbGUJMTYJMTQzMzM5LjEJMTQzNjA4LjQ2NTIxNwp4ZW9uCTIJYnVpbHQtaW4JcHJl cGFyZWQJMQkxMzM3Ny4yCTEzNjE0LjMxMTA5OQp4ZW9uCTIJYnVpbHQtaW4JcHJlcGFyZWQJ NAk1MDI0My4wCTUwMzMxLjExMzIyMgp4ZW9uCTIJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTU0 ODk2LjAJMTU1MTk0LjA4MzM4Ngp4ZW9uCTIJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyNDAz LjYJMTI0MzIuNDkwMzYzCnhlb24JMglidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDU3NDcuNgk0 NjM0OS42NjEzMTUKeGVvbgkyCWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQzMDM5LjYJMTQz MTEzLjYyNTAyMAp4ZW9uCTIJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTMyMjAuOQkxMzM0 NS45NzMxMTUKeGVvbgkyCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ4NTYzLjMJNDg4Mjku OTY1Mzg2Cnhlb24JMglidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUxNDI5LjUJMTUxNzMy LjM5NDgyNQp4ZW9uCTMJbWFzdGVyCXNpbXBsZQkxCTEyMjg4LjcJMTIyOTguNDc2NTE2Cnhl b24JMwltYXN0ZXIJc2ltcGxlCTQJNDU4ODAuNwk0NTc2NS4wNTE4MDAKeGVvbgkzCW1hc3Rl cglzaW1wbGUJMTYJMTQxMjQwLjMJMTQxMjQyLjA1NjM2NAp4ZW9uCTMJbWFzdGVyCXByZXBh cmVkCTEJMTUwNjcuNQkxNDIzNy41MjQ4OTAKeGVvbgkzCW1hc3RlcglwcmVwYXJlZAk0CTQ4 NjYzLjgJNDg4NzUuNzkyOTA5Cnhlb24JMwltYXN0ZXIJcHJlcGFyZWQJMTYJMTUxMjk1LjcJ MTUxNDkzLjU4NzIyMAp4ZW9uCTMJYnVpbHQtaW4Jc2ltcGxlCTEJMTI0MjguNwkxMjM1Ny44 OTczNjQKeGVvbgkzCWJ1aWx0LWluCXNpbXBsZQk0CTQ2Mjc2LjkJNDYyODMuOTE5NTU4Cnhl b24JMwlidWlsdC1pbglzaW1wbGUJMTYJMTQyMTk4LjYJMTQyMTQ3Ljg4NTA3MAp4ZW9uCTMJ YnVpbHQtaW4JcHJlcGFyZWQJMQkxMzE0NS4wCTEzMTI5LjczNTExOAp4ZW9uCTMJYnVpbHQt aW4JcHJlcGFyZWQJNAk0OTI0My4zCTQ5NTA1Ljg1NDY4NAp4ZW9uCTMJYnVpbHQtaW4JcHJl cGFyZWQJMTYJMTUxMTU4LjQJMTUxNDkwLjg4NTg2Nwp4ZW9uCTMJYnVpbHQtaW4tZ3VjCXNp bXBsZQkxCTEyODc2LjkJMTI3OTkuMzU4NzEzCnhlb24JMwlidWlsdC1pbi1ndWMJc2ltcGxl CTQJNDU4MDAuMwk0NTkxMC4wNjkyNTUKeGVvbgkzCWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJ MTQxNjA2LjEJMTQxNzA2LjEyNDA3OQp4ZW9uCTMJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJ MTMxNzUuNQkxMzE1OS4zMTQ5ODAKeGVvbgkzCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ5 NzI0LjAJNDk5MzMuNjcwOTY1Cnhlb24JMwlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUy MjYyLjMJMTUyMzMwLjM5MTgxMAp4ZW9uCTQJbWFzdGVyCXNpbXBsZQkxCTEyMzQyLjcJMTIy NzMuMDM3MjgyCnhlb24JNAltYXN0ZXIJc2ltcGxlCTQJNDU3MzUuMwk0NjI3OC44NTA1NDgK eGVvbgk0CW1hc3RlcglzaW1wbGUJMTYJMTQwMzIyLjAJMTQwNTA2LjUxOTI2NQp4ZW9uCTQJ bWFzdGVyCXByZXBhcmVkCTEJMTI5OTIuNgkxMjkwMS44NzE4ODgKeGVvbgk0CW1hc3Rlcglw cmVwYXJlZAk0CTQ4MzU3LjkJNDg0MjguMjMwNDA0Cnhlb24JNAltYXN0ZXIJcHJlcGFyZWQJ MTYJMTQ5NjI5LjQJMTQ5NzMyLjc2Nzc1Mwp4ZW9uCTQJYnVpbHQtaW4Jc2ltcGxlCTEJMTI1 ODcuNAkxMjU2Ny42MzkxODQKeGVvbgk0CWJ1aWx0LWluCXNpbXBsZQk0CTQ2NjkxLjkJNDY2 OTkuOTYyMDk2Cnhlb24JNAlidWlsdC1pbglzaW1wbGUJMTYJMTQyNDY1LjcJMTQyNzU2LjI1 NjI4Nwp4ZW9uCTQJYnVpbHQtaW4JcHJlcGFyZWQJMQkxMzIxOC4yCTEzNDYxLjI1ODIyNwp4 ZW9uCTQJYnVpbHQtaW4JcHJlcGFyZWQJNAk0ODkxNC40CTQ5MTQwLjUwOTQwNQp4ZW9uCTQJ YnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUxNzcyLjIJMTUxOTY3LjM1NDE0OAp4ZW9uCTQJYnVp bHQtaW4tZ3VjCXNpbXBsZQkxCTEyMjUzLjcJMTIyNTIuNDMxODk1Cnhlb24JNAlidWlsdC1p bi1ndWMJc2ltcGxlCTQJNDQ0NTUuMwk0NDY3Mi4wODYxNTgKeGVvbgk0CWJ1aWx0LWluLWd1 YwlzaW1wbGUJMTYJMTM5MTA3LjgJMTM5NDU4LjU3MDY0NQp4ZW9uCTQJYnVpbHQtaW4tZ3Vj CXByZXBhcmVkCTEJMTI1NTYuOAkxMjgwNi4yOTIyMzYKeGVvbgk0CWJ1aWx0LWluLWd1Ywlw cmVwYXJlZAk0CTQ4NTA5LjMJNDg2MTAuODEzNzUzCnhlb24JNAlidWlsdC1pbi1ndWMJcHJl cGFyZWQJMTYJMTUxODkwLjMJMTUyMjk2LjQ3NjAwNgp4ZW9uCTUJbWFzdGVyCXNpbXBsZQkx CTEyMTI4LjUJMTIxNzAuMDc5MDI0Cnhlb24JNQltYXN0ZXIJc2ltcGxlCTQJNDYxNDMuMgk0 NjA2MC44MDYwMzQKeGVvbgk1CW1hc3RlcglzaW1wbGUJMTYJMTQwODI5LjgJMTQxMDIwLjQz MTI1MQp4ZW9uCTUJbWFzdGVyCXByZXBhcmVkCTEJMTMzNDAuMAkxMzUyMS4wMTgwODAKeGVv bgk1CW1hc3RlcglwcmVwYXJlZAk0CTUxMzA0LjcJNTEwMjQuMjQyMjQ5Cnhlb24JNQltYXN0 ZXIJcHJlcGFyZWQJMTYJMTUxNzc1LjEJMTUxOTc1LjI2NDkzNAp4ZW9uCTUJYnVpbHQtaW4J c2ltcGxlCTEJMTI0NzcuMwkxMjQ0My45NzQxNDAKeGVvbgk1CWJ1aWx0LWluCXNpbXBsZQk0 CTQ1NTYxLjIJNDU0NTcuMTAzOTQ5Cnhlb24JNQlidWlsdC1pbglzaW1wbGUJMTYJMTQyNDI0 LjMJMTQyNDIyLjk1NTUyNQp4ZW9uCTUJYnVpbHQtaW4JcHJlcGFyZWQJMQkxMzI0My4wCTEz MzQ4LjM0NzkxMgp4ZW9uCTUJYnVpbHQtaW4JcHJlcGFyZWQJNAk0ODg1OC41CTQ4ODEzLjA3 MjU4OAp4ZW9uCTUJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUxNDI1LjYJMTUxNjQ3LjcwMTU2 OQp4ZW9uCTUJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyNDM3LjQJMTI0MzkuOTI1ODU2Cnhl b24JNQlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDU5OTguOAk0NjQzMC4zNDgyMTkKeGVvbgk1 CWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQxNzI1LjAJMTQxOTc1LjAwNjEzNAp4ZW9uCTUJ YnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTMzMjAuMgkxMzY5My42NzY0NTAKeGVvbgk1CWJ1 aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ5NDY4LjkJNDk0MTQuMTAyNjYyCnhlb24JNQlidWls dC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUyMzk3LjEJMTUyNzgzLjU1OTUyNgp4ZW9uCTYJbWFz dGVyCXNpbXBsZQkxCTEyMjk5LjgJMTIyNzQuMzQxNzU1Cnhlb24JNgltYXN0ZXIJc2ltcGxl CTQJNDU2OTAuMAk0NTc1NS41MjY0MTcKeGVvbgk2CW1hc3RlcglzaW1wbGUJMTYJMTQxNjk1 LjQJMTQxNzA2LjkyNjgxMgp4ZW9uCTYJbWFzdGVyCXByZXBhcmVkCTEJMTI4NTguNgkxMzAy Mi41OTY5ODMKeGVvbgk2CW1hc3RlcglwcmVwYXJlZAk0CTQ4ODI1LjkJNDg3MTEuMDUxNTEw Cnhlb24JNgltYXN0ZXIJcHJlcGFyZWQJMTYJMTUwNzYyLjYJMTUxMTA4LjAyNzM5OAp4ZW9u CTYJYnVpbHQtaW4Jc2ltcGxlCTEJMTIxMjguMAkxMjA3Ny4wMzM3MjEKeGVvbgk2CWJ1aWx0 LWluCXNpbXBsZQk0CTQ1Mzc4LjYJNDU1NjguMTkyNDc4Cnhlb24JNglidWlsdC1pbglzaW1w bGUJMTYJMTQxMDMzLjEJMTQxMzQzLjk2MzE2OAp4ZW9uCTYJYnVpbHQtaW4JcHJlcGFyZWQJ MQkxMjk2NS44CTEzNDE0LjYzNTA2MQp4ZW9uCTYJYnVpbHQtaW4JcHJlcGFyZWQJNAk0ODY1 NC4xCTQ4NzEyLjU5MTEwNAp4ZW9uCTYJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUwNTkwLjQJ MTUwNzk3LjA1MTQ2Mgp4ZW9uCTYJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyMzQ4LjYJMTIz NTEuNDg4OTc2Cnhlb24JNglidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDY0NjcuOAk0NjM4Ny4x NjMwODQKeGVvbgk2CWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQzNzM0LjMJMTQzODIxLjUx MzU1Nwp4ZW9uCTYJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTMxMzguMAkxMzc4OC40MjU0 NzEKeGVvbgk2CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTUwMzk4LjAJNTA2MDguOTMzNTA1 Cnhlb24JNglidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTU0MDgyLjcJMTUzODk0LjIwOTg3 MQp4ZW9uCTcJbWFzdGVyCXNpbXBsZQkxCTEyMzIwLjAJMTI3OTkuODU0NDIwCnhlb24JNwlt YXN0ZXIJc2ltcGxlCTQJNDYwNDAuMwk0NjE0MC4xMzU2OTUKeGVvbgk3CW1hc3RlcglzaW1w bGUJMTYJMTQyNDk3LjEJMTQyODc2LjU2MTg3MAp4ZW9uCTcJbWFzdGVyCXByZXBhcmVkCTEJ MTMyMDAuNwkxMzE4Ny4wMTE2MjIKeGVvbgk3CW1hc3RlcglwcmVwYXJlZAk0CTQ5MzQ2LjMJ NTAwNjMuMjE4Mzc4Cnhlb24JNwltYXN0ZXIJcHJlcGFyZWQJMTYJMTUyODI1LjUJMTUyODA4 LjY4Mjk5Ngp4ZW9uCTcJYnVpbHQtaW4Jc2ltcGxlCTEJMTIyMTMuNgkxMTk4OC41NjE5NDYK eGVvbgk3CWJ1aWx0LWluCXNpbXBsZQk0CTQ1MjA1LjEJNDUxOTEuOTE1NDM5Cnhlb24JNwli dWlsdC1pbglzaW1wbGUJMTYJMTM5NzAyLjMJMTM5OTQ4Ljk1MDI3OAp4ZW9uCTcJYnVpbHQt aW4JcHJlcGFyZWQJMQkxMjczNS41CTEyOTQ0Ljc2NzU3Ngp4ZW9uCTcJYnVpbHQtaW4JcHJl cGFyZWQJNAk0Nzk0MC4xCTQ4MDk5LjI1NDkyMwp4ZW9uCTcJYnVpbHQtaW4JcHJlcGFyZWQJ MTYJMTQ4NDc4LjcJMTQ4NzY4LjIxOTQ3NQp4ZW9uCTcJYnVpbHQtaW4tZ3VjCXNpbXBsZQkx CTEyNDc5LjMJMTIzODguMzkwNjI5Cnhlb24JNwlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDU0 MTcuOQk0NjA5NC44ODM4OTgKeGVvbgk3CWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQxNTM4 LjEJMTQxNjQ3Ljc3ODc3Mgp4ZW9uCTcJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTI5MTMu NgkxMjk1OS4yNTQ2MTgKeGVvbgk3CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ4NDQwLjAJ NDg0NzguNDYwNzk2Cnhlb24JNwlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUxMDQwLjgJ MTUxMzY3LjExODM2Nwp4ZW9uCTgJbWFzdGVyCXNpbXBsZQkxCTEyMDYzLjMJMTIwNjIuNTUw NTU0Cnhlb24JOAltYXN0ZXIJc2ltcGxlCTQJNDUwMjIuNgk0NTM3NS43NTE0NjIKeGVvbgk4 CW1hc3RlcglzaW1wbGUJMTYJMTM5Mzc4LjAJMTM5NjE2LjUxMjM4OQp4ZW9uCTgJbWFzdGVy CXByZXBhcmVkCTEJMTMwMjIuNQkxMzAzNC42MDgwMzcKeGVvbgk4CW1hc3RlcglwcmVwYXJl ZAk0CTQ3NzU2LjQJNDgwMzIuMTQxNjY5Cnhlb24JOAltYXN0ZXIJcHJlcGFyZWQJMTYJMTUw NjQ5LjQJMTUwNzM5LjE2OTUwOAp4ZW9uCTgJYnVpbHQtaW4Jc2ltcGxlCTEJMTI2MzYuOQkx MjU4Mi4zNTU1MjEKeGVvbgk4CWJ1aWx0LWluCXNpbXBsZQk0CTQ2NDc2LjAJNDY0NDEuMzg3 ODQ5Cnhlb24JOAlidWlsdC1pbglzaW1wbGUJMTYJMTQ0MTUzLjcJMTQ0MzU5LjM2NzYyNgp4 ZW9uCTgJYnVpbHQtaW4JcHJlcGFyZWQJMQkxMzIzOC4yCTEzMzk0LjUwMzA1OAp4ZW9uCTgJ YnVpbHQtaW4JcHJlcGFyZWQJNAk0OTYzNi45CTQ5NTU3LjQ5MzMwMgp4ZW9uCTgJYnVpbHQt aW4JcHJlcGFyZWQJMTYJMTUzODQ1LjEJMTU0MTI4LjQ1MTQzOQp4ZW9uCTgJYnVpbHQtaW4t Z3VjCXNpbXBsZQkxCTEyNTE1LjMJMTI1MTcuMjE3OTEwCnhlb24JOAlidWlsdC1pbi1ndWMJ c2ltcGxlCTQJNDcwMDkuNAk0NzEyNi42OTc1ODYKeGVvbgk4CWJ1aWx0LWluLWd1YwlzaW1w bGUJMTYJMTQzNjM4LjEJMTQzODQ3LjQ0NDY1MQp4ZW9uCTgJYnVpbHQtaW4tZ3VjCXByZXBh cmVkCTEJMTM0NDUuMgkxMzcwMC43MTg4MjkKeGVvbgk4CWJ1aWx0LWluLWd1YwlwcmVwYXJl ZAk0CTUwMzQ2LjUJNTAxMzQuMDU5NzczCnhlb24JOAlidWlsdC1pbi1ndWMJcHJlcGFyZWQJ MTYJMTUyNDg4LjUJMTUyNjIzLjkzNDg5Mgp4ZW9uCTkJbWFzdGVyCXNpbXBsZQkxCTEyNDkw LjgJMTI0NTQuOTY5OTYyCnhlb24JOQltYXN0ZXIJc2ltcGxlCTQJNDYyNjAuNQk0NjE0OS44 NDk0NTkKeGVvbgk5CW1hc3RlcglzaW1wbGUJMTYJMTQyNjc4LjIJMTQyNzE3LjQ3MjM0OQp4 ZW9uCTkJbWFzdGVyCXByZXBhcmVkCTEJMTMwNTcuMAkxMzQzNS4yNTIyODEKeGVvbgk5CW1h c3RlcglwcmVwYXJlZAk0CTQ5MTA0LjAJNDkyMzMuODY1OTIyCnhlb24JOQltYXN0ZXIJcHJl cGFyZWQJMTYJMTUyMzI0LjgJMTUyMzYzLjQ5NTMwNwp4ZW9uCTkJYnVpbHQtaW4Jc2ltcGxl CTEJMTI1NDcuNQkxMjU0Mi4zMTA5ODAKeGVvbgk5CWJ1aWx0LWluCXNpbXBsZQk0CTQ2MzYx LjkJNDY0NDkuODY3NjQ5Cnhlb24JOQlidWlsdC1pbglzaW1wbGUJMTYJMTQzNTY4LjcJMTQz OTAyLjE4OTg4Ngp4ZW9uCTkJYnVpbHQtaW4JcHJlcGFyZWQJMQkxMzQ4Ni40CTEzNjQ2LjIz MzU2OAp4ZW9uCTkJYnVpbHQtaW4JcHJlcGFyZWQJNAk1MDQ4OS40CTUxMTQ4LjU5NDk4MAp4 ZW9uCTkJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUzNTg3LjgJMTU0MDgyLjM3NzA5Ngp4ZW9u CTkJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyMjAwLjcJMTIxOTQuOTIyOTU3Cnhlb24JOQli dWlsdC1pbi1ndWMJc2ltcGxlCTQJNDY0NDQuMwk0NjYwOC41MzQ3NzgKeGVvbgk5CWJ1aWx0 LWluLWd1YwlzaW1wbGUJMTYJMTQzMjQ4LjkJMTQzNDc1Ljk1MDM0OQp4ZW9uCTkJYnVpbHQt aW4tZ3VjCXByZXBhcmVkCTEJMTMzMjcuOQkxMzUzNi41MjI4NzYKeGVvbgk5CWJ1aWx0LWlu LWd1YwlwcmVwYXJlZAk0CTQ5NDIwLjMJNDk0MDEuOTMyNzg0Cnhlb24JOQlidWlsdC1pbi1n dWMJcHJlcGFyZWQJMTYJMTUxODU5LjEJMTUyMTY2LjgxOTc2Ngp4ZW9uCTEwCW1hc3Rlcglz aW1wbGUJMQkxMjYxMS4wCTEyNTQ4LjQxNDkzNwp4ZW9uCTEwCW1hc3RlcglzaW1wbGUJNAk0 NjM5Ni45CTQ2MzU5LjM0MTI5OQp4ZW9uCTEwCW1hc3RlcglzaW1wbGUJMTYJMTQzMDUzLjYJ MTQzMDg3LjkyNDM0Nwp4ZW9uCTEwCW1hc3RlcglwcmVwYXJlZAkxCTEzMDk5LjgJMTMyNzQu Njk0Nzc3Cnhlb24JMTAJbWFzdGVyCXByZXBhcmVkCTQJNDgzNzIuOQk0ODI5OC44MjIwNzkK eGVvbgkxMAltYXN0ZXIJcHJlcGFyZWQJMTYJMTUyNjY3LjYJMTUyNjA3Ljk3OTYzOAp4ZW9u CTEwCWJ1aWx0LWluCXNpbXBsZQkxCTEyNDMxLjUJMTI2MDMuODk3NTU5Cnhlb24JMTAJYnVp bHQtaW4Jc2ltcGxlCTQJNDU3MDIuMwk0NTgzNy4yNzQ4MjMKeGVvbgkxMAlidWlsdC1pbglz aW1wbGUJMTYJMTQxMjQyLjMJMTQxMzIxLjQ4NjU4NQp4ZW9uCTEwCWJ1aWx0LWluCXByZXBh cmVkCTEJMTMwMDQuNAkxMzAxNy4zMDk5NDUKeGVvbgkxMAlidWlsdC1pbglwcmVwYXJlZAk0 CTQ4NzI1LjcJNDg2NjAuNjEwODM0Cnhlb24JMTAJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUw MjU2LjYJMTUwNDQwLjYxNTI2MAp4ZW9uCTEwCWJ1aWx0LWluLWd1YwlzaW1wbGUJMQkxMjA1 MS45CTEyMDQ2LjE1NDUxOQp4ZW9uCTEwCWJ1aWx0LWluLWd1YwlzaW1wbGUJNAk0NTkxNi45 CTQ2MTM5LjkxMTgxMAp4ZW9uCTEwCWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQxOTkxLjMJ MTQxOTY4LjUxNTMxNwp4ZW9uCTEwCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAkxCTEzMDAzLjYJ MTMwMDUuMTA3NjMzCnhlb24JMTAJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTQJNDgyNDAuMwk0 ODM5MC43Mzg0MTcKeGVvbgkxMAlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUwNjYzLjAJ MTUxMDQzLjk2NTQ3Mwo= --------------xDvyz2FLlM3bSG98iLe0rV1u Content-Type: application/x-shellscript; name="run-lock-test.sh" Content-Disposition: attachment; filename="run-lock-test.sh" Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9iYXNoCgpzZXQgLWUKCk1BQ0hJTkU9JDEKCiMgbnVtYmVyIG9mIHJ1bnMg Zm9yIGVhY2ggcGFyYW1ldGVyIGNvbWJpbmF0aW9uClJFUEVBVFM9MTAKCiMgbnVtYmVyIG9m IHNhbXBsZXMgZm9yIGVhY2ggcnVuClNBTVBMRVM9NjAKCiMgZGF0YSBkaXJlY3RvcnkKREFU QURJUj0vbW50L3BnZGF0YS9kYXRhLXRlc3QtbG9ja3MKClBBVEhfT0xEPSRQQVRICgojIGlu aXRpYWxpemUgYSBjbHVzdGVyIGZyb20gc2NyYXRjaApraWxsYWxsIC05IHBvc3RncmVzIHx8 IHRydWUKc2xlZXAgMQoKcm0gLVJmICREQVRBRElSCgpQQVRIPS9tbnQvZGF0YS9idWlsZHMv bWFzdGVyL2JpbjokUEFUSF9PTEQKCnBnX2N0bCAtRCAkREFUQURJUiBpbml0ID4gbG9ncy9p bml0LmxvZyAyPiYxCnBnX2N0bCAtRCAkREFUQURJUiAtbCBsb2dzL3BnLmxvZyBzdGFydCA+ IGxvZ3Mvc3RhcnQubG9nIDI+JjEKY3JlYXRlZGIgdGVzdCA+IGxvZ3MvcGdiZW5jaC1pbml0 LmxvZyAyPiYxCnBnYmVuY2ggLWkgLXMgMSAtLXBhcnRpdGlvbnM9NCB0ZXN0ID4+IGxvZ3Mv cGdiZW5jaC1pbml0LmxvZyAyPiYxCnBzcWwgdGVzdCAtYyAidmFjdXVtIGFuYWx5emU7IiA+ IGxvZ3MvdmFjdXVtLmxvZyAyPiYxCgojdW5jb21tZW50IHRvIHRlc3Qgd2l0aCAxMDI0IGxv Y2tzCiNlY2hvICdtYXhfbG9ja3NfcGVyX3RyYW5zYWN0aW9uID0gMTAyNCcgPj4gJERBVEFE SVIvcG9zdGdyZXNxbC5jb25mCgpSRVNVTFRTPXJlc3VsdHMtJChkYXRlICslcykuY3N2Cgpm b3IgeCBpbiAkKHNlcSAxICRSRVBFQVRTKTsgZG8KCglmb3IgYiBpbiBtYXN0ZXIgYnVpbHQt aW4gIGJ1aWx0LWluLWd1YzsgZG8KCgkJUEFUSD0vbW50L2RhdGEvYnVpbGRzLyRiL2Jpbjok UEFUSF9PTEQKCgkJcGdfY3RsIC1EICREQVRBRElSIHN0b3AgPiBsb2dzL2RlYnVnLmxvZyAy PiYxIHx8IHRydWUKCQlwZ19jdGwgLUQgJERBVEFESVIgLWwgbG9ncy9wZy5sb2cgc3RhcnQg PiBsb2dzL2RlYnVnLmxvZyAyPiYxCgoJCWZvciBtIGluIHNpbXBsZSBwcmVwYXJlZDsgZG8K CgkJCWZvciBjIGluIDEgNDsgZG8KCgkJCQlwZ2JlbmNoIC1uIC1TIC1QIDEgLU0gJG0gLWMg JGMgLWogJGMgLVQgJFNBTVBMRVMgdGVzdCA+IGxvZ3MvJG0tJGMtJGItJHgubG9nIDI+JjEK CgkJCQl0cHNfbWVkaWFuPSQoZ3JlcCAnXnByb2dyZXNzOicgbG9ncy8kbS0kYy0kYi0keC5s b2cgfCBhd2sgJ3twcmludCAkNH0nIHwgc29ydCAtbiB8IGhlYWQgLW4gJCgoU0FNUExFUy8y KSkgfCB0YWlsIC1uIDEpCgkJCQl0cHNfYXZlcmFnZT0kKGdyZXAgJ150cHMgPScgbG9ncy8k bS0kYy0kYi0keC5sb2cgfCBhd2sgJ3twcmludCAkM30nKQoKCQkJCWVjaG8gJE1BQ0hJTkUg JHggJGIgJG0gJGMgJHRwc19tZWRpYW4gJHRwc19hdmVyYWdlID4+ICRSRVNVTFRTCgoJCQlk b25lCgoJCWRvbmUKCglkb25lCgpkb25lCg== --------------xDvyz2FLlM3bSG98iLe0rV1u Content-Type: text/csv; charset=UTF-8; name="results-64.csv" Content-Disposition: attachment; filename="results-64.csv" Content-Transfer-Encoding: base64 aTUJMQltYXN0ZXIJc2ltcGxlCTEJMTM5NDUuNAkxMzk1NC44Mjc0OTIKaTUJMQltYXN0ZXIJ c2ltcGxlCTQJNDg3MTEuOQk0ODY5NS4xNzIwMTEKaTUJMQltYXN0ZXIJcHJlcGFyZWQJMQkx NDg3OS4zCTE0ODgxLjcxMTk3NQppNQkxCW1hc3RlcglwcmVwYXJlZAk0CTUxODUyLjEJNTE4 MzYuMzQzNjQ2Cmk1CTEJYnVpbHQtaW4Jc2ltcGxlCTEJMTQwOTYuNwkxNDEwNS4xMTM0NTEK aTUJMQlidWlsdC1pbglzaW1wbGUJNAk0ODA1MS41CTQ4MDcyLjk5NDQxNAppNQkxCWJ1aWx0 LWluCXByZXBhcmVkCTEJMTUxNDkuMAkxNTEwOS41MDM2MjkKaTUJMQlidWlsdC1pbglwcmVw YXJlZAk0CTUxNzk5LjcJNTE3NzUuODE4MDIzCmk1CTEJYnVpbHQtaW4tZ3VjCXNpbXBsZQkx CTE0MTMyLjYJMTQwOTkuMjkwNzA4Cmk1CTEJYnVpbHQtaW4tZ3VjCXNpbXBsZQk0CTQ4MzQx LjgJNDgzMzcuODQ1NDk5Cmk1CTEJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTQ5OTEuMwkx NDk3NS4yMzU3MjQKaTUJMQlidWlsdC1pbi1ndWMJcHJlcGFyZWQJNAk1MTM4NS4yCTUxMzQ0 Ljc3NjYxMQppNQkyCW1hc3RlcglzaW1wbGUJMQkxNDA1OC42CTE0MDc0LjgxODE3NgppNQky CW1hc3RlcglzaW1wbGUJNAk0ODgzMy41CTQ4ODI0LjE0MTQyNAppNQkyCW1hc3RlcglwcmVw YXJlZAkxCTE1MjYyLjIJMTUyMzUuMzUxNzk4Cmk1CTIJbWFzdGVyCXByZXBhcmVkCTQJNTIx MjUuMgk1MjEwOS43NTYzNDkKaTUJMglidWlsdC1pbglzaW1wbGUJMQkxNDExNS41CTE0MTQw LjUwNzA3MAppNQkyCWJ1aWx0LWluCXNpbXBsZQk0CTQ4NjAwLjYJNDg1OTIuNzk1NzQ5Cmk1 CTIJYnVpbHQtaW4JcHJlcGFyZWQJMQkxNDk3NS44CTE1MDA1LjEyMjA1NQppNQkyCWJ1aWx0 LWluCXByZXBhcmVkCTQJNTE4NTUuMQk1MTY5Mi45NDAyMDgKaTUJMglidWlsdC1pbi1ndWMJ c2ltcGxlCTEJMTQwMTYuOQkxNDAwNS4wMzI4OTIKaTUJMglidWlsdC1pbi1ndWMJc2ltcGxl CTQJNDgxMzIuMQk0ODEwNy43MDY3ODYKaTUJMglidWlsdC1pbi1ndWMJcHJlcGFyZWQJMQkx NDgwNi43CTE0ODI1LjQ2OTE3OAppNQkyCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTUxMDcw LjYJNTEwMzQuODY3NzM5Cmk1CTMJbWFzdGVyCXNpbXBsZQkxCTE0MDExLjEJMTM5OTkuMjY3 MTcyCmk1CTMJbWFzdGVyCXNpbXBsZQk0CTQ4MDUyLjcJNDgwNDcuMzE5MzM2Cmk1CTMJbWFz dGVyCXByZXBhcmVkCTEJMTQ5NjYuNwkxNDk1Mi40NzQzNzEKaTUJMwltYXN0ZXIJcHJlcGFy ZWQJNAk1MTI0Mi40CTUxMjI5LjQ5MDAyNwppNQkzCWJ1aWx0LWluCXNpbXBsZQkxCTE0MTEw LjcJMTQwNzEuOTk5MjkyCmk1CTMJYnVpbHQtaW4Jc2ltcGxlCTQJNDgyNDcuMgk0ODI0Ny45 OTk1MDcKaTUJMwlidWlsdC1pbglwcmVwYXJlZAkxCTE0ODA5LjkJMTQ4MTAuMzEyOTYxCmk1 CTMJYnVpbHQtaW4JcHJlcGFyZWQJNAk1MTQ0OC43CTUxNDQ4LjYxNDQ4MAppNQkzCWJ1aWx0 LWluLWd1YwlzaW1wbGUJMQkxNDA0OC43CTE0MDMxLjk3NTkwMwppNQkzCWJ1aWx0LWluLWd1 YwlzaW1wbGUJNAk0ODYwNC42CTQ4NjA5LjQxMjMyMQppNQkzCWJ1aWx0LWluLWd1YwlwcmVw YXJlZAkxCTE0OTQ1LjEJMTQ5NTYuNjU2MTA4Cmk1CTMJYnVpbHQtaW4tZ3VjCXByZXBhcmVk CTQJNTEyNTQuNwk1MTI0NS40MDc2MjIKaTUJNAltYXN0ZXIJc2ltcGxlCTEJMTQxNDIuMgkx NDE0NS41MzE0MDAKaTUJNAltYXN0ZXIJc2ltcGxlCTQJNDg4NjMuNQk0ODg0OS42MDgyMDIK aTUJNAltYXN0ZXIJcHJlcGFyZWQJMQkxNTEyOC42CTE1MTE2LjY5NjI3MQppNQk0CW1hc3Rl cglwcmVwYXJlZAk0CTUyMTU4LjgJNTIxNTguMTA3OTM3Cmk1CTQJYnVpbHQtaW4Jc2ltcGxl CTEJMTQwNjIuMwkxNDA2MC42NDk4MDAKaTUJNAlidWlsdC1pbglzaW1wbGUJNAk0ODYzNy41 CTQ4NTYxLjE5NjEzNQppNQk0CWJ1aWx0LWluCXByZXBhcmVkCTEJMTQ5NTAuNgkxNDk3Ni45 NzQwNDAKaTUJNAlidWlsdC1pbglwcmVwYXJlZAk0CTUxNjUxLjEJNTE2NDcuMTEyMjA0Cmk1 CTQJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTE0MTQyLjMJMTQxMzAuNzc1NzIwCmk1CTQJYnVp bHQtaW4tZ3VjCXNpbXBsZQk0CTQ4NDM2LjIJNDg0MTMuMzQ5OTQ2Cmk1CTQJYnVpbHQtaW4t Z3VjCXByZXBhcmVkCTEJMTQ5OTYuMQkxNDk4Ny4wNjIyMTMKaTUJNAlidWlsdC1pbi1ndWMJ cHJlcGFyZWQJNAk1MTQxOC4wCTUxNDMwLjM4NTUyOQppNQk1CW1hc3RlcglzaW1wbGUJMQkx NDE2Mi40CTE0MTQwLjA2NzA1NQppNQk1CW1hc3RlcglzaW1wbGUJNAk0ODcxNi4wCTQ4NzE0 LjY5NzY2MgppNQk1CW1hc3RlcglwcmVwYXJlZAkxCTE0ODc0LjIJMTQ4OTMuOTU1MzI5Cmk1 CTUJbWFzdGVyCXByZXBhcmVkCTQJNTE2NDIuOAk1MTYzOC40NzgzODIKaTUJNQlidWlsdC1p bglzaW1wbGUJMQkxNDMyNy45CTE0MzE1LjY4NzMxNQppNQk1CWJ1aWx0LWluCXNpbXBsZQk0 CTQ4NTc1LjIJNDg1ODIuNzIxNzE3Cmk1CTUJYnVpbHQtaW4JcHJlcGFyZWQJMQkxNTE0OC4w CTE1MTI2LjYxNjQ4NgppNQk1CWJ1aWx0LWluCXByZXBhcmVkCTQJNTIwNjEuMAk1MjA3MS4y MDYxNjEKaTUJNQlidWlsdC1pbi1ndWMJc2ltcGxlCTEJMTM5NjkuOAkxMzkzNS4wNjY1ODIK aTUJNQlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDg3MDYuMwk0ODcwNi4zNTE4MDUKaTUJNQli dWlsdC1pbi1ndWMJcHJlcGFyZWQJMQkxNTAyMi45CTE1MDMxLjMxMzk4MAppNQk1CWJ1aWx0 LWluLWd1YwlwcmVwYXJlZAk0CTUxNTA3LjIJNTE1MTUuNzgxMzg2Cmk1CTYJbWFzdGVyCXNp bXBsZQkxCTEzOTkzLjMJMTM5OTguNTkyMzE0Cmk1CTYJbWFzdGVyCXNpbXBsZQk0CTQ4Mzg1 LjQJNDgzODMuNjE1NDYzCmk1CTYJbWFzdGVyCXByZXBhcmVkCTEJMTQ5MzkuNAkxNDk0OS4x MDg4NTgKaTUJNgltYXN0ZXIJcHJlcGFyZWQJNAk1MTM1MS41CTUxMzUwLjcxMzk4NgppNQk2 CWJ1aWx0LWluCXNpbXBsZQkxCTE0MTg5LjUJMTQxNjQuODAzNTEzCmk1CTYJYnVpbHQtaW4J c2ltcGxlCTQJNDg0MzEuMwk0ODQzNC4yNjEzOTMKaTUJNglidWlsdC1pbglwcmVwYXJlZAkx CTE1MTg2LjEJMTUxNTMuNzE4MjQzCmk1CTYJYnVpbHQtaW4JcHJlcGFyZWQJNAk1MTU5NS4x CTUxNTgxLjkxMzI5OQppNQk2CWJ1aWx0LWluLWd1YwlzaW1wbGUJMQkxMzkxMi45CTEzOTIx LjI2NjI0NwppNQk2CWJ1aWx0LWluLWd1YwlzaW1wbGUJNAk0ODM1NC4zCTQ4Mzc1LjIwNjAw OAppNQk2CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAkxCTE0ODY4LjcJMTQ4ODYuMTcyNTE5Cmk1 CTYJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTQJNTEzMDUuNQk1MTMwMi4xNzA0MzcKaTUJNwlt YXN0ZXIJc2ltcGxlCTEJMTQxODkuOAkxNDE3NS4yMzkzNjgKaTUJNwltYXN0ZXIJc2ltcGxl CTQJNDg5MTEuMgk0ODkxNS4yMzUwNDQKaTUJNwltYXN0ZXIJcHJlcGFyZWQJMQkxNTA3NC42 CTE1MDczLjE5NDI0MwppNQk3CW1hc3RlcglwcmVwYXJlZAk0CTUxODg3LjkJNTE4ODguNzA4 OTUxCmk1CTcJYnVpbHQtaW4Jc2ltcGxlCTEJMTQxMzMuNwkxNDEzMi40ODM3MzcKaTUJNwli dWlsdC1pbglzaW1wbGUJNAk0ODYwOS4yCTQ4NjAyLjQ5NzYwNAppNQk3CWJ1aWx0LWluCXBy ZXBhcmVkCTEJMTQ5MDMuOQkxNDkwOC41NDQ1NjEKaTUJNwlidWlsdC1pbglwcmVwYXJlZAk0 CTUxMTIxLjUJNTA5OTIuNjQ3NTg4Cmk1CTcJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEzOTg0 LjcJMTM5ODQuODMwMzczCmk1CTcJYnVpbHQtaW4tZ3VjCXNpbXBsZQk0CTQ4MTkwLjgJNDgx ODAuMTUyNTQ0Cmk1CTcJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTQ4MTUuMAkxNDgyNC41 NzIzNjYKaTUJNwlidWlsdC1pbi1ndWMJcHJlcGFyZWQJNAk1MTMyMi4yCTUxMzEwLjk5NTUy MwppNQk4CW1hc3RlcglzaW1wbGUJMQkxNDEzMC4wCTE0MTIxLjkyODM5NQppNQk4CW1hc3Rl cglzaW1wbGUJNAk0ODI1NS40CTQ4Mjc2LjcxMzkzOQppNQk4CW1hc3RlcglwcmVwYXJlZAkx CTE0OTE4LjIJMTQ5NTYuMzgzOTUwCmk1CTgJbWFzdGVyCXByZXBhcmVkCTQJNTEzNTIuMwk1 MTM0Ni4xODQwNjkKaTUJOAlidWlsdC1pbglzaW1wbGUJMQkxNDI0Ny4xCTE0MjE2LjQyNDc0 MgppNQk4CWJ1aWx0LWluCXNpbXBsZQk0CTQ4NTg0LjMJNDg1ODEuMzI4MjEzCmk1CTgJYnVp bHQtaW4JcHJlcGFyZWQJMQkxNDkxMi4zCTE0OTEwLjg2NjAxMwppNQk4CWJ1aWx0LWluCXBy ZXBhcmVkCTQJNTA5MjkuOAk1MDkzOS41MzI2MTkKaTUJOAlidWlsdC1pbi1ndWMJc2ltcGxl CTEJMTQwNzYuMQkxNDA5OS44MTE4NTkKaTUJOAlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDg3 MjAuMAk0ODcyOC40MzU0NzMKaTUJOAlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMQkxNTAzOC4y CTE1MDQ4LjUzMTI1NAppNQk4CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTUxODUxLjcJNTE4 NTMuMTI5Njc2Cmk1CTkJbWFzdGVyCXNpbXBsZQkxCTEzODM3LjAJMTM4NDQuNDgzNjE2Cmk1 CTkJbWFzdGVyCXNpbXBsZQk0CTQ4ODM0LjAJNDg4NDUuNDE2NjY0Cmk1CTkJbWFzdGVyCXBy ZXBhcmVkCTEJMTQ5NzIuMAkxNDk4My4wODQ2OTUKaTUJOQltYXN0ZXIJcHJlcGFyZWQJNAk1 MTYyOC43CTUxNjM3LjgyODg0MAppNQk5CWJ1aWx0LWluCXNpbXBsZQkxCTE0MzM3LjUJMTQy OTQuMzYwNTY3Cmk1CTkJYnVpbHQtaW4Jc2ltcGxlCTQJNDkyMDUuMwk0OTE1OC4xMDkwMTgK aTUJOQlidWlsdC1pbglwcmVwYXJlZAkxCTE1MTIyLjEJMTUxMDguODc5MzkxCmk1CTkJYnVp bHQtaW4JcHJlcGFyZWQJNAk1MjExMS44CTUyMTA4LjU4MjY5MQppNQk5CWJ1aWx0LWluLWd1 YwlzaW1wbGUJMQkxNDAxMC45CTE0MDAzLjgwNjI4MAppNQk5CWJ1aWx0LWluLWd1YwlzaW1w bGUJNAk0ODU4NC41CTQ4NTM5LjE3NDkxNgppNQk5CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAkx CTE1MDQ4LjMJMTUwMjcuNjAxNjAyCmk1CTkJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTQJNTE4 NDguNQk1MTg0My44MDA2OTAKaTUJMTAJbWFzdGVyCXNpbXBsZQkxCTE0MDA1LjQJMTQwMDku ODM3MTMyCmk1CTEwCW1hc3RlcglzaW1wbGUJNAk0ODUyNC40CTQ4NTA4LjM2Njk1MAppNQkx MAltYXN0ZXIJcHJlcGFyZWQJMQkxNTAyOC44CTE0OTkyLjA2NTUzMAppNQkxMAltYXN0ZXIJ cHJlcGFyZWQJNAk1MTE0Mi41CTUxMTQ2LjAwMTQ4NQppNQkxMAlidWlsdC1pbglzaW1wbGUJ MQkxNDAxMC43CTE0MDQxLjQ5MzY0MAppNQkxMAlidWlsdC1pbglzaW1wbGUJNAk0ODU4Ny4w CTQ4NTYyLjIxMDU2MQppNQkxMAlidWlsdC1pbglwcmVwYXJlZAkxCTE0OTU3LjYJMTQ5MzAu OTMzMjQwCmk1CTEwCWJ1aWx0LWluCXByZXBhcmVkCTQJNTE1MjAuMgk1MTUwNC42MDY2NzQK aTUJMTAJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTE0MDAyLjUJMTQwMTEuNDEwNDgyCmk1CTEw CWJ1aWx0LWluLWd1YwlzaW1wbGUJNAk0ODUwMy42CTQ4NTAxLjEzMDE4MgppNQkxMAlidWls dC1pbi1ndWMJcHJlcGFyZWQJMQkxNDk3NC45CTE0OTkyLjkzNzcxOAppNQkxMAlidWlsdC1p bi1ndWMJcHJlcGFyZWQJNAk1MTUxNC44CTUxNTA3LjA0NzExMwp4ZW9uCTEJbWFzdGVyCXNp bXBsZQkxCTEyNDU3LjMJMTI0MjEuMjkwMjA3Cnhlb24JMQltYXN0ZXIJc2ltcGxlCTQJNDU3 NTAuMQk0NTk4NS4zMzIzMDcKeGVvbgkxCW1hc3RlcglzaW1wbGUJMTYJMTQyNjM2LjYJMTQz MDU4LjU5MTY5Nwp4ZW9uCTEJbWFzdGVyCXByZXBhcmVkCTEJMTMwOTUuNwkxMzEyMS4yMDAw OTAKeGVvbgkxCW1hc3RlcglwcmVwYXJlZAk0CTQ4NzY2LjUJNDg3MzguMTEzMTYxCnhlb24J MQltYXN0ZXIJcHJlcGFyZWQJMTYJMTUxMzk1LjEJMTUxNTMyLjQ2NzU1MAp4ZW9uCTEJYnVp bHQtaW4Jc2ltcGxlCTEJMTE3ODEuMAkxMTg3MC4zNjUwMjkKeGVvbgkxCWJ1aWx0LWluCXNp bXBsZQk0CTQ2NzA3LjIJNDY2MzguNjg4MDA2Cnhlb24JMQlidWlsdC1pbglzaW1wbGUJMTYJ MTQzODg0LjQJMTQzNjg4LjAxMTk3MQp4ZW9uCTEJYnVpbHQtaW4JcHJlcGFyZWQJMQkxMzMx NC4xCTEzMzk3LjM5OTY0Mwp4ZW9uCTEJYnVpbHQtaW4JcHJlcGFyZWQJNAk1MTQzNy4xCTUx MjExLjA1MTIyMQp4ZW9uCTEJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUyOTMyLjYJMTUzNTc5 Ljg0Njc0Nwp4ZW9uCTEJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyNDU3LjcJMTIzMjMuNjEy ODM1Cnhlb24JMQlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDU4OTIuMAk0NTc2Ny40NDMzMDYK eGVvbgkxCWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQxOTY0LjEJMTQyMTY0Ljg5NTkyMAp4 ZW9uCTEJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTMzNTYuOAkxMzQ4My4zMTY2NzMKeGVv bgkxCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ5MDAzLjYJNDkxOTAuNjQ5NzU3Cnhlb24J MQlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUxNDQ2LjQJMTUxNjg5Ljc2NDM3Nwp4ZW9u CTIJbWFzdGVyCXNpbXBsZQkxCTEyMzAyLjgJMTIzMDUuODE4NjcwCnhlb24JMgltYXN0ZXIJ c2ltcGxlCTQJNDYzMjEuMAk0NjI3OC43MTkyMTcKeGVvbgkyCW1hc3RlcglzaW1wbGUJMTYJ MTQzMDkwLjkJMTQzMzc4Ljg4MTU0MAp4ZW9uCTIJbWFzdGVyCXByZXBhcmVkCTEJMTMyOTQu MQkxMzQ1NS41MDQwNTIKeGVvbgkyCW1hc3RlcglwcmVwYXJlZAk0CTQ5Njg5LjkJNTAzMDUu MjgzMzM2Cnhlb24JMgltYXN0ZXIJcHJlcGFyZWQJMTYJMTUyMTM2LjcJMTUyNDU3LjY5MzU1 Mwp4ZW9uCTIJYnVpbHQtaW4Jc2ltcGxlCTEJMTIyMTMuMQkxMjE5NC43MzU3NTMKeGVvbgky CWJ1aWx0LWluCXNpbXBsZQk0CTQ1ODA2LjYJNDU2ODYuNjcxMjUxCnhlb24JMglidWlsdC1p bglzaW1wbGUJMTYJMTQxNTU4LjUJMTQxODk2LjA0Nzk3NAp4ZW9uCTIJYnVpbHQtaW4JcHJl cGFyZWQJMQkxMzA3Ny40CTEyODg3LjkxMjM1MQp4ZW9uCTIJYnVpbHQtaW4JcHJlcGFyZWQJ NAk0ODkwMy4wCTQ4NzY4LjAwMDgwNgp4ZW9uCTIJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUw NjU1LjYJMTUwOTQ2Ljg1ODY0MAp4ZW9uCTIJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyNDg3 LjYJMTI0NjguNjQxNzYxCnhlb24JMglidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDYzMTcuNQk0 NjI1NS4wNzI0NzUKeGVvbgkyCWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQzNTIxLjEJMTQz NjczLjkwMTkwMQp4ZW9uCTIJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTMwNDUuMgkxMzIx MC4wOTg1MDUKeGVvbgkyCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ5NjMzLjkJNDk0OTAu MTM2NTM1Cnhlb24JMglidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUxNDExLjYJMTUxNTE0 LjUzMDcxNAp4ZW9uCTMJbWFzdGVyCXNpbXBsZQkxCTEyMzE2LjIJMTIxMDAuNDQ4MTA4Cnhl b24JMwltYXN0ZXIJc2ltcGxlCTQJNDU5MjkuOAk0NTgzNS42NTQ4NzIKeGVvbgkzCW1hc3Rl cglzaW1wbGUJMTYJMTQxNjc2LjQJMTQxNjAwLjAxNjM0OQp4ZW9uCTMJbWFzdGVyCXByZXBh cmVkCTEJMTMwOTQuMwkxMzE4Ni4wMDEyMTcKeGVvbgkzCW1hc3RlcglwcmVwYXJlZAk0CTQ5 MTA4LjUJNDkxMDEuMjYxMDAzCnhlb24JMwltYXN0ZXIJcHJlcGFyZWQJMTYJMTQ5MTkzLjgJ MTQ5NDE2LjgzODQzOQp4ZW9uCTMJYnVpbHQtaW4Jc2ltcGxlCTEJMTI1MjguOAkxMjUzMy44 MTA5MDUKeGVvbgkzCWJ1aWx0LWluCXNpbXBsZQk0CTQ3MDMxLjkJNDcyNDUuOTU4OTE1Cnhl b24JMwlidWlsdC1pbglzaW1wbGUJMTYJMTQyNDAwLjkJMTQyNDM1LjMyMTkzMAp4ZW9uCTMJ YnVpbHQtaW4JcHJlcGFyZWQJMQkxMzE2Mi42CTEzMTM0LjQxNzA4OAp4ZW9uCTMJYnVpbHQt aW4JcHJlcGFyZWQJNAk0OTYwMi45CTQ5Njc2LjYwMTY5MQp4ZW9uCTMJYnVpbHQtaW4JcHJl cGFyZWQJMTYJMTUzNzIzLjUJMTUzNzA4LjA1NzkwNQp4ZW9uCTMJYnVpbHQtaW4tZ3VjCXNp bXBsZQkxCTEyMTI5LjcJMTIxODUuMjM5OTQyCnhlb24JMwlidWlsdC1pbi1ndWMJc2ltcGxl CTQJNDU4MDAuOQk0NTY5My42MjIxMzUKeGVvbgkzCWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJ MTQyNTA5LjYJMTQyNDY1Ljc2NzA3OQp4ZW9uCTMJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJ MTMyMjcuMgkxMzYwNy4yMTg1NDIKeGVvbgkzCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ5 MDI4LjUJNDkyODUuOTk3NDcxCnhlb24JMwlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUx OTg2LjEJMTUyNDc4LjQyNDc4MQp4ZW9uCTQJbWFzdGVyCXNpbXBsZQkxCTEyMzMzLjgJMTIz MjEuMTM2MTgxCnhlb24JNAltYXN0ZXIJc2ltcGxlCTQJNDUzNzEuNwk0NTMzNi42MTcyMzgK eGVvbgk0CW1hc3RlcglzaW1wbGUJMTYJMTQxNjc2LjcJMTQxNzE4LjI0MDQzNwp4ZW9uCTQJ bWFzdGVyCXByZXBhcmVkCTEJMTMzMTQuNgkxMzc4MC4zMDU1MzgKeGVvbgk0CW1hc3Rlcglw cmVwYXJlZAk0CTQ5MDg3LjUJNDkzMDIuOTI4MDcyCnhlb24JNAltYXN0ZXIJcHJlcGFyZWQJ MTYJMTUwOTk2LjUJMTUxMjk0LjE4NjE5Mwp4ZW9uCTQJYnVpbHQtaW4Jc2ltcGxlCTEJMTIz MzYuMAkxMjM0Ny45MjY2NjAKeGVvbgk0CWJ1aWx0LWluCXNpbXBsZQk0CTQ0Njg3LjYJNDQ3 NjguMjc1MTU2Cnhlb24JNAlidWlsdC1pbglzaW1wbGUJMTYJMTQwNzUxLjcJMTQwODI0LjQx NjA0Ngp4ZW9uCTQJYnVpbHQtaW4JcHJlcGFyZWQJMQkxNTIzMy44CTE0NTQzLjIwNTA1NQp4 ZW9uCTQJYnVpbHQtaW4JcHJlcGFyZWQJNAk0ODcxNi4xCTQ4NDkzLjMxMDU4Ngp4ZW9uCTQJ YnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUwOTY2LjQJMTUxMTA2LjA4NTExMQp4ZW9uCTQJYnVp bHQtaW4tZ3VjCXNpbXBsZQkxCTExOTQ5LjMJMTIxMTMuNzc3NDIzCnhlb24JNAlidWlsdC1p bi1ndWMJc2ltcGxlCTQJNDYyMzIuMwk0NjY1My40Mzg1OTIKeGVvbgk0CWJ1aWx0LWluLWd1 YwlzaW1wbGUJMTYJMTQ0MzA3LjYJMTQ0NDQ5LjI0ODE2OQp4ZW9uCTQJYnVpbHQtaW4tZ3Vj CXByZXBhcmVkCTEJMTMzNTIuMAkxMzM1NS4xMDg5OTgKeGVvbgk0CWJ1aWx0LWluLWd1Ywlw cmVwYXJlZAk0CTQ5MjQxLjQJNDk4NzEuNDk2ODkxCnhlb24JNAlidWlsdC1pbi1ndWMJcHJl cGFyZWQJMTYJMTUyMTkyLjgJMTUyNDI4LjM0ODY4Nwp4ZW9uCTUJbWFzdGVyCXNpbXBsZQkx CTEyMTQzLjcJMTIxMzcuMjA2Mzc3Cnhlb24JNQltYXN0ZXIJc2ltcGxlCTQJNDU2NDYuNwk0 NTY4OS4xNjk2MzcKeGVvbgk1CW1hc3RlcglzaW1wbGUJMTYJMTQwODMwLjQJMTQwOTY0LjA1 OTQ0Mgp4ZW9uCTUJbWFzdGVyCXByZXBhcmVkCTEJMTMwMjAuOAkxMzA2MS40MDQyMjcKeGVv bgk1CW1hc3RlcglwcmVwYXJlZAk0CTQ4NzYyLjgJNDg4ODAuNzQxNDQwCnhlb24JNQltYXN0 ZXIJcHJlcGFyZWQJMTYJMTQ4OTM5LjMJMTQ5MTgwLjg5MzIzMQp4ZW9uCTUJYnVpbHQtaW4J c2ltcGxlCTEJMTIzMDguNwkxMjM3NS44Nzg3NzYKeGVvbgk1CWJ1aWx0LWluCXNpbXBsZQk0 CTQ4MTM1LjQJNDc5MDYuNzMzMDAwCnhlb24JNQlidWlsdC1pbglzaW1wbGUJMTYJMTQyMjg3 LjAJMTQyNDMzLjQ1ODMzNgp4ZW9uCTUJYnVpbHQtaW4JcHJlcGFyZWQJMQkxMjY1MS42CTEy OTg0LjY3NTAyMwp4ZW9uCTUJYnVpbHQtaW4JcHJlcGFyZWQJNAk0OTY3My4zCTQ5NjM2LjM2 NTU4OAp4ZW9uCTUJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUzMTIwLjEJMTUzNDI1LjUzNTQ5 OQp4ZW9uCTUJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyMTY3LjIJMTIxNTguOTQ4MTcxCnhl b24JNQlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDQ4NDMuOQk0NDg2MS45MzI2MjIKeGVvbgk1 CWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTM5MzM0LjgJMTM5NDE4Ljg3MzA1OQp4ZW9uCTUJ YnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTI3NjIuNgkxMjg0MC4xNzIxMTYKeGVvbgk1CWJ1 aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ4MDUyLjgJNDc5MjQuMjAzODQwCnhlb24JNQlidWls dC1pbi1ndWMJcHJlcGFyZWQJMTYJMTQ5MzM4LjMJMTQ5NDY2LjkyNjc4NAp4ZW9uCTYJbWFz dGVyCXNpbXBsZQkxCTEyMjQxLjEJMTIxOTIuMTU3OTgyCnhlb24JNgltYXN0ZXIJc2ltcGxl CTQJNDU1MDQuOAk0NTY5My4wODMwMjIKeGVvbgk2CW1hc3RlcglzaW1wbGUJMTYJMTQwMzU3 LjcJMTQwNjAwLjYwODAxMwp4ZW9uCTYJbWFzdGVyCXByZXBhcmVkCTEJMTMxMTYuOQkxMzEx OC4wOTc2ODEKeGVvbgk2CW1hc3RlcglwcmVwYXJlZAk0CTQ5MDI1LjkJNDkyNTYuMjkyNjI5 Cnhlb24JNgltYXN0ZXIJcHJlcGFyZWQJMTYJMTUwNTUwLjUJMTUwOTExLjM1MDk5MAp4ZW9u CTYJYnVpbHQtaW4Jc2ltcGxlCTEJMTIxMTcuMAkxMjEwOC4wMDk3OTQKeGVvbgk2CWJ1aWx0 LWluCXNpbXBsZQk0CTQ1NTk3LjcJNDU0ODIuNDY4Mzc2Cnhlb24JNglidWlsdC1pbglzaW1w bGUJMTYJMTQxMDI0LjUJMTQxMTcxLjE5NjAyOQp4ZW9uCTYJYnVpbHQtaW4JcHJlcGFyZWQJ MQkxMzA5My44CTEzMTM2Ljg3MzU2NAp4ZW9uCTYJYnVpbHQtaW4JcHJlcGFyZWQJNAk0ODQw Ny4wCTQ4NTI3LjA0OTE3NQp4ZW9uCTYJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTQ4OTI4LjUJ MTQ5MjIwLjg2NTM3OQp4ZW9uCTYJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyMzQwLjcJMTIz MjcuNzU2OTEyCnhlb24JNglidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDU2MzkuMQk0NTczMi4y NTg4NzcKeGVvbgk2CWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQyMTg4LjIJMTQyNDI3LjEx MzU1Mgp4ZW9uCTYJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTMwNzQuMwkxMzEzMC43NTg0 MTQKeGVvbgk2CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ4MDU0LjIJNDc4MjMuMTMwMTU1 Cnhlb24JNglidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUxMzY2LjAJMTUxNDY4LjQ2NTA4 Ngp4ZW9uCTcJbWFzdGVyCXNpbXBsZQkxCTEyNDU4LjUJMTIyMzIuMjUxOTc5Cnhlb24JNwlt YXN0ZXIJc2ltcGxlCTQJNDYxOTEuOQk0NjA4MC43NTMxNzUKeGVvbgk3CW1hc3RlcglzaW1w bGUJMTYJMTQxOTA3LjgJMTQyMjIwLjU0NDE5Nwp4ZW9uCTcJbWFzdGVyCXByZXBhcmVkCTEJ MTMyNTIuMwkxMzIyMC44NzExMDQKeGVvbgk3CW1hc3RlcglwcmVwYXJlZAk0CTQ5MjA4LjYJ NDkxODIuNTI0NzM5Cnhlb24JNwltYXN0ZXIJcHJlcGFyZWQJMTYJMTUwNTM4LjIJMTUwNzc4 LjIxMzA2OAp4ZW9uCTcJYnVpbHQtaW4Jc2ltcGxlCTEJMTIzMjQuNAkxMjMxMi43MzQ1NjEK eGVvbgk3CWJ1aWx0LWluCXNpbXBsZQk0CTQ1NTcxLjkJNDU4NzUuNjY0OTM1Cnhlb24JNwli dWlsdC1pbglzaW1wbGUJMTYJMTQzMDAwLjMJMTQyOTk5LjYxMTMwNgp4ZW9uCTcJYnVpbHQt aW4JcHJlcGFyZWQJMQkxMzM5OS42CTEzNDMxLjQ4NDY3NAp4ZW9uCTcJYnVpbHQtaW4JcHJl cGFyZWQJNAk0OTA0NC4yCTQ4OTYyLjg4MDkxNQp4ZW9uCTcJYnVpbHQtaW4JcHJlcGFyZWQJ MTYJMTUyMzUxLjIJMTUyMzc0Ljk3MzU1Mwp4ZW9uCTcJYnVpbHQtaW4tZ3VjCXNpbXBsZQkx CTEyMzk5LjMJMTIzNzcuODIzMDE3Cnhlb24JNwlidWlsdC1pbi1ndWMJc2ltcGxlCTQJNDU3 NzEuMQk0NTkxOC4xNDg1NDEKeGVvbgk3CWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQxNjUy LjAJMTQxNTg5Ljg5MTY1MQp4ZW9uCTcJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTEJMTI4MDYu NAkxMzAyMS4yNzc0NDcKeGVvbgk3CWJ1aWx0LWluLWd1YwlwcmVwYXJlZAk0CTQ4MjgxLjkJ NDg2ODQuNzU4OTYwCnhlb24JNwlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTQ5NzE0LjAJ MTQ5NzIzLjI3NDAzMQp4ZW9uCTgJbWFzdGVyCXNpbXBsZQkxCTEyMjk0LjMJMTIyNjcuNTk4 OTUwCnhlb24JOAltYXN0ZXIJc2ltcGxlCTQJNDYxOTEuMwk0NjM0Mi4yODI1MjkKeGVvbgk4 CW1hc3RlcglzaW1wbGUJMTYJMTQxNTU1LjcJMTQxODI4LjgxMDYwNgp4ZW9uCTgJbWFzdGVy CXByZXBhcmVkCTEJMTMyNTQuNAkxMzIwNC42NzM2MDgKeGVvbgk4CW1hc3RlcglwcmVwYXJl ZAk0CTQ5MTQyLjIJNDkzNzguNTY4ODU2Cnhlb24JOAltYXN0ZXIJcHJlcGFyZWQJMTYJMTUx NjA5LjkJMTUxOTI4LjI2NjM4Nwp4ZW9uCTgJYnVpbHQtaW4Jc2ltcGxlCTEJMTI0MTMuNgkx MjQxOC41NDQ4MjgKeGVvbgk4CWJ1aWx0LWluCXNpbXBsZQk0CTQ2MzA5LjQJNDY0MjAuOTAw NDY4Cnhlb24JOAlidWlsdC1pbglzaW1wbGUJMTYJMTQzMDMxLjAJMTQzMDc3Ljk0MDI0OAp4 ZW9uCTgJYnVpbHQtaW4JcHJlcGFyZWQJMQkxMzM2OS40CTEzNzc0LjE3MzE0Mwp4ZW9uCTgJ YnVpbHQtaW4JcHJlcGFyZWQJNAk0OTQ1My4xCTQ5ODA4LjQwNDM0MQp4ZW9uCTgJYnVpbHQt aW4JcHJlcGFyZWQJMTYJMTUyNjY1LjYJMTUyNzY2LjYwNDY4MAp4ZW9uCTgJYnVpbHQtaW4t Z3VjCXNpbXBsZQkxCTEyMjcwLjEJMTIzMDAuNTU0MDc5Cnhlb24JOAlidWlsdC1pbi1ndWMJ c2ltcGxlCTQJNDQ4MTYuMQk0NDg5Ni4yNzU3NDEKeGVvbgk4CWJ1aWx0LWluLWd1YwlzaW1w bGUJMTYJMTQxMTAyLjkJMTQxMjc3LjcyNzY1Mwp4ZW9uCTgJYnVpbHQtaW4tZ3VjCXByZXBh cmVkCTEJMTI4NTMuNwkxMzAwNi41ODIzNTMKeGVvbgk4CWJ1aWx0LWluLWd1YwlwcmVwYXJl ZAk0CTQ5MTg5LjYJNTAxODMuOTg2Mjc2Cnhlb24JOAlidWlsdC1pbi1ndWMJcHJlcGFyZWQJ MTYJMTUxMzkwLjUJMTUxNjg5LjE5MzUzNwp4ZW9uCTkJbWFzdGVyCXNpbXBsZQkxCTEyMzU4 LjYJMTIxNDguNzk4NDgwCnhlb24JOQltYXN0ZXIJc2ltcGxlCTQJNDU2MTUuNQk0NTczMi41 NzA0ODYKeGVvbgk5CW1hc3RlcglzaW1wbGUJMTYJMTQwOTc5LjkJMTQxMTU1Ljg0NjYyMwp4 ZW9uCTkJbWFzdGVyCXByZXBhcmVkCTEJMTMyMTIuNgkxMzI5NS4wNTAzODUKeGVvbgk5CW1h c3RlcglwcmVwYXJlZAk0CTQ5MTk3LjkJNDkzNTkuNjcwMjAzCnhlb24JOQltYXN0ZXIJcHJl cGFyZWQJMTYJMTUxNzczLjQJMTUxNjk2LjY0NTM0OAp4ZW9uCTkJYnVpbHQtaW4Jc2ltcGxl CTEJMTIzODcuNwkxMjI2OS44MTM0OTAKeGVvbgk5CWJ1aWx0LWluCXNpbXBsZQk0CTQ1NDIw LjcJNDU1NTkuMzU1MTU5Cnhlb24JOQlidWlsdC1pbglzaW1wbGUJMTYJMTQxODM3LjQJMTQx ODgyLjY0Nzk5Ngp4ZW9uCTkJYnVpbHQtaW4JcHJlcGFyZWQJMQkxMzIxOC4zCTEzMjYyLjIx MjE0NQp4ZW9uCTkJYnVpbHQtaW4JcHJlcGFyZWQJNAk0OTIxNy4wCTQ5NDE5LjcxNzA4MAp4 ZW9uCTkJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUyMTg0LjAJMTUyMTYxLjE4MzQ0MQp4ZW9u CTkJYnVpbHQtaW4tZ3VjCXNpbXBsZQkxCTEyNjE0LjEJMTI2MDcuNTQ5NjQyCnhlb24JOQli dWlsdC1pbi1ndWMJc2ltcGxlCTQJNDYzNDguOQk0NjczMi40OTg4MzMKeGVvbgk5CWJ1aWx0 LWluLWd1YwlzaW1wbGUJMTYJMTQyNTM5LjkJMTQyODMzLjU2ODE2Mwp4ZW9uCTkJYnVpbHQt aW4tZ3VjCXByZXBhcmVkCTEJMTMxMjcuNAkxMzIyNC4yMTEzODkKeGVvbgk5CWJ1aWx0LWlu LWd1YwlwcmVwYXJlZAk0CTQ5MjIwLjkJNDkyNDAuNDI2NjM2Cnhlb24JOQlidWlsdC1pbi1n dWMJcHJlcGFyZWQJMTYJMTUxMzQ1LjkJMTUxNjA2LjI4NTAwNQp4ZW9uCTEwCW1hc3Rlcglz aW1wbGUJMQkxMjQ0Ni4yCTEyNDczLjI5MzM4NAp4ZW9uCTEwCW1hc3RlcglzaW1wbGUJNAk0 NjQzMC43CTQ2MjgzLjQwOTk0MQp4ZW9uCTEwCW1hc3RlcglzaW1wbGUJMTYJMTQzMjU3LjkJ MTQzMjQzLjAyMzAzNQp4ZW9uCTEwCW1hc3RlcglwcmVwYXJlZAkxCTEzMzI3LjQJMTM0MjAu MTMyOTAxCnhlb24JMTAJbWFzdGVyCXByZXBhcmVkCTQJNDk1NzguOAk0OTQxMy4zNjMwNTMK eGVvbgkxMAltYXN0ZXIJcHJlcGFyZWQJMTYJMTUxOTg1LjEJMTUyNDY2LjM2ODIzNgp4ZW9u CTEwCWJ1aWx0LWluCXNpbXBsZQkxCTExNjcwLjAJMTE4OTQuODMyMDk1Cnhlb24JMTAJYnVp bHQtaW4Jc2ltcGxlCTQJNDY0NDEuMQk0NjQ4NS4xMDg1MTMKeGVvbgkxMAlidWlsdC1pbglz aW1wbGUJMTYJMTQxMjMxLjEJMTQxNDQ0LjIzMzQ5Ngp4ZW9uCTEwCWJ1aWx0LWluCXByZXBh cmVkCTEJMTMxNzUuNAkxMzQwNC4xMjA5MzEKeGVvbgkxMAlidWlsdC1pbglwcmVwYXJlZAk0 CTQ4NDM4LjMJNDg3NTAuNTI3NzIyCnhlb24JMTAJYnVpbHQtaW4JcHJlcGFyZWQJMTYJMTUx MzY0LjQJMTUxODA4LjU3OTc3NQp4ZW9uCTEwCWJ1aWx0LWluLWd1YwlzaW1wbGUJMQkxMjMw Ni42CTEyMzA4LjM2NjA4NAp4ZW9uCTEwCWJ1aWx0LWluLWd1YwlzaW1wbGUJNAk0NjQwMy40 CTQ2NTA4Ljk2MjYzMAp4ZW9uCTEwCWJ1aWx0LWluLWd1YwlzaW1wbGUJMTYJMTQyMDM5LjkJ MTQyMTkyLjA3ODA0NAp4ZW9uCTEwCWJ1aWx0LWluLWd1YwlwcmVwYXJlZAkxCTEyNTYxLjUJ MTI5MDIuODczNjQzCnhlb24JMTAJYnVpbHQtaW4tZ3VjCXByZXBhcmVkCTQJNDkyNDQuOQk0 OTM1MC40MzY1NjcKeGVvbgkxMAlidWlsdC1pbi1ndWMJcHJlcGFyZWQJMTYJMTUxNDQ3LjIJ MTUxNDEyLjAzOTk5MAo= --------------xDvyz2FLlM3bSG98iLe0rV1u--