From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=eric.jin@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 79D6021A09130 for ; Thu, 8 Nov 2018 18:27:47 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Nov 2018 18:27:46 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,481,1534834800"; d="scan'208";a="102828518" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga002.fm.intel.com with ESMTP; 08 Nov 2018 18:27:46 -0800 Received: from fmsmsx158.amr.corp.intel.com (10.18.116.75) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 8 Nov 2018 18:27:45 -0800 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx158.amr.corp.intel.com (10.18.116.75) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 8 Nov 2018 18:27:45 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.161]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.117]) with mapi id 14.03.0415.000; Fri, 9 Nov 2018 10:27:43 +0800 From: "Jin, Eric" To: Supreeth Venkatesh , "edk2-devel@lists.01.org" CC: "Jin, Eric" Thread-Topic: [edk2-test][Patch] uefi-sct/SctPkg:Add checkpoint of ReadKeyStrokeEx Toggle state Thread-Index: AQHUdtRwcvqSSict3UOz3ZltO/NDAaVGtoPQ Date: Fri, 9 Nov 2018 02:27:43 +0000 Message-ID: References: <20181107064759.1404-1-eric.jin@intel.com> <56a791439b3986a7f310e8ceb4907c6ee09a1b81.camel@arm.com> In-Reply-To: <56a791439b3986a7f310e8ceb4907c6ee09a1b81.camel@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [edk2-test][Patch] uefi-sct/SctPkg:Add checkpoint of ReadKeyStrokeEx Toggle state X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Nov 2018 02:27:47 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U3VwcmVldGgsDQoNClRoZSBQYXRjaCB3aWxsIGJlIHNwbGl0IGluIDIgcGF0Y2hlcyBpbiBzZXJp ZXMsIG9uZSBvZiB0aGUgdGVzdCBkcml2ZXIgaW4gRUZJIHBhcnQsIGFuZCB0aGUgb3RoZXIgaW4g dGhlIElIViBwYXJ0Lg0KVGhlIGF0dHJpYnV0ZSBhbGlnbm1lbnQgY2FuIGJlIGlnbm9yZWQgZHVl IHRvIHRoZSB3b3Jkd3JhcCBpbiBtYWlsIGZvcm1hdC4NClJlY29yZE1lc3NhZ2UgZm9ybWF0IHdp bGwgYmUgY29uc2lzdGVudCBhbmQgZXh0cmEgcGFyZW50aGVzaXMgd2lsbCBiZSBhZGRlZCBpbiB0 aGUgaWYgc3RhdGVtZW50Lg0KQmVzaWRlcyBhYm92ZSwgbW9yZSBjb21tZW50cyBhcmUgYWRkZWQg dG8gZGVzY3JpYmUgdGhlIGNoZWNrcG9pbnQgaW50ZW50aW9uLg0KDQpUaGUgUGF0Y2ggVjMgd2ls bCBiZSBzZW50IG91dCBsYXRlci4gDQoNCkJlc3QgUmVnYXJkcw0KRXJpYw0KDQotLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogU3VwcmVldGggVmVua2F0ZXNoIDxzdXByZWV0aC52ZW5r YXRlc2hAYXJtLmNvbT4gDQpTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIgOCwgMjAxOCA0OjAwIEFN DQpUbzogSmluLCBFcmljIDxlcmljLmppbkBpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZw0KU3ViamVjdDogUmU6IFtlZGsyLXRlc3RdW1BhdGNoXSB1ZWZpLXNjdC9TY3RQa2c6QWRk IGNoZWNrcG9pbnQgb2YgUmVhZEtleVN0cm9rZUV4IFRvZ2dsZSBzdGF0ZQ0KDQpFcmljLA0KDQpD b3VsZCB5b3UgcGxlYXNlIHNwbGl0IHRoZXNlIGFzIFBBVENIIChwZXJoYXBzIDMgb3IgbW9yZSkg c2VyaWVzIGFzIHRoZXJlIGFyZSBtb3JlIHRoYW4gMTAgZmlsZXMgY2hhbmdlZCBpbiBhIHNpbmds ZSBwYXRjaD8uDQoNClBsZWFzZSBzZWUgY29tbWVudHMgaW5saW5lLg0KDQpPbiBXZWQsIDIwMTgt MTEtMDcgYXQgMTQ6NDcgKzA4MDAsIEVyaWMgSmluIHdyb3RlOg0KPiBVRUZJIGRyaXZlcnMgd2hp Y2ggaW1wbGVtZW50IHRoZSBFRklfU0lNUExFX1RFWFRfSU5QVVRfRVggcHJvdG9jb2wgYXJlIA0K PiByZXF1aXJlZCB0byByZXR1cm4gS2V5RGF0YS5LZXkgYW5kIEtleURhdGEuS2V5U3RhdGUgdmFs dWVzLg0KPiBUaGVzZSBkcml2ZXJzIG11c3QgYWx3YXlzIHJldHVybiB0aGUgbW9zdCBjdXJyZW50 IHN0YXRlIG9mIA0KPiBLZXlEYXRhLktleVN0YXRlLktleVNoaWZ0U3RhdGUgYW5kIEtleURhdGEu S2V5U3RhdGUuS2V5VG9nZ2xlU3RhdGUuDQo+IA0KPiBUaGUgY2hhbmdlIGluIHNwZWMgaXMgIkVG SV9OT1RfUkVBRFkgLSBUaGVyZSB3YXMgbm8ga2V5c3Ryb2tlIGRhdGEgDQo+IGF2YWlsYWJsZS4g Q3VycmVudCBLZXlEYXRhLktleVN0YXRlIHZhbHVlcyBhcmUgZXhwb3NlZC4iDQo+IA0KPiBDYzog U3VwcmVldGggVmVua2F0ZXNoIDxzdXByZWV0aC52ZW5rYXRlc2hAYXJtLmNvbT4NCj4gQ29udHJp YnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiBTaWdu ZWQtb2ZmLWJ5OiBFcmljIEppbiA8ZXJpYy5qaW5AaW50ZWwuY29tPg0KPiAtLS0NCj4gIC4uLi9Q cm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvR3VpZC5jIHwgICA3ICstDQo+ ICAuLi4vUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0L0d1aWQuaCB8ICAx MiArLSAgDQo+IC4uLi9CbGFja0JveFRlc3QvU2ltcGxlVGV4dElucHV0RXhCQlRlc3RGdW5jdGlv bi5jIHwgMjExDQo+ICsrKysrKysrKysrKysrKysrKysrDQo+ICAuLi4vQmxhY2tCb3hUZXN0L1Np bXBsZVRleHRJbnB1dEV4QkJUZXN0TWFpbi5jICAgICB8ICAxMyArLQ0KPiAgLi4uL0JsYWNrQm94 VGVzdC9TaW1wbGVUZXh0SW5wdXRFeEJCVGVzdE1haW4uaCAgICAgfCAgMjIgKystDQo+ICAuLi4v UHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0L0d1aWQuYyB8ICAgNyArLQ0K PiAgLi4uL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC9HdWlkLmggfCAg MTIgKy0gIA0KPiAuLi4vQmxhY2tCb3hUZXN0L1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rp b24uYyB8IDIxMw0KPiArKysrKysrKysrKysrKysrKysrKy0NCj4gIC4uLi9CbGFja0JveFRlc3Qv U2ltcGxlVGV4dElucHV0RXhCQlRlc3RNYWluLmMgICAgIHwgIDExICstDQo+ICAuLi4vQmxhY2tC b3hUZXN0L1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0TWFpbi5oICAgICB8ICAyMCArLQ0KPiAgMTAg ZmlsZXMgY2hhbmdlZCwgNTE1IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQ0KPiANCj4g ZGlmZiAtLWdpdCBhL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9j b2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBHdWlkLmMgYi91ZWZpLQ0KPiBz Y3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0Js YWNrQm94VGVzdC8NCj4gR3VpZC5jDQo+IGluZGV4IDljYjE5ZjQuLmZmMmQ1MGYgMTAwNjQ0DQo+ IC0tLSBhL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2lt cGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBHdWlkLmMNCj4gKysrIGIvdWVmaS0NCj4g c2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9C bGFja0JveFRlc3QvDQo+IEd1aWQuYw0KPiBAQCAtMSw3ICsxLDcgQEANCj4gIC8qKiBAZmlsZQ0K PiAgDQo+ICAgIENvcHlyaWdodCAyMDA2IC0gMjAxMiBVbmlmaWVkIEVGSSwgSW5jLjxCUj4NCj4g LSAgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgDQo+IHJlc2VydmVkLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOCwgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQuPEJSPg0KPiAgDQo+ICAgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gICAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg DQo+IHRoZSBCU0QgTGljZW5zZSBAQCAtNjMsMyArNjMsOCBAQCBFRklfR1VJRA0KPiBnU2ltcGxl VGV4dElucHV0RXhCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDcgPSANCj4gRUZJX1RFU1Rf U0lNUExFVEVYVEkgIEVGSV9HVUlEIA0KPiBnU2ltcGxlVGV4dElucHV0RXhCQlRlc3RGdW5jdGlv bkFzc2VydGlvbkd1aWQwMDggPSANCj4gRUZJX1RFU1RfU0lNUExFVEVYVElOUFVURVhCQlRFU1RG VU5DVElPTl9BU1NFUlRJT05fMDA4X0dVSUQ7DQo+ICANCj4gIEVGSV9HVUlEIGdTaW1wbGVUZXh0 SW5wdXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAwOSA9IA0KPiBFRklfVEVTVF9TSU1Q TEVURVhUSU5QVVRFWEJCVEVTVEZVTkNUSU9OX0FTU0VSVElPTl8wMDlfR1VJRDsNCj4gKw0KPiAr RUZJX0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDEw ID0NCj4gRUZJX1RFU1RfU0lNUExFVEVYVElOUFVURVhCQlRFU1RGVU5DVElPTl9BU1NFUlRJT05f MDEwX0dVSUQ7DQo+ICsNCj4gK0VGSV9HVUlEIGdTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdEZ1bmN0 aW9uQXNzZXJ0aW9uR3VpZDAxMSA9DQo+IEVGSV9URVNUX1NJTVBMRVRFWFRJTlBVVEVYQkJURVNU RlVOQ1RJT05fQVNTRVJUSU9OXzAxMV9HVUlEOw0KPiArDQo+IGRpZmYgLS1naXQgYS91ZWZpLQ0K PiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4 L0JsYWNrQm94VGVzdC8NCj4gR3VpZC5oIGIvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9V RUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IEd1aWQu aA0KPiBpbmRleCA2YzkwZmNhLi4yYTZiZTQ4IDEwMDY0NA0KPiAtLS0gYS91ZWZpLQ0KPiBzY3Qv U2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNr Qm94VGVzdC8NCj4gR3VpZC5oDQo+ICsrKyBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2Uv VUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBHdWlk LmgNCj4gQEAgLTEsNyArMSw3IEBADQo+ICAvKiogQGZpbGUNCj4gIA0KPiAgICBDb3B5cmlnaHQg MjAwNiAtIDIwMTAgVW5pZmllZCBFRkksIEluYy48QlI+DQo+IC0gIENvcHlyaWdodCAoYykgMjAx MCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArICBDb3B5 cmlnaHQgKGMpIDIwMTAgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiBy ZXNlcnZlZC48QlI+DQo+ICANCj4gICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiAgICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiANCj4gdGhlIEJTRCBMaWNlbnNlIEBAIC0xMTksMyAr MTE5LDEzIEBAIGV4dGVybiBFRklfR1VJRCANCj4gZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVu Y3Rpb25Bc3NlcnRpb25HdWlkMDA4Ow0KPiAgeyAweDUzNDM2OWY3LCAweDgzOTksIDB4NDM1Mywg eyAweDk0LCAweGFkLCAweGM0LCAweDQ4LCAweGZhLCAweGRhLCANCj4gMHhlYiwgMHg4NCB9IH0N Cj4gIA0KPiAgZXh0ZXJuIEVGSV9HVUlEIGdTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdEZ1bmN0aW9u QXNzZXJ0aW9uR3VpZDAwOTsNCj4gKw0KPiArI2RlZmluZSBFRklfVEVTVF9TSU1QTEVURVhUSU5Q VVRFWEJCVEVTVEZVTkNUSU9OX0FTU0VSVElPTl8wMTBfR1VJRA0KPiBcDQo+ICt7IDB4Y2Y0ZDU0 ZWIsIDB4NjY5NiwgMHg0Nzk0LCB7IDB4OTEsIDB4NzQsIDB4NTksIDB4ZCwgMHgxYywgMHgyMiwN Cj4gMHhhOCwgMHg2NyB9IH0NCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdTaW1wbGVUZXh0SW5w dXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAxMDsNCj4gKw0KPiArI2RlZmluZSBFRklf VEVTVF9TSU1QTEVURVhUSU5QVVRFWEJCVEVTVEZVTkNUSU9OX0FTU0VSVElPTl8wMTFfR1VJRA0K PiBcDQo+ICt7IDB4ZjhlOGY4NzksIDB4YTZkNCwgMHg0ZmQzLCB7IDB4OGIsIDB4OGUsIDB4YmEs IDB4MWQsIDB4MTgsIDB4ZjEsDQo+IDB4NDAsIDB4NzEgfSB9DQo+ICsNCj4gK2V4dGVybiBFRklf R1VJRCBnU2ltcGxlVGV4dElucHV0RXhCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMTE7DQo+ IGRpZmYgLS1naXQgYS91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3Rv Y29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC8NCj4gU2ltcGxlVGV4dElucHV0RXhC QlRlc3RGdW5jdGlvbi5jIGIvdWVmaS0gDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkv UHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBTaW1wbGVUZXh0SW5w dXRFeEJCVGVzdEZ1bmN0aW9uLmMNCj4gaW5kZXggMTUzYWRlMC4uNDg1MDYyNyAxMDA2NDQNCj4g LS0tIGEvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1w bGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IFNpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVu Y3Rpb24uYw0KPiArKysgYi91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1By b3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC8NCj4gU2ltcGxlVGV4dElucHV0 RXhCQlRlc3RGdW5jdGlvbi5jDQo+IEBAIC00NTYsNiArNDU2LDc4IEBAIEJCVGVzdFVucmVnaXN0 ZXJLZXlOb3RpZnlGdW5jdGlvbk1hbnVhbFRlc3QgKCAgfQ0KPiAgDQo+ICANCj4gK0VGSV9TVEFU VVMNCj4gK0JCVGVzdFJlYWRLZXlTdHJva2VFeEZ1bmN0aW9uQXV0b1Rlc3QgKA0KPiArICBJTiBF RklfQkJfVEVTVF9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4gKyAgSU4gVk9JRCAgICAgICAgICAg ICAgICAgICAgICAgKkNsaWVudEludGVyZmFjZSwNCj4gKyAgSU4gRUZJX1RFU1RfTEVWRUwgICAg ICAgICAgICAgVGVzdExldmVsLA0KPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICBT dXBwb3J0SGFuZGxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFS WV9QUk9UT0NPTCAgICAqU3RhbmRhcmRMaWI7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfU0lNUExFX1RFWFRfSU5QVVRfRVhfUFJP VE9DT0wgICAgICpTaW1wbGVUZXh0SW5wdXRFeDsNCj4gKyAgDQo+ICsgIEVGSV9ERVZJQ0VfUEFU SF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCj4gKyAgQ0hBUjE2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KPiArDQo+ICsgIC8vDQo+ICsg IC8vIGluaXQNCj4gKyAgLy8NCj4gKyAgU2ltcGxlVGV4dElucHV0RXggPQ0KPiAoRUZJX1NJTVBM RV9URVhUX0lOUFVUX0VYX1BST1RPQ09MKilDbGllbnRJbnRlcmZhY2U7DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVyZmFjZSAgLy8gIFN0YXR1cyA9 IA0KPiArIGd0QlMtPkhhbmRsZVByb3RvY29sICgNCj4gKyAgICAgICAgICAgICAgICAgICBTdXBw b3J0SGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgICZnRWZpU3RhbmRhcmRUZXN0TGlicmFy eUd1aWQsDQo+ICsgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZTdGFuZGFyZExpYg0KPiAr ICAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiAr ICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKyAgDQo+ICsgIC8vDQo+ICsgIC8vIEdldCBE ZXZpY2UgUGF0aCBvZiBjdXJyZW50IFNpbXBsZV9UZXh0X0lucHV0X0V4X1Byb3RvY29sICAvLyBB bmQgDQo+ICsgb3V0IHB1dCBkZXZpY2UgcGF0aCBvciBkZXZpY2UgbmFtZSAgLy8gIFN0YXR1cyA9 IA0KPiArIExvY2F0ZURldmljZVBhdGhGcm9tU2ltcGxlVGV4dElucHV0RXggKFNpbXBsZVRleHRJ bnB1dEV4LA0KPiAmRGV2aWNlUGF0aCwgU3RhbmRhcmRMaWIpOw0KPiArICBpZiAoU3RhdHVzID09 IEVGSV9TVUNDRVNTKSB7DQo+ICsgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0 ciAoRGV2aWNlUGF0aCk7DQo+ICsgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KPiAr ICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KPiArICAgICAgICAgICAgICAgICAg ICAgU3RhbmRhcmRMaWIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZF TF9ERUZBVUxULA0KPiArICAgICAgICAgICAgICAgICAgICAgTCJcclxuQ3VycmVudCBEZXZpY2U6 ICVzIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCj4gKyAgICAgICAg ICAgICAgICAgICAgICk7DQo+ICsgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNl UGF0aFN0cik7DQo+ICsgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQo+ICsgICAgICAgIHJl dHVybiBTdGF0dXM7DQo+ICsgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQo+ICsgICAgfQ0KPiAr ICB9IGVsc2Ugew0KPiArICAgIC8vDQo+ICsgICAgLy8gQ29uc29sZSBTcGxpdHRlci9TdGRFcnIN Cj4gKyAgICAvLw0KPiArICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCj4gKyAgICAg ICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAgICAgICAgICBFRklfVkVS Qk9TRV9MRVZFTF9ERUZBVUxULA0KPiArICAgICAgICAgICAgICAgICAgIEwiXHJcbkN1cnJlbnQg RGV2aWNlOiBDb25zb2xlU3BsaXR0ZXIvVHh0SW4iDQo+ICsgICAgICAgICAgICAgICAgICAgKTsN Cj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vDQo+ICsgIC8vDQo+ICsgIEJCVGVzdFJlYWRL ZXlTdHJva2VFeEZ1bmN0aW9uQXV0b1Rlc3RDaGVja3BvaW50MSAoIFN0YW5kYXJkTGliLA0KPiBT aW1wbGVUZXh0SW5wdXRFeCApOw0KQWxpZ25tZW50IHdpdGggU3RhbmRhcmRMaWIuIFVzZSB0aGUg YWxpZ25tZW50IGZvcm1hdCBhcyBhYm92ZSBpbiANClN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdl Lg0KPiArICANCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gKw0K PiAgLy8NCj4gIC8vQ2hlY2sgUG9pbnRzDQo+ICAvLw0KPiBAQCAtMTA2MSwzICsxMTMzLDE0MiBA QA0KPiBCQlRlc3RVbnJlZ2lzdGVyS2V5Tm90aWZ5RnVuY3Rpb25NYW51YWxUZXN0Q2hlY2twb2lu dDEgKA0KPiAgDQo+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gIH0NCj4gKw0KPiArRUZJX1NU QVRVUw0KPiArQkJUZXN0UmVhZEtleVN0cm9rZUV4RnVuY3Rpb25BdXRvVGVzdENoZWNrcG9pbnQx ICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAgICAgICpT dGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MICAg ICAgICAgICpTaW1wbGVUZXh0SW5wdXRFeA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9URVNUX0FTU0VSVElPTiAgICBBc3NlcnRpb25U eXBlOw0KPiArICBFRklfS0VZX0RBVEEgICAgICAgICAgS2V5Ow0KPiArICBVSU5UOCAgICAgICAg ICAgICAgICAgSW5kZXg7DQo+ICsNCj4gKyAgRUZJX0tFWV9UT0dHTEVfU1RBVEUgIFN0YXRlID0g RUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8DQo+IEVGSV9LRVlfU1RBVEVfRVhQT1NFRDsNCkFsaWdu bWVudC4NCj4gKw0KPiArICBFRklfS0VZX1RPR0dMRV9TVEFURSAgVmFsaWRTdGF0ZVtdID0gew0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfVE9HR0xFX1NUQVRFX1ZBTElEIHwNCj4g RUZJX0tFWV9TVEFURV9FWFBPU0VEIHwgRUZJX1NDUk9MTF9MT0NLX0FDVElWRSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgRUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8DQo+IEVGSV9LRVlf U1RBVEVfRVhQT1NFRCB8IEVGSV9OVU1fTE9DS19BQ1RJVkUsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgIEVGSV9UT0dHTEVfU1RBVEVfVkFMSUQgfA0KPiBFRklfS0VZX1NUQVRFX0VYUE9T RUQgfCBFRklfQ0FQU19MT0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg RUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8DQo+IEVGSV9LRVlfU1RBVEVfRVhQT1NFRCB8IEVGSV9T Q1JPTExfTE9DS19BQ1RJVkUgfCBFRklfTlVNX0xPQ0tfQUNUSVZFLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICBFRklfVE9HR0xFX1NUQVRFX1ZBTElEIHwNCj4gRUZJX0tFWV9TVEFURV9F WFBPU0VEIHwgRUZJX1NDUk9MTF9MT0NLX0FDVElWRSB8IEVGSV9DQVBTX0xPQ0tfQUNUSVZFLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfVE9HR0xFX1NUQVRFX1ZBTElEIHwNCj4g RUZJX0tFWV9TVEFURV9FWFBPU0VEIHwgRUZJX05VTV9MT0NLX0FDVElWRSB8IEVGSV9DQVBTX0xP Q0tfQUNUSVZFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfVE9HR0xFX1NUQVRF X1ZBTElEIHwNCj4gRUZJX0tFWV9TVEFURV9FWFBPU0VEIHwgRUZJX1NDUk9MTF9MT0NLX0FDVElW RSB8RUZJX05VTV9MT0NLX0FDVElWRSB8IA0KPiBFRklfQ0FQU19MT0NLX0FDVElWRSwNCkFsaWdu bWVudCB3ZWlyZC4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgMA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICB9Ow0KPiArIA0KPiArICAvLw0KPiArICAvL1Jlc2V0IHRoZSBjb25z b2xlDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IFNpbXBsZVRleHRJbnB1dEV4LT5SZWFkS2V5U3Ry b2tlRXggKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXBsZVRleHRJ bnB1dEV4LCANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmS2V5DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUihT dGF0dXMpICYmIFN0YXR1cyAhPSBFRklfTk9UX1JFQURZKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICgoS2V5LktleVN0YXRlLktleVRvZ2dsZVN0YXRlICYg RUZJX1RPR0dMRV9TVEFURV9WQUxJRCkgPT0gMCkgew0KPiArICAgIHJldHVybiBFRklfVU5TVVBQ T1JURUQ7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvL1NldCB0aGUgS0VZX1NUQVRFX0VY UE9TRUQgdG8gY2hlY2sgdGhlIGltY29tcGxldGUga2V5c3Ryb2tlDQo+IHN1cHBvcnQNCj4gKyAg Ly8NCj4gKyAgU3RhdHVzID0gU2ltcGxlVGV4dElucHV0RXgtPlNldFN0YXRlICgNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2ltcGxlVGV4dElucHV0RXgsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZTdGF0ZQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApOw0KPiArDQo+ICsgIGlmIChTdGF0dXMgPT0gRUZJX1VOU1VQUE9SVEVEIHx8 IFN0YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSB7DQpFeHRyYSBwYXJlbnRoZXNpcyB0byBtYWtl IHRoZSBwcmlvcml0eSBjbGVhcmVyLg0KKChTdGF0dXMgPT0gRUZJX1VOU1VQUE9SVEVEKSB8fCAo U3RhdHVzID09IEVGSV9ERVZJQ0VfRVJST1IpKQ0KPiArICAgIFN0YW5kYXJkTGliLT5SZWNvcmRB c3NlcnRpb24gKA0KPiArICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KPiArICAgICAg ICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9XQVJOSU5HLA0KPiArICAgICAgICAgICAg ICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgIEwi RUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MLlNldFN0YXRlIC0NCj4gU2V0U3RhdGUo KSBkb2Vzbid0IHJldHVybiBFRklfU1VDQ0VTUyB3aXRoIEVGSV9LRVlfU1RBVEVfRVhQT1NFRCIs DQo+ICsgICAgICAgICAgICAgICAgICAgTCIlYTolZCwgU3RhdHVzID0gJXJcbiIsDQo+ICsgICAg ICAgICAgICAgICAgICAgX19GSUxFX18sDQo+ICsgICAgICAgICAgICAgICAgICAgKFVJTlROKV9f TElORV9fLA0KPiArICAgICAgICAgICAgICAgICAgIFN0YXR1cw0KPiArICAgICAgICAgICAgICAg ICAgICk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIGZvciAoSW5k ZXg9MDsgVmFsaWRTdGF0ZVtJbmRleF07IEluZGV4KyspIHsNCj4gKw0KPiArICAgIC8vDQo+ICsg ICAgLy8gU2V0IHRoZSB2YWxpZCBLZXlUb2dnbGVTdGF0ZQ0KPiArICAgIC8vDQo+ICsgICAgU3Rh dHVzID0gU2ltcGxlVGV4dElucHV0RXgtPlNldFN0YXRlICgNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTaW1wbGVUZXh0SW5wdXRFeCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBWYWxpZFN0YXRlICsgSW5kZXgNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApOw0KPiArICANCj4gKyAgICBpZiAoU3RhdHVzICE9IEVGSV9TVUND RVNTKSB7DQo+ICsgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4gKyAgICAg ICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KPiArICAgICAgICAgICAgICAgICAgICAgRUZJ X1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIGdUZXN0R2Vu ZXJpY0ZhaWx1cmVHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgICAgTCJFRklfU0lNUExFX1RF WFRfSU5QVVRfRVhfUFJPVE9DT0wuU2V0U3RhdGUgLQ0KPiBTZXRTdGF0ZSgpIGRvZXNuJ3QgcmV0 dXJuIEVGSV9TVUNDRVNTIHdpdGggdGhlIHZhbGlkIEtleVRvZ2dsZVN0YXRlIiwNCj4gKyAgICAg ICAgICAgICAgICAgICAgIEwiJWE6JWQsIFN0YXR1cyA9ICVyLCBLZXlUb2dnbGVTdGF0ZSA9ICV4 XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sDQo+ICsgICAgICAgICAgICAg ICAgICAgICAoVUlOVE4pX19MSU5FX18sDQo+ICsgICAgICAgICAgICAgICAgICAgICBTdGF0dXMs DQo+ICsgICAgICAgICAgICAgICAgICAgICBWYWxpZFN0YXRlW0luZGV4XQ0KPiArICAgICAgICAg ICAgICAgICAgICAgKTsNCj4gKyAgICAgIGNvbnRpbnVlOw0KPiArICAgIH0NCj4gKw0KPiArICAg IC8vDQo+ICsgICAgLy8gR2V0IHRoZSBLZXlUb2dnbGVTdGF0ZQ0KPiArICAgIC8vDQo+ICsgICAg U3RhdHVzID0gU2ltcGxlVGV4dElucHV0RXgtPlJlYWRLZXlTdHJva2VFeCAoDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2ltcGxlVGV4dElucHV0RXgsIA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZLZXkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApOw0KPiArDQo+ICsgICAgaWYgKFN0YXR1cyAhPSBFRklfTk9UX1JFQURZ KSB7DQo+ICsgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsN Cj4gKw0KPiArICAgICAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQo+ICsgICAgICAg ICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEFzc2Vy dGlvblR5cGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICBnU2ltcGxlVGV4dElucHV0RXhCQlRl c3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMQ0KPiAwLA0KPiArICAgICAgICAgICAgICAgICAgICAg TCJFRklfU0lNUExFX1RFWFRfSU5QVVRfRVhfUFJPVE9DT0wuUmVhZEtleVN0cm8NCj4ga2VFeCAt IFJlYWRLZXlTdHJva2VFeCgpIGRvZXNuJ3QgcmV0dXJuIEVGSV9OT1RfUkVBRFkgd2hlbiB0aGVy ZSBpcyBubyANCj4gS2V5IGRhdGEgYW5kIEVGSV9LRVlfU1RBVEVfRVhQT1NFRCBpcyBlbmFibGVk IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEwiJWE6JWQsIFN0YXR1cyA9ICVyLCBJbmRleCA9 ICVkLA0KPiBLZXlUb2dnbGVTdGF0ZSA9ICV4XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAg X19GSUxFX18sDQo+ICsgICAgICAgICAgICAgICAgICAgICAoVUlOVE4pX19MSU5FX18sDQo+ICsg ICAgICAgICAgICAgICAgICAgICBTdGF0dXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICBJbmRl eCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIFZhbGlkU3RhdGVbSW5kZXhdDQo+ICsgICAgICAg ICAgICAgICAgICAgICApOw0KPiArDQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIGlmIChLZXku S2V5U3RhdGUuS2V5VG9nZ2xlU3RhdGUgPT0gVmFsaWRTdGF0ZVtJbmRleF0gJiYNCj4gKyAgICAg ICAgKEtleS5LZXlTdGF0ZS5LZXlTaGlmdFN0YXRlID09IDAgfHwNCj4gS2V5LktleVN0YXRlLktl eVNoaWZ0U3RhdGUgPT0gRUZJX1NISUZUX1NUQVRFX1ZBTElEKSAmJg0KPiArICAgICAgICBLZXku S2V5LlNjYW5Db2RlID09IDAgJiYgS2V5LktleS5Vbmljb2RlQ2hhciA9PSAwKQ0KQ29tcGxpY2F0 ZWQgY29uZGl0aW9uYWwuIENhbiBpdCBiZSBicm9rZW4gZG93bj8NCj4gKyAgICAgICAgQXNzZXJ0 aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQo+ICsgICAgICBlbHNlDQo+ICsg ICAgICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KTml0OiBi cmFjZXMgYWZ0ZXIgaWYgYW5kIGVsc2UgZXZlbiBpZiB0aGVyZSBpcyBpcyBhIHNpbmdsZSBzdGF0 ZW1lbnQgYWZ0ZXIgdGhlbSB0byBtYWtlIGNvZGUgbGVnaWJsZS4NCj4gKw0KPiArDQo+ICsgICAg ICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4gKyAgICAgICAgICAgICAgICAgICAg IFN0YW5kYXJkTGliLA0KPiArICAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZSwNCj4g KyAgICAgICAgICAgICAgICAgICAgIGdTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdEZ1bmN0aW9uQXNz ZXJ0aW9uR3VpZDAxDQo+IDEsDQo+ICsgICAgICAgICAgICAgICAgICAgICBMIkVGSV9TSU1QTEVf VEVYVF9JTlBVVF9FWF9QUk9UT0NPTC5SZWFkS2V5U3Rybw0KPiBrZUV4IC0gUmVhZEtleVN0cm9r ZUV4KCkgc2hvdWxkIGdldCB0aGUgVmFsaWRTdGF0ZSB3aXRoIEVGSV9OT1RfUkVBRFkgDQo+IGFu ZCBvdGhlciBmaWVsZCBpcyB6ZXJvIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEwiJWE6JWQs IFN0YXR1cyA9ICVyLCBJbmRleCA9ICVkLA0KPiBLZXlUb2dnbGVTdGF0ZSA9ICV4LCBleHBlY3Qg U3RhdGUgPSAleFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KPiArICAg ICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAgICAgICAgICAgICAg ICAgU3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ICsgICAgICAgICAg ICAgICAgICAgICBLZXkuS2V5U3RhdGUuS2V5VG9nZ2xlU3RhdGUsDQo+ICsgICAgICAgICAgICAg ICAgICAgICBWYWxpZFN0YXRlW0luZGV4XQ0KPiArICAgICAgICAgICAgICAgICAgICAgKTsNCj4g Kw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30N Cj4gZGlmZiAtLWdpdCBhL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJv dG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBTaW1wbGVUZXh0SW5wdXRF eEJCVGVzdE1haW4uYyBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJv dG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBTaW1wbGVUZXh0SW5wdXRF eEJCVGVzdE1haW4uYw0KPiBpbmRleCBmZGJjOTBmLi41YjcxYjZhIDEwMDY0NA0KPiAtLS0gYS91 ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJ bnB1dEV4L0JsYWNrQm94VGVzdC8NCj4gU2ltcGxlVGV4dElucHV0RXhCQlRlc3RNYWluLmMNCj4g KysrIGIvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1w bGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IFNpbXBsZVRleHRJbnB1dEV4QkJUZXN0TWFp bi5jDQo+IEBAIC0xLDcgKzEsNyBAQA0KPiAgLyoqIEBmaWxlDQo+ICANCj4gICAgQ29weXJpZ2h0 IDIwMDYgLSAyMDE3IFVuaWZpZWQgRUZJLCBJbmMuPEJSPg0KPiAtICBDb3B5cmlnaHQgKGMpIDIw MTAgLSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyANCj4gcmVzZXJ2ZWQuPEJS Pg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cw0KPiByZXNlcnZlZC48QlI+DQo+ICANCj4gICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUg YWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAgICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiANCj4gdGhlIEJTRCBMaWNlbnNl IEBAIC0xMDYsNiArMTA2LDE1IEBAIEVGSV9CQl9URVNUX0VOVFJZX0ZJRUxEIA0KPiBnQkJUZXN0 RW50cnlGaWVsZFtdID0gew0KPiAgICB9LA0KPiAgI2VuZGlmDQo+ICAgIHsNCj4gKyAgICBFRklf U0lNUExFX1RFWFRfSU5QVVRfRVhfUFJPVE9DT0xfVEVTVF9FTlRSWV9HVUlEMDEwNywNCj4gKyAg ICBMIlJlYWRLZXlTdHJva2VFeEZ1bmN0aW9uQXV0byIsDQo+ICsgICAgTCJGdW5jdGlvbiBBdXRv IHRlc3QgZm9yIFNpbXBsZSBUZXh0IElucHV0IEV4IFByb3RvY29sDQo+IFJlYWRLZXlTdHJva2VF eCgpLiIsDQo+ICsgICAgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwNCj4gKyAgICBnU3VwcG9ydFBy b3RvY29sR3VpZCwNCj4gKyAgICBFRklfVEVTVF9DQVNFX0FVVE8sDQo+ICsgICAgQkJUZXN0UmVh ZEtleVN0cm9rZUV4RnVuY3Rpb25BdXRvVGVzdA0KPiArICB9LA0KPiArICB7DQo+ICAgICAgRUZJ X1NJTVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MX1RFU1RfRU5UUllfR1VJRDAyMDEsDQo+ICAg ICAgTCJSZWFkS2V5U3Ryb2tlRXhDb25mb3JtYW5jZSIsDQo+ICAgICAgTCJDb25mb3JtYW5jZSB0 ZXN0IGZvciBTaW1wbGUgVGV4dCBJbnB1dCBFeCBQcm90b2NvbCANCj4gUmVhZEtleVN0cm9rZUV4 KCkuIiwNCj4gQEAgLTE1MSw3ICsxNjAsNiBAQCBCT09MRUFOICAgICBCZWVuRXhlY3V0ZWQ7DQo+ ICAvLw0KPiAgDQo+ICBFRklfU1RBVFVTDQo+IC1FRklBUEkNClRoaXMgY2hhbmdlIHNob3VsZCBi ZSBpbiBhbm90aGVyIHBhdGNoLg0KPiAgSW5pdGlhbGl6ZVNpbXBsZVRleHRJbnB1dEV4QkJUZXN0 ICgNCj4gICAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4g ICAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgICAgICAgICAgICAqU3lzdGVtVGFibGUNCj4gQEAgLTE3 OSw3ICsxODcsNiBAQCBJbml0aWFsaXplU2ltcGxlVGV4dElucHV0RXhCQlRlc3QgKA0KPiAgDQo+ ICANCj4gIEVGSV9TVEFUVVMNCj4gLUVGSUFQSQ0KVGhpcyBjaGFuZ2Ugc2hvdWxkIGJlIGluIGFu b3RoZXIgcGF0Y2guDQo+ICBVbmxvYWRTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdCAoDQo+ICAgIElO IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUNCj4gICAgKQ0KPiBkaWZm IC0tZ2l0IGEvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9T aW1wbGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IFNpbXBsZVRleHRJbnB1dEV4QkJUZXN0 TWFpbi5oIGIvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9T aW1wbGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IFNpbXBsZVRleHRJbnB1dEV4QkJUZXN0 TWFpbi5oDQo+IGluZGV4IGNiMjE2MGIuLjg2NzY2MDYgMTAwNjQ0DQo+IC0tLSBhL3VlZmktDQo+ IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgv QmxhY2tCb3hUZXN0Lw0KPiBTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdE1haW4uaA0KPiArKysgYi91 ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1NpbXBsZVRleHRJ bnB1dEV4L0JsYWNrQm94VGVzdC8NCj4gU2ltcGxlVGV4dElucHV0RXhCQlRlc3RNYWluLmgNCj4g QEAgLTEsNyArMSw3IEBADQo+ICAvKiogQGZpbGUNCj4gIA0KPiAgICBDb3B5cmlnaHQgMjAwNiAt IDIwMTcgVW5pZmllZCBFRkksIEluYy48QlI+DQo+IC0gIENvcHlyaWdodCAoYykgMjAxMCAtIDIw MTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0KPiByZXNlcnZlZC48QlI+DQo+ICsg IENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz DQo+IHJlc2VydmVkLjxCUj4NCj4gIA0KPiAgICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzDQo+ICAgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5k ZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIA0KPiB0aGUgQlNEIExpY2Vuc2UgQEAgLTU3 LDYgKzU3LDggQEAgQWJzdHJhY3Q6DQo+ICAjZGVmaW5lIEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9F WF9QUk9UT0NPTF9URVNUX0VOVFJZX0dVSUQwMTA2IFwgIHsgDQo+IDB4ZGJjNmU2NTksIDB4YjBl MCwgMHg0NDcxLCB7IDB4OTQsIDB4MTMsIDB4NDUsIDB4MWIsIDB4ZGMsIDB4ZTIsIA0KPiAweGFk LCAweGM3IH0gfQ0KPiAgDQo+ICsjZGVmaW5lIEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9U T0NPTF9URVNUX0VOVFJZX0dVSUQwMTA3IFwgeyANCj4gKzB4MmMzY2EyODIsIDB4NTY0NCwgMHg0 MWI2LCB7IDB4YWYsIDB4YzksIDB4NDMsIDB4ODcsIDB4ZjIsIDB4NTMsDQo+IDB4ODksIDB4YmQg fSB9DQo+ICAvLw0KPiAgLy8gRW50cnkgR1VJRHMgZm9yIENvbmYgVGVzdA0KPiAgLy8NCj4gQEAg LTg2LDcgKzg4LDYgQEAgdHlwZWRlZiBlbnVtIHsNCj4gIC8vDQo+ICAvLw0KPiAgRUZJX1NUQVRV Uw0KPiAtRUZJQVBJDQpUaGlzIGNoYW5nZSBpbiBhbm90aGVyIHBhdGNoLg0KDQo+ICBJbml0aWFs aXplU2ltcGxlVGV4dElucHV0RXhCQlRlc3QgKA0KPiAgICBJTiBFRklfSEFORExFICAgICAgICAg ICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiAgICBJTiBFRklfU1lTVEVNX1RBQkxFICAgICAgICAg ICAgICpTeXN0ZW1UYWJsZQ0KPiBAQCAtOTQsNyArOTUsNiBAQCBJbml0aWFsaXplU2ltcGxlVGV4 dElucHV0RXhCQlRlc3QgKA0KPiAgICANCj4gICAgDQo+ICBFRklfU1RBVFVTDQo+IC1FRklBUEkN ClRoaXMgY2hhbmdlIHNob3VsZCBiZSBpbiBhbm90aGVyIHBhdGNoLg0KDQo+ICBVbmxvYWRTaW1w bGVUZXh0SW5wdXRFeEJCVGVzdCAoDQo+ICAgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg ICAgSW1hZ2VIYW5kbGUNCj4gICAgKTsNCj4gQEAgLTE1NSw2ICsxNTUsMTUgQEAgQkJUZXN0VW5y ZWdpc3RlcktleU5vdGlmeUZ1bmN0aW9uTWFudWFsVGVzdCAoDQo+ICAgIElOIEVGSV9URVNUX0xF VkVMICAgICAgICAgICAgIFRlc3RMZXZlbCwNCj4gICAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICAgU3VwcG9ydEhhbmRsZQ0KPiAgICApOw0KPiArDQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4g K0JCVGVzdFJlYWRLZXlTdHJva2VFeEZ1bmN0aW9uQXV0b1Rlc3QgKA0KPiArICBJTiBFRklfQkJf VEVTVF9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAg ICAgICAgKkNsaWVudEludGVyZmFjZSwNCj4gKyAgSU4gRUZJX1RFU1RfTEVWRUwgICAgICAgICAg ICAgVGVzdExldmVsLA0KPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICBTdXBwb3J0 SGFuZGxlDQo+ICsgICk7DQo+ICAgIA0KPiAgICANCj4gIEVGSV9TVEFUVVMNCj4gQEAgLTIzOSw2 ICsyNDgsMTMgQEANCj4gQkJUZXN0VW5yZWdpc3RlcktleU5vdGlmeUZ1bmN0aW9uTWFudWFsVGVz dENoZWNrcG9pbnQxICgNCj4gIA0KPiAgDQo+ICBFRklfU1RBVFVTDQo+ICtCQlRlc3RSZWFkS2V5 U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0Q2hlY2twb2ludDEgKA0KPiArICBJTiBFRklfU1RBTkRB UkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBF RklfU0lNUExFX1RFWFRfSU5QVVRfRVhfUFJPVE9DT0wgICAgICAgICAgKlNpbXBsZVRleHRJbnB1 dEV4DQo+ICsgICk7DQo+ICsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiAgQkJUZXN0UmVhZEtleVN0 cm9rZUV4Q29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDEgKA0KPiAgICBJTiBFRklfU1RBTkRBUkRf VEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiAgICBJTiBFRklf U0lNUExFX1RFWFRfSU5QVVRfRVhfUFJPVE9DT0wgICAgICAgICAgKlNpbXBsZVRleHRJbnB1dEV4 DQo+IGRpZmYgLS1naXQgYS91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvSUhWL1By b3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC8NCj4gR3VpZC5jIGIvdWVmaS0N Cj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRF eC9CbGFja0JveFRlc3QvDQo+IEd1aWQuYw0KPiBpbmRleCBiNzk3NzJjLi42ODc2ODE0IDEwMDY0 NA0KPiAtLS0gYS91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvSUhWL1Byb3RvY29s L1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC8NCj4gR3VpZC5jDQo+ICsrKyBiL3VlZmkt DQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0 RXgvQmxhY2tCb3hUZXN0Lw0KPiBHdWlkLmMNCj4gQEAgLTEsNyArMSw3IEBADQo+ICAvKiogQGZp bGUNCj4gIA0KPiAgICBDb3B5cmlnaHQgMjAwNiAtIDIwMTUgVW5pZmllZCBFRkksIEluYy48QlI+ DQo+IC0gIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIA0KPiByZXNlcnZlZC48QlI+DQo+ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTgs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gIA0KPiAg ICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICAgIGFyZSBs aWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIA0KPiB0aGUgQlNEIExpY2Vuc2UgQEAgLTYzLDMgKzYzLDggQEAgRUZJX0dVSUQNCj4gZ1Np bXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDA3ID0gDQo+IEVGSV9U RVNUX1NJTVBMRVRFWFRJICBFRklfR1VJRCANCj4gZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVu Y3Rpb25Bc3NlcnRpb25HdWlkMDA4ID0gDQo+IEVGSV9URVNUX1NJTVBMRVRFWFRJTlBVVEVYQkJU RVNURlVOQ1RJT05fQVNTRVJUSU9OXzAwOF9HVUlEOw0KPiAgDQo+ICBFRklfR1VJRCBnU2ltcGxl VGV4dElucHV0RXhCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDkgPSANCj4gRUZJX1RFU1Rf U0lNUExFVEVYVElOUFVURVhCQlRFU1RGVU5DVElPTl9BU1NFUlRJT05fMDA5X0dVSUQ7DQo+ICsN Cj4gK0VGSV9HVUlEIGdTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3Vp ZDAxMCA9DQo+IEVGSV9URVNUX1NJTVBMRVRFWFRJTlBVVEVYQkJURVNURlVOQ1RJT05fQVNTRVJU SU9OXzAxMF9HVUlEOw0KPiArDQo+ICtFRklfR1VJRCBnU2ltcGxlVGV4dElucHV0RXhCQlRlc3RG dW5jdGlvbkFzc2VydGlvbkd1aWQwMTEgPQ0KPiBFRklfVEVTVF9TSU1QTEVURVhUSU5QVVRFWEJC VEVTVEZVTkNUSU9OX0FTU0VSVElPTl8wMTFfR1VJRDsNCj4gKw0KPiBkaWZmIC0tZ2l0IGEvdWVm aS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90b2NvbC9TaW1wbGVUZXh0SW5w dXRFeC9CbGFja0JveFRlc3QvDQo+IEd1aWQuaCBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENh c2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBH dWlkLmgNCj4gaW5kZXggNmM5MGZjYS4uMmE2YmU0OCAxMDA2NDQNCj4gLS0tIGEvdWVmaS0NCj4g c2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9C bGFja0JveFRlc3QvDQo+IEd1aWQuaA0KPiArKysgYi91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RD YXNlL1VFRkkvSUhWL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC8NCj4g R3VpZC5oDQo+IEBAIC0xLDcgKzEsNyBAQA0KPiAgLyoqIEBmaWxlDQo+ICANCj4gICAgQ29weXJp Z2h0IDIwMDYgLSAyMDEwIFVuaWZpZWQgRUZJLCBJbmMuPEJSPg0KPiAtICBDb3B5cmlnaHQgKGMp IDIwMTAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAg Q29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMN Cj4gcmVzZXJ2ZWQuPEJSPg0KPiAgDQo+ICAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCj4gICAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgDQo+IHRoZSBCU0QgTGljZW5zZSBAQCAtMTE5 LDMgKzExOSwxMyBAQCBleHRlcm4gRUZJX0dVSUQgDQo+IGdTaW1wbGVUZXh0SW5wdXRFeEJCVGVz dEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAwODsNCj4gIHsgMHg1MzQzNjlmNywgMHg4Mzk5LCAweDQz NTMsIHsgMHg5NCwgMHhhZCwgMHhjNCwgMHg0OCwgMHhmYSwgMHhkYSwgDQo+IDB4ZWIsIDB4ODQg fSB9DQo+ICANCj4gIGV4dGVybiBFRklfR1VJRCBnU2ltcGxlVGV4dElucHV0RXhCQlRlc3RGdW5j dGlvbkFzc2VydGlvbkd1aWQwMDk7DQo+ICsNCj4gKyNkZWZpbmUgRUZJX1RFU1RfU0lNUExFVEVY VElOUFVURVhCQlRFU1RGVU5DVElPTl9BU1NFUlRJT05fMDEwX0dVSUQNCj4gXA0KPiAreyAweGNm NGQ1NGViLCAweDY2OTYsIDB4NDc5NCwgeyAweDkxLCAweDc0LCAweDU5LCAweGQsIDB4MWMsIDB4 MjIsDQo+IDB4YTgsIDB4NjcgfSB9DQo+ICsNCj4gK2V4dGVybiBFRklfR1VJRCBnU2ltcGxlVGV4 dElucHV0RXhCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMTA7DQo+ICsNCj4gKyNkZWZpbmUg RUZJX1RFU1RfU0lNUExFVEVYVElOUFVURVhCQlRFU1RGVU5DVElPTl9BU1NFUlRJT05fMDExX0dV SUQNCj4gXA0KPiAreyAweGY4ZThmODc5LCAweGE2ZDQsIDB4NGZkMywgeyAweDhiLCAweDhlLCAw eGJhLCAweDFkLCAweDE4LCAweGYxLA0KPiAweDQwLCAweDcxIH0gfQ0KPiArDQo+ICtleHRlcm4g RUZJX0dVSUQgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDEx Ow0KPiBkaWZmIC0tZ2l0IGEvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Q cm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IFNpbXBsZVRleHRJbnB1 dEV4QkJUZXN0RnVuY3Rpb24uYyBiL3VlZmktIA0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkv SUhWL1Byb3RvY29sL1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC8NCj4gU2ltcGxlVGV4 dElucHV0RXhCQlRlc3RGdW5jdGlvbi5jDQo+IGluZGV4IGNlNWE4MGEuLjBiOTUzY2EgMTAwNjQ0 DQo+IC0tLSBhL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wv U2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBTaW1wbGVUZXh0SW5wdXRFeEJCVGVz dEZ1bmN0aW9uLmMNCj4gKysrIGIvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lI Vi9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IFNpbXBsZVRleHRJ bnB1dEV4QkJUZXN0RnVuY3Rpb24uYw0KPiBAQCAtNDU2LDYgKzQ1Niw3OCBAQCBCQlRlc3RVbnJl Z2lzdGVyS2V5Tm90aWZ5RnVuY3Rpb25NYW51YWxUZXN0ICggIH0NCj4gIA0KPiAgDQo+ICtFRklf U1RBVFVTDQo+ICtCQlRlc3RSZWFkS2V5U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0ICgNCj4gKyAg SU4gRUZJX0JCX1RFU1RfUFJPVE9DT0wgICAgICAgKlRoaXMsDQo+ICsgIElOIFZPSUQgICAgICAg ICAgICAgICAgICAgICAgICpDbGllbnRJbnRlcmZhY2UsDQo+ICsgIElOIEVGSV9URVNUX0xFVkVM ICAgICAgICAgICAgIFRlc3RMZXZlbCwNCj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAgU3VwcG9ydEhhbmRsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFOREFSRF9URVNUX0xJ QlJBUllfUFJPVE9DT0wgICAgKlN0YW5kYXJkTGliOw0KPiArICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VY X1BST1RPQ09MICAgICAqU2ltcGxlVGV4dElucHV0RXg7DQo+ICsgIA0KPiArICBFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQo+ICsgIENIQVIxNiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCj4gKw0KPiArICAvLw0K PiArICAvLyBpbml0DQo+ICsgIC8vDQo+ICsgIFNpbXBsZVRleHRJbnB1dEV4ID0NCj4gKEVGSV9T SU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTCopQ2xpZW50SW50ZXJmYWNlOw0KPiArDQo+ICsg IC8vDQo+ICsgIC8vIEdldCB0aGUgU3RhbmRhcmQgTGlicmFyeSBJbnRlcmZhY2UgIC8vICBTdGF0 dXMgPSANCj4gKyBndEJTLT5IYW5kbGVQcm90b2NvbCAoDQo+ICsgICAgICAgICAgICAgICAgICAg U3VwcG9ydEhhbmRsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAmZ0VmaVN0YW5kYXJkVGVzdExp YnJhcnlHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgIChWT0lEICoqKSAmU3RhbmRhcmRMaWIN Cj4gKyAgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsN Cj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsgIA0KPiArICAvLw0KPiArICAvLyBH ZXQgRGV2aWNlIFBhdGggb2YgY3VycmVudCBTaW1wbGVfVGV4dF9JbnB1dF9FeF9Qcm90b2NvbCAg Ly8gQW5kIA0KPiArIG91dCBwdXQgZGV2aWNlIHBhdGggb3IgZGV2aWNlIG5hbWUgIC8vICBTdGF0 dXMgPSANCj4gKyBMb2NhdGVEZXZpY2VQYXRoRnJvbVNpbXBsZVRleHRJbnB1dEV4IChTaW1wbGVU ZXh0SW5wdXRFeCwNCj4gJkRldmljZVBhdGgsIFN0YW5kYXJkTGliKTsNCj4gKyAgaWYgKFN0YXR1 cyA9PSBFRklfU1VDQ0VTUykgew0KPiArICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRo VG9TdHIgKERldmljZVBhdGgpOw0KPiArICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsN Cj4gKyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCj4gKyAgICAgICAgICAgICAg ICAgICAgIFN0YW5kYXJkTGliLA0KPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0Vf TEVWRUxfREVGQVVMVCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEwiXHJcbkN1cnJlbnQgRGV2 aWNlOiAlcyIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQo+ICsgICAg ICAgICAgICAgICAgICAgICApOw0KPiArICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERl dmljZVBhdGhTdHIpOw0KPiArICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KPiArICAgICAg ICByZXR1cm4gU3RhdHVzOw0KPiArICAgICAgRGV2aWNlUGF0aFN0cj1OVUxMOw0KPiArICAgIH0N Cj4gKyAgfSBlbHNlIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIENvbnNvbGUgU3BsaXR0ZXIvU3Rk RXJyDQo+ICsgICAgLy8NCj4gKyAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQo+ICsg ICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQo+ICsgICAgICAgICAgICAgICAgICAgRUZJ X1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCj4gKyAgICAgICAgICAgICAgICAgICBMIlxyXG5DdXJy ZW50IERldmljZTogQ29uc29sZVNwbGl0dGVyL1R4dEluIg0KPiArICAgICAgICAgICAgICAgICAg ICk7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLw0KPiArICAvLw0KPiArICBCQlRlc3RS ZWFkS2V5U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0Q2hlY2twb2ludDEgKCBTdGFuZGFyZExpYiwN Cj4gU2ltcGxlVGV4dElucHV0RXggKTsNCj4gKyAgDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsN Cj4gK30NCj4gKw0KPiArDQo+ICsNCj4gIC8vDQo+ICAvL0NoZWNrIFBvaW50cw0KPiAgLy8NCj4g QEAgLTEwNjAsNCArMTEzMiwxNDMgQEANCj4gQkJUZXN0VW5yZWdpc3RlcktleU5vdGlmeUZ1bmN0 aW9uTWFudWFsVGVzdENoZWNrcG9pbnQxICgNCj4gICAgICAgICAgICAgKTsNCj4gIA0KPiAgICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+IC19DQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0K PiArfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RSZWFkS2V5U3Ryb2tlRXhGdW5jdGlv bkF1dG9UZXN0Q2hlY2twb2ludDEgKA0KPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZ X1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfU0lNUExFX1RFWFRf SU5QVVRfRVhfUFJPVE9DT0wgICAgICAgICAgKlNpbXBsZVRleHRJbnB1dEV4DQo+ICsgICkNCj4g K3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1RFU1RfQVNT RVJUSU9OICAgIEFzc2VydGlvblR5cGU7DQo+ICsgIEVGSV9LRVlfREFUQSAgICAgICAgICBLZXk7 DQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICBJbmRleDsNCj4gKw0KPiArICBFRklfS0VZX1RP R0dMRV9TVEFURSAgU3RhdGUgPSBFRklfVE9HR0xFX1NUQVRFX1ZBTElEIHwNCj4gRUZJX0tFWV9T VEFURV9FWFBPU0VEOw0KSW5kZW50YXRpb24gdG8gYWxpZ24gd2l0aCBFRklfVE9HR0xFX1NUQVRF X1ZBTElELg0KDQo+ICsNCj4gKyAgRUZJX0tFWV9UT0dHTEVfU1RBVEUgIFZhbGlkU3RhdGVbXSA9 IHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8 DQo+IEVGSV9LRVlfU1RBVEVfRVhQT1NFRCB8IEVGSV9TQ1JPTExfTE9DS19BQ1RJVkUsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9UT0dHTEVfU1RBVEVfVkFMSUQgfA0KPiBFRklf S0VZX1NUQVRFX0VYUE9TRUQgfCBFRklfTlVNX0xPQ0tfQUNUSVZFLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICBFRklfVE9HR0xFX1NUQVRFX1ZBTElEIHwNCj4gRUZJX0tFWV9TVEFURV9F WFBPU0VEIHwgRUZJX0NBUFNfTE9DS19BQ1RJVkUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIEVGSV9UT0dHTEVfU1RBVEVfVkFMSUQgfA0KPiBFRklfS0VZX1NUQVRFX0VYUE9TRUQgfCBF RklfU0NST0xMX0xPQ0tfQUNUSVZFIHwgRUZJX05VTV9MT0NLX0FDVElWRSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8DQo+IEVGSV9LRVlfU1RB VEVfRVhQT1NFRCB8IEVGSV9TQ1JPTExfTE9DS19BQ1RJVkUgfCBFRklfQ0FQU19MT0NLX0FDVElW RSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RPR0dMRV9TVEFURV9WQUxJRCB8 DQo+IEVGSV9LRVlfU1RBVEVfRVhQT1NFRCB8IEVGSV9OVU1fTE9DS19BQ1RJVkUgfCBFRklfQ0FQ U19MT0NLX0FDVElWRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RPR0dMRV9T VEFURV9WQUxJRCB8DQo+IEVGSV9LRVlfU1RBVEVfRVhQT1NFRCB8IEVGSV9TQ1JPTExfTE9DS19B Q1RJVkUgfEVGSV9OVU1fTE9DS19BQ1RJVkUgfCANCj4gRUZJX0NBUFNfTE9DS19BQ1RJVkUsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIDANCkluZGVudGF0aW9uIGlzIHdlaXJkIGluIHRo ZSBhYm92ZSBkZWZpbml0aW9uLiBwbGVhc2UgYWxpZ24uDQoNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgfTsNCj4gKyANCj4gKyAgLy8NCj4gKyAgLy9SZXNldCB0aGUgY29uc29sZQ0KPiAr ICAvLw0KPiArICBTdGF0dXMgPSBTaW1wbGVUZXh0SW5wdXRFeC0+UmVhZEtleVN0cm9rZUV4ICgN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW1wbGVUZXh0SW5wdXRFeCwg DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJktleQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSAm JiBTdGF0dXMgIT0gRUZJX05PVF9SRUFEWSkgew0KRXh0cmEgUGFyZW50aGVzaXMgdG8gbWFrZSB0 aGUgcHJpb3JpdHkgb2YgZXZhbHVhdGlvbiBjbGVhcmVyLg0KDQo+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICgoS2V5LktleVN0YXRlLktleVRvZ2dsZVN0YXRlICYg RUZJX1RPR0dMRV9TVEFURV9WQUxJRCkgPT0gMCkgew0KPiArICAgIHJldHVybiBFRklfVU5TVVBQ T1JURUQ7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvL1NldCB0aGUgS0VZX1NUQVRFX0VY UE9TRUQgdG8gY2hlY2sgdGhlIGltY29tcGxldGUga2V5c3Ryb2tlDQo+IHN1cHBvcnQNCj4gKyAg Ly8NCj4gKyAgU3RhdHVzID0gU2ltcGxlVGV4dElucHV0RXgtPlNldFN0YXRlICgNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2ltcGxlVGV4dElucHV0RXgsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZTdGF0ZQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApOw0KPiArDQo+ICsgIGlmIChTdGF0dXMgPT0gRUZJX1VOU1VQUE9SVEVEIHx8 IFN0YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSB7DQpQYXJlbnRoZXNpcyBhcm91bmQgYm90aCB0 aGUgY29uZGl0aW9ucy4NCj4gKyAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4g KyAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAgICAgICAgICBF RklfVEVTVF9BU1NFUlRJT05fV0FSTklORywNCj4gKyAgICAgICAgICAgICAgICAgICBnVGVzdEdl bmVyaWNGYWlsdXJlR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgICBMIkVGSV9TSU1QTEVfVEVY VF9JTlBVVF9FWF9QUk9UT0NPTC5TZXRTdGF0ZSAtDQo+IFNldFN0YXRlKCkgZG9lc24ndCByZXR1 cm4gRUZJX1NVQ0NFU1Mgd2l0aCBFRklfS0VZX1NUQVRFX0VYUE9TRUQiLA0KPiArICAgICAgICAg ICAgICAgICAgIEwiJWE6JWQsIFN0YXR1cyA9ICVyXG4iLA0KPiArICAgICAgICAgICAgICAgICAg IF9fRklMRV9fLA0KPiArICAgICAgICAgICAgICAgICAgIChVSU5UTilfX0xJTkVfXywNCj4gKyAg ICAgICAgICAgICAgICAgICBTdGF0dXMNCj4gKyAgICAgICAgICAgICAgICAgICApOw0KPiArICAg IHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBmb3IgKEluZGV4PTA7IFZhbGlkU3Rh dGVbSW5kZXhdOyBJbmRleCsrKSB7DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIFNldCB0aGUg dmFsaWQgS2V5VG9nZ2xlU3RhdGUNCj4gKyAgICAvLw0KPiArICAgIFN0YXR1cyA9IFNpbXBsZVRl eHRJbnB1dEV4LT5TZXRTdGF0ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU2ltcGxlVGV4dElucHV0RXgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVmFsaWRTdGF0ZSArIEluZGV4DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKTsNCj4gKyAgDQo+ICsgICAgaWYgKFN0YXR1cyAhPSBFRklfU1VDQ0VTUykgew0KPiArICAg ICAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQo+ICsgICAgICAgICAgICAgICAgICAg ICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VSVElP Tl9GQUlMRUQsDQo+ICsgICAgICAgICAgICAgICAgICAgICBnVGVzdEdlbmVyaWNGYWlsdXJlR3Vp ZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEwiRUZJX1NJTVBMRV9URVhUX0lOUFVUX0VYX1BS T1RPQ09MLlNldFN0YXRlIC0NCj4gU2V0U3RhdGUoKSBkb2Vzbid0IHJldHVybiBFRklfU1VDQ0VT UyB3aXRoIHRoZSB2YWxpZCBLZXlUb2dnbGVTdGF0ZSIsDQo+ICsgICAgICAgICAgICAgICAgICAg ICBMIiVhOiVkLCBTdGF0dXMgPSAlciwgS2V5VG9nZ2xlU3RhdGUgPSAleFxuIiwNCj4gKyAgICAg ICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KPiArICAgICAgICAgICAgICAgICAgICAgKFVJTlRO KV9fTElORV9fLA0KPiArICAgICAgICAgICAgICAgICAgICAgU3RhdHVzLA0KPiArICAgICAgICAg ICAgICAgICAgICAgVmFsaWRTdGF0ZVtJbmRleF0NCj4gKyAgICAgICAgICAgICAgICAgICAgICk7 DQo+ICsgICAgICBjb250aW51ZTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8v IEdldCB0aGUgS2V5VG9nZ2xlU3RhdGUNCj4gKyAgICAvLw0KPiArICAgIFN0YXR1cyA9IFNpbXBs ZVRleHRJbnB1dEV4LT5SZWFkS2V5U3Ryb2tlRXggKA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNpbXBsZVRleHRJbnB1dEV4LCANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmS2V5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KTsNCj4gKw0KPiArICAgIGlmIChTdGF0dXMgIT0gRUZJX05PVF9SRUFEWSkgew0KPiArICAgICAg QXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQo+ICsNCj4gKyAgICAg IFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KPiArICAgICAgICAgICAgICAgICAgICAg U3RhbmRhcmRMaWIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rpb25Bc3Nl cnRpb25HdWlkMDENCj4gMCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEwiRUZJX1NJTVBMRV9U RVhUX0lOUFVUX0VYX1BST1RPQ09MLlJlYWRLZXlTdHJvDQo+IGtlRXggLSBSZWFkS2V5U3Ryb2tl RXgoKSBkb2Vzbid0IHJldHVybiBFRklfTk9UX1JFQURZIHdoZW4gdGhlcmUgaXMgbm8gDQo+IEtl eSBkYXRhIGFuZCBFRklfS0VZX1NUQVRFX0VYUE9TRUQgaXMgZW5hYmxlZCIsDQo+ICsgICAgICAg ICAgICAgICAgICAgICBMIiVhOiVkLCBTdGF0dXMgPSAlciwgSW5kZXggPSAlZCwNCj4gS2V5VG9n Z2xlU3RhdGUgPSAleFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ICsgICAgICAg ICAgICAgICAgICAgICBWYWxpZFN0YXRlW0luZGV4XQ0KPiArICAgICAgICAgICAgICAgICAgICAg KTsNCj4gKw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBpZiAoS2V5LktleVN0YXRlLktleVRv Z2dsZVN0YXRlID09IFZhbGlkU3RhdGVbSW5kZXhdICYmDQo+ICsgICAgICAgIChLZXkuS2V5U3Rh dGUuS2V5U2hpZnRTdGF0ZSA9PSAwIHx8DQo+IEtleS5LZXlTdGF0ZS5LZXlTaGlmdFN0YXRlID09 IEVGSV9TSElGVF9TVEFURV9WQUxJRCkgJiYNCj4gKyAgICAgICAgS2V5LktleS5TY2FuQ29kZSA9 PSAwICYmIEtleS5LZXkuVW5pY29kZUNoYXIgPT0gMCkNCj4gKyAgICAgICAgQXNzZXJ0aW9uVHlw ZSA9IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQo+ICsgICAgICBlbHNlDQo+ICsgICAgICAJ IEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KPiArDQo+ICsNCj4g KyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KPiArICAgICAgICAgICAgICAg ICAgICAgU3RhbmRhcmRMaWIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBl LA0KPiArICAgICAgICAgICAgICAgICAgICAgZ1NpbXBsZVRleHRJbnB1dEV4QkJUZXN0RnVuY3Rp b25Bc3NlcnRpb25HdWlkMDENCj4gMSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIEwiRUZJX1NJ TVBMRV9URVhUX0lOUFVUX0VYX1BST1RPQ09MLlJlYWRLZXlTdHJvDQo+IGtlRXggLSBSZWFkS2V5 U3Ryb2tlRXgoKSBzaG91bGQgZ2V0IHRoZSBWYWxpZFN0YXRlIHdpdGggRUZJX05PVF9SRUFEWSAN Cj4gYW5kIG90aGVyIGZpZWxkIGlzIHplcm8iLA0KPiArICAgICAgICAgICAgICAgICAgICAgTCIl YTolZCwgU3RhdHVzID0gJXIsIEluZGV4ID0gJWQsDQo+IEtleVRvZ2dsZVN0YXRlID0gJXgsIGV4 cGVjdCBTdGF0ZSA9ICV4XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sDQo+ ICsgICAgICAgICAgICAgICAgICAgICAoVUlOVE4pX19MSU5FX18sDQo+ICsgICAgICAgICAgICAg ICAgICAgICBTdGF0dXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgIEtleS5LZXlTdGF0ZS5LZXlUb2dnbGVTdGF0ZSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgIFZhbGlkU3RhdGVbSW5kZXhdDQo+ICsgICAgICAgICAgICAgICAgICAgICAp Ow0KPiArDQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiArfQ0KPiBkaWZmIC0tZ2l0IGEvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lI Vi9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IFNpbXBsZVRleHRJ bnB1dEV4QkJUZXN0TWFpbi5jIGIvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lI Vi9Qcm90b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IFNpbXBsZVRleHRJ bnB1dEV4QkJUZXN0TWFpbi5jDQo+IGluZGV4IDQzZGJiZGEuLmMwYTRmNWEgMTAwNjQ0DQo+IC0t LSBhL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvU2ltcGxl VGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBTaW1wbGVUZXh0SW5wdXRFeEJCVGVzdE1haW4u Yw0KPiArKysgYi91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvSUhWL1Byb3RvY29s L1NpbXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC8NCj4gU2ltcGxlVGV4dElucHV0RXhCQlRl c3RNYWluLmMNCj4gQEAgLTEsNyArMSw3IEBADQo+ICAvKiogQGZpbGUNCj4gIA0KPiAgICBDb3B5 cmlnaHQgMjAwNiAtIDIwMTYgVW5pZmllZCBFRkksIEluYy48QlI+DQo+IC0gIENvcHlyaWdodCAo YykgMjAxMCAtIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0KPiByZXNlcnZl ZC48QlI+DQo+ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gIA0KPiAgICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICAgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBh dmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIA0KPiB0aGUgQlNEIExp Y2Vuc2UgQEAgLTEwNiw2ICsxMDYsMTUgQEAgRUZJX0JCX1RFU1RfRU5UUllfRklFTEQgDQo+IGdC QlRlc3RFbnRyeUZpZWxkW10gPSB7DQo+ICAgIH0sDQo+ICAjZW5kaWYNCj4gICAgew0KPiArICAg IEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9FWF9QUk9UT0NPTF9URVNUX0VOVFJZX0dVSUQwMTA3LA0K PiArICAgIEwiUmVhZEtleVN0cm9rZUV4RnVuY3Rpb25BdXRvIiwNCj4gKyAgICBMIkZ1bmN0aW9u IEF1dG8gdGVzdCBmb3IgU2ltcGxlIFRleHQgSW5wdXQgRXggUHJvdG9jb2wNCj4gUmVhZEtleVN0 cm9rZUV4KCkuIiwNCj4gKyAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLA0KPiArICAgIGdTdXBw b3J0UHJvdG9jb2xHdWlkLA0KPiArICAgIEVGSV9URVNUX0NBU0VfQVVUTywNCj4gKyAgICBCQlRl c3RSZWFkS2V5U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0DQo+ICsgIH0sDQo+ICsgIHsNCj4gICAg ICBFRklfU0lNUExFX1RFWFRfSU5QVVRfRVhfUFJPVE9DT0xfVEVTVF9FTlRSWV9HVUlEMDIwMSwN Cj4gICAgICBMIlJlYWRLZXlTdHJva2VFeENvbmZvcm1hbmNlIiwNCj4gICAgICBMIkNvbmZvcm1h bmNlIHRlc3QgZm9yIFNpbXBsZSBUZXh0IElucHV0IEV4IFByb3RvY29sIA0KPiBSZWFkS2V5U3Ry b2tlRXgoKS4iLCBkaWZmIC0tZ2l0IGEvdWVmaS0gDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBTaW1wbGVU ZXh0SW5wdXRFeEJCVGVzdE1haW4uaCBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9JSFYvUHJvdG9jb2wvU2ltcGxlVGV4dElucHV0RXgvQmxhY2tCb3hUZXN0Lw0KPiBTaW1wbGVU ZXh0SW5wdXRFeEJCVGVzdE1haW4uaA0KPiBpbmRleCAwYjMzMTJlLi5iYjBkOGM5IDEwMDY0NA0K PiAtLS0gYS91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvSUhWL1Byb3RvY29sL1Np bXBsZVRleHRJbnB1dEV4L0JsYWNrQm94VGVzdC8NCj4gU2ltcGxlVGV4dElucHV0RXhCQlRlc3RN YWluLmgNCj4gKysrIGIvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90 b2NvbC9TaW1wbGVUZXh0SW5wdXRFeC9CbGFja0JveFRlc3QvDQo+IFNpbXBsZVRleHRJbnB1dEV4 QkJUZXN0TWFpbi5oDQo+IEBAIC0xLDcgKzEsNyBAQA0KPiAgLyoqIEBmaWxlDQo+ICANCj4gICAg Q29weXJpZ2h0IDIwMDYgLSAyMDE0IFVuaWZpZWQgRUZJLCBJbmMuPEJSPg0KPiAtICBDb3B5cmln aHQgKGMpIDIwMTAgLSAyMDE0LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyANCj4gcmVz ZXJ2ZWQuPEJSPg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE4LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cw0KPiByZXNlcnZlZC48QlI+DQo+ICANCj4gICAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAgICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiANCj4gdGhlIEJT RCBMaWNlbnNlIEBAIC02MSw2ICs2MSw4IEBAIEFic3RyYWN0Og0KPiAgI2RlZmluZSBFRklfU0lN UExFX1RFWFRfSU5QVVRfRVhfUFJPVE9DT0xfVEVTVF9FTlRSWV9HVUlEMDEwNiBcICB7IA0KPiAw eGRiYzZlNjU5LCAweGIwZTAsIDB4NDQ3MSwgeyAweDk0LCAweDEzLCAweDQ1LCAweDFiLCAweGRj LCAweGUyLCANCj4gMHhhZCwgMHhjNyB9IH0NCj4gIA0KPiArI2RlZmluZSBFRklfU0lNUExFX1RF WFRfSU5QVVRfRVhfUFJPVE9DT0xfVEVTVF9FTlRSWV9HVUlEMDEwNyBcIHsgDQo+ICsweDJjM2Nh MjgyLCAweDU2NDQsIDB4NDFiNiwgeyAweGFmLCAweGM5LCAweDQzLCAweDg3LCAweGYyLCAweDUz LA0KPiAweDg5LCAweGJkIH0gfQ0KPiAgLy8NCj4gIC8vIEVudHJ5IEdVSURzIGZvciBDb25mIFRl c3QNCj4gIC8vDQo+IEBAIC0xNTcsNiArMTU5LDE1IEBAIEJCVGVzdFVucmVnaXN0ZXJLZXlOb3Rp ZnlGdW5jdGlvbk1hbnVhbFRlc3QgKA0KPiAgICBJTiBFRklfVEVTVF9MRVZFTCAgICAgICAgICAg ICBUZXN0TGV2ZWwsDQo+ICAgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgIFN1cHBvcnRI YW5kbGUNCj4gICAgKTsNCj4gKw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RSZWFkS2V5 U3Ryb2tlRXhGdW5jdGlvbkF1dG9UZXN0ICgNCj4gKyAgSU4gRUZJX0JCX1RFU1RfUFJPVE9DT0wg ICAgICAgKlRoaXMsDQo+ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICpDbGllbnRJ bnRlcmZhY2UsDQo+ICsgIElOIEVGSV9URVNUX0xFVkVMICAgICAgICAgICAgIFRlc3RMZXZlbCwN Cj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZQ0KPiArICAp Ow0KPiAgICANCj4gICAgDQo+ICBFRklfU1RBVFVTDQo+IEBAIC0yNDEsNiArMjUyLDEzIEBADQo+ IEJCVGVzdFVucmVnaXN0ZXJLZXlOb3RpZnlGdW5jdGlvbk1hbnVhbFRlc3RDaGVja3BvaW50MSAo DQo+ICANCj4gIA0KPiAgRUZJX1NUQVRVUw0KPiArQkJUZXN0UmVhZEtleVN0cm9rZUV4RnVuY3Rp b25BdXRvVGVzdENoZWNrcG9pbnQxICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFS WV9QUk9UT0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJX1NJTVBMRV9URVhU X0lOUFVUX0VYX1BST1RPQ09MICAgICAgICAgICpTaW1wbGVUZXh0SW5wdXRFeA0KPiArICApOw0K PiArDQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gIEJCVGVzdFJlYWRLZXlTdHJva2VFeENvbmZvcm1h bmNlVGVzdENoZWNrcG9pbnQxICgNCj4gICAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9Q Uk9UT0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwNCj4gICAgSU4gRUZJX1NJTVBMRV9URVhUX0lO UFVUX0VYX1BST1RPQ09MICAgICAgICAgICpTaW1wbGVUZXh0SW5wdXRFeA0KDQo=