From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v5 07/19] media: vsp1: dl: Support one-shot entries in the display list Date: Thu, 7 Mar 2019 15:48:23 +0200 Message-ID: <20190307134823.GI4804@pendragon.ideasonboard.com> References: <20190221103212.28764-1-laurent.pinchart+renesas@ideasonboard.com> <20190221103212.28764-8-laurent.pinchart+renesas@ideasonboard.com> <20190222143004.cdp2lj4ic3r4ogw4@DESKTOP-E1NTVVP.localdomain> <20190222144629.GA5020@pendragon.ideasonboard.com> <20190222150621.kxno4v64itco6mta@DESKTOP-E1NTVVP.localdomain> <20190305231440.GO14928@pendragon.ideasonboard.com> <20190306142051.GO25147@e110455-lin.cambridge.arm.com> <20190306180153.GA28718@pendragon.ideasonboard.com> <20190307115218.GU25147@e110455-lin.cambridge.arm.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 3F0386E2D5 for ; Thu, 7 Mar 2019 13:48:32 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190307115218.GU25147@e110455-lin.cambridge.arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liviu Dudau Cc: Laurent Pinchart , Kieran Bingham , "dri-devel@lists.freedesktop.org" , "james qian wang (Arm Technology China)" , nd List-Id: dri-devel@lists.freedesktop.org SGkgTGl2aXUsCgpPbiBUaHUsIE1hciAwNywgMjAxOSBhdCAxMTo1MjoxOEFNICswMDAwLCBMaXZp dSBEdWRhdSB3cm90ZToKPiBPbiBXZWQsIE1hciAwNiwgMjAxOSBhdCAwODowMTo1M1BNICswMjAw LCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gT24gV2VkLCBNYXIgMDYsIDIwMTkgYXQgMDI6 MjA6NTFQTSArMDAwMCwgTGl2aXUgRHVkYXUgd3JvdGU6Cj4gPj4gT24gV2VkLCBNYXIgMDYsIDIw MTkgYXQgMDE6MTQ6NDBBTSArMDIwMCwgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+Pj4gT24g RnJpLCBGZWIgMjIsIDIwMTkgYXQgMDM6MDY6MTlQTSArMDAwMCwgQnJpYW4gU3RhcmtleSB3cm90 ZToKPiA+Pj4+IE9uIEZyaSwgRmViIDIyLCAyMDE5IGF0IDA0OjQ2OjI5UE0gKzAyMDAsIExhdXJl bnQgUGluY2hhcnQgd3JvdGU6Cj4gPj4+Pj4gT24gRnJpLCBGZWIgMjIsIDIwMTkgYXQgMDI6MzA6 MDNQTSArMDAwMCwgQnJpYW4gU3RhcmtleSB3cm90ZToKPiA+Pj4+Pj4gT24gVGh1LCBGZWIgMjEs IDIwMTkgYXQgMTI6MzI6MDBQTSArMDIwMCwgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+Pj4+ Pj4+IE9uZS1zaG90IGVudHJpZXMgYXJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gY29tbWl0 dGluZyBhIGNvbXBsZXRlIG5ldwo+ID4+Pj4+Pj4gZGlzcGxheSBsaXN0IHdoZW4gYSBjb3VwbGUg b2YgcmVnaXN0ZXJzIG5lZWQgdG8gYmUgd3JpdHRlbiBmb3Igb25lIGZyYW1lCj4gPj4+Pj4+PiBh bmQgdGhlbiByZXNldCB0byBhbm90aGVyIHZhbHVlIGZvciBhbGwgc3Vic2VxdWVudCBmcmFtZXMu IFRoaXMgd2lsbCBiZQo+ID4+Pj4+Pj4gdXNlZCB0byBpbXBsZW1lbnQgd3JpdGViYWNrIHN1cHBv cnQgdGhhdCB3aWxsIG5lZWQgdG8gZW5hYmxlIHdyaXRlYmFjawo+ID4+Pj4+Pj4gZm9yIHRoZSBk dXJhdGlvbiBvZiBhIHNpbmdsZSBmcmFtZS4KPiA+Pj4+Pj4+IAo+ID4+Pj4+Pj4gU2lnbmVkLW9m Zi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25i b2FyZC5jb20+Cj4gPj4+Pj4+PiAtLS0KPiA+Pj4+Pj4+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3Jt L3ZzcDEvdnNwMV9kbC5jIHwgNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4+Pj4+ PiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZGwuaCB8ICAzICsrCj4gPj4+Pj4+ PiAgMiBmaWxlcyBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspCj4gPj4+Pj4+PiAKPiA+Pj4+Pj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9kbC5jIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZGwuYwo+ID4+Pj4+Pj4gaW5kZXggODg2YjNh NjlkMzI5Li43YjRkMjUyYmZkZTcgMTAwNjQ0Cj4gPj4+Pj4+PiAtLS0gYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL3ZzcDEvdnNwMV9kbC5jCj4gPj4+Pj4+PiArKysgYi9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3ZzcDEvdnNwMV9kbC5jCj4gPj4+Pj4+PiBAQCAtMTE1LDYgKzExNSwxMiBAQCBzdHJ1 Y3QgdnNwMV9kbF9ib2R5IHsKPiA+Pj4+Pj4+ICAKPiA+Pj4+Pj4+ICAJdW5zaWduZWQgaW50IG51 bV9lbnRyaWVzOwo+ID4+Pj4+Pj4gIAl1bnNpZ25lZCBpbnQgbWF4X2VudHJpZXM7Cj4gPj4+Pj4+ PiArCj4gPj4+Pj4+PiArCXVuc2lnbmVkIGludCBudW1fcGF0Y2hlczsKPiA+Pj4+Pj4+ICsJc3Ry dWN0IHsKPiA+Pj4+Pj4+ICsJCXN0cnVjdCB2c3AxX2RsX2VudHJ5ICplbnRyeTsKPiA+Pj4+Pj4+ ICsJCXUzMiBkYXRhOwo+ID4+Pj4+Pj4gKwl9IHBhdGNoZXNbMl07Cj4gPj4+Pj4+PiAgfTsKPiA+ Pj4+Pj4+ICAKPiA+Pj4+Pj4+ICAvKioKPiA+Pj4+Pj4+IEBAIC0zNjEsNiArMzY3LDcgQEAgdm9p ZCB2c3AxX2RsX2JvZHlfcHV0KHN0cnVjdCB2c3AxX2RsX2JvZHkgKmRsYikKPiA+Pj4+Pj4+ICAJ CXJldHVybjsKPiA+Pj4+Pj4+ICAKPiA+Pj4+Pj4+ICAJZGxiLT5udW1fZW50cmllcyA9IDA7Cj4g Pj4+Pj4+PiArCWRsYi0+bnVtX3BhdGNoZXMgPSAwOwo+ID4+Pj4+Pj4gIAo+ID4+Pj4+Pj4gIAlz cGluX2xvY2tfaXJxc2F2ZSgmZGxiLT5wb29sLT5sb2NrLCBmbGFncyk7Cj4gPj4+Pj4+PiAgCWxp c3RfYWRkX3RhaWwoJmRsYi0+ZnJlZSwgJmRsYi0+cG9vbC0+ZnJlZSk7Cj4gPj4+Pj4+PiBAQCAt Mzg4LDYgKzM5NSw0NyBAQCB2b2lkIHZzcDFfZGxfYm9keV93cml0ZShzdHJ1Y3QgdnNwMV9kbF9i b2R5ICpkbGIsIHUzMiByZWcsIHUzMiBkYXRhKQo+ID4+Pj4+Pj4gIAlkbGItPm51bV9lbnRyaWVz Kys7Cj4gPj4+Pj4+PiAgfQo+ID4+Pj4+Pj4gIAo+ID4+Pj4+Pj4gKy8qKgo+ID4+Pj4+Pj4gKyAq IHZzcDFfZGxfYm9keV93cml0ZV9vbmVzaG90IC0gV3JpdGUgYSByZWdpc3RlciB0byBhIGRpc3Bs YXkgbGlzdCBib2R5IGZvciBhCj4gPj4+Pj4+PiArICoJc2luZ2xlIGZyYW1lCj4gPj4+Pj4+PiAr ICogQGRsYjogVGhlIGJvZHkKPiA+Pj4+Pj4+ICsgKiBAcmVnOiBUaGUgcmVnaXN0ZXIgYWRkcmVz cwo+ID4+Pj4+Pj4gKyAqIEB2YWx1ZTogVGhlIHJlZ2lzdGVyIHZhbHVlCj4gPj4+Pj4+PiArICog QHJlc2V0X3ZhbHVlOiBUaGUgdmFsdWUgdG8gcmVzZXQgdGhlIHJlZ2lzdGVyIHRvIGF0IHRoZSBu ZXh0IHZibGFuawo+ID4+Pj4+Pj4gKyAqCj4gPj4+Pj4+PiArICogRGlzcGxheSBsaXN0cyBpbiBj b250aW51b3VzIG1vZGUgYXJlIHJlLXVzZWQgYnkgdGhlIGhhcmR3YXJlIGZvciBzdWNjZXNzaXZl Cj4gPj4+Pj4+PiArICogZnJhbWVzIHVudGlsIGEgbmV3IGRpc3BsYXkgbGlzdCBpcyBjb21taXR0 ZWQuIENoYW5naW5nIHRoZSBWU1AgY29uZmlndXJhdGlvbgo+ID4+Pj4+Pj4gKyAqIG5vcm1hbGx5 IHJlcXVpcmVzIGNyZWF0aW5nIGFuZCBjb21taXR0aW5nIGEgbmV3IGRpc3BsYXkgbGlzdC4gVGhp cyBmdW5jdGlvbgo+ID4+Pj4+Pj4gKyAqIG9mZmVycyBhbiBhbHRlcm5hdGl2ZSByYWNlLWZyZWUg d2F5IGJ5IHdyaXRpbmcgYSBAdmFsdWUgdG8gdGhlIEByZWdpc3RlciBpbgo+ID4+Pj4+Pj4gKyAq IHRoZSBkaXNwbGF5IGxpc3QgYm9keSBmb3IgYSBzaW5nbGUgZnJhbWUsIHNwZWNpZnlpbmcgaW4g QHJlc2V0X3ZhbHVlIHRoZQo+ID4+Pj4+Pj4gKyAqIHZhbHVlIHRvIHJlc2V0IHRoZSByZWdpc3Rl ciB0byBvbmUgdmJsYW5rIGFmdGVyIHRoZSBkaXNwbGF5IGxpc3QgaXMKPiA+Pj4+Pj4+ICsgKiBj b21taXR0ZWQuCj4gPj4+Pj4+PiArICoKPiA+Pj4+Pj4+ICsgKiBUaGUgbWF4aW11bSBudW1iZXIg b2Ygb25lLXNob3QgZW50cmllcyBpcyBsaW1pdGVkIHRvIDIgcGVyIGRpc3BsYXkgbGlzdCBib2R5 LAo+ID4+Pj4+Pj4gKyAqIGFuZCBvbmUtc2hvdCBlbnRyaWVzIGFyZSBjb3VudGVkIGluIHRoZSB0 b3RhbCBudW1iZXIgb2YgZW50cmllcyBzcGVjaWZpZWQKPiA+Pj4+Pj4+ICsgKiB3aGVuIHRoZSBi b2R5IGlzIGFsbG9jYXRlZCBieSB2c3AxX2RsX2JvZHlfYWxsb2MoKS4KPiA+Pj4+Pj4+ICsgKi8K PiA+Pj4+Pj4+ICt2b2lkIHZzcDFfZGxfYm9keV93cml0ZV9vbmVzaG90KHN0cnVjdCB2c3AxX2Rs X2JvZHkgKmRsYiwgdTMyIHJlZywgdTMyIHZhbHVlLAo+ID4+Pj4+Pj4gKwkJCQl1MzIgcmVzZXRf dmFsdWUpCj4gPj4+Pj4+PiArewo+ID4+Pj4+Pj4gKwlpZiAoV0FSTl9PTkNFKGRsYi0+bnVtX2Vu dHJpZXMgPj0gZGxiLT5tYXhfZW50cmllcywKPiA+Pj4+Pj4+ICsJCSAgICAgICJETEIgc2l6ZSBl eGNlZWRlZCAobWF4ICV1KSIsIGRsYi0+bWF4X2VudHJpZXMpKQo+ID4+Pj4+Pj4gKwkJcmV0dXJu Owo+ID4+Pj4+Pj4gKwo+ID4+Pj4+Pj4gKwlpZiAoV0FSTl9PTkNFKGRsYi0+bnVtX3BhdGNoZXMg Pj0gQVJSQVlfU0laRShkbGItPnBhdGNoZXMpLAo+ID4+Pj4+Pj4gKwkJICAgICAgIkRMQiBwYXRj aGVzIHNpemUgZXhjZWVkZWQgKG1heCAlenUpIiwKPiA+Pj4+Pj4+ICsJCSAgICAgIEFSUkFZX1NJ WkUoZGxiLT5wYXRjaGVzKSkpCj4gPj4+Pj4+PiArCQlyZXR1cm47Cj4gPj4+Pj4+PiArCj4gPj4+ Pj4+PiArCWRsYi0+cGF0Y2hlc1tkbGItPm51bV9wYXRjaGVzXS5lbnRyeSA9ICZkbGItPmVudHJp ZXNbZGxiLT5udW1fZW50cmllc107Cj4gPj4+Pj4+PiArCWRsYi0+cGF0Y2hlc1tkbGItPm51bV9w YXRjaGVzXS5kYXRhID0gcmVzZXRfdmFsdWU7Cj4gPj4+Pj4+PiArCWRsYi0+bnVtX3BhdGNoZXMr KzsKPiA+Pj4+Pj4+ICsKPiA+Pj4+Pj4+ICsJZGxiLT5lbnRyaWVzW2RsYi0+bnVtX2VudHJpZXNd LmFkZHIgPSByZWc7Cj4gPj4+Pj4+PiArCWRsYi0+ZW50cmllc1tkbGItPm51bV9lbnRyaWVzXS5k YXRhID0gdmFsdWU7Cj4gPj4+Pj4+PiArCWRsYi0+bnVtX2VudHJpZXMrKzsKPiA+Pj4+Pj4+ICt9 Cj4gPj4+Pj4+PiArCj4gPj4+Pj4+PiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Pj4+Pj4+ ICAgKiBEaXNwbGF5IExpc3QgRXh0ZW5kZWQgQ29tbWFuZCBNYW5hZ2VtZW50Cj4gPj4+Pj4+PiAg ICovCj4gPj4+Pj4+PiBAQCAtNjUyLDYgKzcwMCw3IEBAIHN0YXRpYyB2b2lkIF9fdnNwMV9kbF9s aXN0X3B1dChzdHJ1Y3QgdnNwMV9kbF9saXN0ICpkbCkKPiA+Pj4+Pj4+ICAJICogaGFzIGF0IGxl YXN0IG9uZSBib2R5LCB0aHVzIHdlIHJlaW5pdGlhbGlzZSB0aGUgZW50cmllcyBsaXN0Lgo+ID4+ Pj4+Pj4gIAkgKi8KPiA+Pj4+Pj4+ICAJZGwtPmJvZHkwLT5udW1fZW50cmllcyA9IDA7Cj4gPj4+ Pj4+PiArCWRsLT5ib2R5MC0+bnVtX3BhdGNoZXMgPSAwOwo+ID4+Pj4+Pj4gIAo+ID4+Pj4+Pj4g IAlsaXN0X2FkZF90YWlsKCZkbC0+bGlzdCwgJmRsLT5kbG0tPmZyZWUpOwo+ID4+Pj4+Pj4gIH0K PiA+Pj4+Pj4+IEBAIC05MzAsNiArOTc5LDM1IEBAIHZvaWQgdnNwMV9kbF9saXN0X2NvbW1pdChz dHJ1Y3QgdnNwMV9kbF9saXN0ICpkbCwgdW5zaWduZWQgaW50IGRsX2ZsYWdzKQo+ID4+Pj4+Pj4g ICAqIERpc3BsYXkgTGlzdCBNYW5hZ2VyCj4gPj4+Pj4+PiAgICovCj4gPj4+Pj4+PiAgCj4gPj4+ Pj4+PiArLyoqCj4gPj4+Pj4+PiArICogdnNwMV9kbG1faXJxX2Rpc3BsYXlfc3RhcnQgLSBEaXNw bGF5IGxpc3QgaGFuZGxlciBmb3IgdGhlIGRpc3BsYXkgc3RhcnQKPiA+Pj4+Pj4+ICsgKglpbnRl cnJ1cHQKPiA+Pj4+Pj4+ICsgKiBAZGxtOiB0aGUgZGlzcGxheSBsaXN0IG1hbmFnZXIKPiA+Pj4+ Pj4+ICsgKgo+ID4+Pj4+Pj4gKyAqIEFwcGx5IGFsbCBvbmUtc2hvdCBwYXRjaGVzIHJlZ2lzdGVy ZWQgZm9yIHRoZSBhY3RpdmUgZGlzcGxheSBsaXN0Lgo+ID4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4g K3ZvaWQgdnNwMV9kbG1faXJxX2Rpc3BsYXlfc3RhcnQoc3RydWN0IHZzcDFfZGxfbWFuYWdlciAq ZGxtKQo+ID4+Pj4+Pj4gK3sKPiA+Pj4+Pj4+ICsJc3RydWN0IHZzcDFfZGxfYm9keSAqZGxiOwo+ ID4+Pj4+Pj4gKwlzdHJ1Y3QgdnNwMV9kbF9saXN0ICpkbDsKPiA+Pj4+Pj4+ICsJdW5zaWduZWQg aW50IGk7Cj4gPj4+Pj4+PiArCj4gPj4+Pj4+PiArCXNwaW5fbG9jaygmZGxtLT5sb2NrKTsKPiA+ Pj4+Pj4+ICsKPiA+Pj4+Pj4+ICsJZGwgPSBkbG0tPmFjdGl2ZTsKPiA+Pj4+Pj4+ICsJaWYgKCFk bCkKPiA+Pj4+Pj4+ICsJCWdvdG8gZG9uZTsKPiA+Pj4+Pj4+ICsKPiA+Pj4+Pj4+ICsJbGlzdF9m b3JfZWFjaF9lbnRyeShkbGIsICZkbC0+Ym9kaWVzLCBsaXN0KSB7Cj4gPj4+Pj4+PiArCQlmb3Ig KGkgPSAwOyBpIDwgZGxiLT5udW1fcGF0Y2hlczsgKytpKQo+ID4+Pj4+Pj4gKwkJCWRsYi0+cGF0 Y2hlc1tpXS5lbnRyeS0+ZGF0YSA9IGRsYi0+cGF0Y2hlc1tpXS5kYXRhOwo+ID4+Pj4+Pj4gKwkJ ZGxiLT5udW1fcGF0Y2hlcyA9IDA7Cj4gPj4+Pj4+PiArCX0KPiA+Pj4+Pj4+ICsKPiA+Pj4+Pj4+ ICtkb25lOgo+ID4+Pj4+Pj4gKwlzcGluX3VubG9jaygmZGxtLT5sb2NrKTsKPiA+Pj4+Pj4+ICt9 Cj4gPj4+Pj4+PiArCj4gPj4+Pj4+IAo+ID4+Pj4+PiBXZSd2ZSBnb3Qgc29tZSBIVyB3aGljaCBk b2Vzbid0IHN1cHBvcnQgb25lLXNob3Qgd3JpdGViYWNrLCBhbmQgdXNlIGEKPiA+Pj4+Pj4gc2lt aWxhciB0cmljayB0byB0cnkgYW5kIGRpc2FibGUgd3JpdGViYWNrIGltbWVkaWF0ZWx5IGFmdGVy IHRoZSBmbGlwLgo+ID4+Pj4+PiAKPiA+Pj4+Pj4gV2UgcmFuIGludG8gaXNzdWVzIHdoZXJlIHRo ZSAic3RhcnQiIGludGVycnVwdCB3b3VsZG4ndCBydW4gaW4gdGltZSB0bwo+ID4+Pj4+PiBtYWtl IHN1cmUgdGhlIHdyaXRlYmFjayBkaXNhYmxlIHdhcyBjb21taXR0ZWQgYmVmb3JlIHRoZSBuZXh0 IGZyYW1lLgo+ID4+Pj4+PiBXZSBoYXZlIHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGUgZGlz YWJsZSByZWFsbHkgaGFwcGVuZWQgaW4gdGltZSwKPiA+Pj4+Pj4gYmVmb3JlIHdlIHJlbGVhc2Ug dGhlIG91dHB1dCBidWZmZXIuCj4gPj4+Pj4+IAo+ID4+Pj4+PiBNaWdodCB5b3UgaGF2ZSBhIHNp bWlsYXIgcHJvYmxlbSBoZXJlPwo+ID4+Pj4+IAo+ID4+Pj4+IFdlIG1heSwgYnV0IHRoZXJlJ3Mg bm8gcHJvdmlzaW9uIGF0IHRoZSBoYXJkd2FyZSBsZXZlbCB0byBjaGVjayBpZiB0aGUKPiA+Pj4+ PiBjb25maWd1cmF0aW9uIHVwZGF0ZWQgaGFwcGVuZWQgaW4gdGltZS4gSSBjb3VsZCBhZGQgc29t ZSBzYWZldHkgY2hlY2tzCj4gPj4+Pj4gYnV0IEkgYmVsaWV2ZSB0aGV5IHdvdWxkIGJlIHJhY3kg aW4gdGhlIGJlc3QgY2FzZSA6LSgKPiA+Pj4+IAo+ID4+Pj4gV2UgbWFuYWdlZCB0byBmaW5kICh3 aGF0IEkgYmVsaWV2ZSB0byBiZS4uLikgYSBub24tcmFjeSB3YXksIGJ1dCBpdAo+ID4+Pj4gd2ls bCBvZiBjb3Vyc2UgZGVwZW5kIGEgbG90IG9uIHRoZSBIVyBiZWhhdmlvdXIsIHNvIEknbGwgbGVh dmUgaXQgdG8KPiA+Pj4+IHlvdXIgYmVzdCBqdWRnZW1lbnQuCj4gPj4+PiAKPiA+Pj4+IFdlIGJh c2ljYWxseSBoYXZlIGEgImNvbmZpZ3VyYXRpb24gY29tbWl0dGVkIiBpbnRlcnJ1cHQgd2hpY2gg d2UgY2FuCj4gPj4+PiB1c2UgdG8gc2V0IGEgZmxhZyBpbmRpY2F0aW5nIHdyaXRlYmFjayB3YXMg ZGlzYWJsZWQuCj4gPj4+IAo+ID4+PiBUaGUgd2F5IG15IGhhcmR3YXJlIGlzIG9wZXJhdGVkIGlz LCByb3VnaGx5LCBhcyBmb2xsb3dzOgo+ID4+PiAKPiA+Pj4gLSBUaGUgZHJpdmVyIHByZXBhcmVz IGEgbGlzdCBvZiB2YWx1ZXMgdG8gd3JpdGUgdG8gcmVnaXN0ZXJzIGFuZCBzdG9yZXMKPiA+Pj4g ICB0aGVtIGluIERNQS1hYmxlIG1lbW9yeS4gVGhpcyBkb2Vzbid0IGludm9sdmUgdGhlIGhhcmR3 YXJlLCBhbmQgc28gaXMKPiA+Pj4gICBjb21wbGV0ZWx5IGFzeW5jaHJvbm91cyB0byBoYXJkd2Fy ZSBvcGVyYXRpb24uCj4gPj4+IAo+ID4+PiAtIFRoZSBkcml2ZXIgdGhlbiBzZXRzIGEgcmVnaXN0 ZXIgd2l0aCB0aGUgcG9pbnRlciB0byB0aGUgcmVnaXN0ZXJzCj4gPj4+ICAgbGlzdC4KPiA+Pj4g Cj4gPj4+IC0gQXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBmcmFtZSwgdGhlIGhhcmR3YXJlIHJl YWRzIHRoZSBtZW1vcnkgYWRkcmVzcwo+ID4+PiAgIG9mIHRoZSByZWdpc3RlcnMgbGlzdCBhbmQg RE1BcyB2YWx1ZXMgdG8gcmVnaXN0ZXIuIFRoaXMgb3BlcmF0aW9uIGlzCj4gPj4+ICAgZmFzdCBh bmQgb2NjdXJzIGZ1bGx5IGR1cmluZyB2ZXJ0aWNhbCBibGFua2luZy4KPiA+Pj4gCj4gPj4+IC0g VGhlIGhhcmR3YXJlIHRoZW4gd2FpdHMgZm9yIHRoZSBzdGFydCBvZiB0aGUgZnJhbWUsIGFuZCBi ZWdpbnMKPiA+Pj4gICBwcm9jZXNzaW5nIHRoZSBmcmFtZWJ1ZmZlcnMgdG8gc2VuZCB0aGUgZnJh bWUgdG8gdGhlIGRpc3BsYXkuCj4gPj4+IAo+ID4+PiAtIElmIG5vIG5ldyByZWdpc3RlcnMgbGlz dCBpcyBwcm92aWRlZCBmb3IgdGhlIG5leHQgZnJhbWUsIHRoZSBjdXJyZW50Cj4gPj4+ICAgbGlz dCBpcyByZXVzZWQuCj4gPj4gCj4gPj4gRG9lcyB0aGlzIG1lYW4gdGhlIGhhcmR3YXJlIGdvZXMg YmFjayB0byBzdGVwIDMgYW5kIHJlLXJlYWRzIHRoZSBtZW1vcnkKPiA+PiB1c2luZyBETUE/Cj4g PiAKPiA+IFRoYXQncyBjb3JyZWN0LiBBdCBmcmFtZSBlbmQgdGhlIGhhcmR3YXJlIHdpbGwgYWx3 YXlzIHJlYWQgYW5kIGFwcGx5IGEKPiA+IHJlZ2lzdGVycyBsaXN0LCBlaXRoZXIgYSBuZXcgb25l IG9yIHRoZSBvbGQgb25lIGlmIG5vIG5ldyBsaXN0IGlzCj4gPiBwcm9ncmFtbWVkLgo+ID4gCj4g Pj4+IFR3byBpbnRlcnJ1cHRzIGFyZSBwcm92aWRlZCwgb25lIGF0IHRoZSBzdGFydCBvZiB0aGUg ZnJhbWUgYW5kIG9uZSBhdAo+ID4+PiB0aGUgZW5kIG9mIHRoZSBmcmFtZS4gVGhlIGRyaXZlciB1 c2VzIHRoZSBlbmQgb2YgZnJhbWUgaW50ZXJydXB0IHRvCj4gPj4+IHNpZ25hbCB2ZXJ0aWNhbCBi bGFua2luZyBhbmQgcGFnZSBmbGlwIGNvbXBsZXRpb24gdG8gRFJNLgo+ID4+PiAKPiA+Pj4gVGhl IGVuZCBvZiBmcmFtZSBpbnRlcnJ1cHQgaXMgYWxzbyB1c2VkIHRvIHNjaGVkdWxlIGF0b21pYyBj b21taXRzLiBUaGUKPiA+Pj4gaGFyZHdhcmUgcXVldWUgZGVwdGggZm9yIGF0b21pYyBjb21taXRz IGlzIGp1c3Qgb25lLCBzbyB0aGUgZHJpdmVyIGhhcwo+ID4+PiB0byB3YWl0IHVudGlsIHRoZSBw cmV2aW91cyBjb21taXQgaGFzIGJlZW4gcHJvY2Vzc2VkIGJlZm9yZSB3cml0aW5nIHRoZQo+ID4+ PiBuZXcgcmVnaXN0ZXJzIGxpc3QgYWRkcmVzcyB0byB0aGUgaGFyZHdhcmUuIFRvIHNvbHZlIHRo ZSByYWNlIGJldHdlZW4KPiA+Pj4gdGhlIGVuZCBvZiBmcmFtZSBpbnRlcnJ1cHQgYW5kIHRoZSBh ZGRyZXNzIHdyaXRlLCB0aGUgaGFyZHdhcmUgcHJvdmlkZXMKPiA+Pj4gYSBzdGF0dXMgYml0IHRo YXQgaXMgc2V0IHRvIDEgd2hlbiB0aGUgYWRkcmVzcyBpcyB3cml0dGVuLCBhbmQgcmVzZXQgdG8K PiA+Pj4gMCB3aGVuIHRoZSBoYXJkd2FyZSBzdGFydHMgcHJvY2Vzc2luZyB0aGUgcmVnaXN0ZXJz IGxpc3QuCj4gPj4gCj4gPj4gRm9yIG15IHVuZGVyc3RhbmRpbmcsIHRoZSBmb2xsb3dpbmcgc2lt cGxpY2F0aW9uIGlzIHRoZW4gdHJ1ZTogc3RhdHVzID0gMAo+ID4+IG1lYW5zIGRyaXZlciBpcyBh bGxvd2VkIHRvIHVwZGF0ZSB0aGUgcG9pbnRlciByZWdpc3Rlciwgc3RhdHVzID0gMSBtZWFucwo+ ID4+IGN1cnJlbnRseSBwcm9ncmFtbWVkIHBvaW50ZXIgaXMgdXNlZCB0byBmZXRjaCB0aGUgcmVn aXN0ZXIgdmFsdWVzLCByaWdodD8KPiA+IAo+ID4gQWxtb3N0LiBzdGF0dXMgPSAxIG1lYW5zIHRo YXQgdGhlIHBvaW50ZXIgaGFzIGJlZW4gcHJvZ3JhbW1lZCBieSB0aGUKPiA+IENQVSwgYnV0IG5v dCB0YWtlbiBpbnRvIGFjY291bnQgYnkgdGhlIGhhcmR3YXJlIHlldC4gc3RhdHVzID0gMCBtZWFu cwo+ID4gdGhhdCB0aGUgcG9pbnRlciBoYXNuJ3QgYmVlbiB3cml0dGVuIHRvIGJ5IHRoZSBDUFUg c2luY2UgdGhlIGxhc3QgdGltZQo+ID4gdGhlIGhhcmR3YXJlIHJlYWQgaXQuCj4gCj4gUmlnaHQs IHNvIENQVSB3cml0ZXMgdG8gdGhlIHBvaW50ZXIgcmVnaXN0ZXIgYW5kIHRoYXQgc2V0cyBzdGF0 dXMgdG8gMSwKPiBhbmQgd2hlbiB0aGUgSFcgaGFzIGNvcGllZCB0aGF0IHZhbHVlIGludG8gaW50 ZXJuYWwgRE1BIHJlZ2lzdGVycyBpdCBjbGVhcnMKPiBpdCwgY29ycmVjdD8KClllcywgdGhhdCdz IGNvcnJlY3QuCgo+ID4+IFdoYXQgaGFwcGVucyBpZiB5b3UgdXBkYXRlIHRoZSBwb2ludGVyIHdo aWxlIHN0YXR1cyA9IDE/IERNQSB0cmFuc2ZlciBnZXRzCj4gPj4gaW50ZXJydXB0ZWQgYW5kIGEg bmV3IG9uZSBpcyBzY2hlZHVsZWQ/IERvZXMgdGhlIERNQSB0cmFuc2ZlciBnZXQgY2FuY2VsbGVk Pwo+ID4gCj4gPiBZb3Ugc2hvdWxkIG5vdCBkbyB0aGF0LCBhcyBpdCdzIHJhY3kuIFRoZSBoYXJk d2FyZSB3aWxsIHVzZSBlaXRoZXIgdGhlCj4gPiBvbGQgdmFsdWUgb2YgdGhlIHBvaW50ZXIgb3Ig bmV3IG5ldyBvbmUsIGJhc2VkIG9uIHRoZSB0aW1pbmdzIG9mIHRoZQo+ID4gcmVwcm9ncmFtbWF0 aW9uLCBhbmQgeW91IGNhbid0IHRlbGwgd2hpY2ggb25lIGlzIHVzZWQuIE5vdGhpbmcgY2FuCj4g PiBjYW5jZWwgdGhlIERNQSwgd2hlbiBpdCdzIHRpbWUgdG8gc3RhcnQgdGhlIERNQSB0aGUgaGFy ZHdhcmUgd2lsbAo+ID4gdHJhbnNmZXIgdGhlIHZhbHVlIG9mIHRoZSBwb2ludGVyIHRvIGFuIGlu dGVybmFsIHJlZ2lzdGVyIGFuZCB1c2UgdGhhdAo+ID4gZm9yIERNQS4gUmVwcm9ncmFtbWluZyB0 aGUgcG9pbnRlciBkdXJpbmcgdGhlIERNQSB3aWxsIG5vdCBhZmZlY3QgdGhlCj4gPiBETUEsIHRo ZSBuZXcgdmFsdWUgd2lsbCBiZSB0YWtlbiBpbnRvIGFjY291bnQgZm9yIHRoZSBuZXh0IERNQS4K PiAKPiBJdCBsb29rcyB0byBtZSBsaWtlIHlvdSBjYW4gZG8gdGhlIGluLXBsYWNlIHVwZGF0ZSBv ZiB0aGUgd3JpdGViYWNrCj4gZnJhbWVidWZmZXIgYWRkcmVzcyBhdCB0aGUgZW5kIG9mIHRoZSBj dXJyZW50IGZyYW1lICh2YmxhbmsgdGltZSg/KSkuIElmCj4geW91IHdhaXQgdW50aWwgc3RhdHVz ID0gMCB0aGVuIHlvdSBrbm93IHRoZSBuZXh0IGZyYW1lIHBhcmFtZXRlcnMgYXJlCj4gYmVpbmcg ImludGVybmFsaXNlZCIsIHNvIHlvdSBjYW4gc2V0IGluIHRoZSBjb21taXQgeW91J3JlIGFib3V0 IHRvIHF1ZXVlCj4gdGhlIGRpc2FibGluZyBvZiB0aGUgd3JpdGViYWNrIGlmIHRoYXQgY29tbWl0 IGRvZXNuJ3QgaGF2ZSBhIGZyZXNoCj4gd3JpdGViYWNrIHJlcXVlc3QgKHBoZXcsIHRoYXQncyBh IG1vdXRoZnVsKS4KCk15IHByb2JsZW0gaXMgdGhhdCB0aGVyZSBtYXkgbm90IGJlIGEgbmV4dCBj b21taXQsIGlmIHVzZXJzcGFjZSBoYXNuJ3QKcXVldWVkIG9uZS4gT3RoZXJ3aXNlIHRoaXMgaXMg d2hhdCBJIHdvdWxkIGRvLiBNeSBpbml0aWFsIGltcGxlbWVudGF0aW9uCndhcyBxdWV1aW5nIHR3 byBjb21taXRzIGZvciB3cml0ZWJhY2ssIG9uZSB3aXRoIHdyaXRlYmFjayBlbmFibGVkLCBhbmQK aW1tZWRpYXRlbHkgYWZ0ZXIgYSBzZWNvbmQgb25lIGNvcGllZCBmcm9tIHRoZSBmaXJzdCBidXQg d2l0aCB3cml0ZWJhY2sKZGlzYWJsZWQuIFRoaXMgaGFsdmVkIHRoZSBmcmFtZSByYXRlLCBhcyB0 aGUgbmV4dCBjb21taXQgZnJvbSB1c2Vyc3BhY2UKaGFkIHRvIGZpcnN0IHdhaXQgZm9yIGNvbXBs ZXRpb24gb2YgdGhlIHdyaXRlYmFjayBkaXNhYmxpbmcgY29tbWl0LiBUaGUKcmVhbCBpc3N1ZSBo ZXJlIGlzIHRoYXQgSSB3b3VsZCBuZWVkIHRvIHF1ZXVlIHRoZSB3cml0ZWJhY2sgZGlzYWJsaW5n CmNvbW1pdCByaWdodCBhZnRlciB0aGUgd3JpdGViYWNrIGVuYWJsaW5nIGNvbW1pdCB0byBtYWtl IHN1cmUgaXQgZ2V0cwpwcm9jZXNzZWQgZm9yIHRoZSBuZXh0IGZyYW1lLCBidXQgb25jZSBpdHMg cXVldWVkIGFueSB1c2Vyc3BhY2UgY29tbWl0CndvdWxkIG5lZWQgdG8gd2FpdCBvbmUgZXh0cmEg ZnJhbWUgYXMgYSBxdWV1ZWQgY29tbWl0IGNhbiBiZSBwcm9jZXNzZWQKYXQgYW55IHRpbWUgYW5k IHRodXMgY2FuJ3QgYmUgcmVwbGFjZWQuIFRoYXQncyB3aHkgSSBkZWNpZGVkIHRvIG1vZGlmeQp0 aGUgcmVnaXN0ZXJzIGxpc3QgaW4gcGxhY2UgaW5zdGVhZCBvZiBxdWV1ZWluZyBhIG5ldyBjb21t aXQgdG8gZGlzYWJsZQp3cml0ZWJhY2suCgo+IEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgdG8gd2Fp dCB1bnRpbCB0aGUgbmV4dCBzdGFydCBvZiBmcmFtZSBpbnRlcnJ1cHQKPiB0byBkbyB0aGF0LiBB bHNvLCB2YmxhbmsgdGltZSBpcyBwcm9iYWJseSB0aGUgdGltZSB5b3Ugd2FudCB0byBzaWduYWwK PiB0aGUgY29tcGxldGlvbiBvZiB0aGUgcHJldmlvdXMgd3JpdGViYWNrIGFueXdheSwgcmlnaHQ/ CgpDb3JyZWN0LCB0aGF0J3Mgd2hlbiBJIHNpZ25hbCBpdC4KCj4gPj4+IFdlIHRodXMgaGF2ZSB0 aHJlZSBzdGF0ZXMgZm9yIGFuIGF0b21pYyBjb21taXQ6Cj4gPj4+IAo+ID4+PiAtIGFjdGl2ZSwg d2hlcmUgdGhlIGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXJzIGxpc3QgYWRkcmVzcyBoYXMgYmVlbgo+ ID4+PiAgIHdyaXR0ZW4gdG8gdGhlIGhhcmR3YXJlLCBhbmQgcHJvY2Vzc2VkCj4gPj4+IAo+ID4+ PiAtIHF1ZXVlZCwgd2hlcmUgdGhlIGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXJzIGxpc3QgYWRkcmVz cyBoYXMgYmVlbgo+ID4+PiAgIHdyaXR0ZW4gdG8gdGhlIGhhcmR3YXJlIGJ1dCBub3QgcHJvY2Vz c2VkIHlldAo+ID4+PiAKPiA+Pj4gLSBwZW5kaW5nLCB3aGVyZSB0aGUgY29ycmVzcG9uZGluZyBy ZWdpc3RlcnMgbGlzdCBhZGRyZXNzIGhhc24ndCBiZWVuCj4gPj4+ICAgd3JpdHRlbiB0byB0aGUg aGFyZHdhcmUgeWV0Cj4gPj4+IAo+ID4+PiBUaGUgc3RhdHVzIGJpdCBtZW50aW9uZWQgYWJvdmUg YWxsb3dzIHVzIHRvIHRlbGwgaWYgYSBsaXN0IGV4aXN0cyBpbiB0aGUKPiA+Pj4gcXVldWVkIHN0 YXRlLgo+ID4+PiAKPiA+Pj4gQXQgZnJhbWUgZW5kIHRpbWUsIGlmIHRoZSBzdGF0dXMgYml0IGlz IHNldCwgd2UgaGF2ZSBwb3RlbnRpYWxseSBsb3N0Cj4gPj4+IHRoZSByYWNlIGJldHdlZW4gd3Jp dGluZyB0aGUgbmV3IHJlZ2lzdGVycyBsaXN0IGFuZCB0aGUgZnJhbWUgZW5kCj4gPj4+IGludGVy cnVwdCwgc28gd2Ugd2FpdCBmb3Igb25lIG1vcmUgdmJsYW5rLiBPdGhlcndpc2UsIGlmIGEgbGlz dCB3YXMKPiA+Pj4gcXVldWVkLCB3ZSBtb3ZlIGl0IHRvIHRoZSBhY3RpdmUgc3RhdGUsIGFuZCBy ZXRpcmUgdGhlIGFjdGl2ZSBsaXN0LiBJZiBhCj4gPj4+IGxpc3Qgd2FzIHBlbmRpbmcsIHdlIHdy aXRlIGl0cyBhZGRyZXNzIHRvIHRoZSBoYXJkd2FyZSwgYW5kIG1vdmUgaXQgdG8KPiA+Pj4gdGhl IHF1ZXVlZCBzdGF0ZS4KPiAKPiBJdCBsb29rcyB0byBtZSBsaWtlIHRoZSBtb3Zpbmcgb2YgdGhl IHBlbmRpbmcgc3RhdGUgaW50byBxdWV1ZWQgc3RhdGUgaXMgeW91cgo+IG9wcG9ydHVuaXR5IHRv IGFsc28gaW4tcGxhY2UgbW9kaWZ5IHRoZSB3cml0ZWJhY2sgcmVnaXN0ZXJzIGlmIHRoZSBzdGF0 ZSBkb2VzCj4gbm90IGhhdmUgaXRzIG93biB3cml0ZWJhY2sgcmVxdWVzdC4KCk1vdmluZyBmcm9t IHBlbmRpbmcgdG8gcXVldWVkIG1lYW5zIHRoZSBwb2ludGVyIGhhcyBiZWVuIGdpdmVuIHRvIHRo ZQpoYXJkd2FyZSwgYnV0IG5vdCBwcm9jZXNzZWQgeWV0LiBJIG5lZWQgdG8gd2FpdCB1bnRpbCB0 aGUgY29tbWl0IHRoYXQKZW5hYmxlcyB3cml0ZWJhY2sgaXMgZnVsbHkgcHJvY2Vzc2VkIGJlZm9y ZSBtb2RpZnlpbmcgaXQgaW4tcGxhY2UgdG8KZGlzYWJsZSB3cml0ZWJhY2ssIGFuZCB0aGF0J3Mg YXQgdGhlIGZyYW1lIHN0YXJ0IGZvbGxvd2luZyB0aGUgbW92ZSBmcm9tCnRoZSBxdWV1ZWQgc3Rh dGUgdG8gdGhlIGFjdGl2ZSBzdGF0ZS4KCj4gPj4+IFRvIHNjaGVkdWxlIHdyaXRlYmFjayBJIGVu ZGVkIHVwIHVzaW5nIHRoZSBmcmFtZSBzdGFydCBpbnRlcnJ1cHQuCj4gPj4+IFdyaXRlYmFjayBo YXMgYSBzcGVjaWZpYyBuZWVkIGluIHRoYXQgaXQgcmVxdWlyZXMgZW5hYmxpbmcgdGhlIG1lbW9y eQo+ID4+PiB3cml0ZSBpbnRlcmZhY2UgZm9yIGEgc2luZ2xlIGZyYW1lLCBhbmQgdGhhdCBpcyBu b3Qgc29tZXRoaW5nIHRoZQo+ID4+PiBoYXJkd2FyZSBzdXBwb3J0cyBkaXJlY3RseS4gSSBjYW4n dCBlaXRoZXIgcXVldWUgYSBuZXcgcmVnaXN0ZXJzIGxpc3QKPiA+Pj4gd2l0aCB0aGUgd3JpdGUg aW50ZXJmYWNlIGRpc2FibGVkIHJpZ2h0IGFmdGVyIHRoZSBsaXN0IHdpdGggdGhlCj4gPj4+IHdy aXRlYmFjayByZXF1ZXN0IGJlY2FtZSBhY3RpdmUsIGFzIGFueSBhdG9taWMgY29tbWl0IHdvdWxk IHRoZW4gYmUKPiA+Pj4gZGVsYXllZCBieSBhbiBleHRyYSBmcmFtZS4gSSB0aHVzIGVuZGVkIHVw IG1vZGlmeWluZyB0aGUgcmVnaXN0ZXJzIGxpc3QKPiA+Pj4gaW4gcGxhY2UgYXQgZnJhbWUgc3Rh cnQgdGltZSwgd2hpY2ggaXMgcmlnaHQgYWZ0ZXIgdGhlIGFjdGl2ZSByZWdpc3Rlcgo+ID4+PiBs aXN0IGhhcyBiZWVuIERNQSdlZCB0byBoYXJkd2FyZSByZWdpc3RlcnMuIFdlIGhhdmUgdGhlIGR1 cmF0aW9uIG9mIGEKPiA+Pj4gd2hvbGUgZnJhbWUgdG8gZG8gc28sIGJlZm9yZSB0aGUgaGFyZHdh cmUgdHJhbnNmZXJzIHRoZSBzYW1lIGxpc3QgYWdhaW4KPiA+Pj4gYXQgdGhlIGJlZ2lubmluZyBv ZiB0aGUgbmV4dCBmcmFtZS4KPiA+PiAKPiA+PiBZZXMsIHRoYXQgaXMgbGlrZSB0byB3aGF0IHdl IGRvIGZvciBEUDUwMCBpbiBtYWxpLWRwLCB3aGVyZSB3ZSBoYXZlIGEKPiA+PiBzaW1pbGFyIHNp dHVhdGlvbi4gSFcgd2lsbCBjb250aW51ZSB0byBzdHJlYW0gdG8gdGhlIGdpdmVuIGJ1ZmZlciB1 bnRpbAo+ID4+IHN0b3BwZWQsIGJ1dCB0aGUgd3JpdGViYWNrIEFQSSBpcyBvbmUtc2hvdCBtb2Rl LCBzbyBvbiB2YmxhbmsgKHdoZW4gd2UKPiA+PiBrbm93IHRoZSB3cml0ZWJhY2sgd2lsbCBzdGFy dCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgZnJhbWUpIHdlCj4gPj4gcHJvZ3JhbSB0aGUg bWVtd3JpdGUgdG8gc3RvcCwgYnV0IHRoYXQgb25seSB0YWtlcyBlZmZlY3Qgd2hlbiB3ZSBhbHNv Cj4gPj4gcHJvZ3JhbSB0aGUgR08gYml0IChDT05GSUdfVkFMSUQgaW4gb3VyIGNhc2UpLgo+ID4+ IAo+ID4+IE9uZSBwcm9ibGVtIHdlIGhhZCB0byB0YWtlIGNhcmUgZm9yIERQNTAwIHdhcyB3aGVu IHRoZSBuZXh0IGNvbW1pdCAodGhlCj4gPj4gcXVldWVkIG9uZSBpbiB5b3VyIGNhc2UpIGFsc28g Y29udGFpbnMgYSB3cml0ZWJhY2sgYnVmZmVyLiBJbiB0aGF0IGNhc2UsCj4gPj4gd2UgZG9uJ3Qg c3RvcCB0aGUgd3JpdGViYWNrIGJ1dCAicmUtc3RhcnQiIGl0Lgo+ID4+IAo+ID4+PiBUaGVyZSBp cyBhIHJhY2UgY29uZGl0aW9uIHRoZXJlLCBhcyB0aGUgaW4tcGxhY2UgbW9kaWZpY2F0aW9uIG9m IHRoZQo+ID4+PiBhY3RpdmUgbGlzdCBjb3VsZCBiZSBkb25lIGFmdGVyIHRoZSBlbmQgb2YgdGhl IGZyYW1lIGlmIHRoZSBpbnRlcnJ1cHQKPiA+Pj4gbGF0ZW5jeSBnZXRzIHRvbyBsYXJnZS4gSSBk b24ndCBzZWUgaG93IEkgY291bGQgc29sdmUgdGhhdCwgYXMgSSBjb3VsZAo+ID4+PiB3cml0ZSB0 aGUgdmFsdWUgYWZ0ZXIgdGhlIGhhcmR3YXJlIHN0YXJ0cyBwcm9jZXNzaW5nIHRoZSBhY3RpdmUg bGlzdCBhdAo+ID4+PiBmcmFtZSBlbmQgdGltZSwgYnV0IGJlZm9yZSB0aGUgaW50ZXJydXB0IGlz IG5vdGlmaWVkLgo+ID4+IAo+ID4+IEkgdGhpbmsgdGhhdCB3b3VsZCBiZSBhIGJldHRlciBpZGVh IGlmIHRoZSBIVyBmaW5pc2hlcyB0byB0cmFuc2Zlcgo+ID4+IGJlZm9yZSB0aGUgZW5kIG9mIGZy YW1lIGludGVycnVwdCBpcyBzaWduYWxsZWQuIE90aGVyd2lzZSBpZiB5b3VyCj4gPj4gaW50ZXJy dXB0IGhhbmRsZXIgaXMgc2NoZWR1bGVkIHRvbyBmYXN0LCB5b3UgbWlnaHQgb3ZlcndyaXRlIHRo ZSBhY3RpdmUKPiA+PiBmcmFtZSB2YWx1ZXM/Cj4gPiAKPiA+IFRoYXQgY2FuJ3QgaGFwcGVuLCBh cyBJIHBhdGNoIHRoZSBhY3RpdmUgcmVnaXN0ZXJzIGxpc3QgaW4tcGxhY2UgaW4gdGhlCj4gPiBm cmFtZSBzdGFydCBpbnRlcnJ1cHQgaGFuZGxlciwgYW5kIGZyYW1lIHN0YXJ0IG9jY3VycyBhZnRl ciB0aGUgaGFyZHdhcmUKPiA+IGZpbmlzaGVzIHRoZSBETUEgb2YgdGhlIHJlZ2lzdGVycyBsaXN0 Lgo+ID4gCj4gPj4+Pj4gTm90ZSB0aGF0IHdlIGhhdmUgdGhlIGR1cmF0aW9uIG9mIGEgY29tcGxl dGUgZnJhbWUgdG8gZGlzYWJsZSB3cml0ZWJhY2ssCj4gPj4+Pj4gYXMgd2UgcmVjZWl2ZSBhbiBp bnRlcnJ1cHQgd2hlbiB0aGUgZnJhbWUgc3RhcnRzLCBhbmQgaGF2ZSB1bnRpbCB2YmxhbmsKPiA+ Pj4+PiB0byB1cGRhdGUgdGhlIGNvbmZpZ3VyYXRpb24uIEl0J3MgdGh1cyBzbGlnaHRseSBiZXR0 ZXIgdGhhbiBoYXZpbmcgdG8KPiA+Pj4+PiBkaXNhYmxlIHdyaXRlYmFjayBiZXR3ZWVuIHZibGFu ayBhbmQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGZyYW1lLgo+ID4+Pj4gCj4gPj4+PiBZZWFoLi4u IHdlIGhhdmUgYSB3aG9sZSBmcmFtZSB0b28uIEknbSBzdHJ1Z2dsaW5nIHRvIGZpbmQgb3VyIHdp a2kKPiA+Pj4+IHBhZ2Ugd2l0aCB0aGUgZGF0YSwgYnV0IGFuZWNkb3RhbGx5IHRoZXJlJ3Mgc29t ZSAob3V0LW9mLXRyZWUpIGRyaXZlcnMKPiA+Pj4+IHdoaWNoIGtlZXAgaW50ZXJydXB0cyBtYXNr ZWQgZm9yIGEgX3JlYWxseSBsb25nXyB0aW1lLiBJdCdzIG5pY2UgaWYKPiA+Pj4+IHlvdSBkb24n dCBoYXZlIHRvIGNhcmUgYWJvdXQgdGhvc2UgOi0pCj4gPj4+IAo+ID4+PiBJIG9ubHkgcHJvdmlk ZSB0d28gb3B0aW9uczogbm90IG15IHByb2JsZW0sIG9yIGdpdmUgbWUgdGhlIHNvdXJjZSBjb2Rl Cj4gPj4+IGFuZCBkb2N1bWVudGF0aW9uIGFuZCBsZXQgbWUgdXBzdHJlYW0gYSBjbGVhbiB2ZXJz aW9uIG9mIHRoZSBvdXQtb2YtdHJlZQo+ID4+PiBkcml2ZXJzIDotKQo+ID4+PiAKPiA+Pj4+Pj4+ ICAvKioKPiA+Pj4+Pj4+ICAgKiB2c3AxX2RsbV9pcnFfZnJhbWVfZW5kIC0gRGlzcGxheSBsaXN0 IGhhbmRsZXIgZm9yIHRoZSBmcmFtZSBlbmQgaW50ZXJydXB0Cj4gPj4+Pj4+PiAgICogQGRsbTog dGhlIGRpc3BsYXkgbGlzdCBtYW5hZ2VyCj4gPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZGwuaCBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNw MS92c3AxX2RsLmgKPiA+Pj4+Pj4+IGluZGV4IGUwZmRiMTQ1ZTZlZC4uZjg0NTYwN2FiYzRjIDEw MDY0NAo+ID4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZGwu aAo+ID4+Pj4+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZGwuaAo+ ID4+Pj4+Pj4gQEAgLTU0LDYgKzU0LDcgQEAgc3RydWN0IHZzcDFfZGxfbWFuYWdlciAqdnNwMV9k bG1fY3JlYXRlKHN0cnVjdCB2c3AxX2RldmljZSAqdnNwMSwKPiA+Pj4+Pj4+ICAJCQkJCXVuc2ln bmVkIGludCBwcmVhbGxvYyk7Cj4gPj4+Pj4+PiAgdm9pZCB2c3AxX2RsbV9kZXN0cm95KHN0cnVj dCB2c3AxX2RsX21hbmFnZXIgKmRsbSk7Cj4gPj4+Pj4+PiAgdm9pZCB2c3AxX2RsbV9yZXNldChz dHJ1Y3QgdnNwMV9kbF9tYW5hZ2VyICpkbG0pOwo+ID4+Pj4+Pj4gK3ZvaWQgdnNwMV9kbG1faXJx X2Rpc3BsYXlfc3RhcnQoc3RydWN0IHZzcDFfZGxfbWFuYWdlciAqZGxtKTsKPiA+Pj4+Pj4+ICB1 bnNpZ25lZCBpbnQgdnNwMV9kbG1faXJxX2ZyYW1lX2VuZChzdHJ1Y3QgdnNwMV9kbF9tYW5hZ2Vy ICpkbG0pOwo+ID4+Pj4+Pj4gIHN0cnVjdCB2c3AxX2RsX2JvZHkgKnZzcDFfZGxtX2RsX2JvZHlf Z2V0KHN0cnVjdCB2c3AxX2RsX21hbmFnZXIgKmRsbSk7Cj4gPj4+Pj4+PiAgCj4gPj4+Pj4+PiBA QCAtNzEsNiArNzIsOCBAQCBzdHJ1Y3QgdnNwMV9kbF9ib2R5ICp2c3AxX2RsX2JvZHlfZ2V0KHN0 cnVjdCB2c3AxX2RsX2JvZHlfcG9vbCAqcG9vbCk7Cj4gPj4+Pj4+PiAgdm9pZCB2c3AxX2RsX2Jv ZHlfcHV0KHN0cnVjdCB2c3AxX2RsX2JvZHkgKmRsYik7Cj4gPj4+Pj4+PiAgCj4gPj4+Pj4+PiAg dm9pZCB2c3AxX2RsX2JvZHlfd3JpdGUoc3RydWN0IHZzcDFfZGxfYm9keSAqZGxiLCB1MzIgcmVn LCB1MzIgZGF0YSk7Cj4gPj4+Pj4+PiArdm9pZCB2c3AxX2RsX2JvZHlfd3JpdGVfb25lc2hvdChz dHJ1Y3QgdnNwMV9kbF9ib2R5ICpkbGIsIHUzMiByZWcsIHUzMiB2YWx1ZSwKPiA+Pj4+Pj4+ICsJ CQkJdTMyIHJlc2V0X3ZhbHVlKTsKPiA+Pj4+Pj4+ICBpbnQgdnNwMV9kbF9saXN0X2FkZF9ib2R5 KHN0cnVjdCB2c3AxX2RsX2xpc3QgKmRsLCBzdHJ1Y3QgdnNwMV9kbF9ib2R5ICpkbGIpOwo+ID4+ Pj4+Pj4gIGludCB2c3AxX2RsX2xpc3RfYWRkX2NoYWluKHN0cnVjdCB2c3AxX2RsX2xpc3QgKmhl YWQsIHN0cnVjdCB2c3AxX2RsX2xpc3QgKmRsKTsKPiA+Pj4+Pj4+ICAKCi0tIApSZWdhcmRzLAoK TGF1cmVudCBQaW5jaGFydApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWw=