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.98.2) (envelope-from ) id 1x9ugT-00000002K30-2En4 for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Sep 2026 01:25:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1x9ugS-0000000FfSx-3CDE for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Sep 2026 01:25:04 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1x9ugS-0000000FfSg-0MqH for pgsql-hackers@lists.postgresql.org; Fri, 25 Sep 2026 01:25:04 +0000 Received: from mail-ua2-x0e.google.com ([2a00:1450:4864:39::e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1x9ugN-000000017ZU-3unm for pgsql-hackers@postgresql.org; Fri, 25 Sep 2026 01:25:03 +0000 Received: by mail-ua2-x0e.google.com with SMTP id a1e0cc1a2514c-9863fb86703so2915241.1 for ; Thu, 24 Sep 2026 18:25:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790299500; x=1790904300; darn=postgresql.org; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=AgSepjkvmzzmcxXuapEFDQeTvJhuLmmANVA93g6DeeQ=; b=FlNfgUKXwrKb/LyItsDEEnxep+43RE0+VC869oCjHWWurUYkmURER+UOjSWYKxc46o efv674Z8Y8Q4nhNNmofNKJ/LK3nYTrU3uDUWyqqFKoNnie24P6MdmwqZAZ7u1TcYa+oT lu+KpjOygcGx7IUJmLjNnoWeqX48TCkIBlvofyn6xiTMylnXTyAFL+dE5aSTrwjdupHM 0zafYqeTpt7LOBVgJHUUwUaEiJSsLJDIeqgn+oBIp2XYpq1TuIRjAFYQJtvVPnKUT7U7 YzdTSjYRkYB6pWwEFe7bN5LItXMSiad3kvSe5eaWil3f4SphKGj1RQtI8VK0fkQ3JmWP NYIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790299500; x=1790904300; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=AgSepjkvmzzmcxXuapEFDQeTvJhuLmmANVA93g6DeeQ=; b=nJX3yEG3d60DiMQ+KPmZaRvuI55FyUH1PUxbPNhfV9pKmJGL2MrIFprcs4uqIlKzEi ZALNK0YWtBcGon4NTA/wrr/t1WVh6iNzEE3bM3NOxZoLdOhPtB3i3Xro0yjL9TeGpQi7 Dkfge3l7VMsRwh5bk4rMHNyAyuoHiZwNrbFXNBryrQdRZDquKAkayUuIwfghN7RVzY46 CQ2v4vgkMs8yF2mTx3zRhv06XlHp5XPJ2qIJxF4mH9qWL29wHKCLnb/yP/6oylfdmQKb ZKOuI7Pmm6nDZ+WJejZN/7U2tgaPJD5EHfyecFLGx0diXM2GN57l0WRPxYKJkD0QVJwB YOaA== X-Forwarded-Encrypted: i=1; AKwUvBzJLC5JFahXkBqNceSHnxo3PhAizkTSd3sf4jeEdLYF3Em2w27Z1x75LC/qqu5NFOvNyLeBrq0efQXPmPcI@postgresql.org X-Gm-Message-State: AFuF++kg6EeP4ACSSV6FrYn0qchjfrRZs3NnkNaVxSXb3Br+9suJItMx pduB7qGwyU1R3jljtBpRbhMn4REJq5UMIZu1EPP/rovQ0PPDsSUAP1J5 X-Gm-Gg: AYBFou2lCKTUwyNdFcx9x9Y/LteAlL1VBeaBnsO9eqcEInY7p6waLExXomvONOpslRp XsclpnheSGidBe+1ExZrsFP/4IUczt+9y9RV71S23iskqnZ6/GnvkGxhPGG9Pdg/9zmq6Z0LkZf uBc8XTmIHgVIbnmscvYR34SV9nXJEyhkwnNm//3FSAmV5F41Rxq/jTm1r0yfgUlk4Ck0SWr1gM8 ET7/uQF8/b1TEiF3GYOphpOMVzEFV5wZxrzYd9UvfXw5w9V5bROPdp+eRLl5KOEVFgjQh0KYm8D LmsS4i0ANGrDZA/NdLR31y37zw13E3sDXbwYCU37WNJjVlA0+sQ64hpriTMWljROo6DUyO92PMq q2eeIgHLrry5LS6iQ2OUepkAl2/7ERWEan91+cCsfN3xSU5CrNoUgty153LM1tDu3fhfcazAJ3V wbkKAP8TbYAB+bfWQyQlwX1EaHD6tKBAXO3NjPlPayMheFioIM6xLkeC8P6AZczJl1dPglwuYNg 94nUE+gtimTy7HdRtQLkoJDlfj4ov/qRR1fVUQC8+lEIviPc5OFrfCCJiXf4TH9uTAERo3VxLXy sk4EKz88lXu/YD7hqdrIYZoq X-Received: by 2002:a05:6102:3e83:b0:7a9:b6d8:8214 with SMTP id ada2fe7eead31-7b081279521mr519746137.1.1790299499595; Thu, 24 Sep 2026 18:24:59 -0700 (PDT) Received: from 192.168.1.109 ([190.12.169.171]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-9861afb8343sm966857241.5.2026.09.24.18.24.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Sep 2026 18:24:58 -0700 (PDT) From: Manu To: Sehrope Sarkuni Cc: Heikki Linnakangas , Nathan Bossart , Jan Nidzwetzki , ChenhuiMo , Pg Hackers Subject: Re: Speed up lpad() and rpad() for one-byte padding strings Date: Thu, 24 Sep 2026 22:24:54 -0300 Message-ID: <179029949414.497877.6537870082909473028@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6018420020386340283==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============6018420020386340283== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi, Sehrope Sarkuni wrote: > On this machine, block sizes from 16 kB up to 4 MB performed the same > within noise, while 16 MB was consistently slower for large results, > much like v4's pure doubling. So I don't see a reason to go bigger > than 16 kB. I ran v5 on a different x86 machine: an AMD Ryzen AI 9 HX 370 (Zen 5), glibc 2.43, where x86_non_temporal_threshold is 6 MiB. Release builds of master 2c10c2ce4d7, with your method: pgbench -c 1, rounds alternating between builds, median of 5. This CPU mixes Zen 5 and Zen 5c cores, so the server was pinned to one Zen 5 core. I also included Chenhui's v2 from the repeat() thread (Ready for Committer), since 0003 replaces the same loop. 1. Block size The repeat() thread found the best block to be the first one at or above glibc's non-temporal threshold, on three Intel machines. To test that here, I built v5 with REPEAT_BYTES_BLOCK = 8 MB, above the 6 MiB threshold, and ran that build a second time with non-temporal stores disabled through GLIBC_TUNABLES. At 100 MB the three stay within the round-to-round spread (about 10%) for repeat() and rpad() with 1-, 10- and 100-byte sources. For example, repeat() with a 10-byte source took 46.8 ms with 16 kB, 50.4 ms with 8 MB, and 46.7 ms with 8 MB and no non-temporal stores. So the effect seen on the Intel machines does not show up on this Zen 5, and 16 kB costs nothing here. 2. repeat() against the Ready for Committer patch - 1-byte source, 100 MB: master 173.1 ms, v5 47.2 ms, RfC 47.7 ms - 1-byte source, 16 MB: master 27.3 ms, v5 7.0 ms, RfC 6.7 ms - 10-byte source, 100 MB: master 58.6 ms, v5 46.8 ms, RfC 55.3 ms - 100-byte source, 100 MB: master 46.8 ms, v5 44.9 ms So on this machine dropping the memset() path costs nothing for a one-byte source, and v5 also speeds up the 10-byte case, which the RfC patch does not touch. Jan's M5 Max numbers upthread had chunked memset() well behind a single one. I have no ARM machine to check whether that carries over to repeat_bytes(). 3. rpad(), 100 MB - 1-byte pad: master 330.6 ms, v5 45.5 ms - 10-byte pad: master 342.5 ms, v5 44.6 ms - 100-byte pad: master 325.9 ms, v5 43.2 ms 4. Results are unchanged I compared lpad(), rpad() and repeat() output between master and v5 in UTF8, EUC_JP and SQL_ASCII databases: 6075 calls, with lengths around the 16 kB and 8 MB boundaries, multibyte and mixed pads with partial tails, and sizes near the 1 GB limit. Lengths, md5 of every result and error messages are identical, including the same 16 "requested length too large" errors. Invalid pad strings are not in it, since the encoding.sql tests cover those. 5. Cancellation On master, lpad() and rpad() have no CHECK_FOR_INTERRUPTS() in the padding loop. With statement_timeout = 20ms, rpad('x', 268000000, 'ab') runs for about 900 ms, the whole call, before the cancel takes effect. With v5 it is cancelled after about 24 ms, as repeat() already is on master (21 ms), because the padding now goes through repeat_bytes(). Scripts, raw timings and outputs are in the attachment. Regards, Manu --===============6018420020386340283== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nocfbot-pad-v5-review.txt" MIME-Version: 1.0 UmV2aWV3IG9mIHY1IChscGFkL3JwYWQvcmVwZWF0KTogdGltaW5ncywgZGlmZmVyZW50aWFsIGNo ZWNrLCBjYW5jZWxsYXRpb24KbWFzdGVyIDJjMTBjMmNlNGQ3OyByZWxlYXNlIGJ1aWxkcyAoZGVm YXVsdCAtTzIsIG5vIGFzc2VydHMpCgo9PT09PSBtYWNoaW5lID09PT09Ck1vZGVsIG5hbWU6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU1EIFJ5emVuIEFJIDkgSFggMzcwIHcvIFJhZGVv biA4OTBNCkwxZCBjYWNoZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTc2IEtpQiAo MTIgaW5zdGFuY2VzKQpMMiBjYWNoZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEy IE1pQiAoMTIgaW5zdGFuY2VzKQpMMyBjYWNoZTogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDI0IE1pQiAoMiBpbnN0YW5jZXMpCmNvcmVzIDAtMyBaZW4gNSwgNC0xMSBaZW4gNWM7IHNl cnZlciBwaW5uZWQgdG8gQ1BVIDAsIHBnYmVuY2gvcHNxbCB0byBDUFUgMgpsZGQgKEdOVSBsaWJj KSAyLjQzCmdsaWJjLmNwdS54ODZfZGF0YV9jYWNoZV9zaXplOiAweGMwMDAgKG1pbjogMHgwLCBt YXg6IDB4ZmZmZmZmZmZmZmZmZmZmZikKZ2xpYmMuY3B1Lng4Nl9tZW1zZXRfbm9uX3RlbXBvcmFs X3RocmVzaG9sZDogMHg2MDAwMDAgKG1pbjogMHg0MDQwLCBtYXg6IDB4ZmZmZmZmZmZmZmZmZmZm ZikKZ2xpYmMuY3B1Lng4Nl9ub25fdGVtcG9yYWxfdGhyZXNob2xkOiAweDYwMDAwMCAobWluOiAw eDQwNDAsIG1heDogMHhmZmZmZmZmZmZmZmZmZmYpCmdsaWJjLmNwdS54ODZfcmVwX21vdnNiX3Ro cmVzaG9sZDogMHg2MDAwMDAgKG1pbjogMHgyMDAsIG1heDogMHhmZmZmZmZmZmZmZmZmZmZmKQpn bGliYy5jcHUueDg2X3NoYXJlZF9jYWNoZV9zaXplOiAweDgwMDAwMCAobWluOiAweDAsIG1heDog MHhmZmZmZmZmZmZmZmZmZmZmKQoKIj09PT09IGJ1aWxkLnNoID09PT09IgojIS9iaW4vYmFzaAoj IFJlbGVhc2UgYnVpbGRzIChubyBhc3NlcnRzLCBkZWZhdWx0IC1PMikgZnJvbSB0aGUgc2FtZSBt YXN0ZXIgY29tbWl0OgojICAgbWFzdGVyICBjb250cm9sCiMgICB2NSAgICAgIFNlaHJvcGUncyB2 NSAoMDAwMS0wMDAzKSwgUkVQRUFUX0JZVEVTX0JMT0NLID0gMTYga0IKIyAgIHY1YjhtICAgdjUg d2l0aCBSRVBFQVRfQllURVNfQkxPQ0sgPSA4IE1CLCB0aGUgb25seSBjaGFuZ2UKIyAgIHJmYyAg ICAgQ2hlbmh1aSdzIHJlcGVhdCgpIHYyIChSZWFkeSBmb3IgQ29tbWl0dGVyKTogZWFybHkgcmV0 dXJuICsgbWVtc2V0KCkKc2V0IC1ldQpCQVNFPSR7QkFTRTotMmMxMGMyY2U0ZDd9ClNSQz0kSE9N RS9Qcm95ZWN0b3MvcG9zdGdyZXNxbApXPSRIT01FL3BncGFkCkE9JChjZCAiJChkaXJuYW1lICIk MCIpIiAmJiBwd2QpCm1rZGlyIC1wICRXCnRyZWUoKSB7ICAjIG5hbWUgcGF0Y2guLi4KICBsb2Nh bCBuYW1lPSQxOyBzaGlmdAogIGxvY2FsIHQ9JFcvc3JjLSRuYW1lCiAgWyAtZCAkdCBdICYmIHJl dHVybgogIGdpdCAtQyAkU1JDIHdvcmt0cmVlIGFkZCAtcSAtLWRldGFjaCAkdCAkQkFTRQogIGZv ciBwIGluICIkQCI7IGRvIGdpdCAtQyAkdCBhbSAtcSAiJHAiOyBkb25lCn0KdHJlZSBtYXN0ZXIK dHJlZSB2NSAgICAkQS9zZWhyb3BlLXY1L3Y1LTAwMHsxLDIsM30tKi5wYXRjaAp0cmVlIHY1Yjht ICRBL3NlaHJvcGUtdjUvdjUtMDAwezEsMiwzfS0qLnBhdGNoCnNlZCAtaSAncy9eI2RlZmluZSBS RVBFQVRfQllURVNfQkxPQ0tcdDE2Mzg0JC8jZGVmaW5lIFJFUEVBVF9CWVRFU19CTE9DS1x0KDgg KiAxMDI0ICogMTAyNCkvJyBcCiAgJFcvc3JjLXY1YjhtL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9v cmFjbGVfY29tcGF0LmMgJFcvc3JjLXY1YjhtL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5h LmMgMj4vZGV2L251bGwgfHwgdHJ1ZQpncmVwIC1ybiAnZGVmaW5lIFJFUEVBVF9CWVRFU19CTE9D SycgJFcvc3JjLXY1YjhtL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC8KdHJlZSByZmMgICAkQS9jaGVu aHVpLXYyL3YyLTAwMHsxLDJ9LSoucGF0Y2gKYnVpbGQoKSB7CiAgbG9jYWwgbmFtZT0kMQogIG1r ZGlyIC1wICRXL2ItJG5hbWUgJiYgY2QgJFcvYi0kbmFtZQogICRXL3NyYy0kbmFtZS9jb25maWd1 cmUgLS1wcmVmaXg9JFcvaS0kbmFtZSAtLXF1aWV0ID4gY29uZmlndXJlLmxvZyAyPiYxCiAgbWFr ZSAtaiIkKG5wcm9jKSIgLXMgPiBidWlsZC5sb2cgMj4mMQogIG1ha2UgLXMgaW5zdGFsbCA+IGlu c3RhbGwubG9nIDI+JjEKICBlY2hvICIkbmFtZTogJChnaXQgLUMgJFcvc3JjLSRuYW1lIGxvZyAt MSAtLWZvcm1hdD0nJWggJXMnIHwgY3V0IC1jMS02MCkgd2FybmluZ3M9JChncmVwIC1jICd3YXJu aW5nOicgYnVpbGQubG9nKSIKfQpidWlsZCBtYXN0ZXIgJiBidWlsZCB2NSAmIGJ1aWxkIHY1Yjht ICYgYnVpbGQgcmZjICYgd2FpdAplY2hvIEJVSUxELURPTkUKCiI9PT09PSBiZW5jaC5zaCA9PT09 PSIKIyEvYmluL2Jhc2gKIyByZXBlYXQoKSBhbmQgcnBhZCgpIHRpbWluZ3Mgb24gbWFzdGVyIGFu ZCB0aGUgcGF0Y2hlZCBidWlsZHMsIGZvbGxvd2luZwojIFNlaHJvcGUncyBtZXRob2Q6IHBnYmVu Y2ggLWMgMSwgb25lIHN0YXRlbWVudCBwZXIgdHJhbnNhY3Rpb24sIHJvdW5kcwojIGFsdGVybmF0 aW5nIGJldHdlZW4gYnVpbGRzLCBtZWRpYW4gb2YgUk9VTkRTLgojCiMgQ29uZmlncyAoYnVpbGRb OmVudl0pOgojICAgbWFzdGVyICAgdjUgICB2NWI4bSAgIHJmYwojICAgdjViOG0tbm9udCAgPSB2 NWI4bSB3aXRoIGdsaWJjJ3Mgbm9uLXRlbXBvcmFsIHN0b3JlcyBkaXNhYmxlZAojICAgICAgICAg ICAgICAgICAoR0xJQkNfVFVOQUJMRVMpLCB0byBzZWUgd2hldGhlciBhIGdhaW4gY29tZXMgZnJv bSB0aGVtCiMKIyBUaGlzIENQVSBtaXhlcyBaZW4gNSBhbmQgWmVuIDVjIGNvcmVzLCBzbyB0aGUg c2VydmVyIHJ1bnMgcGlubmVkIHRvCiMgU1JWQ1BVIGFuZCBwZ2JlbmNoIHRvIENMSUNQVS4KIyAg IGJlbmNoLnNoIFtST1VORFNdCnNldCAtdQpST1VORFM9JHsxOi01fQpBPSQoY2QgIiQoZGlybmFt ZSAiJDAiKSIgJiYgcHdkKQpXPSRIT01FL3BncGFkClNSVkNQVT0ke1NSVkNQVTotMH07IENMSUNQ VT0ke0NMSUNQVTotMn0KQ09ORklHUz0ke0NPTkZJR1M6LSJtYXN0ZXIgdjUgdjViOG0gdjViOG0t bm9udCByZmMifQojIGdsaWJjIDIuNDMgc2lsZW50bHkga2VlcHMgdGhlIGRlZmF1bHQgd2hlbiB0 aGUgdmFsdWUgZXF1YWxzIHRoZSBsaXN0ZWQgbWF4CiMgb2YgdGhlIG1lbXNldCB0dW5hYmxlICgw eGZmZmZmZmZmZmZmZmZmZmYpLCBzbyBib3RoIHVzZSAweGZmZmZmZmZmZmZmZmZmZjsKIyBjaGVj ayB3aXRoOiBHTElCQ19UVU5BQkxFUz0kTk9OVCAvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIg LS1saXN0LXR1bmFibGVzCiMgKHRoZSBmaXJzdCBydW4gb2YgdGhpcyBzY3JpcHQgaGFkIHRoZSBt ZW1zZXQgb25lIGlnbm9yZWQ7IHY1IGRvZXMgbm90IHVzZQojIG1lbXNldCgpLCBzbyB0aGF0IHJ1 bidzIHY1YjhtLW5vbnQgbnVtYmVycyBhcmUgdW5hZmZlY3RlZCkKTk9OVD0nZ2xpYmMuY3B1Lng4 Nl9ub25fdGVtcG9yYWxfdGhyZXNob2xkPTB4ZmZmZmZmZmZmZmZmZmZmOmdsaWJjLmNwdS54ODZf bWVtc2V0X25vbl90ZW1wb3JhbF90aHJlc2hvbGQ9MHhmZmZmZmZmZmZmZmZmZmYnClBBRD1hYmNk ZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWph YmNkZWZnaGlqYWJjZGVmZ2hpamFiY2RlZmdoaWphYmNkZWZnaGlqCk9VVD0kQS9iZW5jaC5yYXc7 IDogPiAkT1VUCgpwb3J0PTU1NDgwCmRlY2xhcmUgLUEgUE9SVCBESVIKZm9yIGMgaW4gJENPTkZJ R1M7IGRvCiAgYj0ke2MlLW5vbnR9CiAgRD0kKG1rdGVtcCAtZCAvdG1wL2NsYXVkZS0xMDAwL3Bh ZC5YWFhYKTsgRElSWyRjXT0kRDsgUE9SVFskY109JHBvcnQKICAkVy9pLSRiL2Jpbi9pbml0ZGIg LUQgJEQgLUEgdHJ1c3QgLS1uby1zeW5jIC1VIHBvc3RncmVzID4vZGV2L251bGwKICBwcmludGYg InBvcnQgPSAkcG9ydFxudW5peF9zb2NrZXRfZGlyZWN0b3JpZXMgPSAnL3RtcCdcbm1heF9jb25u ZWN0aW9ucyA9IDVcbiIgPj4gJEQvcG9zdGdyZXNxbC5jb25mCiAgaWYgWyAiJGMiICE9ICIkYiIg XTsgdGhlbgogICAgR0xJQkNfVFVOQUJMRVM9JE5PTlQgdGFza3NldCAtYyAkU1JWQ1BVICRXL2kt JGIvYmluL3BnX2N0bCAtRCAkRCAtbCAkRC9sb2cgLXcgc3RhcnQgPi9kZXYvbnVsbAogIGVsc2UK ICAgIHRhc2tzZXQgLWMgJFNSVkNQVSAkVy9pLSRiL2Jpbi9wZ19jdGwgLUQgJEQgLWwgJEQvbG9n IC13IHN0YXJ0ID4vZGV2L251bGwKICBmaQogIHBvcnQ9JCgocG9ydCArIDEpKQpkb25lCgojIGNh c2UgbGluZXM6IG5hbWV8c3FsfHRyYW5zYWN0aW9ucyBwZXIgcm91bmQKY2FzZXMoKSB7CiAgZm9y IGxlbiBpbiAxIDEwIDEwMDsgZG8KICAgIHM9JHtQQUQ6MDokbGVufQogICAgZm9yIG4gaW4gMTAw MDAwMCAxNjAwMDAwMCAxMDAwMDAwMDA7IGRvCiAgICAgIHQ9JCgoIG4gPj0gMTAwMDAwMDAwID8g NSA6IChuID49IDE2MDAwMDAwID8gMjAgOiAyMDApICkpCiAgICAgIGVjaG8gInJlcGVhdCBsZW49 JGxlbiBOPSRufFNFTEVDVCBvY3RldF9sZW5ndGgocmVwZWF0KCckcycsICQoKG4gLyBsZW4pKSkp fCR0IgogICAgICBlY2hvICJycGFkICAgbGVuPSRsZW4gTj0kbnxTRUxFQ1Qgb2N0ZXRfbGVuZ3Ro KHJwYWQoJ3gnLCAkbiwgJyRzJykpfCR0IgogICAgZG9uZQogIGRvbmUKfQoKZm9yIHIgaW4gJChz ZXEgJFJPVU5EUyk7IGRvCiAgIyByb3RhdGUgdGhlIG9yZGVyIG9mIHRoZSBjb25maWdzIGVhY2gg cm91bmQKICBzZXQgLS0gJENPTkZJR1M7IGZvciBfIGluICQoc2VxICQoKCAociAtIDEpICUgJCMg KSkpOyBkbyBzZXQgLS0gIiR7QDoyfSIgIiQxIjsgZG9uZQogIG9yZGVyPSIkKiIKICBjYXNlcyB8 IHdoaWxlIElGUz0nfCcgcmVhZCAtciBuYW1lIHNxbCB0OyBkbwogICAgZm9yIGMgaW4gJG9yZGVy OyBkbwogICAgICBiPSR7YyUtbm9udH0KICAgICAgZj0kKG1rdGVtcCAvdG1wL2NsYXVkZS0xMDAw L3EuWFhYWC5zcWwpOyBlY2hvICIkc3FsOyIgPiAkZgogICAgICBsYXQ9JCh0YXNrc2V0IC1jICRD TElDUFUgJFcvaS0kYi9iaW4vcGdiZW5jaCAtbiAtaCAvdG1wIC1wICR7UE9SVFskY119IC1VIHBv c3RncmVzIC1jIDEgLXQgJHQgLWYgJGYgcG9zdGdyZXMgMj4vZGV2L251bGwgXAogICAgICAgICAg ICB8IGF3ayAnL2xhdGVuY3kgYXZlcmFnZS8ge3ByaW50ICQ0fScpCiAgICAgIHJtIC1mICRmCiAg ICAgIGVjaG8gIiRyfCRjfCRuYW1lfCRsYXQiID4+ICRPVVQKICAgIGRvbmUKICBkb25lCiAgZWNo byAicm91bmQgJHIgZG9uZSIgPiYyCmRvbmUKCmZvciBjIGluICRDT05GSUdTOyBkbwogIGI9JHtj JS1ub250fQogICRXL2ktJGIvYmluL3BnX2N0bCAtRCAke0RJUlskY119IC1tIGZhc3QgLXcgc3Rv cCA+L2Rldi9udWxsOyBybSAtcmYgJHtESVJbJGNdfQpkb25lCgojIG1lZGlhbiBwZXIgKGNvbmZp ZywgY2FzZSksIG9uZSBsaW5lIHBlciBjYXNlOiBtYXN0ZXIgZmlyc3QsIHRoZW4gdGhlIHJlc3QK cHl0aG9uMyAtICIkT1VUIiAiJENPTkZJR1MiIDw8J0VPRicgfCB0ZWUgJEEvYmVuY2gudHh0Cmlt cG9ydCBzeXMsIHN0YXRpc3RpY3MsIGNvbGxlY3Rpb25zCnJvd3MgPSBbbC5yc3RyaXAoIlxuIiku c3BsaXQoInwiKSBmb3IgbCBpbiBvcGVuKHN5cy5hcmd2WzFdKSBpZiBsLnN0cmlwKCldCmNvbmZp Z3MgPSBzeXMuYXJndlsyXS5zcGxpdCgpCm1lZCA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxp c3QpCm9yZGVyID0gW10KZm9yIHIsIGMsIG5hbWUsIGxhdCBpbiByb3dzOgogICAgaWYgbGF0Ogog ICAgICAgIG1lZFsoYywgbmFtZSldLmFwcGVuZChmbG9hdChsYXQpKQogICAgaWYgbmFtZSBub3Qg aW4gb3JkZXI6CiAgICAgICAgb3JkZXIuYXBwZW5kKG5hbWUpCnByaW50KCJtZWRpYW4gbGF0ZW5j eSBpbiBtcywgIiArICIsICIuam9pbihjb25maWdzKSkKZm9yIG5hbWUgaW4gb3JkZXI6CiAgICB2 YWxzID0gW3N0YXRpc3RpY3MubWVkaWFuKG1lZFsoYywgbmFtZSldKSBpZiBtZWRbKGMsIG5hbWUp XSBlbHNlIGZsb2F0KCJuYW4iKSBmb3IgYyBpbiBjb25maWdzXQogICAgcHJpbnQoZiJ7bmFtZX06 ICIgKyAiLCAiLmpvaW4oZiJ7djouM2Z9IiBmb3IgdiBpbiB2YWxzKSkKRU9GCgo9PT09PSBiZW5j aC50eHQgKC4vYmVuY2guc2ggNSkgPT09PT0KbWVkaWFuIGxhdGVuY3kgaW4gbXMsIG1hc3Rlciwg djUsIHY1YjhtLCB2NWI4bS1ub250LCByZmMKcmVwZWF0IGxlbj0xIE49MTAwMDAwMDogMS40ODcs IDAuMjExLCAwLjIyOCwgMC4yMTYsIDAuMjE5CnJwYWQgICBsZW49MSBOPTEwMDAwMDA6IDIuOTQ5 LCAwLjA0MywgMC4wNDIsIDAuMDQ1LCAyLjkyNApyZXBlYXQgbGVuPTEgTj0xNjAwMDAwMDogMjcu Mjc5LCA2Ljk5NSwgNy42MjMsIDcuMTM2LCA2LjY5NQpycGFkICAgbGVuPTEgTj0xNjAwMDAwMDog NDkuOTMzLCA0LjEwOCwgNC4wNTYsIDMuNzMwLCA1MC4wNjQKcmVwZWF0IGxlbj0xIE49MTAwMDAw MDAwOiAxNzMuMTMyLCA0Ny4xNTUsIDQ2LjkyNiwgNDcuMDI3LCA0Ny43MjcKcnBhZCAgIGxlbj0x IE49MTAwMDAwMDAwOiAzMzAuNjI2LCA0NS40OTcsIDQ3LjE0OSwgNDguMDcwLCAzMzAuNzIxCnJl cGVhdCBsZW49MTAgTj0xMDAwMDAwOiAwLjMyNywgMC4yMjAsIDAuMjEwLCAwLjI0NiwgMC4zMjcK cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDA6IDIuOTk5LCAwLjAzOCwgMC4wNDMsIDAuMDQzLCAyLjkz OQpyZXBlYXQgbGVuPTEwIE49MTYwMDAwMDA6IDguNDgwLCA2LjA3MSwgNS45MzAsIDYuMjM5LCA4 LjYxOQpycGFkICAgbGVuPTEwIE49MTYwMDAwMDA6IDUwLjQwNiwgMy43NzcsIDQuNDY0LCAzLjc3 MSwgNTEuMzI5CnJlcGVhdCBsZW49MTAgTj0xMDAwMDAwMDA6IDU4LjY0MiwgNDYuNzgzLCA1MC40 MTIsIDQ2LjY2NCwgNTUuMzM0CnJwYWQgICBsZW49MTAgTj0xMDAwMDAwMDA6IDM0Mi41MzUsIDQ0 LjU3NywgNDYuOTg5LCA0Ni42NDYsIDMyOC4yOTEKcmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwOiAw LjIzOSwgMC4yMjksIDAuMjI2LCAwLjIyMywgMC4yNjIKcnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAw OiAyLjkyOSwgMC4wNDgsIDAuMDUyLCAwLjA2MCwgMi45ODMKcmVwZWF0IGxlbj0xMDAgTj0xNjAw MDAwMDogNi4zNDgsIDYuMjUxLCA2LjcyOSwgNi40MjksIDYuNzUwCnJwYWQgICBsZW49MTAwIE49 MTYwMDAwMDA6IDUxLjkwNSwgMy44NDksIDQuMTM4LCA0LjIwOCwgNTAuMjk2CnJlcGVhdCBsZW49 MTAwIE49MTAwMDAwMDAwOiA0Ni44MTEsIDQ0Ljg2NywgNDcuNTUxLCA0OC4zNjIsIDQ2LjI5NQpy cGFkICAgbGVuPTEwMCBOPTEwMDAwMDAwMDogMzI1Ljg1NCwgNDMuMjQ5LCA0OC4zMzQsIDUwLjU2 MCwgMzM1Ljc1NQoKPT09PT0gYmVuY2gucmF3IChyb3VuZHxjb25maWd8Y2FzZXxsYXRlbmN5IG1z KSA9PT09PQoxfG1hc3RlcnxyZXBlYXQgbGVuPTEgTj0xMDAwMDAwfDEuNTczCjF8djV8cmVwZWF0 IGxlbj0xIE49MTAwMDAwMHwwLjIxMQoxfHY1YjhtfHJlcGVhdCBsZW49MSBOPTEwMDAwMDB8MC4y MjgKMXx2NWI4bS1ub250fHJlcGVhdCBsZW49MSBOPTEwMDAwMDB8MC4yNzYKMXxyZmN8cmVwZWF0 IGxlbj0xIE49MTAwMDAwMHwwLjIzMwoxfG1hc3RlcnxycGFkICAgbGVuPTEgTj0xMDAwMDAwfDMu MDQ0CjF8djV8cnBhZCAgIGxlbj0xIE49MTAwMDAwMHwwLjA1MQoxfHY1YjhtfHJwYWQgICBsZW49 MSBOPTEwMDAwMDB8MC4wNDQKMXx2NWI4bS1ub250fHJwYWQgICBsZW49MSBOPTEwMDAwMDB8MC4w NTEKMXxyZmN8cnBhZCAgIGxlbj0xIE49MTAwMDAwMHwyLjkyMQoxfG1hc3RlcnxyZXBlYXQgbGVu PTEgTj0xNjAwMDAwMHwyNy44MTUKMXx2NXxyZXBlYXQgbGVuPTEgTj0xNjAwMDAwMHw2Ljk5NQox fHY1YjhtfHJlcGVhdCBsZW49MSBOPTE2MDAwMDAwfDcuNzEwCjF8djViOG0tbm9udHxyZXBlYXQg bGVuPTEgTj0xNjAwMDAwMHw3LjM3NwoxfHJmY3xyZXBlYXQgbGVuPTEgTj0xNjAwMDAwMHw3LjU0 MAoxfG1hc3RlcnxycGFkICAgbGVuPTEgTj0xNjAwMDAwMHw1Mi40NzYKMXx2NXxycGFkICAgbGVu PTEgTj0xNjAwMDAwMHwzLjYwMAoxfHY1YjhtfHJwYWQgICBsZW49MSBOPTE2MDAwMDAwfDQuMDU2 CjF8djViOG0tbm9udHxycGFkICAgbGVuPTEgTj0xNjAwMDAwMHwzLjY1MAoxfHJmY3xycGFkICAg bGVuPTEgTj0xNjAwMDAwMHw1MC4zMjcKMXxtYXN0ZXJ8cmVwZWF0IGxlbj0xIE49MTAwMDAwMDAw fDE2OC42MTAKMXx2NXxyZXBlYXQgbGVuPTEgTj0xMDAwMDAwMDB8NDYuNTE3CjF8djViOG18cmVw ZWF0IGxlbj0xIE49MTAwMDAwMDAwfDQ2LjkyNgoxfHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xIE49 MTAwMDAwMDAwfDQ2LjIxNQoxfHJmY3xyZXBlYXQgbGVuPTEgTj0xMDAwMDAwMDB8NDcuNzI3CjF8 bWFzdGVyfHJwYWQgICBsZW49MSBOPTEwMDAwMDAwMHwzMzAuNjI2CjF8djV8cnBhZCAgIGxlbj0x IE49MTAwMDAwMDAwfDQzLjg5MwoxfHY1YjhtfHJwYWQgICBsZW49MSBOPTEwMDAwMDAwMHw0NS4y MzgKMXx2NWI4bS1ub250fHJwYWQgICBsZW49MSBOPTEwMDAwMDAwMHw0Ni44NDUKMXxyZmN8cnBh ZCAgIGxlbj0xIE49MTAwMDAwMDAwfDMyNy4zNTAKMXxtYXN0ZXJ8cmVwZWF0IGxlbj0xMCBOPTEw MDAwMDB8MC4zMTcKMXx2NXxyZXBlYXQgbGVuPTEwIE49MTAwMDAwMHwwLjIyMAoxfHY1YjhtfHJl cGVhdCBsZW49MTAgTj0xMDAwMDAwfDAuMjEwCjF8djViOG0tbm9udHxyZXBlYXQgbGVuPTEwIE49 MTAwMDAwMHwwLjI2MQoxfHJmY3xyZXBlYXQgbGVuPTEwIE49MTAwMDAwMHwwLjMzNAoxfG1hc3Rl cnxycGFkICAgbGVuPTEwIE49MTAwMDAwMHwzLjEzNAoxfHY1fHJwYWQgICBsZW49MTAgTj0xMDAw MDAwfDAuMDM4CjF8djViOG18cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDB8MC4wNDIKMXx2NWI4bS1u b250fHJwYWQgICBsZW49MTAgTj0xMDAwMDAwfDAuMDUwCjF8cmZjfHJwYWQgICBsZW49MTAgTj0x MDAwMDAwfDIuOTM5CjF8bWFzdGVyfHJlcGVhdCBsZW49MTAgTj0xNjAwMDAwMHw4LjAxOAoxfHY1 fHJlcGVhdCBsZW49MTAgTj0xNjAwMDAwMHw1LjUwNgoxfHY1YjhtfHJlcGVhdCBsZW49MTAgTj0x NjAwMDAwMHw1LjkzMAoxfHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xMCBOPTE2MDAwMDAwfDUuNzQz CjF8cmZjfHJlcGVhdCBsZW49MTAgTj0xNjAwMDAwMHw4LjQ1OQoxfG1hc3RlcnxycGFkICAgbGVu PTEwIE49MTYwMDAwMDB8NTIuMjQyCjF8djV8cnBhZCAgIGxlbj0xMCBOPTE2MDAwMDAwfDMuNzk4 CjF8djViOG18cnBhZCAgIGxlbj0xMCBOPTE2MDAwMDAwfDUuNDM5CjF8djViOG0tbm9udHxycGFk ICAgbGVuPTEwIE49MTYwMDAwMDB8NS42MDAKMXxyZmN8cnBhZCAgIGxlbj0xMCBOPTE2MDAwMDAw fDUyLjQ4NAoxfG1hc3RlcnxyZXBlYXQgbGVuPTEwIE49MTAwMDAwMDAwfDU4LjY0MgoxfHY1fHJl cGVhdCBsZW49MTAgTj0xMDAwMDAwMDB8NDYuOTE4CjF8djViOG18cmVwZWF0IGxlbj0xMCBOPTEw MDAwMDAwMHw1Mi4zNDIKMXx2NWI4bS1ub250fHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwMDB8NTAu NTA0CjF8cmZjfHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwMDB8NTguNjg0CjF8bWFzdGVyfHJwYWQg ICBsZW49MTAgTj0xMDAwMDAwMDB8MzI4LjU4NAoxfHY1fHJwYWQgICBsZW49MTAgTj0xMDAwMDAw MDB8NDYuMjgzCjF8djViOG18cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDAwMHw0Ni45ODkKMXx2NWI4 bS1ub250fHJwYWQgICBsZW49MTAgTj0xMDAwMDAwMDB8NDcuNDc0CjF8cmZjfHJwYWQgICBsZW49 MTAgTj0xMDAwMDAwMDB8MzMyLjU3OQoxfG1hc3RlcnxyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDB8 MC4yMzcKMXx2NXxyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDB8MC4yMDYKMXx2NWI4bXxyZXBlYXQg bGVuPTEwMCBOPTEwMDAwMDB8MC4yMTMKMXx2NWI4bS1ub250fHJlcGVhdCBsZW49MTAwIE49MTAw MDAwMHwwLjIwNgoxfHJmY3xyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDB8MC4yMjQKMXxtYXN0ZXJ8 cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwfDIuODY4CjF8djV8cnBhZCAgIGxlbj0xMDAgTj0xMDAw MDAwfDAuMDQ4CjF8djViOG18cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwfDAuMDYyCjF8djViOG0t bm9udHxycGFkICAgbGVuPTEwMCBOPTEwMDAwMDB8MC4wNjMKMXxyZmN8cnBhZCAgIGxlbj0xMDAg Tj0xMDAwMDAwfDMuMDI4CjF8bWFzdGVyfHJlcGVhdCBsZW49MTAwIE49MTYwMDAwMDB8Ny4yMDYK MXx2NXxyZXBlYXQgbGVuPTEwMCBOPTE2MDAwMDAwfDYuMzI2CjF8djViOG18cmVwZWF0IGxlbj0x MDAgTj0xNjAwMDAwMHw2LjY3NQoxfHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xMDAgTj0xNjAwMDAw MHw2LjExNwoxfHJmY3xyZXBlYXQgbGVuPTEwMCBOPTE2MDAwMDAwfDYuNzUwCjF8bWFzdGVyfHJw YWQgICBsZW49MTAwIE49MTYwMDAwMDB8NDkuNjM1CjF8djV8cnBhZCAgIGxlbj0xMDAgTj0xNjAw MDAwMHw0LjA1NQoxfHY1YjhtfHJwYWQgICBsZW49MTAwIE49MTYwMDAwMDB8NC4xMzgKMXx2NWI4 bS1ub250fHJwYWQgICBsZW49MTAwIE49MTYwMDAwMDB8NC4yMDgKMXxyZmN8cnBhZCAgIGxlbj0x MDAgTj0xNjAwMDAwMHw1MC4yOTYKMXxtYXN0ZXJ8cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwMDB8 NDYuODExCjF8djV8cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwMDB8MzguOTUyCjF8djViOG18cmVw ZWF0IGxlbj0xMDAgTj0xMDAwMDAwMDB8NDMuODYzCjF8djViOG0tbm9udHxyZXBlYXQgbGVuPTEw MCBOPTEwMDAwMDAwMHw0Ny4xODkKMXxyZmN8cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwMDB8NDUu Nzc3CjF8bWFzdGVyfHJwYWQgICBsZW49MTAwIE49MTAwMDAwMDAwfDMyMi44MjkKMXx2NXxycGFk ICAgbGVuPTEwMCBOPTEwMDAwMDAwMHw0Mi4zMzUKMXx2NWI4bXxycGFkICAgbGVuPTEwMCBOPTEw MDAwMDAwMHw0NS43OTcKMXx2NWI4bS1ub250fHJwYWQgICBsZW49MTAwIE49MTAwMDAwMDAwfDQ3 LjEyNgoxfHJmY3xycGFkICAgbGVuPTEwMCBOPTEwMDAwMDAwMHwzMzYuODI5CjJ8djV8cmVwZWF0 IGxlbj0xIE49MTAwMDAwMHwwLjIxMAoyfHY1YjhtfHJlcGVhdCBsZW49MSBOPTEwMDAwMDB8MC4y NDUKMnx2NWI4bS1ub250fHJlcGVhdCBsZW49MSBOPTEwMDAwMDB8MC4yMDgKMnxyZmN8cmVwZWF0 IGxlbj0xIE49MTAwMDAwMHwwLjIwMgoyfG1hc3RlcnxyZXBlYXQgbGVuPTEgTj0xMDAwMDAwfDEu NDg3CjJ8djV8cnBhZCAgIGxlbj0xIE49MTAwMDAwMHwwLjAzNQoyfHY1YjhtfHJwYWQgICBsZW49 MSBOPTEwMDAwMDB8MC4wNDEKMnx2NWI4bS1ub250fHJwYWQgICBsZW49MSBOPTEwMDAwMDB8MC4w NDIKMnxyZmN8cnBhZCAgIGxlbj0xIE49MTAwMDAwMHwyLjg4NgoyfG1hc3RlcnxycGFkICAgbGVu PTEgTj0xMDAwMDAwfDIuOTMwCjJ8djV8cmVwZWF0IGxlbj0xIE49MTYwMDAwMDB8Ny4wNDYKMnx2 NWI4bXxyZXBlYXQgbGVuPTEgTj0xNjAwMDAwMHw2LjUzNAoyfHY1YjhtLW5vbnR8cmVwZWF0IGxl bj0xIE49MTYwMDAwMDB8Ni43MzkKMnxyZmN8cmVwZWF0IGxlbj0xIE49MTYwMDAwMDB8Ni4yNDQK MnxtYXN0ZXJ8cmVwZWF0IGxlbj0xIE49MTYwMDAwMDB8MjUuNjkwCjJ8djV8cnBhZCAgIGxlbj0x IE49MTYwMDAwMDB8NC4yMDkKMnx2NWI4bXxycGFkICAgbGVuPTEgTj0xNjAwMDAwMHw0LjAwNAoy fHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xIE49MTYwMDAwMDB8My42ODcKMnxyZmN8cnBhZCAgIGxl bj0xIE49MTYwMDAwMDB8NDguNTczCjJ8bWFzdGVyfHJwYWQgICBsZW49MSBOPTE2MDAwMDAwfDQ5 LjY1NwoyfHY1fHJlcGVhdCBsZW49MSBOPTEwMDAwMDAwMHw0Ny4xNTUKMnx2NWI4bXxyZXBlYXQg bGVuPTEgTj0xMDAwMDAwMDB8NTUuNzU4CjJ8djViOG0tbm9udHxyZXBlYXQgbGVuPTEgTj0xMDAw MDAwMDB8NDcuMjM4CjJ8cmZjfHJlcGVhdCBsZW49MSBOPTEwMDAwMDAwMHw0My4yMTYKMnxtYXN0 ZXJ8cmVwZWF0IGxlbj0xIE49MTAwMDAwMDAwfDE2NC4zNDYKMnx2NXxycGFkICAgbGVuPTEgTj0x MDAwMDAwMDB8NDMuMjE3CjJ8djViOG18cnBhZCAgIGxlbj0xIE49MTAwMDAwMDAwfDQ3LjE0OQoy fHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xIE49MTAwMDAwMDAwfDU2LjcwNwoyfHJmY3xycGFkICAg bGVuPTEgTj0xMDAwMDAwMDB8MzQwLjg5MgoyfG1hc3RlcnxycGFkICAgbGVuPTEgTj0xMDAwMDAw MDB8MzI1LjY4MQoyfHY1fHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwfDAuMjEwCjJ8djViOG18cmVw ZWF0IGxlbj0xMCBOPTEwMDAwMDB8MC4yMDYKMnx2NWI4bS1ub250fHJlcGVhdCBsZW49MTAgTj0x MDAwMDAwfDAuMjQ2CjJ8cmZjfHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwfDAuNTE0CjJ8bWFzdGVy fHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwfDAuNDczCjJ8djV8cnBhZCAgIGxlbj0xMCBOPTEwMDAw MDB8MC4wMzYKMnx2NWI4bXxycGFkICAgbGVuPTEwIE49MTAwMDAwMHwwLjA0NQoyfHY1YjhtLW5v bnR8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDB8MC4wNDMKMnxyZmN8cnBhZCAgIGxlbj0xMCBOPTEw MDAwMDB8Mi44OTMKMnxtYXN0ZXJ8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDB8Mi44NTcKMnx2NXxy ZXBlYXQgbGVuPTEwIE49MTYwMDAwMDB8NS41MzYKMnx2NWI4bXxyZXBlYXQgbGVuPTEwIE49MTYw MDAwMDB8NS43MTYKMnx2NWI4bS1ub250fHJlcGVhdCBsZW49MTAgTj0xNjAwMDAwMHw1LjgwMQoy fHJmY3xyZXBlYXQgbGVuPTEwIE49MTYwMDAwMDB8Ny45MDIKMnxtYXN0ZXJ8cmVwZWF0IGxlbj0x MCBOPTE2MDAwMDAwfDcuNzQ1CjJ8djV8cnBhZCAgIGxlbj0xMCBOPTE2MDAwMDAwfDMuMjkzCjJ8 djViOG18cnBhZCAgIGxlbj0xMCBOPTE2MDAwMDAwfDMuNzU3CjJ8djViOG0tbm9udHxycGFkICAg bGVuPTEwIE49MTYwMDAwMDB8My4xNzMKMnxyZmN8cnBhZCAgIGxlbj0xMCBOPTE2MDAwMDAwfDQ4 Ljc3NgoyfG1hc3RlcnxycGFkICAgbGVuPTEwIE49MTYwMDAwMDB8NDguODAyCjJ8djV8cmVwZWF0 IGxlbj0xMCBOPTEwMDAwMDAwMHw0MC45MzMKMnx2NWI4bXxyZXBlYXQgbGVuPTEwIE49MTAwMDAw MDAwfDQyLjIyOAoyfHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xMCBOPTEwMDAwMDAwMHw0Ni42NjQK MnxyZmN8cmVwZWF0IGxlbj0xMCBOPTEwMDAwMDAwMHw1NS4zMzQKMnxtYXN0ZXJ8cmVwZWF0IGxl bj0xMCBOPTEwMDAwMDAwMHw1My41MDYKMnx2NXxycGFkICAgbGVuPTEwIE49MTAwMDAwMDAwfDQz LjY5MAoyfHY1YjhtfHJwYWQgICBsZW49MTAgTj0xMDAwMDAwMDB8NTAuMzg3CjJ8djViOG0tbm9u dHxycGFkICAgbGVuPTEwIE49MTAwMDAwMDAwfDUwLjA0NwoyfHJmY3xycGFkICAgbGVuPTEwIE49 MTAwMDAwMDAwfDMyOC4yOTEKMnxtYXN0ZXJ8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDAwMHwzMzMu MzA0CjJ8djV8cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwfDAuMjI5CjJ8djViOG18cmVwZWF0IGxl bj0xMDAgTj0xMDAwMDAwfDAuMjE0CjJ8djViOG0tbm9udHxyZXBlYXQgbGVuPTEwMCBOPTEwMDAw MDB8MC4yMjMKMnxyZmN8cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwfDAuMjY2CjJ8bWFzdGVyfHJl cGVhdCBsZW49MTAwIE49MTAwMDAwMHwwLjIzOQoyfHY1fHJwYWQgICBsZW49MTAwIE49MTAwMDAw MHwwLjA1NwoyfHY1YjhtfHJwYWQgICBsZW49MTAwIE49MTAwMDAwMHwwLjA1MgoyfHY1YjhtLW5v bnR8cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwfDAuMDQ5CjJ8cmZjfHJwYWQgICBsZW49MTAwIE49 MTAwMDAwMHwyLjk4MwoyfG1hc3RlcnxycGFkICAgbGVuPTEwMCBOPTEwMDAwMDB8Mi45MjQKMnx2 NXxyZXBlYXQgbGVuPTEwMCBOPTE2MDAwMDAwfDUuNTc1CjJ8djViOG18cmVwZWF0IGxlbj0xMDAg Tj0xNjAwMDAwMHw2LjMzMAoyfHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xMDAgTj0xNjAwMDAwMHw1 LjU3MwoyfHJmY3xyZXBlYXQgbGVuPTEwMCBOPTE2MDAwMDAwfDYuMzMyCjJ8bWFzdGVyfHJlcGVh dCBsZW49MTAwIE49MTYwMDAwMDB8Ni4zNDgKMnx2NXxycGFkICAgbGVuPTEwMCBOPTE2MDAwMDAw fDMuNDc4CjJ8djViOG18cnBhZCAgIGxlbj0xMDAgTj0xNjAwMDAwMHwzLjg0NwoyfHY1YjhtLW5v bnR8cnBhZCAgIGxlbj0xMDAgTj0xNjAwMDAwMHw0LjI0OQoyfHJmY3xycGFkICAgbGVuPTEwMCBO PTE2MDAwMDAwfDQ5LjI5NwoyfG1hc3RlcnxycGFkICAgbGVuPTEwMCBOPTE2MDAwMDAwfDUwLjMz NwoyfHY1fHJlcGVhdCBsZW49MTAwIE49MTAwMDAwMDAwfDQ3LjQ3NgoyfHY1YjhtfHJlcGVhdCBs ZW49MTAwIE49MTAwMDAwMDAwfDQ5LjUwNAoyfHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xMDAgTj0x MDAwMDAwMDB8NTAuNjc1CjJ8cmZjfHJlcGVhdCBsZW49MTAwIE49MTAwMDAwMDAwfDQ4LjI1OAoy fG1hc3RlcnxyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDAwMHw0Ny41ODQKMnx2NXxycGFkICAgbGVu PTEwMCBOPTEwMDAwMDAwMHw0OS4xMDkKMnx2NWI4bXxycGFkICAgbGVuPTEwMCBOPTEwMDAwMDAw MHw1MC45MzIKMnx2NWI4bS1ub250fHJwYWQgICBsZW49MTAwIE49MTAwMDAwMDAwfDUzLjkxNAoy fHJmY3xycGFkICAgbGVuPTEwMCBOPTEwMDAwMDAwMHwzMzUuNzU1CjJ8bWFzdGVyfHJwYWQgICBs ZW49MTAwIE49MTAwMDAwMDAwfDMyNS4xMDIKM3x2NWI4bXxyZXBlYXQgbGVuPTEgTj0xMDAwMDAw fDAuMjI1CjN8djViOG0tbm9udHxyZXBlYXQgbGVuPTEgTj0xMDAwMDAwfDAuMjE2CjN8cmZjfHJl cGVhdCBsZW49MSBOPTEwMDAwMDB8MC4yMDQKM3xtYXN0ZXJ8cmVwZWF0IGxlbj0xIE49MTAwMDAw MHwxLjQ0NAozfHY1fHJlcGVhdCBsZW49MSBOPTEwMDAwMDB8MC4yMTQKM3x2NWI4bXxycGFkICAg bGVuPTEgTj0xMDAwMDAwfDAuMDQ1CjN8djViOG0tbm9udHxycGFkICAgbGVuPTEgTj0xMDAwMDAw fDAuMDQ1CjN8cmZjfHJwYWQgICBsZW49MSBOPTEwMDAwMDB8Mi45MjQKM3xtYXN0ZXJ8cnBhZCAg IGxlbj0xIE49MTAwMDAwMHwyLjk0OQozfHY1fHJwYWQgICBsZW49MSBOPTEwMDAwMDB8MC4wMzkK M3x2NWI4bXxyZXBlYXQgbGVuPTEgTj0xNjAwMDAwMHw2Ljk2OQozfHY1YjhtLW5vbnR8cmVwZWF0 IGxlbj0xIE49MTYwMDAwMDB8Ny4zMDcKM3xyZmN8cmVwZWF0IGxlbj0xIE49MTYwMDAwMDB8Ny4w ODAKM3xtYXN0ZXJ8cmVwZWF0IGxlbj0xIE49MTYwMDAwMDB8MjcuODk5CjN8djV8cmVwZWF0IGxl bj0xIE49MTYwMDAwMDB8Ny4wNzEKM3x2NWI4bXxycGFkICAgbGVuPTEgTj0xNjAwMDAwMHw0LjU1 MwozfHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xIE49MTYwMDAwMDB8NC40MzcKM3xyZmN8cnBhZCAg IGxlbj0xIE49MTYwMDAwMDB8NDkuNzMxCjN8bWFzdGVyfHJwYWQgICBsZW49MSBOPTE2MDAwMDAw fDQ5LjQ0NQozfHY1fHJwYWQgICBsZW49MSBOPTE2MDAwMDAwfDQuMjQ4CjN8djViOG18cmVwZWF0 IGxlbj0xIE49MTAwMDAwMDAwfDQ2LjU4NwozfHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xIE49MTAw MDAwMDAwfDQ3LjAyNwozfHJmY3xyZXBlYXQgbGVuPTEgTj0xMDAwMDAwMDB8NDkuMDU5CjN8bWFz dGVyfHJlcGVhdCBsZW49MSBOPTEwMDAwMDAwMHwxNzMuMTMyCjN8djV8cmVwZWF0IGxlbj0xIE49 MTAwMDAwMDAwfDQ3LjQ2OAozfHY1YjhtfHJwYWQgICBsZW49MSBOPTEwMDAwMDAwMHw0OC4xODYK M3x2NWI4bS1ub250fHJwYWQgICBsZW49MSBOPTEwMDAwMDAwMHw0OC42NTgKM3xyZmN8cnBhZCAg IGxlbj0xIE49MTAwMDAwMDAwfDMyOC45ODAKM3xtYXN0ZXJ8cnBhZCAgIGxlbj0xIE49MTAwMDAw MDAwfDMyNy4zNzcKM3x2NXxycGFkICAgbGVuPTEgTj0xMDAwMDAwMDB8NDYuMzQ4CjN8djViOG18 cmVwZWF0IGxlbj0xMCBOPTEwMDAwMDB8MC4yMDQKM3x2NWI4bS1ub250fHJlcGVhdCBsZW49MTAg Tj0xMDAwMDAwfDAuMjE5CjN8cmZjfHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwfDAuMzIwCjN8bWFz dGVyfHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwfDAuMzI3CjN8djV8cmVwZWF0IGxlbj0xMCBOPTEw MDAwMDB8MC4yMTIKM3x2NWI4bXxycGFkICAgbGVuPTEwIE49MTAwMDAwMHwwLjA0MAozfHY1Yjht LW5vbnR8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDB8MC4wNDEKM3xyZmN8cnBhZCAgIGxlbj0xMCBO PTEwMDAwMDB8Mi44ODMKM3xtYXN0ZXJ8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDB8Mi45NDIKM3x2 NXxycGFkICAgbGVuPTEwIE49MTAwMDAwMHwwLjA1MgozfHY1YjhtfHJlcGVhdCBsZW49MTAgTj0x NjAwMDAwMHw4LjUyNgozfHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xMCBOPTE2MDAwMDAwfDYuODAw CjN8cmZjfHJlcGVhdCBsZW49MTAgTj0xNjAwMDAwMHw5Ljk3MwozfG1hc3RlcnxyZXBlYXQgbGVu PTEwIE49MTYwMDAwMDB8OS4zNzYKM3x2NXxyZXBlYXQgbGVuPTEwIE49MTYwMDAwMDB8Ni44OTQK M3x2NWI4bXxycGFkICAgbGVuPTEwIE49MTYwMDAwMDB8NC40ODUKM3x2NWI4bS1ub250fHJwYWQg ICBsZW49MTAgTj0xNjAwMDAwMHw0LjYyNAozfHJmY3xycGFkICAgbGVuPTEwIE49MTYwMDAwMDB8 NTAuNTExCjN8bWFzdGVyfHJwYWQgICBsZW49MTAgTj0xNjAwMDAwMHw1MC44MDQKM3x2NXxycGFk ICAgbGVuPTEwIE49MTYwMDAwMDB8NC4yMzgKM3x2NWI4bXxyZXBlYXQgbGVuPTEwIE49MTAwMDAw MDAwfDU3LjI2NgozfHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xMCBOPTEwMDAwMDAwMHw1OC4wNDgK M3xyZmN8cmVwZWF0IGxlbj0xMCBOPTEwMDAwMDAwMHw2NS43MzIKM3xtYXN0ZXJ8cmVwZWF0IGxl bj0xMCBOPTEwMDAwMDAwMHw2NS41NzAKM3x2NXxyZXBlYXQgbGVuPTEwIE49MTAwMDAwMDAwfDQ5 LjgzOAozfHY1YjhtfHJwYWQgICBsZW49MTAgTj0xMDAwMDAwMDB8NDguNTk0CjN8djViOG0tbm9u dHxycGFkICAgbGVuPTEwIE49MTAwMDAwMDAwfDQ2LjY0NgozfHJmY3xycGFkICAgbGVuPTEwIE49 MTAwMDAwMDAwfDMyNS4zNDEKM3xtYXN0ZXJ8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDAwMHwzNDIu NTM1CjN8djV8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDAwMHw0NS4yNjEKM3x2NWI4bXxyZXBlYXQg bGVuPTEwMCBOPTEwMDAwMDB8MC4yMjYKM3x2NWI4bS1ub250fHJlcGVhdCBsZW49MTAwIE49MTAw MDAwMHwwLjI0MwozfHJmY3xyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDB8MC4yNDgKM3xtYXN0ZXJ8 cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwfDAuMjI3CjN8djV8cmVwZWF0IGxlbj0xMDAgTj0xMDAw MDAwfDAuMjE2CjN8djViOG18cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwfDAuMDQwCjN8djViOG0t bm9udHxycGFkICAgbGVuPTEwMCBOPTEwMDAwMDB8MC4wNDUKM3xyZmN8cnBhZCAgIGxlbj0xMDAg Tj0xMDAwMDAwfDIuOTE2CjN8bWFzdGVyfHJwYWQgICBsZW49MTAwIE49MTAwMDAwMHwyLjkyOQoz fHY1fHJwYWQgICBsZW49MTAwIE49MTAwMDAwMHwwLjA0MQozfHY1YjhtfHJlcGVhdCBsZW49MTAw IE49MTYwMDAwMDB8Ni44NjAKM3x2NWI4bS1ub250fHJlcGVhdCBsZW49MTAwIE49MTYwMDAwMDB8 Ni41NzYKM3xyZmN8cmVwZWF0IGxlbj0xMDAgTj0xNjAwMDAwMHw2Ljk0OAozfG1hc3RlcnxyZXBl YXQgbGVuPTEwMCBOPTE2MDAwMDAwfDcuMDYzCjN8djV8cmVwZWF0IGxlbj0xMDAgTj0xNjAwMDAw MHw2LjkyOAozfHY1YjhtfHJwYWQgICBsZW49MTAwIE49MTYwMDAwMDB8NC4xNDgKM3x2NWI4bS1u b250fHJwYWQgICBsZW49MTAwIE49MTYwMDAwMDB8NC42MTAKM3xyZmN8cnBhZCAgIGxlbj0xMDAg Tj0xNjAwMDAwMHw1MC4xODAKM3xtYXN0ZXJ8cnBhZCAgIGxlbj0xMDAgTj0xNjAwMDAwMHw1MS45 MDUKM3x2NXxycGFkICAgbGVuPTEwMCBOPTE2MDAwMDAwfDQuNzEzCjN8djViOG18cmVwZWF0IGxl bj0xMDAgTj0xMDAwMDAwMDB8NDUuMDA5CjN8djViOG0tbm9udHxyZXBlYXQgbGVuPTEwMCBOPTEw MDAwMDAwMHw0Mi41NjMKM3xyZmN8cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwMDB8NDAuOTYyCjN8 bWFzdGVyfHJlcGVhdCBsZW49MTAwIE49MTAwMDAwMDAwfDM5Ljg3MwozfHY1fHJlcGVhdCBsZW49 MTAwIE49MTAwMDAwMDAwfDQzLjY3MQozfHY1YjhtfHJwYWQgICBsZW49MTAwIE49MTAwMDAwMDAw fDQ2LjA0NAozfHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwMDB8NTAuMzExCjN8 cmZjfHJwYWQgICBsZW49MTAwIE49MTAwMDAwMDAwfDMzMi4xNDQKM3xtYXN0ZXJ8cnBhZCAgIGxl bj0xMDAgTj0xMDAwMDAwMDB8MzI1Ljg1NAozfHY1fHJwYWQgICBsZW49MTAwIE49MTAwMDAwMDAw fDQxLjA1NQo0fHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xIE49MTAwMDAwMHwwLjIwOAo0fHJmY3xy ZXBlYXQgbGVuPTEgTj0xMDAwMDAwfDAuMjE5CjR8bWFzdGVyfHJlcGVhdCBsZW49MSBOPTEwMDAw MDB8MS40MTYKNHx2NXxyZXBlYXQgbGVuPTEgTj0xMDAwMDAwfDAuMjA5CjR8djViOG18cmVwZWF0 IGxlbj0xIE49MTAwMDAwMHwwLjIyNwo0fHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xIE49MTAwMDAw MHwwLjAzOQo0fHJmY3xycGFkICAgbGVuPTEgTj0xMDAwMDAwfDMuMDQ2CjR8bWFzdGVyfHJwYWQg ICBsZW49MSBOPTEwMDAwMDB8Mi44ODIKNHx2NXxycGFkICAgbGVuPTEgTj0xMDAwMDAwfDAuMDQz CjR8djViOG18cnBhZCAgIGxlbj0xIE49MTAwMDAwMHwwLjA0Mgo0fHY1YjhtLW5vbnR8cmVwZWF0 IGxlbj0xIE49MTYwMDAwMDB8Ni41NjkKNHxyZmN8cmVwZWF0IGxlbj0xIE49MTYwMDAwMDB8Ni42 OTUKNHxtYXN0ZXJ8cmVwZWF0IGxlbj0xIE49MTYwMDAwMDB8MjcuMjc5CjR8djV8cmVwZWF0IGxl bj0xIE49MTYwMDAwMDB8Ni4zMzcKNHx2NWI4bXxyZXBlYXQgbGVuPTEgTj0xNjAwMDAwMHw3LjYy Mwo0fHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xIE49MTYwMDAwMDB8My43MzAKNHxyZmN8cnBhZCAg IGxlbj0xIE49MTYwMDAwMDB8NTIuMjI4CjR8bWFzdGVyfHJwYWQgICBsZW49MSBOPTE2MDAwMDAw fDUxLjQ1Mwo0fHY1fHJwYWQgICBsZW49MSBOPTE2MDAwMDAwfDMuNzIwCjR8djViOG18cnBhZCAg IGxlbj0xIE49MTYwMDAwMDB8NC4yMTEKNHx2NWI4bS1ub250fHJlcGVhdCBsZW49MSBOPTEwMDAw MDAwMHw0NS43MTkKNHxyZmN8cmVwZWF0IGxlbj0xIE49MTAwMDAwMDAwfDQ3LjgyMgo0fG1hc3Rl cnxyZXBlYXQgbGVuPTEgTj0xMDAwMDAwMDB8MTc0LjYyOAo0fHY1fHJlcGVhdCBsZW49MSBOPTEw MDAwMDAwMHw0MC40MzIKNHx2NWI4bXxyZXBlYXQgbGVuPTEgTj0xMDAwMDAwMDB8NDAuNTAzCjR8 djViOG0tbm9udHxycGFkICAgbGVuPTEgTj0xMDAwMDAwMDB8NDIuNTI3CjR8cmZjfHJwYWQgICBs ZW49MSBOPTEwMDAwMDAwMHwzNDMuNjQzCjR8bWFzdGVyfHJwYWQgICBsZW49MSBOPTEwMDAwMDAw MHwzMzMuODYwCjR8djV8cnBhZCAgIGxlbj0xIE49MTAwMDAwMDAwfDQ1LjQ5Nwo0fHY1YjhtfHJw YWQgICBsZW49MSBOPTEwMDAwMDAwMHw0Mi40NzkKNHx2NWI4bS1ub250fHJlcGVhdCBsZW49MTAg Tj0xMDAwMDAwfDAuMjAyCjR8cmZjfHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwfDAuMzIzCjR8bWFz dGVyfHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwfDAuMzYyCjR8djV8cmVwZWF0IGxlbj0xMCBOPTEw MDAwMDB8MC4yNDAKNHx2NWI4bXxyZXBlYXQgbGVuPTEwIE49MTAwMDAwMHwwLjI4NAo0fHY1Yjht LW5vbnR8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDB8MC4wNDMKNHxyZmN8cnBhZCAgIGxlbj0xMCBO PTEwMDAwMDB8My4yMjQKNHxtYXN0ZXJ8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDB8Mi45OTkKNHx2 NXxycGFkICAgbGVuPTEwIE49MTAwMDAwMHwwLjAzOAo0fHY1YjhtfHJwYWQgICBsZW49MTAgTj0x MDAwMDAwfDAuMDQzCjR8djViOG0tbm9udHxyZXBlYXQgbGVuPTEwIE49MTYwMDAwMDB8Ni4yMzkK NHxyZmN8cmVwZWF0IGxlbj0xMCBOPTE2MDAwMDAwfDguNjE5CjR8bWFzdGVyfHJlcGVhdCBsZW49 MTAgTj0xNjAwMDAwMHw4LjQ4MAo0fHY1fHJlcGVhdCBsZW49MTAgTj0xNjAwMDAwMHw2LjA3MQo0 fHY1YjhtfHJlcGVhdCBsZW49MTAgTj0xNjAwMDAwMHw1Ljg5Mwo0fHY1YjhtLW5vbnR8cnBhZCAg IGxlbj0xMCBOPTE2MDAwMDAwfDMuMjkxCjR8cmZjfHJwYWQgICBsZW49MTAgTj0xNjAwMDAwMHw1 MS44MzMKNHxtYXN0ZXJ8cnBhZCAgIGxlbj0xMCBOPTE2MDAwMDAwfDQ4LjM3Ngo0fHY1fHJwYWQg ICBsZW49MTAgTj0xNjAwMDAwMHwzLjQyNQo0fHY1YjhtfHJwYWQgICBsZW49MTAgTj0xNjAwMDAw MHw0LjQ2NAo0fHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xMCBOPTEwMDAwMDAwMHw0My4xMDAKNHxy ZmN8cmVwZWF0IGxlbj0xMCBOPTEwMDAwMDAwMHw1Mi4xMDYKNHxtYXN0ZXJ8cmVwZWF0IGxlbj0x MCBOPTEwMDAwMDAwMHw1Mi40OTYKNHx2NXxyZXBlYXQgbGVuPTEwIE49MTAwMDAwMDAwfDQzLjEz MAo0fHY1YjhtfHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwMDB8NDYuNDIxCjR8djViOG0tbm9udHxy cGFkICAgbGVuPTEwIE49MTAwMDAwMDAwfDQ2LjQ0Ngo0fHJmY3xycGFkICAgbGVuPTEwIE49MTAw MDAwMDAwfDMzNC44NzkKNHxtYXN0ZXJ8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDAwMHwzNDUuNTcx CjR8djV8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDAwMHw0NC41NzcKNHx2NWI4bXxycGFkICAgbGVu PTEwIE49MTAwMDAwMDAwfDQ2LjgxNQo0fHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0xMDAgTj0xMDAw MDAwfDAuMjE2CjR8cmZjfHJlcGVhdCBsZW49MTAwIE49MTAwMDAwMHwwLjI2Mgo0fG1hc3Rlcnxy ZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDB8MC4yNTUKNHx2NXxyZXBlYXQgbGVuPTEwMCBOPTEwMDAw MDB8MC4yNTQKNHx2NWI4bXxyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDB8MC4yNTQKNHx2NWI4bS1u b250fHJwYWQgICBsZW49MTAwIE49MTAwMDAwMHwwLjA2MAo0fHJmY3xycGFkICAgbGVuPTEwMCBO PTEwMDAwMDB8My4wNzMKNHxtYXN0ZXJ8cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwfDMuMTc2CjR8 djV8cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwfDAuMDYwCjR8djViOG18cnBhZCAgIGxlbj0xMDAg Tj0xMDAwMDAwfDAuMDU3CjR8djViOG0tbm9udHxyZXBlYXQgbGVuPTEwMCBOPTE2MDAwMDAwfDYu Njc1CjR8cmZjfHJlcGVhdCBsZW49MTAwIE49MTYwMDAwMDB8Ni4yMTEKNHxtYXN0ZXJ8cmVwZWF0 IGxlbj0xMDAgTj0xNjAwMDAwMHw1LjkyMQo0fHY1fHJlcGVhdCBsZW49MTAwIE49MTYwMDAwMDB8 Ni4yNTEKNHx2NWI4bXxyZXBlYXQgbGVuPTEwMCBOPTE2MDAwMDAwfDYuODQ2CjR8djViOG0tbm9u dHxycGFkICAgbGVuPTEwMCBOPTE2MDAwMDAwfDMuOTQwCjR8cmZjfHJwYWQgICBsZW49MTAwIE49 MTYwMDAwMDB8NTEuMjMwCjR8bWFzdGVyfHJwYWQgICBsZW49MTAwIE49MTYwMDAwMDB8NTIuMTQz CjR8djV8cnBhZCAgIGxlbj0xMDAgTj0xNjAwMDAwMHwzLjg0OQo0fHY1YjhtfHJwYWQgICBsZW49 MTAwIE49MTYwMDAwMDB8NC4xNjkKNHx2NWI4bS1ub250fHJlcGVhdCBsZW49MTAwIE49MTAwMDAw MDAwfDQ4LjM2Mgo0fHJmY3xyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDAwMHw0Ni4yOTUKNHxtYXN0 ZXJ8cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwMDB8NDkuNDY2CjR8djV8cmVwZWF0IGxlbj0xMDAg Tj0xMDAwMDAwMDB8NDQuODY3CjR8djViOG18cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwMDB8NDcu NTUxCjR8djViOG0tbm9udHxycGFkICAgbGVuPTEwMCBOPTEwMDAwMDAwMHw1My4zMzIKNHxyZmN8 cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwMDB8MzM5LjIwOAo0fG1hc3RlcnxycGFkICAgbGVuPTEw MCBOPTEwMDAwMDAwMHwzMzQuMjE4CjR8djV8cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwMDB8NDMu MjQ5CjR8djViOG18cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwMDB8NTEuNzU5CjV8cmZjfHJlcGVh dCBsZW49MSBOPTEwMDAwMDB8MC4yODUKNXxtYXN0ZXJ8cmVwZWF0IGxlbj0xIE49MTAwMDAwMHwx LjQ5Ngo1fHY1fHJlcGVhdCBsZW49MSBOPTEwMDAwMDB8MC4yMzkKNXx2NWI4bXxyZXBlYXQgbGVu PTEgTj0xMDAwMDAwfDAuMjQxCjV8djViOG0tbm9udHxyZXBlYXQgbGVuPTEgTj0xMDAwMDAwfDAu MjQxCjV8cmZjfHJwYWQgICBsZW49MSBOPTEwMDAwMDB8My4wNDUKNXxtYXN0ZXJ8cnBhZCAgIGxl bj0xIE49MTAwMDAwMHwzLjAyOAo1fHY1fHJwYWQgICBsZW49MSBOPTEwMDAwMDB8MC4wNjcKNXx2 NWI4bXxycGFkICAgbGVuPTEgTj0xMDAwMDAwfDAuMDQxCjV8djViOG0tbm9udHxycGFkICAgbGVu PTEgTj0xMDAwMDAwfDAuMDUwCjV8cmZjfHJlcGVhdCBsZW49MSBOPTE2MDAwMDAwfDYuNDAzCjV8 bWFzdGVyfHJlcGVhdCBsZW49MSBOPTE2MDAwMDAwfDI3LjI2MQo1fHY1fHJlcGVhdCBsZW49MSBO PTE2MDAwMDAwfDYuOTQ4CjV8djViOG18cmVwZWF0IGxlbj0xIE49MTYwMDAwMDB8OC41NTEKNXx2 NWI4bS1ub250fHJlcGVhdCBsZW49MSBOPTE2MDAwMDAwfDcuMTM2CjV8cmZjfHJwYWQgICBsZW49 MSBOPTE2MDAwMDAwfDUwLjA2NAo1fG1hc3RlcnxycGFkICAgbGVuPTEgTj0xNjAwMDAwMHw0OS45 MzMKNXx2NXxycGFkICAgbGVuPTEgTj0xNjAwMDAwMHw0LjEwOAo1fHY1YjhtfHJwYWQgICBsZW49 MSBOPTE2MDAwMDAwfDMuOTA4CjV8djViOG0tbm9udHxycGFkICAgbGVuPTEgTj0xNjAwMDAwMHwz LjkwMgo1fHJmY3xyZXBlYXQgbGVuPTEgTj0xMDAwMDAwMDB8NDQuODM4CjV8bWFzdGVyfHJlcGVh dCBsZW49MSBOPTEwMDAwMDAwMHwxNzUuNTUxCjV8djV8cmVwZWF0IGxlbj0xIE49MTAwMDAwMDAw fDU0Ljg1NQo1fHY1YjhtfHJlcGVhdCBsZW49MSBOPTEwMDAwMDAwMHw1MS4yOTcKNXx2NWI4bS1u b250fHJlcGVhdCBsZW49MSBOPTEwMDAwMDAwMHw1MS4zMTEKNXxyZmN8cnBhZCAgIGxlbj0xIE49 MTAwMDAwMDAwfDMzMC43MjEKNXxtYXN0ZXJ8cnBhZCAgIGxlbj0xIE49MTAwMDAwMDAwfDMzMy41 ODkKNXx2NXxycGFkICAgbGVuPTEgTj0xMDAwMDAwMDB8NjEuMjM4CjV8djViOG18cnBhZCAgIGxl bj0xIE49MTAwMDAwMDAwfDQ5LjQzMgo1fHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xIE49MTAwMDAw MDAwfDQ4LjA3MAo1fHJmY3xyZXBlYXQgbGVuPTEwIE49MTAwMDAwMHwwLjMyNwo1fG1hc3Rlcnxy ZXBlYXQgbGVuPTEwIE49MTAwMDAwMHwwLjMyNgo1fHY1fHJlcGVhdCBsZW49MTAgTj0xMDAwMDAw fDAuMjgwCjV8djViOG18cmVwZWF0IGxlbj0xMCBOPTEwMDAwMDB8MC4yNjMKNXx2NWI4bS1ub250 fHJlcGVhdCBsZW49MTAgTj0xMDAwMDAwfDAuMjY0CjV8cmZjfHJwYWQgICBsZW49MTAgTj0xMDAw MDAwfDMuMTY5CjV8bWFzdGVyfHJwYWQgICBsZW49MTAgTj0xMDAwMDAwfDMuMzg4CjV8djV8cnBh ZCAgIGxlbj0xMCBOPTEwMDAwMDB8MC4wNzIKNXx2NWI4bXxycGFkICAgbGVuPTEwIE49MTAwMDAw MHwwLjA2Mgo1fHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDB8MC4wNTgKNXxyZmN8 cmVwZWF0IGxlbj0xMCBOPTE2MDAwMDAwfDkuMDUzCjV8bWFzdGVyfHJlcGVhdCBsZW49MTAgTj0x NjAwMDAwMHw5LjMyNgo1fHY1fHJlcGVhdCBsZW49MTAgTj0xNjAwMDAwMHw2LjgzOAo1fHY1Yjht fHJlcGVhdCBsZW49MTAgTj0xNjAwMDAwMHw3LjE4MQo1fHY1YjhtLW5vbnR8cmVwZWF0IGxlbj0x MCBOPTE2MDAwMDAwfDYuOTQxCjV8cmZjfHJwYWQgICBsZW49MTAgTj0xNjAwMDAwMHw1MS4zMjkK NXxtYXN0ZXJ8cnBhZCAgIGxlbj0xMCBOPTE2MDAwMDAwfDUwLjQwNgo1fHY1fHJwYWQgICBsZW49 MTAgTj0xNjAwMDAwMHwzLjc3Nwo1fHY1YjhtfHJwYWQgICBsZW49MTAgTj0xNjAwMDAwMHwzLjk5 NAo1fHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xMCBOPTE2MDAwMDAwfDMuNzcxCjV8cmZjfHJlcGVh dCBsZW49MTAgTj0xMDAwMDAwMDB8NTQuOTUwCjV8bWFzdGVyfHJlcGVhdCBsZW49MTAgTj0xMDAw MDAwMDB8NjAuNjYxCjV8djV8cmVwZWF0IGxlbj0xMCBOPTEwMDAwMDAwMHw0Ni43ODMKNXx2NWI4 bXxyZXBlYXQgbGVuPTEwIE49MTAwMDAwMDAwfDUwLjQxMgo1fHY1YjhtLW5vbnR8cmVwZWF0IGxl bj0xMCBOPTEwMDAwMDAwMHw0NS4xODEKNXxyZmN8cnBhZCAgIGxlbj0xMCBOPTEwMDAwMDAwMHwz MjUuNzAwCjV8bWFzdGVyfHJwYWQgICBsZW49MTAgTj0xMDAwMDAwMDB8MzQ2LjQxNAo1fHY1fHJw YWQgICBsZW49MTAgTj0xMDAwMDAwMDB8NDAuODg4CjV8djViOG18cnBhZCAgIGxlbj0xMCBOPTEw MDAwMDAwMHw0Mi42NjkKNXx2NWI4bS1ub250fHJwYWQgICBsZW49MTAgTj0xMDAwMDAwMDB8NDIu OTc4CjV8cmZjfHJlcGVhdCBsZW49MTAwIE49MTAwMDAwMHwwLjMxNgo1fG1hc3RlcnxyZXBlYXQg bGVuPTEwMCBOPTEwMDAwMDB8MC4yNzEKNXx2NXxyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDB8MC4y NTYKNXx2NWI4bXxyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDB8MC4yODYKNXx2NWI4bS1ub250fHJl cGVhdCBsZW49MTAwIE49MTAwMDAwMHwwLjI2Mgo1fHJmY3xycGFkICAgbGVuPTEwMCBOPTEwMDAw MDB8Mi45MzUKNXxtYXN0ZXJ8cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwfDMuMDI3CjV8djV8cnBh ZCAgIGxlbj0xMDAgTj0xMDAwMDAwfDAuMDQ0CjV8djViOG18cnBhZCAgIGxlbj0xMDAgTj0xMDAw MDAwfDAuMDQ0CjV8djViOG0tbm9udHxycGFkICAgbGVuPTEwMCBOPTEwMDAwMDB8MC4wNjgKNXxy ZmN8cmVwZWF0IGxlbj0xMDAgTj0xNjAwMDAwMHw3LjIwNgo1fG1hc3RlcnxyZXBlYXQgbGVuPTEw MCBOPTE2MDAwMDAwfDYuMjUzCjV8djV8cmVwZWF0IGxlbj0xMDAgTj0xNjAwMDAwMHw1LjgxOQo1 fHY1YjhtfHJlcGVhdCBsZW49MTAwIE49MTYwMDAwMDB8Ni43MjkKNXx2NWI4bS1ub250fHJlcGVh dCBsZW49MTAwIE49MTYwMDAwMDB8Ni40MjkKNXxyZmN8cnBhZCAgIGxlbj0xMDAgTj0xNjAwMDAw MHw1MC44MjgKNXxtYXN0ZXJ8cnBhZCAgIGxlbj0xMDAgTj0xNjAwMDAwMHw1My43ODQKNXx2NXxy cGFkICAgbGVuPTEwMCBOPTE2MDAwMDAwfDMuNzA0CjV8djViOG18cnBhZCAgIGxlbj0xMDAgTj0x NjAwMDAwMHwzLjYzMAo1fHY1YjhtLW5vbnR8cnBhZCAgIGxlbj0xMDAgTj0xNjAwMDAwMHwzLjQ0 MQo1fHJmY3xyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDAwMHw0Ni4zODgKNXxtYXN0ZXJ8cmVwZWF0 IGxlbj0xMDAgTj0xMDAwMDAwMDB8NDYuMjY2CjV8djV8cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAw MDB8NDUuODQ1CjV8djViOG18cmVwZWF0IGxlbj0xMDAgTj0xMDAwMDAwMDB8NDguMTY5CjV8djVi OG0tbm9udHxyZXBlYXQgbGVuPTEwMCBOPTEwMDAwMDAwMHw1MC4zNDcKNXxyZmN8cnBhZCAgIGxl bj0xMDAgTj0xMDAwMDAwMDB8MzMyLjI5Mgo1fG1hc3RlcnxycGFkICAgbGVuPTEwMCBOPTEwMDAw MDAwMHwzMzMuMjA5CjV8djV8cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwMDB8NDQuODMzCjV8djVi OG18cnBhZCAgIGxlbj0xMDAgTj0xMDAwMDAwMDB8NDguMzM0CjV8djViOG0tbm9udHxycGFkICAg bGVuPTEwMCBOPTEwMDAwMDAwMHw1MC41NjAKCj09PT09IGRpZmZjaGVjay5zaCA9PT09PQojIS9i aW4vYmFzaAojIERpZmZlcmVudGlhbCBjaGVjazogdGhlIHNhbWUgbHBhZCgpL3JwYWQoKS9yZXBl YXQoKSBjYWxscyBvbiBtYXN0ZXIgYW5kIG9uCiMgYSBwYXRjaGVkIGJ1aWxkLCBpbiBVVEY4LCBF VUNfSlAgYW5kIFNRTF9BU0NJSSBkYXRhYmFzZXMuICBFYWNoIGNhbGwgcHJpbnRzCiMgaXRzIGxl bmd0aCBpbiBieXRlcyBhbmQgY2hhcmFjdGVycyBhbmQgdGhlIG1kNSBvZiBpdHMgcmVzdWx0LCBv ciB0aGUgZXJyb3IKIyBtZXNzYWdlLiAgQW55IGxpbmUgdGhhdCBkaWZmZXJzIGJldHdlZW4gdGhl IHR3byBidWlsZHMgaXMgcHJpbnRlZC4KIyAgIGRpZmZjaGVjay5zaCBbcGF0Y2hlZCBidWlsZF0g ICAoZGVmYXVsdDogdjUpCnNldCAtdQpBPSQoY2QgIiQoZGlybmFtZSAiJDAiKSIgJiYgcHdkKQpX PSRIT01FL3BncGFkCk5FVz0kezE6LXY1fQoKZ2VuKCkgeyAgIyB0aGUgY2FsbHMsIG9uZSBwZXIg bGluZSwgYXMgU0VMRUNUIHN0YXRlbWVudHMKcHl0aG9uMyAtIDw8J0VPRicKcGFkcyA9IFsiIiwg IiAiLCAiMCIsICJhYiIsICJhYmMiLCAiw6kiLCAiYcOpYiIsICLml6XmnKwiLCAi5pelYeacrGIi LAogICAgICAgICJhYmNkZWZnaGlqIiAqIDEwLCAiw6kiICogNyArICJ4Il0KYmFzZXMgPSBbIiIs ICJ4IiwgImNhZsOpIiwgIuaXpeacrOiqnuODhuOCreOCueODiCJdCm5zID0gWy0xLCAwLCAxLCAy LCAzLCA1LCA3LCA5OSwgMTAwLCAxMDEsCiAgICAgIDE2MzgzLCAxNjM4NCwgMTYzODUsIDE2Mzg2 LCAzMjc2NywgMzI3NjgsIDMyNzY5LCA1MDAwMCwKICAgICAgODM4ODYwNywgODM4ODYwOCwgODM4 ODYwOSwgMjAwMDAwMDFdCmRlZiBsaXQocyk6IHJldHVybiAiJyIgKyBzLnJlcGxhY2UoIiciLCAi JyciKSArICInIgpmb3IgZiBpbiAoImxwYWQiLCAicnBhZCIpOgogICAgZm9yIGIgaW4gYmFzZXM6 CiAgICAgICAgZm9yIHAgaW4gcGFkczoKICAgICAgICAgICAgZm9yIG4gaW4gbnM6CiAgICAgICAg ICAgICAgICBwcmludChmIlNFTEVDVCAkbCR7Zn0oe2xpdChiKX0se259LHtsaXQocClbOjI0XX0p JGwkLCBvY3RldF9sZW5ndGgociksIGNoYXJfbGVuZ3RoKHIpLCBtZDUocikgIgogICAgICAgICAg ICAgICAgICAgICAgZiJGUk9NIChTRUxFQ1Qge2Z9KHtsaXQoYil9LCB7bn0sIHtsaXQocCl9KSBy KSBzOyIpCiAgICBwcmludChmIlNFTEVDVCAkbCR7Zn0gdG9vIGxhcmdlJGwkLCBvY3RldF9sZW5n dGgoe2Z9KCd4JywgMTA3Mzc0MTgyMywgJ2FiJykpOyIpCiAgICBwcmludChmIlNFTEVDVCAkbCR7 Zn0gdG9vIGxhcmdlIG1iJGwkLCBvY3RldF9sZW5ndGgoe2Z9KCd4JywgNDAwMDAwMDAwLCAn5pel 5pysJykpOyIpCmZvciBzIGluIFsiIiwgIngiLCAiYWIiLCAiw6kiLCAi5pel5pysIiwgImFiY2Rl ZmdoaWoiICogMTAsICJhw6liIl06CiAgICBmb3IgYyBpbiBbLTEsIDAsIDEsIDIsIDMsIDE2Mzgz LCAxNjM4NCwgMTYzODUsIDEwMDAwMCwgODM4ODYwOCwgODM4ODYwOSwgMjAwMDAwMDFdOgogICAg ICAgIHByaW50KGYiU0VMRUNUICRsJHJlcGVhdCh7bGl0KHMpWzoyNF19LHtjfSkkbCQsIG9jdGV0 X2xlbmd0aChyKSwgY2hhcl9sZW5ndGgociksIG1kNShyKSAiCiAgICAgICAgICAgICAgZiJGUk9N IChTRUxFQ1QgcmVwZWF0KHtsaXQocyl9LCB7Y30pIHIpIHM7IikKcHJpbnQoIlNFTEVDVCAncmVw ZWF0IHRvbyBsYXJnZScsIG9jdGV0X2xlbmd0aChyZXBlYXQoJ2FiJywgNjAwMDAwMDAwKSk7IikK RU9GCn0KCnJ1bigpIHsgICMgYnVpbGQgZGJuYW1lIC0+IG91dHB1dAogIGxvY2FsIGI9JDEgZGI9 JDIKICAjIHRoZSBzY3JpcHQgaXMgVVRGLTg7IHBzcWwgd291bGQgb3RoZXJ3aXNlIHJlYWQgaXQg aW4gdGhlIGRhdGFiYXNlIGVuY29kaW5nCiAgUEdDTElFTlRFTkNPRElORz1VVEY4ICRXL2ktJGIv YmluL3BzcWwgLVggLXFBdCAtaCAvdG1wIC1wICR7UE9SVFskYl19IC1VIHBvc3RncmVzIC1kICRk YiAtZiAkQS9kaWZmY2hlY2suc3FsIDI+JjEgXAogICAgfCBzZWQgJ3MvXnBzcWw6W146XSo6WzAt OV0qOiAvLycKfQoKZ2VuID4gJEEvZGlmZmNoZWNrLnNxbApkZWNsYXJlIC1BIFBPUlQgRElSCnBv cnQ9NTU0OTAKZm9yIGIgaW4gbWFzdGVyICRORVc7IGRvCiAgRD0kKG1rdGVtcCAtZCAvdG1wL2Ns YXVkZS0xMDAwL2RjLlhYWFgpOyBESVJbJGJdPSREOyBQT1JUWyRiXT0kcG9ydAogICRXL2ktJGIv YmluL2luaXRkYiAtRCAkRCAtQSB0cnVzdCAtLW5vLXN5bmMgLVUgcG9zdGdyZXMgLUUgVVRGOCAt LWxvY2FsZT1DID4vZGV2L251bGwKICBwcmludGYgInBvcnQgPSAkcG9ydFxudW5peF9zb2NrZXRf ZGlyZWN0b3JpZXMgPSAnL3RtcCdcbiIgPj4gJEQvcG9zdGdyZXNxbC5jb25mCiAgJFcvaS0kYi9i aW4vcGdfY3RsIC1EICREIC1sICREL2xvZyAtdyBzdGFydCA+L2Rldi9udWxsCiAgJFcvaS0kYi9i aW4vcHNxbCAtWCAtcSAtaCAvdG1wIC1wICRwb3J0IC1VIHBvc3RncmVzIFwKICAgIC1jICJDUkVB VEUgREFUQUJBU0UgZXVjanAgRU5DT0RJTkcgJ0VVQ19KUCcgVEVNUExBVEUgdGVtcGxhdGUwIiBc CiAgICAtYyAiQ1JFQVRFIERBVEFCQVNFIHNxbGFzY2lpIEVOQ09ESU5HICdTUUxfQVNDSUknIFRF TVBMQVRFIHRlbXBsYXRlMCIKICBwb3J0PSQoKHBvcnQgKyAxKSkKZG9uZQoKdG90YWw9MDsgYmFk PTAKZm9yIGRiIGluIHBvc3RncmVzIGV1Y2pwIHNxbGFzY2lpOyBkbwogIHJ1biBtYXN0ZXIgJGRi ID4gJEEvZGlmZmNoZWNrLm1hc3Rlci4kZGIub3V0CiAgcnVuICRORVcgJGRiID4gJEEvZGlmZmNo ZWNrLiRORVcuJGRiLm91dAogIG49JCh3YyAtbCA8ICRBL2RpZmZjaGVjay5tYXN0ZXIuJGRiLm91 dCkKICBkPSQoZGlmZiAkQS9kaWZmY2hlY2subWFzdGVyLiRkYi5vdXQgJEEvZGlmZmNoZWNrLiRO RVcuJGRiLm91dCB8IGdyZXAgLWMgJ148JykKICBlY2hvICIkZGI6ICRuIGNhbGxzLCAkZCBkaWZm ZXIiCiAgZGlmZiAkQS9kaWZmY2hlY2subWFzdGVyLiRkYi5vdXQgJEEvZGlmZmNoZWNrLiRORVcu JGRiLm91dCB8IGhlYWQgLTIwCiAgdG90YWw9JCgodG90YWwgKyBuKSk7IGJhZD0kKChiYWQgKyBk KSkKZG9uZQplY2hvICJ0b3RhbDogJHRvdGFsIGNhbGxzLCAkYmFkIGRpZmZlciBiZXR3ZWVuIG1h c3RlciBhbmQgJE5FVyIKZWNobyAiZXJyb3JzIHNlZW4gKHNhbWUgb24gYm90aCB1bmxlc3MgbGlz dGVkIGFib3ZlKToiCmNhdCAkQS9kaWZmY2hlY2subWFzdGVyLioub3V0IHwgZ3JlcCAtRSAnRVJS T1InIHwgc2VkICdzL15bXkVdKkVSUk9SL0VSUk9SLycgfCBzb3J0IHwgdW5pcSAtYwoKZm9yIGIg aW4gbWFzdGVyICRORVc7IGRvICRXL2ktJGIvYmluL3BnX2N0bCAtRCAke0RJUlskYl19IC1tIGZh c3QgLXcgc3RvcCA+L2Rldi9udWxsOyBybSAtcmYgJHtESVJbJGJdfTsgZG9uZQoKPT09PT0gLi9k aWZmY2hlY2suc2ggdjUgPT09PT0KcG9zdGdyZXM6IDIwMjUgY2FsbHMsIDAgZGlmZmVyCmV1Y2pw OiAyMDI1IGNhbGxzLCAwIGRpZmZlcgpzcWxhc2NpaTogMjAyNSBjYWxscywgMCBkaWZmZXIKdG90 YWw6IDYwNzUgY2FsbHMsIDAgZGlmZmVyIGJldHdlZW4gbWFzdGVyIGFuZCB2NQplcnJvcnMgc2Vl biAoc2FtZSBvbiBib3RoIHVubGVzcyBsaXN0ZWQgYWJvdmUpOgogICAgIDE2IEVSUk9SOiAgcmVx dWVzdGVkIGxlbmd0aCB0b28gbGFyZ2UKCj09PT09IGNhbmNlbC5zaCA9PT09PQojIS9iaW4vYmFz aAojIEhvdyBsb25nIGEgbGFyZ2UgbHBhZCgpL3JwYWQoKS9yZXBlYXQoKSBydW5zIHBhc3Qgc3Rh dGVtZW50X3RpbWVvdXQuCiMgT24gbWFzdGVyLCBscGFkKCkgYW5kIHJwYWQoKSBoYXZlIG5vIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkgaW4gdGhlIHBhZGRpbmcKIyBsb29wIChyZXBlYXQoKSBoYXMg b25lIHBlciBjb3B5KTsgd2l0aCB2NSBhbGwgdGhyZWUgZ28gdGhyb3VnaAojIHJlcGVhdF9ieXRl cygpLCB3aGljaCBjaGVja3Mgb25jZSBwZXIgYmxvY2suCiMgICBjYW5jZWwuc2ggW2J1aWxkLi4u XSAgIChkZWZhdWx0OiBtYXN0ZXIgdjUpCnNldCAtdQpBPSQoY2QgIiQoZGlybmFtZSAiJDAiKSIg JiYgcHdkKQpXPSRIT01FL3BncGFkCmZvciBiIGluICR7KjotbWFzdGVyIHY1fTsgZG8KICBEPSQo bWt0ZW1wIC1kIC90bXAvY2xhdWRlLTEwMDAvY3guWFhYWCk7IFA9NTU0OTkKICAkVy9pLSRiL2Jp bi9pbml0ZGIgLUQgJEQgLUEgdHJ1c3QgLS1uby1zeW5jIC1VIHBvc3RncmVzID4vZGV2L251bGwK ICBwcmludGYgInBvcnQgPSAkUFxudW5peF9zb2NrZXRfZGlyZWN0b3JpZXMgPSAnL3RtcCdcbiIg Pj4gJEQvcG9zdGdyZXNxbC5jb25mCiAgdGFza3NldCAtYyAwICRXL2ktJGIvYmluL3BnX2N0bCAt RCAkRCAtbCAkRC9sb2cgLXcgc3RhcnQgPi9kZXYvbnVsbAogIGZvciBzcWwgaW4gInJwYWQoJ3gn LCAyNjgwMDAwMDAsICdhYicpIiAibHBhZCgneCcsIDI2ODAwMDAwMCwgJ2FiJykiICJycGFkKCd4 JywgMjY4MDAwMDAwLCAnICcpIiAicmVwZWF0KCdhYicsIDEzNDAwMDAwMCkiOyBkbwogICAgZm9y IGkgaW4gMSAyIDM7IGRvCiAgICAgIHQ9JCh0YXNrc2V0IC1jIDIgJFcvaS0kYi9iaW4vcHNxbCAt WCAtcUF0IC1oIC90bXAgLXAgJFAgLVUgcG9zdGdyZXMgXAogICAgICAgICAgICAtYyAiU0VUIHN0 YXRlbWVudF90aW1lb3V0ID0gJzIwbXMnIiAtYyAnXHRpbWluZyBvbicgXAogICAgICAgICAgICAt YyAiU0VMRUNUIG9jdGV0X2xlbmd0aCgkc3FsKSIgMj4mMSB8IHRyICdcbicgJyAnIFwKICAgICAg ICAgIHwgc2VkIC1FICdzLy4qKEVSUk9SOiArW2EteiBdKykuKlRpbWU6IChbMC05Ll0rKSBtcy4q L1wyIG1zIChcMSkvOyBzL14oWzAtOV0rKSBUaW1lOiAoWzAtOS5dKykgbXMuKi9cMiBtcyAoY29t cGxldGVkKS8nKQogICAgICBlY2hvICIkYiB8ICRzcWwgfCAkdCIKICAgIGRvbmUKICBkb25lCiAg JFcvaS0kYi9iaW4vcGdfY3RsIC1EICREIC1tIGZhc3QgLXcgc3RvcCA+L2Rldi9udWxsOyBybSAt cmYgJEQKZG9uZSB8IHRlZSAkQS9jYW5jZWwudHh0Cgo9PT09PSAuL2NhbmNlbC5zaCBtYXN0ZXIg djUgPT09PT0KbWFzdGVyIHwgcnBhZCgneCcsIDI2ODAwMDAwMCwgJ2FiJykgfCA5MjYuMDAxIG1z IChFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkK bWFzdGVyIHwgcnBhZCgneCcsIDI2ODAwMDAwMCwgJ2FiJykgfCA4OTQuNjQ0IG1zIChFUlJPUjog IGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkKbWFzdGVyIHwg cnBhZCgneCcsIDI2ODAwMDAwMCwgJ2FiJykgfCA5MDQuMTYzIG1zIChFUlJPUjogIGNhbmNlbGlu ZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkKbWFzdGVyIHwgbHBhZCgneCcs IDI2ODAwMDAwMCwgJ2FiJykgfCA4ODcuMzU1IG1zIChFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1l bnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkKbWFzdGVyIHwgbHBhZCgneCcsIDI2ODAwMDAw MCwgJ2FiJykgfCA4OTUuODMxIG1zIChFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRv IHN0YXRlbWVudCB0aW1lb3V0ICkKbWFzdGVyIHwgbHBhZCgneCcsIDI2ODAwMDAwMCwgJ2FiJykg fCA4OTQuMDI5IG1zIChFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVu dCB0aW1lb3V0ICkKbWFzdGVyIHwgcnBhZCgneCcsIDI2ODAwMDAwMCwgJyAnKSB8IDg5Ni4xODYg bXMgKEVSUk9SOiAgY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gc3RhdGVtZW50IHRpbWVvdXQg KQptYXN0ZXIgfCBycGFkKCd4JywgMjY4MDAwMDAwLCAnICcpIHwgOTA4Ljg2MiBtcyAoRVJST1I6 ICBjYW5jZWxpbmcgc3RhdGVtZW50IGR1ZSB0byBzdGF0ZW1lbnQgdGltZW91dCApCm1hc3RlciB8 IHJwYWQoJ3gnLCAyNjgwMDAwMDAsICcgJykgfCA5MDUuNjI2IG1zIChFUlJPUjogIGNhbmNlbGlu ZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkKbWFzdGVyIHwgcmVwZWF0KCdh YicsIDEzNDAwMDAwMCkgfCAyMC42NTEgbXMgKEVSUk9SOiAgY2FuY2VsaW5nIHN0YXRlbWVudCBk dWUgdG8gc3RhdGVtZW50IHRpbWVvdXQgKQptYXN0ZXIgfCByZXBlYXQoJ2FiJywgMTM0MDAwMDAw KSB8IDIwLjYzNiBtcyAoRVJST1I6ICBjYW5jZWxpbmcgc3RhdGVtZW50IGR1ZSB0byBzdGF0ZW1l bnQgdGltZW91dCApCm1hc3RlciB8IHJlcGVhdCgnYWInLCAxMzQwMDAwMDApIHwgMjEuMzE2IG1z IChFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkK djUgfCBycGFkKCd4JywgMjY4MDAwMDAwLCAnYWInKSB8IDI0Ljk4MCBtcyAoRVJST1I6ICBjYW5j ZWxpbmcgc3RhdGVtZW50IGR1ZSB0byBzdGF0ZW1lbnQgdGltZW91dCApCnY1IHwgcnBhZCgneCcs IDI2ODAwMDAwMCwgJ2FiJykgfCAyMy44OTggbXMgKEVSUk9SOiAgY2FuY2VsaW5nIHN0YXRlbWVu dCBkdWUgdG8gc3RhdGVtZW50IHRpbWVvdXQgKQp2NSB8IHJwYWQoJ3gnLCAyNjgwMDAwMDAsICdh YicpIHwgMjMuNTc2IG1zIChFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRl bWVudCB0aW1lb3V0ICkKdjUgfCBscGFkKCd4JywgMjY4MDAwMDAwLCAnYWInKSB8IDIzLjU2NyBt cyAoRVJST1I6ICBjYW5jZWxpbmcgc3RhdGVtZW50IGR1ZSB0byBzdGF0ZW1lbnQgdGltZW91dCAp CnY1IHwgbHBhZCgneCcsIDI2ODAwMDAwMCwgJ2FiJykgfCAyMy42MzYgbXMgKEVSUk9SOiAgY2Fu Y2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gc3RhdGVtZW50IHRpbWVvdXQgKQp2NSB8IGxwYWQoJ3gn LCAyNjgwMDAwMDAsICdhYicpIHwgMjMuNjA0IG1zIChFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1l bnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkKdjUgfCBycGFkKCd4JywgMjY4MDAwMDAwLCAn ICcpIHwgMjMuMjIzIG1zIChFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRl bWVudCB0aW1lb3V0ICkKdjUgfCBycGFkKCd4JywgMjY4MDAwMDAwLCAnICcpIHwgMjMuMzcwIG1z IChFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkK djUgfCBycGFkKCd4JywgMjY4MDAwMDAwLCAnICcpIHwgMjMuNTE3IG1zIChFUlJPUjogIGNhbmNl bGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkKdjUgfCByZXBlYXQoJ2Fi JywgMTM0MDAwMDAwKSB8IDIzLjIzMiBtcyAoRVJST1I6ICBjYW5jZWxpbmcgc3RhdGVtZW50IGR1 ZSB0byBzdGF0ZW1lbnQgdGltZW91dCApCnY1IHwgcmVwZWF0KCdhYicsIDEzNDAwMDAwMCkgfCAy NC40OTcgbXMgKEVSUk9SOiAgY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gc3RhdGVtZW50IHRp bWVvdXQgKQp2NSB8IHJlcGVhdCgnYWInLCAxMzQwMDAwMDApIHwgMjQuNDg2IG1zIChFUlJPUjog IGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0ICkK --===============6018420020386340283==--