From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.151; helo=mga17.intel.com; envelope-from=steven.shi@intel.com; receiver=edk2-devel@lists.01.org Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 85D6F210E434E for ; Wed, 6 Jun 2018 19:24:29 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Jun 2018 19:24:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,485,1520924400"; d="scan'208";a="45240960" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga007.fm.intel.com with ESMTP; 06 Jun 2018 19:24:28 -0700 Received: from fmsmsx155.amr.corp.intel.com (10.18.116.71) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Jun 2018 19:24:27 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX155.amr.corp.intel.com (10.18.116.71) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Jun 2018 19:24:26 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.223]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.116]) with mapi id 14.03.0319.002; Thu, 7 Jun 2018 10:24:25 +0800 From: "Shi, Steven" To: "Gao, Liming" , Zenith432 , "edk2-devel@lists.01.org" Thread-Topic: [PATCH] BaseTools/GenFw: Add X64 GOTPCREL Support to GenFw Thread-Index: AQHT/cBb/+vlXcJYw0iZdBJY//lfZqRTfSMAgACQL+CAAAKIYIAAALjw Date: Thu, 7 Jun 2018 02:24:24 +0000 Message-ID: <06C8AB66E78EE34A949939824ABE2B313B762C02@shsmsx102.ccr.corp.intel.com> References: <1821667922.1236806.1528308060822.ref@mail.yahoo.com> <1821667922.1236806.1528308060822@mail.yahoo.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E293CF7@SHSMSX104.ccr.corp.intel.com> <06C8AB66E78EE34A949939824ABE2B313B762B9D@shsmsx102.ccr.corp.intel.com> <06C8AB66E78EE34A949939824ABE2B313B762BC9@shsmsx102.ccr.corp.intel.com> In-Reply-To: <06C8AB66E78EE34A949939824ABE2B313B762BC9@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDQ0YjYwMTQtMjBkMC00YTViLTk2Y2UtMDJmZWQ4MzlmZDgxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiVmJ2RktNdmtPaXhqTFJiTmlEOFBFVmNcL2djZlJJTDhFU015a0lvTlk1RTFUcHFhc21nOUlpSmVhVlBLdml6cXAifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] BaseTools/GenFw: Add X64 GOTPCREL Support to GenFw X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jun 2018 02:24:29 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgWmVuaXRoLA0KQlRXLCBiZXNpZGVzIHRoZSBidWlsZCBwYXNzLCBkaWQgeW91IHRyeSB0byBy dW4gYSBVZWZpIGJpbmFyeSwgZS5nLiBhIHNpbXBsZSBzaGVsbCBhcHBsaWNhdGlvbiwgd2hpY2gg Y29udGFpbiB0aGUgR09UUENSRUwgcmVsb2NhdGlvbnM/IElmIHllcy4gUGxlYXNlIHNlbmQgb3V0 IHlvdXIgdGVzdCBjYXNlIGNvZGUgYXMgd2VsbC4gSSBhcHByZWNpYXRlIGlmIHlvdSBjb3VsZCBj b250cmlidXRlIHlvdXIgdGVzdCBjYXNlcyBhcyB0aGUgcGF0Y2ggdG9nZXRoZXIuIA0KDQoNClN0 ZXZlbiBTaGkNCkludGVsXFNTR1xTVE9cVUVGSSBGaXJtd2FyZQ0KDQpUZWw6ICs4NiAwMjEtNjEx NjY1MjINCmlOZXQ6IDgyMS02NTIyDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiBGcm9tOiBTaGksIFN0ZXZlbg0KPiBTZW50OiBUaHVyc2RheSwgSnVuZSA3LCAyMDE4IDEwOjE4 IEFNDQo+IFRvOiBTaGksIFN0ZXZlbiA8c3RldmVuLnNoaUBpbnRlbC5jb20+OyBHYW8sIExpbWlu Zw0KPiA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBaZW5pdGg0MzIgPHplbml0aDQzMkB1c2Vycy5z b3VyY2Vmb3JnZS5uZXQ+Ow0KPiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiBTdWJqZWN0OiBS RTogW1BBVENIXSBCYXNlVG9vbHMvR2VuRnc6IEFkZCBYNjQgR09UUENSRUwgU3VwcG9ydCB0bw0K PiBHZW5Gdw0KPiANCj4gUGxlYXNlIHNlZSBtb3JlIGRldGFpbHMgaW4NCj4gaHR0cHM6Ly9idWd6 aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD05NzANCj4gDQo+IA0KPiBTdGV2ZW4g U2hpDQo+IEludGVsXFNTR1xTVE9cVUVGSSBGaXJtd2FyZQ0KPiANCj4gVGVsOiArODYgMDIxLTYx MTY2NTIyDQo+IGlOZXQ6IDgyMS02NTIyDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNA bGlzdHMuMDEub3JnXSBPbiBCZWhhbGYgT2YNCj4gU2hpLA0KPiA+IFN0ZXZlbg0KPiA+IFNlbnQ6 IFRodXJzZGF5LCBKdW5lIDcsIDIwMTggMTA6MTYgQU0NCj4gPiBUbzogR2FvLCBMaW1pbmcgPGxp bWluZy5nYW9AaW50ZWwuY29tPjsgWmVuaXRoNDMyDQo+ID4gPHplbml0aDQzMkB1c2Vycy5zb3Vy Y2Vmb3JnZS5uZXQ+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+IFN1YmplY3Q6IFJlOiBb ZWRrMl0gW1BBVENIXSBCYXNlVG9vbHMvR2VuRnc6IEFkZCBYNjQgR09UUENSRUwgU3VwcG9ydA0K PiA+IHRvIEdlbkZ3DQo+ID4NCj4gPiBZZXMuIElmIHdlIGRpc2FibGUgdGhlICcjcHJhZ21hIEdD QyB2aXNpYmlsaXR5IHB1c2ggKGhpZGRlbiknIGluDQo+ID4gUHJvY2Vzc29yQmluZC5oLCB0aGUg R09UUENSRUwgc3VwcG9ydCBpcyBtYW5kYXRvcnkuIDNyZCBwYXJ0eSBtb2R1bGUNCj4gPiBidWls ZCBtaWdodCBuZWVkIGl0LiBJdCdzIG1vcmUgY29tcGxldGUgdG8gYWRkIEdPVFBDUkVMIHN1cHBv cnQuDQo+ID4NCj4gPiBUaGUgaGlkZGVuICNwcmFnbWEgY2FuIGhpZGUgYWxsIEVMRiBzeW1ib2xz JyB2aXNpYmlsaXR5LCBpbmNsdWRpbmcgJ2V4dGVybicNCj4gPiBmdW5jdGlvbnMsIHdoaWNoIGlz IHRvIGxldCBMaW51eCBjb21waWxlcnMgYXdhcmUgdGhhdCB3ZSBkb27igJl0IG5lZWQgbG9hZGlu Zw0KPiA+IGR5bmFtaWMgbGluayBsaWJyYXJ5IGluIFVlZmkgcnVuaW5nLCBwbGVhc2Ugbm90IGVt aXQgdGhlIEdPVFBDUkVMIGJhc2VkDQo+ID4gcmVsb2NhdGlvbnMgaW4gdGhlIG9iaiBmaWxlLCBh bmQgd2Ugd2lsbCBlbnN1cmUgdGhlIGxpbmtlciBjYW4gZ2V0IGFsbCBleHRlcm4NCj4gPiBmdW5j dGlvbnMgc3RhdGljYWxseSBzb2x2ZWQuIFRoZSByZWFzb24gb2Ygbm90IGVtaXR0aW5nIEdPVFBD UkVMIGJhc2VkDQo+ID4gcmVsb2NhdGlvbnMgaXMgYmVjYXVzZSBpdCBpcyBoYXJkIHRvIGNvbnZl cnQgdGhlIEdPVFBDUkVMIGJhc2VkIHJlbG9jYXRpb25zDQo+ID4gaW4gRUxGIGJpbmFyeSB0byBQ RS9DT0ZGIHJlbGF0ZWQgcmVsb2NhdGlvbnMsIGFuZCBvdXIgY3VycmVudCBHZW5GdyBoYXMNCj4g bm90DQo+ID4gc3VwcG9ydGVkIHRoZW0uIEknbSBnbGFkZSBpZiB3ZSBjYW4gYWRkIHRoZSBHT1RQ Q1JFTCBzdXBwb3J0IGluIEdlbkZXDQo+IHRvDQo+ID4gdG90YWxseSBzb2x2ZSB0aGlzIHByb2Js ZW0uDQo+ID4NCj4gPiBTdGV2ZW4gU2hpDQo+ID4gSW50ZWxcU1NHXFNUT1xVRUZJIEZpcm13YXJl DQo+ID4NCj4gPiBUZWw6ICs4NiAwMjEtNjExNjY1MjINCj4gPiBpTmV0OiA4MjEtNjUyMg0KPiA+ DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogR2FvLCBMaW1p bmcNCj4gPiA+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDcsIDIwMTggOTozMiBBTQ0KPiA+ID4gVG86 IFplbml0aDQzMiA8emVuaXRoNDMyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD47IGVkazItDQo+ID4g ZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4gPiBDYzogU2hpLCBTdGV2ZW4gPHN0ZXZlbi5zaGlAaW50 ZWwuY29tPjsgWmh1LCBZb25naG9uZw0KPiA+ID4gPHlvbmdob25nLnpodUBpbnRlbC5jb20+DQo+ ID4gPiBTdWJqZWN0OiBSRTogW1BBVENIXSBCYXNlVG9vbHMvR2VuRnc6IEFkZCBYNjQgR09UUENS RUwgU3VwcG9ydCB0bw0KPiA+ID4gR2VuRncNCj4gPiA+DQo+ID4gPiBXaGF0J3MgcHVycG9zZSB0 byBzdXBwb3J0IEdPVFBDUkVMIGluIEdlbkZ3PyBDb3VsZCB5b3UgaW50cm9kdWNlDQo+IHlvdXIN Cj4gPiA+IHVzYWdlIG1vZGVsPw0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPiA+ID4gRnJvbTogWmVuaXRoNDMyIFttYWlsdG86emVuaXRoNDMyQHVzZXJzLnNv dXJjZWZvcmdlLm5ldF0NCj4gPiA+ID4gU2VudDogVGh1cnNkYXksIEp1bmUgNywgMjAxOCAyOjAx IEFNDQo+ID4gPiA+IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+ID4gPiBDYzogU2hp LCBTdGV2ZW4gPHN0ZXZlbi5zaGlAaW50ZWwuY29tPjsgWmh1LCBZb25naG9uZw0KPiA+ID4gPHlv bmdob25nLnpodUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+ DQo+ID4gPiA+IFN1YmplY3Q6IFtQQVRDSF0gQmFzZVRvb2xzL0dlbkZ3OiBBZGQgWDY0IEdPVFBD UkVMIFN1cHBvcnQgdG8NCj4gPiBHZW5Gdw0KPiA+ID4gPg0KPiA+ID4gPiBBZGRzIHN1cHBvcnQg Zm9yIHRoZSBmb2xsb3dpbmcgWDY0IEVMRiByZWxvY2F0aW9ucyB0byBHZW5Gdw0KPiA+ID4gPiAg IFJfWDg2XzY0X0dPVFBDUkVMDQo+ID4gPiA+ICAgUl9YODZfNjRfR09UUENSRUxYDQo+ID4gPiA+ ICAgUl9YODZfNjRfUkVYX0dPVFBDUkVMWA0KPiA+ID4gPg0KPiA+ID4gPiBDQzogU2hpIFN0ZXZl biA8c3RldmVuLnNoaUBpbnRlbC5jb20+DQo+ID4gPiA+IENDOiBZb25naG9uZyBaaHUgPHlvbmdo b25nLnpodUBpbnRlbC5jb20+DQo+ID4gPiA+IENDOiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGlu dGVsLmNvbT4NCj4gPiA+ID4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRp b24gQWdyZWVtZW50IDEuMQ0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBaZW5pdGg0MzIgPHplbml0 aDQzMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiAgQmFzZVRv b2xzL1NvdXJjZS9DL0dlbkZ3L0VsZjY0Q29udmVydC5jIHwgMTY2DQo+ID4gPiArKysrKysrKysr KysrKysrKysrKysrKy0NCj4gPiA+ID4gIEJhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9lbGZfY29t bW9uLmggICB8ICAyMyArKysrDQo+ID4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9CYXNl VG9vbHMvU291cmNlL0MvR2VuRncvRWxmNjRDb252ZXJ0LmMNCj4gPiA+IGIvQmFzZVRvb2xzL1Nv dXJjZS9DL0dlbkZ3L0VsZjY0Q29udmVydC5jDQo+ID4gPiA+IGluZGV4IGMzOWJkZmYwLi5kMmY5 YmI0NiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZjY0 Q29udmVydC5jDQo+ID4gPiA+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGY2NENv bnZlcnQuYw0KPiA+ID4gPiBAQCAtOTQsNiArOTQsMTUgQEAgU1RBVElDIEVsZl9FaGRyICptRWhk cjsNCj4gPiA+ID4gIFNUQVRJQyBFbGZfU2hkciAqbVNoZHJCYXNlOw0KPiA+ID4gPiAgU1RBVElD IEVsZl9QaGRyICptUGhkckJhc2U7DQo+ID4gPiA+DQo+ID4gPiA+ICsvLw0KPiA+ID4gPiArLy8g R09UIGluZm9ybWF0aW9uDQo+ID4gPiA+ICsvLw0KPiA+ID4gPiArU1RBVElDIEVsZl9TaGRyICpt R09UU2hkciA9IE5VTEw7DQo+ID4gPiA+ICtTVEFUSUMgVUlOVDMyICAgbUdPVFNoaW5kZXggPSAw Ow0KPiA+ID4gPiArU1RBVElDIFVJTlQzMiAgICptR09UQ29mZkVudHJpZXMgPSBOVUxMOw0KPiA+ ID4gPiArU1RBVElDIFVJTlQzMiAgIG1HT1RNYXhDb2ZmRW50cmllcyA9IDA7DQo+ID4gPiA+ICtT VEFUSUMgVUlOVDMyICAgbUdPVE51bUNvZmZFbnRyaWVzID0gMDsNCj4gPiA+ID4gKw0KPiA+ID4g PiAgLy8NCj4gPiA+ID4gIC8vIENvZmYgaW5mb3JtYXRpb24NCj4gPiA+ID4gIC8vDQo+ID4gPiA+ IEBAIC0zMjIsNiArMzMxLDExNyBAQCBHZXRTeW1OYW1lICgNCj4gPiA+ID4gICAgcmV0dXJuIFN0 cnRhYkNvbnRlbnRzICsgU3ltLT5zdF9uYW1lOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPg0KPiA+ID4g PiArLy8NCj4gPiA+ID4gKy8vIEZpbmQgdGhlIEVMRiBzZWN0aW9uIGhvc3RpbmcgdGhlIEdPVCBm cm9tIGFuIEVMRiBSdmENCj4gPiA+ID4gKy8vICAgb2YgYSBzaW5nbGUgR09UIGVudHJ5LiAgTm9y bWFsbHksIEdPVCBpcyBwbGFjZWQgaW4NCj4gPiA+ID4gKy8vICAgRUxGIC50ZXh0IHNlY3Rpb24s IHNvIGFzc3VtZSBvbmNlIHdlIGZpbmQgaW4gd2hpY2gNCj4gPiA+ID4gKy8vICAgc2VjdGlvbiB0 aGUgR09UIGlzLCBhbGwgR09UIGVudHJpZXMgYXJlIHRoZXJlLCBhbmQNCj4gPiA+ID4gKy8vICAg anVzdCB2ZXJpZnkgdGhpcy4NCj4gPiA+ID4gKy8vDQo+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4g K1ZPSUQNCj4gPiA+ID4gK0ZpbmRFbGZHT1RTZWN0aW9uRnJvbUdPVEVudHJ5RWxmUnZhICgNCj4g PiA+ID4gKyAgRWxmNjRfQWRkciBHT1RFbnRyeUVsZlJ2YQ0KPiA+ID4gPiArICApDQo+ID4gPiA+ ICt7DQo+ID4gPiA+ICsgIFVJTlQzMiBpOw0KPiA+ID4gPiArICBpZiAobUdPVFNoZHIgIT0gTlVM TCkgew0KPiA+ID4gPiArICAgIGlmIChHT1RFbnRyeUVsZlJ2YSA+PSBtR09UU2hkci0+c2hfYWRk ciAmJg0KPiA+ID4gPiArICAgICAgICBHT1RFbnRyeUVsZlJ2YSA8ICBtR09UU2hkci0+c2hfYWRk ciArIG1HT1RTaGRyLT5zaF9zaXplKQ0KPiA+ID4gPiArICAgICAgcmV0dXJuOw0KPiA+ID4gPiAr ICAgIEVycm9yIChOVUxMLCAwLCAzMDAwLCAiVW5zdXBwb3J0ZWQiLA0KPiA+ID4gIkZpbmRFbGZH T1RTZWN0aW9uRnJvbUdPVEVudHJ5RWxmUnZhOiBHT1QgZW50cmllcyBmb3VuZCBpbiBtdWx0aXBs ZQ0KPiA+ID4gc2VjdGlvbnMuIik7DQo+ID4gPiA+ICsgICAgZXhpdChFWElUX0ZBSUxVUkUpOw0K PiA+ID4gPiArICB9DQo+ID4gPiA+ICsgIGZvciAoaSA9IDA7IGkgPCBtRWhkci0+ZV9zaG51bTsg aSsrKSB7DQo+ID4gPiA+ICsgICAgRWxmX1NoZHIgKnNoZHIgPSBHZXRTaGRyQnlJbmRleChpKTsN Cj4gPiA+ID4gKyAgICBpZiAoR09URW50cnlFbGZSdmEgPj0gc2hkci0+c2hfYWRkciAmJg0KPiA+ ID4gPiArICAgICAgICBHT1RFbnRyeUVsZlJ2YSA8ICBzaGRyLT5zaF9hZGRyICsgc2hkci0+c2hf c2l6ZSkgew0KPiA+ID4gPiArICAgICAgbUdPVFNoZHIgPSBzaGRyOw0KPiA+ID4gPiArICAgICAg bUdPVFNoaW5kZXggPSBpOw0KPiA+ID4gPiArICAgICAgcmV0dXJuOw0KPiA+ID4gPiArICAgIH0N Cj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArICBFcnJvciAoTlVMTCwgMCwgMzAwMCwgIkludmFsaWQi LA0KPiA+ICJGaW5kRWxmR09UU2VjdGlvbkZyb21HT1RFbnRyeUVsZlJ2YToNCj4gPiA+IEVsZlJ2 YSAweCUwMTZMWCBmb3IgR09UIGVudHJ5IG5vdCBmb3VuZCBpbiBhbnkgc2VjdGlvbi4iLA0KPiA+ ID4gPiBHT1RFbnRyeUVsZlJ2YSk7DQo+ID4gPiA+ICsgIGV4aXQoRVhJVF9GQUlMVVJFKTsNCj4g PiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLy8NCj4gPiA+ID4gKy8vIFN0b3JlcyBsb2Nh dGlvbnMgb2YgR09UIGVudHJpZXMgaW4gQ09GRiBpbWFnZS4NCj4gPiA+ID4gKy8vICAgUmV0dXJu cyBUUlVFIGlmIEdPVCBlbnRyeSBpcyBuZXcuDQo+ID4gPiA+ICsvLyAgIFNpbXBsZSBpbXBsZW1l bnRhdGlvbiBhcyBudW1iZXIgb2YgR09UDQo+ID4gPiA+ICsvLyAgIGVudHJpZXMgaXMgZXhwZWN0 ZWQgdG8gYmUgbG93Lg0KPiA+ID4gPiArLy8NCj4gPiA+ID4gKw0KPiA+ID4gPiArU1RBVElDDQo+ ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtBY2N1bXVsYXRlQ29mZkdPVEVudHJpZXMgKA0KPiA+ ID4gPiArICBVSU5UMzIgR09UQ29mZkVudHJ5DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4g PiA+ID4gKyAgVUlOVDMyIGk7DQo+ID4gPiA+ICsgIGlmIChtR09UQ29mZkVudHJpZXMgIT0gTlVM TCkgew0KPiA+ID4gPiArICAgIGZvciAoaSA9IDA7IGkgPCBtR09UTnVtQ29mZkVudHJpZXM7IGkr KykNCj4gPiA+ID4gKyAgICAgIGlmIChtR09UQ29mZkVudHJpZXNbaV0gPT0gR09UQ29mZkVudHJ5 KQ0KPiA+ID4gPiArICAgICAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4g KyAgaWYgKG1HT1RDb2ZmRW50cmllcyA9PSBOVUxMKSB7DQo+ID4gPiA+ICsgICAgbUdPVENvZmZF bnRyaWVzID0gKFVJTlQzMiopbWFsbG9jKDUgKiBzaXplb2YgKm1HT1RDb2ZmRW50cmllcyk7DQo+ ID4gPiA+ICsgICAgaWYgKG1HT1RDb2ZmRW50cmllcyA9PSBOVUxMKSB7DQo+ID4gPiA+ICsgICAg ICBFcnJvciAoTlVMTCwgMCwgNDAwMSwgIlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxs b2NhdGVkISIpOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKyAgICBhc3NlcnQgKG1HT1RDb2Zm RW50cmllcyAhPSBOVUxMKTsNCj4gPiA+ID4gKyAgICBtR09UTWF4Q29mZkVudHJpZXMgPSA1Ow0K PiA+ID4gPiArICAgIG1HT1ROdW1Db2ZmRW50cmllcyA9IDA7DQo+ID4gPiA+ICsgIH0gZWxzZSBp ZiAobUdPVE51bUNvZmZFbnRyaWVzID09IG1HT1RNYXhDb2ZmRW50cmllcykgew0KPiA+ID4gPiAr ICAgIG1HT1RDb2ZmRW50cmllcyA9IChVSU5UMzIqKXJlYWxsb2MobUdPVENvZmZFbnRyaWVzLCAy ICoNCj4gPiA+IG1HT1RNYXhDb2ZmRW50cmllcyAqIHNpemVvZiAqbUdPVENvZmZFbnRyaWVzKTsN Cj4gPiA+ID4gKyAgICBpZiAobUdPVENvZmZFbnRyaWVzID09IE5VTEwpIHsNCj4gPiA+ID4gKyAg ICAgIEVycm9yIChOVUxMLCAwLCA0MDAxLCAiUmVzb3VyY2UiLCAibWVtb3J5IGNhbm5vdCBiZSBh bGxvY2F0ZWQhIik7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICAgIGFzc2VydCAobUdPVENv ZmZFbnRyaWVzICE9IE5VTEwpOw0KPiA+ID4gPiArICAgIG1HT1RNYXhDb2ZmRW50cmllcyArPSBt R09UTWF4Q29mZkVudHJpZXM7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKyAgbUdPVENvZmZFbnRy aWVzW21HT1ROdW1Db2ZmRW50cmllcysrXSA9IEdPVENvZmZFbnRyeTsNCj4gPiA+ID4gKyAgcmV0 dXJuIFRSVUU7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK1NUQVRJQw0KPiA+ID4g PiAraW50DQo+ID4gPiA+ICtfX2NvbXBhcmF0b3IgKA0KPiA+ID4gPiArICBjb25zdCB2b2lkKiBs aHMsDQo+ID4gPiA+ICsgIGNvbnN0IHZvaWQqIHJocw0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7 DQo+ID4gPiA+ICsgIGlmICgqKGNvbnN0IFVJTlQzMiopbGhzIDwgKihjb25zdCBVSU5UMzIqKXJo cykNCj4gPiA+ID4gKyAgICByZXR1cm4gLTE7DQo+ID4gPiA+ICsgIHJldHVybiAqKGNvbnN0IFVJ TlQzMiopbGhzID4gKihjb25zdCBVSU5UMzIqKXJoczsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ICtFbWl0R09UUmVsb2NhdGlv bnMgKA0KPiA+ID4gPiArICBWT0lEDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4g KyAgVUlOVDMyIGk7DQo+ID4gPiA+ICsgIGlmIChtR09UQ29mZkVudHJpZXMgPT0gTlVMTCkNCj4g PiA+ID4gKyAgICByZXR1cm47DQo+ID4gPiA+ICsgIHFzb3J0KA0KPiA+ID4gPiArICAgIG1HT1RD b2ZmRW50cmllcywNCj4gPiA+ID4gKyAgICBtR09UTnVtQ29mZkVudHJpZXMsDQo+ID4gPiA+ICsg ICAgc2l6ZW9mICptR09UQ29mZkVudHJpZXMsDQo+ID4gPiA+ICsgICAgX19jb21wYXJhdG9yKTsN Cj4gPiA+ID4gKyAgZm9yIChpID0gMDsgaSA8IG1HT1ROdW1Db2ZmRW50cmllczsgaSsrKSB7DQo+ ID4gPiA+ICsgICAgVmVyYm9zZU1zZyAoIkVGSV9JTUFHRV9SRUxfQkFTRURfRElSNjQgT2Zmc2V0 OiAweCUwOFgiLA0KPiA+ID4gbUdPVENvZmZFbnRyaWVzW2ldKTsNCj4gPiA+ID4gKyAgICBDb2Zm QWRkRml4dXAoDQo+ID4gPiA+ICsgICAgICBtR09UQ29mZkVudHJpZXNbaV0sDQo+ID4gPiA+ICsg ICAgICBFRklfSU1BR0VfUkVMX0JBU0VEX0RJUjY0KTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiAr ICBmcmVlKG1HT1RDb2ZmRW50cmllcyk7DQo+ID4gPiA+ICsgIG1HT1RDb2ZmRW50cmllcyA9IE5V TEw7DQo+ID4gPiA+ICsgIG1HT1RNYXhDb2ZmRW50cmllcyA9IDA7DQo+ID4gPiA+ICsgIG1HT1RO dW1Db2ZmRW50cmllcyA9IDA7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gIC8vDQo+ ID4gPiA+ICAvLyBFbGYgZnVuY3Rpb25zIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbg0KPiA+ID4g PiAgLy8NCj4gPiA+ID4gQEAgLTY5OCw3ICs4MTgsNyBAQCBXcml0ZVNlY3Rpb25zNjQgKA0KPiA+ ID4gPiAgICAgIC8vIHNlY3Rpb24gdGhhdCBhcHBsaWVzIHRvIHRoZSBlbnRpcmUgYmluYXJ5LCBh bmQgd2hpY2ggd2lsbCBoYXZlIGl0cw0KPiA+ID4gc2VjdGlvbg0KPiA+ID4gPiAgICAgIC8vIGlu ZGV4IHNldCB0byAjMCAod2hpY2ggaXMgYSBOVUxMIHNlY3Rpb24gd2l0aCB0aGUgU0hGX0FMTE9D IGJpdA0KPiA+ID4gY2xlYXJlZCkuDQo+ID4gPiA+ICAgICAgLy8NCj4gPiA+ID4gLSAgICAvLyBJ biB0aGUgYWJzZW5jZSBvZiBHT1QgYmFzZWQgcmVsb2NhdGlvbnMgKHdoaWNoIHdlIGN1cnJlbnRs eSBkb24ndA0KPiA+ID4gc3VwcG9ydCksDQo+ID4gPiA+ICsgICAgLy8gSW4gdGhlIGFic2VuY2Ug b2YgR09UIGJhc2VkIHJlbG9jYXRpb25zLA0KPiA+ID4gPiAgICAgIC8vIHRoaXMgUkVMQSBzZWN0 aW9uIHdpbGwgY29udGFpbiByZWR1bmRhbnQgUl94eHhfUkVMQVRJVkUNCj4gPiByZWxvY2F0aW9u cywNCj4gPiA+IG9uZQ0KPiA+ID4gPiAgICAgIC8vIGZvciBldmVyeSBSX3h4eF94eDY0IHJlbG9j YXRpb24gYXBwZWFyaW5nIGluIHRoZSBwZXItc2VjdGlvbiBSRUxBDQo+ID4gPiBzZWN0aW9ucy4N Cj4gPiA+ID4gICAgICAvLyAoaS5lLiwgLnJlbGEudGV4dCBhbmQgLnJlbGEuZGF0YSkNCj4gPiA+ ID4gQEAgLTc4MCw2ICs5MDAsNyBAQCBXcml0ZVNlY3Rpb25zNjQgKA0KPiA+ID4gPiAgICAgICAg ICAvLyBEZXRlcm1pbmUgaG93IHRvIGhhbmRsZSBlYWNoIHJlbG9jYXRpb24gdHlwZSBiYXNlZCBv biB0aGUNCj4gPiA+IG1hY2hpbmUgdHlwZS4NCj4gPiA+ID4gICAgICAgICAgLy8NCj4gPiA+ID4g ICAgICAgICAgaWYgKG1FaGRyLT5lX21hY2hpbmUgPT0gRU1fWDg2XzY0KSB7DQo+ID4gPiA+ICsg ICAgICAgICAgRWxmNjRfQWRkciBHT1RFbnRyeVJ2YTsNCj4gPiA+ID4gICAgICAgICAgICBzd2l0 Y2ggKEVMRl9SX1RZUEUoUmVsLT5yX2luZm8pKSB7DQo+ID4gPiA+ICAgICAgICAgICAgY2FzZSBS X1g4Nl82NF9OT05FOg0KPiA+ID4gPiAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiA+IEBAIC04 MzQsNiArOTU1LDMyIEBAIFdyaXRlU2VjdGlvbnM2NCAoDQo+ID4gPiA+ICAgICAgICAgICAgICAg IC0gKFNlY09mZnNldCAtIFNlY1NoZHItPnNoX2FkZHIpKTsNCj4gPiA+ID4gICAgICAgICAgICAg IFZlcmJvc2VNc2cgKCJSZWxvY2F0aW9uOiAgMHglMDhYIiwgKihVSU5UMzIgKilUYXJnKTsNCj4g PiA+ID4gICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiArICAgICAgICAgIGNhc2UgUl9YODZf NjRfR09UUENSRUw6DQo+ID4gPiA+ICsgICAgICAgICAgY2FzZSBSX1g4Nl82NF9HT1RQQ1JFTFg6 DQo+ID4gPiA+ICsgICAgICAgICAgY2FzZSBSX1g4Nl82NF9SRVhfR09UUENSRUxYOg0KPiA+ID4g PiArICAgICAgICAgICAgVmVyYm9zZU1zZyAoIlJfWDg2XzY0X0dPVFBDUkVMIGZhbWlseSIpOw0K PiA+ID4gPiArICAgICAgICAgICAgVmVyYm9zZU1zZyAoIk9mZnNldDogMHglMDhYLCBBZGRlbmQ6 IDB4JTA4WCIsDQo+ID4gPiA+ICsgICAgICAgICAgICAgIChVSU5UMzIpKFNlY09mZnNldCArIChS ZWwtPnJfb2Zmc2V0IC0gU2VjU2hkci0+c2hfYWRkcikpLA0KPiA+ID4gPiArICAgICAgICAgICAg ICAqKFVJTlQzMiAqKVRhcmcpOw0KPiA+ID4gPiArICAgICAgICAgICAgR09URW50cnlSdmEgPSBS ZWwtPnJfb2Zmc2V0IC0gUmVsLT5yX2FkZGVuZCArICooVUlOVDMyDQo+ICopVGFyZzsNCj4gPiA+ ID4gKyAgICAgICAgICAgIEZpbmRFbGZHT1RTZWN0aW9uRnJvbUdPVEVudHJ5RWxmUnZhKEdPVEVu dHJ5UnZhKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICooVUlOVDMyICopVGFyZyA9IChVSU5UMzIp ICgqKFVJTlQzMiAqKVRhcmcNCj4gPiA+ID4gKyAgICAgICAgICAgICAgKyAobUNvZmZTZWN0aW9u c09mZnNldFttR09UU2hpbmRleF0gLSBtR09UU2hkci0+c2hfYWRkcikNCj4gPiA+ID4gKyAgICAg ICAgICAgICAgLSAoU2VjT2Zmc2V0IC0gU2VjU2hkci0+c2hfYWRkcikpOw0KPiA+ID4gPiArICAg ICAgICAgICAgVmVyYm9zZU1zZyAoIlJlbG9jYXRpb246ICAweCUwOFgiLCAqKFVJTlQzMiAqKVRh cmcpOw0KPiA+ID4gPiArICAgICAgICAgICAgR09URW50cnlSdmEgKz0gKG1Db2ZmU2VjdGlvbnNP ZmZzZXRbbUdPVFNoaW5kZXhdIC0NCj4gPiBtR09UU2hkci0NCj4gPiA+ID5zaF9hZGRyKTsgIC8v IEVMRiBSdmEgLT4gQ09GRiBSdmENCj4gPiA+ID4gKyAgICAgICAgICAgIGlmIChBY2N1bXVsYXRl Q29mZkdPVEVudHJpZXMoKFVJTlQzMilHT1RFbnRyeVJ2YSkpIHsNCj4gPiA+ID4gKyAgICAgICAg ICAgICAgLy8NCj4gPiA+ID4gKyAgICAgICAgICAgICAgLy8gUmVsb2NhdGUgR09UIGVudHJ5IGlm IGl0J3MgdGhlIGZpcnN0IHRpbWUgd2UgcnVuIGludG8gaXQNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgLy8NCj4gPiA+ID4gKyAgICAgICAgICAgICAgVGFyZyA9IG1Db2ZmRmlsZSArIEdPVEVudHJ5 UnZhOw0KPiA+ID4gPiArICAgICAgICAgICAgICBWZXJib3NlTXNnICgiT2Zmc2V0OiAweCUwOFgs IEFkZGVuZDogMHglMDE2TFgiLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgIChVSU5UMzIpR09U RW50cnlSdmEsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgKihVSU5UNjQgKilUYXJnKTsNCj4g PiA+ID4gKyAgICAgICAgICAgICAgKihVSU5UNjQgKilUYXJnID0gKihVSU5UNjQgKilUYXJnIC0g U3ltU2hkci0+c2hfYWRkciArDQo+ID4gPiBtQ29mZlNlY3Rpb25zT2Zmc2V0W1N5bS0+c3Rfc2hu ZHhdOw0KPiA+ID4gPiArICAgICAgICAgICAgICBWZXJib3NlTXNnICgiUmVsb2NhdGlvbjogIDB4 JTAxNkxYIiwgKihVSU5UNjQqKVRhcmcpOw0KPiA+ID4gPiArICAgICAgICAgICAgfQ0KPiA+ID4g PiArICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiA+ICAgICAgICAgICAgZGVmYXVsdDoNCj4gPiA+ ID4gICAgICAgICAgICAgIEVycm9yIChOVUxMLCAwLCAzMDAwLCAiSW52YWxpZCIsICIlcyB1bnN1 cHBvcnRlZCBFTEYgRU1fWDg2XzY0DQo+ID4gPiByZWxvY2F0aW9uIDB4JXguIiwgbUluSW1hZ2VO YW1lLCAodW5zaWduZWQpDQo+ID4gPiA+IEVMRl9SX1RZUEUoUmVsLT5yX2luZm8pKTsNCj4gPiA+ ID4gICAgICAgICAgICB9DQo+ID4gPiA+IEBAIC05NzIsNiArMTExOSw5IEBAIFdyaXRlUmVsb2Nh dGlvbnM2NCAoDQo+ID4gPiA+ICAgICAgICAgICAgICBjYXNlIFJfWDg2XzY0X05PTkU6DQo+ID4g PiA+ICAgICAgICAgICAgICBjYXNlIFJfWDg2XzY0X1BDMzI6DQo+ID4gPiA+ICAgICAgICAgICAg ICBjYXNlIFJfWDg2XzY0X1BMVDMyOg0KPiA+ID4gPiArICAgICAgICAgICAgY2FzZSBSX1g4Nl82 NF9HT1RQQ1JFTDoNCj4gPiA+ID4gKyAgICAgICAgICAgIGNhc2UgUl9YODZfNjRfR09UUENSRUxY Og0KPiA+ID4gPiArICAgICAgICAgICAgY2FzZSBSX1g4Nl82NF9SRVhfR09UUENSRUxYOg0KPiA+ ID4gPiAgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ID4gICAgICAgICAgICAgIGNhc2UgUl9Y ODZfNjRfNjQ6DQo+ID4gPiA+ICAgICAgICAgICAgICAgIFZlcmJvc2VNc2cgKCJFRklfSU1BR0Vf UkVMX0JBU0VEX0RJUjY0IE9mZnNldDogMHglMDhYIiwNCj4gPiA+ID4gQEAgLTEwNDAsMTAgKzEx OTAsMjQgQEAgV3JpdGVSZWxvY2F0aW9uczY0ICgNCj4gPiA+ID4gICAgICAgICAgICAgIEVycm9y IChOVUxMLCAwLCAzMDAwLCAiTm90IFN1cHBvcnRlZCIsICJUaGlzIHRvb2wgZG9lcyBub3QNCj4g PiBzdXBwb3J0DQo+ID4gPiByZWxvY2F0aW9ucyBmb3IgRUxGIHdpdGggZV9tYWNoaW5lICV1IChw cm9jZXNzb3INCj4gPiA+ID4gdHlwZSkuIiwgKHVuc2lnbmVkKSBtRWhkci0+ZV9tYWNoaW5lKTsN Cj4gPiA+ID4gICAgICAgICAgICB9DQo+ID4gPiA+ICAgICAgICAgIH0NCj4gPiA+ID4gKyAgICAg ICAgaWYgKG1FaGRyLT5lX21hY2hpbmUgPT0gRU1fWDg2XzY0ICYmIFJlbFNoZHItPnNoX2luZm8g PT0NCj4gPiA+IG1HT1RTaGluZGV4KSB7DQo+ID4gPiA+ICsgICAgICAgICAgLy8NCj4gPiA+ID4g KyAgICAgICAgICAvLyBUYWNrIHJlbG9jYXRpb25zIGZvciBHT1QgZW50cmllcyBhZnRlciBvdGhl ciByZWxvY2F0aW9ucyBmb3INCj4gPiA+ID4gKyAgICAgICAgICAvLyAgIHRoZSBzZWN0aW9uIHRo ZSBHT1QgaXMgaW4sIGFzIGl0J3MgdXN1YWxseSBmb3VuZCBhdCB0aGUgZW5kDQo+ID4gPiA+ICsg ICAgICAgICAgLy8gICBvZiB0aGUgc2VjdGlvbi4NCj4gPiA+ID4gKyAgICAgICAgICAvLw0KPiA+ ID4gPiArICAgICAgICAgIEVtaXRHT1RSZWxvY2F0aW9ucygpOw0KPiA+ID4gPiArICAgICAgICB9 DQo+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiAgICB9DQo+ID4gPiA+ DQo+ID4gPiA+ICsgIGlmIChtRWhkci0+ZV9tYWNoaW5lID09IEVNX1g4Nl82NCkgew0KPiA+ID4g PiArICAgIC8vDQo+ID4gPiA+ICsgICAgLy8gSnVzdCBpbiBjYXNlIEdPVCBpcyBpbiBhIHNlY3Rp b24gd2l0aCBubyBvdGhlciByZWxvY2F0aW9ucw0KPiA+ID4gPiArICAgIC8vDQo+ID4gPiA+ICsg ICAgRW1pdEdPVFJlbG9jYXRpb25zKCk7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gICAgLy8NCj4g PiA+ID4gICAgLy8gUGFkIGJ5IGFkZGluZyBlbXB0eSBlbnRyaWVzLg0KPiA+ID4gPiAgICAvLw0K PiA+ID4gPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L2VsZl9jb21tb24u aA0KPiA+ID4gYi9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvZWxmX2NvbW1vbi5oDQo+ID4gPiA+ IGluZGV4IDc2NmQwZTQyLi41MGI0ZTFmMiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQmFzZVRvb2xz L1NvdXJjZS9DL0dlbkZ3L2VsZl9jb21tb24uaA0KPiA+ID4gPiArKysgYi9CYXNlVG9vbHMvU291 cmNlL0MvR2VuRncvZWxmX2NvbW1vbi5oDQo+ID4gPiA+IEBAIC01NDQsNiArNTQ0LDEyIEBAIHR5 cGVkZWYgc3RydWN0IHsNCj4gPiA+ID4gICNkZWZpbmUJUl8zODZfVExTX0RUUE1PRDMyCTM1CS8q IEdPVCBlbnRyeQ0KPiA+ID4gY29udGFpbmluZyBUTFMgaW5kZXggKi8NCj4gPiA+ID4gICNkZWZp bmUJUl8zODZfVExTX0RUUE9GRjMyCTM2CS8qIEdPVCBlbnRyeSBjb250YWluaW5nIFRMUw0KPiA+ ID4gb2Zmc2V0ICovDQo+ID4gPiA+ICAjZGVmaW5lCVJfMzg2X1RMU19UUE9GRjMyCTM3CS8qIEdP VCBlbnRyeSBvZiAtdmUgc3RhdGljIFRMUw0KPiA+ID4gb2Zmc2V0ICovDQo+ID4gPiA+ICsjZGVm aW5lCVJfMzg2X1NJWkUzMgkJMzgJLyogMzItYml0IHN5bWJvbCBzaXplICovDQo+ID4gPiA+ICsj ZGVmaW5lCVJfMzg2X1RMU19HT1RERVNDCTM5CS8qIEdPVCBvZmZzZXQgZm9yIFRMUw0KPiA+ID4g ZGVzY3JpcHRvci4gKi8NCj4gPiA+ID4gKyNkZWZpbmUJUl8zODZfVExTX0RFU0NfQ0FMTAk0MAkv KiBNYXJrZXIgb2YgY2FsbCB0aHJvdWdoIFRMUw0KPiA+ID4gZGVzY3JpcHRvciBmb3IgcmVsYXhh dGlvbi4gKi8NCj4gPiA+ID4gKyNkZWZpbmUJUl8zODZfVExTX0RFU0MJCTQxCS8qIFRMUyBkZXNj cmlwdG9yDQo+ID4gPiBjb250YWluaW5nIHBvaW50ZXIgdG8gY29kZSBhbmQgdG8gYXJndW1lbnQs IHJldHVybmluZyB0aGUgVExTIG9mZnNldCBmb3INCj4gPiB0aGUNCj4gPiA+ID4gc3ltYm9sLiAq Lw0KPiA+ID4gPiArI2RlZmluZQlSXzM4Nl9JUkVMQVRJVkUJCTQyCS8qIEFkanVzdCBpbmRpcmVj dGx5IGJ5DQo+ID4gPiBwcm9ncmFtIGJhc2UgKi8NCj4gPiA+ID4gKyNkZWZpbmUJUl8zODZfR09U MzJYCQk0MwkvKiBMb2FkIGZyb20gMzIgYml0IEdPVA0KPiA+ID4gZW50cnksIHJlbGF4YWJsZS4g Ki8NCj4gPiA+ID4NCj4gPiA+ID4gIC8qIE51bGwgcmVsb2NhdGlvbiAqLw0KPiA+ID4gPiAgI2Rl ZmluZQlSX0FBUkNINjRfTk9ORQkJCQkyNTYJLyoNCj4gPiA+IE5vIHJlbG9jYXRpb24gKi8NCj4g PiA+ID4gQEAgLTEwNTIsNiArMTA1OCwyMyBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiA+ICAj ZGVmaW5lCVJfWDg2XzY0X0RUUE9GRjMyCTIxCS8qIE9mZnNldCBpbiBUTFMgYmxvY2sgKi8NCj4g PiA+ID4gICNkZWZpbmUJUl9YODZfNjRfR09UVFBPRkYJMjIJLyogUEMgcmVsYXRpdmUgb2Zmc2V0 IHRvIElFDQo+ID4gPiBHT1QgZW50cnkgKi8NCj4gPiA+ID4gICNkZWZpbmUJUl9YODZfNjRfVFBP RkYzMgkyMwkvKiBPZmZzZXQgaW4gc3RhdGljIFRMUyBibG9jaw0KPiA+ID4gKi8NCj4gPiA+ID4g KyNkZWZpbmUJUl9YODZfNjRfUEM2NAkJMjQJLyogUEMgcmVsYXRpdmUgNjQgYml0DQo+ID4gPiAq Lw0KPiA+ID4gPiArI2RlZmluZQlSX1g4Nl82NF9HT1RPRkY2NAkyNQkvKiA2NCBiaXQgb2Zmc2V0 IHRvIEdPVCAqLw0KPiA+ID4gPiArI2RlZmluZQlSX1g4Nl82NF9HT1RQQzMyCTI2CS8qIDMyIGJp dCBzaWduZWQgcGMgcmVsYXRpdmUNCj4gPiA+IG9mZnNldCB0byBHT1QgKi8NCj4gPiA+ID4gKyNk ZWZpbmUJUl9YODZfNjRfR09UNjQJCTI3CS8qIDY0LWJpdCBHT1QgZW50cnkNCj4gPiA+IG9mZnNl dCAqLw0KPiA+ID4gPiArI2RlZmluZQlSX1g4Nl82NF9HT1RQQ1JFTDY0CTI4CS8qIDY0LWJpdCBQ QyByZWxhdGl2ZQ0KPiA+ID4gb2Zmc2V0IHRvIEdPVCBlbnRyeSAqLw0KPiA+ID4gPiArI2RlZmlu ZQlSX1g4Nl82NF9HT1RQQzY0CTI5CS8qIDY0LWJpdCBQQyByZWxhdGl2ZSBvZmZzZXQgdG8NCj4g PiA+IEdPVCAqLw0KPiA+ID4gPiArI2RlZmluZQlSX1g4Nl82NF9HT1RQTFQ2NAkzMAkvKiBsaWtl IEdPVDY0LCBzYXlzIFBMVCBlbnRyeQ0KPiA+ID4gbmVlZGVkICovDQo+ID4gPiA+ICsjZGVmaW5l CVJfWDg2XzY0X1BMVE9GRjY0CTMxCS8qIDY0LWJpdCBHT1QgcmVsYXRpdmUgb2Zmc2V0DQo+ID4g PiB0byBQTFQgZW50cnkgKi8NCj4gPiA+ID4gKyNkZWZpbmUJUl9YODZfNjRfU0laRTMyCQkzMgkv KiBTaXplIG9mIHN5bWJvbCBwbHVzDQo+ID4gPiAzMi1iaXQgYWRkZW5kICovDQo+ID4gPiA+ICsj ZGVmaW5lCVJfWDg2XzY0X1NJWkU2NAkJMzMJLyogU2l6ZSBvZiBzeW1ib2wgcGx1cw0KPiA+ID4g NjQtYml0IGFkZGVuZCAqLw0KPiA+ID4gPiArI2RlZmluZQlSX1g4Nl82NF9HT1RQQzMyX1RMU0RF U0MJMzQJLyogR09UIG9mZnNldCBmb3IgVExTDQo+ID4gPiBkZXNjcmlwdG9yLiAqLw0KPiA+ID4g PiArI2RlZmluZQlSX1g4Nl82NF9UTFNERVNDX0NBTEwJMzUJLyogTWFya2VyIGZvciBjYWxsDQo+ ID4gPiB0aHJvdWdoIFRMUyBkZXNjcmlwdG9yLiAqLw0KPiA+ID4gPiArI2RlZmluZQlSX1g4Nl82 NF9UTFNERVNDCTM2CS8qIFRMUyBkZXNjcmlwdG9yLiAqLw0KPiA+ID4gPiArI2RlZmluZQlSX1g4 Nl82NF9JUkVMQVRJVkUJMzcJLyogQWRqdXN0IGluZGlyZWN0bHkgYnkNCj4gPiA+IHByb2dyYW0g YmFzZSAqLw0KPiA+ID4gPiArI2RlZmluZQlSX1g4Nl82NF9SRUxBVElWRTY0CTM4CS8qIDY0LWJp dCBhZGp1c3QgYnkgcHJvZ3JhbQ0KPiA+ID4gYmFzZSAqLw0KPiA+ID4gPiArI2RlZmluZQlSX1g4 Nl82NF9HT1RQQ1JFTFgJNDEJLyogTG9hZCBmcm9tIDMyIGJpdCBzaWduZWQgcGMNCj4gPiA+IHJl bGF0aXZlIG9mZnNldCB0byBHT1QgZW50cnkgd2l0aG91dCBSRVggcHJlZml4LCByZWxheGFibGUu ICovDQo+ID4gPiA+ICsjZGVmaW5lCVJfWDg2XzY0X1JFWF9HT1RQQ1JFTFgJNDIJLyogTG9hZCBm cm9tIDMyIGJpdA0KPiA+ID4gc2lnbmVkIHBjIHJlbGF0aXZlIG9mZnNldCB0byBHT1QgZW50cnkg d2l0aCBSRVggcHJlZml4LCByZWxheGFibGUuICovDQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ ICAjZW5kaWYgLyogIV9TWVNfRUxGX0NPTU1PTl9IXyAqLw0KPiA+ID4gPiAtLQ0KPiA+ID4gPiAy LjE3LjENCj4gPg0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fDQo+ID4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gPiBlZGsyLWRldmVsQGxpc3Rz LjAxLm9yZw0KPiA+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRrMi1k ZXZlbA0K