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.96) (envelope-from ) id 1vUjaa-006gbJ-35 for pgsql-hackers@arkaria.postgresql.org; Sun, 14 Dec 2025 10:44:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vUjaZ-00CYHj-16 for pgsql-hackers@arkaria.postgresql.org; Sun, 14 Dec 2025 10:44:32 +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.96) (envelope-from ) id 1vUjaY-00CYHZ-0K for pgsql-hackers@lists.postgresql.org; Sun, 14 Dec 2025 10:44:31 +0000 Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vUjaW-000bkR-1l for pgsql-hackers@lists.postgresql.org; Sun, 14 Dec 2025 10:44:30 +0000 Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-3f0ec55ce57so1459045fac.2 for ; Sun, 14 Dec 2025 02:44:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765709067; x=1766313867; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=NTTtUAw1hc7arhEZsC2rLX3k6NJWoIAAT4h0BreF+B4=; b=asfLDFZE4o2r3jD5NV+bI7a4JPaY2c9YiaDSQWsyWSCxqcl58qRza7N2ue6ij/HPCn AZbBq008h5cVq8y5Lq8AOk5ogQMDM4SYN0W2OneKD08jUiLlfQLAZ2y7pI/J2WZKskT7 lUSal5Am/h+0KjTc4DG0ez3HxHKAWWEIrpRP5ReVLhP49De89ynHvZ1djYQsr5ir+M4n poJmeiM24aKCHc1qhPbNpe51pe1mHGsa6JA3JFsfd0mnlZdw81ufbbgbI6wcL4XtRN5i 21kvom654yoyhyTR9a6OnZMZujhVU7UkE8N3mAIOg2HL5yfVgbShziKKMIzPkwyQGBi3 2Tzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765709067; x=1766313867; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=NTTtUAw1hc7arhEZsC2rLX3k6NJWoIAAT4h0BreF+B4=; b=DwbCcubTmsCWDsHNSMapwaHc/tHYO0jMqWt6MT9t/h2QT1MYeepfdRWacmegrq6Wu+ hUYSJxJ2hcsd73rWhNyX3ekp5+Luy+1iaQ3Dd5018q476ywy1pp+d77QqLC1YUgv4ZsC 8WwPidL7j7eCYiQS7csJUbvvaoSYMy5zu/BuWc8CP6JSuCfTaZbkxex+vce0yzm498q2 GXaj2uA6sSsdEOL2lnoi4MP7k7ikNhPlPpauO+mCNNTD/JKrkfYMWvpAnziraKSCg+mo B4WUXAoOqjy37qAxscyT6f3b+K5+qwanhYwvDYZV7iVvpWoO2XjDiZrCf3lJVMJ0sbvP 71JA== X-Forwarded-Encrypted: i=1; AJvYcCU3TuHcNZU666pjmrZiWUGXZBXA1lc8WibNijWnVux0f6lIC7LnU0jPg2V6NvMImNKL9o6ZlNICx+tPo/nG@lists.postgresql.org X-Gm-Message-State: AOJu0YzYV1mqfZj180U4hUS3PBYmDOzfgIAkKgk91nhBLRs5qxVRa+vg WnQsJM9TS8whyo/HenkQoEVpXgjsEir+MTBlwh2Qzfx/kRd7Y3d+NoeJv6EBZ92i8LUcJnG4PqF ThLN5dAbfo+kiZoLV4BdiZkBl2X4ksDY= X-Gm-Gg: AY/fxX4FEASfdo6z6WYX4DJXDOdSWIX6zofB0TMSVdf1A7LRJNOfQJK1BBPiSeZd+6Z iAa+SnMR+lNnOcplpyvATuZKrGWSmtuVAKYlawX9auOX0SHJq7xZoDwCEx1qMktJJIvMQ4Dpneh 1ftpbfUpNKmfb9PYi/oX+3SSCe1snKQuMWCJHSHDG7z8ZaQuJq5PBWEYQ0j5nWzvtAXY8kxud0h 1ZWygnQLsrt37seKoW9C3SKp6DKcc2rbTlSyCIrF290utqNz/50W/Q7xJ5c8WivFzagTXxp++5y tRvINtGjd4XEWoA5HbCX+u52ug8TNPHdU3I624MbHK765qjAoqV84M0LW7Oq66zTjKzJ0g== X-Google-Smtp-Source: AGHT+IHTnRiY1jIVNe10DLaX2qzpfca1bX1fULad1p8RJfOn3XcK2iw1/NdOqTGIuJ4Zd2TvJhscbteIUqNxVdfJHCw= X-Received: by 2002:a05:6820:200e:b0:659:9a49:8fb1 with SMTP id 006d021491bc7-65b452576f6mr3744629eaf.42.1765709067325; Sun, 14 Dec 2025 02:44:27 -0800 (PST) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> <57a94d8a-d7b6-4c5e-9001-be1cd403b172@postgrespro.ru> <54414932-9E82-47AA-902B-2DED18F07F64@gmail.com> <3280c458-a886-4c58-8e2b-4d220b73161d@postgrespro.ru> <09414bf8-9326-431c-9422-b13bddf5f554@postgrespro.ru> <29ff27f5-d359-4479-b11c-ce28e525d806@postgrespro.ru> In-Reply-To: From: Alexander Korotkov Date: Sun, 14 Dec 2025 12:44:13 +0200 X-Gm-Features: AQt7F2qW_pgh8h34UmhS7xBFufKKBCcqlDpTnyxBkYt9IDWvi-E6sLuQaW_agno Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: =?UTF-8?Q?St=C3=A9phane_Tachoires?= Cc: Dmitry Koval , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000bc62bc0645e72df5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bc62bc0645e72df5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 8:56=E2=80=AFPM Alexander Korotkov wrote: > On Wed, Dec 10, 2025 at 10:04=E2=80=AFPM St=C3=A9phane Tachoires > wrote: > > Patches don't apply anymore. > > Could you rebase it please ? > > > > Thank you so much to all of you for your persistence. > > Thank you for pointing this. > Rebased. I found that I didn't rebase properly regression tests in src/test/modules/test_ddl_deparse. The corrected version is attached. ------ Regards, Alexander Korotkov Supabase --000000000000bc62bc0645e72df5 Content-Type: application/octet-stream; name="v68-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename="v68-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj5lk1z70 RnJvbSBlYTE1NjA1MzhmNGQ1ODg3OGQxZDdhZGE2ZjhmZjMxMTRhNmVkNzk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCAxNCBEZWMgMjAyNSAxMjowMToyMCArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjY4IDEvMl0gSW1wbGVtZW50IEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05T IC4uLgogY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgbWVyZ2VzIHNldmVyYWwgcGFydGl0 aW9ucyBpbnRvIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUKdGFyZ2V0IHRhYmxlLiAgVGhlIHRh cmdldCBwYXJ0aXRpb24gaXMgY3JlYXRlZCB1c2luZyB0aGUgbmV3CmNyZWF0ZVBhcnRpdGlvblRh YmxlKCkgZnVuY3Rpb24gd2l0aCB0aGUgcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUgdGVtcGxhdGUu CgpUaGlzIGNvbW1pdCBjb21wcmlzZXMgYSBxdWl0ZSBuYWl2ZSBpbXBsZW1lbnRhdGlvbiB3aGlj aCB3b3JrcyBpbiBhIHNpbmdsZQpwcm9jZXNzIGFuZCBob2xkcyB0aGUgQUNDRVNTIEVYQ0xVU0lW RSBMT0NLIG9uIHRoZSBwYXJlbnQgdGFibGUgZHVyaW5nIGFsbAp0aGUgb3BlcmF0aW9ucywgaW5j bHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3aHkgdGhpcyBuZXcgRERMCmNvbW1h bmQgY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdlIHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRl ciBhIGhpZ2ggbG9hZC4KSG93ZXZlciwgdGhpcyBpbXBsZW1lbnRhdGlvbiBjb21lcyBpbiBoYW5k eSBpbiBjZXJ0YWluIGNhc2VzLCBldmVuIGFzIGl0IGlzLgpBbHNvLCBpdCBjb3VsZCBzZXJ2ZSBh cyBhIGZvdW5kYXRpb24gZm9yIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgd2l0aCBsZXNzCmxvY2tp bmcgYW5kIHBvc3NpYmx5IHBhcmFsbGVsaXNtLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9jNzNhMTc0Ni0wY2QwLTZiZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5y dQpBdXRob3I6IERtaXRyeSBLb3ZhbCA8ZC5rb3ZhbEBwb3N0Z3Jlc3Byby5ydT4KQ28tYXV0aG9y ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+CkNvLWF1dGhv cmVkLWJ5OiBUZW5kZXIgV2FuZyA8dG5kcndhbmdAZ21haWwuY29tPgpDby1hdXRob3JlZC1ieTog UmljaGFyZCBHdW8gPGd1b2ZlbmdsaW51eEBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBEYWdm aW5uIElsbWFyaSBNYW5uc2FrZXIgPGlsbWFyaUBpbG1hcmkub3JnPgpDby1hdXRob3JlZC1ieTog RnVqaWkgTWFzYW8gPG1hc2FvLmZ1amlpQGdtYWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IEppYW4g SGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCA8Ym9la2V3dXJtK3Bvc3RncmVzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IExh dXJlbnogQWxiZSA8bGF1cmVuei5hbGJlQGN5YmVydGVjLmF0PgpSZXZpZXdlZC1ieTogWmhpaG9u ZyBZdSA8enl1QHl1Z2FieXRlLmNvbT4KUmV2aWV3ZWQtYnk6IEp1c3RpbiBQcnl6YnkgPHByeXpi eUB0ZWxzYXNvZnQuY29tPgpSZXZpZXdlZC1ieTogQWx2YXJvIEhlcnJlcmEgPGFsdmhlcnJlQGFs dmgubm8taXAub3JnPgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJoYWFzQHBvc3RncmVzcWwu b3JnPgpSZXZpZXdlZC1ieTogU3RlcGhhbmUgVGFjaG9pcmVzIDxzdGVwaGFuZS50YWNob2lyZXNA Z21haWwuY29tPgpSZXZpZXdlZC1ieTogSmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNv bT4KUmV2aWV3ZWQtYnk6IFBhdmVsIEJvcmlzb3YgPHBhc2hraW4uZWxmZUBnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4gPGV4Y2x1c2lvbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5 OiBLeW90YXJvIEhvcmlndWNoaSA8aG9yaWt5b3RhLm50dEBnbWFpbC5jb20+ClJldmlld2VkLWJ5 OiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGd1c3RhZnNzb25AcG9zdGdyZXNxbC5vcmc+ClJldmlld2Vk LWJ5OiBUb20gTGFuZSA8dGdsQHNzcy5wZ2gucGEudXM+ClJldmlld2VkLWJ5OiBOb2FoIE1pc2No IDxub2FoQGxlYWRib2F0LmNvbT4KLS0tCiBkb2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dt bCAgICAgICAgICAgICB8ICAxMjcgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5j ICAgICAgICAgICAgICB8ICAgNTQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWlu dC5jICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j ICAgICAgICAgICAgICB8ICA4OTQgKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAxNTIgKystCiBzcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5jICAgICAgICAgfCAgMTk2ICsrKwogc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgICAxMCArCiBzcmMvaW5jbHVkZS9jYXRhbG9n L2RlcGVuZGVuY3kuaCAgICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgIDggKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9r d2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaCAgICAgICAgIHwgICAgNiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVk L3BhcnRpdGlvbi1tZXJnZS5vdXQgICAgfCAgMjQzICsrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9p c29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjIHwgICA2MiArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgfCAgICA1ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Nx bC9hbHRlcl90YWJsZS5zcWwgICAgICB8ICAgIDMgKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9tZXJnZS5vdXQgfCAxMDk3ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsICAgICAgfCAgNzkxICsrKysrKysrKysrKwog MjIgZmlsZXMgY2hhbmdlZCwgMzY2OCBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1l cmdlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0 aXRpb24tbWVyZ2Uuc3BlYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggMDlhZDg0MDBmZDAuLjdiOTA3 ODlmODdjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2RkbC5zZ21sCkBAIC00NzQzLDYgKzQ3NDMsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1l bnRfeTIwMDZtMDIgQUREIFVOSVFVRSAoY2l0eV9pZCwgbG9nZGF0ZSk7CiBBTFRFUiBJTkRFWCBt ZWFzdXJlbWVudF9jaXR5X2lkX2xvZ2RhdGVfa2V5CiAgICAgQVRUQUNIIFBBUlRJVElPTiBtZWFz dXJlbWVudF95MjAwNm0wMl9jaXR5X2lkX2xvZ2RhdGVfa2V5OwogLi4uCis8L3Byb2dyYW1saXN0 aW5nPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGVyZSBpcyBhbHNvIGFuIG9w dGlvbiBmb3IgbWVyZ2luZyBtdWx0aXBsZSB0YWJsZSBwYXJ0aXRpb25zIGludG8KKyAgICAgYSBz aW5nbGUgcGFydGl0aW9uIHVzaW5nIHRoZQorICAgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJ0 YWJsZS1tZXJnZS1wYXJ0aXRpb25zIj48Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFS VElUSU9OUzwvY29tbWFuZD48L2xpbms+LgorICAgICBUaGlzIGZlYXR1cmUgc2ltcGxpZmllcyB0 aGUgbWFuYWdlbWVudCBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgYnkgYWxsb3dpbmcKKyAgICAgdXNl cnMgdG8gY29tYmluZSBwYXJ0aXRpb25zIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQgYXMKKyAg ICAgc2VwYXJhdGUgZW50aXRpZXMuICBJdCdzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBv cGVyYXRpb24gaXMgbm90CisgICAgIHN1cHBvcnRlZCBmb3IgaGFzaC1wYXJ0aXRpb25lZCB0YWJs ZXMgYW5kIGFjcXVpcmVzIGFuCisgICAgIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVy YWw+IGxvY2ssIHdoaWNoIGNvdWxkIGltcGFjdCBoaWdoLWxvYWQKKyAgICAgc3lzdGVtcyBkdWUg dG8gdGhlIGxvY2sncyByZXN0cmljdGl2ZSBuYXR1cmUuICBGb3IgZXhhbXBsZSwgd2UgY2FuCisg ICAgIG1lcmdlIHRocmVlIG1vbnRobHkgcGFydGl0aW9ucyBpbnRvIG9uZSBxdWFydGVyIHBhcnRp dGlvbjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50CisgICAgTUVS R0UgUEFSVElUSU9OUyAobWVhc3VyZW1lbnRfeTIwMDZtMDEsCisgICAgICAgICAgICAgICAgICAg ICAgbWVhc3VyZW1lbnRfeTIwMDZtMDIsCisgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1l bnRfeTIwMDZtMDMpIElOVE8gbWVhc3VyZW1lbnRfeTIwMDZxMTsKIDwvcHJvZ3JhbWxpc3Rpbmc+ CiAgICAgPC9wYXJhPgogICAgPC9zZWN0Mz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRl eCA5ZDIzYWQ1YTBmYi4uNWNkYTFjOTRhZGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwK QEAgLTM3LDYgKzM3LDggQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgQVRUQUNIIFBBUlRJVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2Vh YmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0KIEFMVEVSIFRBQkxFIFsgSUYg RVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PgogICAgIERFVEFDSCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBDT05DVVJSRU5UTFkgfCBGSU5BTElaRSBdCitB TFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4KKyAgICBNRVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5d KSBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVw bGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmFjdGlvbjwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMTE1NywxOCAr MTE1OSwxMTcgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAg PC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLW1l cmdlLXBhcnRpdGlvbnMiPgorICAgIDx0ZXJtPjxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlMgKDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxl PiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFj ZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgorCisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBtZXJnZXMgc2V2ZXJhbCBwYXJ0aXRpb25z IG9mIHRoZSB0YXJnZXQgdGFibGUgaW50byBhIG5ldyBwYXJ0aXRpb24uCisgICAgICBIYXNoLXBh cnRpdGlvbmVkIHRhcmdldCB0YWJsZSBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgT25seSBzaW1w bGUsIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb25zIGNhbiBiZSBtZXJnZWQuCisgICAgICBUaGUg bmV3IHBhcnRpdGlvbiAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lPC9yZXBsYWNlYWJsZT4pCisgICAgICBjYW4gaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIG9uZSBv ZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMKKyAgICAgICg8bGl0ZXJhbD48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4g WywgLi4uXTwvbGl0ZXJhbD4pLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBJ ZiB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIGlzIG5vdCBpbiB0aGUK KyAgICAgIGxpc3Qgb2YgbWVyZ2VkIHBhcnRpdGlvbnM6CisgICAgICA8aXRlbWl6ZWRsaXN0Pgor ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgcmFuZ2UtcGFy dGl0aW9uZWQgdGFibGVzLCB0aGUgcmFuZ2VzIG9mIG1lcmdlZCBwYXJ0aXRpb25zCisgICAgICAg ICBtdXN0IGJlIGFkamFjZW50IGluIG9yZGVyIHRvIGJlIG1lcmdlZC4KKyAgICAgICAgIFRoZSBw YXJ0aXRpb24gYm91bmRzIG9mIG1lcmdlZCBwYXJ0aXRpb25zIGFyZSBjb21iaW5lZCB0byBmb3Jt IHRoZSBuZXcgcGFydGl0aW9uIGJvdW5kIGZvcgorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAgIDwvcGFy YT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+ CisgICAgICAgICBGb3IgbGlzdC1wYXJ0aXRpb25lZCB0YWJsZXMsIHRoZSBwYXJ0aXRpb24gYm91 bmRzIG9mCisgICAgICAgICBtZXJnZWQgcGFydGl0aW9ucyBhcmUgY29tYmluZWQgdG8gZm9ybSB0 aGUgbmV3IHBhcnRpdGlvbiBib3VuZCBmb3IKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICA8L3BhcmE+ CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgSWYgdGhl IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBpcyBpbiB0aGUgbGlzdCBvZiBt ZXJnZWQgcGFydGl0aW9uczoKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgPGxpc3RpdGVt PgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgIHdp bGwgYmUgdGhlIG5ldyA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24gb2YgdGhl IHRhcmdldCB0YWJsZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBwYXJ0aXRpb24gYm91 bmQgc3BlY2lmaWNhdGlvbnMgZm9yIG1lcmdlZCBwYXJ0aXRpb25zIGNhbiBiZSBhcmJpdHJhcnku CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxp c3Q+CisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBBbGwgbWVyZ2VkIHBhcnRpdGlv bnMgbXVzdCBoYXZlIHRoZSBzYW1lIG93bmVyLgorICAgICAgVGhlIG93bmVyIG9mIG1lcmdlZCBw YXJ0aXRpb25zIHdpbGwgYmUgdGhlIG93bmVyIG9mIHRoZSBuZXcgcGFydGl0aW9uLgorICAgICAg SXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255bT5BQ0w8L2Fj cm9ueW0+IG9uCisgICAgICB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgPC9wYXJhPgorCisgICAg IDxwYXJhPgorICAgICAgIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTjwvY29t bWFuZD4gdXNlcyB0aGUgcGFydGl0aW9uZWQKKyAgICAgICB0YWJsZSBpdHNlbGYgYXMgdGhlIHRl bXBsYXRlIHRvIGNvbnN0cnVjdCB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgICBUaGUgbmV3IHBh cnRpdGlvbiB3aWxsIGluaGVyaXQgdGhlIHNhbWUgdGFibGUgYWNjZXNzIG1ldGhvZCwgcGVyc2lz dGVuY2UKKyAgICAgICB0eXBlLCBhbmQgdGFibGVzcGFjZSBhcyB0aGUgcGFydGl0aW9uZWQgdGFi bGUuCisKKyAgICAgICBDb25zdHJhaW50cywgY29sdW1uIGRlZmF1bHRzLCBjb2x1bW4gZ2VuZXJh dGlvbiBleHByZXNzaW9ucywgaWRlbnRpdHkKKyAgICAgICBjb2x1bW5zLCBpbmRleGVzLCBhbmQg dHJpZ2dlcnMgYXJlIGNvcGllZCBmcm9tIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSB0bworICAgICAg IHRoZSBuZXcgcGFydGl0aW9uLiAgQnV0IGV4dGVuZGVkIHN0YXRpc3RpY3MsIHNlY3VyaXR5IHBv bGljaWVzLCBldGMsCisgICAgICAgd29uJ3QgYmUgY29waWVkIGZyb20gdGhlIHBhcnRpdGlvbmVk IHRhYmxlLgorICAgICAgIEluZGV4ZXMgYW5kIGlkZW50aXR5IGNvbHVtbnMgY29waWVkIGZyb20g dGhlIHBhcnRpdGlvbmVkIHRhYmxlIHdpbGwgYmUKKyAgICAgICBjcmVhdGVkIGFmdGVyd2FyZCwg b25jZSB0aGUgZGF0YSBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9uLgorICAg ICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBXaGVuIHBhcnRpdGlvbnMgYXJlIG1lcmdl ZCwgYW55IG9iamVjdHMgZGVwZW5kaW5nIG9uIHRoaXMgcGFydGl0aW9uLAorICAgICAgc3VjaCBh cyBjb25zdHJhaW50cywgdHJpZ2dlcnMsIGV4dGVuZGVkIHN0YXRpc3RpY3MsIGV0Yywgd2lsbCBi ZQorICAgICAgZHJvcHBlZC4KKyAgICAgIEV2ZW50dWFsbHksIHdlIHdpbGwgZHJvcCBhbGwgdGhl IG1lcmdlZCBwYXJ0aXRpb25zCisgICAgICAodXNpbmcgPGxpdGVyYWw+UkVTVFJJQ1Q8L2xpdGVy YWw+IG1vZGUpIHRvbzsgIHRoZXJlZm9yZSwgaWYgYW55IG9iamVjdHMKKyAgICAgIGFyZSBzdGls bCBkZXBlbmRlbnQgb24gdGhlbSwKKyAgICAgIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBB UlRJVElPTjwvY29tbWFuZD4gd291bGQgZmFpbC4KKyAgICAgIChzZWUgPHhyZWYgbGlua2VuZD0i ZGRsLWRlcGVuZCIvPikuCisgICAgIDwvcGFyYT4KKworICAgICA8bm90ZT4KKyAgICAgIDxwYXJh PgorICAgICAgIE1lcmdpbmcgcGFydGl0aW9ucyBhY3F1aXJlcyBhbiA8bGl0ZXJhbD5BQ0NFU1Mg RVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIG9uCisgICAgICAgdGhlIHBhcmVudCB0YWJsZSwgaW4g YWRkaXRpb24gdG8gdGhlIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+CisgICAg ICAgbG9ja3Mgb24gdGhlIHRhYmxlcyBiZWluZyBtZXJnZWQgYW5kIG9uIHRoZSBkZWZhdWx0IHBh cnRpdGlvbiAoaWYgYW55KS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgICA8bm90 ZT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJ VElPTlM8L2NvbW1hbmQ+IGNyZWF0ZXMgYSBuZXcgcGFydGl0aW9uIGFuZAorICAgICAgIG1vdmVz IGRhdGEgZnJvbSBhbGwgbWVyZ2luZyBwYXJ0aXRpb25zIGludG8gaXQsIHdoaWNoIGNhbiB0YWtl IGEgbG9uZyB0aW1lLgorICAgICAgIFNvIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhl IGNvbW1hbmQgdG8gbWVyZ2UgdmVyeSBiaWcgcGFydGl0aW9ucworICAgICAgIHdpdGggc21hbGwg b25lcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9wYXJhPgogCiAgIDxwYXJh PgogICAgQWxsIHRoZSBmb3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29tbWFuZD4gdGhh dCBhY3Qgb24gYSBzaW5nbGUgdGFibGUsCiAgICBleGNlcHQgPGxpdGVyYWw+UkVOQU1FPC9saXRl cmFsPiwgPGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4sCi0gICA8bGl0ZXJhbD5BVFRBQ0gg UEFSVElUSU9OPC9saXRlcmFsPiwgYW5kCi0gICA8bGl0ZXJhbD5ERVRBQ0ggUEFSVElUSU9OPC9s aXRlcmFsPiBjYW4gYmUgY29tYmluZWQgaW50bworICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJVElP TjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LAorICAgYW5k IDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+LCBjYW4gYmUgY29tYmluZWQgaW50 bwogICAgYSBsaXN0IG9mIG11bHRpcGxlIGFsdGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG9nZXRo ZXIuICBGb3IgZXhhbXBsZSwgaXQKICAgIGlzIHBvc3NpYmxlIHRvIGFkZCBzZXZlcmFsIGNvbHVt bnMgYW5kL29yIGFsdGVyIHRoZSB0eXBlIG9mIHNldmVyYWwKICAgIGNvbHVtbnMgaW4gYSBzaW5n bGUgY29tbWFuZC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aXRoIGxhcmdlCi0gICB0 YWJsZXMsIHNpbmNlIG9ubHkgb25lIHBhc3Mgb3ZlciB0aGUgdGFibGUgbmVlZCBiZSBtYWRlLgor ICAgdGFibGVzLCBzaW5jZSBvbmx5IG9uZSBwYXNzIG92ZXIgdGhlIHRhYmxlIG5lZWRzIHRvIGJl IG1hZGUuCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KQEAgLTE0MDcsNyArMTUwOCwxOCBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgICA8bGlzdGl0 ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRh Y2ggYXMgYSBuZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUuCisgICAg ICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9y IHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCisgICAgICAgIG9yIHRoZSBuYW1lIG9mIHRoZSBu ZXcgbWVyZ2VkIHBhcnRpdGlvbi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgor ICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0 YWJsZS1wYXJtcy1wYXJ0aXRpb24tbmFtZTEiPgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAg ICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwv cmVwbGFjZWFibGU+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAg ICAgICBUaGUgbmFtZXMgb2YgdGhlIHRhYmxlcyBiZWluZyBtZXJnZWQgaW50byB0aGUgbmV3IHBh cnRpdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KQEAgLTE4NDAsNiArMTk1MiwxMyBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAog ICAgIERFVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMTVtMTI7CiA8L3Byb2dyYW1saXN0 aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRvIG1lcmdlIHNldmVyYWwgcGFydGl0aW9ucyBp bnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4K K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2Fs ZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkKKyAgICBJTlRPIHNhbGVzX2FsbDsKKzwvcHJvZ3JhbWxp c3Rpbmc+PC9wYXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9k ZXBlbmRlbmN5LmMKaW5kZXggODM4ZWQyNmQ2YjkuLjc0ODliYmQ1ZmIzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2RlcGVuZGVuY3kuYwpAQCAtMzIxLDEzICszMjEsNjMgQEAgcGVyZm9ybURlbGV0aW9uKGNvbnN0 IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIH0KIAogLyoKLSAqIHBlcmZvcm1NdWx0aXBsZURlbGV0 aW9uczogU2ltaWxhciB0byBwZXJmb3JtRGVsZXRpb24sIGJ1dCBhY3Qgb24gbXVsdGlwbGUKKyAq IHBlcmZvcm1EZWxldGlvbkNoZWNrOiBDaGVjayB3aGV0aGVyIGEgc3BlY2lmaWMgb2JqZWN0IGNh biBiZSBzYWZlbHkgZGVsZXRlZC4KKyAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcGVyZm9ybSBh bnkgZGVsZXRpb247IGluc3RlYWQsIGl0IHJhaXNlcyBhbiBlcnJvcgorICogaWYgdGhlIG9iamVj dCBjYW5ub3QgYmUgZGVsZXRlZCBkdWUgdG8gZXhpc3RpbmcgZGVwZW5kZW5jaWVzLgorICoKKyAq IEl0IGNhbiBiZSB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0byBkZWxldGUgc29tZSBvYmplY3RzIGxh dGVyLiAgU2VlIGNvbW1lbnRzCisgKiBpbiBwZXJmb3JtRGVsZXRpb24gdG9vLgorICogVGhlIGJl aGF2aW9yIG11c3QgYmUgc3BlY2lmaWVkIGFzIERST1BfUkVTVFJJQ1QuCisgKi8KK3ZvaWQKK3Bl cmZvcm1EZWxldGlvbkNoZWNrKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKKwkJCQkJIERy b3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdzKQoreworCVJlbGF0aW9uCWRlcFJlbDsKKwlP YmplY3RBZGRyZXNzZXMgKnRhcmdldE9iamVjdHM7CisKKwlBc3NlcnQoYmVoYXZpb3IgPT0gRFJP UF9SRVNUUklDVCk7CisKKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIFJv d0V4Y2x1c2l2ZUxvY2spOworCisJQWNxdWlyZURlbGV0aW9uTG9jayhvYmplY3QsIDApOworCisJ LyoKKwkgKiBDb25zdHJ1Y3QgYSBsaXN0IG9mIG9iamVjdHMgd2Ugd2FudCB0byBkZWxldGUgbGF0 ZXIgKGllLCB0aGUgZ2l2ZW4KKwkgKiBvYmplY3QgcGx1cyBldmVyeXRoaW5nIGRpcmVjdGx5IG9y IGluZGlyZWN0bHkgZGVwZW5kZW50IG9uIGl0KS4KKwkgKi8KKwl0YXJnZXRPYmplY3RzID0gbmV3 X29iamVjdF9hZGRyZXNzZXMoKTsKKworCWZpbmREZXBlbmRlbnRPYmplY3RzKG9iamVjdCwKKwkJ CQkJCSBERVBGTEFHX09SSUdJTkFMLAorCQkJCQkJIGZsYWdzLAorCQkJCQkJIE5VTEwsCS8qIGVt cHR5IHN0YWNrICovCisJCQkJCQkgdGFyZ2V0T2JqZWN0cywKKwkJCQkJCSBOVUxMLAkvKiBubyBw ZW5kaW5nT2JqZWN0cyAqLworCQkJCQkJICZkZXBSZWwpOworCisJLyoKKwkgKiBDaGVjayBpZiBk ZWxldGlvbiBpcyBhbGxvd2VkLgorCSAqLworCXJlcG9ydERlcGVuZGVudE9iamVjdHModGFyZ2V0 T2JqZWN0cywKKwkJCQkJCSAgIGJlaGF2aW9yLAorCQkJCQkJICAgZmxhZ3MsCisJCQkJCQkgICBv YmplY3QpOworCisJLyogQW5kIGNsZWFuIHVwICovCisJZnJlZV9vYmplY3RfYWRkcmVzc2VzKHRh cmdldE9iamVjdHMpOworCisJdGFibGVfY2xvc2UoZGVwUmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsK K30KKworLyoKKyAqIHBlcmZvcm1NdWx0aXBsZURlbGV0aW9uczogU2ltaWxhciB0byBwZXJmb3Jt RGVsZXRpb24sIGJ1dCBhY3RzIG9uIG11bHRpcGxlCiAgKiBvYmplY3RzIGF0IG9uY2UuCiAgKgog ICogVGhlIG1haW4gZGlmZmVyZW5jZSBmcm9tIGlzc3VpbmcgbXVsdGlwbGUgcGVyZm9ybURlbGV0 aW9uIGNhbGxzIGlzIHRoYXQgdGhlCiAgKiBsaXN0IG9mIG9iamVjdHMgdGhhdCB3b3VsZCBiZSBp bXBsaWNpdGx5IGRyb3BwZWQsIGZvciBlYWNoIG9iamVjdCB0byBiZQogICogZHJvcHBlZCwgaXMg dGhlIHVuaW9uIG9mIHRoZSBpbXBsaWNpdC1vYmplY3QgbGlzdCBmb3IgYWxsIG9iamVjdHMuICBU aGlzCi0gKiBtYWtlcyBlYWNoIGNoZWNrIGJlIG1vcmUgcmVsYXhlZC4KKyAqIG1ha2VzIGVhY2gg Y2hlY2sgbW9yZSByZWxheGVkLgogICovCiB2b2lkCiBwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMo Y29uc3QgT2JqZWN0QWRkcmVzc2VzICpvYmplY3RzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuYwppbmRleCA0M2I0NTA3ZDg2ZS4uNjcyYjE4ODkzMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jCkBAIC04NzUsNyArODc1LDcgQEAgUmVsYXRpb25HZXROb3ROdWxsQ29uc3Ry YWludHMoT2lkIHJlbGlkLCBib29sIGNvb2tlZCwgYm9vbCBpbmNsdWRlX25vaW5oKQogCQkJCQkJ CQkJCQkJCQkJIGZhbHNlKSkpOwogCQkJY29uc3RyLT5pc19lbmZvcmNlZCA9IHRydWU7CiAJCQlj b25zdHItPnNraXBfdmFsaWRhdGlvbiA9ICFjb25Gb3JtLT5jb252YWxpZGF0ZWQ7Ci0JCQljb25z dHItPmluaXRpYWxseV92YWxpZCA9IHRydWU7CisJCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9 IGNvbkZvcm0tPmNvbnZhbGlkYXRlZDsKIAkJCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9IGNvbkZv cm0tPmNvbm5vaW5oZXJpdDsKIAkJCW5vdG51bGxzID0gbGFwcGVuZChub3RudWxscywgY29uc3Ry KTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAxYzllZjUzYmUyMC4uZjcwMzI5 M2RiYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC03NDAsNiArNzQwLDggQEAgc3Rh dGljIHZvaWQgQVREZXRhY2hDaGVja05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9u KTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29u c3QgY2hhciAqY29tcHJlc3Npb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShP aWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKIAorc3RhdGljIHZvaWQgQVRF eGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwg UmVsYXRpb24gcmVsLAorCQkJCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRp bGl0eUNvbnRleHQgKmNvbnRleHQpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRpb24K QEAgLTQ4MzYsNiArNDgzOCwxMCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMp CiAJCQkJY21kX2xvY2ttb2RlID0gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFr OwogCisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQljbWRfbG9ja21vZGUgPSBBY2Nl c3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgkJCS8qIG9vcHMgKi8K IAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJ CQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC01MjcxLDYgKzUyNzcsMTEgQEAgQVRQcmVwQ21k KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyog Tm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlT QzsKIAkJCWJyZWFrOworCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCUFUU2ltcGxlUGVy bWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQkv KiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCisJCQlwYXNzID0gQVRfUEFTU19N SVNDOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1 YnR5cGUpOwpAQCAtNTY2Nyw2ICs1Njc4LDE0IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsCiAJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6 CiAJCQlhZGRyZXNzID0gQVRFeGVjRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCAoKFBhcnRp dGlvbkNtZCAqKSBjbWQtPmRlZiktPm5hbWUpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfTWVyZ2VQ YXJ0aXRpb25zOgorCQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVs LCBjbWQsIGZhbHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOwor CQkJQXNzZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY01lcmdlUGFydGl0aW9ucyh3 cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgIGNv bnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQt PnN1YnR5cGUpOwpAQCAtNjcwNyw2ICs2NzI2LDggQEAgYWx0ZXJfdGFibGVfdHlwZV90b19zdHJp bmcoQWx0ZXJUYWJsZVR5cGUgY21kdHlwZSkKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElPTiI7 CiAJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQlyZXR1cm4gIkRFVEFDSCBQ QVJUSVRJT04gLi4uIEZJTkFMSVpFIjsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQly ZXR1cm4gIk1FUkdFIFBBUlRJVElPTlMiOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJcmV0 dXJuICJBTFRFUiBDT0xVTU4gLi4uIEFERCBJREVOVElUWSI7CiAJCWNhc2UgQVRfU2V0SWRlbnRp dHk6CkBAIC0yMDIzMSw2ICsyMDI1Miw0MCBAQCBRdWV1ZVBhcnRpdGlvbkNvbnN0cmFpbnRWYWxp ZGF0aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHNjYW5yZWwsCiAJfQogfQogCisvKgorICog YXR0YWNoUGFydGl0aW9uVGFibGU6IGF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRp dGlvbmVkIHRhYmxlCisgKgorICogd3F1ZXVlOiB0aGUgQUxURVIgVEFCTEUgd29yayBxdWV1ZTsg Y2FuIGJlIE5VTEwgd2hlbiBub3QgcnVubmluZyBhcyBwYXJ0CisgKiAgIG9mIGFuIEFMVEVSIFRB QkxFIHNlcXVlbmNlLgorICogcmVsOiBwYXJ0aXRpb25lZCByZWxhdGlvbjsKKyAqIGF0dGFjaHJl bDogcmVsYXRpb24gb2YgYXR0YWNoZWQgcGFydGl0aW9uOworICogYm91bmQ6IGJvdW5kcyBvZiBh dHRhY2hlZCByZWxhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2F0dGFjaFBhcnRpdGlvblRhYmxl KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gYXR0YWNocmVsLCBQYXJ0aXRp b25Cb3VuZFNwZWMgKmJvdW5kKQoreworCS8qCisJICogQ3JlYXRlIGFuIGluaGVyaXRhbmNlOyB0 aGUgcmVsZXZhbnQgY2hlY2tzIGFyZSBwZXJmb3JtZWQgaW5zaWRlIHRoZQorCSAqIGZ1bmN0aW9u LgorCSAqLworCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKKworCS8q IFVwZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCisJU3RvcmVQYXJ0aXRpb25Cb3VuZChhdHRh Y2hyZWwsIHJlbCwgYm91bmQpOworCisJLyogRW5zdXJlIHRoZXJlIGV4aXN0cyBhIGNvcnJlY3Qg c2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8KKwlBdHRhY2hQYXJ0aXRpb25FbnN1 cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworCisJLyogYW5kIHRyaWdnZXJzICov CisJQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0YWNocmVsKTsKKworCS8qCisJ ICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxsZWUgaXMgcmVzcG9uc2libGUg Zm9yIHNldHRpbmcgdXAKKwkgKiBmb3IgcGhhc2UgMyBjb25zdHJhaW50IHZlcmlmaWNhdGlvbi4K KwkgKi8KKwlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyh3cXVldWUsIHJlbCwgYXR0YWNocmVs KTsKK30KKwogLyoKICAqIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDxwYXJ0 aXRpb24tbmFtZT4gRk9SIFZBTFVFUwogICoKQEAgLTIwNDMyLDI2ICsyMDQ4NywxMCBAQCBBVEV4 ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25D bWQgKmNtZCwKIAljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKGF0dGFjaHJlbCksIHJlbCwKIAkJCQkJCQkgIGNtZC0+Ym91bmQsIHBzdGF0ZSk7CiAKLQkv KiBPSyB0byBjcmVhdGUgaW5oZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVyZm9ybWVk IHRoZXJlICovCi0JQ3JlYXRlSW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRydWUpOwotCi0J LyogVXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4gKi8KLQlTdG9yZVBhcnRpdGlvbkJvdW5kKGF0 dGFjaHJlbCwgcmVsLCBjbWQtPmJvdW5kKTsKLQotCS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBj b3JyZWN0IHNldCBvZiBpbmRleGVzIGluIHRoZSBwYXJ0aXRpb24uICovCi0JQXR0YWNoUGFydGl0 aW9uRW5zdXJlSW5kZXhlcyh3cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKLQotCS8qIGFuZCB0cmln Z2VycyAqLwotCUNsb25lUm93VHJpZ2dlcnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7CisJ YXR0YWNoUGFydGl0aW9uVGFibGUod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCwgY21kLT5ib3VuZCk7 CiAKIAkvKgotCSAqIENsb25lIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJl c3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwCi0JICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2ZXJp ZmljYXRpb24uCi0JICovCi0JQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWws IGF0dGFjaHJlbCk7Ci0KLQkvKgotCSAqIEdlbmVyYXRlIHBhcnRpdGlvbiBjb25zdHJhaW50IGZy b20gdGhlIHBhcnRpdGlvbiBib3VuZCBzcGVjaWZpY2F0aW9uLgorCSAqIEdlbmVyYXRlIGEgcGFy dGl0aW9uIGNvbnN0cmFpbnQgZnJvbSB0aGUgcGFydGl0aW9uIGJvdW5kIHNwZWNpZmljYXRpb24u CiAJICogSWYgdGhlIHBhcmVudCBpdHNlbGYgaXMgYSBwYXJ0aXRpb24sIG1ha2Ugc3VyZSB0byBp bmNsdWRlIGl0cwogCSAqIGNvbnN0cmFpbnQgYXMgd2VsbC4KIAkgKi8KQEAgLTIyMDQ3LDMgKzIy MDg2LDgyMiBAQCBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAq c3RvcmFnZW1vZGUpCiAKIAlyZXR1cm4gY3N0b3JhZ2U7CiB9CisKKy8qCisgKiBidWlsZEV4cHJl c3Npb25FeGVjdXRpb25TdGF0ZXM6IGJ1aWxkIHRoZSBuZWVkZWQgZXhwcmVzc2lvbiBleGVjdXRp b24gc3RhdGVzCisgKiBmb3IgbmV3IHBhcnRpdGlvbiAobmV3UGFydFJlbCkgY2hlY2tzIGFuZCBp bml0aWFsaXplIGV4cHJlc3Npb25zIGZvcgorICogZ2VuZXJhdGVkIGNvbHVtbnMuIEFsbCBleHBy ZXNzaW9ucyBzaG91bGQgYmUgY3JlYXRlZCBpbiAidGFiIgorICogKEFsdGVyZWRUYWJsZUluZm8g c3RydWN0dXJlKS4KKyAqLworc3RhdGljIHZvaWQKK2J1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0 YXRlcyhBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIG5ld1BhcnRSZWwsIEVTdGF0ZSAq ZXN0YXRlKQoreworCS8qCisJICogQnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlv biBzdGF0ZXMuIEhlcmUsIHdlIGV4cGVjdCBvbmx5IE5PVAorCSAqIE5VTEwgYW5kIENIRUNLIGNv bnN0cmFpbnQuCisJICovCisJZm9yZWFjaF9wdHIoTmV3Q29uc3RyYWludCwgY29uLCB0YWItPmNv bnN0cmFpbnRzKQorCXsKKwkJc3dpdGNoIChjb24tPmNvbnR5cGUpCisJCXsKKwkJCWNhc2UgQ09O U1RSX0NIRUNLOgorCisJCQkJLyoKKwkJCQkgKiBXZSBhbHJlYWR5IGV4cGFuZGVkIHZpcnR1YWwg ZXhwcmVzc2lvbiBpbgorCQkJCSAqIGNyZWF0ZVRhYmxlQ29uc3RyYWludHMuCisJCQkJICovCisJ CQkJY29uLT5xdWFsc3RhdGUgPSBFeGVjUHJlcGFyZUV4cHIoKEV4cHIgKikgY29uLT5xdWFsLCBl c3RhdGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJfTk9UTlVMTDoKKwkJCQkvKiBOb3Ro aW5nIHRvIGRvIGhlcmUuICovCisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBjb24t PmNvbnR5cGUpOworCQl9CisJfQorCisJLyogRXhwcmVzc2lvbiBhbHJlYWR5IHBsYW5uZWQgaW4g Y3JlYXRlVGFibGVDb25zdHJhaW50cyAqLworCWZvcmVhY2hfcHRyKE5ld0NvbHVtblZhbHVlLCBl eCwgdGFiLT5uZXd2YWxzKQorCQlleC0+ZXhwcnN0YXRlID0gRXhlY0luaXRFeHByKChFeHByICop IGV4LT5leHByLCBOVUxMKTsKK30KKworLyoKKyAqIGV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lv bnNBbmRDaGVja0NvbnN0cmFpbnRzOiBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkCisgKiBleHByZXNz aW9ucyBmb3IgInRhYiIgKEFsdGVyZWRUYWJsZUluZm8gc3RydWN0dXJlKSB3aG9zZSBpbnB1dHMg Y29tZSBmcm9tCisgKiB0aGUgbmV3IHR1cGxlIChpbnNlcnRzbG90KSBvZiB0aGUgbmV3IHBhcnRp dGlvbiAobmV3UGFydFJlbCkuCisgKi8KK3N0YXRpYyB2b2lkCitldmFsdWF0ZUdlbmVyYXRlZEV4 cHJlc3Npb25zQW5kQ2hlY2tDb25zdHJhaW50cyhBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCQkJ CQkJCQkJCQlSZWxhdGlvbiBuZXdQYXJ0UmVsLAorCQkJCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3Qg Kmluc2VydHNsb3QsCisJCQkJCQkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJZWNv bnRleHQtPmVjeHRfc2NhbnR1cGxlID0gaW5zZXJ0c2xvdDsKKworCWZvcmVhY2hfcHRyKE5ld0Nv bHVtblZhbHVlLCBleCwgdGFiLT5uZXd2YWxzKQorCXsKKwkJaWYgKCFleC0+aXNfZ2VuZXJhdGVk KQorCQkJY29udGludWU7CisKKwkJaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlc1tleC0+YXR0bnVtIC0g MV0KKwkJCT0gRXhlY0V2YWxFeHByKGV4LT5leHByc3RhdGUsCisJCQkJCQkgICBlY29udGV4dCwK KwkJCQkJCSAgICZpbnNlcnRzbG90LT50dHNfaXNudWxsW2V4LT5hdHRudW0gLSAxXSk7CisJfQor CisJZm9yZWFjaF9wdHIoTmV3Q29uc3RyYWludCwgY29uLCB0YWItPmNvbnN0cmFpbnRzKQorCXsK KwkJc3dpdGNoIChjb24tPmNvbnR5cGUpCisJCXsKKwkJCWNhc2UgQ09OU1RSX0NIRUNLOgorCQkJ CWlmICghRXhlY0NoZWNrKGNvbi0+cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xBVElPTiksCisJCQkJCQkJ ZXJybXNnKCJjaGVjayBjb25zdHJhaW50IFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgdmlv bGF0ZWQgYnkgc29tZSByb3ciLAorCQkJCQkJCQkgICBjb24tPm5hbWUsIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKG5ld1BhcnRSZWwpKSwKKwkJCQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQobmV3UGFy dFJlbCwgY29uLT5uYW1lKSk7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUl9OT1ROVUxMOgor CQkJY2FzZSBDT05TVFJfRk9SRUlHTjoKKwkJCQkvKiBOb3RoaW5nIHRvIGRvIGhlcmUgKi8KKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBjb25z dHJhaW50IHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGNvbi0+Y29udHlwZSk7CisJCX0KKwl9Cit9 CisKKy8qCisgKiBnZXRBdHRyaWJ1dGVzTGlzdDogYnVpbGQgYSBsaXN0IG9mIGNvbHVtbnMgKENv bHVtbkRlZikgYmFzZWQgb24gcGFyZW50X3JlbAorICovCitzdGF0aWMgTGlzdCAqCitnZXRBdHRy aWJ1dGVzTGlzdChSZWxhdGlvbiBwYXJlbnRfcmVsKQoreworCUF0dHJOdW1iZXIJcGFyZW50X2F0 dG5vOworCVR1cGxlRGVzYwltb2RlbERlc2M7CisJTGlzdAkgICAqY29sTGlzdCA9IE5JTDsKKwor CW1vZGVsRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocGFyZW50X3JlbCk7CisKKwlmb3IgKHBhcmVu dF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSBtb2RlbERlc2MtPm5hdHRzOworCQkgcGFyZW50 X2F0dG5vKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyaWJ1dGUgPSBUdXBsZURlc2NB dHRyKG1vZGVsRGVzYywKKwkJCQkJCQkJCQkJCQlwYXJlbnRfYXR0bm8gLSAxKTsKKwkJQ29sdW1u RGVmICAqZGVmOworCisJCS8qIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMgaW4gdGhlIHBhcmVudC4g Ki8KKwkJaWYgKGF0dHJpYnV0ZS0+YXR0aXNkcm9wcGVkKQorCQkJY29udGludWU7CisKKwkJZGVm ID0gbWFrZUNvbHVtbkRlZihOYW1lU3RyKGF0dHJpYnV0ZS0+YXR0bmFtZSksIGF0dHJpYnV0ZS0+ YXR0dHlwaWQsCisJCQkJCQkJYXR0cmlidXRlLT5hdHR0eXBtb2QsIGF0dHJpYnV0ZS0+YXR0Y29s bGF0aW9uKTsKKworCQlkZWYtPmlzX25vdF9udWxsID0gYXR0cmlidXRlLT5hdHRub3RudWxsOwor CisJCS8qIENvcHkgaWRlbnRpdHkuICovCisJCWRlZi0+aWRlbnRpdHkgPSBhdHRyaWJ1dGUtPmF0 dGlkZW50aXR5OworCisJCS8qIENvcHkgYXR0Z2VuZXJhdGVkLiAqLworCQlkZWYtPmdlbmVyYXRl ZCA9IGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkOworCisJCWRlZi0+c3RvcmFnZSA9IGF0dHJpYnV0 ZS0+YXR0c3RvcmFnZTsKKworCQkvKiBMaWtld2lzZSwgY29weSBjb21wcmVzc2lvbi4gKi8KKwkJ aWYgKENvbXByZXNzaW9uTWV0aG9kSXNWYWxpZChhdHRyaWJ1dGUtPmF0dGNvbXByZXNzaW9uKSkK KwkJCWRlZi0+Y29tcHJlc3Npb24gPQorCQkJCXBzdHJkdXAoR2V0Q29tcHJlc3Npb25NZXRob2RO YW1lKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKTsKKwkJZWxzZQorCQkJZGVmLT5jb21wcmVz c2lvbiA9IE5VTEw7CisKKwkJLyogQWRkIHRvIGNvbHVtbiBsaXN0LiAqLworCQljb2xMaXN0ID0g bGFwcGVuZChjb2xMaXN0LCBkZWYpOworCX0KKworCXJldHVybiBjb2xMaXN0OworfQorCisvKgor ICogY3JlYXRlVGFibGVDb25zdHJhaW50czoKKyAqIGNyZWF0ZSBjaGVjayBjb25zdHJhaW50cywg ZGVmYXVsdCB2YWx1ZXMsIGFuZCBnZW5lcmF0ZWQgdmFsdWVzIGZvciBuZXdSZWwKKyAqIGJhc2Vk IG9uIHBhcmVudF9yZWwuICB0YWIgaXMgcGVuZGluZy13b3JrIHF1ZXVlIGZvciBuZXdSZWwsIHdl IG1heSBuZWVkIGl0IGluCisgKiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cy4KKyAqLworc3RhdGlj IHZvaWQKK2NyZWF0ZVRhYmxlQ29uc3RyYWludHMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLAorCQkJCQkgICBSZWxhdGlvbiBwYXJlbnRfcmVsLCBSZWxhdGlvbiBuZXdSZWwp Cit7CisJVHVwbGVEZXNjCXR1cGxlRGVzYzsKKwlUdXBsZUNvbnN0ciAqY29uc3RyOworCUF0dHJN YXAgICAgKmF0dG1hcDsKKwlBdHRyTnVtYmVyCXBhcmVudF9hdHRubzsKKwlpbnQJCQljY251bTsK KwlMaXN0CSAgICpjb25zdHJhaW50cyA9IE5JTDsKKwlMaXN0CSAgICpjb29rZWRDb25zdHJhaW50 cyA9IE5JTDsKKworCXR1cGxlRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocGFyZW50X3JlbCk7CisJ Y29uc3RyID0gdHVwbGVEZXNjLT5jb25zdHI7CisKKwlpZiAoIWNvbnN0cikKKwkJcmV0dXJuOwor CisJLyoKKwkgKiBDb25zdHJ1Y3QgYSBtYXAgZnJvbSB0aGUgcGFyZW50IHJlbGF0aW9uJ3MgYXR0 bm9zIHRvIHRoZSBjaGlsZCByZWwncy4KKwkgKiBUaGlzIHJlLWNoZWNrcyB0eXBlIG1hdGNoLCBl dGMsIGFsdGhvdWdoIGl0IHNob3VsZG4ndCBiZSBwb3NzaWJsZSB0bworCSAqIGhhdmUgYSBmYWls dXJlIHNpbmNlIGJvdGggdGFibGVzIGFyZSBsb2NrZWQuCisJICovCisJYXR0bWFwID0gYnVpbGRf YXR0cm1hcF9ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IobmV3UmVsKSwKKwkJCQkJCQkJICAgdHVw bGVEZXNjLAorCQkJCQkJCQkgICBmYWxzZSk7CisKKwkvKiBDeWNsZSBmb3IgZGVmYXVsdCB2YWx1 ZXMuICovCisJZm9yIChwYXJlbnRfYXR0bm8gPSAxOyBwYXJlbnRfYXR0bm8gPD0gdHVwbGVEZXNj LT5uYXR0czsgcGFyZW50X2F0dG5vKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyaWJ1 dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywKKwkJCQkJCQkJCQkJCQlwYXJlbnRfYXR0bm8g LSAxKTsKKworCQkvKiBJZ25vcmUgZHJvcHBlZCBjb2x1bW5zIGluIHRoZSBwYXJlbnQuICovCisJ CWlmIChhdHRyaWJ1dGUtPmF0dGlzZHJvcHBlZCkKKwkJCWNvbnRpbnVlOworCisJCS8qIENvcHkg dGhlIGRlZmF1bHQsIGlmIHByZXNlbnQsIGFuZCBpdCBzaG91bGQgYmUgY29waWVkLiAqLworCQlp ZiAoYXR0cmlidXRlLT5hdHRoYXNkZWYpCisJCXsKKwkJCU5vZGUJICAgKnRoaXNfZGVmYXVsdCA9 IE5VTEw7CisJCQlib29sCQlmb3VuZF93aG9sZV9yb3c7CisJCQlBdHRyTnVtYmVyCW51bTsKKwkJ CU5vZGUJICAgKmRlZjsKKwkJCU5ld0NvbHVtblZhbHVlICpuZXd2YWw7CisKKwkJCWlmIChhdHRy aWJ1dGUtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCQkJ dGhpc19kZWZhdWx0ID0gYnVpbGRfZ2VuZXJhdGlvbl9leHByZXNzaW9uKHBhcmVudF9yZWwsIGF0 dHJpYnV0ZS0+YXR0bnVtKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQl0aGlzX2RlZmF1bHQgPSBUdXBs ZURlc2NHZXREZWZhdWx0KHR1cGxlRGVzYywgYXR0cmlidXRlLT5hdHRudW0pOworCQkJCWlmICh0 aGlzX2RlZmF1bHQgPT0gTlVMTCkKKwkJCQkJZWxvZyhFUlJPUiwgImRlZmF1bHQgZXhwcmVzc2lv biBub3QgZm91bmQgZm9yIGF0dHJpYnV0ZSAlZCBvZiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJ IGF0dHJpYnV0ZS0+YXR0bnVtLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSk7 CisJCQl9CisKKwkJCW51bSA9IGF0dG1hcC0+YXR0bnVtc1twYXJlbnRfYXR0bm8gLSAxXTsKKwkJ CWRlZiA9IG1hcF92YXJpYWJsZV9hdHRub3ModGhpc19kZWZhdWx0LCAxLCAwLCBhdHRtYXAsIElu dmFsaWRPaWQsICZmb3VuZF93aG9sZV9yb3cpOworCisJCQlpZiAoZm91bmRfd2hvbGVfcm93ICYm IGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkICE9ICdcMCcpCisJCQkJZWxvZyhFUlJPUiwgImNhbm5v dCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UiKTsKKworCQkJLyogQWRkIGEgcHJl LWNvb2tlZCBkZWZhdWx0IGV4cHJlc3Npb24uICovCisJCQlTdG9yZUF0dHJEZWZhdWx0KG5ld1Jl bCwgbnVtLCBkZWYsIHRydWUpOworCisJCQkvKgorCQkJICogU3RvcmVkIGdlbmVyYXRlZCBjb2x1 bW4gZXhwcmVzc2lvbnMgaW4gcGFyZW50X3JlbCBtaWdodAorCQkJICogcmVmZXJlbmNlIHRoZSB0 YWJsZW9pZC4gIG5ld1JlbCwgcGFyZW50X3JlbCB0YWJsZW9pZCBjbGVhciBpcworCQkJICogbm90 IHRoZSBzYW1lLiBJZiBzbywgdGhlc2Ugc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zIHJlcXVpcmUK KwkJCSAqIHJlY29tcHV0YXRpb24gZm9yIG5ld1JlbCB3aXRoaW4gTWVyZ2VQYXJ0aXRpb25zTW92 ZVJvd3MuCisJCQkgKi8KKwkJCWlmIChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJV VEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJCXsKKwkJCQluZXd2YWwgPSAoTmV3Q29sdW1uVmFsdWUg KikgcGFsbG9jMChzaXplb2YoTmV3Q29sdW1uVmFsdWUpKTsKKwkJCQluZXd2YWwtPmF0dG51bSA9 IG51bTsKKwkJCQluZXd2YWwtPmV4cHIgPSBleHByZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgZGVm KTsKKwkJCQluZXd2YWwtPmlzX2dlbmVyYXRlZCA9IChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCAh PSAnXDAnKTsKKwkJCQl0YWItPm5ld3ZhbHMgPSBsYXBwZW5kKHRhYi0+bmV3dmFscywgbmV3dmFs KTsKKwkJCX0KKwkJfQorCX0KKworCS8qIEN5Y2xlIGZvciBDSEVDSyBjb25zdHJhaW50cy4gKi8K Kwlmb3IgKGNjbnVtID0gMDsgY2NudW0gPCBjb25zdHItPm51bV9jaGVjazsgY2NudW0rKykKKwl7 CisJCWNoYXIJICAgKmNjbmFtZSA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjbmFtZTsKKwkJY2hh cgkgICAqY2NiaW4gPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY2JpbjsKKwkJYm9vbAkJY2NlbmZv cmNlZCA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjZW5mb3JjZWQ7CisJCWJvb2wJCWNjbm9pbmhl cml0ID0gY29uc3RyLT5jaGVja1tjY251bV0uY2Nub2luaGVyaXQ7CisJCWJvb2wJCWNjdmFsaWQg PSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY3ZhbGlkOworCQlOb2RlCSAgICpjY2Jpbl9ub2RlOwor CQlib29sCQlmb3VuZF93aG9sZV9yb3c7CisJCUNvbnN0cmFpbnQgKmNvbnN0cjsKKworCQkvKgor CQkgKiBUaGUgcGFydGl0aW9uZWQgdGFibGUgY2FuIG5vdCBoYXZlIGEgTk8gSU5IRVJJVCBjaGVj ayBjb25zdHJhaW50CisJCSAqIChzZWUgU3RvcmVSZWxDaGVjayBmdW5jdGlvbiBmb3IgZGV0YWls cykuCisJCSAqLworCQlBc3NlcnQoIWNjbm9pbmhlcml0KTsKKworCQljY2Jpbl9ub2RlID0gbWFw X3ZhcmlhYmxlX2F0dG5vcyhzdHJpbmdUb05vZGUoY2NiaW4pLAorCQkJCQkJCQkJCSAxLCAwLAor CQkJCQkJCQkJCSBhdHRtYXAsCisJCQkJCQkJCQkJIEludmFsaWRPaWQsICZmb3VuZF93aG9sZV9y b3cpOworCisJCS8qCisJCSAqIEZvciB0aGUgbW9tZW50IHdlIGhhdmUgdG8gcmVqZWN0IHdob2xl LXJvdyB2YXJpYWJsZXMgKGFzIGZvciBDUkVBVEUKKwkJICogVEFCTEUgTElLRSBhbmQgaW5oZXJp dGFuY2VzKS4KKwkJICovCisJCWlmIChmb3VuZF93aG9sZV9yb3cpCisJCQllbG9nKEVSUk9SLCAi Q29uc3RyYWludCBcIiVzXCIgY29udGFpbnMgYSB3aG9sZS1yb3cgcmVmZXJlbmNlIHRvIHRhYmxl IFwiJXNcIi4iLAorCQkJCSBjY25hbWUsCisJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBh cmVudF9yZWwpKTsKKworCQljb25zdHIgPSBtYWtlTm9kZShDb25zdHJhaW50KTsKKwkJY29uc3Ry LT5jb250eXBlID0gQ09OU1RSX0NIRUNLOworCQljb25zdHItPmNvbm5hbWUgPSBwc3RyZHVwKGNj bmFtZSk7CisJCWNvbnN0ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQljb25zdHItPmluaXRkZWZl cnJlZCA9IGZhbHNlOworCQljb25zdHItPmlzX2VuZm9yY2VkID0gY2NlbmZvcmNlZDsKKwkJY29u c3RyLT5za2lwX3ZhbGlkYXRpb24gPSAhY2N2YWxpZDsKKwkJY29uc3RyLT5pbml0aWFsbHlfdmFs aWQgPSBjY3ZhbGlkOworCQljb25zdHItPmlzX25vX2luaGVyaXQgPSBjY25vaW5oZXJpdDsKKwkJ Y29uc3RyLT5yYXdfZXhwciA9IE5VTEw7CisJCWNvbnN0ci0+Y29va2VkX2V4cHIgPSBub2RlVG9T dHJpbmcoY2NiaW5fbm9kZSk7CisJCWNvbnN0ci0+bG9jYXRpb24gPSAtMTsKKwkJY29uc3RyYWlu dHMgPSBsYXBwZW5kKGNvbnN0cmFpbnRzLCBjb25zdHIpOworCX0KKworCS8qIEluc3RhbGwgYWxs IENIRUNLIGNvbnN0cmFpbnRzLiAqLworCWNvb2tlZENvbnN0cmFpbnRzID0gQWRkUmVsYXRpb25O ZXdDb25zdHJhaW50cyhuZXdSZWwsIE5JTCwgY29uc3RyYWludHMsCisJCQkJCQkJCQkJCQkgIGZh bHNlLCB0cnVlLCB0cnVlLCBOVUxMKTsKKworCS8qIE1ha2UgdGhlIGFkZGl0aW9uYWwgY2F0YWxv ZyBjaGFuZ2VzIHZpc2libGUuICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCS8q CisJICogcGFyZW50X3JlbCBjaGVjayBjb25zdHJhaW50IGV4cHJlc3Npb24gbWF5IHJlZmVyZW5j ZSB0YWJsZW9pZCwgc28gbGF0ZXIKKwkgKiBpbiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cywgd2Ug bmVlZCB0byBldmFsdWF0ZSB0aGUgY2hlY2sgY29uc3RyYWludAorCSAqIGFnYWluIGZvciB0aGUg bmV3UmVsLiBXZSBjYW4gY2hlY2sgd2hldGhlciB0aGUgY2hlY2sgY29uc3RyYWludAorCSAqIGNv bnRhaW5zIGEgdGFibGVvaWQgcmVmZXJlbmNlIHZpYSBwdWxsX3ZhcmF0dG5vcy4KKwkgKi8KKwlm b3JlYWNoX3B0cihDb29rZWRDb25zdHJhaW50LCBjY29uLCBjb29rZWRDb25zdHJhaW50cykKKwl7 CisJCWlmICghY2Nvbi0+c2tpcF92YWxpZGF0aW9uKQorCQl7CisJCQlOb2RlCSAgICpxdWFsOwor CQkJQml0bWFwc2V0ICAqYXR0bnVtcyA9IE5VTEw7CisKKwkJCUFzc2VydChjY29uLT5jb250eXBl ID09IENPTlNUUl9DSEVDSyk7CisJCQlxdWFsID0gZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2lu X2V4cHIoY2Nvbi0+ZXhwciwgbmV3UmVsLCAxKTsKKwkJCXB1bGxfdmFyYXR0bm9zKHF1YWwsIDEs ICZhdHRudW1zKTsKKworCQkJLyoKKwkJCSAqIEFkZCBhIGNoZWNrIG9ubHkgaWYgaXQgY29udGFp bnMgYSB0YWJsZW9pZAorCQkJICogKFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyKS4KKwkJCSAqLwor CQkJaWYgKGJtc19pc19tZW1iZXIoVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIgLSBGaXJzdExvd0lu dmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJCQkJCSAgYXR0bnVtcykpCisJCQl7CisJCQkJ TmV3Q29uc3RyYWludCAqbmV3Y29uOworCisJCQkJbmV3Y29uID0gKE5ld0NvbnN0cmFpbnQgKikg cGFsbG9jMChzaXplb2YoTmV3Q29uc3RyYWludCkpOworCQkJCW5ld2Nvbi0+bmFtZSA9IGNjb24t Pm5hbWU7CisJCQkJbmV3Y29uLT5jb250eXBlID0gQ09OU1RSX0NIRUNLOworCQkJCW5ld2Nvbi0+ cXVhbCA9IHF1YWw7CisKKwkJCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNvbnN0 cmFpbnRzLCBuZXdjb24pOworCQkJfQorCQl9CisJfQorCisJLyogRG9uJ3QgbmVlZCB0aGUgY29v a2VkQ29uc3RyYWludHMgYW55bW9yZS4gKi8KKwlsaXN0X2ZyZWVfZGVlcChjb29rZWRDb25zdHJh aW50cyk7CisKKwkvKiBSZXByb2R1Y2Ugbm90LW51bGwgY29uc3RyYWludHMuICovCisJaWYgKGNv bnN0ci0+aGFzX25vdF9udWxsKQorCXsKKwkJTGlzdAkgICAqbm5jb25zdHJhaW50czsKKworCQkv KgorCQkgKiBUaGUgImluY2x1ZGVfbm9pbmgiIGFyZ3VtZW50IGlzIGZhbHNlIGJlY2F1c2UgYSBw YXJ0aXRpb25lZCB0YWJsZQorCQkgKiBjYW4ndCBoYXZlIE5PIElOSEVSSVQgY29uc3RyYWludC4K KwkJICovCisJCW5uY29uc3RyYWludHMgPSBSZWxhdGlvbkdldE5vdE51bGxDb25zdHJhaW50cyhS ZWxhdGlvbkdldFJlbGlkKHBhcmVudF9yZWwpLAorCQkJCQkJCQkJCQkJCSAgZmFsc2UsIGZhbHNl KTsKKworCQlBc3NlcnQobGlzdF9sZW5ndGgobm5jb25zdHJhaW50cykgPiAwKTsKKworCQkvKgor CQkgKiBXZSBhbHJlYWR5IHNldCBwZ19hdHRyaWJ1dGUuYXR0bm90bnVsbCBpbiBjcmVhdGVQYXJ0 aXRpb25UYWJsZS4gTm8KKwkJICogbmVlZCBjYWxsIHNldF9hdHRub3RudWxsIGFnYWluLgorCQkg Ki8KKwkJQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhuZXdSZWwsIE5JTCwgbm5jb25zdHJhaW50 cywgZmFsc2UsIHRydWUsIHRydWUsIE5VTEwpOworCX0KK30KKworLyoKKyAqIGNyZWF0ZVBhcnRp dGlvblRhYmxlOgorICoKKyAqIENyZWF0ZSBhIG5ldyBwYXJ0aXRpb24gKG5ld1BhcnROYW1lKSBm b3IgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIChwYXJlbnRfcmVsKS4KKyAqIG93bmVySWQgaXMgZGV0 ZXJtaW5lZCBieSB0aGUgcGFydGl0aW9uIG9uIHdoaWNoIHRoZSBvcGVyYXRpb24gaXMgcGVyZm9y bWVkLAorICogc28gaXQgaXMgcGFzc2VkIHNlcGFyYXRlbHkuICBUaGUgbmV3IHBhcnRpdGlvbiB3 aWxsIGluaGVyaXQgdGhlIGFjY2VzcyBtZXRob2QKKyAqIGFuZCBwZXJzaXN0ZW5jZSB0eXBlIGZy b20gdGhlIHBhcmVudCB0YWJsZS4KKyAqCisgKiBSZXR1cm5zIHRoZSBjcmVhdGVkIHJlbGF0aW9u IChsb2NrZWQgaW4gQWNjZXNzRXhjbHVzaXZlTG9jayBtb2RlKS4KKyAqLworc3RhdGljIFJlbGF0 aW9uCitjcmVhdGVQYXJ0aXRpb25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSYW5nZVZhciAqbmV3UGFy dE5hbWUsCisJCQkJCSBSZWxhdGlvbiBwYXJlbnRfcmVsLCBPaWQgb3duZXJJZCkKK3sKKwlSZWxh dGlvbgluZXdSZWw7CisJT2lkCQkJbmV3UmVsSWQ7CisJT2lkCQkJZXhpc3RpbmdSZWxpZDsKKwlU dXBsZURlc2MJZGVzY3JpcHRvcjsKKwlMaXN0CSAgICpjb2xMaXN0ID0gTklMOworCU9pZAkJCXJl bGFtSWQ7CisJT2lkCQkJbmFtZXNwYWNlSWQ7CisJQWx0ZXJlZFRhYmxlSW5mbyAqbmV3X3BhcnRy ZWxfdGFiOworCUZvcm1fcGdfY2xhc3MgcGFyZW50X3JlbGZvcm0gPSBwYXJlbnRfcmVsLT5yZF9y ZWw7CisKKwkvKiBJZiB0aGUgZXhpc3RpbmcgcmVsIGlzIHRlbXAsIGl0IG11c3QgYmVsb25nIHRv IHRoaXMgc2Vzc2lvbi4gKi8KKwlpZiAoUkVMQVRJT05fSVNfT1RIRVJfVEVNUChwYXJlbnRfcmVs KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZ UEUpLAorCQkJCWVycm1zZygiY2Fubm90IGNyZWF0ZSBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5 IHJlbGF0aW9uIG9mIGFub3RoZXIgc2Vzc2lvbiIpKTsKKworCS8qIExvb2sgdXAgaW5oZXJpdGFu Y2UgYW5jZXN0b3JzIGFuZCBnZW5lcmF0ZSB0aGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWNvbExp c3QgPSBnZXRBdHRyaWJ1dGVzTGlzdChwYXJlbnRfcmVsKTsKKworCS8qIENyZWF0ZSBhIHR1cGxl IGRlc2NyaXB0b3IgZnJvbSB0aGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWRlc2NyaXB0b3IgPSBC dWlsZERlc2NGb3JSZWxhdGlvbihjb2xMaXN0KTsKKworCS8qIExvb2sgdXAgdGhlIGFjY2VzcyBt ZXRob2QgZm9yIHRoZSBuZXcgcmVsYXRpb24uICovCisJcmVsYW1JZCA9IChwYXJlbnRfcmVsZm9y bS0+cmVsYW0gIT0gSW52YWxpZE9pZCkgPyBwYXJlbnRfcmVsZm9ybS0+cmVsYW0gOiBIRUFQX1RB QkxFX0FNX09JRDsKKworCS8qIExvb2sgdXAgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB3ZSBhcmUg c3VwcG9zZWQgdG8gY3JlYXRlIHRoZSByZWxhdGlvbi4gKi8KKwluYW1lc3BhY2VJZCA9CisJCVJh bmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShuZXdQYXJ0TmFtZSwgTm9Mb2NrLCAm ZXhpc3RpbmdSZWxpZCk7CisJaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJZXJy bXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBuZXdQYXJ0TmFtZS0+cmVsbmFt ZSkpOworCisJLyoKKwkgKiBXZSBpbnRlbmRlZCB0byBjcmVhdGUgdGhlIHBhcnRpdGlvbiB3aXRo IHRoZSBzYW1lIHBlcnNpc3RlbmNlIGFzIHRoZQorCSAqIHBhcmVudCB0YWJsZSwgYnV0IHdlIHN0 aWxsIG5lZWQgdG8gcmVjaGVjayBiZWNhdXNlIHRoYXQgbWlnaHQgYmUKKwkgKiBhZmZlY3RlZCBi eSB0aGUgc2VhcmNoX3BhdGguICBJZiB0aGUgcGFyZW50IGlzIHBlcm1hbmVudCwgc28gbXVzdCBi ZQorCSAqIGFsbCBvZiBpdHMgcGFydGl0aW9ucy4KKwkgKi8KKwlpZiAocGFyZW50X3JlbGZvcm0t PnJlbHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKKwkJbmV3UGFydE5hbWUt PnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1Is CisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNh bm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVu dCByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJl bnRfcmVsKSkpOworCisJLyogUGVybWFuZW50IHJlbHMgY2Fubm90IGJlIHBhcnRpdGlvbnMgYmVs b25naW5nIHRvIGEgdGVtcG9yYXJ5IHBhcmVudC4gKi8KKwlpZiAobmV3UGFydE5hbWUtPnJlbHBl cnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKKwkJcGFyZW50X3JlbGZvcm0tPnJl bHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5v dCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSBy ZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRf cmVsKSkpOworCisJLyogQ3JlYXRlIHRoZSByZWxhdGlvbi4gKi8KKwluZXdSZWxJZCA9IGhlYXBf Y3JlYXRlX3dpdGhfY2F0YWxvZyhuZXdQYXJ0TmFtZS0+cmVsbmFtZSwKKwkJCQkJCQkJCQluYW1l c3BhY2VJZCwKKwkJCQkJCQkJCQlwYXJlbnRfcmVsZm9ybS0+cmVsdGFibGVzcGFjZSwKKwkJCQkJ CQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJSW52YWxp ZE9pZCwKKwkJCQkJCQkJCQlvd25lcklkLAorCQkJCQkJCQkJCXJlbGFtSWQsCisJCQkJCQkJCQkJ ZGVzY3JpcHRvciwKKwkJCQkJCQkJCQlOSUwsCisJCQkJCQkJCQkJUkVMS0lORF9SRUxBVElPTiwK KwkJCQkJCQkJCQluZXdQYXJ0TmFtZS0+cmVscGVyc2lzdGVuY2UsCisJCQkJCQkJCQkJZmFsc2Us CisJCQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCQkJT05DT01NSVRfTk9PUCwKKwkJCQkJCQkJCQko RGF0dW0pIDAsCisJCQkJCQkJCQkJdHJ1ZSwKKwkJCQkJCQkJCQlhbGxvd1N5c3RlbVRhYmxlTW9k cywKKwkJCQkJCQkJCQl0cnVlLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJTlVM TCk7CisKKwkvKgorCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2Ug dGhlIG5ld2x5LWNyZWF0ZWQgcmVsYXRpb24KKwkgKiB0dXBsZSB2aXNpYmxlIGZvciBvcGVuaW5n LgorCSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkvKgorCSAqIE9wZW4gdGhl IG5ldyBwYXJ0aXRpb24gd2l0aCBubyBsb2NrLCBiZWNhdXNlIHdlIGFscmVhZHkgaGF2ZSBhbgor CSAqIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgcGxhY2VkIHRoZXJlIGFmdGVyIGNyZWF0aW9uLgorCSAq LworCW5ld1JlbCA9IHRhYmxlX29wZW4obmV3UmVsSWQsIE5vTG9jayk7CisKKwkvKiBGaW5kIG9y IGNyZWF0ZSBhIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoZSBuZXdseSBjcmVhdGVkIHRhYmxlLiAq LworCW5ld19wYXJ0cmVsX3RhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIG5ld1JlbCk7CisK KwkvKiBDcmVhdGUgY29uc3RyYWludHMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgZ2VuZXJhdGVkIHZh bHVlcy4gKi8KKwljcmVhdGVUYWJsZUNvbnN0cmFpbnRzKHdxdWV1ZSwgbmV3X3BhcnRyZWxfdGFi LCBwYXJlbnRfcmVsLCBuZXdSZWwpOworCisJLyoKKwkgKiBOZWVkIHRvIGNhbGwgQ29tbWFuZENv dW50ZXJJbmNyZW1lbnQsIHNvIGEgZnJlc2ggcmVsY2FjaGUgZW50cnkgaGFzCisJICogbmV3bHkg aW5zdGFsbGVkIGNvbnN0cmFpbnQgaW5mby4KKwkgKi8KKwlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOworCisJcmV0dXJuIG5ld1JlbDsKK30KKworLyoKKyAqIE1lcmdlUGFydGl0aW9uc01vdmVS b3dzOiBzY2FuIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIChtZXJnaW5nUGFydGl0aW9ucykKKyAq IG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgbW92ZSByb3dzIGludG8gdGhlIG5ldyBwYXJ0 aXRpb24KKyAqIChuZXdQYXJ0UmVsKS4gV2UgYWxzbyB2ZXJpZnkgY2hlY2sgY29uc3RyYWludHMg YWdhaW5zdCB0aGVzZSByb3dzLgorICovCitzdGF0aWMgdm9pZAorTWVyZ2VQYXJ0aXRpb25zTW92 ZVJvd3MoTGlzdCAqKndxdWV1ZSwgTGlzdCAqbWVyZ2luZ1BhcnRpdGlvbnMsIFJlbGF0aW9uIG5l d1BhcnRSZWwpCit7CisJQ29tbWFuZElkCW15Y2lkOworCUVTdGF0ZQkgICAqZXN0YXRlOworCUFs dGVyZWRUYWJsZUluZm8gKnRhYjsKKwlMaXN0Q2VsbCAgICpsdGFiOworCisJLyogVGhlIEZTTSBp cyBlbXB0eSwgc28gZG9uJ3QgYm90aGVyIHVzaW5nIGl0LiAqLworCWludAkJCXRpX29wdGlvbnMg PSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIHN0 YXRlIG9mIGJ1bGsgaW5zZXJ0cyBmb3IgcGFydGl0aW9uICovCisJVHVwbGVUYWJsZVNsb3QgKmRz dHNsb3Q7CisKKwkvKiBGaW5kIHRoZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciB0aGUgbmV3IHBhcnRp dGlvbiB0YWJsZTogbmV3UGFydFJlbC4gKi8KKwl0YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVl LCBuZXdQYXJ0UmVsKTsKKworCS8qIEdlbmVyYXRlIHRoZSBjb25zdHJhaW50IGFuZCBkZWZhdWx0 IGV4ZWN1dGlvbiBzdGF0ZXMuICovCisJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwor CisJYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3RhdGVzKHRhYiwgbmV3UGFydFJlbCwgZXN0YXRl KTsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCS8qIFByZXBhcmUg YSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gKi8KKwliaXN0YXRlID0g R2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgdGhlIG5lY2Vzc2FyeSB0dXBsZSBz bG90LiAqLworCWRzdHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShuZXdQYXJ0UmVsLCBOVUxMKTsK KworCWZvcmVhY2hfb2lkKG1lcmdpbmdfb2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJCUV4 cHJDb250ZXh0ICplY29udGV4dDsKKwkJVHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJCVR1cGxl Q29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCQlUYWJsZVNjYW5EZXNjIHNjYW47CisJCU1lbW9y eUNvbnRleHQgb2xkQ3h0OworCQlTbmFwc2hvdAlzbmFwc2hvdDsKKwkJUmVsYXRpb24JbWVyZ2lu Z1BhcnRpdGlvbjsKKworCQllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRl KTsKKworCQkvKgorCQkgKiBQYXJ0aXRpb24gaXMgYWxyZWFkeSBsb2NrZWQgaW4gdGhlIHRyYW5z Zm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlCisJCSAqIGZ1bmN0aW9uLgorCQkgKi8KKwkJbWVyZ2lu Z1BhcnRpdGlvbiA9IHRhYmxlX29wZW4obWVyZ2luZ19vaWQsIE5vTG9jayk7CisKKwkJLyogQ3Jl YXRlIGEgc291cmNlIHR1cGxlIHNsb3QgZm9yIHRoZSBwYXJ0aXRpb24gYmVpbmcgbWVyZ2VkLiAq LworCQlzcmNzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUobWVyZ2luZ1BhcnRpdGlvbiwgTlVMTCk7 CisKKwkJLyoKKwkJICogTWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2YgdGhl IG1lcmdlZCBwYXJ0aXRpb24gdG8gdGhlCisJCSAqIG5ldyBwYXJ0aXRpb24uCisJCSAqLworCQl0 dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IobWVyZ2lu Z1BhcnRpdGlvbiksCisJCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihuZXdQYXJ0UmVsKSk7 CisKKwkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCQlzbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4o bWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3QsIDAsIE5VTEwpOworCisJCS8qCisJCSAqIFN3aXRj aCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxl CisJCSAqIHByb2R1Y2VkLCBzbyB3ZSBkb24ndCBsZWFrIG1lbW9yeS4KKwkJICovCisJCW9sZEN4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRl KSk7CisKKwkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5E aXJlY3Rpb24sIHNyY3Nsb3QpKQorCQl7CisJCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsK KworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkJaWYgKHR1cGxlX21hcCkKKwkJCXsK KwkJCQkvKiBOZWVkIHRvIHVzZSBhIG1hcCB0byBjb3B5IGF0dHJpYnV0ZXMuICovCisJCQkJaW5z ZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJNYXAsIHNyY3Ns b3QsIGRzdHNsb3QpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXNsb3RfZ2V0YWxsYXR0cnMo c3Jjc2xvdCk7CisKKwkJCQkvKiBDb3B5IGF0dHJpYnV0ZXMgZGlyZWN0bHkuICovCisJCQkJaW5z ZXJ0c2xvdCA9IGRzdHNsb3Q7CisKKwkJCQlFeGVjQ2xlYXJUdXBsZShpbnNlcnRzbG90KTsKKwor CQkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAor CQkJCQkgICBzaXplb2YoRGF0dW0pICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJCQkJbWVtY3B5 KGluc2VydHNsb3QtPnR0c19pc251bGwsIHNyY3Nsb3QtPnR0c19pc251bGwsCisJCQkJCSAgIHNp emVvZihib29sKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCisJCQkJRXhlY1N0b3JlVmlydHVh bFR1cGxlKGluc2VydHNsb3QpOworCQkJfQorCisJCQkvKgorCQkJICogQ29uc3RyYWludHMgYW5k IEdFTkVSQVRFRCBleHByZXNzaW9ucyBtaWdodCByZWZlcmVuY2UgdGhlCisJCQkgKiB0YWJsZW9p ZCBjb2x1bW4sIHNvIGZpbGwgdHRzX3RhYmxlT2lkIHdpdGggdGhlIGRlc2lyZWQgdmFsdWUuCisJ CQkgKiAoV2UgbXVzdCBkbyB0aGlzIGVhY2ggdGltZSwgYmVjYXVzZSBpdCBnZXRzIG92ZXJ3cml0 dGVuIHdpdGgKKwkJCSAqIG5ld3JlbCdzIE9JRCBkdXJpbmcgc3RvcmluZy4pCisJCQkgKi8KKwkJ CWluc2VydHNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQobmV3UGFydFJlbCk7 CisKKwkJCS8qCisJCQkgKiBOb3csIGV2YWx1YXRlIGFueSBnZW5lcmF0ZWQgZXhwcmVzc2lvbnMg d2hvc2UgaW5wdXRzIGNvbWUgZnJvbQorCQkJICogdGhlIG5ldyB0dXBsZS4gIFdlIGFzc3VtZSB0 aGVzZSBjb2x1bW5zIHdvbid0IHJlZmVyZW5jZSBlYWNoCisJCQkgKiBvdGhlciwgc28gdGhhdCB0 aGVyZSdzIG5vIG9yZGVyaW5nIGRlcGVuZGVuY3kuCisJCQkgKi8KKwkJCWV2YWx1YXRlR2VuZXJh dGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzKHRhYiwgbmV3UGFydFJlbCwKKwkJCQkJ CQkJCQkJCQkJCWluc2VydHNsb3QsIGVjb250ZXh0KTsKKworCQkJLyogV3JpdGUgdGhlIHR1cGxl IG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAqLworCQkJdGFibGVfdHVwbGVfaW5zZXJ0KG5ld1Bh cnRSZWwsIGluc2VydHNsb3QsIG15Y2lkLAorCQkJCQkJCSAgIHRpX29wdGlvbnMsIGJpc3RhdGUp OworCisJCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwkJfQorCisJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRDeHQpOworCQl0YWJsZV9lbmRzY2FuKHNjYW4pOworCQlVbnJlZ2lzdGVy U25hcHNob3Qoc25hcHNob3QpOworCisJCWlmICh0dXBsZV9tYXApCisJCQlmcmVlX2NvbnZlcnNp b25fbWFwKHR1cGxlX21hcCk7CisKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzcmNz bG90KTsKKwkJdGFibGVfY2xvc2UobWVyZ2luZ1BhcnRpdGlvbiwgTm9Mb2NrKTsKKwl9CisKKwlG cmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo ZHN0c2xvdCk7CisJRnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsKKworCXRhYmxlX2Zpbmlz aF9idWxrX2luc2VydChuZXdQYXJ0UmVsLCB0aV9vcHRpb25zKTsKKworCS8qCisJICogV2UgZG9u J3QgbmVlZCB0byBwcm9jZXNzIHRoaXMgbmV3UGFydFJlbCBzaW5jZSB3ZSBhbHJlYWR5IHByb2Nl c3NlZCBpdAorCSAqIGhlcmUsIHNvIGRlbGV0ZSB0aGUgQUxURVIgVEFCTEUgcXVldWUgZm9yIGl0 LgorCSAqLworCWZvcmVhY2gobHRhYiwgKndxdWV1ZSkKKwl7CisJCXRhYiA9IChBbHRlcmVkVGFi bGVJbmZvICopIGxmaXJzdChsdGFiKTsKKwkJaWYgKHRhYi0+cmVsaWQgPT0gUmVsYXRpb25HZXRS ZWxpZChuZXdQYXJ0UmVsKSkKKwkJeworCQkJKndxdWV1ZSA9IGxpc3RfZGVsZXRlX2NlbGwoKndx dWV1ZSwgbHRhYik7CisJCQlicmVhazsKKwkJfQorCX0KK30KKworLyoKKyAqIGRldGFjaFBhcnRp dGlvblRhYmxlOiBkZXRhY2ggcGFydGl0aW9uICJjaGlsZF9yZWwiIGZyb20gcGFydGl0aW9uZWQg dGFibGUKKyAqICJwYXJlbnRfcmVsIiB3aXRoIGRlZmF1bHQgcGFydGl0aW9uIGlkZW50aWZpZXIg ImRlZmF1bHRQYXJ0T2lkIgorICovCitzdGF0aWMgdm9pZAorZGV0YWNoUGFydGl0aW9uVGFibGUo UmVsYXRpb24gcGFyZW50X3JlbCwgUmVsYXRpb24gY2hpbGRfcmVsLCBPaWQgZGVmYXVsdFBhcnRP aWQpCit7CisJLyogUmVtb3ZlIHRoZSBwZ19pbmhlcml0cyByb3cgZmlyc3QuICovCisJUmVtb3Zl SW5oZXJpdGFuY2UoY2hpbGRfcmVsLCBwYXJlbnRfcmVsLCBmYWxzZSk7CisKKwkvKgorCSAqIERl dGFjaGluZyB0aGUgcGFydGl0aW9uIG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBz byBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwkvKiBEbyB0aGUgZmluYWwg cGFydCBvZiBkZXRhY2hpbmcuICovCisJRGV0YWNoUGFydGl0aW9uRmluYWxpemUocGFyZW50X3Jl bCwgY2hpbGRfcmVsLCBmYWxzZSwgZGVmYXVsdFBhcnRPaWQpOworCisJUG9wQWN0aXZlU25hcHNo b3QoKTsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TIDxw YXJ0aXRpb24tbGlzdD4gSU5UTyA8cGFydGl0aW9uLW5hbWU+CisgKi8KK3N0YXRpYyB2b2lkCitB VEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFi LCBSZWxhdGlvbiByZWwsCisJCQkJCSAgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGls aXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbgluZXdQYXJ0UmVsOworCUxpc3QJICAg Km1lcmdpbmdQYXJ0aXRpb25zID0gTklMOworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCU9pZAkJ CWV4aXN0aW5nUmVsaWQ7CisJT2lkCQkJb3duZXJJZCA9IEludmFsaWRPaWQ7CisJT2lkCQkJc2F2 ZV91c2VyaWQ7CisJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKKwlpbnQJCQlzYXZlX25lc3RsZXZl bDsKKworCS8qCisJICogQ2hlY2sgb3duZXJzaGlwIG9mIG1lcmdlZCBwYXJ0aXRpb25zIC0gcGFy dGl0aW9ucyB3aXRoIGRpZmZlcmVudCBvd25lcnMKKwkgKiBjYW5ub3QgYmUgbWVyZ2VkLiBBbHNv LCBjb2xsZWN0IHRoZSBPSURzIG9mIHRoZXNlIHBhcnRpdGlvbnMgZHVyaW5nIHRoZQorCSAqIGNo ZWNrLgorCSAqLworCWZvcmVhY2hfbm9kZShSYW5nZVZhciwgbmFtZSwgY21kLT5wYXJ0bGlzdCkK Kwl7CisJCVJlbGF0aW9uCW1lcmdpbmdQYXJ0aXRpb247CisKKwkJLyoKKwkJICogV2UgYXJlIGdv aW5nIHRvIGRldGFjaCBhbmQgcmVtb3ZlIHRoaXMgcGFydGl0aW9uLiAgV2UgYWxyZWFkeSB0b29r CisJCSAqIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgbG9jayBvbiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRG b3JNZXJnZSwgc28gaGVyZSwKKwkJICogTm9Mb2NrIGlzIGZpbmUuCisJCSAqLworCQltZXJnaW5n UGFydGl0aW9uID0gdGFibGVfb3BlbnJ2X2V4dGVuZGVkKG5hbWUsIE5vTG9jaywgZmFsc2UpOwor CQlBc3NlcnQoQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUobWVyZ2luZ1BhcnRpdGlvbiwgQWNjZXNz RXhjbHVzaXZlTG9jaywgZmFsc2UpKTsKKworCQlpZiAoT2lkSXNWYWxpZChvd25lcklkKSkKKwkJ eworCQkJLyogRG8gdGhlIHBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93 bmVycz8gKi8KKwkJCWlmIChvd25lcklkICE9IG1lcmdpbmdQYXJ0aXRpb24tPnJkX3JlbC0+cmVs b3duZXIpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBo YXZlIGRpZmZlcmVudCBvd25lcnMiKSk7CisJCX0KKwkJZWxzZQorCQkJb3duZXJJZCA9IG1lcmdp bmdQYXJ0aXRpb24tPnJkX3JlbC0+cmVsb3duZXI7CisKKwkJLyogU3RvcmUgdGhlIG5leHQgbWVy Z2luZyBwYXJ0aXRpb24gaW50byB0aGUgbGlzdC4gKi8KKwkJbWVyZ2luZ1BhcnRpdGlvbnMgPSBs YXBwZW5kX29pZChtZXJnaW5nUGFydGl0aW9ucywKKwkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGlk KG1lcmdpbmdQYXJ0aXRpb24pKTsKKworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFydGl0aW9uLCBO b0xvY2spOworCX0KKworCS8qIExvb2sgdXAgdGhlIGV4aXN0aW5nIHJlbGF0aW9uIGJ5IHRoZSBu ZXcgcGFydGl0aW9uIG5hbWUuICovCisJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNw YWNlKGNtZC0+bmFtZSwgTm9Mb2NrLCAmZXhpc3RpbmdSZWxpZCk7CisKKwkvKgorCSAqIENoZWNr IGlmIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHRha2VuLiAgVGhpcyBoZWxwcyB1cyB0byBkZXRlY3Qg dGhlCisJICogc2l0dWF0aW9uIHdoZW4gb25lIG9mIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMgaGFz IHRoZSBzYW1lIG5hbWUgYXMgdGhlCisJICogbmV3IHBhcnRpdGlvbi4gIE90aGVyd2lzZSwgdGhp cyB3b3VsZCBmYWlsIGxhdGVyIG9uIGFueXdheSwgYnV0CisJICogY2F0Y2hpbmcgdGhpcyBoZXJl IGFsbG93cyB1cyB0byBlbWl0IGEgbmljZXIgZXJyb3IgbWVzc2FnZS4KKwkgKi8KKwlpZiAoT2lk SXNWYWxpZChleGlzdGluZ1JlbGlkKSkKKwl7CisJCWlmIChsaXN0X21lbWJlcl9vaWQobWVyZ2lu Z1BhcnRpdGlvbnMsIGV4aXN0aW5nUmVsaWQpKQorCQl7CisJCQkvKgorCQkJICogVGhlIG5ldyBw YXJ0aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIHRoZSBtZXJnaW5nCisJCQkgKiBw YXJ0aXRpb25zLgorCQkJICovCisJCQljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKwor CQkJLyogR2VuZXJhdGUgYSB0ZW1wb3JhcnkgbmFtZS4gKi8KKwkJCXNwcmludGYodG1wUmVsTmFt ZSwgIm1lcmdlLSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlkKTsK KworCQkJLyoKKwkJCSAqIFJlbmFtZSB0aGUgZXhpc3RpbmcgcGFydGl0aW9uIHdpdGggYSB0ZW1w b3JhcnkgbmFtZSwgbGVhdmluZyBpdAorCQkJICogZnJlZSBmb3IgdGhlIG5ldyBwYXJ0aXRpb24u ICBXZSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhpcworCQkJICogaW4gdGhlIGZ1dHVyZSBi ZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGV2ZW50dWFsbHkgZHJvcCB0aGUKKwkJCSAqIGV4aXN0aW5n IHBhcnRpdGlvbiBhbnl3YXkuCisJCQkgKi8KKwkJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwoZXhp c3RpbmdSZWxpZCwgdG1wUmVsTmFtZSwgdHJ1ZSwgZmFsc2UpOworCisJCQkvKgorCQkJICogV2Ug bXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgbmV3IHBhcnRpdGlvbgor CQkJICogdHVwbGUgdmlzaWJsZSBmb3IgcmVuYW1lLgorCQkJICovCisJCQlDb21tYW5kQ291bnRl ckluY3JlbWVudCgpOworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ ZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJCWVycm1zZygicmVsYXRpb24g XCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgY21kLT5uYW1lLT5yZWxuYW1lKSk7CisJCX0KKwl9CisK KwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0 aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsKKworCS8qIERldGFjaCBhbGwgbWVyZ2lu ZyBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdp bmdQYXJ0aXRpb25zKQorCXsKKwkJUmVsYXRpb24JY2hpbGRfcmVsOworCisJCWNoaWxkX3JlbCA9 IHRhYmxlX29wZW4obWVyZ2luZ1BhcnRpdGlvbk9pZCwgTm9Mb2NrKTsKKworCQlkZXRhY2hQYXJ0 aXRpb25UYWJsZShyZWwsIGNoaWxkX3JlbCwgZGVmYXVsdFBhcnRPaWQpOworCisJCXRhYmxlX2Ns b3NlKGNoaWxkX3JlbCwgTm9Mb2NrKTsKKwl9CisKKwkvKgorCSAqIFBlcmZvcm0gYSBwcmVsaW1p bmFyeSBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG8gZHJvcCBhbGwKKwkg KiBtZXJnaW5nIHBhcnRpdGlvbnMgYmVmb3JlIHdlIGFjdHVhbGx5IGRvIHNvIGxhdGVyLiBBZnRl ciBtZXJnaW5nIHJvd3MKKwkgKiBpbnRvIHRoZSBuZXcgcGFydGl0aW9ucyB2aWEgTWVyZ2VQYXJ0 aXRpb25zTW92ZVJvd3MsIGFsbCBvbGQgcGFydGl0aW9ucworCSAqIG5lZWQgdG8gYmUgZHJvcHBl ZC4gSG93ZXZlciwgc2luY2UgdGhlIGRyb3AgYmVoYXZpb3IgaXMgRFJPUF9SRVNUUklDVAorCSAq IGFuZCB0aGUgbWVyZ2UgcHJvY2VzcyAoTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MpIGNhbiBiZSB0 aW1lLWNvbnN1bWluZywKKwkgKiBwZXJmb3JtaW5nIGFuIGVhcmx5IGNoZWNrIG9uIHRoZSBkcm9w IGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0aXRpb25zIGlzCisJICogcHJlZmVyYWJsZS4KKwkgKi8K Kwlmb3JlYWNoX29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7 CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCisJCS8qIEdldCBvaWQgb2YgdGhlIGxhdGVyIHRv IGJlIGRyb3BwZWQgcmVsYXRpb24uICovCisJCW9iamVjdC5vYmplY3RJZCA9IG1lcmdpbmdQYXJ0 aXRpb25PaWQ7CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQlvYmpl Y3Qub2JqZWN0U3ViSWQgPSAwOworCisJCXBlcmZvcm1EZWxldGlvbkNoZWNrKCZvYmplY3QsIERS T1BfUkVTVFJJQ1QsIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworCX0KKworCS8qCisJICog Q3JlYXRlIGEgdGFibGUgZm9yIHRoZSBuZXcgcGFydGl0aW9uLCB1c2luZyB0aGUgcGFydGl0aW9u ZWQgdGFibGUgYXMgYQorCSAqIG1vZGVsLgorCSAqLworCUFzc2VydChPaWRJc1ZhbGlkKG93bmVy SWQpKTsKKwluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUod3F1ZXVlLCBjbWQtPm5h bWUsIHJlbCwgb3duZXJJZCk7CisKKwkvKgorCSAqIFN3aXRjaCB0byB0aGUgdGFibGUgb3duZXIn cyB1c2VyaWQsIHNvIHRoYXQgYW55IGluZGV4IGZ1bmN0aW9ucyBhcmUgcnVuCisJICogYXMgdGhh dCB1c2VyLiAgQWxzbywgbG9ja2Rvd24gc2VjdXJpdHktcmVzdHJpY3RlZCBvcGVyYXRpb25zIGFu ZAorCSAqIGFycmFuZ2UgdG8gbWFrZSBHVUMgdmFyaWFibGUgY2hhbmdlcyBsb2NhbCB0byB0aGlz IGNvbW1hbmQuCisJICoKKwkgKiBOZWVkIHRvIGRvIGl0IGFmdGVyIGRldGVybWluaW5nIHRoZSBu YW1lc3BhY2UgaW4gdGhlCisJICogY3JlYXRlUGFydGl0aW9uVGFibGUoKSBjYWxsLgorCSAqLwor CUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7 CisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChvd25lcklkLAorCQkJCQkJICAgc2F2ZV9zZWNfY29u dGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNURURfT1BFUkFUSU9OKTsKKwlzYXZlX25lc3RsZXZlbCA9 IE5ld0dVQ05lc3RMZXZlbCgpOworCVJlc3RyaWN0U2VhcmNoUGF0aCgpOworCisJLyogQ29weSBk YXRhIGZyb20gbWVyZ2VkIHBhcnRpdGlvbnMgdG8gdGhlIG5ldyBwYXJ0aXRpb24uICovCisJTWVy Z2VQYXJ0aXRpb25zTW92ZVJvd3Mod3F1ZXVlLCBtZXJnaW5nUGFydGl0aW9ucywgbmV3UGFydFJl bCk7CisKKwkvKiBEcm9wIHRoZSBjdXJyZW50IHBhcnRpdGlvbnMgYmVmb3JlIGF0dGFjaGluZyB0 aGUgbmV3IG9uZS4gKi8KKwlmb3JlYWNoX29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5n UGFydGl0aW9ucykKKwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCisJCW9iamVjdC5vYmpl Y3RJZCA9IG1lcmdpbmdQYXJ0aXRpb25PaWQ7CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25S ZWxhdGlvbklkOworCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCisJCXBlcmZvcm1EZWxldGlv bigmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCAwKTsKKwl9CisKKwlsaXN0X2ZyZWUobWVyZ2luZ1Bh cnRpdGlvbnMpOworCisJLyoKKwkgKiBBdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRvIHRoZSBwYXJ0 aXRpb25lZCB0YWJsZS4gd3F1ZXVlID0gTlVMTDoKKwkgKiB2ZXJpZmljYXRpb24gZm9yIGVhY2gg Y2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90IG5lZWRlZC4KKwkgKi8KKwlhdHRhY2hQYXJ0aXRpb25U YWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWwsIGNtZC0+Ym91bmQpOworCisJLyogS2VlcCB0aGUg bG9jayB1bnRpbCBjb21taXQuICovCisJdGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsK KworCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rp b25zLiAqLworCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOworCisJLyogUmVz dG9yZSB0aGUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250ZXh0LiAqLworCVNldFVzZXJJZEFuZFNl Y0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5k ZXggNzg1NmNlOWQ3OGYuLjU2MmYxMWQ2Njc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTc2Miw3ICs3NjIs NyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwg TGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU9SREVSIE9SRElOQUxJVFkgT1RIRVJTIE9V VF9QIE9VVEVSX1AKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05F UgogCi0JUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5H IFBBU1NXT1JEIFBBVEgKKwlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElU SU9OIFBBUlRJVElPTlMgUEFTU0lORyBQQVNTV09SRCBQQVRICiAJUEVSSU9EIFBMQUNJTkcgUExB TiBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBS RVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9D RURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCkBAIC0yMzk1LDYgKzIzOTUsNyBA QCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfQXR0YWNoUGFydGl0aW9uOwog CQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9ICQ0OworCQkJCQljbWQtPnBh cnRsaXN0ID0gTklMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVm ID0gKE5vZGUgKikgY21kOwogCkBAIC0yNDA5LDYgKzI0MTAsNyBAQCBwYXJ0aXRpb25fY21kOgog CQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9uOwogCQkJCQljbWQtPm5hbWUgPSAk MzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CiAJ CQkJCWNtZC0+Y29uY3VycmVudCA9ICQ0OwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAK QEAgLTI0MjIsNiArMjQyNCwyMSBAQCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0g QVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU7CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQlj bWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKKwkJCQkJY21kLT5j b25jdXJyZW50ID0gZmFsc2U7CisJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKKwkJCQkJJCQg PSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJU SVRJT05TICgpIElOVE8gPHBhcnRpdGlvbl9uYW1lPiAqLworCQkJfCBNRVJHRSBQQVJUSVRJT05T ICcoJyBxdWFsaWZpZWRfbmFtZV9saXN0ICcpJyBJTlRPIHF1YWxpZmllZF9uYW1lCisJCQkJewor CQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBh cnRpdGlvbkNtZCAqY21kID0gbWFrZU5vZGUoUGFydGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0 eXBlID0gQVRfTWVyZ2VQYXJ0aXRpb25zOworCQkJCQljbWQtPm5hbWUgPSAkNzsKKwkJCQkJY21k LT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSAkNDsKIAkJCQkJY21kLT5jb25j dXJyZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwpAQCAtMjQzOCw2ICsyNDU1LDcgQEAgaW5kZXhfcGFydGl0aW9uX2NtZDoKIAkJ CQkJbi0+c3VidHlwZSA9IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7 CiAJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklMOwogCQkJ CQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwog CkBAIC0xODAzOCw2ICsxODA1Niw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFSU0VS CiAJCQl8IFBBUlRJQUwKIAkJCXwgUEFSVElUSU9OCisJCQl8IFBBUlRJVElPTlMKIAkJCXwgUEFT U0lORwogCQkJfCBQQVNTV09SRAogCQkJfCBQQVRICkBAIC0xODY2OCw2ICsxODY4Nyw3IEBAIGJh cmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSU0VSCiAJCQl8IFBBUlRJQUwKIAkJCXwgUEFSVElU SU9OCisJCQl8IFBBUlRJVElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAogCQkJfCBQ QVRICmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCBlOTZiMzhhNTlkNS4uYmYwMmUz ODc4NWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzIsNiArMzIsNyBAQAog I2luY2x1ZGUgImNhdGFsb2cvaGVhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNp bmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9u LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29s bGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCkBAIC01OCw2ICs1 OSw4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfdXRpbGNtZC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKKyNpbmNsdWRlICJw YXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgorI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVz Yy5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMv YWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTM1MDksNiArMzUxMiwxMzUg QEAgdHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3Ry aW5nLAogfQogCiAKKy8qCisgKiBjaGVja1BhcnRpdGlvbgorICogQ2hlY2sgd2hldGhlciBwYXJ0 UmVsT2lkIGlzIGEgbGVhZiBwYXJ0aXRpb24gb2YgdGhlIHBhcmVudCB0YWJsZSAocmVsKS4KKyAq Lworc3RhdGljIHZvaWQKK2NoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxP aWQpCit7CisJUmVsYXRpb24JcGFydFJlbDsKKworCXBhcnRSZWwgPSB0YWJsZV9vcGVuKHBhcnRS ZWxPaWQsIE5vTG9jayk7CisKKwlpZiAocGFydFJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJ TkRfUkVMQVRJT04pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05H X09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAu Li4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUg c3ViLXBhcnRpdGlvbnMiKSk7CisKKwlpZiAoIXBhcnRSZWwtPnJkX3JlbC0+cmVsaXNwYXJ0aXRp b24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9u ZWQgdGFibGUgXCIlc1wiIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJl bCksIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRB QkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3Qg aGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKKworCWlmIChnZXRfcGFydGl0aW9uX3BhcmVudChwYXJ0 UmVsT2lkLCBmYWxzZSkgIT0gUmVsYXRpb25HZXRSZWxpZChyZWwpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfVEFCTEUpLAorCQkJCWVycm1zZygicmVs YXRpb24gXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiBcIiVzXCIiLAorCQkJ CQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsKSksCisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikp OworCisJdGFibGVfY2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKK30KKworLyoKKyAqIHRyYW5zZm9y bVBhcnRpdGlvbkNtZEZvck1lcmdlIC0KKyAqCQlhbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZvciBt ZXJnZWQgcGFydGl0aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiB0aGUgcmVzdWx0aW5nCisgKiBw YXJ0aXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJn ZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJT2lk CQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJcGFydE9pZDsKKwlSZWxhdGlvbglwYXJlbnQgPSBj eHQtPnJlbDsKKwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0cmF0ZWd5OworCUxpc3RDZWxs ICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJYm9vbAkJaXNEZWZhdWx0UGFydCA9IGZh bHNlOworCUxpc3QJICAgKnBhcnRPaWRzID0gTklMOworCisJa2V5ID0gUmVsYXRpb25HZXRQYXJ0 aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5 KTsKKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfSEFTSCkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQllcnJtc2coInBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBt ZXJnZWQiKSk7CisKKwkvKiBEb2VzIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSAocGFyZW50KSBoYXZl IGEgZGVmYXVsdCBwYXJ0aXRpb24/ICovCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVmYXVsdF9v aWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCB0cnVlKSk7 CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmFuZ2VWYXIg ICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogUGFydGl0aW9u cyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvcl9lYWNo X2NlbGwobGlzdHB0cjIsIHBhcnRjbWQtPnBhcnRsaXN0LCBsbmV4dChwYXJ0Y21kLT5wYXJ0bGlz dCwgbGlzdHB0cikpCisJCXsKKwkJCVJhbmdlVmFyICAgKm5hbWUyID0gKFJhbmdlVmFyICopIGxm aXJzdChsaXN0cHRyMik7CisKKwkJCWlmIChlcXVhbChuYW1lLCBuYW1lMikpCisJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJ ZXJybXNnKCJwYXJ0aXRpb24gd2l0aCBuYW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBuYW1l LT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTIt PmxvY2F0aW9uKSk7CisJCX0KKworCQkvKgorCQkgKiBTZWFyY2ggdGhlIERFRkFVTFQgcGFydGl0 aW9uIGluIHRoZSBsaXN0LiBPcGVuIGFuZCBsb2NrIHBhcnRpdGlvbnMKKwkJICogYmVmb3JlIGNh bGN1bGF0aW5nIHRoZSBib3VuZGFyeSBmb3IgcmVzdWx0aW5nIHBhcnRpdGlvbiwgd2UgYWxzbwor CQkgKiBjaGVjayBmb3Igb3duZXJzaGlwIGFsb25nIHRoZSB3YXkuICBXZSBuZWVkIHRvIHVzZQor CQkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIGhlcmUsIGJlY2F1c2UgdGhlc2UgbWVyZ2VkIHBhcnRp dGlvbnMgd2lsbCBiZQorCQkgKiBkZXRhY2hlZCBhbmQgdGhlbiBkcm9wcGVkIGluIEFURXhlY01l cmdlUGFydGl0aW9ucy4KKwkJICovCisJCXBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5k ZWQobmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jaywgMCwKKwkJCQkJCQkJCQkgICBSYW5nZVZhckNh bGxiYWNrT3duc1JlbGF0aW9uLAorCQkJCQkJCQkJCSAgIE5VTEwpOworCQkvKiBJcyB0aGUgY3Vy cmVudCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KKwkJaWYgKHBhcnRPaWQgPT0g ZGVmYXVsdFBhcnRPaWQpCisJCQlpc0RlZmF1bHRQYXJ0ID0gdHJ1ZTsKKworCQkvKgorCQkgKiBF eHRlbmRlZCBjaGVjayBiZWNhdXNlIHRoZSBzYW1lIHBhcnRpdGlvbiBjYW4gaGF2ZSBkaWZmZXJl bnQgbmFtZXMKKwkJICogKGZvciBleGFtcGxlLCAicGFydF9uYW1lIiBhbmQgInB1YmxpYy5wYXJ0 X25hbWUiKS4KKwkJICovCisJCWZvcmVhY2gobGlzdHB0cjIsIHBhcnRPaWRzKQorCQl7CisJCQlP aWQJCQljdXJPaWQgPSBsZmlyc3Rfb2lkKGxpc3RwdHIyKTsKKworCQkJaWYgKGN1ck9pZCA9PSBw YXJ0T2lkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElD QVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMg YWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24o Y3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7CisJCX0KKworCQljaGVja1BhcnRpdGlvbihw YXJlbnQsIHBhcnRPaWQpOworCisJCXBhcnRPaWRzID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBh cnRPaWQpOworCX0KKworCS8qIEFsbG9jYXRlIHRoZSBib3VuZCBvZiB0aGUgcmVzdWx0aW5nIHBh cnRpdGlvbi4gKi8KKwlBc3NlcnQocGFydGNtZC0+Ym91bmQgPT0gTlVMTCk7CisJcGFydGNtZC0+ Ym91bmQgPSBtYWtlTm9kZShQYXJ0aXRpb25Cb3VuZFNwZWMpOworCisJLyogRmlsbCB0aGUgcGFy dGl0aW9uIGJvdW5kLiAqLworCXBhcnRjbWQtPmJvdW5kLT5zdHJhdGVneSA9IHN0cmF0ZWd5Owor CXBhcnRjbWQtPmJvdW5kLT5sb2NhdGlvbiA9IC0xOworCXBhcnRjbWQtPmJvdW5kLT5pc19kZWZh dWx0ID0gaXNEZWZhdWx0UGFydDsKKwlpZiAoIWlzRGVmYXVsdFBhcnQpCisJCWNhbGN1bGF0ZV9w YXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKHBhcmVudCwgcGFydGNtZC0+cGFydGxpc3QsCisJCQkJ CQkJCQkJCXBhcnRPaWRzLCBwYXJ0Y21kLT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0LT5wc3RhdGUp OworfQorCiAvKgogICogdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJCXBhcnNlIGFuYWx5 c2lzIGZvciBBTFRFUiBUQUJMRQpAQCAtMzc4NiwxMiArMzkxOCwyNiBAQCB0cmFuc2Zvcm1BbHRl clRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMg PSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVyZ2VQ YXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlv bkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5ndGgocGFydGNtZC0+cGFydGxp c3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJZXJybXNnKCJsaXN0IG9mIHBhcnRp dGlvbnMgdG8gYmUgbWVyZ2VkIHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25z IikpOworCisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQp OworCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJ CQl9CisKIAkJCWRlZmF1bHQ6CiAKIAkJCQkvKgotCQkJCSAqIEN1cnJlbnRseSwgd2Ugc2hvdWxk bid0IGFjdHVhbGx5IGdldCBoZXJlIGZvciBzdWJjb21tYW5kCi0JCQkJICogdHlwZXMgdGhhdCBk b24ndCByZXF1aXJlIHRyYW5zZm9ybWF0aW9uOyBidXQgaWYgd2UgZG8sIGp1c3QKLQkJCQkgKiBl bWl0IHRoZW0gdW5jaGFuZ2VkLgorCQkJCSAqIEN1cnJlbnRseSwgd2Ugc2hvdWxkbid0IGFjdHVh bGx5IGdldCBoZXJlIGZvciB0aGUKKwkJCQkgKiBzdWJjb21tYW5kIHR5cGVzIHRoYXQgZG9uJ3Qg cmVxdWlyZSB0cmFuc2Zvcm1hdGlvbjsgYnV0IGlmCisJCQkJICogd2UgZG8sIGp1c3QgZW1pdCB0 aGVtIHVuY2hhbmdlZC4KIAkJCQkgKi8KIAkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBj bWQpOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXgg NDBhYzcwMGQ1MjkuLmI4MmIyOWRlOGY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmMKQEAgLTQ5NjgsMyArNDk2OCwxOTkgQEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBH X0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChyb3dIYXNoICUgbW9kdWx1cyA9PSBy ZW1haW5kZXIpOwogfQorCisvKgorICogY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3Jhbmdl CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCisgKgorICogVGhp cyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3Jf bWVyZ2UoKS4gVGhpcworICogZnVuY3Rpb24gY29tcGFyZXMgdGhlIHVwcGVyIGJvdW5kIG9mIGZp cnN0X2JvdW5kIGFuZCB0aGUgbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9ib3VuZC4gVGhlc2Ug Ym91bmRzIHNob3VsZCBiZSBlcXVhbC4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFi bGUKKyAqIGZpcnN0X25hbWU6CQluYW1lIG9mIHRoZSBmaXJzdCBwYXJ0aXRpb24KKyAqIGZpcnN0 X2JvdW5kOgkJYm91bmQgb2YgdGhlIGZpcnN0IHBhcnRpdGlvbgorICogc2Vjb25kX25hbWU6CQlu YW1lIG9mIHRoZSBzZWNvbmQgcGFydGl0aW9uCisgKiBzZWNvbmRfYm91bmQ6CWJvdW5kIG9mIHRo ZSBzZWNvbmQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0 cnVjdCBmb3IgZGV0ZXJtaW5pbmcgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2No ZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJ CSAgUmFuZ2VWYXIgKmZpcnN0X25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpm aXJzdF9ib3VuZCwKKwkJCQkJCQkJICBSYW5nZVZhciAqc2Vjb25kX25hbWUsCisJCQkJCQkJCSAg UGFydGl0aW9uQm91bmRTcGVjICpzZWNvbmRfYm91bmQsCisJCQkJCQkJCSAgUGFyc2VTdGF0ZSAq cHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShw YXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQgKmZpcnN0X3VwcGVyOworCVBhcnRpdGlvblJh bmdlQm91bmQgKnNlY29uZF9sb3dlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQoa2V5LT5z dHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJZmlyc3RfdXBwZXIgPSBt YWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIGZpcnN0X2JvdW5kLT51cHBlcmRhdHVt cywgZmFsc2UpOworCXNlY29uZF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5 LCAtMSwgc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisKKwkvKgorCSAqIGxvd2Vy MSBhcmd1bWVudCBvZiBwYXJ0aXRpb25fcmJvdW5kX2NtcCgpIGlzIHNldCB0byBmYWxzZSBmb3Ig dGhlCisJICogY29ycmVjdCBjb21wYXJpc29uIHJlc3VsdCBvZiB0aGUgbG93ZXIgYW5kIHVwcGVy IGJvdW5kcy4KKwkgKi8KKwljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRu YXR0cywKKwkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIGtleS0+cGFydGNv bGxhdGlvbiwKKwkJCQkJCQkJICBzZWNvbmRfbG93ZXItPmRhdHVtcywgc2Vjb25kX2xvd2VyLT5r aW5kLAorCQkJCQkJCQkgIGZhbHNlLCBmaXJzdF91cHBlcik7CisJaWYgKGNtcHZhbCkKKwl7CisJ CVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGluaXRpYWwoc2Vjb25kX2JvdW5kLT5sb3dl cmRhdHVtcyk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJjYW4gbm90IG1lcmdlIHBhcnRpdGlv biBcIiVzXCIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgc2Vjb25k X25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAorCQkJCWVycmRldGFpbCgibG93 ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwg Zmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQu IiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJ fQorfQorCisvKgorICogZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjCisgKgorICogUmV0dXJucyB0 aGUgUGFydGl0aW9uQm91bmRTcGVjIGZvciB0aGUgcGFydGl0aW9uIHdpdGggdGhlIGdpdmVuIE9J RCBwYXJ0T2lkLgorICovCitzdGF0aWMgUGFydGl0aW9uQm91bmRTcGVjICoKK2dldF9wYXJ0aXRp b25fYm91bmRfc3BlYyhPaWQgcGFydE9pZCkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0J CWRhdHVtOworCWJvb2wJCWlzbnVsbDsKKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kc3BlYyA9 IE5VTEw7CisKKwkvKiBUcnkgZmV0Y2hpbmcgdGhlIHR1cGxlIGZyb20gdGhlIGNhdGNhY2hlLCBm b3Igc3BlZWQuICovCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBwYXJ0T2lkKTsK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCBwYXJ0T2lkKTsKKworCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyKFJFTE9JRCwgdHVwbGUsCisJCQkJCQkJQW51bV9wZ19jbGFzc19yZWxwYXJ0Ym91 bmQsCisJCQkJCQkJJmlzbnVsbCk7CisJaWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgInBhcnRp dGlvbiBib3VuZCBmb3IgcmVsYXRpb24gJXUgaXMgbnVsbCIsCisJCQkgcGFydE9pZCk7CisKKwli b3VuZHNwZWMgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSkpOworCisJ aWYgKCFJc0EoYm91bmRzcGVjLCBQYXJ0aXRpb25Cb3VuZFNwZWMpKQorCQllbG9nKEVSUk9SLCAi ZXhwZWN0ZWQgUGFydGl0aW9uQm91bmRTcGVjIGZvciByZWxhdGlvbiAldSIsCisJCQkgcGFydE9p ZCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCXJldHVybiBib3VuZHNwZWM7Cit9CisK Ky8qCisgKiBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZQorICoKKyAqIENhbGN1 bGF0ZXMgdGhlIGJvdW5kIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9uICJzcGVjIiBieSB1c2luZyB0 aGUgYm91bmRzIG9mCisgKiB0aGUgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQuCisgKgorICogcGFy ZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0TmFtZXM6CQluYW1lcyBvZiBwYXJ0aXRp b25zIHRvIGJlIG1lcmdlZAorICogcGFydE9pZHM6CQlPaWRzIG9mIHBhcnRpdGlvbnMgdG8gYmUg bWVyZ2VkCisgKiBzcGVjIChvdXQpOgkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhlIG1lcmdl ZCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IHRv IGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCit2b2lkCitjYWxjdWxhdGVfcGFydGl0aW9u X2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQlMaXN0ICpwYXJ0TmFt ZXMsCisJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKKwkJCQkJCQkJCVBhcnRpdGlvbkJvdW5kU3Bl YyAqc3BlYywKKwkJCQkJCQkJCVBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkg a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25Cb3VuZFNw ZWMgKmJvdW5kOworCisJQXNzZXJ0KCFzcGVjLT5pc19kZWZhdWx0KTsKKworCXN3aXRjaCAoa2V5 LT5zdHJhdGVneSkKKwl7CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFOgorCQkJewor CQkJCWludAkJCWk7CisJCQkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqKmxvd2VyX2JvdW5kczsKKwkJ CQlpbnQJCQlucGFydHMgPSBsaXN0X2xlbmd0aChwYXJ0T2lkcyk7CisJCQkJTGlzdAkgICAqYm91 bmRzID0gTklMOworCisJCQkJbG93ZXJfYm91bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiop CisJCQkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOwor CisJCQkJLyoKKwkJCQkgKiBDcmVhdGUgYW4gYXJyYXkgb2YgbG93ZXIgYm91bmRzIGFuZCBhIGxp c3Qgb2YKKwkJCQkgKiBQYXJ0aXRpb25Cb3VuZFNwZWMuCisJCQkJICovCisJCQkJZm9yZWFjaF9v aWQocGFydG9pZCwgcGFydE9pZHMpCisJCQkJeworCQkJCQlib3VuZCA9IGdldF9wYXJ0aXRpb25f Ym91bmRfc3BlYyhwYXJ0b2lkKTsKKwkJCQkJaSA9IGZvcmVhY2hfY3VycmVudF9pbmRleChwYXJ0 b2lkKTsKKworCQkJCQlsb3dlcl9ib3VuZHNbaV0gPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5k KGtleSwgaSwgYm91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwkJCQkJYm91bmRzID0gbGFwcGVu ZChib3VuZHMsIGJvdW5kKTsKKwkJCQl9CisKKwkJCQkvKiBTb3J0IHRoZSBhcnJheSBvZiBsb3dl ciBib3VuZHMuICovCisJCQkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2Yo UGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9j bXAsIGtleSk7CisKKwkJCQkvKiBSYW5nZXMgb2YgcGFydGl0aW9ucyBzaG91bGQgYmUgYWRqYWNl bnQuICovCisJCQkJZm9yIChpID0gMTsgaSA8IG5wYXJ0czsgaSsrKQorCQkJCXsKKwkJCQkJaW50 CQkJaW5kZXggPSBsb3dlcl9ib3VuZHNbaV0tPmluZGV4OworCQkJCQlpbnQJCQlwcmV2X2luZGV4 ID0gbG93ZXJfYm91bmRzW2kgLSAxXS0+aW5kZXg7CisKKwkJCQkJY2hlY2tfdHdvX3BhcnRpdGlv bnNfYm91bmRzX3JhbmdlKHBhcmVudCwKKwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAqKSBsaXN0 X250aChwYXJ0TmFtZXMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJv dW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAg KFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAg KFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJ CQkJCQkgIHBzdGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBUaGUgbG93ZXIgYm91bmQg b2YgdGhlIGZpcnN0IHBhcnRpdGlvbiBpcyB0aGUgbG93ZXIgYm91bmQKKwkJCQkgKiBvZiB0aGUg bWVyZ2VkIHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT5sb3dlcmRhdHVtcyA9CisJCQkJ CSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzWzBd LT5pbmRleCkpLT5sb3dlcmRhdHVtczsKKworCQkJCS8qCisJCQkJICogVGhlIHVwcGVyIGJvdW5k IG9mIHRoZSBsYXN0IHBhcnRpdGlvbiBpcyB0aGUgdXBwZXIgYm91bmQgb2YKKwkJCQkgKiB0aGUg bWVyZ2VkIHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT51cHBlcmRhdHVtcyA9CisJCQkJ CSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzW25w YXJ0cyAtIDFdLT5pbmRleCkpLT51cHBlcmRhdHVtczsKKworCQkJCXBmcmVlKGxvd2VyX2JvdW5k cyk7CisJCQkJbGlzdF9mcmVlKGJvdW5kcyk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSBQ QVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJCXsKKwkJCQkvKiBDb25zb2xpZGF0ZSBib3VuZHMg Zm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0LiAqLworCQkJCWZvcmVhY2hfb2lkKHBhcnRv aWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJCQkJYm91bmQgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3Nw ZWMocGFydG9pZCk7CisJCQkJCXNwZWMtPmxpc3RkYXR1bXMgPSBsaXN0X2NvbmNhdChzcGVjLT5s aXN0ZGF0dW1zLCBib3VuZC0+bGlzdGRhdHVtcyk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQor CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRl Z3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CisJfQorfQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCmluZGV4IDIwZDdhNjVjNjE0Li4zMTc2ZmQ5MmFkMyAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYwpAQCAtMjc3Myw2ICsyNzczLDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRl cm5faWQsCiAJCQkJCSAgIk9XTkVSIFRPIiwgIlNFVCIsICJWQUxJREFURSBDT05TVFJBSU5UIiwK IAkJCQkJICAiUkVQTElDQSBJREVOVElUWSIsICJBVFRBQ0ggUEFSVElUSU9OIiwKIAkJCQkJICAi REVUQUNIIFBBUlRJVElPTiIsICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiLAorCQkJCQkgICJN RVJHRSBQQVJUSVRJT05TICgiLAogCQkJCQkgICJPRiIsICJOT1QgT0YiKTsKIAkvKiBBTFRFUiBU QUJMRSB4eHggQUREICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRj aEFueSwgIkFERCIpKQpAQCAtMzA0Niw2ICszMDQ3LDE1IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRz KGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0 Y2hBbnksICJERVRBQ0giLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRI KCJDT05DVVJSRU5UTFkiLCAiRklOQUxJWkUiKTsKIAorCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBN RVJHRSBQQVJUSVRJT05TICggKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIs IE1hdGNoQW55LCAiTUVSR0UiLCAiUEFSVElUSU9OUyIsICIoIikpCisJeworCQlzZXRfY29tcGxl dGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOworCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShR dWVyeV9mb3JfcGFydGl0aW9uX29mX3RhYmxlKTsKKwl9CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCopIikpCisJ CUNPTVBMRVRFX1dJVEgoIklOVE8iKTsKKwogCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBPRiAqLwog CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJPRiIpKQogCQlD T01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9jb21wb3NpdGVfZGF0 YXR5cGVzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXggMDZhODc2MWUzZmUuLjM1Y2Mz NWEwYTcxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaApAQCAtMTA3LDYgKzEwNyw4IEBAIGV4 dGVybiB2b2lkIFJlbGVhc2VEZWxldGlvbkxvY2soY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0 KTsKIGV4dGVybiB2b2lkIHBlcmZvcm1EZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmpl Y3QsCiAJCQkJCQkJRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwogCitleHRlcm4g dm9pZCBwZXJmb3JtRGVsZXRpb25DaGVjayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCisJ CQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiBleHRlcm4gdm9pZCBw ZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMoY29uc3QgT2JqZWN0QWRkcmVzc2VzICpvYmplY3RzLAog CQkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdzKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCmluZGV4IGQxNDI5NGE0ZWNlLi5lNDNhMWY5NDZhOSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaApAQCAtOTY2LDEzICs5NjYsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUmFu Z2VEYXR1bQogfSBQYXJ0aXRpb25SYW5nZURhdHVtOwogCiAvKgotICogUGFydGl0aW9uQ21kIC0g aW5mbyBmb3IgQUxURVIgVEFCTEUvSU5ERVggQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFu ZHMKKyAqIFBhcnRpdGlvbkNtZCAtIGluZm8gZm9yIEFMVEVSIFRBQkxFL0lOREVYIEFUVEFDSC9E RVRBQ0ggUEFSVElUSU9OIGFuZCBmb3IKKyAqCSAgQUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9O UyBjb21tYW5kcwogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKIHsKIAlOb2RlVGFn CQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0 YWNoL2RldGFjaCAqLworCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24g dG8gYXR0YWNoL2RldGFjaC9tZXJnZSAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8q IEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworCUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlz dCBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCwgdXNlZCBpbgorCQkJCQkJCQkgKiBBTFRFUiBU QUJMRSBNRVJHRSBQQVJUSVRJT05TICovCiAJYm9vbAkJY29uY3VycmVudDsKIH0gUGFydGl0aW9u Q21kOwogCkBAIC0yNDc2LDYgKzI0NzksNyBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUK IAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFj aFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9u RmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklOQUxJWkUgKi8KKwlBVF9NZXJnZVBhcnRp dGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5LAkJCQkvKiBB REQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlkZW50aXR5IGNvbHVt biBvcHRpb25zICovCiAJQVRfRHJvcElkZW50aXR5LAkJCS8qIERST1AgSURFTlRJVFkgKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaAppbmRleCA1ZDRmZTI3ZWY5Ni4uZDRjZGEyOWMyYTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKQEAgLTMzOSw2ICszMzksNyBAQCBQR19LRVlXT1JEKCJwYXJhbWV0ZXIiLCBQQVJBTUVURVIs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnNlciIsIFBB UlNFUiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFydGlh bCIsIFBBUlRJQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InBhcnRpdGlvbiIsIFBBUlRJVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQor UEdfS0VZV09SRCgicGFydGl0aW9ucyIsIFBBUlRJVElPTlMsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIsIFBBU1NXT1JELCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXRoIiwgUEFUSCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmgKaW5kZXggY2Y5M2Y5ZTViZWYuLjI1YzMxMWZmOWJkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlv bmluZy9wYXJ0Ym91bmRzLmgKQEAgLTE0Myw0ICsxNDMsMTAgQEAgZXh0ZXJuIGludAlwYXJ0aXRp b25fcmFuZ2VfZGF0dW1fYnNlYXJjaChGbWdySW5mbyAqcGFydHN1cGZ1bmMsCiBleHRlcm4gaW50 CXBhcnRpdGlvbl9oYXNoX2JzZWFyY2goUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbywKIAkJ CQkJCQkJICAgaW50IG1vZHVsdXMsIGludCByZW1haW5kZXIpOwogCitleHRlcm4gdm9pZCBjYWxj dWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJ CQkJCQlMaXN0ICpwYXJ0TmFtZXMsCisJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKKwkJCQkJ CQkJCQkJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCQkJCVBhcnNlU3RhdGUg KnBzdGF0ZSk7CisKICNlbmRpZgkJCQkJCQkvKiBQQVJUQk9VTkRTX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0IGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVmNjQ3MjY3MWI5Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKQEAgLTAsMCAr MSwyNDMgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0 ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0 ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVy ZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0 XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQ REFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0 cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0 YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0t Cit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAg ICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQy NSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJj IHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUg dHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRw YXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQg dCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBD T01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0 YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBp fHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAg fCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8y MCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9k ZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBzMmIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYjog QkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7 CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VS SUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElP TlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdo ZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwu Li4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVv aWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAgICAgIAorLS0tLS0t LS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwgMXx0ZXh0MDFtb2RpZgordHBh cnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUgICAgIAor dHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUgICAg IAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWIg czFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3Rl cCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEw LCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAg czJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2Fp dGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgor c3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAq IEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0t LS0tLS0tLQordHBhcnRfMDBfMjAgIHwgMXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAgIHwgNXx0 ZXh0MDUgICAgIAordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUgICAgIAordHBhcnRfMjBfMzAgIHwy NXx0ZXh0MjUgICAgIAordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMy dSBzMWMgczJjIHMycworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFC TEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEn KTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwg UkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBB UlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0 ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9k aWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz MnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1Qg dGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2Ns YXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAgICAgIAor LS0tLS0tLS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwgMXx0ZXh0MDFtb2Rp ZgordHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUg ICAgIAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBhcnRfZGVmYXVsdHwzNXx0ZXh0 MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMy YyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVH SU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJM RSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8g dHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNF VCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6 IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7Citz dGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZ IHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8 IGl8dCAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tLS0tLS0KK3RwYXJ0XzAwXzIw ICB8IDF8dGV4dDAxbW9kaWYKK3RwYXJ0XzAwXzIwICB8IDV8dGV4dDA1ICAgICAKK3RwYXJ0XzAw XzIwICB8MTV8dGV4dDE1ICAgICAKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1ICAgICAKK3RwYXJ0 X2RlZmF1bHR8MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJi czogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQg SU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElU SU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBz MmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicg d2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTog PC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJs ZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6 OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0t LS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0 cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAg Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAg ICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFi cnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRw YXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFy dF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQg PSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09N TUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0 ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwg MXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBfMjAg IHwxNXx0ZXh0MTUgICAgIAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBhcnRfZGVm YXVsdHwzNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czJicyBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczog QkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMx YnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxU RVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIw KSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0 cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0 ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBP UkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9p ZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFy dF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0 cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAg Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUyIHMxYyBzMmMgczJzCitz dGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAn dGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1l cmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFy dF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1Mjog VVBEQVRFIHRwYXJ0IFNFVCBpID0gMjEgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMydTI6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1J VDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JE RVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQg ICAgIHwgaXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8yMCAgfCA1 fHRleHQwNQordHBhcnRfMDBfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjF8dGV4dDAx Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJv d3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJi IHMydTMgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMx YjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9O UyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6 IEJFR0lOOworc3RlcCBzMnUzOiBVUERBVEUgdHBhcnQgU0VUIGkgPSAxMSB3aGVyZSBpID0gMTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1MzogPC4uLiBjb21wbGV0 ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFU RSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0t LS0KK3RwYXJ0XzAwXzIwICB8IDV8dGV4dDA1Cit0cGFydF8wMF8yMCAgfDExfHRleHQwMQordHBh cnRfMDBfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZh dWx0fDM1fHRleHQzNQorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1 bGUKaW5kZXggMTEyZjA1YTM2NzcuLmRiNDJjNTM1YmE2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9p c29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb25fc2NoZWR1bGUKQEAgLTEwOSw2ICsxMDksNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVw ZGF0ZS0xCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5 LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0aXRpb24t bWVyZ2UKIHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6 IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3Mv cGFydGl0aW9uLW1lcmdlLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmYzYzVjZTJmYmYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjCkBAIC0wLDAgKzEsNjIgQEAKKyMgVmVyaWZ5IHRoYXQg TUVSR0Ugb3BlcmF0aW9uIGxvY2tzIERNTCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFi bGUKKworc2V0dXAKK3sKKyAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBU QUJMRSB0cGFydChpIGludCwgdCB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFU RSBUQUJMRSB0cGFydF8wMF8xMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMTApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0 IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8z MCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JF QVRFIFRBQkxFIHRwYXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7CisgIElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoNSwgJ3RleHQwNScpOworICBJTlNFUlQgSU5UTyB0cGFy dCBWQUxVRVMgKDE1LCAndGV4dDE1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMjUs ICd0ZXh0MjUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgzNSwgJ3RleHQzNScpOwor fQorCit0ZWFyZG93bgoreworICBEUk9QIFRBQkxFIHRwYXJ0OworfQorCitzZXNzaW9uIHMxCitz dGVwIHMxYgl7IEJFR0lOOyB9CitzdGVwIHMxYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMWJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklB TElaQUJMRTsgfQorc3RlcCBzMW1lcmcJeyBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJ T05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7IH0KK3N0ZXAg czFjCXsgQ09NTUlUOyB9CisKKworc2Vzc2lvbiBzMgorc3RlcCBzMmIJeyBCRUdJTjsgfQorc3Rl cCBzMmJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAg czJicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczJpCXsg SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IH0KK3N0ZXAgczJ1CXsgVVBE QVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgfQorc3RlcCBzMnUy CXsgVVBEQVRFIHRwYXJ0IFNFVCBpID0gMjEgd2hlcmUgaSA9IDE7IH0KK3N0ZXAgczJ1Mwl7IFVQ REFURSB0cGFydCBTRVQgaSA9IDExIHdoZXJlIGkgPSAxOyB9CitzdGVwIHMyYwl7IENPTU1JVDsg fQorc3RlcCBzMnMJeyBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JE RVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOyB9CisKKworIyBz MiBpbnNlcnRzIHJvdyBpbnRvIHRhYmxlLiBzMSBzdGFydHMgTUVSR0UgUEFSVElUSU9OUyB0aGVu CisjIHMyIGlzIHRyeWluZyB0byB1cGRhdGUgaW5zZXJ0ZWQgcm93IGFuZCB3YWl0cyB1bnRpbCBz MSBmaW5pc2hlcworIyBNRVJHRSBvcGVyYXRpb24uCisKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJj IHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJiIHMyaSBzMmMg czFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJj IHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczJicnIgczJp IHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnJyIHMy aSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnJy IHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBz MmJzIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBz MmJzIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9u IHMyYnMgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKKyMgVHVwbGUg cm91dGluZyBiZXR3ZWVuIHBhcnRpdGlvbnMuCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWIg czFtZXJnIHMyYiBzMnUyIHMxYyBzMmMgczJzCisKKyMgVHVwbGUgcm91dGluZyBiZXR3ZWVuIG1l cmdpbmcgcGFydGl0aW9ucy4KK3Blcm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJi IHMydTMgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxf ZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CmluZGV4IGYxYzZmMDVmZTE3Li42 YjViNDA5MDVlNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNl L2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRs X2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CkBAIC0xMTMsNiArMTEzLDExIEBAIEFM VEVSIFRBQkxFIHBhcnQgREVUQUNIIFBBUlRJVElPTiBwYXJ0MjsKIE5PVElDRTogIERETCB0ZXN0 OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxURVIgVEFCTEUKIE5PVElDRTogICAgc3ViY29tbWFu ZDogdHlwZSBERVRBQ0ggUEFSVElUSU9OIGRlc2MgdGFibGUgcGFydDIKIERST1AgVEFCTEUgcGFy dDI7CitDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9GIHBhcnQgRk9SIFZBTFVFUyBGUk9N ICgxMDApIHRvICgyMDApOworTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgc2ltcGxlLCB0YWcgQ1JF QVRFIFRBQkxFCitBTFRFUiBUQUJMRSBwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHBhcnQxLCBwYXJ0 MikgSU5UTyBwYXJ0MTsKK05PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcg QUxURVIgVEFCTEUKK05PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBNRVJHRSBQQVJUSVRJT05T IGRlc2MgPE5VTEw+CiBBTFRFUiBUQUJMRSBwYXJ0IEFERCBQUklNQVJZIEtFWSAoYSk7CiBOT1RJ Q0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6 ICAgIHN1YmNvbW1hbmQ6IHR5cGUgQUREIENPTlNUUkFJTlQgKGFuZCByZWN1cnNlKSBkZXNjIGNv bnN0cmFpbnQgcGFydF9hX25vdF9udWxsIG9uIHRhYmxlIHBhcnQKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKaW5kZXggMzgw YmEyNjYwNzUuLmEwNTQ5ZWY4MjQ3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbApAQCAtNjAsNiArNjAsOSBAQCBBTFRF UiBUQUJMRSBwYXJ0IEFUVEFDSCBQQVJUSVRJT04gcGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDEp IHRvICgyMDApOwogQUxURVIgVEFCTEUgcGFydCBERVRBQ0ggUEFSVElUSU9OIHBhcnQyOwogRFJP UCBUQUJMRSBwYXJ0MjsKIAorQ1JFQVRFIFRBQkxFIHBhcnQyIFBBUlRJVElPTiBPRiBwYXJ0IEZP UiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKTsKK0FMVEVSIFRBQkxFIHBhcnQgTUVSR0UgUEFS VElUSU9OUyAocGFydDEsIHBhcnQyKSBJTlRPIHBhcnQxOworCiBBTFRFUiBUQUJMRSBwYXJ0IEFE RCBQUklNQVJZIEtFWSAoYSk7CiAKIENSRUFURSBUQUJMRSB0YmwgKApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5kZXggMTkz NjY5ZjJiYzEuLjdkZTVkZGI4Nzg1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTI5Niw2ICsyOTYsOSBAQCBnZXRf YWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0RldGFj aFBhcnRpdGlvbkZpbmFsaXplOgogCQkJCXN0cnR5cGUgPSAiREVUQUNIIFBBUlRJVElPTiAuLi4g RklOQUxJWkUiOwogCQkJCWJyZWFrOworCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJ c3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05TIjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfQWRk SWRlbnRpdHk6CiAJCQkJc3RydHlwZSA9ICJBREQgSURFTlRJVFkiOwogCQkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZTQwYWJmMzhhMAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApAQCAtMCww ICsxLDEwOTcgQEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVS IFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBTQ0hF TUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBw dWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9y IGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJ VElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAo JzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIy IiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2Fs ZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19m ZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJS T1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVz X2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICAic2FsZXNfYXBy MjAyMiIgaXMgbm90IGEgdGFibGUKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElU SU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMK Ky0tIEVSUk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0 aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorLS0gREVUQUlMOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNl Y3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJ TlRPIHNhbGVzX2phbl9tYXIyMDIyOworRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAi c2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCitE RVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBl cXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorSElO VDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRp b24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRp dGlvbiAic2FsZXNfamFuMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIw MjEiCistLSBERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIi IGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMy MDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNf amFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2ph bl9mZWIyMDIyOworRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfamFuMjAy MiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitERVRBSUw6ICBsb3dl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUg dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRB QkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRv IGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIy MDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBw YXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUg MTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBw YXJ0aXRpb25zLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS1FUlJPUiwgc2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfYXByXzI7CitFUlJPUjog IHJlbGF0aW9uICJzYWxlc19hcHJfMiIgYWxyZWFkeSBleGlzdHMKK0NSRUFURSBWSUVXIGphbjIw MjJ2IGFzIFNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8g c2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBjYW5ub3QgZHJvcCB0YWJsZSBzYWxlc19q YW4yMDIyIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHZpZXcg amFuMjAyMnYgZGVwZW5kcyBvbiB0YWJsZSBzYWxlc19qYW4yMDIyCitISU5UOiAgVXNlIERST1Ag Li4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorRFJPUCBWSUVX IGphbjIwMjJ2OworLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3RvbSBwYXJ0aXRpb25zIG9yZGVy LCBzb3VyY2UgcGFydGl0aW9ucyBub3QgaW4gdGhlIHNlYXJjaF9wYXRoCitTRVQgc2VhcmNoX3Bh dGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKAorICBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYS5zYWxlc19tYXIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19qYW4y MDIyKSBJTlRPIHNhbGVzX2phbl9mZWJfbWFyMjAyMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitQUkVQQVJFIGdldF9wYXJ0aXRpb25faW5mbyhy ZWdjbGFzc1tdKSBBUworU0VMRUNUICBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywKKyAgICAg ICAgYy5yZWxwZXJzaXN0ZW5jZSwKKyAgICAgICAgYy5yZWxraW5kLAorICAgICAgICBpLmluaGRl dGFjaHBlbmRpbmcsCisgICAgICAgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKQorRlJPTSAgICBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdf aW5oZXJpdHMgaQorV0hFUkUgICBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0g QU5ZKCQxKQorT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpID0gJ0RFRkFVTFQnLAorICAgICAgICAgYy5vaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExB VEUgIkMiOworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAg ICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAgICAgICAgICAgICAgICAgIHwgcmVscGVyc2lz dGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBn X2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwg cCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg RlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX2FwcjIwMjIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgn MDUtMDEtMjAyMicpCisgc2FsZXNfZGVjMjAyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKCcxMi0wMS0yMDIxJykgVE8gKCcxMi0zMS0yMDIxJykKKyBzYWxlc19vdGhl cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg0IHJvd3MpCisKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSwg dGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21h cjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4 IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyks CisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIy LTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYs ICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMn KSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxk ZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIw MjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAo MTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAg NTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCBwZ19jYXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVm KCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzKTsKKyBwZ19nZXRfcGFydGtleWRlZiAgCistLS0tLS0t LS0tLS0tLS0tLS0tLQorIFJBTkdFIChzYWxlc19kYXRlKQorKDEgcm93KQorCistLSBzaG93IHBh cnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tz YWxlc19yYW5nZX0nKTsKKyAgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5k IHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAo JzA1LTAxLTIwMjInKQorIHNhbGVzX2ZlYjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgn MDMtMDEtMjAyMicpCisgc2FsZXNfamFuMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcw Mi0wMS0yMDIyJykKKyBzYWxlc19tYXIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0 LTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworLS0gY2hlY2sgc2NoZW1hLXF1 YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19h cHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIw MjI7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFy dGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQg ICAgICAgICAgICAgICAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0 YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAo JzA1LTAxLTIwMjInKQorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfb3Ro ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwg ciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAy MicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsKKyAgICAgICAg c2NoZW1hbmFtZSAgICAgICAgfCAgICAgICB0YWJsZW5hbWUgICAgICAgfCAgICAgICAgICAgICAg aW5kZXhuYW1lICAgICAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYTIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBzYWxlc19m ZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVY IHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQor KDEgcm93KQorCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2Ug T1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNv bl9pZDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVvaWQgICAgICAgICAgICAgICAgICAgIHwg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwg ICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAt MjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAg ICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0y MDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAg ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIw MjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAg ICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAy MgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIy CisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAg ICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIK KyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAg ICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgor IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAg ICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAg ICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNh bGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2Fs ZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg IDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxl c19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg MTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVz X290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAx NCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93 cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBPRkY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4g JzIwMjItMDEtMDEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0 ZV9pZHggb24gc2FsZXNfZmViX21hcl9hcHIyMDIyCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0 ZSA+ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRl ID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJu b2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYg fCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAg ICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAg ICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0y MDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAg ICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8 IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMTAgcm93cykK KworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0t IE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFydGl0aW9uCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNh bGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxl c19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAg ICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjIt MDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwg ICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUw LCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKy0tIE1lcmdlIHBh cnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGgg dGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X290aGVycyBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgor ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4 LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAg fCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAg ICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDcgcm93cykKKworLS0g c2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9p bmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwg cmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhw ciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHAgICAgICAgICAgICAgIHwg ciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIy JykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19mZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjIn KSBUTyAoJzAzLTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0 aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERF RkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2Rh eSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAg IChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9u dGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcp KSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMg ZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1Ig VkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAy MiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJ VElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZB TFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3Bl cnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAg KCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwK KyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCks CisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEp LAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0 KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX2RhdGU7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2Fs ZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIHNhbGVzX2RlYzIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQK KyBzYWxlc19kZWMyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNf amFuMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIg fCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAy IHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19mZWIyMDIyIHwgTWFuYWdl cjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIu MDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmViMjAyMiB8IE1hbmFnZXIzICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwg U2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRl cGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50 Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93 cykKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4y MDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworSU5TRVJUIElOVE8g c2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2Vy MicsIDIwMjIsIDIsIDEwKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c19kYXRlOworICAgICB0YWJsZW9pZCAgICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3ll YXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRt ZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorIHNhbGVzX2RlYzIwMjIgICAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAg ICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50Cisg c2FsZXNfZGVjMjAyMiAgICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAg ICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxl c19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ph bl9mZWIyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8 ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2Zl YjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAg ICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAy MiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAg IDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8 IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5h Z2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAy Mi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIx ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAz LjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQg fCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMyAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNh bGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CistLQor LS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdn ZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAg J1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190 cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JF R0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hl biA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsK KyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVv cGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAg IE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9D RURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRS SUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5T RVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBS T0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRy aWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVv cGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVwor Tk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdo ZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBo ZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZh bm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElO U0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUg TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2Fs ZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworLS0gMiB0cmlnZ2VycyBzaG91 bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUg VkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBj YWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNF OiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChy b3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOwor Tk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdo ZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgIDEwIHwgTWF5CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAyMCB8 IFNtaXJub2ZmCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsK Ky0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3Bl cnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2Fs ZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlv bnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEw XzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAo c2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29u X2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEn LCAxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIw LCAxMDEsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMg KDMxLCBub3coKSwgJ1BvcG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1Ag Q09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJU SVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxV RVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAs IHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80 MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgMSB8IFBvaXJvdAorICAgICAgICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAg MTAgfCBNYXkKKyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQ b3BvdgorICAgICAgICAgICAgIDMwIHwgRm9yZAorKDYgcm93cykKKworc2VsZWN0ICogZnJvbSBz YWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2ly b3QKKygxIHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQor ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92CisgICAg ICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOwor LS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBP RiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQt MjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor Q1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUwor ICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0w NC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAg J0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyks CisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIy LTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEy LCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVS IEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7 CisgICAgICB0YWJsZW9pZCAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgc2FsZXNfYXByMjAyMl8wMV8xMCB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwg ICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYt MjAyMgorIHNhbGVzX2FwcjIwMjJfMTBfMjAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMl8yMF8zMCB8 ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMw LTIwMjIKKyg0IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXBy MjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2Fwcl9h bGwgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAw NC0xMy0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHJfYWxsIHwgICAgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor KDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRp dGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFy dGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJ TlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisg c2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4g KCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZv c3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworQ1JFQVRF IFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChz YWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtp Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIg REVGQVVMVDsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0KTsK K0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKy0tIEVSUk9S OiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFi bGUgInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsK K0VSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9u ZWQgdGFibGUgInNhbGVzX2xpc3QiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJ VElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25z CistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0 aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwyKSBJTlRP IHNhbGVzX2FsbDsKK0VSUk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorSElOVDogIEFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBz dWItcGFydGl0aW9ucworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBh IHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3Qp IElOVE8gc2FsZXNfYWxsOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBh IHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAu Li4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUg c3ViLXBhcnRpdGlvbnMKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJMRSBz YWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDI7CitEUk9QIFRBQkxFIHNhbGVz X2xpc3Q7CistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElP TlMgd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9p ZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQs Cisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NS RUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9OIHNhbGVzX2xpc3Qg VVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rf c2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxV RVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdW bGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNh bGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywg ICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywg ICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVy ZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAg ICAgNzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAg IDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEw MDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAw LCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwg JzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcy MDIyLTAzLTExJyksCisgICgnSGFsZGVyJywgICAnT3NsbycsICAgICAgICAgICAgODAwLCAnMjAy Mi0wMy0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjIt MDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAz LTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0w OCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUn KTsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0 aXRpb25faW5mbygne3NhbGVzX2xpc3R9Jyk7CisgICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3Rl bmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9leHByICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19jZW50cmFsIHwgcCAg ICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4g KCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKQorIHNhbGVzX2Vhc3QgICAgfCBwICAgICAgICAg ICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0Jlamlu ZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpCisgc2FsZXNfbm9yZCAgICB8IHAgICAgICAgICAg ICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnT3Nsbycs ICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpCisgc2FsZXNfd2VzdCAgICB8IHAgICAgICAg ICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpCisgc2FsZXNfb3RoZXJzICB8IHAgICAgICAgICAg ICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoNSByb3dzKQorCitB TFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVz X2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOworLS0gc2hvdyBwYXJ0aXRpb25z IHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlz dH0nKTsKKyAgICAgb2lkICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRh Y2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgc2FsZXNfYWxsICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJywgJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdXYXJzYXcnLCAnQmVybGlu JywgJ0t5aXYnKQorIHNhbGVzX25vcmQgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycs ICdIZWxzaW5raScpCisgc2FsZXNfb3RoZXJzIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKygzIHJvd3MpCisKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBzYWxlc19saXN0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6 dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgIHRhYmxlb2lkICB8IHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNh bGVzX2FsbCAgfCAgICAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAg ICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3IFlvcmsgICAgICAgfCAgICAgICAgICA1MDAg fCAwMy0wMy0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorIHNhbGVz X2FsbCAgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAg IDYgfCBQb2lyb3QgICAgICAgICAgIHwgQmVybGluICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAw My0wMS0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICAg ICB8IFZsYWRpdm9zdG9rICAgIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorIHNhbGVzX2Fs bCAgfCAgICAgICAgICAgICAxMSB8IE11bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8 ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgMTIg fCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0x MC0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8 IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorIHNhbGVzX2FsbCAg fCAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8ICAg ICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKyBzYWxlc19ub3JkIHwgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0y MDIyCisgc2FsZXNfbm9yZCB8ICAgICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8IEhl bHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorIHNhbGVzX25vcmQgfCAg ICAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAg ICAgMTIwMCB8IDAzLTExLTIwMjIKKyBzYWxlc19ub3JkIHwgICAgICAgICAgICAgMTAgfCBIYWxk ZXIgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIy CisoMTQgcm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVy IG1lcmdpbmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdX YXJzYXcnOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX2FsbF9zYWxlc19zdGF0ZV9pZHgg b24gc2FsZXNfYWxsCisgICBJbmRleCBDb25kOiAoKHNhbGVzX3N0YXRlKTo6dGV4dCA9ICdXYXJz YXcnOjp0ZXh0KQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2Fs ZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAg IHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAg ICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93 cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUg c2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4 IFNjYW4gdXNpbmcgc2FsZXNfYWxsX3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxlc19hbGwgc2FsZXNf bGlzdAorICAgSW5kZXggQ29uZDogKChzYWxlc19zdGF0ZSk6OnRleHQgPSAnV2Fyc2F3Jzo6dGV4 dCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0 ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAg ICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAg IHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3Bl cnNvbl9uYW1lID0gJ0l2YW5vdic7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNf YWxsX3NhbGVzcGVyc29uX25hbWVfaWR4IG9uIHNhbGVzX2FsbCBzYWxlc19saXN0XzEKKyAgICAg ICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4 dCkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHNhbGVzX25vcmQgc2FsZXNfbGlzdF8yCisg ICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92 Jzo6dGV4dCkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBzYWxlc19ub3JkX3Nh bGVzcGVyc29uX25hbWVfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVy c29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiBzYWxlc19vdGhlcnMgc2FsZXNfbGlzdF8zCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo c2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBzYWxlc19vdGhlcnNfc2FsZXNwZXJzb25fbmFtZV9pZHgKKyAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZh bm92Jzo6dGV4dCkKKygxMSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUg c2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fy c2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisoMSByb3cpCisKK1JFU0VUIGVu YWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRyeSB0byBNRVJH RSBwYXJ0aXRpb25zIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGlu dCwgYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFU RSBUQUJMRSB0MXAxIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgx LCAyKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdF ICh0KTsKK0NSRUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00g KCdBJykgVE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOworLS0gRVJS T1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIK K0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElPTlMgKHQxcDEsIHQycGEpIElOVE8gdDJwOwor RVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0 MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJn ZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgInQzIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInQyIgorQUxURVIgVEFCTEUg dDIgTUVSR0UgUEFSVElUSU9OUyAodDJwYSwgdDMpIElOVE8gdDJwOworRVJST1I6ICAidDMiIGlz IG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAidDIiCitISU5UOiAgQUxURVIg VEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24n dCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRBQkxFIHQzOworRFJPUCBUQUJMRSB0MjsKK0RS T1AgVEFCTEUgdDE7CistLQorLS0gQ2hlY2sgdGhlIHBhcnRpdGlvbiBpbmRleCBuYW1lIGlmIHRo ZSBwYXJ0aXRpb24gbmFtZSBpcyB0aGUgc2FtZSBhcyBvbmUKKy0tIG9mIHRoZSBtZXJnZWQgcGFy dGl0aW9ucy4KKy0tCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIFBSSU1BUlkgS0VZKGkpKSBQQVJU SVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDUkVBVEUgSU5ERVggdGlkeCBPTiB0 KGkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xXzIsIHRwXzBfMSkgSU5U TyB0cF8xXzI7CistLSBJbmRleG5hbWUgdmFsdWVzIHNob3VsZCBiZSAndHBfMV8yX3BrZXknIGFu ZCAndHBfMV8yX2lfaWR4Jy4KK1xkKyB0cF8xXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg VGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzFfMiIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdl dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAg ICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgyKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoaSBJUyBOT1QgTlVMTCkgQU5EIChpID49IDAp IEFORCAoaSA8IDIpKQorSW5kZXhlczoKKyAgICAidHBfMV8yX3BrZXkiIFBSSU1BUlkgS0VZLCBi dHJlZSAoaSkKKyAgICAidHBfMV8yX2lfaWR4IiBidHJlZSAoaSkKK05vdC1udWxsIGNvbnN0cmFp bnRzOgorICAgICJ0X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorCitEUk9Q IFRBQkxFIHQ7CistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5IHRh YmxlLgorLS0KK0JFR0lOOworU0hPVyBzZWFyY2hfcGF0aDsKKyAgICAgICAgICAgc2VhcmNoX3Bh dGggICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYworKDEgcm93KQorCitDUkVBVEUgVEVNUCBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBPTiBDT01NSVQgRFJPUDsKK0NSRUFURSBU RU1QIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx KTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzJfMyBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDIpIFRPICgzKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzNfNCBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KTsKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gcGdfdGVtcC50cF8wXzI7CitBTFRF UiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMiwgdHBfMl8zKSBJTlRPIHBnX3RlbXAu dHBfMF8zOworLS0gUGFydGl0aW9uIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitFWEVDVVRFIGdldF9w YXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5k IHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzMgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMykKKyB0cF8zXzQg fCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgzKSBUTyAoNCkKKygyIHJvd3MpCisKKy0tIEVSUk9SOiAgY2Fubm90IGNyZWF0ZSBh IHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0 IgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzMsIHRwXzNfNCkgSU5UTyB0 cF8wXzQ7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFy dGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiAidCIKK1JPTExCQUNLOworLS0KKy0tIFRyeSBt aXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0tCitCRUdJTjsKK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7 CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwor Q1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5j ZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7 Cisgb2lkIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdCAgIHwg cAorKDEgcm93KQorCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAg IHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBw Z19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEg fCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSkKKyB0cF8xXzIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJvd3MpCisK K1NBVkVQT0lOVCBzOworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBp bnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSB0 ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiAidCIK K1JPTExCQUNLIFRPIFNBVkVQT0lOVCBzOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9u cyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0VSUk9SOiAgY2Fubm90 IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJl bGF0aW9uICJ0IgorUk9MTEJBQ0s7CitCRUdJTjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAs IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xh c3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7Cisgb2lkIHwgcmVscGVyc2lzdGVuY2Ug CistLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdCAgIHwgdAorKDEgcm93KQorCitFWEVDVVRFIGdl dF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxr aW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCB0ICAgICAgICAgICAgICB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkKKyB0cF8x XzIgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJvd3MpCisKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSB0ZW1w b3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6 ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1w b3JhcnkgcmVsYXRpb24gInQiCitST0xMQkFDSzsKK0RFQUxMT0NBVEUgZ2V0X3BhcnRpdGlvbl9p bmZvOworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGVz cGFjZQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsK K0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJ VElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCB0YWJsZW5hbWUsIHRh Ymxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8w XzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIg QlkgdGFibGVuYW1lIENPTExBVEUgIkMiLCB0YWJsZXNwYWNlIENPTExBVEUgIkMiOworIHRhYmxl bmFtZSB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyB0ICAgICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8yICAgIHwgcmVncmVzc190Ymxz cGFjZQorKDIgcm93cykKKworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNl IEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFO RCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJs ZW5hbWUgQ09MTEFURSAiQyIsIGluZGV4bmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xM QVRFICJDIjsKKyB0YWJsZW5hbWUgfCAgaW5kZXhuYW1lICB8ICAgIHRhYmxlc3BhY2UgICAgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8 IHRfcGtleSAgICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBfMiAgICB8IHRwXzBfMl9wa2V5 IHwgcmVncmVzc190YmxzcGFjZQorKDIgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sg dGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAor U0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFU RSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIg aGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9uc19tZXJnZV9oZWFwOworQ1JFQVRFIFRBQkxFIHRw XzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBU QUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBf MjsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19h bSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0 cF8wXzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZSBDT0xMQVRFICJDIjsKKyByZWxu YW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgdCAgICAgICB8IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorIHRwXzBfMiAgfCBwYXJ0 aXRpb25zX21lcmdlX2hlYXAKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNT IE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tz LiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIGFsbAorLS0gdGhl IG1lcmdpbmcgcGFydGl0aW9ucyB0byBkbyB0aGUgbWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8g cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVB VEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg dHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRF IFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOwor LS0gRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHQKK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJl IG93bmVyIG9mIHRhYmxlIHQKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRB QkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11 c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8xCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBv ZiB0YWJsZSB0cF8wXzEKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxF IHRwXzBfMSBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIEVSUk9SOiAg bXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8xXzIKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93bmVy IG9mIHRhYmxlIHRwXzFfMgorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFC TEUgdHBfMV8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0gT2s6CitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBf MjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3Q6 IHdlIGNhbid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgb3duZXJzCitDUkVBVEUg VEFCTEUgdHBfMF8xKGkgaW50KTsKK0FMVEVSIFRBQkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOworQUxU RVIgVEFCTEUgdHBfMV8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0NS RUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0FMVEVSIFRBQkxF IHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitB TFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlJzoKK1xk dCB0cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisg ICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93 bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYSB8IHRwXzBfMSB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2UKKygx IHJvdykKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYic6CitcZHQg dHBfMV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAg ICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgT3duZXIg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwg dHBfMV8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2IKKygxIHJvdykKKwor LS0gRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBf MF8yOworRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25l cnMKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitSRVZPS0UgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0RST1Ag Uk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBUZXN0IGZvciBoYXNoIHBhcnRp dGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkp OworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVM VVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworLS0gRVJST1I6ICBwYXJ0aXRp b24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkCitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSwgdHAyKSBJTlRPIHRwMzsKK0VSUk9SOiAgcGFydGl0 aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZAorLS0gRVJST1I6 ICBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0 IHR3byBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSkgSU5U TyB0cDM7CitFUlJPUjogIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGlu Y2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgZm9y IG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQor LS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZB VUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBT VE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJ TlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRp b25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBh cnRpdGlvbmVkIHRhYmxlCitcc2V0IEhJREVfVE9BU1RfQ09NUFJFU1NJT04gZmFsc2UKK0NSRUFU RSBUQUJMRSB0CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09N UFJFU1NJT04gcGdseiBERUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBH RU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJB TkdFIChhYnMoaSkpOworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKK0NSRUFURSBU QUJMRSB0cF8wXzEKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFV TFQgJ2RlZmF1bHRfdHBfMF8xJywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZ UyBhcyAoJzIwMjItMDItMDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElU SU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NPTU1FTlQgT04gQ09MVU1O IHRwXzBfMS5pIElTICd0cF8wXzEuaSc7CitDUkVBVEUgVEFCTEUgdHBfMV8yCisoaSBpbnQgTk9U IE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzFfMicsCisg YiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAzLTAzJykgU1RP UkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF8xXzIuaSBJUyAndHBfMV8yLmkn OworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0 OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMF8xX3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBm cm9tIHRwXzBfMTsKK0NSRUFURSBTVEFUSVNUSUNTIHRwXzFfMl9zdGF0IChERVBFTkRFTkNJRVMp IG9uIGksIGIgZnJvbSB0cF8xXzI7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9j aGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hl Y2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RS QUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBB REQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7CitJTlNFUlQgSU5UTyB0 cF8wXzEoaSwgdCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfMV8y KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwn IEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFj dGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hF TiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dF UiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNI IFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUg VFJJR0dFUiB0cF8wXzFfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9O IHRwXzBfMSBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlv bigndHBfMF8xJyk7CitDUkVBVEUgVFJJR0dFUiB0cF8xXzJfYmVmb3JlX2luc2VydF9yb3dfdHJp Z2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzFfMiBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9D RURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMV8yJyk7CitcZCsgdHBfMF8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRp b25zX21lcmdlX3NjaGVtYS50cF8wXzEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8 IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAg ICAgfCBTdG9yYWdlIHwgQ29tcHJlc3Npb24gfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgdHBfMF8x LmkKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90 cF8wXzEnOjp0ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1haW4gICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBu b3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGxhaW4gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0 ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAyLTAy LTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKQorUGFydGl0 aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAwKSBB TkQgKGFicyhpKSA8IDEpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hF Q0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRAor ICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorU3RhdGlzdGljcyBvYmpl Y3RzOgorICAgICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzFfc3RhdCIgKGRlcGVuZGVu Y2llcykgT04gaSwgYiBGUk9NIHRwXzBfMQorTm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRw XzBfMV9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBO T1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9y ZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9X IEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBPTiBUQUJMRSB0CisgICAg dHBfMF8xX2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEg Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJykK KworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0 cF8wXzE7CitcZCsgdHBfMF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzEiCisg Q29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAg ICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlICB8IENvbXByZXNzaW9u IHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBleHRlbmRlZCB8IHBnbHogICAgICAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAg IHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAxLTAxLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAg ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBO T1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5EIChhYnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0 cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNrMSIg Q0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAw KSBOT1QgVkFMSUQKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0X2lfbm90X251bGwiIE5P VCBOVUxMICJpIiAoaW5oZXJpdGVkKQorICAgICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJp dGVkKSBOT1QgVkFMSUQKK1RyaWdnZXJzOgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dl ciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0 cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBi KSBWQUxVRVMoMSwgREVGQVVMVCwgMyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0 aW9uID0gSU5TRVJULCB3aGVuID0gQkVGT1JFLCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKKyB0YWJsZW9pZCB8IGkgfCAgICAgICB0 ICAgICAgICB8IGIgfCAgICAgZCAgICAgIAorLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0rLS0tLS0tLS0tLS0tCisgdHBfMF8xICAgfCAwIHwgZGVmYXVsdF90cF8wXzEgfCAxIHwg MDEtMDEtMjAyMgorIHRwXzBfMSAgIHwgMSB8IGRlZmF1bHRfdHBfMV8yIHwgMiB8IDAxLTAxLTIw MjIKKyB0cF8wXzEgICB8IDEgfCBkZWZhdWx0X3QgICAgICB8IDMgfCAwMS0wMS0yMDIyCisoMyBy b3dzKQorCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsK K1xzZXQgSElERV9UT0FTVF9DT01QUkVTU0lPTiB0cnVlCistLSBUZXN0IE1FUkdFIFBBUlRJVElP TlMgd2l0aCBub3QgdmFsaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQg KGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxF IHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFU RSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7 CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElO VCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsg QUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBO T1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8y KSBJTlRPIHRwXzBfMjsKKy0tIFNob3VsZCBiZSBOT1QgVkFMSUQgRk9SRUlHTiBLRVkKK1xkIHRw XzBfMgorICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMiIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaSAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMikKK0luZGV4ZXM6CisgICAgInRwXzBfMl9wa2V5IiBQUklNQVJZIEtF WSwgYnRyZWUgKGkpCitSZWZlcmVuY2VkIGJ5OgorICAgIFRBQkxFICJ0X2ZrIiBDT05TVFJBSU5U ICJ0X2ZrX2lfZmtleSIgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdChpKSBOT1QgVkFMSUQK KworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgVkFM SURBVEUgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBv biB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2Zr ZXkiCitERVRBSUw6ICBLZXkgKGkpPSgyKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidCIuCitE Uk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IE1FUkdFIFBBUlRJVElPTlMg d2l0aCBub3QgZW5mb3JjZWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQg KGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxF IHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFU RSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7 CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElO VCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsg QUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBO T1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBf MV8yKSBJTlRPIHRwXzBfMjsKKy0tIFNob3VsZCBiZSBOT1QgRU5GT1JDRUQgRk9SRUlHTiBLRVkK K1xkIHRwXzBfMgorICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMiIK KyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaSAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK0luZGV4ZXM6CisgICAgInRwXzBfMl9wa2V5IiBQUklN QVJZIEtFWSwgYnRyZWUgKGkpCitSZWZlcmVuY2VkIGJ5OgorICAgIFRBQkxFICJ0X2ZrIiBDT05T VFJBSU5UICJ0X2ZrX2lfZmtleSIgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdChpKSBOT1Qg RU5GT1JDRUQKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxF IHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBFTkZPUkNFRDsKK0VSUk9SOiAgaW5z ZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidF9ma19pX2ZrZXkiCitERVRBSUw6ICBLZXkgKGkpPSgyKSBpcyBub3QgcHJlc2VudCBp biB0YWJsZSAidCIuCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IGZv ciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJM RSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3Rv cmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0 IEFERCBDT05TVFJBSU5UIGNjIENIRUNLKHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNFUlQg SU5UTyB0IFZBTFVFUyAoMCksICgxKTsKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9u IGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0 aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQg V0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9 IDEpOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKKy0tICJ0YWJfaWQiIGNv bHVtbiAoc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1dGUg cmVxdWlyZXMKKy0tIHJlY29tcHV0YXRpb24gaGVyZS4KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIDEgYmVj YXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFz CistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50 KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00g dCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworRFJP UCBUQUJMRSB0OworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRl ciBvZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxlCistLSBhbmQgcGFydGl0aW9ucykuCitD UkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJs ZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xIChn IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0NS RUFURSBUQUJMRSB0cF8yIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6 OmludCksIGkgaW50KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xIEZPUiBW QUxVRVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04g dHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hF Q0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5U TyB0IFZBTFVFUyAoNSksICgxNSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzEsIHRwXzIpIElOVE8gdHBfMTI7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTYpOworLS0gRVJS T1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidHBfMTIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFp bnQgInRfaV9jaGVjayIKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKTsKK0VSUk9SOiAgbmV3IHJv dyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hl Y2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMCwgdmlydHVhbCkuCistLSBTaG91 bGQgYmUgMyByb3dzOiAoNSksICgxNSksICgxNik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkg aTsKKyBpICAKKy0tLS0KKyAgNQorIDE1CisgMTYKKygzIHJvd3MpCisKKy0tIFNob3VsZCBiZSAx IGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxlb2lkICgxNSArIHRhYmxlb2lkKSA9ICg1ICsgdGFi bGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJ TiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOworIGNvdW50IAorLS0tLS0tLQor ICAgICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0K K0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggY2M2 ZDc5OWJjZWEuLjYzM2NmMjBlMGE2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAg LTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1w IGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVz dCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4g YmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9uX2pvaW4g cGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9h Z2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29t cHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEgZWFnZXJfYWdncmVnYXRl Cit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJl bG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9u X2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1lbW9p emUgc3RhdHMgcHJlZGljYXRlIG51bWEgZWFnZXJfYWdncmVnYXRlCiAKICMgZXZlbnRfdHJpZ2dl ciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAog IyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wYXJ0aXRpb25fbWVyZ2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21l cmdlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmZiNDk4NjEy YTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVy Z2Uuc3FsCkBAIC0wLDAgKzEsNzkxIEBACistLQorLS0gUEFSVElUSU9OU19NRVJHRQorLS0gVGVz dHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4iIGNvbW1hbmQKKy0t CisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1B IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0t CisKKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2Fs ZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9u IHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIy LCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAg InNhbGVzX2FwcjIwMjIiIGlzIG5vdCBhIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIy MDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgY2FuIG5vdCBtZXJn ZSBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxl c19qYW4yMDIyIgorLS0gREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19t YXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5k IHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOwor LS0gRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgdG9nZXRo ZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSBERVRBSUw6ICBsb3dlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2Vj dGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNh bGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworLS0gRVJST1I6ICBwYXJ0 aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21h cjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNf ZmViX21hcl9hcHIyMDIyOworLS1FUlJPUiwgc2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNh bGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfYXByXzI7CisKK0NSRUFURSBW SUVXIGphbjIwMjJ2IGFzIFNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIw MjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRFJPUCBWSUVXIGphbjIwMjJ2OworCist LSBOTyBFUlJPUjogdGVzdCBmb3IgY3VzdG9tIHBhcnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBwYXJ0 aXRpb25zIG5vdCBpbiB0aGUgc2VhcmNoX3BhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEuc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoCisgIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLnNhbGVzX2ZlYjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX21h cjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2Fs ZXNfamFuX2ZlYl9tYXIyMDIyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEsIHB1YmxpYzsKKworUFJFUEFSRSBnZXRfcGFydGl0aW9uX2luZm8ocmVnY2xhc3NbXSkg QVMKK1NFTEVDVCAgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsCisgICAgICAgIGMucmVscGVy c2lzdGVuY2UsCisgICAgICAgIGMucmVsa2luZCwKKyAgICAgICAgaS5pbmhkZXRhY2hwZW5kaW5n LAorICAgICAgICBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkK K0ZST00gICAgcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkK K1dIRVJFICAgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9IEFOWSgkMSkKK09S REVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdE RUZBVUxUJywKKyAgICAgICAgIGMub2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsKKwor RVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUs IHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2Fs ZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19t YXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lk eCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAg KDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAg IDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdI YWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAg JzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAor ICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywg ICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRr ZXlkZWYoJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0 aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0n KTsKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIy LCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNv bmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOwor CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9t YXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsK KworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZ IHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisK Ky0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9zZXFzY2Fu ID0gT0ZGOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIw MjItMDEtMDEnOworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNf ZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gTWVy Z2Ugc29tZSBwYXJ0aXRpb25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNf cmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2Rh dGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAg ICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAn SXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwK KyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3Nv bicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjIt MDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEs ICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScp LAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKKy0tIE1lcmdlIHBh cnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGgg dGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXJzIE9SREVSIEJZIHNhbGVzcGVyc29uX2lkOworCistLSBzaG93IHBhcnRpdGlvbnMg d2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5n ZX0nKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0g ICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47Cist LSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf ZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVz X21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5F UkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAn LicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxl c19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFS KDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVz X2RlYzIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAx MiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwg MiwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0 ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKKworSU5TRVJU IElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdN YW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAo J01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAg KCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisg ICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOwor CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZTsKKworQUxURVIg VEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19m ZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRl KHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZB TFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwg MiwgMTApOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZTsK K0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMg b2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgUEFS VElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZB TFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBB UlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJp Z2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorICAgIFJBSVNFIE5PVElD RSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBU R19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitF TkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9z dGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisg ICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3Bs ZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxl c3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2lu c2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQg ZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFM VUVTICgxMCwgJ01heScpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKKworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwg c2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQw OworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJp Z2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80 MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9w bGU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQorLS0g VGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQp OworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0 aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQx IFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNw ZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElO VCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfMjAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5 LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAsIDEw MSwgJ1NtaXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzEs IG5vdygpLCAnUG9wb3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBEUk9QIENP TFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJU SVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZB TFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOwor CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc3Blb3BsZTEw XzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVzcGVvcGxl MTBfNDA7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGU7CitzZWxlY3QgKiBmcm9tIHNhbGVz cGVvcGxlMDFfMTA7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFC TEUgc2FsZXNwZW9wbGU7CisKKy0tCistLSBUZXN0OiBtZXJnZSBzdWItcGFydGl0aW9ucworLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIy MDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIy XzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIw XzMwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19k YXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMs ICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcn KSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAo MTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0x OScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1Nt aXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAy MiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEw XzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7CisKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0K Ky0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxX QVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNf c3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUp CitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25v cmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBl dGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVz X2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBW QUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKKwor CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7CisKKy0tIEVSUk9SOiAgInNh bGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNh bGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVS Uk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVk IHRhYmxlICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNf YWxsOworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlv biBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2Fs ZXNfYWxsOworCitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsMjsKK0RST1AgVEFCTEUgc2FsZXNf ZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3QyOworRFJPUCBUQUJMRSBzYWxlc19saXN0 OworCistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMg d2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJ TlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisg c2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JF QVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBV U0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9z YWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOwor CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFM VUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAn VmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsK KworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5n JywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3Jr JywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJz YnVyZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAg ICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAg ICAgIDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAg IDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAx MjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1 MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAs ICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVyJywgICAnT3NsbycsICAgICAgICAgICAgODAwLCAn MjAyMi0wMy0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIw MjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIy LTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0w My0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMt MDUnKTsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0 X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFs KSBJTlRPIHNhbGVzX2FsbDsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoK K0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJl Z2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4 c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcgcGFydGl0aW9ucworU0VUIGVu YWJsZV9zZXFzY2FuID0gT0ZGOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g c2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsK K1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOwor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNw ZXJzb25fbmFtZSA9ICdJdmFub3YnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNh bGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RS T1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9m IGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50 LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBB UlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFURSBU QUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NSRUFURSBU QUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdDJyk7 CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOworCistLSBFUlJPUjogIHJlbGF0aW9u ICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUg dDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7CistLSBFUlJPUjogICJ0 MyIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJ0MiIKK0FMVEVSIFRB QkxFIHQyIE1FUkdFIFBBUlRJVElPTlMgKHQycGEsIHQzKSBJTlRPIHQycDsKKworRFJPUCBUQUJM RSB0MzsKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQxOworCisKKy0tCistLSBDaGVjayB0 aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1l IGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0 IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK0NSRUFU RSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7 CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpOworCitDUkVBVEUgSU5ERVggdGlkeCBPTiB0KGkpOworQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8xXzIsIHRwXzBfMSkgSU5UTyB0cF8xXzI7CisKKy0tIEluZGV4bmFt ZSB2YWx1ZXMgc2hvdWxkIGJlICd0cF8xXzJfcGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorXGQr IHRwXzFfMgorCitEUk9QIFRBQkxFIHQ7CisKKy0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9u cyBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQkVHSU47CitTSE9XIHNlYXJjaF9wYXRoOworQ1JF QVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgT04gQ09NTUlU IERST1A7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8yXzMg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyk7CitDUkVBVEUgVEVNUCBU QUJMRSB0cF8zXzQgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCk7CisK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gcGdf dGVtcC50cF8wXzI7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMiwgdHBf Ml8zKSBJTlRPIHBnX3RlbXAudHBfMF8zOworCistLSBQYXJ0aXRpb24gc2hvdWxkIGJlIHRlbXBv cmFyeS4KK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKy0tIEVSUk9SOiAgY2Fu bm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5 IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzMsIHRw XzNfNCkgSU5UTyB0cF8wXzQ7CitST0xMQkFDSzsKKworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFu ZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0tCitCRUdJTjsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CitDUkVBVEUgVEFC TEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8x IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxF IHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VM RUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKK0VYRUNVVEUg Z2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKK1NBVkVQT0lOVCBzOworCitTRVQgc2VhcmNoX3Bh dGggPSBwZ190ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3Qg bWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBf MjsKKworUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHM7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0 aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBB UlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworUk9MTEJBQ0s7 CisKK0JFR0lOOworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdF IChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3Ms IGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQg PSAndCc6OnJlZ2NsYXNzOworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworCitT RVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGlj OworCistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVu dCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7CisKK0RFQUxMT0NBVEUgZ2V0X3BhcnRpdGlvbl9p bmZvOworCistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJs ZXNwYWNlCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGlj OworQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIHRhYmxlbmFtZSwg dGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3Rw XzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRF UiBCWSB0YWJsZW5hbWUgQ09MTEFURSAiQyIsIHRhYmxlc3BhY2UgQ09MTEFURSAiQyI7CitTRUxF Q1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdI RVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0 aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgaW5k ZXhuYW1lIENPTExBVEUgIkMiLCB0YWJsZXNwYWNlIENPTExBVEUgIkMiOworRFJPUCBUQUJMRSB0 OworCistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZSBh Y2Nlc3MgbWV0aG9kCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cHVibGljOworQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9oZWFwIFRZUEUg VEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CitD UkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8yOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xh c3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3Qn OjpyZWdjbGFzcywgJ3RwXzBfMic6OnJlZ2NsYXNzKQorT1JERVIgQlkgYy5yZWxuYW1lIENPTExB VEUgIkMiOworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVy Z2VfaGVhcDsKKworLS0gVGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRv IG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCBhbGwKKy0tIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMg dG8gZG8gdGhlIG1lcmdlLgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxp Y2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitHUkFOVCBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBU TyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3Qg YmUgb3duZXIgb2YgdGFibGUgdAorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisK K0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBF UlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8xCitBTFRFUiBUQUJMRSB0IE1FUkdF IFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFy dGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0 aXRpb25fbWVyZ2VfYm9iOworLS0gRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzFf MgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0 cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzFf MiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIE9rOgorQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0RST1AgVEFCTEUgdDsKKworLS0gVGVzdDogd2Ug Y2FuJ3QgbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRpZmZlcmVudCBvd25lcnMKK0NSRUFURSBUQUJM RSB0cF8wXzEoaSBpbnQpOworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFy dGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzFfMihpIGludCk7CitBTFRFUiBU QUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworCitDUkVB VEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK0FMVEVSIFRBQkxF IHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitB TFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpOworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2UnOgor XGR0IHRwXzBfMQorLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYic6Citc ZHQgdHBfMV8yCisKKy0tIEVSUk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZm ZXJlbnQgb3duZXJzCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBf MV8yKSBJTlRPIHRwXzBfMjsKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGlj ZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworCist LSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRw MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEp OworCistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5v dCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxLCB0cDIpIElO VE8gdHAzOworCistLSBFUlJPUjogIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hv dWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKKworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3Qg Zm9yIG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0 eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBE RUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBh cyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNU UkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0 aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9y IHBhcnRpdGlvbmVkIHRhYmxlCitcc2V0IEhJREVfVE9BU1RfQ09NUFJFU1NJT04gZmFsc2UKKwor Q1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBFWFRFTkRF RCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcsCisgYiBiaWdpbnQsCisgZCBk YXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAxJykgU1RPUkVEKSBQQVJUSVRJT04g QlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENPTFVNTiB0LmkgSVMgJ3QxLmknOworCitD UkVBVEUgVEFCTEUgdHBfMF8xCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJ TiBERUZBVUxUICdkZWZhdWx0X3RwXzBfMScsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRF RCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNI IFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDT01NRU5UIE9O IENPTFVNTiB0cF8wXzEuaSBJUyAndHBfMF8xLmknOworCitDUkVBVEUgVEFCTEUgdHBfMV8yCiso aSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3Rw XzFfMicsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAz LTAzJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF8xXzIuaSBJUyAn dHBfMV8yLmknOworCitDUkVBVEUgU1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24g aSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElTVElDUyB0cF8wXzFfc3RhdCAoREVQRU5ERU5DSUVT KSBvbiBpLCBiIGZyb20gdHBfMF8xOworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMV8yX3N0YXQgKERF UEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzFfMjsKKworQUxURVIgVEFCTEUgdCBBREQgQ09O U1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNU UkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxF IHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FM VEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOwor CitJTlNFUlQgSU5UTyB0cF8wXzEoaSwgdCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5T RVJUIElOVE8gdHBfMV8yKGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFO R1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dl ciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBd LCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7 CisKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5T RVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rp b24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwXzBfMV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2Vy IEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVS RSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8wXzEnKTsKK0NSRUFURSBUUklHR0VSIHRwXzFfMl9iZWZv cmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMV8yIEZPUiBFQUNIIFJP VworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8xXzInKTsKKworXGQr IHRwXzBfMQorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikg SU5UTyB0cF8wXzE7CitcZCsgdHBfMF8xCisKK0lOU0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVT KDEsIERFRkFVTFQsIDMpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JE RVIgQlkgYjsKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigp OworXHNldCBISURFX1RPQVNUX0NPTVBSRVNTSU9OIHRydWUKKworCistLSBUZXN0IE1FUkdFIFBB UlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRB QkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRF IFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsK K0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2Zr IChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxF IHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5D RVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwg dHBfMV8yKSBJTlRPIHRwXzBfMjsKKworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtF WQorXGQgdHBfMF8yCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFC TEUgdF9mayBWQUxJREFURSBDT05TVFJBSU5UIHRfZmtfaV9ma2V5OworCitEUk9QIFRBQkxFIHRf Zms7CitEUk9QIFRBQkxFIHQ7CisKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCBl bmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJ TUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VSVCBJ TlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lOU0VS VCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworCitBTFRFUiBUQUJMRSB0X2ZrIEFERCBDT05T VFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQgTk9UIEVORk9S Q0VEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5U TyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSBOT1QgRU5GT1JDRUQgRk9SRUlHTiBLRVkKK1xkIHRw XzBfMgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsg QUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBFTkZPUkNFRDsKKworRFJPUCBUQUJMRSB0X2Zr OworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVk IGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdl bmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0so dGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOwor CistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0 aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cg d2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQg SU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRhYl9pZCIgY29s dW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSBy ZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSAxIGJl Y2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBh cworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9N IHQgV0hFUkUgaSA9IDEpOworCitEUk9QIFRBQkxFIHQ7CisKKworLS0gVGVzdCBmb3IgZ2VuZXJh dGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRlciBvZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRh YmxlCistLSBhbmQgcGFydGl0aW9ucykuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdF TkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdF IChpKTsKK0NSRUFURSBUQUJMRSB0cF8xIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsg dGFibGVvaWQ6OmludCksIGkgaW50KTsKK0NSRUFURSBUQUJMRSB0cF8yIChnIGludCBHRU5FUkFU RUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0FMVEVSIFRBQkxFIHQg QVRUQUNIIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRF UiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo MjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQURE IENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoNSksICgxNSk7CisKK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMSwgdHBfMikgSU5UTyB0cF8xMjsKKworSU5T RVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24g InRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hlY2siCitJTlNFUlQgSU5U TyB0IFZBTFVFUyAoMCk7CistLSBTaG91bGQgYmUgMyByb3dzOiAoNSksICgxNSksICgxNik6CitT RUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgZm9yIHRo ZSBzYW1lIHRhYmxlb2lkICgxNSArIHRhYmxlb2lkKSA9ICg1ICsgdGFibGVvaWQpICsgMTA6CitT RUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAx MCBGUk9NIHQgV0hFUkUgaSA9IDUpOworCitEUk9QIFRBQkxFIHQ7CisKKworUkVTRVQgc2VhcmNo X3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1Ag U0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1 NCkKCg== --000000000000bc62bc0645e72df5 Content-Type: application/octet-stream; name="v68-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename="v68-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj5lk1zb1 RnJvbSBjMTQ1MjUyN2UwZTc3MWZmYmFjZDI1OWM5MWQwOGM5MTk3MWI2NzYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCAxNCBEZWMgMjAyNSAxMjowMjoxMSArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjY4IDIvMl0gSW1wbGVtZW50IEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04g Li4uIGNvbW1hbmQKClRoaXMgbmV3IERETCBjb21tYW5kIHNwbGl0cyBhIHNpbmdsZSBwYXJ0aXRp b24gaW50byBzZXZlcmFsIHBhcnRpdGlvbnMuICBKdXN0Cmxpa2UgdGhlIEFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIC4uLiBjb21tYW5kLCBuZXcgcGFydGl0aW9ucyBhcmUKY3JlYXRl ZCB1c2luZyB0aGUgY3JlYXRlUGFydGl0aW9uVGFibGUoKSBmdW5jdGlvbiB3aXRoIHRoZSBwYXJl bnQgcGFydGl0aW9uCmFzIHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBhIHF1 aXRlIG5haXZlIGltcGxlbWVudGF0aW9uIHdoaWNoIHdvcmtzIGluIGEgc2luZ2xlCnByb2Nlc3Mg YW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhlIHBhcmVudCB0YWJsZSBk dXJpbmcgYWxsCnRoZSBvcGVyYXRpb25zLCBpbmNsdWRpbmcgdGhlIHR1cGxlIHJvdXRpbmcuICBU aGlzIGlzIHdoeSB0aGUgbmV3IERETCBjb21tYW5kCmNhbid0IGJlIHJlY29tbWVuZGVkIGZvciBs YXJnZSwgcGFydGl0aW9uZWQgdGFibGVzIHVuZGVyIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZXMgaW4gaGFuZHkgaW4gY2VydGFpbiBjYXNlcywgZXZlbiBhcyBp dCBpcy4gIEFsc28sIGl0CmNvdWxkIHNlcnZlIGFzIGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGlt cGxlbWVudGF0aW9ucyB3aXRoIGxlc3MgbG9ja2luZyBhbmQKcG9zc2libHkgcGFyYWxsZWxpc20u CgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2M3M2ExNzQ2LTBjZDAtNmJkZC02YjIz LTNhZTBiN2MwYzU4MiU0MHBvc3RncmVzcHJvLnJ1CkF1dGhvcjogRG1pdHJ5IEtvdmFsIDxkLmtv dmFsQHBvc3RncmVzcHJvLnJ1PgpDby1hdXRob3JlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxh ZWtvcm90a292QGdtYWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IFRlbmRlciBXYW5nIDx0bmRyd2Fu Z0BnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdt YWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IERhZ2Zpbm4gSWxtYXJpIE1hbm5zYWtlciA8aWxtYXJp QGlsbWFyaS5vcmc+CkNvLWF1dGhvcmVkLWJ5OiBGdWppaSBNYXNhbyA8bWFzYW8uZnVqaWlAZ21h aWwuY29tPgpDby1hdXRob3JlZC1ieTogSmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50IDxib2VrZXd1cm0rcG9zdGdy ZXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTGF1cmVueiBBbGJlIDxsYXVyZW56LmFsYmVAY3li ZXJ0ZWMuYXQ+ClJldmlld2VkLWJ5OiBaaGlob25nIFl1IDx6eXVAeXVnYWJ5dGUuY29tPgpSZXZp ZXdlZC1ieTogSnVzdGluIFByeXpieSA8cHJ5emJ5QHRlbHNhc29mdC5jb20+ClJldmlld2VkLWJ5 OiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1pcC5vcmc+ClJldmlld2VkLWJ5OiBS b2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+ClJldmlld2VkLWJ5OiBTdGVwaGFuZSBU YWNob2lyZXMgPHN0ZXBoYW5lLnRhY2hvaXJlc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFu IEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIg S29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUGF2ZWwgQm9yaXNv diA8cGFzaGtpbi5lbGZlQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYSA8 c2F3YWRhLm1zaGtAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIExha2hpbiA8ZXhj bHVzaW9uQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEt5b3Rhcm8gSG9yaWd1Y2hpIDxob3Jpa3lv dGEubnR0QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uIDxkZ3VzdGFm c3NvbkBwb3N0Z3Jlc3FsLm9yZz4KUmV2aWV3ZWQtYnk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5w YS51cz4KUmV2aWV3ZWQtYnk6IE5vYWggTWlzY2ggPG5vYWhAbGVhZGJvYXQuY29tPgotLS0KIGRv Yy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKwogZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDExOCArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDQzMiArKysrKwog c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgIDE5NyArLQog c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgIDczNyArKysr KysrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgICAx MCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAz NCArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAg MSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oICAgICAgICAgfCAgICA0 ICsKIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dCAgICB8ICAyMzAg KysrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAgICAgfCAgICAx ICsKIHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYyB8ICAgNjIg KwogLi4uL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0IHwgICAgNSAr CiAuLi4vdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsICAgICAgfCAgICA0ICsK IC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgIDMgKwog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0IHwgMTU5MiArKysr KysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAg ICAgIHwgICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbCAg ICAgIHwgMTEzNCArKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 ICAgICAgICAgICAgICB8ICAgIDIgKwogMjAgZmlsZXMgY2hhbmdlZCwgNDU4NSBpbnNlcnRpb25z KCspLCA0MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwK aW5kZXggN2I5MDc4OWY4N2MuLmNlYTI4YzAwZjhhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00NzY0LDYgKzQ3NjQsMjUg QEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJl bWVudF95MjAwNm0wMykgSU5UTyBtZWFzdXJlbWVudF95MjAwNnExOwogPC9wcm9ncmFtbGlzdGlu Zz4KICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgU2ltaWxhcmx5IHRvIG1lcmdpbmcg bXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucywgdGhlcmUgaXMgYW4gb3B0aW9uIGZvcgorICAgICBz cGxpdHRpbmcgYSBzaW5nbGUgcGFydGl0aW9uIGludG8gbXVsdGlwbGUgdXNpbmcgdGhlCisgICAg IDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnRhYmxlLXNwbGl0LXBhcnRpdGlvbiI+PGNvbW1hbmQ+ QUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTjwvY29tbWFuZD48L2xpbms+LgorICAgICBU aGlzIGZlYXR1cmUgY291bGQgY29tZSBpbiBoYW5keSB3aGVuIG9uZSBwYXJ0aXRpb24gZ3Jvd3Mg dG9vIGJpZworICAgICBhbmQgbmVlZHMgdG8gYmUgc3BsaXQgaW50byBtdWx0aXBsZS4gIEl0J3Mg aW1wb3J0YW50IHRvIG5vdGUgdGhhdAorICAgICB0aGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9y dGVkIGZvciBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMKKyAgICAgYW4gPGxp dGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2ggY291bGQgaW1wYWN0 IGhpZ2gtbG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydzIHJlc3RyaWN0aXZlIG5h dHVyZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4gc3BsaXQKKyAgICAgdGhlIHF1YXJ0ZXIgcGFydGl0 aW9uIGJhY2sgdG8gbW9udGhseSBwYXJ0aXRpb25zOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIg VEFCTEUgbWVhc3VyZW1lbnQgU1BMSVQgUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2cTEgSU5U TworICAgKFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMSBGT1IgVkFMVUVTIEZST00gKCcy MDA2LTAxLTAxJykgVE8gKCcyMDA2LTAyLTAxJyksCisgICAgUEFSVElUSU9OIG1lYXN1cmVtZW50 X3kyMDA2bTAyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDItMDEnKSBUTyAoJzIwMDYtMDMtMDEn KSwKKyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZtMDMgRk9SIFZBTFVFUyBGUk9NICgn MjAwNi0wMy0wMScpIFRPICgnMjAwNi0wNC0wMScpKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAg PC9wYXJhPgorCiAgICA8L3NlY3QzPgogCiAgICA8c2VjdDMgaWQ9ImRkbC1wYXJ0aXRpb25pbmct ZGVjbGFyYXRpdmUtbGltaXRhdGlvbnMiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4 IDVjZGExYzk0YWRiLi45YWJkODAzN2YyOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApA QCAtMzksNiArMzksMTAgQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2Vh YmxlPiBbIENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAg IE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KK0FMVEVSIFRBQkxF IFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPgorICAgIFNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRPCisgICAgICAgIChQQVJUSVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFi bGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSwKKyAgICAgICAgIFBBUlRJVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNl YWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0pCiAKIDxwaHJh c2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjdGlvbjwvcmVwbGFjZWFi bGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMTI1OCw2ICsxMjYyLDk0IEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3Jl cGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisg ICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1wYXJ0aXRpb24iPgorICAg IDx0ZXJtPgorICAgIDxsaXRlcmFsPlNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRPICgKKyAgICAgIFBB UlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9y ZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9LAorICAgICAgUEFS VElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3Jl cGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0KKyAgICAgIFssIC4u Ll0pPC9saXRlcmFsPgorICAgIDwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGlzIGZvcm0gc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0 IHRhYmxlIGludG8gbmV3CisgICAgICBwYXJ0aXRpb25zLiBIYXNoLXBhcnRpdGlvbmVkIHRhcmdl dCB0YWJsZSBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgT25seSBhIHNpbXBsZSwgbm9uLXBhcnRp dGlvbmVkIHBhcnRpdGlvbiBjYW4gYmUgc3BsaXQuCisgICAgICBJZiB0aGUgc3BsaXQgcGFydGl0 aW9uIGlzIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24sCisgICAgICBv bmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIG11c3QgYmUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJh bD4uCisgICAgICBJZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBhIDxsaXRl cmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb24sIGEgPGxpdGVyYWw+REVGQVVM VDwvbGl0ZXJhbD4gcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZQorICAgICAgb2YgdGhl IG5ldyBwYXJ0aXRpb25zLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUg Ym91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIHRob3NlIG9m IG5ldyBvcgorICAgICAgZXhpc3RpbmcgcGFydGl0aW9ucyAoZXhjZXB0IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+KS4KKyAgICAgIFRo ZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgPGxpdGVyYWw+CisgICAgICA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4s CisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9y ZXBsYWNlYWJsZT5bLCAuLi5dCisgICAgICA8L2xpdGVyYWw+IHNob3VsZCBiZSBlcXVhbCB0byB0 aGUgYm91bmRzIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgT25lIG9m IHRoZSBuZXcgcGFydGl0aW9ucyBjYW4gaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzcGxpdCBw YXJ0aXRpb24KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAodGhpcyBpcyBzdWl0YWJsZSBpbiBjYXNlIG9mIHNw bGl0dGluZyB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4KKyAgICAgIHBhcnRpdGlvbjog YWZ0ZXIgdGhlIHNwbGl0LCB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9u CisgICAgICByZW1haW5zIHdpdGggdGhlIHNhbWUgbmFtZSwgYnV0IGl0cyBwYXJ0aXRpb24gYm91 bmQgY2hhbmdlcykuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIE5ldyBwYXJ0 aXRpb25zIHdpbGwgaGF2ZSB0aGUgc2FtZSBvd25lciBhcyB0aGUgcGFyZW50IHBhcnRpdGlvbi4K KyAgICAgIEl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gc2V0dXAgPGFjcm9ueW0+ QUNMPC9hY3JvbnltPiBvbiBuZXcKKyAgICAgIHBhcnRpdGlvbnMuCisgICAgIDwvcGFyYT4KKwor ICAgICA8cGFyYT4KKyAgICAgICA8Y29tbWFuZD5BTFRFUiBUQUJMRSBTUExJVCBQQVJUSVRJT048 L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkCisgICAgICAgdGFibGUgaXRzZWxmIGFzIHRo ZSB0ZW1wbGF0ZSB0byBjb25zdHJ1Y3QgbmV3IHBhcnRpdGlvbnMuCisgICAgICAgTmV3IHBhcnRp dGlvbnMgd2lsbCBpbmhlcml0IHRoZSBzYW1lIHRhYmxlIGFjY2VzcyBtZXRob2QsIHBlcnNpc3Rl bmNlCisgICAgICAgdHlwZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxl LgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICAgQ29uc3RyYWludHMsIGNvbHVt biBkZWZhdWx0cywgY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbnMsCisgICAgICAgaWRlbnRp dHkgY29sdW1ucywgaW5kZXhlcywgYW5kIHRyaWdnZXJzIGFyZSBjb3BpZWQgZnJvbSB0aGUgcGFy dGl0aW9uZWQKKyAgICAgICB0YWJsZSB0byB0aGUgbmV3IHBhcnRpdGlvbnMuICBCdXQgZXh0ZW5k ZWQgc3RhdGlzdGljcywgc2VjdXJpdHkKKyAgICAgICBwb2xpY2llcywgZXRjLCB3b24ndCBiZSBj b3BpZWQgZnJvbSB0aGUgcGFydGl0aW9uZWQgdGFibGUuCisgICAgICAgSW5kZXhlcyBhbmQgaWRl bnRpdHkgY29sdW1ucyBjb3BpZWQgZnJvbSB0aGUgcGFydGl0aW9uZWQgdGFibGUgd2lsbCBiZQor ICAgICAgIGNyZWF0ZWQgYWZ0ZXJ3YXJkLCBvbmNlIHRoZSBkYXRhIGhhcyBiZWVuIG1vdmVkIGlu dG8gdGhlIG5ldyBwYXJ0aXRpb25zLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAg ICBXaGVuIGEgcGFydGl0aW9uIGlzIHNwbGl0LCBhbnkgb2JqZWN0cyB0aGF0IGRlcGVuZCBvbiB0 aGlzIHBhcnRpdGlvbiwKKyAgICAgIHN1Y2ggYXMgY29uc3RyYWludHMsIHRyaWdnZXJzLCBleHRl bmRlZCBzdGF0aXN0aWNzLCBldGMsIHdpbGwgYmUgZHJvcHBlZC4KKyAgICAgIFRoaXMgb2NjdXJz IGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB1 c2VzCisgICAgICB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmIGFzIHRoZSB0ZW1wbGF0ZSB0 byByZWNvbnN0cnVjdCB0aGVzZQorICAgICAgb2JqZWN0cyBsYXRlci4KKyAgICAgIEV2ZW50dWFs bHksIHdlIHdpbGwgZHJvcCB0aGUgc3BsaXQgcGFydGl0aW9uCisgICAgICAodXNpbmcgPGxpdGVy YWw+UkVTVFJJQ1Q8L2xpdGVyYWw+IG1vZGUpIHRvbzsgIHRoZXJlZm9yZSwgaWYgYW55IG9iamVj dHMKKyAgICAgIGFyZSBzdGlsbCBkZXBlbmRlbnQgb24gaXQsIDxjb21tYW5kPkFMVEVSIFRBQkxF IFNQTElUIFBBUlRJVElPTjwvY29tbWFuZD4KKyAgICAgIHdvdWxkIGZhaWwgKHNlZSA8eHJlZiBs aW5rZW5kPSJkZGwtZGVwZW5kIi8+KS4KKyAgICAgPC9wYXJhPgorCisgICAgIDxub3RlPgorICAg ICAgPHBhcmE+CisgICAgICAgU3BsaXQgcGFydGl0aW9uIGFjcXVpcmVzIGFuIDxsaXRlcmFsPkFD Q0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24KKyAgICAgICB0aGUgcGFyZW50IHRhYmxl LCBpbiBhZGRpdGlvbiB0byB0aGUgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4K KyAgICAgICBsb2NrIG9uIHRoZSB0YWJsZSBiZWluZyBzcGxpdC4KKyAgICAgIDwvcGFyYT4KKyAg ICAgPC9ub3RlPgorICAgICA8bm90ZT4KKworICAgICAgPHBhcmE+CisgICAgICAgPGNvbW1hbmQ+ QUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiBjcmVhdGVzIG5ldyBwYXJ0aXRp b25zIGFuZAorICAgICAgIG1vdmVzIGRhdGEgZnJvbSB0aGUgc3BsaXQgcGFydGl0aW9uIGludG8g dGhlbSwgd2hpY2ggY2FuIHRha2UgYSBsb25nCisgICAgICAgdGltZS4gIFNvIGl0IGlzIG5vdCBy ZWNvbW1lbmRlZCB0byB1c2UgdGhlIGNvbW1hbmQgZm9yIHNwbGl0dGluZyBhCisgICAgICAgc21h bGwgZnJhY3Rpb24gb2Ygcm93cyBvdXQgb2YgYSB2ZXJ5IGJpZyBwYXJ0aXRpb24uCisgICAgICA8 L3BhcmE+CisgICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvcGFyYT4KIApAQCAtMTI2NSw3ICsxMzU3LDggQEAg V0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0 ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIEFsbCB0aGUgZm9ybXMgb2YgPGNvbW1hbmQ+QUxU RVIgVEFCTEU8L2NvbW1hbmQ+IHRoYXQgYWN0IG9uIGEgc2luZ2xlIHRhYmxlLAogICAgZXhjZXB0 IDxsaXRlcmFsPlJFTkFNRTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+ LAogICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFD SCBQQVJUSVRJT048L2xpdGVyYWw+LAotICAgYW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8 L2xpdGVyYWw+LCBjYW4gYmUgY29tYmluZWQgaW50bworICAgPGxpdGVyYWw+TUVSR0UgUEFSVElU SU9OUzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD5TUExJVCBQQVJUSVRJT048L2xpdGVyYWw+Cisg ICBjYW4gYmUgY29tYmluZWQgaW50bwogICAgYSBsaXN0IG9mIG11bHRpcGxlIGFsdGVyYXRpb25z IHRvIGJlIGFwcGxpZWQgdG9nZXRoZXIuICBGb3IgZXhhbXBsZSwgaXQKICAgIGlzIHBvc3NpYmxl IHRvIGFkZCBzZXZlcmFsIGNvbHVtbnMgYW5kL29yIGFsdGVyIHRoZSB0eXBlIG9mIHNldmVyYWwK ICAgIGNvbHVtbnMgaW4gYSBzaW5nbGUgY29tbWFuZC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVz ZWZ1bCB3aXRoIGxhcmdlCkBAIC0xNTA5LDcgKzE2MDIsNyBAQCBXSVRIICggTU9EVUxVUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4s IFJFTQogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgbmFtZSBv ZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFzIGEgbmV3IHBhcnRpdGlvbiBvciB0byBkZXRhY2ggZnJv bSB0aGlzIHRhYmxlLAotICAgICAgICBvciB0aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdlZCBwYXJ0 aXRpb24uCisgICAgICAgIG9yIHRoZSBuYW1lIG9mIHNwbGl0IHBhcnRpdGlvbiwgb3IgdGhlIG5h bWUgb2YgdGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTUxOSw3ICsxNjEyLDggQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJh bDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0 aXRlbT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIG5hbWVzIG9mIHRoZSB0YWJsZXMgYmVp bmcgbWVyZ2VkIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICAgIFRoZSBuYW1lcyBvZiB0 aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9uIG9yIHNwbGl0IGlu dG8KKyAgICAgICAgbmV3IHBhcnRpdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0 aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xOTUyLDYgKzIwNDYsMjQgQEAgQUxURVIg VEFCTEUgbWVhc3VyZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDE1 bTEyOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBh IHNpbmdsZSBwYXJ0aXRpb24gb2YgdGhlIHJhbmdlLXBhcnRpdGlvbmVkIHRhYmxlOgorPHByb2dy YW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMyBJTlRPCisgICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjMgRk9SIFZB TFVFUyBGUk9NICgnMjAyMy0wMi0wMScpIFRPICgnMjAyMy0wMy0wMScpLAorICAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDMtMDEnKSBUTyAoJzIwMjMt MDQtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMyBGT1IgVkFMVUVTIEZST00gKCcy MDIzLTA0LTAxJykgVE8gKCcyMDIzLTA1LTAxJykpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+ CisKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24gb2YgdGhlIGxpc3Qt cGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAgKFBBUlRJVElPTiBzYWxlc193 ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdW bGFkaXZvc3RvaycpLAorICAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4g KCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4K KwogICA8cGFyYT4KICAgIFRvIG1lcmdlIHNldmVyYWwgcGFydGl0aW9ucyBpbnRvIG9uZSBwYXJ0 aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKaW5kZXggZjcwMzI5M2RiYzMuLjk1M2ZhZGI5YzZiIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwpAQCAtNzQyLDYgKzc0Miw5IEBAIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0 ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSk7CiAKIHN0YXRp YyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0 ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyB2b2lkIEFURXhlY1NwbGl0 UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJCQkJ IFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCisJCQkJCQkJCSBBbHRlclRhYmxlVXRp bGl0eUNvbnRleHQgKmNvbnRleHQpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRpb24K QEAgLTQ4MzksNiArNDg0Miw3IEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykK IAkJCQlicmVhazsKIAogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQljYXNlIEFUX1Nw bGl0UGFydGl0aW9uOgogCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CiAJ CQkJYnJlYWs7CiAKQEAgLTUyNzgsNiArNTI4Miw3IEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCXBhc3MgPSBBVF9QQVNTX01J U0M7CiAJCQlicmVhazsKIAkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCWNhc2UgQVRfU3Bs aXRQYXJ0aXRpb246CiAJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBB VFRfUEFSVElUSU9ORURfVEFCTEUpOwogCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5l ZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKQEAgLTU2ODYsNiArNTY5MSwxNCBAQCBB VEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQkJQVRFeGVj TWVyZ2VQYXJ0aXRpb25zKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRpb25DbWQgKikgY21kLT5k ZWYsCiAJCQkJCQkJCSAgY29udGV4dCk7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9TcGxpdFBhcnRp dGlvbjoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21k LCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFz c2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUs IHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlw ZSk7CkBAIC02NzI4LDYgKzY3NDEsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRl clRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5B TElaRSI7CiAJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJcmV0dXJuICJNRVJHRSBQQVJU SVRJT05TIjsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCXJldHVybiAiU1BMSVQgUEFS VElUSU9OIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1O IC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMjI5MDUsMyAr MjI5MjAsNDIwIEBAIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkvKiBSZXN0b3JlIHRoZSB1c2VyaWQgYW5k IHNlY3VyaXR5IGNvbnRleHQuICovCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJp ZCwgc2F2ZV9zZWNfY29udGV4dCk7CiB9CisKKy8qCisgKiBTdHJ1Y3Qgd2l0aCB0aGUgY29udGV4 dCBvZiB0aGUgbmV3IHBhcnRpdGlvbiBmb3IgaW5zZXJ0aW5nIHJvd3MgZnJvbSB0aGUKKyAqIHNw bGl0IHBhcnRpdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3BsaXRQYXJ0aXRpb25Db250ZXh0 Cit7CisJRXhwclN0YXRlICAqcGFydHF1YWxzdGF0ZTsJLyogZXhwcmVzc2lvbiBmb3IgY2hlY2tp bmcgYSBzbG90IGZvciBhCisJCQkJCQkJCSAqIHBhcnRpdGlvbiAoTlVMTCBmb3IgREVGQVVMVCBw YXJ0aXRpb24pICovCisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIHN0YXRlIG9mIGJ1bGsg aW5zZXJ0cyBmb3IgcGFydGl0aW9uICovCisJVHVwbGVUYWJsZVNsb3QgKmRzdHNsb3Q7CS8qIHNs b3QgZm9yIGluc2VydGluZyByb3cgaW50byBwYXJ0aXRpb24gKi8KKwlBbHRlcmVkVGFibGVJbmZv ICp0YWI7CQkvKiBzdHJ1Y3R1cmUgd2l0aCBnZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zCisJ CQkJCQkJCSAqIGFuZCBjaGVjayBjb25zdHJhaW50IGV4cHJlc3Npb25zLiAqLworCVJlbGF0aW9u CXBhcnRSZWw7CQkvKiByZWxhdGlvbiBmb3IgcGFydGl0aW9uICovCit9IFNwbGl0UGFydGl0aW9u Q29udGV4dDsKKworLyoKKyAqIGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogY3JlYXRlIGNv bnRleHQgZm9yIHBhcnRpdGlvbiBhbmQgZmlsbCBpdAorICovCitzdGF0aWMgU3BsaXRQYXJ0aXRp b25Db250ZXh0ICoKK2NyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChSZWxhdGlvbiBwYXJ0UmVs KQoreworCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGM7CisKKwlwYyA9IChTcGxpdFBhcnRpdGlv bkNvbnRleHQgKikgcGFsbG9jMChzaXplb2YoU3BsaXRQYXJ0aXRpb25Db250ZXh0KSk7CisJcGMt PnBhcnRSZWwgPSBwYXJ0UmVsOworCisJLyoKKwkgKiBQcmVwYXJlIGEgQnVsa0luc2VydFN0YXRl IGZvciB0YWJsZV90dXBsZV9pbnNlcnQuIFRoZSBGU00gaXMgZW1wdHksIHNvCisJICogZG9uJ3Qg Ym90aGVyIHVzaW5nIGl0LgorCSAqLworCXBjLT5iaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRl KCk7CisKKwkvKiBDcmVhdGUgYSBkZXN0aW5hdGlvbiB0dXBsZSBzbG90IGZvciB0aGUgbmV3IHBh cnRpdGlvbi4gKi8KKwlwYy0+ZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHBjLT5wYXJ0UmVs LCBOVUxMKTsKKworCXJldHVybiBwYzsKK30KKworLyoKKyAqIGRlbGV0ZVNwbGl0UGFydGl0aW9u Q29udGV4dDogZGVsZXRlIGNvbnRleHQgZm9yIHBhcnRpdGlvbgorICovCitzdGF0aWMgdm9pZAor ZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMsIExp c3QgKip3cXVldWUsIGludCB0aV9vcHRpb25zKQoreworCUxpc3RDZWxsICAgKmx0YWI7CisKKwlF eGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHBjLT5kc3RzbG90KTsKKwlGcmVlQnVsa0luc2Vy dFN0YXRlKHBjLT5iaXN0YXRlKTsKKworCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydChwYy0+cGFy dFJlbCwgdGlfb3B0aW9ucyk7CisKKwkvKgorCSAqIFdlIGRvbid0IG5lZWQgdG8gcHJvY2VzcyB0 aGlzIHBjLT5wYXJ0UmVsIHNvIGRlbGV0ZSB0aGUgQUxURVIgVEFCTEUKKwkgKiBxdWV1ZSBvZiBp dC4KKwkgKi8KKwlmb3JlYWNoKGx0YWIsICp3cXVldWUpCisJeworCQlBbHRlcmVkVGFibGVJbmZv ICp0YWIgPSAoQWx0ZXJlZFRhYmxlSW5mbyAqKSBsZmlyc3QobHRhYik7CisKKwkJaWYgKHRhYi0+ cmVsaWQgPT0gUmVsYXRpb25HZXRSZWxpZChwYy0+cGFydFJlbCkpCisJCXsKKwkJCSp3cXVldWUg PSBsaXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUsIGx0YWIpOworCQkJYnJlYWs7CisJCX0KKwl9CisK KwlwZnJlZShwYyk7Cit9CisKKy8qCisgKiBTcGxpdFBhcnRpdGlvbk1vdmVSb3dzOiBzY2FuIHNw bGl0IHBhcnRpdGlvbiAoc3BsaXRSZWwpIG9mIHBhcnRpdGlvbmVkIHRhYmxlCisgKiAocmVsKSBh bmQgbW92ZSByb3dzIGludG8gbmV3IHBhcnRpdGlvbnMuCisgKgorICogTmV3IHBhcnRpdGlvbnMg ZGVzY3JpcHRpb246CisgKiBwYXJ0bGlzdDogbGlzdCBvZiBwb2ludGVycyB0byBTaW5nbGVQYXJ0 aXRpb25TcGVjIHN0cnVjdHVyZXMuICBJdCBjb250YWlucworICogdGhlIHBhcnRpdGlvbiBzcGVj aWZpY2F0aW9uIGRldGFpbHMgZm9yIGFsbCBuZXcgcGFydGl0aW9ucy4KKyAqIG5ld1BhcnRSZWxz OiBsaXN0IG9mIFJlbGF0aW9ucywgbmV3IHBhcnRpdGlvbnMgY3JlYXRlZCBpbgorICogQVRFeGVj U3BsaXRQYXJ0aXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitTcGxpdFBhcnRpdGlvbk1vdmVSb3dz KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsCisJCQkJCSAg IExpc3QgKnBhcnRsaXN0LCBMaXN0ICpuZXdQYXJ0UmVscykKK3sKKwkvKiBUaGUgRlNNIGlzIGVt cHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJdGlfb3B0aW9ucyA9IFRB QkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlDb21tYW5kSWQJbXljaWQ7CisJRVN0YXRlCSAgICplc3Rh dGU7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlUdXBsZVRhYmxl U2xvdCAqc3Jjc2xvdDsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJVGFibGVTY2FuRGVzYyBz Y2FuOworCVNuYXBzaG90CXNuYXBzaG90OworCU1lbW9yeUNvbnRleHQgb2xkQ3h0OworCUxpc3QJ ICAgKnBhcnRDb250ZXh0cyA9IE5JTDsKKwlUdXBsZUNvbnZlcnNpb25NYXAgKnR1cGxlX21hcDsK KwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKmRlZmF1bHRQYXJ0Q3R4ID0gTlVMTCwKKwkJCSAgICpw YzsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCWVzdGF0ZSA9IENy ZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWZvcmJvdGgobGlzdHB0ciwgcGFydGxpc3QsIGxpc3Rw dHIyLCBuZXdQYXJ0UmVscykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5n bGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQlwYyA9IGNyZWF0ZVNwbGl0 UGFydGl0aW9uQ29udGV4dCgoUmVsYXRpb24pIGxmaXJzdChsaXN0cHRyMikpOworCisJCS8qIEZp bmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoZSBuZXcgcGFydGl0aW9uIHRhYmxlOiBuZXdQ YXJ0UmVsLiAqLworCQlwYy0+dGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgcGMtPnBhcnRS ZWwpOworCisJCWJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlcyhwYy0+dGFiLCBwYy0+cGFy dFJlbCwgZXN0YXRlKTsKKworCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJeworCQkJ LyoKKwkJCSAqIFdlIHNob3VsZCBub3QgY3JlYXRlIGEgc3RydWN0dXJlIHRvIGNoZWNrIHRoZSBw YXJ0aXRpb24KKwkJCSAqIGNvbnN0cmFpbnQgZm9yIHRoZSBuZXcgREVGQVVMVCBwYXJ0aXRpb24u CisJCQkgKi8KKwkJCWRlZmF1bHRQYXJ0Q3R4ID0gcGM7CisJCX0KKwkJZWxzZQorCQl7CisJCQlM aXN0CSAgICpwYXJ0Q29uc3RyYWludDsKKworCQkJLyogQnVpbGQgZXhwcmVzc2lvbiBleGVjdXRp b24gc3RhdGVzIGZvciBwYXJ0aXRpb24gY2hlY2sgcXVhbHMuICovCisJCQlwYXJ0Q29uc3RyYWlu dCA9IGdldF9xdWFsX2Zyb21fcGFydGJvdW5kKHJlbCwgc3BzLT5ib3VuZCk7CisJCQlwYXJ0Q29u c3RyYWludCA9CisJCQkJKExpc3QgKikgZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLAorCQkJ CQkJCQkJCQkJKE5vZGUgKikgcGFydENvbnN0cmFpbnQpOworCQkJLyogTWFrZSBhIGJvb2xlYW4g ZXhwcmVzc2lvbiBmb3IgRXhlY0NoZWNrKCkuICovCisJCQlwYXJ0Q29uc3RyYWludCA9IGxpc3Rf bWFrZTEobWFrZV9hbmRzX2V4cGxpY2l0KHBhcnRDb25zdHJhaW50KSk7CisKKwkJCS8qCisJCQkg KiBNYXAgdGhlIHZhcnMgaW4gdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBmcm9tIHJlbCdzIGF0 dG5vcyB0bworCQkJICogc3BsaXRSZWwncy4KKwkJCSAqLworCQkJcGFydENvbnN0cmFpbnQgPSBt YXBfcGFydGl0aW9uX3ZhcmF0dG5vcyhwYXJ0Q29uc3RyYWludCwKKwkJCQkJCQkJCQkJCQkgMSwg c3BsaXRSZWwsIHJlbCk7CisKKwkJCXBjLT5wYXJ0cXVhbHN0YXRlID0KKwkJCQlFeGVjUHJlcGFy ZUV4cHIoKEV4cHIgKikgbGluaXRpYWwocGFydENvbnN0cmFpbnQpLCBlc3RhdGUpOworCQkJQXNz ZXJ0KHBjLT5wYXJ0cXVhbHN0YXRlICE9IE5VTEwpOworCQl9CisKKwkJLyogU3RvcmUgcGFydGl0 aW9uIGNvbnRleHQgaW50byBhIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBlbmQocGFy dENvbnRleHRzLCBwYyk7CisJfQorCisJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0 KGVzdGF0ZSk7CisKKwkvKiBDcmVhdGUgdGhlIG5lY2Vzc2FyeSB0dXBsZSBzbG90LiAqLworCXNy Y3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShzcGxpdFJlbCwgTlVMTCk7CisKKwkvKgorCSAqIE1h cCBjb21wdXRpbmcgZm9yIG1vdmluZyBhdHRyaWJ1dGVzIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24g dG8gdGhlIG5ldworCSAqIHBhcnRpdGlvbiAoZm9yIHRoZSBmaXJzdCBuZXcgcGFydGl0aW9uLCBi dXQgb3RoZXIgbmV3IHBhcnRpdGlvbnMgY2FuCisJICogdXNlIHRoZSBzYW1lIG1hcCkuCisJICov CisJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0X2hlYWQocGFydENv bnRleHRzKSk7CisJdHVwbGVfbWFwID0gY29udmVydF90dXBsZXNfYnlfbmFtZShSZWxhdGlvbkdl dERlc2NyKHNwbGl0UmVsKSwKKwkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IocGMtPnBhcnRS ZWwpKTsKKworCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KKwlzbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nh bihzcGxpdFJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCisJLyoKKwkgKiBTd2l0Y2ggdG8gcGVy LXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQorCSAqIHBy b2R1Y2VkLCBzbyB3ZSBkb24ndCBsZWFrIG1lbW9yeS4KKwkgKi8KKwlvbGRDeHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOworCisJd2hp bGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNy Y3Nsb3QpKQorCXsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJVHVwbGVUYWJsZVNsb3QgKmlu c2VydHNsb3Q7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQllY29udGV4dC0+ZWN4 dF9zY2FudHVwbGUgPSBzcmNzbG90OworCisJCS8qIFNlYXJjaCBwYXJ0aXRpb24gZm9yIHRoZSBj dXJyZW50IHNsb3QsIHNyY3Nsb3QuICovCisJCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRz KQorCQl7CisJCQlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIp OworCisJCQkvKiBza2lwIERFRkFVTFQgcGFydGl0aW9uICovCisJCQlpZiAocGMtPnBhcnRxdWFs c3RhdGUgJiYgRXhlY0NoZWNrKHBjLT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQl7CisJ CQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmICghZm91bmQpCisJ CXsKKwkJCS8qIFVzZSB0aGUgREVGQVVMVCBwYXJ0aXRpb24gaWYgaXQgZXhpc3RzLiAqLworCQkJ aWYgKGRlZmF1bHRQYXJ0Q3R4KQorCQkJCXBjID0gZGVmYXVsdFBhcnRDdHg7CisJCQllbHNlCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9DSEVDS19WSU9MQVRJT04p LAorCQkJCQkJZXJybXNnKCJjYW4gbm90IGZpbmQgcGFydGl0aW9uIGZvciBzcGxpdCBwYXJ0aXRp b24gcm93IiksCisJCQkJCQllcnJ0YWJsZShzcGxpdFJlbCkpOworCQl9CisKKwkJaWYgKHR1cGxl X21hcCkKKwkJeworCQkJLyogTmVlZCB0byB1c2UgYSBtYXAgdG8gY29weSBhdHRyaWJ1dGVzLiAq LworCQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJN YXAsIHNyY3Nsb3QsIHBjLT5kc3RzbG90KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIEV4dHJh Y3QgZGF0YSBmcm9tIHRoZSBvbGQgdHVwbGUuICovCisJCQlzbG90X2dldGFsbGF0dHJzKHNyY3Ns b3QpOworCisJCQkvKiBDb3B5IGF0dHJpYnV0ZXMgZGlyZWN0bHkuICovCisJCQlpbnNlcnRzbG90 ID0gcGMtPmRzdHNsb3Q7CisKKwkJCUV4ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOworCisJCQlt ZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlcywgc3Jjc2xvdC0+dHRzX3ZhbHVlcywKKwkJCQkg ICBzaXplb2YoRGF0dW0pICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJCQltZW1jcHkoaW5zZXJ0 c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkgICBzaXplb2YoYm9v bCkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKworCQkJRXhlY1N0b3JlVmlydHVhbFR1cGxlKGlu c2VydHNsb3QpOworCQl9CisKKwkJLyoKKwkJICogQ29uc3RyYWludHMgYW5kIEdFTkVSQVRFRCBl eHByZXNzaW9ucyBtaWdodCByZWZlcmVuY2UgdGhlIHRhYmxlb2lkCisJCSAqIGNvbHVtbiwgc28g ZmlsbCB0dHNfdGFibGVPaWQgd2l0aCB0aGUgZGVzaXJlZCB2YWx1ZS4gKFdlIG11c3QgZG8KKwkJ ICogdGhpcyBlYWNoIHRpbWUsIGJlY2F1c2UgaXQgZ2V0cyBvdmVyd3JpdHRlbiB3aXRoIG5ld3Jl bCdzIE9JRAorCQkgKiBkdXJpbmcgc3RvcmluZy4pCisJCSAqLworCQlpbnNlcnRzbG90LT50dHNf dGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHBjLT5wYXJ0UmVsKTsKKworCQkvKgorCQkgKiBO b3csIGV2YWx1YXRlIGFueSBnZW5lcmF0ZWQgZXhwcmVzc2lvbnMgd2hvc2UgaW5wdXRzIGNvbWUg ZnJvbSB0aGUKKwkJICogbmV3IHR1cGxlLiAgV2UgYXNzdW1lIHRoZXNlIGNvbHVtbnMgd29uJ3Qg cmVmZXJlbmNlIGVhY2ggb3RoZXIsIHNvCisJCSAqIHRoYXQgdGhlcmUncyBubyBvcmRlcmluZyBk ZXBlbmRlbmN5LgorCQkgKi8KKwkJZXZhbHVhdGVHZW5lcmF0ZWRFeHByZXNzaW9uc0FuZENoZWNr Q29uc3RyYWludHMocGMtPnRhYiwgcGMtPnBhcnRSZWwsCisJCQkJCQkJCQkJCQkJCWluc2VydHNs b3QsIGVjb250ZXh0KTsKKworCQkvKiBXcml0ZSB0aGUgdHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVs YXRpb24uICovCisJCXRhYmxlX3R1cGxlX2luc2VydChwYy0+cGFydFJlbCwgaW5zZXJ0c2xvdCwg bXljaWQsCisJCQkJCQkgICB0aV9vcHRpb25zLCBwYy0+YmlzdGF0ZSk7CisKKwkJUmVzZXRFeHBy Q29udGV4dChlY29udGV4dCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN4dCk7 CisKKwl0YWJsZV9lbmRzY2FuKHNjYW4pOworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7 CisKKwlpZiAodHVwbGVfbWFwKQorCQlmcmVlX2NvbnZlcnNpb25fbWFwKHR1cGxlX21hcCk7CisK KwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOworCisJRnJlZUV4ZWN1dG9y U3RhdGUoZXN0YXRlKTsKKworCWZvcmVhY2hfcHRyKFNwbGl0UGFydGl0aW9uQ29udGV4dCwgc3Bj LCBwYXJ0Q29udGV4dHMpCisJCWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChzcGMsIHdxdWV1 ZSwgdGlfb3B0aW9ucyk7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BMSVQgUEFS VElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gSU5UTyA8cGFydGl0aW9uLWxpc3Q+CisgKi8KK3N0YXRp YyB2b2lkCitBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRh YmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRpb24Jc3BsaXRSZWw7CisJT2lk CQkJc3BsaXRSZWxPaWQ7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsK Kwlib29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CisJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFUQUxF Tl07CisJTGlzdAkgICAqbmV3UGFydFJlbHMgPSBOSUw7CisJT2JqZWN0QWRkcmVzcyBvYmplY3Q7 CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJc2F2ZV91c2VyaWQ7CisJaW50CQkJc2F2 ZV9zZWNfY29udGV4dDsKKwlpbnQJCQlzYXZlX25lc3RsZXZlbDsKKworCWRlZmF1bHRQYXJ0T2lk ID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNj KHJlbCwgdHJ1ZSkpOworCisJLyoKKwkgKiBQYXJ0aXRpb24gaXMgYWxyZWFkeSBsb2NrZWQgaW4g dGhlIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0CisJICogZnVuY3Rpb24uCisJICovCisJ c3BsaXRSZWwgPSB0YWJsZV9vcGVucnYoY21kLT5uYW1lLCBOb0xvY2spOworCisJc3BsaXRSZWxP aWQgPSBSZWxhdGlvbkdldFJlbGlkKHNwbGl0UmVsKTsKKworCS8qIENoZWNrIGRlc2NyaXB0aW9u cyBvZiBuZXcgcGFydGl0aW9ucy4gKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3Bl Yywgc3BzLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJT2lkCQkJZXhpc3RpbmdSZWxpZDsKKworCQkv KiBMb29rIHVwIHRoZSBleGlzdGluZyByZWxhdGlvbiBieSB0aGUgbmV3IHBhcnRpdGlvbiBuYW1l LiAqLworCQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2Uoc3BzLT5uYW1lLCBO b0xvY2ssICZleGlzdGluZ1JlbGlkKTsKKworCQkvKgorCQkgKiBUaGlzIHdvdWxkIGZhaWwgbGF0 ZXIgb24gYW55d2F5IGlmIHRoZSByZWxhdGlvbiBhbHJlYWR5IGV4aXN0cy4gQnV0CisJCSAqIGJ5 IGNhdGNoaW5nIGl0IGhlcmUsIHdlIGNhbiBlbWl0IGEgbmljZXIgZXJyb3IgbWVzc2FnZS4KKwkJ ICovCisJCWlmIChleGlzdGluZ1JlbGlkID09IHNwbGl0UmVsT2lkICYmICFpc1NhbWVOYW1lKQor CQkJLyogT25lIG5ldyBwYXJ0aXRpb24gY2FuIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyBhIHNwbGl0 IHBhcnRpdGlvbi4gKi8KKwkJCWlzU2FtZU5hbWUgPSB0cnVlOworCQllbHNlIGlmIChPaWRJc1Zh bGlkKGV4aXN0aW5nUmVsaWQpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJD T0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVh ZHkgZXhpc3RzIiwgc3BzLT5uYW1lLT5yZWxuYW1lKSk7CisJfQorCisJLyogRGV0YWNoIHRoZSBz cGxpdCBwYXJ0aXRpb24uICovCisJZGV0YWNoUGFydGl0aW9uVGFibGUocmVsLCBzcGxpdFJlbCwg ZGVmYXVsdFBhcnRPaWQpOworCisJLyoKKwkgKiBQZXJmb3JtIGEgcHJlbGltaW5hcnkgY2hlY2sg dG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBzYWZlIHRvIGRyb3AgdGhlCisJICogc3BsaXQgcGFy dGl0aW9uIGJlZm9yZSB3ZSBhY3R1YWxseSBkbyBzbyBsYXRlci4gQWZ0ZXIgbWVyZ2luZyByb3dz IGludG8KKwkgKiB0aGUgbmV3IHBhcnRpdGlvbnMgdmlhIFNwbGl0UGFydGl0aW9uTW92ZVJvd3Ms IGFsbCBvbGQgcGFydGl0aW9ucyBuZWVkCisJICogdG8gYmUgZHJvcHBlZC4gSG93ZXZlciwgc2lu Y2UgdGhlIGRyb3AgYmVoYXZpb3IgaXMgRFJPUF9SRVNUUklDVCBhbmQKKwkgKiB0aGUgbWVyZ2Ug cHJvY2VzcyAoU3BsaXRQYXJ0aXRpb25Nb3ZlUm93cykgY2FuIGJlIHRpbWUtY29uc3VtaW5nLAor CSAqIHBlcmZvcm1pbmcgYW4gZWFybHkgY2hlY2sgb24gdGhlIGRyb3AgZWxpZ2liaWxpdHkgb2Yg b2xkIHBhcnRpdGlvbnMgaXMKKwkgKiBwcmVmZXJhYmxlLgorCSAqLworCW9iamVjdC5vYmplY3RJ ZCA9IHNwbGl0UmVsT2lkOworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOwor CW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJcGVyZm9ybURlbGV0aW9uQ2hlY2soJm9iamVjdCwg RFJPUF9SRVNUUklDVCwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CisKKwkvKgorCSAqIElm IGEgbmV3IHBhcnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgc3BsaXQgcGFydGl0aW9u LCB0aGVuIHdlCisJICogc2hvdWxkIHJlbmFtZSB0aGUgc3BsaXQgcGFydGl0aW9uIHRvIHJldXNl IGl0cyBuYW1lLgorCSAqLworCWlmIChpc1NhbWVOYW1lKQorCXsKKwkJLyoKKwkJICogV2UgbXVz dCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1 cGxlCisJCSAqIHZpc2libGUgZm9yIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKwkJLyogUmVuYW1lIHBhcnRpdGlvbi4gKi8KKwkJc3ByaW50Zih0bXBSZWxO YW1lLCAic3BsaXQtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBNeVByb2NQaWQp OworCQlSZW5hbWVSZWxhdGlvbkludGVybmFsKHNwbGl0UmVsT2lkLCB0bXBSZWxOYW1lLCB0cnVl LCBmYWxzZSk7CisKKwkJLyoKKwkJICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIg dG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxlCisJCSAqIHZpc2libGUgYWZ0ZXIgcmVu YW1pbmcuCisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCX0KKworCS8qIENy ZWF0ZSBuZXcgcGFydGl0aW9ucyAobGlrZSBhIHNwbGl0IHBhcnRpdGlvbiksIHdpdGhvdXQgaW5k ZXhlcy4gKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBjbWQtPnBh cnRsaXN0KQorCXsKKwkJUmVsYXRpb24JbmV3UGFydFJlbDsKKworCQluZXdQYXJ0UmVsID0gY3Jl YXRlUGFydGl0aW9uVGFibGUod3F1ZXVlLCBzcHMtPm5hbWUsIHJlbCwKKwkJCQkJCQkJCQkgIHNw bGl0UmVsLT5yZF9yZWwtPnJlbG93bmVyKTsKKwkJbmV3UGFydFJlbHMgPSBsYXBwZW5kKG5ld1Bh cnRSZWxzLCBuZXdQYXJ0UmVsKTsKKwl9CisKKwkvKgorCSAqIFN3aXRjaCB0byB0aGUgdGFibGUg b3duZXIncyB1c2VyaWQsIHNvIHRoYXQgYW55IGluZGV4IGZ1bmN0aW9ucyBhcmUgcnVuCisJICog YXMgdGhhdCB1c2VyLiAgQWxzbywgbG9ja2Rvd24gc2VjdXJpdHktcmVzdHJpY3RlZCBvcGVyYXRp b25zIGFuZAorCSAqIGFycmFuZ2UgdG8gbWFrZSBHVUMgdmFyaWFibGUgY2hhbmdlcyBsb2NhbCB0 byB0aGlzIGNvbW1hbmQuCisJICoKKwkgKiBOZWVkIHRvIGRvIGl0IGFmdGVyIGRldGVybWluaW5n IHRoZSBuYW1lc3BhY2UgaW4gdGhlCisJICogY3JlYXRlUGFydGl0aW9uVGFibGUoKSBjYWxsLgor CSAqLworCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29u dGV4dCk7CisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzcGxpdFJlbC0+cmRfcmVsLT5yZWxvd25l ciwKKwkJCQkJCSAgIHNhdmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJB VElPTik7CisJc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0cmljdFNl YXJjaFBhdGgoKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIHRoZSBzcGxpdCBwYXJ0aXRpb24gdG8g dGhlIG5ldyBwYXJ0aXRpb25zLiAqLworCVNwbGl0UGFydGl0aW9uTW92ZVJvd3Mod3F1ZXVlLCBy ZWwsIHNwbGl0UmVsLCBjbWQtPnBhcnRsaXN0LCBuZXdQYXJ0UmVscyk7CisJLyogS2VlcCB0aGUg bG9jayB1bnRpbCBjb21taXQuICovCisJdGFibGVfY2xvc2Uoc3BsaXRSZWwsIE5vTG9jayk7CisK KwkvKiBBdHRhY2ggbmV3IHBhcnRpdGlvbnMgdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlLiAqLwor CWZvcmJvdGgobGlzdHB0ciwgY21kLT5wYXJ0bGlzdCwgbGlzdHB0cjIsIG5ld1BhcnRSZWxzKQor CXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikg bGZpcnN0KGxpc3RwdHIpOworCQlSZWxhdGlvbgluZXdQYXJ0UmVsID0gKFJlbGF0aW9uKSBsZmly c3QobGlzdHB0cjIpOworCisJCS8qCisJCSAqIHdxdWV1ZSA9IE5VTEw6IHZlcmlmaWNhdGlvbiBm b3IgZWFjaCBjbG9uZWQgY29uc3RyYWludCBpcyBub3QKKwkJICogbmVlZGVkLgorCQkgKi8KKwkJ YXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBzcHMtPmJvdW5kKTsK KwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJCXRhYmxlX2Nsb3NlKG5ld1Bh cnRSZWwsIE5vTG9jayk7CisJfQorCisJLyogRHJvcCB0aGUgc3BsaXQgcGFydGl0aW9uLiAqLwor CW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCW9iamVjdC5vYmplY3RJZCA9 IHNwbGl0UmVsT2lkOworCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJLyogUHJvYmFibHkgRFJP UF9DQVNDQURFIGlzIG5vdCBuZWVkZWQuICovCisJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERS T1BfUkVTVFJJQ1QsIDApOworCisJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRl ZCBieSBpbmRleCBmdW5jdGlvbnMuICovCisJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3Rs ZXZlbCk7CisKKwkvKiBSZXN0b3JlIHRoZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQuICov CisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7 Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQppbmRleCA1NjJmMTFkNjY3Ny4uMjhmNGUxMWUzMGYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQpAQCAtMjYyLDYgKzI2Miw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUGFydGl0aW9u RWxlbSAqcGFydGVsZW07CiAJUGFydGl0aW9uU3BlYyAqcGFydHNwZWM7CiAJUGFydGl0aW9uQm91 bmRTcGVjICpwYXJ0Ym91bmRzcGVjOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNpbmdsZXBhcnRz cGVjOwogCVJvbGVTcGVjICAgKnJvbGVzcGVjOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVibGlj YXRpb25vYmplY3RzcGVjOwogCVB1YmxpY2F0aW9uQWxsT2JqU3BlYyAqcHVibGljYXRpb25hbGxv YmplY3RzcGVjOwpAQCAtNjQ4LDYgKzY0OSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAl dHlwZSA8cGFydGVsZW0+CXBhcnRfZWxlbQogJXR5cGUgPGxpc3Q+CQlwYXJ0X3BhcmFtcwogJXR5 cGUgPHBhcnRib3VuZHNwZWM+IFBhcnRpdGlvbkJvdW5kU3BlYworJXR5cGUgPHNpbmdsZXBhcnRz cGVjPglTaW5nbGVQYXJ0aXRpb25TcGVjCisldHlwZSA8bGlzdD4JCXBhcnRpdGlvbnNfbGlzdAog JXR5cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJv dW5kX2VsZW0KIApAQCAtNzc3LDcgKzc4MCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJ U0FWRVBPSU5UIFNDQUxBUiBTQ0hFTUEgU0NIRU1BUyBTQ1JPTEwgU0VBUkNIIFNFQ09ORF9QIFNF Q1VSSVRZIFNFTEVDVAogCVNFUVVFTkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBTRVJWRVIg U0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwotCVNJTUlMQVIg U0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNU QU5EQUxPTkVfUAorCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBT UExJVCBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAogCVNUQVJUIFNUQVRFTUVOVCBT VEFUSVNUSUNTIFNURElOIFNURE9VVCBTVE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJTkdfUCBT VFJJUF9QCiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBT WVNURU1fUCBTWVNURU1fVVNFUgogCkBAIC0yMzg1LDYgKzIzODgsMjMgQEAgYWx0ZXJfdGFibGVf Y21kczoKIAkJCXwgYWx0ZXJfdGFibGVfY21kcyAnLCcgYWx0ZXJfdGFibGVfY21kCXsgJCQgPSBs YXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCitwYXJ0aXRpb25zX2xpc3Q6CisJCQlTaW5nbGVQYXJ0 aXRpb25TcGVjCQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwYXJ0aXRpb25z X2xpc3QgJywnIFNpbmdsZVBhcnRpdGlvblNwZWMJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQor CQk7CisKK1NpbmdsZVBhcnRpdGlvblNwZWM6CisJCQlQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUg UGFydGl0aW9uQm91bmRTcGVjCisJCQkJeworCQkJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpuID0g bWFrZU5vZGUoU2luZ2xlUGFydGl0aW9uU3BlYyk7CisKKwkJCQkJbi0+bmFtZSA9ICQyOworCQkJ CQluLT5ib3VuZCA9ICQzOworCisJCQkJCSQkID0gbjsKKwkJCQl9CisJCTsKKwogcGFydGl0aW9u X2NtZDoKIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDx0YWJsZV9u YW1lPiBGT1IgVkFMVUVTICovCiAJCQlBVFRBQ0ggUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBh cnRpdGlvbkJvdW5kU3BlYwpAQCAtMjQyOSw2ICsyNDQ5LDIwIEBAIHBhcnRpdGlvbl9jbWQ6CiAJ CQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0K KwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRpdGlvbl9uYW1l PiBJTlRPICgpICovCisJCQl8IFNQTElUIFBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBJTlRPICco JyBwYXJ0aXRpb25zX2xpc3QgJyknCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFr ZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRpdGlvbkNtZCAqY21kID0gbWFrZU5vZGUo UGFydGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0eXBlID0gQVRfU3BsaXRQYXJ0aXRpb247CisJ CQkJCWNtZC0+bmFtZSA9ICQzOworCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5w YXJ0bGlzdCA9ICQ2OworCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVm ID0gKE5vZGUgKikgY21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQkJLyogQUxU RVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ ICovCiAJCQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElO VE8gcXVhbGlmaWVkX25hbWUKIAkJCQl7CkBAIC0xODEyNiw2ICsxODE2MCw3IEBAIHVucmVzZXJ2 ZWRfa2V5d29yZDoKIAkJCXwgU0tJUAogCQkJfCBTTkFQU0hPVAogCQkJfCBTT1VSQ0UKKwkJCXwg U1BMSVQKIAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApAQCAtMTg3 NjgsNiArMTg4MDMsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNOQVBTSE9UCiAJCQl8 IFNPTUUKIAkJCXwgU09VUkNFCisJCQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJMRQog CQkJfCBTVEFOREFMT05FX1AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGJmMDJl Mzg3ODVkLi4zNzViNDBiMjlhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0x MzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29uc3RyYWludEF0dHJzKENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgTGlzdCAqY29uc3RyYWludExpc3QpOwogc3Rh dGljIHZvaWQgdHJhbnNmb3JtQ29sdW1uVHlwZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1 bW5EZWYgKmNvbHVtbik7CiBzdGF0aWMgdm9pZCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNv bnRleHRfc2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSk7Ci1zdGF0aWMgdm9pZCB0cmFu c2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpj bWQpOworc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0 ICpjeHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpOwogc3RhdGljIExpc3QgKnRyYW5zZm9y bVBhcnRpdGlvblJhbmdlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QsCiAJ CQkJCQkJCQkJICAgUmVsYXRpb24gcGFyZW50KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlSW5maW5p dGVCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCk7CkBAIC0zNTE1LDkgKzM1 MTUsMTEgQEAgdHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1 ZXJ5U3RyaW5nLAogLyoKICAqIGNoZWNrUGFydGl0aW9uCiAgKiBDaGVjayB3aGV0aGVyIHBhcnRS ZWxPaWQgaXMgYSBsZWFmIHBhcnRpdGlvbiBvZiB0aGUgcGFyZW50IHRhYmxlIChyZWwpLgorICog aXNNZXJnZTogdHJ1ZSBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBpcyAiQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMiOworICogZmFsc2UgaW5kaWNhdGVzIHRoZSBvcGVyYXRpb24gaXMg IkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04iLgogICovCiBzdGF0aWMgdm9pZAotY2hl Y2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKK2NoZWNrUGFydGl0aW9u KFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxPaWQsIGJvb2wgaXNNZXJnZSkKIHsKIAlSZWxhdGlv bglwYXJ0UmVsOwogCkBAIC0zNTI3LDI1ICszNTI5LDE3NiBAQCBjaGVja1BhcnRpdGlvbihSZWxh dGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUo RVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEg dGFibGUiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSksCi0JCQkJZXJyaGludCgi QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9u cyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCQkJCWlzTWVyZ2UKKwkJCQk/IGVycmhp bnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRp dGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpCisJCQkJOiBlcnJoaW50KCJBTFRFUiBU QUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIGNhbiBvbmx5IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3Qg aGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKIAogCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3Bh cnRpdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JK RUNUX1RZUEUpLAogCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0 aXRpb25lZCB0YWJsZSBcIiVzXCIiLAogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShw YXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCi0JCQkJZXJyaGludCgiQUxU RVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBk b24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCQkJCWlzTWVyZ2UKKwkJCQk/IGVycmhpbnQo IkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlv bnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpCisJCQkJOiBlcnJoaW50KCJBTFRFUiBUQUJM RSAuLi4gU1BMSVQgUEFSVElUSU9OIGNhbiBvbmx5IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2 ZSBzdWItcGFydGl0aW9ucyIpKTsKIAogCWlmIChnZXRfcGFydGl0aW9uX3BhcmVudChwYXJ0UmVs T2lkLCBmYWxzZSkgIT0gUmVsYXRpb25HZXRSZWxpZChyZWwpKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfVEFCTEUpLAogCQkJCWVycm1zZygicmVsYXRp b24gXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsKSksCi0JCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMg Y2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwor CQkJCWlzTWVyZ2UKKwkJCQk/IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJ T05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIp CisJCQkJOiBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIGNhbiBvbmx5 IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKIAogCXRhYmxl X2Nsb3NlKHBhcnRSZWwsIE5vTG9jayk7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1QYXJ0aXRpb25D bWRGb3JTcGxpdCAtCisgKgkJYW5hbHl6ZSB0aGUgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJ VElPTiBjb21tYW5kCisgKgorICogRm9yIGVhY2ggbmV3IHBhcnRpdGlvbiwgc3BzLT5ib3VuZCBp cyBzZXQgdG8gdGhlIHRyYW5zZm9ybWVkIHZhbHVlIG9mIGJvdW5kLgorICogRG9lcyBjaGVja3Mg Zm9yIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucy4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9y bVBhcnRpdGlvbkNtZEZvclNwbGl0KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNt ZCAqcGFydGNtZCkKK3sKKwlSZWxhdGlvbglwYXJlbnQgPSBjeHQtPnJlbDsKKwlQYXJ0aXRpb25L ZXkga2V5OworCWNoYXIJCXN0cmF0ZWd5OworCU9pZAkJCXNwbGl0UGFydE9pZDsKKwlPaWQJCQlk ZWZhdWx0UGFydE9pZDsKKwlpbnQJCQlkZWZhdWx0X2luZGV4ID0gLTE7CisJYm9vbAkJaXNTcGxp dFBhcnREZWZhdWx0OworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJ TGlzdAkgICAqc3BsaXRsaXN0OworCisJc3BsaXRsaXN0ID0gcGFydGNtZC0+cGFydGxpc3Q7CisJ a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9w YXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29p ZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsK KworCS8qIFRyYW5zZm9ybSBwYXJ0aXRpb24gYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0 aGUgbGlzdDogKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBzcGxp dGxpc3QpCisJeworCQljeHQtPnBhcnRib3VuZCA9IE5VTEw7CisJCXRyYW5zZm9ybVBhcnRpdGlv bkNtZChjeHQsIHNwcy0+Ym91bmQpOworCQkvKiBBc3NpZ24gdGhlIHRyYW5zZm9ybWVkIHZhbHVl IG9mIHRoZSBwYXJ0aXRpb24gYm91bmQuICovCisJCXNwcy0+Ym91bmQgPSBjeHQtPnBhcnRib3Vu ZDsKKwl9CisKKwkvKgorCSAqIE9wZW4gYW5kIGxvY2sgdGhlIHBhcnRpdGlvbiwgY2hlY2sgb3du ZXJzaGlwIGFsb25nIHRoZSB3YXkuIFdlIG5lZWQgdG8KKwkgKiB1c2UgQWNjZXNzRXhjbHVzaXZl TG9jayBoZXJlIGJlY2F1c2UgdGhpcyBzcGxpdCBwYXJ0aXRpb24gd2lsbCBiZQorCSAqIGRldGFj aGVkLCB0aGVuIGRyb3BwZWQgaW4gQVRFeGVjU3BsaXRQYXJ0aXRpb24uCisJICovCisJc3BsaXRQ YXJ0T2lkID0gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKHBhcnRjbWQtPm5hbWUsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2ssCisJCQkJCQkJCQkJCTAsIFJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24s CisJCQkJCQkJCQkJCU5VTEwpOworCisJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBzcGxpdFBhcnRP aWQsIGZhbHNlKTsKKworCXN3aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElPTl9T VFJBVEVHWV9MSVNUOgorCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJ CQlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBzcGxpdGxpc3QpCisJCQkJ eworCQkJCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJCQkJeworCQkJCQkJaWYgKGRl ZmF1bHRfaW5kZXggIT0gLTEpCisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJCWVycm1zZygi REVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZSIpLAorCQkJCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKGN4dC0+cHN0YXRlLCBzcHMtPm5hbWUtPmxvY2F0aW9uKSk7CisKKwkJCQkJCWRlZmF1 bHRfaW5kZXggPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgoc3BzKTsKKwkJCQkJfQorCQkJCX0KKwkJ CX0KKwkJCWJyZWFrOworCisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0hBU0g6CisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkJZXJybXNnKCJwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3Qg YmUgc3BsaXQiKSk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVu ZXhwZWN0ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtleS0+c3RyYXRl Z3kpOworCQkJYnJlYWs7CisJfQorCisJLyogaXNTcGxpdFBhcnREZWZhdWx0OiBpcyB0aGUgYmVp bmcgc3BsaXQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJaXNTcGxpdFBhcnRE ZWZhdWx0ID0gKGRlZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9pZCk7CisKKwlpZiAoaXNTcGxp dFBhcnREZWZhdWx0ICYmIGRlZmF1bHRfaW5kZXggPT0gLTEpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1z ZygiY2FuIG5vdCBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICBnZXRf cmVsX25hbWUoc3BsaXRQYXJ0T2lkKSksCisJCQkJZXJyaGludCgiVG8gc3BsaXQgREVGQVVMVCBw YXJ0aXRpb24gb25lIG9mIHRoZSBuZXcgcGFydGl0aW9uIG1zdXQgYmUgREVGQVVMVCIpLAorCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgKChTaW5nbGVQYXJ0aXRpb25TcGVjICop IGxpbml0aWFsKHNwbGl0bGlzdCkpLT5uYW1lLT5sb2NhdGlvbikpOworCisJLyoKKwkgKiBJZiB0 aGUgcGFydGl0aW9uIGJlaW5nIHNwbGl0IGlzIG5vdCB0aGUgREVGQVVMVCBwYXJ0aXRpb24sIGJ1 dCB0aGUKKwkgKiBERUZBVUxUIHBhcnRpdGlvbiBleGlzdHMsIHRoZW4gbm9uZSBvZiB0aGUgcmVz dWx0aW5nIHNwbGl0IHBhcnRpdGlvbnMKKwkgKiBjYW4gYmUgdGhlIERFRkFVTFQuCisJICovCisJ aWYgKCFpc1NwbGl0UGFydERlZmF1bHQgJiYgKGRlZmF1bHRfaW5kZXggIT0gLTEpICYmIE9pZElz VmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzRGVm ID0KKwkJCShTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxpc3RfbnRoKHNwbGl0bGlzdCwgZGVmYXVs dF9pbmRleCk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJjYW4gbm90IHNwbGl0IG5vbi1ERUZB VUxUIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICBnZXRfcmVsX25hbWUoc3BsaXRQYXJ0T2lk KSksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2Ug REVGQVVMVCBwYXJ0aXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJICAgZ2V0X3Jl bF9uYW1lKGRlZmF1bHRQYXJ0T2lkKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0 YXRlLCBzcHNEZWYtPm5hbWUtPmxvY2F0aW9uKSk7CisJfQorCisJZm9yZWFjaChsaXN0cHRyLCBz cGxpdGxpc3QpCisJeworCQlPaWQJCQluc3BpZDsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3Bz ID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCQlSYW5nZVZhciAg ICpuYW1lID0gc3BzLT5uYW1lOworCisJCW5zcGlkID0gUmFuZ2VWYXJHZXRDcmVhdGlvbk5hbWVz cGFjZShzcHMtPm5hbWUpOworCisJCS8qIFBhcnRpdGlvbnMgaW4gdGhlIGxpc3Qgc2hvdWxkIGhh dmUgZGlmZmVyZW50IG5hbWVzLiAqLworCQlmb3JfZWFjaF9jZWxsKGxpc3RwdHIyLCBzcGxpdGxp c3QsIGxuZXh0KHNwbGl0bGlzdCwgbGlzdHB0cikpCisJCXsKKwkJCU9pZAkJCW5zcGlkMjsKKwkJ CVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczIgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmly c3QobGlzdHB0cjIpOworCQkJUmFuZ2VWYXIgICAqbmFtZTIgPSBzcHMyLT5uYW1lOworCisJCQlp ZiAoZXF1YWwobmFtZSwgbmFtZTIpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2Rl KEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGgg bmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUyLT5sb2NhdGlvbikpOworCisJCQluc3Bp ZDIgPSBSYW5nZVZhckdldENyZWF0aW9uTmFtZXNwYWNlKHNwczItPm5hbWUpOworCisJCQlpZiAo bnNwaWQyID09IG5zcGlkICYmIHN0cmNtcChuYW1lLT5yZWxuYW1lLCBuYW1lMi0+cmVsbmFtZSkg PT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FU RV9UQUJMRSksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlzIGFs cmVhZHkgdXNlZCIsIG5hbWUtPnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4 dC0+cHN0YXRlLCBuYW1lMi0+bG9jYXRpb24pKTsKKwkJfQorCX0KKworCS8qIFRoZW4gd2Ugc2hv dWxkIGNoZWNrIHBhcnRpdGlvbnMgd2l0aCB0cmFuc2Zvcm1lZCBib3VuZHMuICovCisJY2hlY2tf cGFydGl0aW9uc19mb3Jfc3BsaXQocGFyZW50LCBzcGxpdFBhcnRPaWQsIHNwbGl0bGlzdCwgY3h0 LT5wc3RhdGUpOworfQorCisKIC8qCiAgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSAt CiAgKgkJYW5hbHl6ZSB0aGUgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY29tbWFu ZApAQCAtMzYyMiw3ICszNzc1LDcgQEAgdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQogCQkJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1lLT5sb2NhdGlvbikpOwogCQl9CiAKLQkJY2hl Y2tQYXJ0aXRpb24ocGFyZW50LCBwYXJ0T2lkKTsKKwkJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBw YXJ0T2lkLCB0cnVlKTsKIAogCQlwYXJ0T2lkcyA9IGxhcHBlbmRfb2lkKHBhcnRPaWRzLCBwYXJ0 T2lkKTsKIAl9CkBAIC0zOTEwLDggKzQwNjMsOCBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChP aWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCXsKIAkJCQkJUGFydGl0aW9uQ21k ICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKIAotCQkJCQl0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQoJmN4dCwgcGFydGNtZCk7Ci0JCQkJCS8qIGFzc2lnbiB0cmFuc2Zvcm1lZCB2 YWx1ZSBvZiB0aGUgcGFydGl0aW9uIGJvdW5kICovCisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNt ZCgmY3h0LCBwYXJ0Y21kLT5ib3VuZCk7CisJCQkJCS8qIGFzc2lnbiB0aGUgdHJhbnNmb3JtZWQg dmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZCAqLwogCQkJCQlwYXJ0Y21kLT5ib3VuZCA9IGN4 dC5wYXJ0Ym91bmQ7CiAJCQkJfQogCkBAIC0zOTMyLDYgKzQwODUsMjAgQEAgdHJhbnNmb3JtQWx0 ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQkJYnJlYWs7 CiAJCQkJfQogCisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCXsKKwkJCQkJUGFydGl0 aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAo bGlzdF9sZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQkJCQkJZXJybXNnKCJsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxl YXN0IHR3byBwYXJ0aXRpb25zIikpOworCisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNw bGl0KCZjeHQsIHBhcnRjbWQpOworCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQp OworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWRlZmF1bHQ6CiAKIAkJCQkvKgpAQCAtNDM2Miwx MyArNDUyOSwxMyBAQCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRleHRfc2NoZW1hLCBj aGFyICoqc3RtdF9zY2hlbWFfbmFtZSkKIAogLyoKICAqIHRyYW5zZm9ybVBhcnRpdGlvbkNtZAot ICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0ggUEFSVElUSU9OIGNvbW1hbmQKKyAqCQlBbmFs eXplIHRoZSBBVFRBQ0gvREVUQUNIL1NQTElUIFBBUlRJVElPTiBjb21tYW5kCiAgKgotICogSW4g Y2FzZSBvZiB0aGUgQVRUQUNIIFBBUlRJVElPTiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBpcyBz ZXQgdG8gdGhlCi0gKiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBjbWQtPmJvdW5kLgorICogSW4gY2Fz ZSBvZiB0aGUgQVRUQUNIL1NQTElUIFBBUlRJVElPTiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBp cyBzZXQgdG8gdGhlCisgKiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KICAqLwogc3RhdGlj IHZvaWQKLXRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0 aXRpb25DbWQgKmNtZCkKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kKQogewogCVJlbGF0aW9uCXBhcmVudFJlbCA9 IGN4dC0+cmVsOwogCkBAIC00Mzc3LDkgKzQ1NDQsOSBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQo Q3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCWNhc2UgUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRToKIAkJCS8qIHRyYW5zZm9ybSB0aGUgcGFydGl0aW9uIGJvdW5k LCBpZiBhbnkgKi8KIAkJCUFzc2VydChSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnRSZWwp ICE9IE5VTEwpOwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVMTCkKKwkJCWlmIChib3VuZCAhPSBO VUxMKQogCQkJCWN4dC0+cGFydGJvdW5kID0gdHJhbnNmb3JtUGFydGl0aW9uQm91bmQoY3h0LT5w c3RhdGUsIHBhcmVudFJlbCwKLQkJCQkJCQkJCQkJCQkJIGNtZC0+Ym91bmQpOworCQkJCQkJCQkJ CQkJCQkgYm91bmQpOwogCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9JTkRF WDoKIApAQCAtNDM4Nyw3ICs0NTU0LDcgQEAgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQogCQkJICogQSBwYXJ0aXRpb25lZCBp bmRleCBjYW5ub3QgaGF2ZSBhIHBhcnRpdGlvbiBib3VuZCBzZXQuICBBTFRFUgogCQkJICogSU5E RVggcHJldmVudHMgdGhhdCB3aXRoIGl0cyBncmFtbWFyLCBidXQgbm90IEFMVEVSIFRBQkxFLgog CQkJICovCi0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5VTEwp CiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpF Q1RfREVGSU5JVElPTiksCiAJCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9u ZWQgdGFibGUiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggYjgyYjI5 ZGU4ZjcuLmI3ZjkwYWUxMDlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMK QEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRl ICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUg ImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBl LmgiCkBAIC00OTc0LDE1ICs0OTc1LDIyIEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19G VU5DVElPTl9BUkdTKQogICoKICAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5n KQogICoKLSAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0ZV9wYXJ0aXRp b25fYm91bmRfZm9yX21lcmdlKCkuIFRoaXMKLSAqIGZ1bmN0aW9uIGNvbXBhcmVzIHRoZSB1cHBl ciBib3VuZCBvZiBmaXJzdF9ib3VuZCBhbmQgdGhlIGxvd2VyIGJvdW5kIG9mCi0gKiBzZWNvbmRf Ym91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKiBUaGlzIGlzIGEgaGVscGVy IGZ1bmN0aW9uIGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICogY2FsY3Vs YXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4gIFRoaXMgZnVuY3Rpb24gY29tcGFyZXMg dGhlIHVwcGVyCisgKiBib3VuZCBvZiBmaXJzdF9ib3VuZCBhbmQgdGhlIGxvd2VyIGJvdW5kIG9m IHNlY29uZF9ib3VuZC4gIFRoZXNlIGJvdW5kcworICogc2hvdWxkIGJlIGVxdWFsIGV4Y2VwdCB3 aGVuICJkZWZhdWx0UGFydCA9PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZgorICogdGhl IHNwbGl0IHBhcnRpdGlvbnMgaXMgREVGQVVMVCkuICBJbiB0aGlzIGNhc2UsIHRoZSB1cHBlciBi b3VuZCBvZgorICogZmlyc3RfYm91bmQgY2FuIGJlIGxlc3MgdGhhbiB0aGUgbG93ZXIgYm91bmQg b2Ygc2Vjb25kX2JvdW5kIGJlY2F1c2UKKyAqIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZXNlIGJvdW5k cyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBERUZBVUxUIHBhcnRpdGlvbi4KICAqCiAgKiBwYXJl bnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKICAqIGZpcnN0X25hbWU6CQluYW1lIG9mIHRoZSBmaXJz dCBwYXJ0aXRpb24KICAqIGZpcnN0X2JvdW5kOgkJYm91bmQgb2YgdGhlIGZpcnN0IHBhcnRpdGlv bgogICogc2Vjb25kX25hbWU6CQluYW1lIG9mIHRoZSBzZWNvbmQgcGFydGl0aW9uCiAgKiBzZWNv bmRfYm91bmQ6CWJvdW5kIG9mIHRoZSBzZWNvbmQgcGFydGl0aW9uCisgKiBkZWZhdWx0UGFydDoJ CXRydWUgaWYgb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBpcyBERUZBVUxUCisgKiBpc19tZXJn ZToJCXRydWUgbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBpcyBNRVJHRSBQQVJUSVRJT05TOworICog CQkJCQlmYWxzZSBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBpcyBTUExJVCBQQVJUSVRJT04uCiAg KiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5pbmcg ZXJyb3IgcG9zaXRpb24KICAqLwogc3RhdGljIHZvaWQKQEAgLTQ5OTEsNiArNDk5OSw4IEBAIGNo ZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJ CSAgUGFydGl0aW9uQm91bmRTcGVjICpmaXJzdF9ib3VuZCwKIAkJCQkJCQkJICBSYW5nZVZhciAq c2Vjb25kX25hbWUsCiAJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzZWNvbmRfYm91bmQs CisJCQkJCQkJCSAgYm9vbCBkZWZhdWx0UGFydCwKKwkJCQkJCQkJICBib29sIGlzX21lcmdlLAog CQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKIHsKIAlQYXJ0aXRpb25LZXkga2V5ID0gUmVs YXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKQEAgLTUwMTIsMTggKzUwMjIsMjggQEAgY2hl Y2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJ ICBrZXktPnBhcnRjb2xsYXRpb24sCiAJCQkJCQkJCSAgc2Vjb25kX2xvd2VyLT5kYXR1bXMsIHNl Y29uZF9sb3dlci0+a2luZCwKIAkJCQkJCQkJICBmYWxzZSwgZmlyc3RfdXBwZXIpOwotCWlmIChj bXB2YWwpCisJaWYgKCghZGVmYXVsdFBhcnQgJiYgY21wdmFsKSB8fCAoZGVmYXVsdFBhcnQgJiYg Y21wdmFsIDwgMCkpCiAJewogCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpbml0aWFs KHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMpOwogCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAotCQkJCWVycm1zZygiY2Fu IG5vdCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uIFwiJXNc IiIsCi0JCQkJCSAgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwK LQkJCQllcnJkZXRhaWwoImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVx dWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwKLQkJCQkJCSAgc2Vj b25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAotCQkJCWVycmhpbnQoIkFM VEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91 bmRzIHRvIGJlIGFkamFjZW50LiIpLAotCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRh dHVtLT5sb2NhdGlvbikpOworCQlpZiAoaXNfbWVyZ2UpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCWVycm1z ZygiY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9u IFwiJXNcIiIsCisJCQkJCQkgICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVs bmFtZSksCisJCQkJCWVycmRldGFpbCgibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBp cyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJ CQkJCSAgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAorCQkJCQll cnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFy dGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4iKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJy bXNnKCJjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiBcIiVzXCIgdG9nZXRoZXIgd2l0aCBwYXJ0 aXRpb24gXCIlc1wiIiwKKwkJCQkJCSAgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1l LT5yZWxuYW1lKSwKKwkJCQkJZXJyZGV0YWlsKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIl c1wiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIs CisJCQkJCQkJICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCisJ CQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZXMgdGhl IHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuIiksCisJCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOwogCX0KIH0KIApAQCAtNTEyNiw2ICs1MTQ2 LDggQEAgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50 LAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMs IHByZXZfaW5kZXgpLAogCQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnRO YW1lcywgaW5kZXgpLAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0 X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJCQkJ CSAgdHJ1ZSwKIAkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CiAJCQkJfQogCkBAIC01MTY0LDMgKzUx ODYsNjk0IEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBh cmVudCwKIAkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CiAJfQogfQorCisvKgorICogcGFydGl0 aW9uc19saXN0ZGF0dW1faW50ZXJzZWN0aW9uCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNU IHBhcnRpdGlvbmluZykKKyAqCisgKiBGdW5jdGlvbiBjb21wYXJlcyBsaXN0cyBvZiB2YWx1ZXMg Zm9yIGRpZmZlcmVudCBwYXJ0aXRpb25zLgorICogUmV0dXJuIGEgbGlzdCB0aGF0IGNvbnRhaW5z ICpvbmUqIGNlbGwgdGhhdCBpcyBwcmVzZW50IGluIGJvdGggbGlzdDEgYW5kCisgKiBsaXN0Mi4g IFRoZSByZXR1cm5lZCBsaXN0IGlzIGZyZXNobHkgYWxsb2NhdGVkIHZpYSBwYWxsb2MoKSwgYnV0 IHRoZQorICogY2VsbHMgdGhlbXNlbHZlcyBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzIGFzIHRo ZSBjZWxscyBvZiB0aGUKKyAqIGlucHV0IGxpc3RzLgorICoKKyAqIEN1cnJlbnRseSwgdGhlcmUg aXMgbm8gbmVlZCB0byBjb2xsZWN0IGFsbCBjb21tb24gcGFydGl0aW9uIGRhdHVtcyBmcm9tIHRo ZQorICogdHdvIGxpc3RzLgorICovCitzdGF0aWMgTGlzdCAqCitwYXJ0aXRpb25zX2xpc3RkYXR1 bV9pbnRlcnNlY3Rpb24oRm1nckluZm8gKnBhcnRzdXBmdW5jLCBPaWQgKnBhcnRjb2xsYXRpb24s CisJCQkJCQkJCSAgY29uc3QgTGlzdCAqbGlzdDEsIGNvbnN0IExpc3QgKmxpc3QyKQoreworCUxp c3QJICAgKnJlc3VsdCA9IE5JTDsKKworCWlmIChsaXN0MSA9PSBOSUwgfHwgbGlzdDIgPT0gTklM KQorCQlyZXR1cm4gcmVzdWx0OworCisJZm9yZWFjaF9ub2RlKENvbnN0LCB2YWwxLCBsaXN0MSkK Kwl7CisJCWJvb2wJCWlzbnVsbDEgPSB2YWwxLT5jb25zdGlzbnVsbDsKKworCQlmb3JlYWNoX25v ZGUoQ29uc3QsIHZhbDIsIGxpc3QyKQorCQl7CisJCQlpZiAodmFsMi0+Y29uc3Rpc251bGwpCisJ CQl7CisJCQkJaWYgKGlzbnVsbDEpCisJCQkJeworCQkJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3Vs dCwgdmFsMSk7CisJCQkJCXJldHVybiByZXN1bHQ7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJ fQorCQkJZWxzZSBpZiAoaXNudWxsMSkKKwkJCQljb250aW51ZTsKKworCQkJLyogQ29tcGFyZSB0 d28gZGF0dW0gdmFsdWVzLiAqLworCQkJaWYgKERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMkNv bGwoJnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJcGFydGNvbGxhdGlvblswXSwKKwkJCQkJ CQkJCQkJCXZhbDEtPmNvbnN0dmFsdWUsCisJCQkJCQkJCQkJCQl2YWwyLT5jb25zdHZhbHVlKSkg PT0gMCkKKwkJCXsKKwkJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgdmFsMSk7CisJCQkJcmV0 dXJuIHJlc3VsdDsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisg KiBjaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QKKyAqCisgKiAoZnVuY3Rpb24gZm9y IEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24g Zm9yIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KCkuCisgKiBDaGVja3MgdGhhdCB0aGUgdmFs dWVzIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBkbyBub3Qgb3ZlcmxhcC4KKyAqCisgKiBwYXJlbnQ6 CXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0czoJYXJyYXkgb2YgU2luZ2xlUGFydGl0aW9uU3Bl YyBzdHJ1Y3RzIHdpdGggaW5mbyBhYm91dCBzcGxpdCBwYXJ0aXRpb25zCisgKiBucGFydHM6CXNp emUgb2YgYXJyYXkgInBhcnRzIgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uc19u b3Rfb3ZlcmxhcF9saXN0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRp b25TcGVjICoqcGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBQYXJzZVN0 YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSBQR19VU0VEX0ZPUl9BU1NFUlRTX09O TFkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCWludAkJCWksCisJCQkJajsK KwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMxLAorCQkJICAgKnNwczI7CisJTGlzdAkgICAqb3Zl cmxhcDsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNU KTsKKworCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCXNwczEgPSBwYXJ0c1tp XTsKKworCQlmb3IgKGogPSBpICsgMTsgaiA8IG5wYXJ0czsgaisrKQorCQl7CisJCQlzcHMyID0g cGFydHNbal07CisKKwkJCW92ZXJsYXAgPSBwYXJ0aXRpb25zX2xpc3RkYXR1bV9pbnRlcnNlY3Rp b24oJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQkJCWtleS0+cGFydGNvbGxhdGlv biwKKwkJCQkJCQkJCQkJCQkJc3BzMS0+Ym91bmQtPmxpc3RkYXR1bXMsCisJCQkJCQkJCQkJCQkJ CXNwczItPmJvdW5kLT5saXN0ZGF0dW1zKTsKKwkJCWlmIChsaXN0X2xlbmd0aChvdmVybGFwKSA+ IDApCisJCQl7CisJCQkJQ29uc3QJICAgKnZhbCA9IChDb25zdCAqKSBsaW5pdGlhbF9ub2RlKENv bnN0LCBvdmVybGFwKTsKKworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQllcnJtc2coIm5ldyBwYXJ0aXRp b24gXCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gXCIlc1wi IiwKKwkJCQkJCQkgICBzcHMxLT5uYW1lLT5yZWxuYW1lLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwK KwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSB2 YWwpKSk7CisJCQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25fYm91bmRz X2Zvcl9zcGxpdF9yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9u aW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9uICJzcGVjIiBh cmUgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdAorICogcGFydGl0aW9uICh3aXRoIE9pZCBzcGxpdFBh cnRPaWQpLiBJZiBmaXJzdD10cnVlICh0aGlzIG1lYW5zIHRoYXQgInNwZWMiIGlzCisgKiB0aGUg Zmlyc3Qgb2YgdGhlIG5ldyBwYXJ0aXRpb25zKSwgdGhlbiB0aGUgbG93ZXIgYm91bmQgb2YgInNw ZWMiIHNob3VsZCBiZQorICogZXF1YWwgKG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBpbiBjYXNl IGRlZmF1bHRQYXJ0PXRydWUpIHRvIHRoZSBsb3dlcgorICogYm91bmQgb2YgdGhlIHNwbGl0IHBh cnRpdGlvbi4gSWYgbGFzdD10cnVlICh0aGlzIG1lYW5zIHRoYXQgInNwZWMiIGlzIHRoZQorICog bGFzdCBvZiB0aGUgbmV3IHBhcnRpdGlvbnMpLCB0aGVuIHRoZSB1cHBlciBib3VuZCBvZiAic3Bl YyIgc2hvdWxkIGJlCisgKiBlcXVhbCAob3IgbGVzcyB0aGFuIG9yIGVxdWFsIGluIGNhc2UgZGVm YXVsdFBhcnQ9dHJ1ZSkgdG8gdGhlIHVwcGVyIGJvdW5kCisgKiBvZiB0aGUgc3BsaXQgcGFydGl0 aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogcmVsbmFtZToJCQlu YW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGVjOgkJCWJvdW5kcyBzcGVjaWZpY2F0aW9u IG9mIHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGxpdFBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBP aWQKKyAqIGZpcnN0OgkJCXRydWUgaWZmIHRoZSBuZXcgcGFydGl0aW9uICJzcGVjIiBpcyB0aGUg Zmlyc3Qgb2YgdGhlCisgKgkJCQkJbmV3IHBhcnRpdGlvbnMKKyAqIGxhc3Q6CQkJdHJ1ZSBpZmYg dGhlIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIHRoZSBsYXN0IG9mIHRoZQorICoJCQkJCW5ldyBw YXJ0aXRpb25zCisgKiBkZWZhdWx0UGFydDoJCXRydWUgaWZmIG5ldyBwYXJ0aXRpb25zIGNvbnRh aW4gdGhlIERFRkFVTFQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0 YXRlIHN0cnVjdCB0byBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQK K2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwK KwkJCQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNw ZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgYm9v bCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wgZGVmYXVs dFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5 IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uUmFuZ2VC b3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJaW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtl eS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKwlBc3NlcnQoc3BlYy0+ c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKworCWxvd2VyID0gbWFrZV9v bmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVjLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJ dXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0 dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZpcnN0LCBjaGVjayBpZiB0aGUgcmVzdWx0aW5nIHJh bmdlIHdvdWxkIGJlIGVtcHR5IHdpdGggdGhlIHNwZWNpZmllZAorCSAqIGxvd2VyIGFuZCB1cHBl ciBib3VuZHMuICBwYXJ0aXRpb25fcmJvdW5kX2NtcCBjYW5ub3QgcmV0dXJuIHplcm8gaGVyZSwK KwkgKiBzaW5jZSB0aGUgbG93ZXItYm91bmQgZmxhZ3MgYXJlIGRpZmZlcmVudC4KKwkgKi8KKwlj bXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJICBr ZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJ ICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJICB0cnVlLCB1cHBlcik7CisJ QXNzZXJ0KGNtcHZhbCAhPSAwKTsKKwlpZiAoY21wdmFsID4gMCkKKwl7CisJCS8qIFBvaW50IHRv IHRoZSBwcm9ibGVtYXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQYXJ0 aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2 YWwgLSAxKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNwZWNp ZmllZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5hbWUpLAorCQkJCWVycmRl dGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0 byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhz cGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNw ZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxv Y2F0aW9uKChOb2RlICopIGRhdHVtKSkpOworCX0KKworCS8qCisJICogTmVlZCB0byBjaGVjayBm aXJzdCBhbmQgbGFzdCBwYXJ0aXRpb25zIChmcm9tIHRoZSBzZXQgb2YgbmV3CisJICogcGFydGl0 aW9ucykKKwkgKi8KKwlpZiAoZmlyc3QgfHwgbGFzdCkKKwl7CisJCVBhcnRpdGlvbkJvdW5kU3Bl YyAqc3BsaXRfc3BlYyA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhzcGxpdFBhcnRPaWQpOwor CQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKKworCQlpZiAoZmlyc3QpCisJCXsKKwkJCVBh cnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxpdF9sb3dlciA9IG1ha2Vf b25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+bG93ZXJkYXR1bXMsIHRy dWUpOworCisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywK KwkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xs YXRpb24sCisJCQkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJ CQkgIHRydWUsIHNwbGl0X2xvd2VyKTsKKwkJCWlmIChjbXB2YWwgIT0gMCkKKwkJCQlkYXR1bSA9 IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCisJCQkvKgor CQkJICogVGhlIGxvd2VyIGJvdW5kIG9mICJzcGVjIiBtdXN0IGVxdWFsIHRoZSBsb3dlciBib3Vu ZCBvZiB0aGUKKwkJCSAqIHNwbGl0IHBhcnRpdGlvbi4gIEhvd2V2ZXIsIGlmIG9uZSBvZiB0aGUg bmV3IHBhcnRpdGlvbnMgaXMKKwkJCSAqIERFRkFVTFQsIHRoZW4gaXQgaXMgb2sgZm9yIHRoZSBu ZXcgcGFydGl0aW9uJ3MgbG93ZXIgYm91bmQgdG8KKwkJCSAqIGJlIGdyZWF0ZXIgdGhhbiB0aGF0 IG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICghZGVmYXVsdFBhcnQpCisJ CQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2co Imxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJv dW5kIG9mIHNwbGl0IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJCQkgICByZWxuYW1lLAorCQkJ CQkJCQkgICBnZXRfcmVsX25hbWUoc3BsaXRQYXJ0T2lkKSksCisJCQkJCQkJZXJyaGludCgiJXMg cmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1h dGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJCSJBTFRFUiBU QUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIiksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIGRhdHVtKSkpOworCQkJfQorCQkJZWxzZSBpZiAo Y21wdmFsIDwgMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gXCIlc1wiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRp b24gXCIlc1wiIiwKKwkJCQkJCQkgICByZWxuYW1lLAorCQkJCQkJCSAgIGdldF9yZWxfbmFtZShz cGxpdFBhcnRPaWQpKSwKKwkJCQkJCWVycmhpbnQoIiVzIHJlcXVpcmUgY29tYmluZWQgYm91bmRz IG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNw bGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9O IiksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUg KikgZGF0dW0pKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICpz cGxpdF91cHBlcjsKKworCQkJc3BsaXRfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5k KGtleSwgLTEsIHNwbGl0X3NwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkJCWNtcHZhbCA9 IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkJCSAga2V5LT5w YXJ0c3VwZnVuYywKKwkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkg IHVwcGVyLT5kYXR1bXMsIHVwcGVyLT5raW5kLAorCQkJCQkJCQkJCSAgZmFsc2UsIHNwbGl0X3Vw cGVyKTsKKwkJCWlmIChjbXB2YWwgIT0gMCkKKwkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPnVw cGVyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCisJCQkvKgorCQkJICogVGhlIHVwcGVyIGJv dW5kIG9mICJzcGVjIiBtdXN0IGVxdWFsIHRoZSB1cHBlciBib3VuZCBvZiB0aGUKKwkJCSAqIHNw bGl0IHBhcnRpdGlvbi4gIEhvd2V2ZXIsIGlmIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgaXMK KwkJCSAqIERFRkFVTFQsIHRoZW4gaXQgaXMgb2sgZm9yIHRoZSBuZXcgcGFydGl0aW9uJ3MgdXBw ZXIgYm91bmQgdG8KKwkJCSAqIGJlIGxlc3MgdGhhbiB0aGF0IG9mIHRoZSBzcGxpdCBwYXJ0aXRp b24uCisJCQkgKi8KKwkJCWlmICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAh PSAwKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInVwcGVyIGJvdW5kIG9mIHBhcnRp dGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlv biBcIiVzXCIiLAorCQkJCQkJCQkgICByZWxuYW1lLAorCQkJCQkJCQkgICBnZXRfcmVsX25hbWUo c3BsaXRQYXJ0T2lkKSksCisJCQkJCQkJZXJyaGludCgiJXMgcmVxdWlyZSBjb21iaW5lZCBib3Vu ZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUg c3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJCSJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElU SU9OIiksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKChO b2RlICopIGRhdHVtKSkpOworCQkJfQorCQkJZWxzZSBpZiAoY21wdmFsID4gMCkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCQkJZXJybXNnKCJ1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIGdy ZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJ CQkgICByZWxuYW1lLAorCQkJCQkJCSAgIGdldF9yZWxfbmFtZShzcGxpdFBhcnRPaWQpKSwKKwkJ CQkJCWVycmhpbnQoIiVzIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25z IG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbiIsCisJ CQkJCQkJCSJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIiksCisJCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgZGF0dW0pKSk7CisJCX0K Kwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9saXN0Cisg KgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBDaGVja3Mg dGhhdCB0aGUgYm91bmRzIG9mIHRoZSBuZXcgcGFydGl0aW9uIGFyZSBpbnNpZGUgdGhlIGJvdW5k cyBvZiB0aGUKKyAqIHNwbGl0IHBhcnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKyAq CisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6CQkJbmFtZSBvZiB0 aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUg bmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBw c3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCB0byBkZXRlcm1pbmUgZXJyb3Ig cG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3Nw bGl0X2xpc3QoUmVsYXRpb24gcGFyZW50LCBjaGFyICpyZWxuYW1lLAorCQkJCQkJCQkJICBQYXJ0 aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJ CQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRp b25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRkZXNjID0gUmVs YXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRpdGlvbkJvdW5kSW5m byBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJCXdpdGggPSAtMTsKKwli b29sCQlvdmVybGFwID0gZmFsc2U7CisJaW50CQkJb3ZlcmxhcF9sb2NhdGlvbiA9IC0xOworCisJ QXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCUFzc2Vy dChzcGVjLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0KGJv dW5kaW5mbyAmJiBib3VuZGluZm8tPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNU KTsKKworCS8qCisJICogU2VhcmNoIGVhY2ggdmFsdWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24gInNw ZWMiIGluIHRoZSBleGlzdGluZworCSAqIHBhcnRpdGlvbnMuICBBbGwgb2YgdGhlbSBzaG91bGQg YmUgaW4gdGhlIHNwbGl0IHBhcnRpdGlvbiAod2l0aCBPaWQKKwkgKiBzcGxpdFBhcnRPaWQpLgor CSAqLworCWZvcmVhY2hfbm9kZShDb25zdCwgdmFsLCBzcGVjLT5saXN0ZGF0dW1zKQorCXsKKwkJ b3ZlcmxhcF9sb2NhdGlvbiA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSB2YWwpOworCQlpZiAoIXZh bC0+Y29uc3Rpc251bGwpCisJCXsKKwkJCWludAkJCW9mZnNldDsKKwkJCWJvb2wJCWVxdWFsOwor CisJCQlvZmZzZXQgPSBwYXJ0aXRpb25fbGlzdF9ic2VhcmNoKCZrZXktPnBhcnRzdXBmdW5jWzBd LAorCQkJCQkJCQkJCQlrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJCWJvdW5kaW5mbywK KwkJCQkJCQkJCQkJdmFsLT5jb25zdHZhbHVlLAorCQkJCQkJCQkJCQkmZXF1YWwpOworCQkJaWYg KG9mZnNldCA+PSAwICYmIGVxdWFsKQorCQkJeworCQkJCXdpdGggPSBib3VuZGluZm8tPmluZGV4 ZXNbb2Zmc2V0XTsKKwkJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lk KQorCQkJCXsKKwkJCQkJb3ZlcmxhcCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0K KwkJCWVsc2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFM SURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNc IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIFwiJXNcIiBk b2VzIG5vdCBoYXZlIiwKKwkJCQkJCQkgICByZWxuYW1lLAorCQkJCQkJCSAgIGdldF9yZWxfbmFt ZShzcGxpdFBhcnRPaWQpKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJs YXBfbG9jYXRpb24pKTsKKwkJfQorCQllbHNlIGlmIChwYXJ0aXRpb25fYm91bmRfYWNjZXB0c19u dWxscyhib3VuZGluZm8pKQorCQl7CisJCQl3aXRoID0gYm91bmRpbmZvLT5udWxsX2luZGV4Owor CQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCXsKKwkJCQlv dmVybGFwID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQllbHNlCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiks CisJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1 ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBcIiVzXCIgZG9lcyBub3QgaGF2ZSIsCisJCQkJCQkg ICByZWxuYW1lLAorCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkpLAorCQkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorCisJaWYg KG92ZXJsYXApCisJeworCQlBc3NlcnQod2l0aCA+PSAwKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNn KCJuZXcgcGFydGl0aW9uIFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNw bGl0KSBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgcmVsbmFtZSwgZ2V0X3JlbF9uYW1lKHBh cnRkZXNjLT5vaWRzW3dpdGhdKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3Zl cmxhcF9sb2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIGZpbmRfdmFsdWVfaW5fbmV3X3BhcnRp dGlvbnNfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisg KgorICogRnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmZiBhbnkgb2YgdGhlIG5ldyBwYXJ0aXRpb25z IGNvbnRhaW5zIHRoZSB2YWx1ZQorICogInZhbHVlIi4KKyAqCisgKiBwYXJ0c3VwZnVuYzoJCWlu Zm9ybWF0aW9uIGFib3V0IHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aAor ICoJCQkJCXRoZSBwYXJ0aXRpb24ga2V5CisgKiBwYXJ0Y29sbGF0aW9uOglwYXJ0aXRpb25pbmcg Y29sbGF0aW9uCisgKiBwYXJ0czoJCQlwb2ludGVyIHRvIGFuIGFycmF5IHdpdGggbmV3IHBhcnRp dGlvbiBkZXNjcmlwdGlvbnMKKyAqIG5wYXJ0czoJCQludW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMK KyAqIHZhbHVlOgkJCXRoZSB2YWx1ZSB0aGF0IHdlIGFyZSBsb29raW5nIGZvcgorICogaXNudWxs OgkJCXRydWUgaWYgdGhlIHZhbHVlIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yIGlzIE5VTEwKKyAq Lworc3RhdGljIGJvb2wKK2ZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdChGbWdySW5m byAqcGFydHN1cGZ1bmMsCisJCQkJCQkJCSAgT2lkICpwYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkg IFNpbmdsZVBhcnRpdGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJ CQkJCQkgIERhdHVtIHZhbHVlLAorCQkJCQkJCQkgIGJvb2wgaXNudWxsKQoreworCWZvciAoaW50 IGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMg PSBwYXJ0c1tpXTsKKworCQlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbCwgc3BzLT5ib3VuZC0+bGlz dGRhdHVtcykKKwkJeworCQkJaWYgKGlzbnVsbCAmJiB2YWwtPmNvbnN0aXNudWxsKQorCQkJCXJl dHVybiB0cnVlOworCisJCQlpZiAoIWlzbnVsbCAmJiAhdmFsLT5jb25zdGlzbnVsbCkKKwkJCXsK KwkJCQlpZiAoRGF0dW1HZXRJbnQzMihGdW5jdGlvbkNhbGwyQ29sbCgmcGFydHN1cGZ1bmNbMF0s CisJCQkJCQkJCQkJCQkJcGFydGNvbGxhdGlvblswXSwKKwkJCQkJCQkJCQkJCQl2YWwtPmNvbnN0 dmFsdWUsCisJCQkJCQkJCQkJCQkJdmFsdWUpKSA9PSAwKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJ CX0KKwkJfQorCX0KKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBjaGVja19wYXJlbnRfdmFs dWVzX2luX25ld19wYXJ0aXRpb25zCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRp dGlvbmluZykKKyAqCisgKiBDaGVja3MgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlv biAod2l0aCBPaWQgcGFydE9pZCkgYXJlIGNvbnRhaW5lZAorICogaW4gbmV3IHBhcnRpdGlvbnMu CisgKgorICogcGFyZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydE9pZDoJc3BsaXQgcGFy dGl0aW9uIE9pZAorICogcGFydHM6CXBvaW50ZXIgdG8gYW4gYXJyYXkgd2l0aCBuZXcgcGFydGl0 aW9uIGRlc2NyaXB0aW9ucworICogbnBhcnRzOgludW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMKKyAq IHBzdGF0ZToJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCB0byBkZXRlcm1pbmUgZXJyb3Ig cG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3Bh cnRpdGlvbnMoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJICBPaWQgcGFydE9pZCwKKwkJCQkJ CQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkJICBpbnQgbnBhcnRz LAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0ZGVz YyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25C b3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQlpOworCWJv b2wJCWZvdW5kID0gdHJ1ZTsKKwlEYXR1bQkJZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisK KwkvKgorCSAqIFNwZWNpYWwgcHJvY2Vzc2luZyBmb3IgTlVMTCB2YWx1ZS4gU2VhcmNoIGZvciBh IE5VTEwgdmFsdWUgaWYgdGhlIHNwbGl0CisJICogcGFydGl0aW9uIChwYXJ0T2lkKSBjb250YWlu cyBpdC4KKwkgKi8KKwlpZiAocGFydGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVsbHMoYm91bmRpbmZv KSAmJgorCQlwYXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPm51bGxfaW5kZXhdID09IHBhcnRPaWQp CisJeworCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0 c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJICAga2V5LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBh cnRzLCBkYXR1bSwgdHJ1ZSkpCisJCQlmb3VuZCA9IGZhbHNlOworCX0KKworCWlmICghZm91bmQp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbnMgY29tYmluZWQgcGFydGl0aW9u IGJvdW5kcyBkbyBub3QgY29udGFpbiB2YWx1ZSAoJXMpIGJ1dCBzcGxpdCBwYXJ0aXRpb24gXCIl c1wiIGRvZXMiLAorCQkJCQkgICAiTlVMTCIsCisJCQkJCSAgIGdldF9yZWxfbmFtZShwYXJ0T2lk KSksCisJCQkJZXJyaGludCgiJXMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRp dGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9u IiwKKwkJCQkJCSJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIikpOworCisJLyoKKwkg KiBTZWFyY2ggYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBwYXJ0T2lkIGluIHRo ZSBQYXJ0aXRpb25EZXNjCisJICogb2YgcGFydGl0aW9uZWQgdGFibGUuCisJICovCisJZm9yIChp ID0gMDsgaSA8IGJvdW5kaW5mby0+bmRhdHVtczsgaSsrKQorCXsKKwkJaWYgKHBhcnRkZXNjLT5v aWRzW2JvdW5kaW5mby0+aW5kZXhlc1tpXV0gPT0gcGFydE9pZCkKKwkJeworCQkJLyogV2UgZm91 bmQgdGhlIHZhbHVlIHRoYXQgdGhlIHNwbGl0IHBhcnRpdGlvbiBjb250YWlucy4gKi8KKwkJCWRh dHVtID0gYm91bmRpbmZvLT5kYXR1bXNbaV1bMF07CisJCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3 X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCSAgIGtl eS0+cGFydGNvbGxhdGlvbiwgcGFydHMsIG5wYXJ0cywgZGF0dW0sIGZhbHNlKSkKKwkJCXsKKwkJ CQlmb3VuZCA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCisJaWYgKCFmb3Vu ZCkKKwl7CisJCUNvbnN0CSAgICpub3RGb3VuZFZhbDsKKworCQkvKgorCQkgKiBNYWtlIGEgQ29u c3QgZm9yIGdldHRpbmcgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWlzc2luZwor CQkgKiB2YWx1ZS4KKwkJICovCisJCW5vdEZvdW5kVmFsID0gbWFrZUNvbnN0KGtleS0+cGFydHR5 cGlkWzBdLAorCQkJCQkJCQlrZXktPnBhcnR0eXBtb2RbMF0sCisJCQkJCQkJCWtleS0+cGFydHR5 cGNvbGxbMF0sCisJCQkJCQkJCWtleS0+cGFydHR5cGxlblswXSwKKwkJCQkJCQkJZGF0dW0sCisJ CQkJCQkJCWZhbHNlLAkvKiBpc251bGwgKi8KKwkJCQkJCQkJa2V5LT5wYXJ0dHlwYnl2YWxbMF0p OworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNU X0RFRklOSVRJT04pLAorCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbnMgY29tYmluZWQgcGFydGl0 aW9uIGJvdW5kcyBkbyBub3QgY29udGFpbiB2YWx1ZSAoJXMpIGJ1dCBzcGxpdCBwYXJ0aXRpb24g XCIlc1wiIGRvZXMiLAorCQkJCQkgICBkZXBhcnNlX2V4cHJlc3Npb24oKE5vZGUgKikgbm90Rm91 bmRWYWwsIE5JTCwgZmFsc2UsIGZhbHNlKSwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKHBhcnRPaWQp KSwKKwkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0 aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24i LAorCQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04iKSk7CisJfQorfQorCisv KgorICogY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQKKyAqCisgKiBDaGVja3MgbmV3IHBhcnRp dGlvbnMgZm9yIHRoZSBTUExJVCBQQVJUSVRJT04gY29tbWFuZDoKKyAqIDEuIEJvdW5kcyBvZiBu ZXcgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0aW5nCisg KgkgIHBhcnRpdGlvbnMuCisgKiAyLiBJbiB0aGUgY2FzZSB3aGVuIG5ldyBvciBleGlzdGluZyBw YXJ0aXRpb25zIGNvbnRhaW4gdGhlIERFRkFVTFQKKyAqCSAgcGFydGl0aW9uLCBuZXcgcGFydGl0 aW9ucyBjYW4gaGF2ZSBhbnkgYm91bmRzIGluc2lkZSB0aGUgc3BsaXQgcGFydGl0aW9uCisgKgkg IGJvdW5kIChjYW4gYmUgc3BhY2VzIGJldHdlZW4gcGFydGl0aW9uIGJvdW5kcykuCisgKiAzLiBJ biBjYXNlIG5ldyBwYXJ0aXRpb25zIGRvbid0IGNvbnRhaW4gdGhlIERFRkFVTFQgcGFydGl0aW9u IGFuZCB0aGUKKyAqCSAgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSB0aGUgREVGQVVM VCBwYXJ0aXRpb24sIHRoZSBmb2xsb3dpbmcKKyAqCSAgc2hvdWxkIGJlIHRydWU6IHRoZSBzdW0g b2YgdGhlIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgZXF1YWwKKyAmCSAgdG8g dGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24uCisgKgorICogcGFyZW50OgkJCXBhcnRp dGlvbmVkIHRhYmxlCisgKiBzcGxpdFBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQKKyAqIHBh cnRsaXN0OgkJbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBhZnRlciBwYXJ0aXRpb24gc3BsaXQKKyAq IHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJy b3IgcG9zaXRpb24KKyAqLwordm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRp b24gcGFyZW50LAorCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCSAgIExpc3QgKnBh cnRsaXN0LAorCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBr ZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJYm9vbAkJaXNT cGxpdFBhcnREZWZhdWx0OworCWJvb2wJCWNyZWF0ZURlZmF1bHRQYXJ0ID0gZmFsc2U7CisJaW50 CQkJZGVmYXVsdF9pbmRleCA9IC0xOworCWludAkJCWk7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAq Km5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHNQcmV2ID0gTlVMTDsKKworCS8q CisJICogbnBhcnRzIGNvdW50cyB0aGUgbnVtYmVyIG9mIHNwbGl0IHBhcnRpdGlvbnMsIGJ1dCBp dCBleGNsdWRlIHRoZQorCSAqIGRlZmF1bHQgcGFydGl0aW9uLgorCSAqLworCWludAkJCW5wYXJ0 cyA9IDA7CisKKwlrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0 ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJhdGVneShrZXkpOworCisJZGVmYXVsdFBhcnRPaWQgPQor CQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2Mo cGFyZW50LCB0cnVlKSk7CisKKwlBc3NlcnQoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZ X1JBTkdFIHx8CisJCSAgIHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwor CS8qCisJICogTWFrZSBhbiBhcnJheSBuZXdfcGFydHMgd2l0aCBuZXcgcGFydGl0aW9ucyBleGNl cHQgdGhlIERFRkFVTFQKKwkgKiBwYXJ0aXRpb24uCisJICovCisJbmV3X3BhcnRzID0gKFNpbmds ZVBhcnRpdGlvblNwZWMgKiopCisJCXBhbGxvYzAobGlzdF9sZW5ndGgocGFydGxpc3QpICogc2l6 ZW9mKFNpbmdsZVBhcnRpdGlvblNwZWMgKikpOworCisJLyogaXNTcGxpdFBhcnREZWZhdWx0IGZs YWc6IGlzIHNwbGl0IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAqLworCWlzU3BsaXRQ YXJ0RGVmYXVsdCA9IChkZWZhdWx0UGFydE9pZCA9PSBzcGxpdFBhcnRPaWQpOworCisJZm9yZWFj aF9ub2RlKFNpbmdsZVBhcnRpdGlvblNwZWMsIHNwcywgcGFydGxpc3QpCisJeworCQlpZiAoc3Bz LT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJCWRlZmF1bHRfaW5kZXggPSBmb3JlYWNoX2N1cnJlbnRf aW5kZXgoc3BzKTsKKwkJZWxzZQorCQkJbmV3X3BhcnRzW25wYXJ0cysrXSA9IHNwczsKKwl9CisK KwkvKiBBbiBpbmRpY2F0b3IgdGhhdCB0aGUgREVGQVVMVCBwYXJ0aXRpb24gd2lsbCBiZSBjcmVh dGVkLiAqLworCWlmIChkZWZhdWx0X2luZGV4ICE9IC0xKQorCXsKKwkJY3JlYXRlRGVmYXVsdFBh cnQgPSB0cnVlOworCQlBc3NlcnQobnBhcnRzID09IGxpc3RfbGVuZ3RoKHBhcnRsaXN0KSAtIDEp OworCX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpCisJewor CQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQlTaW5nbGVQYXJ0aXRpb25T cGVjICoqdG1wX25ld19wYXJ0czsKKworCQkvKgorCQkgKiBUbyBzaW1wbGlmeSB0aGUgY2hlY2sg Zm9yIHJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucywgd2UgbmVlZCB0byBzb3J0CisJCSAqIGFsbCBw YXJ0aXRpb25zIGluIGFzY2VuZGluZyBvcmRlciBvZiB0aGVpciBib3VuZHMgKHdlIGNvbXBhcmUg dGhlCisJCSAqIGxvd2VyIGJvdW5kIG9ubHkpLgorCQkgKi8KKwkJbG93ZXJfYm91bmRzID0gKFBh cnRpdGlvblJhbmdlQm91bmQgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRp b25SYW5nZUJvdW5kICopKTsKKworCQkvKiBDcmVhdGUgYW4gYXJyYXkgb2YgbG93ZXIgYm91bmRz LiAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCXsKKwkJCWxvd2VyX2JvdW5k c1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLAorCQkJCQkJCQkJCQkJCQlu ZXdfcGFydHNbaV0tPmJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCX0KKworCQkvKiBTb3J0 IHRoZSBhcnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCXFzb3J0X2FyZyhsb3dlcl9ib3VuZHMs IG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKiksCisJCQkJICBxc29ydF9wYXJ0 aXRpb25fcmJvdW5kX2NtcCwgKHZvaWQgKikga2V5KTsKKworCQkvKiBSZW9yZGVyIHRoZSBhcnJh eSBvZiBwYXJ0aXRpb25zLiAqLworCQl0bXBfbmV3X3BhcnRzID0gbmV3X3BhcnRzOworCQluZXdf cGFydHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKikKKwkJCXBhbGxvYzAobnBhcnRzICogc2l6 ZW9mKFNpbmdsZVBhcnRpdGlvblNwZWMgKikpOworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBp KyspCisJCQluZXdfcGFydHNbaV0gPSB0bXBfbmV3X3BhcnRzW2xvd2VyX2JvdW5kc1tpXS0+aW5k ZXhdOworCisJCXBmcmVlKHRtcF9uZXdfcGFydHMpOworCQlwZnJlZShsb3dlcl9ib3VuZHMpOwor CX0KKworCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCVNpbmdsZVBhcnRpdGlv blNwZWMgKnNwcyA9IG5ld19wYXJ0c1tpXTsKKworCQlpZiAoaXNTcGxpdFBhcnREZWZhdWx0KQor CQl7CisJCQkvKgorCQkJICogV2hlbiB0aGUgc3BsaXQgcGFydGl0aW9uIGlzIHRoZSBERUZBVUxU IHBhcnRpdGlvbiwgd2UgY2FuIHVzZQorCQkJICogYW55IGZyZWUgcmFuZ2VzIC0gYXMgd2hlbiBj cmVhdGluZyBhIG5ldyBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWNoZWNrX25ld19wYXJ0aXRpb25f Ym91bmQoc3BzLT5uYW1lLT5yZWxuYW1lLCBwYXJlbnQsIHNwcy0+Ym91bmQsCisJCQkJCQkJCQkg IHBzdGF0ZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogQ2hlY2tzIHRoYXQgdGhl IGJvdW5kcyBvZiB0aGUgY3VycmVudCBwYXJ0aXRpb24gYXJlIGluc2lkZSB0aGUKKwkJCSAqIGJv dW5kcyBvZiB0aGUgc3BsaXQgcGFydGl0aW9uLiBGb3IgcmFuZ2UgcGFydGl0aW9uaW5nOiBjaGVj a3MKKwkJCSAqIHRoYXQgdGhlIHVwcGVyIGJvdW5kIG9mIHRoZSBwcmV2aW91cyBwYXJ0aXRpb24g aXMgZXF1YWwgdG8gdGhlCisJCQkgKiBsb3dlciBib3VuZCBvZiB0aGUgY3VycmVudCBwYXJ0aXRp b24uIEZvciBsaXN0IHBhcnRpdGlvbmluZzoKKwkJCSAqIGNoZWNrcyB0aGF0IHRoZSBzcGxpdCBw YXJ0aXRpb24gY29udGFpbnMgYWxsIHZhbHVlcyBvZiB0aGUKKwkJCSAqIGN1cnJlbnQgcGFydGl0 aW9uLgorCQkJICovCisJCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF KQorCQkJeworCQkJCWJvb2wJCWZpcnN0ID0gKGkgPT0gMCk7CisJCQkJYm9vbAkJbGFzdCA9IChp ID09IChucGFydHMgLSAxKSk7CisKKwkJCQljaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxp dF9yYW5nZShwYXJlbnQsIHNwcy0+bmFtZS0+cmVsbmFtZSwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJ CQkJCQkgICBzcGxpdFBhcnRPaWQsIGZpcnN0LCBsYXN0LAorCQkJCQkJCQkJCQkJCSAgIGNyZWF0 ZURlZmF1bHRQYXJ0LCBwc3RhdGUpOworCQkJfQorCQkJZWxzZQorCQkJCWNoZWNrX3BhcnRpdGlv bl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QocGFyZW50LCBzcHMtPm5hbWUtPnJlbG5hbWUsCisJCQkJ CQkJCQkJCQkJICBzcHMtPmJvdW5kLCBzcGxpdFBhcnRPaWQsIHBzdGF0ZSk7CisJCX0KKworCQkv KiBSYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQlpZiAo c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYmIHNwc1ByZXYpCisJCQljaGVj a190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UocGFyZW50LCBzcHNQcmV2LT5uYW1lLCBzcHNQ cmV2LT5ib3VuZCwKKwkJCQkJCQkJCQkJICBzcHMtPm5hbWUsIHNwcy0+Ym91bmQsCisJCQkJCQkJ CQkJCSAgY3JlYXRlRGVmYXVsdFBhcnQsCisJCQkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkJ CSAgcHN0YXRlKTsKKworCQlzcHNQcmV2ID0gc3BzOworCX0KKworCWlmIChzdHJhdGVneSA9PSBQ QVJUSVRJT05fU1RSQVRFR1lfTElTVCkKKwl7CisJCS8qIFZhbHVlcyBvZiBuZXcgcGFydGl0aW9u cyBzaG91bGQgbm90IG92ZXJsYXAuICovCisJCWNoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBf bGlzdChwYXJlbnQsIG5ld19wYXJ0cywgbnBhcnRzLAorCQkJCQkJCQkJCSAgcHN0YXRlKTsKKwor CQkvKgorCQkgKiBOZWVkIHRvIGNoZWNrIHRoYXQgYWxsIHZhbHVlcyBvZiB0aGUgc3BsaXQgcGFy dGl0aW9uIGFyZSBjb250YWluZWQKKwkJICogaW4gdGhlIG5ldyBwYXJ0aXRpb25zLiBTa2lwIHRo aXMgY2hlY2sgaWYgdGhlIERFRkFVTFQgcGFydGl0aW9uCisJCSAqIGV4aXN0cy4KKwkJICovCisJ CWlmICghY3JlYXRlRGVmYXVsdFBhcnQpCisJCQljaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19w YXJ0aXRpb25zKHBhcmVudCwgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJCQkJICBuZXdfcGFydHMs IG5wYXJ0cywgcHN0YXRlKTsKKwl9CisKKwlwZnJlZShuZXdfcGFydHMpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5pbi5jCmluZGV4IDMxNzZmZDkyYWQzLi5iMWZmNmY2Y2Q5NCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwpAQCAtMjc3Myw3ICsyNzczLDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBh dHRlcm5faWQsCiAJCQkJCSAgIk9XTkVSIFRPIiwgIlNFVCIsICJWQUxJREFURSBDT05TVFJBSU5U IiwKIAkJCQkJICAiUkVQTElDQSBJREVOVElUWSIsICJBVFRBQ0ggUEFSVElUSU9OIiwKIAkJCQkJ ICAiREVUQUNIIFBBUlRJVElPTiIsICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiLAotCQkJCQkg ICJNRVJHRSBQQVJUSVRJT05TICgiLAorCQkJCQkgICJTUExJVCBQQVJUSVRJT04iLCAiTUVSR0Ug UEFSVElUSU9OUyAoIiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUg eHh4IEFERCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnks ICJBREQiKSkKQEAgLTMwMzYsMTAgKzMwMzYsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50 IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIkZST00gKCIsICJJTiAoIiwgIldJVEggKCIp OwogCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIEFMVEVSIFRBQkxFIDxmb28+IERFVEFDSCBQQVJUSVRJ T04sIHByb3ZpZGUgYSBsaXN0IG9mCisJICogSWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBE RVRBQ0h8U1BMSVQgUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBvZgogCSAqIHBhcnRpdGlvbnMg b2YgPGZvbz4uCiAJICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRj aEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iKSkKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIs ICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIfFNQTElUIiwgIlBBUlRJVElPTiIpKQogCXsKIAkJ c2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXYzX3dkKTsKIAkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90YWJsZSk7CkBAIC0zMDQ3LDYgKzMwNDcs MTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0 Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iLCBN YXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwog CisJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8bmFtZT4gKi8KKwllbHNl IGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiU1BMSVQiLCAiUEFSVElU SU9OIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJJTlRPICggUEFSVElUSU9OIik7CisK IAkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCiAJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMi LCAiKCIpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBlNDNhMWY5NDZhOS4uYmM3YWRi YTRhMGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTk2NSwxNyArOTY1LDQwIEBAIHR5cGVk ZWYgc3RydWN0IFBhcnRpdGlvblJhbmdlRGF0dW0KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRv a2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFBhcnRpdGlvblJhbmdlRGF0dW07 CiAKKy8qCisgKiBQYXJ0aXRpb25EZXNjIC0gaW5mbyBhYm91dCBhIHNpbmdsZSBwYXJ0aXRpb24g Zm9yIHRoZSBBTFRFUiBUQUJMRSBTUExJVAorICoJICBQQVJUSVRJT04gY29tbWFuZAorICovCit0 eXBlZGVmIHN0cnVjdCBTaW5nbGVQYXJ0aXRpb25TcGVjCit7CisJTm9kZVRhZwkJdHlwZTsKKwor CVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gKi8KKwlQYXJ0aXRpb25C b3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KK30gU2luZ2xl UGFydGl0aW9uU3BlYzsKKwogLyoKICAqIFBhcnRpdGlvbkNtZCAtIGluZm8gZm9yIEFMVEVSIFRB QkxFL0lOREVYIEFUVEFDSC9ERVRBQ0ggUEFSVElUSU9OIGFuZCBmb3IKLSAqCSAgQUxURVIgVEFC TEUgTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kcworICoJICBBTFRFUiBUQUJMRSBTUExJVC9NRVJH RSBQQVJUSVRJT04oUykgY29tbWFuZHMKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21k CiB7CiAJTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFy dGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVyZ2UgKi8KLQlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJv dW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KLQlMaXN0CSAgICpwYXJ0bGlzdDsJ CS8qIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQsIHVzZWQgaW4KLQkJCQkJCQkJICog QUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUyAqLworCisJLyogbmFtZSBvZiBwYXJ0aXRpb24g dG8gYXR0YWNoL2RldGFjaC9tZXJnZS9zcGxpdCAqLworCVJhbmdlVmFyICAgKm5hbWU7CisKKwkv KiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5k OworCisJLyoKKwkgKiBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgc3BsaXQvbWVyZ2VkLCB1c2Vk IGluIEFMVEVSIFRBQkxFIE1FUkdFCisJICogUEFSVElUSU9OUyBhbmQgQUxURVIgVEFCTEUgU1BM SVQgUEFSVElUSU9OUy4gRm9yIG1lcmdlIHBhcnRpdGlvbnMsCisJICogcGFydGxpc3QgaXMgYSBs aXN0IG9mIFJhbmdlVmFyOyBGb3Igc3BsaXQgcGFydGl0aW9uLCBpdCBpcyBhIGxpc3Qgb2YKKwkg KiBTaW5nbGVQYXJ0aXRpb25TcGVjLgorCSAqLworCUxpc3QJICAgKnBhcnRsaXN0OworCiAJYm9v bAkJY29uY3VycmVudDsKIH0gUGFydGl0aW9uQ21kOwogCkBAIC0yNDc5LDYgKzI1MDIsNyBAQCB0 eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRU QUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElU SU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04g RklOQUxJWkUgKi8KKwlBVF9TcGxpdFBhcnRpdGlvbiwJCQkvKiBTUExJVCBQQVJUSVRJT04gKi8K IAlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFUX0FkZElk ZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VU IGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggZDRjZGEyOWMy YTIuLjlmZGU1OGY1NDFjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK KysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC00MjQsNiArNDI0LDcgQEAgUEdf S0VZV09SRCgic21hbGxpbnQiLCBTTUFMTElOVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInNuYXBzaG90IiwgU05BUFNIT1QsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNvbWUiLCBTT01FLCBSRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgic291cmNlIiwgU09VUkNFLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJzcGxpdCIsIFNQTElULCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzcWwiLCBTUUxfUCwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhYmxlIiwgU1RBQkxFLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdGFuZGFsb25lIiwgU1RBTkRB TE9ORV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaAppbmRleCAyNWMzMTFmZjliZC4uZTU3YzVjMjA0OTYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1 ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDYgKzE0MywxMCBAQCBleHRlcm4g aW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywK IGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91 bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVy biB2b2lkIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJ CQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJ CQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSk7CiBleHRlcm4gdm9pZCBjYWxjdWxhdGVfcGFy dGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCQkJCQlMaXN0 ICpwYXJ0TmFtZXMsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0IGIvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAyYTViYjRmMWY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKQEAgLTAsMCArMSwy MzAgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11 dGF0aW9uOiBzMWIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsK K3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBf MjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00g KDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1J VDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMy czogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxl b2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAg ICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3Rw YXJ0XzAwXzEwICB8IDV8dGV4dDA1Cit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBf MzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3Rl cCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJ VElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZP UiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxV RVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNU IHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0t LS0tLS0tLS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAwXzEw ICB8IDV8dGV4dDA1Cit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0 ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVH SU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0 XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBG Uk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJ QUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21w bGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09M TEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSst LS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQor dHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9k ZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFi cnIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQg U1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRf MTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBh cnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47 CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIs IGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3Rw YXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVf MjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1 fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0 IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVM IFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQ QVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8y MCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xB VElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQg VkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7Citz dGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6 cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAor LS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8w MF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8 MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMx YnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6 IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkg ICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJ CQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkp Oworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBz Mmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+ CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6 IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBh cnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFi bGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8x MCAgfCAxfHRleHQwMQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8 dGV4dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUK Kyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYiBzMmkg czFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJM RTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRf MTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZS T00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENP TU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRh Ymxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8 dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEK K3RwYXJ0XzAwXzEwICB8IDV8dGV4dDA1Cit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRf MjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMK K3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFz cGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTwor CQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAo MjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIs IGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3Rw YXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVf MjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1 fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicyBzMXNwbHQg czJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNF UklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJ T04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1Ig VkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6 dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0t LS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAwXzEwICB8IDV8 dGV4dDA1Cit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUK K3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMWIgczFzcGx0IHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsKK3N0 ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAg SU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1 KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VU IGkgPSAxNiB3aGVyZSBpID0gNTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0 ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpy ZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCist LS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzE1 XzIwICB8MTZ8dGV4dDA1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwz NXx0ZXh0MzUKKyg0IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQg czJiIHMydTIgczFjIHMyYyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBBTFRF UiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBB UlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAg IFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0 ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1MjogVVBEQVRFIHRwYXJ0IFNFVCBpID0gMTEgd2hlcmUg aSA9IDE1OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnUyOiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0t Ky0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzEwXzE1ICB8MTF8dGV4 dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg0 IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1 bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4IGRiNDJjNTM1 YmE2Li5mMmUwNjdiMWZiYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBA IC0xMTAsNiArMTEwLDcgQEAgdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMgogdGVzdDogcGFy dGl0aW9uLWtleS11cGRhdGUtMwogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtNAogdGVzdDog cGFydGl0aW9uLW1lcmdlCit0ZXN0OiBwYXJ0aXRpb24tc3BsaXQKIHRlc3Q6IHBscGdzcWwtdG9h c3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0 aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0 LnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFmOTU0YmU1ZGMwCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVj CkBAIC0wLDAgKzEsNjIgQEAKKyMgVmVyaWZ5IHRoYXQgU1BMSVQgb3BlcmF0aW9uIGxvY2tzIERN TCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAKK3sKKyAgRFJPUCBU QUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFydChpIGludCwgdCB0ZXh0 KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJMRSB0cGFydF8wMF8xMCBQQVJU SVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworICBDUkVBVEUgVEFC TEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8zMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9S IFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0X2RlZmF1bHQg UEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo NSwgJ3RleHQwNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDE1LCAndGV4dDE1Jyk7 CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMjUsICd0ZXh0MjUnKTsKKyAgSU5TRVJUIElO VE8gdHBhcnQgVkFMVUVTICgzNSwgJ3RleHQzNScpOworfQorCit0ZWFyZG93bgoreworICBEUk9Q IFRBQkxFIHRwYXJ0OworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxYgl7IEJFR0lOOyB9CitzdGVw IHMxYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBz MWJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMXNwbHQJ eyBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAor CQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjAp KTsgfQorc3RlcCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitzdGVwIHMyYgl7IEJF R0lOOyB9CitzdGVwIHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVB RDsgfQorc3RlcCBzMmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQor c3RlcCBzMmkJeyBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgfQorc3Rl cCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJzCXsgU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJD IiwgaTsgfQorc3RlcCBzMnUJeyBVUERBVEUgdHBhcnQgU0VUIGkgPSAxNiB3aGVyZSBpID0gNTsg fQorc3RlcCBzMnUyCXsgVVBEQVRFIHRwYXJ0IFNFVCBpID0gMTEgd2hlcmUgaSA9IDE1OyB9CisK KworIyBzMSBzdGFydHMgU1BMSVQgUEFSVElUSU9OIHRoZW4gczIgdHJ5aW5nIHRvIGluc2VydCBy b3cgYW5kCisjIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVkIFNQTElUIG9wZXJhdGlvbi4KKworcGVy bXV0YXRpb24gczFiIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWIg czFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmJz IHMyaSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMg czJjIHMycworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycwor cGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCisKK3Blcm11dGF0 aW9uIHMxYnMgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnMgczFz cGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJicyBz MmkgczFjIHMyYyBzMnMKKworIyBUdXBsZSByb3V0aW5nIGJldHdlZW4gcGFydGl0aW9ucy4KK3Bl cm11dGF0aW9uIHMxYiBzMXNwbHQgczJiIHMydSBzMWMgczJjIHMycworCisjIFR1cGxlIHJvdXRp bmcgaW5zaWRlIHNwbGl0dGluZyBwYXJ0aXRpb24uCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMy YiBzMnUyIHMxYyBzMmMgczJzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRs X2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAppbmRleCA2YjViNDA5MDVlNy4u M2EyZjU3NmYzYjYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJz ZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Rk bF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dApAQCAtMTE4LDYgKzExOCwxMSBAQCBO T1RJQ0U6ICBEREwgdGVzdDogdHlwZSBzaW1wbGUsIHRhZyBDUkVBVEUgVEFCTEUKIEFMVEVSIFRB QkxFIHBhcnQgTUVSR0UgUEFSVElUSU9OUyAocGFydDEsIHBhcnQyKSBJTlRPIHBhcnQxOwogTk9U SUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJMRQogTk9USUNF OiAgICBzdWJjb21tYW5kOiB0eXBlIE1FUkdFIFBBUlRJVElPTlMgZGVzYyA8TlVMTD4KK0FMVEVS IFRBQkxFIHBhcnQgU1BMSVQgUEFSVElUSU9OIHBhcnQxIElOVE8KKwkoUEFSVElUSU9OIHBhcnQx IEZPUiBWQUxVRVMgRlJPTSAoMSkgdG8gKDEwMCksCisJIFBBUlRJVElPTiBwYXJ0MiBGT1IgVkFM VUVTIEZST00gKDEwMCkgdG8gKDIwMCkpOworTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIg dGFibGUsIHRhZyBBTFRFUiBUQUJMRQorTk9USUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIFNQTElU IFBBUlRJVElPTiBkZXNjIDxOVUxMPgogQUxURVIgVEFCTEUgcGFydCBBREQgUFJJTUFSWSBLRVkg KGEpOwogTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJM RQogTk9USUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIEFERCBDT05TVFJBSU5UIChhbmQgcmVjdXJz ZSkgZGVzYyBjb25zdHJhaW50IHBhcnRfYV9ub3RfbnVsbCBvbiB0YWJsZSBwYXJ0CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNx bCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3Fs CmluZGV4IGEwNTQ5ZWY4MjQ3Li4wOTgwMDk3MDQ4ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKQEAgLTYzLDYgKzYz LDEwIEBAIERST1AgVEFCTEUgcGFydDI7CiBDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9G IHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApOwogQUxURVIgVEFCTEUgcGFydCBN RVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7CiAKK0FMVEVSIFRBQkxF IHBhcnQgU1BMSVQgUEFSVElUSU9OIHBhcnQxIElOVE8KKwkoUEFSVElUSU9OIHBhcnQxIEZPUiBW QUxVRVMgRlJPTSAoMSkgdG8gKDEwMCksCisJIFBBUlRJVElPTiBwYXJ0MiBGT1IgVkFMVUVTIEZS T00gKDEwMCkgdG8gKDIwMCkpOworCiBBTFRFUiBUQUJMRSBwYXJ0IEFERCBQUklNQVJZIEtFWSAo YSk7CiAKIENSRUFURSBUQUJMRSB0YmwgKApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5kZXggN2RlNWRkYjg3ODUuLjE3ZDcy ZTQxMmZmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90 ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTI5Niw2ICsyOTYsOSBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJj bWRpbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFs aXplOgogCQkJCXN0cnR5cGUgPSAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwogCQkJ CWJyZWFrOworCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCQlzdHJ0eXBlID0gIlNQTElU IFBBUlRJVElPTiI7CisJCQkJYnJlYWs7CiAJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJ CQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElPTlMiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5lNjhiYWY3MWRhZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMCwwICsxLDE1OTIg QEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTiAuLi4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOwor U0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworLS0KKy0t IEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2Rlcwor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc19k YXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNh bGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc194eHggSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4 eCIgZG9lcyBub3QgZXhpc3QKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFs cmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19q YW4yMDIyIiBhbHJlYWR5IGV4aXN0cworLS0gRVJST1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmlj YXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1LTAxJywgJzIwMjItMDYtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGludmFsaWQg Ym91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFS VElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJS T1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFy MjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lm aWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDog IFNwZWNpZmllZCBsb3dlciBib3VuZCAoJzAzLTAxLTIwMjInKSBpcyBncmVhdGVyIHRoYW4gb3Ig ZXF1YWwgdG8gdXBwZXIgYm91bmQgKCcwMi0wMS0yMDIyJykuCistLUVSUk9SOiAgbGlzdCBvZiBz cGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25z IHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCistLSBFUlJPUjogIGxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2Vy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorLS0gSElO VDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5lZCBib3Vu ZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUg c3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorTElORSAyOiAgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8uLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitI SU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJv dW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRo ZSBzcGxpdCBwYXJ0aXRpb24KKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNf ZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRlIHBhcnRp dGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQgY2FuJ3QgY3Jl YXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYl9t YXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy4uLgorICAgICAgICAgICAg ICAgICAgICAgXgorLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIy IiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcGFydGl0aW9uIHdp dGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTy4uLgor ICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJz YWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIy IiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTLi4uCisgICAgICAgICAgICAgICAgICAgICBe CistLSBFUlJPUjogIEFMVEVSIGFjdGlvbiBTUExJVCBQQVJUSVRJT04gY2Fubm90IGJlIHBlcmZv cm1lZCBvbiByZWxhdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorLS0gREVUQUlMOiAgVGhp cyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgorQUxURVIgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKK0VSUk9SOiAgQUxURVIgYWN0aW9uIFNQTElUIFBBUlRJVElPTiBjYW5ub3Qg YmUgcGVyZm9ybWVkIG9uIHJlbGF0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCitERVRBSUw6 ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZXMuCistLSBFUlJPUjog IHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRv IHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgor LS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5l ZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBv ZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJv dW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorTElORSA0OiAu Li4gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA2LTAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiBy ZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0 Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KKy0tIEVSUk9SOiAgY2FuIG5vdCBz cGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9u ICJzYWxlc19mZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBjYW4gbm90IHNwbGl0 IHRvIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNh bGVzX2ZlYjIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBB UlRJVElPTiByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0t IFRlc3RzIGZvciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3VsZCBiZSBleGVj dXRlZCB3aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBE RVRBQ0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Yg c3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCistLSBISU5UOiAgQUxURVIg VEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcg cGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0 aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFy dGl0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTy4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBBTFRF UiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5l dyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBh cnRpdGlvbgorLS0gQ2hlY2sgdGhlIHNvdXJjZSBwYXJ0aXRpb24gbm90IGluIHRoZSBzZWFyY2gg cGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIsIHB1YmxpYzsK K0FMVEVSIFRBQkxFIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UKK1NQTElUIFBB UlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJykpOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGlj OworXGQrIHNhbGVzX3JhbmdlCisgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFi bGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UiCisgICAgIENvbHVtbiAgICAg fCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0 YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfZGF0ZSAg ICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogUkFOR0UgKHNhbGVzX2RhdGUpCitQYXJ0 aXRpb25zOiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEt MjAyMicpIFRPICgnMDMtMDEtMjAyMicpLAorICAgICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYTIuc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcw NC0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKQorCitEUk9QIFRBQkxFIHNhbGVzX3Jhbmdl OworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CistLSBBZGRpdGlvbmFsIHRlc3RzIGZvciBlcnJv ciBtZXNzYWdlcywgbm8gZGVmYXVsdCBwYXJ0aXRpb24KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKy0tIEVSUk9SOiAgdXBwZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIg Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCistLSBISU5U OiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJvdW5k cyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBz cGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScpKTsKK0VSUk9SOiAgdXBwZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Yg c3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCitMSU5FIDQ6IC4uLiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMC4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUg Y29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUg Ym91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0t CistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9u CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT CisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIy LTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUs ICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIw MjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAg Mzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0w NCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJD Iiwgc2FsZXNwZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAg ICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgor IHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgIDExIHwg VHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19mZWIy MDIyIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwg MDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAg ICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAg ICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAg ICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMCB8 IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfamFu MjAyMiB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8 IDAxLTA5LTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAg ICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy Cisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgMTQg fCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3Mp CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBBZGQgc3BsaXQgcGFy dGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIw MjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5 JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDIt MTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdF cmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAor ICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywg ICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0w MS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CistLSBTcGxp dCBwYXJ0aXRpb24sIGFsc28gY2hlY2sgc2NoZW1hIHF1YWxpZmljYXRpb24gb2YgbmV3IHBhcnRp dGlvbnMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworXGQrIHNhbGVzX3JhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5n ZSIKKyAgICAgIENvbHVtbiAgICAgIHwgICAgICAgICBUeXBlICAgICAgICAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlw dGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAK KyBzYWxlc3BlcnNvbl9uYW1lIHwgY2hhcmFjdGVyIHZhcnlpbmcoMzApIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19h bW91bnQgICAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19kYXRlICAgICAg IHwgZGF0ZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAg IHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChzYWxl c19kYXRlKQorUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJyksCisgICAg ICAgICAgICBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAo JzA1LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfamFu MjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJyksCisg ICAgICAgICAgICBzYWxlc19vdGhlcnMgREVGQVVMVAorCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICAgICAgICAgIHRhYmxlb2lkICAg ICAgICAgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIHwgICAg ICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAy MgorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAg OSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8g ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19hcHIyMDIyICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAg IHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAg ICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMiAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0 LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor IHNhbGVzX2ZlYjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgMiB8 IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfZmVi MjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwg ICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4 LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNh bGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNt aXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAq IGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAg ICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0 ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21v bnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFU RUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicg fHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19k YXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMw KSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMy MDIxIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEp IFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW5fZmViMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAz LCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBG T1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZB TFVFKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAx MiwgNyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIy LCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywgMjAy MiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIw MjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFuYWdlcjMnLCAy MDIyLCA1LCAxKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRl IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKyAgICAgdGFibGVvaWQgICAgICB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19k YXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19kZWMyMDIxICAgICB8IE1hbmFnZXIxICAgICAg ICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwg U2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2RlYzIwMjEgICAgIHwgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxl cyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRl cGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0 bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50 Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBz YWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVz X290aGVyICAgICAgIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3Ro ZXIgICAgICAgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwg ICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyg5IHJvd3MpCisKK0FM VEVSIFRBQkxFIHNhbGVzX2RhdGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2phbl9mZWIyMDIyIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwg MSkgVE8gKDIwMjIsIDIsIDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSkpOworSU5TRVJUIElOVE8gc2FsZXNf ZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIw MjIsIDIsIDEwKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRl IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25f bmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUg fCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMSB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAy MDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0 bWVudAorIHNhbGVzX2RlYzIwMjEgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAg ICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBz YWxlc19mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmVi MjAyMiB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ZlYjIwMjIgfCBN YW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwg MjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEu MDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIyICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50Cisg c2FsZXNfb3RoZXIgICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290 aGVyICAgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAg ICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQorCitEUk9Q IFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxUIHBh cnRpdGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4IGFmdGVy IHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jh bmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEw MDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAn KSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAo NywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0x MScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisg ICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAg ICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisg ICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEt MjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8 IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAg ICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAg ICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRv ICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTQg fCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDExIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3Ro ZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBp bmRleG5hbWUgQ09MTEFURSAiQyI7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICB0YWJsZW5h bWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhlcnMgfCBzYWxlc19vdGhl cnNfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX290aGVy c19zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX290aGVycyBV U0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQpOworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRl eGVzCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCAqIEZST00gc2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfZmViMjAyMl9zYWxlc19k YXRlX2lkeCBvbiBzYWxlc19mZWIyMDIyCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ICcw MS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAy MiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIy CisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDIt MTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICog RlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVf aWR4IG9uIHNhbGVzX21hcjIwMjIKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAx LTIwMjInOjpkYXRlKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdo ZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAg ICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0y MDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDMtMTktMjAyMgorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHgg b24gc2FsZXNfYXByMjAyMgorICAgSW5kZXggQ29uZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAy Mic6OmRhdGUpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg MTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIK KyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0x My0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAw IHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEg b24gc2FsZXNfb3RoZXJzCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ICcwMS0wMS0yMDIy Jzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNh bGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDE0 IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykK KworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMKK1dIRVJF IHRhYmxlbmFtZSBpbiAoJ3NhbGVzX2ZlYjIwMjInLCAnc2FsZXNfbWFyMjAyMicsICdzYWxlc19h cHIyMDIyJywgJ3NhbGVzX290aGVycycpCitBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hJworT1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOworICAgICAgIHNjaGVt YW5hbWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAg ICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEgfCBzYWxlc19hcHIyMDIyIHwgc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAg ICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2FwcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp CisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2ZlYjIwMjIgfCBzYWxlc19mZWIyMDIy X3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWIyMDIy X3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBV U0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNf bWFyMjAyMiB8IHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JF QVRFIElOREVYIHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0 X3NjaGVtYS5zYWxlc19tYXIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhlcnMgIHwgc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVf aWR4MSB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVf aWR4MSBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX290aGVycyBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSkKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsK Ky0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24g KGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAo bG93ZXIgYm91bmQpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxl c19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAo JzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00g KCcyMDIxLTEyLTMwJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBjYW4gbm90IHNwbGl0 IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxl c19kZWMyMDIxIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMS0xMi0zMCcpIFRPICguLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2RlYzIwMjEiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElP TiByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIHNhbGVz X2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkKKy0tIEVS Uk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIHRvZ2V0aGVy IHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDInKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCk7CitFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitMSU5FIDQ6 ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIg aXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9y IgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZXMgdGhlIHBh cnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3Rz IHdpdGggc2FsZXNfZGVjMjAyMSAoaW5zaWRlIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNw bGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJz YWxlc19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZS T00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0xMCcpIFRPICgnMjAyMS0xMi0yMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsK K0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhl ciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMTAnKSBUTyAoLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUg dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRB QkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8g YmUgYWRqYWNlbnQuCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAy MSAoZXhhY3RseSB0aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8g cGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2Rl YzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBG T1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6 ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGgg cGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJy b3IgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICguLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitISU5UOiAgQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTiByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGph Y2VudC4KKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiAic2FsZXNf b3RoZXJzIgorLS0gSElOVDogIFRvIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIG9uZSBvZiB0aGUg bmV3IHBhcnRpdGlvbiBtc3V0IGJlIERFRkFVTFQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpKTsKK0VSUk9SOiAgY2FuIG5vdCBz cGxpdCBERUZBVUxUIHBhcnRpdGlvbiAic2FsZXNfb3RoZXJzIgorTElORSAyOiAgIChQQVJUSVRJ T04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8uLi4KKyAg ICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBUbyBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiBv bmUgb2YgdGhlIG5ldyBwYXJ0aXRpb24gbXN1dCBiZSBERUZBVUxUCistLSBubyBlcnJvcjogYm91 bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNf ZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKCcy MDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJv ciBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTEwJykgVE8gKCcyMDIyLTAxLTIwJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJP UCBUQUJMRSBzYWxlc19yYW5nZTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNfZGF0 ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIG5vIGVycm9y OiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1YWwgdG8gbG93ZXIgYW5kIHVwcGVyIGJv dW5kcyBvZiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0K Ky0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05T VFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVzcGVyc29uX2lkIElOVCBSRUZFUkVOQ0VT IHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwKK3NhbGVzX2Ftb3VudCBJTlQgQ0hFQ0sgKHNh bGVzX2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInOjpy ZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWUgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxl c19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2Fs ZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2Fs ZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJykpOworLS0gV2Ugc2hvdWxkIHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxl c19mZWJfbWFyX2FwcjIwMjIgcGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYo b2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9 ICdzYWxlc19mZWIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExBVEUg IkMiOworICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29u a2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9 CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNh bGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygy IHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25r ZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX21hcjIwMjInOjpy ZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWUgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxl c19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2Fs ZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2Fs ZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFp bnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgY29ubmFtZSBDT0xMQVRFICJDIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9j b25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgY29ubmFt ZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNf YW1vdW50X2NoZWNrICB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJF TkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNv bl9pZF9ma2V5IHwgezF9CisoMiByb3dzKQorCistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0 aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5n ZV9zYWxlc19hbW91bnRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEs IDAsICcyMDIyLTAzLTExJyk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19t YXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19hbW91 bnRfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMCwgMDMtMTEtMjAy MikuCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzcGVyc29u X2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKC0xLCAxMCwgJzIwMjIt MDMtMTEnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAy MiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJz b25faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNwZXJzb25faWQpPSgtMSkgaXMgbm90IHBy ZXNlbnQgaW4gdGFibGUgInNhbGVzcGVvcGxlIi4KKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEsIDEwLCAnMjAyMi0wMy0xMScpOworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZSBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6 IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRpb25lZCB0YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5n IEZPUkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsK K0NSRUFURSBUQUJMRSBzYWxlcyAoc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNw ZW9wbGUoc2FsZXNwZXJzb25faWQpLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp OworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxl IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEw XzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDAp OworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAgJ1BvaXJvdCcpLAorICAo MTAsICdNYXknKSwKKyAgKDE5LCAnSXZhbm92JyksCisgICgyMCwgJ1NtaXJub2ZmJyksCisgICgz MCwgJ0ZvcmQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUworICAoMSwgIDEwMCwgJzIwMjIt MDMtMDEnKSwKKyAgKDEsICAxMTAsICcyMDIyLTAzLTAyJyksCisgICgxMCwgMTUwLCAnMjAyMi0w My0wMScpLAorICAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKSwKKyAgKDE5LCAyMDAsICcyMDIyLTAz LTA0JyksCisgICgyMCwgNTAsICAnMjAyMi0wMy0xMicpLAorICAoMjAsIDE3MCwgJzIwMjItMDMt MDInKSwKKyAgKDMwLCAzMCwgICcyMDIyLTAzLTA0Jyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAg ICAgICAxIHwgUG9pcm90Cisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDEwIHwgTWF5 Cisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9w bGUxMF80MCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3BsZTEwXzQwIHwg ICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9O IHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJ VElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxl b2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgIHRh Ymxlb2lkICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVv cGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMTBfMjAgfCAg ICAgICAgICAgICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAgICAgICAgICAxOSB8 IEl2YW5vdgorIHNhbGVzcGVvcGxlMjBfMzAgfCAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisg c2FsZXNwZW9wbGUzMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9yZAorKDUgcm93cykKKworLS0g RVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRP IHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0VSUk9SOiAgaW5zZXJ0IG9y IHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzcGVyc29uX2lk KT0oNDApIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJzYWxlc3Blb3BsZSIuCistLSBvaworSU5T RVJUIElOVE8gc2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOworRFJPUCBUQUJM RSBzYWxlcyBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0t IFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJz CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZ IEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04g T0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9p cm90Jyk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4K KyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0g JSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAg IFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVf YWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04g c2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVS RSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CitDUkVBVEUgVFJJR0dF UiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQK KyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VE VVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKy0tIDIgdHJpZ2dl cnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVz cGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUp IGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJ Q0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9 IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUg KHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoMTksICdJdmFub3Yn KTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJU LCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9w bGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVz cGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBz YWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworLS0gMiB0cmln Z2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVz cGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJP VworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQs IHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmly ZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMwLCAn Rm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJ TlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQg Q09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAg ICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTAgfCBNYXkK KyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3Bs ZTIwXzMwIHwgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAg ICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUg Q0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CistLQor LS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3Bs aXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBh cnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQ UklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxXzIgUEFSVElU SU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0gQ3JlYXRl IG5ldyBwYXJ0aXRpb24gd2l0aCBpZGVudGl0eSBjb2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUyXzUoc2FsZXNwZXJzb25faWQgSU5UIE5PVCBOVUxMLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2Fs ZXNwZW9wbGUyXzUgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7CitJTlNFUlQgSU5UTyBzYWxl c3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnUG9pcm90JyksICgnSXZhbm92Jyk7 CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUg SU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMl8zIEZPUiBWQUxVRVMgRlJPTSAoMikgVE8g KDMpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlM180IEZPUiBWQUxVRVMgRlJPTSAoMykgVE8g KDQpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlNF81IEZPUiBWQUxVRVMgRlJPTSAoNCkgVE8g KDUpKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMg KCdNYXknKSwgKCdGb3JkJyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2Fs ZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc3BlcnNvbl9pZDsKKyAgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyBzYWxlc3Blb3BsZTFfMiB8ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisgc2Fs ZXNwZW9wbGUyXzMgfCAgICAgICAgICAgICAgMiB8IEl2YW5vdgorIHNhbGVzcGVvcGxlM180IHwg ICAgICAgICAgICAgIDMgfCBNYXkKKyBzYWxlc3Blb3BsZTRfNSB8ICAgICAgICAgICAgICA0IHwg Rm9yZAorKDQgcm93cykKKworLS0gY2hlY2sgbmV3IHBhcnRpdGlvbnMgaGF2ZSBpZGVudGl0eSBv ciBub3QgYWZ0ZXIgc3BsaXQgcGFydGl0aW9uCitTRUxFQ1QgYXR0cmVsaWQ6OnJlZ2NsYXNzLCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlCitXSEVS RSBhdHRudW0gPiAwCitBTkQgYXR0cmVsaWQ6OnJlZ2NsYXNzIElOICgKKyAgJ3NhbGVzcGVvcGxl Ml8zJzo6cmVnY2xhc3MsICdzYWxlc3Blb3BsZScsICdzYWxlc3Blb3BsZTJfMycsCisgICdzYWxl c3Blb3BsZTFfMicsICdzYWxlc3Blb3BsZTNfNCcsICdzYWxlc3Blb3BsZTRfNScpCitPUkRFUiBC WSBhdHRyZWxpZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGF0dG51bTsKKyAgICBhdHRy ZWxpZCAgICB8ICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0KKyBzYWxlc3Blb3BsZSAgICB8IHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAg ICB8IAorIHNhbGVzcGVvcGxlICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwg Cisgc2FsZXNwZW9wbGUxXzIgfCBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc3Blb3BsZTFfMiB8IHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorIHNhbGVz cGVvcGxlMl8zIHwgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZW9w bGUyXzMgfCBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKyBzYWxlc3Blb3BsZTNf NCB8IHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVvcGxlM180IHwg c2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisgc2FsZXNwZW9wbGU0XzUgfCBzYWxl c3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3Blb3BsZTRfNSB8IHNhbGVzcGVy c29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDEwIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNw ZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBkZWxldGVk IGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBB UlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CistLSBD cmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMTBfNDAoZDEgVkFSQ0hBUigzMCksIHNhbGVzcGVyc29uX2lkIElOVCBQ UklNQVJZIEtFWSwgZDIgSU5ULCBkMyBEQVRFLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUg MScsIDE5LCAxMDAsIG5vdygpLCAnSXZhbm92JyksCisgICgnZHVtbXkgdmFsdWUgMicsIDIwLCAx MDEsIG5vdygpLCAnU21pcm5vZmYnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJP UCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQy OworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMzsKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisg ICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdGb3JkJyk7CitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjAp LAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8g KDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzAp IFRPICg0MCkpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxl IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJz b25faWQ7CisgICAgIHRhYmxlb2lkICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIHNhbGVzcGVvcGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVz cGVvcGxlMTBfMjAgfCAgICAgICAgICAgICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBfMjAgfCAg ICAgICAgICAgICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxlMjBfMzAgfCAgICAgICAgICAgICAy MCB8IFNtaXJub2ZmCisgc2FsZXNwZW9wbGUzMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9yZAor KDUgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6 IHNwbGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVgg c2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNh bGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJp Y3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcy MDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpy ZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICB0YWJsZW9pZCAg ICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByX2FsbCB8ICAgICAg ICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXBy X2FsbCB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8 IDA0LTA2LTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIy Cisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgIDEg fCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2ph bjIwMjIgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAg ICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAg ICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAy MgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19v dGhlcnMgIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEw IHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2Fwcl9hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIw MjJfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJf MjBfMzAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpKTsK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0 YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAg ICAgdGFibGVvaWQgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMl8wMV8xMCB8ICAgICAg ICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIK KyBzYWxlc19hcHIyMDIyXzEwXzIwIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2FwcjIwMjJfMjBfMzAgfCAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIy Cisgc2FsZXNfZmViMjAyMiAgICAgICB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAg ICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBzYWxlc19mZWIyMDIyICAgICAgIHwgICAg ICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAy MgorIHNhbGVzX2ZlYjIwMjIgICAgICAgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAg ICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICB8ICAg ICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIw MjIKKyBzYWxlc19qYW4yMDIyICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgfCAg ICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0y MDIyCisgc2FsZXNfbWFyMjAyMiAgICAgICB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAg ICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19tYXIyMDIyICAgICAgIHwg ICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEt MjAyMgorIHNhbGVzX21hcjIwMjIgICAgICAgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICB8 ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKygxNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEJZIExJ U1QgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkg TElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdCAoc2FsZXNfc3Rh dGUgVkFSQ0hBUigyMCkpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn T3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScs ICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNh bGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlv biAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScp LAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291 bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3Jk IgorTElORSAzOiAuLi4gRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZv c3RvaycsICdIZWxzaW5raScuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNh bGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVz X2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19h bGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxV RVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBz YWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0xpc2Jvbics ICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVy bGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorTElORSAyOiAg IChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZh bHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uICJzYWxlc19hbGwiIGRvZXMgbm90IGhhdmUKK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcsIE5VTEwpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAo J0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Nl bnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9S OiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNh dXNlIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfYWxsIiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4u LnNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5V TEwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNh bm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIg ZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycp LAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fu bm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfYWxsIiBk b2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBh cnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uICJzYWxl c19vdGhlcnMiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVF UyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1Zs YWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBE RUZBVUxUKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNl IERFRkFVTFQgcGFydGl0aW9uICJzYWxlc19vdGhlcnMiIGFscmVhZHkgZXhpc3RzCitMSU5FIDU6 ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAgICAg ICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0gVGVzdCBmb3Igbm9uLXN5bWJvbGljIGNv bXBhcmlzb24gb2YgdmFsdWVzIChudW1lcmljIHZhbHVlcyAnMCcgYW5kICcwLjAnIGFyZSBlcXVh bCkuCitDUkVBVEUgVEFCTEUgdCAoYSBudW1lcmljKSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CitD UkVBVEUgVEFCTEUgdDEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBpbiAgKCcwJywgJzEnKTsK Ky0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAieCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIg bmV3IHBhcnRpdGlvbiAieDEiCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0MSBJTlRP CisgIChQQVJUSVRJT04geCBGT1IgVkFMVUVTIElOICgnMCcpLAorICAgUEFSVElUSU9OIHgxIEZP UiBWQUxVRVMgSU4gKCcwLjAnLCAnMScpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAieCIgd291 bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAieDEiCitMSU5FIDI6ICAgKFBB UlRJVElPTiB4IEZPUiBWQUxVRVMgSU4gKCcwJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgdDsKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMg ZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBk byBub3QgaGF2ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAq IG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24g aGFzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0KHNhbGVzX3N0YXRlIFZBUkNIQVIoMjAp KSBQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25v cmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0 LiBQZXRlcnNidXJnJywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFk aXZvc3RvaycsIE5VTEwpOworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBjb21iaW5lZCBwYXJ0 aXRpb24gYm91bmRzIGRvIG5vdCBjb250YWluIHZhbHVlIChOVUxMKSBidXQgc3BsaXQgcGFydGl0 aW9uICJzYWxlc19hbGwiIGRvZXMKKy0tIEhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFS VElUSU9OIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhh Y3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUg c2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhp JywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVT IElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9u cyBjb21iaW5lZCBwYXJ0aXRpb24gYm91bmRzIGRvIG5vdCBjb250YWluIHZhbHVlIChOVUxMKSBi dXQgc3BsaXQgcGFydGl0aW9uICJzYWxlc19hbGwiIGRvZXMKK0hJTlQ6ICBBTFRFUiBUQUJMRSAu Li4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRp b25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgor LS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBjb21iaW5lZCBwYXJ0aXRpb24gYm91bmRzIGRvIG5v dCBjb250YWluIHZhbHVlICgnS3lpdic6OmNoYXJhY3RlciB2YXJ5aW5nKDIwKSkgYnV0IHNwbGl0 IHBhcnRpdGlvbiAic2FsZXNfYWxsIiBkb2VzCistLSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQ TElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBt dXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0FMVEVS IFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycs ICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9S IFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCBOVUxMKSk7CitFUlJPUjogIG5ldyBwYXJ0 aXRpb25zIGNvbWJpbmVkIHBhcnRpdGlvbiBib3VuZHMgZG8gbm90IGNvbnRhaW4gdmFsdWUgKCdL eWl2Jzo6Y2hhcmFjdGVyIHZhcnlpbmcoMjApKSBidXQgc3BsaXQgcGFydGl0aW9uICJzYWxlc19h bGwiIGRvZXMKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUg Y29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUg Ym91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorLS0gRVJST1IgIERFRkFVTFQgcGFydGl0aW9u IHNob3VsZCBiZSBvbmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lp dicpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElUSU9OIHNh bGVzX290aGVyczIgREVGQVVMVCk7CitFUlJPUjogIERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBi ZSBvbmUKK0xJTkUgNjogICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CisgICAg ICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDog QlkgTElTVCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ft b3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0 YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9OIHNh bGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElOREVYIHNh bGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVz X3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAn QmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAw MCwgJzIwMjItMDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAs ICcyMDIyLTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAn MjAyMi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIw MjItMDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIy LTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0w My0wMScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMt MDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5 JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScp LAorICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIwMjItMDMtMDInKSwK KyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1JyksCisg ICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0xMCcpLAorICAo J0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQ bGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CitBTFRFUiBU QUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAn RGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfbGlzdCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6 OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwg V2Fyc2F3ICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgc2FsZXNfY2VudHJh bCB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8IEJlcmxpbiAgICAgICAgIHwg ICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorIHNhbGVzX2NlbnRyYWwgfCAgICAgICAgICAgICAx MiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAz LTEwLTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAg ICAgIHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisgc2FsZXNf ZWFzdCAgICB8ICAgICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAgICAgICB8IEJlamluZyAgICAg ICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorIHNhbGVzX2Vhc3QgICAgfCAgICAgICAg ICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBWbGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1 MCB8IDAzLTA5LTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisg c2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8IE9zbG8g ICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorIHNhbGVzX25vcmQgICAgfCAg ICAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAg ICAgMTIwMCB8IDAzLTExLTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAgICAgICAgICAgMTAgfCBI YWxkZXIgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0y MDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8 IE5ldyBZb3JrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorIHNhbGVzX3dlc3Qg ICAgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyBzYWxlc193ZXN0ICAgIHwgICAgICAgICAgICAg MTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAgICAgfCAgICAgICAgICA2NTAgfCAw My0wNS0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgIDE0IHwgUGxhdG8gICAgICAg ICAgICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorKDE0IHJv d3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBzcGxpdHRp bmcgcGFydGl0aW9uCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJz YXcnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19jZW50cmFs X3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxlc19jZW50cmFsCisgICBJbmRleCBDb25kOiAoKHNhbGVz X3N0YXRlKTo6dGV4dCA9ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19jZW50cmFsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAg ICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAg IDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxl c19jZW50cmFsX3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxlc19jZW50cmFsIHNhbGVzX2xpc3QKKyAg IEluZGV4IENvbmQ6ICgoc2FsZXNfc3RhdGUpOjp0ZXh0ID0gJ1dhcnNhdyc6OnRleHQpCisoMiBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fy c2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUw IHwgMDMtMDQtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNh dyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFt ZSA9ICdJdmFub3YnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgSW5kZXggU2NhbiB1c2lu ZyBzYWxlc19lYXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IG9uIHNhbGVzX2Vhc3Qgc2FsZXNfbGlz dF8xCisgICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2 YW5vdic6OnRleHQpCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBzYWxlc19jZW50cmFsX3NhbGVz cGVyc29uX25hbWVfaWR4IG9uIHNhbGVzX2NlbnRyYWwgc2FsZXNfbGlzdF8yCisgICAgICAgICBJ bmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBzYWxlc19ub3JkIHNhbGVzX2xpc3RfMworICAgICAg ICAgUmVjaGVjayBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRl eHQpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gc2FsZXNfbm9yZF9zYWxlc3Bl cnNvbl9uYW1lX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9u YW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2Fs ZXNfd2VzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBvbiBzYWxlc193ZXN0IHNhbGVzX2xpc3RfNAor ICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3Yn Ojp0ZXh0KQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gc2FsZXNfb3RoZXJzIHNhbGVzX2xp c3RfNQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0g J0l2YW5vdic6OnRleHQpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gc2FsZXNf b3RoZXJzX3NhbGVzcGVyc29uX25hbWVfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo KHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisoMTUgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92 JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwg MDMtMDQtMjAyMgorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUg c2FsZXNfbGlzdDsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBERUZBVUxUIHBhcnRp dGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJh bmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIs ICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAo OSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0w NicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAn MjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVj YWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAg ICB0YWJsZW9pZCAgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Cisgc2FsZXNfYXByMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8 ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKyBzYWxlc19mZWIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIyCisgc2FsZXNfZmViMjAyMl8xZGVj YWRlIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwg MDItMDctMjAyMgorIHNhbGVzX2phbjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19tYXIyMDIy XzFkZWNhZGUgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAx NzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDEg fCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX290 aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2Fs ZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwg ICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAg ICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIK KyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwg ICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTkt MjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAg ICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IG5vbi1ERUZB VUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOwor LS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21t YW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMK KyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9m ZicsIDUwMCwgICcyMDIyLTAyLTA5JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjIt MDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwg ICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUw LCAgJzIwMjItMDItMDcnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcp LAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxl cicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAy Mi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgx MiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAz NzcsICAnMjAyMi0wMS0wOScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkg dGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAg ICAgICB0YWJsZW9pZCAgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgc2FsZXNfYXByMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMWRlY2Fk ZSB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKKyBzYWxlc19mZWIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgMiB8IFNtaXJu b2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIyCisgc2FsZXNfZmViMjAyMl8x ZGVjYWRlIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUw IHwgMDItMDctMjAyMgorIHNhbGVzX2phbjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgIDEzIHwg R2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19tYXIy MDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAg ICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAg IDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVz X290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAg ICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisg c2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAg ICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIw MjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAg IHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMt MTktMjAyMgorKDEzIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVz dCBmb3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9uICsg cGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAy Mi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgz LCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3 NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3 JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGkn LCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcy MDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAg KDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMt MTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywg ICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJP TSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAi QyIsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAg ICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAg ICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIK KyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfZmVi MjAyMiB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8 IDAyLTEwLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAg ICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIy Cisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAg ICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTAg fCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2ph bjIwMjIgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcg fCAwMS0wOS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAg ICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAy MgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDE0 IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dz KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRp b24gb2YgYW5vdGhlciB0YWJsZS4KKy0tCitDUkVBVEUgVEFCTEUgdDEoaSBpbnQsIHQgdGV4dCkg UEFSVElUSU9OIEJZIExJU1QgKHQpOworQ1JFQVRFIFRBQkxFIHQxcGEgUEFSVElUSU9OIE9GIHQx IEZPUiBWQUxVRVMgSU4gKCdBJyk7CitDUkVBVEUgVEFCTEUgdDIgKGkgaW50LCB0IHRleHQpIFBB UlRJVElPTiBCWSBSQU5HRSAodCk7CistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3Qg YSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgU1BMSVQgUEFSVElU SU9OIHQxcGEgSU5UTworICAgKFBBUlRJVElPTiB0MmEgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRP ICgnQicpLAorICAgIFBBUlRJVElPTiB0MmIgRk9SIFZBTFVFUyBGUk9NICgnQicpIFRPICgnQycp KTsKK0VSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlv biAidDIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiBjYW4gb25seSBz cGxpdCBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDI7 CitEUk9QIFRBQkxFIHQxOworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgdGVtcG9y YXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVy c2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5o ZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3Qn OjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19j YXRhbG9nLnRleHQgQ09MTEFURSAiQyI7CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAg ICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMiB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDIpIHwgdAorKDEgcm93KQorCistLSBFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQg cmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiAidCIKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKSk7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVs YXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiAidCIKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gcGdfdGVtcC50cF8w XzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gcGdfdGVtcC50cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gUGFydGl0aW9ucyBzaG91bGQgYmUg dGVtcG9yYXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAg RlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBX SEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcwor ICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkg PSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQg Q09MTEFURSAiQyI7CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxw ZXJzaXN0ZW5jZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLQorIHRwXzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgdAorIHRw XzFfMiB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwgdAorKDIgcm93cykKKworRFJPUCBU QUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb25zIGluaGVyaXQgcGFyZW50J3MgdGFi bGVzcGFjZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRB QkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJU SVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp KTsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUg dGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAn cGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lIENPTExBVEUgIkMi LCB0YWJsZXNwYWNlIENPTExBVEUgIkMiOworIHRhYmxlbmFtZSB8ICAgIHRhYmxlc3BhY2UgICAg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCByZWdyZXNzX3Ri bHNwYWNlCisgdHBfMF8xICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzFfMiAgICB8IHJlZ3Jl c3NfdGJsc3BhY2UKKygzIHJvd3MpCisKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFi bGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8w XzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScK KyAgT1JERVIgQlkgdGFibGVuYW1lIENPTExBVEUgIkMiLCBpbmRleG5hbWUgQ09MTEFURSAiQyIs IHRhYmxlc3BhY2UgQ09MTEFURSAiQyI7CisgdGFibGVuYW1lIHwgIGluZGV4bmFtZSAgfCAgICB0 YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyB0ICAgICAgICAgfCB0X3BrZXkgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzEg ICAgfCB0cF8wXzFfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8xXzIgICAgfCB0cF8xXzJf cGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKKy0tIENo ZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QK K0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFCTEUgSEFO RExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NSRUFURSBUQUJM RSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRF UiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBf MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00g cGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJ TiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6cmVnY2xhc3Mp CitPUkRFUiBCWSBjLnJlbG5hbWUgQ09MTEFURSAiQyI7CisgcmVsbmFtZSB8ICAgICAgICBhbW5h bWUgICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgIHwg cGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0cF8wXzEgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0 cF8xXzIgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsK K0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKKy0tIFNwbGl0IHBhcnRp dGlvbiBvZiBhIHRlbXBvcmFyeSB0YWJsZSB3aGVuIG9uZSBvZiB0aGUgcGFydGl0aW9ucyBhZnRl cgorLS0gc3BsaXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHBhcnRpdGlvbiBiZWluZyBzcGxp dAorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7CitD UkVBVEUgVEVNUCBUQUJMRSB0cF8wIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMCBJTlRPCisgIChQQVJU SVRJT04gcGdfdGVtcC50cF8wIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElU SU9OIHBnX3RlbXAudHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9QIFRBQkxF IHQ7CistLSBDaGVjayBkZWZhdWx0cyBhbmQgY29uc3RyYWludHMgb2YgbmV3IHBhcnRpdGlvbnMK K0NSRUFURSBUQUJMRSB0X2JpZ2ludCAoCisgIGIgYmlnaW50LAorICBpIGludCBERUZBVUxUICgz KzEwKSwKKyAgaiBpbnQgREVGQVVMVCAxMDEsCisgIGsgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMg KGIrMTApIFNUT1JFRAorKQorUEFSVElUSU9OIEJZIFJBTkdFIChiKTsKK0NSRUFURSBUQUJMRSB0 X2JpZ2ludF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0X2JpZ2ludCBERUZBVUxUOworLS0gU2hvdyBk ZWZhdWx0cy9jb25zdHJhaW50cyBiZWZvcmUgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFy dGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwg U3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwg YmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3Jl ZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChiKQor UGFydGl0aW9uczogdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUCisKK1xkKyB0X2JpZ2ludF9kZWZh dWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9u X3NwbGl0X3NjaGVtYS50X2JpZ2ludF9kZWZhdWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAg fCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAg fCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3Rv cmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBE RUZBVUxUCitObyBwYXJ0aXRpb24gY29uc3RyYWludAorCitBTFRFUiBUQUJMRSB0X2JpZ2ludCBT UExJVCBQQVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBJTlRPCisgIChQQVJUSVRJT04gdF9iaWdp bnRfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApLAorICAgUEFSVElUSU9OIHRfYmln aW50X2RlZmF1bHQgREVGQVVMVCk7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGFmdGVy IFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50X2RlZmF1bHQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50 X2RlZmF1bHQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAg ICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAg fCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFp biAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAg ICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8 IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAg ICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50IERFRkFVTFQKK1BhcnRpdGlvbiBjb25z dHJhaW50OiAoTk9UICgoYiBJUyBOT1QgTlVMTCkgQU5EICgoYiA+PSAnMCc6OmJpZ2ludCkgQU5E IChiIDwgJzEwJzo6YmlnaW50KSkpKQorCitcZCsgdF9iaWdpbnRfMDFfMTAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50 X2JpZ2ludF8wMV8xMCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRz IHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxh aW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAg ICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgRk9SIFZBTFVFUyBGUk9NICgn MCcpIFRPICgnMTAnKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYiBJUyBOT1QgTlVMTCkgQU5E IChiID49ICcwJzo6YmlnaW50KSBBTkQgKGIgPCAnMTAnOjpiaWdpbnQpKQorCitEUk9QIFRBQkxF IHRfYmlnaW50OworLS0gVGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRv IG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCB0aGUKKy0tIHRoZSBwYXJ0aXRpb24gdG8gc3BsaXQg dG8gZG8gdGhlIHNwbGl0LgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitHUkFOVCBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7IC0t ZXJyb3IKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0CitSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBB UlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04g dHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsgLS1lcnJvcgorRVJST1I6ICBtdXN0 IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBfMgorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwor QUxURVIgVEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOwor QUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0 cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsgLS1vaworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOworRFJPUCBUQUJMRSB0OworLS0gVGVzdDogb3duZXIgb2YgbmV3IHBhcnRpdGlvbnMgc2hv dWxkIGJlIHRoZSBzYW1lIGFzIG93bmVyIG9mIHNwbGl0IHBhcnRpdGlvbgorQ1JFQVRFIFRBQkxF IHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIo aSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBBVFRB Q0ggUEFSVElUSU9OIHRwXzBfMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKy0tIE93bmVy IGlzICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAg ICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzBfMiB8IHRhYmxl IHwgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKKygxIHJvdykKKworQUxURVIgVEFCTEUg dCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2UnOgorXGR0IHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAg ICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgfCB0cF8wXzEgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlCisoMSByb3cpCisKK1xkdCB0cF8xXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlw ZSAgfCAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgdHBfMV8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZQorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CistLSBUZXN0OiBpbmRleCBv ZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3Bs aXQKKy0tIHBhcnRpdGlvbgorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xMF8yMCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMjApOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDExKSwgKDE2KTsKK0NS RUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHJ1bl9tZShpbnRlZ2VyKSBSRVRVUk5TIGludGVnZXIg QVMgJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAneW91IGFyZSBydW5uaW5nIG1lIGFzICUnLCBD VVJSRU5UX1VTRVI7CisgIFJFVFVSTiAkMTsKK0VORAorJCQgTEFOR1VBR0UgUExQR1NRTCBJTU1V VEFCTEU7CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQ1JF QVRFIElOREVYIE9OIHQgKHJ1bl9tZShpKSk7CitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUg YXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK05PVElDRTogIHlvdSBhcmUgcnVubmlu ZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZSc6CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8xMF8yMCBJTlRPCisgIChQ QVJUSVRJT04gdHBfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKyAgIFBBUlRJ VElPTiB0cF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK05PVElDRTogIHlv dSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorTk9USUNF OiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitE Uk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHJ1bl9tZShpbnRlZ2VyKTsKK1JFVk9LRSBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEg RlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9i OworLS0gVGVzdCBmb3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkg aW50KSBQQVJUSVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJM RSB0cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRF UiAxKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fu bm90IGJlIHNwbGl0CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAo UEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCks CisgICBQQVJUSVRJT04gdHAxXzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRF UiAyKSk7CitFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5v dCBiZSBzcGxpdAorLS0gRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250 YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0 LCBSRU1BSU5ERVIgMCkpOworRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBj b250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IGZv ciBzcGxpdCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQor LS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZB VUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBT VE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJ TlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRp b25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBh cnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4 dCBTVE9SQUdFIEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywK KyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBT VE9SRUQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQu aSBJUyAndDEuaSc7CitDUkVBVEUgVEFCTEUgdHBfeAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4 dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF94JywKKyBiIGJpZ2ludCwKKyBkIGRh dGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDItMDInKSBTVE9SRUQpOworQUxURVIgVEFC TEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwX3ggRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitD T01NRU5UIE9OIENPTFVNTiB0cF94LmkgSVMgJ3RwX3guaSc7CitDUkVBVEUgU1RBVElTVElDUyB0 X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElTVElDUyB0 cF94X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwX3g7CitBTFRFUiBUQUJMRSB0 IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBB REQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxU RVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZB TElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1Qg VkFMSUQ7CitJTlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsK K0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDIpOworQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpIFJFVFVSTlMgdHJpZ2dlciBM QU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd0cmln Z2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1Zb MF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZ JDsKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5T RVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rp b24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBC RUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRy aWdnZXJfZnVuY3Rpb24oJ3RwX3gnKTsKK1xkKyB0cF94CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRw X3giCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAg ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMg dGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgdHBfeC5pCisgdCAg ICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdHBfeCc6OnRl eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtYWluICAgIHwgICAgICAgICAgICAgIHwg CisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAg ICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJh dGVkIGFsd2F5cyBhcyAoJzAyLTAyLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikK K1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkg Pj0gMCkgQU5EIChhYnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hl Y2siIENIRUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5G T1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK1N0YXRpc3Rp Y3Mgb2JqZWN0czoKKyAgICAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94X3N0YXQiIChkZXBl bmRlbmNpZXMpIE9OIGksIGIgRlJPTSB0cF94CitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAi dHBfeF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBO T1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9y ZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVyBF WEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorICAgIHRw X3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVB Q0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndHBfeCcpCisKK0FMVEVS IFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX3ggSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpKTsKK1xkKyB0cF94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94Igor IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAg ICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgIHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHQgICAgICB8IHRl eHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3QnOjp0ZXh0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBiICAg ICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwg CisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFs d2F5cyBhcyAoJzAxLTAxLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgICB8ICAgICAgICAg ICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpCitQYXJ0 aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwpIEFORCAoYWJzKGkpID49IDEp IEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidF9iX2NoZWNrIiBD SEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEiIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VE CisgICAgInRfYl9jaGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElECitOb3QtbnVsbCBjb25z dHJhaW50czoKKyAgICAidF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAg ICAidF9iX25uIiBOT1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoK KyAgICB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZP UiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFC TEUgdAorCitJTlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK05P VElDRTogIHRyaWdnZXIodCkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBCRUZPUkUs IGxldmVsID0gUk9XCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdCBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGI7CisgdGFibGVvaWQgfCBp IHwgICAgICB0ICAgICAgIHwgYiB8ICAgICBkICAgICAgCistLS0tLS0tLS0tKy0tLSstLS0tLS0t LS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tCisgdHBfMF8xICAgfCAwIHwgZGVmYXVsdF90cF94IHwg MSB8IDAxLTAxLTIwMjIKKyB0cF94ICAgICB8IDEgfCBkZWZhdWx0X3RwX3ggfCAyIHwgMDEtMDEt MjAyMgorIHRwX3ggICAgIHwgMSB8IGRlZmF1bHRfdCAgICB8IDMgfCAwMS0wMS0yMDIyCisoMyBy b3dzKQorCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsK Ky0tIFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgor Q1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRh Ymxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBf MF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFC TEUgdCBBREQgQ09OU1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5T RVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CistLSBTaG91bGQgYmUgMSBiZWNhdXNlIHBhcnRp dGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMKKy0tIHBhcnRp dGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0 IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkg PSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCistLSAidGFiX2lkIiBj b2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1uKSB3aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRl IHJlcXVpcmVzCistLSByZWNvbXB1dGF0aW9uIGhlcmUuCitBTFRFUiBUQUJMRSB0IFNQTElUIFBB UlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MikpOworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93 IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Ig cm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFi X2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0t LS0tCisgICAgIDAKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworUkVTRVQgc2VhcmNoX3BhdGg7 CistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXgg NjMzY2YyMGUwYTYuLjg5YmRlOWEyODUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0 ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMg dGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBj YW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9uX21l cmdlIHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBp bmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBs YWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBu dW1hIGVhZ2VyX2FnZ3JlZ2F0ZQordGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9zcGxp dCBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5k ZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFp biBjb21wcmVzc2lvbiBjb21wcmVzc2lvbl9sejQgbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUgbnVt YSBlYWdlcl9hZ2dyZWdhdGUKIAogIyBldmVudF90cmlnZ2VyIGRlcGVuZHMgb24gY3JlYXRlX2Ft IGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBE REwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wZTc5YzAzNmVhOQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKQEAgLTAsMCArMSwxMTM0 IEBACistLQorLS0gUEFSVElUSU9OX1NQTElUCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4u LiBTUExJVCBQQVJUSVRJT04gLi4uIiBjb21tYW5kCistLQorCitDUkVBVEUgU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEy OworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworCist LQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdCBmb3IgZXJyb3Ig Y29kZXMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwg c2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcmVs YXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc194eHggSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICByZWxh dGlvbiAic2FsZXNfamFuMjAyMiIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKwor LS0gRVJST1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0 aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4g KCcyMDIyLTA1LTAxJywgJzIwMjItMDYtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVk IGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tRVJS T1I6ICBsaXN0IG9mIHNwbGl0IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdv IGl0ZW1zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMTAtMDEnKSk7CisKKy0tIEVSUk9SOiAgbG93 ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93 ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCistLSBI SU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJv dW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRo ZSBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBwYXJ0aXRp b24gd2l0aCBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVhZHkgdXNlZAorLS0g KFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0 aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1l KQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBwYXJ0aXRp b24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpKTsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBp cyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor CistLSBFUlJPUjogIEFMVEVSIGFjdGlvbiBTUExJVCBQQVJUSVRJT04gY2Fubm90IGJlIHBlcmZv cm1lZCBvbiByZWxhdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorLS0gREVUQUlMOiAgVGhp cyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgorQUxURVIgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKKworLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24g InNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0tIEhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQg UEFSVElUSU9OIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3Qg ZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2 LTAxJykpOworCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19t YXIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKKworLS0gVGVzdHMgZm9yIHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0g c2hvdWxkIGJlIGV4ZWN1dGVkIHdpdGhvdXQgREVGQVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIERFVEFDSCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzOworCistLSBFUlJPUjog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRv IGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgor LS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5l ZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBv ZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIENoZWNrIHRoZSBz b3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgKK1NFVCBzZWFyY2hfcGF0aCA9 IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0 X3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQorCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CisKKy0tIEFk ZGl0aW9uYWwgdGVzdHMgZm9yIGVycm9yIG1lc3NhZ2VzLCBubyBkZWZhdWx0IHBhcnRpdGlvbgor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0w MScpOworCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAy MiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNf ZmViX21hcl9hcHIyMDIyIgorLS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJ T04gcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5 IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7 CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRp dGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEw JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZh bm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcy MDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAg KDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3Nvbics IDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMt MTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdU cnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAg JzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAor ICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVS IEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7 CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBBZGQgc3BsaXQgcGFy dGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIw MjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAg JzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAor ICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0w Mi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAg J0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyks CisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8n LCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworLS0g U3BsaXQgcGFydGl0aW9uLCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9mIG5ldyBw YXJ0aXRpb25zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h LnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpKTsKK1xkKyBzYWxlc19yYW5nZQorCitTRUxFQ1QgdGFibGVvaWQ6OnJl Z2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZSBDQVNDQURFOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlv biBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZB VUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkg SU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAo TFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRo Ojp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkg U1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRl cGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRo LCBzYWxlc19kYXkpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUg Rk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgy MDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lOU0VSVCBJ TlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyksCisgICgnTWFu YWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAgKCdN YW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMiksCisgICgn TWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpLAorICAo J01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKKwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5OworCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBz YWxlc19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsK KworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEw KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5OworCitEUk9Q IFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFVTFQg cGFydGl0aW9uOyB1c2UgYW4gaW5kZXggb24gcGFydGl0aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0 ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNf cmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2Rh dGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAg ICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAn SXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwK KyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3Nv bicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjIt MDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEs ICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScp LAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZS T00gc2FsZXNfb3RoZXJzOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFt ZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hl bWEnIE9SREVSIEJZIGluZGV4bmFtZSBDT0xMQVRFICJDIjsKKworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5n IGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAx LTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIw MjItMDEtMDEnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIw MjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNf bWFyMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4g JzIwMjItMDEtMDEnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX290 aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKworUkVTRVQgZW5hYmxl X3NlcXNjYW47CisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcworV0hFUkUgdGFibGVuYW1lIGlu ICgnc2FsZXNfZmViMjAyMicsICdzYWxlc19tYXIyMDIyJywgJ3NhbGVzX2FwcjIwMjInLCAnc2Fs ZXNfb3RoZXJzJykKK0FORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCitP UkRFUiBCWSBpbmRleG5hbWUgQ09MTEFURSAiQyI7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2Ug Q0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNvbWUgY2FzZXMgZm9yIHNwbGl0dGluZyBERUZBVUxU IHBhcnRpdGlvbiAoZGlmZmVyZW50IGJvdW5kcykKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNh bGVzX2RlYzIwMjEgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBh cnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMy MDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKCcyMDIx LTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9S IFZBTFVFUyBGUk9NICgnMjAyMS0xMi0zMCcpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gc2Fs ZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2ZlYjIwMjIgKHVwcGVyIGJvdW5kKQorLS0g RVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgdG9nZXRo ZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVj MjAyMSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMicpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X290aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVz X2RlYzIwMjEgKGluc2lkZSBib3VuZCkKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0 aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAy MSIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0x Mi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjEtMTItMTAnKSBUTyAoJzIwMjEtMTItMjAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVz X2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChleGFjdGx5IHRoZSBzYW1lIGJv dW5kcykKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9y IiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0w MS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEt MTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCBE RUZBVUxUIHBhcnRpdGlvbiAic2FsZXNfb3RoZXJzIgorLS0gSElOVDogIFRvIHNwbGl0IERFRkFV TFQgcGFydGl0aW9uIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbiBtc3V0IGJlIERFRkFVTFQKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScp IFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpKTsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBiZXR3ZWVu IHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Rl YzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0xMCcp IFRPICgnMjAyMi0wMS0yMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3Ig YXJlIGVxdWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMSBhbmQg c2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZS T00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bm9lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0 aW9uIHdpdGggQ0hFQ0sgYW5kIEZPUkVJR04gS0VZIENPTlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVk IHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQ UklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoCitzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3Bl cnNvbl9pZCksCitzYWxlc19hbW91bnQgSU5UIENIRUNLIChzYWxlc19hbW91bnQgPiAxKSwKK3Nh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKKworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK1NFTEVDVCBwZ19nZXRf Y29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdI RVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgY29ubmFtZSBDT0xMQVRFICJDIjsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBXZSBz aG91bGQgc2VlIHRoZSBzYW1lIENPTlNUUkFJTlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBj b25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYjIwMjIn OjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWUgQ09MTEFURSAiQyI7CitTRUxFQ1QgcGdf Z2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWlu dCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBC WSBjb25uYW1lIENPTExBVEUgIkMiOworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCks IGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2Fs ZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZSBDT0xMQVRFICJDIjsK KworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0 ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworLS0gRVJS T1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5Igor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAzLTExJyk7Cist LSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMtMTEn KTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Bl b3BsZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9uIHBhcnRpdGlv bmVkIHRhYmxlIGluIGNhc2Ugb2YgZXhpc3RpbmcgRk9SRUlHTiBLRVkgcmVmZXJlbmNlIGZyb20g YW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzIChzYWxlc3Bl cnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgx MCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUgVkFMVUVTCisgICgxLCAgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDE5LCAnSXZh bm92JyksCisgICgyMCwgJ1NtaXJub2ZmJyksCisgICgzMCwgJ0ZvcmQnKTsKKworSU5TRVJUIElO VE8gc2FsZXMgVkFMVUVTCisgICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpLAorICAoMSwgIDExMCwg JzIwMjItMDMtMDInKSwKKyAgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyksCisgICgxMCwgOTAsICAn MjAyMi0wMy0wMycpLAorICAoMTksIDIwMCwgJzIwMjItMDMtMDQnKSwKKyAgKDIwLCA1MCwgICcy MDIyLTAzLTEyJyksCisgICgyMCwgMTcwLCAnMjAyMi0wMy0wMicpLAorICAoMzAsIDMwLCAgJzIw MjItMDMtMDQnKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVv cGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNw ZXJzb25faWQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxl c3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAg Rk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQg Q09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCistLSBFUlJPUjogIGluc2VydCBvciB1cGRh dGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxl c19zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICg0MCwgNTAs ICAnMjAyMi0wMy0wNCcpOworLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMzAsIDUw LCAgJzIwMjItMDMtMDQnKTsKKworRFJPUCBUQUJMRSBzYWxlcyBDQVNDQURFOworRFJPUCBUQUJM RSBzYWxlc3Blb3BsZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9m IHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIFBBUlRJ VElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dl ciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorICAgIFJBSVNFIE5PVElDRSAn dHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19B UkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7 CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0 ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAg Rk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jv d190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9h ZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Bl b3BsZQorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2Vy dF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmly ZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVT ICgxMCwgJ01heScpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKKworQUxURVIg VEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRP ICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMw KSBUTyAoNDApKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0 ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7 CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVz cGVvcGxlMzBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUg Q0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0t CistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJZiBz cGxpdCBwYXJ0aXRpb24gY29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiwgY29sdW1ucyBvZiBuZXcg cGFydGl0aW9ucyBhcmUgaWRlbnRpdHkgY29sdW1ucyB0b28uCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZ IFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMV8yIFBB UlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0tIENy ZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggaWRlbnRpdHkgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMl81KHNhbGVzcGVyc29uX2lkIElOVCBOT1QgTlVMTCwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9O IHNhbGVzcGVvcGxlMl81IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDUpOworCitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnUG9pcm90JyksICgnSXZh bm92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Bl b3BsZTJfNSBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzMgRk9SIFZBTFVFUyBGUk9N ICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzXzQgRk9SIFZBTFVFUyBGUk9N ICgzKSBUTyAoNCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGU0XzUgRk9SIFZBTFVFUyBGUk9N ICg0KSBUTyAoNSkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFt ZSkgVkFMVUVTICgnTWF5JyksICgnRm9yZCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENP TExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gY2hlY2sgbmV3IHBhcnRpdGlvbnMgaGF2 ZSBpZGVudGl0eSBvciBub3QgYWZ0ZXIgc3BsaXQgcGFydGl0aW9uCitTRUxFQ1QgYXR0cmVsaWQ6 OnJlZ2NsYXNzLCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0 cmlidXRlCitXSEVSRSBhdHRudW0gPiAwCitBTkQgYXR0cmVsaWQ6OnJlZ2NsYXNzIElOICgKKyAg J3NhbGVzcGVvcGxlMl8zJzo6cmVnY2xhc3MsICdzYWxlc3Blb3BsZScsICdzYWxlc3Blb3BsZTJf MycsCisgICdzYWxlc3Blb3BsZTFfMicsICdzYWxlc3Blb3BsZTNfNCcsICdzYWxlc3Blb3BsZTRf NScpCitPUkRFUiBCWSBhdHRyZWxpZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGF0dG51 bTsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3Bs aXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgxMCk7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIHNvbWUg ZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAoZDEgVkFSQ0hB UigzMCksIHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCBkMyBEQVRFLCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUx MF80MCBWQUxVRVMKKyAgKCdkdW1teSB2YWx1ZSAxJywgMTksIDEwMCwgbm93KCksICdJdmFub3Yn KSwKKyAgKCdkdW1teSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93KCksICdTbWlybm9mZicpOworCitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxl MTBfNDAgRFJPUCBDT0xVTU4gZDM7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOwor CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEw LCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BM SVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxl c3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04g c2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKKworU0VMRUNU IHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFC TEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHN1Yi1wYXJ0aXRp b24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBB VFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vf c2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOwor CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyks CisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIy LTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcs ICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4 NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEn KSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVt cCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIw MjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6 OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitBTFRFUiBUQUJMRSBzYWxlc19h cHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19hcHIyMDIyXzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzEwXzIwIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyXzIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5n ZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVy c29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQlkgTElTVCBwYXJ0 aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1Qg cGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QgKHNhbGVzX3N0YXRlIFZB UkNIQVIoMjApKSBQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFC TEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3Ns bycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fs bCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdL eWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2Fs ZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9u ICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1Ig VkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJyks CisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3Qi IHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwi CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2Jykp OworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIE5V TEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcyBub3QgaGF2 ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOwor CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMg dmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcyBub3QgaGF2ZQor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9O IHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicp KTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2Ug REVGQVVMVCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJp ZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4g KCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19j ZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7 CisKKy0tIFRlc3QgZm9yIG5vbi1zeW1ib2xpYyBjb21wYXJpc29uIG9mIHZhbHVlcyAobnVtZXJp YyB2YWx1ZXMgJzAnIGFuZCAnMC4wJyBhcmUgZXF1YWwpLgorQ1JFQVRFIFRBQkxFIHQgKGEgbnVt ZXJpYykgUEFSVElUSU9OIEJZIExJU1QgKGEpOworQ1JFQVRFIFRBQkxFIHQxIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgaW4gICgnMCcsICcxJyk7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24g IngiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gIngxIgorQUxURVIg VEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdDEgSU5UTworICAoUEFSVElUSU9OIHggRk9SIFZBTFVF UyBJTiAoJzAnKSwKKyAgIFBBUlRJVElPTiB4MSBGT1IgVkFMVUVTIElOICgnMC4wJywgJzEnKSk7 CitEUk9QIFRBQkxFIHQ7CisKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMgZXJyb3JzIGZvciBC WSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBO VUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAqIG5ldyBwYXJ0aXRp b25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19saXN0KHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApKSBQQVJUSVRJT04g QlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1 cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywg TlVMTCk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgY29tYmluZWQgcGFydGl0aW9uIGJv dW5kcyBkbyBub3QgY29udGFpbiB2YWx1ZSAoTlVMTCkgYnV0IHNwbGl0IHBhcnRpdGlvbiAic2Fs ZXNfYWxsIiBkb2VzCistLSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiBy ZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0 Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFk aXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dh cnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBj b21iaW5lZCBwYXJ0aXRpb24gYm91bmRzIGRvIG5vdCBjb250YWluIHZhbHVlICgnS3lpdic6OmNo YXJhY3RlciB2YXJ5aW5nKDIwKSkgYnV0IHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfYWxsIiBkb2Vz CistLSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJp bmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5k IG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVT IElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAor ICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJs aW4nLCBOVUxMKSk7CisKKy0tIEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25l CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERF RkFVTFQpOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNU IHBhcnRpdGlvbmluZywgU1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgU0VSSUFMLAorIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElO VCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOwor CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19s aXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19s aXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0 ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4g KCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVy bGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAw LCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwg JzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcy MDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAy Mi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjIt MDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAz LTAxJyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0w NicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDkn KSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyks CisgICgnSGFsZGVyJywgICAnSGVsc2lua2knLCAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAor ICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAg KCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgn R2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1Bs YXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKKworQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywg J0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCitTRUxFQ1QgdGFibGVv aWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfbGlzdCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xh c3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCistLSBVc2UgaW5kZXhzY2Fu IGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgc3BsaXR0aW5nIHBhcnRpdGlvbgorU0VUIGVuYWJs ZV9zZXFzY2FuID0gT0ZGOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2Fs ZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBz YWxlc19jZW50cmFsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJz YXcnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNh dyc7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBz YWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hF UkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK KworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3Bs aXQgREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJv dW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJ T04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIw MjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0w NycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xp JywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAn MjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisg ICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAz LTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAn U21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9O IHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8g KCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNC0xMCcpKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwg c2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0 IGZvcjoKKy0tICAgKiBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3 aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0 aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworCitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAn MjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5JyksCisg ICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92Jywg ICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0 LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKSwKKyAgKDcsICAn TGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwg ICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwK KyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcs ICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAorICAg UEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CisKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8gREVGQVVM VCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kcy4K Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDUtMDEnKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJp Y3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcy MDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fs bCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJl Z2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgYW5vdGhlciB0 YWJsZS4KKy0tCitDUkVBVEUgVEFCTEUgdDEoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIExJ U1QgKHQpOworQ1JFQVRFIFRBQkxFIHQxcGEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgSU4g KCdBJyk7CitDUkVBVEUgVEFCTEUgdDIgKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBSQU5H RSAodCk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBv ZiByZWxhdGlvbiAidDIiCitBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRP CisgICAoUEFSVElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyksCisgICAg UEFSVElUSU9OIHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOworCitEUk9QIFRB QkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24g b2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0 YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhw YXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo Yy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3M6OnBnX2NhdGFsb2cudGV4dCBDT0xMQVRFICJDIjsKKworLS0gRVJST1I6ICBjYW5ub3Qg Y3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVs YXRpb24gInQiCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAo UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElP TiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCitBTFRFUiBUQUJMRSB0IFNQ TElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHBnX3RlbXAudHBfMF8xIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHBnX3RlbXAudHBfMV8yIEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworLS0gUGFydGl0aW9ucyBzaG91bGQgYmUgdGVt cG9yYXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVS RSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBP UkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAn REVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQgQ09M TEFURSAiQyI7CisKK0RST1AgVEFCTEUgdDsKKworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb25z IGluaGVyaXQgcGFyZW50J3MgdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1B UlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElU SU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFC TEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxU RVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8w XzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJP TSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8y JykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkg dGFibGVuYW1lIENPTExBVEUgIkMiLCB0YWJsZXNwYWNlIENPTExBVEUgIkMiOworU0VMRUNUIHRh YmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0 YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdw YXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUgQ09MTEFURSAiQyIs IGluZGV4bmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xMQVRFICJDIjsKK0RST1AgVEFC TEUgdDsKKworLS0gQ2hlY2sgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdHMgcGFyZW50J3MgdGFibGUg YWNjZXNzIG1ldGhvZAorQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXAg VFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JFQVRFIFRBQkxFIHQg KGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRpdGlvbl9zcGxpdF9oZWFw OworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQ QVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9O IHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBh LmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQK K1dIRVJFIGMub2lkIElOICgndCc6OnJlZ2NsYXNzLCAndHBfMF8xJzo6cmVnY2xhc3MsICd0cF8x XzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZSBDT0xMQVRFICJDIjsKK0RST1AgVEFC TEUgdDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKKworLS0gU3Bs aXQgcGFydGl0aW9uIG9mIGEgdGVtcG9yYXJ5IHRhYmxlIHdoZW4gb25lIG9mIHRoZSBwYXJ0aXRp b25zIGFmdGVyCistLSBzcGxpdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgcGFydGl0aW9uIGJl aW5nIHNwbGl0CitDUkVBVEUgVEVNUCBUQUJMRSB0IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdF IChhKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wIElOVE8K KyAgKFBBUlRJVElPTiBwZ190ZW1wLnRwXzAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisg ICBQQVJUSVRJT04gcGdfdGVtcC50cF8xIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK0RS T1AgVEFCTEUgdDsKKworLS0gQ2hlY2sgZGVmYXVsdHMgYW5kIGNvbnN0cmFpbnRzIG9mIG5ldyBw YXJ0aXRpb25zCitDUkVBVEUgVEFCTEUgdF9iaWdpbnQgKAorICBiIGJpZ2ludCwKKyAgaSBpbnQg REVGQVVMVCAoMysxMCksCisgIGogaW50IERFRkFVTFQgMTAxLAorICBrIGludCBHRU5FUkFURUQg QUxXQVlTIEFTIChiKzEwKSBTVE9SRUQKKykKK1BBUlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVB VEUgVEFCTEUgdF9iaWdpbnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsK Ky0tIFNob3cgZGVmYXVsdHMvY29uc3RyYWludHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQr IHRfYmlnaW50CitcZCsgdF9iaWdpbnRfZGVmYXVsdAorQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BM SVQgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50 XzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2lu dF9kZWZhdWx0IERFRkFVTFQpOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBT UExJVCBQQVJUSVRJT04KK1xkKyB0X2JpZ2ludF9kZWZhdWx0CitcZCsgdF9iaWdpbnRfMDFfMTAK K0RST1AgVEFCTEUgdF9iaWdpbnQ7CisKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUg dXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0aGUgcGFydGl0 aW9uIHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9i OworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKKworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJM RSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CisKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUg dCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsgLS1lcnJvcgorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitB TFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIg VEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpKTsgLS1lcnJvcgorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O OworCitBTFRFUiBUQUJMRSB0cF8wXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf Ym9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9i b2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElU SU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOyAtLW9rCitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CisKK0RST1AgVEFCTEUgdDsKKworLS0gVGVzdDogb3duZXIgb2YgbmV3IHBhcnRp dGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG93bmVyIG9mIHNwbGl0IHBhcnRpdGlvbgorQ1JF QVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworCitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRB QkxFIHRwXzBfMihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVS IFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo Mik7CisKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQg dHBfMF8yCisKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQ QVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9O IHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisKKy0tIE93bmVyIHNob3VsZCBi ZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMQorXGR0IHRwXzFf MgorCitEUk9QIFRBQkxFIHQ7CisKKy0tIFRlc3Q6IGluZGV4IG9mIG5ldyBwYXJ0aXRpb25zIHNo b3VsZCBiZSBjcmVhdGVkIHdpdGggc2FtZSBvd25lciBhcyBzcGxpdAorLS0gcGFydGl0aW9uCitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOwor Q1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRB QkxFIHRwXzEwXzIwIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7 CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTEpLCAoMTYpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gcnVuX21lKGludGVnZXIpIFJFVFVSTlMgaW50ZWdlciBBUyAkJAorQkVHSU4KKyAgUkFJ U0UgTk9USUNFICd5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgJScsIENVUlJFTlRfVVNFUjsKKyAgUkVU VVJOICQxOworRU5ECiskJCBMQU5HVUFHRSBQTFBHU1FMIElNTVVUQUJMRTsKKworLS0gT3duZXIg aXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0NSRUFURSBJTkRFWCBPTiB0IChy dW5fbWUoaSkpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCistLSBPd25lciBzaG91 bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzEwXzIwIElOVE8KKyAgKFBBUlRJVElPTiB0cF8xMF8xNSBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMTUpLAorICAgUEFSVElUSU9OIHRwXzE1XzIwIEZPUiBWQUxVRVMg RlJPTSAoMTUpIFRPICgyMCkpOworCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHJ1bl9t ZShpbnRlZ2VyKTsKKworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hF TUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Jv YjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CisKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0aW9u ZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0goaSk7CitD UkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAy LCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9u IG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMg V0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCksCisgICBQQVJUSVRJT04gdHAxXzIgRk9SIFZB TFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAyKSk7CisKKy0tIEVSUk9SOiAgbGlzdCBv ZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9ucwor QUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHAxIElOVE8KKyAgKFBBUlRJVElPTiB0cDFf MSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDApKTsKKworRFJPUCBUQUJM RSB0OworCisKKy0tIFRlc3QgZm9yIHNwbGl0IHBhcnRpdGlvbiBwcm9wZXJ0aWVzOgorLS0gKiBT VEFUSVNUSUNTIGlzIGVtcHR5CistLSAqIENPTU1FTlQgaXMgZW1wdHkKKy0tICogREVGQVVMVFMg YXJlIHRoZSBzYW1lIGFzIERFRkFVTFRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBTVE9S QUdFIGlzIHRoZSBzYW1lIGFzIFNUT1JBR0UgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIEdF TkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgYXJlIHRoZSBzYW1lIGFzIEdFTkVSQVRFRCBhbmQgQ09O U1RSQUlOVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFRSSUdHRVJTIGFyZSB0aGUgc2Ft ZSBhcyBUUklHR0VSUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKworQ1JFQVRFIFRBQkxFIHQKKyhp IGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6 IERFRkFVTFQgJ2RlZmF1bHRfdCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdB WVMgYXMgKCcyMDIyLTAxLTAxJykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7 CitDT01NRU5UIE9OIENPTFVNTiB0LmkgSVMgJ3QxLmknOworCitDUkVBVEUgVEFCTEUgdHBfeAor KGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90 cF94JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDIt MDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwX3ggRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF94LmkgSVMgJ3RwX3gu aSc7CisKK0NSRUFURSBTVEFUSVNUSUNTIHRfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZy b20gdDsKK0NSRUFURSBTVEFUSVNUSUNTIHRwX3hfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBi IGZyb20gdHBfeDsKKworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sgQ0hF Q0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVD SyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9i X2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNU UkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOworCitJTlNFUlQgSU5UTyB0cF94KGks IHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikg VkFMVUVTKDEsIERFRkFVTFQsIDIpOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmln Z2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUworJEJP RFkkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAl LCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xF VkVMOworICBSRVRVUk4gbmV3OworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiB0X2Jl Zm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVwor ICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dF UiB0cF94X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZP UiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF94Jyk7 CisKK1xkKyB0cF94CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF94IElOVE8KKyAg KFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJ T04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitcZCsgdHBfeAorCitJTlNFUlQg SU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xM QVRFICJDIiwgYjsKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlv bigpOworCisKKy0tIFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBj b2x1bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdh eXMgYXMgKHRhYmxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOwor QUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3 ODkpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CisKKy0tIFNob3VsZCBiZSAxIGJl Y2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBh cworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9N IHQgV0hFUkUgaSA9IDEpOworCistLSAidGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQg Y29sdW1uKSB3aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNvbXB1dGF0 aW9uIGhlcmUuCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAo UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElP TiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCistLSBTaG91bGQgYmUgMCBi ZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50 IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQg RlJPTSB0IFdIRVJFIGkgPSAxKTsKKworRFJPUCBUQUJMRSB0OworCisKK1JFU0VUIHNlYXJjaF9w YXRoOworCistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0RST1AgU0NI RU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRl eCA5ZGQ2NWIxMDI1NC4uMTYxY2JlYzQ2YWYgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBA IC0yODAwLDYgKzI4MDAsNyBAQCBTaW1wbGVTdGF0cwogU2ltcGxlU3RyaW5nTGlzdAogU2ltcGxl U3RyaW5nTGlzdENlbGwKIFNpbmdsZUJvdW5kU29ydEl0ZW0KK1NpbmdsZVBhcnRpdGlvblNwZWMK IFNpemUKIFNraXBQYWdlcwogU2tpcFN1cHBvcnQKQEAgLTI4NjgsNiArMjg2OSw3IEBAIFNwZWNp YWxKb2luSW5mbwogU3BpbkRlbGF5U3RhdHVzCiBTcGxpdEludGVydmFsCiBTcGxpdExSCitTcGxp dFBhcnRpdGlvbkNvbnRleHQKIFNwbGl0UGFnZUxheW91dAogU3BsaXRQb2ludAogU3BsaXRUZXh0 T3V0cHV0RGF0YQotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000bc62bc0645e72df5--