From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (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 89AE721E87993 for ; Thu, 14 Sep 2017 03:13:57 -0700 (PDT) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Sep 2017 03:16:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,392,1500966000"; d="scan'208";a="1218694016" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga002.fm.intel.com with ESMTP; 14 Sep 2017 03:16:55 -0700 Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 14 Sep 2017 03:16:55 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx117.amr.corp.intel.com (10.18.116.17) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 14 Sep 2017 03:16:54 -0700 Received: from shsmsx151.ccr.corp.intel.com ([169.254.3.98]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.117]) with mapi id 14.03.0319.002; Thu, 14 Sep 2017 18:16:52 +0800 From: "Zeng, Star" To: Laszlo Ersek , "Wang, Jian J" , "Yao, Jiewen" CC: "Kinney, Michael D" , "Justen, Jordan L" , "edk2-devel@lists.01.org" , "Dong, Eric" , "Wolman, Ayellet" , "Zeng, Star" Thread-Topic: [edk2] [PATCH 4/4] OvmfPkg/QemuVideoDxe: Update QemuVideoDxe driver to bypass NULL pointer detection if enabled. Thread-Index: AQHTLHJCQi2+U94RoUitjf7fG7CRTaKy8rOAgAAcvwCAACF6gIAAV2QAgAACRYCAAAJGAIAAAkEAgACPtlD//4FWAIAAiwkw Date: Thu, 14 Sep 2017 10:16:51 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103B958C40@SHSMSX151.ccr.corp.intel.com> References: <20170913092507.12504-1-jian.j.wang@intel.com> <20170913092507.12504-5-jian.j.wang@intel.com> <848bc70b-b3f7-62fb-ef2d-df89ff8805a6@redhat.com> <4dd43619-552e-9d0e-3d2b-ca9c1f3b80a3@redhat.com> <74D8A39837DF1E4DA445A8C0B3885C503A9B264A@SHSMSX151.ccr.corp.intel.com> <0C09AFA07DD0434D9E2A0C6AEB0483103B958C07@SHSMSX151.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 4/4] OvmfPkg/QemuVideoDxe: Update QemuVideoDxe driver to bypass NULL pointer detection if enabled. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Sep 2017 10:13:57 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Tm8sIEkgd2FudCB0byBzYXkgZXZlbiB0aGUgR0NEIGlzIHVwZGF0ZWQgdG8gbm90IGZpbHRlciBw YWdlIGF0dHJpYnV0ZXMsIGl0IHdpbGwgc3RpbGwgbm90IHdvcmsgYXMgYWxsIHRoZSBtZW1vcnkg Y29udHJvbGxlciBjb2RlIGZvciBub3cgYXJlIG5vdCByZXBvcnRpbmcgdGhlIENhcGFiaWxpdHku DQoNCg0KVGhhbmtzLA0KU3Rhcg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGVk azItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBCZWhh bGYgT2YgTGFzemxvIEVyc2VrDQpTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDE0LCAyMDE3IDU6 NTUgUE0NClRvOiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPjsgV2FuZywgSmlhbiBK IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5j b20+DQpDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsg SnVzdGVuLCBKb3JkYW4gTCA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT47IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnOyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgV29sbWFuLCBB eWVsbGV0IDxheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+DQpTdWJqZWN0OiBSZTogW2VkazJdIFtQ QVRDSCA0LzRdIE92bWZQa2cvUWVtdVZpZGVvRHhlOiBVcGRhdGUgUWVtdVZpZGVvRHhlIGRyaXZl ciB0byBieXBhc3MgTlVMTCBwb2ludGVyIGRldGVjdGlvbiBpZiBlbmFibGVkLg0KDQpPbiAwOS8x NC8xNyAxMTozOSwgWmVuZywgU3RhciB3cm90ZToNCj4gVGhlcmUgaXMgYSByZWFsaXN0aWMgcHJv YmxlbSBJIGp1c3QgZm91bmQgYW5kIHdhbnQgdG8gc2hhcmUuDQo+IA0KPiBHQ0QgZGF0YWJhc2Ug aXMgYnVpbHQgYmFzZWQgb24gcmVzb3VyY2UgaG9iIHJlcG9ydGVkIGZyb20gUEVJLCBhbmQgR0NE IA0KPiBjaGVja3MgdGhlIGlucHV0IEF0dHJpYnV0ZXMgYWdhaW5zdCBDYXBhYmlsaXRpZXMgd2hl biBzZXR0aW5nIA0KPiBBdHRyaWJ1dGVzLCBidXQgd2UgKEkganVzdCBzZWFyY2hlZCB0aGUgd2hv bGUgY29kZWJhc2UpIGNhbiBzZWUgdGhlcmUgDQo+IGlzIG5vIGNvZGUgcmVwb3J0aW5nIHJlc291 cmNlIGhvYiB3aXRoIA0KPiBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1JFQURfUFJPVEVDVEFCTEUs DQo+IEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfRVhFQ1VUSU9OX1BST1RFQ1RBQkxFIG9yIA0KPiBF RklfUkVTT1VSQ0VfQVRUUklCVVRFX1JFQURfT05MWV9QUk9URUNUQUJMRSBzZXQuDQouLi4gQXJl IHlvdSBzYXlpbmcgdGhhdCwgaWYgd2UgbW9kaWZ5IEFkZE1lbW9yeUJhc2VTaXplSG9iKCkgaW4g T3ZtZlBrZy9QbGF0Zm9ybVBlaSwgdG8gcmVwb3J0IEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfUkVB RF9PTkxZX1BST1RFQ1RBQkxFICgqKSwgdGhlbg0KZ0RTLT5TZXRNZW1vcnlTcGFjZUF0dHJpYnV0 ZXMoKSB3aWxsIHN0YXJ0IHRvIHdvcms/DQoNCigoKikgIk1kZVBrZy9JbmNsdWRlL1BpL1BpSG9i LmgiOiAiTk9URTogU2luY2UgUEkgc3BlYyAxLjQsIHBsZWFzZSB1c2UgRUZJX1JFU09VUkNFX0FU VFJJQlVURV9SRUFEX09OTFlfUFJPVEVDVEFCTEUgYXMgTWVtb3J5IGNhcGFiaWxpdHkNCmF0dHJp YnV0ZTogVGhlIG1lbW9yeSBzdXBwb3J0cyBiZWluZyBwcm90ZWN0ZWQgZnJvbSBwcm9jZXNzb3Ig d3JpdGVzIikNCg0KSWYgdGhhdCdzIHRoZSBjYXNlLCB0aGVuIEkgaG9wZSBKaWFuIGNhbiBpbmNs dWRlIHN1Y2ggYW4gT3ZtZlBrZyBwYXRjaCBpbiBoaXMgc2VyaWVzLiA6KQ0KDQpUaGFua3MhDQpM YXN6bG8NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMYXN6bG8gRXJz ZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJl ciAxNCwgMjAxNyA0OjU0IFBNDQo+IFRvOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVs LmNvbT47IFlhbywgSmlld2VuIA0KPiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+IENjOiBEb25n LCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4gTCANCj4gPGpvcmRh bi5sLmp1c3RlbkBpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgV29sbWFuLCBB eWVsbGV0IA0KPiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQg DQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IFplbmcsIFN0YXIgPHN0YXIuemVuZ0Bp bnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDQvNF0gT3ZtZlBrZy9RZW11 VmlkZW9EeGU6IFVwZGF0ZSBRZW11VmlkZW9EeGUgZHJpdmVyIHRvIGJ5cGFzcyBOVUxMIHBvaW50 ZXIgZGV0ZWN0aW9uIGlmIGVuYWJsZWQuDQo+IA0KPiBPbiAwOS8xNC8xNyAxMDo0NiwgV2FuZywg SmlhbiBKIHdyb3RlOg0KPj4gSXTigJlzIGFuIGltcGxlbWVudGF0aW9uIGxpbWl0YXRpb24uIEFs bCBwYWdlIGF0dHJpYnV0ZXMgd2lsbCBiZSBmaWx0ZXJlZCBvdXQgYmVmb3JlIGNhbGxpbmcgQ1BV IGFyY2ggcHJvdG9jb2wgdG8gdXBkYXRlIHRoZSBhdHRyaWJ1dGVzIChHY2QuYykuDQo+IA0KPiBU aGF0IGNhbm5vdCBiZSBhIHJhbmRvbSBvY2N1cnJlbmNlOyBJJ20gc3VyZSB0aGVyZSB3YXMgc29t ZSBzcGVjaWZpYyBpbnRlbnQgYmVoaW5kIGZpbHRlcmluZyBvdXQgdGhlIHBhZ2UgYXR0cmlidXRl cy4NCj4gDQo+IERvZXMgImdpdCBibGFtZSIgcHJvdmlkZSBhIHJlYXNvbiwgZnJvbSB0aGUgbWVz c2FnZSBvZiB0aGUgY29tbWl0IHRoYXQgYWRkZWQgdGhlIGZpbHRlcmluZz8NCj4gDQo+IFRoYW5r cywNCj4gTGFzemxvDQo+IA0KPj4gRnJvbTogWWFvLCBKaWV3ZW4NCj4+IFNlbnQ6IFRodXJzZGF5 LCBTZXB0ZW1iZXIgMTQsIDIwMTcgNDozOCBQTQ0KPj4gVG86IExhc3psbyBFcnNlayA8bGVyc2Vr QHJlZGhhdC5jb20+OyBXYW5nLCBKaWFuIEogDQo+PiA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0K Pj4gQ2M6IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBKdXN0ZW4sIEpvcmRhbiBM IA0KPj4gPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9y ZzsgV29sbWFuLCBBeWVsbGV0IA0KPj4gPGF5ZWxsZXQud29sbWFuQGludGVsLmNvbT47IEtpbm5l eSwgTWljaGFlbCBEIA0KPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgWmVuZywgU3Rh ciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIDQv NF0gT3ZtZlBrZy9RZW11VmlkZW9EeGU6IFVwZGF0ZSBRZW11VmlkZW9EeGUgZHJpdmVyIHRvIGJ5 cGFzcyBOVUxMIHBvaW50ZXIgZGV0ZWN0aW9uIGlmIGVuYWJsZWQuDQo+Pg0KPj4gSEkNCj4+IEkg d29uZGVyIGlmIGl0IGlzIHNwZWMgbGltaXRhdGlvbiBvciBpbXBsZW1lbnRhdGlvbiBsaW1pdGF0 aW9uLg0KPj4NCj4+IElmIGl0IGlzIGltcGxlbWVudGF0aW9uIGxpbWl0YXRpb24sIHdlIGNhbiBl bmhhbmNlIHRoZSBEeGVDb3JlIHRvIGFsbG93IGl0Lg0KPj4NCj4+IFRoYW5rIHlvdQ0KPj4gWWFv IEppZXdlbg0KPj4NCj4+IEZyb206IExhc3psbyBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQu Y29tXQ0KPj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAxNCwgMjAxNyA0OjMwIFBNDQo+PiBU bzogV2FuZywgSmlhbiBKIA0KPj4gPGppYW4uai53YW5nQGludGVsLmNvbTxtYWlsdG86amlhbi5q LndhbmdAaW50ZWwuY29tPj4NCj4+IENjOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29t PG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj47DQo+PiBKdXN0ZW4sIEpvcmRhbiBMDQo+PiA8 am9yZGFuLmwuanVzdGVuQGludGVsLmNvbTxtYWlsdG86am9yZGFuLmwuanVzdGVuQGludGVsLmNv bT4+Ow0KPj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMu MDEub3JnPjsgWWFvLCBKaWV3ZW4gDQo+PiA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmpp ZXdlbi55YW9AaW50ZWwuY29tPj47IFdvbG1hbiwgQXllbGxldCANCj4+IDxheWVsbGV0LndvbG1h bkBpbnRlbC5jb208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+OyBLaW5uZXksIA0K Pj4gTWljaGFlbCBEIA0KPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzptaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT4+OyANCj4+IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRl bC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+Pg0KPj4gU3ViamVjdDogUmU6IFtlZGsy XSBbUEFUQ0ggNC80XSBPdm1mUGtnL1FlbXVWaWRlb0R4ZTogVXBkYXRlIFFlbXVWaWRlb0R4ZSBk cml2ZXIgdG8gYnlwYXNzIE5VTEwgcG9pbnRlciBkZXRlY3Rpb24gaWYgZW5hYmxlZC4NCj4+DQo+ PiBPbiAwOS8xNC8xNyAwNToxNywgV2FuZywgSmlhbiBKIHdyb3RlOg0KPj4+IEZvciB0aGUgdXNl IG9mIGFyY2ggcHJvdG9jb2wsIHRoZXJlJ3Mgb25lIHRoaW5nIEkgbWVudGlvbmVkIGlzIG5vdCAN Cj4+PiBhY2N1cmF0ZS4gSSBhY3R1YWxseSB0cmllZCBnRFMtPlNldE1lbW9yeVNwYWNlQXR0cmli dXRlcygpIGJ1dCBpdCANCj4+PiBjYW5ub3QgY2hhbmdlIHBhZ2UgYXR0cmlidXRlcy4gVGhhdCdz IHdoeSBJIGhhdmUgdG8gdHVybiB0byBjcHUgYXJjaCANCj4+PiBwcm90b2NvbC4NCj4+IFRoYW5r IHlvdSBmb3IgdGhlIGV4cGxhbmF0aW9uLg0KPj4NCj4+IEluIHRoYXQgY2FzZSwgd2UgY2Fubm90 IGF2b2lkIHZpb2xhdGluZyB0aGUgUEkgc3BlYy4gSSBhZ3JlZSB3ZSBjYW4gDQo+PiBicmVhayB0 aGUgc3BlYyBpZiBpdCBoYXBwZW5zIGZvciBzZWN1cml0eSBwdXJwb3NlcywgYnV0IGluIHRoYXQg Y2FzZSwgDQo+PiBJIGJlbGlldmUgdGhhdCBoaWRpbmcgdGhlIGltcGxlbWVudGF0aW9uIGJlaGlu ZCBhIGxpYnJhcnkgY2xhc3MgaXMgDQo+PiBtYW5kYXRvcnkuIFZpZXdlZCBmcm9tIHRoZSBzcGVj IHNpZGUsIGFjY2Vzc2luZyB0aGUgQ1BVIEFyY2ggcHJvdG9jb2wgDQo+PiBpcyBhIGhhY2ssIGFu ZCBzbyBpdCBzaG91bGQgbm90IGJlIHNwcmVhZCB0byB0aGUgc291cmNlIGNvZGUgb2YgDQo+PiBz ZXZlcmFsIGRyaXZlciBtb2R1bGVzLg0KPj4NCj4+IFRoYW5rIHlvdSwNCj4+IExhc3psbw0KPj4N Cj4+DQo+Pj4NCj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+IEZyb206IGVkazIt ZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBCZWhhbGYg DQo+Pj4gT2YgV2FuZywgSmlhbiBKDQo+Pj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAxNCwg MjAxNyA5OjE3IEFNDQo+Pj4gVG86IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb208bWFp bHRvOmxlcnNla0ByZWRoYXQuY29tPj4NCj4+PiBDYzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGlu dGVsLmNvbTxtYWlsdG86ZXJpYy5kb25nQGludGVsLmNvbT4+Ow0KPj4+IEp1c3RlbiwgSm9yZGFu IEwNCj4+PiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbTxtYWlsdG86am9yZGFuLmwuanVzdGVu QGludGVsLmNvbT4+Ow0KPj4+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRl dmVsQGxpc3RzLjAxLm9yZz47IFlhbywgSmlld2VuIA0KPj4+IDxqaWV3ZW4ueWFvQGludGVsLmNv bTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+PjsgV29sbWFuLCBBeWVsbGV0IA0KPj4+IDxh eWVsbGV0LndvbG1hbkBpbnRlbC5jb208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+ OyBLaW5uZXksIA0KPj4+IE1pY2hhZWwgRCANCj4+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b208bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj47DQo+Pj4gWmVuZywgU3RhciA8 c3Rhci56ZW5nQGludGVsLmNvbTxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4+DQo+Pj4gU3Vi amVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggNC80XSBPdm1mUGtnL1FlbXVWaWRlb0R4ZTogVXBkYXRl IFFlbXVWaWRlb0R4ZSBkcml2ZXIgdG8gYnlwYXNzIE5VTEwgcG9pbnRlciBkZXRlY3Rpb24gaWYg ZW5hYmxlZC4NCj4+Pg0KPj4+IFRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzIGFuZCBnb29kIGFkdmlj ZXMuIFNvcnJ5IHRoZSBmb3JtYXQgaXNzdWVzLg0KPj4+IFRoaXMgaXMgbXkgZmlyc3QgcGF0Y2gg Zm9yIHRoaXMgcHJvamVjdC4gVG9vIG1hbnkgZGV0YWlscyBmb3IgbWUgdG8gDQo+Pj4gZ2V0IGZh bWlsaWFyIHdpdGguDQo+Pj4NCj4+PiAoMSkgU3VyZS4NCj4+PiAoMikgSSdsbCBjaGFuZ2UgdGhh dC4NCj4+PiAoMykgSSdsbCB1c2UgdGhlIHRvb2wgdG8gZW5zdXJlIHRoZSBwYXRjaCBmb3JtYXQu DQo+Pj4gKDQpIEknbGwgcmVtb3ZlIHRoZSAnLCcgaW4gbmFtZQ0KPj4+ICg1KSBJJ2xsIGFkZCBt b3JlIGRlc2NyaXB0aW9uIGFib3V0IGl0Lg0KPj4+ICg2KSBZb3UncmUgcmlnaHQuIEkgc2hvdWxk IHVzZSBTZXRNZW1vcnlTcGFjZUF0dHJpYnV0ZXMoKSBvZiBEWEUgc2VydmljZQ0KPj4+ICAgICAg aW5zdGVhZC4gVGhlIG9ubHkgcmVhc29uIEkgZGlkbid0IGRvIGl0IGlzIHRoYXQgSSBmb3VuZA0K Pj4+ICAgICAgIEdldE1lbW9yeVNwYWNlRGVzY3JpcHRvcigpIGRvZXNuJ3QgcmV0dXJuIHRoZSBz YW1lIGluZm9ybWF0aW9uDQo+Pj4gICAgICB3aGljaCBTZXRNZW1vcnlTcGFjZUF0dHJpYnV0ZXMo KSBqdXN0IGNoYW5nZWQuIFNvIEkgZmVlbCB1c2luZyBDUFUNCj4+PiAgICAgYXJjaCBwcm90b2Nv bCBpcyBhIGJpdCBzYWZlci4gQW55d2F5LCBJJ2xsIGNoYW5nZSBpdC4NCj4+PiAoNykgSSBkaWQg cHV0IHRob3NlIG1hY3JvcyBpbiB0aGUgaW5zdGFsbCBmdW5jdGlvbiBiZWZvcmUuIFRvIHJlZHVj ZSB0aGUNCj4+PiAgICAgIG51bWJlciBvZiBjaGFuZ2VkIGZpbGVzLCBJIG1hZGUgY3VycmVudCBj aGFuZ2VzLiBZb3UncmUgcmlnaHQgaXQncw0KPj4+ICAgICAgbm90IHdvcnRoeS4NCj4+PiAoOCkg VXNpbmcgbWFjcm8gY2FuIGhlbHAgdGhlIHJlYWRhYmlsaXR5LCB3aGljaCBpcyBtb3JlIGltcG9y dGFudCB0byBtZS4NCj4+PiAgICAgSSBrbm93IGZ1bmN0aW9uIGNhbiBkbyB0aGUgc2FtZS4gQnV0 IGl0IGxvb2tzIGEgYml0IGhlYXZ5IGluIHRoaXMgc2l0dWF0aW9uLg0KPj4+ICAgICBJIGhhdmUg dG8gYWRtaXQgcmVwbGFjaW5nICB0aGUgbWFjcm9zIHdpdGggYSBsaWJyYXJ5IGlzIGEgdmVyeSBn b29kIGlkZWEsDQo+Pj4gICAgIHdoaWNoIGJyaW5ncyB0aGUgc2FtZSByZWFkYWJpbGl0eS4gSSBk aWRuJ3QgdGhpbmsgb2YgdGhhdCBiZWZvcmUuIEFsdGhvdWdoDQo+Pj4gICAgIExpYnJhcnkgaXMg c3RpbGwgYSBsaXR0bGUgYml0IGhlYXZ5IHRvIG1lIGJ1dCBpdCdzIGluIGEgZGlmZmVyZW50IHdh eSwgSSB0aGluayBpdA0KPj4+ICAgICB3b3J0aCBhIHRyeWluZy4NCj4+PiAoOSkgUHV0dGluZyBh IHNwYWNlIGJlZm9yZSBvcGVuIHBhcmVudGhlc2lzIGlzIGZvcmNlZCBzdHlsZT8gSWYgc28sIEkn bGwgYWRkIGl0Lg0KPj4+ICgxMCkgWW91J3JlIHJpZ2h0LiBVc2luZyBsaWJyYXJ5IGNhbiByZWR1 Y2UgdGhlIGRpc3R1cmJzIHRvIGFmZmVjdGVkIGRyaXZlcnMNCj4+PiAgICAgICAgYnkgdGhpcyBm ZWF0dXJlIHRvIHRoZSBtaW5pbXVtLg0KPj4+DQo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4+PiBGcm9tOiBMYXN6bG8gRXJzZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4+ PiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDE0LCAyMDE3IDc6MzUgQU0NCj4+PiBUbzogV2Fu ZywgSmlhbiBKDQo+Pj4gPGppYW4uai53YW5nQGludGVsLmNvbTxtYWlsdG86amlhbi5qLndhbmdA aW50ZWwuY29tPj4NCj4+PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazIt ZGV2ZWxAbGlzdHMuMDEub3JnPjsgSnVzdGVuLCANCj4+PiBKb3JkYW4gTCANCj4+PiA8am9yZGFu LmwuanVzdGVuQGludGVsLmNvbTxtYWlsdG86am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4+OyBE b25nLCANCj4+PiBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzplcmljLmRvbmdAaW50 ZWwuY29tPj47IEtpbm5leSwgDQo+Pj4gTWljaGFlbCBEIA0KPj4+IDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbTxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+PjsNCj4+PiBXb2xt YW4sIEF5ZWxsZXQNCj4+PiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1haWx0bzpheWVsbGV0 LndvbG1hbkBpbnRlbC5jb20+PjsgWWFvLCANCj4+PiBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwu Y29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4+OyBaZW5nLCANCj4+PiBTdGFyIDxzdGFy LnplbmdAaW50ZWwuY29tPG1haWx0bzpzdGFyLnplbmdAaW50ZWwuY29tPj4NCj4+PiBTdWJqZWN0 OiBSZTogW2VkazJdIFtQQVRDSCA0LzRdIE92bWZQa2cvUWVtdVZpZGVvRHhlOiBVcGRhdGUgUWVt dVZpZGVvRHhlIGRyaXZlciB0byBieXBhc3MgTlVMTCBwb2ludGVyIGRldGVjdGlvbiBpZiBlbmFi bGVkLg0KPj4+DQo+Pj4gSGksDQo+Pj4NCj4+PiBzb21lIG9mIHRoZSBwb2ludHMgSSdtIGdvaW5n IHRvIG1ha2UgaGF2ZSBhbHJlYWR5IGJlZW4gcG9pbnRlZCBvdXQgDQo+Pj4gYnkNCj4+PiBKb3Jk YW46DQo+Pj4NCj4+PiAoMSkgV2hlbiBwb3N0aW5nIGEgcGF0Y2ggc2VyaWVzLCBwbGVhc2UgY29s bGVjdCB0aGUgQ2M6IHRhZ3MgZnJvbSANCj4+PiBhbGwgb2YgdGhlIHBhdGNoZXMsIGFuZCBhZGQg dGhlbSAqYWxsKiB0byB0aGUgY292ZXIgbGV0dGVyLiBUaGlzIHdheSANCj4+PiBldmVyeW9uZSB3 aWxsIGdldCBhIHBlcnNvbmFsIGNvcHkgb2YgdGhlIGdlbmVyYWwgZGVzY3JpcHRpb24uDQo+Pj4N Cj4+Pg0KPj4+ICgyKSBUaGUgc3ViamVjdCBsaW5lIGlzIHRvbyBsb25nLiBPbmUgcG9zc2libGUg c2ltcGxpZmljYXRpb246DQo+Pj4NCj4+PiBPdm1mUGtnL1FlbXVWaWRlb0R4ZTogYnlwYXNzIE5V TEwgcG9pbnRlciBkZXRlY3Rpb24NCj4+Pg0KPj4+DQo+Pj4gT24gMDkvMTMvMTcgMTE6MjUsIFdh bmcsIEppYW4gSiB3cm90ZToNCj4+Pj4gUWVtdVZpZGVvRHhlIGRyaXZlciB3aWxsIGluc3RhbGwg VkJFIFNISU0gaW50byBwYWdlIDAuIElmIE5VTEwgDQo+Pj4+IHBvaW50ZXIgZGV0ZWN0aW9uIGlz IGVuYWJsZWQsIHBhZ2UgMCBtdXN0IGJlIGVuYWJsZWQgdGVtcG9yYXJpbHkgDQo+Pj4+IGJlZm9y ZSBpbnN0YWxsaW5nIGFuZCBkaXNhYmxlZCBhZ2FpbiBhZnRlcndhcmRzLiBGb3IgV2luZG93cyA3 IA0KPj4+PiBib290LA0KPj4+PiBCSVQ3IG9mIFBjZE51bGxQb2ludGVyRGV0ZWN0aW9uUHJvcGVy dHlNYXNrIG11c3Qgc3RpbGwgYmUgc2V0IHRvIGF2b2lkIGhhbmcuDQo+Pj4NCj4+PiAoMykgU3Vi amVjdCBsaW5lIGFuZCBjb21taXQgbWVzc2FnZSBib3RoIHNob3VsZCBub3QgZXhjZWVkIDc0IA0K Pj4+IGNoYXJhY3RlcnMgbGluZSBsZW5ndGguIChOb3Qgc3VyZSBob3cgbWFueSBjaGFycyBQYXRj aENoZWNrLnB5IA0KPj4+IGFjdHVhbGx5IGVuZm9yY2VzLCBJIGFsd2F5cyBzdGljayB3aXRoIDc0 LCBmb2xsb3dpbmcgdGhlIExpbnV4IA0KPj4+IGtlcm5lbA0KPj4+IHRyYWRpdGlvbi4pDQo+Pj4N Cj4+PiBJIHJld3JhcHBlZCB0aGUgY29tbWl0IG1lc3NhZ2UgaGVyZSBmb3IgcmVhZGFiaWxpdHku DQo+Pj4NCj4+Pg0KPj4+Pg0KPj4+PiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5j b208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj4NCj4+Pj4gQ2M6IEVyaWMgRG9uZyA8ZXJp Yy5kb25nQGludGVsLmNvbTxtYWlsdG86ZXJpYy5kb25nQGludGVsLmNvbT4+DQo+Pj4+IENjOiBT dGFyIFplbmcgPHN0YXIuemVuZ0BpbnRlbC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+ Pg0KPj4+PiBDYzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbTxtYWlsdG86bGVyc2Vr QHJlZGhhdC5jb20+Pg0KPj4+PiBDYzogSnVzdGVuLCBKb3JkYW4gTA0KPj4+PiA8am9yZGFuLmwu anVzdGVuQGludGVsLmNvbTxtYWlsdG86am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4+DQo+Pj4+ IENjOiBLaW5uZXksIE1pY2hhZWwgRA0KPj4+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208 bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj4NCj4+Pj4gQ2M6IFdvbG1hbiwgQXll bGxldA0KPj4+PiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1haWx0bzpheWVsbGV0LndvbG1h bkBpbnRlbC5jb20+Pg0KPj4+PiBTdWdnZXN0ZWQtYnk6IFdvbG1hbiwgQXllbGxldA0KPj4+PiA8 YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1haWx0bzpheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+ Pg0KPj4+PiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1l bnQgMS4xDQo+Pj4+IFNpZ25lZC1vZmYtYnk6IFdhbmcsIEppYW4gSg0KPj4+PiA8amlhbi5qLndh bmdAaW50ZWwuY29tPG1haWx0bzpqaWFuLmoud2FuZ0BpbnRlbC5jb20+Pg0KPj4+DQo+Pj4gKDQp IEkgdGhpbmsgdGhpcyBpcyBhbHNvIHNvbWV0aGluZyB0aGF0IEpvcmRhbiBoYWQgcG9pbnRlZCBv dXQgYSANCj4+PiBsb25nIHRpbWUgYWdvIChhcG9sb2dpZXMgaWYgSSBtaXMtcmVtZW1iZXIpOg0K Pj4+DQo+Pj4gVGhlIHN0cmluZ3MgYWZ0ZXIgdGhlIHRhZ3Mgc2hvdWxkIGZvcm0gY29ycmVjdCBl bWFpbCBhZGRyZXNzZXMsIGFuZCANCj4+PiBpZiB0aGVyZSBhcmUgdmFyaW91cyBlbWFpbCBtZXRh LWNoYXJhY3RlcnMgaW4gdGhlbSwgbGlrZSAiLiIgKGRvdCkgYW5kICIsIg0KPj4+IChjb21tYSks IHRoZW4gdGhleSBzaG91bGQgYmUgcXVvdGVkLCBsaWtlIHRoaXM6DQo+Pj4NCj4+PiBDYzogIkp1 c3RlbiwgSm9yZGFuIEwiIA0KPj4+IDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPG1haWx0bzpq b3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPj4NCj4+PiBDYzogIktpbm5leSwgTWljaGFlbCBEIiAN Cj4+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPj4NCj4+PiBDYzogIldvbG1hbiwgQXllbGxldCIgDQo+Pj4gPGF5ZWxsZXQud29s bWFuQGludGVsLmNvbTxtYWlsdG86YXllbGxldC53b2xtYW5AaW50ZWwuY29tPj4NCj4+PiBTdWdn ZXN0ZWQtYnk6ICJXb2xtYW4sIEF5ZWxsZXQiIA0KPj4+IDxheWVsbGV0LndvbG1hbkBpbnRlbC5j b208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+DQo+Pj4gU2lnbmVkLW9mZi1ieTog IldhbmcsIEppYW4gSiIgDQo+Pj4gPGppYW4uai53YW5nQGludGVsLmNvbTxtYWlsdG86amlhbi5q LndhbmdAaW50ZWwuY29tPj4NCj4+Pg0KPj4+IElmIHlvdSBsb29rIGF0IHRoZSBhY3R1YWwgYWRk cmVzc2VzIG9uIHRoZSBlbWFpbHMgdGhhdCBoYXZlIGJlZW4gDQo+Pj4gc2VudCBvdXQsIHlvdSBj YW4gc2VlIHRoZXkgYXJlIGFsbCBtYWxmb3JtZWQuIEZvciBleGFtcGxlLCBJIGhhdmU6DQo+Pj4N Cj4+PiAiSm9yZGFuIEwNCj4+PiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbTxtYWlsdG86am9y ZGFuLmwuanVzdGVuQGludGVsLmNvbT4+IiBmb3IgSm9yZGFuIC0tIHRoZSBwYXJ0IGJlZm9yZSB0 aGUgY29tbWEgd2FzIHRha2VuIHRvIGJlIGEgc2VwYXJhdGUgZW1haWwgYWRkcmVzcyAoYSBtYWxm b3JtZWQgb25lKS4NCj4+Pg0KPj4+IEF0IGxlYXN0IGZvciBteSByZXBseSwgSSBoYXZlIGZpeGVk IHVwIHRoZSBlbWFpbCBhZGRyZXNzZXMuDQo+Pj4NCj4+Pg0KPj4+ICg1KSBUaGUgY29tbWl0IG1l c3NhZ2UgbWVudGlvbnMgQklUNyBvZiB0aGUgbmV3IFBDRC4NCj4+Pg0KPj4+IEZpcnN0LCB0aGFu a3MgZm9yIGNoZWNraW5nIFdpbmRvd3MgNyBib290IChhbmQgSSdtIGhhcHB5IHRoYXQgSSBnb3Qg DQo+Pj4gc3VzcGljaW91cyBvZiB0aGUgZmVhdHVyZSB3aXRoIHJlZ2FyZCB0byBXaW5kb3dzIDcp LiBJIHRoaW5rIEJJVDcgaXMgDQo+Pj4gYSBnb29kIGZlYXR1cmUuDQo+Pj4NCj4+PiBIb3dldmVy LCBwbGVhc2UgaW5jbHVkZSB0aGUgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhhdCBmZWF0dXJlIGlu IHRoZSANCj4+PiBjb21taXQgbWVzc2FnZSAtLSBpdCBpcyBvbmUgc2VudGVuY2U7ICJEaXNhYmxl IE5VTEwgcG9pbnRlciANCj4+PiBkZXRlY3Rpb24ganVzdCBhZnRlciBFbmRPZkR4ZS4iDQo+Pj4N Cj4+PiAoSSB0aGluayBCSVQ3IGlzIGEgcmVhbGx5IHNtYXJ0IGZlYXR1cmUsIGFuZCBJIGxpa2Ug KmhvdyogaXQgaXMgdXNlZCANCj4+PiBpbiAiTlVMTF9ERVRFQ1RJT05fRU5BQkxFRCIgYmVsb3cu IFRoZSBjaGVjayBtZWFucywgImlmIHRoZSANCj4+PiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgZm9y IERYRSwgYW5kICpub3QgZGlzYWJsZWQqICg9PSBhbHNvIGVuYWJsZWQpIGFmdGVyIEVuZC1vZi1E eGUiLg0KPj4+DQo+Pj4gVGhpcyBkb2Vzbid0IG1lYW4gdGhhdCBJIGxpa2UgdGhlIE5VTExfREVU RUNUSU9OX0VOQUJMRUQgbWFjcm8gDQo+Pj4gaXRzZWxmOyBtb3JlIG9uIHRoYXQgYmVsb3cuKQ0K Pj4+DQo+Pj4NCj4+Pj4gLS0tDQo+Pj4+ICBPdm1mUGtnL1FlbXVWaWRlb0R4ZS9Ecml2ZXIuYyAg ICAgICAgIHwgMTUgKysrKysrKysrKysrKystDQo+Pj4+ICBPdm1mUGtnL1FlbXVWaWRlb0R4ZS9R ZW11LmggICAgICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKw0KPj4+PiAgT3ZtZlBrZy9RZW11 VmlkZW9EeGUvUWVtdVZpZGVvRHhlLmluZiB8ICAyICsrDQo+Pj4+ICAzIGZpbGVzIGNoYW5nZWQs IDMyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4+Pj4NCj4+Pj4gZGlmZiAtLWdpdCBh L092bWZQa2cvUWVtdVZpZGVvRHhlL0RyaXZlci5jIA0KPj4+PiBiL092bWZQa2cvUWVtdVZpZGVv RHhlL0RyaXZlci5jIGluZGV4IDBkY2U4MGU1OWIuLmVlMGVlZDcyMTQgMTAwNjQ0DQo+Pj4+IC0t LSBhL092bWZQa2cvUWVtdVZpZGVvRHhlL0RyaXZlci5jDQo+Pj4+ICsrKyBiL092bWZQa2cvUWVt dVZpZGVvRHhlL0RyaXZlci5jDQo+Pj4+IEBAIC0xOTQsNiArMTk0LDcgQEAgUWVtdVZpZGVvQ29u dHJvbGxlckRyaXZlclN0YXJ0ICgNCj4+Pj4gICAgUENJX1RZUEUwMCAgICAgICAgICAgICAgICAg ICAgICAgIFBjaTsNCj4+Pj4gICAgUUVNVV9WSURFT19DQVJEICAgICAgICAgICAgICAgICAgICpD YXJkOw0KPj4+PiAgICBFRklfUENJX0lPX1BST1RPQ09MICAgICAgICAgICAgICAgKkNoaWxkUGNp SW87DQo+Pj4+ICsgIEVGSV9DUFVfQVJDSF9QUk9UT0NPTCAgICAgICAgICAgICAqQ3B1Ow0KPj4+ DQo+Pj4gKDYpIEkgYmVsaWV2ZSBJIG1lbnRpb25lZCB0aGlzIGluIHRoZSBlYXJsaWVyIGRpc2N1 c3Npb24sIGluIHNvbWUgDQo+Pj4gZm9ybSwgYnV0IG5vdyBJJ2xsIHNheSBpdCBhZ2FpbjoNCj4+ Pg0KPj4+IEEgVUVGSSBkcml2ZXIgaGFzIG5vIGJ1c2luZXNzIHBva2luZyBhdCB0aGUgQ1BVIEFy Y2ggcHJvdG9jb2wuIFRoZSANCj4+PiBQSSBzcGVjICgxLjYpIHN0YXRlcywNCj4+Pg0KPj4+ICAg MTIuMyBDUFUgQXJjaGl0ZWN0dXJhbCBQcm90b2NvbA0KPj4+ICAgRUZJX0NQVV9BUkNIX1BST1RP Q09MDQo+Pj4NCj4+PiAgIFN1bW1hcnkNCj4+Pg0KPj4+ICAgQWJzdHJhY3RzIHRoZSBwcm9jZXNz b3Igc2VydmljZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHNvbWUNCj4+PiAgIG9m IHRoZSBEWEUgc2VydmljZXMuIFRoaXMgcHJvdG9jb2wgbXVzdCBiZSBwcm9kdWNlZCBieSBhIGJv b3Qgc2VydmljZQ0KPj4+ICAgb3IgcnVudGltZSBEWEUgZHJpdmVyIGFuZCBtYXkgb25seSBiZSBj b25zdW1lZCBieSB0aGUgRFhFIEZvdW5kYXRpb24NCj4+PiAgIGFuZCBEWEUgZHJpdmVycyB0aGF0 IHByb2R1Y2UgYXJjaGl0ZWN0dXJhbCBwcm90b2NvbHMuDQo+Pj4NCj4+PiBUaGUgRFhFIGNvcmUg aXMgb2J2aW91c2x5IGZyZWUgdG8gdXNlIHRoZSBDUFUgQXJjaCBwcm90b2NvbCwgYnV0IGEgDQo+ Pj4gVUVGSSBkcml2ZXIgaXMgZm9yYmlkZGVuIGZyb20gaXQsICpldmVuIGlmKiB3ZSBzYXkgdGhh dCwgaW4gdGhpcyANCj4+PiBVRUZJIGRyaXZlciwgd2UgYXJlIGdvaW5nIHRvIHVzZSBEWEUgc2Vy dmljZXMuIChXaGljaCBjb21lIGZyb20gdGhlIA0KPj4+IFBJIHNwZWMsIGFuZCBub3QgdGhlIFVF Rkkgc3BlYy4pDQo+Pj4NCj4+PiBUaGVyZWZvcmUsIGhlcmUgd2UgaGF2ZSB0byB1c2UgZ0RTLT5T ZXRNZW1vcnlTcGFjZUF0dHJpYnV0ZXMoKS4NCj4+Pg0KPj4+IFRoZSBnRFMtPlNldE1lbW9yeVNw YWNlQXR0cmlidXRlcygpIHNlcnZpY2UgZGVwZW5kcyBvbiB0aGUgQ1BVIEFyY2ggDQo+Pj4gcHJv dG9jb2wsIGJ5IHRoZSBQSSBzcGVjLiBJdCBpcyBub3QgZWFzeSB0byBzZWUsIGJlY2F1c2UgdGhl IFBJIHNwZWMgDQo+Pj4gaGFzIGEgZm9ybWF0dGluZyBlcnJvciBpbiB0aGlzIGFyZWEuIElmIHlv dSBsb29rIHVuZGVyIA0KPj4+IEdldE1lbW9yeVNwYWNlRGVzY3JpcHRvcigpLCB0aGVyZSBpcyBh biBlcnJvciBjb2RlDQo+Pj4NCj4+PiAgIEVGSV9OT1RfQVZBSUxBQkxFX1lFVCAgVGhlIGF0dHJp YnV0ZXMgY2Fubm90IGJlIHNldCBiZWNhdXNlIENQVQ0KPj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICBhcmNoaXRlY3R1cmFsIHByb3RvY29sIGlzIG5vdCBhdmFpbGFibGUgeWV0Lg0KPj4+DQo+ Pj4gT2J2aW91c2x5IHRoaXMgZXJyb3IgY29kZSBiZWxvbmdzIHRvIFNldE1lbW9yeVNwYWNlQXR0 cmlidXRlcygpLCBub3QgDQo+Pj4gR2V0TWVtb3J5U3BhY2VEZXNjcmlwdG9yKCkuDQo+Pj4NCj4+ PiBBbnl3YXksIGdEUyBzaG91bGQgYmUgdXNlZCwgYXJjaGl0ZWN0dXJhbCBwcm90b2NvbHMgc2hv dWxkbid0IGJlLg0KPj4+DQo+Pj4NCj4+Pj4NCj4+Pj4gICAgT2xkVHBsID0gZ0JTLT5SYWlzZVRQ TCAoVFBMX0NBTExCQUNLKTsNCj4+Pj4NCj4+Pj4gQEAgLTQ3OSw3ICs0ODAsMTkgQEAgUWVtdVZp ZGVvQ29udHJvbGxlckRyaXZlclN0YXJ0ICggICNpZiBkZWZpbmVkDQo+Pj4+IE1ERV9DUFVfSUEz MiB8fCBkZWZpbmVkIE1ERV9DUFVfWDY0DQo+Pj4+ICAgIGlmIChQcml2YXRlLT5WYXJpYW50ID09 IFFFTVVfVklERU9fQk9DSFNfTU1JTyB8fA0KPj4+PiAgICAgICAgUHJpdmF0ZS0+VmFyaWFudCA9 PSBRRU1VX1ZJREVPX0JPQ0hTKSB7DQo+Pj4+IC0gICAgSW5zdGFsbFZiZVNoaW0gKENhcmQtPk5h bWUsIFByaXZhdGUtPkdyYXBoaWNzT3V0cHV0Lk1vZGUtPkZyYW1lQnVmZmVyQmFzZSk7DQo+Pj4+ ICsgICAgLy8NCj4+Pj4gKyAgICAvLyBQcmVwYXJlIENQVSBhcmNoIHByb3RvY29sIGZvciBOVUxM IHBvaW50ZXIgZGV0ZWN0aW9uDQo+Pj4+ICsgICAgLy8NCj4+Pj4gKyAgICBTdGF0dXMgPSBnQlMt PkxvY2F0ZVByb3RvY29sICgNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgJmdFZmlDcHVBcmNo UHJvdG9jb2xHdWlkLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPj4+PiArICAg ICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJkNwdQ0KPj4+PiArICAgICAgICAgICAgICAgICAg ICApOw0KPj4+PiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+Pj4+ICsNCj4+Pj4g KyAgICBESVNBQkxFX05VTExfREVURUNUSU9OKENwdSk7DQo+Pj4+ICsgICAgICBJbnN0YWxsVmJl U2hpbSAoQ2FyZC0+TmFtZSwgUHJpdmF0ZS0+R3JhcGhpY3NPdXRwdXQuTW9kZS0+RnJhbWVCdWZm ZXJCYXNlKTsNCj4+Pj4gKyAgICBFTkFCTEVfTlVMTF9ERVRFQ1RJT04oQ3B1KTsNCj4+Pg0KPj4+ ICg3KSBUaGUgTlVMTCBkZXRlY3Rpb24gZGlzYWJsaW5nIGFuZCBlbmFibGluZyBzaG91bGQgYnJh Y2tldCB0aGUgDQo+Pj4gYWZmZWN0ZWQgY29kZSBhcyB0aWdodGx5IGFzIHBvc3NpYmxlLg0KPj4+ DQo+Pj4gU28gcGxlYXNlIG1vdmUgdGhpcyBpbnRvIEluc3RhbGxWYmVTaGltKCkgYWNjb3JkaW5n bHkuDQo+Pj4NCj4+Pg0KPj4+PiAgICB9DQo+Pj4+ICAjZW5kaWYNCj4+Pj4NCj4+Pj4gZGlmZiAt LWdpdCBhL092bWZQa2cvUWVtdVZpZGVvRHhlL1FlbXUuaCANCj4+Pj4gYi9Pdm1mUGtnL1FlbXVW aWRlb0R4ZS9RZW11LmggaW5kZXggN2ZiYjI1YjNlZi4uYmIzYmM2ZWIwZiAxMDA2NDQNCj4+Pj4g LS0tIGEvT3ZtZlBrZy9RZW11VmlkZW9EeGUvUWVtdS5oDQo+Pj4+ICsrKyBiL092bWZQa2cvUWVt dVZpZGVvRHhlL1FlbXUuaA0KPj4+PiBAQCAtMjUsNiArMjUsNyBAQA0KPj4+PiAgI2luY2x1ZGUg PFByb3RvY29sL1BjaUlvLmg+DQo+Pj4+ICAjaW5jbHVkZSA8UHJvdG9jb2wvRHJpdmVyU3VwcG9y dGVkRWZpVmVyc2lvbi5oPg0KPj4+PiAgI2luY2x1ZGUgPFByb3RvY29sL0RldmljZVBhdGguaD4N Cj4+Pj4gKyNpbmNsdWRlIDxQcm90b2NvbC9DcHUuaD4NCj4+Pj4NCj4+Pj4gICNpbmNsdWRlIDxM aWJyYXJ5L0RlYnVnTGliLmg+DQo+Pj4+ICAjaW5jbHVkZSA8TGlicmFyeS9VZWZpRHJpdmVyRW50 cnlQb2ludC5oPiBAQCAtODIsNiArODMsMjEgQEAgDQo+Pj4+IHR5cGVkZWYgc3RydWN0IHsNCj4+ Pj4NCj4+Pj4gICNkZWZpbmUgR1JBUEhJQ1NfT1VUUFVUX0lOVkFMSURFX01PREVfTlVNQkVSICAw eGZmZmYNCj4+Pj4NCj4+Pj4gKy8vDQo+Pj4+ICsvLyBWQkUgY29kZSB3aWxsIGFjY2VzcyBtZW1v cnkgYmV0d2VlbiAwLTQwOTUgd2hpY2ggd2lsbCBjYXVzZSANCj4+Pj4gK3BhZ2UgZmF1bHQgZXhj ZXB0aW9uIC8vIGlmIE5VTEwgcG9pbnRlciBkZXRlY3Rpb24gbWVjaGFuaXNtIGlzIGVuYWJsZWQu DQo+Pj4+ICtGb2xsb3dpbmcgbWFjcm9zIGNhbiBiZSB1c2VkIHRvIC8vIGRpc2FibGUvZW5hYmxl IE5VTEwgcG9pbnRlciBkZXRlY3Rpb24gYmVmb3JlL2FmdGVyIGFjY2Vzc2luZyB0aG9zZSBtZW1v cnkuDQo+Pj4+ICsvLw0KPj4+PiArI2RlZmluZSBOVUxMX0RFVEVDVElPTl9FTkFCTEVEICAoKFBj ZEdldDgoUGNkTnVsbFBvaW50ZXJEZXRlY3Rpb25Qcm9wZXJ0eU1hc2spICYgKEJJVDB8QklUNykp ID09IEJJVDApDQo+Pj4+ICsjZGVmaW5lIERJU0FCTEVfTlVMTF9ERVRFQ1RJT04oQ3B1KSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4+Pj4gKyAgaWYgKE5V TExfREVURUNUSU9OX0VOQUJMRUQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPj4+PiArICAgIChDcHUpLT5TZXRNZW1vcnlBdHRyaWJ1dGVzKChD cHUpLCAwLCBFRklfUEFHRV9TSVpFLCAwKTsgICAgICAgICAgICAgICAgICAgICBcDQo+Pj4+ICsg IH0NCj4+Pj4gKyNkZWZpbmUgRU5BQkxFX05VTExfREVURUNUSU9OKENwdSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPj4+PiArICBpZiAoTlVMTF9ERVRF Q1RJT05fRU5BQkxFRCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+Pj4+ICsgICAgKENwdSktPlNldE1lbW9yeUF0dHJpYnV0ZXMoKENwdSksIDAs IEVGSV9QQUdFX1NJWkUsIEVGSV9NRU1PUllfUlApOyAgICAgICAgIFwNCj4+Pj4gKyAgfQ0KPj4+ PiArDQo+Pj4NCj4+PiAoOCkgSSBiZWxpZXZlIEpvcmRhbiB0b28gY29tbWVudGVkIG9uIHRoZXNl IG1hY3JvcyBlbHNld2hlcmUgKHVuZGVyIA0KPj4+IHBhdGNoIDEvNCkuDQo+Pj4NCj4+PiBJbiBt eSBvcGluaW9uLCB0aGlzIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGJlIGV4dHJhY3RlZCBpbnRvIGEg bGlicmFyeSANCj4+PiBjbGFzcywgd2l0aCBhIGxpYnJhcnkgaW5zdGFuY2UgdGhhdCBpcyBzdWl0 YWJsZSBmb3IgYXQgbGVhc3QgDQo+Pj4gVUVGSV9EUklWRVIgbW9kdWxlcy4gKE1heWJlIGV2ZW4g Zm9yIERYRV9EUklWRVIgbW9kdWxlcy4pDQo+Pj4NCj4+PiBZb3UgY291bGQgYWRkIGEgc2VwYXJh dGUgbGlicmFyeSBpbnN0YW5jZSBmb3IgU01NIGRyaXZlcnMsIGlmIHRoYXQgDQo+Pj4gd2VyZSBu ZWNlc3NhcnkuDQo+Pj4NCj4+Pg0KPj4+ICg5KSBTdHlsZSBjb21tZW50OiBwbGVhc2UgcHV0IG9u ZSBzcGFjZSBjaGFyYWN0ZXIgYmV0d2VlbiB0aGUgDQo+Pj4gZnVuY3Rpb24gZGVzaWduYXRvciBh bmQgdGhlIG9wZW5pbmcgcGFyZW50aGVzaXMuDQo+Pj4NCj4+Pg0KPj4+PiAgLy8NCj4+Pj4gIC8v IFFFTVUgVmlkZW8gUHJpdmF0ZSBEYXRhIFN0cnVjdHVyZSAgLy8gZGlmZiAtLWdpdCANCj4+Pj4g YS9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11VmlkZW9EeGUuaW5mDQo+Pj4+IGIvT3ZtZlBrZy9R ZW11VmlkZW9EeGUvUWVtdVZpZGVvRHhlLmluZg0KPj4+PiBpbmRleCA3YzdkNDI5YmNhLi41ZDE2 NmViOTljIDEwMDY0NA0KPj4+PiAtLS0gYS9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11VmlkZW9E eGUuaW5mDQo+Pj4+ICsrKyBiL092bWZQa2cvUWVtdVZpZGVvRHhlL1FlbXVWaWRlb0R4ZS5pbmYN Cj4+Pj4gQEAgLTcyLDcgKzcyLDkgQEANCj4+Pj4gICAgZ0VmaUdyYXBoaWNzT3V0cHV0UHJvdG9j b2xHdWlkICAgICAgICAgICAgICAgICMgUFJPVE9DT0wgQllfU1RBUlQNCj4+Pj4gICAgZ0VmaURl dmljZVBhdGhQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICMgUFJPVE9DT0wgQllfU1RB UlQNCj4+Pj4gICAgZ0VmaVBjaUlvUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAg ICMgUFJPVE9DT0wgVE9fU1RBUlQNCj4+Pj4gKyAgZ0VmaUNwdUFyY2hQcm90b2NvbEd1aWQNCj4+ Pj4NCj4+Pj4gIFtQY2RdDQo+Pj4+ICAgIGdPcHRpb25Sb21Qa2dUb2tlblNwYWNlR3VpZC5QY2RE cml2ZXJTdXBwb3J0ZWRFZmlWZXJzaW9uDQo+Pj4+ICsgIA0KPj4+PiArIGdFZmlNZGVNb2R1bGVQ a2dUb2tlblNwYWNlR3VpZC5QY2ROdWxsUG9pbnRlckRldGVjdGlvblByb3BlcnR5TWFzDQo+Pj4+ ICsgaw0KPj4+DQo+Pj4gKDEwKSBJbnN0ZWFkIG9mIHRoZXNlLCB0aGUgbGlicmFyeSBjbGFzcyB0 aGF0IEkgZGVzY3JpYmVkIHVuZGVyICg4KSANCj4+PiBzaG91bGQgYmUgYWRkZWQgaGVyZS4NCj4+ Pg0KPj4+IEFueSBmdXJ0aGVyIGRlcGVuZGVuY2llcyBsaWtlIFBDRHMsIHByb3RvY29scyBldGMg c2hvdWxkIGJlIA0KPj4+IGluaGVyaXRlZCBieSB0aGUgZHJpdmVyIHRocm91Z2ggdGhlIGxpYnJh cnkgaW5zdGFuY2UgdGhhdCB0aGUgDQo+Pj4gcGxhdGZvcm0gRFNDIGZpbGUgcmVzb2x2ZXMgdGhl IGxpYnJhcnkgY2xhc3MgdG8uDQo+Pj4NCj4+PiBCb251czogc2hvdWxkIHlvdSByZWFsaXplIHRo YXQgdGhlIGZlYXR1cmUgaXMgaW1wb3NzaWJsZSB0byANCj4+PiBpbXBsZW1lbnQgd2l0aG91dCBh Y2Nlc3NpbmcgdGhlIENQVSBBcmNoIHByb3RvY29sIGRpcmVjdGx5LCB5b3UgDQo+Pj4gY291bGQg aGlkZSB0aGUgcHJvdG9jb2wgR1VJRCBkZXBlbmRlbmN5IGluIHRoZSBsaWJyYXJ5IGluc3RhbmNl IElORiANCj4+PiBmaWxlLCBhbmQgSSdkIGJlIG5vbmUgdGhlIHdpc2VyLg0KPj4+DQo+Pj4gLi4u IFdlbGwsIEkgY291bGQgYXQgbGVhc3QgcHJldGVuZCB0aGF0LiA6KQ0KPj4+DQo+Pj4gVGhhbmtz LA0KPj4+IExhc3psbw0KPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fDQo+Pj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4+PiBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQo+Pj4gaHR0cHM6Ly9s aXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo+Pj4NCj4gDQoNCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQplZGsyLWRldmVsIG1h aWxpbmcgbGlzdA0KZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCmh0dHBzOi8vbGlzdHMuMDEub3Jn L21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0K