From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= Subject: Re: [PATCH 1/2] drm/radeon: Program page flips to execute in hblank instead of vblank Date: Tue, 01 Jul 2014 12:12:19 +0200 Message-ID: <53B28983.8070300@vodafone.de> References: <53B158BF.5060907@vodafone.de> <1404202487-1600-1-git-send-email-michel@daenzer.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from pegasos-out.vodafone.de (pegasos-out.vodafone.de [80.84.1.38]) by gabe.freedesktop.org (Postfix) with ESMTP id 56B426E52A for ; Tue, 1 Jul 2014 03:12:35 -0700 (PDT) In-Reply-To: <1404202487-1600-1-git-send-email-michel@daenzer.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?B?TWljaGVsIETDpG56ZXI=?= , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QW0gMDEuMDcuMjAxNCAxMDoxNCwgc2NocmllYiBNaWNoZWwgRMOkbnplcjoKPiBGcm9tOiBNaWNo ZWwgRMOkbnplciA8bWljaGVsLmRhZW56ZXJAYW1kLmNvbT4KPgo+IEJ1dCBtb3ZlIHRoZSBwcm9n cmFtbWluZyBiYWNrIHRvIHRoZSB2ZXJ0aWNhbCBibGFuayBpbnRlcnJ1cHQgaGFuZGxlci4KPiBB bmQgc2lnbmFsIHRoZSBmbGlwIGFzIGJlaW5nIGNvbXBsZXRlZCBpbW1lZGlhdGVseSBhZnRlciBw cm9ncmFtbWluZyBpdAo+IHRvIHRoZSBoYXJkd2FyZS4KPgo+IFRoaXMgd2F5IHdlIGRvbid0IGhh dmUgdG8gZ3Vlc3Mgd2hldGhlciBvciBub3QgdGhlIGhhcmR3YXJlIHdpbGwgZXhlY3V0ZQo+IHRo ZSBmbGlwIGluIGEgZ2l2ZW4gdmVydGljYWwgYmxhbmsgcGVyaW9kLCBhdm9pZGluZyBhIHdob2xl IGxvdCBvZgo+IHRyb3VibGUuCj4KPiBBbHNvLCBub3QgdXNpbmcgdGhlIHBhZ2UgZmxpcCBpbnRl cnJ1cHQgYW55bW9yZSBhdm9pZHMgcHJvYmxlbXMgZHVlIHRvCj4gY29tcGxldGluZyBwYWdlIGZs aXBzIGVhcmxpZXIgdGhhbiBleHBlY3RlZCBieSB1c2Vyc3BhY2UuCj4KPiBTaWduZWQtb2ZmLWJ5 OiBNaWNoZWwgRMOkbnplciA8bWljaGVsLmRhZW56ZXJAYW1kLmNvbT4KCkkgd291bGQgc2F5IHRv IGxldCdzIG51a2UgcmRldi0+aXJxLnBmbGlwIGFzIHdlbGwgYW5kIGp1c3QgcmVseSBvbiB0aGUg CmZsaXBfc3RhdHVzIHRvIHRyYWNrIHdlYXRoZXIgb3Igbm90IHRoZXJlIGlzIGFuIHBhZ2UgZmxp cCBzY2hlZHVsZWQuCgpBcGFydCBmcm9tIHRoYXQgdGhlIHR3byBwYXRjaGVzIGxvb2sgZ29vZCB0 byBtZSwKQ2hyaXN0aWFuLgoKPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbWJp b3NfY3J0Yy5jICB8IDI4ICsrKystLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2Np ay5jICAgICAgICAgICAgfCA1OCArKystLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vcmFkZW9uL2V2ZXJncmVlbi5jICAgICAgfCA4NiArKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjEwMC5jICAgICAgICAgICB8 IDQ4ICsrKy0tLS0tLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwLmMg ICAgICAgICAgIHwgMTggKy0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24u aCAgICAgICAgIHwgIDMgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2FzaWMu YyAgICB8IDIyIC0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXNp Yy5oICAgIHwgIDQgLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rpc3BsYXku YyB8IDUxICsrLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX21vZGUuaCAgICB8ICAxIC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcnM2MDAuYyAg ICAgICAgICB8IDI4ICsrKy0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3J2Nzcw LmMgICAgICAgICAgfCAyNCArKy0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vc2ku YyAgICAgICAgICAgICB8IDUyICsrKy0tLS0tLS0tLS0tLS0tLS0tCj4gICAxMyBmaWxlcyBjaGFu Z2VkLCA1OSBpbnNlcnRpb25zKCspLCAzNjQgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL2F0b21iaW9zX2NydGMuYwo+IGluZGV4IGU5MTE4OTguLjY1Y2ZkYmIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19jcnRjLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYwo+IEBAIC0xMjg0LDYgKzEyODQsMTAg QEAgc3RhdGljIGludCBkY2U0X2NydGNfZG9fc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ICAgCQlicmVhazsKPiAgIAl9Cj4gICAKPiArCS8qIE1ha2Ugc3VyZSB1cGRhdGVzIGhhcHBl biBhdCB2ZXJ0aWNhbCBibGFuayAqLwo+ICsJV1JFRzMyKEVWRVJHUkVFTl9HUlBIX0ZMSVBfQ09O VFJPTCArIHJhZGVvbl9jcnRjLT5jcnRjX29mZnNldCwgMCk7Cj4gKwlXUkVHMzIoRVZFUkdSRUVO X01BU1RFUl9VUERBVEVfTU9ERSArIHJhZGVvbl9jcnRjLT5jcnRjX29mZnNldCwgMCk7Cj4gKwo+ ICAgCVdSRUczMihFVkVSR1JFRU5fR1JQSF9QUklNQVJZX1NVUkZBQ0VfQUREUkVTU19ISUdIICsg cmFkZW9uX2NydGMtPmNydGNfb2Zmc2V0LAo+ICAgCSAgICAgICB1cHBlcl8zMl9iaXRzKGZiX2xv Y2F0aW9uKSk7Cj4gICAJV1JFRzMyKEVWRVJHUkVFTl9HUlBIX1NFQ09OREFSWV9TVVJGQUNFX0FE RFJFU1NfSElHSCArIHJhZGVvbl9jcnRjLT5jcnRjX29mZnNldCwKPiBAQCAtMTMyMSwxNSArMTMy NSw2IEBAIHN0YXRpYyBpbnQgZGNlNF9jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiAgIAlXUkVHMzIoRVZFUkdSRUVOX1ZJRVdQT1JUX1NJWkUgKyByYWRlb25fY3J0Yy0+ Y3J0Y19vZmZzZXQsCj4gICAJICAgICAgICh2aWV3cG9ydF93IDw8IDE2KSB8IHZpZXdwb3J0X2gp Owo+ICAgCj4gLQkvKiBwYWdlZmxpcCBzZXR1cCAqLwo+IC0JLyogbWFrZSBzdXJlIGZsaXAgaXMg YXQgdmIgcmF0aGVyIHRoYW4gaGIgKi8KPiAtCXRtcCA9IFJSRUczMihFVkVSR1JFRU5fR1JQSF9G TElQX0NPTlRST0wgKyByYWRlb25fY3J0Yy0+Y3J0Y19vZmZzZXQpOwo+IC0JdG1wICY9IH5FVkVS R1JFRU5fR1JQSF9TVVJGQUNFX1VQREFURV9IX1JFVFJBQ0VfRU47Cj4gLQlXUkVHMzIoRVZFUkdS RUVOX0dSUEhfRkxJUF9DT05UUk9MICsgcmFkZW9uX2NydGMtPmNydGNfb2Zmc2V0LCB0bXApOwo+ IC0KPiAtCS8qIHNldCBwYWdlZmxpcCB0byBoYXBwZW4gYW55d2hlcmUgaW4gdmJsYW5rIGludGVy dmFsICovCj4gLQlXUkVHMzIoRVZFUkdSRUVOX01BU1RFUl9VUERBVEVfTU9ERSArIHJhZGVvbl9j cnRjLT5jcnRjX29mZnNldCwgMCk7Cj4gLQo+ICAgCWlmICghYXRvbWljICYmIGZiICYmIGZiICE9 IGNydGMtPnByaW1hcnktPmZiKSB7Cj4gICAJCXJhZGVvbl9mYiA9IHRvX3JhZGVvbl9mcmFtZWJ1 ZmZlcihmYik7Cj4gICAJCXJibyA9IGdlbV90b19yYWRlb25fYm8ocmFkZW9uX2ZiLT5vYmopOwo+ IEBAIC0xMzYwLDcgKzEzNTUsNyBAQCBzdGF0aWMgaW50IGF2aXZvX2NydGNfZG9fc2V0X2Jhc2Uo c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAgCXVpbnQ2NF90IGZiX2xvY2F0aW9uOwo+ICAgCXVp bnQzMl90IGZiX2Zvcm1hdCwgZmJfcGl0Y2hfcGl4ZWxzLCB0aWxpbmdfZmxhZ3M7Cj4gICAJdTMy IGZiX3N3YXAgPSBSNjAwX0QxR1JQSF9TV0FQX0VORElBTl9OT05FOwo+IC0JdTMyIHRtcCwgdmll d3BvcnRfdywgdmlld3BvcnRfaDsKPiArCXUzMiB2aWV3cG9ydF93LCB2aWV3cG9ydF9oOwo+ICAg CWludCByOwo+ICAgCj4gICAJLyogbm8gZmIgYm91bmQgKi8KPiBAQCAtMTQ1MSw2ICsxNDQ2LDEw IEBAIHN0YXRpYyBpbnQgYXZpdm9fY3J0Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gICAJZWxzZQo+ICAgCQlXUkVHMzIoQVZJVk9fRDJWR0FfQ09OVFJPTCwgMCk7Cj4gICAK PiArCS8qIE1ha2Ugc3VyZSB1cGRhdGVzIGhhcHBlbiBhdCB2ZXJ0aWNhbCBibGFuayAqLwo+ICsJ V1JFRzMyKEFWSVZPX0QxR1JQSF9GTElQX0NPTlRST0wgKyByYWRlb25fY3J0Yy0+Y3J0Y19vZmZz ZXQsIDApOwo+ICsJV1JFRzMyKEFWSVZPX0QxTU9ERV9NQVNURVJfVVBEQVRFX01PREUgKyByYWRl b25fY3J0Yy0+Y3J0Y19vZmZzZXQsIDApOwo+ICsKPiAgIAlpZiAocmRldi0+ZmFtaWx5ID49IENI SVBfUlY3NzApIHsKPiAgIAkJaWYgKHJhZGVvbl9jcnRjLT5jcnRjX2lkKSB7Cj4gICAJCQlXUkVH MzIoUjcwMF9EMkdSUEhfUFJJTUFSWV9TVVJGQUNFX0FERFJFU1NfSElHSCwgdXBwZXJfMzJfYml0 cyhmYl9sb2NhdGlvbikpOwo+IEBAIC0xNDkwLDE1ICsxNDg5LDYgQEAgc3RhdGljIGludCBhdml2 b19jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgIAlXUkVHMzIoQVZJ Vk9fRDFNT0RFX1ZJRVdQT1JUX1NJWkUgKyByYWRlb25fY3J0Yy0+Y3J0Y19vZmZzZXQsCj4gICAJ ICAgICAgICh2aWV3cG9ydF93IDw8IDE2KSB8IHZpZXdwb3J0X2gpOwo+ICAgCj4gLQkvKiBwYWdl ZmxpcCBzZXR1cCAqLwo+IC0JLyogbWFrZSBzdXJlIGZsaXAgaXMgYXQgdmIgcmF0aGVyIHRoYW4g aGIgKi8KPiAtCXRtcCA9IFJSRUczMihBVklWT19EMUdSUEhfRkxJUF9DT05UUk9MICsgcmFkZW9u X2NydGMtPmNydGNfb2Zmc2V0KTsKPiAtCXRtcCAmPSB+QVZJVk9fRDFHUlBIX1NVUkZBQ0VfVVBE QVRFX0hfUkVUUkFDRV9FTjsKPiAtCVdSRUczMihBVklWT19EMUdSUEhfRkxJUF9DT05UUk9MICsg cmFkZW9uX2NydGMtPmNydGNfb2Zmc2V0LCB0bXApOwo+IC0KPiAtCS8qIHNldCBwYWdlZmxpcCB0 byBoYXBwZW4gYW55d2hlcmUgaW4gdmJsYW5rIGludGVydmFsICovCj4gLQlXUkVHMzIoQVZJVk9f RDFNT0RFX01BU1RFUl9VUERBVEVfTU9ERSArIHJhZGVvbl9jcnRjLT5jcnRjX29mZnNldCwgMCk7 Cj4gLQo+ICAgCWlmICghYXRvbWljICYmIGZiICYmIGZiICE9IGNydGMtPnByaW1hcnktPmZiKSB7 Cj4gICAJCXJhZGVvbl9mYiA9IHRvX3JhZGVvbl9mcmFtZWJ1ZmZlcihmYik7Cj4gICAJCXJibyA9 IGdlbV90b19yYWRlb25fYm8ocmFkZW9uX2ZiLT5vYmopOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL2Npay5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9jaWsuYwo+IGlu ZGV4IDBmNGIzOGYuLmQwYTk5NGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9jaWsuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vY2lrLmMKPiBAQCAtNzE0Mywy NSArNzE0Myw2IEBAIGludCBjaWtfaXJxX3NldChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikK PiAgIAkJV1JFRzMyKExCX0lOVEVSUlVQVF9NQVNLICsgRVZFUkdSRUVOX0NSVEM1X1JFR0lTVEVS X09GRlNFVCwgY3J0YzYpOwo+ICAgCX0KPiAgIAo+IC0JaWYgKHJkZXYtPm51bV9jcnRjID49IDIp IHsKPiAtCQlXUkVHMzIoR1JQSF9JTlRfQ09OVFJPTCArIEVWRVJHUkVFTl9DUlRDMF9SRUdJU1RF Ul9PRkZTRVQsCj4gLQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX01BU0spOwo+IC0JCVdSRUczMihH UlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVOX0NSVEMxX1JFR0lTVEVSX09GRlNFVCwKPiAtCQkg ICAgICAgR1JQSF9QRkxJUF9JTlRfTUFTSyk7Cj4gLQl9Cj4gLQlpZiAocmRldi0+bnVtX2NydGMg Pj0gNCkgewo+IC0JCVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVOX0NSVEMyX1JF R0lTVEVSX09GRlNFVCwKPiAtCQkgICAgICAgR1JQSF9QRkxJUF9JTlRfTUFTSyk7Cj4gLQkJV1JF RzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JUQzNfUkVHSVNURVJfT0ZGU0VULAo+ IC0JCSAgICAgICBHUlBIX1BGTElQX0lOVF9NQVNLKTsKPiAtCX0KPiAtCWlmIChyZGV2LT5udW1f Y3J0YyA+PSA2KSB7Cj4gLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JU QzRfUkVHSVNURVJfT0ZGU0VULAo+IC0JCSAgICAgICBHUlBIX1BGTElQX0lOVF9NQVNLKTsKPiAt CQlXUkVHMzIoR1JQSF9JTlRfQ09OVFJPTCArIEVWRVJHUkVFTl9DUlRDNV9SRUdJU1RFUl9PRkZT RVQsCj4gLQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX01BU0spOwo+IC0JfQo+IC0KPiAgIAlXUkVH MzIoRENfSFBEMV9JTlRfQ09OVFJPTCwgaHBkMSk7Cj4gICAJV1JFRzMyKERDX0hQRDJfSU5UX0NP TlRST0wsIGhwZDIpOwo+ICAgCVdSRUczMihEQ19IUEQzX0lOVF9DT05UUk9MLCBocGQzKTsKPiBA QCAtNzIxNSwxMiArNzE5Niw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjaWtfaXJxX2FjayhzdHJ1 Y3QgcmFkZW9uX2RldmljZSAqcmRldikKPiAgIAkJCUVWRVJHUkVFTl9DUlRDNV9SRUdJU1RFUl9P RkZTRVQpOwo+ICAgCX0KPiAgIAo+IC0JaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3MuY2lrLmQxZ3Jw aF9pbnQgJiBHUlBIX1BGTElQX0lOVF9PQ0NVUlJFRCkKPiAtCQlXUkVHMzIoR1JQSF9JTlRfU1RB VFVTICsgRVZFUkdSRUVOX0NSVEMwX1JFR0lTVEVSX09GRlNFVCwKPiAtCQkgICAgICAgR1JQSF9Q RkxJUF9JTlRfQ0xFQVIpOwo+IC0JaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3MuY2lrLmQyZ3JwaF9p bnQgJiBHUlBIX1BGTElQX0lOVF9PQ0NVUlJFRCkKPiAtCQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVT ICsgRVZFUkdSRUVOX0NSVEMxX1JFR0lTVEVSX09GRlNFVCwKPiAtCQkgICAgICAgR1JQSF9QRkxJ UF9JTlRfQ0xFQVIpOwo+ICAgCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmNpay5kaXNwX2ludCAm IExCX0QxX1ZCTEFOS19JTlRFUlJVUFQpCj4gICAJCVdSRUczMihMQl9WQkxBTktfU1RBVFVTICsg RVZFUkdSRUVOX0NSVEMwX1JFR0lTVEVSX09GRlNFVCwgVkJMQU5LX0FDSyk7Cj4gICAJaWYgKHJk ZXYtPmlycS5zdGF0X3JlZ3MuY2lrLmRpc3BfaW50ICYgTEJfRDFfVkxJTkVfSU5URVJSVVBUKQo+ IEBAIC03MjMxLDEyICs3MjA2LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGNpa19pcnFfYWNrKHN0 cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQo+ICAgCQlXUkVHMzIoTEJfVkxJTkVfU1RBVFVTICsg RVZFUkdSRUVOX0NSVEMxX1JFR0lTVEVSX09GRlNFVCwgVkxJTkVfQUNLKTsKPiAgIAo+ICAgCWlm IChyZGV2LT5udW1fY3J0YyA+PSA0KSB7Cj4gLQkJaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3MuY2lr LmQzZ3JwaF9pbnQgJiBHUlBIX1BGTElQX0lOVF9PQ0NVUlJFRCkKPiAtCQkJV1JFRzMyKEdSUEhf SU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDMl9SRUdJU1RFUl9PRkZTRVQsCj4gLQkJCSAgICAg ICBHUlBIX1BGTElQX0lOVF9DTEVBUik7Cj4gLQkJaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3MuY2lr LmQ0Z3JwaF9pbnQgJiBHUlBIX1BGTElQX0lOVF9PQ0NVUlJFRCkKPiAtCQkJV1JFRzMyKEdSUEhf SU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDM19SRUdJU1RFUl9PRkZTRVQsCj4gLQkJCSAgICAg ICBHUlBIX1BGTElQX0lOVF9DTEVBUik7Cj4gICAJCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmNp ay5kaXNwX2ludF9jb250MiAmIExCX0QzX1ZCTEFOS19JTlRFUlJVUFQpCj4gICAJCQlXUkVHMzIo TEJfVkJMQU5LX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDMl9SRUdJU1RFUl9PRkZTRVQsIFZCTEFO S19BQ0spOwo+ICAgCQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5jaWsuZGlzcF9pbnRfY29udDIg JiBMQl9EM19WTElORV9JTlRFUlJVUFQpCj4gQEAgLTcyNDgsMTIgKzcyMTcsNiBAQCBzdGF0aWMg aW5saW5lIHZvaWQgY2lrX2lycV9hY2soc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCj4gICAJ fQo+ICAgCj4gICAJaWYgKHJkZXYtPm51bV9jcnRjID49IDYpIHsKPiAtCQlpZiAocmRldi0+aXJx LnN0YXRfcmVncy5jaWsuZDVncnBoX2ludCAmIEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVEKQo+IC0J CQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEM0X1JFR0lTVEVSX09GRlNF VCwKPiAtCQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX0NMRUFSKTsKPiAtCQlpZiAocmRldi0+aXJx LnN0YXRfcmVncy5jaWsuZDZncnBoX2ludCAmIEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVEKQo+IC0J CQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEM1X1JFR0lTVEVSX09GRlNF VCwKPiAtCQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX0NMRUFSKTsKPiAgIAkJaWYgKHJkZXYtPmly cS5zdGF0X3JlZ3MuY2lrLmRpc3BfaW50X2NvbnQ0ICYgTEJfRDVfVkJMQU5LX0lOVEVSUlVQVCkK PiAgIAkJCVdSRUczMihMQl9WQkxBTktfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEM0X1JFR0lTVEVS X09GRlNFVCwgVkJMQU5LX0FDSyk7Cj4gICAJCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmNpay5k aXNwX2ludF9jb250NCAmIExCX0Q1X1ZMSU5FX0lOVEVSUlVQVCkKPiBAQCAtNzQ1OSw3ICs3NDIy LDcgQEAgcmVzdGFydF9paDoKPiAgIAkJCQkJCXdha2VfdXAoJnJkZXYtPmlycS52YmxhbmtfcXVl dWUpOwo+ICAgCQkJCQl9Cj4gICAJCQkJCWlmIChhdG9taWNfcmVhZCgmcmRldi0+aXJxLnBmbGlw WzBdKSkKPiAtCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX3ZibGFuayhyZGV2LCAwKTsKPiArCQkJ CQkJcmFkZW9uX2NydGNfaGFuZGxlX2ZsaXAocmRldiwgMCk7Cj4gICAJCQkJCXJkZXYtPmlycS5z dGF0X3JlZ3MuY2lrLmRpc3BfaW50ICY9IH5MQl9EMV9WQkxBTktfSU5URVJSVVBUOwo+ICAgCQkJ CQlEUk1fREVCVUcoIklIOiBEMSB2YmxhbmtcbiIpOwo+ICAgCQkJCX0KPiBAQCAtNzQ4NSw3ICs3 NDQ4LDcgQEAgcmVzdGFydF9paDoKPiAgIAkJCQkJCXdha2VfdXAoJnJkZXYtPmlycS52Ymxhbmtf cXVldWUpOwo+ICAgCQkJCQl9Cj4gICAJCQkJCWlmIChhdG9taWNfcmVhZCgmcmRldi0+aXJxLnBm bGlwWzFdKSkKPiAtCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX3ZibGFuayhyZGV2LCAxKTsKPiAr CQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX2ZsaXAocmRldiwgMSk7Cj4gICAJCQkJCXJkZXYtPmly cS5zdGF0X3JlZ3MuY2lrLmRpc3BfaW50X2NvbnQgJj0gfkxCX0QyX1ZCTEFOS19JTlRFUlJVUFQ7 Cj4gICAJCQkJCURSTV9ERUJVRygiSUg6IEQyIHZibGFua1xuIik7Cj4gICAJCQkJfQo+IEBAIC03 NTExLDcgKzc0NzQsNyBAQCByZXN0YXJ0X2loOgo+ICAgCQkJCQkJd2FrZV91cCgmcmRldi0+aXJx LnZibGFua19xdWV1ZSk7Cj4gICAJCQkJCX0KPiAgIAkJCQkJaWYgKGF0b21pY19yZWFkKCZyZGV2 LT5pcnEucGZsaXBbMl0pKQo+IC0JCQkJCQlyYWRlb25fY3J0Y19oYW5kbGVfdmJsYW5rKHJkZXYs IDIpOwo+ICsJCQkJCQlyYWRlb25fY3J0Y19oYW5kbGVfZmxpcChyZGV2LCAyKTsKPiAgIAkJCQkJ cmRldi0+aXJxLnN0YXRfcmVncy5jaWsuZGlzcF9pbnRfY29udDIgJj0gfkxCX0QzX1ZCTEFOS19J TlRFUlJVUFQ7Cj4gICAJCQkJCURSTV9ERUJVRygiSUg6IEQzIHZibGFua1xuIik7Cj4gICAJCQkJ fQo+IEBAIC03NTM3LDcgKzc1MDAsNyBAQCByZXN0YXJ0X2loOgo+ICAgCQkJCQkJd2FrZV91cCgm cmRldi0+aXJxLnZibGFua19xdWV1ZSk7Cj4gICAJCQkJCX0KPiAgIAkJCQkJaWYgKGF0b21pY19y ZWFkKCZyZGV2LT5pcnEucGZsaXBbM10pKQo+IC0JCQkJCQlyYWRlb25fY3J0Y19oYW5kbGVfdmJs YW5rKHJkZXYsIDMpOwo+ICsJCQkJCQlyYWRlb25fY3J0Y19oYW5kbGVfZmxpcChyZGV2LCAzKTsK PiAgIAkJCQkJcmRldi0+aXJxLnN0YXRfcmVncy5jaWsuZGlzcF9pbnRfY29udDMgJj0gfkxCX0Q0 X1ZCTEFOS19JTlRFUlJVUFQ7Cj4gICAJCQkJCURSTV9ERUJVRygiSUg6IEQ0IHZibGFua1xuIik7 Cj4gICAJCQkJfQo+IEBAIC03NTYzLDcgKzc1MjYsNyBAQCByZXN0YXJ0X2loOgo+ICAgCQkJCQkJ d2FrZV91cCgmcmRldi0+aXJxLnZibGFua19xdWV1ZSk7Cj4gICAJCQkJCX0KPiAgIAkJCQkJaWYg KGF0b21pY19yZWFkKCZyZGV2LT5pcnEucGZsaXBbNF0pKQo+IC0JCQkJCQlyYWRlb25fY3J0Y19o YW5kbGVfdmJsYW5rKHJkZXYsIDQpOwo+ICsJCQkJCQlyYWRlb25fY3J0Y19oYW5kbGVfZmxpcChy ZGV2LCA0KTsKPiAgIAkJCQkJcmRldi0+aXJxLnN0YXRfcmVncy5jaWsuZGlzcF9pbnRfY29udDQg Jj0gfkxCX0Q1X1ZCTEFOS19JTlRFUlJVUFQ7Cj4gICAJCQkJCURSTV9ERUJVRygiSUg6IEQ1IHZi bGFua1xuIik7Cj4gICAJCQkJfQo+IEBAIC03NTg5LDcgKzc1NTIsNyBAQCByZXN0YXJ0X2loOgo+ ICAgCQkJCQkJd2FrZV91cCgmcmRldi0+aXJxLnZibGFua19xdWV1ZSk7Cj4gICAJCQkJCX0KPiAg IAkJCQkJaWYgKGF0b21pY19yZWFkKCZyZGV2LT5pcnEucGZsaXBbNV0pKQo+IC0JCQkJCQlyYWRl b25fY3J0Y19oYW5kbGVfdmJsYW5rKHJkZXYsIDUpOwo+ICsJCQkJCQlyYWRlb25fY3J0Y19oYW5k bGVfZmxpcChyZGV2LCA1KTsKPiAgIAkJCQkJcmRldi0+aXJxLnN0YXRfcmVncy5jaWsuZGlzcF9p bnRfY29udDUgJj0gfkxCX0Q2X1ZCTEFOS19JTlRFUlJVUFQ7Cj4gICAJCQkJCURSTV9ERUJVRygi SUg6IEQ2IHZibGFua1xuIik7Cj4gICAJCQkJfQo+IEBAIC03NjA1LDE1ICs3NTY4LDYgQEAgcmVz dGFydF9paDoKPiAgIAkJCQlicmVhazsKPiAgIAkJCX0KPiAgIAkJCWJyZWFrOwo+IC0JCWNhc2Ug ODogLyogRDEgcGFnZSBmbGlwICovCj4gLQkJY2FzZSAxMDogLyogRDIgcGFnZSBmbGlwICovCj4g LQkJY2FzZSAxMjogLyogRDMgcGFnZSBmbGlwICovCj4gLQkJY2FzZSAxNDogLyogRDQgcGFnZSBm bGlwICovCj4gLQkJY2FzZSAxNjogLyogRDUgcGFnZSBmbGlwICovCj4gLQkJY2FzZSAxODogLyog RDYgcGFnZSBmbGlwICovCj4gLQkJCURSTV9ERUJVRygiSUg6IEQlZCBmbGlwXG4iLCAoKHNyY19p ZCAtIDgpID4+IDEpICsgMSk7Cj4gLQkJCXJhZGVvbl9jcnRjX2hhbmRsZV9mbGlwKHJkZXYsIChz cmNfaWQgLSA4KSA+PiAxKTsKPiAtCQkJYnJlYWs7Cj4gICAJCWNhc2UgNDI6IC8qIEhQRCBob3Rw bHVnICovCj4gICAJCQlzd2l0Y2ggKHNyY19kYXRhKSB7Cj4gICAJCQljYXNlIDA6Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vZXZlcmdyZWVuLmMgYi9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL2V2ZXJncmVlbi5jCj4gaW5kZXggMDQ0MzE4My4uZTdkNjg1YSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbi5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9ldmVyZ3JlZW4uYwo+IEBAIC0xMzA4LDE2ICsxMzA4LDE1IEBAIHZvaWQg ZGNlNF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRj KQo+ICAgICogQGNydGNfYmFzZTogbmV3IGFkZHJlc3Mgb2YgdGhlIGNydGMgKEdQVSBNQyBhZGRy ZXNzKQo+ICAgICoKPiAgICAqIERvZXMgdGhlIGFjdHVhbCBwYWdlZmxpcCAoZXZlcmdyZWVuKyku Cj4gLSAqIER1cmluZyB2Ymxhbmsgd2UgdGFrZSB0aGUgY3J0YyBsb2NrIGFuZCB3YWl0IGZvciB0 aGUgdXBkYXRlX3BlbmRpbmcKPiAtICogYml0IHRvIGdvIGhpZ2gsIHdoZW4gaXQgZG9lcywgd2Ug cmVsZWFzZSB0aGUgbG9jaywgYW5kIGFsbG93IHRoZQo+IC0gKiBkb3VibGUgYnVmZmVyZWQgdXBk YXRlIHRvIHRha2UgcGxhY2UuCj4gLSAqIFJldHVybnMgdGhlIGN1cnJlbnQgdXBkYXRlIHBlbmRp bmcgc3RhdHVzLgo+ICAgICovCj4gICB2b2lkIGV2ZXJncmVlbl9wYWdlX2ZsaXAoc3RydWN0IHJh ZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRjX2lkLCB1NjQgY3J0Y19iYXNlKQo+ICAgewo+ICAg CXN0cnVjdCByYWRlb25fY3J0YyAqcmFkZW9uX2NydGMgPSByZGV2LT5tb2RlX2luZm8uY3J0Y3Nb Y3J0Y19pZF07Cj4gICAJdTMyIHRtcCA9IFJSRUczMihFVkVSR1JFRU5fR1JQSF9VUERBVEUgKyBy YWRlb25fY3J0Yy0+Y3J0Y19vZmZzZXQpOwo+IC0JaW50IGk7Cj4gKwo+ICsJLyogVGFrZSBzdXJm YWNlIHVwZGF0ZXMgYXQgaG9yaXpvbnRhbCBibGFuayAqLwo+ICsJV1JFRzMyKEVWRVJHUkVFTl9H UlBIX0ZMSVBfQ09OVFJPTCArIHJhZGVvbl9jcnRjLT5jcnRjX29mZnNldCwKPiArCSAgICAgICBF VkVSR1JFRU5fR1JQSF9TVVJGQUNFX1VQREFURV9IX1JFVFJBQ0VfRU4pOwo+ICAgCj4gICAJLyog TG9jayB0aGUgZ3JhcGhpY3MgdXBkYXRlIGxvY2sgKi8KPiAgIAl0bXAgfD0gRVZFUkdSRUVOX0dS UEhfVVBEQVRFX0xPQ0s7Cj4gQEAgLTEzMzQsMzYgKzEzMzMsMTEgQEAgdm9pZCBldmVyZ3JlZW5f cGFnZV9mbGlwKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQgY3J0Y19pZCwgdTY0IGNy dGNfYmFzZSkKPiAgIAlXUkVHMzIoRVZFUkdSRUVOX0dSUEhfUFJJTUFSWV9TVVJGQUNFX0FERFJF U1MgKyByYWRlb25fY3J0Yy0+Y3J0Y19vZmZzZXQsCj4gICAJICAgICAgICh1MzIpY3J0Y19iYXNl KTsKPiAgIAo+IC0JLyogV2FpdCBmb3IgdXBkYXRlX3BlbmRpbmcgdG8gZ28gaGlnaC4gKi8KPiAt CWZvciAoaSA9IDA7IGkgPCByZGV2LT51c2VjX3RpbWVvdXQ7IGkrKykgewo+IC0JCWlmIChSUkVH MzIoRVZFUkdSRUVOX0dSUEhfVVBEQVRFICsgcmFkZW9uX2NydGMtPmNydGNfb2Zmc2V0KSAmIEVW RVJHUkVFTl9HUlBIX1NVUkZBQ0VfVVBEQVRFX1BFTkRJTkcpCj4gLQkJCWJyZWFrOwo+IC0JCXVk ZWxheSgxKTsKPiAtCX0KPiAtCURSTV9ERUJVRygiVXBkYXRlIHBlbmRpbmcgbm93IGhpZ2guIFVu bG9ja2luZyB2dXBkYXRlX2xvY2suXG4iKTsKPiAtCj4gLQkvKiBVbmxvY2sgdGhlIGxvY2ssIHNv IGRvdWJsZS1idWZmZXJpbmcgY2FuIHRha2UgcGxhY2UgaW5zaWRlIHZibGFuayAqLwo+ICsJLyog VW5sb2NrIHRoZSBsb2NrLCBzbyBkb3VibGUtYnVmZmVyaW5nIGNhbiB0YWtlIHBsYWNlIGluc2lk ZSBoYmxhbmsgKi8KPiAgIAl0bXAgJj0gfkVWRVJHUkVFTl9HUlBIX1VQREFURV9MT0NLOwo+ICAg CVdSRUczMihFVkVSR1JFRU5fR1JQSF9VUERBVEUgKyByYWRlb25fY3J0Yy0+Y3J0Y19vZmZzZXQs IHRtcCk7Cj4gICB9Cj4gICAKPiAtLyoqCj4gLSAqIGV2ZXJncmVlbl9wYWdlX2ZsaXBfcGVuZGlu ZyAtIGNoZWNrIGlmIHBhZ2UgZmxpcCBpcyBzdGlsbCBwZW5kaW5nCj4gLSAqCj4gLSAqIEByZGV2 OiByYWRlb25fZGV2aWNlIHBvaW50ZXIKPiAtICogQGNydGNfaWQ6IGNydGMgdG8gY2hlY2sKPiAt ICoKPiAtICogUmV0dXJucyB0aGUgY3VycmVudCB1cGRhdGUgcGVuZGluZyBzdGF0dXMuCj4gLSAq Lwo+IC1ib29sIGV2ZXJncmVlbl9wYWdlX2ZsaXBfcGVuZGluZyhzdHJ1Y3QgcmFkZW9uX2Rldmlj ZSAqcmRldiwgaW50IGNydGNfaWQpCj4gLXsKPiAtCXN0cnVjdCByYWRlb25fY3J0YyAqcmFkZW9u X2NydGMgPSByZGV2LT5tb2RlX2luZm8uY3J0Y3NbY3J0Y19pZF07Cj4gLQo+IC0JLyogUmV0dXJu IGN1cnJlbnQgdXBkYXRlX3BlbmRpbmcgc3RhdHVzOiAqLwo+IC0JcmV0dXJuICEhKFJSRUczMihF VkVSR1JFRU5fR1JQSF9VUERBVEUgKyByYWRlb25fY3J0Yy0+Y3J0Y19vZmZzZXQpICYKPiAtCQlF VkVSR1JFRU5fR1JQSF9TVVJGQUNFX1VQREFURV9QRU5ESU5HKTsKPiAtfQo+IC0KPiAgIC8qIGdl dCB0ZW1wZXJhdHVyZSBpbiBtaWxsaWRlZ3JlZXMgKi8KPiAgIGludCBldmVyZ3JlZW5fZ2V0X3Rl bXAoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCj4gICB7Cj4gQEAgLTQ1NDEsMjMgKzQ1MTUs NiBAQCBpbnQgZXZlcmdyZWVuX2lycV9zZXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCj4g ICAJCVdSRUczMihJTlRfTUFTSyArIEVWRVJHUkVFTl9DUlRDNV9SRUdJU1RFUl9PRkZTRVQsIGNy dGM2KTsKPiAgIAl9Cj4gICAKPiAtCVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVO X0NSVEMwX1JFR0lTVEVSX09GRlNFVCwKPiAtCSAgICAgICBHUlBIX1BGTElQX0lOVF9NQVNLKTsK PiAtCVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVOX0NSVEMxX1JFR0lTVEVSX09G RlNFVCwKPiAtCSAgICAgICBHUlBIX1BGTElQX0lOVF9NQVNLKTsKPiAtCWlmIChyZGV2LT5udW1f Y3J0YyA+PSA0KSB7Cj4gLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JU QzJfUkVHSVNURVJfT0ZGU0VULAo+IC0JCSAgICAgICBHUlBIX1BGTElQX0lOVF9NQVNLKTsKPiAt CQlXUkVHMzIoR1JQSF9JTlRfQ09OVFJPTCArIEVWRVJHUkVFTl9DUlRDM19SRUdJU1RFUl9PRkZT RVQsCj4gLQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX01BU0spOwo+IC0JfQo+IC0JaWYgKHJkZXYt Pm51bV9jcnRjID49IDYpIHsKPiAtCQlXUkVHMzIoR1JQSF9JTlRfQ09OVFJPTCArIEVWRVJHUkVF Tl9DUlRDNF9SRUdJU1RFUl9PRkZTRVQsCj4gLQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX01BU0sp Owo+IC0JCVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVOX0NSVEM1X1JFR0lTVEVS X09GRlNFVCwKPiAtCQkgICAgICAgR1JQSF9QRkxJUF9JTlRfTUFTSyk7Cj4gLQl9Cj4gLQo+ICAg CVdSRUczMihEQ19IUEQxX0lOVF9DT05UUk9MLCBocGQxKTsKPiAgIAlXUkVHMzIoRENfSFBEMl9J TlRfQ09OVFJPTCwgaHBkMik7Cj4gICAJV1JFRzMyKERDX0hQRDNfSU5UX0NPTlRST0wsIGhwZDMp Owo+IEBAIC00NjA3LDEwICs0NTY0LDYgQEAgc3RhdGljIHZvaWQgZXZlcmdyZWVuX2lycV9hY2so c3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCj4gICAJcmRldi0+aXJxLnN0YXRfcmVncy5ldmVy Z3JlZW4uYWZtdF9zdGF0dXM1ID0gUlJFRzMyKEFGTVRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEM0 X1JFR0lTVEVSX09GRlNFVCk7Cj4gICAJcmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uYWZt dF9zdGF0dXM2ID0gUlJFRzMyKEFGTVRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEM1X1JFR0lTVEVS X09GRlNFVCk7Cj4gICAKPiAtCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kMWdy cGhfaW50ICYgR1JQSF9QRkxJUF9JTlRfT0NDVVJSRUQpCj4gLQkJV1JFRzMyKEdSUEhfSU5UX1NU QVRVUyArIEVWRVJHUkVFTl9DUlRDMF9SRUdJU1RFUl9PRkZTRVQsIEdSUEhfUEZMSVBfSU5UX0NM RUFSKTsKPiAtCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kMmdycGhfaW50ICYg R1JQSF9QRkxJUF9JTlRfT0NDVVJSRUQpCj4gLQkJV1JFRzMyKEdSUEhfSU5UX1NUQVRVUyArIEVW RVJHUkVFTl9DUlRDMV9SRUdJU1RFUl9PRkZTRVQsIEdSUEhfUEZMSVBfSU5UX0NMRUFSKTsKPiAg IAlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZGlzcF9pbnQgJiBMQl9EMV9WQkxB TktfSU5URVJSVVBUKQo+ICAgCQlXUkVHMzIoVkJMQU5LX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRD MF9SRUdJU1RFUl9PRkZTRVQsIFZCTEFOS19BQ0spOwo+ICAgCWlmIChyZGV2LT5pcnEuc3RhdF9y ZWdzLmV2ZXJncmVlbi5kaXNwX2ludCAmIExCX0QxX1ZMSU5FX0lOVEVSUlVQVCkKPiBAQCAtNDYy MSwxMCArNDU3NCw2IEBAIHN0YXRpYyB2b2lkIGV2ZXJncmVlbl9pcnFfYWNrKHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2KQo+ICAgCQlXUkVHMzIoVkxJTkVfU1RBVFVTICsgRVZFUkdSRUVOX0NS VEMxX1JFR0lTVEVSX09GRlNFVCwgVkxJTkVfQUNLKTsKPiAgIAo+ICAgCWlmIChyZGV2LT5udW1f Y3J0YyA+PSA0KSB7Cj4gLQkJaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmQzZ3Jw aF9pbnQgJiBHUlBIX1BGTElQX0lOVF9PQ0NVUlJFRCkKPiAtCQkJV1JFRzMyKEdSUEhfSU5UX1NU QVRVUyArIEVWRVJHUkVFTl9DUlRDMl9SRUdJU1RFUl9PRkZTRVQsIEdSUEhfUEZMSVBfSU5UX0NM RUFSKTsKPiAtCQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZDRncnBoX2ludCAm IEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVEKQo+IC0JCQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVTICsg RVZFUkdSRUVOX0NSVEMzX1JFR0lTVEVSX09GRlNFVCwgR1JQSF9QRkxJUF9JTlRfQ0xFQVIpOwo+ ICAgCQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZGlzcF9pbnRfY29udDIgJiBM Ql9EM19WQkxBTktfSU5URVJSVVBUKQo+ICAgCQkJV1JFRzMyKFZCTEFOS19TVEFUVVMgKyBFVkVS R1JFRU5fQ1JUQzJfUkVHSVNURVJfT0ZGU0VULCBWQkxBTktfQUNLKTsKPiAgIAkJaWYgKHJkZXYt PmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3BfaW50X2NvbnQyICYgTEJfRDNfVkxJTkVfSU5U RVJSVVBUKQo+IEBAIC00NjM2LDEwICs0NTg1LDYgQEAgc3RhdGljIHZvaWQgZXZlcmdyZWVuX2ly cV9hY2soc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCj4gICAJfQo+ICAgCj4gICAJaWYgKHJk ZXYtPm51bV9jcnRjID49IDYpIHsKPiAtCQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3Jl ZW4uZDVncnBoX2ludCAmIEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVEKQo+IC0JCQlXUkVHMzIoR1JQ SF9JTlRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEM0X1JFR0lTVEVSX09GRlNFVCwgR1JQSF9QRkxJ UF9JTlRfQ0xFQVIpOwo+IC0JCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kNmdy cGhfaW50ICYgR1JQSF9QRkxJUF9JTlRfT0NDVVJSRUQpCj4gLQkJCVdSRUczMihHUlBIX0lOVF9T VEFUVVMgKyBFVkVSR1JFRU5fQ1JUQzVfUkVHSVNURVJfT0ZGU0VULCBHUlBIX1BGTElQX0lOVF9D TEVBUik7Cj4gICAJCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kaXNwX2ludF9j b250NCAmIExCX0Q1X1ZCTEFOS19JTlRFUlJVUFQpCj4gICAJCQlXUkVHMzIoVkJMQU5LX1NUQVRV UyArIEVWRVJHUkVFTl9DUlRDNF9SRUdJU1RFUl9PRkZTRVQsIFZCTEFOS19BQ0spOwo+ICAgCQlp ZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZGlzcF9pbnRfY29udDQgJiBMQl9ENV9W TElORV9JTlRFUlJVUFQpCj4gQEAgLTQ3OTgsNyArNDc0Myw3IEBAIHJlc3RhcnRfaWg6Cj4gICAJ CQkJCQl3YWtlX3VwKCZyZGV2LT5pcnEudmJsYW5rX3F1ZXVlKTsKPiAgIAkJCQkJfQo+ICAgCQkJ CQlpZiAoYXRvbWljX3JlYWQoJnJkZXYtPmlycS5wZmxpcFswXSkpCj4gLQkJCQkJCXJhZGVvbl9j cnRjX2hhbmRsZV92YmxhbmsocmRldiwgMCk7Cj4gKwkJCQkJCXJhZGVvbl9jcnRjX2hhbmRsZV9m bGlwKHJkZXYsIDApOwo+ICAgCQkJCQlyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kaXNw X2ludCAmPSB+TEJfRDFfVkJMQU5LX0lOVEVSUlVQVDsKPiAgIAkJCQkJRFJNX0RFQlVHKCJJSDog RDEgdmJsYW5rXG4iKTsKPiAgIAkJCQl9Cj4gQEAgLTQ4MjQsNyArNDc2OSw3IEBAIHJlc3RhcnRf aWg6Cj4gICAJCQkJCQl3YWtlX3VwKCZyZGV2LT5pcnEudmJsYW5rX3F1ZXVlKTsKPiAgIAkJCQkJ fQo+ICAgCQkJCQlpZiAoYXRvbWljX3JlYWQoJnJkZXYtPmlycS5wZmxpcFsxXSkpCj4gLQkJCQkJ CXJhZGVvbl9jcnRjX2hhbmRsZV92YmxhbmsocmRldiwgMSk7Cj4gKwkJCQkJCXJhZGVvbl9jcnRj X2hhbmRsZV9mbGlwKHJkZXYsIDEpOwo+ICAgCQkJCQlyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJn cmVlbi5kaXNwX2ludF9jb250ICY9IH5MQl9EMl9WQkxBTktfSU5URVJSVVBUOwo+ICAgCQkJCQlE Uk1fREVCVUcoIklIOiBEMiB2YmxhbmtcbiIpOwo+ICAgCQkJCX0KPiBAQCAtNDg1MCw3ICs0Nzk1 LDcgQEAgcmVzdGFydF9paDoKPiAgIAkJCQkJCXdha2VfdXAoJnJkZXYtPmlycS52YmxhbmtfcXVl dWUpOwo+ICAgCQkJCQl9Cj4gICAJCQkJCWlmIChhdG9taWNfcmVhZCgmcmRldi0+aXJxLnBmbGlw WzJdKSkKPiAtCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX3ZibGFuayhyZGV2LCAyKTsKPiArCQkJ CQkJcmFkZW9uX2NydGNfaGFuZGxlX2ZsaXAocmRldiwgMik7Cj4gICAJCQkJCXJkZXYtPmlycS5z dGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3BfaW50X2NvbnQyICY9IH5MQl9EM19WQkxBTktfSU5URVJS VVBUOwo+ICAgCQkJCQlEUk1fREVCVUcoIklIOiBEMyB2YmxhbmtcbiIpOwo+ICAgCQkJCX0KPiBA QCAtNDg3Niw3ICs0ODIxLDcgQEAgcmVzdGFydF9paDoKPiAgIAkJCQkJCXdha2VfdXAoJnJkZXYt PmlycS52YmxhbmtfcXVldWUpOwo+ICAgCQkJCQl9Cj4gICAJCQkJCWlmIChhdG9taWNfcmVhZCgm cmRldi0+aXJxLnBmbGlwWzNdKSkKPiAtCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX3ZibGFuayhy ZGV2LCAzKTsKPiArCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX2ZsaXAocmRldiwgMyk7Cj4gICAJ CQkJCXJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3BfaW50X2NvbnQzICY9IH5MQl9E NF9WQkxBTktfSU5URVJSVVBUOwo+ICAgCQkJCQlEUk1fREVCVUcoIklIOiBENCB2YmxhbmtcbiIp Owo+ICAgCQkJCX0KPiBAQCAtNDkwMiw3ICs0ODQ3LDcgQEAgcmVzdGFydF9paDoKPiAgIAkJCQkJ CXdha2VfdXAoJnJkZXYtPmlycS52YmxhbmtfcXVldWUpOwo+ICAgCQkJCQl9Cj4gICAJCQkJCWlm IChhdG9taWNfcmVhZCgmcmRldi0+aXJxLnBmbGlwWzRdKSkKPiAtCQkJCQkJcmFkZW9uX2NydGNf aGFuZGxlX3ZibGFuayhyZGV2LCA0KTsKPiArCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX2ZsaXAo cmRldiwgNCk7Cj4gICAJCQkJCXJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3BfaW50 X2NvbnQ0ICY9IH5MQl9ENV9WQkxBTktfSU5URVJSVVBUOwo+ICAgCQkJCQlEUk1fREVCVUcoIklI OiBENSB2YmxhbmtcbiIpOwo+ICAgCQkJCX0KPiBAQCAtNDkyOCw3ICs0ODczLDcgQEAgcmVzdGFy dF9paDoKPiAgIAkJCQkJCXdha2VfdXAoJnJkZXYtPmlycS52YmxhbmtfcXVldWUpOwo+ICAgCQkJ CQl9Cj4gICAJCQkJCWlmIChhdG9taWNfcmVhZCgmcmRldi0+aXJxLnBmbGlwWzVdKSkKPiAtCQkJ CQkJcmFkZW9uX2NydGNfaGFuZGxlX3ZibGFuayhyZGV2LCA1KTsKPiArCQkJCQkJcmFkZW9uX2Ny dGNfaGFuZGxlX2ZsaXAocmRldiwgNSk7Cj4gICAJCQkJCXJkZXYtPmlycS5zdGF0X3JlZ3MuZXZl cmdyZWVuLmRpc3BfaW50X2NvbnQ1ICY9IH5MQl9ENl9WQkxBTktfSU5URVJSVVBUOwo+ICAgCQkJ CQlEUk1fREVCVUcoIklIOiBENiB2YmxhbmtcbiIpOwo+ICAgCQkJCX0KPiBAQCAtNDk0NCwxNSAr NDg4OSw2IEBAIHJlc3RhcnRfaWg6Cj4gICAJCQkJYnJlYWs7Cj4gICAJCQl9Cj4gICAJCQlicmVh azsKPiAtCQljYXNlIDg6IC8qIEQxIHBhZ2UgZmxpcCAqLwo+IC0JCWNhc2UgMTA6IC8qIEQyIHBh Z2UgZmxpcCAqLwo+IC0JCWNhc2UgMTI6IC8qIEQzIHBhZ2UgZmxpcCAqLwo+IC0JCWNhc2UgMTQ6 IC8qIEQ0IHBhZ2UgZmxpcCAqLwo+IC0JCWNhc2UgMTY6IC8qIEQ1IHBhZ2UgZmxpcCAqLwo+IC0J CWNhc2UgMTg6IC8qIEQ2IHBhZ2UgZmxpcCAqLwo+IC0JCQlEUk1fREVCVUcoIklIOiBEJWQgZmxp cFxuIiwgKChzcmNfaWQgLSA4KSA+PiAxKSArIDEpOwo+IC0JCQlyYWRlb25fY3J0Y19oYW5kbGVf ZmxpcChyZGV2LCAoc3JjX2lkIC0gOCkgPj4gMSk7Cj4gLQkJCWJyZWFrOwo+ICAgCQljYXNlIDQy OiAvKiBIUEQgaG90cGx1ZyAqLwo+ICAgCQkJc3dpdGNoIChzcmNfZGF0YSkgewo+ICAgCQkJY2Fz ZSAwOgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3IxMDAuYyBiL2RyaXZl cnMvZ3B1L2RybS9yYWRlb24vcjEwMC5jCj4gaW5kZXggYWQ5OTgxMy4uOGQ5ZjA5MiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3IxMDAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9yYWRlb24vcjEwMC5jCj4gQEAgLTE0OSw1MCArMTQ5LDE4IEBAIHZvaWQgcjEwMF93YWl0 X2Zvcl92Ymxhbmsoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRjKQo+ICAgICog QGNydGNfYmFzZTogbmV3IGFkZHJlc3Mgb2YgdGhlIGNydGMgKEdQVSBNQyBhZGRyZXNzKQo+ICAg ICoKPiAgICAqIERvZXMgdGhlIGFjdHVhbCBwYWdlZmxpcCAocjF4eC1yNHh4KS4KPiAtICogRHVy aW5nIHZibGFuayB3ZSB0YWtlIHRoZSBjcnRjIGxvY2sgYW5kIHdhaXQgZm9yIHRoZSB1cGRhdGVf cGVuZGluZwo+IC0gKiBiaXQgdG8gZ28gaGlnaCwgd2hlbiBpdCBkb2VzLCB3ZSByZWxlYXNlIHRo ZSBsb2NrLCBhbmQgYWxsb3cgdGhlCj4gLSAqIGRvdWJsZSBidWZmZXJlZCB1cGRhdGUgdG8gdGFr ZSBwbGFjZS4KPiAgICAqLwo+ICAgdm9pZCByMTAwX3BhZ2VfZmxpcChzdHJ1Y3QgcmFkZW9uX2Rl dmljZSAqcmRldiwgaW50IGNydGNfaWQsIHU2NCBjcnRjX2Jhc2UpCj4gICB7Cj4gICAJc3RydWN0 IHJhZGVvbl9jcnRjICpyYWRlb25fY3J0YyA9IHJkZXYtPm1vZGVfaW5mby5jcnRjc1tjcnRjX2lk XTsKPiAtCXUzMiB0bXAgPSAoKHUzMiljcnRjX2Jhc2UpIHwgUkFERU9OX0NSVENfT0ZGU0VUX19P RkZTRVRfTE9DSzsKPiAtCWludCBpOwo+IC0KPiAtCS8qIExvY2sgdGhlIGdyYXBoaWNzIHVwZGF0 ZSBsb2NrICovCj4gLQkvKiB1cGRhdGUgdGhlIHNjYW5vdXQgYWRkcmVzc2VzICovCj4gLQlXUkVH MzIoUkFERU9OX0NSVENfT0ZGU0VUICsgcmFkZW9uX2NydGMtPmNydGNfb2Zmc2V0LCB0bXApOwo+ ICsJdTMyIGNydGNfb2Zmc2V0X2NudGwgPSBSUkVHMzIoUkFERU9OX0NSVENfT0ZGU0VUX0NOVEwp Owo+ICAgCj4gLQkvKiBXYWl0IGZvciB1cGRhdGVfcGVuZGluZyB0byBnbyBoaWdoLiAqLwo+IC0J Zm9yIChpID0gMDsgaSA8IHJkZXYtPnVzZWNfdGltZW91dDsgaSsrKSB7Cj4gLQkJaWYgKFJSRUcz MihSQURFT05fQ1JUQ19PRkZTRVQgKyByYWRlb25fY3J0Yy0+Y3J0Y19vZmZzZXQpICYgUkFERU9O X0NSVENfT0ZGU0VUX19HVUlfVFJJR19PRkZTRVQpCj4gLQkJCWJyZWFrOwo+IC0JCXVkZWxheSgx KTsKPiAtCX0KPiAtCURSTV9ERUJVRygiVXBkYXRlIHBlbmRpbmcgbm93IGhpZ2guIFVubG9ja2lu ZyB2dXBkYXRlX2xvY2suXG4iKTsKPiAtCj4gLQkvKiBVbmxvY2sgdGhlIGxvY2ssIHNvIGRvdWJs ZS1idWZmZXJpbmcgY2FuIHRha2UgcGxhY2UgaW5zaWRlIHZibGFuayAqLwo+IC0JdG1wICY9IH5S QURFT05fQ1JUQ19PRkZTRVRfX09GRlNFVF9MT0NLOwo+IC0JV1JFRzMyKFJBREVPTl9DUlRDX09G RlNFVCArIHJhZGVvbl9jcnRjLT5jcnRjX29mZnNldCwgdG1wKTsKPiAtCj4gLX0KPiAtCj4gLS8q Kgo+IC0gKiByMTAwX3BhZ2VfZmxpcF9wZW5kaW5nIC0gY2hlY2sgaWYgcGFnZSBmbGlwIGlzIHN0 aWxsIHBlbmRpbmcKPiAtICoKPiAtICogQHJkZXY6IHJhZGVvbl9kZXZpY2UgcG9pbnRlcgo+IC0g KiBAY3J0Y19pZDogY3J0YyB0byBjaGVjawo+IC0gKgo+IC0gKiBDaGVjayBpZiB0aGUgbGFzdCBw YWdlZmlscCBpcyBzdGlsbCBwZW5kaW5nIChyMXh4LXI0eHgpLgo+IC0gKiBSZXR1cm5zIHRoZSBj dXJyZW50IHVwZGF0ZSBwZW5kaW5nIHN0YXR1cy4KPiAtICovCj4gLWJvb2wgcjEwMF9wYWdlX2Zs aXBfcGVuZGluZyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IGNydGNfaWQpCj4gLXsK PiAtCXN0cnVjdCByYWRlb25fY3J0YyAqcmFkZW9uX2NydGMgPSByZGV2LT5tb2RlX2luZm8uY3J0 Y3NbY3J0Y19pZF07Cj4gKwkvKiBUYWtlIHN1cmZhY2UgdXBkYXRlcyBhdCBob3Jpem9udGFsIGJs YW5rICovCj4gKwlXUkVHMzIoUkFERU9OX0NSVENfT0ZGU0VUX0NOVEwsCj4gKwkgICAgICAgY3J0 Y19vZmZzZXRfY250bCB8IFJBREVPTl9DUlRDX09GRlNFVF9GTElQX0NOVEwpOwo+ICAgCj4gLQkv KiBSZXR1cm4gY3VycmVudCB1cGRhdGVfcGVuZGluZyBzdGF0dXM6ICovCj4gLQlyZXR1cm4gISEo UlJFRzMyKFJBREVPTl9DUlRDX09GRlNFVCArIHJhZGVvbl9jcnRjLT5jcnRjX29mZnNldCkgJgo+ IC0JCVJBREVPTl9DUlRDX09GRlNFVF9fR1VJX1RSSUdfT0ZGU0VUKTsKPiArCS8qIFVwZGF0ZSB0 aGUgc2Nhbm91dCBhZGRyZXNzICovCj4gKwlXUkVHMzIoUkFERU9OX0NSVENfT0ZGU0VUICsgcmFk ZW9uX2NydGMtPmNydGNfb2Zmc2V0LCBjcnRjX2Jhc2UpOwo+ICAgfQo+ICAgCj4gICAvKioKPiBA QCAtNzc5LDcgKzc0Nyw3IEBAIGludCByMTAwX2lycV9wcm9jZXNzKHN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2KQo+ICAgCQkJCXdha2VfdXAoJnJkZXYtPmlycS52YmxhbmtfcXVldWUpOwo+ICAg CQkJfQo+ICAgCQkJaWYgKGF0b21pY19yZWFkKCZyZGV2LT5pcnEucGZsaXBbMF0pKQo+IC0JCQkJ cmFkZW9uX2NydGNfaGFuZGxlX3ZibGFuayhyZGV2LCAwKTsKPiArCQkJCXJhZGVvbl9jcnRjX2hh bmRsZV9mbGlwKHJkZXYsIDApOwo+ICAgCQl9Cj4gICAJCWlmIChzdGF0dXMgJiBSQURFT05fQ1JU QzJfVkJMQU5LX1NUQVQpIHsKPiAgIAkJCWlmIChyZGV2LT5pcnEuY3J0Y192YmxhbmtfaW50WzFd KSB7Cj4gQEAgLTc4OCw3ICs3NTYsNyBAQCBpbnQgcjEwMF9pcnFfcHJvY2VzcyhzdHJ1Y3QgcmFk ZW9uX2RldmljZSAqcmRldikKPiAgIAkJCQl3YWtlX3VwKCZyZGV2LT5pcnEudmJsYW5rX3F1ZXVl KTsKPiAgIAkJCX0KPiAgIAkJCWlmIChhdG9taWNfcmVhZCgmcmRldi0+aXJxLnBmbGlwWzFdKSkK PiAtCQkJCXJhZGVvbl9jcnRjX2hhbmRsZV92YmxhbmsocmRldiwgMSk7Cj4gKwkJCQlyYWRlb25f Y3J0Y19oYW5kbGVfZmxpcChyZGV2LCAxKTsKPiAgIAkJfQo+ICAgCQlpZiAoc3RhdHVzICYgUkFE RU9OX0ZQX0RFVEVDVF9TVEFUKSB7Cj4gICAJCQlxdWV1ZV9ob3RwbHVnID0gdHJ1ZTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwLmMgYi9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3I2MDAuYwo+IGluZGV4IGFlNTRmNzYuLjhmMzE4ZWMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3I2MDAuYwo+IEBAIC0zNjE0LDggKzM2MTQsNiBAQCBpbnQgcjYwMF9pcnFfc2V0KHN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2KQo+ICAgCVdSRUczMihDUF9JTlRfQ05UTCwgY3BfaW50X2NudGwp Owo+ICAgCVdSRUczMihETUFfQ05UTCwgZG1hX2NudGwpOwo+ICAgCVdSRUczMihEeE1PREVfSU5U X01BU0ssIG1vZGVfaW50KTsKPiAtCVdSRUczMihEMUdSUEhfSU5URVJSVVBUX0NPTlRST0wsIER4 R1JQSF9QRkxJUF9JTlRfTUFTSyk7Cj4gLQlXUkVHMzIoRDJHUlBIX0lOVEVSUlVQVF9DT05UUk9M LCBEeEdSUEhfUEZMSVBfSU5UX01BU0spOwo+ICAgCVdSRUczMihHUkJNX0lOVF9DTlRMLCBncmJt X2ludF9jbnRsKTsKPiAgIAlpZiAoQVNJQ19JU19EQ0UzKHJkZXYpKSB7Cj4gICAJCVdSRUczMihE Q19IUEQxX0lOVF9DT05UUk9MLCBocGQxKTsKPiBAQCAtMzY3MiwxMCArMzY3MCw2IEBAIHN0YXRp YyB2b2lkIHI2MDBfaXJxX2FjayhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKPiAgIAlyZGV2 LT5pcnEuc3RhdF9yZWdzLnI2MDAuZDFncnBoX2ludCA9IFJSRUczMihEMUdSUEhfSU5URVJSVVBU X1NUQVRVUyk7Cj4gICAJcmRldi0+aXJxLnN0YXRfcmVncy5yNjAwLmQyZ3JwaF9pbnQgPSBSUkVH MzIoRDJHUlBIX0lOVEVSUlVQVF9TVEFUVVMpOwo+ICAgCj4gLQlpZiAocmRldi0+aXJxLnN0YXRf cmVncy5yNjAwLmQxZ3JwaF9pbnQgJiBEeEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVEKQo+IC0JCVdS RUczMihEMUdSUEhfSU5URVJSVVBUX1NUQVRVUywgRHhHUlBIX1BGTElQX0lOVF9DTEVBUik7Cj4g LQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5yNjAwLmQyZ3JwaF9pbnQgJiBEeEdSUEhfUEZMSVBf SU5UX09DQ1VSUkVEKQo+IC0JCVdSRUczMihEMkdSUEhfSU5URVJSVVBUX1NUQVRVUywgRHhHUlBI X1BGTElQX0lOVF9DTEVBUik7Cj4gICAJaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3MucjYwMC5kaXNw X2ludCAmIExCX0QxX1ZCTEFOS19JTlRFUlJVUFQpCj4gICAJCVdSRUczMihEMU1PREVfVkJMQU5L X1NUQVRVUywgRHhNT0RFX1ZCTEFOS19BQ0spOwo+ICAgCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdz LnI2MDAuZGlzcF9pbnQgJiBMQl9EMV9WTElORV9JTlRFUlJVUFQpCj4gQEAgLTM4NzYsNyArMzg3 MCw3IEBAIHJlc3RhcnRfaWg6Cj4gICAJCQkJCQl3YWtlX3VwKCZyZGV2LT5pcnEudmJsYW5rX3F1 ZXVlKTsKPiAgIAkJCQkJfQo+ICAgCQkJCQlpZiAoYXRvbWljX3JlYWQoJnJkZXYtPmlycS5wZmxp cFswXSkpCj4gLQkJCQkJCXJhZGVvbl9jcnRjX2hhbmRsZV92YmxhbmsocmRldiwgMCk7Cj4gKwkJ CQkJCXJhZGVvbl9jcnRjX2hhbmRsZV9mbGlwKHJkZXYsIDApOwo+ICAgCQkJCQlyZGV2LT5pcnEu c3RhdF9yZWdzLnI2MDAuZGlzcF9pbnQgJj0gfkxCX0QxX1ZCTEFOS19JTlRFUlJVUFQ7Cj4gICAJ CQkJCURSTV9ERUJVRygiSUg6IEQxIHZibGFua1xuIik7Cj4gICAJCQkJfQo+IEBAIC0zOTAyLDcg KzM4OTYsNyBAQCByZXN0YXJ0X2loOgo+ICAgCQkJCQkJd2FrZV91cCgmcmRldi0+aXJxLnZibGFu a19xdWV1ZSk7Cj4gICAJCQkJCX0KPiAgIAkJCQkJaWYgKGF0b21pY19yZWFkKCZyZGV2LT5pcnEu cGZsaXBbMV0pKQo+IC0JCQkJCQlyYWRlb25fY3J0Y19oYW5kbGVfdmJsYW5rKHJkZXYsIDEpOwo+ ICsJCQkJCQlyYWRlb25fY3J0Y19oYW5kbGVfZmxpcChyZGV2LCAxKTsKPiAgIAkJCQkJcmRldi0+ aXJxLnN0YXRfcmVncy5yNjAwLmRpc3BfaW50ICY9IH5MQl9EMl9WQkxBTktfSU5URVJSVVBUOwo+ ICAgCQkJCQlEUk1fREVCVUcoIklIOiBEMiB2YmxhbmtcbiIpOwo+ICAgCQkJCX0KPiBAQCAtMzkx OCwxNCArMzkxMiw2IEBAIHJlc3RhcnRfaWg6Cj4gICAJCQkJYnJlYWs7Cj4gICAJCQl9Cj4gICAJ CQlicmVhazsKPiAtCQljYXNlIDk6IC8qIEQxIHBmbGlwICovCj4gLQkJCURSTV9ERUJVRygiSUg6 IEQxIGZsaXBcbiIpOwo+IC0JCQlyYWRlb25fY3J0Y19oYW5kbGVfZmxpcChyZGV2LCAwKTsKPiAt CQkJYnJlYWs7Cj4gLQkJY2FzZSAxMTogLyogRDIgcGZsaXAgKi8KPiAtCQkJRFJNX0RFQlVHKCJJ SDogRDIgZmxpcFxuIik7Cj4gLQkJCXJhZGVvbl9jcnRjX2hhbmRsZV9mbGlwKHJkZXYsIDEpOwo+ IC0JCQlicmVhazsKPiAgIAkJY2FzZSAxOTogLyogSFBEL0RBQyBob3RwbHVnICovCj4gICAJCQlz d2l0Y2ggKHNyY19kYXRhKSB7Cj4gICAJCQljYXNlIDA6Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5o Cj4gaW5kZXggOGU4ZWYwOC4uN2E0NWM5MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaAo+ IEBAIC02ODEsNiArNjgxLDcgQEAgc3RydWN0IHJhZGVvbl9mbGlwX3dvcmsgewo+ICAgCXN0cnVj dCB3b3JrX3N0cnVjdAkJdW5waW5fd29yazsKPiAgIAlzdHJ1Y3QgcmFkZW9uX2RldmljZQkJKnJk ZXY7Cj4gICAJaW50CQkJCWNydGNfaWQ7Cj4gKwl1aW50NjRfdAkJCWJhc2U7Cj4gICAJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlcgkJKmZiOwo+ICAgCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZl bnQgKmV2ZW50Owo+ICAgCXN0cnVjdCByYWRlb25fYm8JCSpvbGRfcmJvOwo+IEBAIC0xODg0LDcg KzE4ODUsNiBAQCBzdHJ1Y3QgcmFkZW9uX2FzaWMgewo+ICAgCS8qIHBhZ2VmbGlwcGluZyAqLwo+ ICAgCXN0cnVjdCB7Cj4gICAJCXZvaWQgKCpwYWdlX2ZsaXApKHN0cnVjdCByYWRlb25fZGV2aWNl ICpyZGV2LCBpbnQgY3J0YywgdTY0IGNydGNfYmFzZSk7Cj4gLQkJYm9vbCAoKnBhZ2VfZmxpcF9w ZW5kaW5nKShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IGNydGMpOwo+ICAgCX0gcGZs aXA7Cj4gICB9Owo+ICAgCj4gQEAgLTI3NDYsNyArMjc0Niw2IEBAIHZvaWQgcmFkZW9uX3Jpbmdf d3JpdGUoc3RydWN0IHJhZGVvbl9yaW5nICpyaW5nLCB1aW50MzJfdCB2KTsKPiAgICNkZWZpbmUg cmFkZW9uX3BtX2luaXRfcHJvZmlsZShyZGV2KSAocmRldiktPmFzaWMtPnBtLmluaXRfcHJvZmls ZSgocmRldikpCj4gICAjZGVmaW5lIHJhZGVvbl9wbV9nZXRfZHlucG1fc3RhdGUocmRldikgKHJk ZXYpLT5hc2ljLT5wbS5nZXRfZHlucG1fc3RhdGUoKHJkZXYpKQo+ICAgI2RlZmluZSByYWRlb25f cGFnZV9mbGlwKHJkZXYsIGNydGMsIGJhc2UpIChyZGV2KS0+YXNpYy0+cGZsaXAucGFnZV9mbGlw KChyZGV2KSwgKGNydGMpLCAoYmFzZSkpCj4gLSNkZWZpbmUgcmFkZW9uX3BhZ2VfZmxpcF9wZW5k aW5nKHJkZXYsIGNydGMpIChyZGV2KS0+YXNpYy0+cGZsaXAucGFnZV9mbGlwX3BlbmRpbmcoKHJk ZXYpLCAoY3J0YykpCj4gICAjZGVmaW5lIHJhZGVvbl93YWl0X2Zvcl92YmxhbmsocmRldiwgY3J0 YykgKHJkZXYpLT5hc2ljLT5kaXNwbGF5LndhaXRfZm9yX3ZibGFuaygocmRldiksIChjcnRjKSkK PiAgICNkZWZpbmUgcmFkZW9uX21jX3dhaXRfZm9yX2lkbGUocmRldikgKHJkZXYpLT5hc2ljLT5t Y193YWl0X2Zvcl9pZGxlKChyZGV2KSkKPiAgICNkZWZpbmUgcmFkZW9uX2dldF94Y2xrKHJkZXYp IChyZGV2KS0+YXNpYy0+Z2V0X3hjbGsoKHJkZXYpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9hc2ljLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9hc2ljLmMKPiBpbmRleCA3ZWYzZmM2Li45OTQzZmIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX2FzaWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX2FzaWMuYwo+IEBAIC0yNDksNyArMjQ5LDYgQEAgc3RhdGljIHN0cnVjdCByYWRl b25fYXNpYyByMTAwX2FzaWMgPSB7Cj4gICAJfSwKPiAgIAkucGZsaXAgPSB7Cj4gICAJCS5wYWdl X2ZsaXAgPSAmcjEwMF9wYWdlX2ZsaXAsCj4gLQkJLnBhZ2VfZmxpcF9wZW5kaW5nID0gJnIxMDBf cGFnZV9mbGlwX3BlbmRpbmcsCj4gICAJfSwKPiAgIH07Cj4gICAKPiBAQCAtMzE1LDcgKzMxNCw2 IEBAIHN0YXRpYyBzdHJ1Y3QgcmFkZW9uX2FzaWMgcjIwMF9hc2ljID0gewo+ICAgCX0sCj4gICAJ LnBmbGlwID0gewo+ICAgCQkucGFnZV9mbGlwID0gJnIxMDBfcGFnZV9mbGlwLAo+IC0JCS5wYWdl X2ZsaXBfcGVuZGluZyA9ICZyMTAwX3BhZ2VfZmxpcF9wZW5kaW5nLAo+ICAgCX0sCj4gICB9Owo+ ICAgCj4gQEAgLTM5NSw3ICszOTMsNiBAQCBzdGF0aWMgc3RydWN0IHJhZGVvbl9hc2ljIHIzMDBf YXNpYyA9IHsKPiAgIAl9LAo+ICAgCS5wZmxpcCA9IHsKPiAgIAkJLnBhZ2VfZmxpcCA9ICZyMTAw X3BhZ2VfZmxpcCwKPiAtCQkucGFnZV9mbGlwX3BlbmRpbmcgPSAmcjEwMF9wYWdlX2ZsaXBfcGVu ZGluZywKPiAgIAl9LAo+ICAgfTsKPiAgIAo+IEBAIC00NjEsNyArNDU4LDYgQEAgc3RhdGljIHN0 cnVjdCByYWRlb25fYXNpYyByMzAwX2FzaWNfcGNpZSA9IHsKPiAgIAl9LAo+ICAgCS5wZmxpcCA9 IHsKPiAgIAkJLnBhZ2VfZmxpcCA9ICZyMTAwX3BhZ2VfZmxpcCwKPiAtCQkucGFnZV9mbGlwX3Bl bmRpbmcgPSAmcjEwMF9wYWdlX2ZsaXBfcGVuZGluZywKPiAgIAl9LAo+ICAgfTsKPiAgIAo+IEBA IC01MjcsNyArNTIzLDYgQEAgc3RhdGljIHN0cnVjdCByYWRlb25fYXNpYyByNDIwX2FzaWMgPSB7 Cj4gICAJfSwKPiAgIAkucGZsaXAgPSB7Cj4gICAJCS5wYWdlX2ZsaXAgPSAmcjEwMF9wYWdlX2Zs aXAsCj4gLQkJLnBhZ2VfZmxpcF9wZW5kaW5nID0gJnIxMDBfcGFnZV9mbGlwX3BlbmRpbmcsCj4g ICAJfSwKPiAgIH07Cj4gICAKPiBAQCAtNTkzLDcgKzU4OCw2IEBAIHN0YXRpYyBzdHJ1Y3QgcmFk ZW9uX2FzaWMgcnM0MDBfYXNpYyA9IHsKPiAgIAl9LAo+ICAgCS5wZmxpcCA9IHsKPiAgIAkJLnBh Z2VfZmxpcCA9ICZyMTAwX3BhZ2VfZmxpcCwKPiAtCQkucGFnZV9mbGlwX3BlbmRpbmcgPSAmcjEw MF9wYWdlX2ZsaXBfcGVuZGluZywKPiAgIAl9LAo+ICAgfTsKPiAgIAo+IEBAIC02NjIsNyArNjU2 LDYgQEAgc3RhdGljIHN0cnVjdCByYWRlb25fYXNpYyByczYwMF9hc2ljID0gewo+ICAgCX0sCj4g ICAJLnBmbGlwID0gewo+ICAgCQkucGFnZV9mbGlwID0gJnJzNjAwX3BhZ2VfZmxpcCwKPiAtCQku cGFnZV9mbGlwX3BlbmRpbmcgPSAmcnM2MDBfcGFnZV9mbGlwX3BlbmRpbmcsCj4gICAJfSwKPiAg IH07Cj4gICAKPiBAQCAtNzMwLDcgKzcyMyw2IEBAIHN0YXRpYyBzdHJ1Y3QgcmFkZW9uX2FzaWMg cnM2OTBfYXNpYyA9IHsKPiAgIAl9LAo+ICAgCS5wZmxpcCA9IHsKPiAgIAkJLnBhZ2VfZmxpcCA9 ICZyczYwMF9wYWdlX2ZsaXAsCj4gLQkJLnBhZ2VfZmxpcF9wZW5kaW5nID0gJnJzNjAwX3BhZ2Vf ZmxpcF9wZW5kaW5nLAo+ICAgCX0sCj4gICB9Owo+ICAgCj4gQEAgLTc5Niw3ICs3ODgsNiBAQCBz dGF0aWMgc3RydWN0IHJhZGVvbl9hc2ljIHJ2NTE1X2FzaWMgPSB7Cj4gICAJfSwKPiAgIAkucGZs aXAgPSB7Cj4gICAJCS5wYWdlX2ZsaXAgPSAmcnM2MDBfcGFnZV9mbGlwLAo+IC0JCS5wYWdlX2Zs aXBfcGVuZGluZyA9ICZyczYwMF9wYWdlX2ZsaXBfcGVuZGluZywKPiAgIAl9LAo+ICAgfTsKPiAg IAo+IEBAIC04NjIsNyArODUzLDYgQEAgc3RhdGljIHN0cnVjdCByYWRlb25fYXNpYyByNTIwX2Fz aWMgPSB7Cj4gICAJfSwKPiAgIAkucGZsaXAgPSB7Cj4gICAJCS5wYWdlX2ZsaXAgPSAmcnM2MDBf cGFnZV9mbGlwLAo+IC0JCS5wYWdlX2ZsaXBfcGVuZGluZyA9ICZyczYwMF9wYWdlX2ZsaXBfcGVu ZGluZywKPiAgIAl9LAo+ICAgfTsKPiAgIAo+IEBAIC05NjEsNyArOTUxLDYgQEAgc3RhdGljIHN0 cnVjdCByYWRlb25fYXNpYyByNjAwX2FzaWMgPSB7Cj4gICAJfSwKPiAgIAkucGZsaXAgPSB7Cj4g ICAJCS5wYWdlX2ZsaXAgPSAmcnM2MDBfcGFnZV9mbGlwLAo+IC0JCS5wYWdlX2ZsaXBfcGVuZGlu ZyA9ICZyczYwMF9wYWdlX2ZsaXBfcGVuZGluZywKPiAgIAl9LAo+ICAgfTsKPiAgIAo+IEBAIC0x MDUyLDcgKzEwNDEsNiBAQCBzdGF0aWMgc3RydWN0IHJhZGVvbl9hc2ljIHJ2Nnh4X2FzaWMgPSB7 Cj4gICAJfSwKPiAgIAkucGZsaXAgPSB7Cj4gICAJCS5wYWdlX2ZsaXAgPSAmcnM2MDBfcGFnZV9m bGlwLAo+IC0JCS5wYWdlX2ZsaXBfcGVuZGluZyA9ICZyczYwMF9wYWdlX2ZsaXBfcGVuZGluZywK PiAgIAl9LAo+ICAgfTsKPiAgIAo+IEBAIC0xMTQzLDcgKzExMzEsNiBAQCBzdGF0aWMgc3RydWN0 IHJhZGVvbl9hc2ljIHJzNzgwX2FzaWMgPSB7Cj4gICAJfSwKPiAgIAkucGZsaXAgPSB7Cj4gICAJ CS5wYWdlX2ZsaXAgPSAmcnM2MDBfcGFnZV9mbGlwLAo+IC0JCS5wYWdlX2ZsaXBfcGVuZGluZyA9 ICZyczYwMF9wYWdlX2ZsaXBfcGVuZGluZywKPiAgIAl9LAo+ICAgfTsKPiAgIAo+IEBAIC0xMjQ5 LDcgKzEyMzYsNiBAQCBzdGF0aWMgc3RydWN0IHJhZGVvbl9hc2ljIHJ2NzcwX2FzaWMgPSB7Cj4g ICAJfSwKPiAgIAkucGZsaXAgPSB7Cj4gICAJCS5wYWdlX2ZsaXAgPSAmcnY3NzBfcGFnZV9mbGlw LAo+IC0JCS5wYWdlX2ZsaXBfcGVuZGluZyA9ICZydjc3MF9wYWdlX2ZsaXBfcGVuZGluZywKPiAg IAl9LAo+ICAgfTsKPiAgIAo+IEBAIC0xMzY4LDcgKzEzNTQsNiBAQCBzdGF0aWMgc3RydWN0IHJh ZGVvbl9hc2ljIGV2ZXJncmVlbl9hc2ljID0gewo+ICAgCX0sCj4gICAJLnBmbGlwID0gewo+ICAg CQkucGFnZV9mbGlwID0gJmV2ZXJncmVlbl9wYWdlX2ZsaXAsCj4gLQkJLnBhZ2VfZmxpcF9wZW5k aW5nID0gJmV2ZXJncmVlbl9wYWdlX2ZsaXBfcGVuZGluZywKPiAgIAl9LAo+ICAgfTsKPiAgIAo+ IEBAIC0xNDYwLDcgKzE0NDUsNiBAQCBzdGF0aWMgc3RydWN0IHJhZGVvbl9hc2ljIHN1bW9fYXNp YyA9IHsKPiAgIAl9LAo+ICAgCS5wZmxpcCA9IHsKPiAgIAkJLnBhZ2VfZmxpcCA9ICZldmVyZ3Jl ZW5fcGFnZV9mbGlwLAo+IC0JCS5wYWdlX2ZsaXBfcGVuZGluZyA9ICZldmVyZ3JlZW5fcGFnZV9m bGlwX3BlbmRpbmcsCj4gICAJfSwKPiAgIH07Cj4gICAKPiBAQCAtMTU1Myw3ICsxNTM3LDYgQEAg c3RhdGljIHN0cnVjdCByYWRlb25fYXNpYyBidGNfYXNpYyA9IHsKPiAgIAl9LAo+ICAgCS5wZmxp cCA9IHsKPiAgIAkJLnBhZ2VfZmxpcCA9ICZldmVyZ3JlZW5fcGFnZV9mbGlwLAo+IC0JCS5wYWdl X2ZsaXBfcGVuZGluZyA9ICZldmVyZ3JlZW5fcGFnZV9mbGlwX3BlbmRpbmcsCj4gICAJfSwKPiAg IH07Cj4gICAKPiBAQCAtMTY5Nyw3ICsxNjgwLDYgQEAgc3RhdGljIHN0cnVjdCByYWRlb25fYXNp YyBjYXltYW5fYXNpYyA9IHsKPiAgIAl9LAo+ICAgCS5wZmxpcCA9IHsKPiAgIAkJLnBhZ2VfZmxp cCA9ICZldmVyZ3JlZW5fcGFnZV9mbGlwLAo+IC0JCS5wYWdlX2ZsaXBfcGVuZGluZyA9ICZldmVy Z3JlZW5fcGFnZV9mbGlwX3BlbmRpbmcsCj4gICAJfSwKPiAgIH07Cj4gICAKPiBAQCAtMTc5OCw3 ICsxNzgwLDYgQEAgc3RhdGljIHN0cnVjdCByYWRlb25fYXNpYyB0cmluaXR5X2FzaWMgPSB7Cj4g ICAJfSwKPiAgIAkucGZsaXAgPSB7Cj4gICAJCS5wYWdlX2ZsaXAgPSAmZXZlcmdyZWVuX3BhZ2Vf ZmxpcCwKPiAtCQkucGFnZV9mbGlwX3BlbmRpbmcgPSAmZXZlcmdyZWVuX3BhZ2VfZmxpcF9wZW5k aW5nLAo+ICAgCX0sCj4gICB9Owo+ICAgCj4gQEAgLTE5MjksNyArMTkxMCw2IEBAIHN0YXRpYyBz dHJ1Y3QgcmFkZW9uX2FzaWMgc2lfYXNpYyA9IHsKPiAgIAl9LAo+ICAgCS5wZmxpcCA9IHsKPiAg IAkJLnBhZ2VfZmxpcCA9ICZldmVyZ3JlZW5fcGFnZV9mbGlwLAo+IC0JCS5wYWdlX2ZsaXBfcGVu ZGluZyA9ICZldmVyZ3JlZW5fcGFnZV9mbGlwX3BlbmRpbmcsCj4gICAJfSwKPiAgIH07Cj4gICAK PiBAQCAtMjA5Miw3ICsyMDcyLDYgQEAgc3RhdGljIHN0cnVjdCByYWRlb25fYXNpYyBjaV9hc2lj ID0gewo+ICAgCX0sCj4gICAJLnBmbGlwID0gewo+ICAgCQkucGFnZV9mbGlwID0gJmV2ZXJncmVl bl9wYWdlX2ZsaXAsCj4gLQkJLnBhZ2VfZmxpcF9wZW5kaW5nID0gJmV2ZXJncmVlbl9wYWdlX2Zs aXBfcGVuZGluZywKPiAgIAl9LAo+ICAgfTsKPiAgIAo+IEBAIC0yMTk3LDcgKzIxNzYsNiBAQCBz dGF0aWMgc3RydWN0IHJhZGVvbl9hc2ljIGt2X2FzaWMgPSB7Cj4gICAJfSwKPiAgIAkucGZsaXAg PSB7Cj4gICAJCS5wYWdlX2ZsaXAgPSAmZXZlcmdyZWVuX3BhZ2VfZmxpcCwKPiAtCQkucGFnZV9m bGlwX3BlbmRpbmcgPSAmZXZlcmdyZWVuX3BhZ2VfZmxpcF9wZW5kaW5nLAo+ICAgCX0sCj4gICB9 Owo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2FzaWMu aCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2FzaWMuaAo+IGluZGV4IDY0NWEzZGUu LjE3MGE4MGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXNp Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXNpYy5oCj4gQEAgLTEz Nyw3ICsxMzcsNiBAQCBleHRlcm4gdm9pZCByMTAwX3BtX2luaXRfcHJvZmlsZShzdHJ1Y3QgcmFk ZW9uX2RldmljZSAqcmRldik7Cj4gICBleHRlcm4gdm9pZCByMTAwX3BtX2dldF9keW5wbV9zdGF0 ZShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldik7Cj4gICBleHRlcm4gdm9pZCByMTAwX3BhZ2Vf ZmxpcChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IGNydGMsCj4gICAJCQkgICB1NjQg Y3J0Y19iYXNlKTsKPiAtZXh0ZXJuIGJvb2wgcjEwMF9wYWdlX2ZsaXBfcGVuZGluZyhzdHJ1Y3Qg cmFkZW9uX2RldmljZSAqcmRldiwgaW50IGNydGMpOwo+ICAgZXh0ZXJuIHZvaWQgcjEwMF93YWl0 X2Zvcl92Ymxhbmsoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRjKTsKPiAgIGV4 dGVybiBpbnQgcjEwMF9tY193YWl0X2Zvcl9pZGxlKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2 KTsKPiAgIAo+IEBAIC0yNDQsNyArMjQzLDYgQEAgZXh0ZXJuIHZvaWQgcnM2MDBfcG1fcHJlcGFy ZShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldik7Cj4gICBleHRlcm4gdm9pZCByczYwMF9wbV9m aW5pc2goc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpOwo+ICAgZXh0ZXJuIHZvaWQgcnM2MDBf cGFnZV9mbGlwKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQgY3J0YywKPiAgIAkJCSAg ICB1NjQgY3J0Y19iYXNlKTsKPiAtZXh0ZXJuIGJvb2wgcnM2MDBfcGFnZV9mbGlwX3BlbmRpbmco c3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRjKTsKPiAgIHZvaWQgcnM2MDBfc2V0 X3NhZmVfcmVnaXN0ZXJzKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KTsKPiAgIGV4dGVybiB2 b2lkIGF2aXZvX3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50 IGNydGMpOwo+ICAgZXh0ZXJuIGludCByczYwMF9tY193YWl0X2Zvcl9pZGxlKHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2KTsKPiBAQCAtNDQ5LDcgKzQ0Nyw2IEBAIGludCBydjc3MF9zdXNwZW5k KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KTsKPiAgIGludCBydjc3MF9yZXN1bWUoc3RydWN0 IHJhZGVvbl9kZXZpY2UgKnJkZXYpOwo+ICAgdm9pZCBydjc3MF9wbV9taXNjKHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2KTsKPiAgIHZvaWQgcnY3NzBfcGFnZV9mbGlwKHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2LCBpbnQgY3J0YywgdTY0IGNydGNfYmFzZSk7Cj4gLWJvb2wgcnY3NzBfcGFn ZV9mbGlwX3BlbmRpbmcoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRjKTsKPiAg IHZvaWQgcjcwMF92cmFtX2d0dF9sb2NhdGlvbihzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwg c3RydWN0IHJhZGVvbl9tYyAqbWMpOwo+ICAgdm9pZCByNzAwX2NwX3N0b3Aoc3RydWN0IHJhZGVv bl9kZXZpY2UgKnJkZXYpOwo+ICAgdm9pZCByNzAwX2NwX2Zpbmkoc3RydWN0IHJhZGVvbl9kZXZp Y2UgKnJkZXYpOwo+IEBAIC01MTcsNyArNTE0LDYgQEAgaW50IHN1bW9fc2V0X3V2ZF9jbG9ja3Mo c3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHUzMiB2Y2xrLCB1MzIgZGNsayk7Cj4gICBpbnQg ZXZlcmdyZWVuX3NldF91dmRfY2xvY2tzKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCB1MzIg dmNsaywgdTMyIGRjbGspOwo+ICAgZXh0ZXJuIHZvaWQgZXZlcmdyZWVuX3BhZ2VfZmxpcChzdHJ1 Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IGNydGMsCj4gICAJCQkJdTY0IGNydGNfYmFzZSk7 Cj4gLWV4dGVybiBib29sIGV2ZXJncmVlbl9wYWdlX2ZsaXBfcGVuZGluZyhzdHJ1Y3QgcmFkZW9u X2RldmljZSAqcmRldiwgaW50IGNydGMpOwo+ICAgZXh0ZXJuIHZvaWQgZGNlNF93YWl0X2Zvcl92 Ymxhbmsoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRjKTsKPiAgIHZvaWQgZXZl cmdyZWVuX2Rpc2FibGVfaW50ZXJydXB0X3N0YXRlKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2 KTsKPiAgIGludCBldmVyZ3JlZW5fbWNfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgcmFkZW9uX2Rldmlj ZSAqcmRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rpc3BsYXkuYwo+IGluZGV4 IDY1ODgyY2QuLmU2NjMyM2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGlz cGxheS5jCj4gQEAgLTI4MSw1MCArMjgxLDYgQEAgc3RhdGljIHZvaWQgcmFkZW9uX3VucGluX3dv cmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKPiAgIAlrZnJlZSh3b3JrKTsKPiAg IH0KPiAgIAo+IC12b2lkIHJhZGVvbl9jcnRjX2hhbmRsZV92Ymxhbmsoc3RydWN0IHJhZGVvbl9k ZXZpY2UgKnJkZXYsIGludCBjcnRjX2lkKQo+IC17Cj4gLQlzdHJ1Y3QgcmFkZW9uX2NydGMgKnJh ZGVvbl9jcnRjID0gcmRldi0+bW9kZV9pbmZvLmNydGNzW2NydGNfaWRdOwo+IC0JdW5zaWduZWQg bG9uZyBmbGFnczsKPiAtCXUzMiB1cGRhdGVfcGVuZGluZzsKPiAtCWludCB2cG9zLCBocG9zOwo+ IC0KPiAtCS8qIGNhbiBoYXBwZW4gZHVyaW5nIGluaXRpYWxpemF0aW9uICovCj4gLQlpZiAocmFk ZW9uX2NydGMgPT0gTlVMTCkKPiAtCQlyZXR1cm47Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUo JnJkZXYtPmRkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiAtCWlmIChyYWRlb25fY3J0Yy0+Zmxp cF9zdGF0dXMgIT0gUkFERU9OX0ZMSVBfU1VCTUlUVEVEKSB7Cj4gLQkJRFJNX0RFQlVHX0RSSVZF UigicmFkZW9uX2NydGMtPmZsaXBfc3RhdHVzID0gJWQgIT0gIgo+IC0JCQkJICJSQURFT05fRkxJ UF9TVUJNSVRURUQoJWQpXG4iLAo+IC0JCQkJIHJhZGVvbl9jcnRjLT5mbGlwX3N0YXR1cywKPiAt CQkJCSBSQURFT05fRkxJUF9TVUJNSVRURUQpOwo+IC0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnJkZXYtPmRkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4gLQo+ IC0JdXBkYXRlX3BlbmRpbmcgPSByYWRlb25fcGFnZV9mbGlwX3BlbmRpbmcocmRldiwgY3J0Y19p ZCk7Cj4gLQo+IC0JLyogSGFzIHRoZSBwYWdlZmxpcCBhbHJlYWR5IGNvbXBsZXRlZCBpbiBjcnRj LCBvciBpcyBpdCBjZXJ0YWluCj4gLQkgKiB0byBjb21wbGV0ZSBpbiB0aGlzIHZibGFuaz8KPiAt CSAqLwo+IC0JaWYgKHVwZGF0ZV9wZW5kaW5nICYmCj4gLQkgICAgKERSTV9TQ0FOT1VUUE9TX1ZB TElEICYgcmFkZW9uX2dldF9jcnRjX3NjYW5vdXRwb3MocmRldi0+ZGRldiwgY3J0Y19pZCwgMCwK PiAtCQkJCQkJCSAgICAgICAmdnBvcywgJmhwb3MsIE5VTEwsIE5VTEwpKSAmJgo+IC0JICAgICgo dnBvcyA+PSAoOTkgKiByZGV2LT5tb2RlX2luZm8uY3J0Y3NbY3J0Y19pZF0tPmJhc2UuaHdtb2Rl LmNydGNfdmRpc3BsYXkpLzEwMCkgfHwKPiAtCSAgICAgKHZwb3MgPCAwICYmICFBU0lDX0lTX0FW SVZPKHJkZXYpKSkpIHsKPiAtCQkvKiBjcnRjIGRpZG4ndCBmbGlwIGluIHRoaXMgdGFyZ2V0IHZi bGFuayBpbnRlcnZhbCwKPiAtCQkgKiBidXQgZmxpcCBpcyBwZW5kaW5nIGluIGNydGMuIEJhc2Vk IG9uIHRoZSBjdXJyZW50Cj4gLQkJICogc2Nhbm91dCBwb3NpdGlvbiB3ZSBrbm93IHRoYXQgdGhl IGN1cnJlbnQgZnJhbWUgaXMKPiAtCQkgKiAobmVhcmx5KSBjb21wbGV0ZSBhbmQgdGhlIGZsaXAg d2lsbCAobGlrZWx5KQo+IC0JCSAqIGNvbXBsZXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIG5l eHQgZnJhbWUuCj4gLQkJICovCj4gLQkJdXBkYXRlX3BlbmRpbmcgPSAwOwo+IC0JfQo+IC0Jc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmcmRldi0+ZGRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+IC0J aWYgKCF1cGRhdGVfcGVuZGluZykKPiAtCQlyYWRlb25fY3J0Y19oYW5kbGVfZmxpcChyZGV2LCBj cnRjX2lkKTsKPiAtfQo+IC0KPiAgIC8qKgo+ICAgICogcmFkZW9uX2NydGNfaGFuZGxlX2ZsaXAg LSBwYWdlIGZsaXAgY29tcGxldGVkCj4gICAgKgo+IEBAIC0zNTQsNiArMzEwLDkgQEAgdm9pZCBy YWRlb25fY3J0Y19oYW5kbGVfZmxpcChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IGNy dGNfaWQpCj4gICAJCXJldHVybjsKPiAgIAl9Cj4gICAKPiArCS8qIGRvIHRoZSBmbGlwIChtbWlv KSAqLwo+ICsJcmFkZW9uX3BhZ2VfZmxpcChyZGV2LCByYWRlb25fY3J0Yy0+Y3J0Y19pZCwgd29y ay0+YmFzZSk7Cj4gKwo+ICAgCS8qIFBhZ2VmbGlwIGNvbXBsZXRlZC4gQ2xlYW4gdXAuICovCj4g ICAJcmFkZW9uX2NydGMtPmZsaXBfc3RhdHVzID0gUkFERU9OX0ZMSVBfTk9ORTsKPiAgIAlyYWRl b25fY3J0Yy0+ZmxpcF93b3JrID0gTlVMTDsKPiBAQCAtNDc5LDkgKzQzOCw3IEBAIHN0YXRpYyB2 b2lkIHJhZGVvbl9mbGlwX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKPiAg IAkvKiBzZXQgdGhlIHByb3BlciBpbnRlcnJ1cHQgKi8KPiAgIAlyYWRlb25faXJxX2ttc19wZmxp cF9pcnFfZ2V0KHJkZXYsIHJhZGVvbl9jcnRjLT5jcnRjX2lkKTsKPiAgIAo+IC0JLyogZG8gdGhl IGZsaXAgKG1taW8pICovCj4gLQlyYWRlb25fcGFnZV9mbGlwKHJkZXYsIHJhZGVvbl9jcnRjLT5j cnRjX2lkLCBiYXNlKTsKPiAtCj4gKwl3b3JrLT5iYXNlID0gYmFzZTsKPiAgIAlyYWRlb25fY3J0 Yy0+ZmxpcF9zdGF0dXMgPSBSQURFT05fRkxJUF9TVUJNSVRURUQ7Cj4gICAJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gICAJdXBfcmVhZCgm cmRldi0+ZXhjbHVzaXZlX2xvY2spOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9tb2RlLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tb2RlLmgK PiBpbmRleCBlZDZiNmUwLi4xODEwYTEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX21vZGUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X21vZGUuaAo+IEBAIC05MTMsNyArOTEzLDYgQEAgYm9vbCByYWRlb25fZmJkZXZfcm9ial9pc19m YihzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9ibyAqcm9iaikKPiAg IAo+ICAgdm9pZCByYWRlb25fZmJfb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgcmFkZW9uX2Rl dmljZSAqcmRldik7Cj4gICAKPiAtdm9pZCByYWRlb25fY3J0Y19oYW5kbGVfdmJsYW5rKHN0cnVj dCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQgY3J0Y19pZCk7Cj4gICB2b2lkIHJhZGVvbl9jcnRj X2hhbmRsZV9mbGlwKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQgY3J0Y19pZCk7Cj4g ICAKPiAgIGludCByYWRlb25fYWxpZ25fcGl0Y2goc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYs IGludCB3aWR0aCwgaW50IGJwcCwgYm9vbCB0aWxlZCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcnM2MDAuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcnM2MDAuYwo+ IGluZGV4IDgxOGY0ZWIuLmI1ZTYzYTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yczYwMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yczYwMC5jCj4gQEAg LTExMyw3ICsxMTMsMTAgQEAgdm9pZCByczYwMF9wYWdlX2ZsaXAoc3RydWN0IHJhZGVvbl9kZXZp Y2UgKnJkZXYsIGludCBjcnRjX2lkLCB1NjQgY3J0Y19iYXNlKQo+ICAgewo+ICAgCXN0cnVjdCBy YWRlb25fY3J0YyAqcmFkZW9uX2NydGMgPSByZGV2LT5tb2RlX2luZm8uY3J0Y3NbY3J0Y19pZF07 Cj4gICAJdTMyIHRtcCA9IFJSRUczMihBVklWT19EMUdSUEhfVVBEQVRFICsgcmFkZW9uX2NydGMt PmNydGNfb2Zmc2V0KTsKPiAtCWludCBpOwo+ICsKPiArCS8qIFRha2Ugc3VyZmFjZSB1cGRhdGVz IGF0IGhvcml6b250YWwgYmxhbmsgKi8KPiArCVdSRUczMihBVklWT19EMUdSUEhfRkxJUF9DT05U Uk9MICsgcmFkZW9uX2NydGMtPmNydGNfb2Zmc2V0LAo+ICsJICAgICAgIEFWSVZPX0QxR1JQSF9T VVJGQUNFX1VQREFURV9IX1JFVFJBQ0VfRU4pOwo+ICAgCj4gICAJLyogTG9jayB0aGUgZ3JhcGhp Y3MgdXBkYXRlIGxvY2sgKi8KPiAgIAl0bXAgfD0gQVZJVk9fRDFHUlBIX1VQREFURV9MT0NLOwo+ IEBAIC0xMjUsMjggKzEyOCwxMSBAQCB2b2lkIHJzNjAwX3BhZ2VfZmxpcChzdHJ1Y3QgcmFkZW9u X2RldmljZSAqcmRldiwgaW50IGNydGNfaWQsIHU2NCBjcnRjX2Jhc2UpCj4gICAJV1JFRzMyKEFW SVZPX0QxR1JQSF9QUklNQVJZX1NVUkZBQ0VfQUREUkVTUyArIHJhZGVvbl9jcnRjLT5jcnRjX29m ZnNldCwKPiAgIAkgICAgICAgKHUzMiljcnRjX2Jhc2UpOwo+ICAgCj4gLQkvKiBXYWl0IGZvciB1 cGRhdGVfcGVuZGluZyB0byBnbyBoaWdoLiAqLwo+IC0JZm9yIChpID0gMDsgaSA8IHJkZXYtPnVz ZWNfdGltZW91dDsgaSsrKSB7Cj4gLQkJaWYgKFJSRUczMihBVklWT19EMUdSUEhfVVBEQVRFICsg cmFkZW9uX2NydGMtPmNydGNfb2Zmc2V0KSAmIEFWSVZPX0QxR1JQSF9TVVJGQUNFX1VQREFURV9Q RU5ESU5HKQo+IC0JCQlicmVhazsKPiAtCQl1ZGVsYXkoMSk7Cj4gLQl9Cj4gLQlEUk1fREVCVUco IlVwZGF0ZSBwZW5kaW5nIG5vdyBoaWdoLiBVbmxvY2tpbmcgdnVwZGF0ZV9sb2NrLlxuIik7Cj4g LQo+IC0JLyogVW5sb2NrIHRoZSBsb2NrLCBzbyBkb3VibGUtYnVmZmVyaW5nIGNhbiB0YWtlIHBs YWNlIGluc2lkZSB2YmxhbmsgKi8KPiArCS8qIFVubG9jayB0aGUgbG9jaywgc28gZG91YmxlLWJ1 ZmZlcmluZyBjYW4gdGFrZSBwbGFjZSBpbnNpZGUgaGJsYW5rICovCj4gICAJdG1wICY9IH5BVklW T19EMUdSUEhfVVBEQVRFX0xPQ0s7Cj4gICAJV1JFRzMyKEFWSVZPX0QxR1JQSF9VUERBVEUgKyBy YWRlb25fY3J0Yy0+Y3J0Y19vZmZzZXQsIHRtcCk7Cj4gICB9Cj4gICAKPiAtYm9vbCByczYwMF9w YWdlX2ZsaXBfcGVuZGluZyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IGNydGNfaWQp Cj4gLXsKPiAtCXN0cnVjdCByYWRlb25fY3J0YyAqcmFkZW9uX2NydGMgPSByZGV2LT5tb2RlX2lu Zm8uY3J0Y3NbY3J0Y19pZF07Cj4gLQo+IC0JLyogUmV0dXJuIGN1cnJlbnQgdXBkYXRlX3BlbmRp bmcgc3RhdHVzOiAqLwo+IC0JcmV0dXJuICEhKFJSRUczMihBVklWT19EMUdSUEhfVVBEQVRFICsg cmFkZW9uX2NydGMtPmNydGNfb2Zmc2V0KSAmCj4gLQkJQVZJVk9fRDFHUlBIX1NVUkZBQ0VfVVBE QVRFX1BFTkRJTkcpOwo+IC19Cj4gLQo+ICAgdm9pZCBhdml2b19wcm9ncmFtX2ZtdChzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gICB7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGVuY29kZXItPmRldjsKPiBAQCAtNzkwLDcgKzc3Niw3IEBAIGludCByczYwMF9pcnFfcHJvY2Vz cyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKPiAgIAkJCQl3YWtlX3VwKCZyZGV2LT5pcnEu dmJsYW5rX3F1ZXVlKTsKPiAgIAkJCX0KPiAgIAkJCWlmIChhdG9taWNfcmVhZCgmcmRldi0+aXJx LnBmbGlwWzBdKSkKPiAtCQkJCXJhZGVvbl9jcnRjX2hhbmRsZV92YmxhbmsocmRldiwgMCk7Cj4g KwkJCQlyYWRlb25fY3J0Y19oYW5kbGVfZmxpcChyZGV2LCAwKTsKPiAgIAkJfQo+ICAgCQlpZiAo R18wMDdFRENfTEJfRDJfVkJMQU5LX0lOVEVSUlVQVChyZGV2LT5pcnEuc3RhdF9yZWdzLnI1MDAu ZGlzcF9pbnQpKSB7Cj4gICAJCQlpZiAocmRldi0+aXJxLmNydGNfdmJsYW5rX2ludFsxXSkgewo+ IEBAIC03OTksNyArNzg1LDcgQEAgaW50IHJzNjAwX2lycV9wcm9jZXNzKHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2KQo+ICAgCQkJCXdha2VfdXAoJnJkZXYtPmlycS52YmxhbmtfcXVldWUpOwo+ ICAgCQkJfQo+ICAgCQkJaWYgKGF0b21pY19yZWFkKCZyZGV2LT5pcnEucGZsaXBbMV0pKQo+IC0J CQkJcmFkZW9uX2NydGNfaGFuZGxlX3ZibGFuayhyZGV2LCAxKTsKPiArCQkJCXJhZGVvbl9jcnRj X2hhbmRsZV9mbGlwKHJkZXYsIDEpOwo+ICAgCQl9Cj4gICAJCWlmIChHXzAwN0VEQ19EQ19IT1Rf UExVR19ERVRFQ1QxX0lOVEVSUlVQVChyZGV2LT5pcnEuc3RhdF9yZWdzLnI1MDAuZGlzcF9pbnQp KSB7Cj4gICAJCQlxdWV1ZV9ob3RwbHVnID0gdHJ1ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9ydjc3MC5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9ydjc3MC5jCj4g aW5kZXggOTdiNzc2Ni4uZWY2NmJlNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3J2NzcwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3J2NzcwLmMKPiBAQCAt ODA1LDcgKzgwNSwxMCBAQCB2b2lkIHJ2NzcwX3BhZ2VfZmxpcChzdHJ1Y3QgcmFkZW9uX2Rldmlj ZSAqcmRldiwgaW50IGNydGNfaWQsIHU2NCBjcnRjX2Jhc2UpCj4gICB7Cj4gICAJc3RydWN0IHJh ZGVvbl9jcnRjICpyYWRlb25fY3J0YyA9IHJkZXYtPm1vZGVfaW5mby5jcnRjc1tjcnRjX2lkXTsK PiAgIAl1MzIgdG1wID0gUlJFRzMyKEFWSVZPX0QxR1JQSF9VUERBVEUgKyByYWRlb25fY3J0Yy0+ Y3J0Y19vZmZzZXQpOwo+IC0JaW50IGk7Cj4gKwo+ICsJLyogVGFrZSBzdXJmYWNlIHVwZGF0ZXMg YXQgaG9yaXpvbnRhbCBibGFuayAqLwo+ICsJV1JFRzMyKEFWSVZPX0QxR1JQSF9GTElQX0NPTlRS T0wgKyByYWRlb25fY3J0Yy0+Y3J0Y19vZmZzZXQsCj4gKwkgICAgICAgQVZJVk9fRDFHUlBIX1NV UkZBQ0VfVVBEQVRFX0hfUkVUUkFDRV9FTik7Cj4gICAKPiAgIAkvKiBMb2NrIHRoZSBncmFwaGlj cyB1cGRhdGUgbG9jayAqLwo+ICAgCXRtcCB8PSBBVklWT19EMUdSUEhfVVBEQVRFX0xPQ0s7Cj4g QEAgLTgyNCwyOCArODI3LDExIEBAIHZvaWQgcnY3NzBfcGFnZV9mbGlwKHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2LCBpbnQgY3J0Y19pZCwgdTY0IGNydGNfYmFzZSkKPiAgIAlXUkVHMzIoRDFH UlBIX1BSSU1BUllfU1VSRkFDRV9BRERSRVNTICsgcmFkZW9uX2NydGMtPmNydGNfb2Zmc2V0LAo+ ICAgCSAgICAgICAodTMyKWNydGNfYmFzZSk7Cj4gICAKPiAtCS8qIFdhaXQgZm9yIHVwZGF0ZV9w ZW5kaW5nIHRvIGdvIGhpZ2guICovCj4gLQlmb3IgKGkgPSAwOyBpIDwgcmRldi0+dXNlY190aW1l b3V0OyBpKyspIHsKPiAtCQlpZiAoUlJFRzMyKEFWSVZPX0QxR1JQSF9VUERBVEUgKyByYWRlb25f Y3J0Yy0+Y3J0Y19vZmZzZXQpICYgQVZJVk9fRDFHUlBIX1NVUkZBQ0VfVVBEQVRFX1BFTkRJTkcp Cj4gLQkJCWJyZWFrOwo+IC0JCXVkZWxheSgxKTsKPiAtCX0KPiAtCURSTV9ERUJVRygiVXBkYXRl IHBlbmRpbmcgbm93IGhpZ2guIFVubG9ja2luZyB2dXBkYXRlX2xvY2suXG4iKTsKPiAtCj4gLQkv KiBVbmxvY2sgdGhlIGxvY2ssIHNvIGRvdWJsZS1idWZmZXJpbmcgY2FuIHRha2UgcGxhY2UgaW5z aWRlIHZibGFuayAqLwo+ICsJLyogVW5sb2NrIHRoZSBsb2NrLCBzbyBkb3VibGUtYnVmZmVyaW5n IGNhbiB0YWtlIHBsYWNlIGluc2lkZSBoYmxhbmsgKi8KPiAgIAl0bXAgJj0gfkFWSVZPX0QxR1JQ SF9VUERBVEVfTE9DSzsKPiAgIAlXUkVHMzIoQVZJVk9fRDFHUlBIX1VQREFURSArIHJhZGVvbl9j cnRjLT5jcnRjX29mZnNldCwgdG1wKTsKPiAgIH0KPiAgIAo+IC1ib29sIHJ2NzcwX3BhZ2VfZmxp cF9wZW5kaW5nKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQgY3J0Y19pZCkKPiAtewo+ IC0Jc3RydWN0IHJhZGVvbl9jcnRjICpyYWRlb25fY3J0YyA9IHJkZXYtPm1vZGVfaW5mby5jcnRj c1tjcnRjX2lkXTsKPiAtCj4gLQkvKiBSZXR1cm4gY3VycmVudCB1cGRhdGVfcGVuZGluZyBzdGF0 dXM6ICovCj4gLQlyZXR1cm4gISEoUlJFRzMyKEFWSVZPX0QxR1JQSF9VUERBVEUgKyByYWRlb25f Y3J0Yy0+Y3J0Y19vZmZzZXQpICYKPiAtCQlBVklWT19EMUdSUEhfU1VSRkFDRV9VUERBVEVfUEVO RElORyk7Cj4gLX0KPiAtCj4gICAvKiBnZXQgdGVtcGVyYXR1cmUgaW4gbWlsbGlkZWdyZWVzICov Cj4gICBpbnQgcnY3NzBfZ2V0X3RlbXAoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCj4gICB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vc2kuYyBiL2RyaXZlcnMvZ3B1 L2RybS9yYWRlb24vc2kuYwo+IGluZGV4IGMxMjhiZGUuLmZlZTc5N2YgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9zaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9zaS5jCj4gQEAgLTU5MTcsMjUgKzU5MTcsNiBAQCBpbnQgc2lfaXJxX3NldChzdHJ1Y3QgcmFk ZW9uX2RldmljZSAqcmRldikKPiAgIAkJV1JFRzMyKElOVF9NQVNLICsgRVZFUkdSRUVOX0NSVEM1 X1JFR0lTVEVSX09GRlNFVCwgY3J0YzYpOwo+ICAgCX0KPiAgIAo+IC0JaWYgKHJkZXYtPm51bV9j cnRjID49IDIpIHsKPiAtCQlXUkVHMzIoR1JQSF9JTlRfQ09OVFJPTCArIEVWRVJHUkVFTl9DUlRD MF9SRUdJU1RFUl9PRkZTRVQsCj4gLQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX01BU0spOwo+IC0J CVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVOX0NSVEMxX1JFR0lTVEVSX09GRlNF VCwKPiAtCQkgICAgICAgR1JQSF9QRkxJUF9JTlRfTUFTSyk7Cj4gLQl9Cj4gLQlpZiAocmRldi0+ bnVtX2NydGMgPj0gNCkgewo+IC0JCVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVO X0NSVEMyX1JFR0lTVEVSX09GRlNFVCwKPiAtCQkgICAgICAgR1JQSF9QRkxJUF9JTlRfTUFTSyk7 Cj4gLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JUQzNfUkVHSVNURVJf T0ZGU0VULAo+IC0JCSAgICAgICBHUlBIX1BGTElQX0lOVF9NQVNLKTsKPiAtCX0KPiAtCWlmIChy ZGV2LT5udW1fY3J0YyA+PSA2KSB7Cj4gLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVS R1JFRU5fQ1JUQzRfUkVHSVNURVJfT0ZGU0VULAo+IC0JCSAgICAgICBHUlBIX1BGTElQX0lOVF9N QVNLKTsKPiAtCQlXUkVHMzIoR1JQSF9JTlRfQ09OVFJPTCArIEVWRVJHUkVFTl9DUlRDNV9SRUdJ U1RFUl9PRkZTRVQsCj4gLQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX01BU0spOwo+IC0JfQo+IC0K PiAgIAlpZiAoIUFTSUNfSVNfTk9EQ0UocmRldikpIHsKPiAgIAkJV1JFRzMyKERDX0hQRDFfSU5U X0NPTlRST0wsIGhwZDEpOwo+ICAgCQlXUkVHMzIoRENfSFBEMl9JTlRfQ09OVFJPTCwgaHBkMik7 Cj4gQEAgLTU5NzQsMTAgKzU5NTUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2lfaXJxX2Fjayhz dHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKPiAgIAkJcmRldi0+aXJxLnN0YXRfcmVncy5ldmVy Z3JlZW4uZDZncnBoX2ludCA9IFJSRUczMihHUlBIX0lOVF9TVEFUVVMgKyBFVkVSR1JFRU5fQ1JU QzVfUkVHSVNURVJfT0ZGU0VUKTsKPiAgIAl9Cj4gICAKPiAtCWlmIChyZGV2LT5pcnEuc3RhdF9y ZWdzLmV2ZXJncmVlbi5kMWdycGhfaW50ICYgR1JQSF9QRkxJUF9JTlRfT0NDVVJSRUQpCj4gLQkJ V1JFRzMyKEdSUEhfSU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDMF9SRUdJU1RFUl9PRkZTRVQs IEdSUEhfUEZMSVBfSU5UX0NMRUFSKTsKPiAtCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJn cmVlbi5kMmdycGhfaW50ICYgR1JQSF9QRkxJUF9JTlRfT0NDVVJSRUQpCj4gLQkJV1JFRzMyKEdS UEhfSU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDMV9SRUdJU1RFUl9PRkZTRVQsIEdSUEhfUEZM SVBfSU5UX0NMRUFSKTsKPiAgIAlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZGlz cF9pbnQgJiBMQl9EMV9WQkxBTktfSU5URVJSVVBUKQo+ICAgCQlXUkVHMzIoVkJMQU5LX1NUQVRV UyArIEVWRVJHUkVFTl9DUlRDMF9SRUdJU1RFUl9PRkZTRVQsIFZCTEFOS19BQ0spOwo+ICAgCWlm IChyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kaXNwX2ludCAmIExCX0QxX1ZMSU5FX0lO VEVSUlVQVCkKPiBAQCAtNTk4OCwxMCArNTk2NSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzaV9p cnFfYWNrKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQo+ICAgCQlXUkVHMzIoVkxJTkVfU1RB VFVTICsgRVZFUkdSRUVOX0NSVEMxX1JFR0lTVEVSX09GRlNFVCwgVkxJTkVfQUNLKTsKPiAgIAo+ ICAgCWlmIChyZGV2LT5udW1fY3J0YyA+PSA0KSB7Cj4gLQkJaWYgKHJkZXYtPmlycS5zdGF0X3Jl Z3MuZXZlcmdyZWVuLmQzZ3JwaF9pbnQgJiBHUlBIX1BGTElQX0lOVF9PQ0NVUlJFRCkKPiAtCQkJ V1JFRzMyKEdSUEhfSU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDMl9SRUdJU1RFUl9PRkZTRVQs IEdSUEhfUEZMSVBfSU5UX0NMRUFSKTsKPiAtCQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVy Z3JlZW4uZDRncnBoX2ludCAmIEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVEKQo+IC0JCQlXUkVHMzIo R1JQSF9JTlRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEMzX1JFR0lTVEVSX09GRlNFVCwgR1JQSF9Q RkxJUF9JTlRfQ0xFQVIpOwo+ICAgCQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4u ZGlzcF9pbnRfY29udDIgJiBMQl9EM19WQkxBTktfSU5URVJSVVBUKQo+ICAgCQkJV1JFRzMyKFZC TEFOS19TVEFUVVMgKyBFVkVSR1JFRU5fQ1JUQzJfUkVHSVNURVJfT0ZGU0VULCBWQkxBTktfQUNL KTsKPiAgIAkJaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3BfaW50X2NvbnQy ICYgTEJfRDNfVkxJTkVfSU5URVJSVVBUKQo+IEBAIC02MDAzLDEwICs1OTc2LDYgQEAgc3RhdGlj IGlubGluZSB2b2lkIHNpX2lycV9hY2soc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCj4gICAJ fQo+ICAgCj4gICAJaWYgKHJkZXYtPm51bV9jcnRjID49IDYpIHsKPiAtCQlpZiAocmRldi0+aXJx LnN0YXRfcmVncy5ldmVyZ3JlZW4uZDVncnBoX2ludCAmIEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVE KQo+IC0JCQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEM0X1JFR0lTVEVS X09GRlNFVCwgR1JQSF9QRkxJUF9JTlRfQ0xFQVIpOwo+IC0JCWlmIChyZGV2LT5pcnEuc3RhdF9y ZWdzLmV2ZXJncmVlbi5kNmdycGhfaW50ICYgR1JQSF9QRkxJUF9JTlRfT0NDVVJSRUQpCj4gLQkJ CVdSRUczMihHUlBIX0lOVF9TVEFUVVMgKyBFVkVSR1JFRU5fQ1JUQzVfUkVHSVNURVJfT0ZGU0VU LCBHUlBIX1BGTElQX0lOVF9DTEVBUik7Cj4gICAJCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmV2 ZXJncmVlbi5kaXNwX2ludF9jb250NCAmIExCX0Q1X1ZCTEFOS19JTlRFUlJVUFQpCj4gICAJCQlX UkVHMzIoVkJMQU5LX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDNF9SRUdJU1RFUl9PRkZTRVQsIFZC TEFOS19BQ0spOwo+ICAgCQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZGlzcF9p bnRfY29udDQgJiBMQl9ENV9WTElORV9JTlRFUlJVUFQpCj4gQEAgLTYxNTEsNyArNjEyMCw3IEBA IHJlc3RhcnRfaWg6Cj4gICAJCQkJCQl3YWtlX3VwKCZyZGV2LT5pcnEudmJsYW5rX3F1ZXVlKTsK PiAgIAkJCQkJfQo+ICAgCQkJCQlpZiAoYXRvbWljX3JlYWQoJnJkZXYtPmlycS5wZmxpcFswXSkp Cj4gLQkJCQkJCXJhZGVvbl9jcnRjX2hhbmRsZV92YmxhbmsocmRldiwgMCk7Cj4gKwkJCQkJCXJh ZGVvbl9jcnRjX2hhbmRsZV9mbGlwKHJkZXYsIDApOwo+ICAgCQkJCQlyZGV2LT5pcnEuc3RhdF9y ZWdzLmV2ZXJncmVlbi5kaXNwX2ludCAmPSB+TEJfRDFfVkJMQU5LX0lOVEVSUlVQVDsKPiAgIAkJ CQkJRFJNX0RFQlVHKCJJSDogRDEgdmJsYW5rXG4iKTsKPiAgIAkJCQl9Cj4gQEAgLTYxNzcsNyAr NjE0Niw3IEBAIHJlc3RhcnRfaWg6Cj4gICAJCQkJCQl3YWtlX3VwKCZyZGV2LT5pcnEudmJsYW5r X3F1ZXVlKTsKPiAgIAkJCQkJfQo+ICAgCQkJCQlpZiAoYXRvbWljX3JlYWQoJnJkZXYtPmlycS5w ZmxpcFsxXSkpCj4gLQkJCQkJCXJhZGVvbl9jcnRjX2hhbmRsZV92YmxhbmsocmRldiwgMSk7Cj4g KwkJCQkJCXJhZGVvbl9jcnRjX2hhbmRsZV9mbGlwKHJkZXYsIDEpOwo+ICAgCQkJCQlyZGV2LT5p cnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kaXNwX2ludF9jb250ICY9IH5MQl9EMl9WQkxBTktfSU5U RVJSVVBUOwo+ICAgCQkJCQlEUk1fREVCVUcoIklIOiBEMiB2YmxhbmtcbiIpOwo+ICAgCQkJCX0K PiBAQCAtNjIwMyw3ICs2MTcyLDcgQEAgcmVzdGFydF9paDoKPiAgIAkJCQkJCXdha2VfdXAoJnJk ZXYtPmlycS52YmxhbmtfcXVldWUpOwo+ICAgCQkJCQl9Cj4gICAJCQkJCWlmIChhdG9taWNfcmVh ZCgmcmRldi0+aXJxLnBmbGlwWzJdKSkKPiAtCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX3ZibGFu ayhyZGV2LCAyKTsKPiArCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX2ZsaXAocmRldiwgMik7Cj4g ICAJCQkJCXJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3BfaW50X2NvbnQyICY9IH5M Ql9EM19WQkxBTktfSU5URVJSVVBUOwo+ICAgCQkJCQlEUk1fREVCVUcoIklIOiBEMyB2Ymxhbmtc biIpOwo+ICAgCQkJCX0KPiBAQCAtNjIyOSw3ICs2MTk4LDcgQEAgcmVzdGFydF9paDoKPiAgIAkJ CQkJCXdha2VfdXAoJnJkZXYtPmlycS52YmxhbmtfcXVldWUpOwo+ICAgCQkJCQl9Cj4gICAJCQkJ CWlmIChhdG9taWNfcmVhZCgmcmRldi0+aXJxLnBmbGlwWzNdKSkKPiAtCQkJCQkJcmFkZW9uX2Ny dGNfaGFuZGxlX3ZibGFuayhyZGV2LCAzKTsKPiArCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX2Zs aXAocmRldiwgMyk7Cj4gICAJCQkJCXJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3Bf aW50X2NvbnQzICY9IH5MQl9ENF9WQkxBTktfSU5URVJSVVBUOwo+ICAgCQkJCQlEUk1fREVCVUco IklIOiBENCB2YmxhbmtcbiIpOwo+ICAgCQkJCX0KPiBAQCAtNjI1NSw3ICs2MjI0LDcgQEAgcmVz dGFydF9paDoKPiAgIAkJCQkJCXdha2VfdXAoJnJkZXYtPmlycS52YmxhbmtfcXVldWUpOwo+ICAg CQkJCQl9Cj4gICAJCQkJCWlmIChhdG9taWNfcmVhZCgmcmRldi0+aXJxLnBmbGlwWzRdKSkKPiAt CQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX3ZibGFuayhyZGV2LCA0KTsKPiArCQkJCQkJcmFkZW9u X2NydGNfaGFuZGxlX2ZsaXAocmRldiwgNCk7Cj4gICAJCQkJCXJkZXYtPmlycS5zdGF0X3JlZ3Mu ZXZlcmdyZWVuLmRpc3BfaW50X2NvbnQ0ICY9IH5MQl9ENV9WQkxBTktfSU5URVJSVVBUOwo+ICAg CQkJCQlEUk1fREVCVUcoIklIOiBENSB2YmxhbmtcbiIpOwo+ICAgCQkJCX0KPiBAQCAtNjI4MSw3 ICs2MjUwLDcgQEAgcmVzdGFydF9paDoKPiAgIAkJCQkJCXdha2VfdXAoJnJkZXYtPmlycS52Ymxh bmtfcXVldWUpOwo+ICAgCQkJCQl9Cj4gICAJCQkJCWlmIChhdG9taWNfcmVhZCgmcmRldi0+aXJx LnBmbGlwWzVdKSkKPiAtCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX3ZibGFuayhyZGV2LCA1KTsK PiArCQkJCQkJcmFkZW9uX2NydGNfaGFuZGxlX2ZsaXAocmRldiwgNSk7Cj4gICAJCQkJCXJkZXYt PmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3BfaW50X2NvbnQ1ICY9IH5MQl9ENl9WQkxBTktf SU5URVJSVVBUOwo+ICAgCQkJCQlEUk1fREVCVUcoIklIOiBENiB2YmxhbmtcbiIpOwo+ICAgCQkJ CX0KPiBAQCAtNjI5NywxNSArNjI2Niw2IEBAIHJlc3RhcnRfaWg6Cj4gICAJCQkJYnJlYWs7Cj4g ICAJCQl9Cj4gICAJCQlicmVhazsKPiAtCQljYXNlIDg6IC8qIEQxIHBhZ2UgZmxpcCAqLwo+IC0J CWNhc2UgMTA6IC8qIEQyIHBhZ2UgZmxpcCAqLwo+IC0JCWNhc2UgMTI6IC8qIEQzIHBhZ2UgZmxp cCAqLwo+IC0JCWNhc2UgMTQ6IC8qIEQ0IHBhZ2UgZmxpcCAqLwo+IC0JCWNhc2UgMTY6IC8qIEQ1 IHBhZ2UgZmxpcCAqLwo+IC0JCWNhc2UgMTg6IC8qIEQ2IHBhZ2UgZmxpcCAqLwo+IC0JCQlEUk1f REVCVUcoIklIOiBEJWQgZmxpcFxuIiwgKChzcmNfaWQgLSA4KSA+PiAxKSArIDEpOwo+IC0JCQly YWRlb25fY3J0Y19oYW5kbGVfZmxpcChyZGV2LCAoc3JjX2lkIC0gOCkgPj4gMSk7Cj4gLQkJCWJy ZWFrOwo+ICAgCQljYXNlIDQyOiAvKiBIUEQgaG90cGx1ZyAqLwo+ICAgCQkJc3dpdGNoIChzcmNf ZGF0YSkgewo+ICAgCQkJY2FzZSAwOgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK