From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id B56706E029 for ; Wed, 17 Apr 2019 10:55:33 +0000 (UTC) Date: Wed, 17 Apr 2019 12:55:30 +0200 From: Katarzyna Dec Message-ID: <20190417105530.GM24710@kdec5-desk.ger.corp.intel.com> References: <20190415085937.5110-1-daniel.t.mrzyglod@intel.com> <20190415085937.5110-6-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190415085937.5110-6-daniel.t.mrzyglod@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v3 5/5] lib/intel_mmio: remove igt_global_mmio and move pointer to mmio_data structure List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Mrzyglod Cc: igt-dev@lists.freedesktop.org List-ID: T24gTW9uLCBBcHIgMTUsIDIwMTkgYXQgMTA6NTk6MzdBTSArMDIwMCwgRGFuaWVsIE1yenlnbG9k IHdyb3RlOgo+IHRoaXMgcGF0Y2ggcmVtb3ZlIG5lZWQgZm9yIGlndF9nbG9iYWxfbW1pbyBmcm9t IGxpYnJhcnkgc3BhY2UuCnMvcmVtb3ZlL3JlbW92ZXMKPiBUaGUgcmVhc29uIHRoYXQgaXQgd2Fz IG1vdmVkIGlzIHRoZSBpZGVhIHRvIHN1cHBvcnQgbXVsdGlwbGUgZGV2aWNlIGF0IG9uY2UuClBs ZWFzZSByZXBocmFzZSBeXiB0aGlzIHNlbnRlbmNlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IERhbmll bCBNcnp5Z2xvZCA8ZGFuaWVsLnQubXJ6eWdsb2RAaW50ZWwuY29tPgo+IC0tLQo+ICBiZW5jaG1h cmtzL2dlbV9sYXRlbmN5LmMgICAgICB8ICAgNSArLQo+ICBiZW5jaG1hcmtzL2dlbV93c2ltLmMg ICAgICAgICB8ICAgNiArLQo+ICBsaWIvaW50ZWxfaW8uaCAgICAgICAgICAgICAgICB8ICA3OSAr KysrKysrKysrKysrLS0tLS0tLS0KPiAgbGliL2ludGVsX2lvc2YuYyAgICAgICAgICAgICAgfCAg NjkgKysrKysrKysrLS0tLS0tLS0tCj4gIGxpYi9pbnRlbF9tbWlvLmMgICAgICAgICAgICAgIHwg MTI3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPiAgdGVzdHMvaTkxNS9nZW1f ZXhlY19sYXRlbmN5LmMgfCAgIDcgKy0KPiAgdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jICAg fCAgMTQgKystLQo+ICB0ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jICAgICB8ICAgNyArLQo+ICB0 b29scy9pbnRlbF9hdWRpb19kdW1wLmMgICAgICB8ICAgNyArLQo+ICB0b29scy9pbnRlbF9iYWNr bGlnaHQuYyAgICAgICB8ICAgNSArLQo+ICB0b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jICB8 ICAgNyArLQo+ICB0b29scy9pbnRlbF9mb3JjZXdha2VkLmMgICAgICB8ICAxNCArKy0tCj4gIHRv b2xzL2ludGVsX2dwdV90aW1lLmMgICAgICAgIHwgICA1ICstCj4gIHRvb2xzL2ludGVsX2luZm9m cmFtZXMuYyAgICAgIHwgICA3ICstCj4gIHRvb2xzL2ludGVsX2wzX3Bhcml0eS5jICAgICAgIHwg IDE2ICsrKy0tCj4gIHRvb2xzL2ludGVsX2xpZC5jICAgICAgICAgICAgIHwgICA2ICstCj4gIHRv b2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jICAgIHwgICA3ICstCj4gIHRvb2xzL2ludGVsX3BlcmZf Y291bnRlcnMuYyAgIHwgIDEyICsrLS0KPiAgdG9vbHMvaW50ZWxfcmVnLmMgICAgICAgICAgICAg fCAgMjcgKysrKystLS0KPiAgdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYyAgICAgfCAgIDYgKy0K PiAgdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMgICAgICAgfCAgNDQgKysrKysrKy0tLS0tCj4gIDIx IGZpbGVzIGNoYW5nZWQsIDI4MSBpbnNlcnRpb25zKCspLCAxOTYgZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2JlbmNobWFya3MvZ2VtX2xhdGVuY3kuYyBiL2JlbmNobWFya3MvZ2VtX2xh dGVuY3kuYwo+IGluZGV4IGMzZmM0YmYwLi5iY2FhZWNlZiAxMDA2NDQKPiAtLS0gYS9iZW5jaG1h cmtzL2dlbV9sYXRlbmN5LmMKPiArKysgYi9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMKPiBAQCAt NTUsNiArNTUsOCBAQAo+ICBzdGF0aWMgaW50IGRvbmU7Cj4gIHN0YXRpYyBpbnQgZmQ7Cj4gIHN0 YXRpYyB2b2xhdGlsZSB1aW50MzJfdCAqdGltZXN0YW1wX3JlZzsKPiArdm9pZCAqaWd0X2dsb2Jh bF9tbWlvOwo+ICtzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwo+ICAKPiAgI2Rl ZmluZSBSRUcoeCkgKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2ds b2JhbF9tbWlvICsgeCkKPiAgI2RlZmluZSBSRUdfT0ZGU0VUKHgpICgodm9sYXRpbGUgY2hhciAq KSh4KSAtICh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvKQo+IEBAIC00NTYsNyArNDU4 LDggQEAgc3RhdGljIGludCBydW4oaW50IHNlY29uZHMsCj4gIAlpZiAoZ2VuIDwgNikKPiAgCQly ZXR1cm4gSUdUX0VYSVRfU0tJUDsgLyogTmVlZHMgQkNTIHRpbWVzdGFtcCAqLwo+ICAKPiAtCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBm ZCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRf cGNpX2RldmljZSgpLCBmYWxzZSwgZmQpOwo+ICsJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRh LmlndF9tbWlvOwo+ICAKPiAgCWlmIChnZW4gPT0gNikKPiAgCQl0aW1lc3RhbXBfcmVnID0gUkVH KFJDU19USU1FU1RBTVApOwo+IGRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMgYi9i ZW5jaG1hcmtzL2dlbV93c2ltLmMKPiBpbmRleCBhZmI5NjQ0ZC4uODZhZjU4Y2IgMTAwNjQ0Cj4g LS0tIGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jCj4gKysrIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5j Cj4gQEAgLTIwNiw2ICsyMDYsOSBAQCBzdHJ1Y3Qgd29ya2xvYWQKPiAgCX0gYnVzeV9iYWxhbmNl cjsKPiAgfTsKPiAgCj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKPiArc3RhdGljIHN0cnVjdCBf bW1pb19kYXRhIG1taW9fZGF0YTsKPiArCj4gIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbm9w X2NhbGlicmF0aW9uX3VzID0gMTAwMDsKPiAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbm9wX2NhbGli cmF0aW9uOwo+ICAKPiBAQCAtMjIyMyw3ICsyMjI2LDggQEAgc3RhdGljIHZvaWQgaW5pdF9jbG9j a3Modm9pZCkKPiAgCXVpbnQzMl90IHJjc19zdGFydCwgcmNzX2VuZDsKPiAgCWRvdWJsZSBvdmVy aGVhZCwgdDsKPiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNp X2RldmljZSgpLCBmYWxzZSwgZmQpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1t aW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKPiArCWlndF9nbG9i YWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlpZiAodmVyYm9zZSA8PSAxKQo+ ICAJCXJldHVybjsKPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2lvLmggYi9saWIvaW50ZWxfaW8u aAo+IGluZGV4IGZkOTliYmI3Li5kOTgzOTdhZiAxMDA2NDQKPiAtLS0gYS9saWIvaW50ZWxfaW8u aAo+ICsrKyBiL2xpYi9pbnRlbF9pby5oCj4gQEAgLTMwLDE3ICszMCw0MSBAQAo+ICAKPiAgI2lu Y2x1ZGUgPHN0ZGludC5oPgo+ICAjaW5jbHVkZSA8cGNpYWNjZXNzLmg+Cj4gKyNpbmNsdWRlIDxz dGRib29sLmg+Cj4gIAo+ICAvKiByZWdpc3RlciBhY2Nlc3MgaGVscGVycyBmcm9tIGludGVsX21t aW8uYyAqLwo+IC1leHRlcm4gdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+IC12b2lkIGludGVsX21t aW9fdXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBmZCk7Cj4gLXZv aWQgaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNoYXIgKmZpbGUpOwo+ICtzdHJ1Y3QgaW50ZWxf cmVnaXN0ZXJfcmFuZ2Ugewo+ICsJdWludDMyX3QgYmFzZTsKPiArCXVpbnQzMl90IHNpemU7Cj4g Kwl1aW50MzJfdCBmbGFnczsKPiArfTsKPiArCj4gK3N0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAg ewo+ICsJc3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlICptYXA7Cj4gKwl1aW50MzJfdCB0b3A7 Cj4gKwl1aW50MzJfdCBhbGlnbm1lbnRfbWFzazsKPiArfTsKPiArCj4gK3N0cnVjdCBfbW1pb19k YXRhIHsKPiArCWludCBpbml0ZWQ7Cidpbml0ZWQnIHN0YW5kcyBmb3IgaW5pdGlhbD8KPiArCWJv b2wgc2FmZTsKPiArCXVpbnQzMl90IGk5MTVfZGV2aWQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmVnaXN0 ZXJfbWFwIG1hcDsKPiArCWludCBrZXk7Cj4gKwl2b2lkICppZ3RfbW1pbzsKPiArfTsKPiArCj4g K3ZvaWQgaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRh LAo+ICsJCQkgICAgc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBmZCk7Cj4gK3ZvaWQg aW50ZWxfbW1pb191c2VfZHVtcF9maWxlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIGNo YXIgKmZpbGUpOwo+ICAKPiAtaW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0cnVjdCBw Y2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKTsKPiAtdm9pZCBpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSh2b2lkKTsKPiAtdWludDMyX3QgaW50ZWxfcmVnaXN0ZXJfcmVhZCh2 b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKTsKPiAtdm9pZCBpbnRlbF9yZWdpc3Rlcl93cml0 ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwo+IC1pbnQgaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHZvaWQpOwo+ICtpbnQgaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwKPiArCQkJICAg ICAgIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKTsKPiArdm9p ZCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRh KTsKPiArdWludDMyX3QgaW50ZWxfcmVnaXN0ZXJfcmVhZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1p b19kYXRhLCB1aW50MzJfdCByZWcpOwo+ICt2b2lkIGludGVsX3JlZ2lzdGVyX3dyaXRlKHN0cnVj dCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKPiArCQkJICB1aW50MzJfdCB2 YWwpOwo+ICtpbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHN0cnVjdCBf bW1pb19kYXRhICptbWlvX2RhdGEpOwo+ICAKPiAgdWludDMyX3QgSU5SRUcodm9pZCAqaWd0X21t aW8sIHVpbnQzMl90IHJlZyk7Cj4gIHVpbnQxNl90IElOUkVHMTYodm9pZCAqaWd0X21taW8sIHVp bnQzMl90IHJlZyk7Cj4gQEAgLTUwLDE4ICs3NCwyNCBAQCB2b2lkIE9VVFJFRzE2KHZvaWQgKmln dF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQxNl90IHZhbCk7Cj4gIHZvaWQgT1VUUkVHOCh2b2lk ICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50OF90IHZhbCk7Cj4gIAo+ICAvKiBzaWRlYmFu ZCBhY2Nlc3MgZnVuY3Rpb25zIGZyb20gaW50ZWxfaW9zZi5jICovCj4gLXVpbnQzMl90IGludGVs X2RwaW9fcmVnX3JlYWQodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgaW50IHBoeSk7Cj4g LXZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywg dWludDMyX3QgdmFsLCBpbnQgcGh5KTsKPiAtdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVh ZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKTsKPiAtdm9pZCBpbnRlbF9mbGlzZHNpX3Jl Z193cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwo+IC11 aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHBvcnQs IHVpbnQzMl90IHJlZyk7Cj4gLXZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZSh2b2lkICppZ3RfbW1p bywgdWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnLAo+IC0JCQkgdWludDMyX3QgdmFsKTsKPiAr dWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRh LCB1aW50MzJfdCByZWcsCj4gKwkJCSAgICAgaW50IHBoeSk7Cj4gK3ZvaWQgaW50ZWxfZHBpb19y ZWdfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAo+ICsJ CQkgIHVpbnQzMl90IHZhbCwgaW50IHBoeSk7Cj4gK3VpbnQzMl90IGludGVsX2ZsaXNkc2lfcmVn X3JlYWQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnKTsKPiArdm9p ZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1 aW50MzJfdCByZWcsCj4gKwkJCSAgICAgdWludDMyX3QgdmFsKTsKPiArdWludDMyX3QgaW50ZWxf aW9zZl9zYl9yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQs Cj4gKwkJCSAgICB1aW50MzJfdCByZWcpOwo+ICt2b2lkIGludGVsX2lvc2Zfc2Jfd3JpdGUoc3Ry dWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKPiArCQkJIHVpbnQzMl90 IHJlZywgdWludDMyX3QgdmFsKTsKPiAgCj4gLWludCBpbnRlbF9wdW5pdF9yZWFkKHZvaWQgKmln dF9tbWlvLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKTsKPiAtaW50IGludGVsX3B1bml0 X3dyaXRlKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpOwo+IC1p bnQgaW50ZWxfbmNfcmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWludDMyX3Qg KnZhbCk7Cj4gLWludCBpbnRlbF9uY193cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRk ciwgdWludDMyX3QgdmFsKTsKPiAraW50IGludGVsX3B1bml0X3JlYWQoc3RydWN0IF9tbWlvX2Rh dGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwKPiArCQkgICAgIHVpbnQzMl90ICp2YWwpOwo+ ICtpbnQgaW50ZWxfcHVuaXRfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWlu dDMyX3QgYWRkciwKPiArCQkgICAgICB1aW50MzJfdCB2YWwpOwo+ICtpbnQgaW50ZWxfbmNfcmVh ZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAq dmFsKTsKPiAraW50IGludGVsX25jX3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEs IHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7Cj4gIAo+ICAvKiByZWdpc3RlciBtYXBzIGZy b20gaW50ZWxfcmVnX21hcC5jICovCj4gICNpZm5kZWYgX19HVEtfRE9DX0lHTk9SRV9fCj4gQEAg LTcyLDE3ICsxMDIsOCBAQCBpbnQgaW50ZWxfbmNfd3JpdGUodm9pZCAqaWd0X21taW8sIHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90IHZhbCk7Cj4gICNkZWZpbmUgSU5URUxfUkFOR0VfUlcJCShJTlRF TF9SQU5HRV9SRUFEIHwgSU5URUxfUkFOR0VfV1JJVEUpCj4gICNkZWZpbmUgSU5URUxfUkFOR0Vf RU5ECQkoMTw8MzEpCj4gIAo+IC1zdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2Ugewo+IC0JdWlu dDMyX3QgYmFzZTsKPiAtCXVpbnQzMl90IHNpemU7Cj4gLQl1aW50MzJfdCBmbGFnczsKPiAtfTsK PiAgCj4gLXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgewo+IC0Jc3RydWN0IGludGVsX3JlZ2lz dGVyX3JhbmdlICptYXA7Cj4gLQl1aW50MzJfdCB0b3A7Cj4gLQl1aW50MzJfdCBhbGlnbm1lbnRf bWFzazsKPiAtfTsKPiArLy9zdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwpJcyB0 aGlzIGNvbW1lbnQgbmVlZGVkIGhlcmU/IF4KPiAgc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCBp bnRlbF9nZXRfcmVnaXN0ZXJfbWFwKHVpbnQzMl90IGRldmlkKTsKPiAgc3RydWN0IGludGVsX3Jl Z2lzdGVyX3JhbmdlICppbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2Uoc3RydWN0IGludGVsX3JlZ2lz dGVyX21hcCBtYXAsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbW9kZSk7Cj4gICNlbmRpZiAv KiBfX0dUS19ET0NfSUdOT1JFX18gKi8KPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2lvc2YuYyBi L2xpYi9pbnRlbF9pb3NmLmMKPiBpbmRleCBiNGE0ODNmMi4uZDU0MWM3ZGMgMTAwNjQ0Cj4gLS0t IGEvbGliL2ludGVsX2lvc2YuYwo+ICsrKyBiL2xpYi9pbnRlbF9pb3NmLmMKPiBAQCAtMTksOCAr MTksOCBAQAo+ICAvKiBQcml2YXRlIHJlZ2lzdGVyIHdyaXRlLCBkb3VibGUtd29yZCBhZGRyZXNz aW5nLCBub24tcG9zdGVkICovCj4gICNkZWZpbmUgU0JfQ1JXUkRBX05QICAgMHgwNwo+ICAKPiAt c3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHBvcnQs IHVpbnQ4X3Qgb3Bjb2RlLAo+IC0JCQkgICB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQo+ ICtzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyhzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRh LCB1aW50MzJfdCBwb3J0LAo+ICsJCQkgICB1aW50OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwg dWludDMyX3QgKnZhbCkKQ291bGQgeW91IGV4cGxhaW4gd2h5IHBhdGNoIDQgYW5kIDUgdG91Y2gg c2ltaWxhciBsaW5lcyBvZiBjb2RlPyBGaXJzdCB5b3UgbWFrZQpvbmUgY2hhbmdlcywgdGhhbiBh bm90aGVyPyAKSSBoYWQgYSBjb21tZW50IGFib3V0IHRvbyBsb25nIHBhdGNoIGluIHByZXZpb3Vz IHJvdW5kLiBCdSBhcyB5b3Ugc2VlIG5vdApldmVyeXRoaW5nIGNhbiBiZSBmaXhlZCAtIG5vdyB3 ZSBoYXZlIHBhdGNoIDQgb2YgMjAwMCBsaW5lcyBhbmQgcGF0Y2ggNSBvZiAxNTAwCmxpbmVzLCBw cmV2aW91c2x5IGl0IHdhcyAzMDAwIGluIHRvdGFsLi4uLi4KUGxlYXNlIHJlbWVtYmVyIHRoYXQg cmV2aWV3IGNvbW1lbnRzIGFyZSBub3Qgb2JsaWdhdG9yeSBpZiB5b3UgaGF2ZSBnb29kIHJlYXNv bgp0byBkbyBzbyA6KQo+ICB7Cj4gIAlpbnQgdGltZW91dCA9IDA7Cj4gIAl1aW50MzJfdCBjbWQs IGRldmZuLCBiZSwgYmFyOwo+IEBAIC0zNCwyMyArMzQsMjQgQEAgc3RhdGljIGludCB2bHZfc2lk ZWJhbmRfcncodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLAo+ ICAJCShwb3J0IDw8IElPU0ZfUE9SVF9TSElGVCkgfCAoYmUgPDwgSU9TRl9CWVRFX0VOQUJMRVNf U0hJRlQpIHwKPiAgCQkoYmFyIDw8IElPU0ZfQkFSX1NISUZUKTsKPiAgCj4gLQlpZiAoaW50ZWxf cmVnaXN0ZXJfcmVhZChpZ3RfbW1pbywgVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmCj4gKwlpZiAo aW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEsIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJgo+ ICAJICAgIElPU0ZfU0JfQlVTWSkgewo+ICAJCWlndF93YXJuKCJ3YXJuaW5nOiBwY29kZSAoJXMp IG1haWxib3ggYWNjZXNzIGZhaWxlZFxuIiwgaXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIpOwo+ ICAJCXJldHVybiAtRUFHQUlOOwo+ICAJfQo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX3dyaXRlKGln dF9tbWlvLCBWTFZfSU9TRl9BRERSLCBhZGRyKTsKPiArCWludGVsX3JlZ2lzdGVyX3dyaXRlKG1t aW9fZGF0YSwgVkxWX0lPU0ZfQUREUiwgYWRkcik7Cj4gIAlpZiAoIWlzX3JlYWQpCj4gLQkJaW50 ZWxfcmVnaXN0ZXJfd3JpdGUoaWd0X21taW8sIFZMVl9JT1NGX0RBVEEsICp2YWwpOwo+ICsJCWlu dGVsX3JlZ2lzdGVyX3dyaXRlKG1taW9fZGF0YSwgVkxWX0lPU0ZfREFUQSwgKnZhbCk7Cj4gIAo+ IC0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUoaWd0X21taW8sIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwg Y21kKTsKPiArCWludGVsX3JlZ2lzdGVyX3dyaXRlKG1taW9fZGF0YSwgVkxWX0lPU0ZfRE9PUkJF TExfUkVRLCBjbWQpOwo+ICAKPiAgCWRvIHsKPiAgCQl1c2xlZXAoMSk7Cj4gIAkJdGltZW91dCsr Owo+IC0JfSB3aGlsZSAoaW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfbW1pbywgVkxWX0lPU0ZfRE9P UkJFTExfUkVRKSAmCj4gLQkJIElPU0ZfU0JfQlVTWSAmJiB0aW1lb3V0IDwgVElNRU9VVF9VUyk7 Cj4gKwl9IHdoaWxlIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YS0+aWd0X21taW8sCj4g KwkJCQkgICAgIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJgo+ICsJCUlPU0ZfU0JfQlVTWSAmJiB0 aW1lb3V0IDwgVElNRU9VVF9VUyk7Cj4gIAo+ICAJaWYgKHRpbWVvdXQgPj0gVElNRU9VVF9VUykg ewo+ICAJCWlndF93YXJuKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIHBjb2RlICVzICglZCkgdG8gZmlu aXNoXG4iLCBpc19yZWFkID8gInJlYWQiIDogIndyaXRlIiwgYWRkcik7Cj4gQEAgLTU4LDggKzU5 LDggQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodm9pZCAqaWd0X21taW8sIHVpbnQzMl90 IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLAo+ICAJfQo+ICAKPiAgCWlmIChpc19yZWFkKQo+IC0JCSp2 YWwgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKGlndF9tbWlvLCBWTFZfSU9TRl9EQVRBKTsKPiAtCWlu dGVsX3JlZ2lzdGVyX3dyaXRlKGlndF9tbWlvLCBWTFZfSU9TRl9EQVRBLCAwKTsKPiArCQkqdmFs ID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEtPmlndF9tbWlvLCBWTFZfSU9TRl9EQVRB KTsKPiArCWludGVsX3JlZ2lzdGVyX3dyaXRlKG1taW9fZGF0YS0+aWd0X21taW8sIFZMVl9JT1NG X0RBVEEsIDApOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTc1LDkgKzc2LDkgQEAgc3Rh dGljIGludCB2bHZfc2lkZWJhbmRfcncodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHBvcnQsIHVp bnQ4X3Qgb3Bjb2RlLAo+ICAgKiBSZXR1cm5zOgo+ICAgKiAwIHdoZW4gdGhlIHJlZ2lzdGVyIGFj Y2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZS4KPiAgICovCj4g LWludCBpbnRlbF9wdW5pdF9yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBhZGRyLCB1aW50 MzJfdCAqdmFsKQo+ICtpbnQgaW50ZWxfcHVuaXRfcmVhZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1p b19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQo+ICB7Cj4gLQlyZXR1cm4gdmx2 X3NpZGViYW5kX3J3KGlndF9tbWlvLCBJT1NGX1BPUlRfUFVOSVQsIFNCX0NSUkREQV9OUCwgYWRk ciwKPiArCXJldHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfUFVOSVQs IFNCX0NSUkREQV9OUCwgYWRkciwKPiAgCQkJICAgICAgIHZhbCk7Cj4gIH0KPiAgCj4gQEAgLTky LDkgKzkzLDkgQEAgaW50IGludGVsX3B1bml0X3JlYWQodm9pZCAqaWd0X21taW8sIHVpbnQzMl90 IGFkZHIsIHVpbnQzMl90ICp2YWwpCj4gICAqIFJldHVybnM6Cj4gICAqIDAgd2hlbiB0aGUgcmVn aXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgo+ ICAgKi8KPiAtaW50IGludGVsX3B1bml0X3dyaXRlKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBh ZGRyLCB1aW50MzJfdCB2YWwpCj4gK2ludCBpbnRlbF9wdW5pdF93cml0ZShzdHJ1Y3QgX21taW9f ZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCj4gIHsKPiAtCXJl dHVybiB2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JXUkRB X05QLCBhZGRyLAo+ICsJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9S VF9QVU5JVCwgU0JfQ1JXUkRBX05QLCBhZGRyLAo+ICAJCQkgICAgICAgJnZhbCk7Cj4gIH0KPiAg Cj4gQEAgLTEwOSw5ICsxMTAsMTAgQEAgaW50IGludGVsX3B1bml0X3dyaXRlKHZvaWQgKmlndF9t bWlvLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCj4gICAqIFJldHVybnM6Cj4gICAqIDAg d2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBv biBmYWlsdXJlLgo+ICAgKi8KPiAtaW50IGludGVsX25jX3JlYWQodm9pZCAqaWd0X21taW8sIHVp bnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCj4gK2ludCBpbnRlbF9uY19yZWFkKHN0cnVjdCBf bW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCj4gIHsK PiAtCXJldHVybiB2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9SVF9OQywgU0JfQ1JS RERBX05QLCBhZGRyLCB2YWwpOwo+ICsJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEs IElPU0ZfUE9SVF9OQywgU0JfQ1JSRERBX05QLCBhZGRyLAo+ICsJCQkgICAgICAgdmFsKTsKPiAg fQo+ICAKPiAgLyoqCj4gQEAgLTEyNSw5ICsxMjcsOSBAQCBpbnQgaW50ZWxfbmNfcmVhZCh2b2lk ICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKPiAgICogUmV0dXJuczoK PiAgICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBlcnJu byBjb2RlIG9uIGZhaWx1cmUuCj4gICAqLwo+IC1pbnQgaW50ZWxfbmNfd3JpdGUodm9pZCAqaWd0 X21taW8sIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKPiAraW50IGludGVsX25jX3dyaXRl KHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZh bCkKPiAgewo+IC0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgSU9TRl9QT1JUX05D LCBTQl9DUldSREFfTlAsIGFkZHIsCj4gKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0 YSwgSU9TRl9QT1JUX05DLCBTQl9DUldSREFfTlAsIGFkZHIsCj4gIAkJCSAgICAgICAmdmFsKTsK PiAgfQo+ICAKPiBAQCAtMTQyLDE0ICsxNDQsMTUgQEAgaW50IGludGVsX25jX3dyaXRlKHZvaWQg KmlndF9tbWlvLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCj4gICAqIFJldHVybnM6Cj4g ICAqIFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgo+ICAgKi8KPiAtdWludDMyX3Qg aW50ZWxfZHBpb19yZWdfcmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCBpbnQgcGh5 KQo+ICt1aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IHJlZywgaW50IHBoeSkKPiAgewo+ICAJdWludDMyX3QgdmFsOwo+ICAK PiAgCWlmIChwaHkgPT0gMCkKPiAtCQl2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9S VF9EUElPLCBTQl9NUkRfTlAsIHJlZywgJnZhbCk7Cj4gKwkJdmx2X3NpZGViYW5kX3J3KG1taW9f ZGF0YSwgSU9TRl9QT1JUX0RQSU8sIFNCX01SRF9OUCwgcmVnLAo+ICsJCQkJJnZhbCk7Cj4gIAll bHNlCj4gLQkJdmx2X3NpZGViYW5kX3J3KGlndF9tbWlvLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9N UkRfTlAsIHJlZywKPiArCQl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJ T18yLCBTQl9NUkRfTlAsIHJlZywKPiAgCQkJCSZ2YWwpOwo+ICAJcmV0dXJuIHZhbDsKPiAgfQo+ IEBAIC0xNjMsNDAgKzE2Niw0MCBAQCB1aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFkKHZvaWQg KmlndF9tbWlvLCB1aW50MzJfdCByZWcsIGludCBwaHkpCj4gICAqCj4gICAqIDMyLWJpdCB3cml0 ZSBvZiB0aGUgcmVnaXN0ZXIgYXQgQG9mZnNldCB0aHJvdWdoIHRoZSBEUElPIHNpZGViYW5kIHBv cnQuCj4gICAqLwo+IC12b2lkIGludGVsX2RwaW9fcmVnX3dyaXRlKHZvaWQgKmlndF9tbWlvLCB1 aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSkKPiArdm9pZCBpbnRlbF9kcGlvX3Jl Z193cml0ZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsIHVpbnQz Ml90IHZhbCwgaW50IHBoeSkKPiAgewo+ICAJaWYgKHBoeSA9PSAwKQo+IC0JCXZsdl9zaWRlYmFu ZF9ydyhpZ3RfbW1pbywgSU9TRl9QT1JUX0RQSU8sIFNCX01XUl9OUCwgcmVnLCAmdmFsKTsKPiAr CQl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJTywgU0JfTVdSX05QLCBy ZWcsICZ2YWwpOwo+ICAJZWxzZQo+IC0JCXZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgSU9TRl9Q T1JUX0RQSU9fMiwgU0JfTVdSX05QLCByZWcsCj4gKwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0 YSwgSU9TRl9QT1JUX0RQSU9fMiwgU0JfTVdSX05QLCByZWcsCj4gIAkJCQkmdmFsKTsKPiAgfQo+ ICAKPiAtdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh2b2lkICppZ3RfbW1pbywgdWlu dDMyX3QgcmVnKQo+ICt1aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFkKHN0cnVjdCBfbW1p b19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZykKPiAgewo+ICAJdWludDMyX3QgdmFsID0g MDsKPiAgCj4gLQl2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9SVF9GTElTRFNJLCBT Ql9DUlJEREFfTlAsIHJlZywgJnZhbCk7Cj4gKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJ T1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOwo+ICAKPiAgCXJldHVy biB2YWw7Cj4gIH0KPiAgCj4gLXZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUodm9pZCAqaWd0 X21taW8sIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+ICt2b2lkIGludGVsX2ZsaXNkc2lf cmVnX3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgdWlu dDMyX3QgdmFsKQo+ICB7Cj4gLQl2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9SVF9G TElTRFNJLCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7Cj4gKwl2bHZfc2lkZWJhbmRfcncobW1p b19kYXRhLCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwo+ICB9 Cj4gIAo+IC11aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodm9pZCAqaWd0X21taW8sIHVpbnQz Ml90IHBvcnQsIHVpbnQzMl90IHJlZykKPiArdWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHN0 cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZykK PiAgewo+ICAJdWludDMyX3QgdmFsOwo+ICAKPiAtCXZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywg cG9ydCwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOwo+ICsJdmx2X3NpZGViYW5kX3J3KG1taW9f ZGF0YSwgcG9ydCwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOwo+ICAKPiAgCXJldHVybiB2YWw7 Cj4gIH0KPiAgCj4gLXZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZSh2b2lkICppZ3RfbW1pbywgdWlu dDMyX3QgcG9ydCwgdWludDMyX3QgcmVnLAo+IC0JCQkgdWludDMyX3QgdmFsKQo+ICt2b2lkIGlu dGVsX2lvc2Zfc2Jfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3Qg cG9ydCwKPiArCQkJIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+ICB7Cj4gLQl2bHZfc2lk ZWJhbmRfcncoaWd0X21taW8sIHBvcnQsIFNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKPiArCXZs dl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIHBvcnQsIFNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsK PiAgfQo+IGRpZmYgLS1naXQgYS9saWIvaW50ZWxfbW1pby5jIGIvbGliL2ludGVsX21taW8uYwo+ IGluZGV4IDI0NjIzZmM2Li5kZDE1NjZjMCAxMDA2NDQKPiAtLS0gYS9saWIvaW50ZWxfbW1pby5j Cj4gKysrIGIvbGliL2ludGVsX21taW8uYwo+IEBAIC02NiwzMiArNjYsMTcgQEAKPiAgCj4gICNk ZWZpbmUgRkFLRUtFWSAweDI0NjhhY2UwCj4gIAo+IC0vKioKPiAtICogaWd0X2dsb2JhbF9tbWlv Ogo+IC0gKgo+IC0gKiBQb2ludGVyIHRvIHRoZSByZWdpc3RlciByYW5nZSwgaW5pdGlhbGl6ZWQg dXNpbmcgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKQo+IC0gKiBvciBpbnRlbF9tbWlvX3Vz ZV9kdW1wX2ZpbGUoKS4gSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIGRpcmVjdGx5 Lgo+IC0gKi8KPiAtdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+IC0KPiAtc3RhdGljIHN0cnVjdCBf bW1pb19kYXRhIHsKPiAtCWludCBpbml0ZWQ7Cj4gLQlib29sIHNhZmU7Cj4gLQl1aW50MzJfdCBp OTE1X2RldmlkOwo+IC0Jc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCBtYXA7Cj4gLQlpbnQga2V5 Owo+IC19IG1taW9fZGF0YTsKPiAtCj4gIC8qKgo+ICAgKiBpbnRlbF9tbWlvX3VzZV9kdW1wX2Zp bGU6Cj4gKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwo+ ICAgKiBAZmlsZTogbmFtZSBvZiB0aGUgcmVnaXN0ZXIgZHVtcCBmaWxlIHRvIG9wZW4KPiAgICoK PiAtICogU2V0cyB1cCAjaWd0X2dsb2JhbF9tbWlvIHRvIHBvaW50IGF0IHRoZSBkYXRhIGNvbnRh aW5lZCBpbiBAZmlsZS4gVGhpcyBhbGxvd3MKPiAtICogdGhlIHNhbWUgY29kZSB0byBnZXQgcmV1 c2VkIGZvciBkdW1waW5nIGFuZCBkZWNvZGluZyBmcm9tIHJ1bm5pbmcgaGFyZHdhcmUgYXMKPiAt ICogZnJvbSByZWdpc3RlciBkdW1wcy4KPiArICogU2V0cyBhbHNvIHVwIG1taW9fZGF0YS0+aWd0 X21taW8gdG8gcG9pbnQgYXQgdGhlIGRhdGEgY29udGFpbmVkCj4gKyAqIGluIEBmaWxlLiBUaGlz IGFsbG93cyB0aGUgc2FtZSBjb2RlIHRvIGdldCByZXVzZWQgZm9yIGR1bXBpbmcgYW5kIGRlY29k aW5nCj4gKyAqIGZyb20gcnVubmluZyBoYXJkd2FyZSBhcyBmcm9tIHJlZ2lzdGVyIGR1bXBzLgo+ ICAgKi8KPiAgdm9pZAo+IC1pbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSkKPiAr aW50ZWxfbW1pb191c2VfZHVtcF9maWxlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIGNo YXIgKmZpbGUpCj4gIHsKPiAgCWludCBmZDsKPiAgCXN0cnVjdCBzdGF0IHN0Owo+IEBAIC0xMDEs MjIgKzg2LDIzIEBAIGludGVsX21taW9fdXNlX2R1bXBfZmlsZShjaGFyICpmaWxlKQo+ICAJCSAg ICAgICJDb3VsZG4ndCBvcGVuICVzXG4iLCBmaWxlKTsKPiAgCj4gIAlmc3RhdChmZCwgJnN0KTsK PiAtCWlndF9nbG9iYWxfbW1pbyA9IG1tYXAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFEfFBS T1RfV1JJVEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7Cj4gLQlpZ3RfZmFpbF9vbl9mKGlndF9nbG9i YWxfbW1pbyA9PSBNQVBfRkFJTEVELAo+ICsJbW1pb19kYXRhLT5pZ3RfbW1pbyA9IG1tYXAoTlVM TCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7 Cj4gKwlpZ3RfZmFpbF9vbl9mKG1taW9fZGF0YS0+aWd0X21taW8gPT0gTUFQX0ZBSUxFRCwKPiAg CQkgICAgICAiQ291bGRuJ3QgbW1hcCAlc1xuIiwgZmlsZSk7Cj4gIAljbG9zZShmZCk7Cj4gIH0K PiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyOgo+ICsgKiBAbW1pb19kYXRh OiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKPiAgICogQHBjaV9kZXY6IGludGVs IGdyYWNwaGlzIHBjaSBkZXZpY2UKPiAgICoKPiAtICogU2V0cyB1cCAjaWd0X2dsb2JhbF9tbWlv IHRvIHBvaW50IGF0IHRoZSBtbWlvIGJhci4KPiArICogRmlsbCBhIG1taW9fZGF0YSBzdHVjdHVy ZSB3aXRoIGlndF9tbWlvIHRvIHBvaW50IGF0IHRoZSBtbWlvIGJhci4KPiAgICoKPiAgICogQHBj aV9kZXYgY2FuIGJlIG9idGFpbmVkIGZyb20gaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKS4KPiAgICov Cj4gIHZvaWQKPiAtaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgcGNpX2RldmljZSAqcGNp X2RldiwgaW50IGZkKQo+ICtpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHN0cnVjdCBfbW1pb19kYXRh ICptbWlvX2RhdGEgLHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgZmQpCj4gIHsKPiAg CXVpbnQzMl90IGRldmlkLCBnZW47Cj4gIAlpbnQgbW1pb19iYXIsIG1taW9fc2l6ZTsKPiBAQCAt MTQ1LDE0ICsxMzEsMTQgQEAgaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgcGNpX2Rldmlj ZSAqcGNpX2RldiwgaW50IGZkKQo+ICAJCQkJCSAgICAgcGNpX2Rldi0+cmVnaW9uc1ttbWlvX2Jh cl0uYmFzZV9hZGRyLAo+ICAJCQkJCSAgICAgbW1pb19zaXplLAo+ICAJCQkJCSAgICAgUENJX0RF Vl9NQVBfRkxBR19XUklUQUJMRSwKPiAtCQkJCQkgICAgICZpZ3RfZ2xvYmFsX21taW8pOwo+ICsJ CQkJCSAgICAgJm1taW9fZGF0YS0+aWd0X21taW8pOwo+ICAKPiAgCQlpZ3RfZmFpbF9vbl9mKGVy cm9yICE9IDAsICJDb3VsZG4ndCBtYXAgTU1JTyByZWdpb25cbiIpOwo+ICAJfSBlbHNlIHsKPiAg CQkvKiBUaGlzIG1ldGhvZCBpcyBtdWNoIG1vcmUgY29udmVuaWVudCB3aGVuIHdlIGhhdmUgbWFu eQo+ICAJCSAqIGNvbmN1cnJlbnQgUENJIGRldmljZXMKPiAgCQkgKi8KPiAtCQlpZ3RfZ2xvYmFs X21taW8gPSBpZ3RfZGV2aWNlX21hcF9wY2lfYmFyX3JlZ2lvbihmZCwgbW1pb19iYXIsCj4gKwkJ bW1pb19kYXRhLT5pZ3RfbW1pbyA9IGlndF9kZXZpY2VfbWFwX3BjaV9iYXJfcmVnaW9uKGZkLCBt bWlvX2JhciwKPiAgCQkJCQkJCQltbWlvX3NpemUpOwo+ICAJfQo+ICAKPiBAQCAtMTY3LDYgKzE1 Myw3IEBAIHJlbGVhc2VfZm9yY2V3YWtlX2xvY2soaW50IGZkKQo+ICAKPiAgLyoqCj4gICAqIGlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0Ogo+ICsgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1 cmUgZm9yIElPIG9wZXJhdGlvbnMKPiAgICogQHBjaV9kZXY6IGludGVsIGdyYXBoaWNzIHBjaSBk ZXZpY2UKPiAgICogQHNhZmU6IHVzZSBzYWZlIHJlZ2lzdGVyIGFjY2VzcyB0YWJsZXMKPiAgICoK PiBAQCAtMTc0LDc3ICsxNjEsNzkgQEAgcmVsZWFzZV9mb3JjZXdha2VfbG9jayhpbnQgZmQpCj4g ICAqIGhhbmRsaW5nIGFuZCBhbHNvIGFsbG93cyByZWdpc3RlciBhY2Nlc3MgdG8gYmUgY2hlY2tl ZCB3aXRoIGFuIGV4cGxpY2l0Cj4gICAqIHdoaXRlbGlzdC4KPiAgICoKPiAtICogSXQgYWxzbyBp bml0aWFsaXplcyAjaWd0X2dsb2JhbF9tbWlvIGxpa2UgaW50ZWxfbW1pb191c2VfcGNpX2Jhcigp Lgo+ICsgKiBJdCBhbHNvIGluaXRpYWxpemVzIG1taW9fZGF0YS0+aWd0X21taW8gbGlrZSBpbnRl bF9tbWlvX3VzZV9wY2lfYmFyKCkuCj4gICAqCj4gICAqIEBwY2lfZGV2IGNhbiBiZSBvYnRhaW5l ZCBmcm9tIGludGVsX2dldF9wY2lfZGV2aWNlKCkuCj4gICAqLwo+ICBpbnQKPiAtaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBzYWZlLCBp bnQgZmQpCj4gK2ludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0cnVjdCBfbW1pb19kYXRhICpt bWlvX2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKQo+ ICB7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCS8qIGFmdGVyIG9sZCBBUEkgaXMgZGVwcmVjYXRlZCwg cmVtb3ZlIHRoaXMgKi8KPiAtCWlmIChpZ3RfZ2xvYmFsX21taW8gPT0gTlVMTCkKPiAtCQlpbnRl bF9tbWlvX3VzZV9wY2lfYmFyKHBjaV9kZXYsIGZkKTsKPiArCWlmIChtbWlvX2RhdGEtPmlndF9t bWlvID09IE5VTEwpCj4gKwkJaW50ZWxfbW1pb191c2VfcGNpX2JhcihtbWlvX2RhdGEsIHBjaV9k ZXYsIGZkKTsKPiAgCj4gLQlpZ3RfYXNzZXJ0KGlndF9nbG9iYWxfbW1pbyAhPSBOVUxMKTsKPiAr CWlndF9hc3NlcnQobW1pb19kYXRhLT5pZ3RfbW1pbyAhPSBOVUxMKTsKPiAgCj4gLQlpZiAobW1p b19kYXRhLmluaXRlZCkKPiArCWlmIChtbWlvX2RhdGEtPmluaXRlZCkKPiAgCQlyZXR1cm4gLTE7 Cj4gIAo+IC0JbW1pb19kYXRhLnNhZmUgPSAoc2FmZSAhPSAwICYmCj4gKwltbWlvX2RhdGEtPnNh ZmUgPSAoc2FmZSAhPSAwICYmCj4gIAkJCWludGVsX2dlbihwY2lfZGV2LT5kZXZpY2VfaWQpID49 IDQpID8gdHJ1ZSA6IGZhbHNlOwo+IC0JbW1pb19kYXRhLmk5MTVfZGV2aWQgPSBwY2lfZGV2LT5k ZXZpY2VfaWQ7Cj4gLQlpZiAobW1pb19kYXRhLnNhZmUpCj4gLQkJbW1pb19kYXRhLm1hcCA9IGlu dGVsX2dldF9yZWdpc3Rlcl9tYXAobW1pb19kYXRhLmk5MTVfZGV2aWQpOwo+ICsJbW1pb19kYXRh LT5pOTE1X2RldmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOwo+ICsJaWYgKG1taW9fZGF0YS0+c2Fm ZSkKPiArCQltbWlvX2RhdGEtPm1hcCA9IGludGVsX2dldF9yZWdpc3Rlcl9tYXAobW1pb19kYXRh LT5pOTE1X2RldmlkKTsKPiAgCj4gIAkvKiBGaW5kIHdoZXJlIHRoZSBmb3JjZXdha2UgbG9jayBp cy4gRm9yY2V3YWtlIGRvZXNuJ3QgZXhpc3QKPiAgCSAqIGdlbiA8IDYsIGJ1dCB0aGUgZGVidWdm cyBzaG91bGQgZG8gdGhlIHJpZ2h0IHRoaW5ncyBmb3IgdXMuCj4gIAkgKi8KPiAgCXJldCA9IGln dF9vcGVuX2ZvcmNld2FrZV9oYW5kbGUoZmQpOwo+ICAJaWYgKHJldCA9PSAtMSkKPiAtCQltbWlv X2RhdGEua2V5ID0gRkFLRUtFWTsKPiArCQltbWlvX2RhdGEtPmtleSA9IEZBS0VLRVk7Cj4gIAll bHNlCj4gLQkJbW1pb19kYXRhLmtleSA9IHJldDsKPiArCQltbWlvX2RhdGEtPmtleSA9IHJldDsK PiAgCj4gLQltbWlvX2RhdGEuaW5pdGVkKys7Cj4gKwltbWlvX2RhdGEtPmluaXRlZCsrOwo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQKPiAtaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X25lZWRzX3dha2Uodm9pZCkKPiAraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2Uoc3Ry dWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSkKPiAgewo+IC0JcmV0dXJuIG1taW9fZGF0YS5rZXkg IT0gRkFLRUtFWTsKPiArCXJldHVybiBtbWlvX2RhdGEtPmtleSAhPSBGQUtFS0VZOwo+ICB9Cj4g IAo+ICAvKioKPiAgICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlOgo+ICsg KiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKPiAgICoKPiAg ICogUmV0dXJuczoKPiAgICogTm9uLXplcm8gd2hlbiBmb3JjZXdha2UgaW5pdGlhbGl6YXRpb24g ZmFpbGVkLgo+ICAgKi8KPiAtaW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtld2Fr ZSh2b2lkKQo+ICtpbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHN0cnVj dCBfbW1pb19kYXRhICptbWlvX2RhdGEpCj4gIHsKPiAtCXJldHVybiBtbWlvX2RhdGEua2V5ID09 IEZBS0VLRVk7Cj4gKwlyZXR1cm4gbW1pb19kYXRhLT5rZXkgPT0gRkFLRUtFWTsKPiAgfQo+ICAK PiAgLyoqCj4gICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pOgo+ICsgKiBAbW1pb19kYXRh OiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKPiAgICoKPiAgICogQ2xlYW4gdXAg dGhlIHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaW5pdGlhbGl6ZWQgd2l0aAo+ICAgKiBpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgo+ICAgKi8KPiAgdm9pZAo+IC1pbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfZmluaSh2b2lkKQo+ICtpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaShzdHJ1Y3QgX21t aW9fZGF0YSAqbW1pb19kYXRhKQo+ICB7Cj4gLQlpZiAobW1pb19kYXRhLmtleSAmJiBpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfd2FrZSgpKQo+IC0JCXJlbGVhc2VfZm9yY2V3YWtlX2xvY2so bW1pb19kYXRhLmtleSk7Cj4gLQltbWlvX2RhdGEuaW5pdGVkLS07Cj4gKwlpZiAobW1pb19kYXRh LT5rZXkgJiYgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2UobW1pb19kYXRhKSkKPiAr CQlyZWxlYXNlX2ZvcmNld2FrZV9sb2NrKG1taW9fZGF0YS0+a2V5KTsKPiArCW1taW9fZGF0YS0+ aW5pdGVkLS07Cj4gIH0KPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9yZWdpc3Rlcl9yZWFkOgo+IC0g KiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKPiArICogQG1taW9fZGF0YTogIG1taW8g c3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCj4gICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAo+ ICAgKgo+ICAgKiAzMi1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgQG9mZnNldC4gVGhpcyBm dW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlIG5ldwo+IEBAIC0yNTcsMjAgKzI0NiwyMCBAQCBp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lkKQo+ICAgKiBUaGUgdmFsdWUgcmVhZCBmcm9t IHRoZSByZWdpc3Rlci4KPiAgICovCj4gIHVpbnQzMl90Cj4gLWludGVsX3JlZ2lzdGVyX3JlYWQo dm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZykKPiAraW50ZWxfcmVnaXN0ZXJfcmVhZChzdHJ1 Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpCj4gIHsKPiAgCXN0cnVjdCBp bnRlbF9yZWdpc3Rlcl9yYW5nZSAqcmFuZ2U7Cj4gIAl1aW50MzJfdCByZXQ7Cj4gIAo+IC0JaWd0 X2Fzc2VydChtbWlvX2RhdGEuaW5pdGVkKTsKPiArCWlndF9hc3NlcnQobW1pb19kYXRhLT5pbml0 ZWQpOwo+ICAKPiAtCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLmk5MTVfZGV2aWQpID49IDYpCj4g LQkJaWd0X2Fzc2VydChtbWlvX2RhdGEua2V5ICE9IC0xKTsKPiArCWlmIChpbnRlbF9nZW4obW1p b19kYXRhLT5pOTE1X2RldmlkKSA+PSA2KQo+ICsJCWlndF9hc3NlcnQobW1pb19kYXRhLT5rZXkg IT0gLTEpOwo+ICAKPiAtCWlmICghbW1pb19kYXRhLnNhZmUpCj4gKwlpZiAoIW1taW9fZGF0YS0+ c2FmZSkKPiAgCQlnb3RvIHJlYWRfb3V0Owo+ICAKPiAtCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lz dGVyX3JhbmdlKG1taW9fZGF0YS5tYXAsCj4gKwlyYW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9y YW5nZShtbWlvX2RhdGEtPm1hcCwKPiAgCQkJCQkgcmVnLAo+ICAJCQkJCSBJTlRFTF9SQU5HRV9S RUFEKTsKPiAgCj4gQEAgLTI4MSwxNCArMjcwLDE0IEBAIGludGVsX3JlZ2lzdGVyX3JlYWQodm9p ZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZykKPiAgCX0KPiAgCj4gIHJlYWRfb3V0Ogo+IC0JcmV0 ID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9tbWlvICsgcmVn KTsKPiArCXJldCA9ICoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKiltbWlv X2RhdGEtPmlndF9tbWlvICsgcmVnKTsKPiAgb3V0Ogo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAK PiAgLyoqCj4gICAqIGludGVsX3JlZ2lzdGVyX3dyaXRlOgo+IC0gKiBAaWd0X21taW8gbWFwZWQg bWVtb3J5IHBvaW50ZXIKPiArICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBv cGVyYXRpb25zCj4gICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAo+ICAgKiBAdmFsOiB2YWx1ZSB0 byB3cml0ZQo+ICAgKgo+IEBAIC0yOTksMTkgKzI4OCwxOSBAQCBvdXQ6Cj4gICAqIHdoaXRlIGxp c3RzLgo+ICAgKi8KPiAgdm9pZAo+IC1pbnRlbF9yZWdpc3Rlcl93cml0ZSh2b2lkICppZ3RfbW1p bywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4gK2ludGVsX3JlZ2lzdGVyX3dyaXRlKHN0 cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+ ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKnJhbmdlOwo+ICAKPiAtCWlndF9h c3NlcnQobW1pb19kYXRhLmluaXRlZCk7Cj4gKwlpZ3RfYXNzZXJ0KG1taW9fZGF0YS0+aW5pdGVk KTsKPiAgCj4gLQlpZiAoaW50ZWxfZ2VuKG1taW9fZGF0YS5pOTE1X2RldmlkKSA+PSA2KQo+IC0J CWlndF9hc3NlcnQobW1pb19kYXRhLmtleSAhPSAtMSk7Cj4gKwlpZiAoaW50ZWxfZ2VuKG1taW9f ZGF0YS0+aTkxNV9kZXZpZCkgPj0gNikKPiArCQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS0+a2V5ICE9 IC0xKTsKPiAgCj4gLQlpZiAoIW1taW9fZGF0YS5zYWZlKQo+ICsJaWYgKCFtbWlvX2RhdGEtPnNh ZmUpCj4gIAkJZ290byB3cml0ZV9vdXQ7Cj4gIAo+IC0JcmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0 ZXJfcmFuZ2UobW1pb19kYXRhLm1hcCwKPiArCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3Jh bmdlKG1taW9fZGF0YS0+bWFwLAo+ICAJCQkJCSByZWcsCj4gIAkJCQkJIElOVEVMX1JBTkdFX1dS SVRFKTsKPiAgCj4gQEAgLTMxOSw3ICszMDgsNyBAQCBpbnRlbF9yZWdpc3Rlcl93cml0ZSh2b2lk ICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4gIAkJICAgICAgIlJlZ2lz dGVyIHdyaXRlIGJsb2NrZWQgZm9yIHNhZmV0eSAiIigqMHglMDh4ID0gMHgleClcbiIsIHJlZywg dmFsKTsKPiAgCj4gIHdyaXRlX291dDoKPiAtCSoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0 aWxlIGNoYXIgKilpZ3RfbW1pbyArIHJlZykgPSB2YWw7Cj4gKwkqKHZvbGF0aWxlIHVpbnQzMl90 ICopKCh2b2xhdGlsZSBjaGFyICopbW1pb19kYXRhLT5pZ3RfbW1pbyArIHJlZykgPSB2YWw7Cj4g IH0KPiAgCj4gIAo+IEBAIC0zMzEsNyArMzIwLDcgQEAgd3JpdGVfb3V0Ogo+ICAgKiAzMi1iaXQg cmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgb2Zmc2V0IEByZWcuIFRoaXMgZnVuY3Rpb24gb25seSB3 b3JrcyB3aGVuIHRoZQo+ICAgKiBuZXcgcmVnaXN0ZXIgYWNjZXNzIGhlbHBlciBpcyBpbml0aWFs aXplZCB3aXRoIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkuCj4gICAqCj4gLSAqIFRoaXMg ZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBz YWZldHkgY2hlY2tzLgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSBp Z3RfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCj4gICAqCj4gICAqIFJldHVybnM6Cj4gICAq IFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgo+IEBAIC0zNDksNyArMzM4LDcgQEAg dWludDMyX3QgSU5SRUcodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZykKPiAgICogMTYtYml0 IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IG9mZnNldCBAcmVnLiBUaGlzIGZ1bmN0aW9uIG9ubHkg d29ya3Mgd2hlbiB0aGUKPiAgICogbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaXMgaW5pdGlh bGl6ZWQgd2l0aCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgo+ICAgKgo+IC0gKiBUaGlz IGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2JhbF9tbWlvIHdpdGhvdXQg c2FmZXR5IGNoZWNrcy4KPiArICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUg aWd0X21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgo+ICAgKgo+ICAgKiBSZXR1cm5zOgo+ICAg KiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4KPiBAQCAtMzY3LDcgKzM1Niw3IEBA IHVpbnQxNl90IElOUkVHMTYodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZykKPiAgICogOC1i aXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgb2Zmc2V0IEByZWcuIFRoaXMgZnVuY3Rpb24gb25s eSB3b3JrcyB3aGVuIHRoZQo+ICAgKiBuZXcgcmVnaXN0ZXIgYWNjZXNzIGhlbHBlciBpcyBpbml0 aWFsaXplZCB3aXRoIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkuCj4gICAqCj4gLSAqIFRo aXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91 dCBzYWZldHkgY2hlY2tzLgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRo ZSBpZ3RfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCj4gICAqCj4gICAqIFJldHVybnM6Cj4g ICAqIFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgo+IEBAIC0zODcsNyArMzc2LDcg QEAgdWludDhfdCBJTlJFRzgodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZykKPiAgICogd2hl biB0aGUgbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aAo+ICAg KiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgo+ICAgKgo+IC0gKiBUaGlzIGZ1bmN0aW9u IGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2JhbF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNo ZWNrcy4KPiArICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgaWd0X21taW8g d2l0aG91dCBzYWZldHkgY2hlY2tzLgo+ICAgKi8KPiAgdm9pZCBPVVRSRUcodm9pZCAqaWd0X21t aW8sIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+ICB7Cj4gQEAgLTQwMyw3ICszOTIsNyBA QCB2b2lkIE9VVFJFRyh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwp Cj4gICAqIHdoZW4gdGhlIG5ldyByZWdpc3RlciBhY2Nlc3MgaGVscGVyIGlzIGluaXRpYWxpemVk IHdpdGgKPiAgICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KPiAgICoKPiAtICogVGhp cyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgI2lndF9nbG9iYWxfbW1pbyB3aXRob3V0 IHNhZmV0eSBjaGVja3MuCj4gKyAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhl IGlndF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KPiAgICovCj4gIHZvaWQgT1VUUkVHMTYo dm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKQo+ICB7Cj4gQEAgLTQy MCw3ICs0MDksNyBAQCB2b2lkIE9VVFJFRzE2KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcs IHVpbnQxNl90IHZhbCkKPiAgICogd2hlbiB0aGUgbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIg aXMgaW5pdGlhbGl6ZWQgd2l0aAo+ICAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgo+ ICAgKgo+IC0gKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2Jh bF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KPiArICogVGhpcyBmdW5jdGlvbiBkaXJlY3Rs eSBhY2Nlc3NlcyB0aGUgaWd0X21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgo+ICAgKi8KPiAg dm9pZCBPVVRSRUc4KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQo+ ICB7Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jIGIvdGVzdHMv aTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKPiBpbmRleCAzOWY0NDFkMi4uZTM2MzYxZDggMTAwNjQ0 Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKPiArKysgYi90ZXN0cy9pOTE1 L2dlbV9leGVjX2xhdGVuY3kuYwo+IEBAIC02Miw2ICs2Miw5IEBACj4gIHN0YXRpYyB1bnNpZ25l ZCBpbnQgcmluZ19zaXplOwo+ICBzdGF0aWMgZG91YmxlIHJjc19jbG9jazsKPiAgCj4gK3ZvaWQg KmlndF9nbG9iYWxfbW1pbzsKPiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsK PiArCj4gIHN0YXRpYyB2b2lkCj4gIHBvbGxfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGNv bnN0IGNoYXIgKm5hbWUpCj4gIHsKPiBAQCAtNjgwLDcgKzY4Myw5IEBAIGlndF9tYWluCj4gIAkJ aWYgKHJpbmdfc2l6ZSA+IDEwMjQpCj4gIAkJCXJpbmdfc2l6ZSA9IDEwMjQ7Cj4gIAo+IC0JCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBk ZXZpY2UpOwo+ICsJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVs X2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBkZXZpY2UpOwo+ICsJCWlndF9nbG9iYWxfbW1pbyA9 IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiArCj4gIAkJcmNzX2Nsb2NrID0gY2xvY2tyYXRlKGRldmlj ZSwgUkNTX1RJTUVTVEFNUCk7Cj4gIAkJaWd0X2luZm8oIlJDUyB0aW1lc3RhbXAgY2xvY2s6ICUu MGZLSHosICUuMWZuc1xuIiwKPiAgCQkJIHJjc19jbG9jayAvIDFlMywgMWU5IC8gcmNzX2Nsb2Nr KTsKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jIGIvdGVzdHMvaTkx NS9nZW1fZXhlY19wYXJzZS5jCj4gaW5kZXggNDIzZDZlYTYuLjk4YjA1MjY3IDEwMDY0NAo+IC0t LSBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4 ZWNfcGFyc2UuYwo+IEBAIC01OCw2ICs1OCw5IEBACj4gIAo+ICBzdGF0aWMgaW50IHBhcnNlcl92 ZXJzaW9uOwo+ICAKPiArdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+ICtzdGF0aWMgc3RydWN0IF9t bWlvX2RhdGEgbW1pb19kYXRhOwo+ICsKPiAgc3RhdGljIGludCBjb21tYW5kX3BhcnNlcl92ZXJz aW9uKGludCBmZCkKPiAgewo+ICAJaW50IHZlcnNpb24gPSAtMTsKPiBAQCAtMjg0LDkgKzI4Nyw5 IEBAIHRlc3RfbHJpKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCBzdHJ1Y3QgdGVzdF9scmkgKnRl c3QpCj4gIAkJICB0ZXN0LT5uYW1lLCB0ZXN0LT5yZWcsIHRlc3QtPnRlc3RfdmFsLAo+ICAJCSAg ZXhwZWN0ZWRfZXJybm8sIGV4cGVjdCk7Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUoaWd0 X2dsb2JhbF9tbWlvLCB0ZXN0LT5yZWcsIHRlc3QtPmluaXRfdmFsKTsKPiArCWludGVsX3JlZ2lz dGVyX3dyaXRlKCZtbWlvX2RhdGEsIHRlc3QtPnJlZywgdGVzdC0+aW5pdF92YWwpOwo+ICAKPiAt CWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFkKGlndF9nbG9iYWxfbW1pbywg dGVzdC0+cmVnKSAmCj4gKwlpZ3RfYXNzZXJ0X2VxX3UzMigoaW50ZWxfcmVnaXN0ZXJfcmVhZCgm bW1pb19kYXRhLCB0ZXN0LT5yZWcpICYKPiAgCQkJICAgdGVzdC0+cmVhZF9tYXNrKSwKPiAgCQkJ ICB0ZXN0LT5pbml0X3ZhbCk7Cj4gIAo+IEBAIC0yOTYsNyArMjk5LDcgQEAgdGVzdF9scmkoaW50 IGZkLCB1aW50MzJfdCBoYW5kbGUsIHN0cnVjdCB0ZXN0X2xyaSAqdGVzdCkKPiAgCQkgICBleHBl Y3RlZF9lcnJubyk7Cj4gIAlnZW1fc3luYyhmZCwgaGFuZGxlKTsKPiAgCj4gLQlpZ3RfYXNzZXJ0 X2VxX3UzMigoaW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfZ2xvYmFsX21taW8sIHRlc3QtPnJlZykg Jgo+ICsJaWd0X2Fzc2VydF9lcV91MzIoKGludGVsX3JlZ2lzdGVyX3JlYWQoJm1taW9fZGF0YSwg dGVzdC0+cmVnKSAmCj4gIAkJCSAgIHRlc3QtPnJlYWRfbWFzayksCj4gIAkJCSAgZXhwZWN0KTsK PiAgfQo+IEBAIC01MzAsNyArNTMzLDggQEAgaWd0X21haW4KPiAgI3VuZGVmIFJFRwo+ICAKPiAg CQlpZ3RfZml4dHVyZSB7Cj4gLQkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dl dF9wY2lfZGV2aWNlKCksIDAsIGZkKTsKPiArCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo Jm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOwo+ICsJCQlpZ3RfZ2xv YmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87Cj4gIAkJfQo+ICAKPiAgCQlmb3IgKGludCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUobHJpcyk7IGkrKykgewo+IEBAIC01NDMsNyArNTQ3LDcgQEAg aWd0X21haW4KPiAgCQl9Cj4gIAo+ICAJCWlndF9maXh0dXJlIHsKPiAtCQkJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2ZpbmkoKTsKPiArCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9f ZGF0YSk7Cj4gIAkJfQo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3Bt X2xwc3AuYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKPiBpbmRleCBmNjljODhmNi4uY2Ji ZTZhNGIgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwo+ICsrKyBiL3Rl c3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKPiBAQCAtMzAsNiArMzAsOCBAQAo+ICAjaW5jbHVkZSA8 ZmNudGwuaD4KPiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICAKPiArdm9pZCAqaWd0X2dsb2JhbF9t bWlvOwo+ICtzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwo+ICAKPiAgc3RhdGlj IGJvb2wgc3VwcG9ydHNfbHBzcCh1aW50MzJfdCBkZXZpZCkKPiAgewo+IEBAIC0yMTAsNyArMjEy LDggQEAgaWd0X21haW4KPiAgCj4gIAkJaWd0X3JlcXVpcmUoc3VwcG9ydHNfbHBzcChkZXZpZCkp Owo+ICAKPiAtCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2Rldmlj ZSgpLCAwLCBkcm1fZmQpOwo+ICsJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2Rh dGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7Cj4gKwkJaWd0X2dsb2JhbF9t bWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCQlrbXN0ZXN0X3NldF92dF9ncmFwaGlj c19tb2RlKCk7Cj4gIAl9Cj4gQEAgLTIyNyw3ICsyMzAsNyBAQCBpZ3RfbWFpbgo+ICAJaWd0X2Zp eHR1cmUgewo+ICAJCWludCBpOwo+ICAKPiAtCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgp Owo+ICsJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwo+ICAJCWZvciAo aSA9IDA7IGkgPCBkcm1fcmVzLT5jb3VudF9jb25uZWN0b3JzOyBpKyspCj4gIAkJCWRybU1vZGVG cmVlQ29ubmVjdG9yKGRybV9jb25uZWN0b3JzW2ldKTsKPiAgCQlkcm1Nb2RlRnJlZVJlc291cmNl cyhkcm1fcmVzKTsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jIGIvdG9v bHMvaW50ZWxfYXVkaW9fZHVtcC5jCj4gaW5kZXggODY2NjQ0NzguLjk4NGM3ZGE0IDEwMDY0NAo+ IC0tLSBhL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYwo+ICsrKyBiL3Rvb2xzL2ludGVsX2F1ZGlv X2R1bXAuYwo+IEBAIC00MSw2ICs0MSw4IEBAIHN0YXRpYyB1aW50MzJfdCBkZXZpZDsKPiAgCj4g IHN0YXRpYyBpbnQgYXVkX3JlZ19iYXNlID0gMDsJLyogYmFzZSBhZGRyZXNzIG9mIGF1ZGlvIHJl Z2lzdGVycyAqLwo+ICBzdGF0aWMgaW50IGRpc3BfcmVnX2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJl c3Mgb2YgZGlzcGxheSByZWdpc3RlcnMgKi8KPiArdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+ICtz dGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwo+ICAKPiAgI2RlZmluZSBJU19IQVNX RUxMX1BMVVMoZGV2aWQpICAoSVNfSEFTV0VMTChkZXZpZCkgfHwgSVNfQlJPQURXRUxMKGRldmlk KSkKPiAgCj4gQEAgLTI0OTgsOSArMjUwMCwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCj4gIAlkb19zZWxmX3Rlc3RzKCk7Cj4gIAo+ICAJaWYgKGFyZ2MgPT0gMikKPiAtCQlp bnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoYXJndlsxXSk7Cj4gKwkJaW50ZWxfbW1pb191c2VfZHVt cF9maWxlKCZtbWlvX2RhdGEsIGFyZ3ZbMV0pOwo+ICAJZWxzZQo+IC0JCWludGVsX21taW9fdXNl X3BjaV9iYXIocGNpX2RldiwgLTEpOwo+ICsJCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9f ZGF0YSwgcGNpX2RldiwgLTEpOwpOZXdsaW5lIG5lZWRlZCBoZXJlLgo+ICsJaWd0X2dsb2JhbF9t bWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCXByaW50ZigiJXMgYXVkaW8gcmVnaXN0 ZXJzOlxuXG4iLCBpbnRlbF9nZXRfZGV2aWNlX2luZm8oZGV2aWQpLT5jb2RlbmFtZSk7Cj4gIAlp ZiAoSVNfVkFMTEVZVklFVyhkZXZpZCkpIHsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfYmFj a2xpZ2h0LmMgYi90b29scy9pbnRlbF9iYWNrbGlnaHQuYwo+IGluZGV4IDg1ZDA5OWQ3Li40ZTZh ZDRiYiAxMDA2NDQKPiAtLS0gYS90b29scy9pbnRlbF9iYWNrbGlnaHQuYwo+ICsrKyBiL3Rvb2xz L2ludGVsX2JhY2tsaWdodC5jCj4gQEAgLTM1LDEyICszNSwxNSBAQAo+ICAjaW5jbHVkZSAiaW50 ZWxfcmVnLmgiCj4gIAo+ICAvKiBYWFggUENIIG9ubHkgdG9kYXkgKi8KPiArc3RhdGljIHN0cnVj dCBfbW1pb19kYXRhIG1taW9fZGF0YTsKPiArdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+ICAKPiAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQo+ICB7Cj4gIAl1aW50MzJfdCBjdXJyZW50 LCBtYXg7Cj4gIAo+IC0JaW50ZWxfbW1pb191c2VfcGNpX2JhcihpbnRlbF9nZXRfcGNpX2Rldmlj ZSgpLCAtMSk7Cj4gKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGludGVsX2dl dF9wY2lfZGV2aWNlKCksIC0xKTsKPiArCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3Rf bW1pbzsKPiAgCj4gIAljdXJyZW50ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENfUFdNX0NQ VV9DVEwpICYgQkFDS0xJR0hUX0RVVFlfQ1lDTEVfTUFTSzsKPiAgCW1heCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgQkxDX1BXTV9QQ0hfQ1RMMikgPj4gMTY7Cj4gZGlmZiAtLWdpdCBhL3Rvb2xz L2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMgYi90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCj4g aW5kZXggZTEwOTRkMzkuLmFmN2U0MGNjIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX2Rpc3Bs YXlfcG9sbGVyLmMKPiArKysgYi90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCj4gQEAgLTU5 LDYgKzU5LDggQEAgZW51bSB0ZXN0IHsKPiAgCj4gIHN0YXRpYyB1aW50MzJfdCB2bHZfb2Zmc2V0 Owo+ICBzdGF0aWMgdWludDE2X3QgcGlwZV9vZmZzZXRbM10gPSB7IDAsIDB4MTAwMCwgMHgyMDAw LCB9Owo+ICt2b2lkICppZ3RfZ2xvYmFsX21taW87Cj4gK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0 YSBtbWlvX2RhdGE7Cj4gIAo+ICAjZGVmaW5lIFBJUEVfUkVHKHBpcGUsIHJlZ19hKSAocGlwZV9v ZmZzZXRbKHBpcGUpXSArIChyZWdfYSkpCj4gIAo+IEBAIC0xMTg3LDcgKzExODksOCBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCWJyZWFrOwo+ICAJfQo+ICAKPiAtCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsK PiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lf ZGV2aWNlKCksIDAsIC0xKTsKPiArCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1p bzsKPiAgCj4gIAlwcmludGYoIiVzP1xuIiwgdGVzdF9uYW1lKHRlc3QsIHBpcGUsIGJpdCwgdGVz dF9waXhlbGNvdW50KSk7Cj4gIAo+IEBAIC0xMjYyLDcgKzEyNjUsNyBAQCBpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQo+ICAJCWFzc2VydCgwKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1t aW9fZGF0YSk7Cj4gIAo+ICAJaWYgKHF1aXQpCj4gIAkJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBh L3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYyBiL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYwo+IGlu ZGV4IGUwNTdmNWZlLi5lNTJkYjVlZCAxMDA2NDQKPiAtLS0gYS90b29scy9pbnRlbF9mb3JjZXdh a2VkLmMKPiArKysgYi90b29scy9pbnRlbF9mb3JjZXdha2VkLmMKPiBAQCAtMzksNiArMzksOCBA QAo+ICAjaW5jbHVkZSAiZHJtdGVzdC5oIgo+ICAKPiAgYm9vbCBkYWVtb25pemVkOwo+ICt2b2lk ICppZ3RfZ2xvYmFsX21taW87Cj4gK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7 Cj4gIAo+ICAjZGVmaW5lIElORk9fUFJJTlQoLi4uKSBcCj4gIAlkbyB7IFwKPiBAQCAtNTksNyAr NjEsNyBAQCBoZWxwKGNoYXIgKnByb2cpIHsKPiAgc3RhdGljIGludAo+ICBpc19hbGl2ZSh2b2lk KSB7Cj4gIAkvKiBSZWFkIHRoZSB0aW1lc3RhbXAsIHdoaWNoIHNob3VsZCAqYWxtb3N0KiBhbHdh eXMgYmUgITAgKi8KPiAtCXJldHVybiAoaW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfZ2xvYmFsX21t aW8sIDB4MjM1OCkgIT0gMCk7Cj4gKwlyZXR1cm4gKGludGVsX3JlZ2lzdGVyX3JlYWQoJm1taW9f ZGF0YSwgMHgyMzU4KSAhPSAwKTsKPiAgfQo+ICAKPiAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKPiBAQCAtODAsNyArODIsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQo+ICAJCUlORk9fUFJJTlQoInN0YXJ0ZWQgZGFlbW9uIik7Cj4gIAl9Cj4gIAo+IC0JcmV0 ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwg LTEpOwo+ICsJcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50 ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwgLTEpOwo+ICsJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19k YXRhLmlndF9tbWlvOwo+ICAJaWYgKHJldCkgewo+ICAJCUlORk9fUFJJTlQoIkNvdWxkbid0IGlu aXQgcmVnaXN0ZXIgYWNjZXNzXG4iKTsKPiAgCQlleGl0KDEpOwo+IEBAIC05MCwxNCArOTMsMTUg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgCXdoaWxlKDEpIHsKPiAgCQlp ZiAoIWlzX2FsaXZlKCkpIHsKPiAgCQkJSU5GT19QUklOVCgiZ3B1IHJlc2V0PyByZXN0YXJ0aW5n IGRhZW1vblxuIik7Cj4gLQkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7Cj4gLQkJCXJl dCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEs IC0xKTsKPiArCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7Cj4gKwkJ CXJldCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9w Y2lfZGV2aWNlKCksIDEsIC0xKTsKPiArCQkJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmln dF9tbWlvOwo+ICAJCQlpZiAocmV0KQo+ICAJCQkJSU5GT19QUklOVCgiUmVnIGFjY2VzcyBpbml0 IGZhaWxcbiIpOwo+ICAJCX0KPiAgCQlzbGVlcCgxKTsKPiAgCX0KPiAtCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRh KTsKPiAgCUlORk9fUFJJTlQoIkZvcmNld2FrZSB1bmxvY2tcbiIpOwo+ICAKPiAgCWlmIChkYWVt b25pemVkKSB7Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMgYi90b29scy9p bnRlbF9ncHVfdGltZS5jCj4gaW5kZXggZDkwYjgxNmEuLmQ3YWNmZDJiIDEwMDY0NAo+IC0tLSBh L3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKPiArKysgYi90b29scy9pbnRlbF9ncHVfdGltZS5jCj4g QEAgLTQxLDYgKzQxLDggQEAKPiAgI2RlZmluZSBTQU1QTEVTX1BFUl9TRUMgICAgICAgICAgICAg MTAwMDAKPiAgCj4gIHN0YXRpYyB2b2xhdGlsZSBpbnQgZ29kZG87Cj4gK3ZvaWQgKmlndF9nbG9i YWxfbW1pbzsKPiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKPiAgCj4gIHN0 YXRpYyBwaWRfdCBzcGF3bihjaGFyICoqYXJndikKPiAgewo+IEBAIC02Nyw3ICs2OSw4IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPiAgCXN0YXRpYyBzdHJ1Y3QgcnVzYWdlIHJ1 c2FnZTsKPiAgCWludCBzdGF0dXM7Cj4gIAo+IC0JaW50ZWxfbW1pb191c2VfcGNpX2JhcihpbnRl bF9nZXRfcGNpX2RldmljZSgpLCAtMSk7Cj4gKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlv X2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIC0xKTsKPiArCWlndF9nbG9iYWxfbW1pbyA9 IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlpZiAoYXJnYyA9PSAxKSB7Cj4gIAkJZnByaW50 ZihzdGRlcnIsICJ1c2FnZTogJXMgY21kIFthcmdzLi4uXVxuIiwgYXJndlswXSk7Cj4gZGlmZiAt LWdpdCBhL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYyBiL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMu Ywo+IGluZGV4IDY4OWY1ZmFhLi42MzNhNWUxMCAxMDA2NDQKPiAtLS0gYS90b29scy9pbnRlbF9p bmZvZnJhbWVzLmMKPiArKysgYi90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKPiBAQCAtMjYyLDYg KzI2Miw4IEBAIGNvbnN0IGNoYXIgKmRpcF9mcmVxdWVuY3lfbmFtZXNbXSA9IHsKPiAgCSJyZXNl cnZlZCAoaW52YWxpZCkiCj4gIH07Cj4gIAo+ICt2b2lkICppZ3RfZ2xvYmFsX21taW87Cj4gK3N0 YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7Cj4gIHN0cnVjdCBwY2lfZGV2aWNlICpw Y2lfZGV2Owo+ICBpbnQgZ2VuID0gMDsKPiAgCj4gQEAgLTExMDgsNyArMTExMCw4IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkgICAgICAgIiBwZXJmZWN0bHk6IHRoZSBL ZXJuZWwgbWlnaHQgdW5kbyBvdXIgY2hhbmdlcy5cbiIpOwo+ICAKPiAgCXBjaV9kZXYgPSBpbnRl bF9nZXRfcGNpX2RldmljZSgpOwo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQocGNpX2Rl diwgMCwgLTEpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgcGNp X2RldiwgMCwgLTEpOwo+ICsJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ ICAJaW50ZWxfY2hlY2tfcGNoKCk7Cj4gIAo+ICAJaWYgKElTX0dFTjQocGNpX2Rldi0+ZGV2aWNl X2lkKSkKPiBAQCAtMTI1Niw2ICsxMjU5LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKPiAgCX0KPiAgCj4gIG91dDoKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7 Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKPiAgCXJldHVybiBy ZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMgYi90b29scy9p bnRlbF9sM19wYXJpdHkuYwo+IGluZGV4IDAxNGFjOWYxLi43YTQ2MWE1NCAxMDA2NDQKPiAtLS0g YS90b29scy9pbnRlbF9sM19wYXJpdHkuYwo+ICsrKyBiL3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5j Cj4gQEAgLTQ0LDYgKzQ0LDggQEAKPiAgI2luY2x1ZGUgImludGVsX2wzX3Bhcml0eS5oIgo+ICAK PiAgc3RhdGljIHVuc2lnbmVkIGludCBkZXZpZDsKPiArdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+ ICtzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwo+ICAvKiBMMyBzaXplIGlzIGFs d2F5cyBhIGZ1bmN0aW9uIG9mIGJhbmtzLiBUaGUgbnVtYmVyIG9mIGJhbmtzIGNhbm5vdCBiZQo+ ICAgKiBkZXRlcm1pbmVkIGJ5IG51bWJlciBvZiBzbGljZXMgaG93ZXZlciAqLwo+ICBzdGF0aWMg aW5saW5lIGludCBudW1fYmFua3Modm9pZCkgewo+IEBAIC0xODksNyArMTkxLDggQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgCWlmIChpbnRlbF9nZW4oZGV2aWQpIDwgNyB8 fCBJU19WQUxMRVlWSUVXKGRldmlkKSkKPiAgCQlleGl0KDc3KTsKPiAgCj4gLQlhc3NlcnQoaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZGV2aWNl KSA9PSAwKTsKPiArCWFzc2VydChpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRh LCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBkZXZpY2UpID09IDApOwo+ICsJaWd0X2dsb2Jh bF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCWRpciA9IGlndF9zeXNmc19vcGVu KGRldmljZSk7Cj4gIAo+IEBAIC0yMTEsNyArMjE0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKPiAgCSAqIG5vdy4gSnVzdCBiZSBhd2FyZSBvZiB0aGlzIGlmIGZvciBzb21l IHJlYXNvbiBhIGhhbmcgaXMgcmVwb3J0ZWQKPiAgCSAqIHdoZW4gdXNpbmcgdGhpcyB0b29sLgo+ ICAJICovCj4gLQlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKGlndF9nbG9iYWxfbW1pbywgMHhi MDM4KTsKPiArCWRmdCA9IGludGVsX3JlZ2lzdGVyX3JlYWQoJm1taW9fZGF0YSwgMHhiMDM4KTsK PiAgCj4gIAl3aGlsZSAoMSkgewo+ICAJCWludCBjLCBvcHRpb25faW5kZXggPSAwOwo+IEBAIC0z NTcsMTIgKzM2MCwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCQkJ YXNzZXJ0KGkgPCAyKTsKPiAgCQkJCWRmdCB8PSBpIDw8IDE7IC8qIHNsaWNlICovCj4gIAkJCQlk ZnQgfD0gMSA8PCAwOyAvKiBlbmFibGUgKi8KPiAtCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKGln dF9nbG9iYWxfbW1pbywgMHhiMDM4LAo+IC0JCQkJCQkgICAgIGRmdCk7Cj4gKwkJCQlpbnRlbF9y ZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCAweGIwMzgsIGRmdCk7Cj4gIAkJCQlicmVhazsKPiAg CQkJY2FzZSAndSc6Cj4gLQkJCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShpZ3RfZ2xvYmFsX21taW8s IDB4YjAzOCwKPiAtCQkJCQkJICAgICBkZnQgJiB+KDEgPDwgMCkpOwo+ICsJCQkJaW50ZWxfcmVn aXN0ZXJfd3JpdGUoJm1taW9fZGF0YSwgMHhiMDM4LCBkZnQgJgo+ICsJCQkJCQkgICAgIH4oMSA8 PCAwKSk7Cj4gIAkJCQlicmVhazsKPiAgCQkJY2FzZSAnTCc6Cj4gIAkJCQlicmVhazsKPiBAQCAt MzcxLDcgKzM3Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJfQo+ ICAJfQo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7Cj4gKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKPiAgCWlmIChhY3Rpb24gPT0gJ2wnKQo+ICAJ CWV4aXQoRVhJVF9TVUNDRVNTKTsKPiAgCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2xpZC5j IGIvdG9vbHMvaW50ZWxfbGlkLmMKPiBpbmRleCBhNDEzMmQ1Ni4uYzU4OTgyMmIgMTAwNjQ0Cj4g LS0tIGEvdG9vbHMvaW50ZWxfbGlkLmMKPiArKysgYi90b29scy9pbnRlbF9saWQuYwo+IEBAIC01 Miw2ICs1Miw5IEBAIGVudW0gbGlkX3N0YXR1cyB7Cj4gICNkZWZpbmUgQUNQSV9CVVRUT04gIi9w cm9jL2FjcGkvYnV0dG9uLyIKPiAgI2RlZmluZSBBQ1BJX0xJRCAiL3Byb2MvYWNwaS9idXR0b24v bGlkLyIKPiAgCj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKPiArc3RhdGljIHN0cnVjdCBfbW1p b19kYXRhIG1taW9fZGF0YTsKPiArCj4gIHN0YXRpYyBpbnQgaTgzMF9sdmRzX2FjcGlfbGlkX3N0 YXRlKHZvaWQpCj4gIHsKPiAgCWludCBmZDsKPiBAQCAtMTE5LDcgKzEyMiw4IEBAIGludCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKPiAgewo+ICAJaW50IHN3ZjE0LCBhY3BpX2xpZDsKPiAg Cj4gLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCksIC0xKTsK PiArCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZp Y2UoKSwgLTEpOwo+ICsJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAK PiAgCXdoaWxlICgxKSB7Cj4gIAkJc3dmMTQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFNXRjE0 KTsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMgYi90b29scy9pbnRl bF9wYW5lbF9maXR0ZXIuYwo+IGluZGV4IDI2ODQzZDdjLi45NjYzZDBjYyAxMDA2NDQKPiAtLS0g YS90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYwo+ICsrKyBiL3Rvb2xzL2ludGVsX3BhbmVsX2Zp dHRlci5jCj4gQEAgLTM1LDYgKzM1LDggQEAKPiAgI2luY2x1ZGUgImludGVsX3JlZy5oIgo+ICAj aW5jbHVkZSAiZHJtdGVzdC5oIgo+ICAKPiArdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+ICtzdGF0 aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwo+ICBpbnQgZ2VuOwo+ICAKPiAgdWludDMy X3QgSFRPVEFMW10gICAgID0geyAweDYwMDAwLCAweDYxMDAwLCAweDYyMDAwIH07Cj4gQEAgLTI4 MCw3ICsyODIsOCBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgCSAgICAg ICAic29sdXRpb24gdGhhdCBtYXkgb3IgbWF5IG5vdCB3b3JrLiBVc2UgaXQgYXQgeW91ciBvd24g cmlzay5cbiIpOwo+ICAKPiAgCXBjaV9kZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgpOwo+IC0J aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQocGNpX2RldiwgMCwgLTEpOwo+ICsJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgcGNpX2RldiwgMCwgLTEpOwo+ICsJaWd0X2ds b2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAJZGV2aWQgPSBwY2lfZGV2LT5kZXZp Y2VfaWQ7Cj4gIAo+ICAJaWYgKCFIQVNfUENIX1NQTElUKGRldmlkKSkgewo+IEBAIC0zNDIsNiAr MzQ1LDYgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAl9Cj4gIAo+ICBv dXQ6Cj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+ICsJaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gZGlmZiAtLWdp dCBhL3Rvb2xzL2ludGVsX3BlcmZfY291bnRlcnMuYyBiL3Rvb2xzL2ludGVsX3BlcmZfY291bnRl cnMuYwo+IGluZGV4IGJlNTczYjU1Li4zOGY3MTQxOSAxMDA2NDQKPiAtLS0gYS90b29scy9pbnRl bF9wZXJmX2NvdW50ZXJzLmMKPiArKysgYi90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMKPiBA QCAtMzAwLDYgKzMwMCw4IEBAIHVpbnQzMl90ICp0b3RhbHM7Cj4gIHVpbnQzMl90ICpsYXN0X2Nv dW50ZXI7Cj4gIHN0YXRpYyBkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7Cj4gIHN0cnVjdCBpbnRl bF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Cj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKPiArc3RhdGlj IHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKPiAgCj4gIC8qIERXMCAqLwo+ICAjZGVmaW5l IEdFTjVfTUlfUkVQT1JUX1BFUkZfQ09VTlQgKCgweDI2IDw8IDIzKSB8ICgzIC0gMikpCj4gQEAg LTQ4MywxMCArNDg1LDEyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ICAKPiAgCWlm IChvYWNvbnRyb2wpIHsKPiAgCQkvKiBGb3JjZXdha2UgKi8KPiAtCQlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBmZCk7Cj4gKwkJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwKPiAr CQkJCQkgICAwLCBmZCk7Cj4gKwkJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlv Owo+ICAKPiAgCQkvKiBFbmFibGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KPiAtCQlpbnRlbF9y ZWdpc3Rlcl93cml0ZShpZ3RfZ2xvYmFsX21taW8sIE9BQ09OVFJPTCwKPiArCQlpbnRlbF9yZWdp c3Rlcl93cml0ZSgmbW1pb19kYXRhLCBPQUNPTlRST0wsCj4gIAkJCQkgICAgIGNvdW50ZXJfZm9y bWF0IDw8Cj4gIAkJCQkgICAgIE9BQ09OVFJPTF9DT1VOVEVSX1NFTEVDVF9TSElGVCB8Cj4gIAkJ CQkgICAgIFBFUkZPUk1BTkNFX0NPVU5URVJfRU5BQkxFKTsKPiBAQCAtNTIxLDEwICs1MjUsMTAg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gIAo+ICAJaWYgKG9hY29udHJvbCkgewo+ ICAJCS8qIERpc2FibGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KPiAtCQlpbnRlbF9yZWdpc3Rl cl93cml0ZShpZ3RfZ2xvYmFsX21taW8sIE9BQ09OVFJPTCwgMCk7Cj4gKwkJaW50ZWxfcmVnaXN0 ZXJfd3JpdGUoJm1taW9fZGF0YSwgT0FDT05UUk9MLCAwKTsKPiAgCj4gIAkJLyogRm9yY2V3YWtl ICovCj4gLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKPiArCQlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKPiAgCX0KPiAgCj4gIAlmcmVlKHRvdGFscyk7Cj4g ZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3JlZy5jIGIvdG9vbHMvaW50ZWxfcmVnLmMKPiBpbmRl eCBkZWJkOGM5YS4uM2E5MDU4OWYgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvaW50ZWxfcmVnLmMKPiAr KysgYi90b29scy9pbnRlbF9yZWcuYwo+IEBAIC04NCw2ICs4NCw5IEBAIHN0cnVjdCBjb25maWcg ewo+ICAJaW50IHZlcmJvc2l0eTsKPiAgfTsKPiAgCj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsK PiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKPiArCj4gIC8qIHBvcnQgZGVz YyBtdXN0IGhhdmUgYmVlbiBzZXQgKi8KPiAgc3RhdGljIGludCBzZXRfcmVnX2J5X2FkZHIoc3Ry dWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsCj4gIAkJCSAgIHVpbnQzMl90IGFk ZHIpCj4gQEAgLTM5MCw3ICszOTMsNyBAQCBzdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXIoc3RydWN0 IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVpbnQzMl90ICp2YWxwKQo+ICAJCQkJ cmVnLT5wb3J0X2Rlc2MubmFtZSk7Cj4gIAkJCXJldHVybiAtMTsKPiAgCQl9Cj4gLQkJdmFsID0g aW50ZWxfaW9zZl9zYl9yZWFkKGlndF9nbG9iYWxfbW1pbywgcmVnLT5wb3J0X2Rlc2MucG9ydCwK PiArCQl2YWwgPSBpbnRlbF9pb3NmX3NiX3JlYWQoJm1taW9fZGF0YSwgcmVnLT5wb3J0X2Rlc2Mu cG9ydCwKPiAgCQkJCQkgcmVnLT5hZGRyKTsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gQEAg LTU1OCw5ICs1NjEsMTAgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfcmVhZChzdHJ1Y3QgY29uZmln ICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAl9Cj4gIAo+ICAJaWYgKGNvbmZp Zy0+bW1pb2ZpbGUpCj4gLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+bW1pb2Zp bGUpOwo+ICsJCWludGVsX21taW9fdXNlX2R1bXBfZmlsZSgmbW1pb19kYXRhLCBjb25maWctPm1t aW9maWxlKTsKPiAgCWVsc2UKPiAtCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChjb25maWct PnBjaV9kZXYsIDAsIC0xKTsKPiArCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19k YXRhLCBjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKTmV3bGluZSBuZWVkZWQgaGVyZS4KPiArCWln dF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlmb3IgKGkgPSAxOyBp IDwgYXJnYzsgaSsrKSB7Cj4gIAkJc3RydWN0IHJlZyByZWc7Cj4gQEAgLTU3Niw3ICs1ODAsNyBA QCBzdGF0aWMgaW50IGludGVsX3JlZ19yZWFkKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2ZpbmkoKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwo+ ICAKPiAgCXJldHVybiBFWElUX1NVQ0NFU1M7Cj4gIH0KPiBAQCAtNTkwLDcgKzU5NCw4IEBAIHN0 YXRpYyBpbnQgaW50ZWxfcmVnX3dyaXRlKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKPiAgCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwo+ICAJfQo+ICAKPiAtCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwo+ICsJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSxjb25maWctPnBjaV9kZXYsIDAsIC0x KTsKPiArCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlmb3Ig KGkgPSAxOyBpIDwgYXJnYzsgaSArPSAyKSB7Cj4gIAkJc3RydWN0IHJlZyByZWc7Cj4gQEAgLTYx NSw3ICs2MjAsNyBAQCBzdGF0aWMgaW50IGludGVsX3JlZ193cml0ZShzdHJ1Y3QgY29uZmlnICpj b25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJd3JpdGVfcmVnaXN0ZXIoY29uZmln LCAmcmVnLCB2YWwpOwo+ICAJfQo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7 Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKPiAgCj4gIAlyZXR1 cm4gRVhJVF9TVUNDRVNTOwo+ICB9Cj4gQEAgLTYyNiw5ICs2MzEsMTAgQEAgc3RhdGljIGludCBp bnRlbF9yZWdfZHVtcChzdHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2 W10pCj4gIAlpbnQgaTsKPiAgCj4gIAlpZiAoY29uZmlnLT5tbWlvZmlsZSkKPiAtCQlpbnRlbF9t bWlvX3VzZV9kdW1wX2ZpbGUoY29uZmlnLT5tbWlvZmlsZSk7Cj4gKwkJaW50ZWxfbW1pb191c2Vf ZHVtcF9maWxlKCZtbWlvX2RhdGEsIGNvbmZpZy0+bW1pb2ZpbGUpOwo+ICAJZWxzZQo+IC0JCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwo+ICsJCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGNvbmZpZy0+cGNpX2RldiwgMCwg LTEpOwpOZXcgbGluZSBuZWVkZWQgaGVyZS4KPiArCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0 YS5pZ3RfbW1pbzsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgY29uZmlnLT5yZWdjb3VudDsgaSsr KSB7Cj4gIAkJcmVnID0gJmNvbmZpZy0+cmVnc1tpXTsKPiBAQCAtNjQwLDcgKzY0Niw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfcmVnX2R1bXAoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywg Y2hhciAqYXJndltdKQo+ICAJCWR1bXBfcmVnaXN0ZXIoY29uZmlnLCAmY29uZmlnLT5yZWdzW2ld KTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+ICsJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7Cj4gIAo+ICAJcmV0dXJuIEVYSVRfU1VD Q0VTUzsKPiAgfQo+IEBAIC02NTQsNyArNjYwLDggQEAgc3RhdGljIGludCBpbnRlbF9yZWdfc25h cHNob3Qoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJ CXJldHVybiBFWElUX0ZBSUxVUkU7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfbW1pb191c2VfcGNpX2Jh cihjb25maWctPnBjaV9kZXYsIC0xKTsKPiArCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9f ZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAtMSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2Rh dGEuaWd0X21taW87Cj4gIAo+ICAJLyogWFhYOiBlcnJvciBoYW5kbGluZyAqLwo+ICAJaWYgKHdy aXRlKDEsIGlndF9nbG9iYWxfbW1pbywgY29uZmlnLT5wY2lfZGV2LT5yZWdpb25zW21taW9fYmFy XS5zaXplKSA9PSAtMSkKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYyBi L3Rvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMKPiBpbmRleCAxZDQwY2Q4Mi4uMWNjOWZhNzYgMTAw NjQ0Cj4gLS0tIGEvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYwo+ICsrKyBiL3Rvb2xzL2ludGVs X3JlZ19jaGVja2VyLmMKPiBAQCAtMzIsNiArMzIsOSBAQAo+ICBzdGF0aWMgdWludDMyX3QgZGV2 aWQ7Cj4gIHN0YXRpYyBpbnQgZ2VuOwo+ICAKPiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1t aW9fZGF0YTsKPiArdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+ICsKPiAgc3RhdGljIHVpbnQzMl90 Cj4gIHJlYWRfYW5kX3ByaW50X3JlZyhjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCByZWcpCj4g IHsKPiBAQCAtMzQ1LDcgKzM0OCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK PiAgCj4gIAlkZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgpOwo+ICAJZGV2aWQgPSBkZXYtPmRl dmljZV9pZDsKPiAtCWludGVsX21taW9fdXNlX3BjaV9iYXIoZGV2LCAtMSk7Cj4gKwlpbnRlbF9t bWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGRldiwgLTEpOwo+ICsJaWd0X2dsb2JhbF9tbWlv ID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCWlmIChJU19HRU43KGRldmlkKSkKPiAgCQln ZW4gPSA3Owo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF93YXRlcm1hcmsuYyBiL3Rvb2xzL2lu dGVsX3dhdGVybWFyay5jCj4gaW5kZXggMzcyOTQ3ZGUuLjNmMjY3ZmE2IDEwMDY0NAo+IC0tLSBh L3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCj4gKysrIGIvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMK PiBAQCAtMzUsNiArMzUsOCBAQAo+ICAKPiAgc3RhdGljIHVpbnQzMl90IGRpc3BsYXlfYmFzZTsK PiAgc3RhdGljIHVpbnQzMl90IGRldmlkOwo+ICt2b2lkICppZ3RfZ2xvYmFsX21taW87Cj4gK3N0 YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7Cj4gIAo+ICBzdGF0aWMgdWludDMyX3Qg cmVhZF9yZWcodWludDMyX3QgYWRkcikKPiAgewo+IEBAIC0yNDksNyArMjUxLDggQEAgc3RhdGlj IHZvaWQgc2tsX3dtX2R1bXAodm9pZCkKPiAgCXVpbnQzMl90IHBsYW5lX2N0bFtudW1fcGlwZXNd W21heF9wbGFuZXNdOwo+ICAJdWludDMyX3Qgd21fbGluZXRpbWVbbnVtX3BpcGVzXTsKPiAgCj4g LQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAt MSk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRf cGNpX2RldmljZSgpLCAwLCAtMSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0 X21taW87Cj4gIAo+ICAJZm9yIChwaXBlID0gMDsgcGlwZSA8IG51bV9waXBlczsgcGlwZSsrKSB7 Cj4gIAkJaW50IG51bV9wbGFuZXMgPSBza2xfbnVtX3BsYW5lcyhkZXZpZCwgcGlwZSk7Cj4gQEAg LTQ2OSw3ICs0NzIsOCBAQCBzdGF0aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQo+ICAJaW50IG51 bV9waXBlcyA9IGludGVsX2dlbihkZXZpZCkgPj0gNyA/IDMgOiAyOwo+ICAJc3RydWN0IGlsa193 bSB3bSA9IHt9Owo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9w Y2lfZGV2aWNlKCksIDAsIC0xKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlv X2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKPiArCWlndF9nbG9iYWxfbW1p byA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BpcGVz OyBpKyspIHsKPiAgCQlkc3BjbnRyW2ldID0gcmVhZF9yZWcoMHg3MDE4MCArIGkgKiAweDEwMDAp Owo+IEBAIC01MDUsNyArNTA5LDcgQEAgc3RhdGljIHZvaWQgaWxrX3dtX2R1bXAodm9pZCkKPiAg CWlmIChJU19CUk9BRFdFTEwoZGV2aWQpIHx8IElTX0hBU1dFTEwoZGV2aWQpKQo+ICAJCXdtX21p c2MgPSByZWFkX3JlZygweDQ1MjYwKTsKPiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aSgpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7Cj4gIAo+ICAJ Zm9yIChpID0gMDsgaSA8IG51bV9waXBlczsgaSsrKQo+ICAJCXByaW50ZigiICAgIFdNX1BJUEVf JWMgPSAweCUwOHhcbiIsIHBpcGVfbmFtZShpKSwgd21fcGlwZVtpXSk7Cj4gQEAgLTYxOSw3ICs2 MjMsOCBAQCBzdGF0aWMgdm9pZCB2bHZfd21fZHVtcCh2b2lkKQo+ICAJdWludDMyX3QgZHNwX3Nz X3BtLCBkZHJfc2V0dXAyOwo+ICAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsK PiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgp LCAwLCAtMSk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRl bF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2Rh dGEuaWd0X21taW87Cj4gIAo+ICAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7Cj4gIAlkc3Bh cmIyID0gcmVhZF9yZWcoMHg3MDA2MCk7Cj4gQEAgLTY1MCwxMyArNjU1LDEzIEBAIHN0YXRpYyB2 b2lkIHZsdl93bV9kdW1wKHZvaWQpCj4gIAo+ICAJCWRkbDMgPSByZWFkX3JlZygweDcwMDU4KTsK PiAgCj4gLQkJaW50ZWxfcHVuaXRfcmVhZChpZ3RfZ2xvYmFsX21taW8sIDB4MzYsICZkc3Bfc3Nf cG0pOwo+IC0JCWludGVsX3B1bml0X3JlYWQoaWd0X2dsb2JhbF9tbWlvLCAweDEzOSwgJmRkcl9z ZXR1cDIpOwo+ICsJCWludGVsX3B1bml0X3JlYWQoJm1taW9fZGF0YSwgMHgzNiwgJmRzcF9zc19w bSk7Cj4gKwkJaW50ZWxfcHVuaXRfcmVhZCgmbW1pb19kYXRhLCAweDEzOSwgJmRkcl9zZXR1cDIp Owo+ICAJfSBlbHNlIHsKPiAgCQlmdzcgPSByZWFkX3JlZygweDcwMDdjKTsKPiAgCX0KPiAgCj4g LQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2ZpbmkoJm1taW9fZGF0YSk7Cj4gIAo+ICAJcHJpbnRmKCIgICAgICAgIEZXMSA9IDB4JTA4eFxu IiwgZncxKTsKPiAgCXByaW50ZigiICAgICAgICBGVzIgPSAweCUwOHhcbiIsIGZ3Mik7Cj4gQEAg LTgzNSw3ICs4NDAsOCBAQCBzdGF0aWMgdm9pZCBnNHhfd21fZHVtcCh2b2lkKQo+ICAJdWludDMy X3QgbWlfYXJiX3N0YXRlOwo+ICAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsK PiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgp LCAwLCAtMSk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRl bF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2Rh dGEuaWd0X21taW87Cj4gIAo+ICAJZHNwYWNudHIgPSByZWFkX3JlZygweDcwMTgwKTsKPiAgCWRz cGJjbnRyID0gcmVhZF9yZWcoMHg3MTE4MCk7Cj4gQEAgLTg0Niw3ICs4NTIsNyBAQCBzdGF0aWMg dm9pZCBnNHhfd21fZHVtcCh2b2lkKQo+ICAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9y ZWcoMHgyMGUwKTsKPiAgCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7Cj4gIAo+IC0J aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCZtbWlvX2RhdGEpOwo+ICAKPiAgCXByaW50ZigiICAgICAgICAgICAgIERTUEFDTlRSID0g MHglMDh4XG4iLCBkc3BhY250cik7Cj4gIAlwcmludGYoIiAgICAgICAgICAgICBEU1BCQ05UUiA9 IDB4JTA4eFxuIiwgZHNwYmNudHIpOwo+IEBAIC05MjEsNyArOTI3LDggQEAgc3RhdGljIHZvaWQg Z2VuNF93bV9kdW1wKHZvaWQpCj4gIAl1aW50MzJfdCBtaV9hcmJfc3RhdGU7Cj4gIAlzdHJ1Y3Qg Z21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9Owo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKPiArCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsK PiArCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlkc3BhcmIg PSByZWFkX3JlZygweDcwMDMwKTsKPiAgCWZ3MSA9IHJlYWRfcmVnKDB4NzAwMzQpOwo+IEBAIC05 MzAsNyArOTM3LDcgQEAgc3RhdGljIHZvaWQgZ2VuNF93bV9kdW1wKHZvaWQpCj4gIAltaV9kaXNw bGF5X3Bvd2VyX2Rvd24gPSByZWFkX3JlZygweDIwZTApOwo+ICAJbWlfYXJiX3N0YXRlID0gcmVh ZF9yZWcoMHgyMGU0KTsKPiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+ICsJ aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7Cj4gIAo+ICAJcHJpbnRmKCIg ICAgICAgICAgICAgICAgICBGVzEgPSAweCUwOHhcbiIsIGZ3MSk7Cj4gIAlwcmludGYoIiAgICAg ICAgICAgICAgICAgIEZXMiA9IDB4JTA4eFxuIiwgZncyKTsKPiBAQCAtOTkyLDcgKzk5OSw4IEBA IHN0YXRpYyB2b2lkIHBudl93bV9kdW1wKHZvaWQpCj4gIAl1aW50MzJfdCBjYnI7Cj4gIAlzdHJ1 Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9Owo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKPiArCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0x KTsKPiArCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlkc3Bh cmIgPSByZWFkX3JlZygweDcwMDMwKTsKPiAgCWZ3MSA9IHJlYWRfcmVnKDB4NzAwMzQpOwo+IEBA IC0xMDAyLDcgKzEwMTAsNyBAQCBzdGF0aWMgdm9pZCBwbnZfd21fZHVtcCh2b2lkKQo+ICAJbWlf ZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9yZWcoMHgyMGUwKTsKPiAgCW1pX2FyYl9zdGF0ZSA9 IHJlYWRfcmVnKDB4MjBlNCk7Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsK PiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwo+ICAKPiAgCXByaW50 ZigiICAgICAgICAgICAgICAgRFNQQVJCID0gMHglMDh4XG4iLCBkc3BhcmIpOwo+ICAJcHJpbnRm KCIgICAgICAgICAgICAgICAgICBGVzEgPSAweCUwOHhcbiIsIGZ3MSk7Cj4gQEAgLTEwODIsNyAr MTA5MCw4IEBAIHN0YXRpYyB2b2lkIGdlbjNfd21fZHVtcCh2b2lkKQo+ICAJdWludDMyX3QgbWlf YXJiX3N0YXRlOwo+ICAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKPiAgCj4g LQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAt MSk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRf cGNpX2RldmljZSgpLCAwLCAtMSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0 X21taW87Cj4gIAo+ICAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7Cj4gIAlpbnN0cG0gPSBy ZWFkX3JlZygweDIwYzApOwo+IEBAIC0xMDkwLDcgKzEwOTksNyBAQCBzdGF0aWMgdm9pZCBnZW4z X3dtX2R1bXAodm9pZCkKPiAgCWZ3X2JsY19zZWxmID0gcmVhZF9yZWcoMHgyMGUwKTsKPiAgCW1p X2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2ZpbmkoKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwo+ ICAKPiAgCXByaW50ZigiICAgICAgRFNQQVJCID0gMHglMDh4XG4iLCBkc3BhcmIpOwo+ICAJcHJp bnRmKCIgICAgICBGV19CTEMgPSAweCUwMTYiIFBSSXg2NCAiXG4iLCBmd19ibGMpOwo+IEBAIC0x MTUxLDcgKzExNjAsOCBAQCBzdGF0aWMgdm9pZCBnZW4yX3dtX2R1bXAodm9pZCkKPiAgCXVpbnQz Ml90IG1pX3N0YXRlOwo+ICAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKPiAg Cj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAw LCAtMSk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9n ZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEu aWd0X21taW87Cj4gIAo+ICAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7Cj4gIAltZW1fbW9k ZSA9IHJlYWRfcmVnKDB4MjBjYyk7Cj4gQEAgLTExNTksNyArMTE2OSw3IEBAIHN0YXRpYyB2b2lk IGdlbjJfd21fZHVtcCh2b2lkKQo+ICAJZndfYmxjX3NlbGYgPSByZWFkX3JlZygweDIwZTApOwo+ ICAJbWlfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19maW5pKCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsK PiAgCj4gIAlwcmludGYoIiAgICAgRFNQQVJCID0gMHglMDh4XG4iLCBkc3BhcmIpOwo+ICAJcHJp bnRmKCIgICBNRU1fTU9ERSA9IDB4JTA4eFxuIiwgbWVtX21vZGUpOwo+IC0tIAo+IDIuMjAuMQo+ CkkgbWFkZSBpdCB0byB0aGUgZW5kLCBmaW5hbGx5LiBJIGhvcGUgdGhhdCBsb25nIHBhdGNoZXMg bGlrZSB0aGlzIG9uZSB3aWxsIGJlIGFuCmV4Y2VwdGlvbiwgbm90IGEgcnVsZSA6KQpLYXNpYQo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gaWd0LWRl diBtYWlsaW5nIGxpc3QKPiBpZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlz dAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=