From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id DE462B3D4 for ; Tue, 21 Jun 2016 13:32:04 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 21 Jun 2016 04:32:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,503,1459839600"; d="scan'208,217";a="1002231336" Received: from irsmsx153.ger.corp.intel.com ([163.33.192.75]) by orsmga002.jf.intel.com with ESMTP; 21 Jun 2016 04:32:00 -0700 Received: from irsmsx108.ger.corp.intel.com ([169.254.11.183]) by IRSMSX153.ger.corp.intel.com ([169.254.9.105]) with mapi id 14.03.0248.002; Tue, 21 Jun 2016 12:31:58 +0100 From: "Dumitrescu, Cristian" To: Ethan CC: "dev@dpdk.org" , "Singh, Jasvinder" , "Yigit, Ferruh" Thread-Topic: [PATCH v3 1/3] port: add kni interface support Thread-Index: AQHRx8IwASRHPFpF9Em0P9BBr1KCG5/vZKUQgARWN4CAABVo0A== Date: Tue, 21 Jun 2016 11:31:58 +0000 Message-ID: <3EB4FA525960D640B5BDFFD6A3D8912647A0A842@IRSMSX108.ger.corp.intel.com> References: <1464434757-10860-1-git-send-email-zhuangwj@gmail.com> <1466076423-8680-1-git-send-email-zhuangwj@gmail.com> <3EB4FA525960D640B5BDFFD6A3D8912647A08FAC@IRSMSX108.ger.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMWI4MDM4NjQtNmEwZi00Yzk5LWIyN2YtNjhiN2EyOWFmODAxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6IlZhTWVaZHhqRDVqU0lOMDBDZUJEQ0JFNVEwYnpKNlBpK3d5OVpSQ2piVHM9In0= x-ctpclassification: CTP_IC x-originating-ip: [163.33.239.180] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v3 1/3] port: add kni interface support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jun 2016 11:32:08 -0000 SGkgRXRoYW4sDQoNClRoYW5rcyB2ZXJ5IG11Y2ggZm9yIHNlbmRpbmcgdGhlIG5ldyB2ZXJzaW9u Lg0KDQpZb3UgYXJlIGFic29sdXRlbHkgcmlnaHQgYWJvdXQgdGhlIHBhcmFtLT5wYXJzZWQgaXNz dWUsIHNvcnJ5LCBteSBmYXVsdC4NCg0KSSB0aGluayB5b3UgbmVlZCB0byB1c2UgdGhlIC0tY292 ZXItbGV0dGVyIGZsYWcgZm9yIGdpdCBmb3JtYXQtcGF0Y2ggY29tbWFuZC4gWW91IGNhbiBwcmFj dGljZSBieSBzZW5kaW5nIHRoZSBwYXRjaCBzZXQgdG8geW91ciBlbWFpbCBhZGRyZXNzIGZpcnN0 IGJlZm9yZSB5b3Ugc2VuZCBpdCB0byB0aGUgbGlzdC4gRG8geW91IHdhbnQgdG8gdHJ5IHNlbmRp bmcgYSBuZXcgcmV2aXNpb24gb2YgdGhpcyBwYXRjaCBzZXQgd2l0aCB0aGUgY292ZXIgbGV0dGVy IGluY2x1ZGVkIChwcmVmZXJyZWQpIG9yIHlvdSB3YW50IHRvIHN0b3AgYXQgdjM/IFBsZWFzZSBs ZXQgdXMga25vdy4NCg0KVGhhbmtzLA0KQ3Jpc3RpYW4NCg0KRnJvbTogemh1YW5nd2VpamllQGdt YWlsLmNvbSBbbWFpbHRvOnpodWFuZ3dlaWppZUBnbWFpbC5jb21dIE9uIEJlaGFsZiBPZiBFdGhh bg0KU2VudDogVHVlc2RheSwgSnVuZSAyMSwgMjAxNiAxMjoxMSBQTQ0KVG86IER1bWl0cmVzY3Us IENyaXN0aWFuIDxjcmlzdGlhbi5kdW1pdHJlc2N1QGludGVsLmNvbT4NCkNjOiBkZXZAZHBkay5v cmc7IFNpbmdoLCBKYXN2aW5kZXIgPGphc3ZpbmRlci5zaW5naEBpbnRlbC5jb20+OyBZaWdpdCwg RmVycnVoIDxmZXJydWgueWlnaXRAaW50ZWwuY29tPg0KU3ViamVjdDogUmU6IFtQQVRDSCB2MyAx LzNdIHBvcnQ6IGFkZCBrbmkgaW50ZXJmYWNlIHN1cHBvcnQNCg0KSGkgQ3Jpc3RpYW4sDQoNCk5l dyBwYXRjaCBoYXMgYmVlbiBzdWJtaXR0ZWQuIEFsbCBjb21tZW50cyBhcmUgZml4ZWQgZXhjZXB0 IHRoaXMgb25lOg0KIkhlcmUgaXMgb25lIGJ1ZyBmb3IgeW91LCB5b3UgbmVlZCB0byBtYWtlIHN1 cmUgeW91IGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgaGVyZToNCiAgICAgICAgcGFyYW0tPnBhcnNl ZCA9IDE7Ig0KSSB0aGluayB0aGUgbmV3IGNvbnZlbnRpb24gaXMgdG8gc2V0IHRoaXMgZmxhZyBi eSB0aGUgbWFjcm8gUEFSU0VfQ0hFQ0tfRFVQTElDQVRFX1NFQ1RJT04uDQoNCkJUVywgYWx0aG91 Z2ggSSB1c2UgdGhlICAtLWNvdmVyLWxldHRlciBhbmQgLS1hbm5vdGF0ZSBmbGFncyBpbiB0aGUg c2VuZC1lbWFpbCBjb21tYW5kLCBpdCBzZWVtcyBubyBjb3ZlciBsZXR0ZXIgaXMgY3JlYXRlZC4N CkkgYW0gbm90IHZlcnkgZmFtaWxpYXIgd2l0aCB0aGlzLiBTbyBzb3JyeSENCg0KDQpCLlIuDQpF dGhhbg0KDQoyMDE2LTA2LTE5IDA6NDQgR01UKzA4OjAwIER1bWl0cmVzY3UsIENyaXN0aWFuIDxj cmlzdGlhbi5kdW1pdHJlc2N1QGludGVsLmNvbTxtYWlsdG86Y3Jpc3RpYW4uZHVtaXRyZXNjdUBp bnRlbC5jb20+PjoNCkhpIEV0aGFuLA0KDQpUaGFuayB5b3UsIGhlcmUgYXJlIHNvbWUgY29tbWVu dHMgaW5saW5lZCBiZWxvdy4NCg0KUGxlYXNlIHJlb3JnYW5pemUgdGhpcyBwYXRjaCBpbiBhIHNs aWdodGx5IGRpZmZlcmVudCB3YXkgdG8gbG9vayBzaW1pbGFyIHRvIG90aGVyIERQREsgcGF0Y2gg c2V0cyBhbmQgYWxzbyBlYXNlIHVwIHRoZSBpbnRlZ3JhdGlvbiB3b3JrIGZvciBUaG9tYXM6DQog ICAgICAgIFBhdGNoIDA6IEkgc3VnZ2VzdCBhZGRpbmcgYSBjb3ZlciBsZXR0ZXI7DQogICAgICAg IFBhdGNoIDE6IGFsbCBsaWJydGVfcG9ydCBjaGFuZ2VzIChydGVfcG9ydF9rbmkuaCwgcnRlX3Bv cnRfa25pLmMsIE1ha2VmaWxlLCBydGVfcG9ydF92ZXJzaW9uLm1hcCksIGluY2x1ZGluZyB0aGUg Im5vZHJvcCIgS05JIHBvcnQgdmVyc2lvbg0KICAgICAgICBQYXRjaCAyOiBhbGwgaXBfcGlwZWxp bmUgYXBwIGNoYW5nZXMNCiAgICAgICAgUGF0Y2ggMzogaXBfcGlwZWxpbmUgYXBwIGtuaS5jZmcg ZmlsZQ0KICAgICAgICBQYXRjaCA0OiBEb2N1bWVudGF0aW9uIGNoYW5nZXMNCg0KPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXZWlKaWUgWmh1YW5nIFttYWlsdG86emh1YW5n d2pAZ21haWwuY29tPG1haWx0bzp6aHVhbmd3akBnbWFpbC5jb20+XQ0KPiBTZW50OiBUaHVyc2Rh eSwgSnVuZSAxNiwgMjAxNiAxMjoyNyBQTQ0KPiBUbzogRHVtaXRyZXNjdSwgQ3Jpc3RpYW4gPGNy aXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tPG1haWx0bzpjcmlzdGlhbi5kdW1pdHJlc2N1QGlu dGVsLmNvbT4+DQo+IENjOiBkZXZAZHBkay5vcmc8bWFpbHRvOmRldkBkcGRrLm9yZz47IFNpbmdo LCBKYXN2aW5kZXIgPGphc3ZpbmRlci5zaW5naEBpbnRlbC5jb208bWFpbHRvOmphc3ZpbmRlci5z aW5naEBpbnRlbC5jb20+PjsgWWlnaXQsDQo+IEZlcnJ1aCA8ZmVycnVoLnlpZ2l0QGludGVsLmNv bTxtYWlsdG86ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4+OyBXZWlKaWUgWmh1YW5nIDx6aHVhbmd3 akBnbWFpbC5jb208bWFpbHRvOnpodWFuZ3dqQGdtYWlsLmNvbT4+DQo+IFN1YmplY3Q6IFtQQVRD SCB2MyAxLzNdIHBvcnQ6IGFkZCBrbmkgaW50ZXJmYWNlIHN1cHBvcnQNCj4NCj4gMS4gYWRkIEtO SSBwb3J0IHR5cGUgdG8gdGhlIHBhY2tldCBmcmFtZXdvcmsNCj4gMi4gYWRkIEtOSSBzdXBwb3J0 IHRvIHRoZSBJUCBQaXBlbGluZSBzYW1wbGUgQXBwbGljYXRpb24NCj4gMy4gc29tZSBidWcgZml4 DQo+DQo+IFNpZ25lZC1vZmYtYnk6IFdlaUppZSBaaHVhbmcgPHpodWFuZ3dqQGdtYWlsLmNvbTxt YWlsdG86emh1YW5nd2pAZ21haWwuY29tPj4NCj4gLS0tDQo+IHYyOg0KPiAqIEZpeCBjaGVjayBw YXRjaCBlcnJvci4NCj4gdjM6DQo+ICogRml4IGNvZGUgcmV2aWV3IGNvbW1lbnRzLg0KPiAtLS0N Cj4gIGRvYy9hcGkvZG94eS1hcGktaW5kZXgubWQ8aHR0cDovL2RveHktYXBpLWluZGV4Lm1kPiAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgZXhhbXBsZXMvaXBfcGlwZWxpbmUv TWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0NCj4gIGV4YW1wbGVzL2lwX3Bp cGVsaW5lL2FwcC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTgxICsrKysrKysrKysrLQ0K PiAgZXhhbXBsZXMvaXBfcGlwZWxpbmUvY29uZmlnL2tuaS5jZmcgICAgICAgICAgICAgICAgfCAg NjcgKysrKysNCj4gIGV4YW1wbGVzL2lwX3BpcGVsaW5lL2NvbmZpZ19jaGVjay5jICAgICAgICAg ICAgICAgIHwgIDI2ICstDQo+ICBleGFtcGxlcy9pcF9waXBlbGluZS9jb25maWdfcGFyc2UuYyAg ICAgICAgICAgICAgICB8IDE2NiArKysrKysrKysrLQ0KPiAgZXhhbXBsZXMvaXBfcGlwZWxpbmUv aW5pdC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxMzIgKysrKysrKystDQo+ICBleGFtcGxl cy9pcF9waXBlbGluZS9waXBlbGluZS9waXBlbGluZV9jb21tb25fZmUuYyB8ICAyOSArKw0KPiAg ZXhhbXBsZXMvaXBfcGlwZWxpbmUvcGlwZWxpbmUvcGlwZWxpbmVfbWFzdGVyX2JlLmMgfCAgIDYg Kw0KPiAgZXhhbXBsZXMvaXBfcGlwZWxpbmUvcGlwZWxpbmVfYmUuaCAgICAgICAgICAgICAgICAg fCAgMjcgKysNCj4gIGxpYi9saWJydGVfcG9ydC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA3ICsNCj4gIGxpYi9saWJydGVfcG9ydC9ydGVfcG9ydF9rbmkuYyAgICAgICAg ICAgICAgICAgICAgIHwgMzI1ICsrKysrKysrKysrKysrKysrKysrKw0KPiAgbGliL2xpYnJ0ZV9w b3J0L3J0ZV9wb3J0X2tuaS5oICAgICAgICAgICAgICAgICAgICAgfCAgODIgKysrKysrDQo+ICBs aWIvbGlicnRlX3BvcnQvcnRlX3BvcnRfdmVyc2lvbi5tYXAgICAgICAgICAgICAgICB8ICAgOCAr DQo+ICAxNCBmaWxlcyBjaGFuZ2VkLCAxMDQ3IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygt KQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL2lwX3BpcGVsaW5lL2NvbmZpZy9rbmku Y2ZnDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9wb3J0L3J0ZV9wb3J0X2tuaS5j DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9wb3J0L3J0ZV9wb3J0X2tuaS5oDQo+ DQo+IGRpZmYgLS1naXQgYS9kb2MvYXBpL2RveHktYXBpLWluZGV4Lm1kPGh0dHA6Ly9kb3h5LWFw aS1pbmRleC5tZD4gYi9kb2MvYXBpL2RveHktYXBpLWluZGV4Lm1kPGh0dHA6Ly9kb3h5LWFwaS1p bmRleC5tZD4NCj4gaW5kZXggZjYyNjM4Ni4uNWU3ZjAyNCAxMDA2NDQNCj4gLS0tIGEvZG9jL2Fw aS9kb3h5LWFwaS1pbmRleC5tZDxodHRwOi8vZG94eS1hcGktaW5kZXgubWQ+DQo+ICsrKyBiL2Rv Yy9hcGkvZG94eS1hcGktaW5kZXgubWQ8aHR0cDovL2RveHktYXBpLWluZGV4Lm1kPg0KPiBAQCAt MTE4LDYgKzExOCw3IEBAIFRoZXJlIGFyZSBtYW55IGxpYnJhcmllcywgc28gdGhlaXIgaGVhZGVy cyBtYXkgYmUNCj4gZ3JvdXBlZCBieSB0b3BpY3M6DQo+ICAgICAgW2ZyYWddICAgICAgICAgICAg IChAcmVmIHJ0ZV9wb3J0X2ZyYWcuaCksDQo+ICAgICAgW3JlYXNzXSAgICAgICAgICAgIChAcmVm IHJ0ZV9wb3J0X3Jhcy5oKSwNCj4gICAgICBbc2NoZWRdICAgICAgICAgICAgKEByZWYgcnRlX3Bv cnRfc2NoZWQuaCksDQo+ICsgICAgW2tuaV0gICAgICAgICAgICAgIChAcmVmIHJ0ZV9wb3J0X2tu aS5oKSwNCj4gICAgICBbc3JjL3NpbmtdICAgICAgICAgKEByZWYgcnRlX3BvcnRfc291cmNlX3Np bmsuaCkNCj4gICAgKiBbdGFibGVdICAgICAgICAgICAgKEByZWYgcnRlX3RhYmxlLmgpOg0KPiAg ICAgIFtscG0gSVB2NF0gICAgICAgICAoQHJlZiBydGVfdGFibGVfbHBtLmgpLA0KPiBkaWZmIC0t Z2l0IGEvZXhhbXBsZXMvaXBfcGlwZWxpbmUvTWFrZWZpbGUgYi9leGFtcGxlcy9pcF9waXBlbGlu ZS9NYWtlZmlsZQ0KPiBpbmRleCA1ODI3MTE3Li42ZGMzZjUyIDEwMDY0NA0KPiAtLS0gYS9leGFt cGxlcy9pcF9waXBlbGluZS9NYWtlZmlsZQ0KPiArKysgYi9leGFtcGxlcy9pcF9waXBlbGluZS9N YWtlZmlsZQ0KPiBAQCAtMSw2ICsxLDYgQEANCj4gICMgICBCU0QgTElDRU5TRQ0KPiAgIw0KPiAt IyAgIENvcHlyaWdodChjKSAyMDEwLTIwMTQgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+ICsjICAgQ29weXJpZ2h0KGMpIDIwMTAtMjAxNiBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gICMgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAg Iw0KPiAgIyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dA0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBfcGlwZWxpbmUv YXBwLmggYi9leGFtcGxlcy9pcF9waXBlbGluZS9hcHAuaA0KPiBpbmRleCA3NjExMzQxLi5hYmJk NmQ0IDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy9pcF9waXBlbGluZS9hcHAuaA0KPiArKysgYi9l eGFtcGxlcy9pcF9waXBlbGluZS9hcHAuaA0KPiBAQCAtNDQsNiArNDQsOSBAQA0KPiAgI2luY2x1 ZGUgPGNtZGxpbmVfcGFyc2UuaD4NCj4NCj4gICNpbmNsdWRlIDxydGVfZXRoZGV2Lmg+DQo+ICsj aWZkZWYgUlRFX0xJQlJURV9LTkkNCj4gKyNpbmNsdWRlIDxydGVfa25pLmg+DQo+ICsjZW5kaWYN Cj4NCj4gICNpbmNsdWRlICJjcHVfY29yZV9tYXAuaCINCj4gICNpbmNsdWRlICJwaXBlbGluZS5o Ig0KPiBAQCAtMTMyLDYgKzEzNSwyMCBAQCBzdHJ1Y3QgYXBwX3BrdHFfc3dxX3BhcmFtcyB7DQo+ ICAgICAgIHVpbnQzMl90IG1lbXBvb2xfaW5kaXJlY3RfaWQ7DQo+ICB9Ow0KPg0KPiArc3RydWN0 IGFwcF9wa3RxX2tuaV9wYXJhbXMgew0KPiArICAgICBjaGFyICpuYW1lOw0KPiArICAgICB1aW50 MzJfdCBwYXJzZWQ7DQo+ICsNCj4gKyAgICAgdWludDMyX3Qgc29ja2V0X2lkOw0KPiArICAgICB1 aW50MzJfdCBjb3JlX2lkOw0KPiArICAgICB1aW50MzJfdCBoeXBlcl90aF9pZDsNCj4gKyAgICAg dWludDMyX3QgZm9yY2VfYmluZDsNCj4gKw0KPiArICAgICB1aW50MzJfdCBtZW1wb29sX2lkOyAv KiBQb3NpdGlvbiBpbiB0aGUgYXBwLT5tZW1wb29sX3BhcmFtcyAqLw0KPiArICAgICB1aW50MzJf dCBidXJzdF9yZWFkOw0KPiArICAgICB1aW50MzJfdCBidXJzdF93cml0ZTsNCj4gK307DQo+ICsN Cj4gICNpZm5kZWYgQVBQX0ZJTEVfTkFNRV9TSVpFDQo+ICAjZGVmaW5lIEFQUF9GSUxFX05BTUVf U0laRSAgICAgICAgICAgICAgICAgICAgICAgMjU2DQo+ICAjZW5kaWYNCj4gQEAgLTE4NSw2ICsy MDIsNyBAQCBlbnVtIGFwcF9wa3RxX2luX3R5cGUgew0KPiAgICAgICBBUFBfUEtUUV9JTl9IV1Es DQo+ICAgICAgIEFQUF9QS1RRX0lOX1NXUSwNCj4gICAgICAgQVBQX1BLVFFfSU5fVE0sDQo+ICsg ICAgIEFQUF9QS1RRX0lOX0tOSSwNCj4gICAgICAgQVBQX1BLVFFfSU5fU09VUkNFLA0KPiAgfTsN Cj4NCj4gQEAgLTE5Nyw2ICsyMTUsNyBAQCBlbnVtIGFwcF9wa3RxX291dF90eXBlIHsNCj4gICAg ICAgQVBQX1BLVFFfT1VUX0hXUSwNCj4gICAgICAgQVBQX1BLVFFfT1VUX1NXUSwNCj4gICAgICAg QVBQX1BLVFFfT1VUX1RNLA0KPiArICAgICBBUFBfUEtUUV9PVVRfS05JLA0KPiAgICAgICBBUFBf UEtUUV9PVVRfU0lOSywNCj4gIH07DQo+DQo+IEBAIC00MjAsNiArNDM5LDggQEAgc3RydWN0IGFw cF9lYWxfcGFyYW1zIHsNCj4NCj4gICNkZWZpbmUgQVBQX01BWF9QS1RRX1RNICAgICAgICAgICAg ICAgICAgICAgICAgICBBUFBfTUFYX0xJTktTDQo+DQo+ICsjZGVmaW5lIEFQUF9NQVhfUEtUUV9L TkkgICAgICAgICAgICAgICAgICAgICAgICAgQVBQX01BWF9MSU5LUw0KPiArDQo+ICAjaWZuZGVm IEFQUF9NQVhfUEtUUV9TT1VSQ0UNCj4gICNkZWZpbmUgQVBQX01BWF9QS1RRX1NPVVJDRSAgICAg ICAgICAgICAgICAgICAgICA2NA0KPiAgI2VuZGlmDQo+IEBAIC00NzEsNiArNDkyLDcgQEAgc3Ry dWN0IGFwcF9wYXJhbXMgew0KPiAgICAgICBzdHJ1Y3QgYXBwX3BrdHFfaHdxX291dF9wYXJhbXMN Cj4gaHdxX291dF9wYXJhbXNbQVBQX01BWF9IV1FfT1VUXTsNCj4gICAgICAgc3RydWN0IGFwcF9w a3RxX3N3cV9wYXJhbXMgc3dxX3BhcmFtc1tBUFBfTUFYX1BLVFFfU1dRXTsNCj4gICAgICAgc3Ry dWN0IGFwcF9wa3RxX3RtX3BhcmFtcyB0bV9wYXJhbXNbQVBQX01BWF9QS1RRX1RNXTsNCj4gKyAg ICAgc3RydWN0IGFwcF9wa3RxX2tuaV9wYXJhbXMga25pX3BhcmFtc1tBUFBfTUFYX1BLVFFfS05J XTsNCj4gICAgICAgc3RydWN0IGFwcF9wa3RxX3NvdXJjZV9wYXJhbXMNCj4gc291cmNlX3BhcmFt c1tBUFBfTUFYX1BLVFFfU09VUkNFXTsNCj4gICAgICAgc3RydWN0IGFwcF9wa3RxX3NpbmtfcGFy YW1zIHNpbmtfcGFyYW1zW0FQUF9NQVhfUEtUUV9TSU5LXTsNCj4gICAgICAgc3RydWN0IGFwcF9t c2dxX3BhcmFtcyBtc2dxX3BhcmFtc1tBUFBfTUFYX01TR1FdOw0KPiBAQCAtNDgyLDYgKzUwNCw3 IEBAIHN0cnVjdCBhcHBfcGFyYW1zIHsNCj4gICAgICAgdWludDMyX3Qgbl9wa3RxX2h3cV9vdXQ7 DQo+ICAgICAgIHVpbnQzMl90IG5fcGt0cV9zd3E7DQo+ICAgICAgIHVpbnQzMl90IG5fcGt0cV90 bTsNCj4gKyAgICAgdWludDMyX3Qgbl9wa3RxX2tuaTsNCj4gICAgICAgdWludDMyX3Qgbl9wa3Rx X3NvdXJjZTsNCj4gICAgICAgdWludDMyX3Qgbl9wa3RxX3Npbms7DQo+ICAgICAgIHVpbnQzMl90 IG5fbXNncTsNCj4gQEAgLTQ5NSw2ICs1MTgsOSBAQCBzdHJ1Y3QgYXBwX3BhcmFtcyB7DQo+ICAg ICAgIHN0cnVjdCBhcHBfbGlua19kYXRhIGxpbmtfZGF0YVtBUFBfTUFYX0xJTktTXTsNCj4gICAg ICAgc3RydWN0IHJ0ZV9yaW5nICpzd3FbQVBQX01BWF9QS1RRX1NXUV07DQo+ICAgICAgIHN0cnVj dCBydGVfc2NoZWRfcG9ydCAqdG1bQVBQX01BWF9QS1RRX1RNXTsNCj4gKyNpZmRlZiBSVEVfTElC UlRFX0tOSQ0KPiArICAgICBzdHJ1Y3QgcnRlX2tuaSAqa25pW0FQUF9NQVhfUEtUUV9LTkldOw0K PiArI2VuZGlmIC8qIFJURV9MSUJSVEVfS05JICovDQo+ICAgICAgIHN0cnVjdCBydGVfcmluZyAq bXNncVtBUFBfTUFYX01TR1FdOw0KPiAgICAgICBzdHJ1Y3QgcGlwZWxpbmVfdHlwZSBwaXBlbGlu ZV90eXBlW0FQUF9NQVhfUElQRUxJTkVfVFlQRVNdOw0KPiAgICAgICBzdHJ1Y3QgYXBwX3BpcGVs aW5lX2RhdGEgcGlwZWxpbmVfZGF0YVtBUFBfTUFYX1BJUEVMSU5FU107DQo+IEBAIC02NjcsMTEg KzY5MywxMSBAQCBhcHBfc3dxX2dldF9yZWFkZXIoc3RydWN0IGFwcF9wYXJhbXMgKmFwcCwNCj4g ICAgICAgc3RydWN0IGFwcF9wa3RxX3N3cV9wYXJhbXMgKnN3cSwNCj4gICAgICAgdWludDMyX3Qg KnBrdHFfaW5faWQpDQo+ICB7DQo+IC0gICAgIHN0cnVjdCBhcHBfcGlwZWxpbmVfcGFyYW1zICpy ZWFkZXI7DQo+ICsgICAgIHN0cnVjdCBhcHBfcGlwZWxpbmVfcGFyYW1zICpyZWFkZXIgPSBOVUxM Ow0KPiAgICAgICB1aW50MzJfdCBwb3MgPSBzd3EgLSBhcHAtPnN3cV9wYXJhbXM7DQo+ICAgICAg IHVpbnQzMl90IG5fcGlwZWxpbmVzID0gUlRFX01JTihhcHAtPm5fcGlwZWxpbmVzLA0KPiAgICAg ICAgICAgICAgIFJURV9ESU0oYXBwLT5waXBlbGluZV9wYXJhbXMpKTsNCj4gLSAgICAgdWludDMy X3Qgbl9yZWFkZXJzID0gMCwgaWQsIGk7DQo+ICsgICAgIHVpbnQzMl90IG5fcmVhZGVycyA9IDAs IGlkID0gMCwgaTsNCj4NCj4gICAgICAgZm9yIChpID0gMDsgaSA8IG5fcGlwZWxpbmVzOyBpKysp IHsNCj4gICAgICAgICAgICAgICBzdHJ1Y3QgYXBwX3BpcGVsaW5lX3BhcmFtcyAqcCA9ICZhcHAt PnBpcGVsaW5lX3BhcmFtc1tpXTsNCj4gQEAgLTcyNywxMSArNzUzLDExIEBAIGFwcF90bV9nZXRf cmVhZGVyKHN0cnVjdCBhcHBfcGFyYW1zICphcHAsDQo+ICAgICAgIHN0cnVjdCBhcHBfcGt0cV90 bV9wYXJhbXMgKnRtLA0KPiAgICAgICB1aW50MzJfdCAqcGt0cV9pbl9pZCkNCj4gIHsNCj4gLSAg ICAgc3RydWN0IGFwcF9waXBlbGluZV9wYXJhbXMgKnJlYWRlcjsNCj4gKyAgICAgc3RydWN0IGFw cF9waXBlbGluZV9wYXJhbXMgKnJlYWRlciA9IE5VTEw7DQo+ICAgICAgIHVpbnQzMl90IHBvcyA9 IHRtIC0gYXBwLT50bV9wYXJhbXM7DQo+ICAgICAgIHVpbnQzMl90IG5fcGlwZWxpbmVzID0gUlRF X01JTihhcHAtPm5fcGlwZWxpbmVzLA0KPiAgICAgICAgICAgICAgIFJURV9ESU0oYXBwLT5waXBl bGluZV9wYXJhbXMpKTsNCj4gLSAgICAgdWludDMyX3Qgbl9yZWFkZXJzID0gMCwgaWQsIGk7DQo+ ICsgICAgIHVpbnQzMl90IG5fcmVhZGVycyA9IDAsIGlkID0gMCwgaTsNCj4NCj4gICAgICAgZm9y IChpID0gMDsgaSA8IG5fcGlwZWxpbmVzOyBpKyspIHsNCj4gICAgICAgICAgICAgICBzdHJ1Y3Qg YXBwX3BpcGVsaW5lX3BhcmFtcyAqcCA9ICZhcHAtPnBpcGVsaW5lX3BhcmFtc1tpXTsNCj4gQEAg LTc1OCw2ICs3ODQsNjYgQEAgYXBwX3RtX2dldF9yZWFkZXIoc3RydWN0IGFwcF9wYXJhbXMgKmFw cCwNCj4gIH0NCj4NCj4gIHN0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gK2FwcF9rbmlfZ2V0X3Jl YWRlcnMoc3RydWN0IGFwcF9wYXJhbXMgKmFwcCwgc3RydWN0DQo+IGFwcF9wa3RxX2tuaV9wYXJh bXMgKmtuaSkNCj4gK3sNCj4gKyAgICAgdWludDMyX3QgcG9zID0ga25pIC0gYXBwLT5rbmlfcGFy YW1zOw0KPiArICAgICB1aW50MzJfdCBuX3BpcGVsaW5lcyA9IFJURV9NSU4oYXBwLT5uX3BpcGVs aW5lcywNCj4gKyAgICAgICAgICAgICBSVEVfRElNKGFwcC0+cGlwZWxpbmVfcGFyYW1zKSk7DQo+ ICsgICAgIHVpbnQzMl90IG5fcmVhZGVycyA9IDAsIGk7DQo+ICsNCj4gKyAgICAgZm9yIChpID0g MDsgaSA8IG5fcGlwZWxpbmVzOyBpKyspIHsNCj4gKyAgICAgICAgICAgICBzdHJ1Y3QgYXBwX3Bp cGVsaW5lX3BhcmFtcyAqcCA9ICZhcHAtPnBpcGVsaW5lX3BhcmFtc1tpXTsNCj4gKyAgICAgICAg ICAgICB1aW50MzJfdCBuX3BrdHFfaW4gPSBSVEVfTUlOKHAtPm5fcGt0cV9pbiwgUlRFX0RJTShw LQ0KPiA+cGt0cV9pbikpOw0KPiArICAgICAgICAgICAgIHVpbnQzMl90IGo7DQo+ICsNCj4gKyAg ICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9wa3RxX2luOyBqKyspIHsNCj4gKyAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBhcHBfcGt0cV9pbl9wYXJhbXMgKnBrdHEgPSAmcC0+cGt0cV9p bltqXTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKChwa3RxLT50eXBlID09IEFQ UF9QS1RRX0lOX0tOSSkgJiYNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBrdHEt PmlkID09IHBvcykpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fcmVhZGVycysr Ow0KPiArICAgICAgICAgICAgIH0NCj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIHJldHVybiBuX3Jl YWRlcnM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGFwcF9waXBlbGluZV9w YXJhbXMgKg0KPiArYXBwX2tuaV9nZXRfcmVhZGVyKHN0cnVjdCBhcHBfcGFyYW1zICphcHAsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFwcF9wa3RxX2tuaV9wYXJh bXMgKmtuaSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcGt0 cV9pbl9pZCkNCj4gK3sNCj4gKyAgICAgc3RydWN0IGFwcF9waXBlbGluZV9wYXJhbXMgKnJlYWRl ciA9IE5VTEw7DQo+ICsgICAgIHVpbnQzMl90IHBvcyA9IGtuaSAtIGFwcC0+a25pX3BhcmFtczsN Cj4gKyAgICAgdWludDMyX3Qgbl9waXBlbGluZXMgPSBSVEVfTUlOKGFwcC0+bl9waXBlbGluZXMs DQo+ICsgICAgICAgICAgICAgUlRFX0RJTShhcHAtPnBpcGVsaW5lX3BhcmFtcykpOw0KPiArICAg ICB1aW50MzJfdCBuX3JlYWRlcnMgPSAwLCBpZCA9IDAsIGk7DQo+ICsNCj4gKyAgICAgZm9yIChp ID0gMDsgaSA8IG5fcGlwZWxpbmVzOyBpKyspIHsNCj4gKyAgICAgICAgICAgICBzdHJ1Y3QgYXBw X3BpcGVsaW5lX3BhcmFtcyAqcCA9ICZhcHAtPnBpcGVsaW5lX3BhcmFtc1tpXTsNCj4gKyAgICAg ICAgICAgICB1aW50MzJfdCBuX3BrdHFfaW4gPSBSVEVfTUlOKHAtPm5fcGt0cV9pbiwgUlRFX0RJ TShwLQ0KPiA+cGt0cV9pbikpOw0KPiArICAgICAgICAgICAgIHVpbnQzMl90IGo7DQo+ICsNCj4g KyAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9wa3RxX2luOyBqKyspIHsNCj4gKyAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBhcHBfcGt0cV9pbl9wYXJhbXMgKnBrdHEgPSAmcC0+cGt0 cV9pbltqXTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKChwa3RxLT50eXBlID09 IEFQUF9QS1RRX0lOX0tOSSkgJiYNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBr dHEtPmlkID09IHBvcykpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9yZWFk ZXJzKys7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlciA9IHA7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gajsNCj4gKyAgICAgICAgICAgICAgICAg ICAgIH0NCj4gKyAgICAgICAgICAgICB9DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICBpZiAobl9y ZWFkZXJzICE9IDEpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICsNCj4gKyAgICAg KnBrdHFfaW5faWQgPSBpZDsNCj4gKyAgICAgcmV0dXJuIHJlYWRlcjsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGlubGluZSB1aW50MzJfdA0KPiAgYXBwX3NvdXJjZV9nZXRfcmVhZGVycyhzdHJ1Y3Qg YXBwX3BhcmFtcyAqYXBwLA0KPiAgc3RydWN0IGFwcF9wa3RxX3NvdXJjZV9wYXJhbXMgKnNvdXJj ZSkNCj4gIHsNCj4gQEAgLTg2MSwxMSArOTQ3LDExIEBAIGFwcF9zd3FfZ2V0X3dyaXRlcihzdHJ1 Y3QgYXBwX3BhcmFtcyAqYXBwLA0KPiAgICAgICBzdHJ1Y3QgYXBwX3BrdHFfc3dxX3BhcmFtcyAq c3dxLA0KPiAgICAgICB1aW50MzJfdCAqcGt0cV9vdXRfaWQpDQo+ICB7DQo+IC0gICAgIHN0cnVj dCBhcHBfcGlwZWxpbmVfcGFyYW1zICp3cml0ZXI7DQo+ICsgICAgIHN0cnVjdCBhcHBfcGlwZWxp bmVfcGFyYW1zICp3cml0ZXIgPSBOVUxMOw0KPiAgICAgICB1aW50MzJfdCBwb3MgPSBzd3EgLSBh cHAtPnN3cV9wYXJhbXM7DQo+ICAgICAgIHVpbnQzMl90IG5fcGlwZWxpbmVzID0gUlRFX01JTihh cHAtPm5fcGlwZWxpbmVzLA0KPiAgICAgICAgICAgICAgIFJURV9ESU0oYXBwLT5waXBlbGluZV9w YXJhbXMpKTsNCj4gLSAgICAgdWludDMyX3Qgbl93cml0ZXJzID0gMCwgaWQsIGk7DQo+ICsgICAg IHVpbnQzMl90IG5fd3JpdGVycyA9IDAsIGlkID0gMCwgaTsNCj4NCj4gICAgICAgZm9yIChpID0g MDsgaSA8IG5fcGlwZWxpbmVzOyBpKyspIHsNCj4gICAgICAgICAgICAgICBzdHJ1Y3QgYXBwX3Bp cGVsaW5lX3BhcmFtcyAqcCA9ICZhcHAtPnBpcGVsaW5lX3BhcmFtc1tpXTsNCj4gQEAgLTkyMywx MSArMTAwOSwxMSBAQCBhcHBfdG1fZ2V0X3dyaXRlcihzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwLA0K PiAgICAgICBzdHJ1Y3QgYXBwX3BrdHFfdG1fcGFyYW1zICp0bSwNCj4gICAgICAgdWludDMyX3Qg KnBrdHFfb3V0X2lkKQ0KPiAgew0KPiAtICAgICBzdHJ1Y3QgYXBwX3BpcGVsaW5lX3BhcmFtcyAq d3JpdGVyOw0KPiArICAgICBzdHJ1Y3QgYXBwX3BpcGVsaW5lX3BhcmFtcyAqd3JpdGVyID0gTlVM TDsNCj4gICAgICAgdWludDMyX3QgcG9zID0gdG0gLSBhcHAtPnRtX3BhcmFtczsNCj4gICAgICAg dWludDMyX3Qgbl9waXBlbGluZXMgPSBSVEVfTUlOKGFwcC0+bl9waXBlbGluZXMsDQo+ICAgICAg ICAgICAgICAgUlRFX0RJTShhcHAtPnBpcGVsaW5lX3BhcmFtcykpOw0KPiAtICAgICB1aW50MzJf dCBuX3dyaXRlcnMgPSAwLCBpZCwgaTsNCj4gKyAgICAgdWludDMyX3Qgbl93cml0ZXJzID0gMCwg aWQgPSAwLCBpOw0KPg0KPiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9waXBlbGluZXM7IGkrKykg ew0KPiAgICAgICAgICAgICAgIHN0cnVjdCBhcHBfcGlwZWxpbmVfcGFyYW1zICpwID0gJmFwcC0+ cGlwZWxpbmVfcGFyYW1zW2ldOw0KPiBAQCAtOTM5LDEwICsxMDI1LDczIEBAIGFwcF90bV9nZXRf d3JpdGVyKHN0cnVjdCBhcHBfcGFyYW1zICphcHAsDQo+ICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgYXBwX3BrdHFfb3V0X3BhcmFtcyAqcGt0cSA9ICZwLQ0KPiA+cGt0cV9vdXRbal07DQo+ DQo+ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBrdHEtPnR5cGUgPT0gQVBQX1BLVFFfT1VU X1RNKSAmJg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGt0cS0+aWQgPT0gcG9z KSkgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX3dyaXRlcnMrKzsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyID0gcDsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWQgPSBqOw0KPiArICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAg ICAgICAgICAgIH0NCj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIGlmIChuX3dyaXRlcnMgIT0gMSkN Cj4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gKw0KPiArICAgICAqcGt0cV9vdXRfaWQg PSBpZDsNCj4gKyAgICAgcmV0dXJuIHdyaXRlcjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGlu ZSB1aW50MzJfdA0KPiArYXBwX2tuaV9nZXRfd3JpdGVycyhzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBw LCBzdHJ1Y3QNCj4gYXBwX3BrdHFfa25pX3BhcmFtcyAqa25pKQ0KPiArew0KPiArICAgICB1aW50 MzJfdCBwb3MgPSBrbmkgLSBhcHAtPmtuaV9wYXJhbXM7DQo+ICsgICAgIHVpbnQzMl90IG5fcGlw ZWxpbmVzID0gUlRFX01JTihhcHAtPm5fcGlwZWxpbmVzLA0KPiArICAgICAgICAgICAgIFJURV9E SU0oYXBwLT5waXBlbGluZV9wYXJhbXMpKTsNCj4gKyAgICAgdWludDMyX3Qgbl93cml0ZXJzID0g MCwgaTsNCj4gKw0KPiArICAgICBmb3IgKGkgPSAwOyBpIDwgbl9waXBlbGluZXM7IGkrKykgew0K PiArICAgICAgICAgICAgIHN0cnVjdCBhcHBfcGlwZWxpbmVfcGFyYW1zICpwID0gJmFwcC0+cGlw ZWxpbmVfcGFyYW1zW2ldOw0KPiArICAgICAgICAgICAgIHVpbnQzMl90IG5fcGt0cV9vdXQgPSBS VEVfTUlOKHAtPm5fcGt0cV9vdXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICBSVEVfRElNKHAt PnBrdHFfb3V0KSk7DQo+ICsgICAgICAgICAgICAgdWludDMyX3QgajsNCj4gKw0KPiArICAgICAg ICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3BrdHFfb3V0OyBqKyspIHsNCj4gKyAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBhcHBfcGt0cV9vdXRfcGFyYW1zICpwa3RxID0gJnAtDQo+ID5wa3Rx X291dFtqXTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKChwa3RxLT50eXBlID09 IEFQUF9QS1RRX09VVF9LTkkpICYmDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw a3RxLT5pZCA9PSBwb3MpKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX3dyaXRl cnMrKzsNCj4gKyAgICAgICAgICAgICB9DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICByZXR1cm4g bl93cml0ZXJzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBhcHBfcGlwZWxp bmVfcGFyYW1zICoNCj4gK2FwcF9rbmlfZ2V0X3dyaXRlcihzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBw LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhcHBfcGt0cV9rbmlf cGFyYW1zICprbmksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg KnBrdHFfb3V0X2lkKQ0KPiArew0KPiArICAgICBzdHJ1Y3QgYXBwX3BpcGVsaW5lX3BhcmFtcyAq d3JpdGVyID0gTlVMTDsNCj4gKyAgICAgdWludDMyX3QgcG9zID0ga25pIC0gYXBwLT5rbmlfcGFy YW1zOw0KPiArICAgICB1aW50MzJfdCBuX3BpcGVsaW5lcyA9IFJURV9NSU4oYXBwLT5uX3BpcGVs aW5lcywNCj4gKyAgICAgICAgICAgICBSVEVfRElNKGFwcC0+cGlwZWxpbmVfcGFyYW1zKSk7DQo+ ICsgICAgIHVpbnQzMl90IG5fd3JpdGVycyA9IDAsIGlkID0gMCwgaTsNCj4gKw0KPiArICAgICBm b3IgKGkgPSAwOyBpIDwgbl9waXBlbGluZXM7IGkrKykgew0KPiArICAgICAgICAgICAgIHN0cnVj dCBhcHBfcGlwZWxpbmVfcGFyYW1zICpwID0gJmFwcC0+cGlwZWxpbmVfcGFyYW1zW2ldOw0KPiAr ICAgICAgICAgICAgIHVpbnQzMl90IG5fcGt0cV9vdXQgPSBSVEVfTUlOKHAtPm5fcGt0cV9vdXQs DQo+ICsgICAgICAgICAgICAgICAgICAgICBSVEVfRElNKHAtPnBrdHFfb3V0KSk7DQo+ICsgICAg ICAgICAgICAgdWludDMyX3QgajsNCj4gKw0KPiArICAgICAgICAgICAgIGZvciAoaiA9IDA7IGog PCBuX3BrdHFfb3V0OyBqKyspIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhcHBf cGt0cV9vdXRfcGFyYW1zICpwa3RxID0gJnAtDQo+ID5wa3RxX291dFtqXTsNCj4gKw0KPiArICAg ICAgICAgICAgICAgICAgICAgaWYgKChwa3RxLT50eXBlID09IEFQUF9QS1RRX09VVF9LTkkpICYm DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwa3RxLT5pZCA9PSBwb3MpKSB7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fd3JpdGVycysrOw0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3cml0ZXIgPSBwOw0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZCA9IGo7DQo+ICsgICAgICAgICAgICAgICAgICAgICB9DQo+ICAgICAgICAgICAg ICAgfQ0KPiAgICAgICB9DQo+DQo+IEBAIC0xMDUxLDYgKzEyMDAsMjIgQEAgYXBwX2dldF9saW5r X2Zvcl90bShzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwLA0KPiBzdHJ1Y3QgYXBwX3BrdHFfdG1fcGFy YW1zICpwX3RtKQ0KPiAgICAgICByZXR1cm4gJmFwcC0+bGlua19wYXJhbXNbbGlua19wYXJhbV9p ZHhdOw0KPiAgfQ0KPg0KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgYXBwX2xpbmtfcGFyYW1zICoN Cj4gK2FwcF9nZXRfbGlua19mb3Jfa25pKHN0cnVjdCBhcHBfcGFyYW1zICphcHAsIHN0cnVjdA0K PiBhcHBfcGt0cV9rbmlfcGFyYW1zICpwX2tuaSkNCj4gK3sNCj4gKyAgICAgY2hhciBsaW5rX25h bWVbQVBQX1BBUkFNX05BTUVfU0laRV07DQo+ICsgICAgIHVpbnQzMl90IGxpbmtfaWQ7DQo+ICsg ICAgIHNzaXplX3QgbGlua19wYXJhbV9pZHg7DQo+ICsNCj4gKyAgICAgc3NjYW5mKHBfa25pLT5u YW1lLCAiS05JJSIgUFJJdTMyLCAmbGlua19pZCk7DQo+ICsgICAgIHNwcmludGYobGlua19uYW1l LCAiTElOSyUiIFBSSXUzMiwgbGlua19pZCk7DQo+ICsgICAgIGxpbmtfcGFyYW1faWR4ID0gQVBQ X1BBUkFNX0ZJTkQoYXBwLT5saW5rX3BhcmFtcywgbGlua19uYW1lKTsNCj4gKyAgICAgQVBQX0NI RUNLKChsaW5rX3BhcmFtX2lkeCA+PSAwKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIkNh bm5vdCBmaW5kICVzIGZvciAlcyIsIGxpbmtfbmFtZSwgcF9rbmktPm5hbWUpOw0KPiArDQo+ICsg ICAgIHJldHVybiAmYXBwLT5saW5rX3BhcmFtc1tsaW5rX3BhcmFtX2lkeF07DQo+ICt9DQo+ICsN Cj4gIHZvaWQgYXBwX3BpcGVsaW5lX3BhcmFtc19nZXQoc3RydWN0IGFwcF9wYXJhbXMgKmFwcCwN Cj4gICAgICAgc3RydWN0IGFwcF9waXBlbGluZV9wYXJhbXMgKnBfaW4sDQo+ICAgICAgIHN0cnVj dCBwaXBlbGluZV9wYXJhbXMgKnBfb3V0KTsNCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lwX3Bp cGVsaW5lL2NvbmZpZy9rbmkuY2ZnDQo+IGIvZXhhbXBsZXMvaXBfcGlwZWxpbmUvY29uZmlnL2tu aS5jZmcNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uYzMzOTA4MA0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2NvbmZpZy9rbmku Y2ZnDQo+IEBAIC0wLDAgKzEsNjcgQEANCj4gKzsgICBCU0QgTElDRU5TRQ0KPiArOw0KPiArOyAg IENvcHlyaWdodChjKSAyMDE2IEludGVsIENvcnBvcmF0aW9uLg0KPiArOyAgIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+ICs7DQo+ICs7ICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+ICs7ICAgbW9kaWZpY2F0aW9uLCBh cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+ICs7 ICAgYXJlIG1ldDoNCj4gKzsNCj4gKzsgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gKzsgICAgICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAr OyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlIGNvcHlyaWdodA0KPiArOyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gKzsgICAgICAgdGhlIGRvY3Vt ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiArOyAg ICAgICBkaXN0cmlidXRpb24uDQo+ICs7ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwg Q29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gKzsgICAgICAgY29udHJpYnV0b3Jz IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ICs7 ICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g cGVybWlzc2lvbi4NCj4gKzsNCj4gKzsgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gQ09OVFJJQlVUT1JTDQo+ICs7ICAgIkFTIElTIiBB TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVA0KPiBO T1QNCj4gKzsgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gKzsgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+IENPUFlSSUdIVA0KPiArOyAg IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU LA0KPiBJTkNJREVOVEFMLA0KPiArOyAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gKzsgICBMSU1JVEVEIFRPLCBQ Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQo+IE9GIFVT RSwNCj4gKzsgICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP V0VWRVIgQ0FVU0VEDQo+IEFORCBPTiBBTlkNCj4gKzsgICBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQo+ICs7ICAgKElO Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP Rg0KPiBUSEUgVVNFDQo+ICs7ICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIDQo+IERBTUFHRS4NCj4gKw0KPiArOyAgICAgICAgICAg ICBfX19fX19fX19fX19fXyAgICAgICAgICBfX19fX19fX19fX19fX19fX19fX19fDQo+ICs7ICAg ICAgICAgICAgfCAgICAgICAgICAgICAgfCAgS05JMCAgfCAgICAgICAgICAgICAgICAgICAgICB8 DQo+ICs7IFJYUTAuMCAtLS0+fCAgICAgICAgICAgICAgfC0tLS0tLS0+fC0tKyAgICAgICAgICAg ICAgICAgICB8DQo+ICs7ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgS05JMSAgfCAgfCBi cjAgICAgICAgICAgICAgICB8DQo+ICs7IFRYUTAuMCA8LS0tfCAgICAgICAgICAgICAgfDwtLS0t LS0tfDwtKyAgICAgICAgICAgICAgICAgICB8DQo+ICs7ICAgICAgICAgICAgfCBQYXNzLXRocm91 Z2ggfCAgICAgICAgfCAgICAgTGludXggS2VybmVsICAgICB8DQo+ICs7ICAgICAgICAgICAgfCAg ICAgKFAxKSAgICAgfCAgICAgICAgfCAgICAgTmV0d29yayBTdGFjayAgICB8DQo+ICs7ICAgICAg ICAgICAgfCAgICAgICAgICAgICAgfCAgS05JMCAgfCAgICAgICAgICAgICAgICAgICAgICB8DQo+ ICs7IFJYUTAuMCAtLS0+fCAgICAgICAgICAgICAgfC0tLS0tLS0+fC0tKyAgICAgICAgICAgICAg ICAgICB8DQo+ICs7ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgS05JMSAgfCAgfCBicjAg ICAgICAgICAgICAgICB8DQo+ICs7IFRYUTAuMCA8LS0tfCAgICAgICAgICAgICAgfDwtLS0tLS0t fDwtKyAgICAgICAgICAgICAgICAgICB8DQo+ICs7ICAgICAgICAgICAgfF9fX19fX19fX19fX19f fCAgICAgICAgfF9fX19fX19fX19fX19fX19fX19fX198DQo+ICs7DQoNClRoZXJlIGFyZSBzb21l IGVycm9ycyBpbiB0aGUgZGlhZ3JhbSBJIHByZXZpb3VzbHkgc2VudCB5b3UsIGhlcmUgaXMgdGhl IGNvcnJlY3RlZCB2ZXJzaW9uICh3aGljaCBtYXRjaGVzIHRoZSBQSVBFTElORTEgY29uZmlndXJh dGlvbik6DQoNCjsgICAgICAgICAgICAgX19fX19fX19fX19fX18gICAgICAgICAgX19fX19fX19f X19fX19fX19fX19fXw0KOyAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgIEtOSTAgIHwgICAg ICAgICAgICAgICAgICAgICAgfA0KOyBSWFEwLjAgLS0tPnwgICAgICAgICAgICAgIHwtLS0tLS0t PnwtLSsgICAgICAgICAgICAgICAgICAgfA0KOyAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwg IEtOSTEgIHwgIHwgYnIwICAgICAgICAgICAgICAgfA0KOyBUWFExLjAgPC0tLXwgICAgICAgICAg ICAgIHw8LS0tLS0tLXw8LSsgICAgICAgICAgICAgICAgICAgfA0KOyAgICAgICAgICAgIHwgUGFz cy10aHJvdWdoIHwgICAgICAgIHwgICAgIExpbnV4IEtlcm5lbCAgICAgfA0KOyAgICAgICAgICAg IHwgICAgIChQMSkgICAgIHwgICAgICAgIHwgICAgIE5ldHdvcmsgU3RhY2sgICAgfA0KOyAgICAg ICAgICAgIHwgICAgICAgICAgICAgIHwgIEtOSTEgIHwgICAgICAgICAgICAgICAgICAgICAgfA0K OyBSWFExLjAgLS0tPnwgICAgICAgICAgICAgIHwtLS0tLS0tPnwtLSsgICAgICAgICAgICAgICAg ICAgfA0KOyAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgIEtOSTAgIHwgIHwgYnIwICAgICAg ICAgICAgICAgfA0KOyBUWFEwLjAgPC0tLXwgICAgICAgICAgICAgIHw8LS0tLS0tLXw8LSsgICAg ICAgICAgICAgICAgICAgfA0KOyAgICAgICAgICAgIHxfX19fX19fX19fX19fX3wgICAgICAgIHxf X19fX19fX19fX19fX19fX19fX19ffA0KDQo+ICs7IEluc2VydCBMaW51eCBrZXJuZWwgS05JIG1v ZHVsZToNCj4gKzsgICAgW0xpbnV4XSQgaW5zbW9kIHJ0ZV9rbmkua28NCj4gKzsNCj4gKzsgQ29u ZmlndXJlIExpbnV4IGtlcm5lbCBicmlkZ2UgYmV0d2VlbiBLTkkwIGFuZCBLTkkxIGludGVyZmFj ZXM6DQo+ICs7ICAgIFtMaW51eF0kIGlmY29uZmlnIEtOSTAgdXANCj4gKzsgICAgW0xpbnV4XSQg aWZjb25maWcgS05JMSB1cA0KPiArOyAgICBbTGludXhdJCBicmN0bCBhZGRiciAiYnIwIg0KPiAr OyAgICBbTGludXhdJCBicmN0bCBhZGRpZiBicjAgS05JMA0KPiArOyAgICBbTGludXhdJCBicmN0 bCBhZGRpZiBicjAgS05JMQ0KPiArOyAgICBbTGludXhdJCBpZmNvbmZpZyBicjAgdXANCj4gKw0K PiArW0VBTF0NCj4gK2xvZ19sZXZlbCA9IDANCj4gKw0KPiArW1BJUEVMSU5FMF0NCj4gK3R5cGUg PSBNQVNURVINCj4gK2NvcmUgPSAwDQo+ICsNCj4gK1tQSVBFTElORTFdDQo+ICt0eXBlID0gUEFT Uy1USFJPVUdIDQo+ICtjb3JlID0gMQ0KPiArcGt0cV9pbiA9IFJYUTAuMCBLTkkxIFJYUTEuMCBL TkkwDQo+ICtwa3RxX291dCA9IEtOSTAgVFhRMS4wIEtOSTEgVFhRMC4wDQo+IGRpZmYgLS1naXQg YS9leGFtcGxlcy9pcF9waXBlbGluZS9jb25maWdfY2hlY2suYw0KPiBiL2V4YW1wbGVzL2lwX3Bp cGVsaW5lL2NvbmZpZ19jaGVjay5jDQo+IGluZGV4IDE4ZjU3YmUuLjdlOTAzNDIgMTAwNjQ0DQo+ IC0tLSBhL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2NvbmZpZ19jaGVjay5jDQo+ICsrKyBiL2V4YW1w bGVzL2lwX3BpcGVsaW5lL2NvbmZpZ19jaGVjay5jDQo+IEBAIC0xLDcgKzEsNyBAQA0KPiAgLyot DQo+ICAgKiAgIEJTRCBMSUNFTlNFDQo+ICAgKg0KPiAtICogICBDb3B5cmlnaHQoYykgMjAxMC0y MDE1IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICogICBDb3B5 cmlnaHQoYykgMjAxMC0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KPiAgICogICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAgICoNCj4gICAqICAgUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 DQo+IEBAIC00NDQsNiArNDQ0LDI5IEBAIGNoZWNrX3BpcGVsaW5lcyhzdHJ1Y3QgYXBwX3BhcmFt cyAqYXBwKQ0KPiAgICAgICB9DQo+ICB9DQo+DQo+ICtzdGF0aWMgdm9pZA0KPiArY2hlY2tfa25p cyhzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwKSB7DQo+ICsgICAgIHVpbnQzMl90IGk7DQo+ICsNCj4g KyAgICAgZm9yIChpID0gMDsgaSA8IGFwcC0+bl9wa3RxX2tuaTsgaSsrKSB7DQo+ICsgICAgICAg ICAgICAgc3RydWN0IGFwcF9wa3RxX2tuaV9wYXJhbXMgKnAgPSAmYXBwLT5rbmlfcGFyYW1zW2ld Ow0KPiArICAgICAgICAgICAgIHVpbnQzMl90IG5fcmVhZGVycyA9IGFwcF9rbmlfZ2V0X3JlYWRl cnMoYXBwLCBwKTsNCj4gKyAgICAgICAgICAgICB1aW50MzJfdCBuX3dyaXRlcnMgPSBhcHBfa25p X2dldF93cml0ZXJzKGFwcCwgcCk7DQo+ICsNCj4gKyAgICAgICAgICAgICBBUFBfQ0hFQ0soKG5f cmVhZGVycyAhPSAwKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICIlcyBoYXMgbm8gcmVhZGVy XG4iLCBwLT5uYW1lKTsNCj4gKw0KPiArICAgICAgICAgICAgIEFQUF9DSEVDSygobl9yZWFkZXJz ID09IDEpLA0KPiArICAgICAgICAgICAgICAgICAgICAgIiVzIGhhcyBtb3JlIHRoYW4gb25lIHJl YWRlclxuIiwgcC0+bmFtZSk7DQo+ICsNCj4gKyAgICAgICAgICAgICBBUFBfQ0hFQ0soKG5fd3Jp dGVycyAhPSAwKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICIlcyBoYXMgbm8gd3JpdGVyXG4i LCBwLT5uYW1lKTsNCj4gKw0KPiArICAgICAgICAgICAgIEFQUF9DSEVDSygobl93cml0ZXJzID09 IDEpLA0KPiArICAgICAgICAgICAgICAgICAgICAgIiVzIGhhcyBtb3JlIHRoYW4gb25lIHdyaXRl clxuIiwgcC0+bmFtZSk7DQo+ICsgICAgIH0NCj4gK30NCg0KSSBzdWdnZXN0IHlvdSBwbGFjZSB0 aGlzIGZ1bmN0aW9uIGp1c3QgYWZ0ZXIgdGhlIGNoZWNrX3RtcygpIGZ1bmN0aW9uLCBpbiBvcmRl ciB0byBrZWVwIGNvbnNpc3RlbmN5IHdpdGggb3VyIGNvbnZlbnRpb25zLg0KDQo+ICsNCj4gIGlu dA0KPiAgYXBwX2NvbmZpZ19jaGVjayhzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwKQ0KPiAgew0KPiBA QCAtNDUzLDYgKzQ3Niw3IEBAIGFwcF9jb25maWdfY2hlY2soc3RydWN0IGFwcF9wYXJhbXMgKmFw cCkNCj4gICAgICAgY2hlY2tfdHhxcyhhcHApOw0KPiAgICAgICBjaGVja19zd3FzKGFwcCk7DQo+ ICAgICAgIGNoZWNrX3RtcyhhcHApOw0KPiArICAgICBjaGVja19rbmlzKGFwcCk7DQo+ICAgICAg IGNoZWNrX3NvdXJjZXMoYXBwKTsNCj4gICAgICAgY2hlY2tfc2lua3MoYXBwKTsNCj4gICAgICAg Y2hlY2tfbXNncXMoYXBwKTsNCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2Nv bmZpZ19wYXJzZS5jDQo+IGIvZXhhbXBsZXMvaXBfcGlwZWxpbmUvY29uZmlnX3BhcnNlLmMNCj4g aW5kZXggNTA0MDE4ZS4uYzU1YmUzMSAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvaXBfcGlwZWxp bmUvY29uZmlnX3BhcnNlLmMNCj4gKysrIGIvZXhhbXBsZXMvaXBfcGlwZWxpbmUvY29uZmlnX3Bh cnNlLmMNCj4gQEAgLTE4OSw2ICsxODksMTggQEAgc3RydWN0IGFwcF9wa3RxX3RtX3BhcmFtcyBk ZWZhdWx0X3RtX3BhcmFtcyA9IHsNCj4gICAgICAgLmJ1cnN0X3dyaXRlID0gMzIsDQo+ICB9Ow0K Pg0KPiArc3RydWN0IGFwcF9wa3RxX2tuaV9wYXJhbXMgZGVmYXVsdF9rbmlfcGFyYW1zID0gew0K PiArICAgICAucGFyc2VkID0gMCwNCj4gKyAgICAgLnNvY2tldF9pZCA9IDAsDQo+ICsgICAgIC5j b3JlX2lkID0gMCwNCj4gKyAgICAgLmh5cGVyX3RoX2lkID0gMCwNCj4gKyAgICAgLmZvcmNlX2Jp bmQgPSAwLA0KPiArDQo+ICsgICAgIC5tZW1wb29sX2lkID0gMCwNCj4gKyAgICAgLmJ1cnN0X3Jl YWQgPSAzMiwNCj4gKyAgICAgLmJ1cnN0X3dyaXRlID0gMzIsDQo+ICt9Ow0KPiArDQo+ICBzdHJ1 Y3QgYXBwX3BrdHFfc291cmNlX3BhcmFtcyBkZWZhdWx0X3NvdXJjZV9wYXJhbXMgPSB7DQo+ICAg ICAgIC5wYXJzZWQgPSAwLA0KPiAgICAgICAubWVtcG9vbF9pZCA9IDAsDQo+IEBAIC0zMDAsNiAr MzEyLDE4IEBAIGFwcF9wcmludF91c2FnZShjaGFyICpwcmduYW1lKQ0KPiAgICAgICBsaW5rX3Bh cmFtX3BvczsNCj4gICAgICAgXA0KPiAgfSkNCj4NCj4gKyNkZWZpbmUgQVBQX1BBUkFNX0FERF9M SU5LX0ZPUl9LTkkoYXBwLCBrbmlfbmFtZSkNCj4gICAgICAgXA0KPiArKHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICAgICBjaGFyIGxpbmtfbmFtZVtBUFBfUEFSQU1fTkFNRV9TSVpFXTsNCj4gICAgICAgXA0K PiArICAgICBzc2l6ZV90IGxpbmtfcGFyYW1fcG9zOw0KPiAgICAgICBcDQo+ICsgICAgIHVpbnQz Ml90IGxpbmtfaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgIHNzY2FuZigoa25pX25hbWUpLCAiS05JJSIg U0NOdTMyLCAmbGlua19pZCk7ICAgICAgICAgICAgXA0KPiArICAgICBzcHJpbnRmKGxpbmtfbmFt ZSwgIkxJTkslIiBQUkl1MzIsIGxpbmtfaWQpOyAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg ICBsaW5rX3BhcmFtX3BvcyA9IEFQUF9QQVJBTV9BREQoKGFwcCktPmxpbmtfcGFyYW1zLA0KPiBs aW5rX25hbWUpOyAgIFwNCj4gKyAgICAgbGlua19wYXJhbV9wb3M7DQo+ICAgICAgIFwNCj4gK30p DQo+ICsNCj4gICNkZWZpbmUgUEFSU0VfQ0hFQ0tfRFVQTElDQVRFX1NFQ1RJT04ob2JqKQ0KPiAg ICAgICBcDQo+ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAgIEFQUF9DSEVDSygoKG9iaiktPnBhcnNl ZCA9PSAwKSwNCj4gICAgICAgXA0KPiBAQCAtODI2LDYgKzg1MCwxMCBAQCBwYXJzZV9waXBlbGlu ZV9wa3RxX2luKHN0cnVjdCBhcHBfcGFyYW1zICphcHAsDQo+ICAgICAgICAgICAgICAgICAgICAg ICB0eXBlID0gQVBQX1BLVFFfSU5fVE07DQo+ICAgICAgICAgICAgICAgICAgICAgICBpZCA9IEFQ UF9QQVJBTV9BREQoYXBwLT50bV9wYXJhbXMsIG5hbWUpOw0KPiAgICAgICAgICAgICAgICAgICAg ICAgQVBQX1BBUkFNX0FERF9MSU5LX0ZPUl9UTShhcHAsIG5hbWUpOw0KPiArICAgICAgICAgICAg IH0gZWxzZSBpZiAodmFsaWRhdGVfbmFtZShuYW1lLCAiS05JIiwgMSkgPT0gMCkgew0KPiArICAg ICAgICAgICAgICAgICAgICAgdHlwZSA9IEFQUF9QS1RRX0lOX0tOSTsNCj4gKyAgICAgICAgICAg ICAgICAgICAgIGlkID0gQVBQX1BBUkFNX0FERChhcHAtPmtuaV9wYXJhbXMsIG5hbWUpOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgQVBQX1BBUkFNX0FERF9MSU5LX0ZPUl9LTkkoYXBwLCBuYW1l KTsNCj4gICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbGlkYXRlX25hbWUobmFtZSwgIlNPVVJD RSIsIDEpID09IDApIHsNCj4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBBUFBfUEtUUV9J Tl9TT1VSQ0U7DQo+ICAgICAgICAgICAgICAgICAgICAgICBpZCA9IEFQUF9QQVJBTV9BREQoYXBw LT5zb3VyY2VfcGFyYW1zLCBuYW1lKTsNCj4gQEAgLTg3MSw2ICs4OTksMTAgQEAgcGFyc2VfcGlw ZWxpbmVfcGt0cV9vdXQoc3RydWN0IGFwcF9wYXJhbXMgKmFwcCwNCj4gICAgICAgICAgICAgICAg ICAgICAgIHR5cGUgPSBBUFBfUEtUUV9PVVRfVE07DQo+ICAgICAgICAgICAgICAgICAgICAgICBp ZCA9IEFQUF9QQVJBTV9BREQoYXBwLT50bV9wYXJhbXMsIG5hbWUpOw0KPiAgICAgICAgICAgICAg ICAgICAgICAgQVBQX1BBUkFNX0FERF9MSU5LX0ZPUl9UTShhcHAsIG5hbWUpOw0KPiArICAgICAg ICAgICAgIH0gZWxzZSBpZiAodmFsaWRhdGVfbmFtZShuYW1lLCAiS05JIiwgMSkgPT0gMCkgew0K PiArICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEFQUF9QS1RRX09VVF9LTkk7DQo+ICsgICAg ICAgICAgICAgICAgICAgICBpZCA9IEFQUF9QQVJBTV9BREQoYXBwLT5rbmlfcGFyYW1zLCBuYW1l KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIEFQUF9QQVJBTV9BRERfTElOS19GT1JfS05JKGFw cCwgbmFtZSk7DQo+ICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0ZV9uYW1lKG5hbWUs ICJTSU5LIiwgMSkgPT0gMCkgew0KPiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEFQUF9Q S1RRX09VVF9TSU5LOw0KPiAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBBUFBfUEFSQU1fQURE KGFwcC0+c2lua19wYXJhbXMsIG5hbWUpOw0KPiBAQCAtMTgxNiw3ICsxODQ4LDcgQEAgcGFyc2Vf dG0oc3RydWN0IGFwcF9wYXJhbXMgKmFwcCwNCj4gICAgICAgcGFyYW0gPSAmYXBwLT50bV9wYXJh bXNbcGFyYW1faWR4XTsNCj4gICAgICAgUEFSU0VfQ0hFQ0tfRFVQTElDQVRFX1NFQ1RJT04ocGFy YW0pOw0KPg0KPiAtICAgICBBUFBfUEFSQU1fQUREX0xJTktfRk9SX1RYUShhcHAsIHNlY3Rpb25f bmFtZSk7DQo+ICsgICAgIEFQUF9QQVJBTV9BRERfTElOS19GT1JfVE0oYXBwLCBzZWN0aW9uX25h bWUpOw0KPg0KPiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9lbnRyaWVzOyBpKyspIHsNCj4gICAg ICAgICAgICAgICBzdHJ1Y3QgcnRlX2NmZ2ZpbGVfZW50cnkgKmVudCA9ICZlbnRyaWVzW2ldOw0K PiBAQCAtMTg1Myw2ICsxODg1LDg1IEBAIHBhcnNlX3RtKHN0cnVjdCBhcHBfcGFyYW1zICphcHAs DQo+ICB9DQo+DQo+ICBzdGF0aWMgdm9pZA0KPiArcGFyc2Vfa25pKHN0cnVjdCBhcHBfcGFyYW1z ICphcHAsDQo+ICsgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZWN0aW9uX25hbWUsDQo+ICsg ICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2NmZ2ZpbGUgKmNmZykNCj4gK3sNCj4gKyAgICAgc3Ry dWN0IGFwcF9wa3RxX2tuaV9wYXJhbXMgKnBhcmFtOw0KPiArICAgICBzdHJ1Y3QgcnRlX2NmZ2Zp bGVfZW50cnkgKmVudHJpZXM7DQo+ICsgICAgIGludCBuX2VudHJpZXMsIGk7DQo+ICsgICAgIHNz aXplX3QgcGFyYW1faWR4Ow0KPiArDQo+ICsgICAgIG5fZW50cmllcyA9IHJ0ZV9jZmdmaWxlX3Nl Y3Rpb25fbnVtX2VudHJpZXMoY2ZnLCBzZWN0aW9uX25hbWUpOw0KPiArICAgICBQQVJTRV9FUlJP Ul9TRUNUSU9OX05PX0VOVFJJRVMoKG5fZW50cmllcyA+IDApLA0KPiBzZWN0aW9uX25hbWUpOw0K PiArDQo+ICsgICAgIGVudHJpZXMgPSBtYWxsb2Mobl9lbnRyaWVzICogc2l6ZW9mKHN0cnVjdCBy dGVfY2ZnZmlsZV9lbnRyeSkpOw0KPiArICAgICBQQVJTRV9FUlJPUl9NQUxMT0MoZW50cmllcyAh PSBOVUxMKTsNCj4gKw0KPiArICAgICBydGVfY2ZnZmlsZV9zZWN0aW9uX2VudHJpZXMoY2ZnLCBz ZWN0aW9uX25hbWUsIGVudHJpZXMsIG5fZW50cmllcyk7DQo+ICsNCj4gKyAgICAgcGFyYW1faWR4 ID0gQVBQX1BBUkFNX0FERChhcHAtPmtuaV9wYXJhbXMsIHNlY3Rpb25fbmFtZSk7DQo+ICsgICAg IHBhcmFtID0gJmFwcC0+a25pX3BhcmFtc1twYXJhbV9pZHhdOw0KPiArICAgICBQQVJTRV9DSEVD S19EVVBMSUNBVEVfU0VDVElPTihwYXJhbSk7DQo+ICsNCj4gKyAgICAgQVBQX1BBUkFNX0FERF9M SU5LX0ZPUl9LTkkoYXBwLCBzZWN0aW9uX25hbWUpOw0KPiArDQo+ICsNCj4gKyAgICAgZm9yIChp ID0gMDsgaSA8IG5fZW50cmllczsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9j ZmdmaWxlX2VudHJ5ICplbnQgPSAmZW50cmllc1tpXTsNCj4gKw0KPiArICAgICAgICAgICAgIGlm IChzdHJjbXAoZW50LT5uYW1lLCAiY29yZSIpID09IDApIHsNCj4gKyAgICAgICAgICAgICAgICAg ICAgIGludCBzdGF0dXMgPSBwYXJzZV9waXBlbGluZV9jb3JlKA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZwYXJhbS0+c29ja2V0X2lkLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJhbS0+Y29yZV9pZCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyYW0tPmh5cGVyX3RoX2lkLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudC0+dmFsdWUpOw0KPiArDQo+ICsgICAg ICAgICAgICAgICAgICAgICBQQVJTRV9FUlJPUigoc3RhdHVzID09IDApLCBzZWN0aW9uX25hbWUs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnQtPm5h bWUpOw0KPiArICAgICAgICAgICAgICAgICAgICAgcGFyYW0tPmZvcmNlX2JpbmQgPSAxOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ICsgICAgICAgICAgICAgfQ0KPiArDQo+ ICsgICAgICAgICAgICAgaWYgKHN0cmNtcChlbnQtPm5hbWUsICJtZW1wb29sIikgPT0gMCkgew0K PiArICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cyA9IHZhbGlkYXRlX25hbWUoZW50LT52 YWx1ZSwNCj4gKw0KPiAiTUVNUE9PTCIsIDEpOw0KPiArICAgICAgICAgICAgICAgICAgICAgc3Np emVfdCBpZHg7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgIFBBUlNFX0VSUk9SKChzdGF0 dXMgPT0gMCksIHNlY3Rpb25fbmFtZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudC0+bmFtZSk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAg IGlkeCA9IEFQUF9QQVJBTV9BREQoYXBwLT5tZW1wb29sX3BhcmFtcywNCj4gZW50LT52YWx1ZSk7 DQo+ICsgICAgICAgICAgICAgICAgICAgICBwYXJhbS0+bWVtcG9vbF9pZCA9IGlkeDsNCj4gKyAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgICAgICAgIH0NCj4gKw0KPiAr ICAgICAgICAgICAgIGlmIChzdHJjbXAoZW50LT5uYW1lLCAiYnVyc3RfcmVhZCIpID09IDApIHsN Cj4gKyAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMgPSBwYXJzZXJfcmVhZF91aW50MzIo JnBhcmFtLQ0KPiA+YnVyc3RfcmVhZCwNCj4gKw0KPiAgICAgICAgICAgICAgIGVudC0+dmFsdWUp Ow0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICBQQVJTRV9FUlJPUigoc3RhdHVzID09IDAp LCBzZWN0aW9uX25hbWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnQtPm5hbWUpOw0KPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ ICsgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgaWYgKHN0cmNtcChlbnQtPm5h bWUsICJidXJzdF93cml0ZSIpID09IDApIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGludCBz dGF0dXMgPSBwYXJzZXJfcmVhZF91aW50MzIoJnBhcmFtLQ0KPiA+YnVyc3Rfd3JpdGUsDQo+ICsN Cj4gICAgICAgICAgICAgICBlbnQtPnZhbHVlKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAg ICAgUEFSU0VfRVJST1IoKHN0YXR1cyA9PSAwKSwgc2VjdGlvbl9uYW1lLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50LT5uYW1lKTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgICAgICAgIH0NCj4gKw0KPiArICAg ICAgICAgICAgIC8qIHVucmVjb2duaXplZCAqLw0KPiArICAgICAgICAgICAgIFBBUlNFX0VSUk9S X0lOVkFMSUQoMCwgc2VjdGlvbl9uYW1lLCBlbnQtPm5hbWUpOw0KPiArICAgICB9DQo+ICsNCg0K SGVyZSBpcyBvbmUgYnVnIGZvciB5b3UsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB5b3UgYWRkIHRo ZSBmb2xsb3dpbmcgbGluZSBoZXJlOg0KICAgICAgICBwYXJhbS0+cGFyc2VkID0gMTsNCg0KPiAr ICAgICBmcmVlKGVudHJpZXMpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiAgcGFyc2Vf c291cmNlKHN0cnVjdCBhcHBfcGFyYW1zICphcHAsDQo+ICAgICAgIGNvbnN0IGNoYXIgKnNlY3Rp b25fbmFtZSwNCj4gICAgICAgc3RydWN0IHJ0ZV9jZmdmaWxlICpjZmcpDQo+IEBAIC0yMTQ3LDYg KzIyNTgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19zZWN0aW9uIGNmZ19maWxlX3Nj aGVtZVtdDQo+ID0gew0KPiAgICAgICB7IlRYUSIsIDIsIHBhcnNlX3R4cX0sDQo+ICAgICAgIHsi U1dRIiwgMSwgcGFyc2Vfc3dxfSwNCj4gICAgICAgeyJUTSIsIDEsIHBhcnNlX3RtfSwNCj4gKyAg ICAgeyJLTkkiLCAxLCBwYXJzZV9rbml9LA0KPiAgICAgICB7IlNPVVJDRSIsIDEsIHBhcnNlX3Nv dXJjZX0sDQo+ICAgICAgIHsiU0lOSyIsIDEsIHBhcnNlX3Npbmt9LA0KPiAgICAgICB7Ik1TR1Et UkVRLVBJUEVMSU5FIiwgMSwgcGFyc2VfbXNncV9yZXFfcGlwZWxpbmV9LA0KPiBAQCAtMjI4NSw2 ICsyMzk3LDcgQEAgYXBwX2NvbmZpZ19wYXJzZShzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwLCBjb25z dA0KPiBjaGFyICpmaWxlX25hbWUpDQo+ICAgICAgIEFQUF9QQVJBTV9DT1VOVChhcHAtPmh3cV9v dXRfcGFyYW1zLCBhcHAtDQo+ID5uX3BrdHFfaHdxX291dCk7DQo+ICAgICAgIEFQUF9QQVJBTV9D T1VOVChhcHAtPnN3cV9wYXJhbXMsIGFwcC0+bl9wa3RxX3N3cSk7DQo+ICAgICAgIEFQUF9QQVJB TV9DT1VOVChhcHAtPnRtX3BhcmFtcywgYXBwLT5uX3BrdHFfdG0pOw0KPiArICAgICBBUFBfUEFS QU1fQ09VTlQoYXBwLT5rbmlfcGFyYW1zLCBhcHAtPm5fcGt0cV9rbmkpOw0KPiAgICAgICBBUFBf UEFSQU1fQ09VTlQoYXBwLT5zb3VyY2VfcGFyYW1zLCBhcHAtPm5fcGt0cV9zb3VyY2UpOw0KPiAg ICAgICBBUFBfUEFSQU1fQ09VTlQoYXBwLT5zaW5rX3BhcmFtcywgYXBwLT5uX3BrdHFfc2luayk7 DQo+ICAgICAgIEFQUF9QQVJBTV9DT1VOVChhcHAtPm1zZ3FfcGFyYW1zLCBhcHAtPm5fbXNncSk7 DQo+IEBAIC0yNjQ3LDYgKzI3NjAsNDUgQEAgc2F2ZV90bV9wYXJhbXMoc3RydWN0IGFwcF9wYXJh bXMgKmFwcCwgRklMRQ0KPiAqZikNCj4gIH0NCj4NCj4gIHN0YXRpYyB2b2lkDQo+ICtzYXZlX2tu aV9wYXJhbXMoc3RydWN0IGFwcF9wYXJhbXMgKmFwcCwgRklMRSAqZikNCj4gK3sNCj4gKyAgICAg c3RydWN0IGFwcF9wa3RxX2tuaV9wYXJhbXMgKnA7DQo+ICsgICAgIHNpemVfdCBpLCBjb3VudDsN Cj4gKw0KPiArICAgICBjb3VudCA9IFJURV9ESU0oYXBwLT5rbmlfcGFyYW1zKTsNCj4gKyAgICAg Zm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsNCj4gKyAgICAgICAgICAgICBwID0gJmFwcC0+ a25pX3BhcmFtc1tpXTsNCj4gKyAgICAgICAgICAgICBpZiAoIUFQUF9QQVJBTV9WQUxJRChwKSkN Cj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArDQo+ICsgICAgICAgICAgICAg Lyogc2VjdGlvbiBuYW1lICovDQo+ICsgICAgICAgICAgICAgZnByaW50ZihmLCAiWyVzXVxuIiwg cC0+bmFtZSk7DQo+ICsNCj4gKyAgICAgICAgICAgICAvKiBjb3JlICovDQo+ICsgICAgICAgICAg ICAgaWYgKHAtPmZvcmNlX2JpbmQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGZwcmludGYo ZiwgIjsgZm9yY2VfYmluZCA9IDFcbiIpOw0KPiArICAgICAgICAgICAgICAgICAgICAgZnByaW50 ZihmLCAiY29yZSA9IHMlIiBQUkl1MzIgImMlIiBQUkl1MzIgIiVzXG4iLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnNvY2tldF9pZCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5jb3JlX2lkLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwLT5oeXBlcl90aF9pZCkgPyAiaCIgOiAiIik7DQo+ICsg ICAgICAgICAgICAgfSBlbHNlDQo+ICsgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICI7 IGZvcmNlX2JpbmQgPSAwXG4iKTsNCj4gKw0KPiArICAgICAgICAgICAgIC8qIG1lbXBvb2wgKi8N Cj4gKyAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyA9ICVzXG4iLCAibWVtcG9vbCIsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC0+bWVtcG9vbF9wYXJhbXNbcC0NCj4gPm1l bXBvb2xfaWRdLm5hbWUpOw0KPiArDQo+ICsgICAgICAgICAgICAgLyogYnVyc3RfcmVhZCAqLw0K PiArICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzID0gJSIgUFJJdTMyICJcbiIsICJidXJzdF9y ZWFkIiwgcC0NCj4gPmJ1cnN0X3JlYWQpOw0KPiArDQo+ICsgICAgICAgICAgICAgLyogYnVyc3Rf d3JpdGUgKi8NCj4gKyAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyA9ICUiIFBSSXUzMiAiXG4i LCAiYnVyc3Rfd3JpdGUiLCBwLQ0KPiA+YnVyc3Rfd3JpdGUpOw0KPiArDQo+ICsgICAgICAgICAg ICAgZnB1dGMoJ1xuJywgZik7DQo+ICsgICAgIH0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQN Cj4gIHNhdmVfc291cmNlX3BhcmFtcyhzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwLCBGSUxFICpmKQ0K PiAgew0KPiAgICAgICBzdHJ1Y3QgYXBwX3BrdHFfc291cmNlX3BhcmFtcyAqcDsNCj4gQEAgLTI3 NTMsNiArMjkwNSw5IEBAIHNhdmVfcGlwZWxpbmVfcGFyYW1zKHN0cnVjdCBhcHBfcGFyYW1zICph cHAsDQo+IEZJTEUgKmYpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQVBQ X1BLVFFfSU5fVE06DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFt ZSA9IGFwcC0+dG1fcGFyYW1zW3BwLQ0KPiA+aWRdLm5hbWU7DQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNhc2UgQVBQX1BLVFFfSU5fS05JOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWUgPSBhcHAtPmtuaV9wYXJhbXNbcHAtDQo+ID5pZF0ubmFtZTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2FzZSBBUFBfUEtUUV9JTl9TT1VSQ0U6DQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGFwcC0+c291cmNlX3BhcmFtc1twcC0N Cj4gPmlkXS5uYW1lOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPiBAQCAtMjc4Nyw2ICsyOTQyLDkgQEAgc2F2ZV9waXBlbGluZV9wYXJhbXMoc3RydWN0 IGFwcF9wYXJhbXMgKmFwcCwNCj4gRklMRSAqZikNCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2FzZSBBUFBfUEtUUV9PVVRfVE06DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmFtZSA9IGFwcC0+dG1fcGFyYW1zW3BwLQ0KPiA+aWRdLm5hbWU7DQo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhc2UgQVBQX1BLVFFfT1VUX0tOSToNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gYXBwLT5rbmlfcGFyYW1zW3BwLQ0KPiA+ aWRdLm5hbWU7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQVBQX1BLVFFfT1VUX1NJTks6 DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGFwcC0+c2lu a19wYXJhbXNbcHAtDQo+ID5pZF0ubmFtZTsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCj4gQEAgLTI4NzIsNiArMzAzMCw3IEBAIGFwcF9jb25maWdfc2F2 ZShzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwLCBjb25zdA0KPiBjaGFyICpmaWxlX25hbWUpDQo+ICAg ICAgIHNhdmVfdHhxX3BhcmFtcyhhcHAsIGZpbGUpOw0KPiAgICAgICBzYXZlX3N3cV9wYXJhbXMo YXBwLCBmaWxlKTsNCj4gICAgICAgc2F2ZV90bV9wYXJhbXMoYXBwLCBmaWxlKTsNCj4gKyAgICAg c2F2ZV9rbmlfcGFyYW1zKGFwcCwgZmlsZSk7DQo+ICAgICAgIHNhdmVfc291cmNlX3BhcmFtcyhh cHAsIGZpbGUpOw0KPiAgICAgICBzYXZlX3NpbmtfcGFyYW1zKGFwcCwgZmlsZSk7DQo+ICAgICAg IHNhdmVfbXNncV9wYXJhbXMoYXBwLCBmaWxlKTsNCj4gQEAgLTI5MjEsNiArMzA4MCwxMSBAQCBh cHBfY29uZmlnX2luaXQoc3RydWN0IGFwcF9wYXJhbXMgKmFwcCkNCj4gICAgICAgICAgICAgICAg ICAgICAgICZkZWZhdWx0X3RtX3BhcmFtcywNCj4gICAgICAgICAgICAgICAgICAgICAgIHNpemVv ZihkZWZhdWx0X3RtX3BhcmFtcykpOw0KPg0KPiArICAgICBmb3IgKGkgPSAwOyBpIDwgUlRFX0RJ TShhcHAtPmtuaV9wYXJhbXMpOyBpKyspDQo+ICsgICAgICAgICAgICAgbWVtY3B5KCZhcHAtPmtu aV9wYXJhbXNbaV0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdF9rbmlfcGFy YW1zLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRlZmF1bHRfa25pX3BhcmFt cykpOw0KPiArDQo+ICAgICAgIGZvciAoaSA9IDA7IGkgPCBSVEVfRElNKGFwcC0+c291cmNlX3Bh cmFtcyk7IGkrKykNCj4gICAgICAgICAgICAgICBtZW1jcHkoJmFwcC0+c291cmNlX3BhcmFtc1tp XSwNCj4gICAgICAgICAgICAgICAgICAgICAgICZkZWZhdWx0X3NvdXJjZV9wYXJhbXMsDQo+IGRp ZmYgLS1naXQgYS9leGFtcGxlcy9pcF9waXBlbGluZS9pbml0LmMgYi9leGFtcGxlcy9pcF9waXBl bGluZS9pbml0LmMNCg0KSW4gb3JkZXIgdG8ga2VlcCB1cCB3aXRoIG91ciBleGlzdGluZyBjb2Rl IGNvbnZlbnRpb25zLCBwbGVhc2UgbW92ZSB0aGUgS05JIGNvZGUgKGZ1bmN0aW9ucyBrbmlfY2hh bmdlX210dSgpLCBrbmlfY29uZmlnX25ldHdvcmtfaW50ZXJmYWNlKCksIGFwcF9pbml0X2tuaSgp KSBqdXN0IGFmdGVyIGZ1bmN0aW9uIGFwcF9pbml0X3RtKCkuDQoNCj4gaW5kZXggNzEyMGJhYi4u ZDUyMmRlNCAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvaXBfcGlwZWxpbmUvaW5pdC5jDQo+ICsr KyBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2luaXQuYw0KPiBAQCAtMTI4MSwxMCArMTI4MSwyMSBA QCB2b2lkIGFwcF9waXBlbGluZV9wYXJhbXNfZ2V0KHN0cnVjdA0KPiBhcHBfcGFyYW1zICphcHAs DQo+ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICAgICB9DQo+ICAg ICAgICAgICAgICAgY2FzZSBBUFBfUEtUUV9JTl9UTToNCj4gKyAgICAgICAgICAgICB7DQo+ICAg ICAgICAgICAgICAgICAgICAgICBvdXQtPnR5cGUgPSBQSVBFTElORV9QT1JUX0lOX1NDSEVEX1JF QURFUjsNCj4gICAgICAgICAgICAgICAgICAgICAgIG91dC0+cGFyYW1zLnNjaGVkLnNjaGVkID0g YXBwLT50bVtpbi0+aWRdOw0KPiAgICAgICAgICAgICAgICAgICAgICAgb3V0LT5idXJzdF9zaXpl ID0gYXBwLT50bV9wYXJhbXNbaW4tDQo+ID5pZF0uYnVyc3RfcmVhZDsNCj4gICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgIH0NCj4gKyNpZmRlZiBSVEVfTElCUlRF X0tOSQ0KPiArICAgICAgICAgICAgIGNhc2UgQVBQX1BLVFFfSU5fS05JOg0KPiArICAgICAgICAg ICAgIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIG91dC0+dHlwZSA9IFBJUEVMSU5FX1BPUlRf SU5fS05JX1JFQURFUjsNCj4gKyAgICAgICAgICAgICAgICAgICAgIG91dC0+cGFyYW1zLmtuaS5r bmkgPSBhcHAtPmtuaVtpbi0+aWRdOw0KPiArICAgICAgICAgICAgICAgICAgICAgb3V0LT5idXJz dF9zaXplID0gYXBwLT5rbmlfcGFyYW1zW2luLQ0KPiA+aWRdLmJ1cnN0X3JlYWQ7DQo+ICsgICAg ICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICB9DQo+ICsjZW5kaWYgLyog UlRFX0xJQlJURV9LTkkgKi8NCj4gICAgICAgICAgICAgICBjYXNlIEFQUF9QS1RRX0lOX1NPVVJD RToNCj4gICAgICAgICAgICAgICB7DQo+ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBt ZW1wb29sX2lkID0NCj4gQEAgLTE0MDksNyArMTQyMCw4IEBAIHZvaWQgYXBwX3BpcGVsaW5lX3Bh cmFtc19nZXQoc3RydWN0IGFwcF9wYXJhbXMNCj4gKmFwcCwNCj4gICAgICAgICAgICAgICAgICAg ICAgIH0NCj4gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICAgICAgICAgIH0N Cj4gLSAgICAgICAgICAgICBjYXNlIEFQUF9QS1RRX09VVF9UTTogew0KPiArICAgICAgICAgICAg IGNhc2UgQVBQX1BLVFFfT1VUX1RNOg0KPiArICAgICAgICAgICAgIHsNCj4gICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBydGVfcG9ydF9zY2hlZF93cml0ZXJfcGFyYW1zICpwYXJhbXMgPQ0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0LT5wYXJhbXMuc2NoZWQ7DQo+DQo+ IEBAIC0xNDE5LDYgKzE0MzEsMTYgQEAgdm9pZCBhcHBfcGlwZWxpbmVfcGFyYW1zX2dldChzdHJ1 Y3QNCj4gYXBwX3BhcmFtcyAqYXBwLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh cHAtPnRtX3BhcmFtc1tpbi0+aWRdLmJ1cnN0X3dyaXRlOw0KPiAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7DQo+ICAgICAgICAgICAgICAgfQ0KPiArI2lmZGVmIFJURV9MSUJSVEVfS05JDQo+ ICsgICAgICAgICAgICAgY2FzZSBBUFBfUEtUUV9PVVRfS05JOg0KPiArICAgICAgICAgICAgIHsN Cj4gKyAgICAgICAgICAgICAgICAgICAgIG91dC0+dHlwZSA9IFBJUEVMSU5FX1BPUlRfT1VUX0tO SV9XUklURVI7DQo+ICsgICAgICAgICAgICAgICAgICAgICBvdXQtPnBhcmFtcy5rbmkua25pID0g YXBwLT5rbmlbaW4tPmlkXTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIG91dC0+cGFyYW1zLmtu aS50eF9idXJzdF9zeiA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC0+a25p X3BhcmFtc1tpbi0+aWRdLmJ1cnN0X3dyaXRlOw0KPiArICAgICAgICAgICAgICAgICAgICAgYnJl YWs7DQo+ICsgICAgICAgICAgICAgfQ0KPiArI2VuZGlmIC8qIFJURV9MSUJSVEVfS05JICovDQo+ ICAgICAgICAgICAgICAgY2FzZSBBUFBfUEtUUV9PVVRfU0lOSzoNCj4gICAgICAgICAgICAgICB7 DQo+ICAgICAgICAgICAgICAgICAgICAgICBvdXQtPnR5cGUgPSBQSVBFTElORV9QT1JUX09VVF9T SU5LOw0KPiBAQCAtMTQ1Miw2ICsxNDc0LDExMyBAQCB2b2lkIGFwcF9waXBlbGluZV9wYXJhbXNf Z2V0KHN0cnVjdA0KPiBhcHBfcGFyYW1zICphcHAsDQo+ICAgICAgIH0NCj4gIH0NCj4NCj4gKyNp ZmRlZiBSVEVfTElCUlRFX0tOSQ0KPiArc3RhdGljIGludA0KPiAra25pX2NvbmZpZ19uZXR3b3Jr X2ludGVyZmFjZSh1aW50OF90IHBvcnRfaWQsIHVpbnQ4X3QgaWZfdXApIHsNCj4gKyAgICAgaW50 IHJldCA9IDA7DQo+ICsNCj4gKyAgICAgaWYgKHBvcnRfaWQgPj0gcnRlX2V0aF9kZXZfY291bnQo KSkNCj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArICAgICBpZiAoaWZf dXApIHsNCj4gKyAgICAgICAgICAgICBydGVfZXRoX2Rldl9zdG9wKHBvcnRfaWQpOw0KPiArICAg ICAgICAgICAgIHJldCA9IHJ0ZV9ldGhfZGV2X3N0YXJ0KHBvcnRfaWQpOw0KPiArICAgICB9IGVs c2UNCj4gKyAgICAgICAgICAgICBydGVfZXRoX2Rldl9zdG9wKHBvcnRfaWQpOw0KPiArDQo+ICsg ICAgIHJldHVybiByZXQ7DQo+ICt9DQo+ICsNCg0KSGVyZSBpcyBhIGNyaXRpY2FsIGlzc3VlIHRo YXQgd2UgZm91bmQgb3V0IHJlY2VudGx5IGR1cmluZyB0ZXN0aW5nIHRoZSBLTkkgY29kZTogdGhl IGNvcnJlY3QgUE1EIEFQSSBmdW5jdGlvbnMgdG8gdXNlIGhlcmUgYXJlIHJ0ZV9ldGhfZGV2X3Nl dF9saW5rX3VwL2Rvd24oKTsgc3RvcHBpbmcgYW5kIHJlc3RhcnRpbmcgdGhlIGRldmljZSB3aGls ZSB0aGUgZGV2aWNlIGlzIHJ1bm5pbmcgY2FuIGxlYWQgdG8gc2VnZmF1bHQgYW5kIG5vbmRldGVy bWluaXN0aWMgYmVoYXZpb3VyLg0KDQpIZXJlIGlzIG15IHByb3Bvc2FsOg0KDQpzdGF0aWMgaW50 DQprbmlfY29uZmlnX25ldHdvcmtfaW50ZXJmYWNlKHVpbnQ4X3QgcG9ydF9pZCwgdWludDhfdCBp Zl91cCkgew0KICAgICAgICBpbnQgcmV0ID0gMDsNCg0KICAgICAgICBpZiAocG9ydF9pZCA+PSBy dGVfZXRoX2Rldl9jb3VudCgpKQ0KICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KDQog ICAgICAgIHJldCA9IChpZl91cCk/DQogICAgICAgICAgICAgICAgcnRlX2V0aF9kZXZfc2V0X2xp bmtfdXAocG9ydF9pZCkgOg0KICAgICAgICAgICAgICAgIHJ0ZV9ldGhfZGV2X3NldF9saW5rX2Rv d24ocG9ydF9pZCk7DQoNCiAgICAgICAgcmV0dXJuIHJldDsNCn0NCg0KSSB0ZXN0ZWQgdGhpcyBm dW5jdGlvbiBzdWNjZXNzZnVsbHkuDQoNCj4gK3N0YXRpYyBpbnQNCj4gK2tuaV9jaGFuZ2VfbXR1 KHVpbnQ4X3QgcG9ydF9pZCwgdW5zaWduZWQgbmV3X210dSkgew0KPiArICAgICBpbnQgcmV0Ow0K PiArDQo+ICsgICAgIGlmIChwb3J0X2lkID49IHJ0ZV9ldGhfZGV2X2NvdW50KCkpDQo+ICsgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgaWYgKG5ld19tdHUgPiBFVEhF Ul9NQVhfTEVOKQ0KPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsgICAg IC8qIFN0b3Agc3BlY2lmaWMgcG9ydCAqLw0KPiArICAgICBydGVfZXRoX2Rldl9zdG9wKHBvcnRf aWQpOw0KPiArDQo+ICsgICAgIC8qIFNldCBuZXcgTVRVICovDQo+ICsgICAgIHJldCA9IHJ0ZV9l dGhfZGV2X3NldF9tdHUocG9ydF9pZCwgbmV3X210dSk7DQo+ICsgICAgIGlmIChyZXQgPCAwKQ0K PiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsNCj4gKyAgICAgLyogUmVzdGFydCBzcGVj aWZpYyBwb3J0ICovDQo+ICsgICAgIHJldCA9IHJ0ZV9ldGhfZGV2X3N0YXJ0KHBvcnRfaWQpOw0K PiArICAgICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArDQo+ ICsgICAgIHJldHVybiAwOw0KPiArfQ0KDQpTYW1lIGlzc3VlIGFib3V0IHVzaW5nIHRoZSBydGVf ZXRoX2Rldl9zdGFydC9zdG9wKCkgZnVuY3Rpb25zLiBCYXNlZCBvbiBmdW5jdGlvbiBwb3J0X210 dV9zZXQoKSBvZiB0aGUgYXBwL3Rlc3QtcG1kIGFwcGxpY2F0aW9uLCBpdCBsb29rcyBsaWtlIHJ0 ZV9ldGhfZGV2X3NldF9tdHUoKSBmdW5jdGlvbiBjb3VsZCBiZSBjYWxsZWQgZGlyZWN0bHkgd2l0 aCBubyBzdGFydC9zdG9wIG9yIHVwL2Rvd24gcHJlcGFyYXRpb25zLg0KDQpIZXJlIGlzIG15IHZl cnNpb24sIGFsdGhvdWdoIEkgZGlkIG5vdCBmdWxseSB0ZXN0IHRoaXMgb25lOg0KDQpzdGF0aWMg aW50DQprbmlfY2hhbmdlX210dSh1aW50OF90IHBvcnRfaWQsIHVuc2lnbmVkIG5ld19tdHUpIHsN CiAgICAgICAgaW50IHJldDsNCg0KICAgICAgICBpZiAocG9ydF9pZCA+PSBydGVfZXRoX2Rldl9j b3VudCgpKQ0KICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KDQogICAgICAgIGlmIChu ZXdfbXR1ID4gRVRIRVJfTUFYX0xFTikNCiAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsN Cg0KICAgICAgICAvKiBTZXQgbmV3IE1UVSAqLw0KICAgICAgICByZXQgPSBydGVfZXRoX2Rldl9z ZXRfbXR1KHBvcnRfaWQsIG5ld19tdHUpOw0KICAgICAgICBpZiAocmV0IDwgMCkNCiAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Ow0KDQogICAgICAgIHJldHVybiAwOw0KfQ0KDQo+ICsjZW5kaWYg LyogUlRFX0xJQlJURV9LTkkgKi8NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2FwcF9pbml0X2tu aShzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwKSB7DQo+ICsgICAgIGlmIChhcHAtPm5fcGt0cV9rbmkg PT0gMCkNCj4gKyAgICAgICAgICAgICByZXR1cm47DQo+ICsjaWZuZGVmIFJURV9MSUJSVEVfS05J DQo+ICsgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICBydGVfcGFuaWMoIkNhbiBub3QgaW5pdCBL Tkkgd2l0aG91dCBsaWJydGVfa25pIHN1cHBvcnQuXG4iKTsNCj4gKyNlbHNlDQoNCkkgd291bGQg bGlrZSB0byBhdm9pZCAjaWZkZWZzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGZ1bmN0aW9uIGNvZGUg YXMgbXVjaCBhcyBwb3NzaWJsZS4gSSBzdWdnZXN0IHdlIGRvIHRoZSBmb2xsb3dpbmc6DQoNCiNp Zm5kZWYgUlRFX0xJQlJURV9LTkkNCg0Kc3RhdGljIHZvaWQNCmFwcF9pbml0X2tuaShzdHJ1Y3Qg YXBwX3BhcmFtcyAqYXBwKQ0Kew0KICAgICAgICBpZiAoYXBwLT5uX3BrdHFfa25pID09IDApDQog ICAgICAgICAgICAgICAgcmV0dXJuOw0KDQogICAgICAgIHJ0ZV9wYW5pYygiQ2Fubm90IGluaXQg S05JIHdpdGhvdXQgbGlicnRlX2tuaSBzdXBwb3J0LlxuIik7DQp9DQoNCiNlbHNlDQoNCnN0YXRp YyB2b2lkDQphcHBfaW5pdF9rbmkoc3RydWN0IGFwcF9wYXJhbXMgKmFwcCkNCnsNCiAgICAgICAg Ly90aGUgcmVhbCBmdW5jdGlvbiBjb2RlDQp9DQoNCiNlbmRpZg0KDQo+ICsgICAgIHJ0ZV9rbmlf aW5pdChhcHAtPm5fcGt0cV9rbmkpOw0KPiArDQo+ICsgICAgIGZvciAodWludDMyX3QgaSA9IDA7 IGkgPCBhcHAtPm5fcGt0cV9rbmk7IGkrKykgew0KDQpQbGVhc2UgZGVjbGFyZSB0aGUgImkiIHZh cmlhYmxlIGF0IHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24sIGFzIHVzdWFsLiBBbHRob3VnaCBJ IHBlcnNvbmFsbHkgbGlrZSB0aGlzIGlkZWEsIHRoaXMgcGF0dGVybiBpcyBub3QgdXNlZCBhbnl3 aGVyZSBpbiBEUERLIGFuZCBpdCBtaWdodCB0cmlnZ2VyIHdhcm5pbmdzL2Vycm9ycyBmcm9tIHNv bWUgQyBjb21waWxlcnMuIEJ0dywgYW55IGlkZWEgd2hldGhlciB0aGlzIGlzIG1lbnRpb25lZCBp biBhbnkgd2F5IGJ5IHRoZSBBTlNJIEMvQzk5IHN0YW5kYXJkcz8NCg0KPiArICAgICAgICAgICAg IHN0cnVjdCBhcHBfcGt0cV9rbmlfcGFyYW1zICpwX2tuaSA9ICZhcHAtPmtuaV9wYXJhbXNbaV07 DQo+ICsgICAgICAgICAgICAgc3RydWN0IGFwcF9saW5rX3BhcmFtcyAqcF9saW5rOw0KPiArICAg ICAgICAgICAgIHN0cnVjdCBydGVfZXRoX2Rldl9pbmZvIGRldl9pbmZvOw0KPiArICAgICAgICAg ICAgIHN0cnVjdCBhcHBfbWVtcG9vbF9wYXJhbXMgKm1lbXBvb2xfcGFyYW1zOw0KPiArICAgICAg ICAgICAgIHN0cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9vbDsNCj4gKyAgICAgICAgICAgICBzdHJ1 Y3QgcnRlX2tuaV9jb25mIGNvbmY7DQo+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9rbmlfb3Bz IG9wczsNCj4gKw0KPiArICAgICAgICAgICAgIC8qIExJTksgKi8NCj4gKyAgICAgICAgICAgICBw X2xpbmsgPSBhcHBfZ2V0X2xpbmtfZm9yX2tuaShhcHAsIHBfa25pKTsNCj4gKyAgICAgICAgICAg ICBtZW1zZXQoJmRldl9pbmZvLCAwLCBzaXplb2YoZGV2X2luZm8pKTsNCj4gKyAgICAgICAgICAg ICBydGVfZXRoX2Rldl9pbmZvX2dldChwX2xpbmstPnBtZF9pZCwgJmRldl9pbmZvKTsNCj4gKw0K PiArICAgICAgICAgICAgIC8qIE1FTVBPT0wgKi8NCj4gKyAgICAgICAgICAgICBtZW1wb29sX3Bh cmFtcyA9ICZhcHAtPm1lbXBvb2xfcGFyYW1zW3Bfa25pLQ0KPiA+bWVtcG9vbF9pZF07DQo+ICsg ICAgICAgICAgICAgbWVtcG9vbCA9IGFwcC0+bWVtcG9vbFtwX2tuaS0+bWVtcG9vbF9pZF07DQo+ ICsNCj4gKyAgICAgICAgICAgICAvKiBLTkkgKi8NCj4gKyAgICAgICAgICAgICBtZW1zZXQoJmNv bmYsIDAsIHNpemVvZihjb25mKSk7DQo+ICsgICAgICAgICAgICAgc25wcmludGYoY29uZi5uYW1l PGh0dHA6Ly9jb25mLm5hbWU+LCBSVEVfS05JX05BTUVTSVpFLCAiJXMiLCBwX2tuaS0NCj4gPm5h bWUpOw0KPiArICAgICAgICAgICAgIGNvbmYuZm9yY2VfYmluZCA9IHBfa25pLT5mb3JjZV9iaW5k Ow0KPiArICAgICAgICAgICAgIGlmIChjb25mLmZvcmNlX2JpbmQpIHsNCj4gKyAgICAgICAgICAg ICAgICAgICAgIGludCBsY29yZV9pZDsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgbGNv cmVfaWQgPSBjcHVfY29yZV9tYXBfZ2V0X2xjb3JlX2lkKGFwcC0NCj4gPmNvcmVfbWFwLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2tuaS0+c29ja2V0X2lkLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwX2tuaS0+Y29yZV9pZCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcF9rbmktPmh5cGVyX3RoX2lkKTsNCj4gKw0KPiArICAgICAgICAgICAg ICAgICAgICAgaWYgKGxjb3JlX2lkIDwgMCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcnRlX3BhbmljKCIlcyBpbnZhbGlkIENQVSBjb3JlXG4iLCBwX2tuaS0NCj4gPm5hbWUpOw0K PiArDQo+ICsgICAgICAgICAgICAgICAgICAgICBjb25mLmNvcmVfaWQgPSAodWludDMyX3QpIGxj b3JlX2lkOw0KPiArICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICBjb25mLmdyb3VwX2lk ID0gcF9saW5rLT5wbWRfaWQ7DQo+ICsgICAgICAgICAgICAgY29uZi5tYnVmX3NpemUgPSBtZW1w b29sX3BhcmFtcy0+YnVmZmVyX3NpemU7DQo+ICsgICAgICAgICAgICAgY29uZi5hZGRyID0gZGV2 X2luZm8ucGNpX2Rldi0+YWRkcjsNCj4gKyAgICAgICAgICAgICBjb25mLmlkPGh0dHA6Ly9jb25m LmlkPiA9IGRldl9pbmZvLnBjaV9kZXYtPmlkOw0KPiArDQo+ICsgICAgICAgICAgICAgbWVtc2V0 KCZvcHMsIDAsIHNpemVvZihvcHMpKTsNCj4gKyAgICAgICAgICAgICBvcHMucG9ydF9pZCA9ICh1 aW50OF90KSBwX2xpbmstPnBtZF9pZDsNCj4gKyAgICAgICAgICAgICBvcHMuY2hhbmdlX210dSA9 IGtuaV9jaGFuZ2VfbXR1Ow0KPiArICAgICAgICAgICAgIG9wcy5jb25maWdfbmV0d29ya19pZiA9 IGtuaV9jb25maWdfbmV0d29ya19pbnRlcmZhY2U7DQo+ICsNCj4gKyAgICAgICAgICAgICBBUFBf TE9HKGFwcCwgSElHSCwgIkluaXRpYWxpemluZyAlcyAuLi4iLCBwX2tuaS0+bmFtZSk7DQo+ICsg ICAgICAgICAgICAgYXBwLT5rbmlbaV0gPSBydGVfa25pX2FsbG9jKG1lbXBvb2wsICZjb25mLCAm b3BzKTsNCj4gKyAgICAgICAgICAgICBpZiAoIWFwcC0+a25pW2ldKQ0KPiArICAgICAgICAgICAg ICAgICAgICAgcnRlX3BhbmljKCIlcyBpbml0IGVycm9yXG4iLCBwX2tuaS0+bmFtZSk7DQo+ICsg ICAgIH0NCj4gKyNlbmRpZiAvKiBSVEVfTElCUlRFX0tOSSAqLw0KPiArfQ0KPiArDQo+ICBzdGF0 aWMgdm9pZA0KPiAgYXBwX2luaXRfcGlwZWxpbmVzKHN0cnVjdCBhcHBfcGFyYW1zICphcHApDQo+ ICB7DQo+IEBAIC0xNjA3LDYgKzE3MzYsNyBAQCBpbnQgYXBwX2luaXQoc3RydWN0IGFwcF9wYXJh bXMgKmFwcCkNCj4gICAgICAgYXBwX2luaXRfbGluayhhcHApOw0KPiAgICAgICBhcHBfaW5pdF9z d3EoYXBwKTsNCj4gICAgICAgYXBwX2luaXRfdG0oYXBwKTsNCj4gKyAgICAgYXBwX2luaXRfa25p KGFwcCk7DQo+ICAgICAgIGFwcF9pbml0X21zZ3EoYXBwKTsNCj4NCj4gICAgICAgYXBwX3BpcGVs aW5lX2NvbW1vbl9jbWRfcHVzaChhcHApOw0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBfcGlw ZWxpbmUvcGlwZWxpbmUvcGlwZWxpbmVfY29tbW9uX2ZlLmMNCj4gYi9leGFtcGxlcy9pcF9waXBl bGluZS9waXBlbGluZS9waXBlbGluZV9jb21tb25fZmUuYw0KPiBpbmRleCA3MGM1N2U0Li42Mzcy M2NkIDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy9pcF9waXBlbGluZS9waXBlbGluZS9waXBlbGlu ZV9jb21tb25fZmUuYw0KPiArKysgYi9leGFtcGxlcy9pcF9waXBlbGluZS9waXBlbGluZS9waXBl bGluZV9jb21tb25fZmUuYw0KPiBAQCAtMTMwLDYgKzEzMCwzNSBAQCBhcHBfcGlwZWxpbmVfdHJh Y2tfcGt0cV9vdXRfdG9fbGluayhzdHJ1Y3QNCj4gYXBwX3BhcmFtcyAqYXBwLA0KPiAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7DQo+ICAgICAgICAgICAgICAgfQ0KPg0KPiArI2lmZGVmIFJU RV9MSUJSVEVfS05JDQoNCkFzIGluIGFueSBvdGhlciBwbGFjZSB0aGF0IGp1c3QgZGVhbHMgd2l0 aCBLTkkgY29uZmlndXJhdGlvbiBkYXRhIHJhdGhlciB0aGFuIEtOSSBpbml0IGRhdGEgKGUuZy4g aW4gYXBwLmggb3IgY29uZmlnX3BhcnNlLmMpLCB3ZSBkbyBub3QgbmVlZCB0byAjaWZkZWYgdGhl IGNvZGUgZnJhZ21lbnQgYmVsb3cuIFBsZWFzZSByZW1vdmUgdGhpcyBpbnN0YW5jZSBvZiAjaWZk ZWYgUlRFX0xJQlJURV9LTkkuDQoNCj4gKyAgICAgICAgICAgICBjYXNlIEFQUF9QS1RRX09VVF9L Tkk6DQo+ICsgICAgICAgICAgICAgew0KPiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBp cGVsaW5lX3BhcmFtcyBwcDsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwaXBlbGlu ZV90eXBlICpwdHlwZTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhcHBfcGt0cV9r bmlfcGFyYW1zICprbmk7DQo+ICsgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBwa3RxX2lu X2lkOw0KPiArICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1czsNCj4gKw0KPiArICAgICAg ICAgICAgICAgICAgICAga25pID0gJmFwcC0+a25pX3BhcmFtc1twa3RxX291dC0+aWRdOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgcCA9IGFwcF9rbmlfZ2V0X3JlYWRlcihhcHAsIGtuaSwgJnBr dHFfaW5faWQpOw0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICsNCj4gKyAgICAgICAg ICAgICAgICAgICAgIHB0eXBlID0gYXBwX3BpcGVsaW5lX3R5cGVfZmluZChhcHAsIHAtPnR5cGUp Ow0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKChwdHlwZSA9PSBOVUxMKSB8fCAocHR5cGUt PmZlX29wcy0+Zl90cmFjayA9PQ0KPiBOVUxMKSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIE5VTEw7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGFwcF9waXBl bGluZV9wYXJhbXNfZ2V0KGFwcCwgcCwgJnBwKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHN0 YXR1cyA9IHB0eXBlLT5mZV9vcHMtPmZfdHJhY2soJnBwLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwa3RxX2luX2lkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm cGt0cV9vdXRfaWQpOw0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICsNCj4gKyAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgIH0NCj4gKyNlbmRpZg0KPiArDQo+ ICAgICAgICAgICAgICAgY2FzZSBBUFBfUEtUUV9PVVRfU0lOSzoNCj4gICAgICAgICAgICAgICBk ZWZhdWx0Og0KPiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+IGRpZmYgLS1n aXQgYS9leGFtcGxlcy9pcF9waXBlbGluZS9waXBlbGluZS9waXBlbGluZV9tYXN0ZXJfYmUuYw0K PiBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL3BpcGVsaW5lL3BpcGVsaW5lX21hc3Rlcl9iZS5jDQo+ IGluZGV4IDc5ODY5YTQuLjMyZDQ2MzUgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVzL2lwX3BpcGVs aW5lL3BpcGVsaW5lL3BpcGVsaW5lX21hc3Rlcl9iZS5jDQo+ICsrKyBiL2V4YW1wbGVzL2lwX3Bp cGVsaW5lL3BpcGVsaW5lL3BpcGVsaW5lX21hc3Rlcl9iZS5jDQo+IEBAIC0xNDQsNiArMTQ0LDEy IEBAIHBpcGVsaW5lX3J1bih2b2lkICpwaXBlbGluZSkNCj4gICAgICAgICAgICAgICBydGVfZXhp dCgwLCAiQnllIVxuIik7DQo+ICAgICAgIH0NCj4NCj4gKyNpZmRlZiBSVEVfTElCUlRFX0tOSQ0K PiArICAgICAvKiBIYW5kbGUgS05JIHJlcXVlc3RzIGZyb20gTGludXgga2VybmVsICovDQo+ICsg ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBhcHAtPm5fcGt0cV9rbmk7IGkrKykNCg0KU2Ft ZSBjb21tZW50IGFzIGFib3ZlIG9uIGRlZmluaXRpb24gb2YgdGhlICJpIiB2YXJpYWJsZS4NCg0K PiArICAgICAgICAgICAgIHJ0ZV9rbmlfaGFuZGxlX3JlcXVlc3QoYXBwLT5rbmlbaV0pOw0KPiAr I2VuZGlmIC8qIFJURV9MSUJSVEVfS05JICovDQo+ICsNCj4gICAgICAgcmV0dXJuIDA7DQo+ICB9 DQo+DQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9pcF9waXBlbGluZS9waXBlbGluZV9iZS5oDQo+ IGIvZXhhbXBsZXMvaXBfcGlwZWxpbmUvcGlwZWxpbmVfYmUuaA0KPiBpbmRleCA1NTAxYWI3Li4w ZWUyMDhjIDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy9pcF9waXBlbGluZS9waXBlbGluZV9iZS5o DQo+ICsrKyBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL3BpcGVsaW5lX2JlLmgNCj4gQEAgLTQwLDYg KzQwLDkgQEANCj4gICNpbmNsdWRlIDxydGVfcG9ydF9yYXMuaD4NCj4gICNpbmNsdWRlIDxydGVf cG9ydF9zY2hlZC5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9wb3J0X3NvdXJjZV9zaW5rLmg+DQo+ICsj aWZkZWYgUlRFX0xJQlJURV9LTkkNCj4gKyNpbmNsdWRlIDxydGVfcG9ydF9rbmkuaD4NCj4gKyNl bmRpZg0KPiAgI2luY2x1ZGUgPHJ0ZV9waXBlbGluZS5oPg0KPg0KPiAgZW51bSBwaXBlbGluZV9w b3J0X2luX3R5cGUgew0KPiBAQCAtNDksNiArNTIsNyBAQCBlbnVtIHBpcGVsaW5lX3BvcnRfaW5f dHlwZSB7DQo+ICAgICAgIFBJUEVMSU5FX1BPUlRfSU5fUklOR19SRUFERVJfSVBWNF9GUkFHLA0K PiAgICAgICBQSVBFTElORV9QT1JUX0lOX1JJTkdfUkVBREVSX0lQVjZfRlJBRywNCj4gICAgICAg UElQRUxJTkVfUE9SVF9JTl9TQ0hFRF9SRUFERVIsDQo+ICsgICAgIFBJUEVMSU5FX1BPUlRfSU5f S05JX1JFQURFUiwNCj4gICAgICAgUElQRUxJTkVfUE9SVF9JTl9TT1VSQ0UsDQo+ICB9Ow0KPg0K PiBAQCAtNjEsNiArNjUsOSBAQCBzdHJ1Y3QgcGlwZWxpbmVfcG9ydF9pbl9wYXJhbXMgew0KPiAg ICAgICAgICAgICAgIHN0cnVjdCBydGVfcG9ydF9yaW5nX3JlYWRlcl9pcHY0X2ZyYWdfcGFyYW1z DQo+IHJpbmdfaXB2NF9mcmFnOw0KPiAgICAgICAgICAgICAgIHN0cnVjdCBydGVfcG9ydF9yaW5n X3JlYWRlcl9pcHY2X2ZyYWdfcGFyYW1zDQo+IHJpbmdfaXB2Nl9mcmFnOw0KPiAgICAgICAgICAg ICAgIHN0cnVjdCBydGVfcG9ydF9zY2hlZF9yZWFkZXJfcGFyYW1zIHNjaGVkOw0KPiArI2lmZGVm IFJURV9MSUJSVEVfS05JDQo+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9wb3J0X2tuaV9yZWFk ZXJfcGFyYW1zIGtuaTsNCj4gKyNlbmRpZg0KPiAgICAgICAgICAgICAgIHN0cnVjdCBydGVfcG9y dF9zb3VyY2VfcGFyYW1zIHNvdXJjZTsNCj4gICAgICAgfSBwYXJhbXM7DQo+ICAgICAgIHVpbnQz Ml90IGJ1cnN0X3NpemU7DQo+IEBAIC04Miw2ICs4OSwxMCBAQCBwaXBlbGluZV9wb3J0X2luX3Bh cmFtc19jb252ZXJ0KHN0cnVjdA0KPiBwaXBlbGluZV9wb3J0X2luX3BhcmFtcyAgKnApDQo+ICAg ICAgICAgICAgICAgcmV0dXJuICh2b2lkICopICZwLT5wYXJhbXMucmluZ19pcHY2X2ZyYWc7DQo+ ICAgICAgIGNhc2UgUElQRUxJTkVfUE9SVF9JTl9TQ0hFRF9SRUFERVI6DQo+ICAgICAgICAgICAg ICAgcmV0dXJuICh2b2lkICopICZwLT5wYXJhbXMuc2NoZWQ7DQo+ICsjaWZkZWYgUlRFX0xJQlJU RV9LTkkNCj4gKyAgICAgY2FzZSBQSVBFTElORV9QT1JUX0lOX0tOSV9SRUFERVI6DQo+ICsgICAg ICAgICAgICAgcmV0dXJuICh2b2lkICopICZwLT5wYXJhbXMua25pOw0KPiArI2VuZGlmDQo+ICAg ICAgIGNhc2UgUElQRUxJTkVfUE9SVF9JTl9TT1VSQ0U6DQo+ICAgICAgICAgICAgICAgcmV0dXJu ICh2b2lkICopICZwLT5wYXJhbXMuc291cmNlOw0KPiAgICAgICBkZWZhdWx0Og0KPiBAQCAtMTA1 LDYgKzExNiwxMCBAQCBwaXBlbGluZV9wb3J0X2luX3BhcmFtc19nZXRfb3BzKHN0cnVjdA0KPiBw aXBlbGluZV9wb3J0X2luX3BhcmFtcyAgKnApDQo+ICAgICAgICAgICAgICAgcmV0dXJuICZydGVf cG9ydF9yaW5nX3JlYWRlcl9pcHY2X2ZyYWdfb3BzOw0KPiAgICAgICBjYXNlIFBJUEVMSU5FX1BP UlRfSU5fU0NIRURfUkVBREVSOg0KPiAgICAgICAgICAgICAgIHJldHVybiAmcnRlX3BvcnRfc2No ZWRfcmVhZGVyX29wczsNCj4gKyNpZmRlZiBSVEVfTElCUlRFX0tOSQ0KPiArICAgICBjYXNlIFBJ UEVMSU5FX1BPUlRfSU5fS05JX1JFQURFUjoNCj4gKyAgICAgICAgICAgICByZXR1cm4gJnJ0ZV9w b3J0X2tuaV9yZWFkZXJfb3BzOw0KPiArI2VuZGlmDQo+ICAgICAgIGNhc2UgUElQRUxJTkVfUE9S VF9JTl9TT1VSQ0U6DQo+ICAgICAgICAgICAgICAgcmV0dXJuICZydGVfcG9ydF9zb3VyY2Vfb3Bz Ow0KPiAgICAgICBkZWZhdWx0Og0KPiBAQCAtMTIyLDYgKzEzNyw3IEBAIGVudW0gcGlwZWxpbmVf cG9ydF9vdXRfdHlwZSB7DQo+ICAgICAgIFBJUEVMSU5FX1BPUlRfT1VUX1JJTkdfV1JJVEVSX0lQ VjRfUkFTLA0KPiAgICAgICBQSVBFTElORV9QT1JUX09VVF9SSU5HX1dSSVRFUl9JUFY2X1JBUywN Cj4gICAgICAgUElQRUxJTkVfUE9SVF9PVVRfU0NIRURfV1JJVEVSLA0KPiArICAgICBQSVBFTElO RV9QT1JUX09VVF9LTklfV1JJVEVSLA0KPiAgICAgICBQSVBFTElORV9QT1JUX09VVF9TSU5LLA0K PiAgfTsNCj4NCj4gQEAgLTEzNyw2ICsxNTMsOSBAQCBzdHJ1Y3QgcGlwZWxpbmVfcG9ydF9vdXRf cGFyYW1zIHsNCj4gICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX3BvcnRfcmluZ193cml0ZXJfaXB2 NF9yYXNfcGFyYW1zIHJpbmdfaXB2NF9yYXM7DQo+ICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9w b3J0X3Jpbmdfd3JpdGVyX2lwdjZfcmFzX3BhcmFtcyByaW5nX2lwdjZfcmFzOw0KPiAgICAgICAg ICAgICAgIHN0cnVjdCBydGVfcG9ydF9zY2hlZF93cml0ZXJfcGFyYW1zIHNjaGVkOw0KPiArI2lm ZGVmIFJURV9MSUJSVEVfS05JDQo+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9wb3J0X2tuaV93 cml0ZXJfcGFyYW1zIGtuaTsNCj4gKyNlbmRpZg0KPiAgICAgICAgICAgICAgIHN0cnVjdCBydGVf cG9ydF9zaW5rX3BhcmFtcyBzaW5rOw0KPiAgICAgICB9IHBhcmFtczsNCj4gIH07DQo+IEBAIC0x NjMsNiArMTgyLDEwIEBAIHBpcGVsaW5lX3BvcnRfb3V0X3BhcmFtc19jb252ZXJ0KHN0cnVjdA0K PiBwaXBlbGluZV9wb3J0X291dF9wYXJhbXMgICpwKQ0KPiAgICAgICAgICAgICAgIHJldHVybiAo dm9pZCAqKSAmcC0+cGFyYW1zLnJpbmdfaXB2Nl9yYXM7DQo+ICAgICAgIGNhc2UgUElQRUxJTkVf UE9SVF9PVVRfU0NIRURfV1JJVEVSOg0KPiAgICAgICAgICAgICAgIHJldHVybiAodm9pZCAqKSAm cC0+cGFyYW1zLnNjaGVkOw0KPiArI2lmZGVmIFJURV9MSUJSVEVfS05JDQo+ICsgICAgIGNhc2Ug UElQRUxJTkVfUE9SVF9PVVRfS05JX1dSSVRFUjoNCj4gKyAgICAgICAgICAgICByZXR1cm4gKHZv aWQgKikgJnAtPnBhcmFtcy5rbmk7DQo+ICsjZW5kaWYNCj4gICAgICAgY2FzZSBQSVBFTElORV9Q T1JUX09VVF9TSU5LOg0KPiAgICAgICAgICAgICAgIHJldHVybiAodm9pZCAqKSAmcC0+cGFyYW1z LnNpbms7DQo+ICAgICAgIGRlZmF1bHQ6DQo+IEBAIC0xOTIsNiArMjE1LDEwIEBAIHBpcGVsaW5l X3BvcnRfb3V0X3BhcmFtc19nZXRfb3BzKHN0cnVjdA0KPiBwaXBlbGluZV9wb3J0X291dF9wYXJh bXMgICpwKQ0KPiAgICAgICAgICAgICAgIHJldHVybiAmcnRlX3BvcnRfcmluZ193cml0ZXJfaXB2 Nl9yYXNfb3BzOw0KPiAgICAgICBjYXNlIFBJUEVMSU5FX1BPUlRfT1VUX1NDSEVEX1dSSVRFUjoN Cj4gICAgICAgICAgICAgICByZXR1cm4gJnJ0ZV9wb3J0X3NjaGVkX3dyaXRlcl9vcHM7DQo+ICsj aWZkZWYgUlRFX0xJQlJURV9LTkkNCj4gKyAgICAgY2FzZSBQSVBFTElORV9QT1JUX09VVF9LTklf V1JJVEVSOg0KPiArICAgICAgICAgICAgIHJldHVybiAmcnRlX3BvcnRfa25pX3dyaXRlcl9vcHM7 DQo+ICsjZW5kaWYNCj4gICAgICAgY2FzZSBQSVBFTElORV9QT1JUX09VVF9TSU5LOg0KPiAgICAg ICAgICAgICAgIHJldHVybiAmcnRlX3BvcnRfc2lua19vcHM7DQo+ICAgICAgIGRlZmF1bHQ6DQo+ IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3BvcnQvTWFrZWZpbGUgYi9saWIvbGlicnRlX3BvcnQv TWFrZWZpbGUNCj4gaW5kZXggZGM2YTYwMS4uMGZjOTI5YiAxMDA2NDQNCj4gLS0tIGEvbGliL2xp YnJ0ZV9wb3J0L01ha2VmaWxlDQo+ICsrKyBiL2xpYi9saWJydGVfcG9ydC9NYWtlZmlsZQ0KPiBA QCAtNTYsNiArNTYsOSBAQCBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUE9SVCkgKz0gcnRlX3Bv cnRfZnJhZy5jDQo+ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUE9SVCkgKz0gcnRlX3BvcnRf cmFzLmMNCj4gIGVuZGlmDQo+ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUE9SVCkgKz0gcnRl X3BvcnRfc2NoZWQuYw0KPiAraWZlcSAoJChDT05GSUdfUlRFX0xJQlJURV9LTkkpLHkpDQo+ICtT UkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUE9SVCkgKz0gcnRlX3BvcnRfa25pLmMNCj4gK2VuZGlm DQo+ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUE9SVCkgKz0gcnRlX3BvcnRfc291cmNlX3Np bmsuYw0KPg0KPiAgIyBpbnN0YWxsIGluY2x1ZGVzDQo+IEBAIC02Nyw2ICs3MCw5IEBAIFNZTUxJ TkstJChDT05GSUdfUlRFX0xJQlJURV9QT1JUKS1pbmNsdWRlICs9DQo+IHJ0ZV9wb3J0X2ZyYWcu aA0KPiAgU1lNTElOSy0kKENPTkZJR19SVEVfTElCUlRFX1BPUlQpLWluY2x1ZGUgKz0gcnRlX3Bv cnRfcmFzLmgNCj4gIGVuZGlmDQo+ICBTWU1MSU5LLSQoQ09ORklHX1JURV9MSUJSVEVfUE9SVCkt aW5jbHVkZSArPSBydGVfcG9ydF9zY2hlZC5oDQo+ICtpZmVxICgkKENPTkZJR19SVEVfTElCUlRF X0tOSSkseSkNCj4gK1NZTUxJTkstJChDT05GSUdfUlRFX0xJQlJURV9QT1JUKS1pbmNsdWRlICs9 IHJ0ZV9wb3J0X2tuaS5oDQo+ICtlbmRpZg0KPiAgU1lNTElOSy0kKENPTkZJR19SVEVfTElCUlRF X1BPUlQpLWluY2x1ZGUgKz0gcnRlX3BvcnRfc291cmNlX3NpbmsuaA0KPg0KPiAgIyB0aGlzIGxp YiBkZXBlbmRzIHVwb246DQo+IEBAIC03Niw1ICs4Miw2IEBAIERFUERJUlMtJChDT05GSUdfUlRF X0xJQlJURV9QT1JUKSArPQ0KPiBsaWIvbGlicnRlX21lbXBvb2wNCj4gIERFUERJUlMtJChDT05G SUdfUlRFX0xJQlJURV9QT1JUKSArPSBsaWIvbGlicnRlX2V0aGVyDQo+ICBERVBESVJTLSQoQ09O RklHX1JURV9MSUJSVEVfUE9SVCkgKz0gbGliL2xpYnJ0ZV9pcF9mcmFnDQo+ICBERVBESVJTLSQo Q09ORklHX1JURV9MSUJSVEVfUE9SVCkgKz0gbGliL2xpYnJ0ZV9zY2hlZA0KPiArREVQRElSUy0k KENPTkZJR19SVEVfTElCUlRFX1BPUlQpICs9IGxpYi9saWJydGVfa25pDQo+DQo+ICBpbmNsdWRl ICQoUlRFX1NESykvbWsvcnRlLmxpYi5tazxodHRwOi8vcnRlLmxpYi5taz4NCj4gZGlmZiAtLWdp dCBhL2xpYi9saWJydGVfcG9ydC9ydGVfcG9ydF9rbmkuYyBiL2xpYi9saWJydGVfcG9ydC9ydGVf cG9ydF9rbmkuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi40Y2Jj MzQ1DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvbGliL2xpYnJ0ZV9wb3J0L3J0ZV9wb3J0X2tu aS5jDQo+IEBAIC0wLDAgKzEsMzI1IEBADQo+ICsvKi0NCj4gKyAqICAgQlNEIExJQ0VOU0UNCj4g KyAqDQo+ICsgKiAgIENvcHlyaWdodChjKSAyMDE2IEV0aGFuIFpodWFuZyA8emh1YW5nd2pAZ21h aWwuY29tPG1haWx0bzp6aHVhbmd3akBnbWFpbC5jb20+Pi4NCj4gKyAqICAgQ29weXJpZ2h0KGMp IDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICsgKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ ICsgKg0KPiArICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5 IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0 dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+ICsgKiAgIGFyZSBt ZXQ6DQo+ICsgKg0KPiArICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11 c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gKyAqICAgICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICAg ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv dmUgY29weXJpZ2h0DQo+ICsgKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gKyAqICAgICAgIHRoZSBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gKyAqICAg ICAgIGRpc3RyaWJ1dGlvbi4NCj4gKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwg Q29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gKyAqICAgICAgIGNvbnRyaWJ1dG9y cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KPiAr ICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl biBwZXJtaXNzaW9uLg0KPiArICoNCj4gKyAqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9SUw0KPiArICogICAiQVMg SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU DQo+IE5PVA0KPiArICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gKyAqICAgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiBDT1BZUklHSFQN Cj4gKyAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg SU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+ICsgKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gKyAqICAgTElN SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T Uw0KPiBPRiBVU0UsDQo+ICsgKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiArICogICBUSEVPUlkgT0Yg TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUg0KPiBU T1JUDQo+ICsgKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg SU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiArICogICBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdFLg0KPiAr ICovDQo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxydGVfY29tbW9u Lmg+DQo+ICsjaW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9rbmkuaD4N Cj4gKw0KPiArI2luY2x1ZGUgInJ0ZV9wb3J0X2tuaS5oIg0KPiArDQo+ICsvKg0KPiArICogUG9y dCBLTkkgUmVhZGVyDQo+ICsgKi8NCj4gKyNpZmRlZiBSVEVfUE9SVF9TVEFUU19DT0xMRUNUDQo+ ICsNCj4gKyNkZWZpbmUgUlRFX1BPUlRfS05JX1JFQURFUl9TVEFUU19QS1RTX0lOX0FERChwb3J0 LCB2YWwpIFwNCj4gKyAgICAgcG9ydC0+c3RhdHMubl9wa3RzX2luICs9IHZhbA0KPiArI2RlZmlu ZSBSVEVfUE9SVF9LTklfUkVBREVSX1NUQVRTX1BLVFNfRFJPUF9BREQocG9ydCwgdmFsKSBcDQo+ ICsgICAgIHBvcnQtPnN0YXRzLm5fcGt0c19kcm9wICs9IHZhbA0KPiArDQo+ICsjZWxzZQ0KPiAr DQo+ICsjZGVmaW5lIFJURV9QT1JUX0tOSV9SRUFERVJfU1RBVFNfUEtUU19JTl9BREQocG9ydCwg dmFsKQ0KPiArI2RlZmluZSBSVEVfUE9SVF9LTklfUkVBREVSX1NUQVRTX1BLVFNfRFJPUF9BREQo cG9ydCwgdmFsKQ0KPiArDQo+ICsjZW5kaWYNCj4gKw0KPiArc3RydWN0IHJ0ZV9wb3J0X2tuaV9y ZWFkZXIgew0KPiArICAgICBzdHJ1Y3QgcnRlX3BvcnRfaW5fc3RhdHMgc3RhdHM7DQo+ICsNCj4g KyAgICAgc3RydWN0IHJ0ZV9rbmkgKmtuaTsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyB2b2lkICoN Cj4gK3J0ZV9wb3J0X2tuaV9yZWFkZXJfY3JlYXRlKHZvaWQgKnBhcmFtcywgaW50IHNvY2tldF9p ZCkNCj4gK3sNCj4gKyAgICAgc3RydWN0IHJ0ZV9wb3J0X2tuaV9yZWFkZXJfcGFyYW1zICpjb25m ID0NCj4gKyAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcnRlX3BvcnRfa25pX3JlYWRlcl9w YXJhbXMgKikgcGFyYW1zOw0KPiArICAgICBzdHJ1Y3QgcnRlX3BvcnRfa25pX3JlYWRlciAqcG9y dDsNCj4gKw0KPiArICAgICAvKiBDaGVjayBpbnB1dCBwYXJhbWV0ZXJzICovDQo+ICsgICAgIGlm IChjb25mID09IE5VTEwpIHsNCj4gKyAgICAgICAgICAgICBSVEVfTE9HKEVSUiwgUE9SVCwgIiVz OiBwYXJhbXMgaXMgTlVMTFxuIiwgX19mdW5jX18pOw0KPiArICAgICAgICAgICAgIHJldHVybiBO VUxMOw0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgLyogTWVtb3J5IGFsbG9jYXRpb24gKi8NCj4g KyAgICAgcG9ydCA9IHJ0ZV96bWFsbG9jX3NvY2tldCgiUE9SVCIsIHNpemVvZigqcG9ydCksDQo+ ICsgICAgICAgICAgICAgUlRFX0NBQ0hFX0xJTkVfU0laRSwgc29ja2V0X2lkKTsNCj4gKyAgICAg aWYgKHBvcnQgPT0gTlVMTCkgew0KPiArICAgICAgICAgICAgIFJURV9MT0coRVJSLCBQT1JULCAi JXM6IEZhaWxlZCB0byBhbGxvY2F0ZSBwb3J0XG4iLA0KPiBfX2Z1bmNfXyk7DQo+ICsgICAgICAg ICAgICAgcmV0dXJuIE5VTEw7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICAvKiBJbml0aWFsaXph dGlvbiAqLw0KPiArICAgICBwb3J0LT5rbmkgPSBjb25mLT5rbmk7DQo+ICsNCj4gKyAgICAgcmV0 dXJuIHBvcnQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3J0ZV9wb3J0X2tuaV9yZWFk ZXJfcngodm9pZCAqcG9ydCwgc3RydWN0IHJ0ZV9tYnVmICoqcGt0cywgdWludDMyX3QNCj4gbl9w a3RzKQ0KPiArew0KPiArICAgICBzdHJ1Y3QgcnRlX3BvcnRfa25pX3JlYWRlciAqcCA9DQo+ICsg ICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHJ0ZV9wb3J0X2tuaV9yZWFkZXIgKikgcG9ydDsN Cj4gKyAgICAgdWludDE2X3QgcnhfcGt0X2NudDsNCj4gKw0KPiArICAgICByeF9wa3RfY250ID0g cnRlX2tuaV9yeF9idXJzdChwLT5rbmksIHBrdHMsIG5fcGt0cyk7DQo+ICsgICAgIFJURV9QT1JU X0tOSV9SRUFERVJfU1RBVFNfUEtUU19JTl9BREQocCwgcnhfcGt0X2NudCk7DQo+ICsgICAgIHJl dHVybiByeF9wa3RfY250Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtydGVfcG9ydF9r bmlfcmVhZGVyX2ZyZWUodm9pZCAqcG9ydCkNCj4gK3sNCj4gKyAgICAgaWYgKHBvcnQgPT0gTlVM TCkgew0KPiArICAgICAgICAgICAgIFJURV9MT0coRVJSLCBQT1JULCAiJXM6IHBvcnQgaXMgTlVM TFxuIiwgX19mdW5jX18pOw0KPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiArICAg ICB9DQo+ICsNCj4gKyAgICAgcnRlX2ZyZWUocG9ydCk7DQo+ICsNCj4gKyAgICAgcmV0dXJuIDA7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcnRlX3BvcnRfa25pX3JlYWRlcl9zdGF0c19yZWFk KHZvaWQgKnBvcnQsDQo+ICsgICAgIHN0cnVjdCBydGVfcG9ydF9pbl9zdGF0cyAqc3RhdHMsIGlu dCBjbGVhcikNCj4gK3sNCj4gKyAgICAgc3RydWN0IHJ0ZV9wb3J0X2tuaV9yZWFkZXIgKnAgPQ0K PiArICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBydGVfcG9ydF9rbmlfcmVhZGVyICopIHBv cnQ7DQo+ICsNCj4gKyAgICAgaWYgKHN0YXRzICE9IE5VTEwpDQo+ICsgICAgICAgICAgICAgbWVt Y3B5KHN0YXRzLCAmcC0+c3RhdHMsIHNpemVvZihwLT5zdGF0cykpOw0KPiArDQo+ICsgICAgIGlm IChjbGVhcikNCj4gKyAgICAgICAgICAgICBtZW1zZXQoJnAtPnN0YXRzLCAwLCBzaXplb2YocC0+ c3RhdHMpKTsNCj4gKw0KPiArICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAq IFBvcnQgS05JIFdyaXRlcg0KPiArICovDQo+ICsjaWZkZWYgUlRFX1BPUlRfU1RBVFNfQ09MTEVD VA0KPiArDQo+ICsjZGVmaW5lIFJURV9QT1JUX0tOSV9XUklURVJfU1RBVFNfUEtUU19JTl9BREQo cG9ydCwgdmFsKSBcDQo+ICsgICAgIHBvcnQtPnN0YXRzLm5fcGt0c19pbiArPSB2YWwNCj4gKyNk ZWZpbmUgUlRFX1BPUlRfS05JX1dSSVRFUl9TVEFUU19QS1RTX0RST1BfQUREKHBvcnQsIHZhbCkg XA0KPiArICAgICBwb3J0LT5zdGF0cy5uX3BrdHNfZHJvcCArPSB2YWwNCj4gKw0KPiArI2Vsc2UN Cj4gKw0KPiArI2RlZmluZSBSVEVfUE9SVF9LTklfV1JJVEVSX1NUQVRTX1BLVFNfSU5fQUREKHBv cnQsIHZhbCkNCj4gKyNkZWZpbmUgUlRFX1BPUlRfS05JX1dSSVRFUl9TVEFUU19QS1RTX0RST1Bf QUREKHBvcnQsIHZhbCkNCj4gKw0KPiArI2VuZGlmDQo+ICsNCj4gK3N0cnVjdCBydGVfcG9ydF9r bmlfd3JpdGVyIHsNCj4gKyAgICAgc3RydWN0IHJ0ZV9wb3J0X291dF9zdGF0cyBzdGF0czsNCj4g Kw0KPiArICAgICBzdHJ1Y3QgcnRlX21idWYgKnR4X2J1ZlsyICogUlRFX1BPUlRfSU5fQlVSU1Rf U0laRV9NQVhdOw0KPiArICAgICB1aW50MzJfdCB0eF9idXJzdF9zejsNCj4gKyAgICAgdWludDMy X3QgdHhfYnVmX2NvdW50Ow0KPiArICAgICB1aW50NjRfdCBic3pfbWFzazsNCj4gKyAgICAgc3Ry dWN0IHJ0ZV9rbmkgKmtuaTsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyB2b2lkICoNCj4gK3J0ZV9w b3J0X2tuaV93cml0ZXJfY3JlYXRlKHZvaWQgKnBhcmFtcywgaW50IHNvY2tldF9pZCkNCj4gK3sN Cj4gKyAgICAgc3RydWN0IHJ0ZV9wb3J0X2tuaV93cml0ZXJfcGFyYW1zICpjb25mID0NCj4gKyAg ICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcnRlX3BvcnRfa25pX3dyaXRlcl9wYXJhbXMgKikg cGFyYW1zOw0KPiArICAgICBzdHJ1Y3QgcnRlX3BvcnRfa25pX3dyaXRlciAqcG9ydDsNCj4gKw0K PiArICAgICAvKiBDaGVjayBpbnB1dCBwYXJhbWV0ZXJzICovDQo+ICsgICAgIGlmICgoY29uZiA9 PSBOVUxMKSB8fA0KPiArICAgICAgICAgICAgIChjb25mLT50eF9idXJzdF9zeiA9PSAwKSB8fA0K PiArICAgICAgICAgICAgIChjb25mLT50eF9idXJzdF9zeiA+IFJURV9QT1JUX0lOX0JVUlNUX1NJ WkVfTUFYKSB8fA0KPiArICAgICAgICAgICAgICghcnRlX2lzX3Bvd2VyX29mXzIoY29uZi0+dHhf YnVyc3Rfc3opKSkgew0KPiArICAgICAgICAgICAgIFJURV9MT0coRVJSLCBQT1JULCAiJXM6IElu dmFsaWQgaW5wdXQgcGFyYW1ldGVyc1xuIiwNCj4gX19mdW5jX18pOw0KPiArICAgICAgICAgICAg IHJldHVybiBOVUxMOw0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgLyogTWVtb3J5IGFsbG9jYXRp b24gKi8NCj4gKyAgICAgcG9ydCA9IHJ0ZV96bWFsbG9jX3NvY2tldCgiUE9SVCIsIHNpemVvZigq cG9ydCksDQo+ICsgICAgICAgICAgICAgUlRFX0NBQ0hFX0xJTkVfU0laRSwgc29ja2V0X2lkKTsN Cj4gKyAgICAgaWYgKHBvcnQgPT0gTlVMTCkgew0KPiArICAgICAgICAgICAgIFJURV9MT0coRVJS LCBQT1JULCAiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSBwb3J0XG4iLA0KPiBfX2Z1bmNfXyk7DQo+ ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICAvKiBJ bml0aWFsaXphdGlvbiAqLw0KPiArICAgICBwb3J0LT5rbmkgPSBjb25mLT5rbmk7DQo+ICsgICAg IHBvcnQtPnR4X2J1cnN0X3N6ID0gY29uZi0+dHhfYnVyc3Rfc3o7DQo+ICsgICAgIHBvcnQtPnR4 X2J1Zl9jb3VudCA9IDA7DQo+ICsgICAgIHBvcnQtPmJzel9tYXNrID0gMUxMVSA8PCAoY29uZi0+ dHhfYnVyc3Rfc3ogLSAxKTsNCj4gKw0KPiArICAgICByZXR1cm4gcG9ydDsNCj4gK30NCj4gKw0K PiArc3RhdGljIGlubGluZSB2b2lkDQo+ICtzZW5kX2J1cnN0KHN0cnVjdCBydGVfcG9ydF9rbmlf d3JpdGVyICpwKQ0KPiArew0KPiArICAgICB1aW50MzJfdCBuYl90eDsNCj4gKw0KPiArICAgICBu Yl90eCA9IHJ0ZV9rbmlfdHhfYnVyc3QocC0+a25pLCBwLT50eF9idWYsIHAtPnR4X2J1Zl9jb3Vu dCk7DQo+ICsNCj4gKyAgICAgUlRFX1BPUlRfS05JX1dSSVRFUl9TVEFUU19QS1RTX0RST1BfQURE KHAsIHAtDQo+ID50eF9idWZfY291bnQgLSBuYl90eCk7DQo+ICsgICAgIGZvciAoOyBuYl90eCA8 IHAtPnR4X2J1Zl9jb3VudDsgbmJfdHgrKykNCj4gKyAgICAgICAgICAgICBydGVfcGt0bWJ1Zl9m cmVlKHAtPnR4X2J1ZltuYl90eF0pOw0KPiArDQo+ICsgICAgIHAtPnR4X2J1Zl9jb3VudCA9IDA7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3J0ZV9wb3J0X2tuaV93cml0ZXJfdHgodm9p ZCAqcG9ydCwgc3RydWN0IHJ0ZV9tYnVmICpwa3QpDQo+ICt7DQo+ICsgICAgIHN0cnVjdCBydGVf cG9ydF9rbmlfd3JpdGVyICpwID0NCj4gKyAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcnRl X3BvcnRfa25pX3dyaXRlciAqKSBwb3J0Ow0KPiArDQo+ICsgICAgIHAtPnR4X2J1ZltwLT50eF9i dWZfY291bnQrK10gPSBwa3Q7DQo+ICsgICAgIFJURV9QT1JUX0tOSV9XUklURVJfU1RBVFNfUEtU U19JTl9BREQocCwgMSk7DQo+ICsgICAgIGlmIChwLT50eF9idWZfY291bnQgPj0gcC0+dHhfYnVy c3Rfc3opDQo+ICsgICAgICAgICAgICAgc2VuZF9idXJzdChwKTsNCj4gKw0KPiArICAgICByZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArcnRlX3BvcnRfa25pX3dyaXRlcl90 eF9idWxrKHZvaWQgKnBvcnQsDQo+ICsgICAgIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsDQo+ICsg ICAgIHVpbnQ2NF90IHBrdHNfbWFzaykNCj4gK3sNCj4gKyAgICAgc3RydWN0IHJ0ZV9wb3J0X2tu aV93cml0ZXIgKnAgPQ0KPiArICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBydGVfcG9ydF9r bmlfd3JpdGVyICopIHBvcnQ7DQo+ICsgICAgIHVpbnQ2NF90IGJzel9tYXNrID0gcC0+YnN6X21h c2s7DQo+ICsgICAgIHVpbnQzMl90IHR4X2J1Zl9jb3VudCA9IHAtPnR4X2J1Zl9jb3VudDsNCj4g KyAgICAgdWludDY0X3QgZXhwciA9IChwa3RzX21hc2sgJiAocGt0c19tYXNrICsgMSkpIHwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBrdHNfbWFzayAmIGJzel9t YXNrKSBeDQo+IGJzel9tYXNrKTsNCj4gKw0KPiArICAgICBpZiAoZXhwciA9PSAwKSB7DQo+ICsg ICAgICAgICAgICAgdWludDY0X3Qgbl9wa3RzID0gX19idWlsdGluX3BvcGNvdW50bGwocGt0c19t YXNrKTsNCj4gKyAgICAgICAgICAgICB1aW50MzJfdCBuX3BrdHNfb2s7DQo+ICsNCj4gKyAgICAg ICAgICAgICBpZiAodHhfYnVmX2NvdW50KQ0KPiArICAgICAgICAgICAgICAgICAgICAgc2VuZF9i dXJzdChwKTsNCj4gKw0KPiArICAgICAgICAgICAgIFJURV9QT1JUX0tOSV9XUklURVJfU1RBVFNf UEtUU19JTl9BREQocCwgbl9wa3RzKTsNCj4gKyAgICAgICAgICAgICBuX3BrdHNfb2sgPSBydGVf a25pX3R4X2J1cnN0KHAtPmtuaSwgcGt0cywgbl9wa3RzKTsNCj4gKw0KPiArICAgICAgICAgICAg IFJURV9QT1JUX0tOSV9XUklURVJfU1RBVFNfUEtUU19EUk9QX0FERChwLCBuX3BrdHMNCj4gLSBu X3BrdHNfb2spOw0KPiArICAgICAgICAgICAgIGZvciAoOyBuX3BrdHNfb2sgPCBuX3BrdHM7IG5f cGt0c19vaysrKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX21idWYgKnBr dCA9IHBrdHNbbl9wa3RzX29rXTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgcnRlX3Br dG1idWZfZnJlZShwa3QpOw0KPiArICAgICAgICAgICAgIH0NCj4gKyAgICAgfSBlbHNlIHsNCj4g KyAgICAgICAgICAgICBmb3IgKDsgcGt0c19tYXNrOykgew0KPiArICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgcGt0X2luZGV4ID0gX19idWlsdGluX2N0emxsKHBrdHNfbWFzayk7DQo+ICsg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBwa3RfbWFzayA9IDFMTFUgPDwgcGt0X2luZGV4 Ow0KPiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9tYnVmICpwa3QgPSBwa3RzW3Br dF9pbmRleF07DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHAtPnR4X2J1Zlt0eF9idWZf Y291bnQrK10gPSBwa3Q7DQo+ICsgICAgICAgICAgICAgICAgICAgICBSVEVfUE9SVF9LTklfV1JJ VEVSX1NUQVRTX1BLVFNfSU5fQUREKHAsIDEpOw0KPiArICAgICAgICAgICAgICAgICAgICAgcGt0 c19tYXNrICY9IH5wa3RfbWFzazsNCj4gKyAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAg ICAgICBwLT50eF9idWZfY291bnQgPSB0eF9idWZfY291bnQ7DQo+ICsgICAgICAgICAgICAgaWYg KHR4X2J1Zl9jb3VudCA+PSBwLT50eF9idXJzdF9zeikNCj4gKyAgICAgICAgICAgICAgICAgICAg IHNlbmRfYnVyc3QocCk7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICByZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludA0KPiArcnRlX3BvcnRfa25pX3dyaXRlcl9mbHVzaCh2b2lkICpw b3J0KQ0KPiArew0KPiArICAgICBzdHJ1Y3QgcnRlX3BvcnRfa25pX3dyaXRlciAqcCA9DQo+ICsg ICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHJ0ZV9wb3J0X2tuaV93cml0ZXIgKikgcG9ydDsN Cj4gKw0KPiArICAgICBpZiAocC0+dHhfYnVmX2NvdW50ID4gMCkNCj4gKyAgICAgICAgICAgICBz ZW5kX2J1cnN0KHApOw0KPiArDQo+ICsgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgaW50DQo+ICtydGVfcG9ydF9rbmlfd3JpdGVyX2ZyZWUodm9pZCAqcG9ydCkNCj4gK3sNCj4g KyAgICAgaWYgKHBvcnQgPT0gTlVMTCkgew0KPiArICAgICAgICAgICAgIFJURV9MT0coRVJSLCBQ T1JULCAiJXM6IFBvcnQgaXMgTlVMTFxuIiwgX19mdW5jX18pOw0KPiArICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOw0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgcnRlX3BvcnRfa25pX3dyaXRl cl9mbHVzaChwb3J0KTsNCj4gKyAgICAgcnRlX2ZyZWUocG9ydCk7DQo+ICsNCj4gKyAgICAgcmV0 dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcnRlX3BvcnRfa25pX3dyaXRlcl9zdGF0 c19yZWFkKHZvaWQgKnBvcnQsDQo+ICsgICAgIHN0cnVjdCBydGVfcG9ydF9vdXRfc3RhdHMgKnN0 YXRzLCBpbnQgY2xlYXIpDQo+ICt7DQo+ICsgICAgIHN0cnVjdCBydGVfcG9ydF9rbmlfd3JpdGVy ICpwID0NCj4gKyAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcnRlX3BvcnRfa25pX3dyaXRl ciAqKSBwb3J0Ow0KPiArDQo+ICsgICAgIGlmIChzdGF0cyAhPSBOVUxMKQ0KPiArICAgICAgICAg ICAgIG1lbWNweShzdGF0cywgJnAtPnN0YXRzLCBzaXplb2YocC0+c3RhdHMpKTsNCj4gKw0KPiAr ICAgICBpZiAoY2xlYXIpDQo+ICsgICAgICAgICAgICAgbWVtc2V0KCZwLT5zdGF0cywgMCwgc2l6 ZW9mKHAtPnN0YXRzKSk7DQo+ICsNCj4gKyAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8q DQo+ICsgKiBTdW1tYXJ5IG9mIHBvcnQgb3BlcmF0aW9ucw0KPiArICovDQo+ICtzdHJ1Y3QgcnRl X3BvcnRfaW5fb3BzIHJ0ZV9wb3J0X2tuaV9yZWFkZXJfb3BzID0gew0KPiArICAgICAuZl9jcmVh dGUgPSBydGVfcG9ydF9rbmlfcmVhZGVyX2NyZWF0ZSwNCj4gKyAgICAgLmZfZnJlZSA9IHJ0ZV9w b3J0X2tuaV9yZWFkZXJfZnJlZSwNCj4gKyAgICAgLmZfcnggPSBydGVfcG9ydF9rbmlfcmVhZGVy X3J4LA0KPiArICAgICAuZl9zdGF0cyA9IHJ0ZV9wb3J0X2tuaV9yZWFkZXJfc3RhdHNfcmVhZCwN Cj4gK307DQo+ICsNCj4gK3N0cnVjdCBydGVfcG9ydF9vdXRfb3BzIHJ0ZV9wb3J0X2tuaV93cml0 ZXJfb3BzID0gew0KPiArICAgICAuZl9jcmVhdGUgPSBydGVfcG9ydF9rbmlfd3JpdGVyX2NyZWF0 ZSwNCj4gKyAgICAgLmZfZnJlZSA9IHJ0ZV9wb3J0X2tuaV93cml0ZXJfZnJlZSwNCj4gKyAgICAg LmZfdHggPSBydGVfcG9ydF9rbmlfd3JpdGVyX3R4LA0KPiArICAgICAuZl90eF9idWxrID0gcnRl X3BvcnRfa25pX3dyaXRlcl90eF9idWxrLA0KPiArICAgICAuZl9mbHVzaCA9IHJ0ZV9wb3J0X2tu aV93cml0ZXJfZmx1c2gsDQo+ICsgICAgIC5mX3N0YXRzID0gcnRlX3BvcnRfa25pX3dyaXRlcl9z dGF0c19yZWFkLA0KPiArfTsNCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfcG9ydC9ydGVfcG9y dF9rbmkuaCBiL2xpYi9saWJydGVfcG9ydC9ydGVfcG9ydF9rbmkuaA0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5kNGRlOGM0DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvbGliL2xpYnJ0ZV9wb3J0L3J0ZV9wb3J0X2tuaS5oDQo+IEBAIC0wLDAgKzEsODIgQEANCj4g Ky8qLQ0KPiArICogICBCU0QgTElDRU5TRQ0KPiArICoNCj4gKyAqICAgQ29weXJpZ2h0KGMpIDIw MTYgRXRoYW4gWmh1YW5nIDx6aHVhbmd3akBnbWFpbC5jb208bWFpbHRvOnpodWFuZ3dqQGdtYWls LmNvbT4+Lg0KPiArICogICBDb3B5cmlnaHQoYykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4NCj4g KyAqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiAgIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiAr ICogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMNCj4gKyAqICAgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAgICAgKiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dA0KPiArICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLg0KPiArICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gKyAqICAgICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbg0KPiArICogICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZQ0KPiArICogICAgICAgZGlzdHJpYnV0aW9uLg0KPiArICogICAg ICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9m IGl0cw0KPiArICogICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ICsgKiAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUg d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsgKg0KPiArICog ICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQN Cj4gQ09OVFJJQlVUT1JTDQo+ICsgKiAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+ICsgKiAgIExJTUlURUQgVE8s IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNT IEZPUg0KPiArICogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g RVZFTlQgU0hBTEwgVEhFDQo+IENPUFlSSUdIVA0KPiArICogICBPV05FUiBPUiBDT05UUklCVVRP UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwNCj4gSU5DSURFTlRBTCwNCj4g KyAqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUDQo+IE5PVA0KPiArICogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQo+IE9GIFVTRSwNCj4gKyAqICAgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRA0KPiBB TkQgT04gQU5ZDQo+ICsgKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SDQo+IFRPUlQNCj4gKyAqICAgKElOQ0xVRElORyBORUdM SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUgVVNF DQo+ICsgKiAgIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC SUxJVFkgT0YgU1VDSA0KPiBEQU1BR0UuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX0lOQ0xV REVfUlRFX1BPUlRfS05JX0hfXw0KPiArI2RlZmluZSBfX0lOQ0xVREVfUlRFX1BPUlRfS05JX0hf Xw0KPiArDQo+ICsjaWZkZWYgX19jcGx1c3BsdXMNCj4gK2V4dGVybiAiQyIgew0KPiArI2VuZGlm DQo+ICsNCj4gKy8qKg0KPiArICogQGZpbGUNCj4gKyAqIFJURSBQb3J0IEtOSSBJbnRlcmZhY2UN Cj4gKyAqDQo+ICsgKiBrbmlfcmVhZGVyOiBpbnB1dCBwb3J0IGJ1aWx0IG9uIHRvcCBvZiBwcmUt aW5pdGlhbGl6ZWQgS05JIGludGVyZmFjZQ0KPiArICoga25pX3dyaXRlcjogb3V0cHV0IHBvcnQg YnVpbHQgb24gdG9wIG9mIHByZS1pbml0aWFsaXplZCBLTkkgaW50ZXJmYWNlDQo+ICsgKg0KPiAr ICoqKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8cnRl X2tuaS5oPg0KPiArDQo+ICsjaW5jbHVkZSAicnRlX3BvcnQuaCINCj4gKw0KPiArLyoqIGtuaV9y ZWFkZXIgcG9ydCBwYXJhbWV0ZXJzICovDQo+ICtzdHJ1Y3QgcnRlX3BvcnRfa25pX3JlYWRlcl9w YXJhbXMgew0KPiArICAgICAvKiogS05JIGludGVyZmFjZSByZWZlcmVuY2UgKi8NCj4gKyAgICAg c3RydWN0IHJ0ZV9rbmkgKmtuaTsNCj4gK307DQo+ICsNCj4gKy8qKiBrbmlfcmVhZGVyIHBvcnQg b3BlcmF0aW9ucyAqLw0KPiArZXh0ZXJuIHN0cnVjdCBydGVfcG9ydF9pbl9vcHMgcnRlX3BvcnRf a25pX3JlYWRlcl9vcHM7DQo+ICsNCj4gKw0KPiArLyoqIGtuaV93cml0ZXIgcG9ydCBwYXJhbWV0 ZXJzICovDQo+ICtzdHJ1Y3QgcnRlX3BvcnRfa25pX3dyaXRlcl9wYXJhbXMgew0KPiArICAgICAv KiogS05JIGludGVyZmFjZSByZWZlcmVuY2UgKi8NCj4gKyAgICAgc3RydWN0IHJ0ZV9rbmkgKmtu aTsNCj4gKyAgICAgLyoqIEJ1cnN0IHNpemUgdG8gS05JIGludGVyZmFjZS4gKi8NCj4gKyAgICAg dWludDMyX3QgdHhfYnVyc3Rfc3o7DQo+ICt9Ow0KPiArDQo+ICsvKioga25pX3dyaXRlciBwb3J0 IG9wZXJhdGlvbnMgKi8NCj4gK2V4dGVybiBzdHJ1Y3QgcnRlX3BvcnRfb3V0X29wcyBydGVfcG9y dF9rbmlfd3JpdGVyX29wczsNCj4gKw0KPiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ICt9DQo+ICsj ZW5kaWYNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3BvcnQvcnRl X3BvcnRfdmVyc2lvbi5tYXANCj4gYi9saWIvbGlicnRlX3BvcnQvcnRlX3BvcnRfdmVyc2lvbi5t YXANCj4gaW5kZXggN2EwYjM0ZC4uZTYxYjNmYSAxMDA2NDQNCj4gLS0tIGEvbGliL2xpYnJ0ZV9w b3J0L3J0ZV9wb3J0X3ZlcnNpb24ubWFwDQo+ICsrKyBiL2xpYi9saWJydGVfcG9ydC9ydGVfcG9y dF92ZXJzaW9uLm1hcA0KPiBAQCAtMzUsMyArMzUsMTEgQEAgRFBES18yLjIgew0KPiAgICAgICBy dGVfcG9ydF9yaW5nX211bHRpX3dyaXRlcl9ub2Ryb3Bfb3BzOw0KPg0KPiAgfSBEUERLXzIuMTsN Cj4gKw0KPiArRFBES18xNi4wNyB7DQo+ICsgICAgIGdsb2JhbDoNCj4gKw0KPiArICAgICBydGVf cG9ydF9rbmlfcmVhZGVyX29wczsNCj4gKyAgICAgcnRlX3BvcnRfa25pX3dyaXRlcl9vcHM7DQo+ ICsNCj4gK30gRFBES18yLjI7DQo+IC0tDQo+IDIuNy40DQoNClJlZ2FyZHMsDQpDcmlzdGlhbg0K DQo=