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 1ucJOX-00BTgn-62 for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Jul 2025 07:51:10 +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 1ucJOV-0001ao-3O for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Jul 2025 07:51:07 +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 1ucJOT-0001ac-EA for pgsql-hackers@lists.postgresql.org; Thu, 17 Jul 2025 07:51:07 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1ucJOL-007ivS-2g for pgsql-hackers@lists.postgresql.org; Thu, 17 Jul 2025 07:51:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1752738654; bh=QL7/JaBrXbrq2dUlUefR3tSqA+gvN920nMo256vlQ6E=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=hvV4AQxOTDLLtOu0p5wObtbjjjkxjJzdsLOqnfHxG7F0fqn9LDEULKCm0U9ruQQDf mp8aphqatnASaPgd9xa449xfi57jVzAK39sh0DWKZ1iq8vWsGvLCfG7+iZRnsB9K/H TV0OMoxsMEir8HuWhGuvd56QbiHuzaaLZDHwxURkvFY9InSZxNUAeluMX3rjGYX91Z /R0Xu0U6FsvBveAsKOlsoiOE/kfGPr/sE5XL2prTfLM60EhyHTTQPcf5QKJFcGXwJc PRqTTtnlf7GCIf5/wZc/ZW562ARYaMutqAw66MQmRZrlBwelBQ5oxOkdeapdAeR9lT JtHnVrmMj8iyA== Received: from [172.30.49.122] (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 66AC0608B6; Thu, 17 Jul 2025 10:50:53 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------UOsFJoLj70kmjP47KcuQieM1" Message-ID: Date: Thu, 17 Jul 2025 10:50:53 +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> <7e1c67b8-ceba-4a04-964a-853eedeb02cc@postgrespro.ru> <0b3907b4-83b9-4873-9feb-2b60b29cda33@postgrespro.ru> <4f19550b-eb41-4649-8bf5-566dc020a720@postgrespro.ru> <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/07/17 07:16: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/17 06:20:00 #27636643 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. --------------UOsFJoLj70kmjP47KcuQieM1 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! 1. > bug: > ... > now pks_d have values(5) for column i, which would violate the > cc check constraint. Probably we shouldn't use a DEFAULT-partition if it wasn't created by SPLIT PARTITION command, because DEFAULT-partition can has other restrictions besides CHECK (e.g. FOREIGN KEY). Corrected. 2. > "ALTER TABLE/INDEX ATTACH/DETACH PARTITION" comments need updated. Updated. 3. > SplitPartitionMoveRows > ereport(ERROR, > errcode(ERRCODE_CHECK_VIOLATION), > errmsg("can not find partition for split partition row"), > errtable(splitRel)); >will this ever be reachable? In case correct work, there should be no errors. This is insurance. 4. >I am not sure the comment "detached DEFAULT partition" is correct. >the "constraint" is not ideal, better word would be "partition >constraint" or "partition qual". Corrected. 5. >In this case, we could first create the relations pks_3 and pks_4, >then detach the partition pks_34 I think it's better not to change the code, because detachPartitionTable function call should be before performDeletionCheck. And performDeletionCheck function should be used as soon as possible. 6. >should the newly created partitions be based on the split partition >or on the partitioned table? >In the current v50 implementation, they are based on the partitioned >table, but these newly created partitions based on the split partition >also make sense. Yes, now newly created partitions are based on the partitioned. I think this is more correct: user after SPLIT can modify some of new partitions as he wants. 7. >this ResetExprContext is not needed, if you are evaluate different >ExprState again the same slot. See ExecRelCheck also. Thanks! 8. >I did some regress test refactoring to reduce test size. >other miscellaneous refactoring is also attached. Thanks! P.S. Excuse me, but I can't answer emails for the next three weeks. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------UOsFJoLj70kmjP47KcuQieM1 Content-Type: text/plain; charset=UTF-8; name="v51-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v51-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3MDU3NjQxYmQ0NjA0NjM0MTYwZThjNDc0ZjNjYWM0MDIwMDU3Y2RkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTEgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF 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 eCAzNzUyNDM2NDI5Li44OTExNmIxNzdiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFi 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== --------------UOsFJoLj70kmjP47KcuQieM1 Content-Type: text/plain; charset=UTF-8; name="v51-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v51-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1ZWFhZTVjN2YxNGFmZTcyZWUyNjEzZDA3YzZkY2I1MDMxY2Y5ZjEzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTEgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU 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 ZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAgOTQgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0NDIgKysrKysKIHNyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAgMzggKy0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAgOTAgKy0K IHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICA2OTQg KysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAg ICB8ICAgMTggKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAg ICAgIHwgICAxMCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAg ICAgICAgIHwgICAxOSArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAg ICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5oICAgICAgICAgfCAgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oICAg ICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRp b24tc3BsaXQub3V0ICAgIHwgIDE5MCArKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3Mv cGFydGl0aW9uLXNwbGl0LnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rl c3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0IHwgMTU2NiArKysrKysrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiArLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbCAgICAgIHwgMTEzNSAr KysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAg ICAgICB8ICAgIDIgKwogMjAgZmlsZXMgY2hhbmdlZCwgNDM1NSBpbnNlcnRpb25zKCspLCAy OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxp dC5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvZGRsLnNnbWwKaW5kZXggZGRiMTM3NmE2ZS4uYzIyMGExY2JjMCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAt NDQ3MSw2ICs0NDcxLDI1IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50CiAgICAgICAgICAg ICAgICAgICAgICAgbWVhc3VyZW1lbnRfeTIwMDZtMDMpIElOVE8gbWVhc3VyZW1lbnRfeTIw MDZxMTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgPC9wYXJhPgorCisgICAgPHBhcmE+Cisg ICAgIFNpbWlsYXJseSB0byBtZXJnaW5nIG11bHRpcGxlIHRhYmxlIHBhcnRpdGlvbnMsIHRo ZXJlIGlzIGFuIG9wdGlvbiBmb3IKKyAgICAgc3BsaXR0aW5nIGEgc2luZ2xlIHBhcnRpdGlv biBpbnRvIG11bHRpcGxlIHVzaW5nIHRoZQorICAgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0 ZXJ0YWJsZS1zcGxpdC1wYXJ0aXRpb24iPjxjb21tYW5kPkFMVEVSIFRBQkxFIC4uLiBTUExJ VCBQQVJUSVRJT048L2NvbW1hbmQ+PC9saW5rPi4KKyAgICAgVGhpcyBmZWF0dXJlIGNvdWxk IGNvbWUgaW4gaGFuZHkgd2hlbiBvbmUgcGFydGl0aW9uIGdyb3dzIHRvbyBiaWcKKyAgICAg YW5kIG5lZWRzIHRvIGJlIHNwbGl0IGludG8gbXVsdGlwbGUuICBJdCdzIGltcG9ydGFudCB0 byBub3RlIHRoYXQKKyAgICAgdGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Ig aGFzaC1wYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGFjcXVpcmVzCisgICAgIGFuIDxsaXRlcmFs PkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2ssIHdoaWNoIGNvdWxkIGltcGFjdCBo aWdoLWxvYWQKKyAgICAgc3lzdGVtcyBkdWUgdG8gdGhlIGxvY2sncyByZXN0cmljdGl2ZSBu YXR1cmUuICBGb3IgZXhhbXBsZSwgd2UgY2FuIHNwbGl0CisgICAgIHRoZSBxdWFydGVyIHBh cnRpdGlvbiBiYWNrIHRvIG1vbnRobHkgcGFydGl0aW9uczoKKzxwcm9ncmFtbGlzdGluZz4K K0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50IFNQTElUIFBBUlRJVElPTiBtZWFzdXJlbWVudF95 MjAwNnExIElOVE8KKyAgIChQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZtMDEgRk9SIFZB TFVFUyBGUk9NICgnMjAwNi0wMS0wMScpIFRPICgnMjAwNi0wMi0wMScpLAorICAgIFBBUlRJ VElPTiBtZWFzdXJlbWVudF95MjAwNm0wMiBGT1IgVkFMVUVTIEZST00gKCcyMDA2LTAyLTAx JykgVE8gKCcyMDA2LTAzLTAxJyksCisgICAgUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2 bTAzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDMtMDEnKSBUTyAoJzIwMDYtMDQtMDEnKSk7 Cis8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvcGFyYT4KKwogICAgPC9zZWN0Mz4KIAogICAg PHNlY3QzIGlkPSJkZGwtcGFydGl0aW9uaW5nLWRlY2xhcmF0aXZlLWxpbWl0YXRpb25zIj4K ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCBjOGY3ODRiY2JjLi4zMWFlOTMx MTNiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC0zOSw2ICszOSwxMCBA QCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBERVRBQ0ggUEFSVElUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsg Q09OQ1VSUkVOVExZIHwgRklOQUxJWkUgXQogQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAg TUVSR0UgUEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgor QUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CisgICAgU1BMSVQgUEFSVElUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IElOVE8K KyAgICAgICAgKFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwg REVGQVVMVCB9LAorICAgICAgICAgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBs YWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSkKIAogPHBocmFzZT53aGVyZSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWN0aW9uPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9m OjwvcGhyYXNlPgogCkBAIC0xMTQ5LDYgKzExNTMsNzAgQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2 YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLXNwbGl0LXBhcnRpdGlvbiI+CisgICAg PHRlcm0+PGxpdGVyYWw+U1BMSVQgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IElOVE8gKFBBUlRJVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNl YWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9LCBQQVJUSVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFj ZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSBbLCAuLi5dKTwv bGl0ZXJhbD48L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhpcyBmb3JtIHNwbGl0cyBhIHNpbmdsZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJs ZSBpbnRvIGEgbmV3CisgICAgICBwYXJ0aXRpb25zLiBIYXNoLXBhcnRpdGlvbmVkIHRhcmdl dCB0YWJsZSBpcyBub3Qgc3VwcG9ydGVkLiBCb3VuZHMgb2YgbmV3CisgICAgICBwYXJ0aXRp b25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQgZXhpc3RpbmcgcGFydGl0aW9u cworICAgICAgKGV4Y2VwdCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0 aW9uX25hbWU8L3JlcGxhY2VhYmxlPikuCisgICAgICBJZiB0aGUgc3BsaXQgcGFydGl0aW9u IGlzIGEgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uLCBvbmUgb2YKKyAg ICAgIHRoZSBuZXcgcGFydGl0aW9ucyBtdXN0IGJlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVy YWw+LgorICAgICAgSW4gY2FzZSBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIGlzIDxsaXRl cmFsPkRFRkFVTFQ8L2xpdGVyYWw+LAorICAgICAgbmV3IHBhcnRpdGlvbnMgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAor ICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwv cmVwbGFjZWFibGU+LCAuLi4gY2FuCisgICAgICBoYXZlIHNwYWNlcyBiZXR3ZWVuIHBhcnRp dGlvbnMgYm91bmRzLiAgSWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90CisgICAg ICBoYXZlIGEgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uLCB0aGUgPGxp dGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4KKyAgICAgIHBhcnRpdGlvbiBjYW4gYmUgZGVmaW5l ZCBhcyBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zLgorICAgICA8L3BhcmE+CisgICAgIDxw YXJhPgorICAgICAgSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBkbyBub3QgY29udGFpbiBhIDxs aXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb24sIHRoZSBmb2xsb3dp bmcgbXVzdCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zCisgICAgICA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNl YWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBzaG91bGQKKyAgICAgIGJlIGVxdWFsIHRvIGJv dW5kIG9mIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgIE9uZSBvZiB0aGUgbmV3IHBh cnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gY2FuIGhhdmUKKyAgICAgIHRo ZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAodGhpcyBpcyBz dWl0YWJsZSBpbiBjYXNlIG9mIHNwbGl0dGluZyBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVy YWw+CisgICAgICBwYXJ0aXRpb246IHdlIHNwbGl0IGl0LCBidXQgYWZ0ZXIgc3BsaXR0aW5n IHdlIGhhdmUgYSBwYXJ0aXRpb24gd2l0aCB0aGUKKyAgICAgIHNhbWUgbmFtZSkuICBPbmx5 IHNpbXBsZSwgbm9uLXBhcnRpdGlvbmVkIHBhcnRpdGlvbiBjYW4gYmUgc3BsaXQuCisgICAg IDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBOZXcgcGFydGl0aW9ucyB3aWxsIGhhdmUg dGhlIHNhbWUgb3duZXIgYXMgdGhlIHBhcmVudCBwYXJ0aXRpb24uCisgICAgICBJdCBpcyB0 aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255 bT4gb24gbmV3CisgICAgICBwYXJ0aXRpb25zLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJh PgorICAgICAgVGhlIGluZGV4ZXMgYW5kIGlkZW50aXR5IGFyZSBjcmVhdGVkIGxhdGVyLCBh ZnRlciBtb3ZpbmcgdGhlIGRhdGEKKyAgICAgIGludG8gdGhlIG5ldyBwYXJ0aXRpb25zLgor ICAgICAgRXh0ZW5kZWQgc3RhdGlzdGljcyBhcmVuJ3QgY29waWVkIGZyb20gdGhlIHBhcmVu dCB0YWJsZSwgZm9yIGNvbnNpc3RlbmN5IHdpdGgKKyAgICAgIDxjb21tYW5kPkNSRUFURSBU QUJMRSBQQVJUSVRJT04gT0Y8L2NvbW1hbmQ+LgorICAgICAgTmV3IHBhcnRpdGlvbnMgd2ls bCBpbmhlcml0IHRoZSBzYW1lIHRhYmxlIGFjY2VzcyBtZXRob2QsIHBlcnNpc3RlbmNlCisg ICAgICB0eXBlLCBhbmQgdGFibGVzcGFjZSBhcyB0aGUgcGFyZW50IHRhYmxlLgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgV2hlbiBwYXJ0aXRpb24gaXMgc3BsaXQsIGFu eSBpbmRpdmlkdWFsIG9iamVjdHMgYmVsb25naW5nIHRvIHRoaXMKKyAgICAgIHBhcnRpdGlv biwgc3VjaCBhcyBjb25zdHJhaW50cyBvciBzdGF0aXN0aWNzIHdpbGwgYmUgZHJvcHBlZC4g VGhpcyBjY3VycworICAgICAgYmVjYXVzZSA8Y29tbWFuZD5BTFRFUiBUQUJMRSBTUExJVCBQ QVJUSVRJT048L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZgor ICAgICAgYXMgdGhlIHRlbXBsYXRlIHRvIGRlZmluZSB0aGVzZSBvYmplY3RzLgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgc3BsaXQgcGFydGl0aW9uIGhhcyBzb21l IG9iamVjdHMgZGVwZW5kZW50IG9uIGl0LCB0aGUgY29tbWFuZCBjYW4KKyAgICAgIG5vdCBi ZSBkb25lICg8bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpcyBub3QgdXNlZCwgYW4gZXJy b3Igd2lsbCBiZSByZXR1cm5lZCkuCisgICAgIDwvcGFyYT4KKyAgICAgPG5vdGU+CisgICAg ICA8cGFyYT4KKyAgICAgICBTcGxpdCBwYXJ0aXRpb24gYWNxdWlyZXMgYSA8bGl0ZXJhbD5B Q0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIG9uCisgICAgICAgdGhlIHBhcmVudCB0 YWJsZSwgaW4gYWRkaXRpb24gdG8gdGhlIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xp dGVyYWw+CisgICAgICAgbG9jayBvbiB0aGUgdGFibGUgYmVpbmcgc3BsaXQuCisgICAgICA8 L3BhcmE+CisgICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLW1lcmdlLXBhcnRp dGlvbnMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFj ZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgogCkBAIC0xMjQz LDcgKzEzMTEsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgQWxsIHRoZSBm b3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29tbWFuZD4gdGhhdCBhY3Qgb24gYSBz aW5nbGUgdGFibGUsCiAgICBleGNlcHQgPGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiwgPGxp dGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4sCiAgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElU SU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCi0g ICBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4gY2FuIGJlIGNvbWJp bmVkIGludG8KKyAgIDxsaXRlcmFsPlNQTElUIFBBUlRJVElPTjwvbGl0ZXJhbD4sIGFuZCA8 bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05TPC9saXRlcmFsPgorICAgY2FuIGJlIGNvbWJpbmVk IGludG8KICAgIGEgbGlzdCBvZiBtdWx0aXBsZSBhbHRlcmF0aW9ucyB0byBiZSBhcHBsaWVk IHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUsIGl0CiAgICBpcyBwb3NzaWJsZSB0byBhZGQgc2V2 ZXJhbCBjb2x1bW5zIGFuZC9vciBhbHRlciB0aGUgdHlwZSBvZiBzZXZlcmFsCiAgICBjb2x1 bW5zIGluIGEgc2luZ2xlIGNvbW1hbmQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwg d2l0aCBsYXJnZQpAQCAtMTQ4Nyw3ICsxNTU2LDcgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+ LCBSRU0KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgVGhlIG5h bWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0 YWNoIGZyb20gdGhpcyB0YWJsZSwKLSAgICAgICAgb3IgdGhlIG5hbWUgb2YgdGhlIG5ldyBt ZXJnZWQgcGFydGl0aW9uLgorICAgICAgICBvciB0aGUgbmFtZSBvZiBzcGxpdCBwYXJ0aXRp b24sIG9yIHRoZSBuYW1lIG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4KICAgICAgICA8 L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE0 OTcsNyArMTU2Niw4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICA8dGVy bT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBs YWNlYWJsZT48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAg ICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBpbnRvIHRoZSBuZXcg cGFydGl0aW9uLgorICAgICAgICBUaGUgbmFtZXMgb2YgdGhlIHRhYmxlcyBiZWluZyBtZXJn ZWQgaW50byB0aGUgbmV3IHBhcnRpdGlvbiBvciBzcGxpdCBpbnRvCisgICAgICAgIG5ldyBw YXJ0aXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwv dmFybGlzdGVudHJ5PgpAQCAtMTkzMCw2ICsyMDAwLDI0IEBAIEFMVEVSIFRBQkxFIG1lYXN1 cmVtZW50CiAgICAgREVUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAxNW0xMjsKIDwv cHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCisgIDxwYXJhPgorICAgVG8gc3BsaXQgYSBzaW5n bGUgcGFydGl0aW9uIG9mIHRoZSByYW5nZS1wYXJ0aXRpb25lZCB0YWJsZToKKzxwcm9ncmFt bGlzdGluZz4KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19mZWJfbWFyX2FwcjIwMjMgSU5UTworICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIzIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjMtMDItMDEnKSBUTyAoJzIwMjMtMDMtMDEnKSwKKyAgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMyBGT1IgVkFMVUVTIEZST00gKCcyMDIzLTAzLTAxJykg VE8gKCcyMDIzLTA0LTAxJyksCisgICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjMgRk9SIFZB TFVFUyBGUk9NICgnMjAyMy0wNC0wMScpIFRPICgnMjAyMy0wNS0wMScpKTsKKzwvcHJvZ3Jh bWxpc3Rpbmc+PC9wYXJhPgorCisgIDxwYXJhPgorICAgVG8gc3BsaXQgYSBzaW5nbGUgcGFy dGl0aW9uIG9mIHRoZSBsaXN0LXBhcnRpdGlvbmVkIHRhYmxlOgorPHByb2dyYW1saXN0aW5n PgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgICBQQVJU SVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxpbics ICdLeWl2JykpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKICAgPHBhcmE+CiAgICBU byBtZXJnZSBzZXZlcmFsIHBhcnRpdGlvbnMgaW50byBvbmUgcGFydGl0aW9uIG9mIHRoZSB0 YXJnZXQgdGFibGU6CiA8cHJvZ3JhbWxpc3Rpbmc+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCmluZGV4IDUwZmQ3ZmM5MDUuLjhiZjBlYzFiNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCkBAIC03NDIsNiArNzQyLDkgQEAgc3RhdGljIGNoYXIgR2V0QXR0cmlidXRl U3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKIAogc3Rh dGljIHZvaWQgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkgIFBhcnRpdGlvbkNtZCAq Y21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQg QVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAq dGFiLAorCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKKwkJCQkJ CQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCQlEZWZpbmVSZWxhdGlvbgpAQCAtNDgzOSw2ICs0ODQyLDEwIEBAIEFsdGVyVGFi bGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCQljbWRfbG9ja21vZGUgPSBBY2Nlc3NF eGNsdXNpdmVMb2NrOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9u OgorCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJCQkJYnJlYWs7 CisKIAkJCWRlZmF1bHQ6CQkJLyogb29wcyAqLwogCQkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCQkgKGludCkgY21kLT5zdWJ0eXBl KTsKQEAgLTUyNzksNiArNTI4NiwxMSBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVs YXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNwZWNp ZmljIHByZXAgbmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7 CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNt ZC0+c3VidHlwZSwgcmVsLCBBVFRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJLyogTm8gY29t bWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsK KwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5z dWJ0eXBlKTsKQEAgLTU2ODMsNiArNTY5NSwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1 ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQkJQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKHdx dWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYsCiAJCQkJCQkJCSAg Y29udGV4dCk7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCWNt ZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwg bG9ja21vZGUsCisJCQkJCQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChj bWQgIT0gTlVMTCk7CisJCQlBc3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUs IHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4 dCk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJP UiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNt ZC0+c3VidHlwZSk7CkBAIC02NzI1LDYgKzY3NDUsOCBAQCBhbHRlcl90YWJsZV90eXBlX3Rv X3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFS VElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJ cmV0dXJuICJNRVJHRSBQQVJUSVRJT05TIjsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoK KwkJCXJldHVybiAiU1BMSVQgUEFSVElUSU9OIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToK IAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFU X1NldElkZW50aXR5OgpAQCAtMjI5MzEsMyArMjI5NTMsNDIzIEBAIEFURXhlY01lcmdlUGFy dGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9u IHJlbCwKIAkvKiBSZXN0b3JlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8KIAlT ZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsK IH0KKworCisvKgorICogU3RydWN0IHdpdGggY29udGV4dCBvZiBuZXcgcGFydGl0aW9uIGZv ciBpbnNlcnRpbmcgcm93cyBmcm9tIHNwbGl0IHBhcnRpdGlvbgorICovCit0eXBlZGVmIHN0 cnVjdCBTcGxpdFBhcnRpdGlvbkNvbnRleHQKK3sKKwlFeHByU3RhdGUgICpwYXJ0cXVhbHN0 YXRlOwkvKiBleHByZXNzaW9uIGZvciBjaGVja2luZyBzbG90IGZvciBwYXJ0aXRpb24KKwkJ CQkJCQkJICogKE5VTEwgZm9yIERFRkFVTFQgcGFydGl0aW9uKSAqLworCUJ1bGtJbnNlcnRT dGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBvZiBidWxrIGluc2VydHMgZm9yIHBhcnRpdGlvbiAq LworCVR1cGxlVGFibGVTbG90ICpkc3RzbG90OwkvKiBzbG90IGZvciBpbnNlcnRpbmcgcm93 IGludG8gcGFydGl0aW9uICovCisJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiOwkJLyogc3RydWN0 b3JlIHdpdGggZ2VuZXJhdGVkIGNvbHVtbiBleHByZXNzaW9ucworCQkJCQkJCQkgKiBhbmQg Y2hlY2sgY29uc3RyYWludCBleHByZXNzc2lvbnMuICovCisJUmVsYXRpb24JcGFydFJlbDsJ CS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRpb24gKi8KK30gU3BsaXRQYXJ0aXRpb25Db250ZXh0 OworCisvKgorICogY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0OiBjcmVhdGUgY29udGV4 dCBmb3IgcGFydGl0aW9uIGFuZCBmaWxsIGl0CisgKi8KK3N0YXRpYyBTcGxpdFBhcnRpdGlv bkNvbnRleHQgKgorY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFJlbGF0aW9uIHBhcnRS ZWwpCit7CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYzsKKworCXBjID0gKFNwbGl0UGFy dGl0aW9uQ29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihTcGxpdFBhcnRpdGlvbkNvbnRleHQp KTsKKwlwYy0+cGFydFJlbCA9IHBhcnRSZWw7CisKKwkvKgorCSAqIFByZXBhcmUgYSBCdWxr SW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gVGhlIEZTTSBpcyBlbXB0eSwg c28KKwkgKiBkb24ndCBib3RoZXIgdXNpbmcgaXQuCisJICovCisJcGMtPmJpc3RhdGUgPSBH ZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSB0dXBsZSBzbG90IGZvciBuZXcg cGFydGl0aW9uLiAqLworCXBjLT5kc3RzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocGMtPnBh cnRSZWwsIE5VTEwpOworCisJcmV0dXJuIHBjOworfQorCisvKgorICogZGVsZXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0OiBkZWxldGUgY29udGV4dCBmb3IgcGFydGl0aW9uCisgKi8KK3N0 YXRpYyB2b2lkCitkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoU3BsaXRQYXJ0aXRpb25D b250ZXh0ICpwYywgTGlzdCAqKndxdWV1ZSwgaW50IHRpX29wdGlvbnMpCit7CisJTGlzdENl bGwgICAqbHRhYjsKKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QocGMtPmRzdHNs b3QpOworCUZyZWVCdWxrSW5zZXJ0U3RhdGUocGMtPmJpc3RhdGUpOworCisJdGFibGVfZmlu aXNoX2J1bGtfaW5zZXJ0KHBjLT5wYXJ0UmVsLCB0aV9vcHRpb25zKTsKKworCS8qCisJICog V2UgZG9uJ3QgbmVlZCBwcm9jZXNzIHRoaXMgcGMtPnBhcnRSZWwgc28gZGVsZXRlIHRoZSBB TFRFUiBUQUJMRSBxdWV1ZQorCSAqIG9mIGl0LgorCSAqLworCWZvcmVhY2gobHRhYiwgKndx dWV1ZSkKKwl7CisJCUFsdGVyZWRUYWJsZUluZm8gKnRhYiA9IChBbHRlcmVkVGFibGVJbmZv ICopIGxmaXJzdChsdGFiKTsKKwkJaWYgKHRhYi0+cmVsaWQgPT0gUmVsYXRpb25HZXRSZWxp ZChwYy0+cGFydFJlbCkpCisJCQkqd3F1ZXVlID0gbGlzdF9kZWxldGVfY2VsbCgqd3F1ZXVl LCBsdGFiKTsKKwl9CisKKwlwZnJlZShwYyk7Cit9CisKKy8qCisgKiBTcGxpdFBhcnRpdGlv bk1vdmVSb3dzOiBzY2FuIHNwbGl0IHBhcnRpdGlvbiAoc3BsaXRSZWwpIG9mIHBhcnRpdGlv bmVkIHRhYmxlCisgKiAocmVsKSBhbmQgbW92ZSByb3dzIGludG8gbmV3IHBhcnRpdGlvbnMu CisgKgorICogTmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb246CisgKiBwYXJ0bGlzdDogbGlz dCBvZiBwb2ludGVycyB0byBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHVyZXMuICBJdCBj b250YWlucworICogdGhlIHBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uIGRldGFpbHMgZm9yIGFs bCBuZXcgcGFydGl0aW9ucy4KKyAqIG5ld1BhcnRSZWxzOiBsaXN0IG9mIFJlbGF0aW9ucywg bmV3IHBhcnRpdGlvbnMgY3JlYXRlZCBpbgorICogQVRFeGVjU3BsaXRQYXJ0aXRpb24uCisg Ki8KK3N0YXRpYyB2b2lkCitTcGxpdFBhcnRpdGlvbk1vdmVSb3dzKExpc3QgKip3cXVldWUs IFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsCisJCQkJCSAgIExpc3QgKnBhcnRs aXN0LCBMaXN0ICpuZXdQYXJ0UmVscykKK3sKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBk b24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lO U0VSVF9TS0lQX0ZTTTsKKwlDb21tYW5kSWQJbXljaWQ7CisJRVN0YXRlCSAgICplc3RhdGU7 CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlUdXBsZVRhYmxl U2xvdCAqc3Jjc2xvdDsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJVGFibGVTY2FuRGVz YyBzY2FuOworCVNuYXBzaG90CXNuYXBzaG90OworCU1lbW9yeUNvbnRleHQgb2xkQ3h0Owor CUxpc3QJICAgKnBhcnRDb250ZXh0cyA9IE5JTDsKKwlUdXBsZUNvbnZlcnNpb25NYXAgKnR1 cGxlX21hcDsKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKmRlZmF1bHRQYXJ0Q3R4ID0gTlVM TCwKKwkJCSAgICpwYzsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsK KworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWZvcmJvdGgobGlzdHB0 ciwgcGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7CisJCVNpbmdsZVBhcnRp dGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRy KTsKKworCQlwYyA9IGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dCgoUmVsYXRpb24pIGxm aXJzdChsaXN0cHRyMikpOworCisJCS8qIEZpbmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9y IG5ldyBwYXJ0aXRpb24gdGFibGU6IG5ld1BhcnRSZWwuICovCisJCXBjLT50YWIgPSBBVEdl dFF1ZXVlRW50cnkod3F1ZXVlLCBwYy0+cGFydFJlbCk7CisKKwkJYnVpbGRFeHByZXNzaW9u RXhlY3V0aW9uU3RhdGVzKHBjLT50YWIsIHBjLT5wYXJ0UmVsLCBlc3RhdGUpOworCisJCWlm IChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQorCQl7CisJCQkvKgorCQkJICogV2Ugc2hvdWxk IG5vdCBjcmVhdGUgc3RydWN0dXJlIGZvciBjaGVjayBwYXJ0aXRpb24gY29uc3RyYWludAor CQkJICogZm9yIG5ldyBERUZBVUxUIHBhcnRpdGlvbi4KKwkJCSAqLworCQkJZGVmYXVsdFBh cnRDdHggPSBwYzsKKwkJfQorCQllbHNlCisJCXsKKwkJCUxpc3QJICAgKnBhcnRDb25zdHJh aW50OworCisJCQkvKiBCdWlsZCBleHByZXNzaW9uIGV4ZWN1dGlvbiBzdGF0ZXMgZm9yIHBh cnRpdGlvbiBjaGVjayBxdWFscy4gKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gZ2V0X3F1YWxf ZnJvbV9wYXJ0Ym91bmQocmVsLCBzcHMtPmJvdW5kKTsKKwkJCXBhcnRDb25zdHJhaW50ID0K KwkJCQkoTGlzdCAqKSBldmFsX2NvbnN0X2V4cHJlc3Npb25zKE5VTEwsCisJCQkJCQkJCQkJ CQkoTm9kZSAqKSBwYXJ0Q29uc3RyYWludCk7CisJCQkvKiBNYWtlIGJvb2xlYW4gZXhwcmVz c2lvbiBmb3IgRXhlY0NoZWNrKCkuICovCisJCQlwYXJ0Q29uc3RyYWludCA9IGxpc3RfbWFr ZTEobWFrZV9hbmRzX2V4cGxpY2l0KHBhcnRDb25zdHJhaW50KSk7CisKKwkJCS8qCisJCQkg KiBNYXAgdGhlIHZhcnMgaW4gdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBmcm9tIHJlbCdz IGF0dG5vcyB0bworCQkJICogc3BsaXRSZWwncy4KKwkJCSAqLworCQkJcGFydENvbnN0cmFp bnQgPSBtYXBfcGFydGl0aW9uX3ZhcmF0dG5vcyhwYXJ0Q29uc3RyYWludCwKKwkJCQkJCQkJ CQkJCQkgMSwgc3BsaXRSZWwsIHJlbCk7CisKKwkJCXBjLT5wYXJ0cXVhbHN0YXRlID0KKwkJ CQlFeGVjUHJlcGFyZUV4cHIoKEV4cHIgKikgbGluaXRpYWwocGFydENvbnN0cmFpbnQpLCBl c3RhdGUpOworCQkJQXNzZXJ0KHBjLT5wYXJ0cXVhbHN0YXRlICE9IE5VTEwpOworCQl9CisK KwkJLyogU3RvcmUgcGFydGl0aW9uIGNvbnRleHQgaW50byBsaXN0LiAqLworCQlwYXJ0Q29u dGV4dHMgPSBsYXBwZW5kKHBhcnRDb250ZXh0cywgcGMpOworCX0KKworCWVjb250ZXh0ID0g R2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOworCisJLyogQ3JlYXRlIG5lY2Vzc2Fy eSB0dXBsZSBzbG90LiAqLworCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShzcGxpdFJl bCwgTlVMTCk7CisKKwkvKgorCSAqIE1hcCBjb21wdXRpbmcgZm9yIG1vdmluZyBhdHRyaWJ1 dGVzIG9mIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9uCisJICogKGZvciBmaXJz dCBuZXcgcGFydGl0aW9uLCBidXQgb3RoZXIgbmV3IHBhcnRpdGlvbnMgY2FuIHVzZSB0aGUg c2FtZQorCSAqIG1hcCkuCisJICovCisJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICop IGxmaXJzdChsaXN0X2hlYWQocGFydENvbnRleHRzKSk7CisJdHVwbGVfbWFwID0gY29udmVy dF90dXBsZXNfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKHNwbGl0UmVsKSwKKwkJCQkJCQkJ CSAgIFJlbGF0aW9uR2V0RGVzY3IocGMtPnBhcnRSZWwpKTsKKworCS8qIFNjYW4gdGhyb3Vn aCB0aGUgcm93cy4gKi8KKwlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0 U25hcHNob3QoKSk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihzcGxpdFJlbCwgc25hcHNo b3QsIDAsIE5VTEwpOworCisJLyoKKwkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBj b250ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQorCSAqIHByb2R1Y2VkLCBzbyB3 ZSBkb24ndCBsZWFrIG1lbW9yeS4KKwkgKi8KKwlvbGRDeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOworCisJd2hpbGUgKHRh YmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNyY3Ns b3QpKQorCXsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJVHVwbGVUYWJsZVNsb3QgKmlu c2VydHNsb3Q7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQllY29udGV4dC0+ ZWN4dF9zY2FudHVwbGUgPSBzcmNzbG90OworCisJCS8qIFNlYXJjaCBwYXJ0aXRpb24gZm9y IGN1cnJlbnQgc2xvdCBzcmNzbG90LiAqLworCQlmb3JlYWNoKGxpc3RwdHIsIHBhcnRDb250 ZXh0cykKKwkJeworCQkJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChs aXN0cHRyKTsKKworCQkJLyogc2tpcCBERUZBVUxUIHBhcnRpdGlvbiAqLworCQkJaWYgKHBj LT5wYXJ0cXVhbHN0YXRlICYmIEV4ZWNDaGVjayhwYy0+cGFydHF1YWxzdGF0ZSwgZWNvbnRl eHQpKQorCQkJeworCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQor CQlpZiAoIWZvdW5kKQorCQl7CisJCQkvKiBVc2UgREVGQVVMVCBwYXJ0aXRpb24gaWYgaXQg ZXhpc3RzLiAqLworCQkJaWYgKGRlZmF1bHRQYXJ0Q3R4KQorCQkJCXBjID0gZGVmYXVsdFBh cnRDdHg7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9DSEVDS19WSU9MQVRJT04pLAorCQkJCQkJZXJybXNnKCJjYW4gbm90IGZpbmQgcGFy dGl0aW9uIGZvciBzcGxpdCBwYXJ0aXRpb24gcm93IiksCisJCQkJCQllcnJ0YWJsZShzcGxp dFJlbCkpOworCQl9CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJeworCQkJLyogTmVlZCB0byB1 c2UgbWFwIHRvIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCWluc2VydHNsb3QgPSBleGVjdXRl X2F0dHJfbWFwX3Nsb3QodHVwbGVfbWFwLT5hdHRyTWFwLCBzcmNzbG90LCBwYy0+ZHN0c2xv dCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBFeHRyYWN0IGRhdGEgZnJvbSBvbGQgdHVw bGUuICovCisJCQlzbG90X2dldGFsbGF0dHJzKHNyY3Nsb3QpOworCisJCQkvKiBDb3B5IGF0 dHJpYnV0ZXMgZGlyZWN0bHkuICovCisJCQlpbnNlcnRzbG90ID0gcGMtPmRzdHNsb3Q7CisK KwkJCUV4ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOworCisJCQltZW1jcHkoaW5zZXJ0c2xv dC0+dHRzX3ZhbHVlcywgc3Jjc2xvdC0+dHRzX3ZhbHVlcywKKwkJCQkgICBzaXplb2YoRGF0 dW0pICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRz X2lzbnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkgICBzaXplb2YoYm9vbCkgKiBz cmNzbG90LT50dHNfbnZhbGlkKTsKKworCQkJRXhlY1N0b3JlVmlydHVhbFR1cGxlKGluc2Vy dHNsb3QpOworCQl9CisKKwkJLyoKKwkJICogQ29uc3RyYWludHMgYW5kIEdFTkVSQVRFRCBl eHByZXNzaW9ucyBtaWdodCByZWZlcmVuY2UgdGhlIHRhYmxlb2lkCisJCSAqIGNvbHVtbiwg c28gZmlsbCB0dHNfdGFibGVPaWQgd2l0aCB0aGUgZGVzaXJlZCB2YWx1ZS4gKFdlIG11c3Qg ZG8KKwkJICogdGhpcyBlYWNoIHRpbWUsIGJlY2F1c2UgaXQgZ2V0cyBvdmVyd3JpdHRlbiB3 aXRoIG5ld3JlbCdzIE9JRCBkdXJpbmcKKwkJICogc3RvcmluZy4pCisJCSAqLworCQlpbnNl cnRzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHBjLT5wYXJ0UmVsKTsK KworCQkvKgorCQkgKiBOb3csIGV2YWx1YXRlIGFueSBnZW5lcmF0ZWQgZXhwcmVzc2lvbnMg d2hvc2UgaW5wdXRzIGNvbWUgZnJvbQorCQkgKiB0aGUgbmV3IHR1cGxlLiAgV2UgYXNzdW1l IHRoZXNlIGNvbHVtbnMgd29uJ3QgcmVmZXJlbmNlIGVhY2gKKwkJICogb3RoZXIsIHNvIHRo YXQgdGhlcmUncyBubyBvcmRlcmluZyBkZXBlbmRlbmN5LgorCQkgKi8KKwkJZXZhbHVhdGVH ZW5lcmF0ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29uc3RyYWludHMocGMtPnRhYiwgcGMtPnBh cnRSZWwsCisJCQkJCQkJCQkJCQkJCWluc2VydHNsb3QsIGVjb250ZXh0KTsKKworCQkvKiBX cml0ZSB0aGUgdHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCXRhYmxlX3R1 cGxlX2luc2VydChwYy0+cGFydFJlbCwgaW5zZXJ0c2xvdCwgbXljaWQsCisJCQkJCQkgICB0 aV9vcHRpb25zLCBwYy0+YmlzdGF0ZSk7CisKKwkJUmVzZXRFeHByQ29udGV4dChlY29udGV4 dCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN4dCk7CisKKwl0YWJsZV9l bmRzY2FuKHNjYW4pOworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwlpZiAo dHVwbGVfbWFwKQorCQlmcmVlX2NvbnZlcnNpb25fbWFwKHR1cGxlX21hcCk7CisKKwlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOworCisJRnJlZUV4ZWN1dG9yU3Rh dGUoZXN0YXRlKTsKKworCWZvcmVhY2hfcHRyKFNwbGl0UGFydGl0aW9uQ29udGV4dCwgc3Bj LCBwYXJ0Q29udGV4dHMpCisJCWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChzcGMsIHdx dWV1ZSwgdGlfb3B0aW9ucyk7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BM SVQgUEFSVElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gSU5UTyA8cGFydGl0aW9uLWxpc3Q+Cisg Ki8KK3N0YXRpYyB2b2lkCitBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJIFBhcnRpdGlvbkNt ZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRp b24Jc3BsaXRSZWw7CisJT2lkCQkJc3BsaXRSZWxPaWQ7CisJY2hhcgkJcmVsbmFtZVtOQU1F REFUQUxFTl07CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwli b29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CisJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFUQUxF Tl07CisJTGlzdAkgICAqbmV3UGFydFJlbHMgPSBOSUw7CisJT2JqZWN0QWRkcmVzcyBvYmpl Y3Q7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJc2F2ZV91c2VyaWQ7CisJaW50 CQkJc2F2ZV9zZWNfY29udGV4dDsKKwlpbnQJCQlzYXZlX25lc3RsZXZlbDsKKworCWRlZmF1 bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQ YXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyoKKwkgKiBQYXJ0aXRpb24gaXMgYWxy ZWFkeSBsb2NrZWQgaW4gdGhlIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0CisJICog ZnVuY3Rpb24uCisJICovCisJc3BsaXRSZWwgPSB0YWJsZV9vcGVucnYoY21kLT5uYW1lLCBO b0xvY2spOworCisJc3BsaXRSZWxPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHNwbGl0UmVsKTsK KworCS8qIENoZWNrIGRlc2NyaXB0aW9ucyBvZiBuZXcgcGFydGl0aW9ucy4gKi8KKwlmb3Jl YWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBjbWQtPnBhcnRsaXN0KQorCXsK KwkJT2lkCQkJZXhpc3RpbmdSZWxpZDsKKworCQlzdHJsY3B5KHJlbG5hbWUsIHNwcy0+bmFt ZS0+cmVsbmFtZSwgTkFNRURBVEFMRU4pOworCisJCS8qCisJCSAqIExvb2sgdXAgZXhpc3Rp bmcgcmVsYXRpb24gYnkgbmV3IHBhcnRpdGlvbiBuYW1lLCBjaGVjayB3ZSBoYXZlCisJCSAq IHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoZXJlLCBsb2NrIGl0IGFnYWluc3QgY29uY3VycmVu dCBkcm9wLCBhbmQgbWFyaworCQkgKiBzdG10LT5yZWxhdGlvbiBhcyBSRUxQRVJTSVNURU5D RV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBpcworCQkgKiBzZWxlY3RlZC4KKwkJ ICovCisJCXNwcy0+bmFtZS0+cmVscGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVy c2lzdGVuY2U7CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShzcHMt Pm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJCSAqIFRoaXMgd291 bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3Rz LiBCdXQKKwkJICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVy cm9yIG1lc3NhZ2UuCisJCSAqLworCQlpZiAoZXhpc3RpbmdSZWxpZCA9PSBzcGxpdFJlbE9p ZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRo ZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRy dWU7CisJCWVsc2UgaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJ ZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSk7CisJ fQorCisJLyogRGV0YWNoIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlkZXRhY2hQYXJ0aXRpb25U YWJsZShyZWwsIHNwbGl0UmVsLCBkZWZhdWx0UGFydE9pZCk7CisKKwkvKgorCSAqIFBlcmZv cm0gYSBwcmVsaW1pbmFyeSBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUg dG8gZHJvcCBzcGxpdAorCSAqIHBhcnRpdGlvbiBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28g bGF0ZXIuIEFmdGVyIG1lcmdpbmcgcm93cyBpbnRvIHRoZSBuZXcKKwkgKiBwYXJ0aXRpb25z IHZpYSBTcGxpdFBhcnRpdGlvbk1vdmVSb3dzLCBhbGwgb2xkIHBhcnRpdGlvbnMgbmVlZCBi ZQorCSAqIGRyb3BwZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9wIGJlaGF2aW9yIGlzIERS T1BfUkVTVFJJQ1QgYW5kIHRoZSBtZXJnZQorCSAqIHByb2Nlc3MgKFNwbGl0UGFydGl0aW9u TW92ZVJvd3MpIGNhbiBiZSB0aW1lLWNvbnN1bWluZywgcGVyZm9ybWluZyBhbgorCSAqIGVh cmx5IGNoZWNrIG9uIHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0aXRpb25zIGlz IHByZWZlcmFibGUuCisJICovCisJb2JqZWN0Lm9iamVjdElkID0gc3BsaXRSZWxPaWQ7CisJ b2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJb2JqZWN0Lm9iamVjdFN1 YklkID0gMDsKKwlwZXJmb3JtRGVsZXRpb25DaGVjaygmb2JqZWN0LCBEUk9QX1JFU1RSSUNU LCBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsKKworCS8qCisJICogSWYgbmV3IHBhcnRp dGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24gdGhlbiB3ZSBzaG91 bGQKKwkgKiByZW5hbWUgc3BsaXQgcGFydGl0aW9uIGZvciByZXVzaW5nIG5hbWUuCisJICov CisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNv bW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUKKwkJICog dmlzaWJsZSBmb3IgcmVuYW1pbmcuCisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOworCQkvKiBSZW5hbWUgcGFydGl0aW9uLiAqLworCQlzcHJpbnRmKHRtcFJlbE5hbWUs ICJzcGxpdC0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJvY1BpZCk7 CisJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwoc3BsaXRSZWxPaWQsIHRtcFJlbE5hbWUsIHRy dWUsIGZhbHNlKTsKKworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291 bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlzaWJsZSBh ZnRlciByZW5hbWluZy4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJ fQorCisJLyogQ3JlYXRlIG5ldyBwYXJ0aXRpb25zIChsaWtlIHNwbGl0IHBhcnRpdGlvbiks IHdpdGhvdXQgaW5kZXhlcy4gKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3Bl Yywgc3BzLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmVsYXRpb24JbmV3UGFydFJlbDsKKwor CQluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUod3F1ZXVlLCBzcHMtPm5hbWUs IHJlbCwKKwkJCQkJCQkJCQkgIHNwbGl0UmVsLT5yZF9yZWwtPnJlbG93bmVyKTsKKwkJbmV3 UGFydFJlbHMgPSBsYXBwZW5kKG5ld1BhcnRSZWxzLCBuZXdQYXJ0UmVsKTsKKwl9CisKKwkv KgorCSAqIFN3aXRjaCB0byB0aGUgdGFibGUgb3duZXIncyB1c2VyaWQsIHNvIHRoYXQgYW55 IGluZGV4IGZ1bmN0aW9ucyBhcmUgcnVuCisJICogYXMgdGhhdCB1c2VyLiAgQWxzbyBsb2Nr IGRvd24gc2VjdXJpdHktcmVzdHJpY3RlZCBvcGVyYXRpb25zIGFuZAorCSAqIGFycmFuZ2Ug dG8gbWFrZSBHVUMgdmFyaWFibGUgY2hhbmdlcyBsb2NhbCB0byB0aGlzIGNvbW1hbmQuCisJ ICoKKwkgKiBOZWVkIHRvIGRvIGl0IGFmdGVyIGRldGVybWluZSBuYW1lc3BhY2UgaW4gY3Jl YXRlUGFydGl0aW9uVGFibGUgY2FsbC4KKwkgKi8KKwlHZXRVc2VySWRBbmRTZWNDb250ZXh0 KCZzYXZlX3VzZXJpZCwgJnNhdmVfc2VjX2NvbnRleHQpOworCVNldFVzZXJJZEFuZFNlY0Nv bnRleHQoc3BsaXRSZWwtPnJkX3JlbC0+cmVsb3duZXIsCisJCQkJCQkgICBzYXZlX3NlY19j b250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOworCXNhdmVfbmVzdGxl dmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisKKwkv KiBDb3B5IGRhdGEgZnJvbSBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRpdGlvbnMuICov CisJU3BsaXRQYXJ0aXRpb25Nb3ZlUm93cyh3cXVldWUsIHJlbCwgc3BsaXRSZWwsIGNtZC0+ cGFydGxpc3QsIG5ld1BhcnRSZWxzKTsKKwkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1p dC4gKi8KKwl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9Mb2NrKTsKKworCS8qIEF0dGFjaCBu ZXcgcGFydGl0aW9ucyB0byBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KKwlmb3Jib3RoKGxpc3Rw dHIsIGNtZC0+cGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7CisJCVNpbmds ZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChs aXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3UGFydFJlbCA9IChSZWxhdGlvbikgbGZpcnN0KGxp c3RwdHIyKTsKKworCQkvKgorCQkgKiB3cXVldWUgPSBOVUxMOiB2ZXJpZmljYXRpb24gZm9y IGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90CisJCSAqIG5lZWRlZC4KKwkJICovCisJ CWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgc3BzLT5ib3Vu ZCk7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9z ZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCX0KKworCS8qIERyb3Agc3BsaXQgcGFydGl0aW9u LiAqLworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCW9iamVjdC5v YmplY3RJZCA9IHNwbGl0UmVsT2lkOworCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJLyog UHJvYmFibHkgRFJPUF9DQVNDQURFIGlzIG5vdCBuZWVkZWQuICovCisJcGVyZm9ybURlbGV0 aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCisJLyogUm9sbCBiYWNrIGFueSBH VUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMuICovCisJQXRFT1hhY3Rf R1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CisKKwkvKiBSZXN0b3JlIHVzZXJpZCBhbmQg c2VjdXJpdHkgY29udGV4dC4gKi8KKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNl cmlkLCBzYXZlX3NlY19jb250ZXh0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDc2NTZlYWRm MWYuLjMzMmRjYjVlNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjU3LDYgKzI1Nyw3IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUGFydGl0aW9uRWxlbSAqcGFydGVsZW07CiAJ UGFydGl0aW9uU3BlYyAqcGFydHNwZWM7CiAJUGFydGl0aW9uQm91bmRTcGVjICpwYXJ0Ym91 bmRzcGVjOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNpbmdsZXBhcnRzcGVjOwogCVJvbGVT cGVjICAgKnJvbGVzcGVjOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVibGljYXRpb25vYmpl Y3RzcGVjOwogCXN0cnVjdCBTZWxlY3RMaW1pdCAqc2VsZWN0bGltaXQ7CkBAIC02NDAsNiAr NjQxLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxwYXJ0ZWxlbT4J cGFydF9lbGVtCiAldHlwZSA8bGlzdD4JCXBhcnRfcGFyYW1zCiAldHlwZSA8cGFydGJvdW5k c3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCisldHlwZSA8c2luZ2xlcGFydHNwZWM+CVNpbmds ZVBhcnRpdGlvblNwZWMKKyV0eXBlIDxsaXN0PgkJcGFydGl0aW9uc19saXN0CiAldHlwZSA8 bGlzdD4JCWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRf ZWxlbQogCkBAIC03NzAsNyArNzczLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAlTQVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05E X1AgU0VDVVJJVFkgU0VMRUNUCiAJU0VRVUVOQ0UgU0VRVUVOQ0VTCiAJU0VSSUFMSVpBQkxF IFNFUlZFUiBTRVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBTRVRPRiBTSEFSRSBTSE9X Ci0JU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNPVVJDRSBT UUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCisJU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElO VCBTTkFQU0hPVCBTT01FIFNQTElUIFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9Q CiAJU1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RP UkVEIFNUUklDVF9QIFNUUklOR19QIFNUUklQX1AKIAlTVUJTQ1JJUFRJT04gU1VCU1RSSU5H IFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZU1RFTV9QIFNZU1RFTV9VU0VSCiAKQEAgLTIz MjgsNiArMjMzMSwyMyBAQCBhbHRlcl90YWJsZV9jbWRzOgogCQkJfCBhbHRlcl90YWJsZV9j bWRzICcsJyBhbHRlcl90YWJsZV9jbWQJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7 CiAKK3BhcnRpdGlvbnNfbGlzdDoKKwkJCVNpbmdsZVBhcnRpdGlvblNwZWMJCQkJCQkJeyAk JCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHBhcnRpdGlvbnNfbGlzdCAnLCcgU2luZ2xl UGFydGl0aW9uU3BlYwl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKworU2luZ2xl UGFydGl0aW9uU3BlYzoKKwkJCVBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBQYXJ0aXRpb25C b3VuZFNwZWMKKwkJCQl7CisJCQkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKm4gPSBtYWtlTm9k ZShTaW5nbGVQYXJ0aXRpb25TcGVjKTsKKworCQkJCQluLT5uYW1lID0gJDI7CisJCQkJCW4t PmJvdW5kID0gJDM7CisKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJOworCiBwYXJ0aXRpb25f Y21kOgogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHRhYmxl X25hbWU+IEZPUiBWQUxVRVMgKi8KIAkJCUFUVEFDSCBQQVJUSVRJT04gcXVhbGlmaWVkX25h bWUgUGFydGl0aW9uQm91bmRTcGVjCkBAIC0yMzcyLDYgKzIzOTIsMjAgQEAgcGFydGl0aW9u X2NtZDoKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJCQkkJCA9IChOb2RlICop IG47CiAJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8 cGFydGl0aW9uX25hbWU+IElOVE8gKCkgKi8KKwkJCXwgU1BMSVQgUEFSVElUSU9OIHF1YWxp ZmllZF9uYW1lIElOVE8gJygnIHBhcnRpdGlvbnNfbGlzdCAnKScKKwkJCQl7CisJCQkJCUFs dGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJUGFydGl0 aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRpb25DbWQpOworCisJCQkJCW4tPnN1YnR5 cGUgPSBBVF9TcGxpdFBhcnRpdGlvbjsKKwkJCQkJY21kLT5uYW1lID0gJDM7CisJCQkJCWNt ZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDY7CisJCQkJCWNtZC0+ Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJ CSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVS R0UgUEFSVElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KIAkJCXwgTUVSR0Ug UEFSVElUSU9OUyAnKCcgcXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRf bmFtZQogCQkJCXsKQEAgLTE4MDI4LDYgKzE4MDYyLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3Jk OgogCQkJfCBTS0lQCiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPVVJDRQorCQkJfCBTUExJVAog CQkJfCBTUUxfUAogCQkJfCBTVEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCkBAIC0xODY2OCw2 ICsxODcwMyw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgU05BUFNIT1QKIAkJCXwg U09NRQogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxF CiAJCQl8IFNUQU5EQUxPTkVfUApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5k ZXggOGZlNzI0OTIwMy4uODcwNzEyNTc3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRp bGNtZC5jCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29uc3Ry YWludEF0dHJzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgTGlzdCAqY29u c3RyYWludExpc3QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29sdW1uVHlwZShDcmVhdGVT dG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbik7CiBzdGF0aWMgdm9pZCBzZXRT Y2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRleHRfc2NoZW1hLCBjaGFyICoqc3RtdF9zY2hl bWFfbmFtZSk7Ci1zdGF0aWMgdm9pZCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpOworc3RhdGljIHZvaWQgdHJhbnNm b3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5k U3BlYyAqYm91bmQpOwogc3RhdGljIExpc3QgKnRyYW5zZm9ybVBhcnRpdGlvblJhbmdlQm91 bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QsCiAJCQkJCQkJCQkJICAgUmVs YXRpb24gcGFyZW50KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlSW5maW5pdGVCb3VuZHMoUGFy c2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCk7CkBAIC0zNTE3LDkgKzM1MTcsMTEgQEAg dHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3Ry aW5nLAogICogY2hlY2tQYXJ0aXRpb24KICAqIENoZWNrIHdoZXRoZXIgcGFydFJlbE9pZCBp cyBhIGxlYWYgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQgdGFibGUgKHJlbCkuCiAgKiBQYXJ0 aXRpb24gd2l0aCBPSUQgcGFydFJlbE9pZCBtdXN0IGJlIGxvY2tlZCBiZWZvcmUgZnVuY3Rp b24gY2FsbC4KKyAqIGlzX21lcmdlOiB0cnVlIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIGlz ICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyI7CisgKiBmYWxzZSBpbmRpY2F0 ZXMgdGhlIG9wZXJhdGlvbiBpcyAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMi LgogICovCiBzdGF0aWMgdm9pZAotY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQg cGFydFJlbE9pZCkKK2NoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxP aWQsIGJvb2wgaXNfbWVyZ2UpCiB7CiAJUmVsYXRpb24JcGFydFJlbDsKIApAQCAtMzUyOSwy NSArMzUzMSw3MSBAQCBjaGVja1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVs T2lkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpF Q1RfVFlQRSksCiAJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUiLCBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSksCi0JCQkJZXJyaGludCgiQUxURVIgVEFCTEUg Li4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBo YXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCQkJCWlzX21lcmdlCisJCQkJPyBlcnJoaW50KCJB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRp b25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKQorCQkJCTogZXJyaGludCgiQUxURVIg VEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgY2FuIG9ubHkgc3BsaXQgcGFydGl0aW9ucyBk b24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJaWYgKCFwYXJ0UmVsLT5yZF9yZWwt PnJlbGlzcGFydGl0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09E RV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFy dGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIFwiJXNcIiIsCiAJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KSwKLQkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4g b25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisJ CQkJaXNfbWVyZ2UKKwkJCQk/IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJU SVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0 aW9ucyIpCisJCQkJOiBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9O UyBjYW4gb25seSBzcGxpdCBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMi KSk7CiAKIAlpZiAoZ2V0X3BhcnRpdGlvbl9wYXJlbnQocGFydFJlbE9pZCwgZmFsc2UpICE9 IFJlbGF0aW9uR2V0UmVsaWQocmVsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKIAkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNc IiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJICAgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCksIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHJlbCkpLAotCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05T IGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIp KTsKKwkJCQlpc19tZXJnZQorCQkJCT8gZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1w YXJ0aXRpb25zIikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJU SVRJT05TIGNhbiBvbmx5IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0 aW9ucyIpKTsKIAogCXRhYmxlX2Nsb3NlKHBhcnRSZWwsIE5vTG9jayk7CiB9CiAKKy8qCisg KiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdAorICoJCUFuYWx5emUgdGhlIEFMVEVS IFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gY29tbWFuZAorICoKKyAqIEZvciBlYWNoIG5l dyBwYXJ0aXRpb24gc3BzLT5ib3VuZCBpcyBzZXQgdG8gdGhlIHRyYW5zZm9ybWVkIHZhbHVl IG9mIGJvdW5kLgorICogRG9lcyBjaGVja3MgZm9yIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9u cy4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0KENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlSZWxh dGlvbglwYXJlbnQgPSBjeHQtPnJlbDsKKwlPaWQJCQlzcGxpdFBhcnRPaWQ7CisKKwkvKiBU cmFuc2Zvcm0gcGFydGl0aW9uIGJvdW5kcyBmb3IgYWxsIHBhcnRpdGlvbnMgaW4gdGhlIGxp c3Q6ICovCisJZm9yZWFjaF9ub2RlKFNpbmdsZVBhcnRpdGlvblNwZWMsIHNwcywgcGFydGNt ZC0+cGFydGxpc3QpCisJeworCQljeHQtPnBhcnRib3VuZCA9IE5VTEw7CisJCXRyYW5zZm9y bVBhcnRpdGlvbkNtZChjeHQsIHNwcy0+Ym91bmQpOworCQkvKiBBc3NpZ24gdHJhbnNmb3Jt ZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZC4gKi8KKwkJc3BzLT5ib3VuZCA9IGN4 dC0+cGFydGJvdW5kOworCX0KKworCS8qCisJICogT3BlbiBhbmQgbG9jayBwYXJ0aXRpb24s IGNoZWNrIG93bmVyc2hpcCBhbG9uZyB0aGUgd2F5LiBXZSBuZWVkIHRvIHVzZQorCSAqIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2sgaGVyZSwgYmVjYXVzZSB0aGlzIHNwbGl0IHBhcnRpdGlvbiB3 aWxsIGJlIGRldGFjaGVkCisJICogdGhlbiBkcm9wcGVkIGluIEFURXhlY1NwbGl0UGFydGl0 aW9uLgorCSAqLworCXNwbGl0UGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChw YXJ0Y21kLT5uYW1lLAorCQkJCQkJCQkJCQlBY2Nlc3NFeGNsdXNpdmVMb2NrLAorCQkJCQkJ CQkJCQlmYWxzZSwKKwkJCQkJCQkJCQkJUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlvbiwK KwkJCQkJCQkJCQkJTlVMTCk7CisKKwljaGVja1BhcnRpdGlvbihwYXJlbnQsIHNwbGl0UGFy dE9pZCwgZmFsc2UpOworCisJLyogVGhlbiB3ZSBzaG91bGQgY2hlY2sgcGFydGl0aW9ucyB3 aXRoIHRyYW5zZm9ybWVkIGJvdW5kcy4gKi8KKwljaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxp dChwYXJlbnQsIHNwbGl0UGFydE9pZCwgcGFydGNtZC0+cGFydGxpc3QsIGN4dC0+cHN0YXRl KTsKK30KKworCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKICAqCQlB bmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCkBA IC0zNjI2LDcgKzM2NzQsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZShDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCiAJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7CiAJCX0KIAot CQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCQljaGVja1BhcnRpdGlvbihw YXJlbnQsIHBhcnRPaWQsIHRydWUpOwogCiAJCXBhcnRPaWRzID0gbGFwcGVuZF9vaWQocGFy dE9pZHMsIHBhcnRPaWQpOwogCX0KQEAgLTM5MTQsNyArMzk2Miw3IEBAIHRyYW5zZm9ybUFs dGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJewog CQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVm OwogCi0JCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21kKTsKKwkJCQkJ dHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQtPmJvdW5kKTsKIAkJCQkJLyog YXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91bmQgKi8KIAkJ CQkJcGFydGNtZC0+Ym91bmQgPSBjeHQucGFydGJvdW5kOwogCQkJCX0KQEAgLTM5MzYsNiAr Mzk4NCwyMCBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFi bGVTdG10ICpzdG10LAogCQkJCQlicmVhazsKIAkJCQl9CiAKKwkJCWNhc2UgQVRfU3BsaXRQ YXJ0aXRpb246CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0 aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChwYXJ0Y21kLT5w YXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQllcnJtc2coImxp c3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIHBhcnRp dGlvbnMiKSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQoJmN4dCwg cGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CisJCQkJ CWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJCS8qCkBAIC00MzY2LDEzICs0 NDI4LDEzIEBAIHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9zY2hlbWEsIGNo YXIgKipzdG10X3NjaGVtYV9uYW1lKQogCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21k Ci0gKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZAorICoJ CUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKICAq Ci0gKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9OIGNvbW1hbmQsIGN4dC0+cGFy dGJvdW5kIGlzIHNldCB0byB0aGUKLSAqIHRyYW5zZm9ybWVkIHZhbHVlIG9mIGNtZC0+Ym91 bmQuCisgKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0gvU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQs IGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKKyAqIHRyYW5zZm9ybWVkIHZhbHVlIG9m IGJvdW5kLgogICovCiBzdGF0aWMgdm9pZAotdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQordHJhbnNmb3JtUGFydGl0 aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91 bmQpCiB7CiAJUmVsYXRpb24JcGFyZW50UmVsID0gY3h0LT5yZWw7CiAKQEAgLTQzODEsOSAr NDQ0Myw5IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0 LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF OgogCQkJLyogdHJhbnNmb3JtIHRoZSBwYXJ0aXRpb24gYm91bmQsIGlmIGFueSAqLwogCQkJ QXNzZXJ0KFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudFJlbCkgIT0gTlVMTCk7Ci0J CQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJ Y3h0LT5wYXJ0Ym91bmQgPSB0cmFuc2Zvcm1QYXJ0aXRpb25Cb3VuZChjeHQtPnBzdGF0ZSwg cGFyZW50UmVsLAotCQkJCQkJCQkJCQkJCQkgY21kLT5ib3VuZCk7CisJCQkJCQkJCQkJCQkJ CSBib3VuZCk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVY OgogCkBAIC00MzkxLDcgKzQ0NTMsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCQkgKiBBIHBhcnRpdGlv bmVkIGluZGV4IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIGJvdW5kIHNldC4gIEFMVEVSCiAJ CQkgKiBJTkRFWCBwcmV2ZW50cyB0aGF0IHdpdGggaXRzIGdyYW1tYXIsIGJ1dCBub3QgQUxU RVIgVEFCTEUuCiAJCQkgKi8KLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJCQlpZiAo Ym91bmQgIT0gTlVMTCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJtc2coIlwiJXNc IiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuYwppbmRleCBlYTMzYzE1MTk0Li4yYjAzYmZjMjIzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTQ5ODMsMTUgKzQ5ODMsMjMgQEAg c2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKgogICogKGZ1 bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCiAgKgotICogVGhpcyBpcyBhIGhl bHBlciBmdW5jdGlvbiBmb3IgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2Uo KS4KKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNrX3BhcnRpdGlvbnNf Zm9yX3NwbGl0KCkgYW5kCisgKiBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJn ZSgpLgogICogVGhpcyBmdW5jdGlvbiBjb21wYXJlcyB1cHBlciBib3VuZCBvZiBmaXJzdF9i b3VuZCBhbmQgbG93ZXIgYm91bmQgb2YKLSAqIHNlY29uZF9ib3VuZC4gVGhlc2UgYm91bmRz IHNob3VsZCBiZSBlcXVhbC4KKyAqIHNlY29uZF9ib3VuZC4gVGhlc2UgYm91bmRzIHNob3Vs ZCBiZSBlcXVhbCBleGNlcHQgd2hlbgorICogImRlZmF1bHRQYXJ0ID09IHRydWUiICh0aGlz IG1lYW5zIHRoYXQgb25lIG9mIHNwbGl0IHBhcnRpdGlvbnMgaXMgREVGQVVMVCkuCisgKiBJ biB0aGlzIGNhc2UgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgY2FuIGJlIGxlc3MgdGhh biBsb3dlciBib3VuZCBvZgorICogc2Vjb25kX2JvdW5kIGJlY2F1c2Ugc3BhY2UgYmV0d2Vl biB0aGVzZSBib3VuZHMgd2lsbCBiZSBpbmNsdWRlZCBpbgorICogREVGQVVMVCBwYXJ0aXRp b24uCiAgKgogICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCiAgKiBmaXJzdF9uYW1l OgkJbmFtZSBvZiBmaXJzdCBwYXJ0aXRpb24KICAqIGZpcnN0X2JvdW5kOgkJYm91bmQgb2Yg Zmlyc3QgcGFydGl0aW9uCiAgKiBzZWNvbmRfbmFtZToJCW5hbWUgb2Ygc2Vjb25kIHBhcnRp dGlvbgogICogc2Vjb25kX2JvdW5kOglib3VuZCBvZiBzZWNvbmQgcGFydGl0aW9uCisgKiBk ZWZhdWx0UGFydDoJCXRydWUgaWYgb25lIG9mIG5ldyBwYXJ0aXRpb25zIGlzIERFRkFVTFQK KyAqIG1lcmdlX29yX3NwbGl0OiAgdHJ1ZSBpbmRpY2F0ZSB0aGUgb3ByYXRpb24gaXMgIkFM VEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIgorICogZmFsc2UgaW5kaWNhdGUgdGhl IG9wcmF0aW9uIGlzICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyIuCiAgKiBw c3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5pbmcg ZXJyb3IgcG9zaXRpb24KICAqLwogc3RhdGljIHZvaWQKQEAgLTUwMDAsNiArNTAwOCw4IEBA IGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCiAJ CQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpmaXJzdF9ib3VuZCwKIAkJCQkJCQkJICBS YW5nZVZhciAqc2Vjb25kX25hbWUsCiAJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpz ZWNvbmRfYm91bmQsCisJCQkJCQkJCSAgYm9vbCBkZWZhdWx0UGFydCwKKwkJCQkJCQkJICBi b29sIG1lcmdlX3NwbGl0LAogCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKIHsKIAlQ YXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKQEAg LTUwMjEsNyArNTAzMSw3IEBAIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShS ZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAogCQkJCQkJ CQkgIHNlY29uZF9sb3dlci0+ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCiAJCQkJCQkJ CSAgZmFsc2UsIGZpcnN0X3VwcGVyKTsKLQlpZiAoY21wdmFsKQorCWlmICgoIWRlZmF1bHRQ YXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQogCXsKIAkJ UGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQtPmxv d2VyZGF0dW1zKTsKIApAQCAtNTAyOSw3ICs1MDM5LDkgQEAgY2hlY2tfdHdvX3BhcnRpdGlv bnNfYm91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKIAkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCiAJCQkJZXJybXNnKCJsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2Yg cGFydGl0aW9uIFwiJXNcIiIsCiAJCQkJCSAgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJz dF9uYW1lLT5yZWxuYW1lKSwKLQkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0Ug UEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2Vu dC4iKSwKKwkJCQltZXJnZV9zcGxpdAorCQkJCT8gZXJyaGludCgiQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUg YWRqYWNlbnQuIikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJU SVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LiIp LAogCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOwog CX0KIH0KQEAgLTUxMzMsNiArNTE0NSw4IEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRf Zm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25C b3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBwcmV2X2luZGV4KSwKIAkJCQkJCQkJCQkJ CQkgIChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIGluZGV4KSwKIAkJCQkJCQkJ CQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRleCks CisJCQkJCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCQkJCQkgIHRydWUsCiAJCQkJCQkJ CQkJCQkJICBwc3RhdGUpOwogCQkJCX0KIApAQCAtNTE3MSwzICs1MTg1LDY3NSBAQCBjYWxj dWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJ IChpbnQpIGtleS0+c3RyYXRlZ3kpOwogCX0KIH0KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlv bnNfbm90X292ZXJsYXBfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0 aXRpb25pbmcpCisgKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tf cGFydGl0aW9uc19mb3Jfc3BsaXQoKS4KKyAqIENoZWNrcyB0aGF0IHRoZSB2YWx1ZXMgb2Yg dGhlIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBvdmVybGFwLgorICoKKyAqIHBhcmVudDoJcGFy dGl0aW9uZWQgdGFibGUKKyAqIHBhcnRzOglhcnJheSBvZiBTaW5nbGVQYXJ0aXRpb25TcGVj IHN0cnVjdHMgd2l0aCBpbmZvIGFib3V0IHNwbGl0IHBhcnRpdGlvbnMKKyAqIG5wYXJ0czoJ c2l6ZSBvZiBhcnJheSAicGFydHMiCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRp b25zX25vdF9vdmVybGFwX2xpc3QoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFNpbmds ZVBhcnRpdGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJCQkJ CQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5IFBHX1VTRURf Rk9SX0FTU0VSVFNfT05MWSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJ aW50CQkJb3ZlcmxhcF9sb2NhdGlvbiA9IC0xOworCWludAkJCWksCisJCQkJajsKKwlTaW5n bGVQYXJ0aXRpb25TcGVjICpzcHMxLAorCQkJICAgKnNwczI7CisJTGlzdAkgICAqb3Zlcmxh cDsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNU KTsKKworCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCXNwczEgPSBwYXJ0 c1tpXTsKKworCQlmb3IgKGogPSBpICsgMTsgaiA8IG5wYXJ0czsgaisrKQorCQl7CisJCQlz cHMyID0gcGFydHNbal07CisKKwkJCS8qCisJCQkgKiBDYWxjdWxhdGUgaW50ZXJzZWN0aW9u IGJldHdlZW4gdmFsdWVzIG9mIHR3byBwYXJ0aXRpb25zLgorCQkJICovCisJCQlvdmVybGFw ID0gbGlzdF9pbnRlcnNlY3Rpb24oc3BzMS0+Ym91bmQtPmxpc3RkYXR1bXMsCisJCQkJCQkJ CQkJc3BzMi0+Ym91bmQtPmxpc3RkYXR1bXMpOworCQkJaWYgKGxpc3RfbGVuZ3RoKG92ZXJs YXApID4gMCkKKwkJCXsKKwkJCQlDb25zdAkgICAqdmFsID0gKENvbnN0ICopIGxmaXJzdChs aXN0X2hlYWQob3ZlcmxhcCkpOworCisJCQkJb3ZlcmxhcF9sb2NhdGlvbiA9IHZhbC0+bG9j YXRpb247CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBc IiVzXCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiBcIiVzXCIi LAorCQkJCQkJCSAgIHNwczEtPm5hbWUtPnJlbG5hbWUsIHNwczItPm5hbWUtPnJlbG5hbWUp LAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikp OworCQkJfQorCQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19m b3Jfc3BsaXRfcmFuZ2UKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBhcnRpdGlv bmluZykKKyAqCisgKiBDaGVja3MgdGhhdCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbiAic3Bl YyIgYXJlIGluc2lkZSBib3VuZHMgb2Ygc3BsaXQKKyAqIHBhcnRpdGlvbiAod2l0aCBPaWQg c3BsaXRQYXJ0T2lkKS4gSWYgZmlyc3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJzcGVjIiBp cworICogdGhlIGZpcnN0IG9mIG5ldyBwYXJ0aXRpb25zKSB0aGVuIGxvd2VyIGJvdW5kIG9m ICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yCisgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwg aW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdAorICog cGFydGl0aW9uLiBJZiBsYXN0PXRydWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIgaXMgdGhl IGxhc3Qgb2YgbmV3CisgKiBwYXJ0aXRpb25zKSB0aGVuIHVwcGVyIGJvdW5kIG9mICJzcGVj IiBzaG91bGQgYmUgZXF1YWwgKG9yIGxlc3MgdGhhbiBvcgorICogZXF1YWwgaW4gY2FzZSBk ZWZhdWx0UGFydD10cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisg KgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5hbWUg b2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24g b2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9u IE9pZAorICogZmlyc3Q6CQkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlz IGZpcnN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBsYXN0OgkJCXRydWUgaW4gY2FzZSBuZXcg cGFydGl0aW9uICJzcGVjIiBpcyBsYXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBkZWZhdWx0 UGFydDoJCXRydWUgaW4gY2FzZSBuZXcgcGFydGl0aW9ucyBjb250YWluIERFRkFVTFQgcGFy dGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3Ig ZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0 aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJ CQkgICBjaGFyICpyZWxuYW1lLAorCQkJCQkJCQkJICAgUGFydGl0aW9uQm91bmRTcGVjICpz cGVjLAorCQkJCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgIGJvb2wg Zmlyc3QsCisJCQkJCQkJCQkgICBib29sIGxhc3QsCisJCQkJCQkJCQkgICBib29sIGRlZmF1 bHRQYXJ0LAorCQkJCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlv bktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlv blJhbmdlQm91bmQgKmxvd2VyLAorCQkJICAgKnVwcGVyOworCWludAkJCWNtcHZhbDsKKwor CUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisJ QXNzZXJ0KHNwZWMtPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisK Kwlsb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BlYy0+bG93 ZXJkYXR1bXMsIHRydWUpOworCXVwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChr ZXksIC0xLCBzcGVjLT51cHBlcmRhdHVtcywgZmFsc2UpOworCisJLyoKKwkgKiBGaXJzdCBj aGVjayBpZiB0aGUgcmVzdWx0aW5nIHJhbmdlIHdvdWxkIGJlIGVtcHR5IHdpdGggc3BlY2lm aWVkIGxvd2VyCisJICogYW5kIHVwcGVyIGJvdW5kcy4gIHBhcnRpdGlvbl9yYm91bmRfY21w IGNhbm5vdCByZXR1cm4gemVybyBoZXJlLCBzaW5jZQorCSAqIHRoZSBsb3dlci1ib3VuZCBm bGFncyBhcmUgZGlmZmVyZW50LgorCSAqLworCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRf Y21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJ CQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkgIGxvd2VyLT5kYXR1bXMsIGxv d2VyLT5raW5kLAorCQkJCQkJCQkgIHRydWUsIHVwcGVyKTsKKwlBc3NlcnQoY21wdmFsICE9 IDApOworCWlmIChjbXB2YWwgPiAwKQorCXsKKwkJLyogUG9pbnQgdG8gcHJvYmxlbWF0aWMg a2V5IGluIHRoZSBsb3dlciBkYXR1bXMgbGlzdC4gKi8KKwkJUGFydGl0aW9uUmFuZ2VEYXR1 bSAqZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgY21wdmFsIC0gMSk7CisK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJZXJybXNnKCJlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQg Zm9yIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICByZWxuYW1lKSwKKwkJCQllcnJkZXRh aWwoIlNwZWNpZmllZCBsb3dlciBib3VuZCAlcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg dG8gdXBwZXIgYm91bmQgJXMuIiwKKwkJCQkJCSAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJp bmcoc3BlYy0+bG93ZXJkYXR1bXMpLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0 cmluZyhzcGVjLT51cHBlcmRhdHVtcykpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGRhdHVtLT5sb2NhdGlvbikpOworCX0KKworCS8qIE5lZWQgdG8gY2hlY2sgZmlyc3Qg YW5kIGxhc3QgcGFydGl0aW9ucyAoZnJvbSBzZXQgb2YgbmV3IHBhcnRpdGlvbnMpICovCisJ aWYgKGZpcnN0IHx8IGxhc3QpCisJeworCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwbGl0X3Nw ZWMgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoc3BsaXRQYXJ0T2lkKTsKKwkJUGFydGl0 aW9uUmFuZ2VEYXR1bSAqZGF0dW07CisKKwkJaWYgKGZpcnN0KQorCQl7CisJCQlQYXJ0aXRp b25SYW5nZUJvdW5kICpzcGxpdF9sb3dlcjsKKworCQkJc3BsaXRfbG93ZXIgPSBtYWtlX29u ZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwbGl0X3NwZWMtPmxvd2VyZGF0dW1zLCB0 cnVlKTsKKworCQkJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0 dHMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5w YXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAgbG93ZXItPmRhdHVtcywgbG93ZXItPmtpbmQs CisJCQkJCQkJCQkJICB0cnVlLCBzcGxpdF9sb3dlcik7CisKKwkJCS8qCisJCQkgKiBMb3dl ciBib3VuZCBvZiAic3BlYyIgc2hvdWxkIGJlIGVxdWFsIChvciBncmVhdGVyIHRoYW4gb3Ig ZXF1YWwKKwkJCSAqIGluIGNhc2UgZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gbG93ZXIgYm91bmQg b2Ygc3BsaXQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAoIWRlZmF1bHRQYXJ0KQorCQkJ eworCQkJCWlmIChjbXB2YWwgIT0gMCkKKwkJCQl7CisJCQkJCWRhdHVtID0gbGlzdF9udGgo c3BlYy0+bG93ZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04p LAorCQkJCQkJCWVycm1zZygibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBu b3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJ ICAgcmVsbmFtZSksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0t PmxvY2F0aW9uKSk7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWlmIChjbXB2 YWwgPCAwKQorCQkJCXsKKwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVt cywgYWJzKGNtcHZhbCkgLSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNn KCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIGxlc3MgdGhhbiBsb3dlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9 CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICpzcGxp dF91cHBlcjsKKworCQkJc3BsaXRfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5k KGtleSwgLTEsIHNwbGl0X3NwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkJCWNtcHZh bCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkJCSAg a2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJ CQkJCQkJCQkgIHVwcGVyLT5kYXR1bXMsIHVwcGVyLT5raW5kLAorCQkJCQkJCQkJCSAgZmFs c2UsIHNwbGl0X3VwcGVyKTsKKworCQkJLyoKKwkJCSAqIFVwcGVyIGJvdW5kIG9mICJzcGVj IiBzaG91bGQgYmUgZXF1YWwgKG9yIGxlc3MgdGhhbiBvciBlcXVhbCBpbgorCQkJICogY2Fz ZSBkZWZhdWx0UGFydD10cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24u CisJCQkgKi8KKwkJCWlmICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAh PSAwKQorCQkJCXsKKwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT51cHBlcmRhdHVtcywg YWJzKGNtcHZhbCkgLSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJ1 cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9 CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYgKGNtcHZhbCA+IDApCisJCQkJeworCQkJ CQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPnVwcGVyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEp OworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInVwcGVyIGJvdW5kIG9mIHBh cnRpdGlvbiBcIiVzXCIgaXMgZ3JlYXRlciB0aGFuIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBh cnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJfQorCX0K K30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QKKyAq CisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNr cyB0aGF0IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9uIGFyZSBpbnNpZGUgYm91bmRzIG9mIHNw bGl0IHBhcnRpdGlvbgorICogKHdpdGggT2lkIHNwbGl0UGFydE9pZCkuCisgKgorICogcGFy ZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5hbWUgb2YgdGhlIG5l dyBwYXJ0aXRpb24KKyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhlIG5l dyBwYXJ0aXRpb24KKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICog cHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBl cnJvciBwb3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uX2JvdW5k c19mb3Jfc3BsaXRfbGlzdChSZWxhdGlvbiBwYXJlbnQsIGNoYXIgKnJlbG5hbWUsCisJCQkJ CQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCSAgT2lkIHNwbGl0 UGFydE9pZCwKKwkJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlv bktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlv bkRlc2MgcGFydGRlc2MgPSBSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCBmYWxz ZSk7CisJUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbyA9IHBhcnRkZXNjLT5ib3VuZGlu Zm87CisJaW50CQkJd2l0aCA9IC0xOworCWJvb2wJCW92ZXJsYXAgPSBmYWxzZTsKKwlpbnQJ CQlvdmVybGFwX2xvY2F0aW9uID0gLTE7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQ QVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0KHNwZWMtPnN0cmF0ZWd5ID09IFBB UlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoYm91bmRpbmZvICYmIGJvdW5kaW5m by0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJLyoKKwkgKiBT ZWFyY2ggZWFjaCB2YWx1ZSBvZiBuZXcgcGFydGl0aW9uICJzcGVjIiBpbiBleGlzdGluZyBw YXJ0aXRpb25zLiBBbGwKKwkgKiBvZiB0aGVtIHNob3VsZCBiZSBpbiBzcGxpdCBwYXJ0aXRp b24gKHdpdGggT2lkIHNwbGl0UGFydE9pZCkuCisJICovCisJZm9yZWFjaF9ub2RlKENvbnN0 LCB2YWwsIHNwZWMtPmxpc3RkYXR1bXMpCisJeworCQlvdmVybGFwX2xvY2F0aW9uID0gdmFs LT5sb2NhdGlvbjsKKwkJaWYgKCF2YWwtPmNvbnN0aXNudWxsKQorCQl7CisJCQlpbnQJCQlv ZmZzZXQ7CisJCQlib29sCQllcXVhbDsKKworCQkJb2Zmc2V0ID0gcGFydGl0aW9uX2xpc3Rf YnNlYXJjaCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJa2V5LT5wYXJ0Y29s bGF0aW9uLAorCQkJCQkJCQkJCQlib3VuZGluZm8sCisJCQkJCQkJCQkJCXZhbC0+Y29uc3R2 YWx1ZSwKKwkJCQkJCQkJCQkJJmVxdWFsKTsKKwkJCWlmIChvZmZzZXQgPj0gMCAmJiBlcXVh bCkKKwkJCXsKKwkJCQl3aXRoID0gYm91bmRpbmZvLT5pbmRleGVzW29mZnNldF07CisJCQkJ aWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCQl7CisJCQkJ CW92ZXJsYXAgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgY2Fu bm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBo YXZlIiwKKwkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwkJfQorCQllbHNlIGlmIChwYXJ0aXRpb25f Ym91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pKQorCQl7CisJCQl3aXRoID0gYm91bmRp bmZvLT5udWxsX2luZGV4OworCQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0 UGFydE9pZCkKKwkJCXsKKwkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0K KwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCWVycm1zZygibmV3IHBhcnRpdGlv biBcIiVzXCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlv biBkb2VzIG5vdCBoYXZlIiwKKwkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQlwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorCisJaWYgKG92ZXJs YXApCisJeworCQlBc3NlcnQod2l0aCA+PSAwKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNn KCJuZXcgcGFydGl0aW9uIFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90 IHNwbGl0KSBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgcmVsbmFtZSwgZ2V0X3JlbF9u YW1lKHBhcnRkZXNjLT5vaWRzW3dpdGhdKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIGZpbmRfdmFsdWVf aW5fbmV3X3BhcnRpdGlvbnNfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBw YXJ0aXRpb25pbmcpCisgKgorICogRnVuY3Rpb24gcmV0dXJucyB0cnVlIGluIGNhc2UgYW55 IG9mIG5ldyBwYXJ0aXRpb25zIGNvbnRhaW5zIHZhbHVlICJ2YWx1ZSIuCisgKgorICogcGFy dHN1cGZ1bmM6CQlpbmZvcm1hdGlvbiBhYm91dCBjb21wYXJpc29uIGZ1bmN0aW9uIGFzc29j aWF0ZWQgd2l0aCB0aGUgcGFydGl0aW9uIGtleQorICogcGFydGNvbGxhdGlvbjoJcGFydGl0 aW9uaW5nIGNvbGxhdGlvbgorICogcGFydHM6CQkJcG9pbnRlciB0byBhcnJheSB3aXRoIG5l dyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9ucworICogbnBhcnRzOgkJCW51bWJlciBvZiBuZXcg cGFydGl0aW9ucworICogdmFsdWU6CQkJdGhlIHZhbHVlIHRoYXQgd2UgYXJlIGxvb2tpbmcg Zm9yCisgKiBpc251bGw6CQkJdHJ1ZSBpZiB0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9va2lu ZyBmb3IgaXMgTlVMTAorICovCitzdGF0aWMgYm9vbAorZmluZF92YWx1ZV9pbl9uZXdfcGFy dGl0aW9uc19saXN0KEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBPaWQgKnBh cnRjb2xsYXRpb24sCisJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAor CQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCSAgRGF0dW0gdmFsdWUsCisJCQkJCQkJ CSAgYm9vbCBpc251bGwpCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBucGFydHM7IGkrKykK Kwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IHBhcnRzW2ldOworCisJCWZvcmVh Y2hfbm9kZShDb25zdCwgdmFsLCBzcHMtPmJvdW5kLT5saXN0ZGF0dW1zKQorCQl7CisJCQlp ZiAoaXNudWxsICYmIHZhbC0+Y29uc3Rpc251bGwpCisJCQkJcmV0dXJuIHRydWU7CisKKwkJ CWlmICghaXNudWxsICYmICF2YWwtPmNvbnN0aXNudWxsKQorCQkJeworCQkJCWlmIChEYXR1 bUdldEludDMyKEZ1bmN0aW9uQ2FsbDJDb2xsKCZwYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJ CQkJCQlwYXJ0Y29sbGF0aW9uWzBdLAorCQkJCQkJCQkJCQkJCXZhbC0+Y29uc3R2YWx1ZSwK KwkJCQkJCQkJCQkJCQl2YWx1ZSkpID09IDApCisJCQkJCXJldHVybiB0cnVlOworCQkJfQor CQl9CisJfQorCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIGNoZWNrX3BhcmVudF92YWx1 ZXNfaW5fbmV3X3BhcnRpdGlvbnMKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFy dGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFy dGl0aW9uICh3aXRoIE9pZCBwYXJ0T2lkKSBjb250YWlucyBpbiBuZXcKKyAqIHBhcnRpdGlv bnMuCisgKgorICogcGFyZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydE9pZDoJc3Bs aXQgcGFydGl0aW9uIE9pZAorICogcGFydHM6CXBvaW50ZXIgdG8gYXJyYXkgd2l0aCBuZXcg cGFydGl0aW9ucyBkZXNjcmlwdGlvbnMKKyAqIG5wYXJ0czoJbnVtYmVyIG9mIG5ldyBwYXJ0 aXRpb25zCisgKiBwc3RhdGU6CXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRl dGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFyZW50 X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucyhSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkg IE9pZCBwYXJ0T2lkLAorCQkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMs CisJCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0 ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFy ZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRkZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25E ZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBw YXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJCWk7CisJYm9vbAkJZm91bmQgPSB0cnVlOwor CWJvb2wJCXNlYXJjaE51bGwgPSBmYWxzZTsKKwlEYXR1bQkJZGF0dW0gPSBQb2ludGVyR2V0 RGF0dW0oTlVMTCk7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RS QVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNwZWNpYWwgcHJvY2Vzc2luZyBmb3IgTlVMTCB2 YWx1ZS4gU2VhcmNoIE5VTEwgdmFsdWUgaWYgdGhlIHNwbGl0CisJICogcGFydGl0aW9uIChw YXJ0T2lkKSBjb250YWlucyBpdC4KKwkgKi8KKwlpZiAocGFydGl0aW9uX2JvdW5kX2FjY2Vw dHNfbnVsbHMoYm91bmRpbmZvKSAmJgorCQlwYXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPm51 bGxfaW5kZXhdID09IHBhcnRPaWQpCisJeworCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3Bh cnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJICAga2V5 LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBhcnRzLCBkYXR1bSwgdHJ1ZSkpCisJCXsKKwkJ CWZvdW5kID0gZmFsc2U7CisJCQlzZWFyY2hOdWxsID0gdHJ1ZTsKKwkJfQorCX0KKworCS8q CisJICogU2VhcmNoIGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIHdpdGggcGFydE9p ZCBpbiBQYXJ0aXRpb25EZXNjIG9mCisJICogcGFydGl0aW9uZWQgdGFibGUuCisJICovCisJ Zm9yIChpID0gMDsgaSA8IGJvdW5kaW5mby0+bmRhdHVtczsgaSsrKQorCXsKKwkJaWYgKHBh cnRkZXNjLT5vaWRzW2JvdW5kaW5mby0+aW5kZXhlc1tpXV0gPT0gcGFydE9pZCkKKwkJewor CQkJLyogV2UgZm91bmQgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gY29udGFpbnMuICov CisJCQlkYXR1bSA9IGJvdW5kaW5mby0+ZGF0dW1zW2ldWzBdOworCQkJaWYgKCFmaW5kX3Zh bHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJ CQkJCQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCBm YWxzZSkpCisJCQl7CisJCQkJZm91bmQgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJ fQorCX0KKworCWlmICghZm91bmQpCisJeworCQlDb25zdAkgICAqbm90Rm91bmRWYWw7CisK KwkJaWYgKCFzZWFyY2hOdWxsKQorCisJCQkvKgorCQkJICogTWFrZSBDb25zdCBmb3IgZ2V0 dGluZyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygbm90IGZvdW5kCisJCQkgKiB2YWx1ZS4K KwkJCSAqLworCQkJbm90Rm91bmRWYWwgPSBtYWtlQ29uc3Qoa2V5LT5wYXJ0dHlwaWRbMF0s CisJCQkJCQkJCQlrZXktPnBhcnR0eXBtb2RbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBj b2xsWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0dHlwbGVuWzBdLAorCQkJCQkJCQkJZGF0dW0s CisJCQkJCQkJCQlmYWxzZSwJLyogaXNudWxsICovCisJCQkJCQkJCQlrZXktPnBhcnR0eXBi eXZhbFswXSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9ucyBk byBub3QgaGF2ZSB2YWx1ZSAlcyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMiLAorCQkJCQkg ICBzZWFyY2hOdWxsID8gIk5VTEwiIDogZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhub3RG b3VuZFZhbCkpKTsKKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxp dAorICoKKyAqIENoZWNrcyBuZXcgcGFydGl0aW9ucyBmb3IgU1BMSVQgUEFSVElUSU9OUyBj b21tYW5kOgorICogMS4gREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZS4KKyAqIDIu IE5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcworICogICAgKHdp dGggZXhpc3RpbmcgcGFydGl0aW9ucyB0b28pLgorICogMy4gQm91bmRzIG9mIG5ldyBwYXJ0 aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQgZXhpc3RpbmcKKyAqICAg IHBhcnRpdGlvbnMuCisgKiA0LiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxU IHBhcnRpdGlvbiwgb25lIG9mIG5ldyBwYXJ0aXRpb25zCisgKiAgICBzaG91bGQgYmUgREVG QVVMVC4KKyAqIDUuIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgb3IgZXhpc3RpbmcgcGFydGl0 aW9ucyBjb250YWlucyBERUZBVUxUCisgKiAgICBwYXJ0aXRpb24sIG5ldyBwYXJ0aXRpb25z IGNhbiBoYXZlIGFueSBib3VuZHMgaW5zaWRlIHNwbGl0CisgKiAgICBwYXJ0aXRpb24gYm91 bmQgKGNhbiBiZSBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zIGJvdW5kcykuCisgKiA2LiBJ biBjYXNlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgREVGQVVMVCBwYXJ0aXRp b24sIERFRkFVTFQKKyAqICAgIHBhcnRpdGlvbiBjYW4gYmUgZGVmaW5lZCBhcyBvbmUgb2Yg bmV3IHBhcnRpdGlvbi4KKyAqIDcuIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgbm90IGNvbnRh aW5zIERFRkFVTFQgcGFydGl0aW9uIGFuZAorICogICAgcGFydGl0aW9uZWQgdGFibGUgZG9l cyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiB0aGUgZm9sbG93aW5nCisgKiAgICBzaG91 bGQgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgZXF1 YWwKKyAqICAgIHRvIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKyAqCisgKiBwYXJlbnQ6 CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9u IE9pZAorICogbGlzdDoJCQlsaXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBwc3RhdGU6CQkJ cG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0 aW9uCisgKi8KK3ZvaWQKK2NoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBh cmVudCwKKwkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkgICBMaXN0ICpwYXJ0 bGlzdCwKKwkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkg a2V5OworCWNoYXIJCXN0cmF0ZWd5OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCWJvb2wJ CWlzU3BsaXRQYXJ0RGVmYXVsdDsKKwlib29sCQljcmVhdGVEZWZhdWx0UGFydDsKKwlpbnQJ CQlkZWZhdWx0X2luZGV4ID0gLTE7CisJaW50CQkJaSwKKwkJCQlqOworCVNpbmdsZVBhcnRp dGlvblNwZWMgKipuZXdfcGFydHM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzUHJldiA9 IE5VTEw7CisJaW50CQkJbnBhcnRzID0gMDsKKworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0 aW9uS2V5KHBhcmVudCk7CisJc3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtl eSk7CisKKwlzd2l0Y2ggKHN0cmF0ZWd5KQorCXsKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRF R1lfTElTVDoKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0U6CisJCQl7CisJCQkJ LyoKKwkJCQkgKiBNYWtlIGFycmF5IG5ld19wYXJ0cyB3aXRoIG5ldyBwYXJ0aXRpb25zIGV4 Y2VwdCBERUZBVUxUCisJCQkJICogcGFydGl0aW9uLgorCQkJCSAqLworCQkJCW5ld19wYXJ0 cyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICoqKQorCQkJCQlwYWxsb2MwKGxpc3RfbGVuZ3Ro KHBhcnRsaXN0KSAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICopKTsKKwkJCQlpID0g MDsKKwkJCQlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0bGlz dCkKKwkJCQl7CisJCQkJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQorCQkJCQl7CisJ CQkJCQlpZiAoZGVmYXVsdF9pbmRleCA+PSAwKQorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJCQkJCQllcnJtc2coIkRFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUiKSwKKwkJ CQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwcy0+bmFtZS0+bG9jYXRpb24p KTsKKwkJCQkJCWRlZmF1bHRfaW5kZXggPSBpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJ eworCQkJCQkJbmV3X3BhcnRzW25wYXJ0cysrXSA9IHNwczsKKwkJCQkJfQorCQkJCQlpKys7 CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lf SEFTSDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coInBhcnRpdGlvbiBvZiBoYXNoLXBhcnRp dGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdCIpKTsKKwkJCWJyZWFrOworCisJCWRlZmF1 bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVk IiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CisJCQlicmVhazsKKwl9CisKKwlpZiAo c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKQorCXsKKwkJUGFydGl0aW9u UmFuZ2VCb3VuZCAqKmxvd2VyX2JvdW5kczsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqKnRt cF9uZXdfcGFydHM7CisKKwkJLyoKKwkJICogRm9yIHNpbXBsaWZ5IGNoZWNrIGZvciByYW5n ZXMgb2YgbmV3IHBhcnRpdGlvbnMgbmVlZCB0byBzb3J0IGFsbAorCQkgKiBwYXJ0aXRpb25z IGluIGFzY2VuZGluZyBvcmRlciBvZiB0aGVtIGJvdW5kcyAod2UgY29tcGFyZSB1cHBlcgor CQkgKiBib3VuZCBvbmx5KS4KKwkJICovCisJCWxvd2VyX2JvdW5kcyA9IChQYXJ0aXRpb25S YW5nZUJvdW5kICoqKQorCQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoUGFydGl0aW9uUmFu Z2VCb3VuZCAqKSk7CisKKwkJLyogQ3JlYXRlIGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8K KwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCQl7CisJCQlsb3dlcl9ib3VuZHNb aV0gPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgaSwKKwkJCQkJCQkJCQkJCQkJ bmV3X3BhcnRzW2ldLT5ib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCQl9CisKKwkJLyog U29ydCBhcnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCXFzb3J0X2FyZyhsb3dlcl9ib3Vu ZHMsIG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKiksCisJCQkJICBxc29y dF9wYXJ0aXRpb25fcmJvdW5kX2NtcCwgKHZvaWQgKikga2V5KTsKKworCQkvKiBSZW9yZGVy IGFycmF5IG9mIHBhcnRpdGlvbnMuICovCisJCXRtcF9uZXdfcGFydHMgPSBuZXdfcGFydHM7 CisJCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICoqKQorCQkJcGFsbG9jMChu cGFydHMgKiBzaXplb2YoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSk7CisJCWZvciAoaSA9IDA7 IGkgPCBucGFydHM7IGkrKykKKwkJCW5ld19wYXJ0c1tpXSA9IHRtcF9uZXdfcGFydHNbbG93 ZXJfYm91bmRzW2ldLT5pbmRleF07CisKKwkJcGZyZWUodG1wX25ld19wYXJ0cyk7CisJCXBm cmVlKGxvd2VyX2JvdW5kcyk7CisJfQorCisJZGVmYXVsdFBhcnRPaWQgPQorCQlnZXRfZGVm YXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50 LCB0cnVlKSk7CisKKwkvKiBpc1NwbGl0UGFydERlZmF1bHQgZmxhZzogaXMgc3BsaXQgcGFy dGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJaXNTcGxpdFBhcnREZWZhdWx0ID0g KGRlZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9pZCk7CisKKwlpZiAoaXNTcGxpdFBhcnRE ZWZhdWx0ICYmIGRlZmF1bHRfaW5kZXggPCAwKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJy bXNnKCJvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1 c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCAoKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGluaXRpYWwocGFydGxpc3Qp KS0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisJZWxzZSBpZiAoIWlzU3BsaXRQYXJ0RGVmYXVs dCAmJiAoZGVmYXVsdF9pbmRleCA+PSAwKSAmJiBPaWRJc1ZhbGlkKGRlZmF1bHRQYXJ0T2lk KSkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwc0RlZiA9CisJCQkoU2luZ2xlUGFy dGl0aW9uU3BlYyAqKSBsaXN0X250aChwYXJ0bGlzdCwgZGVmYXVsdF9pbmRleCk7CisKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxU IGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMiKSwKKwkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHNEZWYtPm5hbWUtPmxvY2F0aW9uKSk7CisJfQor CisJLyogSW5kaWNhdG9yIHRoYXQgdGhlIERFRkFVTFQgcGFydGl0aW9uIHdpbGwgYmUgY3Jl YXRlZC4gKi8KKwljcmVhdGVEZWZhdWx0UGFydCA9IChkZWZhdWx0X2luZGV4ID49IDApOwor CisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9u U3BlYyAqc3BzID0gbmV3X3BhcnRzW2ldOworCisJCWlmIChpc1NwbGl0UGFydERlZmF1bHQp CisJCXsKKwkJCS8qCisJCQkgKiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxU IHBhcnRpdGlvbiB3ZSBjYW4gdXNlIGFueQorCQkJICogZnJlZSByYW5nZXMgLSBhcyB3aGVu IGNyZWF0aW5nIGEgbmV3IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJY2hlY2tfbmV3X3BhcnRp dGlvbl9ib3VuZChzcHMtPm5hbWUtPnJlbG5hbWUsIHBhcmVudCwgc3BzLT5ib3VuZCwKKwkJ CQkJCQkJCSAgcHN0YXRlKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBDaGVj a3MgdGhhdCBib3VuZCBvZiBjdXJyZW50IHBhcnRpdGlvbiBpcyBpbnNpZGUgYm91bmQgb2Yg c3BsaXQKKwkJCSAqIHBhcnRpdGlvbi4gRm9yIHJhbmdlIHBhcnRpdGlvbmluZzogY2hlY2tz IHRoYXQgdXBwZXIgYm91bmQgb2YKKwkJCSAqIHByZXZpb3VzIHBhcnRpdGlvbiBpcyBlcXVh bCB0byBsb3dlciBib3VuZCBvZiBjdXJyZW50CisJCQkgKiBwYXJ0aXRpb24uIEZvciBsaXN0 IHBhcnRpdGlvbmluZzogY2hlY2tzIHRoYXQgc3BsaXQgcGFydGl0aW9uCisJCQkgKiBjb250 YWlucyBhbGwgdmFsdWVzIG9mIGN1cnJlbnQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAo c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKQorCQkJeworCQkJCWJvb2wJ CWZpcnN0ID0gKGkgPT0gMCk7CisJCQkJYm9vbAkJbGFzdCA9IChpID09IChucGFydHMgLSAx KSk7CisKKwkJCQljaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShwYXJl bnQsIHNwcy0+bmFtZS0+cmVsbmFtZSwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCQkJCQkgICBz cGxpdFBhcnRPaWQsIGZpcnN0LCBsYXN0LAorCQkJCQkJCQkJCQkJCSAgIGNyZWF0ZURlZmF1 bHRQYXJ0LCBwc3RhdGUpOworCQkJfQorCQkJZWxzZQorCQkJCWNoZWNrX3BhcnRpdGlvbl9i b3VuZHNfZm9yX3NwbGl0X2xpc3QocGFyZW50LCBzcHMtPm5hbWUtPnJlbG5hbWUsCisJCQkJ CQkJCQkJCQkJICBzcHMtPmJvdW5kLCBzcGxpdFBhcnRPaWQsIHBzdGF0ZSk7CisJCX0KKwor CQkvKiBSYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLwor CQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYmIHNwc1ByZXYp CisJCQljaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UocGFyZW50LCBzcHNQcmV2 LT5uYW1lLCBzcHNQcmV2LT5ib3VuZCwKKwkJCQkJCQkJCQkJICBzcHMtPm5hbWUsIHNwcy0+ Ym91bmQsCisJCQkJCQkJCQkJCSAgY3JlYXRlRGVmYXVsdFBhcnQsCisJCQkJCQkJCQkJCSAg ZmFsc2UsCisJCQkJCQkJCQkJCSAgcHN0YXRlKTsKKworCQlzcHNQcmV2ID0gc3BzOworCisJ CS8qIENoZWNrOiBuZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMu ICovCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsKKwkJCVNpbmds ZVBhcnRpdGlvblNwZWMgKnNwczIgPSBuZXdfcGFydHNbal07CisKKwkJCWlmIChlcXVhbChz cHMtPm5hbWUsIHNwczItPm5hbWUpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJj b2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygibmFtZSBcIiVz XCIgaXMgYWxyZWFkeSB1c2VkIiwgc3BzMi0+bmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHMyLT5uYW1lLT5sb2NhdGlvbikpOworCQl9CisJ fQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKQorCXsKKwkJ LyogVmFsdWVzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJ Y2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0KHBhcmVudCwgbmV3X3BhcnRzLCBu cGFydHMsCisJCQkJCQkJCQkJICBwc3RhdGUpOworCisJCS8qCisJCSAqIE5lZWQgdG8gY2hl Y2sgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiBjb250YWlucyBpbiBuZXcK KwkJICogcGFydGl0aW9ucy4gU2tpcCB0aGlzIGNoZWNrIGlmIERFRkFVTFQgcGFydGl0aW9u IGV4aXN0cy4KKwkJICovCisJCWlmICghY3JlYXRlRGVmYXVsdFBhcnQpCisJCQljaGVja19w YXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKHBhcmVudCwgc3BsaXRQYXJ0T2lkLAor CQkJCQkJCQkJCQkJICBuZXdfcGFydHMsIG5wYXJ0cywgcHN0YXRlKTsKKwl9CisKKwlwZnJl ZShuZXdfcGFydHMpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDNk NmU2YmRiZmQuLjNlMTY4OWIxMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMK QEAgLTEzNzA3LDMgKzEzNzA3LDIxIEBAIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExp c3QgKmJvdW5kX2RhdHVtcykKIAogCXJldHVybiBidWYtPmRhdGE7CiB9CisKKy8qCisgKiBn ZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nCisgKgkJQSBDIHN0cmluZyByZXByZXNlbnRhdGlv biBvZiBvbmUgbGlzdCBwYXJ0aXRpb24gdmFsdWUKKyAqLworY2hhciAqCitnZXRfbGlzdF9w YXJ0dmFsdWVfc3RyaW5nKENvbnN0ICp2YWwpCit7CisJZGVwYXJzZV9jb250ZXh0IGNvbnRl eHQ7CisJU3RyaW5nSW5mbwlidWYgPSBtYWtlU3RyaW5nSW5mbygpOworCisJbWVtc2V0KCZj b250ZXh0LCAwLCBzaXplb2YoZGVwYXJzZV9jb250ZXh0KSk7CisJY29udGV4dC5idWYgPSBi dWY7CisKKwlnZXRfY29uc3RfZXhwcih2YWwsICZjb250ZXh0LCAtMSk7CisKKwlyZXR1cm4g YnVmLT5kYXRhOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDg5MTE2YjE3N2Iu LmIyMTkxNTVlYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI3NDIsNyArMjc0 Miw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQkJCQkgICJP V05FUiBUTyIsICJTRVQiLCAiVkFMSURBVEUgQ09OU1RSQUlOVCIsCiAJCQkJCSAgIlJFUExJ Q0EgSURFTlRJVFkiLCAiQVRUQUNIIFBBUlRJVElPTiIsCiAJCQkJCSAgIkRFVEFDSCBQQVJU SVRJT04iLCAiRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIiwKLQkJCQkJICAiTUVSR0UgUEFS VElUSU9OUyAoIiwKKwkJCQkJICAiU1BMSVQgUEFSVElUSU9OIiwgIk1FUkdFIFBBUlRJVElP TlMgKCIsCiAJCQkJCSAgIk9GIiwgIk5PVCBPRiIpOwogCS8qIEFMVEVSIFRBQkxFIHh4eCBB REQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAi QUREIikpCkBAIC0zMDA1LDEwICszMDA1LDEwIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGlu dCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIKCJGUk9NICgiLCAiSU4gKCIsICJXSVRI ICgiKTsKIAogCS8qCi0JICogSWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBERVRBQ0gg UEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBvZgorCSAqIElmIHdlIGhhdmUgQUxURVIgVEFC TEUgPGZvbz4gREVUQUNIfFNQTElUIFBBUlRJVElPTiwgcHJvdmlkZSBhIGxpc3Qgb2YKIAkg KiBwYXJ0aXRpb25zIG9mIDxmb28+LgogCSAqLwotCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0giLCAiUEFSVElUSU9OIikpCisJZWxzZSBp ZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSHxTUExJVCIs ICJQQVJUSVRJT04iKSkKIAl7CiAJCXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2M193 ZCk7CiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9wYXJ0aXRpb25f b2ZfdGFibGUpOwpAQCAtMzAxNiw2ICszMDE2LDEwIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRz KGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwg TWF0Y2hBbnksICJERVRBQ0giLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVU RV9XSVRIKCJDT05DVVJSRU5UTFkiLCAiRklOQUxJWkUiKTsKIAorCS8qIEFMVEVSIFRBQkxF IDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPG5hbWU+ICovCisJZWxzZSBpZiAoTWF0Y2hlcygi QUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIlNQTElUIiwgIlBBUlRJVElPTiIsIE1hdGNo QW55KSkKKwkJQ09NUExFVEVfV0lUSCgiSU5UTyAoIFBBUlRJVElPTiIpOworCiAJLyogQUxU RVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCAqLwogCWVsc2UgaWYgKE1hdGNo ZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwg IigiKSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggN2M2MDdkYzU1YS4uZWY5 MDMyNzQ0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtOTY0LDE0ICs5NjQsMjYg QEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogfSBQYXJ0aXRpb25SYW5n ZURhdHVtOwogCiAvKgotICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUv SU5ERVggQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZHMKKyAqIFBhcnRpdGlvbkRl c2MgLSBpbmZvIGFib3V0IHNpbmdsZSBwYXJ0aXRpb24gZm9yIEFMVEVSIFRBQkxFIFNQTElU IFBBUlRJVElPTiBjb21tYW5kCisgKi8KK3R5cGVkZWYgc3RydWN0IFNpbmdsZVBhcnRpdGlv blNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBu YW1lIG9mIHBhcnRpdGlvbiAqLworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZP UiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworfSBTaW5nbGVQYXJ0aXRpb25TcGVjOworCisv KgorICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUvSU5ERVggQVRUQUNI L0RFVEFDSCBQQVJUSVRJT04gYW5kIGZvcgorICoJICBBTFRFUiBUQUJMRSBTUExJVC9NRVJH RSBQQVJUSVRJT04oUykgY29tbWFuZHMKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9u Q21kCiB7CiAJTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUg b2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVyZ2UgKi8KKwlSYW5nZVZhciAgICpu YW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVyZ2Uvc3Bs aXQgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBh dHRhY2hpbmcgKi8KLQlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9u cywgZm9yIE1FUkdFCisJTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0IG9mIHBhcnRpdGlv bnMsIGZvciBNRVJHRS9TUExJVAogCQkJCQkJCQkgKiBQQVJUSVRJT04gY29tbWFuZCAqLwog CWJvb2wJCWNvbmN1cnJlbnQ7CiB9IFBhcnRpdGlvbkNtZDsKQEAgLTI0NzUsNiArMjQ4Nyw3 IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX0F0dGFjaFBhcnRpdGlvbiwJ CQkvKiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uLAkJCS8qIERF VEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZSwgLyogREVU QUNIIFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFUX1NwbGl0UGFydGl0aW9uLAkJCS8qIFNQ TElUIFBBUlRJVElPTiAqLwogCUFUX01lcmdlUGFydGl0aW9ucywJCQkvKiBNRVJHRSBQQVJU SVRJT05TICovCiAJQVRfQWRkSWRlbnRpdHksCQkJCS8qIEFERCBJREVOVElUWSAqLwogCUFU X1NldElkZW50aXR5LAkJCQkvKiBTRVQgaWRlbnRpdHkgY29sdW1uIG9wdGlvbnMgKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaAppbmRleCA5MGU4Y2RkZjhiLi42NmM4ODc2NjU3IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oCkBAIC00MjEsNiArNDIxLDcgQEAgUEdfS0VZV09SRCgic21hbGxpbnQiLCBT TUFMTElOVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNu YXBzaG90IiwgU05BUFNIT1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInNvbWUiLCBTT01FLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgic291cmNlIiwgU09VUkNFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJzcGxpdCIsIFNQTElULCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzcWwiLCBTUUxfUCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhYmxlIiwgU1RBQkxFLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdGFuZGFsb25lIiwgU1RB TkRBTE9ORV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIGIvc3JjL2luY2x1ZGUv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAppbmRleCA2OTBkMjU5NjE5Li40NWIxZmExZGU4 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKQEAgLTE0Myw2ICsx NDMsMTAgQEAgZXh0ZXJuIGludAlwYXJ0aXRpb25fcmFuZ2VfZGF0dW1fYnNlYXJjaChGbWdy SW5mbyAqcGFydHN1cGZ1bmMsCiBleHRlcm4gaW50CXBhcnRpdGlvbl9oYXNoX2JzZWFyY2go UGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbywKIAkJCQkJCQkJICAgaW50IG1vZHVsdXMs IGludCByZW1haW5kZXIpOwogCitleHRlcm4gdm9pZCBjaGVja19wYXJ0aXRpb25zX2Zvcl9z cGxpdChSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAor CQkJCQkJCQkJICAgTGlzdCAqcGFydGxpc3QsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpw c3RhdGUpOwogZXh0ZXJuIHZvaWQgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVy Z2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAogCQkJ CQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9ydWxldXRpbHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCmluZGV4IDVm MmVhMmU0ZDAuLjYyMDQzZDNiZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1 bGV1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCkBAIC01NCw0 ICs1NCw2IEBAIGV4dGVybiBjaGFyICpnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0 ICpib3VuZF9kYXR1bXMpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X3N0YXRpc3RpY3NvYmpk ZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwogCitleHRlcm4gY2hhciAqZ2V0X2xpc3RfcGFy dHZhbHVlX3N0cmluZyhDb25zdCAqdmFsKTsKKwogI2VuZGlmCQkJCQkJCS8qIFJVTEVVVElM U19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0 aW9uLXNwbGl0Lm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24t c3BsaXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVkOWU4 YjA5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQv cGFydGl0aW9uLXNwbGl0Lm91dApAQCAtMCwwICsxLDE5MCBAQAorUGFyc2VkIHRlc3Qgc3Bl YyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQg czJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFM VEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkg ICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSks CisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRP ICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRl eHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSBy b3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnJyIHMyaSBz MWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxF IHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElU SU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAg UEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOwor c3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0 ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRp bmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4K K3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBp fHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1Cisy NXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOwor c3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8x MF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxV RVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVW RUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz Mmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8 dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMy cworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsK K3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRf MTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFM VUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJ TlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgor c3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAor LS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUK KzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIg czFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0 cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElP TiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBB UlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0 ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVw IHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0 ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8 dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMxYnJyIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBU QUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBB UlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJ ICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjAp KTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0 ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRp bmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4K K3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBp fHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1Cisy NXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczFicyBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJzOiBCRUdJTiBJ U09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxF IHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElU SU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAg UEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOwor c3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz Mmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8 dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBz MnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0 ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBf MjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVT IEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVw IHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNF TEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1Cisg MXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMg czJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7Citz dGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEw XzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVF UyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZF TCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy aTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0 ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4IDBkY2E2ODQ5NTUuLjQw NGE3ZmQ4MzIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2No ZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAt MTA4LDYgKzEwOCw3IEBAIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTIKIHRlc3Q6IHBh cnRpdGlvbi1rZXktdXBkYXRlLTMKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTQKIHRl c3Q6IHBhcnRpdGlvbi1tZXJnZQordGVzdDogcGFydGl0aW9uLXNwbGl0CiB0ZXN0OiBwbHBn c3FsLXRvYXN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZs aWN0LXBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3Bh cnRpdGlvbi1zcGxpdC5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlv bi1zcGxpdC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA4 NzIzOWE0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3Mv cGFydGl0aW9uLXNwbGl0LnNwZWMKQEAgLTAsMCArMSw1NCBAQAorIyBWZXJpZnkgdGhhdCBT UExJVCBvcGVyYXRpb24gbG9ja3MgRE1MIG9wZXJhdGlvbnMgd2l0aCBwYXJ0aXRpb25lZCB0 YWJsZQorCitzZXR1cAoreworICBEUk9QIFRBQkxFIElGIEVYSVNUUyB0cGFydDsKKyAgQ1JF QVRFIFRBQkxFIHRwYXJ0KGkgaW50LCB0IHRleHQpIHBhcnRpdGlvbiBieSByYW5nZShpKTsK KyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8xMF8yMCBQQVJU SVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKKyAgQ1JFQVRF IFRBQkxFIHRwYXJ0XzIwXzMwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00g KDIwKSBUTyAoMzApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfZGVmYXVsdCBQQVJUSVRJT04g T0YgdHBhcnQgREVGQVVMVDsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICg1LCAndGV4 dDA1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMTUsICd0ZXh0MTUnKTsKKyAg SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgyNSwgJ3RleHQyNScpOworICBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9CisKK3RlYXJkb3duCit7CisgIERS T1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0ZXAgczFiCXsgQkVHSU47IH0K K3N0ZXAgczFicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9 CitzdGVwIHMxYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9Citz dGVwIHMxc3BsdAl7IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8x MF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxV RVMgRlJPTSAoMTUpIFRPICgyMCkpOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nl c3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09M QVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09M QVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVwIHMyYwl7IENPTU1JVDsgfQorc3Rl cCBzMnMJeyBTRUxFQ1QgKiBGUk9NIHRwYXJ0OyB9CisKKworIyBzMSBzdGFydHMgU1BMSVQg UEFSVElUSU9OIHRoZW4gczIgdHJ5aW5nIHRvIGluc2VydCByb3cgYW5kCisjIHdhaXRzIHVu dGlsIHMxIGZpbmlzaGVkIFNQTElUIG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczFiIHMx c3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnJy IHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMg czJjIHMycworCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMy cworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVy bXV0YXRpb24gczFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCisKK3Blcm11dGF0 aW9uIHMxYnMgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnMg czFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQg czJicyBzMmkgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDdkZTVkZGI4NzguLjE3 ZDcyZTQxMmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9k ZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMjk2LDYgKzI5Niw5IEBAIGdldF9hbHRl cnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRGV0YWNo UGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4u LiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgor CQkJCXN0cnR5cGUgPSAiU1BMSVQgUEFSVElUSU9OIjsKKwkJCQlicmVhazsKIAkJCWNhc2Ug QVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJCXN0cnR5cGUgPSAiTUVSR0UgUEFSVElUSU9OUyI7 CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZGZi YzU5MTY3YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMCwwICsxLDE1NjYgQEAKKy0tCistLSBQQVJUSVRJ T05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElP TiAuLi4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOworU0VUIHNlYXJj aF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworLS0KKy0tIEJZIFJB TkdFIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3Bl cnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRh dGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIEVSUk9SOiAg cmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc194eHggSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKKy0tIEVS Uk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4y MDIyIiBhbHJlYWR5IGV4aXN0cworLS0gRVJST1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmlj YXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1LTAxJywgJzIwMjItMDYt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CitFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0 aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJ TiAoJzIwMjItMDUtMDEnLCAnMjAyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVj aWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZv ciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJ TDogIFNwZWNpZmllZCBsb3dlciBib3VuZCAoJzAzLTAxLTIwMjInKSBpcyBncmVhdGVyIHRo YW4gb3IgZXF1YWwgdG8gdXBwZXIgYm91bmQgKCcwMi0wMS0yMDIyJykuCistLUVSUk9SOiAg bGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBp dGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworRVJST1I6ICBs aXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0 aXRpb25zCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmVi MjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3Vu ZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBu YW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVhZHkgdXNlZAorLS0gKFdlIGNh biBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRp b24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1l KQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgbmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJ TkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLi4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5h bWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5 IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBF UlJPUjogICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRh YmxlCitBTFRFUiBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6 ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFSVElUSU9OIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24g cmVsYXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKK0RFVEFJTDogIFRoaXMgb3BlcmF0 aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KKy0tIEVSUk9SOiAgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIg Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEn KSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIg aXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0 OiAuLi4gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA2LTAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFy MjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2ZlYjIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAu Li4gU1BMSVQgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBi ZSBhZGphY2VudC4KKy0tIFRlc3RzIGZvciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0 aGVtIHNob3VsZCBiZSBleGVjdXRlZCB3aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBERVRBQ0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDInKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlv biAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0 IHBhcnRpdGlvbgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBDaGVjayB0aGUgc291cmNlIHBh cnRpdGlvbiBub3QgaW4gdGhlIHNlYXJjaCBwYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hMiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYS5zYWxlc19yYW5nZQorU1BMSVQgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEuc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7Citc ZCsgc2FsZXNfcmFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlv bmVkIHRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlIgorICAgICAg Q29sdW1uICAgICAgfCAgICAgICAgIFR5cGUgICAgICAgICAgfCBDb2xsYXRpb24gfCBOdWxs YWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9u IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBpbnRlZ2VyICAgICAgICAgICAgICAg fCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAg ICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCBjaGFyYWN0ZXIgdmFyeWluZygzMCkgfCAg ICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAgICAg ICB8IAorIHNhbGVzX2Ftb3VudCAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAg ICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8 IAorIHNhbGVzX2RhdGUgICAgICAgfCBkYXRlICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAor UGFydGl0aW9uIGtleTogUkFOR0UgKHNhbGVzX2RhdGUpCitQYXJ0aXRpb25zOiBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hMi5zYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAx LTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEyLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicp IFRPICgnMDMtMDEtMjAyMicpLAorICAgICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVt YTIuc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcw NC0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKQorCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CistLQorLS0gQWRkIHJvd3MgaW50 byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisg ICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwK KyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScp LAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAs ICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lk ICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19qYW4y MDIyIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAw IHwgMDEtMzEtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgMiB8IFNtaXJu b2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfYXByMjAy MiB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8 IDA0LTMwLTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2FwcjIwMjIg fCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw NC0wNy0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19tYXIyMDIyIHwg ICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMt MDgtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAg ICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfbWFyMjAyMiB8ICAg ICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTEx LTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAg ICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAg ICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAy MgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIEFkZCBzcGxpdCBwYXJ0aXRpb24sIHRoZW4g YWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVj ayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFydGl0aW9ucworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X3JhbmdlIgorICAgICAgQ29sdW1uICAgICAgfCAgICAgICAgIFR5cGUgICAgICAgICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlICB8IFN0YXRzIHRhcmdl dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBpbnRlZ2Vy ICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFp biAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCBjaGFyYWN0ZXIg dmFyeWluZygzMCkgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBleHRlbmRl ZCB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2Ftb3VudCAgICAgfCBpbnRlZ2VyICAgICAg ICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8 ICAgICAgICAgICAgICB8IAorIHNhbGVzX2RhdGUgICAgICAgfCBkYXRlICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAg ICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogUkFOR0UgKHNhbGVzX2RhdGUpCitQYXJ0 aXRpb25zOiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKSwKKyAgICAgICAgICAg IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUt MDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19q YW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjIn KSwKKyAgICAgICAgICAgIHNhbGVzX290aGVycyBERUZBVUxUCisKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSBz YWxlc3BlcnNvbl9pZDsKKyAgICAgICAgICAgICAgIHRhYmxlb2lkICAgICAgICAgICAgICAg IHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEt MjAyMgorIHNhbGVzX2ZlYjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIy Cisgc2FsZXNfYXByMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBz YWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVz X2FwcjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfZmVi MjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICA2IHwgUG9pcm90 ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAg ICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgcGFydGl0aW9uX3NwbGl0X3NjaGVt YTIuc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFy MjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwg MDEtMDktMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0w NC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOwor LS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0g ICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1 ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElO VCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAg KExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19t b250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIs ICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxU ICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIx IFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEp IFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW5fZmViMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgy MDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2Fs ZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFY VkFMVUUsIE1BWFZBTFVFKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgn TWFuYWdlcjEnLCAyMDIxLCAxMiwgNyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCks CisgICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIs IDQpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIy LCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywg MjAyMiwgMywgNCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVDVCB0YWJs ZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxlb2lkLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5OworICAgICB0YWJsZW9pZCAgICAg IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVz X2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIw MjEgICAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8 ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZGVj MjAyMSAgICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEy IHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19q YW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVz X2phbl9mZWIyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2Fs ZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBz YWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAor IHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50 Cisgc2FsZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1l bnQKKyBzYWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0 bWVudAorKDkgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfamFuX2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgy MDIyLCAzLCAxKSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUs IHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFn ZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFi bGVvaWQsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisgICB0YWJsZW9p ZCAgICB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBz YWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIw MjEgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAg ICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIx IHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAg ICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8 IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAg IDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBN YW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0 IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8 IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFn ZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAy MDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2Vy MiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAy Mi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjEg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIu MDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmViMjAyMiB8IE1hbmFnZXIzICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAy LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4w NCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19mZWIyMDIyIHwgTWFuYWdlcjIgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAg fCBTYWxlcyBkZXBhcnRtZW50CisoMTEgcm93cykKKworLS1FUlJPUjogIHJlbGF0aW9uICJz YWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNf amFuX2ZlYjIwMjI7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9l cyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsK KyAgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FE RTsKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbjsgdXNlIGFuIGluZGV4 IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4IGFmdGVyIHNwbGl0CistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jh bmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19k YXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAg ICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIw MjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAor ICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAn MjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyks CisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVs bGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwg ICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdH YW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEw LCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAg ICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwg MDItMTEtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAg ICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAg ICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxs ZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAg IDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAg ICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0x OS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAg NTEwIHwgMDUtMDQtMjAyMgorKDExIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhl cyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdw YXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2No ZW1hbmFtZSAgICAgICB8ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAg ICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhlcnMgfCBzYWxlc19vdGhlcnNfc2FsZXNf ZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX290aGVyc19zYWxl c19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX290aGVycyBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworLS0gVXNlIGluZGV4c2Nh biBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VU IGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdo ZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAy LTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAg ICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8 ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAg ICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIg fCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDMgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAn MjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDExIHwg VHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwg MDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf b3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAg IDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBP TjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVz IFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdw YXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2No ZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAg ICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2ZlYjIwMjIgfCBzYWxlc19mZWIy MDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19m ZWIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNf ZmViMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19tYXIyMDIyJyBhbmQg c2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5h bWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAg ICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX21hcjIw MjIgfCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFU RSBJTkRFWCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEuc2FsZXNfbWFyMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxl c19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBP UkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFibGVu YW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSB8IHNhbGVzX2FwcjIwMjIgfCBzYWxlc19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAg ICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IE9O IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfYXByMjAyMiBVU0lORyBidHJlZSAoc2Fs ZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRh YmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9z cGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAg ICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRh Ymxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEgfCBzYWxlc19vdGhlcnMgfCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9p ZHgxIHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0 ZV9pZHgxIE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENB U0NBREU7CistLQorLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXR0aW5nIERFRkFVTFQg cGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGgg c2FsZXNfZGVjMjAyMSAobG93ZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRP ICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVy cyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19l cnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2RlYzIwMjEiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFM VUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMi4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUg YWRqYWNlbnQuCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAy MiAodXBwZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBG T1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAx KSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsK K0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3Ii CitMSU5FIDQ6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMjAyMDEpIFRPICgyMC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFS VElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4K Ky0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChpbnNpZGUg Ym91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmVi MjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVT IEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vy cm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxMTIyMCksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRv IHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitMSU5FIDM6 ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBU TyAoMjAyMS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgcmVx dWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19l cnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoZXhhY3RseSB0aGUgc2FtZSBi b3VuZHMpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmVi MjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVT IEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vy cm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRv IHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitMSU5FIDM6 ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBU TyAoMjAyMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgcmVx dWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBFUlJPUjog IG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBz cGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVj MjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIw MjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMjAyMDEpIFRPICgyMDIyMDMwMSkpOworRVJST1I6ICBvbmUgcGFydGl0aW9uIGluIHRo ZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERF RkFVTFQKK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwLi4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBu byBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVj MjAyMSBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAy MSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIw MTIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFV TFQpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJy b3IgYXJlIGVxdWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAy MSBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBG T1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAy MDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRp b24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBLRVkgQ09OU1RSQUlOVHMgb24gcGFydGl0aW9u ZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQg SU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoCitzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Bl b3BsZShzYWxlc3BlcnNvbl9pZCksCitzYWxlc19hbW91bnQgSU5UIENIRUNLIChzYWxlc19h bW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5h bWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNf ZmViX21hcl9hcHIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOworICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hl Y2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNh bGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lk X2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNf ZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVs aWQgPSAnc2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7 CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBj b25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3Vu dF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5D RVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJz b25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50 ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29u cmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFt ZTs7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAg fCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ft b3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVS RU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNw ZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJh aW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUg Y29ucmVsaWQgPSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29u bmFtZTs7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAg ICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVz X2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJF RkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2Fs ZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworLS0gRVJST1I6ICBuZXcgcm93 IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWlu dCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworRVJST1I6ICBuZXcgcm93IGZv ciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAi c2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorREVUQUlMOiAgRmFpbGluZyByb3cg Y29udGFpbnMgKDEsIDAsIDAzLTExLTIwMjIpLgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBk YXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAzLTExJyk7CitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitE RVRBSUw6ICBLZXkgKHNhbGVzcGVyc29uX2lkKT0oLTEpIGlzIG5vdCBwcmVzZW50IGluIHRh YmxlICJzYWxlc3Blb3BsZSIuCistLSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxLCAxMCwgJzIwMjItMDMtMTEnKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FT Q0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBz cGxpdCBwYXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBvZiBleGlzdGlu ZyBGT1JFSUdOIEtFWSByZWZlcmVuY2UgZnJvbSBhbm90aGVyIHRhYmxlCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3Bl cnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMgKHNhbGVzcGVyc29uX2lkIElOVCBSRUZF UkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJ VElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZB TFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgxOSwgJ0l2YW5v dicpLAorICAoMjAsICdTbWlybm9mZicpLAorICAoMzAsICdGb3JkJyk7CitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMKKyAgKDEsICAxMDAsICcyMDIyLTAzLTAxJyksCisgICgxLCAgMTEw LCAnMjAyMi0wMy0wMicpLAorICAoMTAsIDE1MCwgJzIwMjItMDMtMDEnKSwKKyAgKDEwLCA5 MCwgICcyMDIyLTAzLTAzJyksCisgICgxOSwgMjAwLCAnMjAyMi0wMy0wNCcpLAorICAoMjAs IDUwLCAgJzIwMjItMDMtMTInKSwKKyAgKDIwLCAxNzAsICcyMDIyLTAzLTAyJyksCisgICgz MCwgMzAsICAnMjAyMi0wMy0wNCcpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAg ICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAor LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Cisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisgc2FsZXNw ZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDEwIHwgTWF5Cisgc2FsZXNwZW9wbGUxMF80MCB8 ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAg ICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3BsZTEwXzQwIHwgICAgICAgICAgICAgMzAg fCBGb3JkCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJU SVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUx MF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVz cGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElP TiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRh Ymxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAg ICAgICAgICAxIHwgUG9pcm90Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDEw IHwgTWF5Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisg c2FsZXNwZW9wbGUyMF8zMCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Bl b3BsZTMwXzQwIHwgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCistLSBFUlJP UjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJzYWxlc19zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElO VE8gc2FsZXMgVkFMVUVTICg0MCwgNTAsICAnMjAyMi0wMy0wNCcpOworRVJST1I6ICBpbnNl cnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2Fs ZXNwZXJzb25faWQpPSg0MCkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzcGVvcGxl Ii4KKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAz LTA0Jyk7CitEUk9QIFRBQkxFIHNhbGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBhcnRpdGlv bmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUo c2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFU RSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVS TlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorICAgIFJB SVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBs ZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAg UkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3Bs ZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAg ICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUg UFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKK0NS RUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAg IEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisg ICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Bl b3BsZScpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1l bnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworTk9U SUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdo ZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUp IGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVN RU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworTk9USUNFOiAgdHJp Z2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRF UiwgbGV2ZWwgPSBST1cKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElP TiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIw IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9w bGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNh bGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CistLSAyIHRy aWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKK05PVElDRTogIHRyaWdn ZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIs IGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFj dGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0 cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZTMwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVv cGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJP VworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVS IEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8 ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAg ICAgIDEwIHwgTWF5Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDE5IHwgSXZh bm92Cisgc2FsZXNwZW9wbGUyMF8zMCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBz YWxlc3Blb3BsZTMwXzQwIHwgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2lu c2VydF9yb3dfdHJpZ2dlcigpOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRj aCBpZGVudGl0eSBjb2x1bW4KKy0tIElmIHNwbGl0IHBhcnRpdGlvbiBjb2x1bW4gaXMgaWRl bnRpdHkgY29sdW1uLCBjb2x1bW5zIG9mIG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVudGl0eSBj b2x1bW5zIHRvby4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25f aWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJz b25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMV8yIFBBUlRJVElPTiBPRiBzYWxl c3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0tIENyZWF0ZSBuZXcgcGFy dGl0aW9uIHdpdGggaWRlbnRpdHkgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl Ml81KHNhbGVzcGVyc29uX2lkIElOVCBOT1QgTlVMTCwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNh bGVzcGVvcGxlMl81IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDUpOworSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2 YW5vdicpOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNw ZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAg ICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAg ICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93 cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBw Z19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9w bGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAg ICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAg ICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93 cykKKworLS0gU3BsaXQgcGFydGl0aW9uIGhhcyBpZGVudGl0eSBjb2x1bW46CitTRUxFQ1Qg YXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBX SEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfNSc6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVu dGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisg c2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMl8zIEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDMp LAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlM180IEZPUiBWQUxVRVMgRlJPTSAoMykgVE8g KDQpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlNF81IEZPUiBWQUxVRVMgRlJPTSAoNCkg VE8gKDUpKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBW QUxVRVMgKCdNYXknKSwgKCdGb3JkJyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAq IEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOwor ICAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IHNhbGVzcGVvcGxlMV8yIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3Bs ZTJfMyB8ICAgICAgICAgICAgICAyIHwgSXZhbm92Cisgc2FsZXNwZW9wbGUzXzQgfCAgICAg ICAgICAgICAgMyB8IE1heQorIHNhbGVzcGVvcGxlNF81IHwgICAgICAgICAgICAgIDQgfCBG b3JkCisoNCByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVy YXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9 ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBh dHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQg ICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwg CisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRl ZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdz YWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBh dHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQg ICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwg CisoMiByb3dzKQorCistLSBOZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5LWNvbHVtbnM6 CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJf Myc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAg fCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAg ICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQor CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTNf NCc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAg fCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAg ICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQor CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTRf NSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAg fCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAg ICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQor CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQg cGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24g d2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEw XzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQy IElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUworICAoJ2R1bW15IHZhbHVlIDEnLCAxOSwg MTAwLCBub3coKSwgJ0l2YW5vdicpLAorICAoJ2R1bW15IHZhbHVlIDInLCAyMCwgMTAxLCBu b3coKSwgJ1NtaXJub2ZmJyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1Ag Q09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBk MjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9y ZCcpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZP UiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUz MF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNw ZXJzb25faWQ7CisgICAgIHRhYmxlb2lkICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIHNhbGVzcGVvcGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBv aXJvdAorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAgICAgICAgICAxMCB8IE1heQorIHNhbGVz cGVvcGxlMTBfMjAgfCAgICAgICAgICAgICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxlMjBf MzAgfCAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgc2FsZXNwZW9wbGUzMF80MCB8ICAg ICAgICAgICAgIDMwIHwgRm9yZAorKDUgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3Bs ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVy c29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNf cmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAg KDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywg ICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIw MjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAor ICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywg ICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAn MjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyks CisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1 bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDkn KSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHNhbGVzcGVy c29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAg ICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAg ICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEw LTIwMjIKKyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAg ICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0y MDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAg ICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAy MgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAg ICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAg ICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisg c2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAg MTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNh bGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAg ICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDE0 IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCBy b3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxl c19hcHJfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzAxXzEwIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyXzEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAn KSBUTyAoJzIwMjItMDQtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzIwXzMw IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkg dGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAgICAgdGFibGVvaWQgICAgICAgfCBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2phbjIwMjIg ICAgICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICB8ICAgICAgICAgICAgIDEw IHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxl c19qYW4yMDIyICAgICAgIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwg ICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAgICAgfCAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0y MDIyCisgc2FsZXNfZmViMjAyMiAgICAgICB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyICAg ICAgIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgorIHNhbGVzX21hcjIwMjIgICAgICAgfCAgICAgICAgICAgICAgNyB8 IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNf bWFyMjAyMiAgICAgICB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19tYXIyMDIyICAgICAgIHwgICAgICAg ICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAy MgorIHNhbGVzX290aGVycyAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAg ICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisgc2FsZXNfYXByMjAyMl8wMV8x MCB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2Fw cjIwMjJfMTBfMjAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAg ICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMl8yMF8zMCB8ICAgICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KygxNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEJZIExJU1Qg cGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkg TElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVz cGVyc29uX2lkIElOVCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVz X3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBE QVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xv JywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn TGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0Rl bGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKy0tIEVSUk9SOiAgbmV3IHBh cnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBz cGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0 IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywg J1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6 ICBuZXcgcGFydGl0aW9uICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhl ciAobm90IHNwbGl0KSBwYXJ0aXRpb24gInNhbGVzX25vcmQiCitMSU5FIDM6IC4uLiBGT1Ig VkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtp Jy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIg d291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJh bCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn TGlzYm9uJywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3Qi IHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRy YWwiCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdM aXNib24nLCAnTmV3IFlvcmsnLC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dl c3QiIGNhbm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9l cyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdM aXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgTlVMTCksCisgICBQQVJUSVRJT04gc2Fs ZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9r JyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193 ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRv ZXMgbm90IGhhdmUKK0xJTkUgMjogLi4uc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24n LCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgTlVMTCksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9S OiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBi ZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxl c19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn LCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jykp OworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSB0aGlz IHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0xJTkUgMjog Li4uc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAn TWVsYm91cm5lLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uIGNhbm5v dCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05l dyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwK KyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQp OworRVJST1I6ICBuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVG QVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMKK0xJTkUgNTogICAgUEFSVElUSU9OIHNh bGVzX290aGVyczIgREVGQVVMVCk7CisgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRB QkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3Ig QlkgTElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhh dmUgTlVMTCB2YWx1ZSwgd2hpY2ggc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcg cGFydGl0aW9ucyBkbyBub3QgaGF2ZSBhIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhh cy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwK KyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIo MjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9O IEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0 ZXJzYnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZ b3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAn VmxhZGl2b3N0b2snLCBOVUxMKTsKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90 IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxF IHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jlamlu ZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRy YWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9S OiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFy dGl0aW9uIGRvZXMKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFs dWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsIE5VTEwpKTsKK0VSUk9SOiAgbmV3IHBh cnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0aXRpb24g ZG9lcworLS0gRVJST1IgIERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUKK0FMVEVS IFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAo J0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVz X2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElUSU9OIHNhbGVz X290aGVyczIgREVGQVVMVCk7CitFUlJPUjogIERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBi ZSBvbmUKK0xJTkUgNjogICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7Cisg ICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0g VGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwK KyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIo MjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9O IEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVz cGVyc29uX25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29u X25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNh bGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5r aScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxs IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhp JywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xp c3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVz X2RhdGUpIFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwg JzIwMjItMDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAs ICcyMDIyLTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAw LCAnMjAyMi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1 MCwgJzIwMjItMDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAy NTAsICcyMDIyLTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAx MDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAg MTIwMCwgJzIwMjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAg IDExNTAsICcyMDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAg ICAxMjAwLCAnMjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAg ICAgIDgwMCwgJzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAg ICAgICA2NTAsICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAg ICAgICAgMzUwLCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAg ICAgICAgIDE1MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAg ICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3Qg Rk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAn VmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJl Z2NsYXNzLCAqIEZST00gc2FsZXNfbGlzdCBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJz b25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX25vcmQg ICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVy ZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAgICAg ICAgICAgIDcgfCBNYXkgICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAg IDEyMDAgfCAwMy0wNi0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgICA5IHwg TWF5ICAgICAgICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMt MTEtMjAyMgorIHNhbGVzX25vcmQgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAg ICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyBz YWxlc193ZXN0ICAgIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3 IFlvcmsgICAgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisgc2FsZXNfd2VzdCAg ICB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8IExpc2JvbiAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDMtMDctMjAyMgorIHNhbGVzX3dlc3QgICAgfCAgICAgICAg ICAgICAxMSB8IE11bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8ICAgICAgICAg IDY1MCB8IDAzLTA1LTIwMjIKKyBzYWxlc193ZXN0ICAgIHwgICAgICAgICAgICAgMTQgfCBQ bGF0byAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0w NS0yMDIyCisgc2FsZXNfZWFzdCAgICB8ICAgICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAg ICAgICB8IEJlamluZyAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorIHNh bGVzX2Vhc3QgICAgfCAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBWbGFk aXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyBzYWxlc19jZW50cmFs IHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgICAg fCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAg ICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8IEJlcmxpbiAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDMtMDEtMjAyMgorIHNhbGVzX2NlbnRyYWwgfCAgICAgICAgICAgICAxMiB8IFNt aXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEw LTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAg ICAgIHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMTQg cm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIHNw bGl0dGluZyBwYXJ0aXRpb24KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5h YmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUg c2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAg ICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUw IHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdI RVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAg ICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAg IDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlz dCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2 YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIw MjIKKygxIHJvdykKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVf c2Vxc2NhbiA9IE9OOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3QgZm9y OgorLS0gICAqIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBz cGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlv bnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0x MycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAg J1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKSwKKyAgKDcsICAnTGknLCAgICAgICAx NzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAy LTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFk ZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9p ZCwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgdGFibGVvaWQgICAgICAgIHwgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX290aGVycyAgICAg ICAgICB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAw MCB8IDAxLTMxLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAg MyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2Fs ZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8 ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAy LTIzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgOSB8IE11 bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfb3Ro ZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAg ICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAg ICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisgc2FsZXNfbWFyMjAyMl8x ZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAg MTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX2phbjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAg IDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBz YWxlc19mZWIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAg ICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIyCisgc2FsZXNfZmViMjAyMl8xZGVjYWRl IHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwg MDItMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19h cHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAg ICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBub24tREVGQVVMVCBw YXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0t ICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29t bWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEn KSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdG b3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUw LCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0w NycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAg J0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAx ODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAz LTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDEx LCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjIt MDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIERFRkFVTFQpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVz X3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICB0YWJs ZW9pZCAgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgc2FsZXNfbWFyMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAg ICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX2phbjIwMjJf MWRlY2FkZSB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19mZWIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIyCisg c2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMWRlY2Fk ZSB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNf b3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwg ICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAg ICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMw LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfb3RoZXJz ICAgICAgICAgIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAg ICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAg ICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIK KyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAg ICAgIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDMtMTktMjAyMgorKDEzIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7Cist LQorLS0gVGVzdCBmb3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQg cGFydGl0aW9uICsgcGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMu CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwg ICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAg MjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0w NC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2 LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAg ICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAg KDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcs ICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIw MjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJs ZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgICAx IHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxl c19qYW4yMDIyIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMyB8 IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNf YXByMjAyMiB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAg MjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2Fw cjIwMjIgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgIDExIHwgVHJ1 bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19mZWIy MDIyIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAw IHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgNiB8IFBvaXJv dCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgc2FsZXNfZmViMjAy MiB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8 IDAyLTIzLTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAg ICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAg fCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw My0xMS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAg ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgIHwg ICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUt MDQtMjAyMgorKDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0g VHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiBhbm90aGVyIHRhYmxlLgorLS0KK0NSRUFURSBU QUJMRSB0MShpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVCAodCk7CitDUkVBVEUg VEFCTEUgdDFwYSBQQVJUSVRJT04gT0YgdDEgRk9SIFZBTFVFUyBJTiAoJ0EnKTsKK0NSRUFU RSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKKy0t IEVSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlv biAidDIiCitBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRPCisgICAo UEFSVElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyksCisgICAgUEFS VElUSU9OIHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOworRVJST1I6ICBy ZWxhdGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0hJ TlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyBjYW4gb25seSBzcGxpdCBw YXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDI7CitE Uk9QIFRBQkxFIHQxOworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgdGVtcG9y YXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9p ZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBn X2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5E IGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAgIHwgICAgICAg IHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMiB8IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpIHwgdAorKDEgcm93KQorCitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMikpOworLS0gUGFydGl0aW9ucyBzaG91bGQgYmUgdGVtcG9yYXJ5 LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBX SEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFz cworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBj Lm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRh bG9nLnRleHQ7CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxw ZXJzaXN0ZW5jZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLQorIHRwXzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwg dAorIHRwXzFfMiB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwgdAorKDIgcm93cykK KworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb25zIGluaGVyaXQg cGFyZW50J3MgdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZ IFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9O IEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFC TEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOwor QUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElP TiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBf MV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1NFTEVDVCB0YWJsZW5hbWUsIHRh Ymxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0 cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3Nj aGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8 ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0 ICAgICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8xICAgIHwgcmVncmVzc190Ymxz cGFjZQorIHRwXzFfMiAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJvd3MpCisKK1NFTEVD VCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAg V0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVt YW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1l LCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVuYW1lIHwgIGluZGV4bmFtZSAgfCAg ICB0YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyB0ICAgICAgICAgfCB0X3BrZXkgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UK KyB0cF8wXzEgICAgfCB0cF8wXzFfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8xXzIg ICAgfCB0cF8xXzJfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJvd3MpCisKK0RST1Ag VEFCTEUgdDsKKy0tIENoZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRh YmxlIGFjY2VzcyBtZXRob2QKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxp dF9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFU RSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRp b25fc3BsaXRfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lO IHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdj bGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6cmVnY2xhc3MpCitPUkRFUiBC WSBjLnJlbG5hbWU7CisgcmVsbmFtZSB8ICAgICAgICBhbW5hbWUgICAgICAgIAorLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgIHwgcGFydGl0aW9uX3NwbGl0 X2hlYXAKKyB0cF8wXzEgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0cF8xXzIgIHwgcGFy dGl0aW9uX3NwbGl0X2hlYXAKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgQUND RVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKKy0tIFRlc3QgcGVybWlzc2lvbiBj aGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhl CistLSB0aGUgcGFydGl0aW9uIHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFURSBS T0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQg QUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDIpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MikpOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHQKK1JFU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIg SU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwK KyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRVJS T1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBfMgorUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworQUxURVIgVEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8y IElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSks CisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JF U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYm9iOworLS0gU3BsaXQgcGFydGl0aW9uIG9mIGEgdGVtcG9yYXJ5IHRhYmxl IHdoZW4gb25lIG9mIHRoZSBwYXJ0aXRpb25zIGFmdGVyCistLSBzcGxpdCBoYXMgdGhlIHNh bWUgbmFtZSBhcyB0aGUgcGFydGl0aW9uIGJlaW5nIHNwbGl0CitDUkVBVEUgVEVNUCBUQUJM RSB0IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBURU1QIFRBQkxF IHRwXzAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRF UiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wIElOVE8KKyAgKFBBUlRJVElPTiB0cF8w IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzEgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMikpOworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgZGVmYXVs dHMgYW5kIGNvbnN0cmFpbnRzIG9mIG5ldyBwYXJ0aXRpb25zCitDUkVBVEUgVEFCTEUgdF9i aWdpbnQgKAorICBiIGJpZ2ludCwKKyAgaSBpbnQgREVGQVVMVCAoMysxMCksCisgIGogaW50 IERFRkFVTFQgMTAxLAorICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiKzEwKSBTVE9S RUQKKykKK1BBUlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdF9iaWdpbnRf ZGVmYXVsdCBQQVJUSVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsKKy0tIFNob3cgZGVmYXVs dHMvY29uc3RyYWludHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBh cnRpdGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAg ICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAg ICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyAr IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAg ICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAx MDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAg ICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8 IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYikKK1BhcnRpdGlvbnM6IHRf YmlnaW50X2RlZmF1bHQgREVGQVVMVAorCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEudF9iaWdpbnRfZGVmYXVsdCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwg U3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisg YiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAK KyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8 IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAg IHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJh dGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAg ICAgfCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgREVGQVVMVAorTm8gcGFydGl0aW9uIGNv bnN0cmFpbnQKKworQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFSVElUSU9OIHRfYmln aW50X2RlZmF1bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50XzAxXzEwIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IERF RkFVTFQpOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBTUExJVCBQQVJU SVRJT04KK1xkKyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF9kZWZh dWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAg ICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFy Z2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiAr IDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9m OiB0X2JpZ2ludCBERUZBVUxUCitQYXJ0aXRpb24gY29uc3RyYWludDogKE5PVCAoKGIgSVMg Tk9UIE5VTEwpIEFORCAoKGIgPj0gJzAnOjpiaWdpbnQpIEFORCAoYiA8ICcxMCc6OmJpZ2lu dCkpKSkKKworXGQrIHRfYmlnaW50XzAxXzEwCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnRfMDFf MTAiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAg ICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAg ICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsg MTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6 IHRfYmlnaW50IEZPUiBWQUxVRVMgRlJPTSAoJzAnKSBUTyAoJzEwJykKK1BhcnRpdGlvbiBj b25zdHJhaW50OiAoKGIgSVMgTk9UIE5VTEwpIEFORCAoYiA+PSAnMCc6OmJpZ2ludCkgQU5E IChiIDwgJzEwJzo6YmlnaW50KSkKKworRFJPUCBUQUJMRSB0X2JpZ2ludDsKKy0tIFRlc3Q6 IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBvd25lciBv ZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRP IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIoaSBp bnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBBVFRB Q0ggUEFSVElUSU9OIHRwXzBfMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKy0tIE93 bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8yCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBT Y2hlbWEgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSB8IHRwXzBfMiB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKKygx IHJvdykKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAg KFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJU SVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIE93bmVyIHNo b3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAg U2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEgfCB0cF8wXzEgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCiso MSByb3cpCisKK1xkdCB0cF8xXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAg fCAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgdHBfMV8yIHwgdGFibGUgfCByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZQorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CitSRVZPS0Ug QUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2U7CistLSBUZXN0OiBpbmRleCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3Jl YXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlvbgorQ1JFQVRFIFJP TEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2U7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRwXzEwXzIwIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgyMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTEpLCAoMTYpOworQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpIFJFVFVSTlMgaW50ZWdl ciBBUyAkJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd5b3UgYXJlIHJ1bm5pbmcgbWUgYXMg JScsIENVUlJFTlRfVVNFUjsKKyAgUkVUVVJOICQxOworRU5ECiskJCBMQU5HVUFHRSBQTFBH U1FMIElNTVVUQUJMRTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVuX21lKGkpKTsKK05PVElDRTogIHlvdSBh cmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorTk9USUNF OiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNl CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CistLSBPd25lciBzaG91bGQgYmUgJ3Jl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFS VElUSU9OIHRwXzEwXzIwIElOVE8KKyAgKFBBUlRJVElPTiB0cF8xMF8xNSBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMTUpLAorICAgUEFSVElUSU9OIHRwXzE1XzIwIEZPUiBWQUxVRVMg RlJPTSAoMTUpIFRPICgyMCkpOworTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcg bWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK0RST1AgVEFCTEUgdDsKK0RS T1AgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNl OworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworLS0gVGVzdCBm b3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJU SVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0 cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRF UiAxKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUg Y2Fubm90IGJlIHNwbGl0CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5U TworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1B SU5ERVIgMCksCisgICBQQVJUSVRJT04gdHAxXzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVT IDQsIFJFTUFJTkRFUiAyKSk7CitFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlv bmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdAorLS0gRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0 aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitBTFRFUiBU QUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZP UiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworRVJST1I6ICBsaXN0 IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRp b25zCitEUk9QIFRBQkxFIHQ7CistLSBBZGRpdGlvbmFsIHRlc3RzIGZvciBlcnJvciBtZXNz YWdlcworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNh bGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2Rh dGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CistLSBFUlJPUjogIHVw cGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRv IHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA2LTAxJykpOworRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Fw cjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24K K0xJTkUgNDogLi4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19yYW5n ZTsKKy0tIFRlc3QgZm9yIHNwbGl0IHBhcnRpdGlvbiBwcm9wZXJ0aWVzOgorLS0gKiBTVEFU SVNUSUNTIGlzIGVtcHR5CistLSAqIENPTU1FTlQgaXMgZW1wdHkKKy0tICogREVGQVVMVFMg YXJlIHRoZSBzYW1lIGFzIERFRkFVTFRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBT VE9SQUdFIGlzIHRoZSBzYW1lIGFzIFNUT1JBR0UgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCist LSAqIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgYXJlIHRoZSBzYW1lIGFzIEdFTkVSQVRF RCBhbmQgQ09OU1RSQUlOVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFRSSUdHRVJT IGFyZSB0aGUgc2FtZSBhcyBUUklHR0VSUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKK0NSRUFU RSBUQUJMRSB0CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQg Q09NUFJFU1NJT04gcGdseiBERUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQg ZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElU SU9OIEJZIFJBTkdFIChhYnMoaSkpOworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5p JzsKK0NSRUFURSBUQUJMRSB0cF94CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JB R0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwX3gnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBH RU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJM RSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsK K0NPTU1FTlQgT04gQ09MVU1OIHRwX3guaSBJUyAndHBfeC5pJzsKK0NSRUFURSBTVEFUSVNU SUNTIHRfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdDsKK0NSRUFURSBTVEFU SVNUSUNTIHRwX3hfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfeDsKK0FM VEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNLIChiID4gMCk7CitB TFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBO T1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazIg Q0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5U IHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwg YikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfeChpLCB0LCBiKSBW QUxVRVMoMSwgREVGQVVMVCwgMik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmln Z2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUwor JEJPRFkkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rp b24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dI RU4sIFRHX0xFVkVMOworICBSRVRVUk4gbmV3OworRU5EOworJEJPRFkkOworQ1JFQVRFIFRS SUdHRVIgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdCBG T1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndCcp OworQ1JFQVRFIFRSSUdHRVIgdHBfeF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9S RSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJp Z2dlcl9mdW5jdGlvbigndHBfeCcpOworXGQrIHRwX3gKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hl bWEudHBfeCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAg ICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3Jh Z2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAg ICAgICAgICAgICAgfCB0cF94LmkKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAnZGVmYXVsdF90cF94Jzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IG1haW4gICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBiaWdpbnQgIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAg fCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFz ICgnMDItMDItMjAyMic6OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorUGFydGl0 aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAw KSBBTkQgKGFicyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVj ayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBF TkZPUkNFRAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorU3Rh dGlzdGljcyBvYmplY3RzOgorICAgICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRwX3hfc3Rh dCIgKGRlcGVuZGVuY2llcykgT04gaSwgYiBGUk9NIHRwX3gKK05vdC1udWxsIGNvbnN0cmFp bnRzOgorICAgICJ0cF94X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQor ICAgICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdn ZXJzOgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9O IHRwX3ggRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbign dCcpLCBPTiBUQUJMRSB0CisgICAgdHBfeF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJF Rk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmln Z2VyX2Z1bmN0aW9uKCd0cF94JykKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04g dHBfeCBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpLAorICAgUEFSVElUSU9OIHRwX3ggRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOwor XGQrIHRwX3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRwX3giCisgQ29sdW1uIHwgIFR5 cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZh dWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlICB8IFN0YXRzIHRhcmdldCB8IERl c2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgdCAg ICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdCc6OnRl eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAg ICAgICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4g ICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDEtMDEtMjAyMic6OmRhdGUpIHN0 b3JlZCB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhp KSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMSkgQU5EIChhYnMoaSkgPCAyKSkKK0No ZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4gMCkKKyAgICAi dF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAidF9iX2NoZWNr MiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAg ICJ0X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorICAgICJ0X2Jfbm4i IE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdnZXJzOgorICAgIHRf YmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVB Q0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBPTiBUQUJM RSB0CisKK0lOU0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDMpOwor Tk9USUNFOiAgdHJpZ2dlcih0KSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEJF Rk9SRSwgbGV2ZWwgPSBST1cKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0 IE9SREVSIEJZIGI7CisgdGFibGVvaWQgfCBpIHwgICAgICB0ICAgICAgIHwgYiB8ICAgICBk ICAgICAgCistLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0t CisgdHBfMF8xICAgfCAwIHwgZGVmYXVsdF90cF94IHwgMSB8IDAxLTAxLTIwMjIKKyB0cF94 ICAgICB8IDEgfCBkZWZhdWx0X3RwX3ggfCAyIHwgMDEtMDEtMjAyMgorIHRwX3ggICAgIHwg MSB8IGRlZmF1bHRfdCAgICB8IDMgfCAwMS0wMS0yMDIyCisoMyByb3dzKQorCitEUk9QIFRB QkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKy0tIFRlc3QgZm9y IHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRB QkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lk KSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFC TEUgdCBBREQgQ09OU1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOwor SU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CistLSBTaG91bGQgYmUgMSBiZWNhdXNl IHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMK Ky0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQg RlJPTSB0IFdIRVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93 KQorCistLSAidGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1uKSB3aXRo ICJ0YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNvbXB1dGF0aW9uIGhlcmUu CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElU SU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0 cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gU2hvdWxkIGJlIDAgYmVj YXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVu dCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VM RUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1Qg dGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAK KygxIHJvdykKKworRFJPUCBUQUJMRSB0OworUkVTRVQgc2VhcmNoX3BhdGg7CistLQorRFJP UCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXgg NjQ2NGEyMzhhYy4uYTk4YWVmN2NhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCkBAIC0xMjMsNyArMTIzLDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwg Y29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMg VGhlIHN0YXRzIHRlc3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBz dGF0cyBhY2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRl c3Q6IHBhcnRpdGlvbl9tZXJnZSBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVs b3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRp b25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHBy ZWRpY2F0ZSBudW1hCit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBh cnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRl eGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBs YWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVu dF90cmlnZ2VyIGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJl bnRseSB3aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjY4NTNhMjU1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0wLDAgKzEsMTEzNSBAQAorLS0KKy0t IFBBUlRJVElPTl9TUExJVAorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQg UEFSVElUSU9OIC4uLiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKwor LS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVy cm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQs IHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIw MjIiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19q YW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisK Ky0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBh cnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1Ig VkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5 IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAy LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLUVSUk9SOiAgbGlzdCBvZiBz cGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworCistLSBFUlJPUjogIGxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxv d2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJykpOworCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMg YWxyZWFkeSB1c2VkCistLSAoV2UgY2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2Ft ZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0 aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIi IGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCist LSBFUlJPUjogICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVk IHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFu MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCist LSBFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMg bm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA2LTAxJykpOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CisKKy0tIFRlc3RzIGZvciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0 aGVtIHNob3VsZCBiZSBleGVjdXRlZCB3aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBERVRBQ0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKwor LS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlz IG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gQ2hlY2sgdGhlIHNvdXJjZSBwYXJ0aXRp b24gbm90IGluIHRoZSBzZWFyY2ggcGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u X3NwbGl0X3NjaGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfcmFuZ2UKK1NQTElUIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VU IHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworXGQrIHNh bGVzX3JhbmdlCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVz X290aGVyczsKKworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUgdGhl biBzcGxpdCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0z MCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAg J0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAx NTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAz LTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDks ICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAg IDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjIt MDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAo MTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywg ICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2Ug T1JERVIgQlkgc2FsZXNwZXJzb25faWQ7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NB REU7CisKKy0tCistLSBBZGQgc3BsaXQgcGFydGl0aW9uLCB0aGVuIGFkZCByb3dzIGludG8g cGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CisKKy0tIFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hlbWEgcXVh bGlmaWNhdGlvbiBvZiBuZXcgcGFydGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CitcZCsgc2FsZXNfcmFuZ2UKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisg ICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwK KyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAg JzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp LAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAn U21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJl Z2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgc2FsZXNwZXJzb25faWQ7CisK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3QgZm9yOgor LS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1 bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVh ciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBW QVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6 dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAn KSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAg c2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50 JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElUSU9OIE9GIHNh bGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19k YXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxV RVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUp OworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAy MSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIz JywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5h Z2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgn TWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAor ICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5OworCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElU IFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf amFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwg MSkgVE8gKDIwMjIsIDMsIDEpKTsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3Bl cnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMK KyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIs IDEwKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGUg T1JERVIgQlkgdGFibGVvaWQsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7 CisKKy0tRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuX2ZlYjIwMjIiIGRvZXMgbm90IGV4 aXN0CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworCitEUk9QIFRBQkxFIHNh bGVzX2RhdGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0 aW9uOyB1c2UgYW4gaW5kZXggb24gcGFydGl0aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0ZXIg c3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVB VEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJ TkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0x MycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAg J1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAx NzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAy LTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00g c2FsZXNfb3RoZXJzOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFt ZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBVc2UgaW5kZXhzY2Fu IGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMiB3 aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19t YXIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVD VCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7 CisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBP TjsKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxl c19mZWIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBP UkRFUiBCWSBpbmRleG5hbWU7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFi bGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9z cGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKK1NFTEVDVCAqIEZST00gcGdfaW5k ZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUg PSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworU0VMRUNU ICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFu ZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4 bmFtZTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gVGVz dDogc29tZSBjYXNlcyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJl bnQgYm91bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25f aWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChs b3dlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBW QUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIwMjAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRP ICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCist LSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAodXBwZXIgYm91 bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAy MiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZS T00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9y IEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisgICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAz MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNf ZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGluc2lkZSBib3VuZCkKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3Ii CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAy MTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBp bnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoZXhhY3RseSB0aGUgc2FtZSBib3VuZHMp CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIg aXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vy cm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00g KDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gRVJST1I6ICBv bmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3Bs aXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIy MDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjIwMjAxKSBUTyAoMjAyMjAzMDEpKTsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxl c19ub2Vycm9yIGFyZSBiZXR3ZWVuIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIwMjIK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIx MTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK KworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBlcXVhbCB0byBs b3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIw MjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgy MDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNL IGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0K K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBL RVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKAorc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNw ZXJzb25faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4gMSks CitzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CisK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZB VUxUOworCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29u a2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFy X2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7CisKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gV2Ugc2hvdWxkIHNlZSB0aGUgc2FtZSBD T05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgcGFydGl0aW9uCitTRUxF Q1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihv aWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlk ID0gJ3NhbGVzX21hcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7Owor U0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXByMjAyMic6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3Ig cmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNh bGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMSwgMCwgJzIwMjItMDMtMTEnKTsKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVw ZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0xMScpOworLS0gb2sKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMTAsICcyMDIyLTAzLTExJyk7CisK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9w bGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRp b25lZCB0YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5nIEZPUkVJR04gS0VZIHJlZmVyZW5jZSBm cm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNw ZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBz YWxlcyAoc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNw ZXJzb25faWQpLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworCitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBf NDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0 MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgICdQb2lyb3Qn KSwKKyAgKDEwLCAnTWF5JyksCisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAsICdTbWlybm9m ZicpLAorICAoMzAsICdGb3JkJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUworICAo MSwgIDEwMCwgJzIwMjItMDMtMDEnKSwKKyAgKDEsICAxMTAsICcyMDIyLTAzLTAyJyksCisg ICgxMCwgMTUwLCAnMjAyMi0wMy0wMScpLAorICAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKSwK KyAgKDE5LCAyMDAsICcyMDIyLTAzLTA0JyksCisgICgyMCwgNTAsICAnMjAyMi0wMy0xMicp LAorICAoMjAsIDE3MCwgJzIwMjItMDMtMDInKSwKKyAgKDMwLCAzMCwgICcyMDIyLTAzLTA0 Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBP UkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisg ICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgz MCkgVE8gKDQwKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKKy0tIEVSUk9S OiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CistLSBvaworSU5TRVJU IElOVE8gc2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOworCitEUk9QIFRB QkxFIHNhbGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisK Ky0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0 aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJ TlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9SIFJF UExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmln Z2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9U SUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0g JScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4g TlVMTDsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0 ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04g c2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NF RFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKK0NSRUFU RSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFG VEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAg RVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3Bs ZScpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVu dCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAx IHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlMTBfNDAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Bl b3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAg UEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMw KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzAp IFRPICg0MCkpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0 YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5v ZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQs IHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CitE Uk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQorLS0gVGVz dDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3BsaXQg cGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBh cnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVO VElUWSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZTFfMiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5IGNvbHVtbjoK K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3BlcnNvbl9pZCBJTlQgTk9UIE5V TEwsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBGT1IgVkFMVUVTIEZST00g KDIpIFRPICg1KTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25h bWUpIFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5vdicpOworCitTRUxFQ1QgYXR0bmFtZSwg YXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRu dW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0 ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAn c2FsZXNwZW9wbGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKy0tIFNw bGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHkgY29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0 dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVt ID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzUnOjpyZWdjbGFzczo6b2lkIE9S REVSIEJZIGF0dG51bTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElU SU9OIHNhbGVzcGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfMyBG T1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTNf NCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CisKK0lOU0VSVCBJTlRPIHNhbGVz cGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdNYXknKSwgKCdGb3JkJyk7CisK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBC WSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVu dGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAg QU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBh dHRudW07CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9N IHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Bl b3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworLS0gTmV3IHBhcnRp dGlvbnMgaGF2ZSBpZGVudGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50 aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBB TkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZ IGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZS T00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVz cGVvcGxlM180Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CitTRUxFQ1QgYXR0 bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVS RSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTRfNSc6OnJlZ2NsYXNz OjpvaWQgT1JERVIgQlkgYXR0bnVtOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NB REU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBkZWxldGVkIGNvbHVt bnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFf MTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEw KTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNw ZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZB TFVFUworICAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpLAor ICAoJ2R1bW15IHZhbHVlIDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJub2ZmJyk7CisKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUg QVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1Bv aXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo MjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgy MCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMg RlJPTSAoMzApIFRPICg0MCkpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworCitE Uk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBz dWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNv bl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRBQkxF IHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwg UEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNI IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3Jh bmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19k YXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyks CisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVl dicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwg ICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdN dWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUw LCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0w NicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywg J0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgc2FsZXNwZXJzb25faWQ7CisKK0FMVEVSIFRBQkxF IHNhbGVzX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fwcl9hbGwgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJf MTBfMjAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3Bl cnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEJZIExJU1Qg cGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBC WSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2Fs ZXNwZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2Fs ZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRl IERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFC TEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn T3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jlcmxpbics ICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKKy0tIEVSUk9SOiAg bmV3IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIg KG5vdCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNpbmtpJyksCisgICBQQVJUSVRJT04gc2FsZXNf Y2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOwor CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAg d2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWpp bmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2 JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBo YXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1Ig VkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJU SVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jlcmxpbics ICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNh bm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3Qg aGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxs IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24n LCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rv aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNh dycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uIGNh bm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlz dHMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2sn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcn LCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFV TFQpOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiB0d28gc3Bl Y2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFy dGl0aW9ucyBkbyBub3QgaGF2ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24g aGFzLgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBz cGxpdCBwYXJ0aXRpb24gaGFzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2Fs ZXNwZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2Fs ZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRl IERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFC TEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn SGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jlcmxpbics ICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CisKKy0tIEVSUk9SOiAg bmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0 aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3Qg Rk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAg UEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJs aW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2 ZSB2YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcn LCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFs IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworCistLSBFUlJP UiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZQorQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZB VUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogQlkgTElT VCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVz X2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNh bGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFt ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitD UkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBV U0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3Qu IFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdO ZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2 JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNh bGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUp IFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjIt MDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIy LTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAy Mi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIw MjItMDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcy MDIyLTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAn MjAyMi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwg JzIwMjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAs ICcyMDIyLTAzLTA5JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAw LCAnMjAyMi0wMy0xMScpLAorICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgw MCwgJzIwMjItMDMtMDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2 NTAsICcyMDIyLTAzLTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAg MzUwLCAnMjAyMi0wMy0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAg IDE1MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAg ICA5NTAsICcyMDIyLTAzLTA1Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1Ig VkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFk aXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAo J1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29u X2lkOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgc3Bs aXR0aW5nIHBhcnRpdGlvbgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdIRVJF IHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hF UkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBX SEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CisKK1NFVCBlbmFibGVfaW5kZXhz Y2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKKworRFJPUCBUQUJMRSBzYWxl c19saXN0OworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0 aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAg KiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFu ZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAw MCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0w OScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAg J0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwK KyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ph bjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNC0xMCcpKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNw bGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJl dHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQ TElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7 CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAg IDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjIt MDItMDknKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAo NCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAy Mi0wMi0wNycpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisg ICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwK KyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21h cjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVz cGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBm b3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9uICsg cGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAo MSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAy Mi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisg ICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90 JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcy MDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwK KyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxk ZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAg JzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScp LAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CisKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lk LCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0t IFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgYW5vdGhlciB0YWJsZS4KKy0tCitDUkVBVEUg VEFCTEUgdDEoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QgKHQpOworQ1JFQVRF IFRBQkxFIHQxcGEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgSU4gKCdBJyk7CitDUkVB VEUgVEFCTEUgdDIgKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBSQU5HRSAodCk7CisK Ky0tIEVSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxh dGlvbiAidDIiCitBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRPCisg ICAoUEFSVElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyksCisgICAg UEFSVElUSU9OIHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOworCitEUk9Q IFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0 aXRpb24gb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkg aW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCitTRUxFQ1Qg Yy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFs b2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lk ID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVS IEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdE RUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsK KworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJ VElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04g dHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworLS0gUGFydGl0aW9ucyBz aG91bGQgYmUgdGVtcG9yYXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVs cGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cu cGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFy ZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHBy KGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0RST1AgVEFCTEUgdDsKKworLS0gQ2hl Y2sgdGhlIG5ldyBwYXJ0aXRpb25zIGluaGVyaXQgcGFyZW50J3MgdGFibGVzcGFjZQorQ1JF QVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJU SVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpKTsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMK KyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVu YW1lLCB0YWJsZXNwYWNlOworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNw YWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBf MScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1h JworICBPUkRFUiBCWSB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKK0RST1Ag VEFCTEUgdDsKKworLS0gQ2hlY2sgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdHMgcGFyZW50J3Mg dGFibGUgYWNjZXNzIG1ldGhvZAorQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3Nw bGl0X2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JF QVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRp dGlvbl9zcGxpdF9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpP SU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJl Z2NsYXNzLCAndHBfMF8xJzo6cmVnY2xhc3MsICd0cF8xXzInOjpyZWdjbGFzcykKK09SREVS IEJZIGMucmVsbmFtZTsKK0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0 aXRpb25fc3BsaXRfaGVhcDsKKworLS0gVGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4gIFRoZSB1 c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCB0aGUKKy0tIHRoZSBwYXJ0 aXRpb24gdG8gc3BsaXQgdG8gZG8gdGhlIHNwbGl0LgorQ1JFQVRFIFJPTEUgcmVncmVzc19w YXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEg VE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9i OworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgyKTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIg SU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwK KyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJU SVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUg dHBfMF8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIg VEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8w XzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TjsKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworUkVWT0tF IEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CisKKy0tIFNw bGl0IHBhcnRpdGlvbiBvZiBhIHRlbXBvcmFyeSB0YWJsZSB3aGVuIG9uZSBvZiB0aGUgcGFy dGl0aW9ucyBhZnRlcgorLS0gc3BsaXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHBhcnRp dGlvbiBiZWluZyBzcGxpdAorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoYSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoYSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJU SVRJT04gdHBfMCBJTlRPCisgIChQQVJUSVRJT04gdHBfMCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp KTsKK0RST1AgVEFCTEUgdDsKKworLS0gQ2hlY2sgZGVmYXVsdHMgYW5kIGNvbnN0cmFpbnRz IG9mIG5ldyBwYXJ0aXRpb25zCitDUkVBVEUgVEFCTEUgdF9iaWdpbnQgKAorICBiIGJpZ2lu dCwKKyAgaSBpbnQgREVGQVVMVCAoMysxMCksCisgIGogaW50IERFRkFVTFQgMTAxLAorICBr IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiKzEwKSBTVE9SRUQKKykKK1BBUlRJVElPTiBC WSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdF9iaWdpbnRfZGVmYXVsdCBQQVJUSVRJT04g T0YgdF9iaWdpbnQgREVGQVVMVDsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3RyYWludHMgYmVm b3JlIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50CitcZCsgdF9iaWdpbnRfZGVmYXVs dAorQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1 bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50XzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IERFRkFVTFQpOwor LS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBTUExJVCBQQVJUSVRJT04KK1xk KyB0X2JpZ2ludF9kZWZhdWx0CitcZCsgdF9iaWdpbnRfMDFfMTAKK0RST1AgVEFCTEUgdF9i aWdpbnQ7CisKKworLS0gVGVzdDogb3duZXIgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJl IHRoZSBzYW1lIGFzIG93bmVyIG9mIHNwbGl0IHBhcnRpdGlvbgorQ1JFQVRFIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CisK K0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsK K0NSRUFURSBUQUJMRSB0cF8wXzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOworCitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8yIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDIpOworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMgorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJ VElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMikpOworCistLSBPd25lciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlJzoKK1xkdCB0cF8wXzEKK1xkdCB0cF8xXzIKKworRFJPUCBUQUJMRSB0OworUkVW T0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlOworCisKKy0tIFRlc3Q6IGluZGV4IG9mIG5ldyBwYXJ0aXRpb25zIHNob3Vs ZCBiZSBjcmVhdGVkIHdpdGggc2FtZSBvd25lciBhcyBzcGxpdAorLS0gcGFydGl0aW9uCitD UkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xMF8yMCBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDExKSwg KDE2KTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHJ1bl9tZShpbnRlZ2VyKSBSRVRV Uk5TIGludGVnZXIgQVMgJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAneW91IGFyZSBydW5u aW5nIG1lIGFzICUnLCBDVVJSRU5UX1VTRVI7CisgIFJFVFVSTiAkMTsKK0VORAorJCQgTEFO R1VBR0UgUExQR1NRTCBJTU1VVEFCTEU7CisKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVuX21lKGkpKTsKK1JF U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJ VElPTiB0cF8xMF8yMCBJTlRPCisgIChQQVJUSVRJT04gdHBfMTBfMTUgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDE1KSwKKyAgIFBBUlRJVElPTiB0cF8xNV8yMCBGT1IgVkFMVUVTIEZS T00gKDE1KSBUTyAoMjApKTsKKworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiBydW5f bWUoaW50ZWdlcik7CisKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKworLS0gVGVzdCBmb3IgaGFzaCBwYXJ0 aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgSEFT SChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRI IChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKKworLS0g RVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUg c3BsaXQKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJU SVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSwK KyAgIFBBUlRJVElPTiB0cDFfMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlO REVSIDIpKTsKKworLS0gRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBj b250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSB0IFNQTElUIFBB UlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAo TU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworCitEUk9QIFRBQkxFIHQ7CisKKworLS0gQWRk aXRpb25hbCB0ZXN0cyBmb3IgZXJyb3IgbWVzc2FnZXMKK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzAp LCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAy Mi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wNS0wMScpOworCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBh cnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworCisKKy0tIFRlc3QgZm9yIHNwbGl0IHBhcnRpdGlvbiBwcm9wZXJ0 aWVzOgorLS0gKiBTVEFUSVNUSUNTIGlzIGVtcHR5CistLSAqIENPTU1FTlQgaXMgZW1wdHkK Ky0tICogREVGQVVMVFMgYXJlIHRoZSBzYW1lIGFzIERFRkFVTFRTIGZvciBwYXJ0aXRpb25l ZCB0YWJsZQorLS0gKiBTVE9SQUdFIGlzIHRoZSBzYW1lIGFzIFNUT1JBR0UgZm9yIHBhcnRp dGlvbmVkIHRhYmxlCistLSAqIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgYXJlIHRoZSBz YW1lIGFzIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxl CistLSAqIFRSSUdHRVJTIGFyZSB0aGUgc2FtZSBhcyBUUklHR0VSUyBmb3IgcGFydGl0aW9u ZWQgdGFibGUKKworQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQg U1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcs CisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAx JykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENP TFVNTiB0LmkgSVMgJ3QxLmknOworCitDUkVBVEUgVEFCTEUgdHBfeAorKGkgaW50IE5PVCBO VUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF94JywKKyBi IGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDItMDInKSBT VE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwX3ggRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF94LmkgSVMgJ3RwX3gu aSc7CisKK0NSRUFURSBTVEFUSVNUSUNTIHRfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBi IGZyb20gdDsKK0NSRUFURSBTVEFUSVNUSUNTIHRwX3hfc3RhdCAoREVQRU5ERU5DSUVTKSBv biBpLCBiIGZyb20gdHBfeDsKKworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jf Y2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9i X2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQURE IENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVS IFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOwor CitJTlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lO U0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDIpOworCitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmln Z2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUworJEJPRFkkCitCRUdJTgorICBSQUlTRSBOT1RJ Q0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAl JywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICBSRVRVUk4gbmV3 OworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93 X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBS T0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF94X2Jl Zm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNI IFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF94Jyk7CisK K1xkKyB0cF94CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF94IElOVE8KKyAg KFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJU SVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitcZCsgdHBfeAorCitJ TlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZIGI7CitEUk9QIFRBQkxFIHQ7 CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKworCistLSBUZXN0IGZvciBy ZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJM RSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkg c3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxF IHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lO U0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBTaG91bGQgYmUgMSBiZWNhdXNl IHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMK Ky0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQg RlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2Vu ZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0g cmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBf MF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsK KworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93 IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBm b3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBB TkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisKK0RS T1AgVEFCTEUgdDsKKworCitSRVNFVCBzZWFyY2hfcGF0aDsKKworLS0KK0RST1AgU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZmYwNTBlOTNhNS4u Njk1NTY2OGFlZiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI3NzIsNiAr Mjc3Miw3IEBAIFNpbXBsZVN0YXRzCiBTaW1wbGVTdHJpbmdMaXN0CiBTaW1wbGVTdHJpbmdM aXN0Q2VsbAogU2luZ2xlQm91bmRTb3J0SXRlbQorU2luZ2xlUGFydGl0aW9uU3BlYwogU2l6 ZQogU2tpcFBhZ2VzCiBTa2lwU3VwcG9ydApAQCAtMjgzOCw2ICsyODM5LDcgQEAgU3BlY2lh bEpvaW5JbmZvCiBTcGluRGVsYXlTdGF0dXMKIFNwbGl0SW50ZXJ2YWwKIFNwbGl0TFIKK1Nw bGl0UGFydGl0aW9uQ29udGV4dAogU3BsaXRQYWdlTGF5b3V0CiBTcGxpdFBvaW50CiBTcGxp dFRleHRPdXRwdXREYXRhCi0tIAoyLjQwLjEud2luZG93cy4xCgo= --------------UOsFJoLj70kmjP47KcuQieM1--