From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH v2 03/12] drm/msm/dpu: add MDSS top level driver for dpu Date: Fri, 11 May 2018 14:32:02 -0400 Message-ID: <20180511183202.GA3373@art_vandelay> References: <1526050178-31893-1-git-send-email-ryadav@codeaurora.org> <1526050178-31893-4-git-send-email-ryadav@codeaurora.org> <20180511170523.GF4995@jcrouse-lnx.qualcomm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180511170523.GF4995-9PYrDHPZ2Orvke4nUoYGnHL1okKdlPRT@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Rajesh Yadav , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBNYXkgMTEsIDIwMTggYXQgMTE6MDU6MjRBTSAtMDYwMCwgSm9yZGFuIENyb3VzZSB3 cm90ZToKPiBPbiBGcmksIE1heSAxMSwgMjAxOCBhdCAwODoxOToyOVBNICswNTMwLCBSYWplc2gg WWFkYXYgd3JvdGU6Cj4gPiBTb0NzIGNvbnRhaW5pbmcgZHB1IGhhdmUgYSBNRFNTIHRvcCBsZXZl bCB3cmFwcGVyCj4gPiB3aGljaCBpbmNsdWRlcyBzdWItYmxvY2tzIGFzIGRwdSwgZHNpLCBwaHks IGRwIGV0Yy4KPiA+IE1EU1MgdG9wIGxldmVsIHdyYXBwZXIgbWFuYWdlcyBjb21tb24gcmVzb3Vy Y2VzIGxpa2UKPiA+IGNvbW1vbiBjbG9ja3MsIHBvd2VyIGFuZCBpcnEgZm9yIGl0cyBzdWItYmxv Y2tzLgo+ID4gCj4gPiBDdXJyZW50bHksIGluIGRwdSBkcml2ZXIsIGFsbCB0aGUgcG93ZXIgcmVz b3VyY2UKPiA+IG1hbmFnZW1lbnQgaXMgcGFydCBvZiBwb3dlcl9oYW5kbGUgd2hpY2ggbWFuYWdl cwo+ID4gdGhlc2UgcmVzb3VyY2VzIHZpYSBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4gQW5kCj4g PiB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwcyBhcmUgbm90IG1vZGVsbGVkIHByb3Blcmx5Cj4g PiBpbiBkdC4gIE1vcmVvdmVyIHRoZSBpcnEgZG9tYWluIGhhbmRsaW5nIGNvZGUgaXMgcGFydAo+ ID4gb2YgZHB1IGRldmljZSAod2hpY2ggaXMgYSBjaGlsZCBkZXZpY2UpIGR1ZSB0byBsYWNrCj4g PiBvZiBhIGRlZGljYXRlZCBkcml2ZXIgZm9yIE1EU1MgdG9wIGxldmVsIHdyYXBwZXIKPiA+IGRl dmljZS4KPiA+IAo+ID4gVGhpcyBjaGFuZ2UgYWRkcyBkcHVfbWRzcyB0b3AgbGV2ZWwgZHJpdmVy IHRvIGhhbmRsZQo+ID4gY29tbW9uIGNsb2NrIGxpa2UgLSBjb3JlIGNsb2NrLCBhaGIgY2xvY2sK PiA+IChmb3IgcmVnaXN0ZXIgYWNjZXNzKSwgbWFpbiBwb3dlciBzdXBwbHkgKGkuZS4gZ2RzYykK PiA+IGFuZCBpcnEgbWFuYWdlbWVudC4KPiA+IFRoZSB0b3AgbGV2ZWwgbWRzcyBkZXZpY2UvZHJp dmVyIGFjdHMgYXMgYW4gaW50ZXJydXB0Cj4gPiBjb250cm9sbGVyIGFuZCBtYW5hZ2UgaHdpcnEg bWFwcGluZyBmb3IgaXRzIGNoaWxkCj4gPiBkZXZpY2VzLgo+ID4gCj4gPiBJdCBpbXBsZW1lbnRz IHJ1bnRpbWVfcG0gc3VwcG9ydCBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudC4KPiA+IENoaWxkIG5v ZGVzIGNhbiBjb250cm9sIHRoZXNlIHJlc291cmNlcyB2aWEgcnVudGltZV9wbQo+ID4gZ2V0L3B1 dCBjYWxscyBvbiB0aGVpciBjb3JyZXNwb25kaW5nIGRldmljZXMgZHVlIHRvIHBhcmVudAo+ID4g Y2hpbGQgcmVsYXRpb25zaGlwIGRlZmluZWQgaW4gZHQuCj4gPiAKPiA+IENoYW5nZXMgaW4gdjI6 Cj4gPiAJLSBtZXJnZSBfZHB1X21kc3NfaHdfcmV2X2luaXQgdG8gZHB1X21kc3NfaW5pdCAoU2Vh biBQYXVsKQo+ID4gCS0gbWVyZ2UgX2RwdV9tZHNzX2dldF9pbnRyX3NvdXJjZXMgdG8gZHB1X21k c3NfaXJxIChTZWFuIFBhdWwpCj4gPiAJLSBmaXggaW5kZW50YXRpb24gZm9yIGlycV9maW5kX21h cHBpbmcgY2FsbCAoU2VhbiBQYXVsKQo+ID4gCS0gcmVtb3ZlIHVubmVjZXNzYXJ5IGdvdG8gc3Rh dGVtZW50cyBmcm9tIGRwdV9tZHNzX2lycSAoU2VhbiBQYXVsKQo+ID4gCS0gcmVtb3ZlIHJlZHVu ZGFudCBwYXJhbSBjaGVja3MgZnJvbQo+ID4gCSAgZHB1X21kc3NfaXJxX21hc2svdW5tYXNrIChT ZWFuIFBhdWwvSm9yZGFuIENyb3VzZSkKPiA+IAktIHJlbW92ZSByZWR1bmRhbnQgcGFyYW0gY2hl Y2tzIGZyb20KPiA+IAkgIGRwdV9tZHNzX2lycWRvbWFpbl9tYXAgKFNlYW4gUGF1bC9Kb3JkYW4g Q3JvdXNlKQo+ID4gCS0gcmV0dXJuIGVycm9yIGNvZGUgZnJvbSBkcHVfbWRzc19lbmFibGUvZGlz YWJsZSAoU2VhbiBQYXVsL0pvcmRhbiBDcm91c2UpCj4gPiAJLSByZW1vdmUgcmVkdW5kYW50IHBh cmFtIGNoZWNrIGZyb20gZHB1X21kc3NfZGVzdHJveSAoU2VhbiBQYXVsKQo+ID4gCS0gcmVtb3Zl IGV4cGxpY2l0IGNhbGxzIHRvIGRldm1fa2ZyZWUgKFNlYW4gUGF1bC9Kb3JkYW4gQ3JvdXNlKQo+ ID4gCS0gcmVtb3ZlIGNvbXBhdGliaWxpdHkgY2hlY2sgZnJvbSBkcHVfbWRzc19pbml0IGFzCj4g PiAJICBpdCBpcyBjb25kaXRpb25hbGx5IGNhbGxlZCBmcm9tIG1zbV9kcnYgKFNlYW4gUGF1bCkK PiA+IAktIHJld29ya2VkIG1zbV9kc3NfcGFyc2VfY2xvY2soKSB0byBhZGQgcmV0dXJuIGNoZWNr cyBmb3IKPiA+IAkgIG9mX3Byb3BlcnR5X3JlYWRfKiBjYWxscywgZml4IGxvZyBtZXNzYWdlIGFu ZAo+ID4gCSAgZml4IGFsaWdubWVudCBpc3N1ZXMgKFNlYW4gUGF1bC9Kb3JkYW4gQ3JvdXNlKQo+ ID4gCS0gcmVtb3ZlIGV4dHJhIGxpbmUgYmVmb3JlIGRwdV9tZHNzX2luaXQgKFNlYW4gUGF1bCkK PiA+IAktIHJlbW92ZSByZWR1bmRhbnQgcGFyYW0gY2hlY2tzIGZyb20gX19pbnRyX29mZnNldCBh bmQKPiA+IAkgIG1ha2UgaXQgYSB2b2lkIGZ1bmN0aW9uIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGVy cm9yCj4gPiAJICBoYW5kbGluZyBmcm9tIGNhbGxlciAoSm9yZGFuIENyb3VzZSkKPiA+IAktIHJl bW92ZSByZWR1bmRhbnQgcGFyYW0gY2hlY2sgZnJvbSBkcHVfbWRzc19pcnEgKEpvcmRhbiBDcm91 c2UpCj4gPiAJLSBjaGFuZ2UgbWRzcyBhZGRyZXNzIHNwYWNlIGxvZyBtZXNzYWdlIHRvIGRlYnVn IGFuZCB1c2UgJXBLIGZvcgo+ID4gCSAga2VybmVsIHBvaW50ZXJzIChKb3JkYW4gQ3JvdXNlKQo+ ID4gCS0gcmVtb3ZlIHVubmVjZXNzYXJ5IGxvZyBtZXNzYWdlIGZyb20gbXNtX2Rzc19wYXJzZV9j bG9jayAoSm9yZGFuIENyb3VzZSkKPiA+IAktIGRvbid0IGV4cG9ydCBtc21fZHNzX3BhcnNlX2Ns b2NrIHNpbmNlIGl0IGlzIHVzZWQKPiA+IAkgIG9ubHkgYnkgZHB1IGRyaXZlciAoSm9yZGFuIENy b3VzZSkKPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29kZWF1 cm9yYS5vcmc+Cj4gCj4gUmV2aWV3ZWQtYnk6IEpvcmRhbiBDcm91c2UgPGpjcm91c2VAY29kZWF1 cm9yYS5vcmc+Cj4gCj4gSSBrbm93IHlvdSdsbCBnZXQgYSBodW5kcmVkIGRpZmZlcmVudCBvcGlu aW9ucyBmcm9tIGEgaHVuZHJlZCBkaWZmZXJlbnQgcGVvcGxlCgpJJ2xsIGludGVycHJldCB0aGlz IGFzIHNvbGljaXRhdGlvbiBvZiBteSBvcGluaW9uIDotKQoKSSBmaW5kIHRoaXMgbGV2ZWwgb2Yg ZGV0YWlsIF9leHRyZW1lbHlfIHVzZWZ1bCB3aGVuIHJldmlld2luZywgZXNwZWNpYWxseSBvbgpz ZXRzIGFzIGJpZyBhcyB0aGlzIG9uZS4KCkl0J3MgYSBwcmV0dHkgZ29vZCBzdHJhdGVneSB0byBt YWtlIHJldmlld3MgZ28gYXMgc21vb3RobHkgYXMgcG9zc2libGUsIHNpbmNlCml0J3MgZ2VuZXJh bGx5IG1vcmUgZGlmZmljdWx0IHRvIHJlYWQgY29kZSB0aGFuIHRvIHdyaXRlIGl0LgoKU2VhbgoK L29waW5pb24KCj4gYnV0IHlvdSBkb24ndCBuZWVkIHRvIGNyZWRpdCBtZSBmb3IgZXZlcnkgY2hh bmdlIC0ganVzdCBhIHNpbmdsZSBsaW5lICJmaXhlZAo+IGJ1Z3MiIHdvcmtzIGZvciBtZS4KPiAK PiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3Jl X2lycS5jICAgICAgfCAgOTcgLS0tLS0tLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NvcmVfaXJxLmggICAgICB8ICAxNCAtLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMgICAgfCAgIDkgLQo+ID4gIGRyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmggICAgfCAgIDcgLQo+ID4gIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmMgfCAgMjggKy0tCj4g PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMuaCB8ICAx MSAtCj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2lycS5jICAgICAgICAg ICB8ICA0OCArLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5j ICAgICAgICAgICB8ICAgNiAtCj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2ttcy5oICAgICAgICAgICB8ICAgMiAtCj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X21kc3MuYyAgICAgICAgICB8IDI1NCArKysrKysrKysrKysrKysrKysrKysrCj4gPiAg ZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9fdXRpbC5jICAgICAgICAgICAgICAgICB8ICA1NyAr KysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jICAgICAgICAgICAgICAgICAg ICAgfCAgMjYgKystCj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ID4gIGluY2x1ZGUvbGludXgvZHB1X2lvX3V0aWwu aCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ID4gIDE2IGZpbGVzIGNoYW5nZWQsIDMz OSBpbnNlcnRpb25zKCspLCAyMjYgZGVsZXRpb25zKC0pCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9tZHNzLmMKPiA+IAo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L01ha2VmaWxlCj4gPiBpbmRleCBkNzU1OGVkLi5kOTgyNmMxIDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9N YWtlZmlsZQo+ID4gQEAgLTgxLDYgKzgxLDcgQEAgbXNtLXkgOj0gXAo+ID4gIAlkaXNwL2RwdTEv ZHB1X3JlZ19kbWEubyBcCj4gPiAgCWRpc3AvZHB1MS9kcHVfcm0ubyBcCj4gPiAgCWRpc3AvZHB1 MS9kcHVfdmJpZi5vIFwKPiA+ICsJZGlzcC9kcHUxL2RwdV9tZHNzLm8gXAo+ID4gIAlkcHVfZGJn Lm8gXAo+ID4gIAlkcHVfaW9fdXRpbC5vIFwKPiA+ICAJZHB1X2RiZ19ldnRsb2cubyBcCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuYwo+ID4gaW5kZXgg ZmUzMzAxMy4uOTc3YWRjNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9jb3JlX2lycS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfY29yZV9pcnEuYwo+ID4gQEAgLTUxNSwxMDMgKzUxNSw2IEBAIHZvaWQgZHB1X2Nv cmVfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKPiA+ICAJZHB1X2ttcy0+ aXJxX29iai50b3RhbF9pcnFzID0gMDsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgZHB1 X2NvcmVfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICppcnFkKQo+ID4gLXsKPiA+IC0Jc3RydWN0 IGRwdV9rbXMgKmRwdV9rbXM7Cj4gPiAtCj4gPiAtCWlmICghaXJxZCB8fCAhaXJxX2RhdGFfZ2V0 X2lycV9jaGlwX2RhdGEoaXJxZCkpIHsKPiA+IC0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbWV0 ZXJzIGlycWQgJWRcbiIsIGlycWQgIT0gTlVMTCk7Cj4gPiAtCQlyZXR1cm47Cj4gPiAtCX0KPiA+ IC0JZHB1X2ttcyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGlycWQpOwo+ID4gLQo+ID4g LQkvKiBtZW1vcnkgYmFycmllciAqLwo+ID4gLQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKPiA+ IC0JY2xlYXJfYml0KGlycWQtPmh3aXJxLCAmZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIuZW5hYmxl ZF9tYXNrKTsKPiA+IC0JLyogbWVtb3J5IGJhcnJpZXIgKi8KPiA+IC0Jc21wX21iX19hZnRlcl9h dG9taWMoKTsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGljIHZvaWQgZHB1X2NvcmVfaXJxX3VubWFz ayhzdHJ1Y3QgaXJxX2RhdGEgKmlycWQpCj4gPiAtewo+ID4gLQlzdHJ1Y3QgZHB1X2ttcyAqZHB1 X2ttczsKPiA+IC0KPiA+IC0JaWYgKCFpcnFkIHx8ICFpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0 YShpcnFkKSkgewo+ID4gLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtZXRlcnMgaXJxZCAlZFxu IiwgaXJxZCAhPSBOVUxMKTsKPiA+IC0JCXJldHVybjsKPiA+IC0JfQo+ID4gLQlkcHVfa21zID0g aXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoaXJxZCk7Cj4gPiAtCj4gPiAtCS8qIG1lbW9yeSBi YXJyaWVyICovCj4gPiAtCXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOwo+ID4gLQlzZXRfYml0KGly cWQtPmh3aXJxLCAmZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIuZW5hYmxlZF9tYXNrKTsKPiA+IC0J LyogbWVtb3J5IGJhcnJpZXIgKi8KPiA+IC0Jc21wX21iX19hZnRlcl9hdG9taWMoKTsKPiA+IC19 Cj4gPiAtCj4gPiAtc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBkcHVfY29yZV9pcnFfY2hpcCA9IHsK PiA+IC0JLm5hbWUgPSAiZHB1IiwKPiA+IC0JLmlycV9tYXNrID0gZHB1X2NvcmVfaXJxX21hc2ss Cj4gPiAtCS5pcnFfdW5tYXNrID0gZHB1X2NvcmVfaXJxX3VubWFzaywKPiA+IC19Owo+ID4gLQo+ ID4gLXN0YXRpYyBpbnQgZHB1X2NvcmVfaXJxZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAq ZG9tYWluLAo+ID4gLQkJdW5zaWduZWQgaW50IGlycSwgaXJxX2h3X251bWJlcl90IGh3aXJxKQo+ ID4gLXsKPiA+IC0Jc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7Cj4gPiAtCWludCByYzsKPiA+IC0K PiA+IC0JaWYgKCFkb21haW4gfHwgIWRvbWFpbi0+aG9zdF9kYXRhKSB7Cj4gPiAtCQlEUFVfRVJS T1IoImludmFsaWQgcGFyYW1ldGVycyBkb21haW4gJWRcbiIsIGRvbWFpbiAhPSBOVUxMKTsKPiA+ IC0JCXJldHVybiAtRUlOVkFMOwo+ID4gLQl9Cj4gPiAtCWRwdV9rbXMgPSBkb21haW4tPmhvc3Rf ZGF0YTsKPiA+IC0KPiA+IC0JaXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgJmRwdV9jb3Jl X2lycV9jaGlwLCBoYW5kbGVfbGV2ZWxfaXJxKTsKPiA+IC0JcmMgPSBpcnFfc2V0X2NoaXBfZGF0 YShpcnEsIGRwdV9rbXMpOwo+ID4gLQo+ID4gLQlyZXR1cm4gcmM7Cj4gPiAtfQo+ID4gLQo+ID4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgZHB1X2NvcmVfaXJxZG9tYWluX29w cyA9IHsKPiA+IC0JLm1hcCA9IGRwdV9jb3JlX2lycWRvbWFpbl9tYXAsCj4gPiAtCS54bGF0ZSA9 IGlycV9kb21haW5feGxhdGVfb25lY2VsbCwKPiA+IC19Owo+ID4gLQo+ID4gLWludCBkcHVfY29y ZV9pcnFfZG9tYWluX2FkZChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKPiA+IC17Cj4gPiAtCXN0 cnVjdCBkZXZpY2UgKmRldjsKPiA+IC0Jc3RydWN0IGlycV9kb21haW4gKmRvbWFpbjsKPiA+IC0K PiA+IC0JaWYgKCFkcHVfa21zLT5kZXYgfHwgIWRwdV9rbXMtPmRldi0+ZGV2KSB7Cj4gPiAtCQlw cl9lcnIoImludmFsaWQgZGV2aWNlIGhhbmRsZXNcbiIpOwo+ID4gLQkJcmV0dXJuIC1FSU5WQUw7 Cj4gPiAtCX0KPiA+IC0KPiA+IC0JZGV2ID0gZHB1X2ttcy0+ZGV2LT5kZXY7Cj4gPiAtCj4gPiAt CWRvbWFpbiA9IGlycV9kb21haW5fYWRkX2xpbmVhcihkZXYtPm9mX25vZGUsIDMyLAo+ID4gLQkJ CSZkcHVfY29yZV9pcnFkb21haW5fb3BzLCBkcHVfa21zKTsKPiA+IC0JaWYgKCFkb21haW4pIHsK PiA+IC0JCXByX2VycigiZmFpbGVkIHRvIGFkZCBpcnFfZG9tYWluXG4iKTsKPiA+IC0JCXJldHVy biAtRUlOVkFMOwo+ID4gLQl9Cj4gPiAtCj4gPiAtCWRwdV9rbXMtPmlycV9jb250cm9sbGVyLmVu YWJsZWRfbWFzayA9IDA7Cj4gPiAtCWRwdV9rbXMtPmlycV9jb250cm9sbGVyLmRvbWFpbiA9IGRv bWFpbjsKPiA+IC0KPiA+IC0JcmV0dXJuIDA7Cj4gPiAtfQo+ID4gLQo+ID4gLWludCBkcHVfY29y ZV9pcnFfZG9tYWluX2Zpbmkoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpCj4gPiAtewo+ID4gLQlp ZiAoZHB1X2ttcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWluKSB7Cj4gPiAtCQlpcnFfZG9tYWluX3Jl bW92ZShkcHVfa21zLT5pcnFfY29udHJvbGxlci5kb21haW4pOwo+ID4gLQkJZHB1X2ttcy0+aXJx X2NvbnRyb2xsZXIuZG9tYWluID0gTlVMTDsKPiA+IC0JfQo+ID4gLQlyZXR1cm4gMDsKPiA+IC19 Cj4gPiAtCj4gPiAgaXJxcmV0dXJuX3QgZHB1X2NvcmVfaXJxKHN0cnVjdCBkcHVfa21zICpkcHVf a21zKQo+ID4gIHsKPiA+ICAJLyoKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9jb3JlX2lycS5oCj4gPiBpbmRleCA2NGE1NGZlLi44ZmE1OWRiIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmgKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX2lycS5oCj4gPiBAQCAtMzgs MjAgKzM4LDYgQEAKPiA+ICB2b2lkIGRwdV9jb3JlX2lycV91bmluc3RhbGwoc3RydWN0IGRwdV9r bXMgKmRwdV9rbXMpOwo+ID4gIAo+ID4gIC8qKgo+ID4gLSAqIGRwdV9jb3JlX2lycV9kb21haW5f YWRkIC0gQWRkIGNvcmUgSVJRIGRvbWFpbiBmb3IgRFBVCj4gPiAtICogQGRwdV9rbXM6CQlEUFUg aGFuZGxlCj4gPiAtICogQHJldHVybjoJCW5vbmUKPiA+IC0gKi8KPiA+IC1pbnQgZHB1X2NvcmVf aXJxX2RvbWFpbl9hZGQoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpOwo+ID4gLQo+ID4gLS8qKgo+ ID4gLSAqIGRwdV9jb3JlX2lycV9kb21haW5fZmluaSAtIHVuaW5zdGFsbCBjb3JlIElSUSBkb21h aW4KPiA+IC0gKiBAZHB1X2ttczoJCURQVSBoYW5kbGUKPiA+IC0gKiBAcmV0dXJuOgkJMCBpZiBz dWNjZXNzOyBlcnJvciBjb2RlIG90aGVyd2lzZQo+ID4gLSAqLwo+ID4gLWludCBkcHVfY29yZV9p cnFfZG9tYWluX2Zpbmkoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpOwo+ID4gLQo+ID4gLS8qKgo+ ID4gICAqIGRwdV9jb3JlX2lycSAtIGNvcmUgSVJRIGhhbmRsZXIKPiA+ICAgKiBAZHB1X2ttczoJ CURQVSBoYW5kbGUKPiA+ICAgKiBAcmV0dXJuOgkJaW50ZXJydXB0IGhhbmRsaW5nIHN0YXR1cwo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRh bG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCj4g PiBpbmRleCA4ZTc3OWMwLi5jNWIzNzBmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYwo+ID4gQEAgLTc3LDEzICs3Nyw2IEBACj4g PiAgCS5oYXNfaWRsZV9wYyA9IHRydWUsCj4gPiAgfTsKPiA+ICAKPiA+IC1zdGF0aWMgc3RydWN0 IGRwdV9tZHNzX2Jhc2VfY2ZnIHNkbTg0NV9tZHNzW10gPSB7Cj4gPiAtCXsKPiA+IC0JLm5hbWUg PSAibWRzc18wIiwgLmlkID0gTURQX1RPUCwKPiA+IC0JLmJhc2UgPSAweDAsIC5mZWF0dXJlcyA9 IDAKPiA+IC0JfSwKPiA+IC19Owo+ID4gLQo+ID4gIHN0YXRpYyBzdHJ1Y3QgZHB1X21kcF9jZmcg c2RtODQ1X21kcFtdID0gewo+ID4gIAl7Cj4gPiAgCS5uYW1lID0gInRvcF8wIiwgLmlkID0gTURQ X1RPUCwKPiA+IEBAIC01NTAsOCArNTQzLDYgQEAgdm9pZCBzZG04NDVfY2ZnX2luaXQoc3RydWN0 IGRwdV9tZHNzX2NmZyAqZHB1X2NmZykKPiA+ICB7Cj4gPiAgCSpkcHVfY2ZnID0gKHN0cnVjdCBk cHVfbWRzc19jZmcpewo+ID4gIAkJLmNhcHMgPSAmc2RtODQ1X2RwdV9jYXBzLAo+ID4gLQkJLm1k c3NfY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9tZHNzKSwKPiA+IC0JCS5tZHNzID0gc2RtODQ1 X21kc3MsCj4gPiAgCQkubWRwX2NvdW50ID0gQVJSQVlfU0laRShzZG04NDVfbWRwKSwKPiA+ICAJ CS5tZHAgPSBzZG04NDVfbWRwLAo+ID4gIAkJLmN0bF9jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1 X2N0bCksCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X2NhdGFsb2cuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRh bG9nLmgKPiA+IGluZGV4IDM5YmVjMGEuLjcwODQ2NDMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oCj4gPiBAQCAtNDkyLDEwICs0 OTIsNiBAQCBzdHJ1Y3QgZHB1X3diX3N1Yl9ibG9ja3Mgewo+ID4gIAl1MzIgbWF4bGluZXdpZHRo Owo+ID4gIH07Cj4gPiAgCj4gPiAtc3RydWN0IGRwdV9tZHNzX2Jhc2VfY2ZnIHsKPiA+IC0JRFBV X0hXX0JMS19JTkZPOwo+ID4gLX07Cj4gPiAtCj4gPiAgLyoqCj4gPiAgICogZHB1X2Nsa19jdHJs X3R5cGUgLSBEZWZpbmVzIHRvcCBsZXZlbCBjbG9jayBjb250cm9sIHNpZ25hbHMKPiA+ICAgKi8K PiA+IEBAIC04NzUsOSArODcxLDYgQEAgc3RydWN0IGRwdV9tZHNzX2NmZyB7Cj4gPiAgCj4gPiAg CWNvbnN0IHN0cnVjdCBkcHVfY2FwcyAqY2FwczsKPiA+ICAKPiA+IC0JdTMyIG1kc3NfY291bnQ7 Cj4gPiAtCXN0cnVjdCBkcHVfbWRzc19iYXNlX2NmZyAqbWRzczsKPiA+IC0KPiA+ICAJdTMyIG1k cF9jb3VudDsKPiA+ICAJc3RydWN0IGRwdV9tZHBfY2ZnICptZHA7Cj4gPiAgCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMuYyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmMKPiA+IGlu ZGV4IDk3NjdjYzguLjczZjA4NGMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5jCj4gPiBAQCAtMjIsNyArMjIsNiBAQAo+ ID4gICAqIFJlZ2lzdGVyIG9mZnNldHMgaW4gTURTUyByZWdpc3RlciBmaWxlIGZvciB0aGUgaW50 ZXJydXB0IHJlZ2lzdGVycwo+ID4gICAqIHcuci50LiB0byB0aGUgTURTUyBiYXNlCj4gPiAgICov Cj4gPiAtI2RlZmluZSBIV19JTlRSX1NUQVRVUwkJCTB4MDAxMAo+ID4gICNkZWZpbmUgTURQX1NT UFBfVE9QMF9PRkYJCTB4MTAwMAo+ID4gICNkZWZpbmUgTURQX0lOVEZfMF9PRkYJCQkweDZCMDAw Cj4gPiAgI2RlZmluZSBNRFBfSU5URl8xX09GRgkJCTB4NkI4MDAKPiA+IEBAIC0xMDE3LDE3ICsx MDE2LDYgQEAgc3RhdGljIGludCBkcHVfaHdfaW50cl9nZXRfdmFsaWRfaW50ZXJydXB0cyhzdHJ1 Y3QgZHB1X2h3X2ludHIgKmludHIsCj4gPiAgCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+IC1z dGF0aWMgaW50IGRwdV9od19pbnRyX2dldF9pbnRlcnJ1cHRfc291cmNlcyhzdHJ1Y3QgZHB1X2h3 X2ludHIgKmludHIsCj4gPiAtCQl1aW50MzJfdCAqc291cmNlcykKPiA+IC17Cj4gPiAtCWlmICgh aW50ciB8fCAhc291cmNlcykKPiA+IC0JCXJldHVybiAtRUlOVkFMOwo+ID4gLQo+ID4gLQkqc291 cmNlcyA9IERQVV9SRUdfUkVBRCgmaW50ci0+aHcsIEhXX0lOVFJfU1RBVFVTKTsKPiA+IC0KPiA+ IC0JcmV0dXJuIDA7Cj4gPiAtfQo+ID4gLQo+ID4gIHN0YXRpYyB2b2lkIGRwdV9od19pbnRyX2dl dF9pbnRlcnJ1cHRfc3RhdHVzZXMoc3RydWN0IGRwdV9od19pbnRyICppbnRyKQo+ID4gIHsKPiA+ ICAJaW50IGk7Cj4gPiBAQCAtMTE2Miw3ICsxMTUwLDYgQEAgc3RhdGljIHZvaWQgX19zZXR1cF9p bnRyX29wcyhzdHJ1Y3QgZHB1X2h3X2ludHJfb3BzICpvcHMpCj4gPiAgCW9wcy0+Y2xlYXJfYWxs X2lycXMgPSBkcHVfaHdfaW50cl9jbGVhcl9pcnFzOwo+ID4gIAlvcHMtPmRpc2FibGVfYWxsX2ly cXMgPSBkcHVfaHdfaW50cl9kaXNhYmxlX2lycXM7Cj4gPiAgCW9wcy0+Z2V0X3ZhbGlkX2ludGVy cnVwdHMgPSBkcHVfaHdfaW50cl9nZXRfdmFsaWRfaW50ZXJydXB0czsKPiA+IC0Jb3BzLT5nZXRf aW50ZXJydXB0X3NvdXJjZXMgPSBkcHVfaHdfaW50cl9nZXRfaW50ZXJydXB0X3NvdXJjZXM7Cj4g PiAgCW9wcy0+Z2V0X2ludGVycnVwdF9zdGF0dXNlcyA9IGRwdV9od19pbnRyX2dldF9pbnRlcnJ1 cHRfc3RhdHVzZXM7Cj4gPiAgCW9wcy0+Y2xlYXJfaW50ZXJydXB0X3N0YXR1cyA9IGRwdV9od19p bnRyX2NsZWFyX2ludGVycnVwdF9zdGF0dXM7Cj4gPiAgCW9wcy0+Y2xlYXJfaW50cl9zdGF0dXNf bm9sb2NrID0gZHB1X2h3X2ludHJfY2xlYXJfaW50cl9zdGF0dXNfbm9sb2NrOwo+ID4gQEAgLTEx NzAsMjMgKzExNTcsMTggQEAgc3RhdGljIHZvaWQgX19zZXR1cF9pbnRyX29wcyhzdHJ1Y3QgZHB1 X2h3X2ludHJfb3BzICpvcHMpCj4gPiAgCW9wcy0+Z2V0X2ludHJfc3RhdHVzX25vbG9jayA9IGRw dV9od19pbnRyX2dldF9pbnRyX3N0YXR1c19ub2xvY2s7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRp YyBzdHJ1Y3QgZHB1X21kc3NfYmFzZV9jZmcgKl9faW50cl9vZmZzZXQoc3RydWN0IGRwdV9tZHNz X2NmZyAqbSwKPiA+ICtzdGF0aWMgdm9pZCBfX2ludHJfb2Zmc2V0KHN0cnVjdCBkcHVfbWRzc19j ZmcgKm0sCj4gPiAgCQl2b2lkIF9faW9tZW0gKmFkZHIsIHN0cnVjdCBkcHVfaHdfYmxrX3JlZ19t YXAgKmh3KQo+ID4gIHsKPiA+IC0JaWYgKCFtIHx8ICFhZGRyIHx8ICFodyB8fCBtLT5tZHBfY291 bnQgPT0gMCkKPiA+IC0JCXJldHVybiBOVUxMOwo+ID4gLQo+ID4gIAlody0+YmFzZV9vZmYgPSBh ZGRyOwo+ID4gLQlody0+YmxrX29mZiA9IG0tPm1kc3NbMF0uYmFzZTsKPiA+ICsJaHctPmJsa19v ZmYgPSBtLT5tZHBbMF0uYmFzZTsKPiA+ICAJaHctPmh3dmVyc2lvbiA9IG0tPmh3dmVyc2lvbjsK PiA+IC0JcmV0dXJuICZtLT5tZHNzWzBdOwo+ID4gIH0KPiA+ICAKPiA+ICBzdHJ1Y3QgZHB1X2h3 X2ludHIgKmRwdV9od19pbnRyX2luaXQodm9pZCBfX2lvbWVtICphZGRyLAo+ID4gIAkJc3RydWN0 IGRwdV9tZHNzX2NmZyAqbSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcHVfaHdfaW50ciAqaW50cjsK PiA+IC0Jc3RydWN0IGRwdV9tZHNzX2Jhc2VfY2ZnICpjZmc7Cj4gPiAgCj4gPiAgCWlmICghYWRk ciB8fCAhbSkKPiA+ICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ID4gQEAgLTExOTUsMTEg KzExNzcsNyBAQCBzdHJ1Y3QgZHB1X2h3X2ludHIgKmRwdV9od19pbnRyX2luaXQodm9pZCBfX2lv bWVtICphZGRyLAo+ID4gIAlpZiAoIWludHIpCj4gPiAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKPiA+ICAKPiA+IC0JY2ZnID0gX19pbnRyX29mZnNldChtLCBhZGRyLCAmaW50ci0+aHcpOwo+ ID4gLQlpZiAoIWNmZykgewo+ID4gLQkJa2ZyZWUoaW50cik7Cj4gPiAtCQlyZXR1cm4gRVJSX1BU UigtRUlOVkFMKTsKPiA+IC0JfQo+ID4gKwlfX2ludHJfb2Zmc2V0KG0sIGFkZHIsICZpbnRyLT5o dyk7Cj4gPiAgCV9fc2V0dXBfaW50cl9vcHMoJmludHItPm9wcyk7Cj4gPiAgCj4gPiAgCWludHIt PmlycV9pZHhfdGJsX3NpemUgPSBBUlJBWV9TSVpFKGRwdV9pcnFfbWFwKTsKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5oIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVycnVwdHMuaAo+ID4gaW5k ZXggMmYxYTgyOC4uYjUyY2RjYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmgKPiA+IEBAIC0yNDIsMTcgKzI0Miw2IEBA IHN0cnVjdCBkcHVfaHdfaW50cl9vcHMgewo+ID4gIAlpbnQgKCpnZXRfdmFsaWRfaW50ZXJydXB0 cykoCj4gPiAgCQkJc3RydWN0IGRwdV9od19pbnRyICppbnRyLAo+ID4gIAkJCXVpbnQzMl90ICpt YXNrKTsKPiA+IC0KPiA+IC0JLyoqCj4gPiAtCSAqIGdldF9pbnRlcnJ1cHRfc291cmNlcyAtIEdl dHMgdGhlIGJpdG1hc2sgb2YgdGhlIERQVSBpbnRlcnJ1cHQKPiA+IC0JICogICAgICAgICAgICAg ICAgICAgICAgICAgc291cmNlIHRoYXQgYXJlIGN1cnJlbnRseSBmaXJlZC4KPiA+IC0JICogQGlu dHI6CUhXIGludGVycnVwdCBoYW5kbGUKPiA+IC0JICogQHNvdXJjZXM6CVJldHVybmluZyB0aGUg RFBVIGludGVycnVwdCBzb3VyY2Ugc3RhdHVzIGJpdCBtYXNrCj4gPiAtCSAqIEByZXR1cm46CTAg Zm9yIHN1Y2Nlc3MsIG90aGVyd2lzZSBmYWlsdXJlCj4gPiAtCSAqLwo+ID4gLQlpbnQgKCpnZXRf aW50ZXJydXB0X3NvdXJjZXMpKAo+ID4gLQkJCXN0cnVjdCBkcHVfaHdfaW50ciAqaW50ciwKPiA+ IC0JCQl1aW50MzJfdCAqc291cmNlcyk7Cj4gPiAgfTsKPiA+ICAKPiA+ICAvKioKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaXJxLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaXJxLmMKPiA+IGluZGV4IDE5YzA5MjkuLmQ1ZTZj ZTAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaXJx LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9pcnEuYwo+ID4g QEAgLTE5LDU2ICsxOSwxMSBAQAo+ID4gICNpbmNsdWRlICJkcHVfaXJxLmgiCj4gPiAgI2luY2x1 ZGUgImRwdV9jb3JlX2lycS5oIgo+ID4gIAo+ID4gLXN0YXRpYyB1aW50MzJfdCBnX2RwdV9pcnFf c3RhdHVzOwo+ID4gLQo+ID4gIGlycXJldHVybl90IGRwdV9pcnEoc3RydWN0IG1zbV9rbXMgKmtt cykKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gdG9fZHB1X2ttcyhrbXMp Owo+ID4gLQl1MzIgaW50ZXJydXB0czsKPiA+IC0KPiA+IC0JZHB1X2ttcy0+aHdfaW50ci0+b3Bz LmdldF9pbnRlcnJ1cHRfc291cmNlcyhkcHVfa21zLT5od19pbnRyLAo+ID4gLQkJCSZpbnRlcnJ1 cHRzKTsKPiA+IC0KPiA+IC0JLyogc3RvcmUgaXJxIHN0YXR1cyBpbiBjYXNlIG9mIGlycS1zdG9y bSBkZWJ1Z2dpbmcgKi8KPiA+IC0JZ19kcHVfaXJxX3N0YXR1cyA9IGludGVycnVwdHM7Cj4gPiAt Cj4gPiAtCS8qCj4gPiAtCSAqIFRha2luZyBjYXJlIG9mIE1EUCBpbnRlcnJ1cHQKPiA+IC0JICov Cj4gPiAtCWlmIChpbnRlcnJ1cHRzICYgSVJRX1NPVVJDRV9NRFApIHsKPiA+IC0JCWludGVycnVw dHMgJj0gfklSUV9TT1VSQ0VfTURQOwo+ID4gLQkJZHB1X2NvcmVfaXJxKGRwdV9rbXMpOwo+ID4g LQl9Cj4gPiAtCj4gPiAtCS8qCj4gPiAtCSAqIFJvdXRpbmcgYWxsIG90aGVyIGludGVycnVwdHMg dG8gZXh0ZXJuYWwgZHJpdmVycwo+ID4gLQkgKi8KPiA+IC0Jd2hpbGUgKGludGVycnVwdHMpIHsK PiA+IC0JCWlycV9od19udW1iZXJfdCBod2lycSA9IGZscyhpbnRlcnJ1cHRzKSAtIDE7Cj4gPiAt CQl1bnNpZ25lZCBpbnQgbWFwcGluZzsKPiA+IC0JCWludCByYzsKPiA+IC0KPiA+IC0JCW1hcHBp bmcgPSBpcnFfZmluZF9tYXBwaW5nKGRwdV9rbXMtPmlycV9jb250cm9sbGVyLmRvbWFpbiwKPiA+ IC0JCQkJaHdpcnEpOwo+ID4gLQkJaWYgKG1hcHBpbmcgPT0gMCkgewo+ID4gLQkJCURQVV9FVlQz Mihod2lycSwgRFBVX0VWVExPR19FUlJPUik7Cj4gPiAtCQkJZ290byBlcnJvcjsKPiA+IC0JCX0K PiA+IC0KPiA+IC0JCXJjID0gZ2VuZXJpY19oYW5kbGVfaXJxKG1hcHBpbmcpOwo+ID4gLQkJaWYg KHJjIDwgMCkgewo+ID4gLQkJCURQVV9FVlQzMihod2lycSwgbWFwcGluZywgcmMsIERQVV9FVlRM T0dfRVJST1IpOwo+ID4gLQkJCWdvdG8gZXJyb3I7Cj4gPiAtCQl9Cj4gPiAtCj4gPiAtCQlpbnRl cnJ1cHRzICY9IH4oMSA8PCBod2lycSk7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JcmV0dXJuIElSUV9I QU5ETEVEOwo+ID4gIAo+ID4gLWVycm9yOgo+ID4gLQkvKiBiYWQgc2l0dWF0aW9uLCBpbmZvcm0g aXJxIHN5c3RlbSwgaXQgbWF5IGRpc2FibGUgb3ZlcmFsbCBNRFNTIGlycSAqLwo+ID4gLQlyZXR1 cm4gSVJRX05PTkU7Cj4gPiArCXJldHVybiBkcHVfY29yZV9pcnEoZHB1X2ttcyk7Cj4gPiAgfQo+ ID4gIAo+ID4gIHZvaWQgZHB1X2lycV9wcmVpbnN0YWxsKHN0cnVjdCBtc21fa21zICprbXMpCj4g PiBAQCAtMTA4LDUgKzYzLDQgQEAgdm9pZCBkcHVfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgbXNtX2tt cyAqa21zKQo+ID4gIAl9Cj4gPiAgCj4gPiAgCWRwdV9jb3JlX2lycV91bmluc3RhbGwoZHB1X2tt cyk7Cj4gPiAtCWRwdV9jb3JlX2lycV9kb21haW5fZmluaShkcHVfa21zKTsKPiA+ICB9Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCj4gPiBpbmRleCAwNmFkYjM4Li5l NGFiNzUzIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2ttcy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMK PiA+IEBAIC02MzYsMTAgKzYzNiw2IEBAIHN0YXRpYyBpbnQgX2RwdV9rbXNfZHJtX29ial9pbml0 KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQo+ID4gIAlwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiA+ICAJY2F0YWxvZyA9IGRwdV9rbXMtPmNhdGFsb2c7Cj4gPiAgCj4gPiAtCXJldCA9IGRwdV9j b3JlX2lycV9kb21haW5fYWRkKGRwdV9rbXMpOwo+ID4gLQlpZiAocmV0KQo+ID4gLQkJZ290byBm YWlsX2lycTsKPiA+IC0KPiA+ICAJLyoKPiA+ICAJICogQ3JlYXRlIGVuY29kZXIgYW5kIHF1ZXJ5 IGRpc3BsYXkgZHJpdmVycyB0byBjcmVhdGUKPiA+ICAJICogYnJpZGdlcyBhbmQgY29ubmVjdG9y cwo+ID4gQEAgLTcxNiw4ICs3MTIsNiBAQCBzdGF0aWMgaW50IF9kcHVfa21zX2RybV9vYmpfaW5p dChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKPiA+ICAJcmV0dXJuIDA7Cj4gPiAgZmFpbDoKPiA+ ICAJX2RwdV9rbXNfZHJtX29ial9kZXN0cm95KGRwdV9rbXMpOwo+ID4gLWZhaWxfaXJxOgo+ID4g LQlkcHVfY29yZV9pcnFfZG9tYWluX2ZpbmkoZHB1X2ttcyk7Cj4gPiAgCXJldHVybiByZXQ7Cj4g PiAgfQo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAo+ID4g aW5kZXggNWIwYzA4MS4uYTFjMDkxMCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9rbXMuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2ttcy5oCj4gPiBAQCAtMTg0LDggKzE4NCw2IEBAIHN0cnVjdCBkcHVfa21zIHsK PiA+ICAJc3RydWN0IHJlZ3VsYXRvciAqbW1hZ2ljOwo+ID4gIAlzdHJ1Y3QgcmVndWxhdG9yICp2 ZW51czsKPiA+ICAKPiA+IC0Jc3RydWN0IGRwdV9pcnFfY29udHJvbGxlciBpcnFfY29udHJvbGxl cjsKPiA+IC0KPiA+ICAJc3RydWN0IGRwdV9od19pbnRyICpod19pbnRyOwo+ID4gIAlzdHJ1Y3Qg ZHB1X2lycSBpcnFfb2JqOwo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9tZHNzLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfbWRzcy5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMC4uY2U2 ODBlYQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X21kc3MuYwo+ID4gQEAgLTAsMCArMSwyNTQgQEAKPiA+ICsvKgo+ID4gKyAqIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gPiArICogQ29weXJpZ2h0IChjKSAyMDE4 LCBUaGUgTGludXggRm91bmRhdGlvbgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlICJkcHVf a21zLmgiCj4gPiArCj4gPiArI2RlZmluZSB0b19kcHVfbWRzcyh4KSBjb250YWluZXJfb2YoeCwg c3RydWN0IGRwdV9tZHNzLCBiYXNlKQo+ID4gKwo+ID4gKyNkZWZpbmUgSFdfSU5UUl9TVEFUVVMJ CQkweDAwMTAKPiA+ICsKPiA+ICtzdHJ1Y3QgZHB1X21kc3Mgewo+ID4gKwlzdHJ1Y3QgbXNtX21k c3MgYmFzZTsKPiA+ICsJdm9pZCBfX2lvbWVtICptbWlvOwo+ID4gKwl1bnNpZ25lZCBsb25nIG1t aW9fbGVuOwo+ID4gKwl1MzIgaHd2ZXJzaW9uOwo+ID4gKwlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dl ciBtcDsKPiA+ICsJc3RydWN0IGRwdV9pcnFfY29udHJvbGxlciBpcnFfY29udHJvbGxlcjsKPiA+ ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBpcnFyZXR1cm5fdCBkcHVfbWRzc19pcnEoaW50IGlycSwg dm9pZCAqYXJnKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcyA9IGFyZzsK PiA+ICsJdTMyIGludGVycnVwdHM7Cj4gPiArCj4gPiArCWludGVycnVwdHMgPSByZWFkbF9yZWxh eGVkKGRwdV9tZHNzLT5tbWlvICsgSFdfSU5UUl9TVEFUVVMpOwo+ID4gKwo+ID4gKwl3aGlsZSAo aW50ZXJydXB0cykgewo+ID4gKwkJaXJxX2h3X251bWJlcl90IGh3aXJxID0gZmxzKGludGVycnVw dHMpIC0gMTsKPiA+ICsJCXVuc2lnbmVkIGludCBtYXBwaW5nOwo+ID4gKwkJaW50IHJjOwo+ID4g Kwo+ID4gKwkJbWFwcGluZyA9IGlycV9maW5kX21hcHBpbmcoZHB1X21kc3MtPmlycV9jb250cm9s bGVyLmRvbWFpbiwKPiA+ICsJCQkJCSAgIGh3aXJxKTsKPiA+ICsJCWlmIChtYXBwaW5nID09IDAp IHsKPiA+ICsJCQlEUFVfRVZUMzIoaHdpcnEsIERQVV9FVlRMT0dfRVJST1IpOwo+ID4gKwkJCXJl dHVybiBJUlFfTk9ORTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCXJjID0gZ2VuZXJpY19oYW5kbGVf aXJxKG1hcHBpbmcpOwo+ID4gKwkJaWYgKHJjIDwgMCkgewo+ID4gKwkJCURQVV9FVlQzMihod2ly cSwgbWFwcGluZywgcmMsIERQVV9FVlRMT0dfRVJST1IpOwo+ID4gKwkJCXJldHVybiBJUlFfTk9O RTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCWludGVycnVwdHMgJj0gfigxIDw8IGh3aXJxKTsKPiA+ ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0 YXRpYyB2b2lkIGRwdV9tZHNzX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqaXJxZCkKPiA+ICt7 Cj4gPiArCXN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3MgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBf ZGF0YShpcnFkKTsKPiA+ICsKPiA+ICsJLyogbWVtb3J5IGJhcnJpZXIgKi8KPiA+ICsJc21wX21i X19iZWZvcmVfYXRvbWljKCk7Cj4gPiArCWNsZWFyX2JpdChpcnFkLT5od2lycSwgJmRwdV9tZHNz LT5pcnFfY29udHJvbGxlci5lbmFibGVkX21hc2spOwo+ID4gKwkvKiBtZW1vcnkgYmFycmllciAq Lwo+ID4gKwlzbXBfbWJfX2FmdGVyX2F0b21pYygpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg dm9pZCBkcHVfbWRzc19pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqaXJxZCkKPiA+ICt7Cj4g PiArCXN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3MgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0 YShpcnFkKTsKPiA+ICsKPiA+ICsJLyogbWVtb3J5IGJhcnJpZXIgKi8KPiA+ICsJc21wX21iX19i ZWZvcmVfYXRvbWljKCk7Cj4gPiArCXNldF9iaXQoaXJxZC0+aHdpcnEsICZkcHVfbWRzcy0+aXJx X2NvbnRyb2xsZXIuZW5hYmxlZF9tYXNrKTsKPiA+ICsJLyogbWVtb3J5IGJhcnJpZXIgKi8KPiA+ ICsJc21wX21iX19hZnRlcl9hdG9taWMoKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHN0cnVj dCBpcnFfY2hpcCBkcHVfbWRzc19pcnFfY2hpcCA9IHsKPiA+ICsJLm5hbWUgPSAiZHB1X21kc3Mi LAo+ID4gKwkuaXJxX21hc2sgPSBkcHVfbWRzc19pcnFfbWFzaywKPiA+ICsJLmlycV91bm1hc2sg PSBkcHVfbWRzc19pcnFfdW5tYXNrLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGludCBkcHVf bWRzc19pcnFkb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sCj4gPiArCQl1bnNp Z25lZCBpbnQgaXJxLCBpcnFfaHdfbnVtYmVyX3QgaHdpcnEpCj4gPiArewo+ID4gKwlzdHJ1Y3Qg ZHB1X21kc3MgKmRwdV9tZHNzID0gZG9tYWluLT5ob3N0X2RhdGE7Cj4gPiArCWludCByZXQ7Cj4g PiArCj4gPiArCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsICZkcHVfbWRzc19pcnFfY2hp cCwgaGFuZGxlX2xldmVsX2lycSk7Cj4gPiArCXJldCA9IGlycV9zZXRfY2hpcF9kYXRhKGlycSwg ZHB1X21kc3MpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGRwdV9tZHNzX2lycWRvbWFpbl9vcHMgPSB7 Cj4gPiArCS5tYXAgPSBkcHVfbWRzc19pcnFkb21haW5fbWFwLAo+ID4gKwkueGxhdGUgPSBpcnFf ZG9tYWluX3hsYXRlX29uZWNlbGwsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IF9kcHVf bWRzc19pcnFfZG9tYWluX2FkZChzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzKQo+ID4gK3sKPiA+ ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ID4gKwlzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluOwo+ ID4gKwo+ID4gKwlkZXYgPSBkcHVfbWRzcy0+YmFzZS5kZXYtPmRldjsKPiA+ICsKPiA+ICsJZG9t YWluID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKGRldi0+b2Zfbm9kZSwgMzIsCj4gPiArCQkJJmRw dV9tZHNzX2lycWRvbWFpbl9vcHMsIGRwdV9tZHNzKTsKPiA+ICsJaWYgKCFkb21haW4pIHsKPiA+ ICsJCURQVV9FUlJPUigiZmFpbGVkIHRvIGFkZCBpcnFfZG9tYWluXG4iKTsKPiA+ICsJCXJldHVy biAtRUlOVkFMOwo+ID4gKwl9Cj4gPiArCj4gPiArCWRwdV9tZHNzLT5pcnFfY29udHJvbGxlci5l bmFibGVkX21hc2sgPSAwOwo+ID4gKwlkcHVfbWRzcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWluID0g ZG9tYWluOwo+ID4gKwo+ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiAraW50IF9kcHVf bWRzc19pcnFfZG9tYWluX2Zpbmkoc3RydWN0IGRwdV9tZHNzICpkcHVfbWRzcykKPiA+ICt7Cj4g PiArCWlmIChkcHVfbWRzcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWluKSB7Cj4gPiArCQlpcnFfZG9t YWluX3JlbW92ZShkcHVfbWRzcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWluKTsKPiA+ICsJCWRwdV9t ZHNzLT5pcnFfY29udHJvbGxlci5kb21haW4gPSBOVUxMOwo+ID4gKwl9Cj4gPiArCXJldHVybiAw Owo+ID4gK30KPiA+ICtzdGF0aWMgaW50IGRwdV9tZHNzX2VuYWJsZShzdHJ1Y3QgbXNtX21kc3Mg Km1kc3MpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzID0gdG9fZHB1X21k c3MobWRzcyk7Cj4gPiArCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfbWRzcy0+ bXA7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCXJldCA9IG1zbV9kc3NfZW5hYmxlX2Nsayht cC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIHRydWUpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJ RFBVX0VSUk9SKCJjbG9jayBlbmFibGUgZmFpbGVkLCByZXQ6JWRcbiIsIHJldCk7Cj4gPiArCj4g PiArCXJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgZHB1X21kc3NfZGlz YWJsZShzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHB1X21kc3Mg KmRwdV9tZHNzID0gdG9fZHB1X21kc3MobWRzcyk7Cj4gPiArCXN0cnVjdCBkc3NfbW9kdWxlX3Bv d2VyICptcCA9ICZkcHVfbWRzcy0+bXA7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCXJldCA9 IG1zbV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIGZhbHNlKTsK PiA+ICsJaWYgKHJldCkKPiA+ICsJCURQVV9FUlJPUigiY2xvY2sgZGlzYWJsZSBmYWlsZWQsIHJl dDolZFxuIiwgcmV0KTsKPiA+ICsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiAr c3RhdGljIHZvaWQgZHB1X21kc3NfZGVzdHJveShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4g K3sKPiA+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2Rldmlj ZShkZXYtPmRldik7Cj4gPiArCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ID4gKwlzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzID0gdG9fZHB1X21kc3Mo cHJpdi0+bWRzcyk7Cj4gPiArCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfbWRz cy0+bXA7Cj4gPiArCj4gPiArCV9kcHVfbWRzc19pcnFfZG9tYWluX2ZpbmkoZHB1X21kc3MpOwo+ ID4gKwo+ID4gKwltc21fZHNzX3B1dF9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsK PiA+ICsJZGV2bV9rZnJlZSgmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZyk7Cj4gPiArCj4gPiAr CWlmIChkcHVfbWRzcy0+bW1pbykKPiA+ICsJCW1zbV9pb3VubWFwKHBkZXYsIGRwdV9tZHNzLT5t bWlvKTsKPiA+ICsJZHB1X21kc3MtPm1taW8gPSBOVUxMOwo+ID4gKwo+ID4gKwlwbV9ydW50aW1l X2Rpc2FibGUoZGV2LT5kZXYpOwo+ID4gKwlwcml2LT5tZHNzID0gTlVMTDsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtc21fbWRzc19mdW5jcyBtZHNzX2Z1bmNzID0gewo+ ID4gKwkuZW5hYmxlCT0gZHB1X21kc3NfZW5hYmxlLAo+ID4gKwkuZGlzYWJsZSA9IGRwdV9tZHNz X2Rpc2FibGUsCj4gPiArCS5kZXN0cm95ID0gZHB1X21kc3NfZGVzdHJveSwKPiA+ICt9Owo+ID4g Kwo+ID4gK2ludCBkcHVfbWRzc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiArewo+ ID4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRl di0+ZGV2KTsKPiA+ICsJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gPiArCXN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3M7Cj4gPiArCXN0cnVjdCBkc3Nf bW9kdWxlX3Bvd2VyICptcDsKPiA+ICsJaW50IHJldCA9IDA7Cj4gPiArCj4gPiArCWRwdV9tZHNz ID0gZGV2bV9remFsbG9jKGRldi0+ZGV2LCBzaXplb2YoKmRwdV9tZHNzKSwgR0ZQX0tFUk5FTCk7 Cj4gPiArCWlmICghZHB1X21kc3MpCj4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICsJ ZHB1X21kc3MtPm1taW8gPSBtc21faW9yZW1hcChwZGV2LCAibWRzc19waHlzIiwgIm1kc3NfcGh5 cyIpOwo+ID4gKwlpZiAoSVNfRVJSKGRwdV9tZHNzLT5tbWlvKSkgewo+ID4gKwkJcmV0ID0gUFRS X0VSUihkcHVfbWRzcy0+bW1pbyk7Cj4gPiArCQlEUFVfRVJST1IoIm1kc3MgcmVnaXN0ZXIgbWVt b3J5IG1hcCBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+ID4gKwkJZHB1X21kc3MtPm1taW8gPSBOVUxM Owo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwlEUk1fREVCVUcoIm1hcHBlZCBtZHNz IGFkZHJlc3Mgc3BhY2UgQCVwS1xuIiwgZHB1X21kc3MtPm1taW8pOwo+ID4gKwlkcHVfbWRzcy0+ bW1pb19sZW4gPSBtc21faW9tYXBfc2l6ZShwZGV2LCAibWRzc19waHlzIik7Cj4gPiArCj4gPiAr CW1wID0gJmRwdV9tZHNzLT5tcDsKPiA+ICsJcmV0ID0gbXNtX2Rzc19wYXJzZV9jbG9jayhwZGV2 LCBtcCk7Cj4gPiArCWlmIChyZXQpIHsKPiA+ICsJCURQVV9FUlJPUigiZmFpbGVkIHRvIHBhcnNl IGNsb2NrcywgcmV0PSVkXG4iLCByZXQpOwo+ID4gKwkJZ290byBjbGtfcGFyc2VfZXJyOwo+ID4g Kwl9Cj4gPiArCj4gPiArCXJldCA9IG1zbV9kc3NfZ2V0X2NsaygmcGRldi0+ZGV2LCBtcC0+Y2xr X2NvbmZpZywgbXAtPm51bV9jbGspOwo+ID4gKwlpZiAocmV0KSB7Cj4gPiArCQlEUFVfRVJST1Io ImZhaWxlZCB0byBnZXQgY2xvY2tzLCByZXQ9JWRcbiIsIHJldCk7Cj4gPiArCQlnb3RvIGNsa19n ZXRfZXJyb3I7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0ID0gbXNtX2Rzc19jbGtfc2V0X3JhdGUo bXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrKTsKPiA+ICsJaWYgKHJldCkgewo+ID4gKwkJRFBV X0VSUk9SKCJmYWlsZWQgdG8gc2V0IGNsb2NrIHJhdGUsIHJldD0lZFxuIiwgcmV0KTsKPiA+ICsJ CWdvdG8gY2xrX3JhdGVfZXJyb3I7Cj4gPiArCX0KPiA+ICsKPiA+ICsJZHB1X21kc3MtPmJhc2Uu ZGV2ID0gZGV2Owo+ID4gKwlkcHVfbWRzcy0+YmFzZS5mdW5jcyA9ICZtZHNzX2Z1bmNzOwo+ID4g Kwo+ID4gKwlyZXQgPSBfZHB1X21kc3NfaXJxX2RvbWFpbl9hZGQoZHB1X21kc3MpOwo+ID4gKwlp ZiAocmV0KQo+ID4gKwkJZ290byBpcnFfZG9tYWluX2Vycm9yOwo+ID4gKwo+ID4gKwlyZXQgPSBk ZXZtX3JlcXVlc3RfaXJxKGRldi0+ZGV2LCBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApLAo+ID4g KwkJCWRwdV9tZHNzX2lycSwgMCwgImRwdV9tZHNzX2lzciIsIGRwdV9tZHNzKTsKPiA+ICsJaWYg KHJldCkgewo+ID4gKwkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBpcnE6ICVkXG4iLCByZXQp Owo+ID4gKwkJZ290byBpcnFfZXJyb3I7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcG1fcnVudGltZV9l bmFibGUoZGV2LT5kZXYpOwo+ID4gKwo+ID4gKwlwbV9ydW50aW1lX2dldF9zeW5jKGRldi0+ZGV2 KTsKPiA+ICsJZHB1X21kc3MtPmh3dmVyc2lvbiA9IHJlYWRsX3JlbGF4ZWQoZHB1X21kc3MtPm1t aW8pOwo+ID4gKwlwbV9ydW50aW1lX3B1dF9zeW5jKGRldi0+ZGV2KTsKPiA+ICsKPiA+ICsJcHJp di0+bWRzcyA9ICZkcHVfbWRzcy0+YmFzZTsKPiA+ICsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICsK PiA+ICtpcnFfZXJyb3I6Cj4gPiArCV9kcHVfbWRzc19pcnFfZG9tYWluX2ZpbmkoZHB1X21kc3Mp Owo+ID4gK2lycV9kb21haW5fZXJyb3I6Cj4gPiArY2xrX3JhdGVfZXJyb3I6Cj4gPiArCW1zbV9k c3NfcHV0X2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGspOwo+ID4gK2Nsa19nZXRfZXJy b3I6Cj4gPiArCWRldm1fa2ZyZWUoJnBkZXYtPmRldiwgbXAtPmNsa19jb25maWcpOwo+ID4gK2Ns a19wYXJzZV9lcnI6Cj4gPiArCWlmIChkcHVfbWRzcy0+bW1pbykKPiA+ICsJCW1zbV9pb3VubWFw KHBkZXYsIGRwdV9tZHNzLT5tbWlvKTsKPiA+ICsJZHB1X21kc3MtPm1taW8gPSBOVUxMOwo+ID4g KwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2RwdV9pb191dGlsLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191dGlsLmMKPiA+IGlu ZGV4IGExOGJjOTkuLmM0NGYzM2YgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2RwdV9pb191dGlsLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2lvX3V0aWwu Ywo+ID4gQEAgLTQ0OCw2ICs0NDgsNjMgQEAgaW50IG1zbV9kc3NfZW5hYmxlX2NsayhzdHJ1Y3Qg ZHNzX2NsayAqY2xrX2FycnksIGludCBudW1fY2xrLCBpbnQgZW5hYmxlKQo+ID4gIH0gLyogbXNt X2Rzc19lbmFibGVfY2xrICovCj4gPiAgRVhQT1JUX1NZTUJPTChtc21fZHNzX2VuYWJsZV9jbGsp Owo+ID4gIAo+ID4gK2ludCBtc21fZHNzX3BhcnNlX2Nsb2NrKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsCj4gPiArCQlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXApCj4gPiArewo+ID4g Kwl1MzIgaSwgcmMgPSAwOwo+ID4gKwljb25zdCBjaGFyICpjbG9ja19uYW1lOwo+ID4gKwl1MzIg cmF0ZSA9IDAsIG1heF9yYXRlID0gMDsKPiA+ICsJaW50IG51bV9jbGsgPSAwOwo+ID4gKwo+ID4g KwlpZiAoIXBkZXYgfHwgIW1wKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArCW1w LT5udW1fY2xrID0gMDsKPiA+ICsJbnVtX2NsayA9IG9mX3Byb3BlcnR5X2NvdW50X3N0cmluZ3Mo cGRldi0+ZGV2Lm9mX25vZGUsICJjbG9jay1uYW1lcyIpOwo+ID4gKwlpZiAobnVtX2NsayA8PSAw KSB7Cj4gPiArCQlwcl9kZWJ1ZygiY2xvY2tzIGFyZSBub3QgZGVmaW5lZFxuIik7Cj4gPiArCQly ZXR1cm4gMDsKPiA+ICsJfQo+ID4gKwo+ID4gKwltcC0+Y2xrX2NvbmZpZyA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LAo+ID4gKwkJCQkgICAgICBzaXplb2Yoc3RydWN0IGRzc19jbGspICogbnVt X2NsaywKPiA+ICsJCQkJICAgICAgR0ZQX0tFUk5FTCk7Cj4gPiArCWlmICghbXAtPmNsa19jb25m aWcpCj4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IG51 bV9jbGs7IGkrKykgewo+ID4gKwkJcmMgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZ19pbmRleChw ZGV2LT5kZXYub2Zfbm9kZSwKPiA+ICsJCQkJCQkgICAiY2xvY2stbmFtZXMiLCBpLAo+ID4gKwkJ CQkJCSAgICZjbG9ja19uYW1lKTsKPiA+ICsJCWlmIChyYykKPiA+ICsJCQlicmVhazsKPiA+ICsJ CXN0cmxjcHkobXAtPmNsa19jb25maWdbaV0uY2xrX25hbWUsIGNsb2NrX25hbWUsCj4gPiArCQkJ c2l6ZW9mKG1wLT5jbGtfY29uZmlnW2ldLmNsa19uYW1lKSk7Cj4gPiArCj4gPiArCQlyYyA9IG9m X3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4KHBkZXYtPmRldi5vZl9ub2RlLAo+ID4gKwkJCQkJCSJj bG9jay1yYXRlIiwgaSwKPiA+ICsJCQkJCQkmcmF0ZSk7Cj4gPiArCQlpZiAocmMpCj4gPiArCQkJ YnJlYWs7Cj4gPiArCQltcC0+Y2xrX2NvbmZpZ1tpXS5yYXRlID0gcmF0ZTsKPiA+ICsJCWlmICgh bXAtPmNsa19jb25maWdbaV0ucmF0ZSkKPiA+ICsJCQltcC0+Y2xrX2NvbmZpZ1tpXS50eXBlID0g RFNTX0NMS19BSEI7Cj4gPiArCQllbHNlCj4gPiArCQkJbXAtPmNsa19jb25maWdbaV0udHlwZSA9 IERTU19DTEtfUENMSzsKPiA+ICsKPiA+ICsJCXJjID0gb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5k ZXgocGRldi0+ZGV2Lm9mX25vZGUsCj4gPiArCQkJCQkJImNsb2NrLW1heC1yYXRlIiwgaSwKPiA+ ICsJCQkJCQkmbWF4X3JhdGUpOwo+ID4gKwkJaWYgKHJjKQo+ID4gKwkJCWJyZWFrOwo+ID4gKwkJ bXAtPmNsa19jb25maWdbaV0ubWF4X3JhdGUgPSBtYXhfcmF0ZTsKPiA+ICsJfQo+ID4gKwo+ID4g KwlpZiAoIXJjKQo+ID4gKwkJbXAtPm51bV9jbGsgPSBudW1fY2xrOwo+ID4gKwo+ID4gKwlyZXR1 cm4gcmM7Cj4gPiArfQo+ID4gIAo+ID4gIGludCBkcHVfaTJjX2J5dGVfcmVhZChzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50LCB1aW50OF90IHNsYXZlX2FkZHIsCj4gPiAgCQkJdWludDhfdCByZWdf b2Zmc2V0LCB1aW50OF90ICpyZWFkX2J1ZikKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCj4gPiBpbmRl eCA1ZDhmMWI2Li5hMGU3M2VhIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZHJ2LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCj4gPiBAQCAt NTAzLDcgKzUwMywxOCBAQCBzdGF0aWMgaW50IG1zbV9kcm1faW5pdChzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBkcm1fZHJpdmVyICpkcnYpCj4gPiAgCWRkZXYtPmRldl9wcml2YXRlID0gcHJp djsKPiA+ICAJcHJpdi0+ZGV2ID0gZGRldjsKPiA+ICAKPiA+IC0JcmV0ID0gbWRwNV9tZHNzX2lu aXQoZGRldik7Cj4gPiArCXN3aXRjaCAoZ2V0X21kcF92ZXIocGRldikpIHsKPiA+ICsJY2FzZSBL TVNfTURQNToKPiA+ICsJCXJldCA9IG1kcDVfbWRzc19pbml0KGRkZXYpOwo+ID4gKwkJYnJlYWs7 Cj4gPiArCWNhc2UgS01TX0RQVToKPiA+ICsJCXJldCA9IGRwdV9tZHNzX2luaXQoZGRldik7Cj4g PiArCQlicmVhazsKPiA+ICsJZGVmYXVsdDoKPiA+ICsJCXJldCA9IDA7Cj4gPiArCQlicmVhazsK PiA+ICsJfQo+ID4gKwo+ID4gIAlpZiAocmV0KQo+ID4gIAkJZ290byBtZHNzX2luaXRfZmFpbDsK PiA+ICAKPiA+IEBAIC0xNTM5LDEyICsxNTUwLDEzIEBAIHN0YXRpYyBpbnQgYWRkX2Rpc3BsYXlf Y29tcG9uZW50cyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiAgCWludCByZXQ7Cj4gPiAgCj4gPiAg CS8qCj4gPiAtCSAqIE1EUDUgYmFzZWQgZGV2aWNlcyBkb24ndCBoYXZlIGEgZmxhdCBoaWVyYXJj aHkuIFRoZXJlIGlzIGEgdG9wIGxldmVsCj4gPiAtCSAqIHBhcmVudDogTURTUywgYW5kIGNoaWxk cmVuOiBNRFA1LCBEU0ksIEhETUksIGVEUCBldGMuIFBvcHVsYXRlIHRoZQo+ID4gLQkgKiBjaGls ZHJlbiBkZXZpY2VzLCBmaW5kIHRoZSBNRFA1IG5vZGUsIGFuZCB0aGVuIGFkZCB0aGUgaW50ZXJm YWNlcwo+ID4gLQkgKiB0byBvdXIgY29tcG9uZW50cyBsaXN0Lgo+ID4gKwkgKiBNRFA1L0RQVSBi YXNlZCBkZXZpY2VzIGRvbid0IGhhdmUgYSBmbGF0IGhpZXJhcmNoeS4gVGhlcmUgaXMgYSB0b3AK PiA+ICsJICogbGV2ZWwgcGFyZW50OiBNRFNTLCBhbmQgY2hpbGRyZW46IE1EUDUvRFBVLCBEU0ks IEhETUksIGVEUCBldGMuCj4gPiArCSAqIFBvcHVsYXRlIHRoZSBjaGlsZHJlbiBkZXZpY2VzLCBm aW5kIHRoZSBNRFA1L0RQVSBub2RlLCBhbmQgdGhlbiBhZGQKPiA+ICsJICogdGhlIGludGVyZmFj ZXMgdG8gb3VyIGNvbXBvbmVudHMgbGlzdC4KPiA+ICAJICovCj4gPiAtCWlmIChvZl9kZXZpY2Vf aXNfY29tcGF0aWJsZShkZXYtPm9mX25vZGUsICJxY29tLG1kc3MiKSkgewo+ID4gKwlpZiAob2Zf ZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9ub2RlLCAicWNvbSxtZHNzIikgfHwKPiA+ICsJ CW9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi0+b2Zfbm9kZSwgInFjb20sZHB1LW1kc3MiKSkg ewo+ID4gIAkJcmV0ID0gb2ZfcGxhdGZvcm1fcG9wdWxhdGUoZGV2LT5vZl9ub2RlLCBOVUxMLCBO VUxMLCBkZXYpOwo+ID4gIAkJaWYgKHJldCkgewo+ID4gIAkJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIHBvcHVsYXRlIGNoaWxkcmVuIGRldmljZXNcbiIpOwo+ID4gQEAgLTE2ODYsNyArMTY5OCw3 IEBAIHN0YXRpYyBpbnQgbXNtX3BkZXZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCj4gPiAgCXsgLmNvbXBhdGlibGUgPSAicWNvbSxtZHA0IiwgLmRhdGEgPSAodm9pZCAqKUtN U19NRFA0IH0sCj4gPiAgCXsgLmNvbXBhdGlibGUgPSAicWNvbSxtZHNzIiwgLmRhdGEgPSAodm9p ZCAqKUtNU19NRFA1IH0sCj4gPiAgI2lmZGVmIENPTkZJR19EUk1fTVNNX0RQVQo+ID4gLQl7IC5j b21wYXRpYmxlID0gInFjb20sZHB1LWttcyIsIC5kYXRhID0gKHZvaWQgKilLTVNfRFBVIH0sCj4g PiArCXsgLmNvbXBhdGlibGUgPSAicWNvbSxkcHUtbWRzcyIsIC5kYXRhID0gKHZvaWQgKilLTVNf RFBVIH0sCj4gPiAgI2VuZGlmCj4gPiAgCXt9Cj4gPiAgfTsKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5o Cj4gPiBpbmRleCA5MGEyNTIxLi5lOGU1ZTczIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5o Cj4gPiBAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgewo+ID4gIAkv KiBzdWJvcmRpbmF0ZSBkZXZpY2VzLCBpZiBwcmVzZW50OiAqLwo+ID4gIAlzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpncHVfcGRldjsKPiA+ICAKPiA+IC0JLyogdG9wIGxldmVsIE1EU1Mgd3JhcHBl ciBkZXZpY2UgKGZvciBNRFA1IG9ubHkpICovCj4gPiArCS8qIHRvcCBsZXZlbCBNRFNTIHdyYXBw ZXIgZGV2aWNlIChmb3IgTURQNS9EUFUgb25seSkgKi8KPiA+ICAJc3RydWN0IG1zbV9tZHNzICpt ZHNzOwo+ID4gIAo+ID4gIAkvKiBwb3NzaWJseSB0aGlzIHNob3VsZCBiZSBpbiB0aGUga21zIGNv bXBvbmVudCwgYnV0IGl0IGlzCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaAo+ID4gaW5kZXggOWE3YmM3 ZC4uNWUxZGU4NSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5o Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaAo+ID4gQEAgLTE0NCw2ICsx NDQsNyBAQCBzdHJ1Y3QgbXNtX21kc3Mgewo+ID4gIH07Cj4gPiAgCj4gPiAgaW50IG1kcDVfbWRz c19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gK2ludCBkcHVfbWRzc19pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gIAo+ID4gIC8qKgo+ID4gICAqIE1vZGUgU2V0IFV0 aWxpdHkgRnVuY3Rpb25zCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kcHVfaW9fdXRp bC5oIGIvaW5jbHVkZS9saW51eC9kcHVfaW9fdXRpbC5oCj4gPiBpbmRleCA3YzczODk5Li40NWU2 MDZmIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9saW51eC9kcHVfaW9fdXRpbC5oCj4gPiArKysg Yi9pbmNsdWRlL2xpbnV4L2RwdV9pb191dGlsLmgKPiA+IEBAIC0xMDQsNiArMTA0LDggQEAgaW50 IG1zbV9kc3NfY29uZmlnX3ZyZWcoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHNzX3ZyZWcg KmluX3ZyZWcsCj4gPiAgdm9pZCBtc21fZHNzX3B1dF9jbGsoc3RydWN0IGRzc19jbGsgKmNsa19h cnJ5LCBpbnQgbnVtX2Nsayk7Cj4gPiAgaW50IG1zbV9kc3NfY2xrX3NldF9yYXRlKHN0cnVjdCBk c3NfY2xrICpjbGtfYXJyeSwgaW50IG51bV9jbGspOwo+ID4gIGludCBtc21fZHNzX2VuYWJsZV9j bGsoc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVtX2NsaywgaW50IGVuYWJsZSk7Cj4g PiAraW50IG1zbV9kc3NfcGFyc2VfY2xvY2soc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwK PiA+ICsJCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICptcCk7Cj4gPiAgCj4gPiAgaW50IGRwdV9p MmNfYnl0ZV9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHVpbnQ4X3Qgc2xhdmVfYWRk ciwKPiA+ICAJCSAgICAgICB1aW50OF90IHJlZ19vZmZzZXQsIHVpbnQ4X3QgKnJlYWRfYnVmKTsK PiA+IC0tIAo+ID4gVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVt YmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKPiA+IGEgTGludXggRm91bmRhdGlvbiBDb2xs YWJvcmF0aXZlIFByb2plY3QKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiA+IEZyZWVkcmVubyBtYWlsaW5nIGxpc3QKPiA+IEZyZWVkcmVu b0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCj4gCj4gLS0gCj4gVGhlIFF1YWxjb21tIElubm92 YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLAo+IGEg TGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKCi0tIApTZWFuIFBhdWwsIFNv ZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVk cmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K