Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n6GWD-0007Aa-5R for pgsql-hackers@arkaria.postgresql.org; Sat, 08 Jan 2022 18:32:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n6GWB-0005vV-Sj for pgsql-hackers@arkaria.postgresql.org; Sat, 08 Jan 2022 18:32:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n6GWB-0005vE-FU for pgsql-hackers@lists.postgresql.org; Sat, 08 Jan 2022 18:32:43 +0000 Received: from sfr-1.cri.mines-paristech.fr ([77.158.180.225] helo=smtp.cri.ensmp.fr) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n6GW8-0001wG-2V for pgsql-hackers@lists.postgresql.org; Sat, 08 Jan 2022 18:32:43 +0000 Received: from pseudo (185.141.6.84.rev.sfr.net [84.6.141.185]) by smtp.cri.ensmp.fr (Postfix) with ESMTPSA id E6EAAC021B; Sat, 8 Jan 2022 19:35:35 +0100 (CET) Date: Sat, 8 Jan 2022 19:32:36 +0100 (CET) From: Fabien COELHO X-X-Sender: fabien@pseudo Reply-To: Fabien COELHO To: Peter Eisentraut cc: "pgsql-hackers@lists.postgresql.org" Subject: Re: psql - add SHOW_ALL_RESULTS option In-Reply-To: Message-ID: References: <69C0B369-570C-4524-8EE4-BCCACECB6BEE@amazon.com> <20210412193301.GA11204@alvherre.pgsql> <3738387.1618451507@sss.pgh.pa.us> <451a2111-3757-c511-9413-8f8af531a167@enterprisedb.com> <18c78a01-4a34-9dd4-f78b-6860f1420c8e@enterprisedb.com> <6954328d-96f2-77f7-735f-7ce493a40949@enterprisedb.com> <2570e2ae-fa0f-aac9-f72f-bb59a9983a20@enterprisedb.com> <46259d13-5f90-1475-3c85-d7a597a2b862@enterprisedb.com> User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="2056645051-464787261-1641666756=:731324" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --2056645051-464787261-1641666756=:731324 Content-Type: text/plain; charset=US-ASCII; format=flowed Hello Peter, >> quite weird and confusing. Maybe this type of test should be done in >> the TAP framework instead. Attached v13 where the crash test is moved to tap. -- Fabien. --2056645051-464787261-1641666756=:731324 Content-Type: text/x-diff; name=psql-show-all-results-13.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=psql-show-all-results-13.patch ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVj dGVkL3BnX3N0YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9leHBlY3RlZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0DQpp bmRleCBlMGFiZTM0YmI2Li44ZjdmOTMxNzJhIDEwMDY0NA0KLS0tIGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvcGdfc3RhdF9zdGF0 ZW1lbnRzLm91dA0KKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv ZXhwZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dA0KQEAgLTUwLDggKzUw LDI4IEBAIEJFR0lOIFw7DQogU0VMRUNUIDIuMCBBUyAiZmxvYXQiIFw7DQog U0VMRUNUICd3b3JsZCcgQVMgInRleHQiIFw7DQogQ09NTUlUOw0KKyBmbG9h dCANCistLS0tLS0tDQorICAgMi4wDQorKDEgcm93KQ0KKw0KKyB0ZXh0ICAN CistLS0tLS0tDQorIHdvcmxkDQorKDEgcm93KQ0KKw0KIC0tIGNvbXBvdW5k IHdpdGggZW1wdHkgc3RhdGVtZW50cyBhbmQgc3B1cmlvdXMgbGVhZGluZyBz cGFjaW5nDQogXDtcOyAgIFNFTEVDVCAzICsgMyBcO1w7XDsgICBTRUxFQ1Qg JyAnIHx8ICcgIScgXDtcOyAgIFNFTEVDVCAxICsgNCBcOzsNCisgP2NvbHVt bj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAgNg0KKygxIHJvdykNCisNCisg P2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICENCisoMSByb3cpDQorDQog ID9jb2x1bW4/IA0KIC0tLS0tLS0tLS0NCiAgICAgICAgIDUNCkBAIC02MSw2 ICs4MSwxMSBAQCBDT01NSVQ7DQogU0VMRUNUIDEgKyAxICsgMSBBUyAiYWRk IiBcZ3NldA0KIFNFTEVDVCA6YWRkICsgMSArIDEgQVMgImFkZCIgXDsNCiBT RUxFQ1QgOmFkZCArIDEgKyAxIEFTICJhZGQiIFxnc2V0DQorIGFkZCANCist LS0tLQ0KKyAgIDUNCisoMSByb3cpDQorDQogLS0gc2V0IG9wZXJhdG9yDQog U0VMRUNUIDEgQVMgaSBVTklPTiBTRUxFQ1QgMiBPUkRFUiBCWSBpOw0KICBp IA0KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbA0KaW5kZXggMWFi MjAwYTRhZC4uMGEyMjg1MDkxMiAxMDA2NDQNCi0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9w c3FsLXJlZi5zZ21sDQpAQCAtMTI3LDE4ICsxMjcsMTEgQEAgZWNobyAnXHgg XFwgU0VMRUNUICogRlJPTSBmb287JyB8IHBzcWwNCiAgICAgICAgY29tbWFu ZHMgaW5jbHVkZWQgaW4gdGhlIHN0cmluZyB0byBkaXZpZGUgaXQgaW50byBt dWx0aXBsZQ0KICAgICAgICB0cmFuc2FjdGlvbnMuICAoU2VlIDx4cmVmIGxp bmtlbmQ9InByb3RvY29sLWZsb3ctbXVsdGktc3RhdGVtZW50Ii8+DQogICAg ICAgIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgaG93IHRoZSBzZXJ2ZXIgaGFu ZGxlcyBtdWx0aS1xdWVyeSBzdHJpbmdzLikNCi0gICAgICAgQWxzbywgPGFw cGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPiBvbmx5IHByaW50cyB0aGUN Ci0gICAgICAgcmVzdWx0IG9mIHRoZSBsYXN0IDxhY3JvbnltPlNRTDwvYWNy b255bT4gY29tbWFuZCBpbiB0aGUgc3RyaW5nLg0KLSAgICAgICBUaGlzIGlz IGRpZmZlcmVudCBmcm9tIHRoZSBiZWhhdmlvciB3aGVuIHRoZSBzYW1lIHN0 cmluZyBpcyByZWFkIGZyb20NCi0gICAgICAgYSBmaWxlIG9yIGZlZCB0byA8 YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+J3Mgc3RhbmRhcmQgaW5w dXQsDQotICAgICAgIGJlY2F1c2UgdGhlbiA8YXBwbGljYXRpb24+cHNxbDwv YXBwbGljYXRpb24+IHNlbmRzDQotICAgICAgIGVhY2ggPGFjcm9ueW0+U1FM PC9hY3JvbnltPiBjb21tYW5kIHNlcGFyYXRlbHkuDQogICAgICAgPC9wYXJh Pg0KICAgICAgIDxwYXJhPg0KLSAgICAgICBCZWNhdXNlIG9mIHRoaXMgYmVo YXZpb3IsIHB1dHRpbmcgbW9yZSB0aGFuIG9uZSBTUUwgY29tbWFuZCBpbiBh DQotICAgICAgIHNpbmdsZSA8b3B0aW9uPi1jPC9vcHRpb24+IHN0cmluZyBv ZnRlbiBoYXMgdW5leHBlY3RlZCByZXN1bHRzLg0KLSAgICAgICBJdCdzIGJl dHRlciB0byB1c2UgcmVwZWF0ZWQgPG9wdGlvbj4tYzwvb3B0aW9uPiBjb21t YW5kcyBvciBmZWVkDQotICAgICAgIG11bHRpcGxlIGNvbW1hbmRzIHRvIDxh cHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4ncyBzdGFuZGFyZCBpbnB1 dCwNCisgICAgICAgSWYgaGF2aW5nIHNldmVyYWwgY29tbWFuZHMgZXhlY3V0 ZWQgaW4gb25lIHRyYW5zYWN0aW9uIGlzIG5vdCBkZXNpcmVkLCANCisgICAg ICAgdXNlIHJlcGVhdGVkIDxvcHRpb24+LWM8L29wdGlvbj4gY29tbWFuZHMg b3IgZmVlZCBtdWx0aXBsZSBjb21tYW5kcyB0bw0KKyAgICAgICA8YXBwbGlj YXRpb24+cHNxbDwvYXBwbGljYXRpb24+J3Mgc3RhbmRhcmQgaW5wdXQsDQog ICAgICAgIGVpdGhlciB1c2luZyA8YXBwbGljYXRpb24+ZWNobzwvYXBwbGlj YXRpb24+IGFzIGlsbHVzdHJhdGVkIGFib3ZlLCBvcg0KICAgICAgICB2aWEg YSBzaGVsbCBoZXJlLWRvY3VtZW50LCBmb3IgZXhhbXBsZToNCiA8cHJvZ3Jh bWxpc3Rpbmc+DQpAQCAtMzU3MCwxMCArMzU2Myw2IEBAIHNlbGVjdCAxXDsg c2VsZWN0IDJcOyBzZWxlY3QgMzsNCiAgICAgICAgIGNvbW1hbmRzIGluY2x1 ZGVkIGluIHRoZSBzdHJpbmcgdG8gZGl2aWRlIGl0IGludG8gbXVsdGlwbGUN CiAgICAgICAgIHRyYW5zYWN0aW9ucy4gIChTZWUgPHhyZWYgbGlua2VuZD0i cHJvdG9jb2wtZmxvdy1tdWx0aS1zdGF0ZW1lbnQiLz4NCiAgICAgICAgIGZv ciBtb3JlIGRldGFpbHMgYWJvdXQgaG93IHRoZSBzZXJ2ZXIgaGFuZGxlcyBt dWx0aS1xdWVyeSBzdHJpbmdzLikNCi0gICAgICAgIDxhcHBsaWNhdGlvbj5w c3FsPC9hcHBsaWNhdGlvbj4gcHJpbnRzIG9ubHkgdGhlIGxhc3QgcXVlcnkg cmVzdWx0DQotICAgICAgICBpdCByZWNlaXZlcyBmb3IgZWFjaCByZXF1ZXN0 OyBpbiB0aGlzIGV4YW1wbGUsIGFsdGhvdWdoIGFsbA0KLSAgICAgICAgdGhy ZWUgPGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPnMgYXJlIGluZGVlZCBleGVj dXRlZCwgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPg0KLSAgICAg ICAgb25seSBwcmludHMgdGhlIDxsaXRlcmFsPjM8L2xpdGVyYWw+Lg0KICAg ICAgICAgPC9wYXJhPg0KICAgICAgICAgPC9saXN0aXRlbT4NCiAgICAgICA8 L3Zhcmxpc3RlbnRyeT4NCkBAIC00MTYwLDYgKzQxNDksMTggQEAgYmFyDQog ICAgICAgPC92YXJsaXN0ZW50cnk+DQogDQogICAgICAgPHZhcmxpc3RlbnRy eT4NCisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPlNIT1dfQUxMX1JFU1VMVFM8 L3Zhcm5hbWU+PC90ZXJtPg0KKyAgICAgICAgPGxpc3RpdGVtPg0KKyAgICAg ICAgPHBhcmE+DQorICAgICAgICBXaGVuIHRoaXMgdmFyaWFibGUgaXMgc2V0 IHRvIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sIG9ubHkgdGhlIGxhc3QNCisg ICAgICAgIHJlc3VsdCBvZiBhIGNvbWJpbmVkIHF1ZXJ5ICg8bGl0ZXJhbD5c OzwvbGl0ZXJhbD4pIGlzIHNob3duIGluc3RlYWQgb2YNCisgICAgICAgIGFs bCBvZiB0aGVtLiAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+b248L2xpdGVy YWw+LiAgVGhlIG9mZiBiZWhhdmlvcg0KKyAgICAgICAgaXMgZm9yIGNvbXBh dGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBwc3FsLg0KKyAgICAg ICAgPC9wYXJhPg0KKyAgICAgICAgPC9saXN0aXRlbT4NCisgICAgICA8L3Zh cmxpc3RlbnRyeT4NCisNCisgICAgICAgPHZhcmxpc3RlbnRyeT4NCiAgICAg ICAgIDx0ZXJtPjx2YXJuYW1lPlNIT1dfQ09OVEVYVDwvdmFybmFtZT48L3Rl cm0+DQogICAgICAgICA8bGlzdGl0ZW0+DQogICAgICAgICA8cGFyYT4NCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbW9uLmMgYi9zcmMvYmluL3Bz cWwvY29tbW9uLmMNCmluZGV4IGYyMTBjY2JkZTguLmI4ZThjMmIyNDUgMTAw NjQ0DQotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9uLmMNCisrKyBiL3NyYy9i aW4vcHNxbC9jb21tb24uYw0KQEAgLTMzLDYgKzMzLDggQEAgc3RhdGljIGJv b2wgRGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICpl bGFwc2VkX21zZWMpOw0KIHN0YXRpYyBib29sIEV4ZWNRdWVyeVVzaW5nQ3Vy c29yKGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYyk7 DQogc3RhdGljIGJvb2wgY29tbWFuZF9ub19iZWdpbihjb25zdCBjaGFyICpx dWVyeSk7DQogc3RhdGljIGJvb2wgaXNfc2VsZWN0X2NvbW1hbmQoY29uc3Qg Y2hhciAqcXVlcnkpOw0KK3N0YXRpYyBpbnQgU2VuZFF1ZXJ5QW5kUHJvY2Vz c1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqcGVsYXBzZWRf bXNlYywNCisJYm9vbCBpc193YXRjaCwgY29uc3QgcHJpbnRRdWVyeU9wdCAq b3B0LCBGSUxFICpwcmludFF1ZXJ5Rm91dCwgYm9vbCAqdHhfZW5kZWQpOw0K IA0KIA0KIC8qDQpAQCAtMzUzLDcgKzM1NSw3IEBAIENoZWNrQ29ubmVjdGlv bih2b2lkKQ0KICAqIFJldHVybnMgdHJ1ZSBmb3IgdmFsaWQgcmVzdWx0LCBm YWxzZSBmb3IgZXJyb3Igc3RhdGUuDQogICovDQogc3RhdGljIGJvb2wNCi1B Y2NlcHRSZXN1bHQoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCkNCitBY2NlcHRS ZXN1bHQoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCwgYm9vbCBzaG93X2Vycm9y KQ0KIHsNCiAJYm9vbAkJT0s7DQogDQpAQCAtMzg0LDcgKzM4Niw3IEBAIEFj Y2VwdFJlc3VsdChjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KIAkJCQlicmVh azsNCiAJCX0NCiANCi0JaWYgKCFPSykNCisJaWYgKCFPSyAmJiBzaG93X2Vy cm9yKQ0KIAl7DQogCQljb25zdCBjaGFyICplcnJvciA9IFBRZXJyb3JNZXNz YWdlKHBzZXQuZGIpOw0KIA0KQEAgLTQ3Miw2ICs0NzQsMTggQEAgQ2xlYXJP clNhdmVSZXN1bHQoUEdyZXN1bHQgKnJlc3VsdCkNCiAJfQ0KIH0NCiANCisv Kg0KKyAqIENvbnN1bWUgYWxsIHJlc3VsdHMNCisgKi8NCitzdGF0aWMgdm9p ZA0KK0NsZWFyT3JTYXZlQWxsUmVzdWx0cygpDQorew0KKwlQR3Jlc3VsdAkq cmVzdWx0Ow0KKw0KKwl3aGlsZSAoKHJlc3VsdCA9IFBRZ2V0UmVzdWx0KHBz ZXQuZGIpKSAhPSBOVUxMKQ0KKwkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0 KTsNCit9DQorDQogDQogLyoNCiAgKiBQcmludCBtaWNyb3RpbWluZyBvdXRw dXQuICBBbHdheXMgcHJpbnQgcmF3IG1pbGxpc2Vjb25kczsgaWYgdGhlIGlu dGVydmFsDQpAQCAtNTcyLDcgKzU4Niw3IEBAIFBTUUxleGVjKGNvbnN0IGNo YXIgKnF1ZXJ5KQ0KIA0KIAlSZXNldENhbmNlbENvbm4oKTsNCiANCi0JaWYg KCFBY2NlcHRSZXN1bHQocmVzKSkNCisJaWYgKCFBY2NlcHRSZXN1bHQocmVz LCB0cnVlKSkNCiAJew0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzKTsNCiAJ CXJlcyA9IE5VTEw7DQpAQCAtNTk1LDExICs2MDksOCBAQCBpbnQNCiBQU1FM ZXhlY1dhdGNoKGNvbnN0IGNoYXIgKnF1ZXJ5LCBjb25zdCBwcmludFF1ZXJ5 T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlGb3V0KQ0KIHsNCiAJYm9vbAkJ dGltaW5nID0gcHNldC50aW1pbmc7DQotCVBHcmVzdWx0ICAgKnJlczsNCiAJ ZG91YmxlCQllbGFwc2VkX21zZWMgPSAwOw0KLQlpbnN0cl90aW1lCWJlZm9y ZTsNCi0JaW5zdHJfdGltZQlhZnRlcjsNCi0JRklMRQkgICAqZm91dDsNCisJ aW50CQkJcmVzOw0KIA0KIAlpZiAoIXBzZXQuZGIpDQogCXsNCkBAIC02MDgs NzcgKzYxOSwxNCBAQCBQU1FMZXhlY1dhdGNoKGNvbnN0IGNoYXIgKnF1ZXJ5 LCBjb25zdCBwcmludFF1ZXJ5T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlG b3V0KQ0KIAl9DQogDQogCVNldENhbmNlbENvbm4ocHNldC5kYik7DQotDQot CWlmICh0aW1pbmcpDQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJlZm9y ZSk7DQotDQotCXJlcyA9IFBRZXhlYyhwc2V0LmRiLCBxdWVyeSk7DQotDQor CXJlcyA9IFNlbmRRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKHF1ZXJ5LCAmZWxh cHNlZF9tc2VjLCB0cnVlLCBvcHQsIHByaW50UXVlcnlGb3V0LCBOVUxMKTsN CiAJUmVzZXRDYW5jZWxDb25uKCk7DQogDQotCWlmICghQWNjZXB0UmVzdWx0 KHJlcykpDQotCXsNCi0JCUNsZWFyT3JTYXZlUmVzdWx0KHJlcyk7DQotCQly ZXR1cm4gMDsNCi0JfQ0KLQ0KLQlpZiAodGltaW5nKQ0KLQl7DQotCQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKGFmdGVyKTsNCi0JCUlOU1RSX1RJTUVfU1VC VFJBQ1QoYWZ0ZXIsIGJlZm9yZSk7DQotCQllbGFwc2VkX21zZWMgPSBJTlNU Ul9USU1FX0dFVF9NSUxMSVNFQyhhZnRlcik7DQotCX0NCi0NCi0JLyoNCi0J ICogSWYgU0lHSU5UIGlzIHNlbnQgd2hpbGUgdGhlIHF1ZXJ5IGlzIHByb2Nl c3NpbmcsIHRoZSBpbnRlcnJ1cHQgd2lsbCBiZQ0KLQkgKiBjb25zdW1lZC4g IFRoZSB1c2VyJ3MgaW50ZW50aW9uLCB0aG91Z2gsIGlzIHRvIGNhbmNlbCB0 aGUgZW50aXJlIHdhdGNoDQotCSAqIHByb2Nlc3MsIHNvIGRldGVjdCBhIHNl bnQgY2FuY2VsbGF0aW9uIHJlcXVlc3QgYW5kIGV4aXQgaW4gdGhpcyBjYXNl Lg0KLQkgKi8NCi0JaWYgKGNhbmNlbF9wcmVzc2VkKQ0KLQl7DQotCQlQUWNs ZWFyKHJlcyk7DQotCQlyZXR1cm4gMDsNCi0JfQ0KLQ0KLQlmb3V0ID0gcHJp bnRRdWVyeUZvdXQgPyBwcmludFF1ZXJ5Rm91dCA6IHBzZXQucXVlcnlGb3V0 Ow0KLQ0KLQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlcykpDQotCXsNCi0J CWNhc2UgUEdSRVNfVFVQTEVTX09LOg0KLQkJCXByaW50UXVlcnkocmVzLCBv cHQsIGZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOw0KLQkJCWJyZWFrOw0K LQ0KLQkJY2FzZSBQR1JFU19DT01NQU5EX09LOg0KLQkJCWZwcmludGYoZm91 dCwgIiVzXG4lc1xuXG4iLCBvcHQtPnRpdGxlLCBQUWNtZFN0YXR1cyhyZXMp KTsNCi0JCQlicmVhazsNCi0NCi0JCWNhc2UgUEdSRVNfRU1QVFlfUVVFUlk6 DQotCQkJcGdfbG9nX2Vycm9yKCJcXHdhdGNoIGNhbm5vdCBiZSB1c2VkIHdp dGggYW4gZW1wdHkgcXVlcnkiKTsNCi0JCQlQUWNsZWFyKHJlcyk7DQotCQkJ cmV0dXJuIC0xOw0KLQ0KLQkJY2FzZSBQR1JFU19DT1BZX09VVDoNCi0JCWNh c2UgUEdSRVNfQ09QWV9JTjoNCi0JCWNhc2UgUEdSRVNfQ09QWV9CT1RIOg0K LQkJCXBnX2xvZ19lcnJvcigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRo IENPUFkiKTsNCi0JCQlQUWNsZWFyKHJlcyk7DQotCQkJcmV0dXJuIC0xOw0K LQ0KLQkJZGVmYXVsdDoNCi0JCQlwZ19sb2dfZXJyb3IoInVuZXhwZWN0ZWQg cmVzdWx0IHN0YXR1cyBmb3IgXFx3YXRjaCIpOw0KLQkJCVBRY2xlYXIocmVz KTsNCi0JCQlyZXR1cm4gLTE7DQotCX0NCi0NCi0JUFFjbGVhcihyZXMpOw0K LQ0KLQlmZmx1c2goZm91dCk7DQotDQogCS8qIFBvc3NpYmxlIG1pY3JvdGlt aW5nIG91dHB1dCAqLw0KIAlpZiAodGltaW5nKQ0KIAkJUHJpbnRUaW1pbmco ZWxhcHNlZF9tc2VjKTsNCiANCi0JcmV0dXJuIDE7DQorCXJldHVybiByZXM7 DQogfQ0KIA0KIA0KQEAgLTcxMyw3ICs2NjEsNyBAQCBQcmludE5vdGlmaWNh dGlvbnModm9pZCkNCiAgKiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwg ZmFsc2Ugb3RoZXJ3aXNlLg0KICAqLw0KIHN0YXRpYyBib29sDQotUHJpbnRR dWVyeVR1cGxlcyhjb25zdCBQR3Jlc3VsdCAqcmVzdWx0cykNCitQcmludFF1 ZXJ5VHVwbGVzKGNvbnN0IFBHcmVzdWx0ICpyZXN1bHRzLCBjb25zdCBwcmlu dFF1ZXJ5T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlGb3V0KQ0KIHsNCiAJ Ym9vbAkJcmVzdWx0ID0gdHJ1ZTsNCiANCkBAIC03NDUsOCArNjkzLDkgQEAg UHJpbnRRdWVyeVR1cGxlcyhjb25zdCBQR3Jlc3VsdCAqcmVzdWx0cykNCiAJ fQ0KIAllbHNlDQogCXsNCi0JCXByaW50UXVlcnkocmVzdWx0cywgJnBzZXQu cG9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOw0K LQkJaWYgKGZlcnJvcihwc2V0LnF1ZXJ5Rm91dCkpDQorCQlGSUxFICpmb3V0 ID0gcHJpbnRRdWVyeUZvdXQgPyBwcmludFF1ZXJ5Rm91dCA6IHBzZXQucXVl cnlGb3V0Ow0KKwkJcHJpbnRRdWVyeShyZXN1bHRzLCBvcHQgPyBvcHQgOiAm cHNldC5wb3B0LCBmb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsNCisJCWlm IChmZXJyb3IoZm91dCkpDQogCQl7DQogCQkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3QgcHJpbnQgcmVzdWx0IHRhYmxlOiAlbSIpOw0KIAkJCXJlc3VsdCA9 IGZhbHNlOw0KQEAgLTg5MSwyMTMgKzg0MCwxMzEgQEAgbG9vcF9leGl0Og0K IA0KIA0KIC8qDQotICogUHJvY2Vzc1Jlc3VsdDogdXRpbGl0eSBmdW5jdGlv biBmb3IgdXNlIGJ5IFNlbmRRdWVyeSgpIG9ubHkNCi0gKg0KLSAqIFdoZW4g b3VyIGNvbW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBhIENPUFkgRlJPTSBTVERJ TiBvciBDT1BZIFRPIFNURE9VVCwNCi0gKiBQUWV4ZWMoKSBoYXMgc3RvcHBl ZCBhdCB0aGUgUEdyZXN1bHQgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaXJzdCBz dWNoDQotICogY29tbWFuZC4gIEluIHRoYXQgZXZlbnQsIHdlJ2xsIG1hcnNo YWwgZGF0YSBmb3IgdGhlIENPUFkgYW5kIHRoZW4gY3ljbGUNCi0gKiB0aHJv dWdoIGFueSBzdWJzZXF1ZW50IFBHcmVzdWx0IG9iamVjdHMuDQotICoNCi0g KiBXaGVuIHRoZSBjb21tYW5kIHN0cmluZyBjb250YWluZWQgbm8gc3VjaCBD T1BZIGNvbW1hbmQsIHRoaXMgZnVuY3Rpb24NCi0gKiBkZWdlbmVyYXRlcyB0 byBhbiBBY2NlcHRSZXN1bHQoKSBjYWxsLg0KLSAqDQotICogQ2hhbmdlcyBp dHMgYXJndW1lbnQgdG8gcG9pbnQgdG8gdGhlIGxhc3QgUEdyZXN1bHQgb2Yg dGhlIGNvbW1hbmQgc3RyaW5nLA0KLSAqIG9yIE5VTEwgaWYgdGhhdCByZXN1 bHQgd2FzIGZvciBhIENPUFkgVE8gU1RET1VULiAgKFJldHVybmluZyBOVUxM IHByZXZlbnRzDQotICogdGhlIGNvbW1hbmQgc3RhdHVzIGZyb20gYmVpbmcg cHJpbnRlZCwgd2hpY2ggd2Ugd2FudCBpbiB0aGF0IGNhc2Ugc28gdGhhdA0K LSAqIHRoZSBzdGF0dXMgbGluZSBkb2Vzbid0IGdldCB0YWtlbiBhcyBwYXJ0 IG9mIHRoZSBDT1BZIGRhdGEuKQ0KLSAqDQotICogUmV0dXJucyB0cnVlIG9u IGNvbXBsZXRlIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4gIFBvc3NpYmxl IGZhaWx1cmUgbW9kZXMNCi0gKiBpbmNsdWRlIHB1cmVseSBjbGllbnQtc2lk ZSBwcm9ibGVtczsgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXR1cyBmb3Ig dGhlDQotICogc2VydmVyLXNpZGUgb3Bpbmlvbi4NCisgKiBNYXJzaGFsIHRo ZSBDT1BZIGRhdGEuICBFaXRoZXIgc3Vicm91dGluZSB3aWxsIGdldCB0aGUN CisgKiBjb25uZWN0aW9uIG91dCBvZiBpdHMgQ09QWSBzdGF0ZSwgdGhlbiBj YWxsIFBRcmVzdWx0U3RhdHVzKCkNCisgKiBvbmNlIGFuZCByZXBvcnQgYW55 IGVycm9yLiBSZXR1cm4gd2hldGhlciBhbGwgd2FzIG9rLg0KKyAqDQorICog Rm9yIENPUFkgT1VULCBkaXJlY3QgdGhlIG91dHB1dCB0byBwc2V0LmNvcHlT dHJlYW0gaWYgaXQncyBzZXQsDQorICogb3RoZXJ3aXNlIHRvIHBzZXQuZ2Zu YW1lIGlmIGl0J3Mgc2V0LCBvdGhlcndpc2UgdG8gcXVlcnlGb3V0Lg0KKyAq IEZvciBDT1BZIElOLCB1c2UgcHNldC5jb3B5U3RyZWFtIGFzIGRhdGEgc291 cmNlIGlmIGl0J3Mgc2V0LA0KKyAqIG90aGVyd2lzZSBjdXJfY21kX3NvdXJj ZS4NCisgKg0KKyAqIFVwZGF0ZSByZXN1bHQgaWYgZnVydGhlciBwcm9jZXNz aW5nIGlzIG5lY2Vzc2FyeSwgb3IgTlVMTCBvdGhlcndpc2UuDQorICogUmV0 dXJuIGEgcmVzdWx0IHdoZW4gcXVlcnlGb3V0IGNhbiBzYWZlbHkgb3V0cHV0 IGEgcmVzdWx0IHN0YXR1czoNCisgKiBvbiBDT1BZIElOLCBvciBvbiBDT1BZ IE9VVCBpZiB3cml0dGVuIHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIHBzZXQu cXVlcnlGb3V0Lg0KKyAqIFJldHVybmluZyBOVUxMIHByZXZlbnRzIHRoZSBj b21tYW5kIHN0YXR1cyBmcm9tIGJlaW5nIHByaW50ZWQsIHdoaWNoDQorICog d2Ugd2FudCBpZiB0aGUgc3RhdHVzIGxpbmUgZG9lc24ndCBnZXQgdGFrZW4g YXMgcGFydCBvZiB0aGUgQ09QWSBkYXRhLg0KICAqLw0KIHN0YXRpYyBib29s DQotUHJvY2Vzc1Jlc3VsdChQR3Jlc3VsdCAqKnJlc3VsdHMpDQorSGFuZGxl Q29weVJlc3VsdChQR3Jlc3VsdCAqKnJlc3VsdCkNCiB7DQotCWJvb2wJCXN1 Y2Nlc3MgPSB0cnVlOw0KLQlib29sCQlmaXJzdF9jeWNsZSA9IHRydWU7DQor CWJvb2wJCXN1Y2Nlc3M7DQorCUZJTEUJICAgKmNvcHlzdHJlYW07DQorCVBH cmVzdWx0ICAgKmNvcHlfcmVzdWx0Ow0KKwlFeGVjU3RhdHVzVHlwZSByZXN1 bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMoKnJlc3VsdCk7DQogDQotCWZv ciAoOzspDQorCUFzc2VydChyZXN1bHRfc3RhdHVzID09IFBHUkVTX0NPUFlf T1VUIHx8DQorCQkgICByZXN1bHRfc3RhdHVzID09IFBHUkVTX0NPUFlfSU4p Ow0KKw0KKwlTZXRDYW5jZWxDb25uKHBzZXQuZGIpOw0KKw0KKwlpZiAocmVz dWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZX09VVCkNCiAJew0KLQkJRXhlY1N0 YXR1c1R5cGUgcmVzdWx0X3N0YXR1czsNCi0JCWJvb2wJCWlzX2NvcHk7DQot CQlQR3Jlc3VsdCAgICpuZXh0X3Jlc3VsdDsNCisJCWJvb2wJCW5lZWRfY2xv c2UgPSBmYWxzZTsNCisJCWJvb2wJCWlzX3BpcGUgPSBmYWxzZTsNCiANCi0J CWlmICghQWNjZXB0UmVzdWx0KCpyZXN1bHRzKSkNCisJCWlmIChwc2V0LmNv cHlTdHJlYW0pDQogCQl7DQotCQkJLyoNCi0JCQkgKiBGYWlsdXJlIGF0IHRo aXMgcG9pbnQgaXMgYWx3YXlzIGEgc2VydmVyLXNpZGUgZmFpbHVyZSBvciBh DQotCQkJICogZmFpbHVyZSB0byBzdWJtaXQgdGhlIGNvbW1hbmQgc3RyaW5n LiAgRWl0aGVyIHdheSwgd2UncmUNCi0JCQkgKiBmaW5pc2hlZCB3aXRoIHRo aXMgY29tbWFuZCBzdHJpbmcuDQotCQkJICovDQotCQkJc3VjY2VzcyA9IGZh bHNlOw0KLQkJCWJyZWFrOw0KKwkJCS8qIGludm9rZWQgYnkgXGNvcHkgKi8N CisJCQljb3B5c3RyZWFtID0gcHNldC5jb3B5U3RyZWFtOw0KIAkJfQ0KLQ0K LQkJcmVzdWx0X3N0YXR1cyA9IFBRcmVzdWx0U3RhdHVzKCpyZXN1bHRzKTsN Ci0JCXN3aXRjaCAocmVzdWx0X3N0YXR1cykNCisJCWVsc2UgaWYgKHBzZXQu Z2ZuYW1lKQ0KIAkJew0KLQkJCWNhc2UgUEdSRVNfRU1QVFlfUVVFUlk6DQot CQkJY2FzZSBQR1JFU19DT01NQU5EX09LOg0KLQkJCWNhc2UgUEdSRVNfVFVQ TEVTX09LOg0KLQkJCQlpc19jb3B5ID0gZmFsc2U7DQotCQkJCWJyZWFrOw0K LQ0KLQkJCWNhc2UgUEdSRVNfQ09QWV9PVVQ6DQotCQkJY2FzZSBQR1JFU19D T1BZX0lOOg0KLQkJCQlpc19jb3B5ID0gdHJ1ZTsNCi0JCQkJYnJlYWs7DQot DQotCQkJZGVmYXVsdDoNCi0JCQkJLyogQWNjZXB0UmVzdWx0KCkgc2hvdWxk IGhhdmUgY2F1Z2h0IGFueXRoaW5nIGVsc2UuICovDQotCQkJCWlzX2NvcHkg PSBmYWxzZTsNCi0JCQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIFBRcmVz dWx0U3RhdHVzOiAlZCIsIHJlc3VsdF9zdGF0dXMpOw0KLQkJCQlicmVhazsN Ci0JCX0NCi0NCi0JCWlmIChpc19jb3B5KQ0KLQkJew0KLQkJCS8qDQotCQkJ ICogTWFyc2hhbCB0aGUgQ09QWSBkYXRhLiAgRWl0aGVyIHN1YnJvdXRpbmUg d2lsbCBnZXQgdGhlDQotCQkJICogY29ubmVjdGlvbiBvdXQgb2YgaXRzIENP UFkgc3RhdGUsIHRoZW4gY2FsbCBQUXJlc3VsdFN0YXR1cygpDQotCQkJICog b25jZSBhbmQgcmVwb3J0IGFueSBlcnJvci4NCi0JCQkgKg0KLQkJCSAqIEZv ciBDT1BZIE9VVCwgZGlyZWN0IHRoZSBvdXRwdXQgdG8gcHNldC5jb3B5U3Ry ZWFtIGlmIGl0J3Mgc2V0LA0KLQkJCSAqIG90aGVyd2lzZSB0byBwc2V0Lmdm bmFtZSBpZiBpdCdzIHNldCwgb3RoZXJ3aXNlIHRvIHF1ZXJ5Rm91dC4NCi0J CQkgKiBGb3IgQ09QWSBJTiwgdXNlIHBzZXQuY29weVN0cmVhbSBhcyBkYXRh IHNvdXJjZSBpZiBpdCdzIHNldCwNCi0JCQkgKiBvdGhlcndpc2UgY3VyX2Nt ZF9zb3VyY2UuDQotCQkJICovDQotCQkJRklMRQkgICAqY29weXN0cmVhbTsN Ci0JCQlQR3Jlc3VsdCAgICpjb3B5X3Jlc3VsdDsNCi0NCi0JCQlTZXRDYW5j ZWxDb25uKHBzZXQuZGIpOw0KLQkJCWlmIChyZXN1bHRfc3RhdHVzID09IFBH UkVTX0NPUFlfT1VUKQ0KKwkJCS8qIGludm9rZWQgYnkgXGcgKi8NCisJCQlp ZiAob3BlblF1ZXJ5T3V0cHV0RmlsZShwc2V0LmdmbmFtZSwNCisJCQkJCQkJ CQkmY29weXN0cmVhbSwgJmlzX3BpcGUpKQ0KIAkJCXsNCi0JCQkJYm9vbAkJ bmVlZF9jbG9zZSA9IGZhbHNlOw0KLQkJCQlib29sCQlpc19waXBlID0gZmFs c2U7DQotDQotCQkJCWlmIChwc2V0LmNvcHlTdHJlYW0pDQotCQkJCXsNCi0J CQkJCS8qIGludm9rZWQgYnkgXGNvcHkgKi8NCi0JCQkJCWNvcHlzdHJlYW0g PSBwc2V0LmNvcHlTdHJlYW07DQotCQkJCX0NCi0JCQkJZWxzZSBpZiAocHNl dC5nZm5hbWUpDQotCQkJCXsNCi0JCQkJCS8qIGludm9rZWQgYnkgXGcgKi8N Ci0JCQkJCWlmIChvcGVuUXVlcnlPdXRwdXRGaWxlKHBzZXQuZ2ZuYW1lLA0K LQkJCQkJCQkJCQkJJmNvcHlzdHJlYW0sICZpc19waXBlKSkNCi0JCQkJCXsN Ci0JCQkJCQluZWVkX2Nsb3NlID0gdHJ1ZTsNCi0JCQkJCQlpZiAoaXNfcGlw ZSkNCi0JCQkJCQkJZGlzYWJsZV9zaWdwaXBlX3RyYXAoKTsNCi0JCQkJCX0N Ci0JCQkJCWVsc2UNCi0JCQkJCQljb3B5c3RyZWFtID0gTlVMTDsJLyogZGlz Y2FyZCBDT1BZIGRhdGEgZW50aXJlbHkgKi8NCi0JCQkJfQ0KLQkJCQllbHNl DQotCQkJCXsNCi0JCQkJCS8qIGZhbGwgYmFjayB0byB0aGUgZ2VuZXJpYyBx dWVyeSBvdXRwdXQgc3RyZWFtICovDQotCQkJCQljb3B5c3RyZWFtID0gcHNl dC5xdWVyeUZvdXQ7DQotCQkJCX0NCi0NCi0JCQkJc3VjY2VzcyA9IGhhbmRs ZUNvcHlPdXQocHNldC5kYiwNCi0JCQkJCQkJCQkJY29weXN0cmVhbSwNCi0J CQkJCQkJCQkJJmNvcHlfcmVzdWx0KQ0KLQkJCQkJJiYgc3VjY2Vzcw0KLQkJ CQkJJiYgKGNvcHlzdHJlYW0gIT0gTlVMTCk7DQotDQotCQkJCS8qDQotCQkJ CSAqIFN1cHByZXNzIHN0YXR1cyBwcmludGluZyBpZiB0aGUgcmVwb3J0IHdv dWxkIGdvIHRvIHRoZSBzYW1lDQotCQkJCSAqIHBsYWNlIGFzIHRoZSBDT1BZ IGRhdGEganVzdCB3ZW50LiAgTm90ZSB0aGlzIGRvZXNuJ3QNCi0JCQkJICog cHJldmVudCBlcnJvciByZXBvcnRpbmcsIHNpbmNlIGhhbmRsZUNvcHlPdXQg ZGlkIHRoYXQuDQotCQkJCSAqLw0KLQkJCQlpZiAoY29weXN0cmVhbSA9PSBw c2V0LnF1ZXJ5Rm91dCkNCi0JCQkJew0KLQkJCQkJUFFjbGVhcihjb3B5X3Jl c3VsdCk7DQotCQkJCQljb3B5X3Jlc3VsdCA9IE5VTEw7DQotCQkJCX0NCi0N Ci0JCQkJaWYgKG5lZWRfY2xvc2UpDQotCQkJCXsNCi0JCQkJCS8qIGNsb3Nl IFxnIGFyZ3VtZW50IGZpbGUvcGlwZSAqLw0KLQkJCQkJaWYgKGlzX3BpcGUp DQotCQkJCQl7DQotCQkJCQkJcGNsb3NlKGNvcHlzdHJlYW0pOw0KLQkJCQkJ CXJlc3RvcmVfc2lncGlwZV90cmFwKCk7DQotCQkJCQl9DQotCQkJCQllbHNl DQotCQkJCQl7DQotCQkJCQkJZmNsb3NlKGNvcHlzdHJlYW0pOw0KLQkJCQkJ fQ0KLQkJCQl9DQorCQkJCW5lZWRfY2xvc2UgPSB0cnVlOw0KKwkJCQlpZiAo aXNfcGlwZSkNCisJCQkJCWRpc2FibGVfc2lncGlwZV90cmFwKCk7DQogCQkJ fQ0KIAkJCWVsc2UNCi0JCQl7DQotCQkJCS8qIENPUFkgSU4gKi8NCi0JCQkJ Y29weXN0cmVhbSA9IHBzZXQuY29weVN0cmVhbSA/IHBzZXQuY29weVN0cmVh bSA6IHBzZXQuY3VyX2NtZF9zb3VyY2U7DQotCQkJCXN1Y2Nlc3MgPSBoYW5k bGVDb3B5SW4ocHNldC5kYiwNCi0JCQkJCQkJCQkgICBjb3B5c3RyZWFtLA0K LQkJCQkJCQkJCSAgIFBRYmluYXJ5VHVwbGVzKCpyZXN1bHRzKSwNCi0JCQkJ CQkJCQkgICAmY29weV9yZXN1bHQpICYmIHN1Y2Nlc3M7DQotCQkJfQ0KLQkJ CVJlc2V0Q2FuY2VsQ29ubigpOw0KLQ0KLQkJCS8qDQotCQkJICogUmVwbGFj ZSB0aGUgUEdSRVNfQ09QWV9PVVQvSU4gcmVzdWx0IHdpdGggQ09QWSBjb21t YW5kJ3MgZXhpdA0KLQkJCSAqIHN0YXR1cywgb3Igd2l0aCBOVUxMIGlmIHdl IHdhbnQgdG8gc3VwcHJlc3MgcHJpbnRpbmcgYW55dGhpbmcuDQotCQkJICov DQotCQkJUFFjbGVhcigqcmVzdWx0cyk7DQotCQkJKnJlc3VsdHMgPSBjb3B5 X3Jlc3VsdDsNCisJCQkJY29weXN0cmVhbSA9IE5VTEw7CS8qIGRpc2NhcmQg Q09QWSBkYXRhIGVudGlyZWx5ICovDQogCQl9DQotCQllbHNlIGlmIChmaXJz dF9jeWNsZSkNCisJCWVsc2UNCiAJCXsNCi0JCQkvKiBmYXN0IHBhdGg6IG5v IENPUFkgY29tbWFuZHM7IFBRZXhlYyB2aXNpdGVkIGFsbCByZXN1bHRzICov DQotCQkJYnJlYWs7DQorCQkJLyogZmFsbCBiYWNrIHRvIHRoZSBnZW5lcmlj IHF1ZXJ5IG91dHB1dCBzdHJlYW0gKi8NCisJCQljb3B5c3RyZWFtID0gcHNl dC5xdWVyeUZvdXQ7DQogCQl9DQogDQorCQlzdWNjZXNzID0gaGFuZGxlQ29w eU91dChwc2V0LmRiLA0KKwkJCQkJCQkJY29weXN0cmVhbSwNCisJCQkJCQkJ CSZjb3B5X3Jlc3VsdCkNCisJCQkmJiAoY29weXN0cmVhbSAhPSBOVUxMKTsN CisNCiAJCS8qDQotCQkgKiBDaGVjayBQUWdldFJlc3VsdCgpIGFnYWluLiAg SW4gdGhlIHR5cGljYWwgY2FzZSBvZiBhIHNpbmdsZS1jb21tYW5kDQotCQkg KiBzdHJpbmcsIGl0IHdpbGwgcmV0dXJuIE5VTEwuICBPdGhlcndpc2UsIHdl J2xsIGhhdmUgb3RoZXIgcmVzdWx0cw0KLQkJICogdG8gcHJvY2VzcyB0aGF0 IG1heSBpbmNsdWRlIG90aGVyIENPUFlzLiAgV2Uga2VlcCB0aGUgbGFzdCBy ZXN1bHQuDQorCQkgKiBTdXBwcmVzcyBzdGF0dXMgcHJpbnRpbmcgaWYgdGhl IHJlcG9ydCB3b3VsZCBnbyB0byB0aGUgc2FtZQ0KKwkJICogcGxhY2UgYXMg dGhlIENPUFkgZGF0YSBqdXN0IHdlbnQuICBOb3RlIHRoaXMgZG9lc24ndA0K KwkJICogcHJldmVudCBlcnJvciByZXBvcnRpbmcsIHNpbmNlIGhhbmRsZUNv cHlPdXQgZGlkIHRoYXQuDQogCQkgKi8NCi0JCW5leHRfcmVzdWx0ID0gUFFn ZXRSZXN1bHQocHNldC5kYik7DQotCQlpZiAoIW5leHRfcmVzdWx0KQ0KLQkJ CWJyZWFrOw0KKwkJaWYgKGNvcHlzdHJlYW0gPT0gcHNldC5xdWVyeUZvdXQp DQorCQl7DQorCQkJUFFjbGVhcihjb3B5X3Jlc3VsdCk7DQorCQkJY29weV9y ZXN1bHQgPSBOVUxMOw0KKwkJfQ0KIA0KLQkJUFFjbGVhcigqcmVzdWx0cyk7 DQotCQkqcmVzdWx0cyA9IG5leHRfcmVzdWx0Ow0KLQkJZmlyc3RfY3ljbGUg PSBmYWxzZTsNCisJCWlmIChuZWVkX2Nsb3NlKQ0KKwkJew0KKwkJCS8qIGNs b3NlIFxnIGFyZ3VtZW50IGZpbGUvcGlwZSAqLw0KKwkJCWlmIChpc19waXBl KQ0KKwkJCXsNCisJCQkJcGNsb3NlKGNvcHlzdHJlYW0pOw0KKwkJCQlyZXN0 b3JlX3NpZ3BpcGVfdHJhcCgpOw0KKwkJCX0NCisJCQllbHNlDQorCQkJew0K KwkJCQlmY2xvc2UoY29weXN0cmVhbSk7DQorCQkJfQ0KKwkJfQ0KKwl9DQor CWVsc2UNCisJew0KKwkJLyogQ09QWSBJTiAqLw0KKwkJY29weXN0cmVhbSA9 IHBzZXQuY29weVN0cmVhbSA/IHBzZXQuY29weVN0cmVhbSA6IHBzZXQuY3Vy X2NtZF9zb3VyY2U7DQorCQlzdWNjZXNzID0gaGFuZGxlQ29weUluKHBzZXQu ZGIsDQorCQkJCQkJCSAgIGNvcHlzdHJlYW0sDQorCQkJCQkJCSAgIFBRYmlu YXJ5VHVwbGVzKCpyZXN1bHQpLA0KKwkJCQkJCQkgICAmY29weV9yZXN1bHQp Ow0KIAl9DQogDQotCVNldFJlc3VsdFZhcmlhYmxlcygqcmVzdWx0cywgc3Vj Y2Vzcyk7DQotDQotCS8qIG1heSBuZWVkIHRoaXMgdG8gcmVjb3ZlciBmcm9t IGNvbm4gbG9zcyBkdXJpbmcgQ09QWSAqLw0KLQlpZiAoIWZpcnN0X2N5Y2xl ICYmICFDaGVja0Nvbm5lY3Rpb24oKSkNCi0JCXJldHVybiBmYWxzZTsNCisJ UmVzZXRDYW5jZWxDb25uKCk7DQorCVBRY2xlYXIoKnJlc3VsdCk7DQorCSpy ZXN1bHQgPSBjb3B5X3Jlc3VsdDsNCiANCiAJcmV0dXJuIHN1Y2Nlc3M7DQog fQ0KIA0KLQ0KIC8qDQogICogUHJpbnRRdWVyeVN0YXR1czogcmVwb3J0IGNv bW1hbmQgc3RhdHVzIGFzIHJlcXVpcmVkDQogICoNCi0gKiBOb3RlOiBVdGls aXR5IGZ1bmN0aW9uIGZvciB1c2UgYnkgUHJpbnRRdWVyeVJlc3VsdHMoKSBv bmx5Lg0KKyAqIE5vdGU6IFV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBI YW5kbGVRdWVyeVJlc3VsdCgpIG9ubHkuDQogICovDQogc3RhdGljIHZvaWQN Ci1QcmludFF1ZXJ5U3RhdHVzKFBHcmVzdWx0ICpyZXN1bHRzKQ0KK1ByaW50 UXVlcnlTdGF0dXMoUEdyZXN1bHQgKnJlc3VsdHMsIEZJTEUgKnByaW50UXVl cnlGb3V0KQ0KIHsNCiAJY2hhcgkJYnVmWzE2XTsNCisJRklMRQkgICAqZm91 dCA9IHByaW50UXVlcnlGb3V0ID8gcHJpbnRRdWVyeUZvdXQgOiBwc2V0LnF1 ZXJ5Rm91dDsNCiANCiAJaWYgKCFwc2V0LnF1aWV0KQ0KIAl7DQogCQlpZiAo cHNldC5wb3B0LnRvcHQuZm9ybWF0ID09IFBSSU5UX0hUTUwpDQogCQl7DQot CQkJZnB1dHMoIjxwPiIsIHBzZXQucXVlcnlGb3V0KTsNCi0JCQlodG1sX2Vz Y2FwZWRfcHJpbnQoUFFjbWRTdGF0dXMocmVzdWx0cyksIHBzZXQucXVlcnlG b3V0KTsNCi0JCQlmcHV0cygiPC9wPlxuIiwgcHNldC5xdWVyeUZvdXQpOw0K KwkJCWZwdXRzKCI8cD4iLCBmb3V0KTsNCisJCQlodG1sX2VzY2FwZWRfcHJp bnQoUFFjbWRTdGF0dXMocmVzdWx0cyksIGZvdXQpOw0KKwkJCWZwdXRzKCI8 L3A+XG4iLCBmb3V0KTsNCiAJCX0NCiAJCWVsc2UNCi0JCQlmcHJpbnRmKHBz ZXQucXVlcnlGb3V0LCAiJXNcbiIsIFBRY21kU3RhdHVzKHJlc3VsdHMpKTsN CisJCQlmcHJpbnRmKGZvdXQsICIlc1xuIiwgUFFjbWRTdGF0dXMocmVzdWx0 cykpOw0KIAl9DQogDQogCWlmIChwc2V0LmxvZ2ZpbGUpDQpAQCAtMTEwOSw0 MyArOTc2LDUwIEBAIFByaW50UXVlcnlTdGF0dXMoUEdyZXN1bHQgKnJlc3Vs dHMpDQogDQogDQogLyoNCi0gKiBQcmludFF1ZXJ5UmVzdWx0czogcHJpbnQg b3V0IChvciBzdG9yZSBvciBleGVjdXRlKSBxdWVyeSByZXN1bHRzIGFzIHJl cXVpcmVkDQotICoNCi0gKiBOb3RlOiBVdGlsaXR5IGZ1bmN0aW9uIGZvciB1 c2UgYnkgU2VuZFF1ZXJ5KCkgb25seS4NCisgKiBIYW5kbGVRdWVyeVJlc3Vs dDogcHJpbnQgb3V0LCBzdG9yZSBvciBleGVjdXRlIG9uZSBxdWVyeSByZXN1 bHQNCisgKiBhcyByZXF1aXJlZC4NCiAgKg0KICAqIFJldHVybnMgdHJ1ZSBp ZiB0aGUgcXVlcnkgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LCBmYWxzZSBvdGhl cndpc2UuDQogICovDQogc3RhdGljIGJvb2wNCi1QcmludFF1ZXJ5UmVzdWx0 cyhQR3Jlc3VsdCAqcmVzdWx0cykNCitIYW5kbGVRdWVyeVJlc3VsdChQR3Jl c3VsdCAqcmVzdWx0LCBib29sIGxhc3QsIGJvb2wgaXNfd2F0Y2gsIGNvbnN0 IHByaW50UXVlcnlPcHQgKm9wdCwgRklMRSAqcHJpbnRRdWVyeUZvdXQpDQog ew0KIAlib29sCQlzdWNjZXNzOw0KIAljb25zdCBjaGFyICpjbWRzdGF0dXM7 DQogDQotCWlmICghcmVzdWx0cykNCisJaWYgKHJlc3VsdCA9PSBOVUxMKQ0K IAkJcmV0dXJuIGZhbHNlOw0KIA0KLQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVz KHJlc3VsdHMpKQ0KKwlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkp DQogCXsNCiAJCWNhc2UgUEdSRVNfVFVQTEVTX09LOg0KIAkJCS8qIHN0b3Jl IG9yIGV4ZWN1dGUgb3IgcHJpbnQgdGhlIGRhdGEgLi4uICovDQotCQkJaWYg KHBzZXQuZ3NldF9wcmVmaXgpDQotCQkJCXN1Y2Nlc3MgPSBTdG9yZVF1ZXJ5 VHVwbGUocmVzdWx0cyk7DQotCQkJZWxzZSBpZiAocHNldC5nZXhlY19mbGFn KQ0KLQkJCQlzdWNjZXNzID0gRXhlY1F1ZXJ5VHVwbGVzKHJlc3VsdHMpOw0K LQkJCWVsc2UgaWYgKHBzZXQuY3Jvc3N0YWJfZmxhZykNCi0JCQkJc3VjY2Vz cyA9IFByaW50UmVzdWx0c0luQ3Jvc3N0YWIocmVzdWx0cyk7DQorCQkJaWYg KGxhc3QgJiYgcHNldC5nc2V0X3ByZWZpeCkNCisJCQkJc3VjY2VzcyA9IFN0 b3JlUXVlcnlUdXBsZShyZXN1bHQpOw0KKwkJCWVsc2UgaWYgKGxhc3QgJiYg cHNldC5nZXhlY19mbGFnKQ0KKwkJCQlzdWNjZXNzID0gRXhlY1F1ZXJ5VHVw bGVzKHJlc3VsdCk7DQorCQkJZWxzZSBpZiAobGFzdCAmJiBwc2V0LmNyb3Nz dGFiX2ZsYWcpDQorCQkJCXN1Y2Nlc3MgPSBQcmludFJlc3VsdHNJbkNyb3Nz dGFiKHJlc3VsdCk7DQorCQkJZWxzZSBpZiAobGFzdCB8fCBwc2V0LnNob3df YWxsX3Jlc3VsdHMpDQorCQkJCXN1Y2Nlc3MgPSBQcmludFF1ZXJ5VHVwbGVz KHJlc3VsdCwgb3B0LCBwcmludFF1ZXJ5Rm91dCk7DQogCQkJZWxzZQ0KLQkJ CQlzdWNjZXNzID0gUHJpbnRRdWVyeVR1cGxlcyhyZXN1bHRzKTsNCisJCQkJ c3VjY2VzcyA9IHRydWU7DQorDQogCQkJLyogaWYgaXQncyBJTlNFUlQvVVBE QVRFL0RFTEVURSBSRVRVUk5JTkcsIGFsc28gcHJpbnQgc3RhdHVzICovDQot CQkJY21kc3RhdHVzID0gUFFjbWRTdGF0dXMocmVzdWx0cyk7DQotCQkJaWYg KHN0cm5jbXAoY21kc3RhdHVzLCAiSU5TRVJUIiwgNikgPT0gMCB8fA0KLQkJ CQlzdHJuY21wKGNtZHN0YXR1cywgIlVQREFURSIsIDYpID09IDAgfHwNCi0J CQkJc3RybmNtcChjbWRzdGF0dXMsICJERUxFVEUiLCA2KSA9PSAwKQ0KLQkJ CQlQcmludFF1ZXJ5U3RhdHVzKHJlc3VsdHMpOw0KKwkJCWlmIChsYXN0IHx8 IHBzZXQuc2hvd19hbGxfcmVzdWx0cykNCisJCQl7DQorCQkJCWNtZHN0YXR1 cyA9IFBRY21kU3RhdHVzKHJlc3VsdCk7DQorCQkJCWlmIChzdHJuY21wKGNt ZHN0YXR1cywgIklOU0VSVCIsIDYpID09IDAgfHwNCisJCQkJCXN0cm5jbXAo Y21kc3RhdHVzLCAiVVBEQVRFIiwgNikgPT0gMCB8fA0KKwkJCQkJc3RybmNt cChjbWRzdGF0dXMsICJERUxFVEUiLCA2KSA9PSAwKQ0KKwkJCQkJUHJpbnRR dWVyeVN0YXR1cyhyZXN1bHQsIHByaW50UXVlcnlGb3V0KTsNCisJCQl9DQor DQogCQkJYnJlYWs7DQogDQogCQljYXNlIFBHUkVTX0NPTU1BTkRfT0s6DQot CQkJUHJpbnRRdWVyeVN0YXR1cyhyZXN1bHRzKTsNCisJCQlpZiAobGFzdCB8 fCBwc2V0LnNob3dfYWxsX3Jlc3VsdHMpDQorCQkJCVByaW50UXVlcnlTdGF0 dXMocmVzdWx0LCBwcmludFF1ZXJ5Rm91dCk7DQogCQkJc3VjY2VzcyA9IHRy dWU7DQogCQkJYnJlYWs7DQogDQpAQCAtMTE1NSw3ICsxMDI5LDcgQEAgUHJp bnRRdWVyeVJlc3VsdHMoUEdyZXN1bHQgKnJlc3VsdHMpDQogDQogCQljYXNl IFBHUkVTX0NPUFlfT1VUOg0KIAkJY2FzZSBQR1JFU19DT1BZX0lOOg0KLQkJ CS8qIG5vdGhpbmcgdG8gZG8gaGVyZSAqLw0KKwkJCS8qIG5vdGhpbmcgdG8g ZG8gaGVyZTogYWxyZWFkeSBwcm9jZXNzZWQgKi8NCiAJCQlzdWNjZXNzID0g dHJ1ZTsNCiAJCQlicmVhazsNCiANCkBAIC0xMTY4LDE1ICsxMDQyLDI2MSBA QCBQcmludFF1ZXJ5UmVzdWx0cyhQR3Jlc3VsdCAqcmVzdWx0cykNCiAJCWRl ZmF1bHQ6DQogCQkJc3VjY2VzcyA9IGZhbHNlOw0KIAkJCXBnX2xvZ19lcnJv cigidW5leHBlY3RlZCBQUXJlc3VsdFN0YXR1czogJWQiLA0KLQkJCQkJCSBQ UXJlc3VsdFN0YXR1cyhyZXN1bHRzKSk7DQorCQkJCQkJIFBRcmVzdWx0U3Rh dHVzKHJlc3VsdCkpOw0KIAkJCWJyZWFrOw0KIAl9DQogDQotCWZmbHVzaChw c2V0LnF1ZXJ5Rm91dCk7DQorCWZmbHVzaChwcmludFF1ZXJ5Rm91dCA/IHBy aW50UXVlcnlGb3V0IDogcHNldC5xdWVyeUZvdXQpOw0KIA0KIAlyZXR1cm4g c3VjY2VzczsNCiB9DQogDQorLyoNCisgKiBEYXRhIHN0cnVjdHVyZSBhbmQg ZnVuY3Rpb25zIHRvIHJlY29yZCBub3RpY2VzIHdoaWxlIHRoZXkgYXJlDQor ICogZW1pdHRlZCwgc28gdGhhdCB0aGV5IGNhbiBiZSBzaG93biBsYXRlci4N CisgKg0KKyAqIFdlIG5lZWQgdG8ga25vdyB3aGljaCByZXN1bHQgaXMgbGFz dCwgd2hpY2ggcmVxdWlyZXMgdG8gZXh0cmFjdA0KKyAqIG9uZSByZXN1bHQg aW4gYWR2YW5jZSwgaGVuY2UgdHdvIGJ1ZmZlcnMgYXJlIG5lZWRlZC4NCisg Ki8NCit0eXBlZGVmIHN0cnVjdCB7DQorCVBRRXhwQnVmZmVyRGF0YQltZXNz YWdlc1syXTsNCisJaW50CQkJCWN1cnJlbnQ7DQorfSB0X25vdGljZV9tZXNz YWdlczsNCisNCisvKg0KKyAqIFN0b3JlIG5vdGljZXMgaW4gYXBwcm9wcmlh dGUgYnVmZmVyLCBmb3IgbGF0ZXIgZGlzcGxheS4NCisgKi8NCitzdGF0aWMg dm9pZA0KK0FwcGVuZE5vdGljZU1lc3NhZ2Uodm9pZCAqYXJnLCBjb25zdCBj aGFyICptc2cpDQorew0KKwl0X25vdGljZV9tZXNzYWdlcyAqbm90ZXMgPSAo dF9ub3RpY2VfbWVzc2FnZXMqKSBhcmc7DQorCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZub3Rlcy0+bWVzc2FnZXNbbm90ZXMtPmN1cnJlbnRdLCBtc2cpOw0K K30NCisNCisvKg0KKyAqIFNob3cgbm90aWNlcyBzdG9yZWQgaW4gYnVmZmVy LCB3aGljaCBpcyB0aGVuIHJlc2V0Lg0KKyAqLw0KK3N0YXRpYyB2b2lkDQor U2hvd05vdGljZU1lc3NhZ2UodF9ub3RpY2VfbWVzc2FnZXMgKm5vdGVzKQ0K K3sNCisJUFFFeHBCdWZmZXJEYXRhCSpjdXJyZW50ID0gJm5vdGVzLT5tZXNz YWdlc1tub3Rlcy0+Y3VycmVudF07DQorCWlmICgqY3VycmVudC0+ZGF0YSAh PSAnXDAnKQ0KKwkJcGdfbG9nX2luZm8oIiVzIiwgY3VycmVudC0+ZGF0YSk7 DQorCXJlc2V0UFFFeHBCdWZmZXIoY3VycmVudCk7DQorfQ0KKw0KKy8qDQor ICogU2VuZFF1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHM6IHV0aWxpdHkgZnVuY3Rp b24gZm9yIHVzZSBieSBTZW5kUXVlcnkoKQ0KKyAqIGFuZCBQU1FMZXhlY1dh dGNoKCkuDQorICoNCisgKiBTZW5kcyBxdWVyeSBhbmQgY3ljbGVzIHRocm91 Z2ggUEdyZXN1bHQgb2JqZWN0cy4NCisgKg0KKyAqIFdoZW4gbm90IHVuZGVy IFx3YXRjaCBhbmQgaWYgb3VyIGNvbW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBh IENPUFkgRlJPTSBTVERJTg0KKyAqIG9yIENPUFkgVE8gU1RET1VULCB0aGUg UEdyZXN1bHQgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIGNvbW1hbmRzIG11c3Qg YmUNCisgKiBwcm9jZXNzZWQgYnkgcHJvdmlkaW5nIGFuIGlucHV0IG9yIG91 dHB1dCBzdHJlYW0uICBJbiB0aGF0IGV2ZW50LCB3ZSdsbA0KKyAqIG1hcnNo YWwgZGF0YSBmb3IgdGhlIENPUFkuDQorICoNCisgKiBGb3Igb3RoZXIgY29t bWFuZHMsIHRoZSByZXN1bHRzIGFyZSBwcm9jZXNzZWQgbm9ybWFsbHksIGRl cGVuZGluZyBvbiB0aGVpcg0KKyAqIHN0YXR1cy4NCisgKg0KKyAqIFJldHVy bnMgMSBvbiBjb21wbGV0ZSBzdWNjZXNzLCAwIG9uIGludGVycnVwdCBhbmQg LTEgb3IgZXJyb3JzLiAgUG9zc2libGUNCisgKiBmYWlsdXJlIG1vZGVzIGlu Y2x1ZGUgcHVyZWx5IGNsaWVudC1zaWRlIHByb2JsZW1zOyBjaGVjayB0aGUg dHJhbnNhY3Rpb24NCisgKiBzdGF0dXMgZm9yIHRoZSBzZXJ2ZXItc2lkZSBv cGluaW9uLg0KKyAqDQorICogTm90ZSB0aGF0IG9uIGEgY29tYmluZWQgcXVl cnksIGZhaWx1cmUgZG9lcyBub3QgbWVhbiB0aGF0IG5vdGhpbmcgd2FzDQor ICogY29tbWl0dGVkLg0KKyAqLw0KK3N0YXRpYyBpbnQNCitTZW5kUXVlcnlB bmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICpw ZWxhcHNlZF9tc2VjLA0KKwlib29sIGlzX3dhdGNoLCBjb25zdCBwcmludFF1 ZXJ5T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlGb3V0LCBib29sICp0eF9l bmRlZCkNCit7DQorCWJvb2wJCQkJdGltaW5nID0gcHNldC50aW1pbmc7DQor CWJvb2wJCQkJc3VjY2VzczsNCisJaW5zdHJfdGltZQkJCWJlZm9yZTsNCisJ UEdyZXN1bHQJCSAgICpyZXN1bHQ7DQorCXRfbm90aWNlX21lc3NhZ2VzCW5v dGVzOw0KKw0KKwlpZiAodGltaW5nKQ0KKwkJSU5TVFJfVElNRV9TRVRfQ1VS UkVOVChiZWZvcmUpOw0KKw0KKwlzdWNjZXNzID0gUFFzZW5kUXVlcnkocHNl dC5kYiwgcXVlcnkpOw0KKw0KKwlpZiAoIXN1Y2Nlc3MpDQorCXsNCisJCWNv bnN0IGNoYXIgKmVycm9yID0gUFFlcnJvck1lc3NhZ2UocHNldC5kYik7DQor DQorCQlpZiAoc3RybGVuKGVycm9yKSkNCisJCQlwZ19sb2dfaW5mbygiJXMi LCBlcnJvcik7DQorDQorCQlDaGVja0Nvbm5lY3Rpb24oKTsNCisNCisJCXJl dHVybiAtMTsNCisJfQ0KKw0KKwkvKg0KKwkgKiBJZiBTSUdJTlQgaXMgc2Vu dCB3aGlsZSB0aGUgcXVlcnkgaXMgcHJvY2Vzc2luZywgdGhlIGludGVycnVw dCB3aWxsIGJlDQorCSAqIGNvbnN1bWVkLiAgVGhlIHVzZXIncyBpbnRlbnRp b24sIHRob3VnaCwgaXMgdG8gY2FuY2VsIHRoZSBlbnRpcmUgd2F0Y2gNCisJ ICogcHJvY2Vzcywgc28gZGV0ZWN0IGEgc2VudCBjYW5jZWxsYXRpb24gcmVx dWVzdCBhbmQgZXhpdCBpbiB0aGlzIGNhc2UuDQorCSAqLw0KKwlpZiAoaXNf d2F0Y2ggJiYgY2FuY2VsX3ByZXNzZWQpDQorCXsNCisJCUNsZWFyT3JTYXZl QWxsUmVzdWx0cygpOw0KKwkJcmV0dXJuIDA7DQorCX0NCisNCisJLyogaW50 ZXJjZXB0IG5vdGljZXMgKi8NCisJbm90ZXMuY3VycmVudCA9IDA7DQorCWlu aXRQUUV4cEJ1ZmZlcigmbm90ZXMubWVzc2FnZXNbMF0pOw0KKwlpbml0UFFF eHBCdWZmZXIoJm5vdGVzLm1lc3NhZ2VzWzFdKTsNCisJUFFzZXROb3RpY2VQ cm9jZXNzb3IocHNldC5kYiwgQXBwZW5kTm90aWNlTWVzc2FnZSwgJm5vdGVz KTsNCisNCisJLyogZmlyc3QgcmVzdWx0ICovDQorCXJlc3VsdCA9IFBRZ2V0 UmVzdWx0KHBzZXQuZGIpOw0KKw0KKwl3aGlsZSAocmVzdWx0ICE9IE5VTEwp DQorCXsNCisJCUV4ZWNTdGF0dXNUeXBlIHJlc3VsdF9zdGF0dXM7DQorCQlQ R3Jlc3VsdCAgICpuZXh0X3Jlc3VsdDsNCisJCWJvb2wJCWxhc3Q7DQorDQor CQlpZiAoIUFjY2VwdFJlc3VsdChyZXN1bHQsIGZhbHNlKSkNCisJCXsNCisJ CQkvKg0KKwkJCSAqIFNvbWUgZXJyb3Igb2NjdXJlZCwgZWl0aGVyIGEgc2Vy dmVyLXNpZGUgZmFpbHVyZSBvcg0KKwkJCSAqIGEgZmFpbHVyZSB0byBzdWJt aXQgdGhlIGNvbW1hbmQgc3RyaW5nLiAgUmVjb3JkIHRoYXQuDQorCQkJICov DQorCQkJY29uc3QgY2hhciAqZXJyb3IgPSBQUWVycm9yTWVzc2FnZShwc2V0 LmRiKTsNCisNCisJCQlTaG93Tm90aWNlTWVzc2FnZSgmbm90ZXMpOw0KKwkJ CWlmIChzdHJsZW4oZXJyb3IpKQ0KKwkJCXsNCisJCQkJcGdfbG9nX2luZm8o IiVzIiwgZXJyb3IpOw0KKw0KKwkJCQkvKg0KKwkJCQkgKiBPbiBjb25uZWN0 aW9uIGxvc3MgYW5vdGhlciByZXN1bHQgd2l0aCBhIG1lc3NhZ2Ugd2lsbCBi ZQ0KKwkJCQkgKiBnZW5lcmF0ZWQsIHdlIGRvIG5vdCB3YW50IHRvIHNlZSB0 aGlzIGVycm9yIGFnYWluLg0KKwkJCQkgKi8NCisJCQkJUFFjbGVhckVycm9y TWVzc2FnZShwc2V0LmRiKTsNCisJCQl9DQorCQkJQ2hlY2tDb25uZWN0aW9u KCk7DQorCQkJaWYgKCFpc193YXRjaCkNCisJCQkJU2V0UmVzdWx0VmFyaWFi bGVzKHJlc3VsdCwgZmFsc2UpOw0KKwkJCUNsZWFyT3JTYXZlUmVzdWx0KHJl c3VsdCk7DQorCQkJc3VjY2VzcyA9IGZhbHNlOw0KKw0KKwkJCS8qIGFuZCBz d2l0Y2ggdG8gbmV4dCByZXN1bHQgKi8NCisJCQlyZXN1bHRfc3RhdHVzID0g UFFyZXN1bHRTdGF0dXMocmVzdWx0KTsNCisJCQlpZiAocmVzdWx0X3N0YXR1 cyA9PSBQR1JFU19DT1BZX0JPVEggfHwNCisJCQkJcmVzdWx0X3N0YXR1cyA9 PSBQR1JFU19DT1BZX09VVCB8fA0KKwkJCQlyZXN1bHRfc3RhdHVzID09IFBH UkVTX0NPUFlfSU4pDQorCQkJCS8qDQorCQkJCSAqIEhtbW0uLi4gZm9yIHNv bWUgb2JzY3VyZSByZWFzb24gUFFnZXRSZXN1bHQgZG9lcyAqbm90Kg0KKwkJ CQkgKiByZXR1cm4gYSBOVUxMIGluIHRoZXNlIGNhc2VzIGRlc3BpdGUgdGhl IHJlc3VsdCBoYXZpbmcNCisJCQkJICogYmVlbiBjbGVhcmVkLCBidXQga2Vl cHMgcmV0dXJuaW5nIGFuICJlbXB0eSIgcmVzdWx0IHRoYXQNCisJCQkJICog d2UgaGF2ZSB0byBpZ25vcmUgbWFudWFsbHkuDQorCQkJCSAqLw0KKwkJCQly ZXN1bHQgPSBOVUxMOw0KKwkJCWVsc2UNCisJCQkJcmVzdWx0ID0gUFFnZXRS ZXN1bHQocHNldC5kYik7DQorDQorCQkJY29udGludWU7DQorCQl9DQorCQll bHNlIGlmICh0eF9lbmRlZCAhPSBOVUxMICYmICEgKnR4X2VuZGVkKQ0KKwkJ ew0KKwkJCS8qIG9uIHN1Y2Nlc3MsIHRlbGwgd2hldGhlciB0aGUgImN1cnJl bnQiIHRyYW5zYWN0aW9uIHNlcXVlbmNlIGVuZGVkICovDQorCQkJY29uc3Qg Y2hhciAqY21kID0gUFFjbWRTdGF0dXMocmVzdWx0KTsNCisJCQkqdHhfZW5k ZWQgPSBzdHJjbXAoY21kLCAiQ09NTUlUIikgPT0gMCB8fCBzdHJjbXAoY21k LCAiUk9MTEJBQ0siKSA9PSAwIHx8DQorCQkJCXN0cmNtcChjbWQsICJTQVZF UE9JTlQiKSA9PSAwIHx8IHN0cmNtcChjbWQsICJSRUxFQVNFIikgPT0gMDsN CisJCX0NCisNCisJCXJlc3VsdF9zdGF0dXMgPSBQUXJlc3VsdFN0YXR1cyhy ZXN1bHQpOw0KKw0KKwkJLyogbXVzdCBoYW5kbGUgQ09QWSBiZWZvcmUgY2hh bmdpbmcgdGhlIGN1cnJlbnQgcmVzdWx0ICovDQorCQlBc3NlcnQocmVzdWx0 X3N0YXR1cyAhPSBQR1JFU19DT1BZX0JPVEgpOw0KKwkJaWYgKHJlc3VsdF9z dGF0dXMgPT0gUEdSRVNfQ09QWV9JTiB8fA0KKwkJCXJlc3VsdF9zdGF0dXMg PT0gUEdSRVNfQ09QWV9PVVQpDQorCQl7DQorCQkJU2hvd05vdGljZU1lc3Nh Z2UoJm5vdGVzKTsNCisNCisJCQlpZiAoaXNfd2F0Y2gpDQorCQkJew0KKwkJ CQlDbGVhck9yU2F2ZUFsbFJlc3VsdHMoKTsNCisJCQkJcGdfbG9nX2Vycm9y KCJcXHdhdGNoIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSIpOw0KKwkJCQly ZXR1cm4gLTE7DQorCQkJfQ0KKw0KKwkJCS8qIHVzZSBub3JtYWwgbm90aWNl IHByb2Nlc3NvciBkdXJpbmcgQ09QWSAqLw0KKwkJCVBRc2V0Tm90aWNlUHJv Y2Vzc29yKHBzZXQuZGIsIE5vdGljZVByb2Nlc3NvciwgTlVMTCk7DQorDQor CQkJc3VjY2VzcyAmPSBIYW5kbGVDb3B5UmVzdWx0KCZyZXN1bHQpOw0KKw0K KwkJCVBRc2V0Tm90aWNlUHJvY2Vzc29yKHBzZXQuZGIsIEFwcGVuZE5vdGlj ZU1lc3NhZ2UsICZub3Rlcyk7DQorCQl9DQorDQorCQkvKg0KKwkJICogQ2hl Y2sgUFFnZXRSZXN1bHQoKSBhZ2Fpbi4gIEluIHRoZSB0eXBpY2FsIGNhc2Ug b2YgYSBzaW5nbGUtY29tbWFuZA0KKwkJICogc3RyaW5nLCBpdCB3aWxsIHJl dHVybiBOVUxMLiAgT3RoZXJ3aXNlLCB3ZSdsbCBoYXZlIG90aGVyIHJlc3Vs dHMNCisJCSAqIHRvIHByb2Nlc3MuIFdlIG5lZWQgdG8gZG8gdGhhdCB0byBj aGVjayB3aGV0aGVyIHRoaXMgaXMgdGhlIGxhc3QuDQorCQkgKi8NCisJCW5v dGVzLmN1cnJlbnQgXj0gMTsNCisJCW5leHRfcmVzdWx0ID0gUFFnZXRSZXN1 bHQocHNldC5kYik7DQorCQlub3Rlcy5jdXJyZW50IF49IDE7DQorCQlsYXN0 ID0gKG5leHRfcmVzdWx0ID09IE5VTEwpOw0KKw0KKwkJLyoNCisJCSAqIEdl dCB0aW1pbmcgbWVhc3VyZSBiZWZvcmUgcHJpbnRpbmcgdGhlIGxhc3QgcmVz dWx0Lg0KKwkJICoNCisJCSAqIEl0IHdpbGwgaW5jbHVkZSB0aGUgZGlzcGxh eSBvZiBwcmV2aW91cyByZXN1bHRzLCBpZiBhbnkuDQorCQkgKiBUaGlzIGNh bm5vdCBiZSBoZWxwZWQgYmVjYXVzZSB0aGUgc2VydmVyIGdvZXMgb24gcHJv Y2Vzc2luZw0KKwkJICogZnVydGhlciBxdWVyaWVzIGFueXdheSB3aGlsZSB0 aGUgcHJldmlvdXMgb25lcyBhcmUgYmVpbmcgZGlzcGxheWVkLg0KKwkJICog VGhlIHBhcmFsbGVsIGV4ZWN1dGlvbiBvZiB0aGUgY2xpZW50IGRpc3BsYXkg aGlkZXMgdGhlIHNlcnZlciB0aW1lDQorCQkgKiB3aGVuIGl0IGlzIHNob3J0 ZXIuDQorCQkgKg0KKwkJICogV2l0aCBjb21iaW5lZCBxdWVyaWVzLCB0aW1p bmcgbXVzdCBiZSB1bmRlcnN0b29kIGFzIGFuIHVwcGVyIGJvdW5kDQorCQkg KiBvZiB0aGUgdGltZSBzcGVudCBwcm9jZXNzaW5nIHRoZW0uDQorCQkgKi8N CisJCWlmIChsYXN0ICYmIHRpbWluZykNCisJCXsNCisJCQlpbnN0cl90aW1l CW5vdzsNCisJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKG5vdyk7DQorCQkJ SU5TVFJfVElNRV9TVUJUUkFDVChub3csIGJlZm9yZSk7DQorCQkJKnBlbGFw c2VkX21zZWMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhub3cpOw0KKwkJ fQ0KKw0KKwkJLyogbm90aWNlcyBhbHJlYWR5IHNob3duIGFib3ZlIGZvciBj b3B5ICovDQorCQlTaG93Tm90aWNlTWVzc2FnZSgmbm90ZXMpOw0KKw0KKwkJ LyogdGhpcyBtYXkgb3IgbWF5IG5vdCBwcmludCBzb21ldGhpbmcgZGVwZW5k aW5nIG9uIHNldHRpbmdzICovDQorCQlpZiAocmVzdWx0ICE9IE5VTEwpDQor CQkJc3VjY2VzcyAmPSBIYW5kbGVRdWVyeVJlc3VsdChyZXN1bHQsIGxhc3Qs IGZhbHNlLCBvcHQsIHByaW50UXVlcnlGb3V0KTsNCisNCisJCS8qIHNldCB2 YXJpYWJsZXMgb24gbGFzdCByZXN1bHQgaWYgYWxsIHdlbnQgd2VsbCAqLw0K KwkJaWYgKCFpc193YXRjaCAmJiBsYXN0ICYmIHN1Y2Nlc3MpDQorCQkJU2V0 UmVzdWx0VmFyaWFibGVzKHJlc3VsdCwgdHJ1ZSk7DQorDQorCQlDbGVhck9y U2F2ZVJlc3VsdChyZXN1bHQpOw0KKwkJbm90ZXMuY3VycmVudCBePSAxOw0K KwkJcmVzdWx0ID0gbmV4dF9yZXN1bHQ7DQorDQorCQlpZiAoY2FuY2VsX3By ZXNzZWQpDQorCQl7DQorCQkJQ2xlYXJPclNhdmVBbGxSZXN1bHRzKCk7DQor CQkJYnJlYWs7DQorCQl9DQorCX0NCisNCisJLyogcmVzZXQgbm90aWNlIGhv b2sgKi8NCisJUFFzZXROb3RpY2VQcm9jZXNzb3IocHNldC5kYiwgTm90aWNl UHJvY2Vzc29yLCBOVUxMKTsNCisJdGVybVBRRXhwQnVmZmVyKCZub3Rlcy5t ZXNzYWdlc1swXSk7DQorCXRlcm1QUUV4cEJ1ZmZlcigmbm90ZXMubWVzc2Fn ZXNbMV0pOw0KKw0KKwkvKiBtYXkgbmVlZCB0aGlzIHRvIHJlY292ZXIgZnJv bSBjb25uIGxvc3MgZHVyaW5nIENPUFkgKi8NCisJaWYgKCFDaGVja0Nvbm5l Y3Rpb24oKSkNCisJCXJldHVybiAtMTsNCisNCisJcmV0dXJuIGNhbmNlbF9w cmVzc2VkID8gMCA6IHN1Y2Nlc3MgPyAxIDogLTE7DQorfQ0KKw0KIA0KIC8q DQogICogU2VuZFF1ZXJ5OiBzZW5kIHRoZSBxdWVyeSBzdHJpbmcgdG8gdGhl IGJhY2tlbmQNCkBAIC0xMTk0LDEyICsxMzE0LDE0IEBAIGJvb2wNCiBTZW5k UXVlcnkoY29uc3QgY2hhciAqcXVlcnkpDQogew0KIAlib29sCQl0aW1pbmcg PSBwc2V0LnRpbWluZzsNCi0JUEdyZXN1bHQgICAqcmVzdWx0czsNCisJUEdy ZXN1bHQgICAqcmVzdWx0cyA9IE5VTEw7DQogCVBHVHJhbnNhY3Rpb25TdGF0 dXNUeXBlIHRyYW5zYWN0aW9uX3N0YXR1czsNCiAJZG91YmxlCQllbGFwc2Vk X21zZWMgPSAwOw0KIAlib29sCQlPSyA9IGZhbHNlOw0KKwlib29sCQlyZXNf ZXJyb3I7DQogCWludAkJCWk7DQogCWJvb2wJCW9uX2Vycm9yX3JvbGxiYWNr X3NhdmVwb2ludCA9IGZhbHNlOw0KKwlib29sCQl0eF9lbmRlZCA9IGZhbHNl Ow0KIA0KIAlpZiAoIXBzZXQuZGIpDQogCXsNCkBAIC0xMjM4LDgyICsxMzYw LDY5IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkNCiAJCWZmbHVz aChwc2V0LmxvZ2ZpbGUpOw0KIAl9DQogDQorCS8qIGdsb2JhbCBxdWVyeSBj YW5jZWxsYXRpb24gZm9yIHRoaXMgcXVlcnkgKi8NCiAJU2V0Q2FuY2VsQ29u bihwc2V0LmRiKTsNCiANCiAJdHJhbnNhY3Rpb25fc3RhdHVzID0gUFF0cmFu c2FjdGlvblN0YXR1cyhwc2V0LmRiKTsNCiANCisJLyogaXNzdWUgYSBCRUdJ TiBpZiBuZWVkZWQsIGNvcnJlc3BvbmRpbmcgQ09NTUlUL1JPTExCQUNLIGJ5 IHVzZXIgKi8NCiAJaWYgKHRyYW5zYWN0aW9uX3N0YXR1cyA9PSBQUVRSQU5T X0lETEUgJiYNCiAJCSFwc2V0LmF1dG9jb21taXQgJiYNCiAJCSFjb21tYW5k X25vX2JlZ2luKHF1ZXJ5KSkNCiAJew0KLQkJcmVzdWx0cyA9IFBRZXhlYyhw c2V0LmRiLCAiQkVHSU4iKTsNCi0JCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1 bHRzKSAhPSBQR1JFU19DT01NQU5EX09LKQ0KKwkJUEdyZXN1bHQgICAgKnJl c3VsdDsNCisJCXJlc3VsdCA9IFBRZXhlYyhwc2V0LmRiLCAiQkVHSU4iKTsN CisJCXJlc19lcnJvciA9IFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkgIT0gUEdS RVNfQ09NTUFORF9PSzsNCisJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7 DQorDQorCQlpZiAocmVzX2Vycm9yKQ0KIAkJew0KIAkJCXBnX2xvZ19pbmZv KCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsNCi0JCQlDbGVhck9y U2F2ZVJlc3VsdChyZXN1bHRzKTsNCi0JCQlSZXNldENhbmNlbENvbm4oKTsN CiAJCQlnb3RvIHNlbmRxdWVyeV9jbGVhbnVwOw0KIAkJfQ0KLQkJQ2xlYXJP clNhdmVSZXN1bHQocmVzdWx0cyk7DQorDQorCQkvKiBtdXN0IGJlIFBRVFJB TlNfSU5UUkFOUyBhZnRlciBhIEJFR0lOICovDQogCQl0cmFuc2FjdGlvbl9z dGF0dXMgPSBQUXRyYW5zYWN0aW9uU3RhdHVzKHBzZXQuZGIpOw0KIAl9DQog DQorCS8qIGNyZWF0ZSBhdXRvbWF0aWMgc2F2ZXBvaW50IGlmIG5lZWRlZCBh bmQgcG9zc2libGUgKi8NCiAJaWYgKHRyYW5zYWN0aW9uX3N0YXR1cyA9PSBQ UVRSQU5TX0lOVFJBTlMgJiYNCiAJCXBzZXQub25fZXJyb3Jfcm9sbGJhY2sg IT0gUFNRTF9FUlJPUl9ST0xMQkFDS19PRkYgJiYNCiAJCShwc2V0LmN1cl9j bWRfaW50ZXJhY3RpdmUgfHwNCiAJCSBwc2V0Lm9uX2Vycm9yX3JvbGxiYWNr ID09IFBTUUxfRVJST1JfUk9MTEJBQ0tfT04pKQ0KIAl7DQotCQlyZXN1bHRz ID0gUFFleGVjKHBzZXQuZGIsICJTQVZFUE9JTlQgcGdfcHNxbF90ZW1wb3Jh cnlfc2F2ZXBvaW50Iik7DQotCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzdWx0 cykgIT0gUEdSRVNfQ09NTUFORF9PSykNCisJCVBHcmVzdWx0ICAgKnJlc3Vs dDsNCisJCXJlc3VsdCA9IFBRZXhlYyhwc2V0LmRiLCAiU0FWRVBPSU5UIHBn X3BzcWxfdGVtcG9yYXJ5X3NhdmVwb2ludCIpOw0KKwkJcmVzX2Vycm9yID0g UFFyZXN1bHRTdGF0dXMocmVzdWx0KSAhPSBQR1JFU19DT01NQU5EX09LOw0K KwkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0KTsNCisNCisJCWlmIChyZXNf ZXJyb3IpDQogCQl7DQogCQkJcGdfbG9nX2luZm8oIiVzIiwgUFFlcnJvck1l c3NhZ2UocHNldC5kYikpOw0KLQkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3Vs dHMpOw0KLQkJCVJlc2V0Q2FuY2VsQ29ubigpOw0KIAkJCWdvdG8gc2VuZHF1 ZXJ5X2NsZWFudXA7DQogCQl9DQotCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1 bHRzKTsNCisNCiAJCW9uX2Vycm9yX3JvbGxiYWNrX3NhdmVwb2ludCA9IHRy dWU7DQogCX0NCiANCisJLyogcHJvY2VzcyB0aGUgcXVlcnksIG9uZSB3YXkg b3IgdGhlIG90aGVyICovDQogCWlmIChwc2V0LmdkZXNjX2ZsYWcpDQogCXsN CiAJCS8qIERlc2NyaWJlIHF1ZXJ5J3MgcmVzdWx0IGNvbHVtbnMsIHdpdGhv dXQgZXhlY3V0aW5nIGl0ICovDQogCQlPSyA9IERlc2NyaWJlUXVlcnkocXVl cnksICZlbGFwc2VkX21zZWMpOw0KLQkJUmVzZXRDYW5jZWxDb25uKCk7DQog CQlyZXN1bHRzID0gTlVMTDsJCQkvKiBQUWNsZWFyKE5VTEwpIGRvZXMgbm90 aGluZyAqLw0KIAl9DQogCWVsc2UgaWYgKHBzZXQuZmV0Y2hfY291bnQgPD0g MCB8fCBwc2V0LmdleGVjX2ZsYWcgfHwNCiAJCQkgcHNldC5jcm9zc3RhYl9m bGFnIHx8ICFpc19zZWxlY3RfY29tbWFuZChxdWVyeSkpDQogCXsNCiAJCS8q IERlZmF1bHQgZmV0Y2gtaXQtYWxsLWFuZC1wcmludCBtb2RlICovDQotCQlp bnN0cl90aW1lCWJlZm9yZSwNCi0JCQkJCWFmdGVyOw0KLQ0KLQkJaWYgKHRp bWluZykNCi0JCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJlZm9yZSk7DQot DQotCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIHF1ZXJ5KTsNCi0NCi0J CS8qIHRoZXNlIG9wZXJhdGlvbnMgYXJlIGluY2x1ZGVkIGluIHRoZSB0aW1p bmcgcmVzdWx0OiAqLw0KLQkJUmVzZXRDYW5jZWxDb25uKCk7DQotCQlPSyA9 IFByb2Nlc3NSZXN1bHQoJnJlc3VsdHMpOw0KLQ0KLQkJaWYgKHRpbWluZykN Ci0JCXsNCi0JCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGFmdGVyKTsNCi0J CQlJTlNUUl9USU1FX1NVQlRSQUNUKGFmdGVyLCBiZWZvcmUpOw0KLQkJCWVs YXBzZWRfbXNlYyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGFmdGVyKTsN Ci0JCX0NCi0NCi0JCS8qIGJ1dCBwcmludGluZyByZXN1bHRzIGlzbid0OiAq Lw0KLQkJaWYgKE9LICYmIHJlc3VsdHMpDQotCQkJT0sgPSBQcmludFF1ZXJ5 UmVzdWx0cyhyZXN1bHRzKTsNCisJCWludCByZXMgPSBTZW5kUXVlcnlBbmRQ cm9jZXNzUmVzdWx0cyhxdWVyeSwgJmVsYXBzZWRfbXNlYywgZmFsc2UsIE5V TEwsIE5VTEwsICZ0eF9lbmRlZCk7DQorCQlPSyA9IChyZXMgPj0gMCk7DQog CX0NCiAJZWxzZQ0KIAl7DQogCQkvKiBGZXRjaC1pbi1zZWdtZW50cyBtb2Rl ICovDQogCQlPSyA9IEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKHF1ZXJ5LCAmZWxh cHNlZF9tc2VjKTsNCi0JCVJlc2V0Q2FuY2VsQ29ubigpOw0KIAkJcmVzdWx0 cyA9IE5VTEw7CQkJLyogUFFjbGVhcihOVUxMKSBkb2VzIG5vdGhpbmcgKi8N CiAJfQ0KIA0KQEAgLTEzNDYsMTEgKzE0NTUsNyBAQCBTZW5kUXVlcnkoY29u c3QgY2hhciAqcXVlcnkpDQogCQkJCSAqIHNhdmVwb2ludCBpcyBnb25lLiBJ ZiB0aGV5IGlzc3VlZCBhIFNBVkVQT0lOVCwgcmVsZWFzaW5nDQogCQkJCSAq IG91cnMgd291bGQgcmVtb3ZlIHRoZWlycy4NCiAJCQkJICovDQotCQkJCWlm IChyZXN1bHRzICYmDQotCQkJCQkoc3RyY21wKFBRY21kU3RhdHVzKHJlc3Vs dHMpLCAiQ09NTUlUIikgPT0gMCB8fA0KLQkJCQkJIHN0cmNtcChQUWNtZFN0 YXR1cyhyZXN1bHRzKSwgIlNBVkVQT0lOVCIpID09IDAgfHwNCi0JCQkJCSBz dHJjbXAoUFFjbWRTdGF0dXMocmVzdWx0cyksICJSRUxFQVNFIikgPT0gMCB8 fA0KLQkJCQkJIHN0cmNtcChQUWNtZFN0YXR1cyhyZXN1bHRzKSwgIlJPTExC QUNLIikgPT0gMCkpDQorCQkJCWlmICh0eF9lbmRlZCkNCiAJCQkJCXN2cHRj bWQgPSBOVUxMOw0KIAkJCQllbHNlDQogCQkJCQlzdnB0Y21kID0gIlJFTEVB U0UgcGdfcHNxbF90ZW1wb3Jhcnlfc2F2ZXBvaW50IjsNCkBAIC0xMzcyLDE0 ICsxNDc3LDE1IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkNCiAJ CQlQR3Jlc3VsdCAgICpzdnB0cmVzOw0KIA0KIAkJCXN2cHRyZXMgPSBQUWV4 ZWMocHNldC5kYiwgc3ZwdGNtZCk7DQotCQkJaWYgKFBRcmVzdWx0U3RhdHVz KHN2cHRyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spDQorCQkJcmVzX2Vycm9y ID0gUFFyZXN1bHRTdGF0dXMoc3ZwdHJlcykgIT0gUEdSRVNfQ09NTUFORF9P SzsNCisNCisJCQlpZiAocmVzX2Vycm9yKQ0KIAkJCXsNCiAJCQkJcGdfbG9n X2luZm8oIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikpOw0KIAkJCQlD bGVhck9yU2F2ZVJlc3VsdChzdnB0cmVzKTsNCiAJCQkJT0sgPSBmYWxzZTsN CiANCiAJCQkJUFFjbGVhcihyZXN1bHRzKTsNCi0JCQkJUmVzZXRDYW5jZWxD b25uKCk7DQogCQkJCWdvdG8gc2VuZHF1ZXJ5X2NsZWFudXA7DQogCQkJfQ0K IAkJCVBRY2xlYXIoc3ZwdHJlcyk7DQpAQCAtMTQxMCw2ICsxNTE2LDkgQEAg U2VuZFF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5KQ0KIA0KIHNlbmRxdWVyeV9j bGVhbnVwOg0KIA0KKwkvKiBnbG9iYWwgY2FuY2VsbGF0aW9uIHJlc2V0ICov DQorCVJlc2V0Q2FuY2VsQ29ubigpOw0KKw0KIAkvKiByZXNldCBcZydzIG91 dHB1dC10by1maWxlbmFtZSB0cmlnZ2VyICovDQogCWlmIChwc2V0LmdmbmFt ZSkNCiAJew0KQEAgLTE0OTAsNyArMTU5OSw3IEBAIERlc2NyaWJlUXVlcnko Y29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0KIAlQ UWNsZWFyKHJlc3VsdHMpOw0KIA0KIAlyZXN1bHRzID0gUFFkZXNjcmliZVBy ZXBhcmVkKHBzZXQuZGIsICIiKTsNCi0JT0sgPSBBY2NlcHRSZXN1bHQocmVz dWx0cykgJiYNCisJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cywgdHJ1ZSkg JiYNCiAJCShQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSA9PSBQR1JFU19DT01N QU5EX09LKTsNCiAJaWYgKE9LICYmIHJlc3VsdHMpDQogCXsNCkBAIC0xNTM4 LDcgKzE2NDcsNyBAQCBEZXNjcmliZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5 LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJCQlQUWNsZWFyKHJlc3VsdHMp Ow0KIA0KIAkJCXJlc3VsdHMgPSBQUWV4ZWMocHNldC5kYiwgYnVmLmRhdGEp Ow0KLQkJCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdHMpOw0KKwkJCU9LID0g QWNjZXB0UmVzdWx0KHJlc3VsdHMsIHRydWUpOw0KIA0KIAkJCWlmICh0aW1p bmcpDQogCQkJew0KQEAgLTE1NDgsNyArMTY1Nyw3IEBAIERlc2NyaWJlUXVl cnkoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0K IAkJCX0NCiANCiAJCQlpZiAoT0sgJiYgcmVzdWx0cykNCi0JCQkJT0sgPSBQ cmludFF1ZXJ5UmVzdWx0cyhyZXN1bHRzKTsNCisJCQkJT0sgPSBIYW5kbGVR dWVyeVJlc3VsdChyZXN1bHRzLCB0cnVlLCBmYWxzZSwgTlVMTCwgTlVMTCk7 DQogDQogCQkJdGVybVBRRXhwQnVmZmVyKCZidWYpOw0KIAkJfQ0KQEAgLTE2 MDgsNyArMTcxNyw3IEBAIEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKGNvbnN0IGNo YXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJaWYgKFBRdHJh bnNhY3Rpb25TdGF0dXMocHNldC5kYikgPT0gUFFUUkFOU19JRExFKQ0KIAl7 DQogCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsICJCRUdJTiIpOw0KLQkJ T0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cykgJiYNCisJCU9LID0gQWNjZXB0 UmVzdWx0KHJlc3VsdHMsIHRydWUpICYmDQogCQkJKFBRcmVzdWx0U3RhdHVz KHJlc3VsdHMpID09IFBHUkVTX0NPTU1BTkRfT0spOw0KIAkJQ2xlYXJPclNh dmVSZXN1bHQocmVzdWx0cyk7DQogCQlpZiAoIU9LKQ0KQEAgLTE2MjIsNyAr MTczMSw3IEBAIEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKGNvbnN0IGNoYXIgKnF1 ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJCQkJCSAgcXVlcnkpOw0K IA0KIAlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIGJ1Zi5kYXRhKTsNCi0J T0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cykgJiYNCisJT0sgPSBBY2NlcHRS ZXN1bHQocmVzdWx0cywgdHJ1ZSkgJiYNCiAJCShQUXJlc3VsdFN0YXR1cyhy ZXN1bHRzKSA9PSBQR1JFU19DT01NQU5EX09LKTsNCiAJaWYgKCFPSykNCiAJ CVNldFJlc3VsdFZhcmlhYmxlcyhyZXN1bHRzLCBPSyk7DQpAQCAtMTY5NSw3 ICsxODA0LDcgQEAgRXhlY1F1ZXJ5VXNpbmdDdXJzb3IoY29uc3QgY2hhciAq cXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0KIAkJCQlpc19wYWdlciA9 IGZhbHNlOw0KIAkJCX0NCiANCi0JCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1 bHRzKTsNCisJCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzLCB0cnVlKTsN CiAJCQlBc3NlcnQoIU9LKTsNCiAJCQlTZXRSZXN1bHRWYXJpYWJsZXMocmVz dWx0cywgT0spOw0KIAkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdHMpOw0K QEAgLTE4MDQsNyArMTkxMyw3IEBAIGNsZWFudXA6DQogCXJlc3VsdHMgPSBQ UWV4ZWMocHNldC5kYiwgIkNMT1NFIF9wc3FsX2N1cnNvciIpOw0KIAlpZiAo T0spDQogCXsNCi0JCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdHMpICYmDQor CQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzLCB0cnVlKSAmJg0KIAkJCShQ UXJlc3VsdFN0YXR1cyhyZXN1bHRzKSA9PSBQR1JFU19DT01NQU5EX09LKTsN CiAJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdHMpOw0KIAl9DQpAQCAtMTgx NCw3ICsxOTIzLDcgQEAgY2xlYW51cDoNCiAJaWYgKHN0YXJ0ZWRfdHhuKQ0K IAl7DQogCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIE9LID8gIkNPTU1J VCIgOiAiUk9MTEJBQ0siKTsNCi0JCU9LICY9IEFjY2VwdFJlc3VsdChyZXN1 bHRzKSAmJg0KKwkJT0sgJj0gQWNjZXB0UmVzdWx0KHJlc3VsdHMsIHRydWUp ICYmDQogCQkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdHMpID09IFBHUkVTX0NP TU1BTkRfT0spOw0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0cyk7DQog CX0NCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jp bi9wc3FsL2hlbHAuYw0KaW5kZXggOTM3ZDZlOWQ0OS4uODI1MDQyNThkMCAx MDA2NDQNCi0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMNCisrKyBiL3NyYy9i aW4vcHNxbC9oZWxwLmMNCkBAIC00MTMsNiArNDEzLDggQEAgaGVscFZhcmlh Ymxlcyh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpDQogCWZwcmludGYob3V0 cHV0LCBfKCIgIFNFUlZFUl9WRVJTSU9OX05BTUVcbiINCiAJCQkJCSAgIiAg U0VSVkVSX1ZFUlNJT05fTlVNXG4iDQogCQkJCQkgICIgICAgc2VydmVyJ3Mg dmVyc2lvbiAoaW4gc2hvcnQgc3RyaW5nIG9yIG51bWVyaWMgZm9ybWF0KVxu IikpOw0KKwlmcHJpbnRmKG91dHB1dCwgXygiICBTSE9XX0FMTF9SRVNVTFRT XG4iDQorCQkJCQkgICIgICAgc2hvdyBhbGwgcmVzdWx0cyBvZiBhIGNvbWJp bmVkIHF1ZXJ5IChcXDspIGluc3RlYWQgb2Ygb25seSB0aGUgbGFzdFxuIikp Ow0KIAlmcHJpbnRmKG91dHB1dCwgXygiICBTSE9XX0NPTlRFWFRcbiINCiAJ CQkJCSAgIiAgICBjb250cm9scyBkaXNwbGF5IG9mIG1lc3NhZ2UgY29udGV4 dCBmaWVsZHMgW25ldmVyLCBlcnJvcnMsIGFsd2F5c11cbiIpKTsNCiAJZnBy aW50ZihvdXRwdXQsIF8oIiAgU0lOR0xFTElORVxuIg0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC9zZXR0aW5ncy5oIGIvc3JjL2Jpbi9wc3FsL3NldHRp bmdzLmgNCmluZGV4IGY2MTRiMjZlMmMuLjU3YmRkZWM1YTUgMTAwNjQ0DQot LS0gYS9zcmMvYmluL3BzcWwvc2V0dGluZ3MuaA0KKysrIGIvc3JjL2Jpbi9w c3FsL3NldHRpbmdzLmgNCkBAIC0xNDgsNiArMTQ4LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgX3BzcWxTZXR0aW5ncw0KIAljb25zdCBjaGFyICpwcm9tcHQyOw0K IAljb25zdCBjaGFyICpwcm9tcHQzOw0KIAlQR1ZlcmJvc2l0eSB2ZXJib3Np dHk7CQkvKiBjdXJyZW50IGVycm9yIHZlcmJvc2l0eSBsZXZlbCAqLw0KKwli b29sCQlzaG93X2FsbF9yZXN1bHRzOw0KIAlQR0NvbnRleHRWaXNpYmlsaXR5 IHNob3dfY29udGV4dDsJLyogY3VycmVudCBjb250ZXh0IGRpc3BsYXkgbGV2 ZWwgKi8NCiB9IFBzcWxTZXR0aW5nczsNCiANCmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvc3RhcnR1cC5jIGIvc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYw0K aW5kZXggYmU5ZGVjNzQ5ZC4uZDA4YjE1ODg2YSAxMDA2NDQNCi0tLSBhL3Ny Yy9iaW4vcHNxbC9zdGFydHVwLmMNCisrKyBiL3NyYy9iaW4vcHNxbC9zdGFy dHVwLmMNCkBAIC0yMDMsNiArMjAzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQ0KIAlTZXRWYXJpYWJsZShwc2V0LnZhcnMsICJQUk9NUFQx IiwgREVGQVVMVF9QUk9NUFQxKTsNCiAJU2V0VmFyaWFibGUocHNldC52YXJz LCAiUFJPTVBUMiIsIERFRkFVTFRfUFJPTVBUMik7DQogCVNldFZhcmlhYmxl KHBzZXQudmFycywgIlBST01QVDMiLCBERUZBVUxUX1BST01QVDMpOw0KKwlT ZXRWYXJpYWJsZUJvb2wocHNldC52YXJzLCAiU0hPV19BTExfUkVTVUxUUyIp Ow0KIA0KIAlwYXJzZV9wc3FsX29wdGlvbnMoYXJnYywgYXJndiwgJm9wdGlv bnMpOw0KIA0KQEAgLTExNTAsNiArMTE1MSwxMiBAQCB2ZXJib3NpdHlfaG9v ayhjb25zdCBjaGFyICpuZXd2YWwpDQogCXJldHVybiB0cnVlOw0KIH0NCiAN CitzdGF0aWMgYm9vbA0KK3Nob3dfYWxsX3Jlc3VsdHNfaG9vayhjb25zdCBj aGFyICpuZXd2YWwpDQorew0KKwlyZXR1cm4gUGFyc2VWYXJpYWJsZUJvb2wo bmV3dmFsLCAiU0hPV19BTExfUkVTVUxUUyIsICZwc2V0LnNob3dfYWxsX3Jl c3VsdHMpOw0KK30NCisNCiBzdGF0aWMgY2hhciAqDQogc2hvd19jb250ZXh0 X3N1YnN0aXR1dGVfaG9vayhjaGFyICpuZXd2YWwpDQogew0KQEAgLTEyNTEs NiArMTI1OCw5IEBAIEVzdGFibGlzaFZhcmlhYmxlU3BhY2Uodm9pZCkNCiAJ U2V0VmFyaWFibGVIb29rcyhwc2V0LnZhcnMsICJWRVJCT1NJVFkiLA0KIAkJ CQkJIHZlcmJvc2l0eV9zdWJzdGl0dXRlX2hvb2ssDQogCQkJCQkgdmVyYm9z aXR5X2hvb2spOw0KKwlTZXRWYXJpYWJsZUhvb2tzKHBzZXQudmFycywgIlNI T1dfQUxMX1JFU1VMVFMiLA0KKwkJCQkJIGJvb2xfc3Vic3RpdHV0ZV9ob29r LA0KKwkJCQkJIHNob3dfYWxsX3Jlc3VsdHNfaG9vayk7DQogCVNldFZhcmlh YmxlSG9va3MocHNldC52YXJzLCAiU0hPV19DT05URVhUIiwNCiAJCQkJCSBz aG93X2NvbnRleHRfc3Vic3RpdHV0ZV9ob29rLA0KIAkJCQkJIHNob3dfY29u dGV4dF9ob29rKTsNCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdC8wMDFf YmFzaWMucGwgYi9zcmMvYmluL3BzcWwvdC8wMDFfYmFzaWMucGwNCmluZGV4 IDllMTRkYzcxZmYuLjc3YzYwYTBlN2IgMTAwNjQ0DQotLS0gYS9zcmMvYmlu L3BzcWwvdC8wMDFfYmFzaWMucGwNCisrKyBiL3NyYy9iaW4vcHNxbC90LzAw MV9iYXNpYy5wbA0KQEAgLTYsNyArNiw4IEBAIHVzZSB3YXJuaW5nczsNCiAN CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsNCiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7DQotdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4g MjU7DQorDQordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMjk7DQogDQogcHJv Z3JhbV9oZWxwX29rKCdwc3FsJyk7DQogcHJvZ3JhbV92ZXJzaW9uX29rKCdw c3FsJyk7DQpAQCAtODAsMyArODEsMTkgQEAgcHNxbF9saWtlKA0KIAknaGFu ZGxpbmcgb2YgdW5leHBlY3RlZCBQUXJlc3VsdFN0YXR1cycsDQogCSdTVEFS VF9SRVBMSUNBVElPTiAwLzAnLA0KIAl1bmRlZiwgcXIvdW5leHBlY3RlZCBQ UXJlc3VsdFN0YXR1czogOCQvKTsNCisNCisjIFRlc3Qgdm9sdW50YXJ5IGNy YXNoDQorbXkgKCRyZXQsICRvdXQsICRlcnIpID0gJG5vZGUtPnBzcWwoDQor CSdwb3N0Z3JlcycsDQorCSJTRUxFQ1QgJ2JlZm9yZScgQVMgcnVubmluZztc biIgLg0KKwkiU0VMRUNUIHBnX3Rlcm1pbmF0ZV9iYWNrZW5kKHBnX2JhY2tl bmRfcGlkKCkpO1xuIiAuDQorCSJTRUxFQ1QgJ0FGVEVSJyBBUyBub3RfcnVu bmluZztcbiIpOw0KKw0KK2lzKCRyZXQsIDIsICJzZXJ2ZXIgc3RvcHBlZCIp Ow0KK2xpa2UoJG91dCwgcXIvYmVmb3JlLywgIm91dHB1dCBiZWZvcmUgY3Jh c2giKTsNCitvaygkb3V0ICF+IHFyL0FGVEVSLywgIm5vIG91dHB1dCBhZnRl ciBjcmFzaCIpOw0KK2lzKCRlcnIsICdwc3FsOjxzdGRpbj46MjogRkFUQUw6 ICB0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byBhZG1pbmlzdHJhdG9y IGNvbW1hbmQNCitwc3FsOjxzdGRpbj46Mjogc2VydmVyIGNsb3NlZCB0aGUg Y29ubmVjdGlvbiB1bmV4cGVjdGVkbHkNCisJVGhpcyBwcm9iYWJseSBtZWFu cyB0aGUgc2VydmVyIHRlcm1pbmF0ZWQgYWJub3JtYWxseQ0KKwliZWZvcmUg b3Igd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4NCitwc3FsOjxzdGRp bj46MjogZmF0YWw6IGNvbm5lY3Rpb24gdG8gc2VydmVyIHdhcyBsb3N0Jywg ImV4cGVjdGVkIGVycm9yIG1lc3NhZ2UiKTsNCmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMNCmluZGV4IDM5YmU2ZjU1NmEuLmZiZTZiMmI1NzkgMTAwNjQ0 DQotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMNCisrKyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuYw0KQEAgLTQzNDcsNyArNDM0Nyw3 IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpDQogCQltYXRjaGVzID0gY29tcGxldGVfZnJvbV92YXJp YWJsZXModGV4dCwgIiIsICIiLCBmYWxzZSk7DQogCWVsc2UgaWYgKFRhaWxN YXRjaGVzQ1MoIlxcc2V0IiwgTWF0Y2hBbnkpKQ0KIAl7DQotCQlpZiAoVGFp bE1hdGNoZXNDUygiQVVUT0NPTU1JVHxPTl9FUlJPUl9TVE9QfFFVSUVUfCIN CisJCWlmIChUYWlsTWF0Y2hlc0NTKCJBVVRPQ09NTUlUfE9OX0VSUk9SX1NU T1B8UVVJRVR8U0hPV19BTExfUkVTVUxUU3wiDQogCQkJCQkJICAiU0lOR0xF TElORXxTSU5HTEVTVEVQIikpDQogCQkJQ09NUExFVEVfV0lUSF9DUygib24i LCAib2ZmIik7DQogCQllbHNlIGlmIChUYWlsTWF0Y2hlc0NTKCJDT01QX0tF WVdPUkRfQ0FTRSIpKQ0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2V4cG9ydHMudHh0IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0 cy50eHQNCmluZGV4IGU4YmNjODgzNzAuLjJhM2QyOWFlZTUgMTAwNjQ0DQot LS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dA0KKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQNCkBAIC0xODYsMyAr MTg2LDQgQEAgUFFwaXBlbGluZVN0YXR1cyAgICAgICAgICAxODMNCiBQUXNl dFRyYWNlRmxhZ3MgICAgICAgICAgIDE4NA0KIFBRbWJsZW5Cb3VuZGVkICAg ICAgICAgICAgMTg1DQogUFFzZW5kRmx1c2hSZXF1ZXN0ICAgICAgICAxODYN CitQUWNsZWFyRXJyb3JNZXNzYWdlCSAgICAgIDE4Nw0KZGlmZiAtLWdpdCBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYw0KaW5kZXggNzI5MTQxMTZlZS4u MDk5YzI3MTVjMCAxMDA2NDQNCi0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWNvbm5lY3QuYw0KKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt Y29ubmVjdC5jDQpAQCAtNjc4Miw2ICs2NzgyLDEyIEBAIFBRZXJyb3JNZXNz YWdlKGNvbnN0IFBHY29ubiAqY29ubikNCiAJcmV0dXJuIGNvbm4tPmVycm9y TWVzc2FnZS5kYXRhOw0KIH0NCiANCit2b2lkDQorUFFjbGVhckVycm9yTWVz c2FnZShQR2Nvbm4gKmNvbm4pDQorew0KKwlyZXNldFBRRXhwQnVmZmVyKCZj b25uLT5lcnJvck1lc3NhZ2UpOw0KK30NCisNCiAvKg0KICAqIEluIFdpbmRv d3MsIHNvY2tldCB2YWx1ZXMgYXJlIHVuc2lnbmVkLCBhbmQgYW4gaW52YWxp ZCBzb2NrZXQgdmFsdWUNCiAgKiAoSU5WQUxJRF9TT0NLRVQpIGlzIH4wLCB3 aGljaCBlcXVhbHMgLTEgaW4gY29tcGFyaXNvbnMgKHdpdGggbm8gY29tcGls ZXINCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1m ZS5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaA0KaW5kZXgg MjBlYjg1NWFiYy4uYjczYjQ0ZTgxNyAxMDA2NDQNCi0tLSBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgNCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2xpYnBxLWZlLmgNCkBAIC0zNDcsNiArMzQ3LDcgQEAgZXh0ZXJu IGNvbnN0IGNoYXIgKlBRcGFyYW1ldGVyU3RhdHVzKGNvbnN0IFBHY29ubiAq Y29ubiwNCiBleHRlcm4gaW50CVBRcHJvdG9jb2xWZXJzaW9uKGNvbnN0IFBH Y29ubiAqY29ubik7DQogZXh0ZXJuIGludAlQUXNlcnZlclZlcnNpb24oY29u c3QgUEdjb25uICpjb25uKTsNCiBleHRlcm4gY2hhciAqUFFlcnJvck1lc3Nh Z2UoY29uc3QgUEdjb25uICpjb25uKTsNCitleHRlcm4gdm9pZAlQUWNsZWFy RXJyb3JNZXNzYWdlKFBHY29ubiAqY29ubik7DQogZXh0ZXJuIGludAlQUXNv Y2tldChjb25zdCBQR2Nvbm4gKmNvbm4pOw0KIGV4dGVybiBpbnQJUFFiYWNr ZW5kUElEKGNvbnN0IFBHY29ubiAqY29ubik7DQogZXh0ZXJuIFBHcGlwZWxp bmVTdGF0dXMgUFFwaXBlbGluZVN0YXR1cyhjb25zdCBQR2Nvbm4gKmNvbm4p Ow0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eXNlbGVjdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHlz ZWxlY3Qub3V0DQppbmRleCA3Mjg2NWZlMWViLi5iYjllMDI2ZjkxIDEwMDY0 NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5c2VsZWN0 Lm91dA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5c2Vs ZWN0Lm91dA0KQEAgLTEyNiw3ICsxMjYsNyBAQCBjb3B5IChzZWxlY3QgMSkg dG8gc3Rkb3V0XDsgc2VsZWN0IDEvMDsJLS0gcm93LCB0aGVuIGVycm9yDQog RVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvDQogc2VsZWN0IDEvMFw7IGNvcHkg KHNlbGVjdCAxKSB0byBzdGRvdXQ7IC0tIGVycm9yIG9ubHkNCiBFUlJPUjog IGRpdmlzaW9uIGJ5IHplcm8NCi1jb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0 XDsgY29weSAoc2VsZWN0IDIpIHRvIHN0ZG91dFw7IHNlbGVjdCAwXDsgc2Vs ZWN0IDM7IC0tIDEgMiAzDQorY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dFw7 IGNvcHkgKHNlbGVjdCAyKSB0byBzdGRvdXRcOyBzZWxlY3QgM1w7IHNlbGVj dCA0OyAtLSAxIDIgMyA0DQogMQ0KIDINCiAgP2NvbHVtbj8gDQpAQCAtMTM0 LDggKzEzNCwxOCBAQCBjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgY29w eSAoc2VsZWN0IDIpIHRvIHN0ZG91dFw7IHNlbGVjdCAwXDsgc2VsZWN0IDM7 IC0tDQogICAgICAgICAzDQogKDEgcm93KQ0KIA0KKyA/Y29sdW1uPyANCist LS0tLS0tLS0tDQorICAgICAgICA0DQorKDEgcm93KQ0KKw0KIGNyZWF0ZSB0 YWJsZSB0ZXN0MyAoYyBpbnQpOw0KLXNlbGVjdCAwXDsgY29weSB0ZXN0MyBm cm9tIHN0ZGluXDsgY29weSB0ZXN0MyBmcm9tIHN0ZGluXDsgc2VsZWN0IDE7 IC0tIDENCitzZWxlY3QgMFw7IGNvcHkgdGVzdDMgZnJvbSBzdGRpblw7IGNv cHkgdGVzdDMgZnJvbSBzdGRpblw7IHNlbGVjdCAxOyAtLSAwIDENCisgP2Nv bHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAgMA0KKygxIHJvdykNCisN CiAgP2NvbHVtbj8gDQogLS0tLS0tLS0tLQ0KICAgICAgICAgMQ0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0DQppbmRleCA2NDI4 ZWJjNTA3Li40MjhlZTk0MWI5IDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wc3FsLm91dA0KKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wc3FsLm91dA0KQEAgLTUyOTAsMyArNTI5MCwxMjkgQEAg RVJST1I6ICByZWxhdGlvbiAibm90ZXhpc3RzIiBkb2VzIG5vdCBleGlzdA0K IExJTkUgMTogU0VMRUNUICogRlJPTSBub3RleGlzdHM7DQogICAgICAgICAg ICAgICAgICAgICAgIF4NCiBTVEFURU1FTlQ6ICBTRUxFQ1QgKiBGUk9NIG5v dGV4aXN0czsNCisgb25lIA0KKy0tLS0tDQorICAgMQ0KKygxIHJvdykNCisN CitOT1RJQ0U6ICB3YXJuIDEuNQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5j dGlvbiB3YXJuKHRleHQpIGxpbmUgMiBhdCBSQUlTRQ0KKyB3YXJuIA0KKy0t LS0tLQ0KKyB0DQorKDEgcm93KQ0KKw0KKyB0d28gDQorLS0tLS0NCisgICAy DQorKDEgcm93KQ0KKw0KKyB0aHJlZSANCistLS0tLS0tDQorICAgICAzDQor KDEgcm93KQ0KKw0KK05PVElDRTogIHdhcm4gMy41DQorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIHdhcm4odGV4dCkgbGluZSAyIGF0IFJBSVNFDQor IHdhcm4gDQorLS0tLS0tDQorIHQNCisoMSByb3cpDQorDQorOnRocmVlIDQN CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICI7Ig0KK0xJTkUg MTogU0VMRUNUIDUgOyBTRUxFQ1QgNiArIDsgU0VMRUNUIHdhcm4oJzYuNScp IDsgU0VMRUNUIDcgOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4NCisgZWlnaHQgDQorLS0tLS0tLQ0KKyAgICAgOA0KKygxIHJvdykNCisN CitFUlJPUjogIGRpdmlzaW9uIGJ5IHplcm8NCisgYmVnaW4gDQorLS0tLS0t LQ0KKyBvaw0KKygxIHJvdykNCisNCitDYWx2aW4NCitTdXNpZQ0KK0hvYmJl cw0KKyBkb25lIA0KKy0tLS0tLQ0KKyBvaw0KKygxIHJvdykNCisNCitOT1RJ Q0U6ICB3YXJuIDEuNQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiB3 YXJuKHRleHQpIGxpbmUgMiBhdCBSQUlTRQ0KKyB0d28gDQorLS0tLS0NCisg ICAyDQorKDEgcm93KQ0KKw0KKyMgaW5pdGlhbCBBVVRPQ09NTUlUOiBvbg0K KyMgQVVUT0NPTU1JVDogb2ZmDQorICAgcyAgIA0KKy0tLS0tLS0NCisgaGVs bG8NCisgd29ybGQNCisoMiByb3dzKQ0KKw0KKyMgQVVUT0NPTU1JVDogb24N CisgICBzICAgDQorLS0tLS0tLQ0KKyBoZWxsbw0KKyB3b3JsZA0KKygyIHJv d3MpDQorDQorIyBmaW5hbCBBVVRPQ09NTUlUOiBvbg0KKyMgaW5pdGlhbCBP Tl9FUlJPUl9ST0xMQkFDSzogb2ZmDQorIyBPTl9FUlJPUl9ST0xMQkFDSzog b24NCisjIEFVVE9DT01NSVQ6IG9uDQorRVJST1I6ICB0eXBlICJub19zdWNo X3R5cGUiIGRvZXMgbm90IGV4aXN0DQorTElORSAxOiBDUkVBVEUgVEFCTEUg YmxhKHMgTk9fU1VDSF9UWVBFKTsNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBeDQorRVJST1I6ICBlcnJvciBvb3BzIQ0KK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBwc3FsX2Vycm9yKHRleHQpIGxpbmUgMyBhdCBSQUlT RQ0KKyAgIHMgICAgDQorLS0tLS0tLS0NCisgQ2FsdmluDQorIEhvYmJlcw0K KygyIHJvd3MpDQorDQorICAgICBzaG93ICAgICANCistLS0tLS0tLS0tLS0t LQ0KKyBiZWZvcmUgZXJyb3INCisoMSByb3cpDQorDQorRVJST1I6ICBlcnJv ciBib3VtIQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBwc3FsX2Vy cm9yKHRleHQpIGxpbmUgMyBhdCBSQUlTRQ0KK0VSUk9SOiAgZXJyb3IgYmFt IQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBwc3FsX2Vycm9yKHRl eHQpIGxpbmUgMyBhdCBSQUlTRQ0KKyAgICAgICBzICAgICAgIA0KKy0tLS0t LS0tLS0tLS0tLQ0KKyBDYWx2aW4NCisgSG9iYmVzDQorIE1pc3MgV29ybXdv b2QNCisgU3VzaWUNCisoNCByb3dzKQ0KKw0KKyMgQVVUT0NPTU1JVDogb2Zm DQorRVJST1I6ICBlcnJvciBiYWQhDQorQ09OVEVYVDogIFBML3BnU1FMIGZ1 bmN0aW9uIHBzcWxfZXJyb3IodGV4dCkgbGluZSAzIGF0IFJBSVNFDQorICNt dW0gDQorLS0tLS0tDQorICAgIDENCisoMSByb3cpDQorDQorRVJST1I6ICBl cnJvciBiYWQhDQorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHBzcWxf ZXJyb3IodGV4dCkgbGluZSAzIGF0IFJBSVNFDQorICAgICAgIHMgICAgICAg DQorLS0tLS0tLS0tLS0tLS0tDQorIENhbHZpbg0KKyBEYWQNCisgSG9iYmVz DQorIE1pc3MgV29ybXdvb2QNCisgU3VzaWUNCisoNSByb3dzKQ0KKw0KKyMg ZmluYWwgT05fRVJST1JfUk9MTEJBQ0s6IG9mZg0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJhbnNhY3Rpb25zLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJhbnNhY3Rpb25zLm91dA0KaW5k ZXggNjE4NjJkNTk1ZC4uYmUxZGIwZDVjMCAxMDA2NDQNCi0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJhbnNhY3Rpb25zLm91dA0KKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0DQpA QCAtOTAwLDggKzkwMCwxOCBAQCBEUk9QIFRBQkxFIGFiYzsNCiAtLSB0ZXN0 cyByZWx5IG9uIHRoZSBmYWN0IHRoYXQgcHNxbCB3aWxsIG5vdCBicmVhayBT UUwgY29tbWFuZHMgYXBhcnQgYXQgYQ0KIC0tIGJhY2tzbGFzaC1xdW90ZWQg c2VtaWNvbG9uLCBidXQgd2lsbCBzZW5kIHRoZW0gYXMgb25lIFF1ZXJ5Lg0K IGNyZWF0ZSB0ZW1wIHRhYmxlIGlfdGFibGUgKGYxIGludCk7DQotLS0gcHNx bCB3aWxsIHNob3cgb25seSB0aGUgbGFzdCByZXN1bHQgaW4gYSBtdWx0aS1z dGF0ZW1lbnQgUXVlcnkNCistLSBwc3FsIHdpbGwgc2hvdyBhbGwgcmVzdWx0 cyBvZiBhIG11bHRpLXN0YXRlbWVudCBRdWVyeQ0KIFNFTEVDVCAxXDsgU0VM RUNUIDJcOyBTRUxFQ1QgMzsNCisgP2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0K KyAgICAgICAgMQ0KKygxIHJvdykNCisNCisgP2NvbHVtbj8gDQorLS0tLS0t LS0tLQ0KKyAgICAgICAgMg0KKygxIHJvdykNCisNCiAgP2NvbHVtbj8gDQog LS0tLS0tLS0tLQ0KICAgICAgICAgMw0KQEAgLTkxNiw2ICs5MjYsMTIgQEAg aW5zZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoMSlcOyBzZWxlY3QgKiBmcm9t IGlfdGFibGU7DQogDQogLS0gMS8wIGVycm9yIHdpbGwgY2F1c2Ugcm9sbGlu ZyBiYWNrIHRoZSB3aG9sZSBpbXBsaWNpdCB0cmFuc2FjdGlvbg0KIGluc2Vy dCBpbnRvIGlfdGFibGUgdmFsdWVzKDIpXDsgc2VsZWN0ICogZnJvbSBpX3Rh YmxlXDsgc2VsZWN0IDEvMDsNCisgZjEgDQorLS0tLQ0KKyAgMQ0KKyAgMg0K KygyIHJvd3MpDQorDQogRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvDQogc2Vs ZWN0ICogZnJvbSBpX3RhYmxlOw0KICBmMSANCkBAIC05MzUsOCArOTUxLDE4 IEBAIFdBUk5JTkc6ICB0aGVyZSBpcyBubyB0cmFuc2FjdGlvbiBpbiBwcm9n cmVzcw0KIC0tIGJlZ2luIGNvbnZlcnRzIGltcGxpY2l0IHRyYW5zYWN0aW9u IGludG8gYSByZWd1bGFyIG9uZSB0aGF0DQogLS0gY2FuIGV4dGVuZCBwYXN0 IHRoZSBlbmQgb2YgdGhlIFF1ZXJ5DQogc2VsZWN0IDFcOyBiZWdpblw7IGlu c2VydCBpbnRvIGlfdGFibGUgdmFsdWVzKDUpOw0KKyA/Y29sdW1uPyANCist LS0tLS0tLS0tDQorICAgICAgICAxDQorKDEgcm93KQ0KKw0KIGNvbW1pdDsN CiBzZWxlY3QgMVw7IGJlZ2luXDsgaW5zZXJ0IGludG8gaV90YWJsZSB2YWx1 ZXMoNik7DQorID9jb2x1bW4/IA0KKy0tLS0tLS0tLS0NCisgICAgICAgIDEN CisoMSByb3cpDQorDQogcm9sbGJhY2s7DQogLS0gY29tbWl0IGluIGltcGxp Y2l0LXRyYW5zYWN0aW9uIHN0YXRlIGNvbW1pdHMgYnV0IGlzc3VlcyBhIHdh cm5pbmcuDQogaW5zZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoNylcOyBjb21t aXRcOyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg4KVw7IHNlbGVjdCAx LzA7DQpAQCAtOTYzLDIyICs5ODksNTIgQEAgcm9sbGJhY2s7ICAtLSB3ZSBh cmUgbm90IGluIGEgdHJhbnNhY3Rpb24gYXQgdGhpcyBwb2ludA0KIFdBUk5J Tkc6ICB0aGVyZSBpcyBubyB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcw0KIC0t IGltcGxpY2l0IHRyYW5zYWN0aW9uIGJsb2NrIGlzIHN0aWxsIGEgdHJhbnNh Y3Rpb24gYmxvY2ssIGZvciBlLmcuIFZBQ1VVTQ0KIFNFTEVDVCAxXDsgVkFD VVVNOw0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAgICAgICAxDQor KDEgcm93KQ0KKw0KIEVSUk9SOiAgVkFDVVVNIGNhbm5vdCBydW4gaW5zaWRl IGEgdHJhbnNhY3Rpb24gYmxvY2sNCiBTRUxFQ1QgMVw7IENPTU1JVFw7IFZB Q1VVTTsNCiBXQVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNhY3Rpb24gaW4g cHJvZ3Jlc3MNCisgP2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAg MQ0KKygxIHJvdykNCisNCiBFUlJPUjogIFZBQ1VVTSBjYW5ub3QgcnVuIGlu c2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrDQogLS0gd2UgZGlzYWxsb3cgc2F2 ZXBvaW50LXJlbGF0ZWQgY29tbWFuZHMgaW4gaW1wbGljaXQtdHJhbnNhY3Rp b24gc3RhdGUNCiBTRUxFQ1QgMVw7IFNBVkVQT0lOVCBzcDsNCisgP2NvbHVt bj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAgMQ0KKygxIHJvdykNCisNCiBF UlJPUjogIFNBVkVQT0lOVCBjYW4gb25seSBiZSB1c2VkIGluIHRyYW5zYWN0 aW9uIGJsb2Nrcw0KIFNFTEVDVCAxXDsgQ09NTUlUXDsgU0FWRVBPSU5UIHNw Ow0KIFdBUk5JTkc6ICB0aGVyZSBpcyBubyB0cmFuc2FjdGlvbiBpbiBwcm9n cmVzcw0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAgICAgICAxDQor KDEgcm93KQ0KKw0KIEVSUk9SOiAgU0FWRVBPSU5UIGNhbiBvbmx5IGJlIHVz ZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzDQogUk9MTEJBQ0sgVE8gU0FWRVBP SU5UIHNwXDsgU0VMRUNUIDI7DQogRVJST1I6ICBST0xMQkFDSyBUTyBTQVZF UE9JTlQgY2FuIG9ubHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MN CiBTRUxFQ1QgMlw7IFJFTEVBU0UgU0FWRVBPSU5UIHNwXDsgU0VMRUNUIDM7 DQorID9jb2x1bW4/IA0KKy0tLS0tLS0tLS0NCisgICAgICAgIDINCisoMSBy b3cpDQorDQogRVJST1I6ICBSRUxFQVNFIFNBVkVQT0lOVCBjYW4gb25seSBi ZSB1c2VkIGluIHRyYW5zYWN0aW9uIGJsb2Nrcw0KIC0tIGJ1dCB0aGlzIGlz IE9LLCBiZWNhdXNlIHRoZSBCRUdJTiBjb252ZXJ0cyBpdCB0byBhIHJlZ3Vs YXIgeGFjdA0KIFNFTEVDVCAxXDsgQkVHSU5cOyBTQVZFUE9JTlQgc3BcOyBS T0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BcOyBDT01NSVQ7DQorID9jb2x1bW4/ IA0KKy0tLS0tLS0tLS0NCisgICAgICAgIDENCisoMSByb3cpDQorDQogLS0g VGVzdHMgZm9yIEFORCBDSEFJTiBpbiBpbXBsaWNpdCB0cmFuc2FjdGlvbiBi bG9ja3MNCiBTRVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZXDsgQ09NTUlUIEFO RCBDSEFJTjsgIC0tIGVycm9yDQogRVJST1I6ICBDT01NSVQgQU5EIENIQUlO IGNhbiBvbmx5IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzDQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weXNlbGVjdC5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5c2VsZWN0LnNxbA0KaW5kZXgg MWQ5OGRhZDNjOC4uZTMyYTRmOGUzOCAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NvcHlzZWxlY3Quc3FsDQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb3B5c2VsZWN0LnNxbA0KQEAgLTg0LDEwICs4NCwxMCBA QCBkcm9wIHRhYmxlIHRlc3QxOw0KIC0tIHBzcWwgaGFuZGxpbmcgb2YgQ09Q WSBpbiBtdWx0aS1jb21tYW5kIHN0cmluZ3MNCiBjb3B5IChzZWxlY3QgMSkg dG8gc3Rkb3V0XDsgc2VsZWN0IDEvMDsJLS0gcm93LCB0aGVuIGVycm9yDQog c2VsZWN0IDEvMFw7IGNvcHkgKHNlbGVjdCAxKSB0byBzdGRvdXQ7IC0tIGVy cm9yIG9ubHkNCi1jb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgY29weSAo c2VsZWN0IDIpIHRvIHN0ZG91dFw7IHNlbGVjdCAwXDsgc2VsZWN0IDM7IC0t IDEgMiAzDQorY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dFw7IGNvcHkgKHNl bGVjdCAyKSB0byBzdGRvdXRcOyBzZWxlY3QgM1w7IHNlbGVjdCA0OyAtLSAx IDIgMyA0DQogDQogY3JlYXRlIHRhYmxlIHRlc3QzIChjIGludCk7DQotc2Vs ZWN0IDBcOyBjb3B5IHRlc3QzIGZyb20gc3RkaW5cOyBjb3B5IHRlc3QzIGZy b20gc3RkaW5cOyBzZWxlY3QgMTsgLS0gMQ0KK3NlbGVjdCAwXDsgY29weSB0 ZXN0MyBmcm9tIHN0ZGluXDsgY29weSB0ZXN0MyBmcm9tIHN0ZGluXDsgc2Vs ZWN0IDE7IC0tIDAgMQ0KIDENCiBcLg0KIDINCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BzcWwuc3FsDQppbmRleCBkNGU0ZmRiYmI3Li42OTUyMWRjOTE1IDEw MDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwNCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsDQpAQCAtMTMxNiwz ICsxMzE2LDEyMyBAQCBEUk9QIFRBQkxFIG9lcl90ZXN0Ow0KIFxzZXQgRUNI TyBlcnJvcnMNCiBTRUxFQ1QgKiBGUk9NIG5vdGV4aXN0czsNCiBcc2V0IEVD SE8gbm9uZQ0KKw0KKy0tDQorLS0gY29tYmluZWQgcXVlcmllcw0KKy0tDQor Q1JFQVRFIEZVTkNUSU9OIHdhcm4obXNnIFRFWFQpIFJFVFVSTlMgQk9PTEVB TiBMQU5HVUFHRSBwbHBnc3FsDQorQVMgJCQNCisgIEJFR0lOIFJBSVNFIE5P VElDRSAnd2FybiAlJywgbXNnIDsgUkVUVVJOIFRSVUUgOyBFTkQNCiskJDsN CistLSBzaG93IGJvdGgNCitTRUxFQ1QgMSBBUyBvbmUgXDsgU0VMRUNUIHdh cm4oJzEuNScpIFw7IFNFTEVDVCAyIEFTIHR3byA7DQorLS0gXGdzZXQgYXBw bGllcyB0byBsYXN0IHF1ZXJ5IG9ubHkNCitTRUxFQ1QgMyBBUyB0aHJlZSBc OyBTRUxFQ1Qgd2FybignMy41JykgXDsgU0VMRUNUIDQgQVMgZm91ciBcZ3Nl dA0KK1xlY2hvIDp0aHJlZSA6Zm91cg0KKy0tIHN5bnRheCBlcnJvciBzdG9w cyBhbGwgcHJvY2Vzc2luZw0KK1NFTEVDVCA1IFw7IFNFTEVDVCA2ICsgXDsg U0VMRUNUIHdhcm4oJzYuNScpIFw7IFNFTEVDVCA3IDsNCistLSB3aXRoIGFi b3J0ZWQgdHJhbnNhY3Rpb24sIHN0b3Agb24gZmlyc3QgZXJyb3INCitCRUdJ TiBcOyBTRUxFQ1QgOCBBUyBlaWdodCBcOyBTRUxFQ1QgOS8wIEFTIG5pbmUg XDsgUk9MTEJBQ0sgXDsgU0VMRUNUIDEwIEFTIHRlbiA7DQorLS0gY2xvc2Ug cHJldmlvdXNseSBhYm9ydGVkIHRyYW5zYWN0aW9uDQorUk9MTEJBQ0s7DQor LS0gbWlzYyBTUUwgY29tbWFuZHMNCistLSAobm9uIFNFTEVDVCBvdXRwdXQg aXMgc2VudCB0byBzdGRlcnIsIHRodXMgaXMgbm90IHNob3duIGluIGV4cGVj dGVkIHJlc3VsdHMpDQorU0VMRUNUICdvaycgQVMgImJlZ2luIiBcOw0KK0NS RUFURSBUQUJMRSBwc3FsX2NvbWljcyhzIFRFWFQpIFw7DQorSU5TRVJUIElO VE8gcHNxbF9jb21pY3MgVkFMVUVTICgnQ2FsdmluJyksICgnaG9iYmVzJykg XDsNCitDT1BZIHBzcWxfY29taWNzIEZST00gU1RESU4gXDsNCitVUERBVEUg cHNxbF9jb21pY3MgU0VUIHMgPSAnSG9iYmVzJyBXSEVSRSBzID0gJ2hvYmJl cycgXDsNCitERUxFVEUgRlJPTSBwc3FsX2NvbWljcyBXSEVSRSBzID0gJ01v ZScgXDsNCitDT1BZIHBzcWxfY29taWNzIFRPIFNURE9VVCBcOw0KK1RSVU5D QVRFIHBzcWxfY29taWNzIFw7DQorRFJPUCBUQUJMRSBwc3FsX2NvbWljcyBc Ow0KK1NFTEVDVCAnb2snIEFTICJkb25lIiA7DQorTW9lDQorU3VzaWUNCitc Lg0KK1xzZXQgU0hPV19BTExfUkVTVUxUUyBvZmYNCitTRUxFQ1QgMSBBUyBv bmUgXDsgU0VMRUNUIHdhcm4oJzEuNScpIFw7IFNFTEVDVCAyIEFTIHR3byA7 DQorXHNldCBTSE9XX0FMTF9SRVNVTFRTIG9uDQorRFJPUCBGVU5DVElPTiB3 YXJuKFRFWFQpOw0KKw0KKy0tDQorLS0gYXV0b2NvbW1pdA0KKy0tDQorXGVj aG8gJyMgaW5pdGlhbCBBVVRPQ09NTUlUOicgOkFVVE9DT01NSVQNCitcc2V0 IEFVVE9DT01NSVQgb2ZmDQorXGVjaG8gJyMgQVVUT0NPTU1JVDonIDpBVVRP Q09NTUlUDQorLS0gaW1wbGljaXQgQkVHSU4NCitDUkVBVEUgVEFCTEUgZm9v KHMgVEVYVCk7DQorUk9MTEJBQ0s7DQorQ1JFQVRFIFRBQkxFIGZvbyhzIFRF WFQpOw0KK0lOU0VSVCBJTlRPIGZvbyhzKSBWQUxVRVMgKCdoZWxsbycpLCAo J3dvcmxkJyk7DQorQ09NTUlUOw0KK0RST1AgVEFCTEUgZm9vOw0KK1JPTExC QUNLOw0KK1NFTEVDVCAqIEZST00gZm9vIE9SREVSIEJZIDE7DQorRFJPUCBU QUJMRSBmb287DQorQ09NTUlUOw0KK1xzZXQgQVVUT0NPTU1JVCBvbg0KK1xl Y2hvICcjIEFVVE9DT01NSVQ6JyA6QVVUT0NPTU1JVA0KKy0tIGV4cGxpY2l0 IEJFR0lODQorQkVHSU47DQorQ1JFQVRFIFRBQkxFIGZvbyhzIFRFWFQpOw0K K0lOU0VSVCBJTlRPIGZvbyhzKSBWQUxVRVMgKCdoZWxsbycpLCAoJ3dvcmxk Jyk7DQorQ09NTUlUOw0KK0JFR0lOOw0KK0RST1AgVEFCTEUgZm9vOw0KK1JP TExCQUNLOw0KKy0tIGltcGxpY2l0IHRyYW5zYWN0aW9ucw0KK1NFTEVDVCAq IEZST00gZm9vIE9SREVSIEJZIDE7DQorRFJPUCBUQUJMRSBmb287DQorXGVj aG8gJyMgZmluYWwgQVVUT0NPTU1JVDonIDpBVVRPQ09NTUlUDQorDQorLS0N CistLSB0ZXN0IE9OX0VSUk9SX1JPTExCQUNLDQorLS0NCitDUkVBVEUgRlVO Q1RJT04gcHNxbF9lcnJvcihtc2cgVEVYVCkgUkVUVVJOUyBCT09MRUFOIEFT ICQkDQorICBCRUdJTg0KKyAgICBSQUlTRSBFWENFUFRJT04gJ2Vycm9yICUn LCBtc2c7DQorICBFTkQ7DQorJCQgTEFOR1VBR0UgcGxwZ3NxbDsNCitcZWNo byAnIyBpbml0aWFsIE9OX0VSUk9SX1JPTExCQUNLOicgOk9OX0VSUk9SX1JP TExCQUNLDQorXHNldCBPTl9FUlJPUl9ST0xMQkFDSyBvbg0KK1xlY2hvICcj IE9OX0VSUk9SX1JPTExCQUNLOicgOk9OX0VSUk9SX1JPTExCQUNLDQorXGVj aG8gJyMgQVVUT0NPTU1JVDonIDpBVVRPQ09NTUlUDQorQkVHSU47DQorQ1JF QVRFIFRBQkxFIGJsYShzIE5PX1NVQ0hfVFlQRSk7ICAgICAgICAgLS0gZmFp bHMNCitDUkVBVEUgVEFCTEUgYmxhKHMgVEVYVCk7ICAgICAgICAgICAgICAg ICAtLSBzdWNjZWVkcw0KK1NFTEVDVCBwc3FsX2Vycm9yKCdvb3BzIScpOyAg ICAgICAgICAgICAgIC0tIGZhaWxzDQorSU5TRVJUIElOVE8gYmxhIFZBTFVF UyAoJ0NhbHZpbicpLCAoJ0hvYmJlcycpOw0KK0NPTU1JVDsNCitTRUxFQ1Qg KiBGUk9NIGJsYSBPUkRFUiBCWSAxOw0KK0JFR0lOOw0KK0lOU0VSVCBJTlRP IGJsYSBWQUxVRVMgKCdTdXNpZScpOyAgICAgICAgIC0tIHN1Y2NlZWRzDQor LS0gY29tYmluZWQgcXVlcmllcw0KK0lOU0VSVCBJTlRPIGJsYSBWQUxVRVMg KCdSb3NhbHluJykgXDsgICAgIC0tIHdpbGwgcm9sbGJhY2sNCitTRUxFQ1Qg J2JlZm9yZSBlcnJvcicgQVMgc2hvdyBcOyAgICAgICAgICAtLSB3aWxsIHNo b3chDQorICBTRUxFQ1QgcHNxbF9lcnJvcignYm91bSEnKSBcOyAgICAgICAg ICAgLS0gZmFpbHVyZQ0KKyAgU0VMRUNUICdhZnRlciBlcnJvcicgQVMgbm9z aG93OyAgICAgICAgIC0tIGhpZGRlbiBieSBwcmVjZWVkaW5nIGVycm9yDQor SU5TRVJUIElOVE8gYmxhKHMpIFZBTFVFUyAoJ01vZScpIFw7ICAgICAgLS0g d2lsbCByb2xsYmFjaw0KKyAgU0VMRUNUIHBzcWxfZXJyb3IoJ2JhbSEnKTsN CitJTlNFUlQgSU5UTyBibGEgVkFMVUVTICgnTWlzcyBXb3Jtd29vZCcpOyAt LSBzdWNjZWVkcw0KK0NPTU1JVDsNCitTRUxFQ1QgKiBGUk9NIGJsYSBPUkRF UiBCWSAxOw0KKy0tIHNvbWUgd2l0aCBhdXRvY29tbWl0IG9mZg0KK1xzZXQg QVVUT0NPTU1JVCBvZmYNCitcZWNobyAnIyBBVVRPQ09NTUlUOicgOkFVVE9D T01NSVQNCistLSBpbXBsaWNpdCBCRUdJTg0KK0lOU0VSVCBJTlRPIGJsYSBW QUxVRVMgKCdEYWQnKTsgICAgICAgICAgIC0tIHN1Y2NlZWRzDQorU0VMRUNU IHBzcWxfZXJyb3IoJ2JhZCEnKTsgICAgICAgICAgICAgICAgLS0gaW1wbGlj aXQgcGFydGlhbCByb2xsYmFjaw0KK0lOU0VSVCBJTlRPIGJsYSBWQUxVRVMg KCdNdW0nKSBcOyAgICAgICAgIC0tIHdpbGwgcm9sbGJhY2sNCitTRUxFQ1Qg Q09VTlQoKikgQVMgIiNtdW0iDQorRlJPTSBibGEgV0hFUkUgcyA9ICdNdW0n IFw7ICAgICAgICAgICAgICAgLS0gYnV0IGJlIGNvdW50ZWQgaGVyZQ0KK1NF TEVDVCBwc3FsX2Vycm9yKCdiYWQhJyk7ICAgICAgICAgICAgICAgIC0tIGlt cGxpY2l0IHBhcnRpYWwgcm9sbGJhY2sNCitDT01NSVQ7DQorU0VMRUNUICog RlJPTSBibGEgT1JERVIgQlkgMTsNCistLSByZXNldA0KK1xzZXQgQVVUT0NP TU1JVCBvbg0KK1xzZXQgT05fRVJST1JfUk9MTEJBQ0sgb2ZmDQorXGVjaG8g JyMgZmluYWwgT05fRVJST1JfUk9MTEJBQ0s6JyA6T05fRVJST1JfUk9MTEJB Q0sNCitEUk9QIFRBQkxFIGJsYTsNCitEUk9QIEZVTkNUSU9OIHBzcWxfZXJy b3I7DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJhbnNh Y3Rpb25zLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyYW5zYWN0aW9u cy5zcWwNCmluZGV4IDg4ODYyODBjMGEuLjdmYzlmMDk0NjggMTAwNjQ0DQot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmFuc2FjdGlvbnMuc3FsDQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmFuc2FjdGlvbnMuc3FsDQpA QCAtNTA0LDcgKzUwNCw3IEBAIERST1AgVEFCTEUgYWJjOw0KIA0KIGNyZWF0 ZSB0ZW1wIHRhYmxlIGlfdGFibGUgKGYxIGludCk7DQogDQotLS0gcHNxbCB3 aWxsIHNob3cgb25seSB0aGUgbGFzdCByZXN1bHQgaW4gYSBtdWx0aS1zdGF0 ZW1lbnQgUXVlcnkNCistLSBwc3FsIHdpbGwgc2hvdyBhbGwgcmVzdWx0cyBv ZiBhIG11bHRpLXN0YXRlbWVudCBRdWVyeQ0KIFNFTEVDVCAxXDsgU0VMRUNU IDJcOyBTRUxFQ1QgMzsNCiANCiAtLSB0aGlzIGltcGxpY2l0bHkgY29tbWl0 czoNCg== --2056645051-464787261-1641666756=:731324--