From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH/RFC] drm: Remove unused Renesas SH Mobile DRM driver Date: Mon, 21 Jan 2019 10:35:06 +0100 Message-ID: <20190121093506.GQ3271@phenom.ffwll.local> References: <20190118162258.14592-1-geert+renesas@glider.be> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9182D6E761 for ; Mon, 21 Jan 2019 09:35:11 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id f9so15995537eds.10 for ; Mon, 21 Jan 2019 01:35:11 -0800 (PST) Content-Disposition: inline In-Reply-To: <20190118162258.14592-1-geert+renesas@glider.be> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Geert Uytterhoeven Cc: David Airlie , dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Kieran Bingham , Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKYW4gMTgsIDIwMTkgYXQgMDU6MjI6NThQTSArMDEwMCwgR2VlcnQgVXl0dGVyaG9l dmVuIHdyb3RlOgo+IFNpbmNlIGl0cyBpbmNhcm5hdGlvbiBpbiB2My43IGFsbW9zdCA3IHllYXJz IGFnbywgbm8gdXNlcnMgb2YgdGhlIFNICj4gTW9iaWxlIERSTSBkcml2ZXIgaGF2ZSBhcHBlYXJl ZC4KPiAKPiBIZW5jZSByZW1vdmUgdGhlIGRyaXZlci4gIEl0IGNhbiBiZSByZXN1cnJlY3RlZCBm cm9tIGdpdCBoaXN0b3J5LAo+IGlmL3doZW4gbmVlZGVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEdl ZXJ0IFV5dHRlcmhvZXZlbiA8Z2VlcnQrcmVuZXNhc0BnbGlkZXIuYmU+CgpJJ2QgcHJlZmVyIHJl bW92aW5nIHRoZSBmYmRldiB2YXJpYW50IHRiaCAuLi4gTm90IHN1cmUgd2h5IGV4YWN0bHkgdGhl CnN3aXRjaCBuZXZlciBoYXBwZW5lZC4KLURhbmllbAoKPiAtLS0KPiBBZ2FpbnN0IGRybS9kcm0t bmV4dAo+IAo+ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgLQo+ICBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgLQo+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgLQo+ICBkcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvS2NvbmZpZyAgICAgICAgICAgICAg fCAgMTQgLQo+ICBkcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvTWFrZWZpbGUgICAgICAgICAgICAg fCAgIDggLQo+ICAuLi4vZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fYmFja2xpZ2h0LmMgICAg fCAgODYgLS0tCj4gIC4uLi9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9iYWNrbGlnaHQuaCAg ICB8ICAxOSAtCj4gIGRyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fY3J0Yy5jICAg ICB8IDY4OSAtLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3No bW9iX2RybV9jcnRjLmggICAgIHwgIDUzIC0tCj4gIGRyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9z aG1vYl9kcm1fZHJ2LmMgICAgICB8IDMxMSAtLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vc2ht b2JpbGUvc2htb2JfZHJtX2Rydi5oICAgICAgfCAgNDEgLS0KPiAgZHJpdmVycy9ncHUvZHJtL3No bW9iaWxlL3NobW9iX2RybV9rbXMuYyAgICAgIHwgMTQ2IC0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L3NobW9iaWxlL3NobW9iX2RybV9rbXMuaCAgICAgIHwgIDI5IC0KPiAgZHJpdmVycy9ncHUvZHJt L3NobW9iaWxlL3NobW9iX2RybV9wbGFuZS5jICAgIHwgMjU5IC0tLS0tLS0KPiAgZHJpdmVycy9n cHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9wbGFuZS5oICAgIHwgIDE4IC0KPiAgZHJpdmVycy9n cHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9yZWdzLmggICAgIHwgMzA3IC0tLS0tLS0tCj4gIGlu Y2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9zaG1vYl9kcm0uaCAgICAgICB8ICA5MSAtLS0KPiAg MTcgZmlsZXMgY2hhbmdlZCwgMjA3NiBkZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9LY29uZmlnCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvTWFrZWZpbGUKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fYmFja2xpZ2h0LmMKPiAgZGVsZXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fYmFja2xpZ2h0LmgK PiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1f Y3J0Yy5jCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvc2ht b2JfZHJtX2NydGMuaAo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3NobW9i aWxlL3NobW9iX2RybV9kcnYuYwo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L3NobW9iaWxlL3NobW9iX2RybV9kcnYuaAo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9rbXMuYwo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9rbXMuaAo+ICBkZWxldGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9wbGFuZS5jCj4gIGRlbGV0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvc2htb2JfZHJtX3BsYW5lLmgKPiAg ZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fcmVn cy5oCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvc2ht b2JfZHJtLmgKPiAKPiBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwo+IGlu ZGV4IDRjMDg3OTY1MGNhZjNjMTAuLjYxMDA5YTdiZTg4NjJkNjggMTAwNjQ0Cj4gLS0tIGEvTUFJ TlRBSU5FUlMKPiArKysgYi9NQUlOVEFJTkVSUwo+IEBAIC01MDk4LDggKzUwOTgsNiBAQCBMOgls aW51eC1yZW5lc2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcKPiAgVDoJZ2l0IGdpdDovL2xpbnV4dHYu b3JnL3BpbmNoYXJ0bC9tZWRpYSBkcm0vZHUvbmV4dAo+ICBTOglTdXBwb3J0ZWQKPiAgRjoJZHJp dmVycy9ncHUvZHJtL3JjYXItZHUvCj4gLUY6CWRyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS8KPiAt RjoJaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL3NobW9iX2RybS5oCj4gIEY6CURvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9yZW5lc2FzLGR3LWhkbWku dHh0Cj4gIEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRn ZS9yZW5lc2FzLGx2ZHMudHh0Cj4gIEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9kaXNwbGF5L3JlbmVzYXMsZHUudHh0Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9L Y29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBpbmRleCBiZDk0M2E3MTc1NmNhODFi Li4zZGY3Yjg5MDVjYThiNzM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBAQCAtMjczLDggKzI3Myw2IEBAIHNv dXJjZSAiZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL0tjb25maWciCj4gIAo+ICBzb3VyY2Ug ImRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWciCj4gIAo+IC1zb3VyY2UgImRyaXZlcnMv Z3B1L2RybS9zaG1vYmlsZS9LY29uZmlnIgo+IC0KPiAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0v c3VuNGkvS2NvbmZpZyIKPiAgCj4gIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vS2Nv bmZpZyIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlCj4gaW5kZXggZjBjMWY4NzMxYTI3NjFlZC4uOWI1YmVlNDkwYTg5OTQ2 OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUKPiBAQCAtODIsNyArODIsNiBAQCBvYmotJChDT05GSUdfRFJNX0FT VCkgKz0gYXN0Lwo+ICBvYmotJChDT05GSUdfRFJNX0FSTUFEQSkgKz0gYXJtYWRhLwo+ICBvYmot JChDT05GSUdfRFJNX0FUTUVMX0hMQ0RDKQkrPSBhdG1lbC1obGNkYy8KPiAgb2JqLSQoQ09ORklH X0RSTV9SQ0FSX0RVKSArPSByY2FyLWR1Lwo+IC1vYmotJChDT05GSUdfRFJNX1NITU9CSUxFKSAr PXNobW9iaWxlLwo+ICBvYmoteQkJCSs9IG9tYXBkcm0vCj4gIG9iai0kKENPTkZJR19EUk1fU1VO NEkpICs9IHN1bjRpLwo+ICBvYmoteQkJCSs9IHRpbGNkYy8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3NobW9iaWxlL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvS2Nv bmZpZwo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDYxYmJlOGU4YmNjNTFkYjku LjAwMDAwMDAwMDAwMDAwMDAKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvS2NvbmZp Zwo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwxNCArMCwwIEBACj4gLSMgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAKPiAtY29uZmlnIERSTV9TSE1PQklMRQo+IC0JdHJpc3RhdGUgIkRS TSBTdXBwb3J0IGZvciBTSCBNb2JpbGUiCj4gLQlkZXBlbmRzIG9uIERSTSAmJiBBUk0KPiAtCWRl cGVuZHMgb24gQVJDSF9TSE1PQklMRSB8fCBDT01QSUxFX1RFU1QKPiAtCXNlbGVjdCBCQUNLTElH SFRfQ0xBU1NfREVWSUNFCj4gLQlzZWxlY3QgQkFDS0xJR0hUX0xDRF9TVVBQT1JUCj4gLQlzZWxl Y3QgRFJNX0tNU19IRUxQRVIKPiAtCXNlbGVjdCBEUk1fS01TX0NNQV9IRUxQRVIKPiAtCXNlbGVj dCBEUk1fR0VNX0NNQV9IRUxQRVIKPiAtCWhlbHAKPiAtCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlm IHlvdSBoYXZlIGFuIFNIIE1vYmlsZSBjaGlwc2V0Lgo+IC0JICBJZiBNIGlzIHNlbGVjdGVkIHRo ZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2htb2ItZHJtLgo+IC0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3NobW9iaWxlL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3NobW9iaWxl L01ha2VmaWxlCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggODYxZWRhZmVkODU2 MmM4Ny4uMDAwMDAwMDAwMDAwMDAwMAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9N YWtlZmlsZQo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSw4ICswLDAgQEAKPiAtIyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAo+IC1zaG1vYi1kcm0teSA6PSBzaG1vYl9kcm1fYmFja2xp Z2h0Lm8gXAo+IC0JICAgICAgIHNobW9iX2RybV9jcnRjLm8gXAo+IC0JICAgICAgIHNobW9iX2Ry bV9kcnYubyBcCj4gLQkgICAgICAgc2htb2JfZHJtX2ttcy5vIFwKPiAtCSAgICAgICBzaG1vYl9k cm1fcGxhbmUubwo+IC0KPiAtb2JqLSQoQ09ORklHX0RSTV9TSE1PQklMRSkJKz0gc2htb2ItZHJt Lm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9iYWNr bGlnaHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fYmFja2xpZ2h0LmMK PiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCBmNjYyOGE1ZWU5NWYzZTlhLi4wMDAw MDAwMDAwMDAwMDAwCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9i YWNrbGlnaHQuYwo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSw4NiArMCwwIEBACj4gLS8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwo+IC0vKgo+IC0gKiBzaG1vYl9kcm1fYmFja2xp Z2h0LmMgIC0tICBTSCBNb2JpbGUgRFJNIEJhY2tsaWdodAo+IC0gKgo+IC0gKiBDb3B5cmlnaHQg KEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgo+IC0gKgo+IC0gKiBMYXVy ZW50IFBpbmNoYXJ0IChsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20pCj4gLSAqLwo+ IC0KPiAtI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgo+IC0KPiAtI2luY2x1ZGUgInNobW9i X2RybV9iYWNrbGlnaHQuaCIKPiAtI2luY2x1ZGUgInNobW9iX2RybV9jcnRjLmgiCj4gLSNpbmNs dWRlICJzaG1vYl9kcm1fZHJ2LmgiCj4gLQo+IC1zdGF0aWMgaW50IHNobW9iX2RybV9iYWNrbGln aHRfdXBkYXRlKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiZGV2KQo+IC17Cj4gLQlzdHJ1Y3Qg c2htb2JfZHJtX2Nvbm5lY3RvciAqc2NvbiA9IGJsX2dldF9kYXRhKGJkZXYpOwo+IC0Jc3RydWN0 IHNobW9iX2RybV9kZXZpY2UgKnNkZXYgPSBzY29uLT5jb25uZWN0b3IuZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCWNvbnN0IHN0cnVjdCBzaG1vYl9kcm1fYmFja2xpZ2h0X2RhdGEgKmJkYXRhID0gJnNk ZXYtPnBkYXRhLT5iYWNrbGlnaHQ7Cj4gLQlpbnQgYnJpZ2h0bmVzcyA9IGJkZXYtPnByb3BzLmJy aWdodG5lc3M7Cj4gLQo+IC0JaWYgKGJkZXYtPnByb3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxB TksgfHwKPiAtCSAgICBiZGV2LT5wcm9wcy5zdGF0ZSAmIEJMX0NPUkVfU1VTUEVOREVEKQo+IC0J CWJyaWdodG5lc3MgPSAwOwo+IC0KPiAtCXJldHVybiBiZGF0YS0+c2V0X2JyaWdodG5lc3MoYnJp Z2h0bmVzcyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgc2htb2JfZHJtX2JhY2tsaWdodF9nZXRf YnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmRldikKPiAtewo+IC0Jc3RydWN0 IHNobW9iX2RybV9jb25uZWN0b3IgKnNjb24gPSBibF9nZXRfZGF0YShiZGV2KTsKPiAtCXN0cnVj dCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2ID0gc2Nvbi0+Y29ubmVjdG9yLmRldi0+ZGV2X3ByaXZh dGU7Cj4gLQljb25zdCBzdHJ1Y3Qgc2htb2JfZHJtX2JhY2tsaWdodF9kYXRhICpiZGF0YSA9ICZz ZGV2LT5wZGF0YS0+YmFja2xpZ2h0Owo+IC0KPiAtCXJldHVybiBiZGF0YS0+Z2V0X2JyaWdodG5l c3MoKTsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBiYWNrbGlnaHRfb3BzIHNobW9i X2RybV9iYWNrbGlnaHRfb3BzID0gewo+IC0JLm9wdGlvbnMJPSBCTF9DT1JFX1NVU1BFTkRSRVNV TUUsCj4gLQkudXBkYXRlX3N0YXR1cwk9IHNobW9iX2RybV9iYWNrbGlnaHRfdXBkYXRlLAo+IC0J LmdldF9icmlnaHRuZXNzCT0gc2htb2JfZHJtX2JhY2tsaWdodF9nZXRfYnJpZ2h0bmVzcywKPiAt fTsKPiAtCj4gLXZvaWQgc2htb2JfZHJtX2JhY2tsaWdodF9kcG1zKHN0cnVjdCBzaG1vYl9kcm1f Y29ubmVjdG9yICpzY29uLCBpbnQgbW9kZSkKPiAtewo+IC0JaWYgKHNjb24tPmJhY2tsaWdodCA9 PSBOVUxMKQo+IC0JCXJldHVybjsKPiAtCj4gLQlzY29uLT5iYWNrbGlnaHQtPnByb3BzLnBvd2Vy ID0gbW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OCj4gLQkJCQkgICAgID8gRkJfQkxBTktfVU5CTEFO SyA6IEZCX0JMQU5LX1BPV0VSRE9XTjsKPiAtCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKHNjb24t PmJhY2tsaWdodCk7Cj4gLX0KPiAtCj4gLWludCBzaG1vYl9kcm1fYmFja2xpZ2h0X2luaXQoc3Ry dWN0IHNobW9iX2RybV9jb25uZWN0b3IgKnNjb24pCj4gLXsKPiAtCXN0cnVjdCBzaG1vYl9kcm1f ZGV2aWNlICpzZGV2ID0gc2Nvbi0+Y29ubmVjdG9yLmRldi0+ZGV2X3ByaXZhdGU7Cj4gLQljb25z dCBzdHJ1Y3Qgc2htb2JfZHJtX2JhY2tsaWdodF9kYXRhICpiZGF0YSA9ICZzZGV2LT5wZGF0YS0+ YmFja2xpZ2h0Owo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZzY29uLT5j b25uZWN0b3I7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4g LQlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0Owo+IC0KPiAtCWlmICghYmRhdGEt Pm1heF9icmlnaHRuZXNzKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWJhY2tsaWdodCA9IGJhY2ts aWdodF9kZXZpY2VfcmVnaXN0ZXIoYmRhdGEtPm5hbWUsIGRldi0+ZGV2LCBzY29uLAo+IC0JCQkJ CSAgICAgICZzaG1vYl9kcm1fYmFja2xpZ2h0X29wcywgTlVMTCk7Cj4gLQlpZiAoSVNfRVJSKGJh Y2tsaWdodCkpIHsKPiAtCQlkZXZfZXJyKGRldi0+ZGV2LCAidW5hYmxlIHRvIHJlZ2lzdGVyIGJh Y2tsaWdodCBkZXZpY2U6ICVsZFxuIiwKPiAtCQkJUFRSX0VSUihiYWNrbGlnaHQpKTsKPiAtCQly ZXR1cm4gUFRSX0VSUihiYWNrbGlnaHQpOwo+IC0JfQo+IC0KPiAtCWJhY2tsaWdodC0+cHJvcHMu bWF4X2JyaWdodG5lc3MgPSBiZGF0YS0+bWF4X2JyaWdodG5lc3M7Cj4gLQliYWNrbGlnaHQtPnBy b3BzLmJyaWdodG5lc3MgPSBiZGF0YS0+bWF4X2JyaWdodG5lc3M7Cj4gLQliYWNrbGlnaHQtPnBy b3BzLnBvd2VyID0gRkJfQkxBTktfUE9XRVJET1dOOwo+IC0JYmFja2xpZ2h0X3VwZGF0ZV9zdGF0 dXMoYmFja2xpZ2h0KTsKPiAtCj4gLQlzY29uLT5iYWNrbGlnaHQgPSBiYWNrbGlnaHQ7Cj4gLQly ZXR1cm4gMDsKPiAtfQo+IC0KPiAtdm9pZCBzaG1vYl9kcm1fYmFja2xpZ2h0X2V4aXQoc3RydWN0 IHNobW9iX2RybV9jb25uZWN0b3IgKnNjb24pCj4gLXsKPiAtCWJhY2tsaWdodF9kZXZpY2VfdW5y ZWdpc3RlcihzY29uLT5iYWNrbGlnaHQpOwo+IC19Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fYmFja2xpZ2h0LmggYi9kcml2ZXJzL2dwdS9kcm0vc2ht b2JpbGUvc2htb2JfZHJtX2JhY2tsaWdodC5oCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggZDlhYmI3YTYwYmU1YzQxNC4uMDAwMDAwMDAwMDAwMDAwMAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fYmFja2xpZ2h0LmgKPiArKysgL2Rldi9udWxsCj4g QEAgLTEsMTkgKzAsMCBAQAo+IC0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsg Ki8KPiAtLyoKPiAtICogc2htb2JfZHJtX2JhY2tsaWdodC5oICAtLSAgU0ggTW9iaWxlIERSTSBC YWNrbGlnaHQKPiAtICoKPiAtICogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25p Y3MgQ29ycG9yYXRpb24KPiAtICoKPiAtICogTGF1cmVudCBQaW5jaGFydCAobGF1cmVudC5waW5j aGFydEBpZGVhc29uYm9hcmQuY29tKQo+IC0gKi8KPiAtCj4gLSNpZm5kZWYgX19TSE1PQl9EUk1f QkFDS0xJR0hUX0hfXwo+IC0jZGVmaW5lIF9fU0hNT0JfRFJNX0JBQ0tMSUdIVF9IX18KPiAtCj4g LXN0cnVjdCBzaG1vYl9kcm1fY29ubmVjdG9yOwo+IC0KPiAtdm9pZCBzaG1vYl9kcm1fYmFja2xp Z2h0X2RwbXMoc3RydWN0IHNobW9iX2RybV9jb25uZWN0b3IgKnNjb24sIGludCBtb2RlKTsKPiAt aW50IHNobW9iX2RybV9iYWNrbGlnaHRfaW5pdChzdHJ1Y3Qgc2htb2JfZHJtX2Nvbm5lY3RvciAq c2Nvbik7Cj4gLXZvaWQgc2htb2JfZHJtX2JhY2tsaWdodF9leGl0KHN0cnVjdCBzaG1vYl9kcm1f Y29ubmVjdG9yICpzY29uKTsKPiAtCj4gLSNlbmRpZiAvKiBfX1NITU9CX0RSTV9CQUNLTElHSFRf SF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1f Y3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9jcnRjLmMKPiBkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCA0OTliNWZkYjg2OWYyMDY0Li4wMDAwMDAwMDAw MDAwMDAwCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9jcnRjLmMK PiArKysgL2Rldi9udWxsCj4gQEAgLTEsNjg5ICswLDAgQEAKPiAtLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjArCj4gLS8qCj4gLSAqIHNobW9iX2RybV9jcnRjLmMgIC0tICBTSCBN b2JpbGUgRFJNIENSVENzCj4gLSAqCj4gLSAqIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVs ZWN0cm9uaWNzIENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIExhdXJlbnQgUGluY2hhcnQgKGxhdXJl bnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbSkKPiAtICovCj4gLQo+IC0jaW5jbHVkZSA8bGlu dXgvYmFja2xpZ2h0Lmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiAtCj4gLSNpbmNsdWRl IDxkcm0vZHJtUC5oPgo+IC0jaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gLSNpbmNsdWRlIDxk cm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gLSNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIu aD4KPiAtI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KPiAtI2luY2x1ZGUgPGRy bS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4gLQo+IC0jaW5jbHVkZSAic2htb2JfZHJtX2JhY2tsaWdo dC5oIgo+IC0jaW5jbHVkZSAic2htb2JfZHJtX2NydGMuaCIKPiAtI2luY2x1ZGUgInNobW9iX2Ry bV9kcnYuaCIKPiAtI2luY2x1ZGUgInNobW9iX2RybV9rbXMuaCIKPiAtI2luY2x1ZGUgInNobW9i X2RybV9wbGFuZS5oIgo+IC0jaW5jbHVkZSAic2htb2JfZHJtX3JlZ3MuaCIKPiAtCj4gLS8qCj4g LSAqIFRPRE86IHBhbmVsIHN1cHBvcnQKPiAtICovCj4gLQo+IC0vKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+IC0gKiBDbG9jayBtYW5hZ2VtZW50Cj4gLSAqLwo+IC0KPiAtc3RhdGljIGludCBzaG1v Yl9kcm1fY2xrX29uKHN0cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2KQo+IC17Cj4gLQlpbnQg cmV0Owo+IC0KPiAtCWlmIChzZGV2LT5jbG9jaykgewo+IC0JCXJldCA9IGNsa19wcmVwYXJlX2Vu YWJsZShzZGV2LT5jbG9jayk7Cj4gLQkJaWYgKHJldCA8IDApCj4gLQkJCXJldHVybiByZXQ7Cj4g LQl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIHNobW9iX2RybV9j bGtfb2ZmKHN0cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2KQo+IC17Cj4gLQlpZiAoc2Rldi0+ Y2xvY2spCj4gLQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHNkZXYtPmNsb2NrKTsKPiAtfQo+IC0K PiAtLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtICogQ1JUQwo+IC0gKi8KPiAtCj4gLXN0YXRp YyB2b2lkIHNobW9iX2RybV9jcnRjX3NldHVwX2dlb21ldHJ5KHN0cnVjdCBzaG1vYl9kcm1fY3J0 YyAqc2NydGMpCj4gLXsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZzY3J0Yy0+Y3J0YzsK PiAtCXN0cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCWNvbnN0IHN0cnVjdCBzaG1vYl9kcm1faW50ZXJmYWNlX2RhdGEgKmlkYXRhID0gJnNk ZXYtPnBkYXRhLT5pZmFjZTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl ID0gJmNydGMtPm1vZGU7Cj4gLQl1MzIgdmFsdWU7Cj4gLQo+IC0JdmFsdWUgPSBzZGV2LT5sZG10 MXIKPiAtCSAgICAgIHwgKChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUFZTWU5DKSA/IDAg OiBMRE1UMVJfVlBPTCkKPiAtCSAgICAgIHwgKChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdf UEhTWU5DKSA/IDAgOiBMRE1UMVJfSFBPTCkKPiAtCSAgICAgIHwgKChpZGF0YS0+ZmxhZ3MgJiBT SE1PQl9EUk1fSUZBQ0VfRkxfRFdQT0wpID8gTERNVDFSX0RXUE9MIDogMCkKPiAtCSAgICAgIHwg KChpZGF0YS0+ZmxhZ3MgJiBTSE1PQl9EUk1fSUZBQ0VfRkxfRElQT0wpID8gTERNVDFSX0RJUE9M IDogMCkKPiAtCSAgICAgIHwgKChpZGF0YS0+ZmxhZ3MgJiBTSE1PQl9EUk1fSUZBQ0VfRkxfREFQ T0wpID8gTERNVDFSX0RBUE9MIDogMCkKPiAtCSAgICAgIHwgKChpZGF0YS0+ZmxhZ3MgJiBTSE1P Ql9EUk1fSUZBQ0VfRkxfSFNDTlQpID8gTERNVDFSX0hTQ05UIDogMCkKPiAtCSAgICAgIHwgKChp ZGF0YS0+ZmxhZ3MgJiBTSE1PQl9EUk1fSUZBQ0VfRkxfRFdDTlQpID8gTERNVDFSX0RXQ05UIDog MCk7Cj4gLQlsY2RjX3dyaXRlKHNkZXYsIExETVQxUiwgdmFsdWUpOwo+IC0KPiAtCWlmIChpZGF0 YS0+aW50ZXJmYWNlID49IFNITU9CX0RSTV9JRkFDRV9TWVM4QSAmJgo+IC0JICAgIGlkYXRhLT5p bnRlcmZhY2UgPD0gU0hNT0JfRFJNX0lGQUNFX1NZUzI0KSB7Cj4gLQkJLyogU2V0dXAgU1lTIGJ1 cy4gKi8KPiAtCQl2YWx1ZSA9IChpZGF0YS0+c3lzLmNzX3NldHVwIDw8IExETVQyUl9DU1VQX1NI SUZUKQo+IC0JCSAgICAgIHwgKGlkYXRhLT5zeXMudnN5bmNfYWN0aXZlX2hpZ2ggPyBMRE1UMlJf UlNWIDogMCkKPiAtCQkgICAgICB8IChpZGF0YS0+c3lzLnZzeW5jX2Rpcl9pbnB1dCA/IExETVQy Ul9WU0VMIDogMCkKPiAtCQkgICAgICB8IChpZGF0YS0+c3lzLndyaXRlX3NldHVwIDw8IExETVQy Ul9XQ1NDX1NISUZUKQo+IC0JCSAgICAgIHwgKGlkYXRhLT5zeXMud3JpdGVfY3ljbGUgPDwgTERN VDJSX1dDRUNfU0hJRlQpCj4gLQkJICAgICAgfCAoaWRhdGEtPnN5cy53cml0ZV9zdHJvYmUgPDwg TERNVDJSX1dDTFdfU0hJRlQpOwo+IC0JCWxjZGNfd3JpdGUoc2RldiwgTERNVDJSLCB2YWx1ZSk7 Cj4gLQo+IC0JCXZhbHVlID0gKGlkYXRhLT5zeXMucmVhZF9sYXRjaCA8PCBMRE1UM1JfUkRMQ19T SElGVCkKPiAtCQkgICAgICB8IChpZGF0YS0+c3lzLnJlYWRfc2V0dXAgPDwgTERNVDNSX1JDU0Nf U0hJRlQpCj4gLQkJICAgICAgfCAoaWRhdGEtPnN5cy5yZWFkX2N5Y2xlIDw8IExETVQzUl9SQ0VD X1NISUZUKQo+IC0JCSAgICAgIHwgKGlkYXRhLT5zeXMucmVhZF9zdHJvYmUgPDwgTERNVDNSX1JD TFdfU0hJRlQpOwo+IC0JCWxjZGNfd3JpdGUoc2RldiwgTERNVDNSLCB2YWx1ZSk7Cj4gLQl9Cj4g LQo+IC0JdmFsdWUgPSAoKG1vZGUtPmhkaXNwbGF5IC8gOCkgPDwgMTYpCQkJLyogSERDTiAqLwo+ IC0JICAgICAgfCAobW9kZS0+aHRvdGFsIC8gOCk7CQkJCS8qIEhUQ04gKi8KPiAtCWxjZGNfd3Jp dGUoc2RldiwgTERIQ05SLCB2YWx1ZSk7Cj4gLQo+IC0JdmFsdWUgPSAoKChtb2RlLT5oc3luY19l bmQgLSBtb2RlLT5oc3luY19zdGFydCkgLyA4KSA8PCAxNikgLyogSFNZTlcgKi8KPiAtCSAgICAg IHwgKG1vZGUtPmhzeW5jX3N0YXJ0IC8gOCk7CQkJLyogSFNZTlAgKi8KPiAtCWxjZGNfd3JpdGUo c2RldiwgTERIU1lOUiwgdmFsdWUpOwo+IC0KPiAtCXZhbHVlID0gKChtb2RlLT5oZGlzcGxheSAm IDcpIDw8IDI0KSB8ICgobW9kZS0+aHRvdGFsICYgNykgPDwgMTYpCj4gLQkgICAgICB8ICgoKG1v ZGUtPmhzeW5jX2VuZCAtIG1vZGUtPmhzeW5jX3N0YXJ0KSAmIDcpIDw8IDgpCj4gLQkgICAgICB8 IChtb2RlLT5oc3luY19zdGFydCAmIDcpOwo+IC0JbGNkY193cml0ZShzZGV2LCBMREhBSlIsIHZh bHVlKTsKPiAtCj4gLQl2YWx1ZSA9ICgobW9kZS0+dmRpc3BsYXkpIDw8IDE2KQkJCS8qIFZETE4g Ki8KPiAtCSAgICAgIHwgbW9kZS0+dnRvdGFsOwkJCQkJLyogVlRMTiAqLwo+IC0JbGNkY193cml0 ZShzZGV2LCBMRFZMTlIsIHZhbHVlKTsKPiAtCj4gLQl2YWx1ZSA9ICgobW9kZS0+dnN5bmNfZW5k IC0gbW9kZS0+dnN5bmNfc3RhcnQpIDw8IDE2KQkvKiBWU1lOVyAqLwo+IC0JICAgICAgfCBtb2Rl LT52c3luY19zdGFydDsJCQkJLyogVlNZTlAgKi8KPiAtCWxjZGNfd3JpdGUoc2RldiwgTERWU1lO UiwgdmFsdWUpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBzaG1vYl9kcm1fY3J0Y19zdGFydF9z dG9wKHN0cnVjdCBzaG1vYl9kcm1fY3J0YyAqc2NydGMsIGJvb2wgc3RhcnQpCj4gLXsKPiAtCXN0 cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2ID0gc2NydGMtPmNydGMuZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCXUzMiB2YWx1ZTsKPiAtCj4gLQl2YWx1ZSA9IGxjZGNfcmVhZChzZGV2LCBMRENOVDJS KTsKPiAtCWlmIChzdGFydCkKPiAtCQlsY2RjX3dyaXRlKHNkZXYsIExEQ05UMlIsIHZhbHVlIHwg TERDTlQyUl9ETyk7Cj4gLQllbHNlCj4gLQkJbGNkY193cml0ZShzZGV2LCBMRENOVDJSLCB2YWx1 ZSAmIH5MRENOVDJSX0RPKTsKPiAtCj4gLQkvKiBXYWl0IHVudGlsIHBvd2VyIGlzIGFwcGxpZWQv c3RvcHBlZC4gKi8KPiAtCXdoaWxlICgxKSB7Cj4gLQkJdmFsdWUgPSBsY2RjX3JlYWQoc2Rldiwg TERQTVIpICYgTERQTVJfTFBTOwo+IC0JCWlmICgoc3RhcnQgJiYgdmFsdWUpIHx8ICghc3RhcnQg JiYgIXZhbHVlKSkKPiAtCQkJYnJlYWs7Cj4gLQo+IC0JCWNwdV9yZWxheCgpOwo+IC0JfQo+IC0K PiAtCWlmICghc3RhcnQpIHsKPiAtCQkvKiBTdG9wIHRoZSBkb3QgY2xvY2suICovCj4gLQkJbGNk Y193cml0ZShzZGV2LCBMRERDS1NUUFIsIExERENLU1RQUl9EQ0tTVFApOwo+IC0JfQo+IC19Cj4g LQo+IC0vKgo+IC0gKiBzaG1vYl9kcm1fY3J0Y19zdGFydCAtIENvbmZpZ3VyZSBhbmQgc3RhcnQg dGhlIExDREMKPiAtICogQHNjcnRjOiB0aGUgU0ggTW9iaWxlIENSVEMKPiAtICoKPiAtICogQ29u ZmlndXJlIGFuZCBzdGFydCB0aGUgTENEQyBkZXZpY2UuIEV4dGVybmFsIGRldmljZXMgKGNsb2Nr cywgTUVSQU0sIHBhbmVscywKPiAtICogLi4uKSBhcmUgbm90IHRvdWNoZWQgYnkgdGhpcyBmdW5j dGlvbi4KPiAtICovCj4gLXN0YXRpYyB2b2lkIHNobW9iX2RybV9jcnRjX3N0YXJ0KHN0cnVjdCBz aG1vYl9kcm1fY3J0YyAqc2NydGMpCj4gLXsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZz Y3J0Yy0+Y3J0YzsKPiAtCXN0cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2ID0gY3J0Yy0+ZGV2 LT5kZXZfcHJpdmF0ZTsKPiAtCWNvbnN0IHN0cnVjdCBzaG1vYl9kcm1faW50ZXJmYWNlX2RhdGEg KmlkYXRhID0gJnNkZXYtPnBkYXRhLT5pZmFjZTsKPiAtCWNvbnN0IHN0cnVjdCBzaG1vYl9kcm1f Zm9ybWF0X2luZm8gKmZvcm1hdDsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzZGV2LT5k ZGV2Owo+IC0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gLQl1MzIgdmFsdWU7Cj4gLQlpbnQg cmV0Owo+IC0KPiAtCWlmIChzY3J0Yy0+c3RhcnRlZCkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JZm9y bWF0ID0gc2htb2JfZHJtX2Zvcm1hdF9pbmZvKGNydGMtPnByaW1hcnktPmZiLT5mb3JtYXQtPmZv cm1hdCk7Cj4gLQlpZiAoV0FSTl9PTihmb3JtYXQgPT0gTlVMTCkpCj4gLQkJcmV0dXJuOwo+IC0K PiAtCS8qIEVuYWJsZSBjbG9ja3MgYmVmb3JlIGFjY2Vzc2luZyB0aGUgaGFyZHdhcmUuICovCj4g LQlyZXQgPSBzaG1vYl9kcm1fY2xrX29uKHNkZXYpOwo+IC0JaWYgKHJldCA8IDApCj4gLQkJcmV0 dXJuOwo+IC0KPiAtCS8qIFJlc2V0IGFuZCBlbmFibGUgdGhlIExDREMuICovCj4gLQlsY2RjX3dy aXRlKHNkZXYsIExEQ05UMlIsIGxjZGNfcmVhZChzZGV2LCBMRENOVDJSKSB8IExEQ05UMlJfQlIp Owo+IC0JbGNkY193YWl0X2JpdChzZGV2LCBMRENOVDJSLCBMRENOVDJSX0JSLCAwKTsKPiAtCWxj ZGNfd3JpdGUoc2RldiwgTERDTlQyUiwgTERDTlQyUl9NRSk7Cj4gLQo+IC0JLyogU3RvcCB0aGUg TENEQyBmaXJzdCBhbmQgZGlzYWJsZSBhbGwgaW50ZXJydXB0cy4gKi8KPiAtCXNobW9iX2RybV9j cnRjX3N0YXJ0X3N0b3Aoc2NydGMsIGZhbHNlKTsKPiAtCWxjZGNfd3JpdGUoc2RldiwgTERJTlRS LCAwKTsKPiAtCj4gLQkvKiBDb25maWd1cmUgcG93ZXIgc3VwcGx5LCBkb3QgY2xvY2tzIGFuZCBz dGFydCB0aGVtLiAqLwo+IC0JbGNkY193cml0ZShzZGV2LCBMRFBNUiwgMCk7Cj4gLQo+IC0JdmFs dWUgPSBzZGV2LT5sZGRja3I7Cj4gLQlpZiAoaWRhdGEtPmNsa19kaXYpIHsKPiAtCQkvKiBGSVhN RTogc2g3NzI0IGNhbiBvbmx5IHVzZSA0MiwgNDgsIDU0IGFuZCA2MCBmb3IgdGhlIGRpdmlkZXIK PiAtCQkgKiBkZW5vbWluYXRvci4KPiAtCQkgKi8KPiAtCQlsY2RjX3dyaXRlKHNkZXYsIExERENL UEFUMVIsIDApOwo+IC0JCWxjZGNfd3JpdGUoc2RldiwgTEREQ0tQQVQyUiwgKDEgPDwgKGlkYXRh LT5jbGtfZGl2IC8gMikpIC0gMSk7Cj4gLQo+IC0JCWlmIChpZGF0YS0+Y2xrX2RpdiA9PSAxKQo+ IC0JCQl2YWx1ZSB8PSBMRERDS1JfTU9TRUw7Cj4gLQkJZWxzZQo+IC0JCQl2YWx1ZSB8PSBpZGF0 YS0+Y2xrX2RpdjsKPiAtCX0KPiAtCj4gLQlsY2RjX3dyaXRlKHNkZXYsIExERENLUiwgdmFsdWUp Owo+IC0JbGNkY193cml0ZShzZGV2LCBMRERDS1NUUFIsIDApOwo+IC0JbGNkY193YWl0X2JpdChz ZGV2LCBMRERDS1NUUFIsIH4wLCAwKTsKPiAtCj4gLQkvKiBUT0RPOiBTZXR1cCBTWVMgcGFuZWwg Ki8KPiAtCj4gLQkvKiBTZXR1cCBnZW9tZXRyeSwgZm9ybWF0LCBmcmFtZSBidWZmZXIgbWVtb3J5 IGFuZCBvcGVyYXRpb24gbW9kZS4gKi8KPiAtCXNobW9iX2RybV9jcnRjX3NldHVwX2dlb21ldHJ5 KHNjcnRjKTsKPiAtCj4gLQkvKiBUT0RPOiBIYW5kbGUgWVVWIGNvbG9yc3BhY2VzLiBIYXJkY29k ZSBSRUM3MDkgZm9yIG5vdy4gKi8KPiAtCWxjZGNfd3JpdGUoc2RldiwgTERERlIsIGZvcm1hdC0+ bGRkZnIgfCBMRERGUl9DRjEpOwo+IC0JbGNkY193cml0ZShzZGV2LCBMRE1MU1IsIHNjcnRjLT5s aW5lX3NpemUpOwo+IC0JbGNkY193cml0ZShzZGV2LCBMRFNBMVIsIHNjcnRjLT5kbWFbMF0pOwo+ IC0JaWYgKGZvcm1hdC0+eXV2KQo+IC0JCWxjZGNfd3JpdGUoc2RldiwgTERTQTJSLCBzY3J0Yy0+ ZG1hWzFdKTsKPiAtCWxjZGNfd3JpdGUoc2RldiwgTERTTTFSLCAwKTsKPiAtCj4gLQkvKiBXb3Jk IGFuZCBsb25nIHdvcmQgc3dhcC4gKi8KPiAtCXN3aXRjaCAoZm9ybWF0LT5mb3VyY2MpIHsKPiAt CWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4gLQljYXNlIERSTV9GT1JNQVRfTlYyMToKPiAtCWNh c2UgRFJNX0ZPUk1BVF9OVjYxOgo+IC0JY2FzZSBEUk1fRk9STUFUX05WNDI6Cj4gLQkJdmFsdWUg PSBMREREU1JfTFMgfCBMREREU1JfV1M7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIERSTV9GT1JNQVRf UkdCODg4Ogo+IC0JY2FzZSBEUk1fRk9STUFUX05WMTI6Cj4gLQljYXNlIERSTV9GT1JNQVRfTlYx NjoKPiAtCWNhc2UgRFJNX0ZPUk1BVF9OVjI0Ogo+IC0JCXZhbHVlID0gTERERFNSX0xTIHwgTERE RFNSX1dTIHwgTERERFNSX0JTOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBEUk1fRk9STUFUX0FSR0I4 ODg4Ogo+IC0JZGVmYXVsdDoKPiAtCQl2YWx1ZSA9IExERERTUl9MUzsKPiAtCQlicmVhazsKPiAt CX0KPiAtCWxjZGNfd3JpdGUoc2RldiwgTERERFNSLCB2YWx1ZSk7Cj4gLQo+IC0JLyogU2V0dXAg cGxhbmVzLiAqLwo+IC0JZHJtX2Zvcl9lYWNoX2xlZ2FjeV9wbGFuZShwbGFuZSwgZGV2KSB7Cj4g LQkJaWYgKHBsYW5lLT5jcnRjID09IGNydGMpCj4gLQkJCXNobW9iX2RybV9wbGFuZV9zZXR1cChw bGFuZSk7Cj4gLQl9Cj4gLQo+IC0JLyogRW5hYmxlIHRoZSBkaXNwbGF5IG91dHB1dC4gKi8KPiAt CWxjZGNfd3JpdGUoc2RldiwgTERDTlQxUiwgTERDTlQxUl9ERSk7Cj4gLQo+IC0Jc2htb2JfZHJt X2NydGNfc3RhcnRfc3RvcChzY3J0YywgdHJ1ZSk7Cj4gLQo+IC0Jc2NydGMtPnN0YXJ0ZWQgPSB0 cnVlOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBzaG1vYl9kcm1fY3J0Y19zdG9wKHN0cnVjdCBz aG1vYl9kcm1fY3J0YyAqc2NydGMpCj4gLXsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZz Y3J0Yy0+Y3J0YzsKPiAtCXN0cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2ID0gY3J0Yy0+ZGV2 LT5kZXZfcHJpdmF0ZTsKPiAtCj4gLQlpZiAoIXNjcnRjLT5zdGFydGVkKQo+IC0JCXJldHVybjsK PiAtCj4gLQkvKiBTdG9wIHRoZSBMQ0RDLiAqLwo+IC0Jc2htb2JfZHJtX2NydGNfc3RhcnRfc3Rv cChzY3J0YywgZmFsc2UpOwo+IC0KPiAtCS8qIERpc2FibGUgdGhlIGRpc3BsYXkgb3V0cHV0LiAq Lwo+IC0JbGNkY193cml0ZShzZGV2LCBMRENOVDFSLCAwKTsKPiAtCj4gLQkvKiBTdG9wIGNsb2Nr cy4gKi8KPiAtCXNobW9iX2RybV9jbGtfb2ZmKHNkZXYpOwo+IC0KPiAtCXNjcnRjLT5zdGFydGVk ID0gZmFsc2U7Cj4gLX0KPiAtCj4gLXZvaWQgc2htb2JfZHJtX2NydGNfc3VzcGVuZChzdHJ1Y3Qg c2htb2JfZHJtX2NydGMgKnNjcnRjKQo+IC17Cj4gLQlzaG1vYl9kcm1fY3J0Y19zdG9wKHNjcnRj KTsKPiAtfQo+IC0KPiAtdm9pZCBzaG1vYl9kcm1fY3J0Y19yZXN1bWUoc3RydWN0IHNobW9iX2Ry bV9jcnRjICpzY3J0YykKPiAtewo+IC0JaWYgKHNjcnRjLT5kcG1zICE9IERSTV9NT0RFX0RQTVNf T04pCj4gLQkJcmV0dXJuOwo+IC0KPiAtCXNobW9iX2RybV9jcnRjX3N0YXJ0KHNjcnRjKTsKPiAt fQo+IC0KPiAtc3RhdGljIHZvaWQgc2htb2JfZHJtX2NydGNfY29tcHV0ZV9iYXNlKHN0cnVjdCBz aG1vYl9kcm1fY3J0YyAqc2NydGMsCj4gLQkJCQkJaW50IHgsIGludCB5KQo+IC17Cj4gLQlzdHJ1 Y3QgZHJtX2NydGMgKmNydGMgPSAmc2NydGMtPmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IGNydGMtPnByaW1hcnktPmZiOwo+IC0Jc3RydWN0IGRybV9nZW1fY21hX29iamVj dCAqZ2VtOwo+IC0JdW5zaWduZWQgaW50IGJwcDsKPiAtCj4gLQlicHAgPSBzY3J0Yy0+Zm9ybWF0 LT55dXYgPyA4IDogc2NydGMtPmZvcm1hdC0+YnBwOwo+IC0JZ2VtID0gZHJtX2ZiX2NtYV9nZXRf Z2VtX29iaihmYiwgMCk7Cj4gLQlzY3J0Yy0+ZG1hWzBdID0gZ2VtLT5wYWRkciArIGZiLT5vZmZz ZXRzWzBdCj4gLQkJICAgICAgKyB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogYnBwIC8gODsKPiAt Cj4gLQlpZiAoc2NydGMtPmZvcm1hdC0+eXV2KSB7Cj4gLQkJYnBwID0gc2NydGMtPmZvcm1hdC0+ YnBwIC0gODsKPiAtCQlnZW0gPSBkcm1fZmJfY21hX2dldF9nZW1fb2JqKGZiLCAxKTsKPiAtCQlz Y3J0Yy0+ZG1hWzFdID0gZ2VtLT5wYWRkciArIGZiLT5vZmZzZXRzWzFdCj4gLQkJCSAgICAgICsg eSAvIChicHAgPT0gNCA/IDIgOiAxKSAqIGZiLT5waXRjaGVzWzFdCj4gLQkJCSAgICAgICsgeCAq IChicHAgPT0gMTYgPyAyIDogMSk7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIHNobW9i X2RybV9jcnRjX3VwZGF0ZV9iYXNlKHN0cnVjdCBzaG1vYl9kcm1fY3J0YyAqc2NydGMpCj4gLXsK PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZzY3J0Yy0+Y3J0YzsKPiAtCXN0cnVjdCBzaG1v Yl9kcm1fZGV2aWNlICpzZGV2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCj4gLQlzaG1v Yl9kcm1fY3J0Y19jb21wdXRlX2Jhc2Uoc2NydGMsIGNydGMtPngsIGNydGMtPnkpOwo+IC0KPiAt CWxjZGNfd3JpdGVfbWlycm9yKHNkZXYsIExEU0ExUiwgc2NydGMtPmRtYVswXSk7Cj4gLQlpZiAo c2NydGMtPmZvcm1hdC0+eXV2KQo+IC0JCWxjZGNfd3JpdGVfbWlycm9yKHNkZXYsIExEU0EyUiwg c2NydGMtPmRtYVsxXSk7Cj4gLQo+IC0JbGNkY193cml0ZShzZGV2LCBMRFJDTlRSLCBsY2RjX3Jl YWQoc2RldiwgTERSQ05UUikgXiBMRFJDTlRSX01SUyk7Cj4gLX0KPiAtCj4gLSNkZWZpbmUgdG9f c2htb2JfY3J0YyhjKQljb250YWluZXJfb2YoYywgc3RydWN0IHNobW9iX2RybV9jcnRjLCBjcnRj KQo+IC0KPiAtc3RhdGljIHZvaWQgc2htb2JfZHJtX2NydGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMg KmNydGMsIGludCBtb2RlKQo+IC17Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2NydGMgKnNjcnRjID0g dG9fc2htb2JfY3J0YyhjcnRjKTsKPiAtCj4gLQlpZiAoc2NydGMtPmRwbXMgPT0gbW9kZSkKPiAt CQlyZXR1cm47Cj4gLQo+IC0JaWYgKG1vZGUgPT0gRFJNX01PREVfRFBNU19PTikKPiAtCQlzaG1v Yl9kcm1fY3J0Y19zdGFydChzY3J0Yyk7Cj4gLQllbHNlCj4gLQkJc2htb2JfZHJtX2NydGNfc3Rv cChzY3J0Yyk7Cj4gLQo+IC0Jc2NydGMtPmRwbXMgPSBtb2RlOwo+IC19Cj4gLQo+IC1zdGF0aWMg dm9pZCBzaG1vYl9kcm1fY3J0Y19tb2RlX3ByZXBhcmUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ IC17Cj4gLQlzaG1vYl9kcm1fY3J0Y19kcG1zKGNydGMsIERSTV9NT0RFX0RQTVNfT0ZGKTsKPiAt fQo+IC0KPiAtc3RhdGljIGludCBzaG1vYl9kcm1fY3J0Y19tb2RlX3NldChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gLQkJCQkgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAtCQkJ CSAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlLAo+IC0JCQkJICAgaW50 IHgsIGludCB5LAo+IC0JCQkJICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiKQo+IC17 Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2NydGMgKnNjcnRjID0gdG9fc2htb2JfY3J0YyhjcnRjKTsK PiAtCXN0cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCWNvbnN0IHN0cnVjdCBzaG1vYl9kcm1fZm9ybWF0X2luZm8gKmZvcm1hdDsKPiAtCj4g LQlmb3JtYXQgPSBzaG1vYl9kcm1fZm9ybWF0X2luZm8oY3J0Yy0+cHJpbWFyeS0+ZmItPmZvcm1h dC0+Zm9ybWF0KTsKPiAtCWlmIChmb3JtYXQgPT0gTlVMTCkgewo+IC0JCWRldl9kYmcoc2Rldi0+ ZGV2LCAibW9kZV9zZXQ6IHVuc3VwcG9ydGVkIGZvcm1hdCAlMDh4XG4iLAo+IC0JCQljcnRjLT5w cmltYXJ5LT5mYi0+Zm9ybWF0LT5mb3JtYXQpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+ IC0KPiAtCXNjcnRjLT5mb3JtYXQgPSBmb3JtYXQ7Cj4gLQlzY3J0Yy0+bGluZV9zaXplID0gY3J0 Yy0+cHJpbWFyeS0+ZmItPnBpdGNoZXNbMF07Cj4gLQo+IC0Jc2htb2JfZHJtX2NydGNfY29tcHV0 ZV9iYXNlKHNjcnRjLCB4LCB5KTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtc3RhdGlj IHZvaWQgc2htb2JfZHJtX2NydGNfbW9kZV9jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ IC17Cj4gLQlzaG1vYl9kcm1fY3J0Y19kcG1zKGNydGMsIERSTV9NT0RFX0RQTVNfT04pOwo+IC19 Cj4gLQo+IC1zdGF0aWMgaW50IHNobW9iX2RybV9jcnRjX21vZGVfc2V0X2Jhc2Uoc3RydWN0IGRy bV9jcnRjICpjcnRjLCBpbnQgeCwgaW50IHksCj4gLQkJCQkJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqb2xkX2ZiKQo+IC17Cj4gLQlzaG1vYl9kcm1fY3J0Y191cGRhdGVfYmFzZSh0b19zaG1vYl9j cnRjKGNydGMpKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgY3J0Y19oZWxwZXJfZnVuY3MgPSB7Cj4gLQkuZHBt cyA9IHNobW9iX2RybV9jcnRjX2RwbXMsCj4gLQkucHJlcGFyZSA9IHNobW9iX2RybV9jcnRjX21v ZGVfcHJlcGFyZSwKPiAtCS5jb21taXQgPSBzaG1vYl9kcm1fY3J0Y19tb2RlX2NvbW1pdCwKPiAt CS5tb2RlX3NldCA9IHNobW9iX2RybV9jcnRjX21vZGVfc2V0LAo+IC0JLm1vZGVfc2V0X2Jhc2Ug PSBzaG1vYl9kcm1fY3J0Y19tb2RlX3NldF9iYXNlLAo+IC19Owo+IC0KPiAtdm9pZCBzaG1vYl9k cm1fY3J0Y19maW5pc2hfcGFnZV9mbGlwKHN0cnVjdCBzaG1vYl9kcm1fY3J0YyAqc2NydGMpCj4g LXsKPiAtCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50Owo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IHNjcnRjLT5jcnRjLmRldjsKPiAtCXVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+ IC0JZXZlbnQgPSBzY3J0Yy0+ZXZlbnQ7Cj4gLQlzY3J0Yy0+ZXZlbnQgPSBOVUxMOwo+IC0JaWYg KGV2ZW50KSB7Cj4gLQkJZHJtX2NydGNfc2VuZF92YmxhbmtfZXZlbnQoJnNjcnRjLT5jcnRjLCBl dmVudCk7Cj4gLQkJZHJtX2NydGNfdmJsYW5rX3B1dCgmc2NydGMtPmNydGMpOwo+IC0JfQo+IC0J c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gLX0KPiAt Cj4gLXN0YXRpYyBpbnQgc2htb2JfZHJtX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiAtCQkJCSAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAtCQkJCSAgICBz dHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudCwKPiAtCQkJCSAgICB1aW50MzJf dCBwYWdlX2ZsaXBfZmxhZ3MsCj4gLQkJCQkgICAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVf Y3R4ICpjdHgpCj4gLXsKPiAtCXN0cnVjdCBzaG1vYl9kcm1fY3J0YyAqc2NydGMgPSB0b19zaG1v Yl9jcnRjKGNydGMpOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHNjcnRjLT5jcnRjLmRl djsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRl di0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+IC0JaWYgKHNjcnRjLT5ldmVudCAhPSBOVUxMKSB7Cj4g LQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gLQkJ cmV0dXJuIC1FQlVTWTsKPiAtCX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZl bnRfbG9jaywgZmxhZ3MpOwo+IC0KPiAtCWNydGMtPnByaW1hcnktPmZiID0gZmI7Cj4gLQlzaG1v Yl9kcm1fY3J0Y191cGRhdGVfYmFzZShzY3J0Yyk7Cj4gLQo+IC0JaWYgKGV2ZW50KSB7Cj4gLQkJ ZXZlbnQtPnBpcGUgPSAwOwo+IC0JCWRybV9jcnRjX3ZibGFua19nZXQoJnNjcnRjLT5jcnRjKTsK PiAtCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gLQkJc2Ny dGMtPmV2ZW50ID0gZXZlbnQ7Cj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVu dF9sb2NrLCBmbGFncyk7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRp YyB2b2lkIHNobW9iX2RybV9jcnRjX2VuYWJsZV92Ymxhbmsoc3RydWN0IHNobW9iX2RybV9kZXZp Y2UgKnNkZXYsCj4gLQkJCQkJIGJvb2wgZW5hYmxlKQo+IC17Cj4gLQl1bnNpZ25lZCBsb25nIGZs YWdzOwo+IC0JdTMyIGxkaW50cjsKPiAtCj4gLQkvKiBCZSBjYXJlZnVsIG5vdCB0byBhY2tub3ds ZWRnZSBhbnkgcGVuZGluZyBpbnRlcnJ1cHQuICovCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmc2Rl di0+aXJxX2xvY2ssIGZsYWdzKTsKPiAtCWxkaW50ciA9IGxjZGNfcmVhZChzZGV2LCBMRElOVFIp IHwgTERJTlRSX1NUQVRVU19NQVNLOwo+IC0JaWYgKGVuYWJsZSkKPiAtCQlsZGludHIgfD0gTERJ TlRSX1ZFRTsKPiAtCWVsc2UKPiAtCQlsZGludHIgJj0gfkxESU5UUl9WRUU7Cj4gLQlsY2RjX3dy aXRlKHNkZXYsIExESU5UUiwgbGRpbnRyKTsKPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNk ZXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgc2htb2JfZHJtX2Vu YWJsZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+IC17Cj4gLQlzdHJ1Y3Qgc2htb2Jf ZHJtX2RldmljZSAqc2RldiA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gLQo+IC0Jc2htb2Jf ZHJtX2NydGNfZW5hYmxlX3ZibGFuayhzZGV2LCB0cnVlKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAt fQo+IC0KPiAtc3RhdGljIHZvaWQgc2htb2JfZHJtX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiAtewo+IC0Jc3RydWN0IHNobW9iX2RybV9kZXZpY2UgKnNkZXYgPSBjcnRj LT5kZXYtPmRldl9wcml2YXRlOwo+IC0KPiAtCXNobW9iX2RybV9jcnRjX2VuYWJsZV92Ymxhbmso c2RldiwgZmFsc2UpOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1 bmNzIGNydGNfZnVuY3MgPSB7Cj4gLQkuZGVzdHJveSA9IGRybV9jcnRjX2NsZWFudXAsCj4gLQku c2V0X2NvbmZpZyA9IGRybV9jcnRjX2hlbHBlcl9zZXRfY29uZmlnLAo+IC0JLnBhZ2VfZmxpcCA9 IHNobW9iX2RybV9jcnRjX3BhZ2VfZmxpcCwKPiAtCS5lbmFibGVfdmJsYW5rID0gc2htb2JfZHJt X2VuYWJsZV92YmxhbmssCj4gLQkuZGlzYWJsZV92YmxhbmsgPSBzaG1vYl9kcm1fZGlzYWJsZV92 YmxhbmssCj4gLX07Cj4gLQo+IC1pbnQgc2htb2JfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBzaG1v Yl9kcm1fZGV2aWNlICpzZGV2KQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmc2Rl di0+Y3J0Yy5jcnRjOwo+IC0JaW50IHJldDsKPiAtCj4gLQlzZGV2LT5jcnRjLmRwbXMgPSBEUk1f TU9ERV9EUE1TX09GRjsKPiAtCj4gLQlyZXQgPSBkcm1fY3J0Y19pbml0KHNkZXYtPmRkZXYsIGNy dGMsICZjcnRjX2Z1bmNzKTsKPiAtCWlmIChyZXQgPCAwKQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ IC0JZHJtX2NydGNfaGVscGVyX2FkZChjcnRjLCAmY3J0Y19oZWxwZXJfZnVuY3MpOwo+IC0KPiAt CXJldHVybiAwOwo+IC19Cj4gLQo+IC0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0gKiBFbmNv ZGVyCj4gLSAqLwo+IC0KPiAtI2RlZmluZSB0b19zaG1vYl9lbmNvZGVyKGUpIFwKPiAtCWNvbnRh aW5lcl9vZihlLCBzdHJ1Y3Qgc2htb2JfZHJtX2VuY29kZXIsIGVuY29kZXIpCj4gLQo+IC1zdGF0 aWMgdm9pZCBzaG1vYl9kcm1fZW5jb2Rlcl9kcG1zKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciwgaW50IG1vZGUpCj4gLXsKPiAtCXN0cnVjdCBzaG1vYl9kcm1fZW5jb2RlciAqc2VuYyA9IHRv X3NobW9iX2VuY29kZXIoZW5jb2Rlcik7Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2RldmljZSAqc2Rl diA9IGVuY29kZXItPmRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2Nvbm5l Y3RvciAqc2NvbiA9ICZzZGV2LT5jb25uZWN0b3I7Cj4gLQo+IC0JaWYgKHNlbmMtPmRwbXMgPT0g bW9kZSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0Jc2htb2JfZHJtX2JhY2tsaWdodF9kcG1zKHNjb24s IG1vZGUpOwo+IC0KPiAtCXNlbmMtPmRwbXMgPSBtb2RlOwo+IC19Cj4gLQo+IC1zdGF0aWMgYm9v bCBzaG1vYl9kcm1fZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciwKPiAtCQkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gLQkJCQkJ IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQo+IC17Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owo+IC0Jc3RydWN0IHNobW9iX2RybV9kZXZp Y2UgKnNkZXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciA9ICZzZGV2LT5jb25uZWN0b3IuY29ubmVjdG9yOwo+IC0JY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKnBhbmVsX21vZGU7Cj4gLQo+IC0JaWYgKGxpc3RfZW1wdHkoJmNvbm5l Y3Rvci0+bW9kZXMpKSB7Cj4gLQkJZGV2X2RiZyhkZXYtPmRldiwgIm1vZGVfZml4dXA6IGVtcHR5 IG1vZGVzIGxpc3RcbiIpOwo+IC0JCXJldHVybiBmYWxzZTsKPiAtCX0KPiAtCj4gLQkvKiBUaGUg ZmxhdCBwYW5lbCBtb2RlIGlzIGZpeGVkLCBqdXN0IGNvcHkgaXQgdG8gdGhlIGFkanVzdGVkIG1v ZGUuICovCj4gLQlwYW5lbF9tb2RlID0gbGlzdF9maXJzdF9lbnRyeSgmY29ubmVjdG9yLT5tb2Rl cywKPiAtCQkJCSAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlLCBoZWFkKTsKPiAtCWRybV9t b2RlX2NvcHkoYWRqdXN0ZWRfbW9kZSwgcGFuZWxfbW9kZSk7Cj4gLQo+IC0JcmV0dXJuIHRydWU7 Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIHNobW9iX2RybV9lbmNvZGVyX21vZGVfcHJlcGFyZShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gLXsKPiAtCS8qIE5vLW9wLCBldmVyeXRoaW5n IGlzIGhhbmRsZWQgaW4gdGhlIENSVEMgY29kZS4gKi8KPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQg c2htb2JfZHJtX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ IC0JCQkJICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+IC0JCQkJICAgICAg IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQo+IC17Cj4gLQkvKiBOby1v cCwgZXZlcnl0aGluZyBpcyBoYW5kbGVkIGluIHRoZSBDUlRDIGNvZGUuICovCj4gLX0KPiAtCj4g LXN0YXRpYyB2b2lkIHNobW9iX2RybV9lbmNvZGVyX21vZGVfY29tbWl0KHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcikKPiAtewo+IC0JLyogTm8tb3AsIGV2ZXJ5dGhpbmcgaXMgaGFuZGxlZCBp biB0aGUgQ1JUQyBjb2RlLiAqLwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9l bmNvZGVyX2hlbHBlcl9mdW5jcyBlbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKPiAtCS5kcG1zID0g c2htb2JfZHJtX2VuY29kZXJfZHBtcywKPiAtCS5tb2RlX2ZpeHVwID0gc2htb2JfZHJtX2VuY29k ZXJfbW9kZV9maXh1cCwKPiAtCS5wcmVwYXJlID0gc2htb2JfZHJtX2VuY29kZXJfbW9kZV9wcmVw YXJlLAo+IC0JLmNvbW1pdCA9IHNobW9iX2RybV9lbmNvZGVyX21vZGVfY29tbWl0LAo+IC0JLm1v ZGVfc2V0ID0gc2htb2JfZHJtX2VuY29kZXJfbW9kZV9zZXQsCj4gLX07Cj4gLQo+IC1zdGF0aWMg dm9pZCBzaG1vYl9kcm1fZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cikKPiAtewo+IC0JZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKPiAtfQo+IC0KPiAtc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBlbmNvZGVyX2Z1bmNzID0gewo+IC0J LmRlc3Ryb3kgPSBzaG1vYl9kcm1fZW5jb2Rlcl9kZXN0cm95LAo+IC19Owo+IC0KPiAtaW50IHNo bW9iX2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3Qgc2htb2JfZHJtX2RldmljZSAqc2RldikKPiAt ewo+IC0Jc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJnNkZXYtPmVuY29kZXIuZW5jb2Rl cjsKPiAtCWludCByZXQ7Cj4gLQo+IC0Jc2Rldi0+ZW5jb2Rlci5kcG1zID0gRFJNX01PREVfRFBN U19PRkY7Cj4gLQo+IC0JZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSAxOwo+IC0KPiAtCXJldCA9 IGRybV9lbmNvZGVyX2luaXQoc2Rldi0+ZGRldiwgZW5jb2RlciwgJmVuY29kZXJfZnVuY3MsCj4g LQkJCSAgICAgICBEUk1fTU9ERV9FTkNPREVSX0xWRFMsIE5VTEwpOwo+IC0JaWYgKHJldCA8IDAp Cj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKGVuY29kZXIs ICZlbmNvZGVyX2hlbHBlcl9mdW5jcyk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLS8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLSAqIENvbm5lY3Rvcgo+IC0gKi8KPiAtCj4gLSNkZWZp bmUgdG9fc2htb2JfY29ubmVjdG9yKGMpIFwKPiAtCWNvbnRhaW5lcl9vZihjLCBzdHJ1Y3Qgc2ht b2JfZHJtX2Nvbm5lY3RvciwgY29ubmVjdG9yKQo+IC0KPiAtc3RhdGljIGludCBzaG1vYl9kcm1f Y29ubmVjdG9yX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+IC17 Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2RldmljZSAqc2RldiA9IGNvbm5lY3Rvci0+ZGV2LT5kZXZf cHJpdmF0ZTsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+IC0KPiAtCW1vZGUg PSBkcm1fbW9kZV9jcmVhdGUoY29ubmVjdG9yLT5kZXYpOwo+IC0JaWYgKG1vZGUgPT0gTlVMTCkK PiAtCQlyZXR1cm4gMDsKPiAtCj4gLQltb2RlLT50eXBlID0gRFJNX01PREVfVFlQRV9QUkVGRVJS RUQgfCBEUk1fTU9ERV9UWVBFX0RSSVZFUjsKPiAtCW1vZGUtPmNsb2NrID0gc2Rldi0+cGRhdGEt PnBhbmVsLm1vZGUuY2xvY2s7Cj4gLQltb2RlLT5oZGlzcGxheSA9IHNkZXYtPnBkYXRhLT5wYW5l bC5tb2RlLmhkaXNwbGF5Owo+IC0JbW9kZS0+aHN5bmNfc3RhcnQgPSBzZGV2LT5wZGF0YS0+cGFu ZWwubW9kZS5oc3luY19zdGFydDsKPiAtCW1vZGUtPmhzeW5jX2VuZCA9IHNkZXYtPnBkYXRhLT5w YW5lbC5tb2RlLmhzeW5jX2VuZDsKPiAtCW1vZGUtPmh0b3RhbCA9IHNkZXYtPnBkYXRhLT5wYW5l bC5tb2RlLmh0b3RhbDsKPiAtCW1vZGUtPnZkaXNwbGF5ID0gc2Rldi0+cGRhdGEtPnBhbmVsLm1v ZGUudmRpc3BsYXk7Cj4gLQltb2RlLT52c3luY19zdGFydCA9IHNkZXYtPnBkYXRhLT5wYW5lbC5t b2RlLnZzeW5jX3N0YXJ0Owo+IC0JbW9kZS0+dnN5bmNfZW5kID0gc2Rldi0+cGRhdGEtPnBhbmVs Lm1vZGUudnN5bmNfZW5kOwo+IC0JbW9kZS0+dnRvdGFsID0gc2Rldi0+cGRhdGEtPnBhbmVsLm1v ZGUudnRvdGFsOwo+IC0JbW9kZS0+ZmxhZ3MgPSBzZGV2LT5wZGF0YS0+cGFuZWwubW9kZS5mbGFn czsKPiAtCj4gLQlkcm1fbW9kZV9zZXRfbmFtZShtb2RlKTsKPiAtCWRybV9tb2RlX3Byb2JlZF9h ZGQoY29ubmVjdG9yLCBtb2RlKTsKPiAtCj4gLQljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0 aF9tbSA9IHNkZXYtPnBkYXRhLT5wYW5lbC53aWR0aF9tbTsKPiAtCWNvbm5lY3Rvci0+ZGlzcGxh eV9pbmZvLmhlaWdodF9tbSA9IHNkZXYtPnBkYXRhLT5wYW5lbC5oZWlnaHRfbW07Cj4gLQo+IC0J cmV0dXJuIDE7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXIgKgo+IC1zaG1v Yl9kcm1fY29ubmVjdG9yX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQo+IC17Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2Nvbm5lY3RvciAqc2NvbiA9IHRvX3NobW9i X2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+IC0KPiAtCXJldHVybiBzY29uLT5lbmNvZGVyOwo+IC19 Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGNv bm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7Cj4gLQkuZ2V0X21vZGVzID0gc2htb2JfZHJtX2Nvbm5l Y3Rvcl9nZXRfbW9kZXMsCj4gLQkuYmVzdF9lbmNvZGVyID0gc2htb2JfZHJtX2Nvbm5lY3Rvcl9i ZXN0X2VuY29kZXIsCj4gLX07Cj4gLQo+IC1zdGF0aWMgdm9pZCBzaG1vYl9kcm1fY29ubmVjdG9y X2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAtewo+IC0Jc3RydWN0 IHNobW9iX2RybV9jb25uZWN0b3IgKnNjb24gPSB0b19zaG1vYl9jb25uZWN0b3IoY29ubmVjdG9y KTsKPiAtCj4gLQlzaG1vYl9kcm1fYmFja2xpZ2h0X2V4aXQoc2Nvbik7Cj4gLQlkcm1fY29ubmVj dG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKPiAtCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25u ZWN0b3IpOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVu Y3MgY29ubmVjdG9yX2Z1bmNzID0gewo+IC0JLmRwbXMgPSBkcm1faGVscGVyX2Nvbm5lY3Rvcl9k cG1zLAo+IC0JLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3Jf bW9kZXMsCj4gLQkuZGVzdHJveSA9IHNobW9iX2RybV9jb25uZWN0b3JfZGVzdHJveSwKPiAtfTsK PiAtCj4gLWludCBzaG1vYl9kcm1fY29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3Qgc2htb2JfZHJtX2Rl dmljZSAqc2RldiwKPiAtCQkJICAgICAgIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAt ewo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZzZGV2LT5jb25uZWN0b3Iu Y29ubmVjdG9yOwo+IC0JaW50IHJldDsKPiAtCj4gLQlzZGV2LT5jb25uZWN0b3IuZW5jb2RlciA9 IGVuY29kZXI7Cj4gLQo+IC0JY29ubmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSBzZGV2 LT5wZGF0YS0+cGFuZWwud2lkdGhfbW07Cj4gLQljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWln aHRfbW0gPSBzZGV2LT5wZGF0YS0+cGFuZWwuaGVpZ2h0X21tOwo+IC0KPiAtCXJldCA9IGRybV9j b25uZWN0b3JfaW5pdChzZGV2LT5kZGV2LCBjb25uZWN0b3IsICZjb25uZWN0b3JfZnVuY3MsCj4g LQkJCQkgRFJNX01PREVfQ09OTkVDVE9SX0xWRFMpOwo+IC0JaWYgKHJldCA8IDApCj4gLQkJcmV0 dXJuIHJldDsKPiAtCj4gLQlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmY29u bmVjdG9yX2hlbHBlcl9mdW5jcyk7Cj4gLQo+IC0JcmV0ID0gc2htb2JfZHJtX2JhY2tsaWdodF9p bml0KCZzZGV2LT5jb25uZWN0b3IpOwo+IC0JaWYgKHJldCA8IDApCj4gLQkJZ290byBlcnJfY2xl YW51cDsKPiAtCj4gLQlyZXQgPSBkcm1fY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3Rv ciwgZW5jb2Rlcik7Cj4gLQlpZiAocmV0IDwgMCkKPiAtCQlnb3RvIGVycl9iYWNrbGlnaHQ7Cj4g LQo+IC0JZHJtX2hlbHBlcl9jb25uZWN0b3JfZHBtcyhjb25uZWN0b3IsIERSTV9NT0RFX0RQTVNf T0ZGKTsKPiAtCWRybV9vYmplY3RfcHJvcGVydHlfc2V0X3ZhbHVlKCZjb25uZWN0b3ItPmJhc2Us Cj4gLQkJc2Rldi0+ZGRldi0+bW9kZV9jb25maWcuZHBtc19wcm9wZXJ0eSwgRFJNX01PREVfRFBN U19PRkYpOwo+IC0KPiAtCXJldHVybiAwOwo+IC0KPiAtZXJyX2JhY2tsaWdodDoKPiAtCXNobW9i X2RybV9iYWNrbGlnaHRfZXhpdCgmc2Rldi0+Y29ubmVjdG9yKTsKPiAtZXJyX2NsZWFudXA6Cj4g LQlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKPiAtCXJldHVybiByZXQ7Cj4gLX0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9jcnRjLmgg Yi9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvc2htb2JfZHJtX2NydGMuaAo+IGRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDljYTY5MjA2NDFkODlkYTMuLjAwMDAwMDAwMDAwMDAwMDAK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvc2htb2JfZHJtX2NydGMuaAo+ICsrKyAv ZGV2L251bGwKPiBAQCAtMSw1MyArMCwwIEBACj4gLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wKyAqLwo+IC0vKgo+IC0gKiBzaG1vYl9kcm1fY3J0Yy5oICAtLSAgU0ggTW9iaWxl IERSTSBDUlRDcwo+IC0gKgo+IC0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJv bmljcyBDb3Jwb3JhdGlvbgo+IC0gKgo+IC0gKiBMYXVyZW50IFBpbmNoYXJ0IChsYXVyZW50LnBp bmNoYXJ0QGlkZWFzb25ib2FyZC5jb20pCj4gLSAqLwo+IC0KPiAtI2lmbmRlZiBfX1NITU9CX0RS TV9DUlRDX0hfXwo+IC0jZGVmaW5lIF9fU0hNT0JfRFJNX0NSVENfSF9fCj4gLQo+IC0jaW5jbHVk ZSA8ZHJtL2RybVAuaD4KPiAtI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+IC0jaW5jbHVkZSA8 ZHJtL2RybV9lbmNvZGVyLmg+Cj4gLQo+IC1zdHJ1Y3QgYmFja2xpZ2h0X2RldmljZTsKPiAtc3Ry dWN0IHNobW9iX2RybV9kZXZpY2U7Cj4gLQo+IC1zdHJ1Y3Qgc2htb2JfZHJtX2NydGMgewo+IC0J c3RydWN0IGRybV9jcnRjIGNydGM7Cj4gLQo+IC0Jc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19l dmVudCAqZXZlbnQ7Cj4gLQlpbnQgZHBtczsKPiAtCj4gLQljb25zdCBzdHJ1Y3Qgc2htb2JfZHJt X2Zvcm1hdF9pbmZvICpmb3JtYXQ7Cj4gLQl1bnNpZ25lZCBsb25nIGRtYVsyXTsKPiAtCXVuc2ln bmVkIGludCBsaW5lX3NpemU7Cj4gLQlib29sIHN0YXJ0ZWQ7Cj4gLX07Cj4gLQo+IC1zdHJ1Y3Qg c2htb2JfZHJtX2VuY29kZXIgewo+IC0Jc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gLQlp bnQgZHBtczsKPiAtfTsKPiAtCj4gLXN0cnVjdCBzaG1vYl9kcm1fY29ubmVjdG9yIHsKPiAtCXN0 cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKPiAtCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcjsKPiAtCj4gLQlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0Owo+IC19Owo+ IC0KPiAtaW50IHNobW9iX2RybV9jcnRjX2NyZWF0ZShzdHJ1Y3Qgc2htb2JfZHJtX2RldmljZSAq c2Rldik7Cj4gLXZvaWQgc2htb2JfZHJtX2NydGNfZmluaXNoX3BhZ2VfZmxpcChzdHJ1Y3Qgc2ht b2JfZHJtX2NydGMgKnNjcnRjKTsKPiAtdm9pZCBzaG1vYl9kcm1fY3J0Y19zdXNwZW5kKHN0cnVj dCBzaG1vYl9kcm1fY3J0YyAqc2NydGMpOwo+IC12b2lkIHNobW9iX2RybV9jcnRjX3Jlc3VtZShz dHJ1Y3Qgc2htb2JfZHJtX2NydGMgKnNjcnRjKTsKPiAtCj4gLWludCBzaG1vYl9kcm1fZW5jb2Rl cl9jcmVhdGUoc3RydWN0IHNobW9iX2RybV9kZXZpY2UgKnNkZXYpOwo+IC1pbnQgc2htb2JfZHJt X2Nvbm5lY3Rvcl9jcmVhdGUoc3RydWN0IHNobW9iX2RybV9kZXZpY2UgKnNkZXYsCj4gLQkJCSAg ICAgICBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+IC0KPiAtI2VuZGlmIC8qIF9fU0hN T0JfRFJNX0NSVENfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zaG1vYmls ZS9zaG1vYl9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvc2htb2JfZHJtX2Ry di5jCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggZjJjZmQxNjk4Yjc4MDlmMi4u MDAwMDAwMDAwMDAwMDAwMAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9k cm1fZHJ2LmMKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMzExICswLDAgQEAKPiAtLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCj4gLS8qCj4gLSAqIHNobW9iX2RybV9kcnYuYyAg LS0gIFNIIE1vYmlsZSBEUk0gZHJpdmVyCj4gLSAqCj4gLSAqIENvcHlyaWdodCAoQykgMjAxMiBS ZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIExhdXJlbnQgUGluY2hh cnQgKGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbSkKPiAtICovCj4gLQo+IC0jaW5j bHVkZSA8bGludXgvY2xrLmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9pby5oPgo+IC0jaW5jbHVkZSA8 bGludXgvbW0uaD4KPiAtI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+IC0jaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9wbS5oPgo+IC0jaW5jbHVk ZSA8bGludXgvc2xhYi5oPgo+IC0KPiAtI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gLSNpbmNsdWRl IDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gLSNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVs cGVyLmg+Cj4gLQo+IC0jaW5jbHVkZSAic2htb2JfZHJtX2Rydi5oIgo+IC0jaW5jbHVkZSAic2ht b2JfZHJtX2ttcy5oIgo+IC0jaW5jbHVkZSAic2htb2JfZHJtX3BsYW5lLmgiCj4gLSNpbmNsdWRl ICJzaG1vYl9kcm1fcmVncy5oIgo+IC0KPiAtLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtICog SGFyZHdhcmUgaW5pdGlhbGl6YXRpb24KPiAtICovCj4gLQo+IC1zdGF0aWMgaW50IHNobW9iX2Ry bV9pbml0X2ludGVyZmFjZShzdHJ1Y3Qgc2htb2JfZHJtX2RldmljZSAqc2RldikKPiAtewo+IC0J c3RhdGljIGNvbnN0IHUzMiBsZG10MXJbXSA9IHsKPiAtCQlbU0hNT0JfRFJNX0lGQUNFX1JHQjhd ID0gTERNVDFSX01JRlRZUF9SR0I4LAo+IC0JCVtTSE1PQl9EUk1fSUZBQ0VfUkdCOV0gPSBMRE1U MVJfTUlGVFlQX1JHQjksCj4gLQkJW1NITU9CX0RSTV9JRkFDRV9SR0IxMkFdID0gTERNVDFSX01J RlRZUF9SR0IxMkEsCj4gLQkJW1NITU9CX0RSTV9JRkFDRV9SR0IxMkJdID0gTERNVDFSX01JRlRZ UF9SR0IxMkIsCj4gLQkJW1NITU9CX0RSTV9JRkFDRV9SR0IxNl0gPSBMRE1UMVJfTUlGVFlQX1JH QjE2LAo+IC0JCVtTSE1PQl9EUk1fSUZBQ0VfUkdCMThdID0gTERNVDFSX01JRlRZUF9SR0IxOCwK PiAtCQlbU0hNT0JfRFJNX0lGQUNFX1JHQjI0XSA9IExETVQxUl9NSUZUWVBfUkdCMjQsCj4gLQkJ W1NITU9CX0RSTV9JRkFDRV9ZVVY0MjJdID0gTERNVDFSX01JRlRZUF9ZQ0JDUiwKPiAtCQlbU0hN T0JfRFJNX0lGQUNFX1NZUzhBXSA9IExETVQxUl9JRk0gfCBMRE1UMVJfTUlGVFlQX1NZUzhBLAo+ IC0JCVtTSE1PQl9EUk1fSUZBQ0VfU1lTOEJdID0gTERNVDFSX0lGTSB8IExETVQxUl9NSUZUWVBf U1lTOEIsCj4gLQkJW1NITU9CX0RSTV9JRkFDRV9TWVM4Q10gPSBMRE1UMVJfSUZNIHwgTERNVDFS X01JRlRZUF9TWVM4QywKPiAtCQlbU0hNT0JfRFJNX0lGQUNFX1NZUzhEXSA9IExETVQxUl9JRk0g fCBMRE1UMVJfTUlGVFlQX1NZUzhELAo+IC0JCVtTSE1PQl9EUk1fSUZBQ0VfU1lTOV0gPSBMRE1U MVJfSUZNIHwgTERNVDFSX01JRlRZUF9TWVM5LAo+IC0JCVtTSE1PQl9EUk1fSUZBQ0VfU1lTMTJd ID0gTERNVDFSX0lGTSB8IExETVQxUl9NSUZUWVBfU1lTMTIsCj4gLQkJW1NITU9CX0RSTV9JRkFD RV9TWVMxNkFdID0gTERNVDFSX0lGTSB8IExETVQxUl9NSUZUWVBfU1lTMTZBLAo+IC0JCVtTSE1P Ql9EUk1fSUZBQ0VfU1lTMTZCXSA9IExETVQxUl9JRk0gfCBMRE1UMVJfTUlGVFlQX1NZUzE2QiwK PiAtCQlbU0hNT0JfRFJNX0lGQUNFX1NZUzE2Q10gPSBMRE1UMVJfSUZNIHwgTERNVDFSX01JRlRZ UF9TWVMxNkMsCj4gLQkJW1NITU9CX0RSTV9JRkFDRV9TWVMxOF0gPSBMRE1UMVJfSUZNIHwgTERN VDFSX01JRlRZUF9TWVMxOCwKPiAtCQlbU0hNT0JfRFJNX0lGQUNFX1NZUzI0XSA9IExETVQxUl9J Rk0gfCBMRE1UMVJfTUlGVFlQX1NZUzI0LAo+IC0JfTsKPiAtCj4gLQlpZiAoc2Rldi0+cGRhdGEt PmlmYWNlLmludGVyZmFjZSA+PSBBUlJBWV9TSVpFKGxkbXQxcikpIHsKPiAtCQlkZXZfZXJyKHNk ZXYtPmRldiwgImludmFsaWQgaW50ZXJmYWNlIHR5cGUgJXVcbiIsCj4gLQkJCXNkZXYtPnBkYXRh LT5pZmFjZS5pbnRlcmZhY2UpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCXNk ZXYtPmxkbXQxciA9IGxkbXQxcltzZGV2LT5wZGF0YS0+aWZhY2UuaW50ZXJmYWNlXTsKPiAtCXJl dHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IHNobW9iX2RybV9zZXR1cF9jbG9ja3Moc3Ry dWN0IHNobW9iX2RybV9kZXZpY2UgKnNkZXYsCj4gLQkJCQkJICAgIGVudW0gc2htb2JfZHJtX2Ns a19zb3VyY2UgY2xrc3JjKQo+IC17Cj4gLQlzdHJ1Y3QgY2xrICpjbGs7Cj4gLQljaGFyICpjbGtu YW1lOwo+IC0KPiAtCXN3aXRjaCAoY2xrc3JjKSB7Cj4gLQljYXNlIFNITU9CX0RSTV9DTEtfQlVT Ogo+IC0JCWNsa25hbWUgPSAiYnVzX2NsayI7Cj4gLQkJc2Rldi0+bGRkY2tyID0gTEREQ0tSX0lD S1NFTF9CVVM7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIFNITU9CX0RSTV9DTEtfUEVSSVBIRVJBTDoK PiAtCQljbGtuYW1lID0gInBlcmlwaGVyYWxfY2xrIjsKPiAtCQlzZGV2LT5sZGRja3IgPSBMRERD S1JfSUNLU0VMX01JUEk7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIFNITU9CX0RSTV9DTEtfRVhURVJO QUw6Cj4gLQkJY2xrbmFtZSA9IE5VTEw7Cj4gLQkJc2Rldi0+bGRkY2tyID0gTEREQ0tSX0lDS1NF TF9IRE1JOwo+IC0JCWJyZWFrOwo+IC0JZGVmYXVsdDoKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAt CX0KPiAtCj4gLQljbGsgPSBkZXZtX2Nsa19nZXQoc2Rldi0+ZGV2LCBjbGtuYW1lKTsKPiAtCWlm IChJU19FUlIoY2xrKSkgewo+IC0JCWRldl9lcnIoc2Rldi0+ZGV2LCAiY2Fubm90IGdldCBkb3Qg Y2xvY2sgJXNcbiIsIGNsa25hbWUpOwo+IC0JCXJldHVybiBQVFJfRVJSKGNsayk7Cj4gLQl9Cj4g LQo+IC0Jc2Rldi0+Y2xvY2sgPSBjbGs7Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiAtICogRFJNIG9wZXJhdGlvbnMKPiAtICovCj4gLQo+IC1zdGF0 aWMgaXJxcmV0dXJuX3Qgc2htb2JfZHJtX2lycShpbnQgaXJxLCB2b2lkICphcmcpCj4gLXsKPiAt CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBhcmc7Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2Rldmlj ZSAqc2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0J dTMyIHN0YXR1czsKPiAtCj4gLQkvKiBBY2tub3dsZWRnZSBpbnRlcnJ1cHRzLiBQdXR0aW5nIGlu dGVycnVwdCBlbmFibGUgYW5kIGludGVycnVwdCBmbGFnCj4gLQkgKiBiaXRzIGluIHRoZSBzYW1l IHJlZ2lzdGVyIGlzIHJlYWxseSBicmFpbi1kZWFkIGRlc2lnbiBhbmQgcmVxdWlyZXMKPiAtCSAq IHRha2luZyBhIHNwaW5sb2NrLgo+IC0JICovCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmc2Rldi0+ aXJxX2xvY2ssIGZsYWdzKTsKPiAtCXN0YXR1cyA9IGxjZGNfcmVhZChzZGV2LCBMRElOVFIpOwo+ IC0JbGNkY193cml0ZShzZGV2LCBMRElOVFIsIHN0YXR1cyBeIExESU5UUl9TVEFUVVNfTUFTSyk7 Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZGV2LT5pcnFfbG9jaywgZmxhZ3MpOwo+IC0K PiAtCWlmIChzdGF0dXMgJiBMRElOVFJfVkVTKSB7Cj4gLQkJZHJtX2hhbmRsZV92YmxhbmsoZGV2 LCAwKTsKPiAtCQlzaG1vYl9kcm1fY3J0Y19maW5pc2hfcGFnZV9mbGlwKCZzZGV2LT5jcnRjKTsK PiAtCX0KPiAtCj4gLQlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gLX0KPiAtCj4gLURFRklORV9EUk1f R0VNX0NNQV9GT1BTKHNobW9iX2RybV9mb3BzKTsKPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgZHJtX2Ry aXZlciBzaG1vYl9kcm1fZHJpdmVyID0gewo+IC0JLmRyaXZlcl9mZWF0dXJlcwk9IERSSVZFUl9I QVZFX0lSUSB8IERSSVZFUl9HRU0gfCBEUklWRVJfTU9ERVNFVAo+IC0JCQkJfCBEUklWRVJfUFJJ TUUsCj4gLQkuaXJxX2hhbmRsZXIJCT0gc2htb2JfZHJtX2lycSwKPiAtCS5nZW1fZnJlZV9vYmpl Y3RfdW5sb2NrZWQgPSBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCwKPiAtCS5nZW1fdm1fb3BzCQk9 ICZkcm1fZ2VtX2NtYV92bV9vcHMsCj4gLQkucHJpbWVfaGFuZGxlX3RvX2ZkCT0gZHJtX2dlbV9w cmltZV9oYW5kbGVfdG9fZmQsCj4gLQkucHJpbWVfZmRfdG9faGFuZGxlCT0gZHJtX2dlbV9wcmlt ZV9mZF90b19oYW5kbGUsCj4gLQkuZ2VtX3ByaW1lX2ltcG9ydAk9IGRybV9nZW1fcHJpbWVfaW1w b3J0LAo+IC0JLmdlbV9wcmltZV9leHBvcnQJPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwKPiAtCS5n ZW1fcHJpbWVfZ2V0X3NnX3RhYmxlCT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAo+ IC0JLmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRf c2dfdGFibGUsCj4gLQkuZ2VtX3ByaW1lX3ZtYXAJCT0gZHJtX2dlbV9jbWFfcHJpbWVfdm1hcCwK PiAtCS5nZW1fcHJpbWVfdnVubWFwCT0gZHJtX2dlbV9jbWFfcHJpbWVfdnVubWFwLAo+IC0JLmdl bV9wcmltZV9tbWFwCQk9IGRybV9nZW1fY21hX3ByaW1lX21tYXAsCj4gLQkuZHVtYl9jcmVhdGUJ CT0gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUsCj4gLQkuZm9wcwkJCT0gJnNobW9iX2RybV9mb3Bz LAo+IC0JLm5hbWUJCQk9ICJzaG1vYi1kcm0iLAo+IC0JLmRlc2MJCQk9ICJSZW5lc2FzIFNIIE1v YmlsZSBEUk0iLAo+IC0JLmRhdGUJCQk9ICIyMDEyMDQyNCIsCj4gLQkubWFqb3IJCQk9IDEsCj4g LQkubWlub3IJCQk9IDAsCj4gLX07Cj4gLQo+IC0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0g KiBQb3dlciBtYW5hZ2VtZW50Cj4gLSAqLwo+IC0KPiAtI2lmZGVmIENPTkZJR19QTV9TTEVFUAo+ IC1zdGF0aWMgaW50IHNobW9iX2RybV9wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiAt ewo+IC0Jc3RydWN0IHNobW9iX2RybV9kZXZpY2UgKnNkZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKPiAtCj4gLQlkcm1fa21zX2hlbHBlcl9wb2xsX2Rpc2FibGUoc2Rldi0+ZGRldik7Cj4gLQlz aG1vYl9kcm1fY3J0Y19zdXNwZW5kKCZzZGV2LT5jcnRjKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAt fQo+IC0KPiAtc3RhdGljIGludCBzaG1vYl9kcm1fcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRl dikKPiAtewo+IC0Jc3RydWN0IHNobW9iX2RybV9kZXZpY2UgKnNkZXYgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsKPiAtCj4gLQlkcm1fbW9kZXNldF9sb2NrX2FsbChzZGV2LT5kZGV2KTsKPiAtCXNo bW9iX2RybV9jcnRjX3Jlc3VtZSgmc2Rldi0+Y3J0Yyk7Cj4gLQlkcm1fbW9kZXNldF91bmxvY2tf YWxsKHNkZXYtPmRkZXYpOwo+IC0KPiAtCWRybV9rbXNfaGVscGVyX3BvbGxfZW5hYmxlKHNkZXYt PmRkZXYpOwo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtI2VuZGlmCj4gLQo+IC1zdGF0aWMgY29uc3Qg c3RydWN0IGRldl9wbV9vcHMgc2htb2JfZHJtX3BtX29wcyA9IHsKPiAtCVNFVF9TWVNURU1fU0xF RVBfUE1fT1BTKHNobW9iX2RybV9wbV9zdXNwZW5kLCBzaG1vYl9kcm1fcG1fcmVzdW1lKQo+IC19 Owo+IC0KPiAtLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtICogUGxhdGZvcm0gZHJpdmVyCj4g LSAqLwo+IC0KPiAtc3RhdGljIGludCBzaG1vYl9kcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCj4gLXsKPiAtCXN0cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2ID0gcGxh dGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IHNk ZXYtPmRkZXY7Cj4gLQo+IC0JZHJtX2Rldl91bnJlZ2lzdGVyKGRkZXYpOwo+IC0JZHJtX2ttc19o ZWxwZXJfcG9sbF9maW5pKGRkZXYpOwo+IC0JZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZGRldik7 Cj4gLQlkcm1faXJxX3VuaW5zdGFsbChkZGV2KTsKPiAtCWRybV9kZXZfcHV0KGRkZXYpOwo+IC0K PiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IHNobW9iX2RybV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+IC17Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX3BsYXRm b3JtX2RhdGEgKnBkYXRhID0gcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7Cj4gLQlzdHJ1Y3Qgc2ht b2JfZHJtX2RldmljZSAqc2RldjsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2Owo+IC0Jc3Ry dWN0IHJlc291cmNlICpyZXM7Cj4gLQl1bnNpZ25lZCBpbnQgaTsKPiAtCWludCByZXQ7Cj4gLQo+ IC0JaWYgKHBkYXRhID09IE5VTEwpIHsKPiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJubyBwbGF0 Zm9ybSBkYXRhXG4iKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4gLQkvKgo+IC0J ICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgdGhlIGRyaXZlciBwcml2YXRlIGRhdGEsIEkvTyBy ZXNvdXJjZXMgYW5kCj4gLQkgKiBjbG9ja3MuCj4gLQkgKi8KPiAtCXNkZXYgPSBkZXZtX2t6YWxs b2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpzZGV2KSwgR0ZQX0tFUk5FTCk7Cj4gLQlpZiAoc2RldiA9 PSBOVUxMKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+IC0KPiAtCXNkZXYtPmRldiA9ICZwZGV2LT5k ZXY7Cj4gLQlzZGV2LT5wZGF0YSA9IHBkYXRhOwo+IC0Jc3Bpbl9sb2NrX2luaXQoJnNkZXYtPmly cV9sb2NrKTsKPiAtCj4gLQlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBzZGV2KTsKPiAtCj4g LQlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+ IC0Jc2Rldi0+bW1pbyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOwo+ IC0JaWYgKElTX0VSUihzZGV2LT5tbWlvKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihzZGV2LT5tbWlv KTsKPiAtCj4gLQlyZXQgPSBzaG1vYl9kcm1fc2V0dXBfY2xvY2tzKHNkZXYsIHBkYXRhLT5jbGtf c291cmNlKTsKPiAtCWlmIChyZXQgPCAwKQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JcmV0ID0g c2htb2JfZHJtX2luaXRfaW50ZXJmYWNlKHNkZXYpOwo+IC0JaWYgKHJldCA8IDApCj4gLQkJcmV0 dXJuIHJldDsKPiAtCj4gLQkvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgRFJNIGRldmlj ZS4gKi8KPiAtCWRkZXYgPSBkcm1fZGV2X2FsbG9jKCZzaG1vYl9kcm1fZHJpdmVyLCAmcGRldi0+ ZGV2KTsKPiAtCWlmIChJU19FUlIoZGRldikpCj4gLQkJcmV0dXJuIFBUUl9FUlIoZGRldik7Cj4g LQo+IC0Jc2Rldi0+ZGRldiA9IGRkZXY7Cj4gLQlkZGV2LT5kZXZfcHJpdmF0ZSA9IHNkZXY7Cj4g LQo+IC0JcmV0ID0gc2htb2JfZHJtX21vZGVzZXRfaW5pdChzZGV2KTsKPiAtCWlmIChyZXQgPCAw KSB7Cj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgbW9kZSBz ZXR0aW5nXG4iKTsKPiAtCQlnb3RvIGVycl9mcmVlX2RybV9kZXY7Cj4gLQl9Cj4gLQo+IC0JZm9y IChpID0gMDsgaSA8IDQ7ICsraSkgewo+IC0JCXJldCA9IHNobW9iX2RybV9wbGFuZV9jcmVhdGUo c2RldiwgaSk7Cj4gLQkJaWYgKHJldCA8IDApIHsKPiAtCQkJZGV2X2VycigmcGRldi0+ZGV2LCAi ZmFpbGVkIHRvIGNyZWF0ZSBwbGFuZSAldVxuIiwgaSk7Cj4gLQkJCWdvdG8gZXJyX21vZGVzZXRf Y2xlYW51cDsKPiAtCQl9Cj4gLQl9Cj4gLQo+IC0JcmV0ID0gZHJtX3ZibGFua19pbml0KGRkZXYs IDEpOwo+IC0JaWYgKHJldCA8IDApIHsKPiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQg dG8gaW5pdGlhbGl6ZSB2YmxhbmtcbiIpOwo+IC0JCWdvdG8gZXJyX21vZGVzZXRfY2xlYW51cDsK PiAtCX0KPiAtCj4gLQlyZXQgPSBkcm1faXJxX2luc3RhbGwoZGRldiwgcGxhdGZvcm1fZ2V0X2ly cShwZGV2LCAwKSk7Cj4gLQlpZiAocmV0IDwgMCkgewo+IC0JCWRldl9lcnIoJnBkZXYtPmRldiwg ImZhaWxlZCB0byBpbnN0YWxsIElSUSBoYW5kbGVyXG4iKTsKPiAtCQlnb3RvIGVycl9tb2Rlc2V0 X2NsZWFudXA7Cj4gLQl9Cj4gLQo+IC0JLyoKPiAtCSAqIFJlZ2lzdGVyIHRoZSBEUk0gZGV2aWNl IHdpdGggdGhlIGNvcmUgYW5kIHRoZSBjb25uZWN0b3JzIHdpdGgKPiAtCSAqIHN5c2ZzLgo+IC0J ICovCj4gLQlyZXQgPSBkcm1fZGV2X3JlZ2lzdGVyKGRkZXYsIDApOwo+IC0JaWYgKHJldCA8IDAp Cj4gLQkJZ290byBlcnJfaXJxX3VuaW5zdGFsbDsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtCj4gLWVy cl9pcnFfdW5pbnN0YWxsOgo+IC0JZHJtX2lycV91bmluc3RhbGwoZGRldik7Cj4gLWVycl9tb2Rl c2V0X2NsZWFudXA6Cj4gLQlkcm1fa21zX2hlbHBlcl9wb2xsX2ZpbmkoZGRldik7Cj4gLQlkcm1f bW9kZV9jb25maWdfY2xlYW51cChkZGV2KTsKPiAtZXJyX2ZyZWVfZHJtX2RldjoKPiAtCWRybV9k ZXZfcHV0KGRkZXYpOwo+IC0KPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIHNobW9iX2RybV9wbGF0Zm9ybV9kcml2ZXIgPSB7Cj4gLQkucHJv YmUJCT0gc2htb2JfZHJtX3Byb2JlLAo+IC0JLnJlbW92ZQkJPSBzaG1vYl9kcm1fcmVtb3ZlLAo+ IC0JLmRyaXZlcgkJPSB7Cj4gLQkJLm5hbWUJPSAic2htb2ItZHJtIiwKPiAtCQkucG0JPSAmc2ht b2JfZHJtX3BtX29wcywKPiAtCX0sCj4gLX07Cj4gLQo+IC1tb2R1bGVfcGxhdGZvcm1fZHJpdmVy KHNobW9iX2RybV9wbGF0Zm9ybV9kcml2ZXIpOwo+IC0KPiAtTU9EVUxFX0FVVEhPUigiTGF1cmVu dCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPiIpOwo+IC1NT0RV TEVfREVTQ1JJUFRJT04oIlJlbmVzYXMgU0ggTW9iaWxlIERSTSBEcml2ZXIiKTsKPiAtTU9EVUxF X0xJQ0VOU0UoIkdQTCIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUv c2htb2JfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9kcnYu aAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDgwZGM0YjEwMjBhYWQzODMuLjAw MDAwMDAwMDAwMDAwMDAKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvc2htb2JfZHJt X2Rydi5oCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDQxICswLDAgQEAKPiAtLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjArICovCj4gLS8qCj4gLSAqIHNobW9iX2RybS5oICAtLSAg U0ggTW9iaWxlIERSTSBkcml2ZXIKPiAtICoKPiAtICogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVz YXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KPiAtICoKPiAtICogTGF1cmVudCBQaW5jaGFydCAo bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tKQo+IC0gKi8KPiAtCj4gLSNpZm5kZWYg X19TSE1PQl9EUk1fRFJWX0hfXwo+IC0jZGVmaW5lIF9fU0hNT0JfRFJNX0RSVl9IX18KPiAtCj4g LSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rh dGEvc2htb2JfZHJtLmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgo+IC0KPiAtI2lu Y2x1ZGUgInNobW9iX2RybV9jcnRjLmgiCj4gLQo+IC1zdHJ1Y3QgY2xrOwo+IC1zdHJ1Y3QgZGV2 aWNlOwo+IC1zdHJ1Y3QgZHJtX2RldmljZTsKPiAtCj4gLXN0cnVjdCBzaG1vYl9kcm1fZGV2aWNl IHsKPiAtCXN0cnVjdCBkZXZpY2UgKmRldjsKPiAtCWNvbnN0IHN0cnVjdCBzaG1vYl9kcm1fcGxh dGZvcm1fZGF0YSAqcGRhdGE7Cj4gLQo+IC0Jdm9pZCBfX2lvbWVtICptbWlvOwo+IC0Jc3RydWN0 IGNsayAqY2xvY2s7Cj4gLQl1MzIgbGRkY2tyOwo+IC0JdTMyIGxkbXQxcjsKPiAtCj4gLQlzcGlu bG9ja190IGlycV9sb2NrOwkJLyogUHJvdGVjdHMgaGFyZHdhcmUgTERJTlRSIHJlZ2lzdGVyICov Cj4gLQo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRkZXY7Cj4gLQo+IC0Jc3RydWN0IHNobW9iX2Ry bV9jcnRjIGNydGM7Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2VuY29kZXIgZW5jb2RlcjsKPiAtCXN0 cnVjdCBzaG1vYl9kcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKPiAtfTsKPiAtCj4gLSNlbmRpZiAv KiBfX1NITU9CX0RSTV9EUlZfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9z aG1vYmlsZS9zaG1vYl9kcm1fa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvc2htb2Jf ZHJtX2ttcy5jCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggYTE3MjY4NDQ0YzZk MzIwNi4uMDAwMDAwMDAwMDAwMDAwMAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9z aG1vYl9kcm1fa21zLmMKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMTQ2ICswLDAgQEAKPiAtLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCj4gLS8qCj4gLSAqIHNobW9iX2RybV9r bXMuYyAgLS0gIFNIIE1vYmlsZSBEUk0gTW9kZSBTZXR0aW5nCj4gLSAqCj4gLSAqIENvcHlyaWdo dCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIExh dXJlbnQgUGluY2hhcnQgKGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbSkKPiAtICov Cj4gLQo+IC0jaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAtI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5o Pgo+IC0jaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+IC0jaW5jbHVkZSA8ZHJtL2Ry bV9mYl9jbWFfaGVscGVyLmg+Cj4gLSNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+ Cj4gLSNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KPiAtCj4gLSNp bmNsdWRlICJzaG1vYl9kcm1fY3J0Yy5oIgo+IC0jaW5jbHVkZSAic2htb2JfZHJtX2Rydi5oIgo+ IC0jaW5jbHVkZSAic2htb2JfZHJtX2ttcy5oIgo+IC0jaW5jbHVkZSAic2htb2JfZHJtX3JlZ3Mu aCIKPiAtCj4gLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLSAqIEZvcm1hdCBoZWxwZXJzCj4g LSAqLwo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBzaG1vYl9kcm1fZm9ybWF0X2luZm8gc2ht b2JfZHJtX2Zvcm1hdF9pbmZvc1tdID0gewo+IC0Jewo+IC0JCS5mb3VyY2MgPSBEUk1fRk9STUFU X1JHQjU2NSwKPiAtCQkuYnBwID0gMTYsCj4gLQkJLnl1diA9IGZhbHNlLAo+IC0JCS5sZGRmciA9 IExEREZSX1BLRl9SR0IxNiwKPiAtCX0sIHsKPiAtCQkuZm91cmNjID0gRFJNX0ZPUk1BVF9SR0I4 ODgsCj4gLQkJLmJwcCA9IDI0LAo+IC0JCS55dXYgPSBmYWxzZSwKPiAtCQkubGRkZnIgPSBMRERG Ul9QS0ZfUkdCMjQsCj4gLQl9LCB7Cj4gLQkJLmZvdXJjYyA9IERSTV9GT1JNQVRfQVJHQjg4ODgs Cj4gLQkJLmJwcCA9IDMyLAo+IC0JCS55dXYgPSBmYWxzZSwKPiAtCQkubGRkZnIgPSBMRERGUl9Q S0ZfQVJHQjMyLAo+IC0JfSwgewo+IC0JCS5mb3VyY2MgPSBEUk1fRk9STUFUX05WMTIsCj4gLQkJ LmJwcCA9IDEyLAo+IC0JCS55dXYgPSB0cnVlLAo+IC0JCS5sZGRmciA9IExEREZSX0NDIHwgTERE RlJfWUZfNDIwLAo+IC0JfSwgewo+IC0JCS5mb3VyY2MgPSBEUk1fRk9STUFUX05WMjEsCj4gLQkJ LmJwcCA9IDEyLAo+IC0JCS55dXYgPSB0cnVlLAo+IC0JCS5sZGRmciA9IExEREZSX0NDIHwgTERE RlJfWUZfNDIwLAo+IC0JfSwgewo+IC0JCS5mb3VyY2MgPSBEUk1fRk9STUFUX05WMTYsCj4gLQkJ LmJwcCA9IDE2LAo+IC0JCS55dXYgPSB0cnVlLAo+IC0JCS5sZGRmciA9IExEREZSX0NDIHwgTERE RlJfWUZfNDIyLAo+IC0JfSwgewo+IC0JCS5mb3VyY2MgPSBEUk1fRk9STUFUX05WNjEsCj4gLQkJ LmJwcCA9IDE2LAo+IC0JCS55dXYgPSB0cnVlLAo+IC0JCS5sZGRmciA9IExEREZSX0NDIHwgTERE RlJfWUZfNDIyLAo+IC0JfSwgewo+IC0JCS5mb3VyY2MgPSBEUk1fRk9STUFUX05WMjQsCj4gLQkJ LmJwcCA9IDI0LAo+IC0JCS55dXYgPSB0cnVlLAo+IC0JCS5sZGRmciA9IExEREZSX0NDIHwgTERE RlJfWUZfNDQ0LAo+IC0JfSwgewo+IC0JCS5mb3VyY2MgPSBEUk1fRk9STUFUX05WNDIsCj4gLQkJ LmJwcCA9IDI0LAo+IC0JCS55dXYgPSB0cnVlLAo+IC0JCS5sZGRmciA9IExEREZSX0NDIHwgTERE RlJfWUZfNDQ0LAo+IC0JfSwKPiAtfTsKPiAtCj4gLWNvbnN0IHN0cnVjdCBzaG1vYl9kcm1fZm9y bWF0X2luZm8gKnNobW9iX2RybV9mb3JtYXRfaW5mbyh1MzIgZm91cmNjKQo+IC17Cj4gLQl1bnNp Z25lZCBpbnQgaTsKPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzaG1vYl9kcm1f Zm9ybWF0X2luZm9zKTsgKytpKSB7Cj4gLQkJaWYgKHNobW9iX2RybV9mb3JtYXRfaW5mb3NbaV0u Zm91cmNjID09IGZvdXJjYykKPiAtCQkJcmV0dXJuICZzaG1vYl9kcm1fZm9ybWF0X2luZm9zW2ld Owo+IC0JfQo+IC0KPiAtCXJldHVybiBOVUxMOwo+IC19Cj4gLQo+IC0vKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+IC0gKiBGcmFtZSBidWZmZXIKPiAtICovCj4gLQo+IC1zdGF0aWMgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqCj4gLXNobW9iX2RybV9mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCj4gLQkJICAgIGNvbnN0IHN0cnVjdCBk cm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCkKPiAtewo+IC0JY29uc3Qgc3RydWN0IHNobW9iX2Ry bV9mb3JtYXRfaW5mbyAqZm9ybWF0Owo+IC0KPiAtCWZvcm1hdCA9IHNobW9iX2RybV9mb3JtYXRf aW5mbyhtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKPiAtCWlmIChmb3JtYXQgPT0gTlVMTCkgewo+ IC0JCWRldl9kYmcoZGV2LT5kZXYsICJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQgJTA4eFxuIiwK PiAtCQkJbW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCk7Cj4gLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZB TCk7Cj4gLQl9Cj4gLQo+IC0JaWYgKG1vZGVfY21kLT5waXRjaGVzWzBdICYgNyB8fCBtb2RlX2Nt ZC0+cGl0Y2hlc1swXSA+PSA2NTUzNikgewo+IC0JCWRldl9kYmcoZGV2LT5kZXYsICJpbnZhbGlk IHBpdGNoIHZhbHVlICV1XG4iLAo+IC0JCQltb2RlX2NtZC0+cGl0Y2hlc1swXSk7Cj4gLQkJcmV0 dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gLQl9Cj4gLQo+IC0JaWYgKGZvcm1hdC0+eXV2KSB7Cj4g LQkJdW5zaWduZWQgaW50IGNocm9tYV9jcHAgPSBmb3JtYXQtPmJwcCA9PSAyNCA/IDIgOiAxOwo+ IC0KPiAtCQlpZiAobW9kZV9jbWQtPnBpdGNoZXNbMV0gIT0gbW9kZV9jbWQtPnBpdGNoZXNbMF0g KiBjaHJvbWFfY3BwKSB7Cj4gLQkJCWRldl9kYmcoZGV2LT5kZXYsCj4gLQkJCQkibHVtYSBhbmQg Y2hyb21hIHBpdGNoZXMgZG8gbm90IG1hdGNoXG4iKTsKPiAtCQkJcmV0dXJuIEVSUl9QVFIoLUVJ TlZBTCk7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCXJldHVybiBkcm1fZ2VtX2ZiX2NyZWF0ZShkZXYs IGZpbGVfcHJpdiwgbW9kZV9jbWQpOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9tb2RlX2NvbmZpZ19mdW5jcyBzaG1vYl9kcm1fbW9kZV9jb25maWdfZnVuY3MgPSB7Cj4gLQku ZmJfY3JlYXRlID0gc2htb2JfZHJtX2ZiX2NyZWF0ZSwKPiAtfTsKPiAtCj4gLWludCBzaG1vYl9k cm1fbW9kZXNldF9pbml0KHN0cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2KQo+IC17Cj4gLQlk cm1fbW9kZV9jb25maWdfaW5pdChzZGV2LT5kZGV2KTsKPiAtCj4gLQlzaG1vYl9kcm1fY3J0Y19j cmVhdGUoc2Rldik7Cj4gLQlzaG1vYl9kcm1fZW5jb2Rlcl9jcmVhdGUoc2Rldik7Cj4gLQlzaG1v Yl9kcm1fY29ubmVjdG9yX2NyZWF0ZShzZGV2LCAmc2Rldi0+ZW5jb2Rlci5lbmNvZGVyKTsKPiAt Cj4gLQlkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoc2Rldi0+ZGRldik7Cj4gLQo+IC0Jc2Rldi0+ ZGRldi0+bW9kZV9jb25maWcubWluX3dpZHRoID0gMDsKPiAtCXNkZXYtPmRkZXYtPm1vZGVfY29u ZmlnLm1pbl9oZWlnaHQgPSAwOwo+IC0Jc2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWF4X3dpZHRo ID0gNDA5NTsKPiAtCXNkZXYtPmRkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSA0MDk1Owo+ IC0Jc2Rldi0+ZGRldi0+bW9kZV9jb25maWcuZnVuY3MgPSAmc2htb2JfZHJtX21vZGVfY29uZmln X2Z1bmNzOwo+IC0KPiAtCWRybV9oZWxwZXJfZGlzYWJsZV91bnVzZWRfZnVuY3Rpb25zKHNkZXYt PmRkZXYpOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUv c2htb2JfZHJtX2ttcy5oCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggNmVjMmI3 MzJiYjk0OTg4Mi4uMDAwMDAwMDAwMDAwMDAwMAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zaG1v YmlsZS9zaG1vYl9kcm1fa21zLmgKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMjkgKzAsMCBAQAo+ IC0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8KPiAtLyoKPiAtICogc2ht b2JfZHJtX2ttcy5oICAtLSAgU0ggTW9iaWxlIERSTSBNb2RlIFNldHRpbmcKPiAtICoKPiAtICog Q29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KPiAtICoK PiAtICogTGF1cmVudCBQaW5jaGFydCAobGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29t KQo+IC0gKi8KPiAtCj4gLSNpZm5kZWYgX19TSE1PQl9EUk1fS01TX0hfXwo+IC0jZGVmaW5lIF9f U0hNT0JfRFJNX0tNU19IX18KPiAtCj4gLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+IC0KPiAt c3RydWN0IGRybV9nZW1fY21hX29iamVjdDsKPiAtc3RydWN0IHNobW9iX2RybV9kZXZpY2U7Cj4g LQo+IC1zdHJ1Y3Qgc2htb2JfZHJtX2Zvcm1hdF9pbmZvIHsKPiAtCXUzMiBmb3VyY2M7Cj4gLQl1 bnNpZ25lZCBpbnQgYnBwOwo+IC0JYm9vbCB5dXY7Cj4gLQl1MzIgbGRkZnI7Cj4gLX07Cj4gLQo+ IC1jb25zdCBzdHJ1Y3Qgc2htb2JfZHJtX2Zvcm1hdF9pbmZvICpzaG1vYl9kcm1fZm9ybWF0X2lu Zm8odTMyIGZvdXJjYyk7Cj4gLQo+IC1pbnQgc2htb2JfZHJtX21vZGVzZXRfaW5pdChzdHJ1Y3Qg c2htb2JfZHJtX2RldmljZSAqc2Rldik7Cj4gLQo+IC0jZW5kaWYgLyogX19TSE1PQl9EUk1fS01T X0hfXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvc2htb2JfZHJt X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vc2htb2JpbGUvc2htb2JfZHJtX3BsYW5lLmMKPiBk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAxZDFlZTVlNTEzNTE5NzAzLi4wMDAwMDAw MDAwMDAwMDAwCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9wbGFu ZS5jCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDI1OSArMCwwIEBACj4gLS8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wKwo+IC0vKgo+IC0gKiBzaG1vYl9kcm1fcGxhbmUuYyAgLS0g IFNIIE1vYmlsZSBEUk0gUGxhbmVzCj4gLSAqCj4gLSAqIENvcHlyaWdodCAoQykgMjAxMiBSZW5l c2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIExhdXJlbnQgUGluY2hhcnQg KGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbSkKPiAtICovCj4gLQo+IC0jaW5jbHVk ZSA8ZHJtL2RybVAuaD4KPiAtI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+IC0jaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+IC0jaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVy Lmg+Cj4gLSNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4gLQo+IC0jaW5jbHVk ZSAic2htb2JfZHJtX2Rydi5oIgo+IC0jaW5jbHVkZSAic2htb2JfZHJtX2ttcy5oIgo+IC0jaW5j bHVkZSAic2htb2JfZHJtX3BsYW5lLmgiCj4gLSNpbmNsdWRlICJzaG1vYl9kcm1fcmVncy5oIgo+ IC0KPiAtc3RydWN0IHNobW9iX2RybV9wbGFuZSB7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lIHBsYW5l Owo+IC0JdW5zaWduZWQgaW50IGluZGV4Owo+IC0JdW5zaWduZWQgaW50IGFscGhhOwo+IC0KPiAt CWNvbnN0IHN0cnVjdCBzaG1vYl9kcm1fZm9ybWF0X2luZm8gKmZvcm1hdDsKPiAtCXVuc2lnbmVk IGxvbmcgZG1hWzJdOwo+IC0KPiAtCXVuc2lnbmVkIGludCBzcmNfeDsKPiAtCXVuc2lnbmVkIGlu dCBzcmNfeTsKPiAtCXVuc2lnbmVkIGludCBjcnRjX3g7Cj4gLQl1bnNpZ25lZCBpbnQgY3J0Y195 Owo+IC0JdW5zaWduZWQgaW50IGNydGNfdzsKPiAtCXVuc2lnbmVkIGludCBjcnRjX2g7Cj4gLX07 Cj4gLQo+IC0jZGVmaW5lIHRvX3NobW9iX3BsYW5lKHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1Y3Qg c2htb2JfZHJtX3BsYW5lLCBwbGFuZSkKPiAtCj4gLXN0YXRpYyB2b2lkIHNobW9iX2RybV9wbGFu ZV9jb21wdXRlX2Jhc2Uoc3RydWN0IHNobW9iX2RybV9wbGFuZSAqc3BsYW5lLAo+IC0JCQkJCSBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAtCQkJCQkgaW50IHgsIGludCB5KQo+IC17Cj4g LQlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpnZW07Cj4gLQl1bnNpZ25lZCBpbnQgYnBwOwo+ IC0KPiAtCWJwcCA9IHNwbGFuZS0+Zm9ybWF0LT55dXYgPyA4IDogc3BsYW5lLT5mb3JtYXQtPmJw cDsKPiAtCWdlbSA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIDApOwo+IC0Jc3BsYW5lLT5k bWFbMF0gPSBnZW0tPnBhZGRyICsgZmItPm9mZnNldHNbMF0KPiAtCQkgICAgICAgKyB5ICogZmIt PnBpdGNoZXNbMF0gKyB4ICogYnBwIC8gODsKPiAtCj4gLQlpZiAoc3BsYW5lLT5mb3JtYXQtPnl1 dikgewo+IC0JCWJwcCA9IHNwbGFuZS0+Zm9ybWF0LT5icHAgLSA4Owo+IC0JCWdlbSA9IGRybV9m Yl9jbWFfZ2V0X2dlbV9vYmooZmIsIDEpOwo+IC0JCXNwbGFuZS0+ZG1hWzFdID0gZ2VtLT5wYWRk ciArIGZiLT5vZmZzZXRzWzFdCj4gLQkJCSAgICAgICArIHkgLyAoYnBwID09IDQgPyAyIDogMSkg KiBmYi0+cGl0Y2hlc1sxXQo+IC0JCQkgICAgICAgKyB4ICogKGJwcCA9PSAxNiA/IDIgOiAxKTsK PiAtCX0KPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgX19zaG1vYl9kcm1fcGxhbmVfc2V0dXAoc3Ry dWN0IHNobW9iX2RybV9wbGFuZSAqc3BsYW5lLAo+IC0JCQkJICAgIHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiKQo+IC17Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2RldmljZSAqc2RldiA9IHNwbGFu ZS0+cGxhbmUuZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXUzMiBmb3JtYXQ7Cj4gLQo+IC0JLyogVE9E TzogU3VwcG9ydCBST1AzIG1vZGUgKi8KPiAtCWZvcm1hdCA9IExEQkJTSUZSX0VOIHwgKHNwbGFu ZS0+YWxwaGEgPDwgTERCQlNJRlJfTEFZX1NISUZUKTsKPiAtCj4gLQlzd2l0Y2ggKHNwbGFuZS0+ Zm9ybWF0LT5mb3VyY2MpIHsKPiAtCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4gLQljYXNlIERS TV9GT1JNQVRfTlYyMToKPiAtCWNhc2UgRFJNX0ZPUk1BVF9OVjYxOgo+IC0JY2FzZSBEUk1fRk9S TUFUX05WNDI6Cj4gLQkJZm9ybWF0IHw9IExEQkJTSUZSX1NXUEwgfCBMREJCU0lGUl9TV1BXOwo+ IC0JCWJyZWFrOwo+IC0JY2FzZSBEUk1fRk9STUFUX1JHQjg4ODoKPiAtCWNhc2UgRFJNX0ZPUk1B VF9OVjEyOgo+IC0JY2FzZSBEUk1fRk9STUFUX05WMTY6Cj4gLQljYXNlIERSTV9GT1JNQVRfTlYy NDoKPiAtCQlmb3JtYXQgfD0gTERCQlNJRlJfU1dQTCB8IExEQkJTSUZSX1NXUFcgfCBMREJCU0lG Ul9TV1BCOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+IC0JZGVm YXVsdDoKPiAtCQlmb3JtYXQgfD0gTERCQlNJRlJfU1dQTDsKPiAtCQlicmVhazsKPiAtCX0KPiAt Cj4gLQlzd2l0Y2ggKHNwbGFuZS0+Zm9ybWF0LT5mb3VyY2MpIHsKPiAtCWNhc2UgRFJNX0ZPUk1B VF9SR0I1NjU6Cj4gLQkJZm9ybWF0IHw9IExEQkJTSUZSX0FMXzEgfCBMREJCU0lGUl9SWSB8IExE QkJTSUZSX1JQS0ZfUkdCMTY7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIERSTV9GT1JNQVRfUkdCODg4 Ogo+IC0JCWZvcm1hdCB8PSBMREJCU0lGUl9BTF8xIHwgTERCQlNJRlJfUlkgfCBMREJCU0lGUl9S UEtGX1JHQjI0Owo+IC0JCWJyZWFrOwo+IC0JY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+IC0J CWZvcm1hdCB8PSBMREJCU0lGUl9BTF9QSyB8IExEQkJTSUZSX1JZIHwgTERERlJfUEtGX0FSR0Iz MjsKPiAtCQlicmVhazsKPiAtCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+IC0JY2FzZSBEUk1fRk9S TUFUX05WMjE6Cj4gLQkJZm9ybWF0IHw9IExEQkJTSUZSX0FMXzEgfCBMREJCU0lGUl9DSFJSXzQy MDsKPiAtCQlicmVhazsKPiAtCWNhc2UgRFJNX0ZPUk1BVF9OVjE2Ogo+IC0JY2FzZSBEUk1fRk9S TUFUX05WNjE6Cj4gLQkJZm9ybWF0IHw9IExEQkJTSUZSX0FMXzEgfCBMREJCU0lGUl9DSFJSXzQy MjsKPiAtCQlicmVhazsKPiAtCWNhc2UgRFJNX0ZPUk1BVF9OVjI0Ogo+IC0JY2FzZSBEUk1fRk9S TUFUX05WNDI6Cj4gLQkJZm9ybWF0IHw9IExEQkJTSUZSX0FMXzEgfCBMREJCU0lGUl9DSFJSXzQ0 NDsKPiAtCQlicmVhazsKPiAtCX0KPiAtCj4gLSNkZWZpbmUgcGxhbmVfcmVnX2R1bXAoc2Rldiwg c3BsYW5lLCByZWcpIFwKPiAtCWRldl9kYmcoc2Rldi0+ZGRldi0+ZGV2LCAiJXMoJXUpOiAlcyAw eCUwOHggMHglMDh4XG4iLCBfX2Z1bmNfXywgXAo+IC0JCXNwbGFuZS0+aW5kZXgsICNyZWcsIFwK PiAtCQlsY2RjX3JlYWQoc2RldiwgcmVnKHNwbGFuZS0+aW5kZXgpKSwgXAo+IC0JCWxjZGNfcmVh ZChzZGV2LCByZWcoc3BsYW5lLT5pbmRleCkgKyBMQ0RDX1NJREVfQl9PRkZTRVQpKQo+IC0KPiAt CXBsYW5lX3JlZ19kdW1wKHNkZXYsIHNwbGFuZSwgTERCbkJTSUZSKTsKPiAtCXBsYW5lX3JlZ19k dW1wKHNkZXYsIHNwbGFuZSwgTERCbkJTU1pSKTsKPiAtCXBsYW5lX3JlZ19kdW1wKHNkZXYsIHNw bGFuZSwgTERCbkJMT0NSKTsKPiAtCXBsYW5lX3JlZ19kdW1wKHNkZXYsIHNwbGFuZSwgTERCbkJT TVdSKTsKPiAtCXBsYW5lX3JlZ19kdW1wKHNkZXYsIHNwbGFuZSwgTERCbkJTQVlSKTsKPiAtCXBs YW5lX3JlZ19kdW1wKHNkZXYsIHNwbGFuZSwgTERCbkJTQUNSKTsKPiAtCj4gLQlsY2RjX3dyaXRl KHNkZXYsIExEQkNSLCBMREJDUl9VUEMoc3BsYW5lLT5pbmRleCkpOwo+IC0JZGV2X2RiZyhzZGV2 LT5kZGV2LT5kZXYsICIlcygldSk6ICVzIDB4JTA4eFxuIiwgX19mdW5jX18sIHNwbGFuZS0+aW5k ZXgsCj4gLQkJIkxEQkNSIiwgbGNkY19yZWFkKHNkZXYsIExEQkNSKSk7Cj4gLQo+IC0JbGNkY193 cml0ZShzZGV2LCBMREJuQlNJRlIoc3BsYW5lLT5pbmRleCksIGZvcm1hdCk7Cj4gLQo+IC0JbGNk Y193cml0ZShzZGV2LCBMREJuQlNTWlIoc3BsYW5lLT5pbmRleCksCj4gLQkJICAgKHNwbGFuZS0+ Y3J0Y19oIDw8IExEQkJTU1pSX0JWU1NfU0hJRlQpIHwKPiAtCQkgICAoc3BsYW5lLT5jcnRjX3cg PDwgTERCQlNTWlJfQkhTU19TSElGVCkpOwo+IC0JbGNkY193cml0ZShzZGV2LCBMREJuQkxPQ1Io c3BsYW5lLT5pbmRleCksCj4gLQkJICAgKHNwbGFuZS0+Y3J0Y195IDw8IExEQkJMT0NSX0NWTENf U0hJRlQpIHwKPiAtCQkgICAoc3BsYW5lLT5jcnRjX3ggPDwgTERCQkxPQ1JfQ0hMQ19TSElGVCkp Owo+IC0JbGNkY193cml0ZShzZGV2LCBMREJuQlNNV1Ioc3BsYW5lLT5pbmRleCksCj4gLQkJICAg ZmItPnBpdGNoZXNbMF0gPDwgTERCQlNNV1JfQlNNV19TSElGVCk7Cj4gLQo+IC0Jc2htb2JfZHJt X3BsYW5lX2NvbXB1dGVfYmFzZShzcGxhbmUsIGZiLCBzcGxhbmUtPnNyY194LCBzcGxhbmUtPnNy Y195KTsKPiAtCj4gLQlsY2RjX3dyaXRlKHNkZXYsIExEQm5CU0FZUihzcGxhbmUtPmluZGV4KSwg c3BsYW5lLT5kbWFbMF0pOwo+IC0JaWYgKHNwbGFuZS0+Zm9ybWF0LT55dXYpCj4gLQkJbGNkY193 cml0ZShzZGV2LCBMREJuQlNBQ1Ioc3BsYW5lLT5pbmRleCksIHNwbGFuZS0+ZG1hWzFdKTsKPiAt Cj4gLQlsY2RjX3dyaXRlKHNkZXYsIExEQkNSLAo+IC0JCSAgIExEQkNSX1VQRihzcGxhbmUtPmlu ZGV4KSB8IExEQkNSX1VQRChzcGxhbmUtPmluZGV4KSk7Cj4gLQlkZXZfZGJnKHNkZXYtPmRkZXYt PmRldiwgIiVzKCV1KTogJXMgMHglMDh4XG4iLCBfX2Z1bmNfXywgc3BsYW5lLT5pbmRleCwKPiAt CQkiTERCQ1IiLCBsY2RjX3JlYWQoc2RldiwgTERCQ1IpKTsKPiAtCj4gLQlwbGFuZV9yZWdfZHVt cChzZGV2LCBzcGxhbmUsIExEQm5CU0lGUik7Cj4gLQlwbGFuZV9yZWdfZHVtcChzZGV2LCBzcGxh bmUsIExEQm5CU1NaUik7Cj4gLQlwbGFuZV9yZWdfZHVtcChzZGV2LCBzcGxhbmUsIExEQm5CTE9D Uik7Cj4gLQlwbGFuZV9yZWdfZHVtcChzZGV2LCBzcGxhbmUsIExEQm5CU01XUik7Cj4gLQlwbGFu ZV9yZWdfZHVtcChzZGV2LCBzcGxhbmUsIExEQm5CU0FZUik7Cj4gLQlwbGFuZV9yZWdfZHVtcChz ZGV2LCBzcGxhbmUsIExEQm5CU0FDUik7Cj4gLX0KPiAtCj4gLXZvaWQgc2htb2JfZHJtX3BsYW5l X3NldHVwKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+IC17Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJt X3BsYW5lICpzcGxhbmUgPSB0b19zaG1vYl9wbGFuZShwbGFuZSk7Cj4gLQo+IC0JaWYgKHBsYW5l LT5mYiA9PSBOVUxMKQo+IC0JCXJldHVybjsKPiAtCj4gLQlfX3NobW9iX2RybV9wbGFuZV9zZXR1 cChzcGxhbmUsIHBsYW5lLT5mYik7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQKPiAtc2htb2JfZHJt X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjLAo+IC0JCSAgICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNydGNfeCwg aW50IGNydGNfeSwKPiAtCQkgICAgICAgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50 IGNydGNfaCwKPiAtCQkgICAgICAgdWludDMyX3Qgc3JjX3gsIHVpbnQzMl90IHNyY195LAo+IC0J CSAgICAgICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gsCj4gLQkJICAgICAgIHN0cnVj dCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KQo+IC17Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJt X3BsYW5lICpzcGxhbmUgPSB0b19zaG1vYl9wbGFuZShwbGFuZSk7Cj4gLQlzdHJ1Y3Qgc2htb2Jf ZHJtX2RldmljZSAqc2RldiA9IHBsYW5lLT5kZXYtPmRldl9wcml2YXRlOwo+IC0JY29uc3Qgc3Ry dWN0IHNobW9iX2RybV9mb3JtYXRfaW5mbyAqZm9ybWF0Owo+IC0KPiAtCWZvcm1hdCA9IHNobW9i X2RybV9mb3JtYXRfaW5mbyhmYi0+Zm9ybWF0LT5mb3JtYXQpOwo+IC0JaWYgKGZvcm1hdCA9PSBO VUxMKSB7Cj4gLQkJZGV2X2RiZyhzZGV2LT5kZXYsICJ1cGRhdGVfcGxhbmU6IHVuc3VwcG9ydGVk IGZvcm1hdCAlMDh4XG4iLAo+IC0JCQlmYi0+Zm9ybWF0LT5mb3JtYXQpOwo+IC0JCXJldHVybiAt RUlOVkFMOwo+IC0JfQo+IC0KPiAtCWlmIChzcmNfdyA+PiAxNiAhPSBjcnRjX3cgfHwgc3JjX2gg Pj4gMTYgIT0gY3J0Y19oKSB7Cj4gLQkJZGV2X2RiZyhzZGV2LT5kZXYsICIlczogc2NhbGluZyBu b3Qgc3VwcG9ydGVkXG4iLCBfX2Z1bmNfXyk7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4g LQo+IC0Jc3BsYW5lLT5mb3JtYXQgPSBmb3JtYXQ7Cj4gLQo+IC0Jc3BsYW5lLT5zcmNfeCA9IHNy Y194ID4+IDE2Owo+IC0Jc3BsYW5lLT5zcmNfeSA9IHNyY195ID4+IDE2Owo+IC0Jc3BsYW5lLT5j cnRjX3ggPSBjcnRjX3g7Cj4gLQlzcGxhbmUtPmNydGNfeSA9IGNydGNfeTsKPiAtCXNwbGFuZS0+ Y3J0Y193ID0gY3J0Y193Owo+IC0Jc3BsYW5lLT5jcnRjX2ggPSBjcnRjX2g7Cj4gLQo+IC0JX19z aG1vYl9kcm1fcGxhbmVfc2V0dXAoc3BsYW5lLCBmYik7Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0K PiAtc3RhdGljIGludCBzaG1vYl9kcm1fcGxhbmVfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKPiAtCQkJCSAgIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KQo+IC17 Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX3BsYW5lICpzcGxhbmUgPSB0b19zaG1vYl9wbGFuZShwbGFu ZSk7Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX2RldmljZSAqc2RldiA9IHBsYW5lLT5kZXYtPmRldl9w cml2YXRlOwo+IC0KPiAtCXNwbGFuZS0+Zm9ybWF0ID0gTlVMTDsKPiAtCj4gLQlsY2RjX3dyaXRl KHNkZXYsIExEQm5CU0lGUihzcGxhbmUtPmluZGV4KSwgMCk7Cj4gLQlyZXR1cm4gMDsKPiAtfQo+ IC0KPiAtc3RhdGljIHZvaWQgc2htb2JfZHJtX3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUpCj4gLXsKPiAtCWRybV9wbGFuZV9mb3JjZV9kaXNhYmxlKHBsYW5lKTsKPiAtCWRy bV9wbGFuZV9jbGVhbnVwKHBsYW5lKTsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfZnVuY3Mgc2htb2JfZHJtX3BsYW5lX2Z1bmNzID0gewo+IC0JLnVwZGF0ZV9wbGFu ZSA9IHNobW9iX2RybV9wbGFuZV91cGRhdGUsCj4gLQkuZGlzYWJsZV9wbGFuZSA9IHNobW9iX2Ry bV9wbGFuZV9kaXNhYmxlLAo+IC0JLmRlc3Ryb3kgPSBzaG1vYl9kcm1fcGxhbmVfZGVzdHJveSwK PiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCB1aW50MzJfdCBmb3JtYXRzW10gPSB7Cj4gLQlEUk1f Rk9STUFUX1JHQjU2NSwKPiAtCURSTV9GT1JNQVRfUkdCODg4LAo+IC0JRFJNX0ZPUk1BVF9BUkdC ODg4OCwKPiAtCURSTV9GT1JNQVRfTlYxMiwKPiAtCURSTV9GT1JNQVRfTlYyMSwKPiAtCURSTV9G T1JNQVRfTlYxNiwKPiAtCURSTV9GT1JNQVRfTlY2MSwKPiAtCURSTV9GT1JNQVRfTlYyNCwKPiAt CURSTV9GT1JNQVRfTlY0MiwKPiAtfTsKPiAtCj4gLWludCBzaG1vYl9kcm1fcGxhbmVfY3JlYXRl KHN0cnVjdCBzaG1vYl9kcm1fZGV2aWNlICpzZGV2LCB1bnNpZ25lZCBpbnQgaW5kZXgpCj4gLXsK PiAtCXN0cnVjdCBzaG1vYl9kcm1fcGxhbmUgKnNwbGFuZTsKPiAtCWludCByZXQ7Cj4gLQo+IC0J c3BsYW5lID0gZGV2bV9remFsbG9jKHNkZXYtPmRldiwgc2l6ZW9mKCpzcGxhbmUpLCBHRlBfS0VS TkVMKTsKPiAtCWlmIChzcGxhbmUgPT0gTlVMTCkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiAtCj4g LQlzcGxhbmUtPmluZGV4ID0gaW5kZXg7Cj4gLQlzcGxhbmUtPmFscGhhID0gMjU1Owo+IC0KPiAt CXJldCA9IGRybV9wbGFuZV9pbml0KHNkZXYtPmRkZXYsICZzcGxhbmUtPnBsYW5lLCAxLAo+IC0J CQkgICAgICZzaG1vYl9kcm1fcGxhbmVfZnVuY3MsIGZvcm1hdHMsCj4gLQkJCSAgICAgQVJSQVlf U0laRShmb3JtYXRzKSwgZmFsc2UpOwo+IC0KPiAtCXJldHVybiByZXQ7Cj4gLX0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9wbGFuZS5oIGIvZHJpdmVy cy9ncHUvZHJtL3NobW9iaWxlL3NobW9iX2RybV9wbGFuZS5oCj4gZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggYmFlNjdjYzhjNjI4NTBlYy4uMDAwMDAwMDAwMDAwMDAwMAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9zaG1vYl9kcm1fcGxhbmUuaAo+ICsrKyAvZGV2L251 bGwKPiBAQCAtMSwxOCArMCwwIEBACj4gLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wKyAqLwo+IC0vKgo+IC0gKiBzaG1vYl9kcm1fcGxhbmUuaCAgLS0gIFNIIE1vYmlsZSBEUk0g UGxhbmVzCj4gLSAqCj4gLSAqIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNz IENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIExhdXJlbnQgUGluY2hhcnQgKGxhdXJlbnQucGluY2hh cnRAaWRlYXNvbmJvYXJkLmNvbSkKPiAtICovCj4gLQo+IC0jaWZuZGVmIF9fU0hNT0JfRFJNX1BM QU5FX0hfXwo+IC0jZGVmaW5lIF9fU0hNT0JfRFJNX1BMQU5FX0hfXwo+IC0KPiAtc3RydWN0IHNo bW9iX2RybV9kZXZpY2U7Cj4gLQo+IC1pbnQgc2htb2JfZHJtX3BsYW5lX2NyZWF0ZShzdHJ1Y3Qg c2htb2JfZHJtX2RldmljZSAqc2RldiwgdW5zaWduZWQgaW50IGluZGV4KTsKPiAtdm9pZCBzaG1v Yl9kcm1fcGxhbmVfc2V0dXAoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpOwo+IC0KPiAtI2VuZGlm IC8qIF9fU0hNT0JfRFJNX1BMQU5FX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vc2htb2JpbGUvc2htb2JfZHJtX3JlZ3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9zaG1vYmlsZS9z aG1vYl9kcm1fcmVncy5oCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggOWViMGIz ZDAxZGY4MDc5Yi4uMDAwMDAwMDAwMDAwMDAwMAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zaG1v YmlsZS9zaG1vYl9kcm1fcmVncy5oCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDMwNyArMCwwIEBA Cj4gLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyAqLwo+IC0vKgo+IC0gKiBz aG1vYl9kcm1fcmVncy5oICAtLSAgU0ggTW9iaWxlIERSTSByZWdpc3RlcnMKPiAtICoKPiAtICog Q29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KPiAtICoK PiAtICogTGF1cmVudCBQaW5jaGFydCAobGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29t KQo+IC0gKi8KPiAtCj4gLSNpZm5kZWYgX19TSE1PQl9EUk1fUkVHU19IX18KPiAtI2RlZmluZSBf X1NITU9CX0RSTV9SRUdTX0hfXwo+IC0KPiAtI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gLQo+IC0v KiBSZWdpc3RlciBkZWZpbml0aW9ucyAqLwo+IC0jZGVmaW5lIExERENLUEFUMVIJCTB4NDAwCj4g LSNkZWZpbmUgTEREQ0tQQVQyUgkJMHg0MDQKPiAtI2RlZmluZSBMRERDS1IJCQkweDQxMAo+IC0j ZGVmaW5lIExERENLUl9JQ0tTRUxfQlVTCSgwIDw8IDE2KQo+IC0jZGVmaW5lIExERENLUl9JQ0tT RUxfTUlQSQkoMSA8PCAxNikKPiAtI2RlZmluZSBMRERDS1JfSUNLU0VMX0hETUkJKDIgPDwgMTYp Cj4gLSNkZWZpbmUgTEREQ0tSX0lDS1NFTF9FWFQJKDMgPDwgMTYpCj4gLSNkZWZpbmUgTEREQ0tS X0lDS1NFTF9NQVNLCSg3IDw8IDE2KQo+IC0jZGVmaW5lIExERENLUl9NT1NFTAkJKDEgPDwgNikK PiAtI2RlZmluZSBMRERDS1NUUFIJCTB4NDE0Cj4gLSNkZWZpbmUgTEREQ0tTVFBSX0RDS1NUUwko MSA8PCAxNikKPiAtI2RlZmluZSBMRERDS1NUUFJfRENLU1RQCSgxIDw8IDApCj4gLSNkZWZpbmUg TERNVDFSCQkJMHg0MTgKPiAtI2RlZmluZSBMRE1UMVJfVlBPTAkJKDEgPDwgMjgpCj4gLSNkZWZp bmUgTERNVDFSX0hQT0wJCSgxIDw8IDI3KQo+IC0jZGVmaW5lIExETVQxUl9EV1BPTAkJKDEgPDwg MjYpCj4gLSNkZWZpbmUgTERNVDFSX0RJUE9MCQkoMSA8PCAyNSkKPiAtI2RlZmluZSBMRE1UMVJf REFQT0wJCSgxIDw8IDI0KQo+IC0jZGVmaW5lIExETVQxUl9IU0NOVAkJKDEgPDwgMTcpCj4gLSNk ZWZpbmUgTERNVDFSX0RXQ05UCQkoMSA8PCAxNikKPiAtI2RlZmluZSBMRE1UMVJfSUZNCQkoMSA8 PCAxMikKPiAtI2RlZmluZSBMRE1UMVJfTUlGVFlQX1JHQjgJKDB4MCA8PCAwKQo+IC0jZGVmaW5l IExETVQxUl9NSUZUWVBfUkdCOQkoMHg0IDw8IDApCj4gLSNkZWZpbmUgTERNVDFSX01JRlRZUF9S R0IxMkEJKDB4NSA8PCAwKQo+IC0jZGVmaW5lIExETVQxUl9NSUZUWVBfUkdCMTJCCSgweDYgPDwg MCkKPiAtI2RlZmluZSBMRE1UMVJfTUlGVFlQX1JHQjE2CSgweDcgPDwgMCkKPiAtI2RlZmluZSBM RE1UMVJfTUlGVFlQX1JHQjE4CSgweGEgPDwgMCkKPiAtI2RlZmluZSBMRE1UMVJfTUlGVFlQX1JH QjI0CSgweGIgPDwgMCkKPiAtI2RlZmluZSBMRE1UMVJfTUlGVFlQX1lDQkNSCSgweGYgPDwgMCkK PiAtI2RlZmluZSBMRE1UMVJfTUlGVFlQX1NZUzhBCSgweDAgPDwgMCkKPiAtI2RlZmluZSBMRE1U MVJfTUlGVFlQX1NZUzhCCSgweDEgPDwgMCkKPiAtI2RlZmluZSBMRE1UMVJfTUlGVFlQX1NZUzhD CSgweDIgPDwgMCkKPiAtI2RlZmluZSBMRE1UMVJfTUlGVFlQX1NZUzhECSgweDMgPDwgMCkKPiAt I2RlZmluZSBMRE1UMVJfTUlGVFlQX1NZUzkJKDB4NCA8PCAwKQo+IC0jZGVmaW5lIExETVQxUl9N SUZUWVBfU1lTMTIJKDB4NSA8PCAwKQo+IC0jZGVmaW5lIExETVQxUl9NSUZUWVBfU1lTMTZBCSgw eDcgPDwgMCkKPiAtI2RlZmluZSBMRE1UMVJfTUlGVFlQX1NZUzE2QgkoMHg4IDw8IDApCj4gLSNk ZWZpbmUgTERNVDFSX01JRlRZUF9TWVMxNkMJKDB4OSA8PCAwKQo+IC0jZGVmaW5lIExETVQxUl9N SUZUWVBfU1lTMTgJKDB4YSA8PCAwKQo+IC0jZGVmaW5lIExETVQxUl9NSUZUWVBfU1lTMjQJKDB4 YiA8PCAwKQo+IC0jZGVmaW5lIExETVQxUl9NSUZUWVBfTUFTSwkoMHhmIDw8IDApCj4gLSNkZWZp bmUgTERNVDJSCQkJMHg0MWMKPiAtI2RlZmluZSBMRE1UMlJfQ1NVUF9NQVNLCSg3IDw8IDI2KQo+ IC0jZGVmaW5lIExETVQyUl9DU1VQX1NISUZUCTI2Cj4gLSNkZWZpbmUgTERNVDJSX1JTVgkJKDEg PDwgMjUpCj4gLSNkZWZpbmUgTERNVDJSX1ZTRUwJCSgxIDw8IDI0KQo+IC0jZGVmaW5lIExETVQy Ul9XQ1NDX01BU0sJKDB4ZmYgPDwgMTYpCj4gLSNkZWZpbmUgTERNVDJSX1dDU0NfU0hJRlQJMTYK PiAtI2RlZmluZSBMRE1UMlJfV0NFQ19NQVNLCSgweGZmIDw8IDgpCj4gLSNkZWZpbmUgTERNVDJS X1dDRUNfU0hJRlQJOAo+IC0jZGVmaW5lIExETVQyUl9XQ0xXX01BU0sJKDB4ZmYgPDwgMCkKPiAt I2RlZmluZSBMRE1UMlJfV0NMV19TSElGVAkwCj4gLSNkZWZpbmUgTERNVDNSCQkJMHg0MjAKPiAt I2RlZmluZSBMRE1UM1JfUkRMQ19NQVNLCSgweDNmIDw8IDI0KQo+IC0jZGVmaW5lIExETVQzUl9S RExDX1NISUZUCTI0Cj4gLSNkZWZpbmUgTERNVDNSX1JDU0NfTUFTSwkoMHhmZiA8PCAxNikKPiAt I2RlZmluZSBMRE1UM1JfUkNTQ19TSElGVAkxNgo+IC0jZGVmaW5lIExETVQzUl9SQ0VDX01BU0sJ KDB4ZmYgPDwgOCkKPiAtI2RlZmluZSBMRE1UM1JfUkNFQ19TSElGVAk4Cj4gLSNkZWZpbmUgTERN VDNSX1JDTFdfTUFTSwkoMHhmZiA8PCAwKQo+IC0jZGVmaW5lIExETVQzUl9SQ0xXX1NISUZUCTAK PiAtI2RlZmluZSBMRERGUgkJCTB4NDI0Cj4gLSNkZWZpbmUgTERERlJfQ0YxCQkoMSA8PCAxOCkK PiAtI2RlZmluZSBMRERGUl9DRjAJCSgxIDw8IDE3KQo+IC0jZGVmaW5lIExEREZSX0NDCQkoMSA8 PCAxNikKPiAtI2RlZmluZSBMRERGUl9ZRl80MjAJCSgwIDw8IDgpCj4gLSNkZWZpbmUgTERERlJf WUZfNDIyCQkoMSA8PCA4KQo+IC0jZGVmaW5lIExEREZSX1lGXzQ0NAkJKDIgPDwgOCkKPiAtI2Rl ZmluZSBMRERGUl9ZRl9NQVNLCQkoMyA8PCA4KQo+IC0jZGVmaW5lIExEREZSX1BLRl9BUkdCMzIJ KDB4MDAgPDwgMCkKPiAtI2RlZmluZSBMRERGUl9QS0ZfUkdCMTYJCSgweDAzIDw8IDApCj4gLSNk ZWZpbmUgTERERlJfUEtGX1JHQjI0CQkoMHgwYiA8PCAwKQo+IC0jZGVmaW5lIExEREZSX1BLRl9N QVNLCQkoMHgxZiA8PCAwKQo+IC0jZGVmaW5lIExEU00xUgkJCTB4NDI4Cj4gLSNkZWZpbmUgTERT TTFSX09TCQkoMSA8PCAwKQo+IC0jZGVmaW5lIExEU00yUgkJCTB4NDJjCj4gLSNkZWZpbmUgTERT TTJSX09TVFJHCQkoMSA8PCAwKQo+IC0jZGVmaW5lIExEU0ExUgkJCTB4NDMwCj4gLSNkZWZpbmUg TERTQTJSCQkJMHg0MzQKPiAtI2RlZmluZSBMRE1MU1IJCQkweDQzOAo+IC0jZGVmaW5lIExEV0JG UgkJCTB4NDNjCj4gLSNkZWZpbmUgTERXQkNOVFIJCTB4NDQwCj4gLSNkZWZpbmUgTERXQkFSCQkJ MHg0NDQKPiAtI2RlZmluZSBMREhDTlIJCQkweDQ0OAo+IC0jZGVmaW5lIExESFNZTlIJCQkweDQ0 Ywo+IC0jZGVmaW5lIExEVkxOUgkJCTB4NDUwCj4gLSNkZWZpbmUgTERWU1lOUgkJCTB4NDU0Cj4g LSNkZWZpbmUgTERIUERSCQkJMHg0NTgKPiAtI2RlZmluZSBMRFZQRFIJCQkweDQ1Ywo+IC0jZGVm aW5lIExEUE1SCQkJMHg0NjAKPiAtI2RlZmluZSBMRFBNUl9MUFMJCSgzIDw8IDApCj4gLSNkZWZp bmUgTERJTlRSCQkJMHg0NjgKPiAtI2RlZmluZSBMRElOVFJfRkUJCSgxIDw8IDEwKQo+IC0jZGVm aW5lIExESU5UUl9WU0UJCSgxIDw8IDkpCj4gLSNkZWZpbmUgTERJTlRSX1ZFRQkJKDEgPDwgOCkK PiAtI2RlZmluZSBMRElOVFJfRlMJCSgxIDw8IDIpCj4gLSNkZWZpbmUgTERJTlRSX1ZTUwkJKDEg PDwgMSkKPiAtI2RlZmluZSBMRElOVFJfVkVTCQkoMSA8PCAwKQo+IC0jZGVmaW5lIExESU5UUl9T VEFUVVNfTUFTSwkoMHhmZiA8PCAwKQo+IC0jZGVmaW5lIExEU1IJCQkweDQ2Ywo+IC0jZGVmaW5l IExEU1JfTVNTCQkoMSA8PCAxMCkKPiAtI2RlZmluZSBMRFNSX01SUwkJKDEgPDwgOCkKPiAtI2Rl ZmluZSBMRFNSX0FTCQkJKDEgPDwgMSkKPiAtI2RlZmluZSBMRENOVDFSCQkJMHg0NzAKPiAtI2Rl ZmluZSBMRENOVDFSX0RFCQkoMSA8PCAwKQo+IC0jZGVmaW5lIExEQ05UMlIJCQkweDQ3NAo+IC0j ZGVmaW5lIExEQ05UMlJfQlIJCSgxIDw8IDgpCj4gLSNkZWZpbmUgTERDTlQyUl9NRAkJKDEgPDwg MykKPiAtI2RlZmluZSBMRENOVDJSX1NFCQkoMSA8PCAyKQo+IC0jZGVmaW5lIExEQ05UMlJfTUUJ CSgxIDw8IDEpCj4gLSNkZWZpbmUgTERDTlQyUl9ETwkJKDEgPDwgMCkKPiAtI2RlZmluZSBMRFJD TlRSCQkJMHg0NzgKPiAtI2RlZmluZSBMRFJDTlRSX1NSUwkJKDEgPDwgMTcpCj4gLSNkZWZpbmUg TERSQ05UUl9TUkMJCSgxIDw8IDE2KQo+IC0jZGVmaW5lIExEUkNOVFJfTVJTCQkoMSA8PCAxKQo+ IC0jZGVmaW5lIExEUkNOVFJfTVJDCQkoMSA8PCAwKQo+IC0jZGVmaW5lIExERERTUgkJCTB4NDdj Cj4gLSNkZWZpbmUgTERERFNSX0xTCQkoMSA8PCAyKQo+IC0jZGVmaW5lIExERERTUl9XUwkJKDEg PDwgMSkKPiAtI2RlZmluZSBMREREU1JfQlMJCSgxIDw8IDApCj4gLSNkZWZpbmUgTERIQUpSCQkJ MHg0YTAKPiAtCj4gLSNkZWZpbmUgTEREV0QwUgkJCTB4ODAwCj4gLSNkZWZpbmUgTEREV0R4Ul9X REFDVAkJKDEgPDwgMjgpCj4gLSNkZWZpbmUgTEREV0R4Ul9SU1cJCSgxIDw8IDI0KQo+IC0jZGVm aW5lIExERFJEUgkJCTB4ODQwCj4gLSNkZWZpbmUgTEREUkRSX1JTUgkJKDEgPDwgMjQpCj4gLSNk ZWZpbmUgTEREUkRSX0RSRF9NQVNLCQkoMHgzZmZmZiA8PCAwKQo+IC0jZGVmaW5lIExERFdBUgkJ CTB4OTAwCj4gLSNkZWZpbmUgTEREV0FSX1dBCQkoMSA8PCAwKQo+IC0jZGVmaW5lIExERFJBUgkJ CTB4OTA0Cj4gLSNkZWZpbmUgTEREUkFSX1JBCQkoMSA8PCAwKQo+IC0KPiAtI2RlZmluZSBMREJD UgkJCTB4YjAwCj4gLSNkZWZpbmUgTERCQ1JfVVBDKG4pCQkoMSA8PCAoKG4pICsgMTYpKQo+IC0j ZGVmaW5lIExEQkNSX1VQRihuKQkJKDEgPDwgKChuKSArIDgpKQo+IC0jZGVmaW5lIExEQkNSX1VQ RChuKQkJKDEgPDwgKChuKSArIDApKQo+IC0jZGVmaW5lIExEQm5CU0lGUihuKQkJKDB4YjIwICsg KG4pICogMHgyMCArIDB4MDApCj4gLSNkZWZpbmUgTERCQlNJRlJfRU4JCSgxIDw8IDMxKQo+IC0j ZGVmaW5lIExEQkJTSUZSX1ZTCQkoMSA8PCAyOSkKPiAtI2RlZmluZSBMREJCU0lGUl9CUlNFTAkJ KDEgPDwgMjgpCj4gLSNkZWZpbmUgTERCQlNJRlJfTVgJCSgxIDw8IDI3KQo+IC0jZGVmaW5lIExE QkJTSUZSX01ZCQkoMSA8PCAyNikKPiAtI2RlZmluZSBMREJCU0lGUl9DVjMJCSgzIDw8IDI0KQo+ IC0jZGVmaW5lIExEQkJTSUZSX0NWMgkJKDIgPDwgMjQpCj4gLSNkZWZpbmUgTERCQlNJRlJfQ1Yx CQkoMSA8PCAyNCkKPiAtI2RlZmluZSBMREJCU0lGUl9DVjAJCSgwIDw8IDI0KQo+IC0jZGVmaW5l IExEQkJTSUZSX0NWX01BU0sJKDMgPDwgMjQpCj4gLSNkZWZpbmUgTERCQlNJRlJfTEFZX01BU0sJ KDB4ZmYgPDwgMTYpCj4gLSNkZWZpbmUgTERCQlNJRlJfTEFZX1NISUZUCTE2Cj4gLSNkZWZpbmUg TERCQlNJRlJfUk9QM19NQVNLCSgweGZmIDw8IDE2KQo+IC0jZGVmaW5lIExEQkJTSUZSX1JPUDNf U0hJRlQJMTYKPiAtI2RlZmluZSBMREJCU0lGUl9BTF9QTDgJCSgzIDw8IDE0KQo+IC0jZGVmaW5l IExEQkJTSUZSX0FMX1BMMQkJKDIgPDwgMTQpCj4gLSNkZWZpbmUgTERCQlNJRlJfQUxfUEsJCSgx IDw8IDE0KQo+IC0jZGVmaW5lIExEQkJTSUZSX0FMXzEJCSgwIDw8IDE0KQo+IC0jZGVmaW5lIExE QkJTSUZSX0FMX01BU0sJKDMgPDwgMTQpCj4gLSNkZWZpbmUgTERCQlNJRlJfU1dQTAkJKDEgPDwg MTApCj4gLSNkZWZpbmUgTERCQlNJRlJfU1dQVwkJKDEgPDwgOSkKPiAtI2RlZmluZSBMREJCU0lG Ul9TV1BCCQkoMSA8PCA4KQo+IC0jZGVmaW5lIExEQkJTSUZSX1JZCQkoMSA8PCA3KQo+IC0jZGVm aW5lIExEQkJTSUZSX0NIUlJfNDIwCSgyIDw8IDApCj4gLSNkZWZpbmUgTERCQlNJRlJfQ0hSUl80 MjIJKDEgPDwgMCkKPiAtI2RlZmluZSBMREJCU0lGUl9DSFJSXzQ0NAkoMCA8PCAwKQo+IC0jZGVm aW5lIExEQkJTSUZSX1JQS0ZfQVJHQjMyCSgweDAwIDw8IDApCj4gLSNkZWZpbmUgTERCQlNJRlJf UlBLRl9SR0IxNgkoMHgwMyA8PCAwKQo+IC0jZGVmaW5lIExEQkJTSUZSX1JQS0ZfUkdCMjQJKDB4 MGIgPDwgMCkKPiAtI2RlZmluZSBMREJCU0lGUl9SUEtGX01BU0sJKDB4MWYgPDwgMCkKPiAtI2Rl ZmluZSBMREJuQlNTWlIobikJCSgweGIyMCArIChuKSAqIDB4MjAgKyAweDA0KQo+IC0jZGVmaW5l IExEQkJTU1pSX0JWU1NfTUFTSwkoMHhmZmYgPDwgMTYpCj4gLSNkZWZpbmUgTERCQlNTWlJfQlZT U19TSElGVAkxNgo+IC0jZGVmaW5lIExEQkJTU1pSX0JIU1NfTUFTSwkoMHhmZmYgPDwgMCkKPiAt I2RlZmluZSBMREJCU1NaUl9CSFNTX1NISUZUCTAKPiAtI2RlZmluZSBMREJuQkxPQ1IobikJCSgw eGIyMCArIChuKSAqIDB4MjAgKyAweDA4KQo+IC0jZGVmaW5lIExEQkJMT0NSX0NWTENfTUFTSwko MHhmZmYgPDwgMTYpCj4gLSNkZWZpbmUgTERCQkxPQ1JfQ1ZMQ19TSElGVAkxNgo+IC0jZGVmaW5l IExEQkJMT0NSX0NITENfTUFTSwkoMHhmZmYgPDwgMCkKPiAtI2RlZmluZSBMREJCTE9DUl9DSExD X1NISUZUCTAKPiAtI2RlZmluZSBMREJuQlNNV1IobikJCSgweGIyMCArIChuKSAqIDB4MjAgKyAw eDBjKQo+IC0jZGVmaW5lIExEQkJTTVdSX0JTTVdBX01BU0sJKDB4ZmZmZiA8PCAxNikKPiAtI2Rl ZmluZSBMREJCU01XUl9CU01XQV9TSElGVAkxNgo+IC0jZGVmaW5lIExEQkJTTVdSX0JTTVdfTUFT SwkoMHhmZmZmIDw8IDApCj4gLSNkZWZpbmUgTERCQlNNV1JfQlNNV19TSElGVAkwCj4gLSNkZWZp bmUgTERCbkJTQVlSKG4pCQkoMHhiMjAgKyAobikgKiAweDIwICsgMHgxMCkKPiAtI2RlZmluZSBM REJCU0FZUl9GRzFBX01BU0sJKDB4ZmYgPDwgMjQpCj4gLSNkZWZpbmUgTERCQlNBWVJfRkcxQV9T SElGVAkyNAo+IC0jZGVmaW5lIExEQkJTQVlSX0ZHMVJfTUFTSwkoMHhmZiA8PCAxNikKPiAtI2Rl ZmluZSBMREJCU0FZUl9GRzFSX1NISUZUCTE2Cj4gLSNkZWZpbmUgTERCQlNBWVJfRkcxR19NQVNL CSgweGZmIDw8IDgpCj4gLSNkZWZpbmUgTERCQlNBWVJfRkcxR19TSElGVAk4Cj4gLSNkZWZpbmUg TERCQlNBWVJfRkcxQl9NQVNLCSgweGZmIDw8IDApCj4gLSNkZWZpbmUgTERCQlNBWVJfRkcxQl9T SElGVAkwCj4gLSNkZWZpbmUgTERCbkJTQUNSKG4pCQkoMHhiMjAgKyAobikgKiAweDIwICsgMHgx NCkKPiAtI2RlZmluZSBMREJCU0FDUl9GRzJBX01BU0sJKDB4ZmYgPDwgMjQpCj4gLSNkZWZpbmUg TERCQlNBQ1JfRkcyQV9TSElGVAkyNAo+IC0jZGVmaW5lIExEQkJTQUNSX0ZHMlJfTUFTSwkoMHhm ZiA8PCAxNikKPiAtI2RlZmluZSBMREJCU0FDUl9GRzJSX1NISUZUCTE2Cj4gLSNkZWZpbmUgTERC QlNBQ1JfRkcyR19NQVNLCSgweGZmIDw8IDgpCj4gLSNkZWZpbmUgTERCQlNBQ1JfRkcyR19TSElG VAk4Cj4gLSNkZWZpbmUgTERCQlNBQ1JfRkcyQl9NQVNLCSgweGZmIDw8IDApCj4gLSNkZWZpbmUg TERCQlNBQ1JfRkcyQl9TSElGVAkwCj4gLSNkZWZpbmUgTERCbkJTQUFSKG4pCQkoMHhiMjAgKyAo bikgKiAweDIwICsgMHgxOCkKPiAtI2RlZmluZSBMREJCU0FBUl9BUF9NQVNLCSgweGZmIDw8IDI0 KQo+IC0jZGVmaW5lIExEQkJTQUFSX0FQX1NISUZUCTI0Cj4gLSNkZWZpbmUgTERCQlNBQVJfUl9N QVNLCQkoMHhmZiA8PCAxNikKPiAtI2RlZmluZSBMREJCU0FBUl9SX1NISUZUCTE2Cj4gLSNkZWZp bmUgTERCQlNBQVJfR1lfTUFTSwkoMHhmZiA8PCA4KQo+IC0jZGVmaW5lIExEQkJTQUFSX0dZX1NI SUZUCTgKPiAtI2RlZmluZSBMREJCU0FBUl9CX01BU0sJCSgweGZmIDw8IDApCj4gLSNkZWZpbmUg TERCQlNBQVJfQl9TSElGVAkwCj4gLSNkZWZpbmUgTERCbkJQUENSKG4pCQkoMHhiMjAgKyAobikg KiAweDIwICsgMHgxYykKPiAtI2RlZmluZSBMREJCUFBDUl9BUF9NQVNLCSgweGZmIDw8IDI0KQo+ IC0jZGVmaW5lIExEQkJQUENSX0FQX1NISUZUCTI0Cj4gLSNkZWZpbmUgTERCQlBQQ1JfUl9NQVNL CQkoMHhmZiA8PCAxNikKPiAtI2RlZmluZSBMREJCUFBDUl9SX1NISUZUCTE2Cj4gLSNkZWZpbmUg TERCQlBQQ1JfR1lfTUFTSwkoMHhmZiA8PCA4KQo+IC0jZGVmaW5lIExEQkJQUENSX0dZX1NISUZU CTgKPiAtI2RlZmluZSBMREJCUFBDUl9CX01BU0sJCSgweGZmIDw8IDApCj4gLSNkZWZpbmUgTERC QlBQQ1JfQl9TSElGVAkwCj4gLSNkZWZpbmUgTERCbkJCR0NMKG4pCQkoMHhiMTAgKyAobikgKiAw eDA0KQo+IC0jZGVmaW5lIExEQkJCR0NMX0JHQV9NQVNLCSgweGZmIDw8IDI0KQo+IC0jZGVmaW5l IExEQkJCR0NMX0JHQV9TSElGVAkyNAo+IC0jZGVmaW5lIExEQkJCR0NMX0JHUl9NQVNLCSgweGZm IDw8IDE2KQo+IC0jZGVmaW5lIExEQkJCR0NMX0JHUl9TSElGVAkxNgo+IC0jZGVmaW5lIExEQkJC R0NMX0JHR19NQVNLCSgweGZmIDw8IDgpCj4gLSNkZWZpbmUgTERCQkJHQ0xfQkdHX1NISUZUCTgK PiAtI2RlZmluZSBMREJCQkdDTF9CR0JfTUFTSwkoMHhmZiA8PCAwKQo+IC0jZGVmaW5lIExEQkJC R0NMX0JHQl9TSElGVAkwCj4gLQo+IC0jZGVmaW5lIExDRENfU0lERV9CX09GRlNFVAkweDEwMDAK PiAtI2RlZmluZSBMQ0RDX01JUlJPUl9PRkZTRVQJMHgyMDAwCj4gLQo+IC1zdGF0aWMgaW5saW5l IGJvb2wgbGNkY19pc19iYW5rZWQodTMyIHJlZykKPiAtewo+IC0Jc3dpdGNoIChyZWcpIHsKPiAt CWNhc2UgTERNVDFSOgo+IC0JY2FzZSBMRE1UMlI6Cj4gLQljYXNlIExETVQzUjoKPiAtCWNhc2Ug TERERlI6Cj4gLQljYXNlIExEU00xUjoKPiAtCWNhc2UgTERTQTFSOgo+IC0JY2FzZSBMRFNBMlI6 Cj4gLQljYXNlIExETUxTUjoKPiAtCWNhc2UgTERXQkZSOgo+IC0JY2FzZSBMRFdCQ05UUjoKPiAt CWNhc2UgTERXQkFSOgo+IC0JY2FzZSBMREhDTlI6Cj4gLQljYXNlIExESFNZTlI6Cj4gLQljYXNl IExEVkxOUjoKPiAtCWNhc2UgTERWU1lOUjoKPiAtCWNhc2UgTERIUERSOgo+IC0JY2FzZSBMRFZQ RFI6Cj4gLQljYXNlIExESEFKUjoKPiAtCQlyZXR1cm4gdHJ1ZTsKPiAtCWRlZmF1bHQ6Cj4gLQkJ cmV0dXJuIHJlZyA+PSBMREJuQkJHQ0woMCkgJiYgcmVnIDw9IExEQm5CUFBDUigzKTsKPiAtCX0K PiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB2b2lkIGxjZGNfd3JpdGVfbWlycm9yKHN0cnVjdCBz aG1vYl9kcm1fZGV2aWNlICpzZGV2LCB1MzIgcmVnLAo+IC0JCQkJICAgICB1MzIgZGF0YSkKPiAt ewo+IC0JaW93cml0ZTMyKGRhdGEsIHNkZXYtPm1taW8gKyByZWcgKyBMQ0RDX01JUlJPUl9PRkZT RVQpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgbGNkY193cml0ZShzdHJ1Y3Qgc2ht b2JfZHJtX2RldmljZSAqc2RldiwgdTMyIHJlZywgdTMyIGRhdGEpCj4gLXsKPiAtCWlvd3JpdGUz MihkYXRhLCBzZGV2LT5tbWlvICsgcmVnKTsKPiAtCWlmIChsY2RjX2lzX2JhbmtlZChyZWcpKQo+ IC0JCWlvd3JpdGUzMihkYXRhLCBzZGV2LT5tbWlvICsgcmVnICsgTENEQ19TSURFX0JfT0ZGU0VU KTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB1MzIgbGNkY19yZWFkKHN0cnVjdCBzaG1vYl9k cm1fZGV2aWNlICpzZGV2LCB1MzIgcmVnKQo+IC17Cj4gLQlyZXR1cm4gaW9yZWFkMzIoc2Rldi0+ bW1pbyArIHJlZyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgaW50IGxjZGNfd2FpdF9iaXQo c3RydWN0IHNobW9iX2RybV9kZXZpY2UgKnNkZXYsIHUzMiByZWcsCj4gLQkJCQl1MzIgbWFzaywg dTMyIHVudGlsKQo+IC17Cj4gLQl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBqaWZmaWVzICsgbXNl Y3NfdG9famlmZmllcyg1KTsKPiAtCj4gLQl3aGlsZSAoKGxjZGNfcmVhZChzZGV2LCByZWcpICYg bWFzaykgIT0gdW50aWwpIHsKPiAtCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkK PiAtCQkJcmV0dXJuIC1FVElNRURPVVQ7Cj4gLQkJY3B1X3JlbGF4KCk7Cj4gLQl9Cj4gLQo+IC0J cmV0dXJuIDA7Cj4gLX0KPiAtCj4gLSNlbmRpZiAvKiBfX1NITU9CX0RSTV9SRUdTX0hfXyAqLwo+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvc2htb2JfZHJtLmggYi9p bmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvc2htb2JfZHJtLmgKPiBkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCBmZTgxNWQ3ZDlmNThjMTFiLi4wMDAwMDAwMDAwMDAwMDAwCj4gLS0t IGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL3NobW9iX2RybS5oCj4gKysrIC9kZXYvbnVs bAo+IEBAIC0xLDkxICswLDAgQEAKPiAtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjArICovCj4gLS8qCj4gLSAqIHNobW9iX2RybS5oICAtLSAgU0ggTW9iaWxlIERSTSBkcml2ZXIK PiAtICoKPiAtICogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgQ29ycG9yYXRpb24KPiAtICoK PiAtICogTGF1cmVudCBQaW5jaGFydCAobGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29t KQo+IC0gKi8KPiAtCj4gLSNpZm5kZWYgX19TSE1PQl9EUk1fSF9fCj4gLSNkZWZpbmUgX19TSE1P Ql9EUk1fSF9fCj4gLQo+IC0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gLQo+IC0jaW5jbHVk ZSA8ZHJtL2RybV9tb2RlLmg+Cj4gLQo+IC1lbnVtIHNobW9iX2RybV9jbGtfc291cmNlIHsKPiAt CVNITU9CX0RSTV9DTEtfQlVTLAo+IC0JU0hNT0JfRFJNX0NMS19QRVJJUEhFUkFMLAo+IC0JU0hN T0JfRFJNX0NMS19FWFRFUk5BTCwKPiAtfTsKPiAtCj4gLWVudW0gc2htb2JfZHJtX2ludGVyZmFj ZSB7Cj4gLQlTSE1PQl9EUk1fSUZBQ0VfUkdCOCwJCS8qIDI0YnBwLCA4Ojg6OCAqLwo+IC0JU0hN T0JfRFJNX0lGQUNFX1JHQjksCQkvKiAxOGJwcCwgOTo5ICovCj4gLQlTSE1PQl9EUk1fSUZBQ0Vf UkdCMTJBLAkJLyogMjRicHAsIDEyOjEyICovCj4gLQlTSE1PQl9EUk1fSUZBQ0VfUkdCMTJCLAkJ LyogMTJicHAgKi8KPiAtCVNITU9CX0RSTV9JRkFDRV9SR0IxNiwJCS8qIDE2YnBwICovCj4gLQlT SE1PQl9EUk1fSUZBQ0VfUkdCMTgsCQkvKiAxOGJwcCAqLwo+IC0JU0hNT0JfRFJNX0lGQUNFX1JH QjI0LAkJLyogMjRicHAgKi8KPiAtCVNITU9CX0RSTV9JRkFDRV9ZVVY0MjIsCQkvKiAxNmJwcCAq Lwo+IC0JU0hNT0JfRFJNX0lGQUNFX1NZUzhBLAkJLyogMjRicHAsIDg6ODo4ICovCj4gLQlTSE1P Ql9EUk1fSUZBQ0VfU1lTOEIsCQkvKiAxOGJwcCwgODo4OjIgKi8KPiAtCVNITU9CX0RSTV9JRkFD RV9TWVM4QywJCS8qIDE4YnBwLCAyOjg6OCAqLwo+IC0JU0hNT0JfRFJNX0lGQUNFX1NZUzhELAkJ LyogMTZicHAsIDg6OCAqLwo+IC0JU0hNT0JfRFJNX0lGQUNFX1NZUzksCQkvKiAxOGJwcCwgOTo5 ICovCj4gLQlTSE1PQl9EUk1fSUZBQ0VfU1lTMTIsCQkvKiAyNGJwcCwgMTI6MTIgKi8KPiAtCVNI TU9CX0RSTV9JRkFDRV9TWVMxNkEsCQkvKiAxNmJwcCAqLwo+IC0JU0hNT0JfRFJNX0lGQUNFX1NZ UzE2QiwJCS8qIDE4YnBwLCAxNjoyICovCj4gLQlTSE1PQl9EUk1fSUZBQ0VfU1lTMTZDLAkJLyog MThicHAsIDI6MTYgKi8KPiAtCVNITU9CX0RSTV9JRkFDRV9TWVMxOCwJCS8qIDE4YnBwICovCj4g LQlTSE1PQl9EUk1fSUZBQ0VfU1lTMjQsCQkvKiAyNGJwcCAqLwo+IC19Owo+IC0KPiAtc3RydWN0 IHNobW9iX2RybV9iYWNrbGlnaHRfZGF0YSB7Cj4gLQljb25zdCBjaGFyICpuYW1lOwo+IC0JaW50 IG1heF9icmlnaHRuZXNzOwo+IC0JaW50ICgqZ2V0X2JyaWdodG5lc3MpKHZvaWQpOwo+IC0JaW50 ICgqc2V0X2JyaWdodG5lc3MpKGludCBicmlnaHRuZXNzKTsKPiAtfTsKPiAtCj4gLXN0cnVjdCBz aG1vYl9kcm1fcGFuZWxfZGF0YSB7Cj4gLQl1bnNpZ25lZCBpbnQgd2lkdGhfbW07CQkvKiBQYW5l bCB3aWR0aCBpbiBtbSAqLwo+IC0JdW5zaWduZWQgaW50IGhlaWdodF9tbTsJCS8qIFBhbmVsIGhl aWdodCBpbiBtbSAqLwo+IC0Jc3RydWN0IGRybV9tb2RlX21vZGVpbmZvIG1vZGU7Cj4gLX07Cj4g LQo+IC1zdHJ1Y3Qgc2htb2JfZHJtX3N5c19pbnRlcmZhY2VfZGF0YSB7Cj4gLQl1bnNpZ25lZCBp bnQgcmVhZF9sYXRjaDo2Owo+IC0JdW5zaWduZWQgaW50IHJlYWRfc2V0dXA6ODsKPiAtCXVuc2ln bmVkIGludCByZWFkX2N5Y2xlOjg7Cj4gLQl1bnNpZ25lZCBpbnQgcmVhZF9zdHJvYmU6ODsKPiAt CXVuc2lnbmVkIGludCB3cml0ZV9zZXR1cDo4Owo+IC0JdW5zaWduZWQgaW50IHdyaXRlX2N5Y2xl Ojg7Cj4gLQl1bnNpZ25lZCBpbnQgd3JpdGVfc3Ryb2JlOjg7Cj4gLQl1bnNpZ25lZCBpbnQgY3Nf c2V0dXA6MzsKPiAtCXVuc2lnbmVkIGludCB2c3luY19hY3RpdmVfaGlnaDoxOwo+IC0JdW5zaWdu ZWQgaW50IHZzeW5jX2Rpcl9pbnB1dDoxOwo+IC19Owo+IC0KPiAtI2RlZmluZSBTSE1PQl9EUk1f SUZBQ0VfRkxfRFdQT0wgKDEgPDwgMCkgLyogUmlzaW5nIGVkZ2UgZG90IGNsb2NrIGRhdGEgbGF0 Y2ggKi8KPiAtI2RlZmluZSBTSE1PQl9EUk1fSUZBQ0VfRkxfRElQT0wgKDEgPDwgMSkgLyogQWN0 aXZlIGxvdyBkaXNwbGF5IGVuYWJsZSAqLwo+IC0jZGVmaW5lIFNITU9CX0RSTV9JRkFDRV9GTF9E QVBPTCAoMSA8PCAyKSAvKiBBY3RpdmUgbG93IGRpc3BsYXkgZGF0YSAqLwo+IC0jZGVmaW5lIFNI TU9CX0RSTV9JRkFDRV9GTF9IU0NOVCAoMSA8PCAzKSAvKiBEaXNhYmxlIEhTWU5DIGR1cmluZyBW QkxBTksgKi8KPiAtI2RlZmluZSBTSE1PQl9EUk1fSUZBQ0VfRkxfRFdDTlQgKDEgPDwgNCkgLyog RGlzYWJsZSBkb3RjbG9jayBkdXJpbmcgYmxhbmtpbmcgKi8KPiAtCj4gLXN0cnVjdCBzaG1vYl9k cm1faW50ZXJmYWNlX2RhdGEgewo+IC0JZW51bSBzaG1vYl9kcm1faW50ZXJmYWNlIGludGVyZmFj ZTsKPiAtCXN0cnVjdCBzaG1vYl9kcm1fc3lzX2ludGVyZmFjZV9kYXRhIHN5czsKPiAtCXVuc2ln bmVkIGludCBjbGtfZGl2Owo+IC0JdW5zaWduZWQgaW50IGZsYWdzOwo+IC19Owo+IC0KPiAtc3Ry dWN0IHNobW9iX2RybV9wbGF0Zm9ybV9kYXRhIHsKPiAtCWVudW0gc2htb2JfZHJtX2Nsa19zb3Vy Y2UgY2xrX3NvdXJjZTsKPiAtCXN0cnVjdCBzaG1vYl9kcm1faW50ZXJmYWNlX2RhdGEgaWZhY2U7 Cj4gLQlzdHJ1Y3Qgc2htb2JfZHJtX3BhbmVsX2RhdGEgcGFuZWw7Cj4gLQlzdHJ1Y3Qgc2htb2Jf ZHJtX2JhY2tsaWdodF9kYXRhIGJhY2tsaWdodDsKPiAtfTsKPiAtCj4gLSNlbmRpZiAvKiBfX1NI TU9CX0RSTV9IX18gKi8KPiAtLSAKPiAyLjE3LjEKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK