From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 09/60] drm/bridge: Add connector-related bridge operations and data Date: Sat, 17 Aug 2019 03:14:56 +0300 Message-ID: <20190817001456.GA20692@pendragon.ideasonboard.com> References: <20190707181937.6250-6-laurent.pinchart@ideasonboard.com> <1f98e5f0-d513-d3f2-420d-80e0e0c3c71b@samsung.com> <20190711073548.GD15868@phenom.ffwll.local> <20190808181948.GW6055@pendragon.ideasonboard.com> <20190808183631.GX6055@pendragon.ideasonboard.com> <20190814130329.GF7444@phenom.ffwll.local> <20190814133057.GN5009@pendragon.ideasonboard.com> <20190814170229.GJ7444@phenom.ffwll.local> <20190816233008.GD17858@pendragon.ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1CAB16E3E4 for ; Sat, 17 Aug 2019 00:15:03 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190816233008.GD17858@pendragon.ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Maxime Ripard , Tomi Valkeinen , Sean Paul , Sebastian Reichel , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgRGFuaWVsLAoKT24gU2F0LCBBdWcgMTcsIDIwMTkgYXQgMDI6MzA6MDhBTSArMDMwMCwgTGF1 cmVudCBQaW5jaGFydCB3cm90ZToKPiBPbiBXZWQsIEF1ZyAxNCwgMjAxOSBhdCAwNzowMjoyOVBN ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gT24gV2VkLCBBdWcgMTQsIDIwMTkgYXQg MDQ6MzA6NTdQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+PiBPbiBXZWQsIEF1 ZyAxNCwgMjAxOSBhdCAwMzowMzoyOVBNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+ PiBPbiBUaHUsIEF1ZyAwOCwgMjAxOSBhdCAwOTozNjozMVBNICswMzAwLCBMYXVyZW50IFBpbmNo YXJ0IHdyb3RlOgo+ID4+Pj4gT24gVGh1LCBBdWcgMDgsIDIwMTkgYXQgMDk6MTk6NDhQTSArMDMw MCwgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+Pj4+PiBPbiBUaHUsIEp1bCAxMSwgMjAxOSBh dCAwOTozNTo0OEFNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4+PiBPbiBXZWQs IEp1bCAxMCwgMjAxOSBhdCAwMjoxMjoxNFBNICswMjAwLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+ ID4+Pj4+Pj4gSGkgTGF1cmVudCwKPiA+Pj4+Pj4+IAo+ID4+Pj4+Pj4gSSBsaWtlIHRoZSBhcHBy b2FjaCwgY3VycmVudCBwcmFjdGljZSB3aGVuIGFsbW9zdCBldmVyeSBicmlkZ2Ugc2hvdWxkCj4g Pj4+Pj4+PiBvcHRpb25hbGx5IGltcGxlbWVudCBjb25uZWN0b3IsIG9yIGFsdGVybmF0aXZlbHkg ZG93bnN0cmVhbSBicmlkZ2Ugb3IKPiA+Pj4+Pj4+IHBhbmVsIGlzIHZlcnkgcGFpbmZ1bC4KPiA+ Pj4+Pj4gCj4gPj4+Pj4+IFllYWggSSB0aGluayB0aGlzIGxvb2tzIG1vc3RseSByZWFzb25hYmxl LiBTb21lIGFwaSBkZXNpZ24gY29tbWVudHMgb24gdG9wCj4gPj4+Pj4+IG9mIEFuZHJ6ZWonLCB3 aXRoIHRoZSBmYWlyIHdhcm5pbmcgdGhhdCBJIGRpZG4ndCBib3RoZXIgdG8gcmVhZCB1cCBvbiBo b3cKPiA+Pj4+Pj4gaXQncyBhbGwgdXNlZCBpbiB0aGUgZW5kLiBJIHByb2JhYmx5IHNob3VsZCBn byBhbmQgZG8gdGhhdCwgYXQgbGVhc3QgdG8KPiA+Pj4+Pj4gZ2V0IGEgZmVlbGluZyBmb3Igd2hh dCB5b3VyIGhwZF9jYiB1c3VhbGx5IGRvZXMuCj4gPj4+Pj4+IAo+ID4+Pj4+Pj4gTW9yZSBjb21t ZW50cyBpbmxpbmVkLgo+ID4+Pj4+Pj4gCj4gPj4+Pj4+PiBPbiAwNy4wNy4yMDE5IDIwOjE4LCBM YXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4+Pj4+Pj4+IFRvIHN1cHBvcnQgaW1wbGVtZW50YXRp b24gb2YgRFJNIGNvbm5lY3RvcnMgb24gdG9wIG9mIERSTSBicmlkZ2VzCj4gPj4+Pj4+Pj4gaW5z dGVhZCBvZiBieSBicmlkZ2VzLCB0aGUgZHJtX2JyaWRnZSBuZWVkcyB0byBleHBvc2UgbmV3IG9w ZXJhdGlvbnMgYW5kCj4gPj4+Pj4+Pj4gZGF0YToKPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IC0gT3V0 cHV0IGRldGVjdGlvbiwgaG90LXBsdWcgbm90aWZpY2F0aW9uLCBtb2RlIHJldHJpZXZhbCBhbmQg RURJRAo+ID4+Pj4+Pj4+ICAgcmV0cmlldmFsIG9wZXJhdGlvbnMKPiA+Pj4+Pj4+PiAtIEJpdG1h c2sgb2Ygc3VwcG9ydGVkIG9wZXJhdGlvbnMKPiA+Pj4+Pj4+IAo+ID4+Pj4+Pj4gCj4gPj4+Pj4+ PiBXaHkgZG8gd2UgbmVlZCB0aGVzZSBiaXRtYXNrIGF0IGFsbD8gV2h5IGNhbm5vdCB3ZSByZWx5 IG9uIHByZXNlbmNlIG9mCj4gPj4+Pj4+PiBvcGVyYXRpb24ncyBjYWxsYmFjaz8KPiA+Pj4+Pj4g Cj4gPj4+Pj4+IFllYWggYWxzbyBub3QgYSBodWdlIGZhbiBvZiB0aGVzZSBiaXRtYXNrcy4gU21l bGxzIGxpa2UKPiA+Pj4+Pj4gRFJJVkVSX0dFTXxEUklWRVJfTU9ERVNFVCwgYW5kIEkgcGVyc29u YWxseSByZWFsbHkgaGF0ZSB0aG9zZS4gRWFzeSB0bwo+ID4+Pj4+PiBhZGQsIGdlbmVyYWxseSBn b29kIGV4Y3VzZSB0byBub3QgaGF2ZSB0byB0aGluayB0aHJvdWdoIHRoZSBkZXNpZ24gYmV0d2Vl bgo+ID4+Pj4+PiBkaWZmZXJlbnQgcGFydHMgb2YgZHJpdmVycyAtICJqdXN0IiBhZGQgYW5vdGhl ciBmbGFnLgo+ID4+Pj4+IAo+ID4+Pj4+IFRoZSByZWFzb24gaXMgdGhhdCBhIGJyaWRnZSBtYXkg c3VwcG9ydCBhbiBvcGVyYXRpb24gKGFzIGluIGltcGxlbWVudGVkCj4gPj4+Pj4gaW4gdGhlIGJy aWRnZSBoYXJkd2FyZSksIGJ1dCB0aGF0IG9wZXJhdGlvbiBtYXkgbm90IGJlIHN1cHBvcnRlZCBv biBhCj4gPj4+Pj4gcGFydGljdWxhciBib2FyZC4gRm9yIGluc3RhbmNlIGFuIEhETUkgZW5jb2Rl ciBtYXkgc3VwcG9ydCByZWFkaW5nIEVESUQKPiA+Pj4+PiB3aGVuIHRoZSBEREMgbGluZXMgYXJl IGNvbm5lY3RlZCB0byB0aGUgZW5jb2RlciwgYnV0IGEgYm9hcmQgbWF5IGNvbm5lY3QKPiA+Pj4+ PiB0aGUgRERDIGxpbmVzIHRvIGFuIEkyQyBwb3J0IG9mIHRoZSBTb0MuIFdlIHRodXMgbmVlZCB0 byBkZWNvdXBsZQo+ID4+Pj4+IGlmIGEgcGFydGljdWxhciBpbnN0YW5jZSBvZiB0aGUgZGV2aWNl IHN1cHBvcnRzIHRoZSBvcGVyYXRpb24gKGV4cG9zZWQKPiA+Pj4+PiBieSB0aGUgb3BzIGZsYWdz KSBmcm9tIHRoZSBmdW5jdGlvbiBwb2ludGVycy4KPiA+Pj4+PiAKPiA+Pj4+PiBXZSBjb3VsZCBv ZiBjb3Vyc2UgYWxsb2NhdGUgdGhlIGRybV9icmlkZ2VfZnVuY3Mgc3RydWN0dXJlIGR5bmFtaWNh bGx5Cj4gPj4+Pj4gZm9yIGVhY2ggYnJpZGdlIGluc3RhbmNlLCBhbmQgZmlsbCBpdCB3aXRoIGZ1 bmN0aW9uIHBvaW50ZXJzIG1hbnVhbGx5LAo+ID4+Pj4+IGxlYXZpbmcgdGhlIHVudXNlZCBvcHMg YWx3YXlzIE5VTEwsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgbWFraW5nIHRoZQo+ID4+Pj4+IHN0 cnVjdHVyZSB3cml0YWJsZSwgd2hpY2ggaXMgY29uc2lkZXJlZCBhIHNlY3VyaXR5IGlzc3VlLiBU aGF0J3Mgd2h5IEkKPiA+Pj4+PiBkZWNpZGVkIHRvIGtlZXAgdGhlIGRybV9icmlkZ2VfZnVuY3Mg c3RydWN0dXJlIGFzIGEgZ2xvYmFsIHN0YXRpYyBjb25zdAo+ID4+Pj4+IHN0cnVjdHVyZSwgYW5k IGFkZCBhbiBvcHMgYml0bWFzay4KPiA+Pj4+PiAKPiA+Pj4+Pj4+PiAtIEJyaWRnZSBvdXRwdXQg dHlwZQo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gQWRkIGFuZCBkb2N1bWVudCB0aGVzZS4KPiA+Pj4+ Pj4+Pgo+ID4+Pj4+Pj4+IFRocmVlIG5ldyBicmlkZ2UgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYWxz byBhZGRlZCB0byBoYW5kbGUgaG90IHBsdWcKPiA+Pj4+Pj4+PiBub3RpZmljYXRpb24gaW4gYSB3 YXkgdGhhdCBpcyBhcyB0cmFuc3BhcmVudCBhcyBwb3NzaWJsZSBmb3IgdGhlCj4gPj4+Pj4+Pj4g YnJpZGdlcy4KPiA+Pj4+Pj4+IAo+ID4+Pj4+Pj4gRG9jdW1lbnRhdGlvbiBvZiBuZXcgb3BzZXMg ZG9lcyBub3QgZXhwbGFpbiBob3cgaXQgc2hvdWxkIGNvb3BlcmF0ZSB3aXRoCj4gPj4+Pj4+PiBi cmlkZ2UgY2hhaW5pbmcsIEkgc3VwcG9zZSB0aGV5IHNob3VsZCBiZSBjaGFpbmVkIGV4cGxpY2l0 bHksIGFtIEkKPiA+Pj4+Pj4+IHJpZ2h0PyBNb3JlIGNvbW1lbnRzIGFib3V0IGl0IGxhdGVyLgo+ ID4+Pj4+IAo+ID4+Pj4+IE5vLCB0aGUgd2hvbGUgcG9pbnQgaXMgdGhhdCB0aGV5IHNob3VsZCBu b3QgYmUgY2hhaW5lZCBhdCBhbGwuIEEgYnJpZGdlCj4gPj4+Pj4gZG9lcyBub3QgaGF2ZSB0byBw cm9wYWdhdGUsIGZvciBpbnN0YW5jZSwgLmdldF9lZGlkKCkgdG8gdGhlIG5leHQKPiA+Pj4+PiBi cmlkZ2UuIFRoYXQncyBvbmUgb2YgdGhlIGNvcmUgZGVzaWduIHByaW5jaXBsZXMgaW4gdGhpcyBz ZXJpZXMsIEkgd2FudAo+ID4+Pj4+IHRvIGtlZXAgdGhlIGJyaWRnZXMgYXMgc2ltcGxlIGFzIHBv c3NpYmxlLCBhbmQgbW92ZSB0aGUgY29tcGxleGl0eSBvZgo+ID4+Pj4+IHRoZSBib2lsZXJwbGF0 ZSBjb2RlIHRoYXQgaXMgY3VycmVudGx5IGNvcGllZCBhbGwgYXJvdW5kIHRvIGhlbHBlcnMuIFNl ZQo+ID4+Pj4+IHBhdGNoICJkcm06IEFkZCBoZWxwZXIgdG8gY3JlYXRlIGEgY29ubmVjdG9yIGZv ciBhIGNoYWluIG9mIGJyaWRnZXMiIGZvcgo+ID4+Pj4+IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQg aG93IHRoaXMgaXMgdXNlZCwgd2l0aCBhIGhlbHBlciB0aGF0IGRlbGVnYXRlcwo+ID4+Pj4+IHRo ZSBjb25uZWN0b3Igb3BlcmF0aW9ucyB0byB0aGUgY29ycmVjdCBicmlkZ2UgaW4gdGhlIGNoYWlu IGJhc2VkIG9uIHRoZQo+ID4+Pj4+IG9wcyByZXBvcnRlZCBieSBlYWNoIGJyaWRnZS4KPiA+Pj4+ PiAKPiA+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBp bmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gPj4+Pj4+Pj4gLS0tCj4gPj4+Pj4+Pj4gIGRyaXZl cnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMgfCAgOTIgKysrKysrKysrKysrKysrKysrKwo+ID4+Pj4+ Pj4+ICBpbmNsdWRlL2RybS9kcm1fYnJpZGdlLmggICAgIHwgMTcwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCj4gPj4+Pj4+Pj4gIDIgZmlsZXMgY2hhbmdlZCwgMjYxIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlk Z2UuYwo+ID4+Pj4+Pj4+IGluZGV4IDUxOTU3N2YzNjNlMy4uM2MyYTI1NWRmN2FmIDEwMDY0NAo+ ID4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPiA+Pj4+Pj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gPj4+Pj4+Pj4gQEAgLTcwLDYgKzcw LDggQEAgc3RhdGljIExJU1RfSEVBRChicmlkZ2VfbGlzdCk7Cj4gPj4+Pj4+Pj4gICAqLwo+ID4+ Pj4+Pj4+ICB2b2lkIGRybV9icmlkZ2VfYWRkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4g Pj4+Pj4+Pj4gIHsKPiA+Pj4+Pj4+PiArCW11dGV4X2luaXQoJmJyaWRnZS0+aHBkX211dGV4KTsK PiA+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4gIAltdXRleF9sb2NrKCZicmlkZ2VfbG9jayk7Cj4gPj4+ Pj4+Pj4gIAlsaXN0X2FkZF90YWlsKCZicmlkZ2UtPmxpc3QsICZicmlkZ2VfbGlzdCk7Cj4gPj4+ Pj4+Pj4gIAltdXRleF91bmxvY2soJmJyaWRnZV9sb2NrKTsKPiA+Pj4+Pj4+PiBAQCAtODYsNiAr ODgsOCBAQCB2b2lkIGRybV9icmlkZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Cj4gPj4+Pj4+Pj4gIAltdXRleF9sb2NrKCZicmlkZ2VfbG9jayk7Cj4gPj4+Pj4+Pj4gIAlsaXN0 X2RlbF9pbml0KCZicmlkZ2UtPmxpc3QpOwo+ID4+Pj4+Pj4+ICAJbXV0ZXhfdW5sb2NrKCZicmlk Z2VfbG9jayk7Cj4gPj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICsJbXV0ZXhfZGVzdHJveSgmYnJpZGdl LT5ocGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+ICB9Cj4gPj4+Pj4+Pj4gIEVYUE9SVF9TWU1CT0woZHJt X2JyaWRnZV9yZW1vdmUpOwo+ID4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+PiBAQCAtNDYzLDYgKzQ2Nyw5 NCBAQCB2b2lkIGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlLAo+ID4+Pj4+Pj4+ICB9Cj4gPj4+Pj4+Pj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19i cmlkZ2VfZW5hYmxlKTsKPiA+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4gKy8qKgo+ID4+Pj4+Pj4+ICsg KiBkcm1fYnJpZGdlX2hwZF9lbmFibGUgLSBlbmFibGUgaG90IHBsdWcgZGV0ZWN0aW9uIGZvciB0 aGUgYnJpZGdlCj4gPj4+Pj4+Pj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVy ZQo+ID4+Pj4+Pj4+ICsgKiBAY2I6IGhvdC1wbHVnIGRldGVjdGlvbiBjYWxsYmFjawo+ID4+Pj4+ Pj4+ICsgKiBAZGF0YTogZGF0YSB0byBiZSBwYXNzZWQgdG8gdGhlIGhvdC1wbHVnIGRldGVjdGlv biBjYWxsYmFjawo+ID4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+ICsgKiBDYWxsICZkcm1fYnJpZGdl X2Z1bmNzLmhwZF9lbmFibGUgYW5kIHJlZ2lzdGVyIHRoZSBnaXZlbiBAY2IgYW5kIEBkYXRhIGFz Cj4gPj4+Pj4+Pj4gKyAqIGhvdCBwbHVnIG5vdGlmaWNhdGlvbiBjYWxsYmFjay4gRnJvbSBub3cg b24gdGhlIEBjYiB3aWxsIGJlIGNhbGxlZCB3aXRoCj4gPj4+Pj4+Pj4gKyAqIEBkYXRhIHdoZW4g YW4gb3V0cHV0IHN0YXR1cyBjaGFuZ2UgaXMgZGV0ZWN0ZWQgYnkgdGhlIGJyaWRnZSwgdW50aWwg aG90IHBsdWcKPiA+Pj4+Pj4+PiArICogbm90aWZpY2F0aW9uIGdldHMgZGlzYWJsZWQgd2l0aCBk cm1fYnJpZGdlX2hwZF9kaXNhYmxlKCkuCj4gPj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4gKyAqIEhv dCBwbHVnIGRldGVjdGlvbiBpcyBzdXBwb3J0ZWQgb25seSBpZiB0aGUgRFJNX0JSSURHRV9PUF9I UEQgZmxhZyBpcyBzZXQgaW4KPiA+Pj4+Pj4+PiArICogYnJpZGdlLT5vcHMuIFRoaXMgZnVuY3Rp b24gc2hhbGwgbm90IGJlIGNhbGxlZCB3aGVuIHRoZSBmbGFnIGlzIG5vdCBzZXQuCj4gPj4+Pj4+ Pj4gKyAqCj4gPj4+Pj4+Pj4gKyAqIE9ubHkgb25lIGhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFj ayBjYW4gYmUgcmVnaXN0ZXJlZCBhdCBhIHRpbWUsIGl0IGlzIGFuCj4gPj4+Pj4+Pj4gKyAqIGVy cm9yIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIGhvdCBwbHVnIGRldGVjdGlvbiBpcyBhbHJl YWR5IGVuYWJsZWQgZm9yCj4gPj4+Pj4+Pj4gKyAqIHRoZSBicmlkZ2UuCj4gPj4+Pj4+Pj4gKyAq Lwo+ID4+Pj4+Pj4gCj4gPj4+Pj4+PiBUbyBzaW1wbGlmeSBhcmNoaXRlY3R1cmUgbWF5YmUgd291 bGQgYmUgYmV0dGVyIHRvIGVuYWJsZSBocGQganVzdCBvbgo+ID4+Pj4+Pj4gYnJpZGdlIGF0dGFj aDoKPiA+Pj4+Pj4+IAo+ID4+Pj4+Pj4gYnJpZGdlLT5ocGRfY2IgPSBjYjsKPiA+Pj4+Pj4+IAo+ ID4+Pj4+Pj4gYnJpZGdlLT5ocGRfZGF0YSA9IGRhdGE7Cj4gPj4+Pj4+PiAKPiA+Pj4+Pj4+IHJl dCA9IGRybV9icmlkZ2VfYXR0YWNoKC4uLik7Cj4gPj4+Pj4+IAo+ID4+Pj4+PiBZZWFoIEkgbGlr ZSB0aGlzIG1vcmUuIFRoZSBvdGhlciBwcm9ibGVtIGhlcmUgaXMsIHdoYXQgaWYgeW91IG5lZWQg bW9yZQo+ID4+Pj4+PiB0aGFuIDEgY2FsbGJhY2sgcmVnaXN0ZXJzIG9uIHRoZSBzYW1lIGJyaWRn ZSBoZHAgc2lnbmFsPwo+ID4+Pj4+IAo+ID4+Pj4+IFRoYXQncyB3aHkgSSBkZWNpZGVkIHRvIGhp ZGUgaGlkZSBIUEQgdGhyb3VnaCBoZWxwZXJzLAo+ID4+Pj4+IGRybV9icmlkZ2VfaHBkX2VuYWJs ZSgpIGFuZCBkcm1fYnJpZGdlX2hwZF9kaXNhYmxlKCkgb24gdGhlIGxpc3RlbmVyCj4gPj4+Pj4g c2lkZSwgYW5kIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIG9uIHRoZSBldmVudCByZXBvcnRlciBz aWRlLiBXaGlsZSB0aGUKPiA+Pj4+PiBjdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIGxpbWl0ZWQg dG8gYSBzaW5nbGUgbGlzdGVuZXIsIG9ubHkgdGhlIGhlbHBlcnMKPiA+Pj4+PiB3b3VsZCBuZWVk IHRvIGJlIGNoYW5nZWQgdG8gZXh0ZW5kIHRoYXQgdG8gbXVsdGlwbGUgbGlzdGVuZXJzLgo+ID4+ Pj4+IAo+ID4+Pj4+IE5vdGUgdGhhdCB0aGUgLmhwZF9lbmFibGUoKSBhbmQgLmhwZF9kaXNhYmxl KCkgb3BlcmF0aW9ucyBhbHNvIGFsbG93IHRoZQo+ID4+Pj4+IGJyaWRnZSB0byBkaXNhYmxlIEhQ RCBkZXRlY3Rpb24gd2hlbiBub3QgdXNlZC4gRG9pbmcgc28ga2VlcHMgdGhlIGJyaWRnZQo+ID4+ Pj4+IHNpbXBsZSwgaXQgb25seSBuZWVkcyB0byBjYXJlIGFib3V0IHJlcG9ydGluZyBIUEQgZXZl bnRzIHdoZW4gdGhleSdyZQo+ID4+Pj4+IGVuYWJsZWQsIHdpdGhvdXQgY2FyaW5nIHdobyAoaWYg YW55b25lKSBpcyBsaXN0ZW5pbmcsIGFuZCBnZXRzIGNsZWFyCj4gPj4+Pj4gaW5zdHJ1Y3Rpb25z IG9uIHdoZXRoZXIgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIEhQRCBoYXJkd2FyZSAoaW4gY2Fz ZQo+ID4+Pj4+IGl0IGNhbiBiZSBkaXNhYmxlZCkuCj4gPj4+Pj4gCj4gPj4+Pj4+PiBUaGlzIHdh eSB3ZSBjb3VsZCBhdm9pZCBhZGRpbmcgbmV3IGNhbGxiYWNrcyBocGRfKGVuYWJsZXxkaXNhYmxl KQo+ID4+Pj4+Pj4gd2l0aG91dCBiaWcgc2FjcmlmaWNlcy4KPiA+Pj4+Pj4+IAo+ID4+Pj4+Pj4g T25lIG1vcmUgdGhpbmc6IEhQRCBpbiBEaXNwbGF5UG9ydC9IRE1JIGJlc2lkZSBzaWduYWxsaW5n IHBsdWcvdW5wbHVnLAo+ID4+Pj4+Pj4gbm90aWZpZXMgYWJvdXQgc2luayBzdGF0dXMgY2hhbmdl LCBob3cgaXQgdHJhbnNsYXRlcyB0byB0aGlzIGNiPwo+ID4+Pj4+IAo+ID4+Pj4+IFRoaXMgaXMg c29tZXRoaW5nIHRoaXMgc2VyaWVzIGRvZXNuJ3QgaW1wbGVtZW50LiBJIGRvbid0IHRoaW5rIGl0 IHdvdWxkCj4gPj4+Pj4gYmUgYSBiaWcgZGVhbCwgYnV0IG15IGtub3dsZWRnZSBvZiBIUEQgKGVz cGVjaWFsbHkgZm9yIERpc3BsYXlQb3J0KSBlbmRzCj4gPj4+Pj4gaGVyZS4gSWYgeW91IGNhbiBl bGFib3JhdGUgb24gd2hhdCB3b3VsZCBiZSBuZWVkZWQsIEkgY2FuIGltcGxlbWVudAo+ID4+Pj4+ IHRoYXQuCj4gPj4+Pj4gCj4gPj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZW5hYmxlKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4+Pj4gKwkJCSAgIHZvaWQgKCpjYikodm9p ZCAqZGF0YSwKPiA+Pj4+Pj4+PiArCQkJCSAgICAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMg c3RhdHVzKSwKPiA+Pj4+Pj4+PiArCQkJICAgdm9pZCAqZGF0YSkKPiA+Pj4+Pj4+PiArewo+ID4+ Pj4+Pj4+ICsJaWYgKCFicmlkZ2UgfHwgIWJyaWRnZS0+ZnVuY3MtPmhwZF9lbmFibGUpCj4gPj4+ Pj4+Pj4gKwkJcmV0dXJuOwo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiArCW11dGV4X2xvY2soJmJy aWRnZS0+aHBkX211dGV4KTsKPiA+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4gKwlpZiAoV0FSTihicmlk Z2UtPmhwZF9jYiwgIkhvdCBwbHVnIGRldGVjdGlvbiBhbHJlYWR5IGVuYWJsZWRcbiIpKQo+ID4+ Pj4+Pj4+ICsJCWdvdG8gdW5sb2NrOwo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiArCWJyaWRnZS0+ aHBkX2NiID0gY2I7Cj4gPj4+Pj4+Pj4gKwlicmlkZ2UtPmhwZF9kYXRhID0gZGF0YTsKPiA+Pj4+ Pj4+PiArCj4gPj4+Pj4+Pj4gKwlicmlkZ2UtPmZ1bmNzLT5ocGRfZW5hYmxlKGJyaWRnZSk7Cj4g Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICt1bmxvY2s6Cj4gPj4+Pj4+Pj4gKwltdXRleF91bmxvY2so JmJyaWRnZS0+aHBkX211dGV4KTsKPiA+Pj4+Pj4+PiArfQo+ID4+Pj4+Pj4+ICtFWFBPUlRfU1lN Qk9MX0dQTChkcm1fYnJpZGdlX2hwZF9lbmFibGUpOwo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiAr LyoqCj4gPj4+Pj4+Pj4gKyAqIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUgLSBkaXNhYmxlIGhvdCBw bHVnIGRldGVjdGlvbiBmb3IgdGhlIGJyaWRnZQo+ID4+Pj4+Pj4+ICsgKiBAYnJpZGdlOiBicmlk Z2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+Pj4+Pj4+PiArICoKPiA+Pj4+Pj4+PiArICogQ2FsbCAm ZHJtX2JyaWRnZV9mdW5jcy5ocGRfZGlzYWJsZSBhbmQgdW5yZWdpc3RlciB0aGUgaG90IHBsdWcg ZGV0ZWN0aW9uCj4gPj4+Pj4+Pj4gKyAqIGNhbGxiYWNrIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB3 aXRoIGRybV9icmlkZ2VfaHBkX2VuYWJsZSgpLiBPbmNlIHRoaXMKPiA+Pj4+Pj4+PiArICogZnVu Y3Rpb24gcmV0dXJucyB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2FsbGVkIGJ5IHRoZSBicmlk Z2Ugd2hlbiBhbgo+ID4+Pj4+Pj4+ICsgKiBvdXRwdXQgc3RhdHVzIGNoYW5nZSBvY2N1cnMuCj4g Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4gKyAqIEhvdCBwbHVnIGRldGVjdGlvbiBpcyBzdXBwb3J0 ZWQgb25seSBpZiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpcyBzZXQgaW4KPiA+Pj4+Pj4+ PiArICogYnJpZGdlLT5vcHMuIFRoaXMgZnVuY3Rpb24gc2hhbGwgbm90IGJlIGNhbGxlZCB3aGVu IHRoZSBmbGFnIGlzIG5vdCBzZXQuCj4gPj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+ICt2b2lkIGRy bV9icmlkZ2VfaHBkX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+Pj4+Pj4+ PiArewo+ID4+Pj4+Pj4+ICsJaWYgKCFicmlkZ2UgfHwgIWJyaWRnZS0+ZnVuY3MtPmhwZF9kaXNh YmxlKQo+ID4+Pj4+Pj4+ICsJCXJldHVybjsKPiA+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4gKwltdXRl eF9sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPj4+Pj4+Pj4gKwlicmlkZ2UtPmZ1bmNzLT5o cGRfZGlzYWJsZShicmlkZ2UpOwo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiArCWJyaWRnZS0+aHBk X2NiID0gTlVMTDsKPiA+Pj4+Pj4+PiArCWJyaWRnZS0+aHBkX2RhdGEgPSBOVUxMOwo+ID4+Pj4+ Pj4+ICsJbXV0ZXhfdW5sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPj4+Pj4+Pj4gK30KPiA+ Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfZGlzYWJsZSk7Cj4gPj4+ Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICsvKioKPiA+Pj4+Pj4+PiArICogZHJtX2JyaWRnZV9ocGRfbm90 aWZ5IC0gbm90aWZ5IGhvdCBwbHVnIGRldGVjdGlvbiBldmVudHMKPiA+Pj4+Pj4+PiArICogQGJy aWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gPj4+Pj4+Pj4gKyAqIEBzdGF0dXM6IG91 dHB1dCBjb25uZWN0aW9uIHN0YXR1cwo+ID4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+ICsgKiBCcmlk Z2UgZHJpdmVycyBzaGFsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gcmVwb3J0IGhvdCBwbHVnIGV2 ZW50cyB3aGVuIHRoZXkKPiA+Pj4+Pj4+PiArICogZGV0ZWN0IGEgY2hhbmdlIGluIHRoZSBvdXRw dXQgc3RhdHVzLCB3aGVuIGhvdCBwbHVnIGRldGVjdGlvbiBoYXMgYmVlbgo+ID4+Pj4+Pj4+ICsg KiBlbmFibGVkIGJ5IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy5ocGRfZW5hYmxlIGNhbGxiYWNrLgo+ ID4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9uIHNoYWxsIGJlIGNhbGxl ZCBpbiBhIGNvbnRleHQgdGhhdCBjYW4gc2xlZXAuCj4gPj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+ ICt2b2lkIGRybV9icmlkZ2VfaHBkX25vdGlmeShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ ID4+Pj4+Pj4+ICsJCQkgICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cykKPiA+Pj4+ Pj4+PiArewo+ID4+Pj4+Pj4+ICsJbXV0ZXhfbG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+ Pj4+Pj4+ICsJaWYgKGJyaWRnZS0+aHBkX2NiKQo+ID4+Pj4+Pj4+ICsJCWJyaWRnZS0+aHBkX2Ni KGJyaWRnZS0+aHBkX2RhdGEsIHN0YXR1cyk7Cj4gPj4+Pj4+IAo+ID4+Pj4+PiBTbyB0aGlzIGlz bid0IHF1aXRlIHdoYXQgSSBoYWQgaW4gbWluZC4gSW5zdGVhZCBzb21ldGhpbmcgbGlrZSB0aGlz Ogo+ID4+Pj4+PiAKPiA+Pj4+Pj4gCS8qIGl0ZXJhdGVzIG92ZXIgYWxsIGJyaWRnZXMgaW4gdGhl IGNoYWluIGNvbnRhaW5pbmcgQGJyaWRnZSAqLwo+ID4+Pj4+PiAJZm9yX2VhY2hfYnJpZGdlKHRt cF9icmlkZ2UsIGJyaWRnZSkgewo+ID4+Pj4+PiAJCWlmICh0bXBfYnJpZGdlID09IGJyaWRnZSkK PiA+Pj4+Pj4gCQkJY29udGludWU7Cj4gPj4+Pj4+IAkJaWYgKGJyaWRnZS0+aHBkX25vdGlmeSk7 Cj4gPj4+Pj4+IAkJCWJyaWRnZS0+aHBkX25vdGlmeSh0bXBfYnJpZGdlLCBicmlkZ2UsIHN0YXR1 cyk7Cj4gPj4+Pj4+IAl9Cj4gPj4+Pj4+IAo+ID4+Pj4+PiAJZW5jb2RlciA9IGVuY29kZXJfZm9y X2JyaWRnZShicmlkZ2UpOwo+ID4+Pj4+PiAJaWYgKGVuY29kZXItPmhlbHBlcl9wcml2YXRlLT5i cmlkZ2VfaHBkX25vdGlmeSkKPiA+Pj4+Pj4gCQllbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZS0+YnJp ZGdlX2hwZF9ub3RpZnkoZW5jb2RlciwgYnJpZGdlLCBzdGF0dXMpOwo+ID4+Pj4+PiAKPiA+Pj4+ Pj4gCWRldiA9IGJyaWRnZS0+ZGV2Cj4gPj4+Pj4+IAlpZiAoZGV2LT5tb2RlX2NvbmZpZy5oZWxw ZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkpCj4gPj4+Pj4+IAkJZGV2LT5tb2RlX2NvbmZp Zy5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoZGV2LCBicmlkZ2UsIHN0YXR1cykK PiA+Pj4+Pj4gCj4gPj4+Pj4+IE5vIHJlZ2lzdGVyIGNhbGxiYWNrIG5lZWRlZCwgbm8gbG9ja2lu ZyBuZWVkZWQsIGV2ZXJ5b25lIGdldHMgZXhhY3RseSB0aGUKPiA+Pj4+Pj4gaHBkIHRoZXkgd2Fu dC9uZWVkLgo+ID4+Pj4+IAo+ID4+Pj4+IEknbGwgcmVwbHkgdG8gdGhpcyBmdXJ0aGVyIGRvd24g dGhlIG1haWwgdGhyZWFkLCB0byBhZGRyZXNzIGFkZGl0aW9uYWwKPiA+Pj4+PiBjb21tZW50cy4K PiA+Pj4+PiAKPiA+Pj4+Pj4+PiArCW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ ID4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9icmlkZ2VfaHBk X25vdGlmeSk7Cj4gPj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICAjaWZkZWYgQ09ORklHX09GCj4gPj4+ Pj4+Pj4gIC8qKgo+ID4+Pj4+Pj4+ICAgKiBvZl9kcm1fZmluZF9icmlkZ2UgLSBmaW5kIHRoZSBi cmlkZ2UgY29ycmVzcG9uZGluZyB0byB0aGUgZGV2aWNlIG5vZGUgaW4KPiA+Pj4+Pj4+PiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRn ZS5oCj4gPj4+Pj4+Pj4gaW5kZXggMDhkYzE1ZjkzZGVkLi5iOTQ0NWFhNWIxZWYgMTAwNjQ0Cj4g Pj4+Pj4+Pj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPj4+Pj4+Pj4gKysrIGIv aW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPj4+Pj4+Pj4gQEAgLTIzLDggKzIzLDkgQEAKPiA+ Pj4+Pj4+PiAgI2lmbmRlZiBfX0RSTV9CUklER0VfSF9fCj4gPj4+Pj4+Pj4gICNkZWZpbmUgX19E Uk1fQlJJREdFX0hfXwo+ID4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+PiAtI2luY2x1ZGUgPGxpbnV4L2xp c3QuaD4KPiA+Pj4+Pj4+PiAgI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+Cj4gPj4+Pj4+Pj4gKyNp bmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gPj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5o Pgo+ID4+Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9tb2RlX29iamVjdC5oPgo+ID4+Pj4+Pj4+ ICAjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgo+ID4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+PiBAQCAt MzM0LDYgKzMzNSwxMTAgQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgewo+ID4+Pj4+Pj4+ICAJ ICovCj4gPj4+Pj4+Pj4gIAl2b2lkICgqYXRvbWljX3Bvc3RfZGlzYWJsZSkoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+PiAgCQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpOwo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+ICsJICog QGRldGVjdDoKPiA+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4gKwkgKiBDaGVjayBpZiBhbnl0aGlu ZyBpcyBhdHRhY2hlZCB0byB0aGUgYnJpZGdlIG91dHB1dC4KPiA+Pj4+Pj4+PiArCSAqCj4gPj4+ Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBpZiBub3QgaW1wbGVtZW50ZWQg dGhlIGJyaWRnZSB3aWxsIGJlCj4gPj4+Pj4+Pj4gKwkgKiBjb25zaWRlcmVkIGFzIGFsd2F5cyBo YXZpbmcgYSBjb21wb25lbnQgYXR0YWNoZWQgdG8gaXRzIG91dHB1dC4KPiA+Pj4+Pj4+PiArCSAq IEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgdGhpcyBjYWxsYmFjayBzaGFsbCBzZXQgdGhlCj4gPj4+ Pj4+Pj4gKwkgKiBEUk1fQlJJREdFX09QX0RFVEVDVCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdl LT5vcHMuCj4gPj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+ICsJICogUkVUVVJOUzoKPiA+Pj4+Pj4+ PiArCSAqCj4gPj4+Pj4+Pj4gKwkgKiBkcm1fY29ubmVjdG9yX3N0YXR1cyBpbmRpY2F0aW5nIHRo ZSBicmlkZ2Ugb3V0cHV0IHN0YXR1cy4KPiA+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+ICsJZW51 bSBkcm1fY29ubmVjdG9yX3N0YXR1cyAoKmRldGVjdCkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSk7Cj4gPj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4gKwkgKiBAZ2V0X21v ZGVzOgo+ID4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+PiArCSAqIEZpbGwgYWxsIG1vZGVzIGN1cnJl bnRseSB2YWxpZCBmb3IgdGhlIHNpbmsgaW50byB0aGUgJmRybV9jb25uZWN0b3IKPiA+Pj4+Pj4+ PiArCSAqIHdpdGggZHJtX21vZGVfcHJvYmVkX2FkZCgpLgo+ID4+Pj4+Pj4+ICsJICoKPiA+Pj4+ Pj4+PiArCSAqIFRoZSBAZ2V0X21vZGVzIGNhbGxiYWNrIGlzIG1vc3RseSBpbnRlbmRlZCB0byBz dXBwb3J0IG5vbi1wcm9iYWJsZQo+ID4+Pj4+Pj4+ICsJICogZGlzcGxheXMgc3VjaCBhcyBtYW55 IGZpeGVkIHBhbmVscy4gQnJpZGdlcyB0aGF0IHN1cHBvcnQgcmVhZGluZwo+ID4+Pj4+Pj4+ICsJ ICogRURJRCBzaGFsbCBsZWF2ZSBAZ2V0X21vZGVzIHVuaW1wbGVtZW50ZWQgYW5kIGltcGxlbWVu dCB0aGUKPiA+Pj4+Pj4+PiArCSAqICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfZWRpZCBjYWxsYmFj ayBpbnN0ZWFkLgo+ID4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sg aXMgb3B0aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgaXQgc2hhbGwgc2V0IHRoZQo+ID4+ Pj4+Pj4+ICsJICogRFJNX0JSSURHRV9PUF9NT0RFUyBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdl LT5vcHMuCj4gPj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+ICsJICogUkVUVVJOUzoKPiA+Pj4+Pj4+ PiArCSAqCj4gPj4+Pj4+Pj4gKwkgKiBUaGUgbnVtYmVyIG9mIG1vZGVzIGFkZGVkIGJ5IGNhbGxp bmcgZHJtX21vZGVfcHJvYmVkX2FkZCgpLgo+ID4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4gKwlp bnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4+Pj4gKwkJ CSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+Pj4+Pj4+PiArCj4gPj4+Pj4+ Pj4gKwkvKioKPiA+Pj4+Pj4+PiArCSAqIEBnZXRfZWRpZDoKPiA+Pj4+Pj4+PiArCSAqCj4gPj4+ Pj4+Pj4gKwkgKiBSZWFkIGFuZCBwYXJzZSB0aGUgRURJRCBkYXRhIG9mIHRoZSBjb25uZWN0ZWQg ZGlzcGxheS4KPiA+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4gKwkgKiBUaGUgQGdldF9lZGlkIGNh bGxiYWNrIGlzIHRoZSBwcmVmZXJyZWQgd2F5IG9mIHJlcG9ydGluZyBtb2RlCj4gPj4+Pj4+Pj4g KwkgKiBpbmZvcm1hdGlvbiBmb3IgYSBkaXNwbGF5IGNvbm5lY3RlZCB0byB0aGUgYnJpZGdlIG91 dHB1dC4gQnJpZGdlcwo+ID4+Pj4+Pj4+ICsJICogdGhhdCBzdXBwb3J0IHJlYWRpbmQgRURJRCBz aGFsbCBpbXBsZW1lbnQgdGhpcyBjYWxsYmFjayBhbmQgbGVhdmUKPiA+Pj4+Pj4+PiArCSAqIHRo ZSBAZ2V0X21vZGVzIGNhbGxiYWNrIHVuaW1wbGVtZW50ZWQuCj4gPj4+Pj4+Pj4gKwkgKgo+ID4+ Pj4+Pj4+ICsJICogVGhlIGNhbGxlciBvZiB0aGlzIG9wZXJhdGlvbiBzaGFsbCBmaXJzdCB2ZXJp ZnkgdGhlIG91dHB1dAo+ID4+Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgYW5kIHJlZnJh aW4gZnJvbSByZWFkaW5nIEVESUQgZnJvbSBhIGRpc2Nvbm5lY3RlZAo+ID4+Pj4+Pj4+ICsJICog b3V0cHV0Lgo+ID4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMg b3B0aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgaXQgc2hhbGwgc2V0IHRoZQo+ID4+Pj4+ Pj4+ICsJICogRFJNX0JSSURHRV9PUF9FRElEIGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9w cy4KPiA+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4gKwkgKiBSRVRVUk5TOgo+ID4+Pj4+Pj4+ICsJ ICoKPiA+Pj4+Pj4+PiArCSAqIEFuIGVkaWQgc3RydWN0dXJlIG5ld2x5IGFsbG9jYXRlZCB3aXRo IGttYWxsb2MoKSAob3Igc2ltaWxhcikgb24KPiA+Pj4+Pj4+PiArCSAqIHN1Y2Nlc3MsIG9yIE5V TEwgb3RoZXJ3aXNlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nCj4gPj4+ Pj4+Pj4gKwkgKiB0aGUgcmV0dXJuZWQgZWRpZCBzdHJ1Y3R1cmUgd2l0aCBrZnJlZSgpLgo+ID4+ Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4gKwlzdHJ1Y3QgZWRpZCAqKCpnZXRfZWRpZCkoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+PiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKTsKPiA+Pj4+Pj4+IAo+ID4+Pj4+Pj4gSXQgb3ZlcmxhcHMgd2l0aCBnZXRf bW9kZXMsIEkgZ3Vlc3MgcHJlc2VuY2Ugb2Ygb25lIG9wcyBzaG91bGQgZGlzYWxsb3cKPiA+Pj4+ Pj4+IHByZXNlbmNlIG9mIGFub3RoZXIgb25lPwo+ID4+Pj4+Pj4gCj4gPj4+Pj4+PiBJIGFtIG5v dCByZWFsbHkgY29udmluY2VkIHdlIG5lZWQgdGhpcyBvcCBhdCBhbGwsIGNhbm5vdCB3ZSBqdXN0 IGFzc2lnbgo+ID4+Pj4+Pj4gc29tZSBoZWxwZXIgZnVuY3Rpb24gdG8gLmdldF9tb2RlcyBjYiwg d2hpY2ggd2lsbCBkbyB0aGUgc2FtZT8KPiA+Pj4+Pj4gCj4gPj4+Pj4+IFBsYW4gQik6IGRpdGNo IC0+Z2V0X2VkaWQsIHJlcXVpcmUgdGhhdCB0aGUgZHJpdmVyIGhhcyAtPmdldF9tb2RlcyBpbiB0 aGF0Cj4gPj4+Pj4+IGNhc2UsIGFuZCByZXF1aXJlIHRoYXQgaWYgaXQgaGFzIGFuIGVkaWQgaXQg bXVzdCBmaWxsIG91dCBjb25uZWN0b3ItPmluZm8KPiA+Pj4+Pj4gYW5kIGNvbm5lY3Rvci0+ZWRp ZCBjb3JyZWN0bHkuCj4gPj4+Pj4gCj4gPj4+Pj4gSSB0aGluayB0aGF0J3MgZG9hYmxlLCBJJ2xs IGhhdmUgYSBsb29rLgo+ID4+Pj4gCj4gPj4+PiBTbyBJIGhhZCBhIGxvb2ssIGFuZCB3aGlsZSB0 aGlzIGlzIGRvYWJsZSwgaXQgd291bGQgZXNzZW50aWFsbHkgbWVhbgo+ID4+Pj4gdGhhdCBhbGwg YnJpZGdlcyB0aGF0IHJldHJpZXZlIG1vZGVzIGZyb20gRURJRCB3b3VsZCBoYXZlIHRvIHJvbGwg b3V0Cj4gPj4+PiB0aGVpciBvd24gdmVyc2lvbiBvZiB0aGUgZm9sbG93aW5nIGNvZGU6Cj4gPj4+ PiAKPiA+Pj4+IHN0YXRpYyBpbnQgZHJtX2JyaWRnZV9jb25uZWN0b3JfZ2V0X21vZGVzX2VkaWQo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+Pj4+IAkJCQkJICAgICAgIHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gPj4+PiB7Cj4gPj4+PiAJZW51bSBkcm1fY29ubmVjdG9y X3N0YXR1cyBzdGF0dXM7Cj4gPj4+PiAJc3RydWN0IGVkaWQgKmVkaWQ7Cj4gPj4+PiAJaW50IG47 Cj4gPj4+PiAKPiA+Pj4+IAlzdGF0dXMgPSBkcm1fYnJpZGdlX2Nvbm5lY3Rvcl9kZXRlY3QoY29u bmVjdG9yLCBmYWxzZSk7Cj4gPj4+PiAJaWYgKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nv bm5lY3RlZCkKPiA+Pj4+IAkJZ290byBub19lZGlkOwo+ID4+Pj4gCj4gPj4+PiAJZWRpZCA9IGJy aWRnZS0+ZnVuY3MtPmdldF9lZGlkKGJyaWRnZSwgY29ubmVjdG9yKTsKPiA+Pj4+IAlpZiAoIWVk aWQgfHwgIWRybV9lZGlkX2lzX3ZhbGlkKGVkaWQpKSB7Cj4gPj4+PiAJCWtmcmVlKGVkaWQpOwo+ ID4+Pj4gCQlnb3RvIG5vX2VkaWQ7Cj4gPj4+PiAJfQo+ID4+Pj4gCj4gPj4+PiAJZHJtX2Nvbm5l Y3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOwo+ID4+Pj4gCW4gPSBk cm1fYWRkX2VkaWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKPiA+Pj4+IAo+ID4+Pj4gCWtmcmVl KGVkaWQpOwo+ID4+Pj4gCXJldHVybiBuOwo+ID4+Pj4gCj4gPj4+PiBub19lZGlkOgo+ID4+Pj4g CWRybV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBOVUxMKTsKPiA+ Pj4+IAlyZXR1cm4gMDsKPiA+Pj4+IH0KPiA+Pj4+IAo+ID4+Pj4gSXMgdGhpcyBkZXNpcmVkID8K PiA+Pj4gCj4gPj4+IFdlIHN0b3JlIHRoZSBlZGlkLCBhbmQgd2Ugc3RvcmUgYSBsb3Qgb2YgZGVj b2RlZCBpbmZvcm1hdGlvbiBpbgo+ID4+PiBkcm1fY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uIENh bid0IHRoZXkganVzdCBsb29rIHRoZXJlPyBSZS1mZXRjaGluZyB0aGUKPiA+Pj4gZWRpZCBkZWZp bml0ZWx5IHNvdW5kcyBsaWtlIHRoZSB3cm9uZyB0aGluZyB0byBkby4KPiA+Pj4gCj4gPj4+IFdl IG1pZ2h0IHJ1biBpbnRvIHNvbWUgb3JkZXJpbmcgaXNzdWUgaGVyZSBJIGd1ZXNzIHdpdGggaG90 cGx1Z3MgYW5kIHdobydzCj4gPj4+IGZldGNoaW5nIHRoZSBlZGlkIGFuZCBldmVyeXRoaW5nIGxp a2UgdGhhdC4KPiA+PiAKPiA+PiBUaGF0J3MgZXhhY3RseSB3aGF0IEkgd2FzIGFib3V0IHRvIGFu c3dlciBhZnRlciByZWFkaW5nIHlvdXIgZmlyc3QKPiA+PiBwYXJhZ3JhcGggOi0pIEkgYmVsaWV2 ZSBjYWNoaW5nIEVESUQgaXMgYSBnb29kIGlkZWEsIGJ1dCBteSBmYW1pbGlhcml0eQo+ID4+IHdp dGggaG90cGx1Zy1yZWxhdGVkIGlzc3VlcyBpcyBsaW1pdGVkIHRvIGEgaGFuZGZ1bCBvZiBzeXN0 ZW1zLCBhbmQgSSdtCj4gPj4gc3VyZSBJJ20gbWlzc2luZyBzb21lIGNvbW1vbiBwcm9ibGVtcy4g SWYgeW91IGNhbiB0ZWxsIG1lIGhvdyB5b3UgdGhpbmsKPiA+PiB0aGlzIHNob3VsZCBiZSBkb25l LCBJIGNhbiBnaXZlIGl0IGEgdHJ5Lgo+ID4gCj4gPiBJIHRoaW5rIGFsbCB5b3UgbmVlZCB0byBk byBpcyBtYWtlIHN1cmUgdGhhdCB3aGVuIGhhbmRsaW5nIGEgaHBkLCB0aGUgZWRpZAo+ID4gaXMg ZmV0Y2hlZCBmaXJzdC4gQmVmb3JlIG90aGVyIHBhcnRzIG9mIHRoZSBicmlkZ2UgdHJ5IHRvIHJl Y29uZmlndXJlCj4gPiB0aGVtc2VsdmVzIC4uLgo+ID4gCj4gPj4+IEFsc28gbWF5YmUgSSdtIG1p c3NpbmcgdGhlIHBvaW50IGhlcmUsIGFuZCB0aGlua2luZyB0b28gbXVjaCBvZgo+ID4+PiAtPmdl dF9tb2RlcyBvbiB0aGUgY29ubmVjdG9yLiBCdXQgdGhlbiBJJ20gbm90IGNsZWFyIG9uIHdoeSB0 aGUgYnJpZGdlCj4gPj4+IG5lZWRzIHRoZSBjb25uZWN0b3IsIGFuZCB3aHkgaXQgaW5zdGVhZCBj YW4ndCBqdXN0IHJldHVybiB0aGUgZWRpZCBpdCBjYW4KPiA+Pj4gcmVhZCBhbmQgbGV0IHRoZSBj YWxsZXIvY29yZSBmaWd1cmUgb3V0IGV2ZXJ5dGhpbmcgZWxzZT8KPiA+PiAKPiA+PiBUaGF0J3Mg ZXhhY3RseSB3aGF0IHRoZSAuZ2V0X2VkaWQoKSBvcGVyYXRpb24gdGhhdCB5b3UgYXNrZWQgbWUg dG8KPiA+PiByZW1vdmUgZGlkLi4uIDotKSBZb3UgZGlkbid0IGxpa2UgdGhlIGZhY3QgdGhhdCBp dCBkdXBsaWNhdGVkIHRoZQo+ID4+IC5nZXRfbW9kZXMoKSBsb2dpYy4gU2hvdWxkIEkgYWRkIGl0 IGJhY2ssIGFuZCBjbGVhcmx5IGRvY3VtZW50Cj4gPj4gLmdldF9tb2RlcygpIGFzIGEgZmFsbGJh Y2sgdXNlZCBvbmx5IHdoZW4gdGhlIGNvbm5lY3RvciBkb2Vzbid0IHVzZSBFRElECj4gPj4gPwo+ ID4gCj4gPiBJIGd1ZXNzIEknbSBtYWtpbmcgYSBiaXQgYSBmb29sIG9mIG15c2VsZiBoZXJlLiBX aGF0IEkgbWVhbnQgaXMgdGhhdCBpZiB3ZQo+ID4gZG8gd2FudCB0byBrZWVwIC0+Z2V0X2VkaWQs IHRoZW4gd2h5IGRvIHlvdSBuZWVkIHRvIHBhc3MgdGhlIGNvbm5lY3Rvcj8KPiA+IEp1c3QgcmV0 dXJuIHRoZSBlZGlkIGJsb2IsIGFuZCBsZXQgdGhlIGNhbGxlciBwYXJzZSBpdCwgYW5kIHN0dWZm IGFsbAo+ID4gcmVsZXZhbnQgZGF0YSBpbnRvIGRybV9jb25uZWN0b3IuIEp1c3QgdGhpbmtpbmcg YWxvbmcgdGhlIGxpbmVzIG9mIHlvdXIKPiA+IGdvYWwgb2YgbWFraW5nIHRoZSBicmlkZ2UgZHJp dmVycyBhcyBkdW1iIGFzIHBvc3NpYmxlLgo+ID4gCj4gPiBTYW1lIHRoaW5nIGZvciAtPmdldF9t b2RlcyB3b3VsZCBiZSBuZWF0IHRvbywgYnV0IHdlIGRvbid0IGhhdmUgYSBuaWNlCj4gPiBkYXRh c3RydWN0dXJlIGZvciB0aGlzLiBXZSdkIG5lZWQgdG8gcGFzcyBib3RoIGEgbGlzdF9oZWFkIGFu ZCBhIHBvaW50ZXIKPiA+IHRvIHRoZSBkcm1fZGlzcGxheV9pbmZvIEkgdGhpbmsuCj4gPiAKPiA+ IFRoYXQgd291bGQgZGVjb3VwbGUgYnJpZGdlcyBldmVuIG1vcmUgZnJvbSBjb25uZWN0b3IsIHdo aWNoIEkgdGhpbmsgaXMKPiA+IHNvbWV3aGVyZSBvbiB5b3VyIGdvYWwgbGlzdCAuLi4KPiAKPiBT byBJIGhhZCBhIGxvb2sgYXQgdGhhdC4gV2Ugd291bGQgbmVlZCB0byByZW1vdmUgdGhlIGNvbm5l Y3RvciBhcmd1bWVudAo+IGZyb20gZHJtX2RvX2dldF9lZGlkKCkuIFRoZSBjb25uZWN0b3IgY3Vy cmVudGx5IHN0b3JlcyBhIGZldyBmaWVsZHMKPiByZWxhdGVkIHRvIEVESUQgcGFyc2luZzoKPiAK PiAgICAgICAgIC8qKgo+ICAgICAgICAgICogQG51bGxfZWRpZF9jb3VudGVyOiB0cmFjayBzaW5r cyB0aGF0IGdpdmUgdXMgYWxsIHplcm9zIGZvciB0aGUgRURJRC4KPiAgICAgICAgICAqIE5lZWRl ZCB0byB3b3JrYXJvdW5kIHNvbWUgSFcgYnVncyB3aGVyZSB3ZSBnZXQgYWxsIDBzCj4gICAgICAg ICAgKi8KPiAgICAgICAgIGludCBudWxsX2VkaWRfY291bnRlcjsKPiAKPiAgICAgICAgIC8qKiBA YmFkX2VkaWRfY291bnRlcjogdHJhY2sgc2lua3MgdGhhdCBnaXZlIHVzIGFuIEVESUQgd2l0aCBp bnZhbGlkIGNoZWNrc3VtICovCj4gICAgICAgICB1bnNpZ25lZCBiYWRfZWRpZF9jb3VudGVyOwo+ IAo+ICAgICAgICAgLyoqCj4gICAgICAgICAgKiBAZWRpZF9jb3JydXB0OiBJbmRpY2F0ZXMgd2hl dGhlciB0aGUgbGFzdCByZWFkIEVESUQgd2FzIGNvcnJ1cHQuIFVzZWQKPiAgICAgICAgICAqIGlu IERpc3BsYXlwb3J0IGNvbXBsaWFuY2UgdGVzdGluZyAtIERpc3BsYXlwb3J0IExpbmsgQ1RTIENv cmUgMS4yCj4gICAgICAgICAgKiByZXYxLjEgNC4yLjIuNgo+ICAgICAgICAgICovCj4gICAgICAg ICBib29sIGVkaWRfY29ycnVwdDsKPiAKPiBXZSB3b3VsZCBuZWVkIHRvIGRlY291cGxlIHRoYXQg ZnJvbSBkcm1fY29ubmVjdG9yLiBPbmUgb3B0aW9uIHdvdWxkIGJlCj4gdG8gY3JlYXRlIGEgbmV3 IGRybV9lZGlkIHN0cnVjdHVyZSB0aGF0IHdvdWxkIHN0b3JlIHRob3NlIHRocmVlIGZpZWxkcywK PiBhcyB3ZWxsIGFzIGEgc3RydWN0IGVkaWQsIGFuZCByZXR1cm4gaXQgZnJvbSBkcm1fZG9fZ2V0 X2VkaWQoKSBpbnN0ZWFkCj4gb2YgdGhlIHJhdyBzdHJ1Y3QgZWRpZC4gV291bGQgeW91IHByZWZl ciBhIGRpZmZlcmVudCBzb2x1dGlvbiA/IERvIHlvdQo+IHRoaW5rIHRoYXQncyBhIHByZXJlcXVp c2l0ZSB0byBmb3IgdGhpcyBwYXRjaCA/CgpUaGUgbW9yZSBJIGxvb2sgYXQgRURJRCBwYXJzaW5n LCB0aGUgbW9yZSBpdCBmZWVscyB0aGF0IHdlIHNob3VsZApyZWRlc2lnbiB0aGUgd2hvbGUgSFBE IGFuZCBFRElEIGdldCBoYW5kbGluZywgYW5kIHRoZSBtb3JlIGl0IGJlY29tZXMKb3V0IG9mIHNj b3BlIGZvciB0aGlzIHBhdGNoIHNlcmllcyA6LVMgRURJRCByZXRyaWV2YWwgYW5kIGV4dHJhY3Rp b24gb2YKaW5mb3JtYXRpb24gZnJvbSBFRElEIGlzIGludGVydHdpbmVkLCBmb3IgaW5zdGFuY2Ug ZHJtX2dldF9lZGlkKCkKcGVyZm9ybXMgdGhlIGZvbGxvd2luZzoKCnN0cnVjdCBlZGlkICpkcm1f Z2V0X2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKCQkJICBzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkYXB0ZXIpCnsKCXN0cnVjdCBlZGlkICplZGlkOwoKCWlmIChjb25uZWN0b3It PmZvcmNlID09IERSTV9GT1JDRV9PRkYpCgkJcmV0dXJuIE5VTEw7CgoJaWYgKGNvbm5lY3Rvci0+ Zm9yY2UgPT0gRFJNX0ZPUkNFX1VOU1BFQ0lGSUVEICYmICFkcm1fcHJvYmVfZGRjKGFkYXB0ZXIp KQoJCXJldHVybiBOVUxMOwoKCWVkaWQgPSBkcm1fZG9fZ2V0X2VkaWQoY29ubmVjdG9yLCBkcm1f ZG9fcHJvYmVfZGRjX2VkaWQsIGFkYXB0ZXIpOwoJaWYgKGVkaWQpCgkJZHJtX2dldF9kaXNwbGF5 aWQoY29ubmVjdG9yLCBlZGlkKTsKCXJldHVybiBlZGlkOwp9CgpJIGRvbid0IHRoaW5rIHRoZSBk cm1fZ2V0X2Rpc3BsYXlpZCgpIGNhbGwgYmVsb25ncyB0aGVyZS4gTW92aW5nIGl0IHRvCnRoZSBu dW1lcm91cyBjYWxsZXJzIG9mIGRybV9nZXRfZWRpZCgpIGRvZXNuJ3Qgc2VlbSBhIGdvb2QgaWRl YS4gSWRlYWxseQppdCBzaG91bGQgYmUgZG9uZSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBvcHVsYXRp bmcgdGhlIG1vZGVzIGZyb20gRURJRCwKYnV0IEknbSBwcmV0dHkgc3VyZSB0aGF0IHdvdWxkIGJy ZWFrIHRoaW5ncywgd2l0aCBub3QgYWxsIEVESUQgcmV0cmlldmFsCnJlc3VsdGluZyBpbiBtb2Rl cyB1cGRhdGVzLgoKQSBmZXcgZHJpdmVycyBjYWxsIGRybV9kb19nZXRfZWRpZCgpIGRpcmVjdGx5 LCBpbiBvcmRlciB0byBwcm92aWRlIGEKY3VzdG9tIEVESUQgYmxvY2sgcmVhZCBmdW5jdGlvbiwg YW5kIHRoZXkgc2tpcCBjb25uZWN0b3ItPmZvcmNlIGhhbmRsaW5nCmFuZCBkcm1fZ2V0X2Rpc3Bs YXlpZCgpIGFzIGEgcmVzdWx0LiBJbiBtb3N0IGNhc2UgSSBhc3N1bWUgdGhhdCdzIGEgYnVnCnRo YXQganVzdCB3ZW50IHVubm90aWNlZC4KCkRlY291cGxpbmcgRURJRCByZWFkIGZyb20gZHJtX2Nv bm5lY3RvciBmb3IgYnJpZGdlcyBpbiBhIHByb3BlciB3YXkgc2VlbQpsaWtlIGEgaHVnZSBwaWVj ZSBvZiB3b3JrIHRvIG1lLCBhbmQgSSByZWFsbHkgY2FuJ3QgbWFrZSBpdCBhCnByZXJlcXVpc2l0 ZSBmb3IgdGhpcyBwYXRjaC4KCj4gPj4+Pj4+IEJ0dyBpZiBhIGhwZCBoYXBwZW5zLCB3aG8ncyBy ZXNwb25pYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUgZWRpZC9tb2RlIGxpc3QKPiA+Pj4+Pj4gaW4g dGhlIGNvbm5lY3RvciBpcyB1cC10by1kYXRlPyBXaXRoIHlvdXIgY3VycmVudCBjYWxsYmFjayBk ZXNpZ24gdGhhdCdzCj4gPj4+Pj4+IHVwIHRvIHRoZSBjYWxsYmFjaywgd2hpY2ggZG9lc24ndCBm ZWVsIGdyZWF0LiBNYXliZSAgZHJtX2JyaWRnZV9ocGRfbm90aWZ5Cj4gPj4+Pj4+IHNob3VsZCBn dWFyYW50ZWUgdGhhdCBpdCdsbCBmaXJzdCB3YWxrIHRoZSBjb25uZWN0b3JzIHRvIHVwZGF0ZSBz dGF0dXMgYW5kCj4gPj4+Pj4+IGVkaWQvbW9kZSBsaXN0IGZvciB0aGUgZmluYWwgZHJtX2Nvbm5l Y3Rvci4gQW5kIHRoZW4gaW5zdGVhZCBvZiBqdXN0Cj4gPj4+Pj4+IHBhc3NpbmcgdGhlIHNpbXBs ZSAic3RhdHVzIiwgaXQnbGwgcGFzcyB0aGUgY29ubmVjdG9yLCB3aXRoIGV2ZXJ5dGhpbmcKPiA+ Pj4+Pj4gY29ycmVjdGx5IHVwZGF0ZWQuCj4gPj4+Pj4+IAo+ID4+Pj4+PiBPdGhlcndpc2UgZXZl cnlvbmUgaW50ZXJlc3RlZCBpbiB0aGF0IGhwZCBzaWduYWwgd2lsbCBnbyBhbmQgcmUtZmV0Y2gg dGhlCj4gPj4+Pj4+IGVkaWQsIHdoaWNoIGlzIG5vdCBzbyBhd2Vzb21lIDotKQo+ID4+Pj4+IAo+ ID4+Pj4+IFdpdGggdGhlIGN1cnJlbnQgZGVzaWduIHRoZXJlJ3MgYSBzaW5nbGUgbGlzdGVuZXIs IHNvIGl0J3Mgbm90IGEgYmlnCj4gPj4+Pj4gZGVhbCA6LSkgRnVydGhlcm1vcmUsIHRoZSBsaXN0 ZW5lciBpcyB0aGUgaGVscGVyIHRoYXQgY3JlYXRlcyBhCj4gPj4+Pj4gY29ubmVjdG9yIG9uIHRv cCBvZiBhIGNoYWluIG9mIGJyaWRnZXMsIHNvIGl0J3MgYSBwcmV0dHkgZ29vZCBwbGFjZSB0bwo+ ID4+Pj4+IGhhbmRsZSB0aGlzLiBTZWUgdGhlIGNhbGwgdG8gZHJtX2ttc19oZWxwZXJfaG90cGx1 Z19ldmVudCgpIGluCj4gPj4+Pj4gZHJtX2JyaWRnZV9jb25uZWN0b3JfaHBkX2NiKCkuCj4gPj4+ Pj4gCj4gPj4+Pj4gSSdtIGFsbCBmb3IgcmV3b3JraW5nIEhQRCBhbmQgbW9kZSBmZXRjaGluZywg YnV0IEkgdGhpbmsgaXQncyBhIGJpdCB0b28KPiA+Pj4+PiBiaWcgb2YgYSByZXF1aXJlbWVudCBh cyBhIHByZXJlcXVpc2l0ZSBmb3IgdGhpcyBzZXJpZXMgKG9yIGFzIHBhcnQgb2YKPiA+Pj4+PiB0 aGlzIHNlcmllcykuIFdlIGhhdmUgaGFyZHdhcmUgdGhhdCBjYW4gcmVwb3J0IEhQRCB3aXRoIHZh cmlvdXMgbGV2ZWwgb2YKPiA+Pj4+PiBkZXRhaWxzIChmcm9tICJzb21ldGhpbmcgaGFwcGVuZWQg b24gYSBjb25uZWN0b3IiIHRvICJ0aGlzIHBhcnRpY3VsYXIKPiA+Pj4+PiBldmVudCBoYXBwZW5l ZCBvbiB0aGlzIHBhcnRpY3VsYXIgY29ubmVjdG9yIiksIGFuZCB3ZSBjaGFubmVsIHRoYXQKPiA+ Pj4+PiB0aHJvdWdoIGhlbHBlcnMgc3VjaCBhcyBkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50 KCkgdGhhdCBsb3NlIHRoZQo+ID4+Pj4+IGRldGFpbHMgYW5kIGdvIHRocm91Z2ggYSBoZWF2eSBt ZWNoYW5pc20gdG8gcmVmZXRjaCBldmVyeXRoaW5nLiBJCj4gPj4+Pj4gdW5kZXJzdGFuZCB0aGlz IGlzIG5lZWRlZCBpbiBtYW55IGNhc2VzLCBidXQgSSB0aGluayB0aGVyZSdzIHJvb20gZm9yCj4g Pj4+Pj4gaW1wcm92ZW1lbnQuIFRoaXMgc2VyaWVzLCBpbiBteSBvcGluaW9uLCBkb2Vzbid0IGdv IGluIHRoZSB3cm9uZwo+ID4+Pj4+IGRpcmVjdGlvbiBpbiB0aGF0IHJlZ2FyZCwgYXMgaXQgZXZl bnR1YWxseSBjYWxscwo+ID4+Pj4+IGRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoKSwgc28g SSB0aGluayBpbXByb3ZlbWVudHMgd291bGQgbWFrZSBzZW5zZQo+ID4+Pj4+IG9uIHRvcCBvZiBp dC4gSSdtIGV2ZW4gd2lsbGluZyB0byB3b3JrIG9uIHRoaXMsIHByb3ZpZGVkIEkgZ2V0IGZlZWRi YWNrCj4gPj4+Pj4gb24gd2hhdCBpcyBkZXNpcmVkLgo+ID4+Pj4+IAo+ID4+Pj4+Pj4+ICsJLyoq Cj4gPj4+Pj4+Pj4gKwkgKiBAbG9zdF9ob3RwbHVnOgo+ID4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+ PiArCSAqIE5vdGlmeSB0aGUgYnJpZGdlIG9mIGRpc3BsYXkgZGlzY29ubmVjdGlvbi4KPiA+Pj4+ Pj4+PiArCSAqCj4gPj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBpdCBt YXkgYmUgaW1wbGVtZW50ZWQgYnkgYnJpZGdlcyB0aGF0Cj4gPj4+Pj4+Pj4gKwkgKiBuZWVkIHRv IGJlIG5vdGlmaWVkIG9mIGRpc3BsYXkgZGlzY29ubmVjdGlvbiBmb3IgaW50ZXJuYWwgcmVhc29u cy4KPiA+Pj4+Pj4+PiArCSAqIE9uZSB1c2UgY2FzZSBpcyB0byByZXNldCB0aGUgaW50ZXJuYWwg c3RhdGUgb2YgQ0VDIGNvbnRyb2xsZXJzIGZvcgo+ID4+Pj4+Pj4+ICsJICogSERNSSBicmlkZ2Vz Lgo+ID4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4gKwl2b2lkICgqbG9zdF9ob3RwbHVnKShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4gKwkvKioKPiA+ Pj4+Pj4+PiArCSAqIEBocGRfZW5hYmxlOgo+ID4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+PiArCSAq IEVuYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24uIEZyb20gbm93IG9uIHRoZSBicmlkZ2Ugc2hhbGwg Y2FsbAo+ID4+Pj4+Pj4+ICsJICogZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCkgZWFjaCB0aW1lIGEg Y2hhbmdlIGlzIGRldGVjdGVkIGluIHRoZSBvdXRwdXQKPiA+Pj4+Pj4+PiArCSAqIGNvbm5lY3Rp b24gc3RhdHVzLCB1bnRpbCBob3QgcGx1ZyBkZXRlY3Rpb24gZ2V0cyBkaXNhYmxlZCB3aXRoCj4g Pj4+Pj4+Pj4gKwkgKiBAaHBkX2Rpc2FibGUuCj4gPj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+ICsJ ICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgc2hhbGwgb25seSBiZSBpbXBsZW1lbnRl ZCBieSBicmlkZ2VzCj4gPj4+Pj4+Pj4gKwkgKiB0aGF0IHN1cHBvcnQgaG90LXBsdWcgbm90aWZp Y2F0aW9uIHdpdGhvdXQgcG9sbGluZy4gQnJpZGdlcyB0aGF0Cj4gPj4+Pj4+Pj4gKwkgKiBpbXBs ZW1lbnQgaXQgc2hhbGwgYWxzbyBpbXBsZW1lbnQgdGhlIEBocGRfZGlzYWJsZSBjYWxsYmFjayBh bmQgc2V0Cj4gPj4+Pj4+Pj4gKwkgKiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpbiB0aGVp ciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4gKwl2b2lkICgq aHBkX2VuYWJsZSkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4+Pj4gKwo+ID4+ Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4gKwkgKiBAaHBkX2Rpc2FibGU6Cj4gPj4+Pj4+Pj4gKwkg Kgo+ID4+Pj4+Pj4+ICsJICogRGlzYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24uIE9uY2UgdGhpcyBm dW5jdGlvbiByZXR1cm5zIHRoZSBicmlkZ2UKPiA+Pj4+Pj4+PiArCSAqIHNoYWxsIG5vdCBjYWxs IGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHdoZW4gYSBjaGFuZ2UgaW4gdGhlIG91dHB1dAo+ID4+ Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgb2NjdXJzLgo+ID4+Pj4+Pj4+ICsJICoKPiA+ Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwgYW5kIHNoYWxsIG9ubHkgYmUg aW1wbGVtZW50ZWQgYnkgYnJpZGdlcwo+ID4+Pj4+Pj4+ICsJICogdGhhdCBzdXBwb3J0IGhvdC1w bHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBvbGxpbmcuIEJyaWRnZXMgdGhhdAo+ID4+Pj4+Pj4+ ICsJICogaW1wbGVtZW50IGl0IHNoYWxsIGFsc28gaW1wbGVtZW50IHRoZSBAaHBkX2VuYWJsZSBj YWxsYmFjayBhbmQgc2V0Cj4gPj4+Pj4+Pj4gKwkgKiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxh ZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4g Kwl2b2lkICgqaHBkX2Rpc2FibGUpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ID4+Pj4+ Pj4+ICB9Owo+ID4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+PiAgLyoqCj4gPj4+Pj4+Pj4gQEAgLTM3Miw2 ICs0NzcsMzggQEAgc3RydWN0IGRybV9icmlkZ2VfdGltaW5ncyB7Cj4gPj4+Pj4+Pj4gIAlib29s IGR1YWxfbGluazsKPiA+Pj4+Pj4+PiAgfTsKPiA+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4gKy8qKgo+ ID4+Pj4+Pj4+ICsgKiBlbnVtIGRybV9icmlkZ2Vfb3BzIC0gQml0bWFzayBvZiBvcGVyYXRpb25z IHN1cHBvcnRlZCBieSB0aGUgYnJpZGdlCj4gPj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+ICtlbnVt IGRybV9icmlkZ2Vfb3BzIHsKPiA+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+ICsJICogQERSTV9C UklER0VfT1BfREVURUNUOiBUaGUgYnJpZGdlIGNhbiBkZXRlY3QgZGlzcGxheXMgY29ubmVjdGVk IHRvCj4gPj4+Pj4+Pj4gKwkgKiBpdHMgb3V0cHV0LiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxh ZyBzaGFsbCBpbXBsZW1lbnQgdGhlCj4gPj4+Pj4+Pj4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy0+ ZGV0ZWN0IGNhbGxiYWNrLgo+ID4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4gKwlEUk1fQlJJREdF X09QX0RFVEVDVCA9IEJJVCgwKSwKPiA+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+ICsJICogQERS TV9CUklER0VfT1BfRURJRDogVGhlIGJyaWRnZSBjYW4gcmV0cmlldmUgdGhlIEVESUQgb2YgdGhl IGRpc3BsYXkKPiA+Pj4+Pj4+PiArCSAqIGNvbm5lY3RlZCB0byBpdHMgb3V0cHV0LiBCcmlkZ2Vz IHRoYXQgc2V0IHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQKPiA+Pj4+Pj4+PiArCSAqIHRoZSAm ZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X2VkaWQgY2FsbGJhY2suCj4gPj4+Pj4+Pj4gKwkgKi8KPiA+ Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfRURJRCA9IEJJVCgxKSwKPiA+Pj4+Pj4+PiArCS8qKgo+ ID4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfSFBEOiBUaGUgYnJpZGdlIGNhbiBkZXRlY3Qg aG90LXBsdWcgYW5kIGhvdC11bnBsdWcKPiA+Pj4+Pj4+PiArCSAqIHdpdGhvdXQgcmVxdWlyaW5n IHBvbGxpbmcuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsCj4gPj4+Pj4+Pj4gKwkg KiBpbXBsZW1lbnQgdGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5ocGRfZW5hYmxlIGFuZAo+ID4+Pj4+ Pj4+ICsJICogJmRybV9icmlkZ2VfZnVuY3MtPmRpc2FibGVfaHBkX2NiIGNhbGxiYWNrcy4KPiA+ Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+ICsJRFJNX0JSSURHRV9PUF9IUEQgPSBCSVQoMiksCj4g Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+PiArCSAqIEBEUk1fQlJJREdFX09QX01PREVTOiBUaGUg YnJpZGdlIGNhbiByZXRyaWV2aW5nIHRoZSBtb2RlcyBzdXBwb3J0ZWQKPiA+Pj4+Pj4+PiArCSAq IGJ5IHRoZSBkaXNwbGF5IGF0IGl0cyBvdXRwdXQuIFRoaXMgZG9lcyBub3QgaW5jbHVkZSByZWFk aW5kIEVESUQKPiA+Pj4+Pj4+PiArCSAqIHdoaWNoIGlzIHNlcGFyYXRlbHkgY292ZXJlZCBieSBA RFJNX0JSSURHRV9PUF9FRElELiBCcmlkZ2VzIHRoYXQgc2V0Cj4gPj4+Pj4+Pj4gKwkgKiB0aGlz IGZsYWcgc2hhbGwgaW1wbGVtZW50IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X21vZGVzIGNh bGxiYWNrLgo+ID4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4gKwlEUk1fQlJJREdFX09QX01PREVT ID0gQklUKDMpLAo+ID4+Pj4+Pj4+ICt9Owo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiAgLyoqCj4g Pj4+Pj4+Pj4gICAqIHN0cnVjdCBkcm1fYnJpZGdlIC0gY2VudHJhbCBEUk0gYnJpZGdlIGNvbnRy b2wgc3RydWN0dXJlCj4gPj4+Pj4+Pj4gICAqLwo+ID4+Pj4+Pj4+IEBAIC0zOTgsNiArNTM1LDI5 IEBAIHN0cnVjdCBkcm1fYnJpZGdlIHsKPiA+Pj4+Pj4+PiAgCWNvbnN0IHN0cnVjdCBkcm1fYnJp ZGdlX2Z1bmNzICpmdW5jczsKPiA+Pj4+Pj4+PiAgCS8qKiBAZHJpdmVyX3ByaXZhdGU6IHBvaW50 ZXIgdG8gdGhlIGJyaWRnZSBkcml2ZXIncyBpbnRlcm5hbCBjb250ZXh0ICovCj4gPj4+Pj4+Pj4g IAl2b2lkICpkcml2ZXJfcHJpdmF0ZTsKPiA+Pj4+Pj4+PiArCS8qKiBAb3BzOiBiaXRtYXNrIG9m IG9wZXJhdGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBicmlkZ2UgKi8KPiA+Pj4+Pj4+PiArCWVudW0g ZHJtX2JyaWRnZV9vcHMgb3BzOwo+ID4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4gKwkgKiBAdHlw ZTogVHlwZSBvZiB0aGUgY29ubmVjdGlvbiBhdCB0aGUgYnJpZGdlIG91dHB1dAo+ID4+Pj4+Pj4+ ICsJICogKERSTV9NT0RFX0NPTk5FQ1RPUl8qKS4gRm9yIGJyaWRnZXMgYXQgdGhlIGVuZCBvZiB0 aGlzIGNoYWluIHRoaXMKPiA+Pj4+Pj4+PiArCSAqIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgY29u bmVjdGVkIGRpc3BsYXkuCj4gPj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+PiArCWludCB0eXBlOwo+ ID4+Pj4+Pj4+ICsJLyoqIHByaXZhdGU6ICovCj4gPj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+PiAr CSAqIEBocGRfbXV0ZXg6IFByb3RlY3RzIHRoZSBAaHBkX2NiIGFuZCBAaHBkX2RhdGEgZmllbGRz Lgo+ID4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4gKwlzdHJ1Y3QgbXV0ZXggaHBkX211dGV4Owo+ ID4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4gKwkgKiBAaHBkX2NiOiBIb3QgcGx1ZyBkZXRlY3Rp b24gY2FsbGJhY2ssIHJlZ2lzdGVyZWQgd2l0aAo+ID4+Pj4+Pj4+ICsJICogZHJtX2JyaWRnZV9o cGRfZW5hYmxlKCkuCj4gPj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+PiArCXZvaWQgKCpocGRfY2Ip KHZvaWQgKmRhdGEsIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzKTsKPiA+Pj4+Pj4+ PiArCS8qKgo+ID4+Pj4+Pj4+ICsJICogQGhwZF9kYXRhOiBQcml2YXRlIGRhdGEgcGFzc2VkIHRv IHRoZSBIb3QgcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sKPiA+Pj4+Pj4+PiArCSAqIEBocGRfY2Iu Cj4gPj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+PiArCXZvaWQgKmhwZF9kYXRhOwo+ID4+Pj4+Pj4+ ICB9Owo+ID4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+PiAgdm9pZCBkcm1fYnJpZGdlX2FkZChzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+Pj4+Pj4+PiBAQCAtNDI4LDYgKzU4OCwxNCBAQCB2b2lk IGRybV9hdG9taWNfYnJpZGdlX3ByZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwK PiA+Pj4+Pj4+PiAgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSwKPiA+Pj4+Pj4+PiAgCQkJICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKTsKPiA+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZW5h YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4+Pj4gKwkJCSAgIHZvaWQgKCpj Yikodm9pZCAqZGF0YSwKPiA+Pj4+Pj4+PiArCQkJCSAgICAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9z dGF0dXMgc3RhdHVzKSwKPiA+Pj4+Pj4+PiArCQkJICAgdm9pZCAqZGF0YSk7Cj4gPj4+Pj4+Pj4g K3ZvaWQgZHJtX2JyaWRnZV9ocGRfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsK PiA+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSwKPiA+Pj4+Pj4+PiArCQkJICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0 dXMpOwo+ID4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+PiAgI2lmZGVmIENPTkZJR19EUk1fUEFORUxfQlJJ REdFCj4gPj4+Pj4+Pj4gIHN0cnVjdCBkcm1fYnJpZGdlICpkcm1fcGFuZWxfYnJpZGdlX2FkZChz dHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwKPiA+Pj4+Pj4+PiAgCQkJCQl1MzIgY29ubmVjdG9yX3R5 cGUpOwoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0Cl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==