Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ubEkq-00FPWt-H7 for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Jul 2025 08:41:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ubEko-005ASm-K6 for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Jul 2025 08:41:43 +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.94.2) (envelope-from ) id 1ubEkn-005ASa-8K for pgsql-hackers@lists.postgresql.org; Mon, 14 Jul 2025 08:41:42 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1ubEkg-007Cmn-0n for pgsql-hackers@lists.postgresql.org; Mon, 14 Jul 2025 08:41:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1752482491; bh=xYb8lAmS1SIJSzXvH6r9v+LUZRsklBqmuqUOYh2pRZ0=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=Glj1J5sUKeCvcubvATWeU4EWFfeF6g32akqKT0GPJiHb15TkTe3zN78F9de/qSyGx 1wxGLsoxq+3COcQHb1Mkas98R1gUx0wsagjs4YVhNZubW3gRHvgKoJezVh571X3f6T DAv01kCQ9MHtQUWMtEG9p2v5C3bsrSqIk1ijrF7ii37Q3K3FZaXOHpse/EVIeU8ryM XeaX34POpGGhlxlS2l6JHb8RSCPZ1KAW8iMgVbouzscdh1UYTpDsN2h2lW9rSw9eEQ 6sizvZbhrYYHDbch8biGjdvd0i0SPQyt0vJuZ4W3OTC0hiafcDZaClMg3QCzauO6zJ AMJvPyIvZntMg== Received: from [172.30.51.114] (unknown [93.174.131.138]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.koval@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id CAC98601AB; Mon, 14 Jul 2025 11:41:30 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------XEAYgt3gS02JDDwnDECZzzia" Message-ID: <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> Date: Mon, 14 Jul 2025 11:41:30 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: jian he Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <9c1b75f1-5c40-4a86-9a61-a4b3f1d7ec60@postgrespro.ru> <7e1c67b8-ceba-4a04-964a-853eedeb02cc@postgrespro.ru> <0b3907b4-83b9-4873-9feb-2b60b29cda33@postgrespro.ru> <4f19550b-eb41-4649-8bf5-566dc020a720@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/07/14 08:32:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/07/14 07:50:00 #27639826 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------XEAYgt3gS02JDDwnDECZzzia Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! 1. >this comment seems wrong? >it should be "does this partitioned table (parent) have a default >partition? Agreed, this comment belongs to different code position. Corrected. 2. >This error message is not good, IMHO. I don't really have any good >ideas though. >if we polish this message later, now we can add a comment: "FIXME >improve this error message". Probably it won't be possible to make the error message correct for both MERGE PARTITIONS and SPLIT PARTITION. I split code for MERGE PARTITIONS and SPLIT PARTITION and now error messages are different for them. 3. >after createPartitionTable->heap_create_with_catalog do the error check >seems unintuitive to me. >it can be checked right after RangeVarGetAndCheckCreationNamespace. I agree that these error checks are unintuitive. But the createPartitionTable function, which contains checks, will be used in many places - not only for MERGE PARTITIONS, but also for SPLIT PARTITION. I think it's not a good idea to do the same checks in different places in code. Maybe it's better to do these checks in one place (even though it's unintuitive)? -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------XEAYgt3gS02JDDwnDECZzzia Content-Type: text/plain; charset=UTF-8; name="v50-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v50-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3MmE1OGUwYjRjZjk3YmFhMmUwZDQ3MjE3MjRmNTJlNTdjNmQ1MzhiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTAgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzLCBKaWFuIEhlCgpGaXhlcyAoc3Vt bWFyeSBpbmZvcm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVy IFdhbmcsIFJpY2hhcmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczog RnVqaWkgTWFzYW8sIEppYW4gSGUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwg Um9iZXJ0IEhhYXMsIEp1c3RpbiBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6 IE1hc2FoaWtvIFNhd2FkYQpSZXBvcnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGlu IFByeXpieSwgS3lvdGFybyBIb3JpZ3VjaGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZz c29uLCBUb20gTGFuZSwgTm9haCBNaXNjaAotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDExMyArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYyAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgOTA4ICsrKysrKysrKysr KystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAg IDIyICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAg fCAgMTQ5ICsrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAg ICAgIHwgIDE5NCArKysKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAg ICAgICAgICB8ICAgMTAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAg ICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgICA1ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAg ICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0 Ym91bmRzLmggICAgICAgICB8ICAgIDYgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0 aXRpb24tbWVyZ2Uub3V0ICAgIHwgIDE5OSArKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjIHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dCB8IDExMDUgKysrKysrKysrKysrKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIg Ky0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgICAgICB8ICA3 OTYgKysrKysrKysrKysrCiAyMSBmaWxlcyBjaGFuZ2VkLCAzNjE5IGluc2VydGlvbnMoKyks IDI2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0 CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21l cmdlLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMv c2dtbC9kZGwuc2dtbAppbmRleCA2NWJjMDcwZDJlLi5kZGIxMzc2YTZlIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBA IC00NDUwLDYgKzQ0NTAsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnRfeTIwMDZtMDIg QUREIFVOSVFVRSAoY2l0eV9pZCwgbG9nZGF0ZSk7CiBBTFRFUiBJTkRFWCBtZWFzdXJlbWVu dF9jaXR5X2lkX2xvZ2RhdGVfa2V5CiAgICAgQVRUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVu dF95MjAwNm0wMl9jaXR5X2lkX2xvZ2RhdGVfa2V5OwogLi4uCis8L3Byb2dyYW1saXN0aW5n PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGVyZSBpcyBhbHNvIGFuIG9w dGlvbiBmb3IgbWVyZ2luZyBtdWx0aXBsZSB0YWJsZSBwYXJ0aXRpb25zIGludG8KKyAgICAg YSBzaW5nbGUgcGFydGl0aW9uIHVzaW5nIHRoZQorICAgICA8bGluayBsaW5rZW5kPSJzcWwt YWx0ZXJ0YWJsZS1tZXJnZS1wYXJ0aXRpb25zIj48Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUzwvY29tbWFuZD48L2xpbms+LgorICAgICBUaGlzIGZlYXR1cmUg c2ltcGxpZmllcyB0aGUgbWFuYWdlbWVudCBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgYnkgYWxs b3dpbmcKKyAgICAgdXNlcnMgdG8gY29tYmluZSBwYXJ0aXRpb25zIHRoYXQgYXJlIG5vIGxv bmdlciBuZWVkZWQgYXMKKyAgICAgc2VwYXJhdGUgZW50aXRpZXMuICBJdCdzIGltcG9ydGFu dCB0byBub3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgbm90CisgICAgIHN1cHBvcnRlZCBm b3IgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGFjcXVpcmVzIGFuCisgICAgIDxsaXRl cmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2ssIHdoaWNoIGNvdWxkIGltcGFj dCBoaWdoLWxvYWQKKyAgICAgc3lzdGVtcyBkdWUgdG8gdGhlIGxvY2sncyByZXN0cmljdGl2 ZSBuYXR1cmUuICBGb3IgZXhhbXBsZSwgd2UgY2FuCisgICAgIG1lcmdlIHRocmVlIG1vbnRo bHkgcGFydGl0aW9ucyBpbnRvIG9uZSBxdWFydGVyIHBhcnRpdGlvbjoKKzxwcm9ncmFtbGlz dGluZz4KK0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50CisgICAgTUVSR0UgUEFSVElUSU9OUyAo bWVhc3VyZW1lbnRfeTIwMDZtMDEsCisgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1l bnRfeTIwMDZtMDIsCisgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRfeTIwMDZt MDMpIElOVE8gbWVhc3VyZW1lbnRfeTIwMDZxMTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAg PC9wYXJhPgogICAgPC9zZWN0Mz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRl eCAxZTRmMjZjMTNmLi5jOGY3ODRiY2JjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sCkBAIC0zNyw2ICszNyw4IEBAIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFUVEFD SCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9 CiBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBERVRBQ0ggUEFSVElUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsg Q09OQ1VSUkVOVExZIHwgRklOQUxJWkUgXQorQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CisgICAg TUVSR0UgUEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgog CiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY3Rpb248 L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTExNDcsMTQgKzExNDks MTAxIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u dW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJs ZS1tZXJnZS1wYXJ0aXRpb25zIj4KKyAgICA8dGVybT48bGl0ZXJhbD5NRVJHRSBQQVJUSVRJ T05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9y ZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVy bT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gbWVy Z2VzIHNldmVyYWwgcGFydGl0aW9ucyBvZiB0aGUgdGFyZ2V0IHRhYmxlIGludG8gYSBuZXcg cGFydGl0aW9uLgorICAgICAgSGFzaC1wYXJ0aXRpb25lZCB0YXJnZXQgdGFibGUgaXMgbm90 IHN1cHBvcnRlZC4KKyAgICAgIElmIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRp dGlvbiBpcyBub3QgaW4gdGhlCisgICAgICBsaXN0IG9mIHBhcnRpdGlvbnMgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAor ICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwv cmVwbGFjZWFibGU+IFssIC4uLl06CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgcmFuZ2UtcGFydGl0aW9u ZWQgdGFibGVzLCB0aGUgcmFuZ2VzIG9mIHRoZSBwYXJ0aXRpb25zCisgICAgICAgICA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJs ZT4sCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBtdXN0IGJlIGFkamFjZW50 IGluIG9yZGVyIHRvIGJlIG1lcmdlZC4gT3RoZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJlCisg ICAgICAgICByYWlzZWQuIFRoZSByZXN1bHRpbmcgY29tYmluZWQgcmFuZ2Ugd2lsbCBiZSB0 aGUgbmV3IHBhcnRpdGlvbiBib3VuZAorICAgICAgICAgZm9yIHRoZSBwYXJ0aXRpb24gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJs ZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgbGlzdC1wYXJ0aXRpb25lZCB0 YWJsZXMsIHRoZSBwYXJ0aXRpb24gYm91bmRzIG9mCisgICAgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAg ICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9y ZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBhcmUgY29tYmluZWQgdG8gZm9ybSB0aGUg bmV3IHBhcnRpdGlvbiBib3VuZCBmb3IKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICA8L3Bh cmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAg SWYgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIGlzIGluIHRoZSBsaXN0 IG9mIHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl06CisgICAgICA8 aXRlbWl6ZWRsaXN0PgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAg ICAgICBUaGUgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICB3aWxsIGJlIHRoZSBuZXcgPGxp dGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIG9mIHRoZSB0YXJnZXQgdGFibGUu CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgcGFydGl0aW9uIGJvdW5kIHNwZWNp ZmljYXRpb25zIGZvciBhbGwgcGFydGl0aW9ucy0KKyAgICAgICAgIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAg ICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3Jl cGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIGNhbiBiZSBhcmJpdHJhcnkuCisgICAgICAg IDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+Cisg ICAgICBUaGUgbmV3IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgY2FuIGhhdmUgdGhlIHNhbWUg bmFtZSBhcyBvbmUgb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLiBPbmx5IHNpbXBsZSwKKyAg ICAgIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb25zIGNhbiBiZSBtZXJnZWQuCisgICAgIDwv cGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJZiBtZXJnZWQgcGFydGl0aW9ucyBoYXZlIGRp ZmZlcmVudCBvd25lcnMsIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkLgorICAgICAgVGhl IG93bmVyIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucyB3aWxsIGJlIHRoZSBvd25lciBvZiB0 aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxp dHkgdG8gc2V0dXAgPGFjcm9ueW0+QUNMPC9hY3JvbnltPiBvbiB0aGUKKyAgICAgIG5ldyBw YXJ0aXRpb24uCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgaW5kZXhl cyBhbmQgaWRlbnRpdHkgYXJlIGNyZWF0ZWQgbGF0ZXIsIGFmdGVyIG1vdmluZyB0aGUgZGF0 YQorICAgICAgaW50byB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEV4dGVuZGVkIHN0YXRp c3RpY3MgYXJlbid0IGNvcGllZCBmcm9tIHRoZSBwYXJlbnQgdGFibGUsIGZvciBjb25zaXN0 ZW5jeSB3aXRoCisgICAgICA8Y29tbWFuZD5DUkVBVEUgVEFCTEUgUEFSVElUSU9OIE9GPC9j b21tYW5kPi4KKyAgICAgIFRoZSBuZXcgcGFydGl0aW9uIHdpbGwgaW5oZXJpdCB0aGUgc2Ft ZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0ZW5jZQorICAgICAgdHlwZSwgYW5kIHRh Ymxlc3BhY2UgYXMgdGhlIHBhcmVudCB0YWJsZS4KKyAgICAgPC9wYXJhPgorICAgICA8cGFy YT4KKyAgICAgIFdoZW4gcGFydGl0aW9ucyBhcmUgbWVyZ2VkLCBhbnkgaW5kaXZpZHVhbCBv YmplY3RzIGJlbG9uZ2luZyB0byB0aG9zZQorICAgICAgcGFydGl0aW9ucywgc3VjaCBhcyBj b25zdHJhaW50cyBvciBzdGF0aXN0aWNzIHdpbGwgYmUgZHJvcHBlZC4gVGhpcyBvY2N1cnMK KyAgICAgIGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUzwv Y29tbWFuZD4gdXNlcyB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmIGFzIHRoZQorICAg ICAgdGVtcGxhdGUgdG8gZGVmaW5lIHRoZXNlIG9iamVjdHMuCisgICAgIDwvcGFyYT4KKyAg ICAgPHBhcmE+CisgICAgICBJZiBtZXJnZWQgcGFydGl0aW9ucyBoYXZlIHNvbWUgb2JqZWN0 cyBkZXBlbmRlbnQgb24gdGhlbSwgdGhlIGNvbW1hbmQgY2FuCisgICAgICBub3QgYmUgZG9u ZSAoPGxpdGVyYWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaXMgbm90IHVzZWQsIGFuIGVycm9yIHdp bGwgYmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+CisgICAgIDxub3RlPgorICAgICAgPHBh cmE+CisgICAgICAgTWVyZ2luZyBwYXJ0aXRpb25zIGFjcXVpcmVzIGEgPGxpdGVyYWw+QUND RVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgorICAgICAgIHRoZSBwYXJlbnQgdGFi bGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRl cmFsPgorICAgICAgIGxvY2tzIG9uIHRoZSB0YWJsZXMgYmVpbmcgbWVyZ2VkIGFuZCBvbiB0 aGUgZGVmYXVsdCBwYXJ0aXRpb24gKGlmIGFueSkuCisgICAgICA8L3BhcmE+CisgICAgIDwv bm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgPC92YXJp YWJsZWxpc3Q+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KICAgIEFsbCB0aGUgZm9ybXMgb2Yg PGNvbW1hbmQ+QUxURVIgVEFCTEU8L2NvbW1hbmQ+IHRoYXQgYWN0IG9uIGEgc2luZ2xlIHRh YmxlLAogICAgZXhjZXB0IDxsaXRlcmFsPlJFTkFNRTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNF VCBTQ0hFTUE8L2xpdGVyYWw+LAotICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJVElPTjwvbGl0 ZXJhbD4sIGFuZAotICAgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4gY2Fu IGJlIGNvbWJpbmVkIGludG8KKyAgIDxsaXRlcmFsPkFUVEFDSCBQQVJUSVRJT048L2xpdGVy YWw+LCA8bGl0ZXJhbD5ERVRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwKKyAgIGFuZCA8bGl0 ZXJhbD5NRVJHRSBQQVJUSVRJT05TPC9saXRlcmFsPiBjYW4gYmUgY29tYmluZWQgaW50bwog ICAgYSBsaXN0IG9mIG11bHRpcGxlIGFsdGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG9nZXRo ZXIuICBGb3IgZXhhbXBsZSwgaXQKICAgIGlzIHBvc3NpYmxlIHRvIGFkZCBzZXZlcmFsIGNv bHVtbnMgYW5kL29yIGFsdGVyIHRoZSB0eXBlIG9mIHNldmVyYWwKICAgIGNvbHVtbnMgaW4g YSBzaW5nbGUgY29tbWFuZC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aXRoIGxh cmdlCkBAIC0xMzk3LDcgKzE0ODYsMTggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0K ICAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxw YXJhPgotICAgICAgICBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFzIGEgbmV3 IHBhcnRpdGlvbiBvciB0byBkZXRhY2ggZnJvbSB0aGlzIHRhYmxlLgorICAgICAgICBUaGUg bmFtZSBvZiB0aGUgdGFibGUgdG8gYXR0YWNoIGFzIGEgbmV3IHBhcnRpdGlvbiBvciB0byBk ZXRhY2ggZnJvbSB0aGlzIHRhYmxlLAorICAgICAgICBvciB0aGUgbmFtZSBvZiB0aGUgbmV3 IG1lcmdlZCBwYXJ0aXRpb24uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4K KyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFs dGVydGFibGUtcGFybXMtcGFydGl0aW9uLW5hbWUxIj4KKyAgICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG5hbWVzIG9mIHRoZSB0YWJsZXMgYmVpbmcgbWVy Z2VkIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9s aXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xODMwLDYgKzE5MzAsMTMgQEAg QUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVt ZW50X3kyMDE1bTEyOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+Cisg ICBUbyBtZXJnZSBzZXZlcmFsIHBhcnRpdGlvbnMgaW50byBvbmUgcGFydGl0aW9uIG9mIHRo ZSB0YXJnZXQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2Nl bnRyYWwpCisgICAgSU5UTyBzYWxlc19hbGw7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4K KwogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5j eS5jCmluZGV4IDdkZGVkNjM0ZWIuLjNkZDgxMTg4ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVw ZW5kZW5jeS5jCkBAIC0zMTksNiArMzE5LDU2IEBAIHBlcmZvcm1EZWxldGlvbihjb25zdCBP YmplY3RBZGRyZXNzICpvYmplY3QsCiAJdGFibGVfY2xvc2UoZGVwUmVsLCBSb3dFeGNsdXNp dmVMb2NrKTsKIH0KIAorLyoKKyAqIHBlcmZvcm1EZWxldGlvbkNoZWNrOiBDaGVjayB3aGV0 aGVyIGEgc3BlY2lmaWMgb2JqZWN0IGNhbiBiZSBzYWZlbHkgZGVsZXRlZC4KKyAqIFRoaXMg ZnVuY3Rpb24gZG9lcyBub3QgcGVyZm9ybSBhbnkgZGVsZXRpb247IGluc3RlYWQsIGl0IHJh aXNlcyBhbiBlcnJvcgorICogaWYgdGhlIG9iamVjdCBjYW5ub3QgYmUgZGVsZXRlZCBkdWUg dG8gZXhpc3RpbmcgZGVwZW5kZW5jaWVzLgorICoKKyAqIEl0IGNhbiBiZSB1c2VmdWwgd2hl biB5b3UgbmVlZCBkZWxldGUgc29tZSBvYmplY3RzIGxhdGVyLiAgU2VlIGNvbW1lbnRzIGlu CisgKiBwZXJmb3JtRGVsZXRpb24gdG9vLgorICogVGhlIGJlaGF2aW9yIG11c3Qgc3BlY2lm aWVkIGFzIERST1BfUkVTVFJJQ1QuCisgKi8KK3ZvaWQKK3BlcmZvcm1EZWxldGlvbkNoZWNr KGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKKwkJCQkJIERyb3BCZWhhdmlvciBiZWhh dmlvciwgaW50IGZsYWdzKQoreworCVJlbGF0aW9uCWRlcFJlbDsKKwlPYmplY3RBZGRyZXNz ZXMgKnRhcmdldE9iamVjdHM7CisKKwlBc3NlcnQoYmVoYXZpb3IgPT0gRFJPUF9SRVNUUklD VCk7CisKKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIFJvd0V4Y2x1 c2l2ZUxvY2spOworCisJQWNxdWlyZURlbGV0aW9uTG9jayhvYmplY3QsIDApOworCisJLyoK KwkgKiBDb25zdHJ1Y3QgYSBsaXN0IG9mIG9iamVjdHMgd2Ugd2FudCBkZWxldGUgbGF0ZXIg KGllLCB0aGUgZ2l2ZW4gb2JqZWN0IHBsdXMKKwkgKiBldmVyeXRoaW5nIGRpcmVjdGx5IG9y IGluZGlyZWN0bHkgZGVwZW5kZW50IG9uIGl0KS4KKwkgKi8KKwl0YXJnZXRPYmplY3RzID0g bmV3X29iamVjdF9hZGRyZXNzZXMoKTsKKworCWZpbmREZXBlbmRlbnRPYmplY3RzKG9iamVj dCwKKwkJCQkJCSBERVBGTEFHX09SSUdJTkFMLAorCQkJCQkJIGZsYWdzLAorCQkJCQkJIE5V TEwsCS8qIGVtcHR5IHN0YWNrICovCisJCQkJCQkgdGFyZ2V0T2JqZWN0cywKKwkJCQkJCSBO VUxMLAkvKiBubyBwZW5kaW5nT2JqZWN0cyAqLworCQkJCQkJICZkZXBSZWwpOworCisJLyoK KwkgKiBDaGVjayBpZiBkZWxldGlvbiBpcyBhbGxvd2VkLgorCSAqLworCXJlcG9ydERlcGVu ZGVudE9iamVjdHModGFyZ2V0T2JqZWN0cywKKwkJCQkJCSAgIGJlaGF2aW9yLAorCQkJCQkJ ICAgZmxhZ3MsCisJCQkJCQkgICBvYmplY3QpOworCisJLyogQW5kIGNsZWFuIHVwICovCisJ ZnJlZV9vYmplY3RfYWRkcmVzc2VzKHRhcmdldE9iamVjdHMpOworCisJdGFibGVfY2xvc2Uo ZGVwUmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIHBlcmZvcm1NdWx0aXBs ZURlbGV0aW9uczogU2ltaWxhciB0byBwZXJmb3JtRGVsZXRpb24sIGJ1dCBhY3Qgb24gbXVs dGlwbGUKICAqIG9iamVjdHMgYXQgb25jZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggZmQ2NTM3 NTY3ZS4uNzUxNGVhYjRjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFw LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTEwMiwxMSArMTAyLDEx IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFkZE5ld1JlbGF0aW9uVHlwZShjb25zdCBjaGFy ICp0eXBlTmFtZSwKIAkJCQkJCQkJCQlPaWQgbmV3X3Jvd190eXBlLAogCQkJCQkJCQkJCU9p ZCBuZXdfYXJyYXlfdHlwZSk7CiBzdGF0aWMgdm9pZCBSZWxhdGlvblJlbW92ZUluaGVyaXRh bmNlKE9pZCByZWxpZCk7CitzdGF0aWMgdm9pZCBTdG9yZUNvbnN0cmFpbnRzKFJlbGF0aW9u IHJlbCwgTGlzdCAqY29va2VkX2NvbnN0cmFpbnRzLAorCQkJCQkJCSBib29sIGlzX2ludGVy bmFsKTsKIHN0YXRpYyBPaWQJU3RvcmVSZWxDaGVjayhSZWxhdGlvbiByZWwsIGNvbnN0IGNo YXIgKmNjbmFtZSwgTm9kZSAqZXhwciwKIAkJCQkJCSAgYm9vbCBpc19lbmZvcmNlZCwgYm9v bCBpc192YWxpZGF0ZWQsIGJvb2wgaXNfbG9jYWwsCiAJCQkJCQkgIGludDE2IGluaGNvdW50 LCBib29sIGlzX25vX2luaGVyaXQsIGJvb2wgaXNfaW50ZXJuYWwpOwotc3RhdGljIHZvaWQg U3RvcmVDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIExpc3QgKmNvb2tlZF9jb25zdHJhaW50 cywKLQkJCQkJCQkgYm9vbCBpc19pbnRlcm5hbCk7CiBzdGF0aWMgYm9vbCBNZXJnZVdpdGhF eGlzdGluZ0NvbnN0cmFpbnQoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5v ZGUgKmV4cHIsCiAJCQkJCQkJCQkJYm9vbCBhbGxvd19tZXJnZSwgYm9vbCBpc19sb2NhbCwK IAkJCQkJCQkJCQlib29sIGlzX2VuZm9yY2VkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0 cmFpbnQuYwppbmRleCAyZDVhYzFlYTgxLi4xZjk0ODg3NmQ5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuYwpAQCAtODc1LDcgKzg3NSw3IEBAIFJlbGF0aW9uR2V0Tm90 TnVsbENvbnN0cmFpbnRzKE9pZCByZWxpZCwgYm9vbCBjb29rZWQsIGJvb2wgaW5jbHVkZV9u b2luaCkKIAkJCQkJCQkJCQkJCQkJCSBmYWxzZSkpKTsKIAkJCWNvbnN0ci0+aXNfZW5mb3Jj ZWQgPSB0cnVlOwogCQkJY29uc3RyLT5za2lwX3ZhbGlkYXRpb24gPSAhY29uRm9ybS0+Y29u dmFsaWRhdGVkOwotCQkJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQgPSB0cnVlOworCQkJY29u c3RyLT5pbml0aWFsbHlfdmFsaWQgPSBjb25Gb3JtLT5jb252YWxpZGF0ZWQ7CiAJCQljb25z dHItPmlzX25vX2luaGVyaXQgPSBjb25Gb3JtLT5jb25ub2luaGVyaXQ7CiAJCQlub3RudWxs cyA9IGxhcHBlbmQobm90bnVsbHMsIGNvbnN0cik7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKaW5kZXggY2I4MTE1MjBjMi4uNTBmZDdmYzkwNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKQEAgLTc0MCw2ICs3NDAsOCBAQCBzdGF0aWMgdm9pZCBBVERldGFj aENoZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIGNo YXIgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpj b21wcmVzc2lvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0 eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOwogCitzdGF0aWMgdm9pZCBBVEV4ZWNN ZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBS ZWxhdGlvbiByZWwsCisJCQkJCQkJCSAgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVV dGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlEZWZpbmVS ZWxhdGlvbgpAQCAtNDgzMyw2ICs0ODM1LDEwIEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwo TGlzdCAqY21kcykKIAkJCQljbWRfbG9ja21vZGUgPSBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxv Y2s7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCWNt ZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJCQkJYnJlYWs7CisKIAkJCWRl ZmF1bHQ6CQkJLyogb29wcyAqLwogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0 ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTUy NjgsNiArNTI3NCwxMSBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVs LCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAg bmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CisJCWNhc2Ug QVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5 cGUsIHJlbCwgQVRUX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCS8qIE5vIGNvbW1hbmQtc3Bl Y2lmaWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CisJCQlicmVh azsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7 CkBAIC01NjY0LDYgKzU2NzUsMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToK IAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZShyZWwsICgoUGFy dGl0aW9uQ21kICopIGNtZC0+ZGVmKS0+bmFtZSk7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9N ZXJnZVBhcnRpdGlvbnM6CisJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwg dGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAorCQkJCQkJCQkJICBjdXJfcGFzcywg Y29udGV4dCk7CisJCQlBc3NlcnQoY21kICE9IE5VTEwpOworCQkJQXNzZXJ0KHJlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJQVRFeGVj TWVyZ2VQYXJ0aXRpb25zKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRpb25DbWQgKikgY21k LT5kZWYsCisJCQkJCQkJCSAgY29udGV4dCk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoJCQkJ Lyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0 eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC02NzA0LDYgKzY3MjMs OCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBl KQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIjsKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0 aXRpb25GaW5hbGl6ZToKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJ WkUiOworCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCXJldHVybiAiTUVSR0UgUEFS VElUSU9OUyI7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlyZXR1cm4gIkFMVEVSIENP TFVNTiAuLi4gQUREIElERU5USVRZIjsKIAkJY2FzZSBBVF9TZXRJZGVudGl0eToKQEAgLTIw MTkzLDYgKzIwMjE0LDM3IEBAIFF1ZXVlUGFydGl0aW9uQ29uc3RyYWludFZhbGlkYXRpb24o TGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gc2NhbnJlbCwKIAl9CiB9CiAKKy8qCisgKiBhdHRh Y2hQYXJ0aXRpb25UYWJsZTogYXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0 aW9uZWQgdGFibGUKKyAqCisgKiB3cXVldWU6IHRoZSBBTFRFUiBUQUJMRSB3b3JrIHF1ZXVl OyBjYW4gYmUgTlVMTCB3aGVuIG5vdCBydW5uaW5nIGFzIHBhcnQKKyAqICAgb2YgYW4gQUxU RVIgVEFCTEUgc2VxdWVuY2UuCisgKiByZWw6IHBhcnRpdGlvbmVkIHJlbGF0aW9uOworICog YXR0YWNocmVsOiByZWxhdGlvbiBvZiBhdHRhY2hlZCBwYXJ0aXRpb247CisgKiBib3VuZDog Ym91bmRzIG9mIGF0dGFjaGVkIHJlbGF0aW9uLgorICovCitzdGF0aWMgdm9pZAorYXR0YWNo UGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBh dHRhY2hyZWwsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpCit7CisJLyogT0sgdG8gY3Jl YXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0aGVyZSAq LworCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKKworCS8qIFVw ZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCisJU3RvcmVQYXJ0aXRpb25Cb3VuZChhdHRh Y2hyZWwsIHJlbCwgYm91bmQpOworCisJLyogRW5zdXJlIHRoZXJlIGV4aXN0cyBhIGNvcnJl Y3Qgc2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8KKwlBdHRhY2hQYXJ0aXRp b25FbnN1cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworCisJLyogYW5kIHRy aWdnZXJzICovCisJQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0YWNocmVs KTsKKworCS8qCisJICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxsZWUg aXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAKKwkgKiBmb3IgcGhhc2UgMyBjb25zdHJh aW50IHZlcmlmaWNhdGlvbi4KKwkgKi8KKwlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyh3 cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKK30KKwogLyoKICAqIEFMVEVSIFRBQkxFIDxuYW1l PiBBVFRBQ0ggUEFSVElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gRk9SIFZBTFVFUwogICoKQEAg LTIwMzk0LDIzICsyMDQ0Niw4IEBAIEFURXhlY0F0dGFjaFBhcnRpdGlvbihMaXN0ICoqd3F1 ZXVlLCBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAogCWNoZWNrX25ld19wYXJ0 aXRpb25fYm91bmQoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXR0YWNocmVsKSwgcmVsLAog CQkJCQkJCSAgY21kLT5ib3VuZCwgcHN0YXRlKTsKIAotCS8qIE9LIHRvIGNyZWF0ZSBpbmhl cml0YW5jZS4gIFJlc3Qgb2YgdGhlIGNoZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8KLQlDcmVh dGVJbmhlcml0YW5jZShhdHRhY2hyZWwsIHJlbCwgdHJ1ZSk7Ci0KLQkvKiBVcGRhdGUgdGhl IHBnX2NsYXNzIGVudHJ5LiAqLwotCVN0b3JlUGFydGl0aW9uQm91bmQoYXR0YWNocmVsLCBy ZWwsIGNtZC0+Ym91bmQpOwotCi0JLyogRW5zdXJlIHRoZXJlIGV4aXN0cyBhIGNvcnJlY3Qg c2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8KLQlBdHRhY2hQYXJ0aXRpb25F bnN1cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOwotCi0JLyogYW5kIHRyaWdn ZXJzICovCi0JQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0YWNocmVsKTsK LQotCS8qCi0JICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxsZWUgaXMg cmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAKLQkgKiBmb3IgcGhhc2UgMyBjb25zdHJhaW50 IHZlcmlmaWNhdGlvbi4KLQkgKi8KLQlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyh3cXVl dWUsIHJlbCwgYXR0YWNocmVsKTsKKwkvKiBBdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRvIHRo ZSBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KKwlhdHRhY2hQYXJ0aXRpb25UYWJsZSh3cXVldWUs IHJlbCwgYXR0YWNocmVsLCBjbWQtPmJvdW5kKTsKIAogCS8qCiAJICogR2VuZXJhdGUgcGFy dGl0aW9uIGNvbnN0cmFpbnQgZnJvbSB0aGUgcGFydGl0aW9uIGJvdW5kIHNwZWNpZmljYXRp b24uCkBAIC0yMjA1NywzICsyMjA5NCw4NDAgQEAgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQg YXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKQogCiAJcmV0dXJuIGNzdG9yYWdl OwogfQorCisKKy8qCisgKiBidWlsZEV4cHJlc3Npb25FeGVjdXRpb25TdGF0ZXM6IGJ1aWxk IHRoZSBuZWVkZWQgZXhwcmVzc2lvbiBleGVjdXRpb24gc3RhdGVzCisgKiBmb3IgbmV3IHBh cnRpdGlvbiAobmV3UGFydFJlbCkgY2hlY2tzIGFuZCBpbml0aWFsaXplIGV4cHJlc3Npb25z IGZvcgorICogZ2VuZXJhdGVkIGNvbHVtbnMuIEFsbCBleHByZXNzaW9ucyBzaG91bGQgYmUg Y3JlYXRlZCBpbiAidGFiIgorICogKEFsdGVyZWRUYWJsZUluZm8gc3RydWN0dXJlKS4KKyAq Lworc3RhdGljIHZvaWQKK2J1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlcyhBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIG5ld1BhcnRSZWwsIEVTdGF0ZSAqZXN0YXRlKQor eworCS8qIEJ1aWxkIHRoZSBuZWVkZWQgZXhwcmVzc2lvbiBleGVjdXRpb24gc3RhdGVzLiAq LworCWZvcmVhY2hfcHRyKE5ld0NvbnN0cmFpbnQsIGNvbiwgdGFiLT5jb25zdHJhaW50cykK Kwl7CisJCXN3aXRjaCAoY29uLT5jb250eXBlKQorCQl7CisJCQljYXNlIENPTlNUUl9DSEVD SzoKKwkJCQljb24tPnF1YWxzdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBleHBh bmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcihjb24tPnF1YWwsIG5ld1BhcnRSZWwsIDEp LCBlc3RhdGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJfRk9SRUlHTjoKKwkJCQkv KiBOb3RoaW5nIHRvIGRvIGhlcmUuICovCisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUl9O T1ROVUxMOgorCQkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZS4gKi8KKwkJCQlicmVhazsKKwkJ CWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBjb25zdHJhaW50IHR5 cGU6ICVkIiwKKwkJCQkJIChpbnQpIGNvbi0+Y29udHlwZSk7CisJCX0KKwl9CisKKwlmb3Jl YWNoX3B0cihOZXdDb2x1bW5WYWx1ZSwgZXgsIHRhYi0+bmV3dmFscykKKwl7CisJCS8qIEV4 cHJlc3Npb24gYWxyZWFkeSBwbGFubmVkLiAqLworCQlleC0+ZXhwcnN0YXRlID0gRXhlY0lu aXRFeHByKChFeHByICopIGV4LT5leHByLCBOVUxMKTsKKwl9Cit9CisKKy8qCisgKiBldmFs dWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5kQ2hlY2tDb25zdHJhaW50czogZXZhbHVhdGUg YW55IGdlbmVyYXRlZAorICogZXhwcmVzc2lvbnMgZm9yICJ0YWIiIChBbHRlcmVkVGFibGVJ bmZvIHN0cnVjdHVyZSkgd2hvc2UgaW5wdXRzIGNvbWUgZnJvbQorICogdGhlIG5ldyB0dXBs ZSAoaW5zZXJ0c2xvdCkgb2YgbmV3IHBhcnRpdGlvbiAobmV3UGFydFJlbCkuCisgKi8KK3N0 YXRpYyB2b2lkCitldmFsdWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5kQ2hlY2tDb25zdHJh aW50cyhBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCQkJCQkJCQkJCQlSZWxhdGlvbiBuZXdQ YXJ0UmVsLAorCQkJCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKmluc2VydHNsb3QsCisJCQkJ CQkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJZWNvbnRleHQtPmVjeHRfc2Nh bnR1cGxlID0gaW5zZXJ0c2xvdDsKKworCWZvcmVhY2hfcHRyKE5ld0NvbHVtblZhbHVlLCBl eCwgdGFiLT5uZXd2YWxzKQorCXsKKwkJaWYgKCFleC0+aXNfZ2VuZXJhdGVkKQorCQkJY29u dGludWU7CisKKwkJaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlc1tleC0+YXR0bnVtIC0gMV0KKwkJ CT0gRXhlY0V2YWxFeHByKGV4LT5leHByc3RhdGUsCisJCQkJCQkJZWNvbnRleHQsCisJCQkJ CQkJJmluc2VydHNsb3QtPnR0c19pc251bGxbZXgtPmF0dG51bSAtIDFdKTsKKwl9CisKKwlm b3JlYWNoX3B0cihOZXdDb25zdHJhaW50LCBjb24sIHRhYi0+Y29uc3RyYWludHMpCisJewor CQlzd2l0Y2ggKGNvbi0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBDT05TVFJfQ0hFQ0s6CisJ CQkJaWYgKCFFeGVjQ2hlY2soY29uLT5xdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwK KwkJCQkJCQllcnJtc2coImNoZWNrIGNvbnN0cmFpbnQgXCIlc1wiIG9mIHJlbGF0aW9uIFwi JXNcIiBpcyB2aW9sYXRlZCBieSBzb21lIHJvdyIsCisJCQkJCQkJCSAgIGNvbi0+bmFtZSwg UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobmV3UGFydFJlbCkpLAorCQkJCQkJCWVycnRhYmxl Y29uc3RyYWludChuZXdQYXJ0UmVsLCBjb24tPm5hbWUpKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgQ09OU1RSX05PVE5VTEw6CisJCQljYXNlIENPTlNUUl9GT1JFSUdOOgorCQkJCS8qIE5v dGhpbmcgdG8gZG8gaGVyZSAqLworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIGNvbnN0cmFpbnQgdHlwZTogJWQiLAorCQkJCQkgKGlu dCkgY29uLT5jb250eXBlKTsKKwkJfQorCX0KK30KKworLyoKKyAqIGdldEF0dHJpYnV0ZXNM aXN0OiBidWlsZCBhIGxpc3Qgb2YgY29sdW1ucyAoQ29sdW1uRGVmKSBiYXNlZCBvbiBwYXJl bnRfcmVsCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldEF0dHJpYnV0ZXNMaXN0KFJlbGF0aW9u IHBhcmVudF9yZWwpCit7CisJQXR0ck51bWJlcglwYXJlbnRfYXR0bm87CisJVHVwbGVEZXNj CW1vZGVsRGVzYzsKKwlMaXN0CSAgICpjb2xMaXN0ID0gTklMOworCisJbW9kZWxEZXNjID0g UmVsYXRpb25HZXREZXNjcihwYXJlbnRfcmVsKTsKKworCWZvciAocGFyZW50X2F0dG5vID0g MTsgcGFyZW50X2F0dG5vIDw9IG1vZGVsRGVzYy0+bmF0dHM7CisJCSBwYXJlbnRfYXR0bm8r KykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIo bW9kZWxEZXNjLAorCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOworCQlDb2x1bW5E ZWYgICpkZWY7CisKKwkJLyogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50 LiAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKwor CQlkZWYgPSBtYWtlQ29sdW1uRGVmKE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwgYXR0 cmlidXRlLT5hdHR0eXBpZCwKKwkJCQkJCQlhdHRyaWJ1dGUtPmF0dHR5cG1vZCwgYXR0cmli dXRlLT5hdHRjb2xsYXRpb24pOworCisJCWRlZi0+aXNfbm90X251bGwgPSBhdHRyaWJ1dGUt PmF0dG5vdG51bGw7CisKKwkJLyogQ29weSBpZGVudGl0eSBmb3IgbmV3IHBhcnRpdGlvbi4g Ki8KKwkJZGVmLT5pZGVudGl0eSA9IGF0dHJpYnV0ZS0+YXR0aWRlbnRpdHk7CisKKwkJLyog QWRkIHRvIGNvbHVtbiBsaXN0ICovCisJCWNvbExpc3QgPSBsYXBwZW5kKGNvbExpc3QsIGRl Zik7CisKKwkJLyoKKwkJICogQWx0aG91Z2ggd2UgZG9uJ3QgdHJhbnNmZXIgdGhlIGNvbHVt bidzIGRlZmF1bHQvZ2VuZXJhdGlvbgorCQkgKiBleHByZXNzaW9uIG5vdywgd2UgbmVlZCB0 byBtYXJrIGl0IEdFTkVSQVRFRCBpZiBhcHByb3ByaWF0ZS4KKwkJICovCisJCWlmIChhdHRy aWJ1dGUtPmF0dGhhc2RlZiAmJiBhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCkKKwkJCWRlZi0+ Z2VuZXJhdGVkID0gYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQ7CisKKwkJZGVmLT5zdG9yYWdl ID0gYXR0cmlidXRlLT5hdHRzdG9yYWdlOworCisJCS8qIExpa2V3aXNlLCBjb3B5IGNvbXBy ZXNzaW9uIGlmIHJlcXVlc3RlZCAqLworCQlpZiAoQ29tcHJlc3Npb25NZXRob2RJc1ZhbGlk KGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKQorCQkJZGVmLT5jb21wcmVzc2lvbiA9CisJ CQkJcHN0cmR1cChHZXRDb21wcmVzc2lvbk1ldGhvZE5hbWUoYXR0cmlidXRlLT5hdHRjb21w cmVzc2lvbikpOworCQllbHNlCisJCQlkZWYtPmNvbXByZXNzaW9uID0gTlVMTDsKKwl9CisK KwlyZXR1cm4gY29sTGlzdDsKK30KKworCisvKgorICogY3JlYXRlVGFibGVDb25zdHJhaW50 czoKKyAqIGNyZWF0ZSBjaGVjayBjb25zdHJhaW50cywgZGVmYXVsdCB2YWx1ZXMgYW5kIGdl bmVyYXRlZCB2YWx1ZXMgZm9yIG5ld1JlbAorICogYmFzZWQgb24gcGFyZW50X3JlbC4gIHRh YiBpcyBwZW5kaW5nLXdvcmsgcXVldWUgZm9yIG5ld1JlbCwgd2UgbWF5IG5lZWQgaXQgaW4K KyAqIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLgorICovCitzdGF0aWMgdm9pZAorY3JlYXRl VGFibGVDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs CisJCQkJCSAgIFJlbGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9uIG5ld1JlbCkKK3sKKwlU dXBsZURlc2MJdHVwbGVEZXNjOworCVR1cGxlQ29uc3RyICpjb25zdHI7CisJQXR0ck1hcCAg ICAqYXR0bWFwOworCUF0dHJOdW1iZXIJcGFyZW50X2F0dG5vOworCWludAkJCWNjbnVtOwor CUxpc3QJICAgKkNvbnN0cmFpbnRzID0gTklMOworCUxpc3QJICAgKmNvb2tlZENvbnN0cmFp bnRzID0gTklMOworCisJdHVwbGVEZXNjID0gUmVsYXRpb25HZXREZXNjcihwYXJlbnRfcmVs KTsKKwljb25zdHIgPSB0dXBsZURlc2MtPmNvbnN0cjsKKworCWlmICghY29uc3RyKQorCQly ZXR1cm47CisKKwkvKgorCSAqIENvbnN0cnVjdCBhIG1hcCBmcm9tIHRoZSBwYXJlbnQgcmVs YXRpb24ncyBhdHRub3MgdG8gdGhlIGNoaWxkIHJlbCdzLgorCSAqIFRoaXMgcmUtY2hlY2tz IHR5cGUgbWF0Y2ggZXRjLCBhbHRob3VnaCBpdCBzaG91bGRuJ3QgYmUgcG9zc2libGUgdG8K KwkgKiBoYXZlIGEgZmFpbHVyZSBzaW5jZSBib3RoIHRhYmxlcyBhcmUgbG9ja2VkLgorCSAq LworCWF0dG1hcCA9IGJ1aWxkX2F0dHJtYXBfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKG5l d1JlbCksCisJCQkJCQkJCSAgIHR1cGxlRGVzYywKKwkJCQkJCQkJICAgZmFsc2UpOworCisJ LyogQ3ljbGUgZm9yIGRlZmF1bHQgdmFsdWVzLiAqLworCWZvciAocGFyZW50X2F0dG5vID0g MTsgcGFyZW50X2F0dG5vIDw9IHR1cGxlRGVzYy0+bmF0dHM7IHBhcmVudF9hdHRubysrKQor CXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0cih0dXBs ZURlc2MsCisJCQkJCQkJCQkJCQkJcGFyZW50X2F0dG5vIC0gMSk7CisKKwkJLyogSWdub3Jl IGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LiAqLworCQlpZiAoYXR0cmlidXRlLT5h dHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQkvKiBDb3B5IGRlZmF1bHQsIGlmIHBy ZXNlbnQgYW5kIGl0IHNob3VsZCBiZSBjb3BpZWQuICovCisJCWlmIChhdHRyaWJ1dGUtPmF0 dGhhc2RlZikKKwkJeworCQkJTm9kZQkgICAqdGhpc19kZWZhdWx0ID0gTlVMTDsKKwkJCWJv b2wJCWZvdW5kX3dob2xlX3JvdzsKKwkJCUF0dHJOdW1iZXIJbnVtOworCQkJTm9kZQkgICAq ZGVmOworCQkJTmV3Q29sdW1uVmFsdWUgKm5ld3ZhbDsKKworCQkJaWYgKGF0dHJpYnV0ZS0+ YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQl0aGlz X2RlZmF1bHQgPSBidWlsZF9nZW5lcmF0aW9uX2V4cHJlc3Npb24ocGFyZW50X3JlbCwgYXR0 cmlidXRlLT5hdHRudW0pOworCQkJZWxzZQorCQkJeworCQkJCXRoaXNfZGVmYXVsdCA9IFR1 cGxlRGVzY0dldERlZmF1bHQodHVwbGVEZXNjLCBhdHRyaWJ1dGUtPmF0dG51bSk7CisJCQkJ aWYgKHRoaXNfZGVmYXVsdCA9PSBOVUxMKQorCQkJCQllbG9nKEVSUk9SLCAiZGVmYXVsdCBl eHByZXNzaW9uIG5vdCBmb3VuZCBmb3IgYXR0cmlidXRlICVkIG9mIHJlbGF0aW9uIFwiJXNc IiIsCisJCQkJCQkgYXR0cmlidXRlLT5hdHRudW0sIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHBhcmVudF9yZWwpKTsKKwkJCX0KKworCQkJbnVtID0gYXR0bWFwLT5hdHRudW1zW3BhcmVu dF9hdHRubyAtIDFdOworCQkJZGVmID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyh0aGlzX2RlZmF1 bHQsIDEsIDAsIGF0dG1hcCwgSW52YWxpZE9pZCwgJmZvdW5kX3dob2xlX3Jvdyk7CisKKwkJ CS8qCisJCQkgKiBQcmV2ZW50IHRoaXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBmb3IgY29u c3RyYWludHMgYmVsb3cuIE5vdGUKKwkJCSAqIHRoYXQgZGVmYXVsdHMgY2Fubm90IGNvbnRh aW4gYW55IHZhcnMsIHNvIGl0J3MgT0sgdGhhdCB0aGUKKwkJCSAqIGVycm9yIG1lc3NhZ2Ug cmVmZXJzIHRvIGdlbmVyYXRlZCBjb2x1bW5zLgorCQkJICovCisJCQlpZiAoZm91bmRfd2hv bGVfcm93ICYmIGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkICE9ICdcMCcpCisJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCQkJZXJybXNnKCJjYW5ub3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVmZXJl bmNlIiksCisJCQkJCQllcnJkZXRhaWwoIkdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgY29s dW1uIFwiJXNcIiBjb250YWlucyBhIHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUgXCIl c1wiLiIsCisJCQkJCQkJCSBOYW1lU3RyKGF0dHJpYnV0ZS0+YXR0bmFtZSksCisJCQkJCQkJ CSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSkpOworCisJCQkvKiBBZGQg YSBwcmUtY29va2VkIGRlZmF1bHQgZXhwcmVzc2lvbi4gKi8KKwkJCVN0b3JlQXR0ckRlZmF1 bHQobmV3UmVsLCBudW0sIGRlZiwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBTdG9yZWQgZ2Vu ZXJhdGVkIGNvbHVtbiBleHByZXNzaW9ucyBpbiBwYXJlbnRfcmVsIG1pZ2h0IHJlZmVyZW5j ZQorCQkJICogdGFibGVvaWQuICBuZXdSZWwsIHBhcmVudF9yZWwgdGFibGVvaWQgY2xlYXIg aXMgbm90IHRoZSBzYW1lLiBJZgorCQkJICogc28sIHRoZXNlIHN0b3JlZCBnZW5lcmF0ZWQg Y29sdW1ucyByZXF1aXJlIHJlY29tcHV0YXRpb24gZm9yCisJCQkgKiBuZXdSZWwgd2l0aGlu IE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLgorCQkJICovCisJCQlpZiAoYXR0cmlidXRlLT5h dHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpCisJCQl7CisJCQkJ bmV3dmFsID0gKE5ld0NvbHVtblZhbHVlICopIHBhbGxvYzAoc2l6ZW9mKE5ld0NvbHVtblZh bHVlKSk7CisJCQkJbmV3dmFsLT5hdHRudW0gPSBudW07CisJCQkJbmV3dmFsLT5leHByID0g ZXhwcmVzc2lvbl9wbGFubmVyKChFeHByICopIGRlZik7CisJCQkJbmV3dmFsLT5pc19nZW5l cmF0ZWQgPSAoYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQgIT0gJ1wwJyk7CisJCQkJdGFiLT5u ZXd2YWxzID0gbGFwcGVuZCh0YWItPm5ld3ZhbHMsIG5ld3ZhbCk7CisJCQl9CisJCX0KKwl9 CisKKwkvKiBDeWNsZSBmb3IgQ0hFQ0sgY29uc3RyYWludHMuICovCisJZm9yIChjY251bSA9 IDA7IGNjbnVtIDwgY29uc3RyLT5udW1fY2hlY2s7IGNjbnVtKyspCisJeworCQljaGFyCSAg ICpjY25hbWUgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY25hbWU7CisJCWNoYXIJICAgKmNj YmluID0gY29uc3RyLT5jaGVja1tjY251bV0uY2NiaW47CisJCWJvb2wJCWNjZW5mb3JjZWQg PSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY2VuZm9yY2VkOworCQlib29sCQljY25vaW5oZXJp dCA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjbm9pbmhlcml0OworCQlib29sCQljY3ZhbGlk ID0gY29uc3RyLT5jaGVja1tjY251bV0uY2N2YWxpZDsKKwkJTm9kZQkgICAqY2NiaW5fbm9k ZTsKKwkJYm9vbAkJZm91bmRfd2hvbGVfcm93OworCQlDb25zdHJhaW50ICpjb25zdHI7CisK KwkJLyoKKwkJICogUGFydGl0aW9uZWQgdGFibGUgY2FuIG5vdCBoYXZlIE5PIElOSEVSSVQg Y2hlY2sgY29uc3RyYWludCAoc2VlCisJCSAqIFN0b3JlUmVsQ2hlY2sgZnVuY3Rpb24pLgor CQkgKi8KKwkJQXNzZXJ0KCFjY25vaW5oZXJpdCk7CisKKwkJY2NiaW5fbm9kZSA9IG1hcF92 YXJpYWJsZV9hdHRub3Moc3RyaW5nVG9Ob2RlKGNjYmluKSwKKwkJCQkJCQkJCQkgMSwgMCwK KwkJCQkJCQkJCQkgYXR0bWFwLAorCQkJCQkJCQkJCSBJbnZhbGlkT2lkLCAmZm91bmRfd2hv bGVfcm93KTsKKworCQkvKgorCQkgKiBXZSByZWplY3Qgd2hvbGUtcm93IHZhcmlhYmxlcyBi ZWNhdXNlIHRoZSB3aG9sZSBwb2ludCBvZiBMSUtFIGlzCisJCSAqIHRoYXQgdGhlIG5ldyB0 YWJsZSdzIHJvd3R5cGUgbWlnaHQgbGF0ZXIgZGl2ZXJnZSBmcm9tIHRoZSBwYXJlbnQncy4K KwkJICogU28sIHdoaWxlIHRyYW5zbGF0aW9uIG1pZ2h0IGJlIHBvc3NpYmxlIHJpZ2h0IG5v dywgaXQgd291bGRuJ3QgYmUKKwkJICogcG9zc2libGUgdG8gZ3VhcmFudGVlIGl0IHdvdWxk IHdvcmsgaW4gZnV0dXJlLgorCQkgKi8KKwkJaWYgKGZvdW5kX3dob2xlX3JvdykKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQllcnJtc2coImNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZl cmVuY2UiKSwKKwkJCQkJZXJyZGV0YWlsKCJDb25zdHJhaW50IFwiJXNcIiBjb250YWlucyBh IHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUgXCIlc1wiLiIsCisJCQkJCQkJICAgY2Nu YW1lLAorCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKSk7 CisKKwkJY29uc3RyID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CisJCWNvbnN0ci0+Y29udHlw ZSA9IENPTlNUUl9DSEVDSzsKKwkJY29uc3RyLT5jb25uYW1lID0gcHN0cmR1cChjY25hbWUp OworCQljb25zdHItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJY29uc3RyLT5pbml0ZGVmZXJy ZWQgPSBmYWxzZTsKKwkJY29uc3RyLT5pc19lbmZvcmNlZCA9IGNjZW5mb3JjZWQ7CisJCWNv bnN0ci0+c2tpcF92YWxpZGF0aW9uID0gIWNjdmFsaWQ7CisJCWNvbnN0ci0+aW5pdGlhbGx5 X3ZhbGlkID0gY2N2YWxpZDsKKwkJY29uc3RyLT5pc19ub19pbmhlcml0ID0gY2Nub2luaGVy aXQ7CisJCWNvbnN0ci0+cmF3X2V4cHIgPSBOVUxMOworCQljb25zdHItPmNvb2tlZF9leHBy ID0gbm9kZVRvU3RyaW5nKGNjYmluX25vZGUpOworCQljb25zdHItPmxvY2F0aW9uID0gLTE7 CisJCUNvbnN0cmFpbnRzID0gbGFwcGVuZChDb25zdHJhaW50cywgY29uc3RyKTsKKwl9CisK KwkvKiBpbnN0YWxsIGFsbCBDSEVDSyBjb25zdHJhaW50cy4gKi8KKwljb29rZWRDb25zdHJh aW50cyA9IEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMobmV3UmVsLCBOSUwsIENvbnN0cmFp bnRzLAorCQkJCQkJCQkJCQkJICBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7CisKKwkvKiBN YWtlIHRoZSBhZGRpdGlvbmFsIGNhdGFsb2cgY2hhbmdlcyB2aXNpYmxlICovCisJQ29tbWFu ZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCS8qCisJICogcGFyZW50X3JlbCBjaGVjayBjb25z dHJhaW50IGV4cHJlc3NzaW9uIG1heSByZWZlcmVuY2UgdGFibGVvaWQsIHNvIGxhdGVyCisJ ICogaW4gTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MsIHdlIG5lZWQgZXZ1bGF0ZSB0aGUgY2hl Y2sgY29uc3RyYWludCBhZ2FpbgorCSAqIGZvciB0aGUgbmV3UmVsLiBXZSBjYW4gY2hlY2sg d2VhdGhlciBjaGVjayBjb25zdHJhaW50IGNvbnRhaW4gdGFibGVvaWQKKwkgKiByZWZlcmVu Y2Ugb3Igbm90IHZpYSBwdWxsX3ZhcmF0dG5vcy4KKwkgKi8KKwlmb3JlYWNoX3B0cihDb29r ZWRDb25zdHJhaW50LCBjY29uLCBjb29rZWRDb25zdHJhaW50cykKKwl7CisJCWlmICghY2Nv bi0+c2tpcF92YWxpZGF0aW9uICYmIGNjb24tPmNvbnR5cGUgPT0gQ09OU1RSX0NIRUNLKQor CQl7CisJCQlOb2RlCQkqcXVhbDsKKwkJCUJpdG1hcHNldAkgICphdHRudW1zID0gTlVMTDsK KworCQkJcXVhbCA9IGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKGNjb24tPmV4 cHIsIG5ld1JlbCwgMSk7CisJCQlwdWxsX3ZhcmF0dG5vcyhxdWFsLCAxLCAmYXR0bnVtcyk7 CisKKwkJCS8qCisJCQkgKiBBZGQgY2hlY2sgb25seSBpZiBpdCBjb250YWlucyB0YWJsZW9p ZCAoVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIpLgorCQkJICovCisJCQlpZiAoYm1zX2lzX21l bWJlcihUYWJsZU9pZEF0dHJpYnV0ZU51bWJlciAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRy aWJ1dGVOdW1iZXIsCisJCQkJCQkJICBhdHRudW1zKSkKKwkJCXsKKwkJCQlOZXdDb25zdHJh aW50ICpuZXdjb247CisKKwkJCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxsb2Mw KHNpemVvZihOZXdDb25zdHJhaW50KSk7CisJCQkJbmV3Y29uLT5uYW1lID0gY2Nvbi0+bmFt ZTsKKwkJCQluZXdjb24tPmNvbnR5cGUgPSBjY29uLT5jb250eXBlOworCQkJCW5ld2Nvbi0+ cXVhbCA9IHF1YWw7CisKKwkJCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNv bnN0cmFpbnRzLCBuZXdjb24pOworCQkJfQorCQl9CisJfQorCisJLyogRG9uJ3QgbmVlZCB0 aGUgY29va2VkQ29uc3RyYWludHMgYW55IG1vcmUuICovCisJbGlzdF9mcmVlX2RlZXAoY29v a2VkQ29uc3RyYWludHMpOworCisJLyogUmVwcm9kdWNlIG5vdC1udWxsIGNvbnN0cmFpbnRz LiAqLworCWlmIChjb25zdHItPmhhc19ub3RfbnVsbCkKKwl7CisJCUxpc3QJICAgKm5uY29u c3RyYWludHM7CisKKwkJLyoKKwkJICogVGhlICJpbmNsdWRlX25vaW5oIiBhcmd1bWVudCBp cyBmYWxzZSBiZWNhdXNlIGEgcGFydGl0aW9uZWQgdGFibGUKKwkJICogY2Fubm90IGhhdmUg Tk8gSU5IRVJJVCBjb25zdHJhaW50LgorCQkgKi8KKwkJbm5jb25zdHJhaW50cyA9IFJlbGF0 aW9uR2V0Tm90TnVsbENvbnN0cmFpbnRzKFJlbGF0aW9uR2V0UmVsaWQocGFyZW50X3JlbCks CisJCQkJCQkJCQkJCQkJICBmYWxzZSwgZmFsc2UpOworCisJCUFzc2VydChsaXN0X2xlbmd0 aChubmNvbnN0cmFpbnRzKSA+IDApOworCisJCS8qCisJCSAqIFdlIGFscmVhZHkgc2V0IHBn X2F0dHJpYnV0ZS5hdHRub3RudWxsIGluIGNyZWF0ZVBhcnRpdGlvblRhYmxlLiBObworCQkg KiBuZWVkIGNhbGwgc2V0X2F0dG5vdG51bGwgYWdhaW4uCisJCSovCisJCUFkZFJlbGF0aW9u TmV3Q29uc3RyYWludHMobmV3UmVsLCBOSUwsIG5uY29uc3RyYWludHMsIGZhbHNlLCB0cnVl LCB0cnVlLCBOVUxMKTsKKwl9Cit9CisKKworLyoKKyAqIGNyZWF0ZVBhcnRpdGlvblRhYmxl OgorICoKKyAqIENyZWF0ZSBhIG5ldyBwYXJ0aXRpb24gKG5ld1BhcnROYW1lKSBmb3IgcGFy dGl0aW9uZWQgdGFibGUgKHBhcmVudF9yZWwpLgorICogb3duZXJJZCBpcyBkZXRlcm1pbmVk IGJ5IHRoZSBwYXJ0aXRpb24gb24gd2hpY2ggdGhlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQs CisgKiBzbyBpdCBpcyBwYXNzZWQgc2VwYXJhdGVseS4gIFRoZSBuZXcgcGFydGl0aW9uIHdp bGwgaW5oZXJpdCB0aGUgYWNjZXNzIG1ldGhvZAorICogYW5kIHBlcnNpc3RlbmNlIHR5cGUg ZnJvbSB0aGUgcGFyZW50IHRhYmxlLgorICoKKyAqIHJldHVybnMgdGhlIGNyZWF0ZWQgcmVs YXRpb24gKGxvY2tlZCBpbiBBY2Nlc3NFeGNsdXNpdmVMb2NrIG1vZGUpLgorICovCitzdGF0 aWMgUmVsYXRpb24KK2NyZWF0ZVBhcnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJhbmdl VmFyICpuZXdQYXJ0TmFtZSwKKwkJCQkJIFJlbGF0aW9uIHBhcmVudF9yZWwsIE9pZCBvd25l cklkKQoreworCVJlbGF0aW9uCW5ld1JlbDsKKwlPaWQJCQluZXdSZWxJZDsKKwlPaWQJCQll eGlzdGluZ1JlbGlkOworCVR1cGxlRGVzYwlkZXNjcmlwdG9yOworCUxpc3QJICAgKmNvbExp c3QgPSBOSUw7CisJT2lkCQkJcmVsYW1JZDsKKwlPaWQJCQluYW1lc3BhY2VJZDsKKwlBbHRl cmVkVGFibGVJbmZvICpuZXdfcGFydHJlbF90YWI7CisKKwkvKiBJZiBleGlzdGluZyByZWwg aXMgdGVtcCwgaXQgbXVzdCBiZWxvbmcgdG8gdGhpcyBzZXNzaW9uICovCisJaWYgKFJFTEFU SU9OX0lTX09USEVSX1RFTVAocGFyZW50X3JlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5v dCBjcmVhdGUgYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBvZiBhbm90aGVy IHNlc3Npb24iKSk7CisKKwkvKiBMb29rIHVwIGluaGVyaXRhbmNlIGFuY2VzdG9ycyBhbmQg Z2VuZXJhdGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWNvbExpc3QgPSBnZXRBdHRyaWJ1dGVz TGlzdChwYXJlbnRfcmVsKTsKKworCS8qIENyZWF0ZSBhIHR1cGxlIGRlc2NyaXB0b3IgZnJv bSB0aGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWRlc2NyaXB0b3IgPSBCdWlsZERlc2NGb3JS ZWxhdGlvbihjb2xMaXN0KTsKKworCS8qIExvb2sgdXAgdGhlIGFjY2VzcyBtZXRob2QgZm9y IG5ldyByZWxhdGlvbi4gKi8KKwlyZWxhbUlkID0gKHBhcmVudF9yZWwtPnJkX3JlbC0+cmVs YW0gIT0gSW52YWxpZE9pZCkgPyBwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbGFtIDogSEVBUF9U QUJMRV9BTV9PSUQ7CisKKwkvKiBMb29rIHVwIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggd2Ug YXJlIHN1cHBvc2VkIHRvIGNyZWF0ZSB0aGUgcmVsYXRpb24uICovCisJbmFtZXNwYWNlSWQg PQorCQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UobmV3UGFydE5hbWUs IE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCWlmIChPaWRJc1ZhbGlkKGV4aXN0aW5nUmVs aWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVf VEFCTEUpLAorCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwg bmV3UGFydE5hbWUtPnJlbG5hbWUpKTsKKworCS8qIENyZWF0ZSB0aGUgcmVsYXRpb24uICov CisJbmV3UmVsSWQgPSBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2cobmV3UGFydE5hbWUtPnJl bG5hbWUsCisJCQkJCQkJCQkJbmFtZXNwYWNlSWQsCisJCQkJCQkJCQkJcGFyZW50X3JlbC0+ cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJ CQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCW93bmVy SWQsCisJCQkJCQkJCQkJcmVsYW1JZCwKKwkJCQkJCQkJCQlkZXNjcmlwdG9yLAorCQkJCQkJ CQkJCU5JTCwKKwkJCQkJCQkJCQlSRUxLSU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJCW5ld1Bh cnROYW1lLT5yZWxwZXJzaXN0ZW5jZSwKKwkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJCQlm YWxzZSwKKwkJCQkJCQkJCQlPTkNPTU1JVF9OT09QLAorCQkJCQkJCQkJCShEYXR1bSkgMCwK KwkJCQkJCQkJCQl0cnVlLAorCQkJCQkJCQkJCWFsbG93U3lzdGVtVGFibGVNb2RzLAorCQkJ CQkJCQkJCXRydWUsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlOVUxMKTsK KworCS8qCisJICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0 aGUgbmV3bHktY3JlYXRlZCByZWxhdGlvbgorCSAqIHR1cGxlIHZpc2libGUgZm9yIG9wZW5p bmcuCisJICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCS8qCisJICogT3Bl biB0aGUgbmV3IHBhcnRpdGlvbiB3aXRoIG5vIGxvY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBo YXZlCisJICogQWNjZXNzRXhjbHVzaXZlTG9jayBwbGFjZWQgdGhlcmUgYWZ0ZXIgY3JlYXRp b24uCisJICovCisJbmV3UmVsID0gdGFibGVfb3BlbihuZXdSZWxJZCwgTm9Mb2NrKTsKKwor CS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIG5ld2x5IGNyZWF0ZWQg dGFibGUuICovCisJbmV3X3BhcnRyZWxfdGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwg bmV3UmVsKTsKKworCS8qCisJICogV2UgaW50ZW5kZWQgdG8gY3JlYXRlIHRoZSBwYXJ0aXRp b24gd2l0aCB0aGUgc2FtZSBwZXJzaXN0ZW5jZSBhcyB0aGUKKwkgKiBwYXJlbnQgdGFibGUs IGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHJlY2hlY2sgYmVjYXVzZSB0aGF0IG1pZ2h0IGJlCisJ ICogYWZmZWN0ZWQgYnkgdGhlIHNlYXJjaF9wYXRoLiAgSWYgdGhlIHBhcmVudCBpcyBwZXJt YW5lbnQsIHNvIG11c3QgYmUKKwkgKiBhbGwgb2YgaXRzIHBhcnRpdGlvbnMuCisJICovCisJ aWYgKHBhcmVudF9yZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVO Q0VfVEVNUCAmJgorCQluZXdSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVS U0lTVEVOQ0VfVEVNUCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVf V1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiY2Fubm90IGNyZWF0ZSBhIHRlbXBv cmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uIFwiJXNc IiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKSk7CisK KwkvKiBQZXJtYW5lbnQgcmVscyBjYW5ub3QgYmUgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8g dGVtcG9yYXJ5IHBhcmVudCAqLworCWlmIChuZXdSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVu Y2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQlwYXJlbnRfcmVsLT5yZF9yZWwtPnJl bHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1Is CisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2co ImNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRl bXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShwYXJlbnRfcmVsKSkpOworCisJLyogQ3JlYXRlIGNvbnN0cmFpbnRzLCBkZWZhdWx0 IHZhbHVlcyBhbmQgZ2VuZXJhdGVkIHZhbHVlcyAqLworCWNyZWF0ZVRhYmxlQ29uc3RyYWlu dHMod3F1ZXVlLCBuZXdfcGFydHJlbF90YWIsIHBhcmVudF9yZWwsIG5ld1JlbCk7CisKKwkv KgorCSAqIE5lZWQgdG8gY2FsbCBDb21tYW5kQ291bnRlckluY3JlbWVudCwgc28gZnJlc2gg cmVsY2FjaGUgZW50cnkgaGF2ZSBuZXdseQorCSAqIGluc3RhbGxlZCBjb25zdHJhaW50IGlu Zm8uCisJICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCXJldHVybiBuZXdS ZWw7Cit9CisKKy8qCisgKiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93czogc2NhbiBwYXJ0aXRp b25zIHRvIGJlIG1lcmdlZCAobWVyZ2luZ1BhcnRpdGlvbnMpCisgKiBvZiB0aGUgcGFydGl0 aW9uZWQgdGFibGUgYW5kIG1vdmUgcm93cyBpbnRvIHRoZSBuZXcgcGFydGl0aW9uCisgKiAo bmV3UGFydFJlbCkuIFdlIGFsc28gcmVldmF1bGF0ZSBjaGVjayBjb25zdHJhaW50cyBhZ2Fp bnN0IHRoZXNlIHJvd3MuCisgKi8KK3N0YXRpYyB2b2lkCitNZXJnZVBhcnRpdGlvbnNNb3Zl Um93cyhMaXN0ICoqd3F1ZXVlLCBMaXN0ICptZXJnaW5nUGFydGl0aW9ucywgUmVsYXRpb24g bmV3UGFydFJlbCkKK3sKKwlDb21tYW5kSWQJbXljaWQ7CisJRVN0YXRlCSAgICplc3RhdGU7 CisJRXhwckNvbnRleHQgKmVjb250ZXh0OworCUFsdGVyZWRUYWJsZUluZm8gKnRhYjsKKwlM aXN0Q2VsbCAgICpsdGFiOworCisJLyogVGhlIEZTTSBpcyBlbXB0eSwgc28gZG9uJ3QgYm90 aGVyIHVzaW5nIGl0LiAqLworCWludAkJCXRpX29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJ UF9GU007CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIHN0YXRlIG9mIGJ1bGsgaW5z ZXJ0cyBmb3IgcGFydGl0aW9uICovCisJVHVwbGVUYWJsZVNsb3QgKmRzdHNsb3Q7CisKKwkv KiBGaW5kIHRoZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciBuZXcgcGFydGl0aW9uIHRhYmxlOiBu ZXdQYXJ0UmVsLiAqLworCXRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIG5ld1BhcnRS ZWwpOworCisJLyogR2VuZXJhdGUgdGhlIGNvbnN0cmFpbnQgYW5kIGRlZmF1bHQgZXhlY3V0 aW9uIHN0YXRlcy4gKi8KKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisKKwli dWlsZEV4cHJlc3Npb25FeGVjdXRpb25TdGF0ZXModGFiLCBuZXdQYXJ0UmVsLCBlc3RhdGUp OworCisJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisKKwlt eWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7CisKKwkvKiBQcmVwYXJlIGEgQnVs a0luc2VydFN0YXRlIGZvciB0YWJsZV90dXBsZV9pbnNlcnQuICovCisJYmlzdGF0ZSA9IEdl dEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIG5lY2Vzc2FyeSB0dXBsZSBzbG90 LiAqLworCWRzdHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShuZXdQYXJ0UmVsLCBOVUxMKTsK KworCWZvcmVhY2hfb2lkKG1lcmdpbmdfb2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJ CVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCQlUdXBsZUNvbnZlcnNpb25NYXAgKnR1cGxl X21hcDsKKwkJVGFibGVTY2FuRGVzYyBzY2FuOworCQlTbmFwc2hvdAlzbmFwc2hvdDsKKwkJ UmVsYXRpb24gCW1lcmdpbmdQYXJ0aXRpb247CisKKwkJLyoKKwkJICogUGFydGl0aW9uIGlz IGFscmVhZHkgbG9ja2VkIGluIHRoZSB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZQor CQkgKiBmdW5jdGlvbi4KKwkJICovCisJCW1lcmdpbmdQYXJ0aXRpb24gPSB0YWJsZV9vcGVu KG1lcmdpbmdfb2lkLCBOb0xvY2spOworCisJCS8qIENyZWF0ZSB0dXBsZSBzbG90IGZvciBu ZXcgcGFydGl0aW9uLiAqLworCQlzcmNzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUobWVyZ2lu Z1BhcnRpdGlvbiwgTlVMTCk7CisKKwkJLyoKKwkJICogTWFwIGNvbXB1dGluZyBmb3IgbW92 aW5nIGF0dHJpYnV0ZXMgb2YgbWVyZ2VkIHBhcnRpdGlvbiB0byBuZXcKKwkJICogcGFydGl0 aW9uLgorCQkgKi8KKwkJdHVwbGVfbWFwID0gY29udmVydF90dXBsZXNfYnlfbmFtZShSZWxh dGlvbkdldERlc2NyKG1lcmdpbmdQYXJ0aXRpb24pLAorCQkJCQkJCQkJCSAgIFJlbGF0aW9u R2V0RGVzY3IobmV3UGFydFJlbCkpOworCisJCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4g Ki8KKwkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkp OworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBzaG90 LCAwLCBOVUxMKTsKKworCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJCXsKKwkJCVR1cGxlVGFibGVTbG90 ICppbnNlcnRzbG90OworCisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCQlpZiAo dHVwbGVfbWFwKQorCQkJeworCQkJCS8qIE5lZWQgdG8gdXNlIG1hcCB0byBjb3B5IGF0dHJp YnV0ZXMuICovCisJCQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBs ZV9tYXAtPmF0dHJNYXAsIHNyY3Nsb3QsIGRzdHNsb3QpOworCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCXNsb3RfZ2V0YWxsYXR0cnMoc3Jjc2xvdCk7CisKKwkJCQkvKiBDb3B5IGF0dHJp YnV0ZXMgZGlyZWN0bHkuICovCisJCQkJaW5zZXJ0c2xvdCA9IGRzdHNsb3Q7CisKKwkJCQlF eGVjQ2xlYXJUdXBsZShpbnNlcnRzbG90KTsKKworCQkJCW1lbWNweShpbnNlcnRzbG90LT50 dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAorCQkJCQkgICBzaXplb2YoRGF0dW0p ICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c19p c251bGwsIHNyY3Nsb3QtPnR0c19pc251bGwsCisJCQkJCSAgIHNpemVvZihib29sKSAqIHNy Y3Nsb3QtPnR0c19udmFsaWQpOworCisJCQkJRXhlY1N0b3JlVmlydHVhbFR1cGxlKGluc2Vy dHNsb3QpOworCQkJfQorCisJCQkvKgorCQkJICogQ29uc3RyYWludHMgYW5kIEdFTkVSQVRF RCBleHByZXNzaW9ucyBtaWdodCByZWZlcmVuY2UgdGhlCisJCQkgKiB0YWJsZW9pZCBjb2x1 bW4sIHNvIGZpbGwgdHRzX3RhYmxlT2lkIHdpdGggdGhlIGRlc2lyZWQKKwkJCSAqIHZhbHVl LiAgKFdlIG11c3QgZG8gdGhpcyBlYWNoIHRpbWUsIGJlY2F1c2UgaXQgZ2V0cworCQkJICog b3ZlcndyaXR0ZW4gd2l0aCBuZXdyZWwncyBPSUQgZHVyaW5nIHN0b3JpbmcuKQorCQkJICov CisJCQlpbnNlcnRzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKG5ld1Bh cnRSZWwpOworCisJCQkvKgorCQkJICogTm93LCBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkIGV4 cHJlc3Npb25zIHdob3NlIGlucHV0cyBjb21lIGZyb20KKwkJCSAqIHRoZSBuZXcgdHVwbGUu ICBXZSBhc3N1bWUgdGhlc2UgY29sdW1ucyB3b24ndCByZWZlcmVuY2UgZWFjaAorCQkJICog b3RoZXIsIHNvIHRoYXQgdGhlcmUncyBubyBvcmRlcmluZyBkZXBlbmRlbmN5LgorCQkJICov CisJCQlldmFsdWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5kQ2hlY2tDb25zdHJhaW50cyh0 YWIsIG5ld1BhcnRSZWwsCisJCQkJCQkJCQkJCQkJCQlpbnNlcnRzbG90LCBlY29udGV4dCk7 CisKKwkJCS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5ldyByZWxhdGlvbi4gKi8K KwkJCXRhYmxlX3R1cGxlX2luc2VydChuZXdQYXJ0UmVsLCBpbnNlcnRzbG90LCBteWNpZCwK KwkJCQkJCQkgICB0aV9vcHRpb25zLCBiaXN0YXRlKTsKKworCQkJUmVzZXRFeHByQ29udGV4 dChlY29udGV4dCk7CisJCX0KKworCQl0YWJsZV9lbmRzY2FuKHNjYW4pOworCQlVbnJlZ2lz dGVyU25hcHNob3Qoc25hcHNob3QpOworCisJCWlmICh0dXBsZV9tYXApCisJCQlmcmVlX2Nv bnZlcnNpb25fbWFwKHR1cGxlX21hcCk7CisKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxl U2xvdChzcmNzbG90KTsKKwkJdGFibGVfY2xvc2UobWVyZ2luZ1BhcnRpdGlvbiwgTm9Mb2Nr KTsKKwl9CisKKwlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCUV4ZWNEcm9wU2luZ2xl VHVwbGVUYWJsZVNsb3QoZHN0c2xvdCk7CisJRnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRl KTsKKworCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydChuZXdQYXJ0UmVsLCB0aV9vcHRpb25z KTsKKworCS8qCisJICogV2UgZG9uJ3QgbmVlZCBwcm9jZXNzIHRoaXMgbmV3UGFydFJlbCBz aW5jZSB3ZSBhbHJlYWR5IHByb2Nlc3NlZCBpbiBoZXJlLAorCSAqIHNvIGRlbGV0ZSB0aGUg QUxURVIgVEFCTEUgcXVldWUgb2YgaXQuCisJICovCisJZm9yZWFjaChsdGFiLCAqd3F1ZXVl KQorCXsKKwkJdGFiID0gKEFsdGVyZWRUYWJsZUluZm8gKikgbGZpcnN0KGx0YWIpOworCQlp ZiAodGFiLT5yZWxpZCA9PSBSZWxhdGlvbkdldFJlbGlkKG5ld1BhcnRSZWwpKQorCQkJKndx dWV1ZSA9IGxpc3RfZGVsZXRlX2NlbGwoKndxdWV1ZSwgbHRhYik7CisJfQorfQorCisvKgor ICogZGV0YWNoUGFydGl0aW9uVGFibGU6IGRldGFjaCBwYXJ0aXRpb24gImNoaWxkX3JlbCIg ZnJvbSBwYXJ0aXRpb25lZCB0YWJsZQorICogInBhcmVudF9yZWwiIHdpdGggZGVmYXVsdCBw YXJ0aXRpb24gaWRlbnRpZmllciAiZGVmYXVsdFBhcnRPaWQiCisgKi8KK3N0YXRpYyB2b2lk CitkZXRhY2hQYXJ0aXRpb25UYWJsZShSZWxhdGlvbiBwYXJlbnRfcmVsLCBSZWxhdGlvbiBj aGlsZF9yZWwsIE9pZCBkZWZhdWx0UGFydE9pZCkKK3sKKwkvKiBSZW1vdmUgdGhlIHBnX2lu aGVyaXRzIHJvdyBmaXJzdC4gKi8KKwlSZW1vdmVJbmhlcml0YW5jZShjaGlsZF9yZWwsIHBh cmVudF9yZWwsIGZhbHNlKTsKKworCS8qCisJICogRGV0YWNoaW5nIHRoZSBwYXJ0aXRpb24g bWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCSAqIGhh dmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJh bnNhY3Rpb25TbmFwc2hvdCgpKTsKKworCS8qIERvIHRoZSBmaW5hbCBwYXJ0IG9mIGRldGFj aGluZy4gKi8KKwlEZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZShwYXJlbnRfcmVsLCBjaGlsZF9y ZWwsIGZhbHNlLCBkZWZhdWx0UGFydE9pZCk7CisKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwor fQorCisvKgorICogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgPHBhcnRp dGlvbi1saXN0PiBJTlRPIDxwYXJ0aXRpb24tbmFtZT4KKyAqLworc3RhdGljIHZvaWQKK0FU RXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJs ZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJlbGF0aW9uCW5ld1BhcnRSZWw7CisJ TGlzdAkgICAqbWVyZ2luZ1BhcnRpdGlvbnMgPSBOSUw7CisJT2lkCQkJZGVmYXVsdFBhcnRP aWQ7CisJT2lkCQkJZXhpc3RpbmdSZWxpZDsKKwlPaWQJCQlvd25lcklkID0gSW52YWxpZE9p ZDsKKwlPaWQJCQlzYXZlX3VzZXJpZDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0OworCWlu dAkJCXNhdmVfbmVzdGxldmVsOworCisJLyoKKwkgKiBDaGVjayBvd25lcnNoaXAgb2YgbWVy Z2VkIHBhcnRpdGlvbnMg4oCUIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgb3duZXJzCisJ ICogY2Fubm90IGJlIG1lcmdlZC4gQWxzbywgY29sbGVjdCB0aGUgT0lEcyBvZiB0aGVzZSBw YXJ0aXRpb25zIGR1cmluZyB0aGUKKwkgKiBjaGVjay4KKwkqLworCWZvcmVhY2hfbm9kZShS YW5nZVZhciwgbmFtZSwgY21kLT5wYXJ0bGlzdCkKKwl7CisJCVJlbGF0aW9uCW1lcmdpbmdQ YXJ0aXRpb247CisKKwkJLyoKKwkJICogV2UgYXJlIGdvaW5nIHRvIGRldGFjaCBhbmQgcmVt b3ZlIHRoaXMgcGFydGl0aW9uLiAgV2UgYWxyZWFkeSB0b29rCisJCSAqIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2sgbG9jayBvbiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSwgc28gaGVy ZSwKKwkJICogTm9Mb2NrIGlzIGZpbmUuCisJCSAqLworCQltZXJnaW5nUGFydGl0aW9uID0g dGFibGVfb3BlbnJ2X2V4dGVuZGVkKG5hbWUsIE5vTG9jaywgZmFsc2UpOworCQlBc3NlcnQo Q2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUobWVyZ2luZ1BhcnRpdGlvbiwgQWNjZXNzRXhjbHVz aXZlTG9jaywgZmFsc2UpKTsKKworCQlpZiAoT2lkSXNWYWxpZChvd25lcklkKSkKKwkJewor CQkJLyogRG8gdGhlIHBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93 bmVycz8gKi8KKwkJCWlmIChvd25lcklkICE9IG1lcmdpbmdQYXJ0aXRpb24tPnJkX3JlbC0+ cmVsb3duZXIpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJwYXJ0aXRpb25zIGJlaW5n IG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMiKSk7CisJCX0KKwkJZWxzZQorCQkJb3du ZXJJZCA9IG1lcmdpbmdQYXJ0aXRpb24tPnJkX3JlbC0+cmVsb3duZXI7CisKKwkJLyogU3Rv cmUgYSBuZXh0IG1lcmdpbmcgcGFydGl0aW9uIGludG8gdGhlIGxpc3QuICovCisJCW1lcmdp bmdQYXJ0aXRpb25zID0gbGFwcGVuZF9vaWQobWVyZ2luZ1BhcnRpdGlvbnMsCisJCQkJCQkJ CQkJUmVsYXRpb25HZXRSZWxpZChtZXJnaW5nUGFydGl0aW9uKSk7CisKKwkJdGFibGVfY2xv c2UobWVyZ2luZ1BhcnRpdGlvbiwgTm9Mb2NrKTsKKwl9CisKKwkvKgorCSAqIExvb2sgdXAg ZXhpc3RpbmcgcmVsYXRpb24gYnkgbmV3IHBhcnRpdGlvbiBuYW1lLCBjaGVjayB3ZSBoYXZl CisJICogcGVybWlzc2lvbiB0byBjcmVhdGUgdGhlcmUsIGxvY2sgaXQgYWdhaW5zdCBjb25j dXJyZW50IGRyb3AsIGFuZCBtYXJrCisJICogc3RtdC0+cmVsYXRpb24gYXMgUkVMUEVSU0lT VEVOQ0VfVEVNUCBpZiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgaXMKKwkgKiBzZWxlY3RlZC4K KwkgKi8KKwljbWQtPm5hbWUtPnJlbHBlcnNpc3RlbmNlID0gcmVsLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlOworCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShjbWQt Pm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJLyoKKwkgKiBDaGVjayBpZiB0 aGlzIG5hbWUgaXMgYWxyZWFkeSB0YWtlbi4gIFRoaXMgaGVscHMgdXMgdG8gZGV0ZWN0IHRo ZQorCSAqIHNpdHVhdGlvbiB3aGVuIG9uZSBvZiB0aGUgbWVyZ2luZyBwYXJ0aXRpb25zIGhh cyB0aGUgc2FtZSBuYW1lIGFzIHRoZQorCSAqIG5ldyBwYXJ0aXRpb24uICBPdGhlcndpc2Us IHRoaXMgd291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgYnV0IGNhdGNoaW5nCisJICogdGhp cyBoZXJlIGFsbG93cyB1cyB0byBlbWl0IGEgbmljZXIgZXJyb3IgbWVzc2FnZS4KKwkgKi8K KwlpZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlkKSkKKwl7CisJCU9pZAkJbmV3UGFydGl0 aW9uT2lkID0gSW52YWxpZE9pZDsKKworCQlmb3JlYWNoX29pZChtZXJnaW5nUGFydGl0aW9u T2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwkJeworCQkJaWYgKG1lcmdpbmdQYXJ0aXRpb25P aWQgPT0gZXhpc3RpbmdSZWxpZCkKKwkJCXsKKwkJCQluZXdQYXJ0aXRpb25PaWQgPSBtZXJn aW5nUGFydGl0aW9uT2lkOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJaWYgKE9pZElz VmFsaWQobmV3UGFydGl0aW9uT2lkKSkKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBuZXcgcGFy dGl0aW9uIGhhcyB0aGUgc2FtZSBuYW1lIGFzIG9uZSBvZiBtZXJnaW5nCisJCQkgKiBwYXJ0 aXRpb25zLgorCQkJICovCisJCQljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKwor CQkJLyogR2VuZXJhdGUgdGVtcG9yYXJ5IG5hbWUuICovCisJCQlzcHJpbnRmKHRtcFJlbE5h bWUsICJtZXJnZS0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJvY1Bp ZCk7CisKKwkJCS8qCisJCQkgKiBSZW5hbWUgdGhlIGV4aXN0aW5nIHBhcnRpdGlvbiB3aXRo IGEgdGVtcG9yYXJ5IG5hbWUsIGxlYXZpbmcgaXQKKwkJCSAqIGZyZWUgZm9yIHRoZSBuZXcg cGFydGl0aW9uLiAgV2UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHRoaXMKKwkJCSAqIGlu IHRoZSBmdXR1cmUgYmVjYXVzZSB3ZSdyZSBnb2luZyB0byBldmVudHVhbGx5IGRyb3AgdGhl CisJCQkgKiBleGlzdGluZyBwYXJ0aXRpb24gYW55d2F5LgorCQkJICovCisJCQlSZW5hbWVS ZWxhdGlvbkludGVybmFsKG5ld1BhcnRpdGlvbk9pZCwgdG1wUmVsTmFtZSwgdHJ1ZSwgZmFs c2UpOworCisJCQkvKgorCQkJICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIg dG8gbWFrZSB0aGUgbmV3IHBhcnRpdGlvbgorCQkJICogdHVwbGUgdmlzaWJsZSBmb3IgcmVu YW1lLgorCQkJICovCisJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQl9CisJCWVs c2UKKwkJeworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJ Q0FURV9UQUJMRSksCisJCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhp c3RzIiwgY21kLT5uYW1lLT5yZWxuYW1lKSk7CisJCX0KKwl9CisKKwlkZWZhdWx0UGFydE9p ZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0 aW9uRGVzYyhyZWwsIHRydWUpKTsKKworCS8qIERldGFjaCBhbGwgbWVyZ2VkIHBhcnRpdGlv bnMgKi8KKwlmb3JlYWNoX29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0 aW9ucykKKwl7CisJCVJlbGF0aW9uCWNoaWxkX3JlbDsKKworCQljaGlsZF9yZWwgPSB0YWJs ZV9vcGVuKG1lcmdpbmdQYXJ0aXRpb25PaWQsIE5vTG9jayk7CisKKwkJZGV0YWNoUGFydGl0 aW9uVGFibGUocmVsLCBjaGlsZF9yZWwsIGRlZmF1bHRQYXJ0T2lkKTsKKworCQl0YWJsZV9j bG9zZShjaGlsZF9yZWwsIE5vTG9jayk7CisJfQorCisJLyoKKwkgKiBQZXJmb3JtIGEgcHJl bGltaW5hcnkgY2hlY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBzYWZlIHRvIGRyb3Ag YWxsCisJICogbWVyZ2luZyBwYXJ0aXRpb25zIGJlZm9yZSB3ZSBhY3R1YWxseSBkbyBzbyBs YXRlci4gQWZ0ZXIgbWVyZ2luZyByb3dzCisJICogaW50byB0aGUgbmV3IHBhcnRpdGlvbnMg dmlhIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLCBhbGwgb2xkIHBhcnRpdGlvbnMKKwkgKiBu ZWVkIGJlIGRyb3BwZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9wIGJlaGF2aW9yIGlzIERS T1BfUkVTVFJJQ1QgYW5kCisJICogdGhlIG1lcmdlIHByb2Nlc3MgKE1lcmdlUGFydGl0aW9u c01vdmVSb3dzKSBjYW4gYmUgdGltZS1jb25zdW1pbmcsCisJICogcGVyZm9ybWluZyBhbiBl YXJseSBjaGVjayBvbiB0aGUgZHJvcCBlbGlnaWJpbGl0eSBvZiBvbGQgcGFydGl0aW9ucyBp cworCSAqIHByZWZlcmFibGUuCisJICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlv bk9pZCwgbWVyZ2luZ1BhcnRpdGlvbnMpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsK KworCQkvKiBHZXQgb2lkIG9mIHRoZSBsYXRlciB0byBiZSBkcm9wcGVkIHJlbGF0aW9uICov CisJCW9iamVjdC5vYmplY3RJZCA9IG1lcmdpbmdQYXJ0aXRpb25PaWQ7CisJCW9iamVjdC5j bGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAw OworCisJCXBlcmZvcm1EZWxldGlvbkNoZWNrKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIFBF UkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworCX0KKworCS8qIENyZWF0ZSB0YWJsZSBmb3Ig bmV3IHBhcnRpdGlvbiwgdXNlIHBhcnRpdGlvbmVkIHRhYmxlIGFzIG1vZGVsLiAqLworCUFz c2VydChPaWRJc1ZhbGlkKG93bmVySWQpKTsKKwluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0 aW9uVGFibGUod3F1ZXVlLCBjbWQtPm5hbWUsIHJlbCwgb3duZXJJZCk7CisKKwkvKgorCSAq IFN3aXRjaCB0byB0aGUgdGFibGUgb3duZXIncyB1c2VyaWQsIHNvIHRoYXQgYW55IGluZGV4 IGZ1bmN0aW9ucyBhcmUgcnVuCisJICogYXMgdGhhdCB1c2VyLiAgQWxzbyBsb2NrIGRvd24g c2VjdXJpdHktcmVzdHJpY3RlZCBvcGVyYXRpb25zIGFuZAorCSAqIGFycmFuZ2UgdG8gbWFr ZSBHVUMgdmFyaWFibGUgY2hhbmdlcyBsb2NhbCB0byB0aGlzIGNvbW1hbmQuCisJICoKKwkg KiBOZWVkIHRvIGRvIGl0IGFmdGVyIGRldGVybWluZSBuYW1lc3BhY2UgaW4gY3JlYXRlUGFy dGl0aW9uVGFibGUgY2FsbC4KKwkgKi8KKwlHZXRVc2VySWRBbmRTZWNDb250ZXh0KCZzYXZl X3VzZXJpZCwgJnNhdmVfc2VjX2NvbnRleHQpOworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQo b3duZXJJZCwKKwkJCQkJCSAgIHNhdmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklD VEVEX09QRVJBVElPTik7CisJc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsK KwlSZXN0cmljdFNlYXJjaFBhdGgoKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIG1lcmdlZCBw YXJ0aXRpb25zIHRvIG5ldyBwYXJ0aXRpb24uICovCisJTWVyZ2VQYXJ0aXRpb25zTW92ZVJv d3Mod3F1ZXVlLCBtZXJnaW5nUGFydGl0aW9ucywgbmV3UGFydFJlbCk7CisKKwkvKiBEcm9w IHRoZSBjdXJyZW50IHBhcnRpdGlvbnMgYmVmb3JlIGF0dGFjaGluZyB0aGUgbmV3IG9uZS4g Ki8KKwlmb3JlYWNoX29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0aW9u cykKKwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCisJCW9iamVjdC5vYmplY3RJZCA9 IG1lcmdpbmdQYXJ0aXRpb25PaWQ7CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxh dGlvbklkOworCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCisJCXBlcmZvcm1EZWxldGlv bigmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCAwKTsKKwl9CisKKwlsaXN0X2ZyZWUobWVyZ2lu Z1BhcnRpdGlvbnMpOworCisJLyoKKwkgKiBBdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRvIHRo ZSBwYXJ0aXRpb25lZCB0YWJsZS4gd3F1ZXVlID0gTlVMTDoKKwkgKiB2ZXJpZmljYXRpb24g Zm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90IG5lZWRlZC4KKwkgKi8KKwlhdHRh Y2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWwsIGNtZC0+Ym91bmQpOwor CisJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJdGFibGVfY2xvc2UobmV3 UGFydFJlbCwgTm9Mb2NrKTsKKworCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhl Y3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zLiAqLworCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2 ZV9uZXN0bGV2ZWwpOworCisJLyogUmVzdG9yZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRl eHQuICovCisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNf Y29udGV4dCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA3MzM0NWJiM2M3Li43NjU2ZWFkZjFm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogCU9SREVSIE9SRElOQUxJVFkgT1RIRVJTIE9VVF9QIE9VVEVSX1AKIAlP VkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgogCi0JUEFSQUxM RUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JE IFBBVEgKKwlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBB UlRJVElPTlMgUEFTU0lORyBQQVNTV09SRCBQQVRICiAJUEVSSU9EIFBMQUNJTkcgUExBTiBQ TEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBS RVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQ Uk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCkBAIC0yMzM4LDYgKzIz MzgsNyBAQCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfQXR0YWNoUGFy dGl0aW9uOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9ICQ0Owor CQkJCQljbWQtPnBhcnRsaXN0ID0gTklMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxz ZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0yMzUyLDYgKzIzNTMsNyBA QCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9u OwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJ CWNtZC0+cGFydGxpc3QgPSBOSUw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9ICQ0OwogCQkJ CQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIzNjUsNiArMjM2NywyMSBAQCBwYXJ0 aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9uRmluYWxp emU7CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJ CQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKKwkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7 CisJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOwor CQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TICgpIElO VE8gPHBhcnRpdGlvbl9uYW1lPiAqLworCQkJfCBNRVJHRSBQQVJUSVRJT05TICcoJyBxdWFs aWZpZWRfbmFtZV9saXN0ICcpJyBJTlRPIHF1YWxpZmllZF9uYW1lCisJCQkJeworCQkJCQlB bHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRp dGlvbkNtZCAqY21kID0gbWFrZU5vZGUoUGFydGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0 eXBlID0gQVRfTWVyZ2VQYXJ0aXRpb25zOworCQkJCQljbWQtPm5hbWUgPSAkNzsKKwkJCQkJ Y21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSAkNDsKIAkJCQkJY21k LT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAtMjM4MSw2ICsyMzk4LDcgQEAgaW5kZXhfcGFydGl0 aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJ Y21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBh cnRsaXN0ID0gTklMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0xNzk0MSw2ICsxNzk1OSw3IEBAIHVucmVzZXJ2 ZWRfa2V5d29yZDoKIAkJCXwgUEFSU0VSCiAJCQl8IFBBUlRJQUwKIAkJCXwgUEFSVElUSU9O CisJCQl8IFBBUlRJVElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAogCQkJfCBQ QVRICkBAIC0xODU2OCw2ICsxODU4Nyw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwg UEFSU0VSCiAJCQl8IFBBUlRJQUwKIAkJCXwgUEFSVElUSU9OCisJCQl8IFBBUlRJVElPTlMK IAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAogCQkJfCBQQVRICmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYwppbmRleCBhZmNmNTQxNjljLi44ZmU3MjQ5MjAzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL2hlYXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BhcnRpdGlvbi5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Nv bGxhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgpAQCAtNTgs NiArNTksOCBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX3V0aWxjbWQuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCisj aW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRkZXNjLmgiCisjaW5jbHVkZSAicGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgog I2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBA IC0zNTEwLDYgKzM1MTMsMTM4IEBAIHRyYW5zZm9ybVJ1bGVTdG10KFJ1bGVTdG10ICpzdG10 LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIH0KIAogCisvKgorICogY2hlY2tQYXJ0aXRp b24KKyAqIENoZWNrIHdoZXRoZXIgcGFydFJlbE9pZCBpcyBhIGxlYWYgcGFydGl0aW9uIG9m IHRoZSBwYXJlbnQgdGFibGUgKHJlbCkuCisgKiBQYXJ0aXRpb24gd2l0aCBPSUQgcGFydFJl bE9pZCBtdXN0IGJlIGxvY2tlZCBiZWZvcmUgZnVuY3Rpb24gY2FsbC4KKyAqLworc3RhdGlj IHZvaWQKK2NoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxPaWQpCit7 CisJUmVsYXRpb24JcGFydFJlbDsKKworCXBhcnRSZWwgPSB0YWJsZV9vcGVuKHBhcnRSZWxP aWQsIE5vTG9jayk7CisKKwlpZiAocGFydFJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJ TkRfUkVMQVRJT04pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dS T05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIs IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpKSwKKwkJCQllcnJoaW50KCJBTFRF UiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25z IGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisKKwlpZiAoIXBhcnRSZWwtPnJkX3Jl bC0+cmVsaXNwYXJ0aXRpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBw YXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgXCIlc1wiIiwKKwkJCQkJICAgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCksIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNh biBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsK KworCWlmIChnZXRfcGFydGl0aW9uX3BhcmVudChwYXJ0UmVsT2lkLCBmYWxzZSkgIT0gUmVs YXRpb25HZXRSZWxpZChyZWwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfVEFCTEUpLAorCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGlz IG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSksCisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2Fu IG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwor CisJdGFibGVfY2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKK30KKworLyoKKyAqIHRyYW5zZm9y bVBhcnRpdGlvbkNtZEZvck1lcmdlCisgKgkJQW5hbHl6ZSB0aGUgQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZAorICoKKyAqIERvZXMgc2ltcGxlIGNoZWNrcyBm b3IgbWVyZ2VkIHBhcnRpdGlvbnMuIENhbGN1bGF0ZXMgYm91bmQgb2YgcmVzdWx0aW5nCisg KiBwYXJ0aXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRG b3JNZXJnZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQp Cit7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJcGFydE9pZDsKKwlSZWxhdGlv bglwYXJlbnQgPSBjeHQtPnJlbDsKKwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0cmF0 ZWd5OworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJYm9vbAkJ aXNEZWZhdWx0UGFydCA9IGZhbHNlOworCUxpc3QJICAgKnBhcnRPaWRzID0gTklMOworCisJ a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdl dF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJ T05fU1RSQVRFR1lfSEFTSCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coInBhcnRpdGlvbiBvZiBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQiKSk7CisKKwkvKiBEb2Vz IHBhcnRpdGlvbmVkIHRhYmxlIChwYXJlbnQpIGhhdmUgYSBkZWZhdWx0IHBhcnRpdGlvbj8g Ki8KKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJl bGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCWZvcmVhY2gobGlz dHB0ciwgcGFydGNtZC0+cGFydGxpc3QpCisJeworCQlSYW5nZVZhciAgICpuYW1lID0gKFJh bmdlVmFyICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkvKiBQYXJ0aXRpb25zIGluIHRoZSBs aXN0IHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9yX2VhY2hfY2VsbChs aXN0cHRyMiwgcGFydGNtZC0+cGFydGxpc3QsIGxuZXh0KHBhcnRjbWQtPnBhcnRsaXN0LCBs aXN0cHRyKSkKKwkJeworCQkJUmFuZ2VWYXIgICAqbmFtZTIgPSAoUmFuZ2VWYXIgKikgbGZp cnN0KGxpc3RwdHIyKTsKKworCQkJaWYgKGVxdWFsKG5hbWUsIG5hbWUyKSkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJ CQkJCQllcnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlzIGFscmVhZHkgdXNl ZCIsIG5hbWUtPnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0 YXRlLCBuYW1lMi0+bG9jYXRpb24pKTsKKwkJfQorCisJCS8qCisJCSAqIFNlYXJjaCBERUZB VUxUIHBhcnRpdGlvbiBpbiB0aGUgbGlzdC4gT3BlbiBhbmQgbG9jayBwYXJ0aXRpb25zIGJl Zm9yZQorCQkgKiBjYWxjdWxhdGluZyB0aGUgYm91bmRhcnkgZm9yIHJlc3VsdGluZyBwYXJ0 aXRpb24sIHdlIGFsc28gY2hlY2sgZm9yCisJCSAqIG93bmVyc2hpcCBhbG9uZyB0aGUgd2F5 LiAgV2UgbmVlZCB0byB1c2UgQWNjZXNzRXhjbHVzaXZlTG9jayBoZXJlLAorCQkgKiBiZWNh dXNlIHRoZXNlIG1lcmdlZCBwYXJ0aXRpb25zIHdpbGwgYmUgZGV0YWNoZWQgdGhlbiBkcm9w cGVkIGluCisJCSAqIEFURXhlY01lcmdlUGFydGl0aW9ucy4KKwkJICovCisJCXBhcnRPaWQg PSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQobmFtZSwKKwkJCQkJCQkJCQkgICBBY2Nlc3NF eGNsdXNpdmVMb2NrLAorCQkJCQkJCQkJCSAgIGZhbHNlLAorCQkJCQkJCQkJCSAgIFJhbmdl VmFyQ2FsbGJhY2tPd25zUmVsYXRpb24sCisJCQkJCQkJCQkJICAgTlVMTCk7CisJCS8qIElz IGN1cnJlbnQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJCWlmIChwYXJ0 T2lkID09IGRlZmF1bHRQYXJ0T2lkKQorCQkJaXNEZWZhdWx0UGFydCA9IHRydWU7CisKKwkJ LyoKKwkJICogRXh0ZW5kZWQgY2hlY2sgYmVjYXVzZSB0aGUgc2FtZSBwYXJ0aXRpb24gY2Fu IGhhdmUgZGlmZmVyZW50IG5hbWVzCisJCSAqIChmb3IgZXhhbXBsZSwgInBhcnRfbmFtZSIg YW5kICJwdWJsaWMucGFydF9uYW1lIikuCisJCSAqLworCQlmb3JlYWNoKGxpc3RwdHIyLCBw YXJ0T2lkcykKKwkJeworCQkJT2lkCQljdXJPaWQgPSBsZmlyc3Rfb2lkKGxpc3RwdHIyKTsK KworCQkJaWYgKGN1ck9pZCA9PSBwYXJ0T2lkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFy dGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFt ZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0 aW9uKSk7CisJCX0KKworCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCisJ CXBhcnRPaWRzID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOworCX0KKworCS8q IEFsbG9jYXRlIGJvdW5kIG9mIHJlc3VsdGluZyBwYXJ0aXRpb24uICovCisJQXNzZXJ0KHBh cnRjbWQtPmJvdW5kID09IE5VTEwpOworCXBhcnRjbWQtPmJvdW5kID0gbWFrZU5vZGUoUGFy dGl0aW9uQm91bmRTcGVjKTsKKworCS8qIEZpbGwgcGFydGl0aW9uIGJvdW5kLiAqLworCXBh cnRjbWQtPmJvdW5kLT5zdHJhdGVneSA9IHN0cmF0ZWd5OworCXBhcnRjbWQtPmJvdW5kLT5s b2NhdGlvbiA9IC0xOworCXBhcnRjbWQtPmJvdW5kLT5pc19kZWZhdWx0ID0gaXNEZWZhdWx0 UGFydDsKKwlpZiAoIWlzRGVmYXVsdFBhcnQpCisJCWNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91 bmRfZm9yX21lcmdlKHBhcmVudCwgcGFydGNtZC0+cGFydGxpc3QsCisJCQkJCQkJCQkJCXBh cnRPaWRzLCBwYXJ0Y21kLT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0LT5wc3RhdGUpOworfQor CiAvKgogICogdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJCXBhcnNlIGFuYWx5c2lz IGZvciBBTFRFUiBUQUJMRQpAQCAtMzc4Nyw2ICszOTIyLDIwIEBAIHRyYW5zZm9ybUFsdGVy VGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21k cyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9N ZXJnZVBhcnRpdGlvbnM6CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAo UGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChwYXJ0 Y21kLT5wYXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQllcnJt c2coImxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQg bGVhc3QgdHdvIHBhcnRpdGlvbnMiKSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21k Rm9yTWVyZ2UoJmN4dCwgcGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2Nt ZHMsIGNtZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIv c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA0YmRjMjk0MWVm Li5lYTMzYzE1MTk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMK QEAgLTQ5NzcsMyArNDk3NywxOTcgQEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBHX0ZV TkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChyb3dIYXNoICUgbW9kdWx1cyA9PSBy ZW1haW5kZXIpOwogfQorCisvKgorICogY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3Jh bmdlCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCisgKgor ICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2FsY3VsYXRlX3BhcnRpdGlvbl9i b3VuZF9mb3JfbWVyZ2UoKS4KKyAqIFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgdXBwZXIgYm91 bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCisgKiBzZWNvbmRfYm91bmQu IFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKgorICogcGFyZW50OgkJCXBhcnRp dGlvbmVkIHRhYmxlCisgKiBmaXJzdF9uYW1lOgkJbmFtZSBvZiBmaXJzdCBwYXJ0aXRpb24K KyAqIGZpcnN0X2JvdW5kOgkJYm91bmQgb2YgZmlyc3QgcGFydGl0aW9uCisgKiBzZWNvbmRf bmFtZToJCW5hbWUgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogc2Vjb25kX2JvdW5kOglib3Vu ZCBvZiBzZWNvbmQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0 YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5pbmcgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGlj IHZvaWQKK2NoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJl bnQsCisJCQkJCQkJCSAgUmFuZ2VWYXIgKmZpcnN0X25hbWUsCisJCQkJCQkJCSAgUGFydGl0 aW9uQm91bmRTcGVjICpmaXJzdF9ib3VuZCwKKwkJCQkJCQkJICBSYW5nZVZhciAqc2Vjb25k X25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzZWNvbmRfYm91bmQsCisJ CQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBS ZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQg KmZpcnN0X3VwcGVyOworCVBhcnRpdGlvblJhbmdlQm91bmQgKnNlY29uZF9sb3dlcjsKKwlp bnQJCQljbXB2YWw7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RS QVRFR1lfUkFOR0UpOworCisJZmlyc3RfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJv dW5kKGtleSwgLTEsIGZpcnN0X2JvdW5kLT51cHBlcmRhdHVtcywgZmFsc2UpOworCXNlY29u ZF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc2Vjb25kX2Jv dW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisKKwkvKgorCSAqIGxvd2VyMT1mYWxzZSAodGhl IHNlY29uZCB0byBsYXN0IGFyZ3VtZW50KSBmb3IgY29ycmVjdCBjb21wYXJpc29uIG9mCisJ ICogbG93ZXIgYW5kIHVwcGVyIGJvdW5kcy4KKwkgKi8KKwljbXB2YWwgPSBwYXJ0aXRpb25f cmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5j LAorCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBzZWNvbmRfbG93 ZXItPmRhdHVtcywgc2Vjb25kX2xvd2VyLT5raW5kLAorCQkJCQkJCQkgIGZhbHNlLCBmaXJz dF91cHBlcik7CisJaWYgKGNtcHZhbCkKKwl7CisJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRh dHVtID0gbGluaXRpYWwoc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcyk7CisKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElP TiksCisJCQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5v dCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJ CSAgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQll cnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUg cGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4iKSwKKwkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwl9Cit9CisKKy8qCisgKiBnZXRf cGFydGl0aW9uX2JvdW5kX3NwZWMKKyAqCisgKiBSZXR1cm5zIHRoZSBQYXJ0aXRpb25Cb3Vu ZFNwZWMgZm9yIHRoZSBwYXJ0aXRpb24gd2l0aCB0aGUgZ2l2ZW4gT0lEIHBhcnRPaWQuCisg Ki8KK3N0YXRpYyBQYXJ0aXRpb25Cb3VuZFNwZWMgKgorZ2V0X3BhcnRpdGlvbl9ib3VuZF9z cGVjKE9pZCBwYXJ0T2lkKQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJZGF0dW07 CisJYm9vbAkJaXNudWxsOworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmRzcGVjID0gTlVM TDsKKworCS8qIFRyeSBmZXRjaGluZyB0aGUgdHVwbGUgZnJvbSB0aGUgY2F0Y2FjaGUsIGZv ciBzcGVlZC4gKi8KKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIHBhcnRPaWQp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHBhcnRPaWQpOworCisJZGF0dW0g PSBTeXNDYWNoZUdldEF0dHIoUkVMT0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3BnX2NsYXNz X3JlbHBhcnRib3VuZCwKKwkJCQkJCQkmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9n KEVSUk9SLCAicGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAldSBpcyBudWxsIiwKKwkJ CSBwYXJ0T2lkKTsKKworCWJvdW5kc3BlYyA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRD U3RyaW5nKGRhdHVtKSk7CisKKwlpZiAoIUlzQShib3VuZHNwZWMsIFBhcnRpdGlvbkJvdW5k U3BlYykpCisJCWVsb2coRVJST1IsICJleHBlY3RlZCBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9y IHJlbGF0aW9uICV1IiwKKwkJCSBwYXJ0T2lkKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBs ZSk7CisJcmV0dXJuIGJvdW5kc3BlYzsKK30KKworLyoKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRp b25fYm91bmRfZm9yX21lcmdlCisgKgorICogQ2FsY3VsYXRlcyB0aGUgYm91bmQgb2YgbWVy Z2VkIHBhcnRpdGlvbiAic3BlYyIgYnkgdXNpbmcgdGhlIGJvdW5kcyBvZgorICogcGFydGl0 aW9ucyB0byBiZSBtZXJnZWQuCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxl CisgKiBwYXJ0TmFtZXM6CQluYW1lcyBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZAorICog cGFydE9pZHM6CQlPaWRzIG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBzcGVjIChv dXQpOgkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb24KKyAq IHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUg ZXJyb3IgcG9zaXRpb24KKyAqLwordm9pZAorY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9m b3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAor CQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCisJCQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMg KnNwZWMsCisJCQkJCQkJCQlQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5 IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uQm91 bmRTcGVjICpib3VuZDsKKworCUFzc2VydCghc3BlYy0+aXNfZGVmYXVsdCk7CisKKwlzd2l0 Y2ggKGtleS0+c3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5H RToKKwkJCXsKKwkJCQlpbnQJCQlpOworCQkJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dl cl9ib3VuZHM7CisJCQkJaW50CQkJbnBhcnRzID0gbGlzdF9sZW5ndGgocGFydE9pZHMpOwor CQkJCUxpc3QJICAgKmJvdW5kcyA9IE5JTDsKKworCQkJCWxvd2VyX2JvdW5kcyA9IChQYXJ0 aXRpb25SYW5nZUJvdW5kICoqKQorCQkJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0 aXRpb25SYW5nZUJvdW5kICopKTsKKworCQkJCS8qCisJCQkJICogQ3JlYXRlIGFycmF5IG9m IGxvd2VyIGJvdW5kcyBhbmQgbGlzdCBvZgorCQkJCSAqIFBhcnRpdGlvbkJvdW5kU3BlYy4K KwkJCQkgKi8KKwkJCQlmb3JlYWNoX29pZChwYXJ0b2lkLCBwYXJ0T2lkcykKKwkJCQl7CisJ CQkJCWJvdW5kID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKHBhcnRvaWQpOworCQkJCQlp ID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KHBhcnRvaWQpOworCisJCQkJCWxvd2VyX2JvdW5k c1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLCBib3VuZC0+bG93ZXJk YXR1bXMsIHRydWUpOworCQkJCQlib3VuZHMgPSBsYXBwZW5kKGJvdW5kcywgYm91bmQpOwor CQkJCX0KKworCQkJCS8qIFNvcnQgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQkJCXFz b3J0X2FyZyhsb3dlcl9ib3VuZHMsIG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91 bmQgKiksCisJCQkJCQkgIHFzb3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCBrZXkpOworCisJ CQkJLyogUmFuZ2VzIG9mIHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQkJ CWZvciAoaSA9IDE7IGkgPCBucGFydHM7IGkrKykKKwkJCQl7CisJCQkJCWludAkJCWluZGV4 ID0gbG93ZXJfYm91bmRzW2ldLT5pbmRleDsKKwkJCQkJaW50CQkJcHJldl9pbmRleCA9IGxv d2VyX2JvdW5kc1tpIC0gMV0tPmluZGV4OworCisJCQkJCWNoZWNrX3R3b19wYXJ0aXRpb25z X2JvdW5kc19yYW5nZShwYXJlbnQsCisJCQkJCQkJCQkJCQkJICAoUmFuZ2VWYXIgKikgbGlz dF9udGgocGFydE5hbWVzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQYXJ0aXRp b25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJ CQkJCQkgIChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIGluZGV4KSwKKwkJCQkJ CQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRl eCksCisJCQkJCQkJCQkJCQkJICBwc3RhdGUpOworCQkJCX0KKworCQkJCS8qCisJCQkJICog TG93ZXIgYm91bmQgb2YgZmlyc3QgcGFydGl0aW9uIGlzIHRoZSBsb3dlciBib3VuZCBvZiBt ZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+bG93ZXJkYXR1 bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxv d2VyX2JvdW5kc1swXS0+aW5kZXgpKS0+bG93ZXJkYXR1bXM7CisKKwkJCQkvKgorCQkJCSAq IFVwcGVyIGJvdW5kIG9mIGxhc3QgcGFydGl0aW9uIGlzIHRoZSB1cHBlciBib3VuZCBvZiBt ZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+dXBwZXJkYXR1 bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxv d2VyX2JvdW5kc1tucGFydHMgLSAxXS0+aW5kZXgpKS0+dXBwZXJkYXR1bXM7CisKKwkJCQlw ZnJlZShsb3dlcl9ib3VuZHMpOworCQkJCWxpc3RfZnJlZShib3VuZHMpOworCQkJCWJyZWFr OworCQkJfQorCisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0xJU1Q6CisJCQl7CisJCQkJ LyogQ29uc29saWRhdGUgYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUgbGlzdC4g Ki8KKwkJCQlmb3JlYWNoX29pZChwYXJ0b2lkLCBwYXJ0T2lkcykKKwkJCQl7CisJCQkJCWJv dW5kID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKHBhcnRvaWQpOworCQkJCQlzcGVjLT5s aXN0ZGF0dW1zID0gbGlzdF9jb25jYXQoc3BlYy0+bGlzdGRhdHVtcywgYm91bmQtPmxpc3Rk YXR1bXMpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKworCQlkZWZhdWx0OgorCQkJZWxv ZyhFUlJPUiwgInVuZXhwZWN0ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChp bnQpIGtleS0+c3RyYXRlZ3kpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRl eCA2ODcyNjUzYzZjLi4yZjI2M2QxMDZiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBA IC0yNzQyLDYgKzI3NDIsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9p ZCwKIAkJCQkJICAiT1dORVIgVE8iLCAiU0VUIiwgIlZBTElEQVRFIENPTlNUUkFJTlQiLAog CQkJCQkgICJSRVBMSUNBIElERU5USVRZIiwgIkFUVEFDSCBQQVJUSVRJT04iLAogCQkJCQkg ICJERVRBQ0ggUEFSVElUSU9OIiwgIkZPUkNFIFJPVyBMRVZFTCBTRUNVUklUWSIsCisJCQkJ CSAgIk1FUkdFIFBBUlRJVElPTlMgKCIsCiAJCQkJCSAgIk9GIiwgIk5PVCBPRiIpOwogCS8q IEFMVEVSIFRBQkxFIHh4eCBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJU QUJMRSIsIE1hdGNoQW55LCAiQUREIikpCkBAIC0zMDE1LDYgKzMwMTYsMTUgQEAgbWF0Y2hf cHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFu eSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJ LyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCAqLworCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJ T05TIiwgIigiKSkKKwl7CisJCXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7 CisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9wYXJ0aXRpb25fb2Zf dGFibGUpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNo QW55LCAiTUVSR0UiLCAiUEFSVElUSU9OUyIsICIoKikiKSkKKwkJQ09NUExFVEVfV0lUSCgi SU5UTyIpOworCiAJLyogQUxURVIgVEFCTEUgPG5hbWU+IE9GICovCiAJZWxzZSBpZiAoTWF0 Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk9GIikpCiAJCUNPTVBMRVRFX1dJ VEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2NvbXBvc2l0ZV9kYXRhdHlwZXMp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAppbmRleCAwZWE3Y2NmNTI0Li5mNTQyMzM0 OTliIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaApAQCAtMTA3LDYgKzEwNyw4IEBA IGV4dGVybiB2b2lkIFJlbGVhc2VEZWxldGlvbkxvY2soY29uc3QgT2JqZWN0QWRkcmVzcyAq b2JqZWN0KTsKIGV4dGVybiB2b2lkIHBlcmZvcm1EZWxldGlvbihjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QsCiAJCQkJCQkJRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3Mp OwogCitleHRlcm4gdm9pZCBwZXJmb3JtRGVsZXRpb25DaGVjayhjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QsCisJCQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFn cyk7CiBleHRlcm4gdm9pZCBwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMoY29uc3QgT2JqZWN0 QWRkcmVzc2VzICpvYmplY3RzLAogCQkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwg aW50IGZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDg2YTIzNmJkNTgu LjdjNjA3ZGM1NWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTk2OSw4ICs5Njks MTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uQ21kCiB7CiAJTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpuYW1l OwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2ggKi8KKwlSYW5nZVZh ciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVy Z2UgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBh dHRhY2hpbmcgKi8KKwlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9u cywgZm9yIE1FUkdFCisJCQkJCQkJCSAqIFBBUlRJVElPTiBjb21tYW5kICovCiAJYm9vbAkJ Y29uY3VycmVudDsKIH0gUGFydGl0aW9uQ21kOwogCkBAIC0yNDczLDYgKzI0NzUsNyBAQCB0 eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyog QVRUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0gg UEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQ QVJUSVRJT04gRklOQUxJWkUgKi8KKwlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0Ug UEFSVElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8K IAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICov CiAJQVRfRHJvcElkZW50aXR5LAkJCS8qIERST1AgSURFTlRJVFkgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaAppbmRleCBhNGFmM2Y3MTdhLi45MGU4Y2RkZjhiIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o CkBAIC0zMzcsNiArMzM3LDcgQEAgUEdfS0VZV09SRCgicGFyYW1ldGVyIiwgUEFSQU1FVEVS LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJzZXIi LCBQQVJTRVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInBhcnRpdGlvbnMiLCBQQVJUSVRJT05TLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFT U0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFz c3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGF0aCIsIFBBVEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9z cmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCmluZGV4IDY1ZjE2MWY3MTgu LjY5MGQyNTk2MTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0 Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApA QCAtMTQzLDQgKzE0MywxMCBAQCBleHRlcm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9i c2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hh c2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBp bnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVybiB2b2lkIGNhbGN1bGF0ZV9w YXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCQkJ CUxpc3QgKnBhcnROYW1lcywKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJ CQkJCQkJUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJCQkJUGFyc2VTdGF0 ZSAqcHN0YXRlKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlRCT1VORFNfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQg Yi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45ODQ0NmFhYWI1Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJn ZS5vdXQKQEAgLTAsMCArMSwxOTkgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Np b25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMy YiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQg SU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7Citz dGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0Ug UEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIw Oworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0 ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01N SVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0t LS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYK KzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMy YyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBW QUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBC RUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFM VEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8x MF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBV UERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGlu ZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgor c3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8 dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1 ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAK Kyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYnMg czFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJp OiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7 CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBh cnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJF R0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hl cmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTog PC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAq IEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQw NSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAg CiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czJicnIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJi cnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTog SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0 IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFy dF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VU IHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMx YzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1J VDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0t Ky0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQw MW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnJyIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBz MnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBF QVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAn dGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0 cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8g dHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0 IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAg CistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0 ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQor CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYnMgczFtZXJnIHMy YiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRw YXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0 cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQg U0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAK Ky0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRl eHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBz MnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklB TElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVy ZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRw YXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBz MnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0 ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7 CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0 ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUg ICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJj IHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnM6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJy cjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJn OiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBh cnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMy dTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdh aXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRl ZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsK KyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRl eHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAg ICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMg czFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczog QkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRF UiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBf MjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBE QVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcg Li4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQg ICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAg ICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCiso NSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3Nj aGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCBl M2M2NjlhMjljLi4wZGNhNjg0OTU1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24v aXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUKQEAgLTEwNyw2ICsxMDcsNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0 ZS0xCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5 LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0aXRp b24tbWVyZ2UKIHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QK IHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgYi9zcmMvdGVzdC9pc29s YXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uZGMyYjlkMzQ0NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwpAQCAtMCwwICsxLDU0 IEBACisjIFZlcmlmeSB0aGF0IE1FUkdFIG9wZXJhdGlvbiBsb2NrcyBETUwgb3BlcmF0aW9u cyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlCisKK3NldHVwCit7CisgIERST1AgVEFCTEUgSUYg RVhJU1RTIHRwYXJ0OworICBDUkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQgdGV4dCkgcGFy dGl0aW9uIGJ5IHJhbmdlKGkpOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBfMTAgUEFSVElU SU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAgQ1JFQVRFIFRB QkxFIHRwYXJ0XzEwXzIwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMjApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElUSU9OIE9GIHRw YXJ0IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CisgIENSRUFURSBUQUJMRSB0cGFy dF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0cGFydCBERUZBVUxUOworICBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDUsICd0ZXh0MDUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgxNSwgJ3RleHQxNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDI1LCAndGV4 dDI1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMzUsICd0ZXh0MzUnKTsKK30K KwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0cGFydDsKK30KKworc2Vzc2lvbiBzMQor c3RlcCBzMWIJeyBCRUdJTjsgfQorc3RlcCBzMWJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczFicwl7IEJFR0lOIElTT0xBVElPTiBMRVZF TCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczFtZXJnCXsgQUxURVIgVEFCTEUgdHBhcnQgTUVS R0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAw XzIwOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJi CXsgQkVHSU47IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFU QUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFM SVpBQkxFOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3Rl eHQwMScpOyB9CitzdGVwIHMydQl7IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2Rp Zicgd2hlcmUgaSA9IDE7IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNF TEVDVCAqIEZST00gdHBhcnQ7IH0KKworCisjIHMyIGluc2VydHMgcm93IGludG8gdGFibGUu IHMxIHN0YXJ0cyBNRVJHRSBQQVJUSVRJT05TIHRoZW4KKyMgczIgaXMgdHJ5aW5nIHRvIHVw ZGF0ZSBpbnNlcnRlZCByb3cgYW5kIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVzCisjIE1FUkdF IG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIg czJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcg czJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFicyBzMW1l cmcgczJiIHMydSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMmJyciBzMmkgczJjIHMx YiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMy YyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIg czJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9u IHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0 aW9uIHMyYnMgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVy bXV0YXRpb24gczJicyBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2Rk bF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9k ZGxfZGVwYXJzZS5jCmluZGV4IDE5MzY2OWYyYmMuLjdkZTVkZGI4NzggMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFy c2UuYwpAQCAtMjk2LDYgKzI5Niw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdf RlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJ CQkJc3RydHlwZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJl YWs7CisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQlzdHJ0eXBlID0gIk1FUkdF IFBBUlRJVElPTlMiOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJ CQlzdHJ0eXBlID0gIkFERCBJREVOVElUWSI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTE1OWZkMzdkOAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApAQCAtMCww ICsxLDExMDUgQEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFM VEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KK0NSRUFU RSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQor LS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIx LTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8y IFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0 aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIw MjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6 ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQK K0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19t YXIyMDIyLCBzYWxlc19mZWIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfYXBy MjAyMiIgaXMgbm90IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIp IElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICAic2FsZXNfYXByMjAyMiIg aXMgbm90IGEgdGFibGUKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMK Ky0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBp cyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFu MjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNh bGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIy OworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlz IG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4y MDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVz IHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBsb3dl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0 aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNl IGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEs IHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIy MDIyOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIi IGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19k ZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVp cmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBw YXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIp IElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBu YW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25z Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS1FUlJPUiwgc2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfYXByXzI7CitFUlJP UjogIHJlbGF0aW9uICJzYWxlc19hcHJfMiIgYWxyZWFkeSBleGlzdHMKK0NSRUFURSBWSUVX IGphbjIwMjJ2IGFzIFNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2Zl YjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBjYW5ub3QgZHJv cCB0YWJsZSBzYWxlc19qYW4yMDIyIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24g aXQKK0RFVEFJTDogIHZpZXcgamFuMjAyMnYgZGVwZW5kcyBvbiB0YWJsZSBzYWxlc19qYW4y MDIyCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50 IG9iamVjdHMgdG9vLgorRFJPUCBWSUVXIGphbjIwMjJ2OworLS0gTk8gRVJST1I6IHRlc3Qg Zm9yIGN1c3RvbSBwYXJ0aXRpb25zIG9yZGVyLCBzb3VyY2UgcGFydGl0aW9ucyBub3QgaW4g dGhlIHNlYXJjaF9wYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YS5zYWxlc19mZWIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19tYXIy MDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19qYW4yMDIyKSBJTlRPIHNh bGVzX2phbl9mZWJfbWFyMjAyMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hLCBwdWJsaWM7CitQUkVQQVJFIGdldF9wYXJ0aXRpb25faW5mbyhyZWdjbGFz c1tdKSBBUworU0VMRUNUICBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywKKyAgICAgICAg Yy5yZWxwZXJzaXN0ZW5jZSwKKyAgICAgICAgYy5yZWxraW5kLAorICAgICAgICBpLmluaGRl dGFjaHBlbmRpbmcsCisgICAgICAgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKQorRlJPTSAgICBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorV0hFUkUgICBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gQU5ZKCQxKQorT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJl bHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLAorICAgICAgICAgYy5vaWQ6OnJlZ2Ns YXNzOjp0ZXh0IENPTExBVEUgIkMiOworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tz YWxlc19yYW5nZX0nKTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAgICAgICAg ICAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGlu ZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYTIuc2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIw MjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEt MjAyMicpCisgc2FsZXNfZGVjMjAyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKCcxMi0wMS0yMDIxJykgVE8gKCcxMi0zMS0yMDIxJykKKyBzYWxlc19v dGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAgICAgICAgICAg ICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg0IHJvd3MpCisK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRp b25lZCB0YWJsZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8g KCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBE RUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNh bGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyks CisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwg ICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcn KSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdM aScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1 LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0x MScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwg J1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAx LTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVD VCBwZ19jYXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNz KTsKKyBwZ19nZXRfcGFydGtleWRlZiAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJBTkdF IChzYWxlc19kYXRlKQorKDEgcm93KQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsK KyAgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNo cGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBU TyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2ZlYjIwMjIgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAy MicpIFRPICgnMDMtMDEtMjAyMicpCisgc2FsZXNfamFuMjAyMiB8IHAgICAgICAgICAgICAg IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0w MS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19tYXIyMDIyIHwgcCAgICAgICAg ICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAo JzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgfCBwICAg ICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUg cm93cykKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFy dGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxl c19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBzaG93IHBhcnRp dGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tz YWxlc19yYW5nZX0nKTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAgICAgICAg ICAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGlu ZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIw MjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEt MjAyMicpCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZB VUxUCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVu YW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0 aW9uc19tZXJnZV9zY2hlbWEyJzsKKyAgICAgICAgc2NoZW1hbmFtZSAgICAgICAgfCAgICAg ICB0YWJsZW5hbWUgICAgICAgfCAgICAgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICAg ICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYTIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBzYWxl c19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRF IElOREVYIHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIFVTSU5HIGJ0cmVlIChz YWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAg ICAgICAgICAgICAgICAgICB0YWJsZW9pZCAgICAgICAgICAgICAgICAgICAgfCBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAg fCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAg ICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgNCB8IEl2 YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgcGFydGl0aW9u c19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgor IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAg ICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0y MDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8 ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAy LTIzLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIy MDIyIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDMtMTEtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFy X2FwcjIwMjIgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2Zl Yl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygxNCByb3dzKQorCistLSBVc2UgaW5kZXhzY2Fu IGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVD VCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAy MiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAg fCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAg ICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAg ICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAg ICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgor ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAz LTE5LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAg MyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMTAg cm93cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX3Jhbmdl OworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFydGl0aW9u CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21h cjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jhbmdl X3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAg IDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjIt MDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAo NCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAy Mi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisg ICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwK KyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAg JzIwMjItMDUtMDQnKTsKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBw YXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIwMjIs IHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVycykg SU5UTyBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyBPUkRFUiBC WSBzYWxlc3BlcnNvbl9pZDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAg ICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4 LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAg ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxMyB8 IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAg ICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDcgcm93cykKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VY RUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICBvaWQg ICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAg ICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cisgc2FsZXNfYXByMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0y MDIyJykKKyBzYWxlc19mZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAz LTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0 aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRo IERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQs IHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFM V0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8 IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNf ZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hB UigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFu MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEs IDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIw MjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxl c19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhW QUxVRSwgTUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9u YW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdN YW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwK KyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwg NCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIs IDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAy MDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUICogRlJP TSBzYWxlc19kYXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNf bW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAg ICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAg MSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg MSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAg MSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIg fCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRt ZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAg ICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4x Mi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAy MSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFy dG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwg c2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIg fCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIu MDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRt ZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxl c19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIw MjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBk ZXBhcnRtZW50CisoMyByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFu X2ZlYjIwMjI7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIx JywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNU ICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIu MDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEg fCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAg ICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEu MDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAg ICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEu MTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMu MDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRt ZW50CisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBz YWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8 IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2phbl9mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFy IHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0 bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIu MDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIu MDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisoNiByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNf ZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8 IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyBy b3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CistLQorLS0gVGVzdDogbWVyZ2UgcGFy dGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3Bl cnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Yg c2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBG T1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUg VkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBn c3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNh bGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRH X09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZ JDsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRf dHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9S IEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jv d190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVf YWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2Fs ZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRl cl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNo b3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxl KSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVwor Tk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQs IHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQg ZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMg KDE5LCAnSXZhbm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6 IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2Fs ZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQw OworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJ Q0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hl biA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkg Y2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1F TlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dl cihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwg bGV2ZWwgPSBST1cKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gc2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAg ICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93 X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRl ZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lk IElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1u czoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxl c3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsK K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwg J0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAx MDEsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMg KDMxLCBub3coKSwgJ1BvcG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERS T1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVN TiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBf MjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVv cGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00g KDIwKSBUTyAoMzApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElP TiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAn TWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVz cGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKK3NlbGVjdCAqIGZyb20gc2Fs ZXNwZW9wbGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJv dAorICAgICAgICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAg ICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQb3BvdgorICAg ICAgICAgICAgIDMwIHwgRm9yZAorKDYgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Bl b3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2ly b3QKKygxIHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAx MCB8IE1heQorICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8 IFBvcG92CisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzcGVvcGxlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmVi MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBP RiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIw MjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElP TiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAo JzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2Rh dGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIy IE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgIHRhYmxlb2lkICAg ICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxl c19hcHIyMDIyXzAxXzEwIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAg ICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisgc2FsZXNfYXByMjAyMl8xMF8yMCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAg ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyXzIw XzMwIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAw IHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEw XzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7CitTRUxFQ1Qg dGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBPUkRFUiBCWSB0YWJs ZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxl c19hcHJfYWxsIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNf YXByX2FsbCB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAg IDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CistLQorLS0gQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdDogc3BlY2lm aWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBz YWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURF TlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBW QVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BB UlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9y ZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4g UGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0 b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsK K0NSRUFURSBUQUJMRSBzYWxlc19saXN0MiAoTElLRSBzYWxlc19saXN0KSBQQVJUSVRJT04g QlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQyIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0MiBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJz YnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyczIgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QyIERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJu YWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2 Y2ggVkFSQ0hBUig1KSk7CistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMgbm90IGEg cGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0 LCBzYWxlc19leHRlcm5hbCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogICJzYWxlc19leHRl cm5hbCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19s aXN0IgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5 IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6 ICAic2FsZXNfZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQg dGFibGUgInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsMikgSU5UTyBz YWxlc19hbGw7CitFUlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlzIG5vdCBhIHBhcnRpdGlv biBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0 IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQy IiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX25v cmQyLCBzYWxlc19lYXN0KSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgcmVsYXRpb24gInNh bGVzX25vcmQyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3Qi CitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVy Z2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRBQkxFIHNh bGVzX2V4dGVybmFsMjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxF IHNhbGVzX2xpc3QyOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZ IExJU1QgcGFydGl0aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBB TFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBz YWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2Rh dGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5E RVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5H IGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3Nh bGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVF UyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWpp bmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50 cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz cGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZB TFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMt MDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAz LTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0w My0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjIt MDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIy LTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAy Mi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIw MjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcy MDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAn MjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAgJ09zbG8nLCAgICAgICAgICAgIDgwMCwg JzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAs ICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUw LCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1 MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5 NTAsICcyMDIyLTAzLTA1Jyk7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25z OgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOworICAgICAg b2lkICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5n IHwgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgc2FsZXNfY2VudHJhbCB8IHAgICAgICAgICAgICAgIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxp bicsICdLeWl2JykKKyBzYWxlc19lYXN0ICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGkn LCAnVmxhZGl2b3N0b2snKQorIHNhbGVzX25vcmQgICAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3Qu IFBldGVyc2J1cmcnLCAnSGVsc2lua2knKQorIHNhbGVzX3dlc3QgICAgfCBwICAgICAgICAg ICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKQorIHNhbGVzX290aGVycyAgfCBwICAgICAg ICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93 cykKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193 ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIHNo b3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25f aW5mbygne3NhbGVzX2xpc3R9Jyk7CisgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2Ug fCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2Fs bCAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcn LCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykK KyBzYWxlc19ub3JkICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVs c2lua2knKQorIHNhbGVzX290aGVycyB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfbGlzdCBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNw ZXJzb25faWQ7CisgIHRhYmxlb2lkICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX25vcmQgfCAg ICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAg ICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyBzYWxlc19ub3JkIHwgICAgICAgICAgICAgIDcg fCBNYXkgICAgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgIDEyMDAgfCAw My0wNi0yMDIyCisgc2FsZXNfbm9yZCB8ICAgICAgICAgICAgICA5IHwgTWF5ICAgICAgICAg ICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorIHNh bGVzX25vcmQgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBPc2xvICAg ICAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyBzYWxlc19hbGwgIHwgICAg ICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAgICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICAyIHwg U21pcm5vZmYgICAgICAgICB8IE5ldyBZb3JrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMt MDMtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg ICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyBzYWxl c19hbGwgIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8IEJlcmxpbiAgICAgICAgIHwgICAgICAg ICAxMDAwIHwgMDMtMDEtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgOCB8IExp ICAgICAgICAgICAgICAgfCBWbGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5 LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAg IHwgTWFkcmlkICAgICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgc2FsZXNf YWxsICB8ICAgICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICAgICB8IEt5aXYgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTAtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAg ICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAzLTA4LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgMTQgfCBQbGF0 byAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0y MDIyCisoMTQgcm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVz IGFmdGVyIG1lcmdpbmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOwor U0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAg ICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAg ICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNh dyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAg ICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAg ICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1l ID0gJ0l2YW5vdic7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcg ICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVHJ5IHRvIE1F UkdFIHBhcnRpdGlvbnMgb2YgYW5vdGhlciB0YWJsZS4KKy0tCitDUkVBVEUgVEFCTEUgdDEg KGkgaW50LCBhIGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEsIGIp OworQ1JFQVRFIFRBQkxFIHQxcDEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgRlJPTSAo MSwgMSkgVE8gKDEsIDIpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJU SVRJT04gQlkgUkFOR0UgKHQpOworQ1JFQVRFIFRBQkxFIHQycGEgUEFSVElUSU9OIE9GIHQy IEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0MnKTsKK0NSRUFURSBUQUJMRSB0MyAoaSBp bnQsIHQgdGV4dCk7CistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0 aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9O UyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7CitFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBu b3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorSElOVDogIEFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2 ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBv ZiBwYXJ0aXRpb25lZCB0YWJsZSAidDIiCitBTFRFUiBUQUJMRSB0MiBNRVJHRSBQQVJUSVRJ T05TICh0MnBhLCB0MykgSU5UTyB0MnA7CitFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0 aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJ0MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUg c3ViLXBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDM7CitEUk9QIFRBQkxFIHQyOworRFJPUCBU QUJMRSB0MTsKKy0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9ucyBvZiB0ZW1wb3Jhcnkg dGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8xXzIgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitFWEVDVVRFIGdldF9w YXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxr aW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAor LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCB0ICAgICAgICAgICAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSkKKyB0cF8xXzIgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJvd3MpCisKK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8y OworLS0gUGFydGl0aW9uIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitFWEVDVVRFIGdldF9wYXJ0 aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5k IHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzIgfCB0ICAgICAgICAgICAgICB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MikKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworLS0KKy0tIENoZWNrIHRoZSBwYXJ0aXRp b24gaW5kZXggbmFtZSBpZiB0aGUgcGFydGl0aW9uIG5hbWUgaXMgdGhlIHNhbWUgYXMgb25l CistLSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMuCistLQorQ1JFQVRFIFRBQkxFIHQgKGkg aW50LCBQUklNQVJZIEtFWShpKSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBU QUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7 CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpOworQ1JFQVRFIElOREVYIHRpZHggT04gdChpKTsKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMV8yLCB0cF8wXzEpIElOVE8gdHBfMV8yOworLS0gSW5k ZXhuYW1lIHZhbHVlcyBzaG91bGQgYmUgJ3RwXzFfMl9wa2V5JyBhbmQgJ3RwXzFfMl9pX2lk eCcuCistLSBOb3QtbnVsbCBjb25zdHJhaW50IG5hbWUgc2hvdWxkIGJlICd0cF8xXzJfaV9u b3RfbnVsbCcuCitcZCsgdHBfMV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxl ICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8xXzIiCisgQ29sdW1uIHwgIFR5cGUgICB8 IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGkgSVMgTk9UIE5V TEwpIEFORCAoaSA+PSAwKSBBTkQgKGkgPCAyKSkKK0luZGV4ZXM6CisgICAgInRwXzFfMl9w a2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGkpCisgICAgInRwXzFfMl9pX2lkeCIgYnRyZWUg KGkpCitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAidF9pX25vdF9udWxsIiBOT1QgTlVM TCAiaSIgKGluaGVyaXRlZCkKKworRFJPUCBUQUJMRSB0OworLS0KKy0tIFRyeSBtaXhpbmcg cGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0tCitTRVQgc2VhcmNoX3Bh dGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGljOworQ1JFQVRF IFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxF IHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NS RUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lz dGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJl Z2NsYXNzOworIG9pZCB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0rLS0tLS0tLS0tLS0tLS0t LQorIHQgICB8IHAKKygxIHJvdykKKworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0 fScpOworICBvaWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBl bmRpbmcgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpCisgdHBfMV8yIHwg cCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpCisoMiByb3dzKQorCitTRVQgc2VhcmNoX3BhdGggPSBwZ190 ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2Ug cGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRF UiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBf MjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0 aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0IgorU0VUIHNlYXJjaF9wYXRoID0gcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3Rl bnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBf MjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0 aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0IgorRFJPUCBUQUJMRSB0OworU0VUIHNl YXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsK K0JFR0lOOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUg Yy5vaWQgPSAndCc6OnJlZ2NsYXNzOworIG9pZCB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0r LS0tLS0tLS0tLS0tLS0tLQorIHQgICB8IHQKKygxIHJvdykKKworRVhFQ1VURSBnZXRfcGFy dGl0aW9uX2luZm8oJ3t0fScpOworICBvaWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2lu ZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgdCAgICAgICAgICAgICAg fCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpCisgdHBfMV8yIHwgdCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpCisoMiByb3dzKQorCitERUFMTE9D QVRFIGdldF9wYXJ0aXRpb25faW5mbzsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSB0ZW1wb3Jh cnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUk9M TEJBQ0s7CistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0 YWJsZXNwYWNlCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVY IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChp KSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxF IHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBf MF8yOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBX SEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3Bh Y2U7CisgdGFibGVuYW1lIHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzIg ICAgfCByZWdyZXNzX3RibHNwYWNlCisoMiByb3dzKQorCitTRUxFQ1QgdGFibGVuYW1lLCBp bmRleG5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFt ZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJn ZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNl OworIHRhYmxlbmFtZSB8ICBpbmRleG5hbWUgIHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwg dF9wa2V5ICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8yICAgIHwgdHBfMF8yX3Br ZXkgfCByZWdyZXNzX3RibHNwYWNlCisoMiByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBD aGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3Mg bWV0aG9kCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVi bGljOworQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9oZWFwIFRZUEUg VEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChp IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25zX21lcmdlX2hl YXA7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIGMucmVsbmFtZSwgYS5h bW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lk CitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMic6OnJlZ2NsYXNzKQor T1JERVIgQlkgYy5yZWxuYW1lOworIHJlbG5hbWUgfCAgICAgICAgYW1uYW1lICAgICAgICAg CistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgIHwgcGFydGl0 aW9uc19tZXJnZV9oZWFwCisgdHBfMF8yICB8IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorKDIg cm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNf bWVyZ2VfaGVhcDsKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVk cyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgYWxsCistLSB0aGUgbWVyZ2luZyBwYXJ0 aXRpb25zIHRvIGRvIHRoZSBtZXJnZS4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9i OworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsK K0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFU RSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJs ZSB0CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IE9XTkVS IFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIG11 c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8xCitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T047CitBTFRFUiBUQUJMRSB0cF8wXzEgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVy Z2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBf MV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8x XzIKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzFfMiBP V05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBT Q0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2JvYjsKKy0tIFRlc3Q6IHdlIGNhbid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBk aWZmZXJlbnQgb3duZXJzCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2Vf YWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworR1JB TlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3Bh cnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2I7CitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK0NS RUFURSBUQUJMRSB0cF8wXzEoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O OworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2Vf Ym9iOworQ1JFQVRFIFRBQkxFIHRwXzFfMihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFf MiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3Bh cnRpdGlvbnNfbWVyZ2VfYWxpY2UnOgorXGR0IHRwXzBfMQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgICB8 ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgfCB0cF8wXzEg fCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZQorKDEgcm93KQorCist LSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYic6CitcZHQgdHBfMV8y CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAg ICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgT3duZXIg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2IK KygxIHJvdykKKworLS0gRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRp ZmZlcmVudCBvd25lcnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdl ZCBoYXZlIGRpZmZlcmVudCBvd25lcnMKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04g U0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25z X21lcmdlX2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworRFJPUCBST0xFIHJl Z3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRp dGlvbnNfbWVyZ2VfYm9iOworLS0gVGVzdCBmb3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQor Q1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBU QUJMRSB0cDEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJF TUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9u IG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZAorQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cDEsIHRwMikgSU5UTyB0cDM7CitFUlJPUjogIHBh cnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKKy0t IEVSUk9SOiAgbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCBzaG91bGQgaW5jbHVk ZSBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cDEpIElOVE8gdHAzOworRVJST1I6ICBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUg bWVyZ2VkIHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitEUk9QIFRB QkxFIHQ7CistLSBUZXN0IGZvciBtZXJnZWQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAq IFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZB VUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCist LSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQgdGFi bGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VO RVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogVFJJ R0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQor Q1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBFWFRF TkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcsCisgYiBiaWdpbnQs CisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAxJykgU1RPUkVEKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENPTFVNTiB0LmkgSVMg J3QxLmknOworQ1JFQVRFIFRBQkxFIHRwXzBfMQorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4 dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8wXzEnLAorIGIgYmlnaW50LAor IGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitB TFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfMF8xLmkgSVMgJ3RwXzBfMS5pJzsK K0NSRUFURSBUQUJMRSB0cF8xXzIKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFH RSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMV8yJywKKyBiIGJpZ2ludCwKKyBkIGRhdGUg R0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDMtMDMnKSBTVE9SRUQpOworQUxURVIgVEFC TEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzFfMi5pIElTICd0cF8xXzIuaSc7CitDUkVBVEUg U1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVB VEUgU1RBVElTVElDUyB0cF8wXzFfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20g dHBfMF8xOworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMV8yX3N0YXQgKERFUEVOREVOQ0lFUykg b24gaSwgYiBmcm9tIHRwXzFfMjsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9i X2NoZWNrIENIRUNLIChiID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRf Yl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFE RCBDT05TVFJBSU5UIHRfYl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRF UiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsK K0lOU0VSVCBJTlRPIHRwXzBfMShpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJ TlNFUlQgSU5UTyB0cF8xXzIoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDIpOworQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpIFJFVFVSTlMgdHJp Z2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4KKyAgUkFJU0UgTk9U SUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0g JScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgUkVUVVJOIG5l dzsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3df dHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJP Q0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwXzBfMV9i ZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBF QUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8wXzEn KTsKK0NSRUFURSBUUklHR0VSIHRwXzFfMl9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJF Rk9SRSBJTlNFUlQgT04gdHBfMV8yIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVS RSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8xXzInKTsKK1xkKyB0cF8wXzEKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uc19t ZXJnZV9zY2hlbWEudHBfMF8xIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICAg ICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVs bCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGxhaW4gICB8ICAgICAgICAgICAgICB8IHRwXzBfMS5pCisgdCAgICAgIHwgdGV4dCAgICB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdHBfMF8xJzo6dGV4dCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBtYWluICAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAg IHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAg IHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJh dGVkIGFsd2F5cyBhcyAoJzAyLTAyLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSkKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5E IChhYnMoaSkgPj0gMCkgQU5EIChhYnMoaSkgPCAxKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgor ICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sg KGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBO T1QgVkFMSUQKK1N0YXRpc3RpY3Mgb2JqZWN0czoKKyAgICAicGFydGl0aW9uc19tZXJnZV9z Y2hlbWEudHBfMF8xX3N0YXQiIChkZXBlbmRlbmNpZXMpIE9OIGksIGIgRlJPTSB0cF8wXzEK K05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0cF8wXzFfaV9ub3RfbnVsbCIgTk9UIE5V TEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0 ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmln Z2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNU SU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorICAgIHRwXzBfMV9iZWZv cmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNI IFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzBfMScpCisKK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBf MF8xOworXGQrIHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzEiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAg ICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlICB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAg IHwgCisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1 bHRfdCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBleHRlbmRlZCB8 ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRlICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDEtMDEtMjAyMic6 OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24g b2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJhaW50 OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5EIChhYnMoaSkg PCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4g MCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAi dF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK05vdC1udWxsIGNvbnN0cmFp bnRzOgorICAgICJ0X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorICAg ICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdnZXJz OgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRw XzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0 JyksIE9OIFRBQkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxVRVMoMSwgREVG QVVMVCwgMyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJU LCB3aGVuID0gQkVGT1JFLCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHQgT1JERVIgQlkgYjsKKyB0YWJsZW9pZCB8IGkgfCAgICAgICB0ICAgICAg ICB8IGIgfCAgICAgZCAgICAgIAorLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0rLS0tLS0tLS0tLS0tCisgdHBfMF8xICAgfCAwIHwgZGVmYXVsdF90cF8wXzEgfCAxIHwg MDEtMDEtMjAyMgorIHRwXzBfMSAgIHwgMSB8IGRlZmF1bHRfdHBfMV8yIHwgMiB8IDAxLTAx LTIwMjIKKyB0cF8wXzEgICB8IDEgfCBkZWZhdWx0X3QgICAgICB8IDMgfCAwMS0wMS0yMDIy CisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVu Y3Rpb24oKTsKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCB2YWxpZCBmb3Jl aWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBLRVkp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VSVCBJ TlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lO U0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworQUxURVIgVEFCTEUgdF9mayBBREQg Q09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0IE5P VCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtFWQor XGQgdHBfMF8yCisgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9zY2hlbWEudHBfMF8y IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK1BhcnRpdGlv biBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorSW5kZXhlczoKKyAgICAidHBf MF8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKK1JlZmVyZW5jZWQgYnk6CisgICAg VEFCTEUgInRfZmsiIENPTlNUUkFJTlQgInRfZmtfaV9ma2V5IiBGT1JFSUdOIEtFWSAoaSkg UkVGRVJFTkNFUyB0KGkpIE5PVCBWQUxJRAorCistLSBFUlJPUjogIGluc2VydCBvciB1cGRh dGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRf ZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJREFURSBDT05TVFJBSU5UIHRfZmtf aV9ma2V5OworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0RFVEFJTDogIEtl eSAoaSk9KDIpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0Ii4KK0RST1AgVEFCTEUgdF9m azsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCBl bmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQg UFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBf MF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRF IFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsg KGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworQUxURVIgVEFC TEUgdF9mayBBREQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAoaSkgUkVG RVJFTkNFUyB0IE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIE5PVCBFTkZP UkNFRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCisgICAgICBUYWJsZSAicGFydGl0aW9uc19t ZXJnZV9zY2hlbWEudHBfMF8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90 IG51bGwgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQor SW5kZXhlczoKKyAgICAidHBfMF8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKK1Jl ZmVyZW5jZWQgYnk6CisgICAgVEFCTEUgInRfZmsiIENPTlNUUkFJTlQgInRfZmtfaV9ma2V5 IiBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0KGkpIE5PVCBFTkZPUkNFRAorCistLSBF UlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBBTFRF UiBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEVORk9SQ0VEOworRVJST1I6ICBpbnNlcnQgb3Ig dXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0X2ZrX2lfZmtleSIKK0RFVEFJTDogIEtleSAoaSk9KDIpIGlzIG5vdCBwcmVzZW50IGlu IHRhYmxlICJ0Ii4KK0RST1AgVEFCTEUgdF9mazsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3Qg Zm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRF IFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxl b2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBf MF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRF IFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4g MTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworLS0gU2hvdWxk IGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlz IGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGgg aT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElO IChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0tLS0t CisgICAgIDAKKygxIHJvdykKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJh dGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVj b21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBTaG91bGQgYmUgMSBiZWNhdXNlIHBhcnRp dGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMKKy0tIHBh cnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikg RlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0 IFdIRVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitE Uk9QIFRBQkxFIHQ7CistLSBUZXN0IGZvciBnZW5lcmF0ZWQgY29sdW1ucyAoZGlmZmVyZW50 IG9yZGVyIG9mIGNvbHVtbnMgaW4gcGFydGl0aW9uZWQgdGFibGUKKy0tIGFuZCBwYXJ0aXRp b25zKS4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgZyBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoaSArIHRhYmxlb2lkOjppbnQpKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRF IFRBQkxFIHRwXzEgKGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6 aW50KSwgaSBpbnQpOworQ1JFQVRFIFRBQkxFIHRwXzIgKGcgaW50IEdFTkVSQVRFRCBBTFdB WVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSwgaSBpbnQpOworQUxURVIgVEFCTEUgdCBBVFRB Q0ggUEFSVElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9NICgtMSkgVE8gKDEwKTsKK0FMVEVS IFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8yIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgyMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDSEVDSyAoZyA+IDApOworQUxURVIgVEFCTEUg dCBBREQgQ0hFQ0sgKGkgPiAwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICg1KSwgKDE1KTsK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMSwgdHBfMikgSU5UTyB0cF8x MjsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxNik7CistLSBFUlJPUjogIG5ldyByb3cgZm9y IHJlbGF0aW9uICJ0cF8xMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidF9pX2NoZWNr IgorSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApOworRVJST1I6ICBuZXcgcm93IGZvciByZWxh dGlvbiAidHBfMTIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRfaV9jaGVjayIKK0RF VEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwLCB2aXJ0dWFsKS4KKy0tIFNob3VsZCBi ZSAzIHJvd3M6ICg1KSwgKDE1KSwgKDE2KToKK1NFTEVDVCBpIEZST00gdCBPUkRFUiBCWSBp OworIGkgIAorLS0tLQorICA1CisgMTUKKyAxNgorKDMgcm93cykKKworLS0gU2hvdWxkIGJl IDEgYmVjYXVzZSBmb3IgdGhlIHNhbWUgdGFibGVvaWQgKDE1ICsgdGFibGVvaWQpID0gKDUg KyB0YWJsZW9pZCkgKyAxMDoKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDE1 IEFORCBnIElOIChTRUxFQ1QgZyArIDEwIEZST00gdCBXSEVSRSBpID0gNSk7CisgY291bnQg CistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworUkVTRVQgc2Vh cmNoX3BhdGg7CistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitE Uk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTI7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQppbmRleCBhNDI0YmUyYTZiLi42NDY0YTIzOGFjIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBwbGFu Y2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBh cmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNvIG5v dGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBncm91 cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5l IHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFy dGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0 cyBwcmVkaWNhdGUgbnVtYQordGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9qb2lu IHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRp b25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNz aW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVudF90cmlnZ2VyIGRl cGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAj IGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fbWVyZ2Uuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmJi NTM4NmZlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0 aXRpb25fbWVyZ2Uuc3FsCkBAIC0wLDAgKzEsNzk2IEBACistLQorLS0gUEFSVElUSU9OU19N RVJHRQorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAu Li4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hl bWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBC WSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2Rl cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19m ZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAo c2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0x NScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEnKTsK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisK K0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERF RkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAy MiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyMDIyKSBJ TlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgInNhbGVzX2FwcjIwMjIi IGlzIG5vdCBhIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRP IHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rp b25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIy KSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2Vj dGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIw MjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworLS0gRVJS T1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVz ZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2Zl YjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2Zl YjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS1FUlJPUiwgc2FsZXNfYXBy XzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIpIElO VE8gc2FsZXNfYXByXzI7CisKK0NSRUFURSBWSUVXIGphbjIwMjJ2IGFzIFNFTEVDVCAqIEZS T00gc2FsZXNfamFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2ph bl9mZWIyMDIyOworRFJPUCBWSUVXIGphbjIwMjJ2OworCistLSBOTyBFUlJPUjogdGVzdCBm b3IgY3VzdG9tIHBhcnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBwYXJ0aXRpb25zIG5vdCBpbiB0 aGUgc2VhcmNoX3BhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2Fs ZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LnNhbGVzX2ZlYjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX21hcjIw MjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2Fs ZXNfamFuX2ZlYl9tYXIyMDIyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEsIHB1YmxpYzsKKworUFJFUEFSRSBnZXRfcGFydGl0aW9uX2luZm8ocmVnY2xh c3NbXSkgQVMKK1NFTEVDVCAgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsCisgICAgICAg IGMucmVscGVyc2lzdGVuY2UsCisgICAgICAgIGMucmVsa2luZCwKKyAgICAgICAgaS5pbmhk ZXRhY2hwZW5kaW5nLAorICAgICAgICBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkKK0ZST00gICAgcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRh bG9nLnBnX2luaGVyaXRzIGkKK1dIRVJFICAgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmlu aHBhcmVudCA9IEFOWSgkMSkKK09SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywKKyAgICAgICAgIGMub2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIjsKKworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8o J3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0t IEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFydGl0aW9u cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19t YXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5n ZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0 ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAg ICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIw MjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAor ICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAn MjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyks CisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVs bGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwg ICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdH YW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEw LCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlk ZWYoJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0 aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5n ZX0nKTsKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFy dGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxl c19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CisKKy0tIHNob3cgcGFy dGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygn e3NhbGVzX3JhbmdlfScpOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFi bGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyJzsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsK KworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEn OworCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK KworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFydGl0aW9u CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21h cjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jhbmdl X3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAg ICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisg ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcy MDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwK KyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAg JzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp LAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAs ICAnMjAyMi0wNS0wNCcpOworCistLSBNZXJnZSBwYXJ0aXRpb25zIChpbmNsdWRlIERFRkFV TFQgcGFydGl0aW9uKSBpbnRvIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lCistLSBuYW1lCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TCisgIChzYWxlc19qYW4y MDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19vdGhl cnMpIElOVE8gc2FsZXNfb3RoZXJzOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyBP UkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29u ZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7 CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAg KiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOwor LS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5U LCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hB UigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQs IDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwg Jy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVz X2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisg IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2Rh eSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19k YXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBW QUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9N ICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAx KSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyksCisgICgnTWFu YWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAg KCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMiks CisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMs IDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFuYWdlcjMnLCAyMDIy LCA1LCAxKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VMRUNUICogRlJPTSBz YWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICog RlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworQUxU RVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBz YWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworCitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBz YWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01h bmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9m ZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworRFJPUCBUQUJMRSBzYWxl c19kYXRlOworCistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25l ZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNh bGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsK K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3Bs ZSBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlMzBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMzAp IFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2ly b3QnKTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190 cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQK K0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0g JSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBU R19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRS SUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAg QUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1F TlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3Nh bGVzcGVvcGxlJyk7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2Vy dF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisg ICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jv d190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJl IGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxV RVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfMjAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOwor CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc3Blb3Bs ZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVz cGVvcGxlMTBfNDA7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsg c3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWly bm9mZicpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGUwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80 MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdp dGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVz cGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMCk7CistLSBDcmVhdGUgcGFydGl0aW9ucyB3aXRoIHNvbWUgZGVs ZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAoZDEgVkFSQ0hB UigzMCksIHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMChzYWxlc3Bl cnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAoc2FsZXNwZXJzb25f aWQgSU5UIFBSSU1BUlkgS0VZLCBkMyBEQVRFLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKCdkdW1teSB2 YWx1ZSAxJywgMTksICdJdmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMjBfMzAg VkFMVUVTICgyMCwgMTAxLCAnU21pcm5vZmYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl MzBfNDAgVkFMVUVTICgzMSwgbm93KCksICdQb3BvdicpOworCitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZTEwXzIwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUy MF8zMCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJP UCBDT0xVTU4gZDM7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJ T04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMw IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgz MCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAn UG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNh bGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80 MDsKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTsKK3NlbGVjdCAqIGZyb20gc2FsZXNw ZW9wbGUwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUxMF80MDsKKworRFJPUCBU QUJMRSBzYWxlc3Blb3BsZTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25z CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21h cjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIw MjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElU SU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNC0xMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFS VElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcp IFRPICgnMjAyMi0wNC0yMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAg UEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0y MCcpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNI IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3Jh bmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19k YXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyks CisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVl dicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwg ICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdN dWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUw LCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0w NicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywg J0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gc2FsZXNfYXByMjAyMiBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisK K0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXBy MjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkg SU5UTyBzYWxlc19hcHJfYWxsOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gc2FsZXNfYXByMjAyMiBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmlu ZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0 aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lk IElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50 IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg Rk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsK K0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf Y2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2xp c3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZP UiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVG QVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNfbGlz dCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7CisK Ky0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFy dGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFs KSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19l YXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6ICByZWxh dGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2Fs ZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2FsZXNfYWxsOworCitE Uk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsMjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7 CitEUk9QIFRBQkxFIHNhbGVzX2xpc3QyOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCist LQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0 aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJ TlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJ TlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRl KTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04g c2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5E RVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJl ZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycs ICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxV RVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAg ICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywg ICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJz YnVyZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3Jywg ICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2Jvbics ICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4n LCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5JywgICAgICAnSGVsc2lu a2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRp dm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAgICAgICdIZWxz aW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVyJywgICAnT3Ns bycsICAgICAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAoJ011bGxlcicsICAgJ01h ZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdL eWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgnR2FuZGknLCAgICAn V2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAg J0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKKworLS0gc2hvdyBwYXJ0 aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7 c2FsZXNfbGlzdH0nKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVz X2FsbDsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUg Z2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVz cGVyc29uX2lkOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0 ZXIgbWVyZ2luZyBwYXJ0aXRpb25zCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NF TEVDVCAqIEZST00gc2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsK K1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2 YW5vdic7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIHNhbGVzX2xp c3Q7CisKKy0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9ucyBvZiBhbm90aGVyIHRhYmxl LgorLS0KK0NSRUFURSBUQUJMRSB0MSAoaSBpbnQsIGEgaW50LCBiIGludCwgYyBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoYSwgYik7CitDUkVBVEUgVEFCTEUgdDFwMSBQQVJUSVRJT04g T0YgdDEgRk9SIFZBTFVFUyBGUk9NICgxLCAxKSBUTyAoMSwgMik7CitDUkVBVEUgVEFCTEUg dDIgKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBSQU5HRSAodCk7CitDUkVBVEUgVEFC TEUgdDJwYSBQQVJUSVRJT04gT0YgdDIgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQycp OworQ1JFQVRFIFRBQkxFIHQzIChpIGludCwgdCB0ZXh0KTsKKworLS0gRVJST1I6ICByZWxh dGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVS IFRBQkxFIHQyIE1FUkdFIFBBUlRJVElPTlMgKHQxcDEsIHQycGEpIElOVE8gdDJwOworLS0g RVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAi dDIiCitBTFRFUiBUQUJMRSB0MiBNRVJHRSBQQVJUSVRJT05TICh0MnBhLCB0MykgSU5UTyB0 MnA7CisKK0RST1AgVEFCTEUgdDM7CitEUk9QIFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsK KworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIHRlbXBvcmFyeSB0YWJsZS4K Ky0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChp KTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworRVhFQ1VURSBnZXRfcGFydGl0 aW9uX2luZm8oJ3t0fScpOworCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworLS0gUGFydGl0aW9uIHNob3VsZCBiZSB0 ZW1wb3JhcnkuCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisKK0RST1Ag VEFCTEUgdDsKKworLS0KKy0tIENoZWNrIHRoZSBwYXJ0aXRpb24gaW5kZXggbmFtZSBpZiB0 aGUgcGFydGl0aW9uIG5hbWUgaXMgdGhlIHNhbWUgYXMgb25lCistLSBvZiB0aGUgbWVyZ2Vk IHBhcnRpdGlvbnMuCistLQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCBQUklNQVJZIEtFWShp KSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0 cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisKK0NS RUFURSBJTkRFWCB0aWR4IE9OIHQoaSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzFfMiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsKKworLS0gSW5kZXhuYW1lIHZhbHVl cyBzaG91bGQgYmUgJ3RwXzFfMl9wa2V5JyBhbmQgJ3RwXzFfMl9pX2lkeCcuCistLSBOb3Qt bnVsbCBjb25zdHJhaW50IG5hbWUgc2hvdWxkIGJlICd0cF8xXzJfaV9ub3RfbnVsbCcuCitc ZCsgdHBfMV8yCisKK0RST1AgVEFCTEUgdDsKKworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFu ZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0tCitTRVQgc2VhcmNoX3BhdGggPSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGljOworQ1JFQVRFIFRBQkxF IHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBf MSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBU QUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7 CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5j ZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xh c3M7CisKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKworU0VUIHNlYXJj aF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKwor LS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3Jhcnkg cGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBf MV8yKSBJTlRPIHRwXzBfMjsKKworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEsIHB1YmxpYzsKKworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRp b25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBB UlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworRFJPUCBU QUJMRSB0OworCitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYSwgcHVibGljOworCitCRUdJTjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRh bG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworCitFWEVDVVRF IGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisKK0RFQUxMT0NBVEUgZ2V0X3BhcnRpdGlv bl9pbmZvOworCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cGdfdGVtcCwgcHVibGljOworCistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9u cyBpbnRvIGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7CisKKy0t IENoZWNrIHRoZSBuZXcgcGFydGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlc3BhY2UK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitD UkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitTRUxF Q1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxl bmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19t ZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVzcGFjZTsKK1NFTEVD VCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAg V0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdw YXJ0aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5h bWUsIHRhYmxlc3BhY2U7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFy dGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgQUND RVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhl YXBfdGFibGVhbV9oYW5kbGVyOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKK0NSRUFURSBUQUJM RSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitD UkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFf MikgSU5UTyB0cF8wXzI7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19j bGFzcyBjIEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElO ICgndCc6OnJlZ2NsYXNzLCAndHBfMF8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5h bWU7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJn ZV9oZWFwOworCistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMg dG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0 aW9ucyB0byBkbyB0aGUgbWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsK K0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsK K0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFU RSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFy dGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBf MF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O OworCitBTFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv YjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2Vf Ym9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikg SU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRB QkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBf MF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0cF8x XzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JF U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFM TCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJPUCBST0xF IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFy dGl0aW9uX21lcmdlX2JvYjsKKworCistLSBUZXN0OiB3ZSBjYW4ndCBtZXJnZSBwYXJ0aXRp b25zIHdpdGggZGlmZmVyZW50IG93bmVycworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRp b25zX21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdl X2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8g cmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9i OworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2Vf YWxpY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRp b25zX21lcmdlX2JvYjsKK0NSRUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOworUkVTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OOworCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CisKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8w XzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQ QVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCistLSBPd25l ciBpcyAncmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlJzoKK1xkdCB0cF8wXzEKKy0t IE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iJzoKK1xkdCB0cF8xXzIK KworLS0gRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBv d25lcnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIp IElOVE8gdHBfMF8yOworCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9h bGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZS T00gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3Bh cnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21l cmdlX2JvYjsKKworCistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVB VEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxF IHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlO REVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJ VEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBv ZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHAxLCB0cDIpIElOVE8gdHAzOworCistLSBFUlJPUjog IGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVh c3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAx KSBJTlRPIHRwMzsKKworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3QgZm9yIG1lcmdlZCBw YXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBD T01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxU UyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBT VE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNU UkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBw YXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dF UlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCisKK0NSRUFURSBUQUJMRSB0CisoaSBpbnQgTk9U IE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJFU1NJT04gcGdseiBERUZB VUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlT IGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFIChhYnMoaSkp OworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKKworQ1JFQVRFIFRBQkxFIHRw XzBfMQorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAn ZGVmYXVsdF90cF8wXzEnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlT IGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJU SVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ09NTUVOVCBPTiBD T0xVTU4gdHBfMF8xLmkgSVMgJ3RwXzBfMS5pJzsKKworQ1JFQVRFIFRBQkxFIHRwXzFfMgor KGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVs dF90cF8xXzInLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgn MjAyMi0wMy0wMycpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04g dHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xVTU4g dHBfMV8yLmkgSVMgJ3RwXzFfMi5pJzsKKworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChE RVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMF8x X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzBfMTsKK0NSRUFURSBTVEFU SVNUSUNTIHRwXzFfMl9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF8xXzI7 CisKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNLIChiID4g MCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sgKGIg PiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9j aGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05T VFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsKKworSU5TRVJUIElOVE8gdHBf MF8xKGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lOU0VSVCBJTlRPIHRwXzFf MihpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdw bHBnc3FsJyBBUworJEJPRFkkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkg Y2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwg VEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICBSRVRVUk4gbmV3OworRU5EOworJEJPRFkk OworCitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JF IElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2Vy X2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF8wXzFfYmVmb3JlX2luc2VydF9y b3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cKKyAgRVhF Q1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJyk7CitDUkVBVEUgVFJJ R0dFUiB0cF8xXzJfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9O IHRwXzFfMiBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5j dGlvbigndHBfMV8yJyk7CisKK1xkKyB0cF8wXzEKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8xOworXGQrIHRwXzBfMQorCitJ TlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZIGI7CitEUk9QIFRBQkxFIHQ7 CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKworCistLSBUZXN0IE1FUkdF IFBBUlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JF QVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsK K0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAo MSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkg Rk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworLS0g U2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCistLSBFUlJPUjog IGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJREFURSBD T05TVFJBSU5UIHRfZmtfaV9ma2V5OworCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxF IHQ7CisKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCBlbmZvcmNlZCBmb3Jl aWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBLRVkp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VSVCBJ TlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lO U0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworCitBTFRFUiBUQUJMRSB0X2ZrIEFE RCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQg Tk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSBOT1QgRU5GT1JDRUQgRk9S RUlHTiBLRVkKK1xkIHRwXzBfMgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRh YmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtl eSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBFTkZP UkNFRDsKKworRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3Qg Zm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRF IFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxl b2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBf MF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRF IFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4g MTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBTaG91 bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAg aXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0 aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQg SU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRhYl9pZCIg Y29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJp YnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNo b3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9 MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRo IGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJ TiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworCitEUk9QIFRBQkxFIHQ7 CisKKworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRlciBv ZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxlCistLSBhbmQgcGFydGl0aW9ucykuCitD UkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0 YWJsZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0 cF8xIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkg aW50KTsKK0NSRUFURSBUQUJMRSB0cF8yIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChp ICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJ VElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSB0 IEFUVEFDSCBQQVJUSVRJT04gdHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOwor QUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENI RUNLIChpID4gMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoNSksICgxNSk7CisKK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMSwgdHBfMikgSU5UTyB0cF8xMjsKKwor SU5TRVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVs YXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hlY2siCitJ TlNFUlQgSU5UTyB0IFZBTFVFUyAoMCk7CistLSBTaG91bGQgYmUgMyByb3dzOiAoNSksICgx NSksICgxNik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKKy0tIFNob3VsZCBiZSAx IGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxlb2lkICgxNSArIHRhYmxlb2lkKSA9ICg1ICsg dGFibGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAxNSBB TkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOworCitEUk9QIFRB QkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMjsKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------XEAYgt3gS02JDDwnDECZzzia Content-Type: text/plain; charset=UTF-8; name="v50-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v50-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlZWRkYTM4MGYwMGIzNmFjMDA2N2ZlMDEzMTYxYTk2MzA3MmM1MmUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTAgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcwoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBBbGV4YW5kZXIg S29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJbG1hcmkgTWFu bnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29y b3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jpc292ClJldmll d2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4s IEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5OiBEYW5pZWwg R3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3JjL3NnbWwvZGRs LnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAgOTUgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0NjUgKysrKysKIHNyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAgMzggKy0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAgNzIgKy0K IHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICA2ODQg KysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAg IHwgICAxOCArCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICAg ICAgfCAgIDEwICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAg ICAgICAgfCAgIDE2ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAg ICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmggICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggICAg ICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlv bi1zcGxpdC5vdXQgICAgfCAgMTkwICsrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlICAgICAgICAgfCAgICAxICsKIHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9w YXJ0aXRpb24tc3BsaXQuc3BlYyB8ICAgNTQgKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAxNjU1ICsrKysrKysrKysrKysrKysrCiBzcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsICAgICAgfCAxMTQ4ICsr KysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAg ICAgIHwgICAgMiArCiAyMCBmaWxlcyBjaGFuZ2VkLCA0NDU2IGluc2VydGlvbnMoKyksIDIz IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9l eHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0 LnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dt bC9kZGwuc2dtbAppbmRleCBkZGIxMzc2YTZlLi5jMjIwYTFjYmMwIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00 NDcxLDYgKzQ0NzEsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICAgICAgICAg ICAgICAgICAgICBtZWFzdXJlbWVudF95MjAwNm0wMykgSU5UTyBtZWFzdXJlbWVudF95MjAw NnExOwogPC9wcm9ncmFtbGlzdGluZz4KICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAg ICAgU2ltaWxhcmx5IHRvIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucywgdGhl cmUgaXMgYW4gb3B0aW9uIGZvcgorICAgICBzcGxpdHRpbmcgYSBzaW5nbGUgcGFydGl0aW9u IGludG8gbXVsdGlwbGUgdXNpbmcgdGhlCisgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRl cnRhYmxlLXNwbGl0LXBhcnRpdGlvbiI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTjwvY29tbWFuZD48L2xpbms+LgorICAgICBUaGlzIGZlYXR1cmUgY291bGQg Y29tZSBpbiBoYW5keSB3aGVuIG9uZSBwYXJ0aXRpb24gZ3Jvd3MgdG9vIGJpZworICAgICBh bmQgbmVlZHMgdG8gYmUgc3BsaXQgaW50byBtdWx0aXBsZS4gIEl0J3MgaW1wb3J0YW50IHRv IG5vdGUgdGhhdAorICAgICB0aGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMKKyAgICAgYW4gPGxpdGVyYWw+ QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2ggY291bGQgaW1wYWN0IGhp Z2gtbG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydzIHJlc3RyaWN0aXZlIG5h dHVyZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4gc3BsaXQKKyAgICAgdGhlIHF1YXJ0ZXIgcGFy dGl0aW9uIGJhY2sgdG8gbW9udGhseSBwYXJ0aXRpb25zOgorPHByb2dyYW1saXN0aW5nPgor QUxURVIgVEFCTEUgbWVhc3VyZW1lbnQgU1BMSVQgUEFSVElUSU9OIG1lYXN1cmVtZW50X3ky MDA2cTEgSU5UTworICAgKFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMSBGT1IgVkFM VUVTIEZST00gKCcyMDA2LTAxLTAxJykgVE8gKCcyMDA2LTAyLTAxJyksCisgICAgUEFSVElU SU9OIG1lYXN1cmVtZW50X3kyMDA2bTAyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDItMDEn KSBUTyAoJzIwMDYtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZt MDMgRk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMy0wMScpIFRPICgnMjAwNi0wNC0wMScpKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9wYXJhPgorCiAgICA8L3NlY3QzPgogCiAgICA8 c2VjdDMgaWQ9ImRkbC1wYXJ0aXRpb25pbmctZGVjbGFyYXRpdmUtbGltaXRhdGlvbnMiPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IGM4Zjc4NGJjYmMuLjY2MGU2N2Y3 MTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTM5LDYgKzM5LDEwIEBA IEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIERFVEFDSCBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBD T05DVVJSRU5UTFkgfCBGSU5BTElaRSBdCiBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBN RVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0 aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CitB TFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICBTUExJVCBQQVJUSVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5UTwor ICAgICAgICAoUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBE RUZBVUxUIH0sCisgICAgICAgICBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxh Y2VhYmxlPiB8IERFRkFVTFQgfSBbLCAuLi5dKQogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY3Rpb248L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6 PC9waHJhc2U+CiAKQEAgLTExNDksNiArMTE1Myw3MSBAQCBXSVRIICggTU9EVUxVUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJs ZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZh cmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj4KKyAgICA8 dGVybT48bGl0ZXJhbD5TUExJVCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5UTyAoUEFSVElUSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2Vh YmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0sIFBBUlRJVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNl YWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0pPC9s aXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBU aGlzIGZvcm0gc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxl IGludG8gYSBuZXcKKyAgICAgIHBhcnRpdGlvbnMuIEhhc2gtcGFydGl0aW9uZWQgdGFyZ2V0 IHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuIEJvdW5kcyBvZiBuZXcKKyAgICAgIHBhcnRpdGlv bnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZCBleGlzdGluZyBwYXJ0aXRpb25z CisgICAgICAoZXhjZXB0IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fbmFtZTwvcmVwbGFjZWFibGU+KS4KKyAgICAgIElmIHRoZSBzcGxpdCBwYXJ0aXRpb24g aXMgYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24sIG9uZSBvZgorICAg ICAgdGhlIG5ldyBwYXJ0aXRpb25zIG11c3QgYmUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJh bD4uCisgICAgICBJbiBjYXNlIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgb3Igb25lIG9m IGV4aXN0aW5nIHBhcnRpdGlvbnMgaXMKKyAgICAgIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVy YWw+LCBuZXcgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBjYW4KKyAg ICAgIGhhdmUgc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMuICBJZiB0aGUgcGFy dGl0aW9uZWQgdGFibGUgZG9lcyBub3QKKyAgICAgIGhhdmUgYSA8bGl0ZXJhbD5ERUZBVUxU PC9saXRlcmFsPiBwYXJ0aXRpb24sIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPgor ICAgICAgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBvZiB0aGUgbmV3IHBhcnRp dGlvbnMuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJbiBjYXNlIG5ldyBw YXJ0aXRpb25zIGRvIG5vdCBjb250YWluIGEgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4K KyAgICAgIHBhcnRpdGlvbiBhbmQgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90IGhh dmUgYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uLCB0aGUg Zm9sbG93aW5nIG11c3QgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucwor ICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwv cmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gc2hvdWxkCisgICAgICBiZSBlcXVh bCB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICBPbmUgb2YgdGhl IG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbiBoYXZlCisg ICAgICB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgKHRo aXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxpdHRpbmcgYSA8bGl0ZXJhbD5ERUZBVUxU PC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uOiB3ZSBzcGxpdCBpdCwgYnV0IGFmdGVyIHNw bGl0dGluZyB3ZSBoYXZlIGEgcGFydGl0aW9uIHdpdGggdGhlCisgICAgICBzYW1lIG5hbWUp LiAgT25seSBzaW1wbGUsIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb24gY2FuIGJlIHNwbGl0 LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgTmV3IHBhcnRpdGlvbnMgd2ls bCBoYXZlIHRoZSBzYW1lIG93bmVyIGFzIHRoZSBwYXJlbnQgcGFydGl0aW9uLgorICAgICAg SXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255bT5BQ0w8 L2Fjcm9ueW0+IG9uIG5ldworICAgICAgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJhPgorICAg ICA8cGFyYT4KKyAgICAgIFRoZSBpbmRleGVzIGFuZCBpZGVudGl0eSBhcmUgY3JlYXRlZCBs YXRlciwgYWZ0ZXIgbW92aW5nIHRoZSBkYXRhCisgICAgICBpbnRvIHRoZSBuZXcgcGFydGl0 aW9ucy4KKyAgICAgIEV4dGVuZGVkIHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBmcm9tIHRo ZSBwYXJlbnQgdGFibGUsIGZvciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICA8Y29tbWFuZD5D UkVBVEUgVEFCTEUgUEFSVElUSU9OIE9GPC9jb21tYW5kPi4KKyAgICAgIE5ldyBwYXJ0aXRp b25zIHdpbGwgaW5oZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0 ZW5jZQorICAgICAgdHlwZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudCB0YWJsZS4K KyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFdoZW4gcGFydGl0aW9uIGlzIHNw bGl0LCBhbnkgaW5kaXZpZHVhbCBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGlzCisgICAgICBw YXJ0aXRpb24sIHN1Y2ggYXMgY29uc3RyYWludHMgb3Igc3RhdGlzdGljcyB3aWxsIGJlIGRy b3BwZWQuIFRoaXMgY2N1cnMKKyAgICAgIGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIgVEFCTEUg U1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBp dHNlbGYKKyAgICAgIGFzIHRoZSB0ZW1wbGF0ZSB0byBkZWZpbmUgdGhlc2Ugb2JqZWN0cy4K KyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIElmIHNwbGl0IHBhcnRpdGlvbiBo YXMgc29tZSBvYmplY3RzIGRlcGVuZGVudCBvbiBpdCwgdGhlIGNvbW1hbmQgY2FuCisgICAg ICBub3QgYmUgZG9uZSAoPGxpdGVyYWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaXMgbm90IHVzZWQs IGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+CisgICAgIDxub3Rl PgorICAgICAgPHBhcmE+CisgICAgICAgU3BsaXQgcGFydGl0aW9uIGFjcXVpcmVzIGEgPGxp dGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgorICAgICAgIHRoZSBw YXJlbnQgdGFibGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVT SVZFPC9saXRlcmFsPgorICAgICAgIGxvY2sgb24gdGhlIHRhYmxlIGJlaW5nIHNwbGl0Lgor ICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1tZXJn ZS1wYXJ0aXRpb25zIj4KICAgICA8dGVybT48bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05TICg8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNl YWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVybT4KIApA QCAtMTI0Myw3ICsxMzEyLDggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIEFs bCB0aGUgZm9ybXMgb2YgPGNvbW1hbmQ+QUxURVIgVEFCTEU8L2NvbW1hbmQ+IHRoYXQgYWN0 IG9uIGEgc2luZ2xlIHRhYmxlLAogICAgZXhjZXB0IDxsaXRlcmFsPlJFTkFNRTwvbGl0ZXJh bD4sIDxsaXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+LAogICAgPGxpdGVyYWw+QVRUQUNI IFBBUlRJVElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVy YWw+LAotICAgYW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+IGNhbiBi ZSBjb21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5TUExJVCBQQVJUSVRJT048L2xpdGVyYWw+ LCBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4KKyAgIGNhbiBiZSBj b21iaW5lZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMgdG8gYmUg YXBwbGllZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2libGUgdG8g YWRkIHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2ZXJhbAog ICAgY29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkg dXNlZnVsIHdpdGggbGFyZ2UKQEAgLTE0ODcsNyArMTU1Nyw3IEBAIFdJVEggKCBNT0RVTFVT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxh Y2VhYmxlPiwgUkVNCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAg IFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9y IHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCi0gICAgICAgIG9yIHRoZSBuYW1lIG9mIHRo ZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4KKyAgICAgICAgb3IgdGhlIG5hbWUgb2Ygc3BsaXQg cGFydGl0aW9uLCBvciB0aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24uCiAg ICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+ CkBAIC0xNDk3LDcgKzE1NjcsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAg ICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MjwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJh PgotICAgICAgICBUaGUgbmFtZXMgb2YgdGhlIHRhYmxlcyBiZWluZyBtZXJnZWQgaW50byB0 aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgICAgVGhlIG5hbWVzIG9mIHRoZSB0YWJsZXMgYmVp bmcgbWVyZ2VkIGludG8gdGhlIG5ldyBwYXJ0aXRpb24gb3Igc3BsaXQgaW50bworICAgICAg ICBuZXcgcGFydGl0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgog ICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE5MzAsNiArMjAwMSwyNCBAQCBBTFRFUiBUQUJM RSBtZWFzdXJlbWVudAogICAgIERFVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMTVt MTI7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRvIHNwbGl0 IGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgcmFuZ2UtcGFydGl0aW9uZWQgdGFibGU6Cis8 cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIzIElOVE8KKyAgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMyBGT1IgVkFMVUVTIEZST00gKCcyMDIzLTAyLTAxJykgVE8gKCcyMDIzLTAzLTAxJyks CisgICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0w My0wMScpIFRPICgnMjAyMy0wNC0wMScpLAorICAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIz IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDQtMDEnKSBUTyAoJzIwMjMtMDUtMDEnKSk7Cis8 L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRvIHNwbGl0IGEgc2lu Z2xlIHBhcnRpdGlvbiBvZiB0aGUgbGlzdC1wYXJ0aXRpb25lZCB0YWJsZToKKzxwcm9ncmFt bGlzdGluZz4KK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2FsbCBJTlRPCisgICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfZWFz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisg ICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCiAgIDxwYXJh PgogICAgVG8gbWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRpdGlvbiBv ZiB0aGUgdGFyZ2V0IHRhYmxlOgogPHByb2dyYW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwppbmRleCA1MGZkN2ZjOTA1Li45Y2UzNmIwNjY0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwpAQCAtNzQyLDYgKzc0Miw5IEBAIHN0YXRpYyBjaGFyIEdldEF0 dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSk7 CiAKIHN0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJICBQYXJ0aXRp b25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRp YyB2b2lkIEFURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwKKwkJCQkJCQkJIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQs CisJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRpb24KQEAgLTQ4MzksNiArNDg0MiwxMCBAQCBB bHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMpCiAJCQkJY21kX2xvY2ttb2RlID0g QWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBh cnRpdGlvbjoKKwkJCQljbWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJ CWJyZWFrOworCiAJCQlkZWZhdWx0OgkJCS8qIG9vcHMgKi8KIAkJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIGNtZC0+ c3VidHlwZSk7CkBAIC01Mjc5LDYgKzUyODYsMTEgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVl dWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogTm8gY29tbWFu ZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKIAkJ CWJyZWFrOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJQVRTaW1wbGVQZXJtaXNz aW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCS8q IE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNT X01JU0M7CisJCQlicmVhazsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQp IGNtZC0+c3VidHlwZSk7CkBAIC01NjgzLDYgKzU2OTUsMTQgQEAgQVRFeGVjQ21kKExpc3Qg Kip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCUFURXhlY01lcmdlUGFydGl0 aW9ucyh3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAogCQkJ CQkJCQkgIGNvbnRleHQpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246 CisJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwg ZmFsc2UsIGxvY2ttb2RlLAorCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CisJCQlB c3NlcnQoY21kICE9IE5VTEwpOworCQkJQXNzZXJ0KHJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJQVRFeGVjU3BsaXRQYXJ0aXRpb24o d3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJCQkJ IGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAo aW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNjcyNSw2ICs2NzQ1LDggQEAgYWx0ZXJfdGFibGVf dHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21kdHlwZSkKIAkJCXJldHVybiAiREVU QUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9u czoKIAkJCXJldHVybiAiTUVSR0UgUEFSVElUSU9OUyI7CisJCWNhc2UgQVRfU3BsaXRQYXJ0 aXRpb246CisJCQlyZXR1cm4gIlNQTElUIFBBUlRJVElPTiI7CiAJCWNhc2UgQVRfQWRkSWRl bnRpdHk6CiAJCQlyZXR1cm4gIkFMVEVSIENPTFVNTiAuLi4gQUREIElERU5USVRZIjsKIAkJ Y2FzZSBBVF9TZXRJZGVudGl0eToKQEAgLTIyOTMxLDMgKzIyOTUzLDQ0NiBAQCBBVEV4ZWNN ZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBS ZWxhdGlvbiByZWwsCiAJLyogUmVzdG9yZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQu ICovCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29u dGV4dCk7CiB9CisKKworLyoKKyAqIFN0cnVjdCB3aXRoIGNvbnRleHQgb2YgbmV3IHBhcnRp dGlvbiBmb3IgaW5zZXJ0aW5nIHJvd3MgZnJvbSBzcGxpdCBwYXJ0aXRpb24KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgU3BsaXRQYXJ0aXRpb25Db250ZXh0Cit7CisJRXhwclN0YXRlICAqcGFy dHF1YWxzdGF0ZTsJLyogZXhwcmVzc2lvbiBmb3IgY2hlY2tpbmcgc2xvdCBmb3IgcGFydGl0 aW9uCisJCQkJCQkJCSAqIChOVUxMIGZvciBERUZBVUxUIHBhcnRpdGlvbikgKi8KKwlCdWxr SW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0 aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsJLyogc2xvdCBmb3IgaW5zZXJ0 aW5nIHJvdyBpbnRvIHBhcnRpdGlvbiAqLworCUFsdGVyZWRUYWJsZUluZm8gKnRhYjsJCS8q IHN0cnVjdG9yZSB3aXRoIGdlbmVyYXRlZCBjb2x1bW4gZXhwcmVzc2lvbnMKKwkJCQkJCQkJ ICogYW5kIGNoZWNrIGNvbnN0cmFpbnQgZXhwcmVzc3Npb25zLiAqLworCVJlbGF0aW9uCXBh cnRSZWw7CQkvKiByZWxhdGlvbiBmb3IgcGFydGl0aW9uICovCit9IFNwbGl0UGFydGl0aW9u Q29udGV4dDsKKworLyoKKyAqIGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogY3JlYXRl IGNvbnRleHQgZm9yIHBhcnRpdGlvbiBhbmQgZmlsbCBpdAorICovCitzdGF0aWMgU3BsaXRQ YXJ0aXRpb25Db250ZXh0ICoKK2NyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChSZWxhdGlv biBwYXJ0UmVsKQoreworCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGM7CisKKwlwYyA9IChT cGxpdFBhcnRpdGlvbkNvbnRleHQgKikgcGFsbG9jMChzaXplb2YoU3BsaXRQYXJ0aXRpb25D b250ZXh0KSk7CisJcGMtPnBhcnRSZWwgPSBwYXJ0UmVsOworCisJLyoKKwkgKiBQcmVwYXJl IGEgQnVsa0luc2VydFN0YXRlIGZvciB0YWJsZV90dXBsZV9pbnNlcnQuIFRoZSBGU00gaXMg ZW1wdHksIHNvCisJICogZG9uJ3QgYm90aGVyIHVzaW5nIGl0LgorCSAqLworCXBjLT5iaXN0 YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgdHVwbGUgc2xvdCBm b3IgbmV3IHBhcnRpdGlvbi4gKi8KKwlwYy0+ZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRl KHBjLT5wYXJ0UmVsLCBOVUxMKTsKKworCXJldHVybiBwYzsKK30KKworLyoKKyAqIGRlbGV0 ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogZGVsZXRlIGNvbnRleHQgZm9yIHBhcnRpdGlvbgor ICovCitzdGF0aWMgdm9pZAorZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFy dGl0aW9uQ29udGV4dCAqcGMsIExpc3QgKip3cXVldWUsIGludCB0aV9vcHRpb25zKQorewor CUxpc3RDZWxsICAgKmx0YWI7CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHBj LT5kc3RzbG90KTsKKwlGcmVlQnVsa0luc2VydFN0YXRlKHBjLT5iaXN0YXRlKTsKKworCXRh YmxlX2ZpbmlzaF9idWxrX2luc2VydChwYy0+cGFydFJlbCwgdGlfb3B0aW9ucyk7CisKKwkv KgorCSAqIFdlIGRvbid0IG5lZWQgcHJvY2VzcyB0aGlzIHBjLT5wYXJ0UmVsIHNvIGRlbGV0 ZSB0aGUgQUxURVIgVEFCTEUgcXVldWUKKwkgKiBvZiBpdC4KKwkgKi8KKwlmb3JlYWNoKGx0 YWIsICp3cXVldWUpCisJeworCQlBbHRlcmVkVGFibGVJbmZvICp0YWIgPSAoQWx0ZXJlZFRh YmxlSW5mbyAqKSBsZmlyc3QobHRhYik7CisJCWlmICh0YWItPnJlbGlkID09IFJlbGF0aW9u R2V0UmVsaWQocGMtPnBhcnRSZWwpKQorCQkJKndxdWV1ZSA9IGxpc3RfZGVsZXRlX2NlbGwo KndxdWV1ZSwgbHRhYik7CisJfQorCisJcGZyZWUocGMpOworfQorCisvKgorICogU3BsaXRQ YXJ0aXRpb25Nb3ZlUm93czogc2NhbiBzcGxpdCBwYXJ0aXRpb24gKHNwbGl0UmVsKSBvZiBw YXJ0aXRpb25lZCB0YWJsZQorICogKHJlbCkgYW5kIG1vdmUgcm93cyBpbnRvIG5ldyBwYXJ0 aXRpb25zLgorICoKKyAqIE5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9uOgorICogcGFydGxp c3Q6IGxpc3Qgb2YgcG9pbnRlcnMgdG8gU2luZ2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3R1cmVz LgorICogbmV3UGFydFJlbHM6IGxpc3Qgb2YgUmVsYXRpb25zLgorICogZGVmYXVsdFBhcnRP aWQ6IG9pZCBvZiBERUZBVUxUIHBhcnRpdGlvbiwgZm9yIHRhYmxlIHJlbC4KKyAqLworc3Rh dGljIHZvaWQKK1NwbGl0UGFydGl0aW9uTW92ZVJvd3MoTGlzdCAqKndxdWV1ZSwgUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBzcGxpdFJlbCwKKwkJCQkJICAgTGlzdCAqcGFydGxpc3QsIExp c3QgKm5ld1BhcnRSZWxzLCBPaWQgZGVmYXVsdFBhcnRPaWQpCit7CisJLyogVGhlIEZTTSBp cyBlbXB0eSwgc28gZG9uJ3QgYm90aGVyIHVzaW5nIGl0LiAqLworCWludAkJCXRpX29wdGlv bnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CisJQ29tbWFuZElkCW15Y2lkOworCUVTdGF0 ZQkgICAqZXN0YXRlOworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7 CisJVHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJRXhwckNvbnRleHQgKmVjb250ZXh0Owor CVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlTbmFwc2hvdAlzbmFwc2hvdDsKKwlNZW1vcnlDb250 ZXh0IG9sZEN4dDsKKwlMaXN0CSAgICpwYXJ0Q29udGV4dHMgPSBOSUw7CisJVHVwbGVDb252 ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpkZWZhdWx0 UGFydEN0eCA9IE5VTEwsCisJCQkgICAqcGM7CisJYm9vbAkJaXNPbGREZWZhdWx0UGFydCA9 IGZhbHNlOworCisJbXljaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCisJZXN0 YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCisJZm9yYm90aChsaXN0cHRyLCBwYXJ0 bGlzdCwgbGlzdHB0cjIsIG5ld1BhcnRSZWxzKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3Bl YyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJ CXBjID0gY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KChSZWxhdGlvbikgbGZpcnN0KGxp c3RwdHIyKSk7CisKKwkJLyogRmluZCB0aGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgbmV3IHBh cnRpdGlvbiB0YWJsZTogbmV3UGFydFJlbC4gKi8KKwkJcGMtPnRhYiA9IEFUR2V0UXVldWVF bnRyeSh3cXVldWUsIHBjLT5wYXJ0UmVsKTsKKworCQlidWlsZEV4cHJlc3Npb25FeGVjdXRp b25TdGF0ZXMocGMtPnRhYiwgcGMtPnBhcnRSZWwsIGVzdGF0ZSk7CisKKwkJaWYgKHNwcy0+ Ym91bmQtPmlzX2RlZmF1bHQpCisJCXsKKwkJCS8qIFdlIHNob3VsZCBub3QgY3JlYXRlIGNv bnN0cmFpbnQgZm9yIGRldGFjaGVkIERFRkFVTFQgcGFydGl0aW9uLiAqLworCQkJZGVmYXVs dFBhcnRDdHggPSBwYzsKKwkJfQorCQllbHNlCisJCXsKKwkJCUxpc3QJICAgKnBhcnRDb25z dHJhaW50OworCisJCQkvKiBCdWlsZCBleHByZXNzaW9uIGV4ZWN1dGlvbiBzdGF0ZXMgZm9y IHBhcnRpdGlvbiBjaGVjayBxdWFscy4gKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gZ2V0X3F1 YWxfZnJvbV9wYXJ0Ym91bmQocmVsLCBzcHMtPmJvdW5kKTsKKwkJCXBhcnRDb25zdHJhaW50 ID0KKwkJCQkoTGlzdCAqKSBldmFsX2NvbnN0X2V4cHJlc3Npb25zKE5VTEwsCisJCQkJCQkJ CQkJCQkoTm9kZSAqKSBwYXJ0Q29uc3RyYWludCk7CisJCQkvKiBNYWtlIGJvb2xlYW4gZXhw cmVzc2lvbiBmb3IgRXhlY0NoZWNrKCkuICovCisJCQlwYXJ0Q29uc3RyYWludCA9IGxpc3Rf bWFrZTEobWFrZV9hbmRzX2V4cGxpY2l0KHBhcnRDb25zdHJhaW50KSk7CisKKwkJCS8qCisJ CQkgKiBNYXAgdGhlIHZhcnMgaW4gdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBmcm9tIHJl bCdzIGF0dG5vcyB0bworCQkJICogc3BsaXRSZWwncy4KKwkJCSAqLworCQkJcGFydENvbnN0 cmFpbnQgPSBtYXBfcGFydGl0aW9uX3ZhcmF0dG5vcyhwYXJ0Q29uc3RyYWludCwKKwkJCQkJ CQkJCQkJCQkgMSwgc3BsaXRSZWwsIHJlbCk7CisKKwkJCXBjLT5wYXJ0cXVhbHN0YXRlID0K KwkJCQlFeGVjUHJlcGFyZUV4cHIoKEV4cHIgKikgbGluaXRpYWwocGFydENvbnN0cmFpbnQp LCBlc3RhdGUpOworCQkJQXNzZXJ0KHBjLT5wYXJ0cXVhbHN0YXRlICE9IE5VTEwpOworCQl9 CisKKwkJLyogU3RvcmUgcGFydGl0aW9uIGNvbnRleHQgaW50byBsaXN0LiAqLworCQlwYXJ0 Q29udGV4dHMgPSBsYXBwZW5kKHBhcnRDb250ZXh0cywgcGMpOworCX0KKworCS8qCisJICog Q3JlYXRlIHBhcnRpdGlvbiBjb250ZXh0IGZvciBERUZBVUxUIHBhcnRpdGlvbi4gV2UgY2Fu IGluc2VydCB2YWx1ZXMKKwkgKiBpbnRvIHRoaXMgcGFydGl0aW9uIGluIGNhc2Ugc3BhY2Vz IHdpdGggdmFsdWVzIGJldHdlZW4gbmV3IHBhcnRpdGlvbnMuCisJICovCisJaWYgKCFkZWZh dWx0UGFydEN0eCAmJiBPaWRJc1ZhbGlkKGRlZmF1bHRQYXJ0T2lkKSkKKwl7CisJCS8qIElu ZGljYXRlIHRoYXQgd2UgYWxsb2NhdGUgY29udGV4dCBmb3Igb2xkIERFRkFVTFQgcGFydGl0 aW9uICovCisJCWlzT2xkRGVmYXVsdFBhcnQgPSB0cnVlOworCQlkZWZhdWx0UGFydEN0eCA9 IGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dCh0YWJsZV9vcGVuKGRlZmF1bHRQYXJ0T2lk LCBBY2Nlc3NFeGNsdXNpdmVMb2NrKSk7CisKKwkJLyogRmluZCB0aGUgd29yayBxdWV1ZSBl bnRyeSBmb3IgZGVmYXVsdCBwYXJ0aXRpb24gdGFibGUuICovCisJCWRlZmF1bHRQYXJ0Q3R4 LT50YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVlLCBkZWZhdWx0UGFydEN0eC0+cGFydFJl bCk7CisJfQorCisJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7 CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCisJc3Jjc2xvdCA9IHRh YmxlX3Nsb3RfY3JlYXRlKHNwbGl0UmVsLCBOVUxMKTsKKworCS8qCisJICogTWFwIGNvbXB1 dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIHRvIG5ldyBw YXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRpb24sIGJ1dCBvdGhlciBuZXcg cGFydGl0aW9ucyBjYW4gdXNlIHRoZSBzYW1lCisJICogbWFwKS4KKwkgKi8KKwlwYyA9IChT cGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVhZChwYXJ0Q29udGV4dHMp KTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVz Y3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJl bCkpOworCisJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzY2FuID0gdGFibGVfYmVn aW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkvKgorCSAqIFN3aXRj aCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1 cGxlCisJICogcHJvZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5LgorCSAqLworCW9s ZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQo ZXN0YXRlKSk7CisKKwl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3 YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJeworCQlib29sCQlmb3VuZCA9IGZhbHNl OworCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOworCisJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNyY3Nsb3Q7CisKKwkJ LyogU2VhcmNoIHBhcnRpdGlvbiBmb3IgY3VycmVudCBzbG90IHNyY3Nsb3QuICovCisJCWZv cmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQorCQl7CisJCQlwYyA9IChTcGxpdFBhcnRp dGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCQlpZiAocGMtPnBhcnRxdWFs c3RhdGUgLyogc2tpcCBERUZBVUxUIHBhcnRpdGlvbiAqLyAmJgorCQkJCUV4ZWNDaGVjayhw Yy0+cGFydHF1YWxzdGF0ZSwgZWNvbnRleHQpKQorCQkJeworCQkJCWZvdW5kID0gdHJ1ZTsK KwkJCQlicmVhazsKKwkJCX0KKwkJCVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQpOworCQl9 CisJCWlmICghZm91bmQpCisJCXsKKwkJCS8qIFVzZSBERUZBVUxUIHBhcnRpdGlvbiBpZiBp dCBleGlzdHMuICovCisJCQlpZiAoZGVmYXVsdFBhcnRDdHgpCisJCQkJcGMgPSBkZWZhdWx0 UGFydEN0eDsKKwkJCWVsc2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShF UlJDT0RFX0NIRUNLX1ZJT0xBVElPTiksCisJCQkJCQllcnJtc2coImNhbiBub3QgZmluZCBw YXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRpdGlvbiByb3ciKSwKKwkJCQkJCWVycnRhYmxlKHNw bGl0UmVsKSk7CisJCX0KKworCQlpZiAodHVwbGVfbWFwKQorCQl7CisJCQkvKiBOZWVkIHRv IHVzZSBtYXAgdG8gY29weSBhdHRyaWJ1dGVzLiAqLworCQkJaW5zZXJ0c2xvdCA9IGV4ZWN1 dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJNYXAsIHNyY3Nsb3QsIHBjLT5kc3Rz bG90KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIEV4dHJhY3QgZGF0YSBmcm9tIG9sZCB0 dXBsZS4gKi8KKwkJCXNsb3RfZ2V0YWxsYXR0cnMoc3Jjc2xvdCk7CisKKwkJCS8qIENvcHkg YXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCWluc2VydHNsb3QgPSBwYy0+ZHN0c2xvdDsK KworCQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJCW1lbWNweShpbnNlcnRz bG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAorCQkJCSAgIHNpemVvZihE YXR1bSkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCW1lbWNweShpbnNlcnRzbG90LT50 dHNfaXNudWxsLCBzcmNzbG90LT50dHNfaXNudWxsLAorCQkJCSAgIHNpemVvZihib29sKSAq IHNyY3Nsb3QtPnR0c19udmFsaWQpOworCisJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5z ZXJ0c2xvdCk7CisJCX0KKworCQkvKgorCQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVE IGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUgdGFibGVvaWQKKwkJICogY29sdW1u LCBzbyBmaWxsIHR0c190YWJsZU9pZCB3aXRoIHRoZSBkZXNpcmVkIHZhbHVlLiAoV2UgbXVz dCBkbworCQkgKiB0aGlzIGVhY2ggdGltZSwgYmVjYXVzZSBpdCBnZXRzIG92ZXJ3cml0dGVu IHdpdGggbmV3cmVsJ3MgT0lEIGR1cmluZworCQkgKiBzdG9yaW5nLikKKwkJICovCisJCWlu c2VydHNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRSZWwp OworCisJCS8qCisJCSAqIE5vdywgZXZhbHVhdGUgYW55IGdlbmVyYXRlZCBleHByZXNzaW9u cyB3aG9zZSBpbnB1dHMgY29tZSBmcm9tCisJCSAqIHRoZSBuZXcgdHVwbGUuICBXZSBhc3N1 bWUgdGhlc2UgY29sdW1ucyB3b24ndCByZWZlcmVuY2UgZWFjaAorCQkgKiBvdGhlciwgc28g dGhhdCB0aGVyZSdzIG5vIG9yZGVyaW5nIGRlcGVuZGVuY3kuCisJCSAqLworCQlldmFsdWF0 ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5kQ2hlY2tDb25zdHJhaW50cyhwYy0+dGFiLCBwYy0+ cGFydFJlbCwKKwkJCQkJCQkJCQkJCQkJaW5zZXJ0c2xvdCwgZWNvbnRleHQpOworCisJCS8q IFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5ldyByZWxhdGlvbi4gKi8KKwkJdGFibGVf dHVwbGVfaW5zZXJ0KHBjLT5wYXJ0UmVsLCBpbnNlcnRzbG90LCBteWNpZCwKKwkJCQkJCSAg IHRpX29wdGlvbnMsIHBjLT5iaXN0YXRlKTsKKworCQlSZXNldEV4cHJDb250ZXh0KGVjb250 ZXh0KTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3h0KTsKKworCXRhYmxl X2VuZHNjYW4oc2Nhbik7CisJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCWlm ICh0dXBsZV9tYXApCisJCWZyZWVfY29udmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCUV4 ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc3Jjc2xvdCk7CisKKwlGcmVlRXhlY3V0b3JT dGF0ZShlc3RhdGUpOworCisJZm9yZWFjaF9wdHIoU3BsaXRQYXJ0aXRpb25Db250ZXh0LCBz cGMsIHBhcnRDb250ZXh0cykKKwkJZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KHNwYywg d3F1ZXVlLCB0aV9vcHRpb25zKTsKKworCS8qIE5lZWQgdG8gY2xvc2UgdGFibGUgYW5kIGZy ZWUgYnVmZmVycyBmb3IgREVGQVVMVCBwYXJ0aXRpb24uICovCisJaWYgKGlzT2xkRGVmYXVs dFBhcnQpCisJeworCQlSZWxhdGlvbglkZWZhdWx0UGFydFJlbCA9IGRlZmF1bHRQYXJ0Q3R4 LT5wYXJ0UmVsOworCisJCWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChkZWZhdWx0UGFy dEN0eCwgd3F1ZXVlLCB0aV9vcHRpb25zKTsKKwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBj b21taXQuICovCisJCXRhYmxlX2Nsb3NlKGRlZmF1bHRQYXJ0UmVsLCBOb0xvY2spOworCX0K K30KKworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRp dGlvbi1uYW1lPiBJTlRPIDxwYXJ0aXRpb24tbGlzdD4KKyAqLworc3RhdGljIHZvaWQKK0FU RXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAorCQkJCQkgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVV dGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbglzcGxpdFJlbDsKKwlPaWQJ CQlzcGxpdFJlbE9pZDsKKwljaGFyCQlyZWxuYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0Q2Vs bCAgICpsaXN0cHRyLAorCQkJICAgKmxpc3RwdHIyOworCWJvb2wJCWlzU2FtZU5hbWUgPSBm YWxzZTsKKwljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0CSAgICpuZXdQ YXJ0UmVscyA9IE5JTDsKKwlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwlPaWQJCQlkZWZhdWx0 UGFydE9pZDsKKwlPaWQJCQlzYXZlX3VzZXJpZDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0 OworCWludAkJCXNhdmVfbmVzdGxldmVsOworCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVm YXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0 cnVlKSk7CisKKwkvKgorCSAqIFBhcnRpdGlvbiBpcyBhbHJlYWR5IGxvY2tlZCBpbiB0aGUg dHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKwkgKiBmdW5jdGlvbi4KKwkgKi8KKwlz cGxpdFJlbCA9IHRhYmxlX29wZW5ydihjbWQtPm5hbWUsIE5vTG9jayk7CisKKwlzcGxpdFJl bE9pZCA9IFJlbGF0aW9uR2V0UmVsaWQoc3BsaXRSZWwpOworCisJLyogQ2hlY2sgZGVzY3Jp cHRpb25zIG9mIG5ldyBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0 aXRpb25TcGVjLCBzcHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlPaWQJCQlleGlzdGluZ1Jl bGlkOworCisJCXN0cmxjcHkocmVsbmFtZSwgc3BzLT5uYW1lLT5yZWxuYW1lLCBOQU1FREFU QUxFTik7CisKKwkJLyoKKwkJICogTG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBuZXcg cGFydGl0aW9uIG5hbWUsIGNoZWNrIHdlIGhhdmUKKwkJICogcGVybWlzc2lvbiB0byBjcmVh dGUgdGhlcmUsIGxvY2sgaXQgYWdhaW5zdCBjb25jdXJyZW50IGRyb3AsIGFuZCBtYXJrCisJ CSAqIHN0bXQtPnJlbGF0aW9uIGFzIFJFTFBFUlNJU1RFTkNFX1RFTVAgaWYgYSB0ZW1wb3Jh cnkgbmFtZXNwYWNlIGlzCisJCSAqIHNlbGVjdGVkLgorCQkgKi8KKwkJc3BzLT5uYW1lLT5y ZWxwZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKKwkJUmFuZ2VW YXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKHNwcy0+bmFtZSwgTm9Mb2NrLCAmZXhp c3RpbmdSZWxpZCk7CisKKwkJLyoKKwkJICogVGhpcyB3b3VsZCBmYWlsIGxhdGVyIG9uIGFu eXdheSBpZiB0aGUgcmVsYXRpb24gYWxyZWFkeSBleGlzdHMuIEJ1dAorCQkgKiBieSBjYXRj aGluZyBpdCBoZXJlIHdlIGNhbiBlbWl0IGEgbmljZXIgZXJyb3IgbWVzc2FnZS4KKwkJICov CisJCWlmIChleGlzdGluZ1JlbGlkID09IHNwbGl0UmVsT2lkICYmICFpc1NhbWVOYW1lKQor CQkJLyogT25lIG5ldyBwYXJ0aXRpb24gY2FuIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyBzcGxp dCBwYXJ0aXRpb24uICovCisJCQlpc1NhbWVOYW1lID0gdHJ1ZTsKKwkJZWxzZSBpZiAoT2lk SXNWYWxpZChleGlzdGluZ1JlbGlkKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQllcnJtc2coInJlbGF0aW9uIFwi JXNcIiBhbHJlYWR5IGV4aXN0cyIsIHJlbG5hbWUpKTsKKwl9CisKKwkvKiBEZXRhY2ggc3Bs aXQgcGFydGl0aW9uLiAqLworCWRldGFjaFBhcnRpdGlvblRhYmxlKHJlbCwgc3BsaXRSZWws IGRlZmF1bHRQYXJ0T2lkKTsKKworCS8qCisJICogUGVyZm9ybSBhIHByZWxpbWluYXJ5IGNo ZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0byBkcm9wIGFsbAorCSAqIG1l cmdpbmcgcGFydGl0aW9ucyBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28gbGF0ZXIuIEFmdGVy IG1lcmdpbmcgcm93cworCSAqIGludG8gdGhlIG5ldyBwYXJ0aXRpb25zIHZpYSBTcGxpdFBh cnRpdGlvbk1vdmVSb3dzLCBhbGwgb2xkIHBhcnRpdGlvbnMKKwkgKiBuZWVkIGJlIGRyb3Bw ZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9wIGJlaGF2aW9yIGlzIERST1BfUkVTVFJJQ1Qg YW5kCisJICogdGhlIG1lcmdlIHByb2Nlc3MgKFNwbGl0UGFydGl0aW9uTW92ZVJvd3MpIGNh biBiZSB0aW1lLWNvbnN1bWluZywKKwkgKiBwZXJmb3JtaW5nIGFuIGVhcmx5IGNoZWNrIG9u IHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0aXRpb25zIGlzCisJICogcHJlZmVy YWJsZS4KKwkgKi8KKwlvYmplY3Qub2JqZWN0SWQgPSBzcGxpdFJlbE9pZDsKKwlvYmplY3Qu Y2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2JqZWN0U3ViSWQgPSAw OworCXBlcmZvcm1EZWxldGlvbkNoZWNrKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIFBFUkZP Uk1fREVMRVRJT05fSU5URVJOQUwpOworCisJLyoKKwkgKiBJZiBuZXcgcGFydGl0aW9uIGhh cyB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiB0aGVuIHdlIHNob3VsZAorCSAq IHJlbmFtZSBzcGxpdCBwYXJ0aXRpb24gZm9yIHJldXNpbmcgbmFtZS4KKwkgKi8KKwlpZiAo aXNTYW1lTmFtZSkKKwl7CisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBj b3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkgKiB2aXNpYmxl IGZvciByZW5hbWluZy4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJ CS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCisJCXNwcmludGYodG1wUmVsTmFtZSwgInNwbGl0 LSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlkKTsKKwkJUmVu YW1lUmVsYXRpb25JbnRlcm5hbChzcGxpdFJlbE9pZCwgdG1wUmVsTmFtZSwgdHJ1ZSwgZmFs c2UpOworCisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRv IG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkgKiB2aXNpYmxlIGFmdGVyIHJl bmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwl9CisKKwkv KiBDcmVhdGUgbmV3IHBhcnRpdGlvbnMgKGxpa2Ugc3BsaXQgcGFydGl0aW9uKSwgd2l0aG91 dCBpbmRleGVzLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMs IGNtZC0+cGFydGxpc3QpCisJeworCQlSZWxhdGlvbgluZXdQYXJ0UmVsOworCisJCW5ld1Bh cnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25UYWJsZSh3cXVldWUsIHNwcy0+bmFtZSwgcmVsLAor CQkJCQkJCQkJCSAgc3BsaXRSZWwtPnJkX3JlbC0+cmVsb3duZXIpOworCQluZXdQYXJ0UmVs cyA9IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOworCX0KKworCS8qCisJICog U3dpdGNoIHRvIHRoZSB0YWJsZSBvd25lcidzIHVzZXJpZCwgc28gdGhhdCBhbnkgaW5kZXgg ZnVuY3Rpb25zIGFyZSBydW4KKwkgKiBhcyB0aGF0IHVzZXIuICBBbHNvIGxvY2sgZG93biBz ZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbnMgYW5kCisJICogYXJyYW5nZSB0byBtYWtl IEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxvY2FsIHRvIHRoaXMgY29tbWFuZC4KKwkgKgorCSAq IE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJtaW5lIG5hbWVzcGFjZSBpbiBjcmVhdGVQYXJ0 aXRpb25UYWJsZSBjYWxsLgorCSAqLworCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVf dXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChz cGxpdFJlbC0+cmRfcmVsLT5yZWxvd25lciwKKwkJCQkJCSAgIHNhdmVfc2VjX2NvbnRleHQg fCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CisJc2F2ZV9uZXN0bGV2ZWwgPSBO ZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0cmljdFNlYXJjaFBhdGgoKTsKKworCS8qIENvcHkg ZGF0YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9ucy4gKi8KKwlTcGxp dFBhcnRpdGlvbk1vdmVSb3dzKHdxdWV1ZSwgcmVsLCBzcGxpdFJlbCwgY21kLT5wYXJ0bGlz dCwgbmV3UGFydFJlbHMsIGRlZmF1bHRQYXJ0T2lkKTsKKwkvKiBLZWVwIHRoZSBsb2NrIHVu dGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9Mb2NrKTsKKworCS8q IEF0dGFjaCBuZXcgcGFydGl0aW9ucyB0byBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KKwlmb3Ji b3RoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7 CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICop IGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3UGFydFJlbCA9IChSZWxhdGlvbikg bGZpcnN0KGxpc3RwdHIyKTsKKworCQkvKgorCQkgKiB3cXVldWUgPSBOVUxMOiB2ZXJpZmlj YXRpb24gZm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90CisJCSAqIG5lZWRlZC4K KwkJICovCisJCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwg c3BzLT5ib3VuZCk7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0 YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCX0KKworCS8qIERyb3Agc3BsaXQg cGFydGl0aW9uLiAqLworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOwor CW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOworCW9iamVjdC5vYmplY3RTdWJJZCA9 IDA7CisJLyogUHJvYmFibHkgRFJPUF9DQVNDQURFIGlzIG5vdCBuZWVkZWQuICovCisJcGVy Zm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCisJLyogUm9sbCBi YWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMuICovCisJ QXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CisKKwkvKiBSZXN0b3JlIHVz ZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8KKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0 KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4 IDc2NTZlYWRmMWYuLjMzMmRjYjVlNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjU3LDYgKzI1 Nyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUGFydGl0aW9uRWxlbSAqcGFy dGVsZW07CiAJUGFydGl0aW9uU3BlYyAqcGFydHNwZWM7CiAJUGFydGl0aW9uQm91bmRTcGVj ICpwYXJ0Ym91bmRzcGVjOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNpbmdsZXBhcnRzcGVj OwogCVJvbGVTcGVjICAgKnJvbGVzcGVjOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVibGlj YXRpb25vYmplY3RzcGVjOwogCXN0cnVjdCBTZWxlY3RMaW1pdCAqc2VsZWN0bGltaXQ7CkBA IC02NDAsNiArNjQxLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxw YXJ0ZWxlbT4JcGFydF9lbGVtCiAldHlwZSA8bGlzdD4JCXBhcnRfcGFyYW1zCiAldHlwZSA8 cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCisldHlwZSA8c2luZ2xlcGFydHNw ZWM+CVNpbmdsZVBhcnRpdGlvblNwZWMKKyV0eXBlIDxsaXN0PgkJcGFydGl0aW9uc19saXN0 CiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9w YXJ0Ym91bmRfZWxlbQogCkBAIC03NzAsNyArNzczLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAlTQVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFS Q0ggU0VDT05EX1AgU0VDVVJJVFkgU0VMRUNUCiAJU0VRVUVOQ0UgU0VRVUVOQ0VTCiAJU0VS SUFMSVpBQkxFIFNFUlZFUiBTRVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBTRVRPRiBT SEFSRSBTSE9XCi0JU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01F IFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCisJU0lNSUxBUiBTSU1QTEUgU0tJ UCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNQTElUIFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RB TkRBTE9ORV9QCiAJU1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNU T1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklOR19QIFNUUklQX1AKIAlTVUJTQ1JJUFRJT04g U1VCU1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZU1RFTV9QIFNZU1RFTV9VU0VS CiAKQEAgLTIzMjgsNiArMjMzMSwyMyBAQCBhbHRlcl90YWJsZV9jbWRzOgogCQkJfCBhbHRl cl90YWJsZV9jbWRzICcsJyBhbHRlcl90YWJsZV9jbWQJeyAkJCA9IGxhcHBlbmQoJDEsICQz KTsgfQogCQk7CiAKK3BhcnRpdGlvbnNfbGlzdDoKKwkJCVNpbmdsZVBhcnRpdGlvblNwZWMJ CQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHBhcnRpdGlvbnNfbGlzdCAn LCcgU2luZ2xlUGFydGl0aW9uU3BlYwl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsK KworU2luZ2xlUGFydGl0aW9uU3BlYzoKKwkJCVBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBQ YXJ0aXRpb25Cb3VuZFNwZWMKKwkJCQl7CisJCQkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKm4g PSBtYWtlTm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjKTsKKworCQkJCQluLT5uYW1lID0gJDI7 CisJCQkJCW4tPmJvdW5kID0gJDM7CisKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJOworCiBw YXJ0aXRpb25fY21kOgogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJ T04gPHRhYmxlX25hbWU+IEZPUiBWQUxVRVMgKi8KIAkJCUFUVEFDSCBQQVJUSVRJT04gcXVh bGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCkBAIC0yMzcyLDYgKzIzOTIsMjAgQEAg cGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJCQkkJCA9 IChOb2RlICopIG47CiAJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBB UlRJVElPTiA8cGFydGl0aW9uX25hbWU+IElOVE8gKCkgKi8KKwkJCXwgU1BMSVQgUEFSVElU SU9OIHF1YWxpZmllZF9uYW1lIElOVE8gJygnIHBhcnRpdGlvbnNfbGlzdCAnKScKKwkJCQl7 CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJ CQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRpb25DbWQpOworCisJCQkJ CW4tPnN1YnR5cGUgPSBBVF9TcGxpdFBhcnRpdGlvbjsKKwkJCQkJY21kLT5uYW1lID0gJDM7 CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDY7CisJ CQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBj bWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQkvKiBBTFRFUiBUQUJMRSA8 bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KIAkJ CXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBx dWFsaWZpZWRfbmFtZQogCQkJCXsKQEAgLTE4MDI4LDYgKzE4MDYyLDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBTS0lQCiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPVVJDRQorCQkJ fCBTUExJVAogCQkJfCBTUUxfUAogCQkJfCBTVEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCkBA IC0xODY2OCw2ICsxODcwMyw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgU05BUFNI T1QKIAkJCXwgU09NRQogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwgU1FMX1AKIAkJ CXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGls Y21kLmMKaW5kZXggOGZlNzI0OTIwMy4uYmQwNDVjMTU0ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQgdHJhbnNm b3JtQ29uc3RyYWludEF0dHJzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkg TGlzdCAqY29uc3RyYWludExpc3QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29sdW1uVHlw ZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbik7CiBzdGF0aWMg dm9pZCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRleHRfc2NoZW1hLCBjaGFyICoq c3RtdF9zY2hlbWFfbmFtZSk7Ci1zdGF0aWMgdm9pZCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQo Q3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpOworc3RhdGljIHZv aWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRp dGlvbkJvdW5kU3BlYyAqYm91bmQpOwogc3RhdGljIExpc3QgKnRyYW5zZm9ybVBhcnRpdGlv blJhbmdlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QsCiAJCQkJCQkJ CQkJICAgUmVsYXRpb24gcGFyZW50KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlSW5maW5pdGVC b3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCk7CkBAIC0zNTQ4LDYgKzM1 NDgsNDYgQEAgY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkK IAl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOwogfQogCisvKgorICogdHJhbnNmb3Jt UGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4g U1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFydGl0aW9u IHNwcy0+Ym91bmQgaXMgc2V0IHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4K KyAqIERvZXMgY2hlY2tzIGZvciBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMuCisgKi8KK3N0 YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVhdGVTdG10Q29u dGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJUmVsYXRpb24JcGFyZW50 ID0gY3h0LT5yZWw7CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCisJLyogVHJhbnNmb3JtIHBh cnRpdGlvbiBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0OiAqLworCWZv cmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHBhcnRjbWQtPnBhcnRsaXN0 KQorCXsKKwkJY3h0LT5wYXJ0Ym91bmQgPSBOVUxMOworCQl0cmFuc2Zvcm1QYXJ0aXRpb25D bWQoY3h0LCBzcHMtPmJvdW5kKTsKKwkJLyogQXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9m IHRoZSBwYXJ0aXRpb24gYm91bmQuICovCisJCXNwcy0+Ym91bmQgPSBjeHQtPnBhcnRib3Vu ZDsKKwl9CisKKwkvKgorCSAqIE9wZW4gYW5kIGxvY2sgcGFydGl0aW9uLCBjaGVjayBvd25l cnNoaXAgYWxvbmcgdGhlIHdheS4gV2UgbmVlZCB0byB1c2UKKwkgKiBBY2Nlc3NFeGNsdXNp dmVMb2NrIGhlcmUsIGJlY2F1c2UgdGhpcyBzcGxpdCBwYXJ0aXRpb24gd2lsbCBiZSBkZXRh Y2hlZAorCSAqIHRoZW4gZHJvcHBlZCBpbiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4KKwkgKi8K KwlzcGxpdFBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQocGFydGNtZC0+bmFt ZSwKKwkJCQkJCQkJCQkJQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCQkJZmFsc2Us CisJCQkJCQkJCQkJCVJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24sCisJCQkJCQkJCQkJ CU5VTEwpOworCisJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBzcGxpdFBhcnRPaWQpOworCisJ LyogVGhlbiB3ZSBzaG91bGQgY2hlY2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVkIGJv dW5kcy4gKi8KKwljaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0UGFy dE9pZCwgcGFydGNtZC0+cGFydGxpc3QsIGN4dC0+cHN0YXRlKTsKK30KKworCiAvKgogICog dHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKICAqCQlBbmFseXplIHRoZSBBTFRFUiBU QUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCkBAIC0zOTE0LDcgKzM5NTQsNyBA QCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpz dG10LAogCQkJCXsKIAkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNt ZCAqKSBjbWQtPmRlZjsKIAotCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFy dGNtZCk7CisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21kLT5ib3Vu ZCk7CiAJCQkJCS8qIGFzc2lnbiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiB0aGUgcGFydGl0aW9u IGJvdW5kICovCiAJCQkJCXBhcnRjbWQtPmJvdW5kID0gY3h0LnBhcnRib3VuZDsKIAkJCQl9 CkBAIC0zOTM2LDYgKzM5NzYsMjAgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJl bGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQkJYnJlYWs7CiAJCQkJfQogCisJCQlj YXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0 Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5n dGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJ CQkJZXJybXNnKCJsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxl YXN0IHR3byBwYXJ0aXRpb25zIikpOworCisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZv clNwbGl0KCZjeHQsIHBhcnRjbWQpOworCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRz LCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWRlZmF1bHQ6CiAKIAkJCQkvKgpA QCAtNDM2NiwxMyArNDQyMCwxMyBAQCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRl eHRfc2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSkKIAogLyoKICAqIHRyYW5zZm9y bVBhcnRpdGlvbkNtZAotICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0ggUEFSVElUSU9O IGNvbW1hbmQKKyAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNIL1NQTElUIFBBUlRJVElP TiBjb21tYW5kCiAgKgotICogSW4gY2FzZSBvZiB0aGUgQVRUQUNIIFBBUlRJVElPTiBjb21t YW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhlCi0gKiB0cmFuc2Zvcm1lZCB2YWx1 ZSBvZiBjbWQtPmJvdW5kLgorICogSW4gY2FzZSBvZiB0aGUgQVRUQUNIL1NQTElUIFBBUlRJ VElPTiBjb21tYW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhlCisgKiB0cmFuc2Zv cm1lZCB2YWx1ZSBvZiBib3VuZC4KICAqLwogc3RhdGljIHZvaWQKLXRyYW5zZm9ybVBhcnRp dGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKK3Ry YW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25C b3VuZFNwZWMgKmJvdW5kKQogewogCVJlbGF0aW9uCXBhcmVudFJlbCA9IGN4dC0+cmVsOwog CkBAIC00MzgxLDkgKzQ0MzUsOSBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCWNhc2UgUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRToKIAkJCS8qIHRyYW5zZm9ybSB0aGUgcGFydGl0aW9uIGJvdW5kLCBp ZiBhbnkgKi8KIAkJCUFzc2VydChSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnRSZWwp ICE9IE5VTEwpOwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVMTCkKKwkJCWlmIChib3VuZCAh PSBOVUxMKQogCQkJCWN4dC0+cGFydGJvdW5kID0gdHJhbnNmb3JtUGFydGl0aW9uQm91bmQo Y3h0LT5wc3RhdGUsIHBhcmVudFJlbCwKLQkJCQkJCQkJCQkJCQkJIGNtZC0+Ym91bmQpOwor CQkJCQkJCQkJCQkJCQkgYm91bmQpOwogCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9QQVJU SVRJT05FRF9JTkRFWDoKIApAQCAtNDM5MSw3ICs0NDQ1LDcgQEAgdHJhbnNmb3JtUGFydGl0 aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQogCQkJ ICogQSBwYXJ0aXRpb25lZCBpbmRleCBjYW5ub3QgaGF2ZSBhIHBhcnRpdGlvbiBib3VuZCBz ZXQuICBBTFRFUgogCQkJICogSU5ERVggcHJldmVudHMgdGhhdCB3aXRoIGl0cyBncmFtbWFy LCBidXQgbm90IEFMVEVSIFRBQkxFLgogCQkJICovCi0JCQlpZiAoY21kLT5ib3VuZCAhPSBO VUxMKQorCQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCiAJCQkJCQkg ZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUiLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggZWEzM2MxNTE5NC4uZTFjMTQxNmIx ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwor KysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCkBAIC00OTgzLDE1 ICs0OTgzLDIxIEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdT KQogICoKICAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5nKQogICoKLSAq IFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91 bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjaGVj a19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICogY2FsY3VsYXRlX3BhcnRpdGlvbl9i b3VuZF9mb3JfbWVyZ2UoKS4KICAqIFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgdXBwZXIgYm91 bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCi0gKiBzZWNvbmRfYm91bmQu IFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKiBzZWNvbmRfYm91bmQuIFRoZXNl IGJvdW5kcyBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdoZW4KKyAqICJkZWZhdWx0UGFydCA9 PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBzcGxpdCBwYXJ0aXRpb25zIGlzIERF RkFVTFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGNh biBiZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9ib3VuZCBiZWNhdXNl IHNwYWNlIGJldHdlZW4gdGhlc2UgYm91bmRzIHdpbGwgYmUgaW5jbHVkZWQgaW4KKyAqIERF RkFVTFQgcGFydGl0aW9uLgogICoKICAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQog ICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9uCiAgKiBmaXJzdF9ib3Vu ZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgogICogc2Vjb25kX25hbWU6CQluYW1lIG9m IHNlY29uZCBwYXJ0aXRpb24KICAqIHNlY29uZF9ib3VuZDoJYm91bmQgb2Ygc2Vjb25kIHBh cnRpdGlvbgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlmIG9uZSBvZiBzcGxpdCBwYXJ0aXRp b25zIGlzIERFRkFVTFQKICAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3Ry dWN0IGZvciBkZXRlcm1pbmluZyBlcnJvciBwb3NpdGlvbgogICovCiBzdGF0aWMgdm9pZApA QCAtNTAwMCw2ICs1MDA2LDcgQEAgY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3Jhbmdl KFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKmZpcnN0 X2JvdW5kLAogCQkJCQkJCQkgIFJhbmdlVmFyICpzZWNvbmRfbmFtZSwKIAkJCQkJCQkJICBQ YXJ0aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9ib3VuZCwKKwkJCQkJCQkJICBib29sIGRlZmF1 bHRQYXJ0LAogCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKIHsKIAlQYXJ0aXRpb25L ZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKQEAgLTUwMjEsNyAr NTAyOCw3IEBAIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBw YXJlbnQsCiAJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAogCQkJCQkJCQkgIHNlY29u ZF9sb3dlci0+ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCiAJCQkJCQkJCSAgZmFsc2Us IGZpcnN0X3VwcGVyKTsKLQlpZiAoY21wdmFsKQorCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNt cHZhbCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQogCXsKIAkJUGFydGl0aW9u UmFuZ2VEYXR1bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1z KTsKIApAQCAtNTEzMyw3ICs1MTQwLDcgQEAgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9m b3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJv dW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAogCQkJCQkJCQkJCQkJ CSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAogCQkJCQkJCQkJ CQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGluZGV4KSwK LQkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CisJCQkJCQkJCQkJCQkJICBmYWxzZSwgcHN0YXRl KTsKIAkJCQl9CiAKIAkJCQkvKgpAQCAtNTE3MSwzICs1MTc4LDY3MiBAQCBjYWxjdWxhdGVf cGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJIChpbnQp IGtleS0+c3RyYXRlZ3kpOwogCX0KIH0KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNfbm90 X292ZXJsYXBfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25p bmcpCisgKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tfcGFydGl0 aW9uc19mb3Jfc3BsaXQoKS4KKyAqIENoZWNrcyB0aGF0IHRoZSB2YWx1ZXMgb2YgdGhlIG5l dyBwYXJ0aXRpb25zIGRvIG5vdCBvdmVybGFwLgorICoKKyAqIHBhcmVudDoJcGFydGl0aW9u ZWQgdGFibGUKKyAqIHBhcnRzOglhcnJheSBvZiBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVj dHMgd2l0aCBpbmZvIGFib3V0IHNwbGl0IHBhcnRpdGlvbnMKKyAqIG5wYXJ0czoJc2l6ZSBv ZiBhcnJheSAicGFydHMiCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25zX25v dF9vdmVybGFwX2xpc3QoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFNpbmdsZVBhcnRp dGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJCQkJCQkgIFBh cnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5IFBHX1VTRURfRk9SX0FT U0VSVFNfT05MWSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJaW50CQkJ b3ZlcmxhcF9sb2NhdGlvbiA9IC0xOworCWludAkJCWksCisJCQkJajsKKwlTaW5nbGVQYXJ0 aXRpb25TcGVjICpzcHMxLAorCQkJICAgKnNwczI7CisJTGlzdAkgICAqb3ZlcmxhcDsKKwor CUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwor CWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCXNwczEgPSBwYXJ0c1tpXTsK KworCQlmb3IgKGogPSBpICsgMTsgaiA8IG5wYXJ0czsgaisrKQorCQl7CisJCQlzcHMyID0g cGFydHNbal07CisKKwkJCS8qCisJCQkgKiBDYWxjdWxhdGUgaW50ZXJzZWN0aW9uIGJldHdl ZW4gdmFsdWVzIG9mIHR3byBwYXJ0aXRpb25zLgorCQkJICovCisJCQlvdmVybGFwID0gbGlz dF9pbnRlcnNlY3Rpb24oc3BzMS0+Ym91bmQtPmxpc3RkYXR1bXMsCisJCQkJCQkJCQkJc3Bz Mi0+Ym91bmQtPmxpc3RkYXR1bXMpOworCQkJaWYgKGxpc3RfbGVuZ3RoKG92ZXJsYXApID4g MCkKKwkJCXsKKwkJCQlDb25zdAkgICAqdmFsID0gKENvbnN0ICopIGxmaXJzdChsaXN0X2hl YWQob3ZlcmxhcCkpOworCisJCQkJb3ZlcmxhcF9sb2NhdGlvbiA9IHZhbC0+bG9jYXRpb247 CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIg d291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJ CQkJCSAgIHNwczEtPm5hbWUtPnJlbG5hbWUsIHNwczItPm5hbWUtPnJlbG5hbWUpLAorCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpOworCQkJ fQorCQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3Bs aXRfcmFuZ2UKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBhcnRpdGlvbmluZykK KyAqCisgKiBDaGVja3MgdGhhdCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbiAic3BlYyIgYXJl IGluc2lkZSBib3VuZHMgb2Ygc3BsaXQKKyAqIHBhcnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQ YXJ0T2lkKS4gSWYgZmlyc3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJzcGVjIiBpcworICog dGhlIGZpcnN0IG9mIG5ldyBwYXJ0aXRpb25zKSB0aGVuIGxvd2VyIGJvdW5kIG9mICJzcGVj IiBzaG91bGQgYmUgZXF1YWwgKG9yCisgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgaW4gY2Fz ZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdAorICogcGFydGl0 aW9uLiBJZiBsYXN0PXRydWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIgaXMgdGhlIGxhc3Qg b2YgbmV3CisgKiBwYXJ0aXRpb25zKSB0aGVuIHVwcGVyIGJvdW5kIG9mICJzcGVjIiBzaG91 bGQgYmUgZXF1YWwgKG9yIGxlc3MgdGhhbiBvcgorICogZXF1YWwgaW4gY2FzZSBkZWZhdWx0 UGFydD10cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisgKgorICog cGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5hbWUgb2YgdGhl IG5ldyBwYXJ0aXRpb24KKyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhl IG5ldyBwYXJ0aXRpb24KKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAor ICogZmlyc3Q6CQkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIGZpcnN0 IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBsYXN0OgkJCXRydWUgaW4gY2FzZSBuZXcgcGFydGl0 aW9uICJzcGVjIiBpcyBsYXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBkZWZhdWx0UGFydDoJ CXRydWUgaW4gY2FzZSBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgREVGQVVMVCBwYXJ0aXRpb24K KyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1p bmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9i b3VuZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAgIGNo YXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJ CQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgYm9vbCBmaXJzdCwK KwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wgZGVmYXVsdFBhcnQs CisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtl eSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uUmFuZ2VC b3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJaW50CQkJY21wdmFsOworCisJQXNzZXJ0 KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKwlBc3NlcnQo c3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKTsKKworCWxvd2Vy ID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVjLT5sb3dlcmRhdHVt cywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEs IHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZpcnN0IGNoZWNrIGlm IHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0aCBzcGVjaWZpZWQgbG93 ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Jib3VuZF9jbXAgY2Fubm90 IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2VyLWJvdW5kIGZsYWdzIGFy ZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5 LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBr ZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRhdHVtcywgbG93ZXItPmtp bmQsCisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChjbXB2YWwgIT0gMCk7CisJ aWYgKGNtcHZhbCA+IDApCisJeworCQkvKiBQb2ludCB0byBwcm9ibGVtYXRpYyBrZXkgaW4g dGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1 bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwgLSAxKTsKKworCQllcmVw b3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFy dGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5hbWUpLAorCQkJCWVycmRldGFpbCgiU3Bl Y2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB1cHBl ciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhzcGVj LT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNw ZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0 dW0tPmxvY2F0aW9uKSk7CisJfQorCisJLyogTmVlZCB0byBjaGVjayBmaXJzdCBhbmQgbGFz dCBwYXJ0aXRpb25zIChmcm9tIHNldCBvZiBuZXcgcGFydGl0aW9ucykgKi8KKwlpZiAoZmly c3QgfHwgbGFzdCkKKwl7CisJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BsaXRfc3BlYyA9IGdl dF9wYXJ0aXRpb25fYm91bmRfc3BlYyhzcGxpdFBhcnRPaWQpOworCQlQYXJ0aXRpb25SYW5n ZURhdHVtICpkYXR1bTsKKworCQlpZiAoZmlyc3QpCisJCXsKKwkJCVBhcnRpdGlvblJhbmdl Qm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxpdF9sb3dlciA9IG1ha2Vfb25lX3BhcnRp dGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+bG93ZXJkYXR1bXMsIHRydWUpOwor CisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJ CQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xs YXRpb24sCisJCQkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJ CQkJCQkgIHRydWUsIHNwbGl0X2xvd2VyKTsKKworCQkJLyoKKwkJCSAqIExvd2VyIGJvdW5k IG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAor CQkJICogaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxp dCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJ aWYgKGNtcHZhbCAhPSAwKQorCQkJCXsKKwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5s b3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJ CQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVh bCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkgICByZWxu YW1lKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRp b24pKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYgKGNtcHZhbCA8IDAp CisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBhYnMo Y21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coImxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCX0K KwkJfQorCQllbHNlCisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X3VwcGVy OworCisJCQlzcGxpdF91cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAt MSwgc3BsaXRfc3BlYy0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKworCQkJY21wdmFsID0gcGFy dGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCQkJICBrZXktPnBh cnRzdXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJ CSAgdXBwZXItPmRhdHVtcywgdXBwZXItPmtpbmQsCisJCQkJCQkJCQkJICBmYWxzZSwgc3Bs aXRfdXBwZXIpOworCisJCQkvKgorCQkJICogVXBwZXIgYm91bmQgb2YgInNwZWMiIHNob3Vs ZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yIGVxdWFsIGluCisJCQkgKiBjYXNlIGRlZmF1 bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKwkJCSAq LworCQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJCXsKKwkJCQlpZiAoY21wdmFsICE9IDApCisJ CQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPnVwcGVyZGF0dW1zLCBhYnMoY21w dmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFsID4gMCkKKwkJCQl7CisJCQkJCWRhdHVt ID0gbGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNU X0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygidXBwZXIgYm91bmQgb2YgcGFydGl0aW9u IFwiJXNcIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u IiwKKwkJCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCisv KgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdAorICoKKyAqIChm dW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQg Ym91bmRzIG9mIG5ldyBwYXJ0aXRpb24gYXJlIGluc2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFy dGl0aW9uCisgKiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKyAqCisgKiBwYXJlbnQ6CQkJ cGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRp dGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRp dGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBwc3RhdGU6 CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBv c2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9z cGxpdF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hhciAqcmVsbmFtZSwKKwkJCQkJCQkJCSAg UGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICBPaWQgc3BsaXRQYXJ0T2lk LAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtl eSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uRGVzYyBw YXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQ YXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5mbzsKKwlp bnQJCQl3aXRoID0gLTE7CisJYm9vbAkJb3ZlcmxhcCA9IGZhbHNlOworCWludAkJCW92ZXJs YXBfbG9jYXRpb24gPSAtMTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElP Tl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9O X1NUUkFURUdZX0xJU1QpOworCUFzc2VydChib3VuZGluZm8gJiYgYm91bmRpbmZvLT5zdHJh dGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNlYXJjaCBl YWNoIHZhbHVlIG9mIG5ldyBwYXJ0aXRpb24gInNwZWMiIGluIGV4aXN0aW5nIHBhcnRpdGlv bnMuIEFsbAorCSAqIG9mIHRoZW0gc2hvdWxkIGJlIGluIHNwbGl0IHBhcnRpdGlvbiAod2l0 aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKwkgKi8KKwlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbCwg c3BlYy0+bGlzdGRhdHVtcykKKwl7CisJCW92ZXJsYXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0 aW9uOworCQlpZiAoIXZhbC0+Y29uc3Rpc251bGwpCisJCXsKKwkJCWludAkJCW9mZnNldDsK KwkJCWJvb2wJCWVxdWFsOworCisJCQlvZmZzZXQgPSBwYXJ0aXRpb25fbGlzdF9ic2VhcmNo KCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQlrZXktPnBhcnRjb2xsYXRpb24s CisJCQkJCQkJCQkJCWJvdW5kaW5mbywKKwkJCQkJCQkJCQkJdmFsLT5jb25zdHZhbHVlLAor CQkJCQkJCQkJCQkmZXF1YWwpOworCQkJaWYgKG9mZnNldCA+PSAwICYmIGVxdWFsKQorCQkJ eworCQkJCXdpdGggPSBib3VuZGluZm8tPmluZGV4ZXNbb2Zmc2V0XTsKKwkJCQlpZiAocGFy dGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJCXsKKwkJCQkJb3Zlcmxh cCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2 ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAor CQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg b3ZlcmxhcF9sb2NhdGlvbikpOworCQl9CisJCWVsc2UgaWYgKHBhcnRpdGlvbl9ib3VuZF9h Y2NlcHRzX251bGxzKGJvdW5kaW5mbykpCisJCXsKKwkJCXdpdGggPSBib3VuZGluZm8tPm51 bGxfaW5kZXg7CisJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lk KQorCQkJeworCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJ CWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNc IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMg bm90IGhhdmUiLAorCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwl9CisKKwlpZiAob3ZlcmxhcCkKKwl7 CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm5ldyBw YXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQp IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICByZWxuYW1lLCBnZXRfcmVsX25hbWUocGFy dGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBv dmVybGFwX2xvY2F0aW9uKSk7CisJfQorfQorCisvKgorICogZmluZF92YWx1ZV9pbl9uZXdf cGFydGl0aW9uc19saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlv bmluZykKKyAqCisgKiBGdW5jdGlvbiByZXR1cm5zIHRydWUgaW4gY2FzZSBhbnkgb2YgbmV3 IHBhcnRpdGlvbnMgY29udGFpbnMgdmFsdWUgInZhbHVlIi4KKyAqCisgKiBwYXJ0c3VwZnVu YzoJCWluZm9ybWF0aW9uIGFib3V0IGNvbXBhcmlzb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3 aXRoIHRoZSBwYXJ0aXRpb24ga2V5CisgKiBwYXJ0Y29sbGF0aW9uOglwYXJ0aXRpb25pbmcg Y29sbGF0aW9uCisgKiBwYXJ0czoJCQlwb2ludGVyIHRvIGFycmF5IHdpdGggbmV3IHBhcnRp dGlvbnMgZGVzY3JpcHRpb25zCisgKiBucGFydHM6CQkJbnVtYmVyIG9mIG5ldyBwYXJ0aXRp b25zCisgKiB2YWx1ZToJCQl0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IKKyAq IGlzbnVsbDoJCQl0cnVlIGlmIHRoZSB2YWx1ZSB0aGF0IHdlIGFyZSBsb29raW5nIGZvciBp cyBOVUxMCisgKi8KK3N0YXRpYyBib29sCitmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25z X2xpc3QoRm1nckluZm8gKnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIE9pZCAqcGFydGNvbGxh dGlvbiwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJ CSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBEYXR1bSB2YWx1ZSwKKwkJCQkJCQkJICBib29s IGlzbnVsbCkKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJ U2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFydHNbaV07CisKKwkJZm9yZWFjaF9ub2Rl KENvbnN0LCB2YWwsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJCXsKKwkJCWlmIChpc251 bGwgJiYgdmFsLT5jb25zdGlzbnVsbCkKKwkJCQlyZXR1cm4gdHJ1ZTsKKworCQkJaWYgKCFp c251bGwgJiYgIXZhbC0+Y29uc3Rpc251bGwpCisJCQl7CisJCQkJaWYgKERhdHVtR2V0SW50 MzIoRnVuY3Rpb25DYWxsMkNvbGwoJnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJCXBh cnRjb2xsYXRpb25bMF0sCisJCQkJCQkJCQkJCQkJdmFsLT5jb25zdHZhbHVlLAorCQkJCQkJ CQkJCQkJCXZhbHVlKSkgPT0gMCkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwl9 CisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9u ZXdfcGFydGl0aW9ucworICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25p bmcpCisgKgorICogQ2hlY2tzIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24g KHdpdGggT2lkIHBhcnRPaWQpIGNvbnRhaW5zIGluIG5ldworICogcGFydGl0aW9ucy4KKyAq CisgKiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0T2lkOglzcGxpdCBwYXJ0 aXRpb24gT2lkCisgKiBwYXJ0czoJcG9pbnRlciB0byBhcnJheSB3aXRoIG5ldyBwYXJ0aXRp b25zIGRlc2NyaXB0aW9ucworICogbnBhcnRzOgludW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMK KyAqIHBzdGF0ZToJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5l IGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJlbnRfdmFsdWVz X2luX25ld19wYXJ0aXRpb25zKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAgT2lkIHBh cnRPaWQsCisJCQkJCQkJCQkgIFNpbmdsZVBhcnRpdGlvblNwZWMgKipwYXJ0cywKKwkJCQkJ CQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQorewor CVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOwor CVBhcnRpdGlvbkRlc2MgcGFydGRlc2MgPSBSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFy ZW50LCBmYWxzZSk7CisJUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbyA9IHBhcnRkZXNj LT5ib3VuZGluZm87CisJaW50CQkJaTsKKwlib29sCQlmb3VuZCA9IHRydWU7CisJYm9vbAkJ c2VhcmNoTnVsbCA9IGZhbHNlOworCURhdHVtCQlkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShO VUxMKTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9M SVNUKTsKKworCS8qCisJICogU3BlY2lhbCBwcm9jZXNzaW5nIGZvciBOVUxMIHZhbHVlLiBT ZWFyY2ggTlVMTCB2YWx1ZSBpZiB0aGUgc3BsaXQKKwkgKiBwYXJ0aXRpb24gKHBhcnRPaWQp IGNvbnRhaW5zIGl0LgorCSAqLworCWlmIChwYXJ0aXRpb25fYm91bmRfYWNjZXB0c19udWxs cyhib3VuZGluZm8pICYmCisJCXBhcnRkZXNjLT5vaWRzW2JvdW5kaW5mby0+bnVsbF9pbmRl eF0gPT0gcGFydE9pZCkKKwl7CisJCWlmICghZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9u c19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkgICBrZXktPnBhcnRj b2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCB0cnVlKSkKKwkJeworCQkJZm91bmQg PSBmYWxzZTsKKwkJCXNlYXJjaE51bGwgPSB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBT ZWFyY2ggYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBwYXJ0T2lkIGluIFBh cnRpdGlvbkRlc2Mgb2YKKwkgKiBwYXJ0aXRpb25lZCB0YWJsZS4KKwkgKi8KKwlmb3IgKGkg PSAwOyBpIDwgYm91bmRpbmZvLT5uZGF0dW1zOyBpKyspCisJeworCQlpZiAocGFydGRlc2Mt Pm9pZHNbYm91bmRpbmZvLT5pbmRleGVzW2ldXSA9PSBwYXJ0T2lkKQorCQl7CisJCQkvKiBX ZSBmb3VuZCB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBjb250YWlucy4gKi8KKwkJCWRh dHVtID0gYm91bmRpbmZvLT5kYXR1bXNbaV1bMF07CisJCQlpZiAoIWZpbmRfdmFsdWVfaW5f bmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJ CSAgIGtleS0+cGFydGNvbGxhdGlvbiwgcGFydHMsIG5wYXJ0cywgZGF0dW0sIGZhbHNlKSkK KwkJCXsKKwkJCQlmb3VuZCA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQor CisJaWYgKCFmb3VuZCkKKwl7CisJCUNvbnN0CSAgICpub3RGb3VuZFZhbDsKKworCQlpZiAo IXNlYXJjaE51bGwpCisKKwkJCS8qCisJCQkgKiBNYWtlIENvbnN0IGZvciBnZXR0aW5nIHN0 cmluZyByZXByZXNlbnRhdGlvbiBvZiBub3QgZm91bmQKKwkJCSAqIHZhbHVlLgorCQkJICov CisJCQlub3RGb3VuZFZhbCA9IG1ha2VDb25zdChrZXktPnBhcnR0eXBpZFswXSwKKwkJCQkJ CQkJCWtleS0+cGFydHR5cG1vZFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cGNvbGxbMF0s CisJCQkJCQkJCQlrZXktPnBhcnR0eXBsZW5bMF0sCisJCQkJCQkJCQlkYXR1bSwKKwkJCQkJ CQkJCWZhbHNlLAkvKiBpc251bGwgKi8KKwkJCQkJCQkJCWtleS0+cGFydHR5cGJ5dmFsWzBd KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb25zIGRvIG5vdCBo YXZlIHZhbHVlICVzIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcyIsCisJCQkJCSAgIHNlYXJj aE51bGwgPyAiTlVMTCIgOiBnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nKG5vdEZvdW5kVmFs KSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0CisgKgor ICogQ2hlY2tzIG5ldyBwYXJ0aXRpb25zIGZvciBTUExJVCBQQVJUSVRJT05TIGNvbW1hbmQ6 CisgKiAxLiBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lLgorICogMi4gTmV3IHBh cnRpdGlvbnMgc2hvdWxkIGhhdmUgZGlmZmVyZW50IG5hbWVzCisgKiAgICAod2l0aCBleGlz dGluZyBwYXJ0aXRpb25zIHRvbykuCisgKiAzLiBCb3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMg c2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZCBleGlzdGluZworICogICAgcGFydGl0 aW9ucy4KKyAqIDQuIEluIGNhc2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQgcGFydGl0 aW9uLCBvbmUgb2YgbmV3IHBhcnRpdGlvbnMKKyAqICAgIHNob3VsZCBiZSBERUZBVUxULgor ICogNS4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBvciBleGlzdGluZyBwYXJ0aXRpb25zIGNv bnRhaW5zIERFRkFVTFQKKyAqICAgIHBhcnRpdGlvbiwgbmV3IHBhcnRpdGlvbnMgY2FuIGhh dmUgYW55IGJvdW5kcyBpbnNpZGUgc3BsaXQKKyAqICAgIHBhcnRpdGlvbiBib3VuZCAoY2Fu IGJlIHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMgYm91bmRzKS4KKyAqIDYuIEluIGNhc2Ug cGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiwgREVG QVVMVAorICogICAgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBvZiBuZXcgcGFy dGl0aW9uLgorICogNy4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBub3QgY29udGFpbnMgREVG QVVMVCBwYXJ0aXRpb24gYW5kCisgKiAgICBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBo YXZlIERFRkFVTFQgcGFydGl0aW9uIHRoZSBmb2xsb3dpbmcKKyAqICAgIHNob3VsZCBiZSB0 cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBlcXVhbAorICog ICAgdG8gYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0 aXRpb25lZCB0YWJsZQorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisg KiBsaXN0OgkJCWxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHBzdGF0ZToJCQlwb2ludGVy IHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAq Lwordm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24gcGFyZW50LAor CQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCSAgIExpc3QgKnBhcnRsaXN0LAor CQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXk7CisJ Y2hhcgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJYm9vbAkJaXNTcGxp dFBhcnREZWZhdWx0OworCWJvb2wJCWV4aXN0c0RlZmF1bHRQYXJ0OworCWludAkJCWRlZmF1 bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2luZ2xlUGFydGl0aW9uU3Bl YyAqKm5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHNQcmV2ID0gTlVMTDsK KwlpbnQJCQlucGFydHMgPSAwOworCisJa2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXko cGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKwor CXN3aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9MSVNU OgorCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJCQkvKgorCQkJ CSAqIE1ha2UgYXJyYXkgbmV3X3BhcnRzIHdpdGggbmV3IHBhcnRpdGlvbnMgZXhjZXB0IERF RkFVTFQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJbmV3X3BhcnRzID0gKFNp bmdsZVBhcnRpdGlvblNwZWMgKiopCisJCQkJCXBhbGxvYzAobGlzdF9sZW5ndGgocGFydGxp c3QpICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlvblNwZWMgKikpOworCQkJCWkgPSAwOworCQkJ CWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHBhcnRsaXN0KQorCQkJ CXsKKwkJCQkJaWYgKHNwcy0+Ym91bmQtPmlzX2RlZmF1bHQpCisJCQkJCXsKKwkJCQkJCWlm IChkZWZhdWx0X2luZGV4ID49IDApCisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJ CWVycm1zZygiREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZSIpLAorCQkJCQkJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzLT5uYW1lLT5sb2NhdGlvbikpOworCQkJ CQkJZGVmYXVsdF9pbmRleCA9IGk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJ CQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOworCQkJCQl9CisJCQkJCWkrKzsKKwkJCQl9 CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9IQVNIOgor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQg dGFibGUgY2Fubm90IGJlIHNwbGl0IikpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJ CWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVneTogJWQiLAorCQkJ CSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwkJCWJyZWFrOworCX0KKworCWlmIChzdHJhdGVn eSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpCisJeworCQlQYXJ0aXRpb25SYW5nZUJv dW5kICoqbG93ZXJfYm91bmRzOworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICoqdG1wX25ld19w YXJ0czsKKworCQkvKgorCQkgKiBGb3Igc2ltcGxpZnkgY2hlY2sgZm9yIHJhbmdlcyBvZiBu ZXcgcGFydGl0aW9ucyBuZWVkIHRvIHNvcnQgYWxsCisJCSAqIHBhcnRpdGlvbnMgaW4gYXNj ZW5kaW5nIG9yZGVyIG9mIHRoZW0gYm91bmRzICh3ZSBjb21wYXJlIHVwcGVyCisJCSAqIGJv dW5kIG9ubHkpLgorCQkgKi8KKwkJbG93ZXJfYm91bmRzID0gKFBhcnRpdGlvblJhbmdlQm91 bmQgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5k ICopKTsKKworCQkvKiBDcmVhdGUgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQlmb3Ig KGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCXsKKwkJCWxvd2VyX2JvdW5kc1tpXSA9IG1h a2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLAorCQkJCQkJCQkJCQkJCQluZXdfcGFy dHNbaV0tPmJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCX0KKworCQkvKiBTb3J0IGFy cmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywgbnBh cnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkgIHFzb3J0X3BhcnRp dGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJCS8qIFJlb3JkZXIgYXJyYXkg b2YgcGFydGl0aW9ucy4gKi8KKwkJdG1wX25ld19wYXJ0cyA9IG5ld19wYXJ0czsKKwkJbmV3 X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAq IHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICopKTsKKwkJZm9yIChpID0gMDsgaSA8IG5w YXJ0czsgaSsrKQorCQkJbmV3X3BhcnRzW2ldID0gdG1wX25ld19wYXJ0c1tsb3dlcl9ib3Vu ZHNbaV0tPmluZGV4XTsKKworCQlwZnJlZSh0bXBfbmV3X3BhcnRzKTsKKwkJcGZyZWUobG93 ZXJfYm91bmRzKTsKKwl9CisKKwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29p ZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUp KTsKKworCS8qIGlzU3BsaXRQYXJ0RGVmYXVsdCBmbGFnOiBpcyBzcGxpdCBwYXJ0aXRpb24g YSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KKwlpc1NwbGl0UGFydERlZmF1bHQgPSAoZGVmYXVs dFBhcnRPaWQgPT0gc3BsaXRQYXJ0T2lkKTsKKworCWlmIChpc1NwbGl0UGFydERlZmF1bHQg JiYgZGVmYXVsdF9pbmRleCA8IDApCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm9u ZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxp dCBwYXJ0aXRpb24gaXMgREVGQVVMVCIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsICgoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaW5pdGlhbChwYXJ0bGlzdCkpLT5uYW1l LT5sb2NhdGlvbikpOworCX0KKwllbHNlIGlmICghaXNTcGxpdFBhcnREZWZhdWx0ICYmIChk ZWZhdWx0X2luZGV4ID49IDApICYmIE9pZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCXsK KwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzRGVmID0KKwkJCShTaW5nbGVQYXJ0aXRpb25T cGVjICopIGxpc3RfbnRoKHBhcnRsaXN0LCBkZWZhdWx0X2luZGV4KTsKKworCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9O KSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVz ZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cyIpLAorCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIHNwc0RlZi0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisKKwkvKiBJ bmRpY2F0b3IgdGhhdCBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgKG9yIHdpbGwgaGF2ZSkgREVG QVVMVCBwYXJ0aXRpb24gKi8KKwlleGlzdHNEZWZhdWx0UGFydCA9IE9pZElzVmFsaWQoZGVm YXVsdFBhcnRPaWQpIHx8IChkZWZhdWx0X2luZGV4ID49IDApOworCisJZm9yIChpID0gMDsg aSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gbmV3 X3BhcnRzW2ldOworCisJCWlmIChpc1NwbGl0UGFydERlZmF1bHQpCisJCXsKKwkJCS8qCisJ CQkgKiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUIHBhcnRpdGlvbiB3ZSBj YW4gdXNlIGFueQorCQkJICogZnJlZSByYW5nZXMgLSBhcyB3aGVuIGNyZWF0aW5nIGEgbmV3 IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJY2hlY2tfbmV3X3BhcnRpdGlvbl9ib3VuZChzcHMt Pm5hbWUtPnJlbG5hbWUsIHBhcmVudCwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCSAgcHN0YXRl KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBDaGVja3MgdGhhdCBib3VuZCBv ZiBjdXJyZW50IHBhcnRpdGlvbiBpcyBpbnNpZGUgYm91bmQgb2Ygc3BsaXQKKwkJCSAqIHBh cnRpdGlvbi4gRm9yIHJhbmdlIHBhcnRpdGlvbmluZzogY2hlY2tzIHRoYXQgdXBwZXIgYm91 bmQgb2YKKwkJCSAqIHByZXZpb3VzIHBhcnRpdGlvbiBpcyBlcXVhbCB0byBsb3dlciBib3Vu ZCBvZiBjdXJyZW50CisJCQkgKiBwYXJ0aXRpb24uIEZvciBsaXN0IHBhcnRpdGlvbmluZzog Y2hlY2tzIHRoYXQgc3BsaXQgcGFydGl0aW9uCisJCQkgKiBjb250YWlucyBhbGwgdmFsdWVz IG9mIGN1cnJlbnQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAoc3RyYXRlZ3kgPT0gUEFS VElUSU9OX1NUUkFURUdZX1JBTkdFKQorCQkJeworCQkJCWJvb2wJCWZpcnN0ID0gKGkgPT0g MCk7CisJCQkJYm9vbAkJbGFzdCA9IChpID09IChucGFydHMgLSAxKSk7CisKKwkJCQljaGVj a19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShwYXJlbnQsIHNwcy0+bmFtZS0+ cmVsbmFtZSwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCQkJCQkgICBzcGxpdFBhcnRPaWQsIGZp cnN0LCBsYXN0LAorCQkJCQkJCQkJCQkJCSAgIGV4aXN0c0RlZmF1bHRQYXJ0LCBwc3RhdGUp OworCQkJfQorCQkJZWxzZQorCQkJCWNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0 X2xpc3QocGFyZW50LCBzcHMtPm5hbWUtPnJlbG5hbWUsCisJCQkJCQkJCQkJCQkJICBzcHMt PmJvdW5kLCBzcGxpdFBhcnRPaWQsIHBzdGF0ZSk7CisJCX0KKworCQkvKiBSYW5nZXMgb2Yg bmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQlpZiAoc3RyYXRlZ3kg PT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYmIHNwc1ByZXYpCisJCQljaGVja190d29f cGFydGl0aW9uc19ib3VuZHNfcmFuZ2UocGFyZW50LCBzcHNQcmV2LT5uYW1lLCBzcHNQcmV2 LT5ib3VuZCwKKwkJCQkJCQkJCQkJICBzcHMtPm5hbWUsIHNwcy0+Ym91bmQsIGV4aXN0c0Rl ZmF1bHRQYXJ0LCBwc3RhdGUpOworCisJCXNwc1ByZXYgPSBzcHM7CisKKwkJLyogQ2hlY2s6 IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9y IChqID0gaSArIDE7IGogPCBucGFydHM7IGorKykKKwkJeworCQkJU2luZ2xlUGFydGl0aW9u U3BlYyAqc3BzMiA9IG5ld19wYXJ0c1tqXTsKKworCQkJaWYgKGVxdWFsKHNwcy0+bmFtZSwg c3BzMi0+bmFtZSkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09E RV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJuYW1lIFwiJXNcIiBpcyBhbHJl YWR5IHVzZWQiLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIHNwczItPm5hbWUtPmxvY2F0aW9uKSk7CisJCX0KKwl9CisKKwlpZiAo c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpCisJeworCQkvKiBWYWx1ZXMg b2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQljaGVja19wYXJ0 aXRpb25zX25vdF9vdmVybGFwX2xpc3QocGFyZW50LCBuZXdfcGFydHMsIG5wYXJ0cywKKwkJ CQkJCQkJCQkgIHBzdGF0ZSk7CisKKwkJLyoKKwkJICogTmVlZCB0byBjaGVjayB0aGF0IGFs bCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zIGluIG5ldworCQkgKiBwYXJ0 aXRpb25zLiBTa2lwIHRoaXMgY2hlY2sgaWYgREVGQVVMVCBwYXJ0aXRpb24gZXhpc3RzLgor CQkgKi8KKwkJaWYgKCFleGlzdHNEZWZhdWx0UGFydCkKKwkJCWNoZWNrX3BhcmVudF92YWx1 ZXNfaW5fbmV3X3BhcnRpdGlvbnMocGFyZW50LCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkJ CQkgIG5ld19wYXJ0cywgbnBhcnRzLCBwc3RhdGUpOworCX0KKworCXBmcmVlKG5ld19wYXJ0 cyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggM2Q2ZTZiZGJmZC4u M2UxNjg5YjExOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTM3MDcs MyArMTM3MDcsMjEgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRf ZGF0dW1zKQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKIH0KKworLyoKKyAqIGdldF9saXN0X3Bh cnR2YWx1ZV9zdHJpbmcKKyAqCQlBIEMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9uZSBs aXN0IHBhcnRpdGlvbiB2YWx1ZQorICovCitjaGFyICoKK2dldF9saXN0X3BhcnR2YWx1ZV9z dHJpbmcoQ29uc3QgKnZhbCkKK3sKKwlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwlTdHJp bmdJbmZvCWJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwltZW1zZXQoJmNvbnRleHQsIDAs IHNpemVvZihkZXBhcnNlX2NvbnRleHQpKTsKKwljb250ZXh0LmJ1ZiA9IGJ1ZjsKKworCWdl dF9jb25zdF9leHByKHZhbCwgJmNvbnRleHQsIC0xKTsKKworCXJldHVybiBidWYtPmRhdGE7 Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggMmYyNjNkMTA2Yi4uMzRjMjVkYjVh NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjc0Miw3ICsyNzQyLDcgQEAgbWF0 Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCQkJCSAgIk9XTkVSIFRPIiwg IlNFVCIsICJWQUxJREFURSBDT05TVFJBSU5UIiwKIAkJCQkJICAiUkVQTElDQSBJREVOVElU WSIsICJBVFRBQ0ggUEFSVElUSU9OIiwKIAkJCQkJICAiREVUQUNIIFBBUlRJVElPTiIsICJG T1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiLAotCQkJCQkgICJNRVJHRSBQQVJUSVRJT05TICgi LAorCQkJCQkgICJTUExJVCBQQVJUSVRJT04iLCAiTUVSR0UgUEFSVElUSU9OUyAoIiwKIAkJ CQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAqLwogCWVs c2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQiKSkKQEAg LTMwMDUsMTAgKzMwMDUsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5f aWQsCiAJCUNPTVBMRVRFX1dJVEgoIkZST00gKCIsICJJTiAoIiwgIldJVEggKCIpOwogCiAJ LyoKLQkgKiBJZiB3ZSBoYXZlIEFMVEVSIFRBQkxFIDxmb28+IERFVEFDSCBQQVJUSVRJT04s IHByb3ZpZGUgYSBsaXN0IG9mCisJICogSWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBE RVRBQ0h8U1BMSVQgUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBvZgogCSAqIHBhcnRpdGlv bnMgb2YgPGZvbz4uCiAJICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUi LCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iKSkKKwllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIfFNQTElUIiwgIlBBUlRJVElP TiIpKQogCXsKIAkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXYzX3dkKTsKIAkJQ09N UExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90YWJsZSk7 CkBAIC0zMDE2LDYgKzMwMTYsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRl cm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwg IkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNP TkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQ TElUIFBBUlRJVElPTiA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJU QUJMRSIsIE1hdGNoQW55LCAiU1BMSVQiLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQorCQlD T01QTEVURV9XSVRIKCJJTlRPICggUEFSVElUSU9OIik7CisKIAkvKiBBTFRFUiBUQUJMRSA8 bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIpKQogCXsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA3YzYwN2RjNTVhLi42YmQ3MGRiZmU0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC05NjMsMTUgKzk2MywyNiBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25SYW5nZURhdHVtCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQYXJ0aXRpb25SYW5nZURh dHVtOwogCisvKgorICogUGFydGl0aW9uRGVzYyAtIGluZm8gYWJvdXQgc2luZ2xlIHBhcnRp dGlvbiBmb3IgQUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqLwordHlw ZWRlZiBzdHJ1Y3QgU2luZ2xlUGFydGl0aW9uU3BlYworeworCU5vZGVUYWcJCXR5cGU7CisK KwlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uICovCisJUGFydGl0 aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCit9 IFNpbmdsZVBhcnRpdGlvblNwZWM7CisKIC8qCiAgKiBQYXJ0aXRpb25DbWQgLSBpbmZvIGZv ciBBTFRFUiBUQUJMRS9JTkRFWCBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBjb21tYW5kcwog ICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKIHsKIAlOb2RlVGFnCQl0eXBlOwot CVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2Rl dGFjaC9tZXJnZSAqLworCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRp b24gdG8gYXR0YWNoL2RldGFjaC9tZXJnZS9zcGxpdCAqLwogCVBhcnRpdGlvbkJvdW5kU3Bl YyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLwotCUxpc3QJICAgKnBh cnRsaXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25zLCBmb3IgTUVSR0UKKwlMaXN0CSAgICpw YXJ0bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucywgZm9yIE1FUkdFL1NQTElUCiAJCQkJ CQkJCSAqIFBBUlRJVElPTiBjb21tYW5kICovCiAJYm9vbAkJY29uY3VycmVudDsKIH0gUGFy dGl0aW9uQ21kOwpAQCAtMjQ3NSw2ICsyNDg2LDcgQEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFi bGVUeXBlCiAJQVRfQXR0YWNoUGFydGl0aW9uLAkJCS8qIEFUVEFDSCBQQVJUSVRJT04gKi8K IAlBVF9EZXRhY2hQYXJ0aXRpb24sCQkJLyogREVUQUNIIFBBUlRJVElPTiAqLwogCUFUX0Rl dGFjaFBhcnRpdGlvbkZpbmFsaXplLCAvKiBERVRBQ0ggUEFSVElUSU9OIEZJTkFMSVpFICov CisJQVRfU3BsaXRQYXJ0aXRpb24sCQkJLyogU1BMSVQgUEFSVElUSU9OICovCiAJQVRfTWVy Z2VQYXJ0aXRpb25zLAkJCS8qIE1FUkdFIFBBUlRJVElPTlMgKi8KIAlBVF9BZGRJZGVudGl0 eSwJCQkJLyogQUREIElERU5USVRZICovCiAJQVRfU2V0SWRlbnRpdHksCQkJCS8qIFNFVCBp ZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDkwZThj ZGRmOGIuLjY2Yzg4NzY2NTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTQyMSw2ICs0MjEs NyBAQCBQR19LRVlXT1JEKCJzbWFsbGludCIsIFNNQUxMSU5ULCBDT0xfTkFNRV9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic25hcHNob3QiLCBTTkFQU0hPVCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic29tZSIsIFNPTUUsIFJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzb3VyY2UiLCBTT1VS Q0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInNwbGl0 IiwgU1BMSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InNxbCIsIFNRTF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJzdGFibGUiLCBTVEFCTEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInN0YW5kYWxvbmUiLCBTVEFOREFMT05FX1AsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5o CmluZGV4IDY5MGQyNTk2MTkuLjQ1YjFmYTFkZTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDYgKzE0MywxMCBAQCBleHRlcm4gaW50CXBhcnRp dGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVy biBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRp bmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVy biB2b2lkIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJ CQkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkgICBMaXN0ICpwYXJ0bGlz dCwKKwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSk7CiBleHRlcm4gdm9pZCBjYWxj dWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJ CQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggNWYyZWEyZTRkMC4uNjIwNDNkM2JmNSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcnVsZXV0aWxzLmgKQEAgLTU0LDQgKzU0LDYgQEAgZXh0ZXJuIGNoYXIgKmdl dF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVtcyk7CiAKIGV4dGVy biBjaGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmcoT2lkIHN0YXRleHRpZCk7 CiAKK2V4dGVybiBjaGFyICpnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nKENvbnN0ICp2YWwp OworCiAjZW5kaWYJCQkJCQkJLyogUlVMRVVUSUxTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0IGIvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWQ5ZThiMDkyNQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CkBAIC0w LDAgKzEsMTkwIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFy dGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVw IHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFS VElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRf MTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47 CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0 ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7 CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQx NQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMxYiBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVH SU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRw YXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9S IFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRl eHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSBy b3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnMgczJpIHMx YyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUg dHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJ T04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQ QVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7Citz dGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAg ICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4 dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMx YnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxF IHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElU SU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAg UEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOwor c3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz Mmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8 dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMg czJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFE Oworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFy dF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBW QUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBW QUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsK K3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMy czogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0 MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93 cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMyYnMgczJpIHMx YyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJM RSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElP TiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIw IEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRl eHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSBy b3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmIgczJpIHMx YyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFC TEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRw YXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9S IFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAg ICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4 dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMx YnMgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJzOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRw YXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9O IHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFS VElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3Rl cCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAg czJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcg Li4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQg ICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0 ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czFicyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNP TEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0 cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElP TiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBB UlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0 ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJp OiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4u Pgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAg czJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAg IAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0 MjUKKzM1fHRleHQzNQorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUKaW5kZXggMGRjYTY4NDk1NS4uNDA0YTdmZDgzMiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29s YXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMDgsNiArMTA4LDcgQEAgdGVzdDogcGFy dGl0aW9uLWtleS11cGRhdGUtMgogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMwogdGVz dDogcGFydGl0aW9uLWtleS11cGRhdGUtNAogdGVzdDogcGFydGl0aW9uLW1lcmdlCit0ZXN0 OiBwYXJ0aXRpb24tc3BsaXQKIHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXIt Y29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMgYi9zcmMv dGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDg3MjM5YTRhMQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYwpAQCAt MCwwICsxLDU0IEBACisjIFZlcmlmeSB0aGF0IFNQTElUIG9wZXJhdGlvbiBsb2NrcyBETUwg b3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlCisKK3NldHVwCit7CisgIERST1Ag VEFCTEUgSUYgRVhJU1RTIHRwYXJ0OworICBDUkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQg dGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdlKGkpOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBf MTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAg Q1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMjApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElU SU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CisgIENSRUFURSBU QUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0cGFydCBERUZBVUxUOworICBJTlNF UlQgSU5UTyB0cGFydCBWQUxVRVMgKDUsICd0ZXh0MDUnKTsKKyAgSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxNSwgJ3RleHQxNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDI1LCAndGV4dDI1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMzUsICd0ZXh0 MzUnKTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0cGFydDsKK30KKworc2Vz c2lvbiBzMQorc3RlcCBzMWIJeyBCRUdJTjsgfQorc3RlcCBzMWJycgl7IEJFR0lOIElTT0xB VElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczFicwl7IEJFR0lOIElTT0xB VElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczFzcGx0CXsgQUxURVIgVEFCTEUg dHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJ T04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQ QVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7IH0K K3N0ZXAgczFjCXsgQ09NTUlUOyB9CisKKworc2Vzc2lvbiBzMgorc3RlcCBzMmIJeyBCRUdJ TjsgfQorc3RlcCBzMmJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJF QUQ7IH0KK3N0ZXAgczJicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7 IH0KK3N0ZXAgczJpCXsgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7 IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZST00gdHBh cnQ7IH0KKworCisjIHMxIHN0YXJ0cyBTUExJVCBQQVJUSVRJT04gdGhlbiBzMiB0cnlpbmcg dG8gaW5zZXJ0IHJvdyBhbmQKKyMgd2FpdHMgdW50aWwgczEgZmluaXNoZWQgU1BMSVQgb3Bl cmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMK K3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRh dGlvbiBzMWIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMx YnJyIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJyciBzMXNw bHQgczJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJi cyBzMmkgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJiIHMyaSBz MWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMg czJzCitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2Rl cGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9k ZXBhcnNlLmMKaW5kZXggN2RlNWRkYjg3OC4uMTdkNzJlNDEyZiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYworKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5j CkBAIC0yOTYsNiArMjk2LDkgQEAgZ2V0X2FsdGVydGFibGVfc3ViY21kaW5mbyhQR19GVU5D VElPTl9BUkdTKQogCQkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCQlz dHJ0eXBlID0gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpFIjsKIAkJCQlicmVhazsK KwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJc3RydHlwZSA9ICJTUExJVCBQQVJU SVRJT04iOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQkJ c3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYThhNWM0MWYzCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC0w LDAgKzEsMTY1NSBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0gVGVzdHMgZm9yICJB TFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFuZAorLS0KK0NSRUFU RSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYTI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0K Ky0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNh bGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAy LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2Vz IG5vdCBleGlzdAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX3h4eCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2Fs ZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFu MjAyMiIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsK K0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCistLSBF UlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRp b24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVF UyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyMi0wNi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgaW52YWxpZCBib3VuZCBz cGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorTElORSAyOiAgIChQQVJUSVRJ T04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIuLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBF UlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxl c19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBl bXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAy MiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgU3BlY2lmaWVkIGxvd2VyIGJvdW5k ICgnMDMtMDEtMjAyMicpIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB1cHBlciBib3Vu ZCAoJzAyLTAxLTIwMjInKS4KKy0tRVJST1I6ICBsaXN0IG9mIHNwbGl0IHBhcnRpdGlvbnMg c2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMTAtMDEnKSk7CitFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hv dWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBsZXNzIHRoYW4gbG93ZXIg Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIg aXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSAyOiAg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMg YWxyZWFkeSB1c2VkCistLSAoV2UgY2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2Ft ZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0 aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIw MjIiIGlzIGFscmVhZHkgdXNlZAorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMuLi4KKyAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1 c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIG5hbWUgInNh bGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorTElORSAzOiAgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIg aXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CitFUlJPUjogIEFMVEVSIGFjdGlvbiBTUExJVCBQQVJUSVRJT04g Y2Fubm90IGJlIHBlcmZvcm1lZCBvbiByZWxhdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIy IgorREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVz LgorLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIi IGlzIGdyZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNi0wMScpKTsKK0VSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Yg c3BsaXQgcGFydGl0aW9uCitMSU5FIDQ6IC4uLiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMC4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3Qg ZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIKK0xJTkUgMzogICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRo ZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gVGVzdHMgZm9yIHNwYWNl cyBiZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hvdWxkIGJlIGV4ZWN1dGVkIHdpdGhvdXQg REVGQVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIERFVEFDSCBQQVJU SVRJT04gc2FsZXNfb3RoZXJzOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxp dCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwg dG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTy4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7CitB TFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQ QVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hl bWEuc2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4gICAgICB8ICAgICAgICAgVHlwZSAgICAg ICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3Rh dHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8 IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAg ICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8IGNo YXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8 IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfYW1vdW50ICAgICB8IGludGVn ZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBs YWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfZGF0ZSAgICAgICB8IGRhdGUgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWlu ICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoc2FsZXNfZGF0 ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpLAorICAg ICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJyksCisgICAgICAgICAg ICBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVz X2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAy MicpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVzX290aGVy czsKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQg cGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0w Mi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAg ICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIy LTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAg KDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIw MjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAor ICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAn MjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VMRUNU ICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgor ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAx LTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAg ICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90 ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAg OCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAg ICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgt MjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAg ICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5 ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAg ICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisg ICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEt MDktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAg fCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3Qg ICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4 IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAw NC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAx NCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSBy b3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBBZGQgc3Bs aXQgcGFydGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBTcGxpdCBw YXJ0aXRpb24sIGFsc28gY2hlY2sgc2NoZW1hIHF1YWxpZmljYXRpb24gb2YgbmV3IHBhcnRp dGlvbnMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworXGQrIHNhbGVzX3JhbmdlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9u X3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZSIKKyAgICAgIENvbHVtbiAgICAgIHwgICAgICAg ICBUeXBlICAgICAgICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3Rv cmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNv bl9uYW1lIHwgY2hhcmFjdGVyIHZhcnlpbmcoMzApIHwgICAgICAgICAgIHwgICAgICAgICAg fCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19hbW91bnQg ICAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAg ICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc19kYXRlICAgICAg IHwgZGF0ZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAg ICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdF IChzYWxlc19kYXRlKQorUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0y MDIyJyksCisgICAgICAgICAgICBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzA0 LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpLAor ICAgICAgICAgICAgc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIy JykgVE8gKCcwMi0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19vdGhlcnMgREVGQVVM VAorCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAg ICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIy LTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIw MjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAor ICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxl cicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAn MjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyks CisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2Fu ZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisg ICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDIt MTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAg IDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0y MDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUw IHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAg ICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgMTQgfCBT bWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg ICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAg ICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0x MS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAg MTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0w OC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMg fCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAg ICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIw MjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAg fCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAg ICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDE0IHwgU21p dGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIFRlc3QgZm9yOgorLS0g ICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47 CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJ TlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJD SEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4 dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8 fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2Fs ZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykK KyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNf ZGF5KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19k YXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW5fZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBG T1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZS T00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKK0lO U0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwg NyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIy LCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywg MjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2Vy MScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFu YWdlcjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJP TSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5OworICAgICB0YWJsZW9pZCAgICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBz YWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjEgICAgIHwgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIu MDcgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZGVjMjAyMSAgICAgfCBNYW5hZ2VyMiAg ICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4x Mi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIz ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIy LjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdl cjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIw MjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5h Z2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwg MjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1h bmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQg fCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgICAgIHwg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAg MyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICAgICAg fCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAg ICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgICAg ICB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAg ICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93cykKKworQUxU RVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfamFuX2ZlYjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy LCAxLCAxKSBUTyAoMjAyMiwgMiwgMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKSk7CitJTlNFUlQg SU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21v bnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApLAor ICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXk7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjEgfCBNYW5hZ2VyMSAgICAgICAg IHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8 IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIxIHwgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBT YWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIxICAgICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVz IGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBk ZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVw YXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFy dG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRt ZW50Cisgc2FsZXNfZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVu dAorIHNhbGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQK KyBzYWxlc19mZWIyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50Ciso MTEgcm93cykKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9l cyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitFUlJPUjog IHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTog U0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyAgICAgICAgICAgICAgICAgICAg ICBeCitEUk9QIFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxp dCBERUZBVUxUIHBhcnRpdGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNo ZWNrIGluZGV4IGFmdGVyIHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9O IHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NF TEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0y MDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAw IHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAg ICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDYgfCBQ b2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIK KyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAw Mi0yMy0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRv ICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAg MTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDEx IHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAn c2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1h JyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICB0YWJs ZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBz YWxlc19vdGhlcnMgfCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAg IHwgQ1JFQVRFIElOREVYIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hLnNhbGVzX290aGVycyBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkK KygxIHJvdykKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIERFRkFVTFQpOworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVz CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZG OworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAy Mi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21p cm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAg ICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisg ICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDIt MjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJl IHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4 LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK Kyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2Rh dGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAg IDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygx IHJvdykKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2Nh biA9IE9OOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdz YWxlc19mZWIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1h JyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFi bGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl eGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYSB8IHNhbGVzX2ZlYjIwMjIgfCBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVfaWR4IHwg ICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVfaWR4 IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJF IHRhYmxlbmFtZSA9ICdzYWxlc19tYXIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRp b25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFt ZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAg IHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX21hcjIwMjIgfCBzYWxlc19tYXIyMDIyX3Nh bGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19tYXIyMDIy X3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfbWFyMjAy MiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBw Z19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7Cisg ICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRl eG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2FwcjIwMjIgfCBz YWxlc19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRF WCBzYWxlc19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEuc2FsZXNfYXByMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKwor U0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhl cnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZ IGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwg ICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19v dGhlcnMgfCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIHwgICAgICAgICAgICB8IENS RUFURSBJTkRFWCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIE9OIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEg cm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gVGVzdDog c29tZSBjYXNlcyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQg Ym91bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQg SU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAobG93ZXIg Ym91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJy b3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVT IEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vy cm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRv IHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitMSU5FIDM6 ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBU TyAoMjAyMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVx dWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19l cnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAodXBwZXIgYm91bmQpCistLSBF UlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90 IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjEx MjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAg UEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitMSU5FIDQ6ICAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMC4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUg cGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIHNhbGVzX2Vycm9yIGludGVy c2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRv IHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAo MjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMTApIFRPICgyMDIxMTIyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19l cnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMS4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgQUxU RVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBi b3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGgg c2FsZXNfZGVjMjAyMSAoZXhhY3RseSB0aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRv IHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAo MjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19l cnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMi4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgQUxU RVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBi b3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBFUlJPUjogIG9uZSBwYXJ0aXRpb24gaW4gdGhl IGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVG QVVMVAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00g KDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMw MSkpOworRVJST1I6ICBvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZB VUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0xJTkUgMjogICAoUEFS VElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIw Li4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNh bGVzX25vZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfZmViMjAy MgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSks CisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7Cist LSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGVxdWFsIHRvIGxvd2Vy IGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfZmViMjAyMgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjEx MjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9S RUlHTiBLRVkgQ09OU1RSQUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZB TFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxl c3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCks CitzYWxlc19hbW91bnQgSU5UIENIRUNLIChzYWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworU0VMRUNU IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2Nv bnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2Fs ZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBL RVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29u X2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3Mp CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKy0tIFdlIHNob3VsZCBzZWUg dGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNfZmViX21hcl9hcHIyMDIyIHBhcnRp dGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtl eSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViMjAyMic6 OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sg KChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JF SUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNw ZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIg cm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNv bmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAy Mic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAgICAg ICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hF Q0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBG T1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2Fs ZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQor KDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUs IGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXBy MjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisg Q0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0K KyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUo c2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsx fQorKDIgcm93cykKKworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNf bWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNf YW1vdW50X2NoZWNrIgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAn MjAyMi0wMy0xMScpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFy MjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1v dW50X2NoZWNrIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDEsIDAsIDAzLTEx LTIwMjIpLgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19t YXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9z YWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgt MSwgMTAsICcyMDIyLTAzLTExJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFi bGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNh bGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzcGVy c29uX2lkKT0oLTEpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJzYWxlc3Blb3BsZSIuCist LSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMt MTEnKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2Fs ZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb24gcGFy dGl0aW9uZWQgdGFibGUgaW4gY2FzZSBvZiBleGlzdGluZyBGT1JFSUdOIEtFWSByZWZlcmVu Y2UgZnJvbSBhbm90aGVyIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNh bGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFC TEUgc2FsZXMgKHNhbGVzcGVyc29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNh bGVzcGVyc29uX2lkKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUx MF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgICdQb2lyb3Qn KSwKKyAgKDEwLCAnTWF5JyksCisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAsICdTbWlybm9m ZicpLAorICAoMzAsICdGb3JkJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMKKyAgKDEs ICAxMDAsICcyMDIyLTAzLTAxJyksCisgICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpLAorICAo MTAsIDE1MCwgJzIwMjItMDMtMDEnKSwKKyAgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyksCisg ICgxOSwgMjAwLCAnMjAyMi0wMy0wNCcpLAorICAoMjAsIDUwLCAgJzIwMjItMDMtMTInKSwK KyAgKDIwLCAxNzAsICcyMDIyLTAzLTAyJyksCisgICgzMCwgMzAsICAnMjAyMi0wMy0wNCcp OworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVS IEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8 ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAg ICAgIDEwIHwgTWF5Cisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDE5IHwgSXZh bm92Cisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBz YWxlc3Blb3BsZTEwXzQwIHwgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80 MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVF UyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9p ZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisg c2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDEwIHwgTWF5Cisgc2FsZXNwZW9wbGUx MF8yMCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUyMF8zMCB8ICAg ICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3BsZTMwXzQwIHwgICAgICAgICAg ICAgMzAgfCBGb3JkCisoNSByb3dzKQorCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxl c19zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICg0MCwg NTAsICAnMjAyMi0wMy0wNCcpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNw ZXJzb25faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNwZXJzb25faWQpPSg0MCkgaXMg bm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzcGVvcGxlIi4KKy0tIG9rCitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CitEUk9QIFRBQkxFIHNh bGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0g VGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dl cnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEw IFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAn cGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlcigl KSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBd LCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7Cisk Qk9EWSQ7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVt ZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAg IEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2Vy dF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVv cGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9O IHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUg YWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworLS0gMiB0cmlnZ2Vy cyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Bl b3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBS T1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5T RVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hv dWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFM VUVTICgxOSwgJ0l2YW5vdicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2Fs bGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZS T00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZB TFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhl cmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMg KDIwLCAnU21pcm5vZmYnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxl ZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6 ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9 IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhl cmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzAsICdG b3JkJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9 IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3Bl cnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAgICAgICAxIHwgUG9p cm90Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDEwIHwgTWF5Cisgc2FsZXNw ZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUyMF8z MCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3BsZTMwXzQwIHwgICAg ICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxl IENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOwor LS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRjaCBpZGVudGl0eSBjb2x1bW4KKy0t IElmIHNwbGl0IHBhcnRpdGlvbiBjb2x1bW4gaXMgaWRlbnRpdHkgY29sdW1uLCBjb2x1bW5z IG9mIG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVudGl0eSBjb2x1bW5zIHRvby4KKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdB WVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMV8yIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggaWRlbnRpdHkg Y29sdW1uOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMl81KHNhbGVzcGVyc29uX2lkIElO VCBOT1QgTlVMTCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IEZPUiBWQUxV RVMgRlJPTSAoMikgVE8gKDUpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVy c29uX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5vdicpOworU0VMRUNUIGF0dG5h bWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUg YXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lk IE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBh dHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVy c29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUs IGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0 bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUxXzInOjpyZWdjbGFzczo6b2lk IE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBh dHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVy c29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworLS0gU3BsaXQgcGFydGl0 aW9uIGhhcyBpZGVudGl0eSBjb2x1bW46CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHks IGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBh dHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0 bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2Fs ZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAg ICAgICAgICAgIHwgCisoMiByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVv cGxlMl8zIEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDMpLAorICAgUEFSVElUSU9OIHNhbGVz cGVvcGxlM180IEZPUiBWQUxVRVMgRlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNh bGVzcGVvcGxlNF81IEZPUiBWQUxVRVMgRlJPTSAoNCkgVE8gKDUpKTsKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdNYXknKSwgKCdGb3Jk Jyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JE RVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAgIHRhYmxlb2lkICAgIHwgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVvcGxlMV8yIHwgICAg ICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTJfMyB8ICAgICAgICAgICAgICAy IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUzXzQgfCAgICAgICAgICAgICAgMyB8IE1heQorIHNh bGVzcGVvcGxlNF81IHwgICAgICAgICAgICAgIDQgfCBGb3JkCisoNCByb3dzKQorCitTRUxF Q1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0 ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVu dGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisg c2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1Qg YXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBX SEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVu dGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisg c2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCistLSBOZXcg cGFydGl0aW9ucyBoYXZlIGlkZW50aXR5LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfMyc6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdl bmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25f bmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTNfNCc6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdl bmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25f bmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTRfNSc6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdl bmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25f bmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRl ZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lk IElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29s dW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBz YWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQw IFZBTFVFUworICAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicp LAorICAoJ2R1bW15IHZhbHVlIDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJub2ZmJyk7CitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBB VFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJv dCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFS VElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwK KyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRP ICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00g KDMwKSBUTyAoNDApKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICAgIHRhYmxl b2lkICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVz cGVvcGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMTBf MjAgfCAgICAgICAgICAgICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAgICAg ICAgICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxlMjBfMzAgfCAgICAgICAgICAgICAyMCB8 IFNtaXJub2ZmCisgc2FsZXNwZW9wbGUzMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9yZAor KDUgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRl c3Q6IHNwbGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDIt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2Fs ZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNh bGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01h eScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw JyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMt MDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAg IHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVy ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAt MjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1 MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAg ICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy CisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAg IDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygx NCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAg MjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAg fCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDEx IHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJv d3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2Fwcl9hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMDFfMTAgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjJfMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcp IFRPICgnMjAyMi0wNC0yMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMjBfMzAg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0 YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICAgICB0YWJsZW9pZCAgICAgICB8IHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfamFuMjAyMiAg ICAgICB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAw MCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgIHwgICAgICAgICAgICAgMTAg fCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVz X2phbjIwMjIgICAgICAgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAgICB8ICAgICAg ICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIw MjIKKyBzYWxlc19mZWIyMDIyICAgICAgIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAg ICAgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUg fCAwMi0yMy0yMDIyCisgc2FsZXNfbWFyMjAyMiAgICAgICB8ICAgICAgICAgICAgICA3IHwg TGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19t YXIyMDIyICAgICAgIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX21hcjIwMjIgICAgICAgfCAgICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy Cisgc2FsZXNfb3RoZXJzICAgICAgICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAg ICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKyBzYWxlc19hcHIyMDIyXzAxXzEw IHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAxMSB8IFRy dW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfYXBy MjAyMl8xMF8yMCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyXzIwXzMwIHwgICAgICAgICAg ICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor KDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQlkgTElTVCBw YXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBM SVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNw ZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNf c3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERB VEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8n LCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h bGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdM aXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVs aGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworLS0gRVJST1I6ICBuZXcgcGFy dGl0aW9uICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNw bGl0KSBwYXJ0aXRpb24gInNhbGVzX25vcmQiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3Qg Rk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAn VmxhZGl2b3N0b2snLCAnSGVsc2lua2knKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFs IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CitFUlJPUjog IG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVy IChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0xJTkUgMzogLi4uIEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnSGVsc2lua2kn Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3 b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFs IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFM VUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJ T04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdM aXNib24nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIg d291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJh bCIKK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2Vz dCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2Vz IG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBzYWxl c19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2sn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcn LCAnQmVybGluJywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dl c3QiIGNhbm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9l cyBub3QgaGF2ZQorTElORSAyOiAuLi5zX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnLCBOVUxMKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6 ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJl Y2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcs ICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4g KCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxl c19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7 CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMg dmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorTElORSAyOiAu Li5zdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdN ZWxib3VybmUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gY2Fubm90 IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cwor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vh c3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAor ICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7 CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZB VUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cworTElORSA1OiAgICBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzMiBERUZBVUxUKTsKKyAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFC TEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMgZXJyb3JzIGZvciBC WSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2 ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAqIG5ldyBw YXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFz LgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5ULAor IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigy MCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04g QlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0LiBQZXRl cnNidXJnJywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdW bGFkaXZvc3RvaycsIE5VTEwpOworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3Qg aGF2ZSB2YWx1ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworQUxURVIgVEFCTEUg c2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5n JywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6 ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0 aXRpb24gZG9lcworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1 ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworRVJST1I6ICBuZXcgcGFy dGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBk b2VzCistLSBFUlJPUiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZQorQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNf Y2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzMiBERUZBVUxUKTsKK0VSUk9SOiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJl IG9uZQorTElORSA2OiAgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKKyAg ICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBU ZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgU1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgU0VSSUFMLAor IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigy MCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04g QlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNw ZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25f bmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2Fs ZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNpbmtp JywgJ1N0LiBQZXRlcnNidXJnJywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGkn LCAnS3lpdicsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAn MjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwg JzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAs ICcyMDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUw LCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1 MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEw MDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAx MjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAg MTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAg IDEyMDAsICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVyJywgICAnSGVsc2lua2knLCAgICAg ICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAg ICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAg ICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAg ICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAg ICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdW bGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSBzYWxlc19saXN0IE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNv bl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfbm9yZCAg ICB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8IFN0LiBQZXRlcnNidXJn IHwgICAgICAgICAyMDAwIHwgMDMtMDUtMjAyMgorIHNhbGVzX25vcmQgICAgfCAgICAgICAg ICAgICAgNyB8IE1heSAgICAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAg MTIwMCB8IDAzLTA2LTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAgICAgICAgICAgIDkgfCBN YXkgICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0x MS0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAg ICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAgODAwIHwgMDMtMDItMjAyMgorIHNh bGVzX3dlc3QgICAgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcg WW9yayAgICAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyBzYWxlc193ZXN0ICAg IHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAg ICAgIDExIHwgTXVsbGVyICAgICAgICAgICB8IE1hZHJpZCAgICAgICAgIHwgICAgICAgICAg NjUwIHwgMDMtMDUtMjAyMgorIHNhbGVzX3dlc3QgICAgfCAgICAgICAgICAgICAxNCB8IFBs YXRvICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1 LTIwMjIKKyBzYWxlc19lYXN0ICAgIHwgICAgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAg ICAgIHwgQmVqaW5nICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgc2Fs ZXNfZWFzdCAgICB8ICAgICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICAgICB8IFZsYWRp dm9zdG9rICAgIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorIHNhbGVzX2NlbnRyYWwg fCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8 ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgQmVybGluICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMy0wMS0yMDIyCisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAgIDEyIHwgU21p dGggICAgICAgICAgICB8IEt5aXYgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTAt MjAyMgorIHNhbGVzX2NlbnRyYWwgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg ICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygxNCBy b3dzKQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgc3Bs aXR0aW5nIHBhcnRpdGlvbgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBz YWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAg fCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hF UkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAg ICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAg MTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0 IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAy MgorKDEgcm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9z ZXFzY2FuID0gT047CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdCBmb3I6 CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNw YWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9u cyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz JyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRl Y2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyks CisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lk LCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICB0YWJsZW9pZCAgICAgICAgfCBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfb3RoZXJzICAgICAg ICAgIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAw IHwgMDEtMzEtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxl c19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAg fCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwg ICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDIt MjMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA5IHwgTXVs bGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19vdGhl cnMgICAgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAg ICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAy MgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAg ICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKyBzYWxlc19tYXIyMDIyXzFk ZWNhZGUgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAx NzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfamFuMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAg MTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNh bGVzX2ZlYjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAg ICB8ICAgICAgICAgIDUwMCB8IDAyLTA5LTIwMjIKKyBzYWxlc19mZWIyMDIyXzFkZWNhZGUg fCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAw Mi0wNy0yMDIyCisgc2FsZXNfYXByMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2Fw cjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygxNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IG5vbi1ERUZBVUxUIHBh cnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0g ICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21t YW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjIt MDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdics ICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAy Mi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisg ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nz b24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcy MDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwK KyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0 bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAg JzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcp OworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAq IEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOwor ICAgICAgIHRhYmxlb2lkICAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAg MSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2Fs ZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAg IHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8 ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0 LTEzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgOCB8IEVy aWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfb3Ro ZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAg ICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIw MjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAg ICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICAg ICAgICAgIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAg NTEwIHwgMDUtMDQtMjAyMgorIHNhbGVzX21hcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAg ICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBz YWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg ICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfZmViMjAyMl8xZGVjYWRl IHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwg MDItMDktMjAyMgorIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA2IHwg UG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKyBzYWxlc19h cHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMl8xZGVjYWRlIHwgICAg ICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYt MjAyMgorKDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVz dCBmb3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9u ICsgcGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTA1LTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAg KDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9m ZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIw MjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAor ICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJv dCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAn MjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyks CisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFs ZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwg ICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2Fs ZXNwZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgICAxIHwgTWF5ICAg ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIy IHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfYXByMjAyMiB8 ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0 LTMwLTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAg ICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0w Ny0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAg ICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAt MjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg ICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAg ICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIw MjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAg IHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy Cisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAg ICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgor KDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVHJ5IHRvIFNQ TElUIHBhcnRpdGlvbiBvZiBhbm90aGVyIHRhYmxlLgorLS0KK0NSRUFURSBUQUJMRSB0MShp IGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVCAodCk7CitDUkVBVEUgVEFCTEUgdDFw YSBQQVJUSVRJT04gT0YgdDEgRk9SIFZBTFVFUyBJTiAoJ0EnKTsKK0NSRUFURSBUQUJMRSB0 MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKKy0tIEVSUk9SOiAg cmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCitB TFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRPCisgICAoUEFSVElUSU9O IHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyksCisgICAgUEFSVElUSU9OIHQy YiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOworRVJST1I6ICByZWxhdGlvbiAi dDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0hJTlQ6ICBBTFRF UiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25z IGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxF IHQxOworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHRhYmxl LgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Ug KGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVs cGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cu cGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFy ZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHBy KGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9l eHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMiB8IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDIpIHwgdAorKDEgcm93KQorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBB UlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMikpOworLS0gUGFydGl0aW9ucyBzaG91bGQgYmUgdGVtcG9yYXJ5LgorU0VMRUNU IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRh bG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9p ZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRF UiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAn REVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7 CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5j ZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLQorIHRwXzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgdAorIHRwXzFf MiB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwgdAorKDIgcm93cykKKworRFJPUCBU QUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb25zIGluaGVyaXQgcGFyZW50J3Mg dGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElO REVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdF IChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2Ug RlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAn dHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAg T1JERVIgQlkgdGFibGVuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8ICAgIHRhYmxl c3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAg fCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8xICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRw XzFfMiAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJvd3MpCisKK1NFTEVDVCB0YWJsZW5h bWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFi bGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAn cGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5h bWUsIHRhYmxlc3BhY2U7CisgdGFibGVuYW1lIHwgIGluZGV4bmFtZSAgfCAgICB0YWJsZXNw YWNlICAgIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyB0ICAgICAgICAgfCB0X3BrZXkgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzEg ICAgfCB0cF8wXzFfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8xXzIgICAgfCB0cF8x XzJfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsK Ky0tIENoZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2Vz cyBtZXRob2QKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZ UEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRf aGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIg SU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwK KyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VM RUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEg T04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3Rw XzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5h bWU7CisgcmVsbmFtZSB8ICAgICAgICBhbW5hbWUgICAgICAgIAorLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0 cF8wXzEgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0cF8xXzIgIHwgcGFydGl0aW9uX3Nw bGl0X2hlYXAKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhP RCBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBU aGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0aGUg cGFydGl0aW9uIHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFND SEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDIpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIg SU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwK KyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRVJS T1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHQKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTjsKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf Ym9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAo UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJ VElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRVJST1I6ICBtdXN0 IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBfMgorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O OworQUxURVIgVEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAg KFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJU SVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTjsKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJP TSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf Ym9iOworLS0gU3BsaXQgcGFydGl0aW9uIG9mIGEgdGVtcG9yYXJ5IHRhYmxlIHdoZW4gb25l IG9mIHRoZSBwYXJ0aXRpb25zIGFmdGVyCistLSBzcGxpdCBoYXMgdGhlIHNhbWUgbmFtZSBh cyB0aGUgcGFydGl0aW9uIGJlaW5nIHNwbGl0CitDUkVBVEUgVEVNUCBUQUJMRSB0IChhIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzAgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cF8wIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMikpOworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgZGVmYXVsdHMgYW5kIGNv bnN0cmFpbnRzIG9mIG5ldyBwYXJ0aXRpb25zCitDUkVBVEUgVEFCTEUgdF9iaWdpbnQgKAor ICBiIGJpZ2ludCwKKyAgaSBpbnQgREVGQVVMVCAoMysxMCksCisgIGogaW50IERFRkFVTFQg MTAxLAorICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiKzEwKSBTVE9SRUQKKykKK1BB UlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdF9iaWdpbnRfZGVmYXVsdCBQ QVJUSVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3Ry YWludHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9z cGxpdF9zY2hlbWEudF9iaWdpbnQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8 IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0 b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIg ICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisg aSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAK KyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8 IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRl ZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAg IHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYikKK1BhcnRpdGlvbnM6IHRfYmlnaW50X2Rl ZmF1bHQgREVGQVVMVAorCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9i aWdpbnRfZGVmYXVsdCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8 IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwg YmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAg ICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5 cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1Bh cnRpdGlvbiBvZjogdF9iaWdpbnQgREVGQVVMVAorTm8gcGFydGl0aW9uIGNvbnN0cmFpbnQK KworQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1 bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50XzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IERFRkFVTFQpOwor LS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBTUExJVCBQQVJUSVRJT04KK1xk KyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF9kZWZhdWx0IgorIENv bHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAg IERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVz Y3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAg IHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3Rv cmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2lu dCBERUZBVUxUCitQYXJ0aXRpb24gY29uc3RyYWludDogKE5PVCAoKGIgSVMgTk9UIE5VTEwp IEFORCAoKGIgPj0gJzAnOjpiaWdpbnQpIEFORCAoYiA8ICcxMCc6OmJpZ2ludCkpKSkKKwor XGQrIHRfYmlnaW50XzAxXzEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnRfMDFfMTAiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAg RGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAg fCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9y ZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50 IEZPUiBWQUxVRVMgRlJPTSAoJzAnKSBUTyAoJzEwJykKK1BhcnRpdGlvbiBjb25zdHJhaW50 OiAoKGIgSVMgTk9UIE5VTEwpIEFORCAoYiA+PSAnMCc6OmJpZ2ludCkgQU5EIChiIDwgJzEw Jzo6YmlnaW50KSkKKworRFJPUCBUQUJMRSB0X2JpZ2ludDsKKy0tIFRlc3Q6IG93bmVyIG9m IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBvd25lciBvZiBzcGxpdCBw YXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOwor R1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIoaSBpbnQpOworUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElU SU9OIHRwXzBfMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKy0tIE93bmVyIGlzICdy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAg ICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzBf MiB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKKygxIHJvdykKKwor QUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElP TiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBf MV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIE93bmVyIHNob3VsZCBiZSAn cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAg ICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCB0cF8w XzEgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCisoMSByb3cpCisK K1xkdCB0cF8xXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0YWJs ZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAgICAg ICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIHwgdHBfMV8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZQorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFND SEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7Cist LSBUZXN0OiBpbmRleCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCB3aXRo IHNhbWUgb3duZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOwor Q1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRF IFRBQkxFIHRwXzEwXzIwIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgyMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTEpLCAoMTYpOworQ1JFQVRFIE9SIFJF UExBQ0UgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpIFJFVFVSTlMgaW50ZWdlciBBUyAkJAor QkVHSU4KKyAgUkFJU0UgTk9USUNFICd5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgJScsIENVUlJF TlRfVVNFUjsKKyAgUkVUVVJOICQxOworRU5ECiskJCBMQU5HVUFHRSBQTFBHU1FMIElNTVVU QUJMRTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitD UkVBVEUgSU5ERVggT04gdCAocnVuX21lKGkpKTsKK05PVElDRTogIHlvdSBhcmUgcnVubmlu ZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorTk9USUNFOiAgeW91IGFy ZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitSRVNFVCBT RVNTSU9OIEFVVEhPUklaQVRJT047CistLSBPd25lciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlJzoKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRw XzEwXzIwIElOVE8KKyAgKFBBUlRJVElPTiB0cF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMTUpLAorICAgUEFSVElUSU9OIHRwXzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUp IFRPICgyMCkpOworTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJ T04gcnVuX21lKGludGVnZXIpOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBS T0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworLS0gVGVzdCBmb3IgaGFzaCBw YXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkg SEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBX SVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKKy0t IEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJl IHNwbGl0CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFS VElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCks CisgICBQQVJUSVRJT04gdHAxXzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJ TkRFUiAyKSk7CitFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxl IGNhbm5vdCBiZSBzcGxpdAorLS0gRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNo b3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSB0IFNQ TElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMg V0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworRVJST1I6ICBsaXN0IG9mIG5ldyBw YXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitEUk9Q IFRBQkxFIHQ7CistLSBBZGRpdGlvbmFsIHRlc3RzIGZvciBlcnJvciBtZXNzYWdlcworQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29u X25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21h cl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CistLSBFUlJPUjogIHVwcGVyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJv dW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykp OworRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlz IG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgNDog Li4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tIFRl c3QgZm9yIHNwbGl0IHBhcnRpdGlvbiBwcm9wZXJ0aWVzOgorLS0gKiBTVEFUSVNUSUNTIGlz IGVtcHR5CistLSAqIENPTU1FTlQgaXMgZW1wdHkKKy0tICogREVGQVVMVFMgYXJlIHRoZSBz YW1lIGFzIERFRkFVTFRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBTVE9SQUdFIGlz IHRoZSBzYW1lIGFzIFNUT1JBR0UgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIEdFTkVS QVRFRCBhbmQgQ09OU1RSQUlOVFMgYXJlIHRoZSBzYW1lIGFzIEdFTkVSQVRFRCBhbmQgQ09O U1RSQUlOVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFRSSUdHRVJTIGFyZSB0aGUg c2FtZSBhcyBUUklHR0VSUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0 CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJFU1NJ T04gcGdseiBERUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5F UkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJB TkdFIChhYnMoaSkpOworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKK0NSRUFU RSBUQUJMRSB0cF94CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBE RUZBVUxUICdkZWZhdWx0X3RwX3gnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQg QUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFD SCBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0NPTU1FTlQg T04gQ09MVU1OIHRwX3guaSBJUyAndHBfeC5pJzsKK0NSRUFURSBTVEFUSVNUSUNTIHRfc3Rh dCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdDsKK0NSRUFURSBTVEFUSVNUSUNTIHRw X3hfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfeDsKK0FMVEVSIFRBQkxF IHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNLIChiID4gMCk7CitBTFRFUiBUQUJM RSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JD RUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazIgQ0hFQ0sgKGIg PiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9ubiBO T1QgTlVMTCBiIE5PVCBWQUxJRDsKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVT KDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMSwg REVGQVVMVCwgMik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0 aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUworJEJPRFkkCitC RUdJTgorICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3 aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xF VkVMOworICBSRVRVUk4gbmV3OworRU5EOworJEJPRFkkOworQ1JFQVRFIFRSSUdHRVIgdF9i ZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdCBGT1IgRUFDSCBS T1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndCcpOworQ1JFQVRF IFRSSUdHRVIgdHBfeF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQg T04gdHBfeCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5j dGlvbigndHBfeCcpOworXGQrIHRwX3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudHBfeCIK KyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAg ICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0 cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAg ICAgfCB0cF94LmkKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAnZGVmYXVsdF90cF94Jzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1h aW4gICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAg IHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRlICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDItMDIt MjAyMic6OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRp dGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorUGFydGl0aW9uIGNvbnN0 cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAwKSBBTkQgKGFi cyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hFQ0sg KGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRAor ICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorU3RhdGlzdGljcyBv YmplY3RzOgorICAgICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRwX3hfc3RhdCIgKGRlcGVu ZGVuY2llcykgT04gaSwgYiBGUk9NIHRwX3gKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAg ICJ0cF94X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorICAgICJ0X2Jf bm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdnZXJzOgorICAg IHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9S IEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBPTiBU QUJMRSB0CisgICAgdHBfeF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNF UlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0 aW9uKCd0cF94JykKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfeCBJTlRP CisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAg UEFSVElUSU9OIHRwX3ggRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworXGQrIHRwX3gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxl ICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRwX3giCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAg ICAgICAgICAgICAgICAgfCBTdG9yYWdlICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9u IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgdCAgICAgIHwgdGV4 dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdCc6OnRleHQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAgICAgICB8IAor IGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAg ICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDEtMDEtMjAyMic6OmRhdGUpIHN0b3JlZCB8IHBs YWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1Qg TlVMTCkgQU5EIChhYnMoaSkgPj0gMSkgQU5EIChhYnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0 cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNr MSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sg KGIgPiAwKSBOT1QgVkFMSUQKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0X2lfbm90 X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorICAgICJ0X2Jfbm4iIE5PVCBOVUxM ICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdnZXJzOgorICAgIHRfYmVmb3JlX2lu c2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XIEVY RUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBPTiBUQUJMRSB0CisKK0lO U0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDMpOworTk9USUNFOiAg dHJpZ2dlcih0KSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEJFRk9SRSwgbGV2 ZWwgPSBST1cKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZ IGI7CisgdGFibGVvaWQgfCBpIHwgICAgICB0ICAgICAgIHwgYiB8ICAgICBkICAgICAgCist LS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tCisgdHBfMF8x ICAgfCAwIHwgZGVmYXVsdF90cF94IHwgMSB8IDAxLTAxLTIwMjIKKyB0cF94ICAgICB8IDEg fCBkZWZhdWx0X3RwX3ggfCAyIHwgMDEtMDEtMjAyMgorIHRwX3ggICAgIHwgMSB8IGRlZmF1 bHRfdCAgICB8IDMgfCAwMS0wMS0yMDIyCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CitE Uk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKy0tIFRlc3QgZm9yIHJlY29tcHV0 YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkg aW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lkKSBzdG9yZWQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBBREQg Q09OU1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5TRVJUIElO VE8gdCBWQUxVRVMgKDApLCAoMSk7CistLSBTaG91bGQgYmUgMSBiZWNhdXNlIHBhcnRpdGlv biBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMKKy0tIHBhcnRp dGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJP TSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdI RVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCistLSAi dGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1uKSB3aXRoICJ0YWJsZW9p ZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNvbXB1dGF0aW9uIGhlcmUuCitBTFRFUiBU QUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBf MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0 aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCist LSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50 KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZS T00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykK KworRFJPUCBUQUJMRSB0OworUkVTRVQgc2VhcmNoX3BhdGg7CistLQorRFJPUCBTQ0hFTUEg cGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggNjQ2NGEyMzhh Yy4uYTk4YWVmN2NhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0x MjMsNyArMTIzLDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVt cCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0YXRz IHRlc3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBhY2Nl c3MgY2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRp dGlvbl9tZXJnZSBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBo YXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0 dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBu dW1hCit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9q b2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0 aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXBy ZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVudF90cmlnZ2Vy IGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRo CiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0 aXRpb25fc3BsaXQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjY0NjZhNGY5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0wLDAgKzEsMTE0OCBAQAorLS0KKy0tIFBBUlRJVElP Tl9TUExJVAorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9O IC4uLiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZ IFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVz CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNh bGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2Rh dGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBF UlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVh ZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9S OiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElO ICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJv dW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0 aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCist LSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2Vk CistLSAoV2UgY2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNw bGl0IHBhcnRpdGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRo ZSBzYW1lIG5hbWUpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJykpOworCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkg dXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogICJz YWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRF UiBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIHVw cGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFu IHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA2LTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2ZlYjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisK Ky0tIFRlc3RzIGZvciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3VsZCBi ZSBleGVjdXRlZCB3aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBERVRBQ0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKworLS0gRVJST1I6ICBs b3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0 byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKKworLS0gQ2hlY2sgdGhlIHNvdXJjZSBwYXJ0aXRpb24gbm90IGluIHRo ZSBzZWFyY2ggcGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVt YTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNf cmFuZ2UKK1NQTElUIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VUIHNlYXJjaF9wYXRo ID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworXGQrIHNhbGVzX3JhbmdlCisK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVzX290aGVyczsKKwor LS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUgdGhlbiBzcGxpdCBwYXJ0 aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEw MDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDIt MTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwg ICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAg MjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0w Mi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4 LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywg ICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIy LTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAg KDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScs ICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIw MjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitTRUxF Q1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOwor U0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19tYXIy MDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0t IEFkZCBzcGxpdCBwYXJ0aXRpb24sIHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0 YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKwor LS0gU3BsaXQgcGFydGl0aW9uLCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9m IG5ldyBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1xkKyBzYWxlc19y YW5nZQorCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5Jywg ICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwK KyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2 JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAg JzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcp LAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011 bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAs ICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2 JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAn R2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUx MCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7 CitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjI7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290 aGVyczsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gVGVz dCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJB VEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxl c19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxl c195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0 LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RP UkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRl cGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21v bnRoLCBzYWxlc19kYXkpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJ T04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAy MiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywg MSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUg Rk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBN QVhWQUxVRSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdl cjEnLCAyMDIxLCAxMiwgNyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCksCisgICgn TWFuYWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpLAor ICAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAx KSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwg MywgNCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKKworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVz X3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2Rh dGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2phbl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIs IDIsIDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSkpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRl KHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkp IFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIyJywg MjAyMiwgMiwgMTApOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2Fs ZXNfZGF0ZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheTsKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9l cyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CisKK0RST1Ag VEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgREVGQVVM VCBwYXJ0aXRpb247IHVzZSBhbiBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVjayBpbmRl eCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJz b25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVM VDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19y YW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisg ICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwK KyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp LAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAs ICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNU ICogRlJPTSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUg dGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9u X3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIFVzZSBp bmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBP TjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19m ZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVD VCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEn OworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9OOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1l ID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBX SEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworU0VMRUNUICogRlJP TSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2No ZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7 CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290 aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIg QlkgaW5kZXhuYW1lOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0t CistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24g KGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgREVGQVVMVDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2Rl YzIwMjEgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2Vycm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMjAy MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1 cHBlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlv biAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBW QUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAyKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRP ICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCist LSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoaW5zaWRlIGJv dW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIw MjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJv ciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjApLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIw MzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVz X2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChleGFjdGx5IHRoZSBzYW1l IGJvdW5kcykKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNf ZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgy MDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBF UlJPUjogIG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVj YXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkg VE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSkpOworCistLSBubyBlcnJvcjogYm91bmRz IG9mIHNhbGVzX25vZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNf ZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZS T00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJy b3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIy MDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVy c29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBE RUZBVUxUOworCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGVx dWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMSBhbmQgc2Fs ZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVT IEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25v ZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgy MDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdp dGggQ0hFQ0sgYW5kIEZPUkVJR04gS0VZIENPTlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRh YmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQ UklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoCitzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3Bs ZShzYWxlc3BlcnNvbl9pZCksCitzYWxlc19hbW91bnQgSU5UIENIRUNLIChzYWxlc19hbW91 bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIERFRkFVTFQ7CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25u YW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVz X2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTsKKwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBXZSBzaG91bGQgc2VlIHRo ZSBzYW1lIENPTlNUUkFJTlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBwYXJ0aXRp b24KK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkg RlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYjIwMjInOjpy ZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworU0VMRUNUIHBnX2dldF9jb25zdHJh aW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUg Y29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29u bmFtZTs7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29u a2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19hcHIyMDIy Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKworLS0gRVJST1I6ICBuZXcg cm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3Ry YWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworLS0gRVJST1I6ICBpbnNl cnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAzLTExJyk7Cist LSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMt MTEnKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJPUCBUQUJMRSBz YWxlc3Blb3BsZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9u IHBhcnRpdGlvbmVkIHRhYmxlIGluIGNhc2Ugb2YgZXhpc3RpbmcgRk9SRUlHTiBLRVkgcmVm ZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRF IFRBQkxFIHNhbGVzIChzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3Bs ZShzYWxlc3BlcnNvbl9pZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Bl b3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAg J1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDE5LCAnSXZhbm92JyksCisgICgyMCwg J1NtaXJub2ZmJyksCisgICgzMCwgJ0ZvcmQnKTsKKworSU5TRVJUIElOVE8gc2FsZXMgVkFM VUVTCisgICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpLAorICAoMSwgIDExMCwgJzIwMjItMDMt MDInKSwKKyAgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyksCisgICgxMCwgOTAsICAnMjAyMi0w My0wMycpLAorICAoMTksIDIwMCwgJzIwMjItMDMtMDQnKSwKKyAgKDIwLCA1MCwgICcyMDIy LTAzLTEyJyksCisgICgyMCwgMTcwLCAnMjAyMi0wMy0wMicpLAorICAoMzAsIDMwLCAgJzIw MjItMDMtMDQnKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVz cGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAo MjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKwor LS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRfZmtleSIKK0lO U0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKKy0tIG9r CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CisK K0RST1AgVEFCTEUgc2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FT Q0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0 YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVz cGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKwor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRV Uk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBS QUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwg bGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAg IFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Bl b3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQK KyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNV VEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsK KworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2Vy CisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBS T1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3Nh bGVzcGVvcGxlJyk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsg c3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXkn KTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgy MCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIw KSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBG Uk9NICgzMCkgVE8gKDQwKSk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAo cm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAs ICdTbWlybm9mZicpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0 YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FT Q0FERTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0t CistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJ ZiBzcGxpdCBwYXJ0aXRpb24gY29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiwgY29sdW1ucyBv ZiBuZXcgcGFydGl0aW9ucyBhcmUgaWRlbnRpdHkgY29sdW1ucyB0b28uCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlT IEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMV8yIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggaWRlbnRpdHkg Y29sdW1uOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMl81KHNhbGVzcGVyc29uX2lkIElO VCBOT1QgTlVMTCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IEZPUiBWQUxV RVMgRlJPTSAoMikgVE8gKDUpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNw ZXJzb25fbmFtZSkgVkFMVUVTICgnUG9pcm90JyksICgnSXZhbm92Jyk7CisKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBhdHRudW07CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0 dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRy ZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVt OworLS0gU3BsaXQgcGFydGl0aW9uIGhhcyBpZGVudGl0eSBjb2x1bW46CitTRUxFQ1QgYXR0 bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVS RSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfNSc6OnJlZ2NsYXNz OjpvaWQgT1JERVIgQlkgYXR0bnVtOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVv cGxlMl8zIEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDMpLAorICAgUEFSVElUSU9OIHNhbGVz cGVvcGxlM180IEZPUiBWQUxVRVMgRlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNh bGVzcGVvcGxlNF81IEZPUiBWQUxVRVMgRlJPTSAoNCkgVE8gKDUpKTsKKworSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ01heScpLCAoJ0Zv cmQnKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxl IE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworU0VMRUNUIGF0dG5hbWUs IGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0 bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9S REVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJh dGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0g J3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CistLSBO ZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwg YXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRu dW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfMyc6OnJlZ2NsYXNzOjpvaWQg T1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQg PSAnc2FsZXNwZW9wbGUzXzQnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NF TEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmli dXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlNF81Jzo6 cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisKK0RST1AgVEFCTEUgc2FsZXNwZW9w bGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0 ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQg Y29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzAp LCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl MTBfNDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAsIG5vdygpLCAnSXZh bm92JyksCisgICgnZHVtbXkgdmFsdWUgMicsIDIwLCAxMDEsIG5vdygpLCAnU21pcm5vZmYn KTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMTsKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisg ICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdGb3JkJyk7CisKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQw IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVT IEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9S IFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25f aWQ7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6 IHNwbGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVB VEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVgg c2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUg KHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEs ICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZics IDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjIt MDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAo NSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcs ICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAy Mi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisg ICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVy JywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcy MDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwK KyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0 aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFu Z2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CisKK0FMVEVSIFRBQkxFIHNhbGVz X2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fwcl9hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2FwcjIwMjJfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNC0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMTBfMjAg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0yMCcpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9p ZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEJZIExJU1QgcGFydGl0 aW9uaW5nCistLQorCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNU IHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJz b25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3Rh dGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUp CitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2Fs ZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3Nsbycs ICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fs bCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxo aScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgbmV3IHBh cnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBz cGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0 IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywg J1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCistLSBF UlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBh bm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxl c19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAn RGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZP UiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2JykpOwor CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIE5V TEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04g c2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2 JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBo YXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vh c3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAor ICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uIGNhbm5vdCBi ZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMKK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZ b3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0 IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAg IFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVy bGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOwor CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMg ZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9u cyBkbyBub3QgaGF2ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFzLgor LS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxpdCBw YXJ0aXRpb24gaGFzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJz b25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3Rh dGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUp CitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2Fs ZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lu a2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fs bCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxo aScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CisKKy0tIEVSUk9SOiAgbmV3IHBh cnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGRv ZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn S3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1 ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworCistLSBFUlJPUiAgREVG QVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0 IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywg J1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVT IElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsK KworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0 aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3Vu dCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0 YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHgg T04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUg SU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBi dHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVy c2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1Zs YWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVy c29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEn KSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAz JyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0w NScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjItMDMt MDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAz LTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0w My0wMScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjIt MDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIy LTAzLTA5JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAy Mi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIw MjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcy MDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAn MjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwg JzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAs ICcyMDIyLTAzLTA1Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVT IElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rv aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNh dycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOwor CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgc3BsaXR0aW5n IHBhcnRpdGlvbgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdIRVJFIHNhbGVz X3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2Fs ZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBz YWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0g T047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0 OworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24g dG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5k b20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIw MjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAor ICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5v dicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAn MjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3Jyks CisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJp Y3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwg ICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgn KSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQ bGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3 LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0w NCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJf MWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEw JyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNC0xMCcpKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IG5v bi1ERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4g Ym91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBB UlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAg ICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIy LTAyLTA5JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIw MjItMDItMDcnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAor ICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxl cicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAn MjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyks CisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2Fu ZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIy MDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w Mi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworCitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQs IHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0g VGVzdCBmb3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0 aW9uICsgcGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxs IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz JyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CisKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRh Ymxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKwor LS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgYW5vdGhlciB0YWJsZS4KKy0tCitD UkVBVEUgVEFCTEUgdDEoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QgKHQpOwor Q1JFQVRFIFRBQkxFIHQxcGEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgSU4gKCdBJyk7 CitDUkVBVEUgVEFCTEUgdDIgKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBSQU5HRSAo dCk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBv ZiByZWxhdGlvbiAidDIiCitBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJ TlRPCisgICAoUEFSVElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyks CisgICAgUEFSVElUSU9OIHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOwor CitEUk9QIFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKworLS0KKy0tIFRyeSB0byBTUExJ VCBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxF IHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUg dHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCitT RUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJF IGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisg IE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cu dGV4dDsKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAg KFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJU SVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworLS0gUGFydGl0 aW9ucyBzaG91bGQgYmUgdGVtcG9yYXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCks IGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2Nh dGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGku aW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0RST1AgVEFCTEUgdDsKKwor LS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb25zIGluaGVyaXQgcGFyZW50J3MgdGFibGVzcGFj ZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190 YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykg QU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkg dGFibGVuYW1lLCB0YWJsZXNwYWNlOworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0 YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0Jywg J3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRf c2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsK K0RST1AgVEFCTEUgdDsKKworLS0gQ2hlY2sgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdHMgcGFy ZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0 aW9uX3NwbGl0X2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVy OworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5H IHBhcnRpdGlvbl9zcGxpdF9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFz cyBjIEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgn dCc6OnJlZ2NsYXNzLCAndHBfMF8xJzo6cmVnY2xhc3MsICd0cF8xXzInOjpyZWdjbGFzcykK K09SREVSIEJZIGMucmVsbmFtZTsKK0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhP RCBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKKworLS0gVGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4g IFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCB0aGUKKy0tIHRo ZSBwYXJ0aXRpb24gdG8gc3BsaXQgdG8gZG8gdGhlIHNwbGl0LgorQ1JFQVRFIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04g U0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYm9iOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgyKTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikp OworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0IE9XTkVS IFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIg VEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOwor QUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElP TiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBf MV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOwor UkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CisK Ky0tIFNwbGl0IHBhcnRpdGlvbiBvZiBhIHRlbXBvcmFyeSB0YWJsZSB3aGVuIG9uZSBvZiB0 aGUgcGFydGl0aW9ucyBhZnRlcgorLS0gc3BsaXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhl IHBhcnRpdGlvbiBiZWluZyBzcGxpdAorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoYSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoYSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMCBJTlRPCisgIChQQVJUSVRJT04gdHBfMCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpKTsKK0RST1AgVEFCTEUgdDsKKworLS0gQ2hlY2sgZGVmYXVsdHMgYW5kIGNvbnN0 cmFpbnRzIG9mIG5ldyBwYXJ0aXRpb25zCitDUkVBVEUgVEFCTEUgdF9iaWdpbnQgKAorICBi IGJpZ2ludCwKKyAgaSBpbnQgREVGQVVMVCAoMysxMCksCisgIGogaW50IERFRkFVTFQgMTAx LAorICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiKzEwKSBTVE9SRUQKKykKK1BBUlRJ VElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdF9iaWdpbnRfZGVmYXVsdCBQQVJU SVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3RyYWlu dHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50CitcZCsgdF9iaWdpbnRf ZGVmYXVsdAorQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFSVElUSU9OIHRfYmlnaW50 X2RlZmF1bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50XzAxXzEwIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IERFRkFV TFQpOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBTUExJVCBQQVJUSVRJ T04KK1xkKyB0X2JpZ2ludF9kZWZhdWx0CitcZCsgdF9iaWdpbnRfMDFfMTAKK0RST1AgVEFC TEUgdF9iaWdpbnQ7CisKKworLS0gVGVzdDogb3duZXIgb2YgbmV3IHBhcnRpdGlvbnMgc2hv dWxkIGJlIHRoZSBzYW1lIGFzIG93bmVyIG9mIHNwbGl0IHBhcnRpdGlvbgorQ1JFQVRFIFJP TEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2U7CisKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsK KworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8yIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMgorCitBTFRFUiBUQUJMRSB0IFNQTElU IFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMikpOworCistLSBPd25lciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzEKK1xkdCB0cF8xXzIKKworRFJPUCBUQUJMRSB0 OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworCisKKy0tIFRlc3Q6IGluZGV4IG9mIG5ldyBwYXJ0aXRpb25z IHNob3VsZCBiZSBjcmVhdGVkIHdpdGggc2FtZSBvd25lciBhcyBzcGxpdAorLS0gcGFydGl0 aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5U IEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xMF8yMCBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworSU5TRVJUIElOVE8gdCBWQUxVRVMg KDExKSwgKDE2KTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHJ1bl9tZShpbnRlZ2Vy KSBSRVRVUk5TIGludGVnZXIgQVMgJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAneW91IGFy ZSBydW5uaW5nIG1lIGFzICUnLCBDVVJSRU5UX1VTRVI7CisgIFJFVFVSTiAkMTsKK0VORAor JCQgTEFOR1VBR0UgUExQR1NRTCBJTU1VVEFCTEU7CisKKy0tIE93bmVyIGlzICdyZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVuX21lKGkp KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworLS0gT3duZXIgc2hvdWxkIGJl ICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitBTFRFUiBUQUJMRSB0IFNQTElU IFBBUlRJVElPTiB0cF8xMF8yMCBJTlRPCisgIChQQVJUSVRJT04gdHBfMTBfMTUgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKyAgIFBBUlRJVElPTiB0cF8xNV8yMCBGT1IgVkFM VUVTIEZST00gKDE1KSBUTyAoMjApKTsKKworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElP TiBydW5fbWUoaW50ZWdlcik7CisKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1Ag Uk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKworLS0gVGVzdCBmb3IgaGFz aCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04g QlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsK KworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5u b3QgYmUgc3BsaXQKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisg IChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRF UiAwKSwKKyAgIFBBUlRJVElPTiB0cDFfMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwg UkVNQUlOREVSIDIpKTsKKworLS0gRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNo b3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSB0IFNQ TElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMg V0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworCitEUk9QIFRBQkxFIHQ7CisKKwor LS0gQWRkaXRpb25hbCB0ZXN0cyBmb3IgZXJyb3IgbWVzc2FnZXMKK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNo YXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wNS0wMScpOworCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworCisKKy0tIFRlc3QgZm9yIHNwbGl0IHBhcnRpdGlvbiBw cm9wZXJ0aWVzOgorLS0gKiBTVEFUSVNUSUNTIGlzIGVtcHR5CistLSAqIENPTU1FTlQgaXMg ZW1wdHkKKy0tICogREVGQVVMVFMgYXJlIHRoZSBzYW1lIGFzIERFRkFVTFRTIGZvciBwYXJ0 aXRpb25lZCB0YWJsZQorLS0gKiBTVE9SQUdFIGlzIHRoZSBzYW1lIGFzIFNUT1JBR0UgZm9y IHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgYXJl IHRoZSBzYW1lIGFzIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgZm9yIHBhcnRpdGlvbmVk IHRhYmxlCistLSAqIFRSSUdHRVJTIGFyZSB0aGUgc2FtZSBhcyBUUklHR0VSUyBmb3IgcGFy dGl0aW9uZWQgdGFibGUKKworQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0 IHRleHQgU1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1 bHRfdCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIy LTAxLTAxJykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5U IE9OIENPTFVNTiB0LmkgSVMgJ3QxLmknOworCitDUkVBVEUgVEFCTEUgdHBfeAorKGkgaW50 IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF94 JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDIt MDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwX3ggRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF94LmkgSVMg J3RwX3guaSc7CisKK0NSRUFURSBTVEFUSVNUSUNTIHRfc3RhdCAoREVQRU5ERU5DSUVTKSBv biBpLCBiIGZyb20gdDsKK0NSRUFURSBTVEFUSVNUSUNTIHRwX3hfc3RhdCAoREVQRU5ERU5D SUVTKSBvbiBpLCBiIGZyb20gdHBfeDsKKworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlO VCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJ TlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxF IHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsK K0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZB TElEOworCitJTlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAx KTsKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDIpOwor CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJO UyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUworJEJPRFkkCitCRUdJTgorICBSQUlT RSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2 ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICBSRVRV Uk4gbmV3OworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNl cnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0 cF94X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZP UiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF94 Jyk7CisKK1xkKyB0cF94CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF94IElO VE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisg ICBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitcZCsgdHBf eAorCitJTlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZIGI7CitEUk9QIFRB QkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKworCistLSBUZXN0 IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFU RSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJs ZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRw XzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVS IFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5 KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBTaG91bGQgYmUgMSBi ZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNh bWUgYXMKKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxF Q1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0 YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9y ZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJl cworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJ T04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpKTsKKworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBm b3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRp ZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBp ID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7 CisKK0RST1AgVEFCTEUgdDsKKworCitSRVNFVCBzZWFyY2hfcGF0aDsKKworLS0KK0RST1Ag U0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZmYwNTBl OTNhNS4uNjk1NTY2OGFlZiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI3 NzIsNiArMjc3Miw3IEBAIFNpbXBsZVN0YXRzCiBTaW1wbGVTdHJpbmdMaXN0CiBTaW1wbGVT dHJpbmdMaXN0Q2VsbAogU2luZ2xlQm91bmRTb3J0SXRlbQorU2luZ2xlUGFydGl0aW9uU3Bl YwogU2l6ZQogU2tpcFBhZ2VzCiBTa2lwU3VwcG9ydApAQCAtMjgzOCw2ICsyODM5LDcgQEAg U3BlY2lhbEpvaW5JbmZvCiBTcGluRGVsYXlTdGF0dXMKIFNwbGl0SW50ZXJ2YWwKIFNwbGl0 TFIKK1NwbGl0UGFydGl0aW9uQ29udGV4dAogU3BsaXRQYWdlTGF5b3V0CiBTcGxpdFBvaW50 CiBTcGxpdFRleHRPdXRwdXREYXRhCi0tIAoyLjQwLjEud2luZG93cy4xCgo= --------------XEAYgt3gS02JDDwnDECZzzia--