From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: Re: [RFC 01/29] drm/i915/gvt: Introduce the basic architecture of GVT-g Date: Wed, 03 Feb 2016 14:01:15 +0800 Message-ID: <56B197AB.5070406@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> <1453976511-27322-2-git-send-email-zhi.a.wang@intel.com> <1454075829.11299.48.camel@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 5A0B26E0FB for ; Tue, 2 Feb 2016 22:03:15 -0800 (PST) In-Reply-To: <1454075829.11299.48.camel@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Joonas Lahtinen , intel-gfx@lists.freedesktop.org, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org SGkgSm9vbmFzOgogICAgIFRoYW5rcyB5b3UgdmVyeSBtdWNoISBXZSdyZSB2ZXJ5IGV4Y2l0ZWQg Zm9yIHJlY2VpdmluZyB5b3VyIGFkdmljZSAKYW5kIGNvbnRpbnVlIHRvIGJlIG9wZW4gdG8gYW55 IGNvbW1lbnRzLiA6KQoKSSdtIHN1cHBvc2VkIHRoYXQgd2Ugc2hvdWxkIG1ha2UgdGhlIGFncmVl bWVudHMgb24gaTkxNSBob3N0IGNoYW5nZSBhdCAKdGhlIHZlcnkgYmVnaW5uaW5nLCBhcyBJJ20g Y29uY2VybmVkIGR1cmluZyB0aGUgZGlzY3Vzc2lvbiBvZiBpOTE1IGhvc3QgCmNoYW5nZSwgeW91 IGtub3csIG1heWJlIHNvbWUgY29kZSBvZiBHVlQtZyBuZWVkcyB0byBiZSByZWZpbmVkIG9yIApy ZS1kZXNpZ25lZC4gU28gd2UgcHV0IHRoZSBpOTE1IGhvc3QgY2hhbmdlcyB0byB0aGUgYmVnaW5u aW5nIG9mIHRoZSAKcGF0Y2ggc2V0IGZvciB0aGUgY29udmVuaWVuY2Ugb2YgZGlzY3Vzc2lvbi4K Ckkgc3VtbWFyaXplIHlvdXIgY29tbWVudHMgYXMgYmVsb3csIHZlcnkgYXBwbGljYXRlLiA6KQoK LSBSZXBsYWNlIGJvb2xlYW4gcmV0dXJuIHZhbHVlIHdpdGggaW50IGFzIG11Y2ggYXMgcG9zc2li bGUuCi0gUmVwbGFjZSBjdXN0b21pemVkIGRlYnVnIEFTU0VSVCgpIGZ1bmN0aW9uICYgbWFjcm9z IHdpdGggRFJNX0RFQlVHXyoKLSBEb2N1bWVudCBhbGwgbm9uLXN0YXRpYyBmdW5jdGlvbnMgbGlr ZSBpOTE1Ci0gRml4IGFsbCB3aGl0ZXNwYWNlIHZpYSBzY3JpcHRzL2NsZWFucGF0Y2gucGwKLSBD b21taXQgZnVuY3Rpb24gc3RydWN0dXJlIHJlZmluZW1lbnQuCi0gQ2hhbmdlIHRoZSByZWdpc3Rl ciBhY2Nlc3MgYmVoYXZpb3IganVzdCBsaWtlIHdoYXQgaTkxNSBkb2VzLgoKRm9yIG90aGVyIGNv bW1lbnRzLCBzZWUgbXkgY29tbWVudHMgYmVsb3cuIDopCgpPbiAwMS8yOS8xNiAyMTo1NywgSm9v bmFzIExhaHRpbmVuIHdyb3RlOgo+IEhpLAo+Cj4gVEw7RFIgT3ZlcmFsbCwgd2UgaGF2ZSBzYW1l IHByb2JsZW0gYXMgd2l0aCB0aGUgc2NoZWR1bGVyIHNlcmllcywgdGhlcmUKPiBpcyB0b28gbXVj aCBwbGFjZWhvbGRlciBzdHVmZiBmb3IgZWFzeSByZXZpZXcuIEp1c3Qgc3F1YXNoIGVub3VnaCBj b2RlCj4gaW50byBvbmUgY29tbWl0IHNvIGl0IGFjdHVhbGx5IGRvZXMgc29tZXRoaW5nIGxvZ2lj YWwgdGhhdCBjYW4gYmUKPiByZXZpZXdlZCBhbmQgdGhlbiBleHRlbmQgaXQgbGF0ZXIuIFRoZW4g aXQgY2FuIGJlIHJldmlld2VkIGFuZCBwdXNoZWQuCj4gSnVzdCBzcGxpdHRpbmcgdGhlIGNvZGUg ZG93biB0byBhY2hpZXZlIHNtYWxsZXIgcGF0Y2hlcyBpcyBub3QgdGhlCj4gcmlnaHQgdGhpbmcg dG8gZG8uCj4KPiBDb21tZW50cyBvbiB0aGUgb3ZlcmFsbCBjb2RlOiBZb3UgbmVlZCB0byBkb2N1 bWVudCBhbGwgaGVhZGVyIGZpbGUKPiBmdW5jdGlvbnMgKGluIHRoZSBzb3VyY2UgZmlsZXMpLCBh bmQgaXQgaXMgZ29vZCB0byBkb2N1bWVudCB0aGUgc3RhdGljCj4gZnVuY3Rpb25zIHdpdGhpbiBh IGZpbGUgdG9vLCB0byBtYWtlIGZ1dHVyZSBtYWludGVuYW5jZSBlYXNpZXIuCj4KPiBJdCBpcyBu b3QgYWJvdXQgc3BsaXR0aW5nIHRoZSBjb2RlIGRvd24gdG8gc21hbGwgY2h1bmtzLCBidXQgc3Bs aXR0aW5nCj4gaXQgZG93biB0byBzbWFsbCAqbG9naWNhbCogY2h1bmtzLiBJdCBkb2Vzbid0IG1h a2Ugc2Vuc2UgdG8gY29tbWl0Cj4gZG96ZW5zIG9mIGVtcHR5IGJvZGllZCBmdW5jdGlvbnMgZm9y IHJldmlldywgYW5kIHRoZW4gbGF0ZXIgYWRkIHRoZWlyCj4gY29kZS4KPgo+IElmIHlvdSBhZGQg ZnVuY3Rpb25zLCBvbmx5IGFkZCB0aGVtIGF0IGEgcGF0Y2ggdGhhdCB0YWtlcyB0aGVtIGludG8g dXNlCj4gdG9vLCB1bmxlc3Mgd2UncmUgdGFsa2luZyBhYm91dCBnZW5lcmFsIHB1cnBvc2Ugc2hh cmVkIGNvZGUuIEFuZCBhbHNvCj4gcmVtZW1iZXIgdG8gYWRkIHRoZSBmdW5jdGlvbiBib2R5IGFu ZCBkb2N1bWVudGF0aW9uIGhlYWRlci4gSWYgeW91Cj4gc2ltcGx5IGFkZCBhICJyZXR1cm4gMDsi IG9yIHNpbWlsYXIgZnVuY3Rpb24gYm9keSwgZG8gYWRkIGEgY29tbWVudCB0bwo+IHdoeSB0aGUg ZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QgYW5kIHdoZW4gaXQgd2lsbC4KPgo+IFRoZW4sIHRoZXJl IGlzIGEgdHJlbmQgb2YgaGF2aW5nIGEgYm9vbGVhbiByZXR1cm4gdmFsdWVzIGluIHRoZSBjb2Rl Lgo+IFdoZW4gcG9zc2libGUsIGl0IHNob3VsZCByYXRoZXIgYmUgaW50IGFuZCB0aGUgY2F1c2Ug Zm9yIGZhaWx1cmUgc2hvdWxkCj4gYmUgcHJvcGFnYXRlZCBmcm9tIHRoZSBsYXN0IGxldmVsIGFs bCB0aGUgd2F5IHRvIHVwICgtRU5PTUVOIGV0Yy4pLgo+IFRoaXMgd2F5IGRlYnVnZ2luZyBiZWNv bWVzIGVhc2llciBhbmQgaWYgbmV3IGVycm9yIGNvbmRpdGlvbnMgYXBwZWFyLAo+IHRoZXJlIGlz IGxlc3Mgb2YgYSBtYWludGVuYW5jZSBidXJkZW4gdG8gYWRkIHRoZSBwcm9wYWdhdGlvbiBsYXRl ci4KPgo+IEZpbmFsbHksIG1ha2Ugc3VyZSB0byBsb29rIGF0IHRoZSBleGlzdGluZyBkcml2ZXIg cGFydHMgYW5kCj4gCWh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vQ29k aW5nU3R5bGUKPiBmb3IgcHJvcGVyIGNvZGluZyBzdHlsZS4gVGhlcmUgYXJlIGxvdHMgb2Ygd2hp dGVzcGFjZSBmaXhlcyBuZWVkZWQgaW4KPiB0aGlzIHNlcmllcywgbGlrZSBhcnJheSBpbml0aWFs aXphdGlvbnMuCj4KPiBJIGhvcGUgdG8gc2VlIHRoaXMgZmlyc3QgcGF0Y2ggcmVyb2xsZWQgc28g dGhhdCB5b3Ugc3F1YXNoIHNvbWUgb2YgdGhlCj4gbGF0ZXIgY29tbWl0cyBpbnRvIGl0IHNvIHRo YXQgYWxsIGZ1bmN0aW9ucyBoYXZlIGEgYm9keSBhbmQgeW91IGFkZAo+IGRvY3VtZW50YXRpb24g Zm9yIHRoZSBmdW5jdGlvbnMgc28gSSBjYW4gYm90aCBzZWUgd2hhdCBpdCBzaG91bGQgZG8gYW5k Cj4gd2hhdCBpdCBhY3R1YWxseSBkb2VzLiBPbmx5IHJlcm9sbCB0aGUgZmlyc3QgcGF0Y2gsIHRv IGtlZXAgdGhlCj4gaXRlcmF0aXZlIHN0ZXAgc21hbGxlci4gTGV0cyBvbmx5IHRoZW4gY29udGlu dWUgd2l0aCB0aGUgcmVzdCBvZiB0aGUKPiBzZXJpZXMgb25jZSB3ZSd2ZSByZWFjaGVkIGEgY29u c2Vuc3VzIG9uIHRoZSBmb3JtYXR0aW5nIGFuZCBzdHlsZQo+IGJhc2ljcy4KPgo+IFNlZSBtb3Jl IGNvbW1lbnRzIGJlbG93Lgo+Cj4gT24gdG8sIDIwMTYtMDEtMjggYXQgMTg6MjEgKzA4MDAsIFpo aSBXYW5nIHdyb3RlOgo+PiBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIHZlcnkgYmFzaWMgZnJh bWV3b3JrIG9mIEdWVC1nIGRldmljZSBtb2RlbCwKPj4gaW5jbHVkZXMgYmFzaWMgcHJvdG90eXBl cywgZGVmaW5pdGlvbnMsIGluaXRpYWxpemF0aW9uLgo+PiAtLS0KPj4gICBhcmNoL3g4Ni9pbmNs dWRlL2FzbS94ZW4vaW50ZXJmYWNlLmggIHwgICAzICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9LY29uZmlnICAgICAgICAgIHwgIDE2ICsrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUgICAgICAgICB8ICAgMiArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2Vm aWxlICAgICB8ICAgNSArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmggICAg ICB8ICA3MiArKysrKysrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIu YyB8ICAzNCArKysrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaCB8 IDExMCArKysrKysrKysrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jICAgICAg ICB8IDM2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2d2dC5oICAgICAgICB8IDEzMCArKysrKysrKysrKysKPj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmggIHwgIDMwICsrKwo+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9tcHQuaCAgICAgICAgfCAgOTcgKysrKysrKysrCj4+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jICAgICB8ICAyOSArKysKPj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvcGFyYW1zLmggICAgIHwgIDM0ICsrKysKPj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvcmVnLmggICAgICAgIHwgIDM0ICsrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RtYS5jICAgICAgIHwgIDE5ICsrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgICAgICB8ICAgNiArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 Z3B1LmggICAgICB8ICAgMyArCj4+ICAgaW5jbHVkZS94ZW4vaW50ZXJmYWNlL3hlbi5oICAgICAg ICAgICB8ICAgMSArCj4+ICAgMTggZmlsZXMgY2hhbmdlZCwgOTkxIGluc2VydGlvbnMoKykKPj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCj4+ ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kZWJ1Zy5oCj4+ ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9mYl9kZWNvZGVy LmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2Rl Y29kZXIuaAo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv Z3Z0LmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2 dC5oCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oeXBl cmNhbGwuaAo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv bXB0LmgKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3Bh cmFtcy5jCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9w YXJhbXMuaAo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv cmVnLmgKPj4KPj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3hlbi9pbnRlcmZh Y2UuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3hlbi9pbnRlcmZhY2UuaAo+PiBpbmRleCA2MmNh MDNlLi42ZmY0OTg2IDEwMDY0NAo+PiAtLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ZW4vaW50 ZXJmYWNlLmgKPj4gKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20veGVuL2ludGVyZmFjZS5oCj4+ IEBAIC03Myw2ICs3Myw5IEBACj4+ICAgI2VuZGlmCj4+Cj4+ICAgI2lmbmRlZiBfX0FTU0VNQkxZ X18KPj4gKwo+PiArI2luY2x1ZGUKPj4gKwo+Cj4gSSBkb24ndCBmb2xsb3cgd2h5IHRoaXMgd291 bGQgbmVlZCB0byBiZSBhZGRlZCBpZiB0aGUgZmlsZSBpcyBub3QKPiBtb2RpZmllZCBvdGhlcndp c2UuIEVhY2ggaGVhZGVyIHNob3VsZCBvbmx5IGluY2x1ZGUgd2hhdCB0aGV5IHVzZS4KPgo+IElm IHRoaXMgaXMgYW4gZXhpc3RpbmcgYnVnICh0aGF0IHhlbi9pbnRlcmZhY2UuaCBjYW4gbm90IGJl IGluY2x1ZGVkCj4gd2l0aG91dCBpbmNsdWRpbmcgbGludXgvdHlwZXMuaCksIGl0IHNob3VsZCBi ZSBzcGxpdCB0byBhIHNlcGFyYXRlCj4gcGF0Y2ggYW5kIHNlbnQgdG8gWGVuIHRlYW0uIFNhbWUg Zm9yIGluY2x1ZGUveGVuL2ludGVyZmFjZS94ZW4uaC4KPgo+PiAgIC8qIEV4cGxpY2l0bHkgc2l6 ZSBpbnRlZ2VycyB0aGF0IHJlcHJlc2VudCBwZm5zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlCj4+ ICAgICogd2l0aCBYZW4gc28gdGhhdCBvbiBBUk0gd2UgY2FuIGhhdmUgb25lIEFCSSB0aGF0IHdv cmtzIGZvciAzMiBhbmQgNjQKPj4gICAgKiBiaXQgZ3Vlc3RzLiAqLwo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25m aWcKPj4gaW5kZXggMDUxZWFiMy4uODlmZjcyMyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCj4+ IEBAIC00NywzICs0NywxOSBAQCBjb25maWcgRFJNX0k5MTVfUFJFTElNSU5BUllfSFdfU1VQUE9S VAo+PiAgIAkgIG9wdGlvbiBjaGFuZ2VzIHRoZSBkZWZhdWx0IGZvciB0aGF0IG1vZHVsZSBvcHRp b24uCj4+Cj4+ICAgCSAgSWYgaW4gZG91YnQsIHNheSAiTiIuCj4+ICsKPj4gK2NvbmZpZyBJOTE1 X0dWVAo+PiArICAgICAgICB0cmlzdGF0ZSAiR1ZULWcgaG9zdCBkcml2ZXIiCj4+ICsgICAgICAg IGRlcGVuZHMgb24gRFJNX0k5MTUKPj4gKyAgICAgICAgc2VsZWN0IElSUV9XT1JLCj4+ICsgICAg ICAgIGRlZmF1bHQgeQo+Cj4gRGVmYXVsdGluZyB0byAibiIgd291bGQgbWFrZSBzZW5zZSBpbml0 aWFsbHkuCj4KW1poaV0gU3VyZSwgd2lsbCBkby4KPj4gKyAgICAgICAgaGVscAo+PiArICAgICAg ICAgIEVuYWJsaW5nIEdWVC1nIG1lZGlhdGVkIGdyYXBoaWNzIHBhc3N0aHJvdWdoIHRlY2huaXF1 ZSBmb3IgSW50ZWwgaTkxNQo+PiArICAgICAgICAgIGJhc2VkIGludGVncmF0ZWQgZ3JhcGhpY3Mg Y2FyZC4gV2l0aCBHVlQtZywgaXQncyBwb3NzaWJsZSB0byBoYXZlIG9uZQo+PiArICAgICAgICAg IGludGVncmF0ZWQgaTkxNSBkZXZpY2Ugc2hhcmVkIGJ5IG11bHRpcGxlIFZNcy4gUGVyZm9ybWFu Y2UgY3JpdGljYWwKPj4gKyAgICAgICAgICBvcHRlcmF0aW9ucyBzdWNoIGFzIGFwcGVydHVyZSBh Y2Nlc3NlcyBhbmQgcmluZyBidWZmZXIgb3BlcmF0aW9ucwo+PiArICAgICAgICAgIGFyZSBwYXNz LXRocm91Z2hlZCB0byBWTSwgd2l0aCBhIG1pbmltYWwgc2V0IG9mIGNvbmZsaWN0aW5nIHJlc291 cmNlcwo+PiArICAgICAgICAgIChlLmcuIGRpc3BsYXkgc2V0dGluZ3MpIG1lZGlhdGVkIGJ5IHZH VCBkcml2ZXIuIFRoZSBiZW5lZml0IG9mIHZHVAo+PiArICAgICAgICAgIGlzIG9uIGJvdGggdGhl IHBlcmZvcm1hbmNlLCBnaXZlbiB0aGF0IGVhY2ggVk0gY291bGQgZGlyZWN0bHkgb3BlcmF0ZQo+ PiArICAgICAgICAgIGl0cyBhcGVydHVyZSBzcGFjZSBhbmQgc3VibWl0IGNvbW1hbmRzIGxpa2Ug cnVubmluZyBvbiBuYXRpdmUsIGFuZAo+PiArICAgICAgICAgIHRoZSBmZWF0dXJlIGNvbXBsZXRl bmVzcywgZ2l2ZW4gdGhhdCBhIHRydWUgR0VOIGhhcmR3YXJlIGlzIGV4cG9zZWQuCj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCj4+IGluZGV4IDA4NTFkZTA3Li5kNGRmNDEwIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQo+PiBAQCAtOTEsNiArOTEsOCBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwK Pj4gICAJICBpbnRlbF9zZHZvLm8gXAo+PiAgIAkgIGludGVsX3R2Lm8KPj4KPj4gK29iai0kKENP TkZJR19JOTE1X0dWVCkgICs9IGd2dC8KPj4gKwo+PiAgICMgdmlydHVhbCBncHUgY29kZQo+PiAg IGk5MTUteSArPSBpOTE1X3ZncHUubwo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjY5MzViNzgKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKPj4gQEAg LTAsMCArMSw1IEBACj4+ICtHVlRfU09VUkNFIDo9IGd2dC5vIHBhcmFtcy5vIGZiX2RlY29kZXIu bwo+PiArCj4+ICtjY2ZsYWdzLXkJCQkrPSAtSSQoc3JjKSAtSSQoc3JjKS8uLiAtV2FsbCAtV2Vy cm9yIC1Xbm8tdW51c2VkLWZ1bmN0aW9uCj4+ICtpOTE1X2d2dC15CQkJOj0gJChHVlRfU09VUkNF KQo+PiArb2JqLSQoQ09ORklHX0k5MTVfR1ZUKQkJKz0gaTkxNV9ndnQubwo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZGVidWcuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi4x OGUxNDY3Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2RlYnVnLmgKPj4gQEAgLTAsMCArMSw3MiBAQAo+PiArLyoKPj4gKyAqIENvcHlyaWdodChjKSAy MDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+ PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKPj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4+ICsgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPj4gKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKPj4gKyAqCj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCj4+ICsgKiBTb2Z0d2FyZS4KPj4gKyAqCj4+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPj4g KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+PiArICog T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUyBJTiBUSEUKPj4gKyAqIFNPRlRXQVJFLgo+PiArICovCj4+ICsKPj4gKyNp Zm5kZWYgX19HVlRfREVCVUdfSF9fCj4+ICsjZGVmaW5lIF9fR1ZUX0RFQlVHX0hfXwo+PiArCj4+ ICsjZGVmaW5lIEFTU0VSVCh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgICAgICAg ICAgaWYgKCEoeCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoIkFzc2VydCBhdCAlcyBsaW5l ICVkXG4iLCAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7ICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAg ICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4+ICsgICAgICAgIH0gd2hpbGUgKDApOwo+PiArCj4+ICsjZGVmaW5lIEFTU0VS VF9OVU0oeCwgeSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCj4+ICsgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgICAgICAgICAgaWYgKCEoeCkpIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICBwcmludGsoIkFzc2VydCBhdCAlcyBsaW5lICVkIHBhcmEgMHglbGx4 XG4iLCAgICBcCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBf X0xJTkVfXywgKHU2NCl5KTsgICAgICAgICAgICBcCj4+ICsgICAgICAgICAgICAgICAgfSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsg ICAgICAgIH0gd2hpbGUgKDApOwo+PiArCj4KPiBUaGVyZSBhbHJlYWR5IGlzIFdBUk5fT04gKGFu ZCBpOTE1X2Rydi5oIG1vZGlmaWVzIGl0IGEgbGl0dGxlKS4gRG8gbm90Cj4gaW50cm9kdWNlIGN1 c3RvbSBmdW5jdGlvbnMgbGlrZSB0aGlzLCBpZiB0aGUgZXhpc3Rpbmcgb25lcyBuZWVkCj4gaW1w cm92ZW1lbnQsIGltcHJvdmUgdGhlbS4KPgpbWmhpXSBPSy4gV2lsbCBkbyBhcyB3aGF0IGk5MTUg ZG9lcwo+PiArI2RlZmluZSBndnRfaW5mbyhmbXQsIGFyZ3MuLi4pIFwKPj4gKwlwcmludGsoS0VS Tl9JTkZPIltHVlQtZ10gImZtdCJcbiIsICMjYXJncykKPj4gKwo+PiArI2RlZmluZSBndnRfZXJy KGZtdCwgYXJncy4uLikgXAo+PiArCXByaW50ayhLRVJOX0VSUiIlcygpIC0gJWQ6ICJmbXQiXG4i LCBfX2Z1bmNfXywgX19MSU5FX18sICMjYXJncykKPj4gKwo+PiArI2RlZmluZSBndnRfd2Fybihm bXQsIGFyZ3MuLi4pIFwKPj4gKwlwcmludGsoS0VSTl9XQVJOSU5HIiVzKCkgLSAlZDogImZtdCJc biIsIF9fZnVuY19fLCBfX0xJTkVfXywgIyNhcmdzKQo+PiArCj4+ICsjZGVmaW5lIGd2dF9kYmco bGV2ZWwsIGZtdCwgYXJncy4uLikgZG8geyBcCj4+ICsJCWlmIChndnQuZGVidWcgJiBsZXZlbCkg XAo+PiArCQkJcHJpbnRrKEtFUk5fREVCVUciJXMoKSAtICVkOiAiZm10IlxuIiwgX19mdW5jX18s IF9fTElORV9fLCAjI2FyZ3MpOyBcCj4+ICsJfXdoaWxlKDApCj4+ICsKPj4gK2VudW0gewo+PiAr CUdWVF9EQkdfQ09SRSA9ICgxIDw8IDApLAo+PiArCUdWVF9EQkdfTU0gPSAoMSA8PCAxKSwKPj4g KwlHVlRfREJHX0lSUSA9ICgxIDw8IDIpLAo+PiArfTsKPj4gKwo+PiArI2RlZmluZSBndnRfZGJn X2NvcmUoZm10LCBhcmdzLi4uKSBcCj4+ICsJZ3Z0X2RiZyhHVlRfREJHX0NPUkUsIGZtdCwgIyNh cmdzKQo+PiArCj4+ICsjZGVmaW5lIGd2dF9kYmdfbW0oZm10LCBhcmdzLi4uKSBcCj4+ICsJZ3Z0 X2RiZyhHVlRfREJHX01NLCBmbXQsICMjYXJncykKPj4gKwo+PiArI2RlZmluZSBndnRfZGJnX2ly cShmbXQsIGFyZ3MuLi4pIFwKPj4gKwlndnRfZGJnKEdWVF9EQkdfSVJRLCBmbXQsICMjYXJncykK Pj4gKwo+PiArI2VuZGlmCj4KPiBUaGlzIHNob3VsZCBiZSBpbnRlZ3JhdGVkIGJldHRlciB0byBE Uk0gZGVidWdnaW5nIG9wdGlvbnMsIGN1c3RvbQo+IGRlYnVnZ2luZyBjb2RlIG9ubHkgZm9yIGk5 MTUgd2FzIHJlamVjdGVkIGEgd2hpbGUgYWdvLgo+CltaSEldIFRoYW5rcyBmb3Igc2hhcmluZyB0 aGUgaGlzdG9yeS4gOikgV2lsbCBjaGFuZ2UgdGhhdC4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9mYl9kZWNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv ZmJfZGVjb2Rlci5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmEy MTk4MTkKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv ZmJfZGVjb2Rlci5jCj4+IEBAIC0wLDAgKzEsMzQgQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQo YykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+PiAr ICoKPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+PiArICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgo+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4+ICsgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKPj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4+ICsgKgo+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+PiAr ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQo+PiArICogU29mdHdhcmUuCj4+ICsgKgo+PiArICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM Cj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKPj4g KyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCj4+ICsgKiBTT0ZUV0FSRS4KPj4gKyAqLwo+PiArCj4+ ICsjaW5jbHVkZSAiZ3Z0LmgiCj4+ICsKPj4gK2ludCBndnRfZGVjb2RlX2ZiX2Zvcm1hdChzdHJ1 Y3QgcGd0X2RldmljZSAqcGRldiwgaW50IHZtaWQsIHN0cnVjdCBndnRfZmJfZm9ybWF0ICpmYikK Pj4gK3sKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAraW50IGd2dF9mYl9ub3RpZmllcl9j YWxsX2NoYWluKHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICpkYXRhKQo+PiArewo+PiArCXJldHVy biAwOwo+PiArfQo+Cj4gS2VybmVsZG9jIG1pc3NpbmcgZm9yIHRoZXNlIGZ1bmN0aW9ucy4gSXQg aXMgYWxsIHRoZSBzYW1lIHRvIHNxdWFzaAo+IGxhdGVyIHBhdGNoZXMgdG8gaW50cm9kdWNlIHRo ZSBjb2RlIHRvIHRoZXNlIGZ1bmN0aW9ucyBhbHJlYWR5LAo+IHJldmlld2luZyB1dGlsaXR5IGZ1 bmN0aW9ucyB3aXRoIG5vIGtlcm5lbGRvYyBhbmQgbm8gYm9keSBtYWtlcyBpdAo+IHNvbWV3aGF0 IGRpZmZpY3VsdCB0byBzZWUgdGhlIGJpZyBwaWN0dXJlLgo+CgpbWmhpXSBPbmUgcXVlc3Rpb24u IEkgc2F3IGk5MTUgcHV0IHNvbWUgZnVuY3Rpb24gaW5zdHJ1Y3Rpb24gaW4gKi5jLiBJcyAKaXQg YWxzbyBPSyBmb3Iga2VybmVsIGRvYyBnZW5lcmF0aW5nIHRoZSBwcm9wZXIgZG9jIGZpbGVzPwoK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9mYl9kZWNvZGVyLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5oCj4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjJjMjllZDQKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5oCj4+IEBAIC0wLDAgKzEsMTEwIEBA Cj4+ICsvKgo+PiArICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4gKyAqCj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+PiArICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKPj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPj4gKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAo+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+PiArICoKPj4g KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKPj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPj4gKyAqIFNvZnR3 YXJlLgo+PiArICoKPj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4+ICsgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKPj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPj4gKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HIEZST00sCj4+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+PiArICog U09GVFdBUkUuCj4+ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBfR1ZUX0ZCX0RFQ09ERVJfSF8KPj4g KyNkZWZpbmUgX0dWVF9GQl9ERUNPREVSX0hfCj4+ICsKPj4gK3R5cGVkZWYgZW51bSB7Cj4+ICsJ RkJfTU9ERV9TRVRfU1RBUlQgPSAxLAo+PiArCUZCX01PREVfU0VUX0VORCwKPj4gKwlGQl9ESVNQ TEFZX0ZMSVAsCj4+ICt9Z3Z0X2ZiX2V2ZW50X3Q7Cj4+ICsKPj4gK3R5cGVkZWYgZW51bSB7Cj4+ ICsJRERJX1BPUlRfTk9ORQk9IDAsCj4+ICsJRERJX1BPUlRfQgk9IDEsCj4+ICsJRERJX1BPUlRf Qwk9IDIsCj4+ICsJRERJX1BPUlRfRAk9IDMsCj4+ICsJRERJX1BPUlRfRQk9IDQKPj4gK30gZGRp X3BvcnRfdDsKPj4gKwo+PiArc3RydWN0IHBndF9kZXZpY2U7Cj4+ICsKPj4gK3N0cnVjdCBndnRf ZmJfbm90aWZ5X21zZyB7Cj4+ICsJdW5zaWduZWQgdm1faWQ7Cj4+ICsJdW5zaWduZWQgcGlwZV9p ZDsgLyogaWQgc3RhcnRpbmcgZnJvbSAwICovCj4+ICsJdW5zaWduZWQgcGxhbmVfaWQ7IC8qIHBy aW1hcnksIGN1cnNvciwgb3Igc3ByaXRlICovCj4+ICt9Owo+PiArCj4+ICsvKiBjb2xvciBzcGFj ZSBjb252ZXJzaW9uIGFuZCBnYW1tYSBjb3JyZWN0aW9uIGFyZSBub3QgaW5jbHVkZWQgKi8KPj4g K3N0cnVjdCBndnRfcHJpbWFyeV9wbGFuZV9mb3JtYXQgewo+PiArCXU4CWVuYWJsZWQ7CS8qIHBs YW5lIGlzIGVuYWJsZWQgKi8KPj4gKwl1OAl0aWxlZDsJCS8qIFgtdGlsZWQgKi8KPj4gKwl1OAli cHA7CQkvKiBiaXRzIHBlciBwaXhlbCAqLwo+PiArCXUzMglod19mb3JtYXQ7CS8qIGZvcm1hdCBm aWVsZCBpbiB0aGUgUFJJX0NUTCByZWdpc3RlciAqLwo+PiArCXUzMglkcm1fZm9ybWF0OwkvKiBm b3JtYXQgaW4gRFJNIGRlZmluaXRpb24gKi8KPj4gKwl1MzIJYmFzZTsJCS8qIGZyYW1lYnVmZmVy IGJhc2UgaW4gZ3JhcGhpY3MgbWVtb3J5ICovCj4+ICsJdTMyCXhfb2Zmc2V0OwkvKiBpbiBwaXhl bHMgKi8KPj4gKwl1MzIJeV9vZmZzZXQ7CS8qIGluIGxpbmVzICovCj4+ICsJdTMyCXdpZHRoOwkJ LyogaW4gcGl4ZWxzICovCj4+ICsJdTMyCWhlaWdodDsJCS8qIGluIGxpbmVzICovCj4+ICsJdTMy CXN0cmlkZTsJCS8qIGluIGJ5dGVzICovCj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgZ3Z0X3Nwcml0 ZV9wbGFuZV9mb3JtYXQgewo+PiArCXU4CWVuYWJsZWQ7CS8qIHBsYW5lIGlzIGVuYWJsZWQgKi8K Pj4gKwl1OAl0aWxlZDsJCS8qIFgtdGlsZWQgKi8KPj4gKwl1OAlicHA7CQkvKiBiaXRzIHBlciBw aXhlbCAqLwo+PiArCXUzMglod19mb3JtYXQ7CS8qIGZvcm1hdCBmaWVsZCBpbiB0aGUgU1BSX0NU TCByZWdpc3RlciAqLwo+PiArCXUzMglkcm1fZm9ybWF0OwkvKiBmb3JtYXQgaW4gRFJNIGRlZmlu aXRpb24gKi8KPj4gKwl1MzIJYmFzZTsJCS8qIHNwcml0ZSBiYXNlIGluIGdyYXBoaWNzIG1lbW9y eSAqLwo+PiArCXUzMgl4X3BvczsJCS8qIGluIHBpeGVscyAqLwo+PiArCXUzMgl5X3BvczsJCS8q IGluIGxpbmVzICovCj4+ICsJdTMyCXhfb2Zmc2V0OwkvKiBpbiBwaXhlbHMgKi8KPj4gKwl1MzIJ eV9vZmZzZXQ7CS8qIGluIGxpbmVzICovCj4+ICsJdTMyCXdpZHRoOwkJLyogaW4gcGl4ZWxzICov Cj4+ICsJdTMyCWhlaWdodDsJCS8qIGluIGxpbmVzICovCj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3Qg Z3Z0X2N1cnNvcl9wbGFuZV9mb3JtYXQgewo+PiArCXU4CWVuYWJsZWQ7Cj4+ICsJdTgJbW9kZTsJ CS8qIGN1cnNvciBtb2RlIHNlbGVjdCAqLwo+PiArCXU4CWJwcDsJCS8qIGJpdHMgcGVyIHBpeGVs ICovCj4+ICsJdTMyCWRybV9mb3JtYXQ7CS8qIGZvcm1hdCBpbiBEUk0gZGVmaW5pdGlvbiAqLwo+ PiArCXUzMgliYXNlOwkJLyogY3Vyc29yIGJhc2UgaW4gZ3JhcGhpY3MgbWVtb3J5ICovCj4+ICsJ dTMyCXhfcG9zOwkJLyogaW4gcGl4ZWxzICovCj4+ICsJdTMyCXlfcG9zOwkJLyogaW4gbGluZXMg Ki8KPj4gKwl1OAl4X3NpZ247CQkvKiBYIFBvc2l0aW9uIFNpZ24gKi8KPj4gKwl1OAl5X3NpZ247 CQkvKiBZIFBvc2l0aW9uIFNpZ24gKi8KPj4gKwl1MzIJd2lkdGg7CQkvKiBpbiBwaXhlbHMgKi8K Pj4gKwl1MzIJaGVpZ2h0OwkJLyogaW4gbGluZXMgKi8KPj4gKwl1MzIJeF9ob3Q7CQkvKiBpbiBw aXhlbHMgKi8KPj4gKwl1MzIJeV9ob3Q7CQkvKiBpbiBwaXhlbHMgKi8KPj4gK307Cj4+ICsKPgo+ IFRoZSBhYm92ZSBzdHJ1Y3RzIGhhdmUgYSBsb3QgaW4gY29tbW9uLCB3b3VsZCBpdCBtYWtlIHNl bnNlIHRvIGhhdmUgdGhlCj4gY29tbW9uIG1lbWJlcnMgKyBwbGFuZSB0eXBlIGFuZCB0aGVuIHVu aW9uIGZvciB0aGUgcGxhbmUgdHlwZSBzcGVjaWZpYwo+IGRhdGEuIEkgc3VzcGVjdCBoYXZpbmcg aXQgYWxsIHNwbGl0IHRoaXMgd2F5IHdpbGwgbGVhZCB0byBtb3JlIHV0aWxpdHkKPiBmdW5jdGlv bnMgc29tZXdoZXJlLgo+CltaaGldIFRoYW5rcy4gV2lsbCBkbyB0aGF0LgoKPj4gK3N0cnVjdCBn dnRfcGlwZV9mb3JtYXQgewo+PiArCXN0cnVjdCBndnRfcHJpbWFyeV9wbGFuZV9mb3JtYXQJcHJp bWFyeTsKPj4gKwlzdHJ1Y3QgZ3Z0X3Nwcml0ZV9wbGFuZV9mb3JtYXQJc3ByaXRlOwo+PiArCXN0 cnVjdCBndnRfY3Vyc29yX3BsYW5lX2Zvcm1hdAljdXJzb3I7Cj4+ICsJZGRpX3BvcnRfdCBkZGlf cG9ydDsgIC8qIHRoZSBEREkgcG9ydCB0aGF0IHRoZSBwaXBlIGlzIGNvbm5lY3RlZCB0byAqLwo+ PiArfTsKPj4gKwo+PiArc3RydWN0IGd2dF9mYl9mb3JtYXR7Cj4+ICsJc3RydWN0IGd2dF9waXBl X2Zvcm1hdAlwaXBlc1tJOTE1X01BWF9QSVBFU107Cj4+ICt9Owo+PiArCj4+ICtleHRlcm4gaW50 IGd2dF9mYl9ub3RpZmllcl9jYWxsX2NoYWluKHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICpkYXRh KTsKPj4gK2V4dGVybiBpbnQgZ3Z0X2RlY29kZV9mYl9mb3JtYXQoc3RydWN0IHBndF9kZXZpY2Ug KnBkZXYsIGludCB2bWlkLAo+PiArCQkJCXN0cnVjdCBndnRfZmJfZm9ybWF0ICpmYik7Cj4+ICsK Pj4gKyNlbmRpZgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4+IGluZGV4IDAwMDAwMDAuLjA0MWQxMGYKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKPj4gQEAgLTAsMCArMSwzNjYgQEAKPj4gKy8qCj4+ ICsgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLgo+PiArICoKPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4+ICsgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAo+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+PiArICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4+ ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUKPj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4+ICsgKgo+PiArICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAo+PiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+PiArICogU29mdHdhcmUuCj4+ICsg Kgo+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+PiArICogTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS SVNJTkcgRlJPTSwKPj4gKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCj4+ICsgKiBTT0ZUV0FSRS4K Pj4gKyAqLwo+PiArCj4+ICsjaW5jbHVkZQo+PiArI2luY2x1ZGUKPj4gKwo+PiArI2luY2x1ZGUg Imd2dC5oIgo+PiArCj4+ICtzdHJ1Y3QgZ3Z0X2hvc3QgZ3Z0X2hvc3Q7Cj4+ICsKPj4gK2V4dGVy biBzdHJ1Y3QgZ3Z0X2tlcm5lbF9kbSB4ZW5ndF9rZG07Cj4+ICtleHRlcm4gc3RydWN0IGd2dF9r ZXJuZWxfZG0ga3ZtZ3Rfa2RtOwo+PiArCj4+ICtzdGF0aWMgY29uc3QgY2hhciAqc3VwcG9ydGVk X2h5cGVydmlzb3JzW10gPSB7Cj4KPiBzaG91bGQgYmUgInN0YXRpYyBjb25zdCBjaGFyICogY29u c3QiLgo+Cj4+ICsJW0dWVF9IWVBFUlZJU09SX1RZUEVfWEVOXSA9ICJYZW4gSHlwZXJ2aXNvciIs Cj4+ICsJW0dWVF9IWVBFUlZJU09SX1RZUEVfS1ZNXSA9ICJLVk0iLAo+PiArfTsKPj4gKwo+PiAr c3RhdGljIGJvb2wgZ3Z0X2luaXRfaG9zdCh2b2lkKQo+PiArewo+PiArCXN0cnVjdCBndnRfaG9z dCAqaG9zdCA9ICZndnRfaG9zdDsKPj4gKwo+PiArCWlmICghZ3Z0LmVuYWJsZSkgewo+PiArCQln dnRfZGJnX2NvcmUoIkdWVC1nIGhhcyBiZWVuIGRpc2FibGVkIGJ5IGtlcm5lbCBwYXJhbWV0ZXIi KTsKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4gKwo+PiArCWlmIChob3N0LT5pbml0aWFs aXplZCkgewo+PiArCQlndnRfZXJyKCJHVlQtZyBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVk ISIpOwo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKHhlbl9pbml0aWFs X2RvbWFpbigpKSB7Cj4KPiBTaG91bGRuJ3QgWGVuIGNvZGUgYmUgQ09ORklHX1hFTl9ET00wIGFu ZCBDT05GSUdfWEVOICNpZmRlZiBwcm90ZWN0ZWQ/Cj4KW1poaV0gVGhlIGZvbGxvd2luZyBjb2Rl IHBpZWNlIHNob3dzIHhlbl9pbml0aWFsX2RvbWFpbigpL3hlbl9kb21haW4oKSAKY291bGQgYWxz byBiZSB1c2VkIHdoZW4gQ09ORklHX1hFTl9ET00wIGlzIG5vdCBzZXQuCgojaWZkZWYgQ09ORklH X1hFTgpleHRlcm4gZW51bSB4ZW5fZG9tYWluX3R5cGUgeGVuX2RvbWFpbl90eXBlOwojZWxzZQoj ZGVmaW5lIHhlbl9kb21haW5fdHlwZSAgICAgICAgIFhFTl9OQVRJVkUKI2VuZGlmCgojZGVmaW5l IHhlbl9kb21haW4oKSAgICAgICAgICAgICh4ZW5fZG9tYWluX3R5cGUgIT0gWEVOX05BVElWRSkK I2RlZmluZSB4ZW5fcHZfZG9tYWluKCkgICAgICAgICAoeGVuX2RvbWFpbigpICYmICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX2Rv bWFpbl90eXBlID09IFhFTl9QVl9ET01BSU4pCiNkZWZpbmUgeGVuX2h2bV9kb21haW4oKSAgICAg ICAgKHhlbl9kb21haW4oKSAmJiAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhlbl9kb21haW5fdHlwZSA9PSBYRU5fSFZNX0RPTUFJTikK CiNpZmRlZiBDT05GSUdfWEVOX0RPTTAKI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CiNp bmNsdWRlIDxhc20veGVuL2h5cGVydmlzb3IuaD4KCiNkZWZpbmUgeGVuX2luaXRpYWxfZG9tYWlu KCkgICAgKHhlbl9kb21haW4oKSAmJiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB4ZW5fc3RhcnRfaW5mbyAmJiAKeGVuX3N0YXJ0X2luZm8tPmZsYWdzICYgU0lGX0lOSVRET01B SU4pCiNlbHNlICAvKiAhQ09ORklHX1hFTl9ET00wICovCiNkZWZpbmUgeGVuX2luaXRpYWxfZG9t YWluKCkgICAgKDApCiNlbmRpZiAgLyogQ09ORklHX1hFTl9ET00wICovCgo+PiArCQkvKiBYZW4g RG9tMCAqLwo+PiArCQlob3N0LT5rZG0gPSB0cnlfdGhlbl9yZXF1ZXN0X21vZHVsZShzeW1ib2xf Z2V0KHhlbmd0X2tkbSksICJ4ZW5ndCIpOwo+PiArCQlob3N0LT5oeXBlcnZpc29yX3R5cGUgPSBH VlRfSFlQRVJWSVNPUl9UWVBFX1hFTjsKPj4gKwl9IGVsc2UgaWYoeGVuX2RvbWFpbigpKSB7Cj4+ ICsJCS8qIFhlbiBEb21VICovCj4+ICsJCXJldHVybiBmYWxzZTsKPj4gKwl9IGVsc2Ugewo+PiAr CQkvKiBub3QgaW4gWGVuLiBUcnkgS1ZNR1QgKi8KPj4gKwkJaG9zdC0+a2RtID0gdHJ5X3RoZW5f cmVxdWVzdF9tb2R1bGUoc3ltYm9sX2dldChrdm1ndF9rZG0pLCAia3ZtIik7Cj4+ICsJCWhvc3Qt Pmh5cGVydmlzb3JfdHlwZSA9IEdWVF9IWVBFUlZJU09SX1RZUEVfS1ZNOwo+PiArCX0KPj4gKwo+ Cj4gV2h5IGRvIHdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiBoeXBlcnZpc29yIHR5cGUsIGFyZSB0 aGVyZSBwbGVudHkgb2YKPiBoeXBlcnZpc29yIHNwZWNpZmljIGJlaGF2aW91ciBkaWZmZXJlbmNl cz8KCltaaGldIEFzIEdWVC1nIG5lZWRzIHNvbWUgaHlwZXJ2aXNvciBzZXJ2aWNlcyB0byB3b3Jr LCB3ZSB3cml0ZSBhIAphYnN0cmFjdGlvbiBsYXllciB0byBjb25uZWN0IEdWVC1nIHRvIGRpZmZl cmVudCBoeXBlcnZpc29yLiBCdXQgc3RpbGwgCnRoZXJlIGFyZSBzb21lIGVtdWxhdGlvbiBsb2dp YyBjb3VsZG4ndCBiZSBmaXR0ZWQgaW50byB0aGF0IGFic3RyYWN0aW9uIApsYXllciwgbGlrZSBP cFJlZ2lvbiBlbXVsYXRpb24uIEluIFhlbiwgd2UgZW11bGF0ZXMgaXQgaW4ga2VybmVsIHNwYWNl LCAKd2hpbGUgd2UgZW11bGF0ZXMgaXQgaW4gUWVtdSB1bmRlciBLVk0uIEkgYWxzbyBhZ3JlZWQg dGhhdCB3ZSBzaG91bGQgCmZpbmQgc29tZSBhcHByb2FjaCB0byBpbXByb3ZlIGl0IGp1c3QgbGlr ZSB3aGF0IHlvdSBzYWlkLgoKSWYgaXQgaXMganVzdCBmb3IgcHJpbnRpbmcKPiB0aGUgYmVsb3cg ZGVidWcsIEkgdGhpbmsgaXQncyBiZXR0ZXIgdG8gbW92ZSB0aGUgZGVidWcgaW50byBhYm92ZSBj b2RlCj4gdGhhdCBkZXRlY3RzIHRoZSBoeXBlcnZpc29yLCB3cmFwIHRoZW0gd2l0aCBhcHByb3By aWF0ZSBDT05GSUcgI2lmZGVmcy4KPgo+PiArCWlmICghaG9zdC0+a2RtKQo+PiArCQlyZXR1cm4g ZmFsc2U7Cj4+ICsKPj4gKwlpZiAoIWh5cGVydmlzb3JfZGV0ZWN0X2hvc3QoKSkKPj4gKwkJcmV0 dXJuIGZhbHNlOwo+PiArCj4+ICsJZ3Z0X2luZm8oIlJ1bm5pbmcgd2l0aCBoeXBlcnZpc29yICVz IGluIGhvc3QgbW9kZSIsCj4+ICsJCQlzdXBwb3J0ZWRfaHlwZXJ2aXNvcnNbaG9zdC0+aHlwZXJ2 aXNvcl90eXBlXSk7Cj4+ICsKPj4gKwlpZHJfaW5pdCgmaG9zdC0+ZGV2aWNlX2lkcik7Cj4+ICsJ bXV0ZXhfaW5pdCgmaG9zdC0+ZGV2aWNlX2lkcl9sb2NrKTsKPj4gKwo+PiArCWhvc3QtPmluaXRp YWxpemVkID0gdHJ1ZTsKPj4gKwlyZXR1cm4gdHJ1ZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJv b2wgaW5pdF9kZXZpY2VfaW5mbyhzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKPj4gK3sKPj4gKwlz dHJ1Y3QgZ3Z0X2RldmljZV9pbmZvICppbmZvID0gJnBkZXYtPmRldmljZV9pbmZvOwo+PiArCj4+ ICsJaWYgKCFJU19CUk9BRFdFTEwocGRldi0+ZGV2X3ByaXYpKSB7Cj4+ICsJCWd2dF9lcnIoIlVu c3VwcG9ydGVkIEdFTiBkZXZpY2UiKTsKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4gKwo+ PiArCWlmIChJU19CUk9BRFdFTEwocGRldi0+ZGV2X3ByaXYpKSB7Cj4+ICsJCWluZm8tPm1heF9n dHRfZ21fc3ogPSAoMVVMIDw8IDMyKTsKPj4gKwkJLyoKPj4gKwkJICogVGhlIGxheW91dCBvZiBC QVIwIGluIEJEVzoKPj4gKwkJICogfDwgLSBNTUlPIDJNQiAtPnw8LSBSZXNlcnZlZCA2TUIgLT58 PC0gTUFYIEdUVCA4TUItPnwKPj4gKwkJICoKPj4gKwkJICogR1RUIG9mZnNldCBpbiBCQVIwIHN0 YXJ0cyBmcm9tIDhNQiB0byAxNk1CLCBhbmQKPj4gKwkJICogV2hhdGV2ZXIgR1RUIHNpemUgaXMg Y29uZmlndXJlZCBpbiBCSU9TLAo+PiArCQkgKiB0aGUgc2l6ZSBvZiBCQVIwIGlzIGFsd2F5cyAx Nk1CLiBUaGUgYWN0dWFsIGNvbmZpZ3VyZWQKPj4gKwkJICogR1RUIHNpemUgY2FuIGJlIGZvdW5k IGluIEdNQ0hfQ1RSTC4KPj4gKwkJICovCj4+ICsJCWluZm8tPmd0dF9zdGFydF9vZmZzZXQgPSAo MVVMIDw8IDIzKTsKPj4gKwkJaW5mby0+bWF4X2d0dF9zaXplID0gKDFVTCA8PCAyMyk7Cj4+ICsJ CWluZm8tPmd0dF9lbnRyeV9zaXplID0gODsKPj4gKwkJaW5mby0+Z3R0X2VudHJ5X3NpemVfc2hp ZnQgPSAzOwo+PiArCQlpbmZvLT5nbWFkcl9ieXRlc19pbl9jbWQgPSA4Owo+Cj4gV291bGQgdGhp cyBpbmZvcm1hdGlvbiBiZSB1c2VmdWwgaW4gYSBoZWFkZXIgYXMgI2RlZmluZXMgdG9vPwo+Clta aGldIFByb2JhYmx5LiBDb25zaWRlciB0aGF0IG9uZSBHVlQtZyBmZWF0dXJlZCBrZXJuZWwgY291 bGQgYmUgYWJsZSB0byAKcnVuIG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMsIHRoZSBpbmZvcm1haW9u IGRhdGEgc3RydWN0dXJlIGNvdWxkIGJlIApkaWZmZXJlbnQuIEJ1dCBJIGFncmVlIHRvIGRlZmlu ZSB0aGUgbWFnaWMgbnVtYmVycyBpbiBhIGhlYWRlciBmaWxlcy4gOikKCj4+ICsJfQo+PiArCj4+ ICsJZ3Z0X2luZm8oIkRldmljZSBpbmZvOiIpOwo+PiArCXByaW50aygiICAgICAgICBtYXhfZ3R0 X2dtX3N6OiAlbGx4XG4iLCBpbmZvLT5tYXhfZ3R0X2dtX3N6KTsKPj4gKwlwcmludGsoIiAgICAg ICAgbWF4X2d0dF9zaXplOiAleFxuIiwgaW5mby0+bWF4X2d0dF9zaXplKTsKPj4gKwlwcmludGso IiAgICAgICAgZ3R0X3NpemVfZW50cnk6ICV4XG4iLCBpbmZvLT5ndHRfZW50cnlfc2l6ZSk7Cj4+ ICsJcHJpbnRrKCIgICAgICAgIGd0dF9lbnRyeV9zaXplX3NoaWZ0OiAleFxuIiwgaW5mby0+Z3R0 X2VudHJ5X3NpemVfc2hpZnQpOwo+PiArCXByaW50aygiICAgICAgICBndHRfc3RhcnRfb2Zmc2V0 OiAleFxuIiwgaW5mby0+Z3R0X3N0YXJ0X29mZnNldCk7Cj4+ICsJcHJpbnRrKCIgICAgICAgIGd0 dF9lbmRfb2Zmc2V0OiAleFxuIiwgaW5mby0+Z3R0X2VuZF9vZmZzZXQpOwo+PiArCj4KPiBKdXN0 IHB1dCB0aGlzIHRvIGtpbmQgb2Ygc3R1ZmYgdG8gaTkxNV9kZWJ1Z2ZzLmMuCj4KW1poaV0gVGhh bmtzLgoKPj4gKwlyZXR1cm4gdHJ1ZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgaW5pdF9p bml0aWFsX2NmZ19zcGFjZV9zdGF0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKPj4gK3sKPj4g KwlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IHBkZXYtPmRldl9wcml2LT5kZXYtPnBkZXY7Cj4+ ICsJaW50IGk7Cj4+ICsKPj4gKwlndnRfZGJnX2NvcmUoImluaXQgaW5pdGlhbCBjZmcgc3BhY2Us IGlkICVkIiwgcGRldi0+aWQpOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IEdWVF9DRkdfU1BB Q0VfU1o7IGkgKz0gNCkKPgo+ICs9IHNpemVvZiguLi4pCj4KPj4gKwkJcGNpX3JlYWRfY29uZmln X2R3b3JkKHBjaV9kZXYsIGksCj4+ICsJCQkJKHUzMiAqKSZwZGV2LT5pbml0aWFsX2NmZ19zcGFj ZVtpXSk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4KPiBObyBtYWdpYyBu dW1iZXJzIG1ha2UgYSAjZGVmaW5lIGZvciAzIGFuZCBnaXZlIGl0IGEgZGVzY3JpcHRpdmUgbmFt ZS4KPgo+PiArCQlwZGV2LT5iYXJfc2l6ZVtpXSA9IHBjaV9yZXNvdXJjZV9sZW4ocGNpX2Rldiwg aSAqIDIpOwo+PiArCQlndnRfaW5mbygiYmFyICVkIHNpemU6ICVsbHgiLCBpLCBwZGV2LT5iYXJf c2l6ZVtpXSk7Cj4+ICsJfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBjbGVhbl9pbml0aWFs X21taW9fc3RhdGUoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJaWYgKHBkZXYt Pmd0dG1taW9fdmEpIHsKPj4gKwkJaW91bm1hcChwZGV2LT5ndHRtbWlvX3ZhKTsKPj4gKwkJcGRl di0+Z3R0bW1pb192YSA9IE5VTEw7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKHBkZXYtPmdtYWRyX3Zh KSB7Cj4+ICsJCWlvdW5tYXAocGRldi0+Z21hZHJfdmEpOwo+PiArCQlwZGV2LT5nbWFkcl92YSA9 IE5VTEw7Cj4+ICsJfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCBpbml0X2luaXRpYWxfbW1p b19zdGF0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKPj4gK3sKPj4gKwl1NjQgYmFyMCwgYmFy MTsKPj4gKwo+PiArCWd2dF9kYmdfY29yZSgiaW5pdCBpbml0aWFsIG1taW8gc3RhdGUsIGlkICVk IiwgcGRldi0+aWQpOwo+PiArCj4+ICsJYmFyMCA9ICoodTY0ICopJnBkZXYtPmluaXRpYWxfY2Zn X3NwYWNlW0dWVF9SRUdfQ0ZHX1NQQUNFX0JBUjBdOwo+PiArCWJhcjEgPSAqKHU2NCAqKSZwZGV2 LT5pbml0aWFsX2NmZ19zcGFjZVtHVlRfUkVHX0NGR19TUEFDRV9CQVIxXTsKPj4gKwo+PiArCXBk ZXYtPmd0dG1taW9fYmFzZSA9IGJhcjAgJiB+MHhmOwo+PiArCXBkZXYtPm1taW9fc2l6ZSA9IDIg KiAxMDI0ICogMTAyNDsKPj4gKwlwZGV2LT5yZWdfbnVtID0gcGRldi0+bW1pb19zaXplIC8gNDsK Pj4gKwlwZGV2LT5nbWFkcl9iYXNlID0gYmFyMSAmIH4weGY7Cj4+ICsKPgo+IE1hbnkgbWFnaWMg bnVtYmVycy4KPgo+PiArCXBkZXYtPmd0dG1taW9fdmEgPSBpb3JlbWFwKHBkZXYtPmd0dG1taW9f YmFzZSwgcGRldi0+YmFyX3NpemVbMF0pOwo+PiArCWlmICghcGRldi0+Z3R0bW1pb192YSkgewo+ PiArCQlndnRfZXJyKCJmYWlsIHRvIG1hcCBHVFRNTUlPIEJBUi4iKTsKPgo+IFRoZXNlIHNob3Vs ZCBiZSBpZihXQVJOX09OKC4uLikpCj4KPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4gKwo+ PiArCXBkZXYtPmdtYWRyX3ZhID0gaW9yZW1hcChwZGV2LT5nbWFkcl9iYXNlLCBwZGV2LT5iYXJf c2l6ZVsyXSk7Cj4+ICsJaWYgKCFwZGV2LT5nbWFkcl92YSkgewo+PiArCQlndnRfZXJyKCJmYWls IHRvIG1hcCBHTUFEUiBCQVIuIik7Cj4+ICsJCWdvdG8gZXJyOwo+PiArCX0KPj4gKwo+PiArCWd2 dF9pbmZvKCJiYXIwOiAweCVsbHgsIGJhcjE6IDB4JWxseCIsIGJhcjAsIGJhcjEpOwo+PiArCWd2 dF9pbmZvKCJtbWlvIHNpemU6ICV4IiwgcGRldi0+bW1pb19zaXplKTsKPj4gKwlndnRfaW5mbygi Z3R0bW1pbzogMHglbGx4LCBnbWFkcjogMHglbGx4IiwgcGRldi0+Z3R0bW1pb19iYXNlLCBwZGV2 LT5nbWFkcl9iYXNlKTsKPj4gKwlndnRfaW5mbygiZ3R0bW1pb192YTogJXAiLCBwZGV2LT5ndHRt bWlvX3ZhKTsKPj4gKwlndnRfaW5mbygiZ21hZHJfdmE6ICVwIiwgcGRldi0+Z21hZHJfdmEpOwo+ PiArCj4+ICsJcmV0dXJuIHRydWU7Cj4+ICtlcnI6Cj4+ICsJY2xlYW5faW5pdGlhbF9tbWlvX3N0 YXRlKHBkZXYpOwo+PiArCXJldHVybiBmYWxzZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBn dnRfc2VydmljZV90aHJlYWQodm9pZCAqZGF0YSkKPj4gK3sKPj4gKwlzdHJ1Y3QgcGd0X2Rldmlj ZSAqcGRldiA9IChzdHJ1Y3QgcGd0X2RldmljZSAqKWRhdGE7Cj4+ICsJaW50IHI7Cj4+ICsKPj4g KwlndnRfZGJnX2NvcmUoInNlcnZpY2UgdGhyZWFkIHN0YXJ0LCBwZ3QgJWQiLCBwZGV2LT5pZCk7 Cj4+ICsKPj4gKwl3aGlsZSgha3RocmVhZF9zaG91bGRfc3RvcCgpKSB7Cj4+ICsJCXIgPSB3YWl0 X2V2ZW50X2ludGVycnVwdGlibGUocGRldi0+c2VydmljZV90aHJlYWRfd3EsCj4+ICsJCQkJa3Ro cmVhZF9zaG91bGRfc3RvcCgpIHx8IHBkZXYtPnNlcnZpY2VfcmVxdWVzdCk7Cj4+ICsKPj4gKwkJ aWYgKGt0aHJlYWRfc2hvdWxkX3N0b3AoKSkKPj4gKwkJCWJyZWFrOwo+PiArCj4+ICsJCWlmIChy KSB7Cj4+ICsJCQlndnRfd2Fybigic2VydmljZSB0aHJlYWQgaXMgd2FrZW4gdXAgYnkgdW5leHBl Y3RlZCBzaWduYWwuIik7Cj4KPiBTaG91bGQgYmUgV0FSTl9PTkNFLCB0byBhdm9pZCBmdXR1cmUg ZGlzYXN0ZXJzIHdpdGggQ0kuCj4KW1poaV0gVGhhbmtzLgo+PiArCQkJY29udGludWU7Cj4+ICsJ CX0KPj4gKwl9Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGNsZWFu X3NlcnZpY2VfdGhyZWFkKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQo+PiArewo+PiArCWlmIChw ZGV2LT5zZXJ2aWNlX3RocmVhZCkgewo+PiArCQlrdGhyZWFkX3N0b3AocGRldi0+c2VydmljZV90 aHJlYWQpOwo+PiArCQlwZGV2LT5zZXJ2aWNlX3RocmVhZCA9IE5VTEw7Cj4+ICsJfQo+PiArfQo+ PiArCj4+ICtzdGF0aWMgYm9vbCBpbml0X3NlcnZpY2VfdGhyZWFkKHN0cnVjdCBwZ3RfZGV2aWNl ICpwZGV2KQo+PiArewo+PiArCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnBkZXYtPnNlcnZpY2VfdGhy ZWFkX3dxKTsKPj4gKwo+PiArCXBkZXYtPnNlcnZpY2VfdGhyZWFkID0ga3RocmVhZF9ydW4oZ3Z0 X3NlcnZpY2VfdGhyZWFkLAo+PiArCQkJcGRldiwgImd2dF9zZXJ2aWNlX3RocmVhZCVkIiwgcGRl di0+aWQpOwo+PiArCj4+ICsJaWYgKCFwZGV2LT5zZXJ2aWNlX3RocmVhZCkgewo+PiArCQlndnRf ZXJyKCJmYWlsIHRvIHN0YXJ0IHNlcnZpY2UgdGhyZWFkLiIpOwo+PiArCQlyZXR1cm4gZmFsc2U7 Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lk IGNsZWFuX3BndF9kZXZpY2Uoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJY2xl YW5fc2VydmljZV90aHJlYWQocGRldik7Cj4+ICsJY2xlYW5faW5pdGlhbF9tbWlvX3N0YXRlKHBk ZXYpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCBpbml0X3BndF9kZXZpY2Uoc3RydWN0IHBn dF9kZXZpY2UgKnBkZXYsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK3sK Pj4gKwlpZiAoIWluaXRfZGV2aWNlX2luZm8ocGRldikpCj4+ICsJCXJldHVybiBmYWxzZTsKPj4g Kwo+PiArCWluaXRfaW5pdGlhbF9jZmdfc3BhY2Vfc3RhdGUocGRldik7Cj4+ICsKPj4gKwlpZiAo IWluaXRfaW5pdGlhbF9tbWlvX3N0YXRlKHBkZXYpKQo+PiArCQlnb3RvIGVycjsKPj4gKwo+PiAr CWlmICghaW5pdF9zZXJ2aWNlX3RocmVhZChwZGV2KSkKPj4gKwkJZ290byBlcnI7Cj4+ICsKPj4g KwlyZXR1cm4gdHJ1ZTsKPj4gK2VycjoKPj4gKwljbGVhbl9wZ3RfZGV2aWNlKHBkZXYpOwo+PiAr CXJldHVybiBmYWxzZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJvb2wgcG9zdF9pbml0X3BndF9k ZXZpY2Uoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJcmV0dXJuIHRydWU7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGZyZWVfcGd0X2RldmljZShzdHJ1Y3QgcGd0X2Rldmlj ZSAqcGRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgZ3Z0X2hvc3QgKmhvc3QgPSAmZ3Z0X2hvc3Q7Cj4+ ICsKPj4gKwltdXRleF9sb2NrKCZob3N0LT5kZXZpY2VfaWRyX2xvY2spOwo+PiArCWlkcl9yZW1v dmUoJmhvc3QtPmRldmljZV9pZHIsIHBkZXYtPmlkKTsKPj4gKwltdXRleF91bmxvY2soJmhvc3Qt PmRldmljZV9pZHJfbG9jayk7Cj4+ICsKPj4gKwl2ZnJlZShwZGV2KTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIHN0cnVjdCBwZ3RfZGV2aWNlICphbGxvY19wZ3RfZGV2aWNlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPj4gK3sKPj4gKwlzdHJ1Y3QgZ3Z0X2hvc3QgKmhvc3QgPSAm Z3Z0X2hvc3Q7Cj4+ICsJc3RydWN0IHBndF9kZXZpY2UgKnBkZXYgPSBOVUxMOwo+PiArCj4+ICsJ cGRldiA9IHZ6YWxsb2Moc2l6ZW9mKCpwZGV2KSk7Cj4+ICsJaWYgKCFwZGV2KSB7Cj4+ICsJCWd2 dF9lcnIoImZhaWwgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBwZ3QgZGV2aWNlLiIpOwo+PiArCQly ZXR1cm4gTlVMTDsKPj4gKwl9Cj4+ICsKPj4gKwltdXRleF9sb2NrKCZob3N0LT5kZXZpY2VfaWRy X2xvY2spOwo+PiArCXBkZXYtPmlkID0gaWRyX2FsbG9jKCZob3N0LT5kZXZpY2VfaWRyLCBwZGV2 LCAwLCAwLCBHRlBfS0VSTkVMKTsKPj4gKwltdXRleF91bmxvY2soJmhvc3QtPmRldmljZV9pZHJf bG9jayk7Cj4+ICsKPj4gKwlpZiAocGRldi0+aWQgPCAwKSB7Cj4+ICsJCWd2dF9lcnIoImZhaWwg dG8gYWxsb2NhdGUgcGd0IGRldmljZSBpZC4iKTsKPj4gKwkJZ290byBlcnI7Cj4+ICsJfQo+PiAr Cj4+ICsJbXV0ZXhfaW5pdCgmcGRldi0+bG9jayk7Cj4+ICsJcGRldi0+ZGV2X3ByaXYgPSBkZXZf cHJpdjsKPj4gKwlpZHJfaW5pdCgmcGRldi0+aW5zdGFuY2VfaWRyKTsKPj4gKwo+PiArCXJldHVy biBwZGV2Owo+PiArZXJyOgo+PiArCWZyZWVfcGd0X2RldmljZShwZGV2KTsKPj4gKwlyZXR1cm4g TlVMTDsKPj4gK30KPj4gKwo+PiArdm9pZCBndnRfZGVzdHJveV9wZ3RfZGV2aWNlKHZvaWQgKnBy aXZhdGVfZGF0YSkKPj4gK3sKPj4gKwlzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9IChzdHJ1Y3Qg cGd0X2RldmljZSAqKXByaXZhdGVfZGF0YTsKPj4gKwo+PiArCWNsZWFuX3BndF9kZXZpY2UocGRl dik7Cj4+ICsJZnJlZV9wZ3RfZGV2aWNlKHBkZXYpOwo+PiArfQo+PiArCj4+ICt2b2lkICpndnRf Y3JlYXRlX3BndF9kZXZpY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAr ewo+PiArCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gTlVMTDsKPj4gKwlzdHJ1Y3QgZ3Z0X2hv c3QgKmhvc3QgPSAmZ3Z0X2hvc3Q7Cj4+ICsKPj4gKwlpZiAoIWhvc3QtPmluaXRpYWxpemVkICYm ICFndnRfaW5pdF9ob3N0KCkpIHsKPj4gKwkJZ3Z0X2VycigiZ3Z0X2luaXRfaG9zdCBmYWlsIik7 Cj4+ICsJCXJldHVybiBOVUxMOwo+PiArCX0KPj4gKwo+PiArCWd2dF9kYmdfY29yZSgiY3JlYXRl IG5ldyBwZ3QgZGV2aWNlLCBpOTE1IGRldl9wcml2OiAlcCIsIGRldl9wcml2KTsKPj4gKwo+PiAr CXBkZXYgPSBhbGxvY19wZ3RfZGV2aWNlKGRldl9wcml2KTsKPj4gKwlpZiAoIXBkZXYpIHsKPj4g KwkJZ3Z0X2VycigiZmFpbCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHBndCBkZXZpY2UuIik7Cj4+ ICsJCWdvdG8gZXJyOwo+PiArCX0KPj4gKwo+PiArCWd2dF9kYmdfY29yZSgiaW5pdCBwZ3QgZGV2 aWNlLCBpZCAlZCIsIHBkZXYtPmlkKTsKPj4gKwo+PiArCWlmICghaW5pdF9wZ3RfZGV2aWNlKHBk ZXYsIGRldl9wcml2KSkgewo+PiArCQlndnRfZXJyKCJmYWlsIHRvIGluaXQgcGh5c2ljYWwgZGV2 aWNlIHN0YXRlLiIpOwo+PiArCQlnb3RvIGVycjsKPj4gKwl9Cj4+ICsKPj4gKwlndnRfZGJnX2Nv cmUoInBndCBkZXZpY2UgY3JlYXRpb24gZG9uZSwgaWQgJWQiLCBwZGV2LT5pZCk7Cj4+ICsKPj4g KwlyZXR1cm4gcGRldjsKPj4gK2VycjoKPj4gKwlpZiAocGRldikgewo+PiArCQlndnRfZGVzdHJv eV9wZ3RfZGV2aWNlKHBkZXYpOwo+PiArCQlwZGV2ID0gTlVMTDsKPj4gKwl9Cj4+ICsJcmV0dXJu IE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK2Jvb2wgZ3Z0X3Bvc3RfaW5pdF9wZ3RfZGV2aWNlKHZvaWQg KnByaXZhdGVfZGF0YSkKPj4gK3sKPj4gKwlzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9IChzdHJ1 Y3QgcGd0X2RldmljZSAqKXByaXZhdGVfZGF0YTsKPj4gKwlzdHJ1Y3QgZ3Z0X2hvc3QgKmhvc3Qg PSAmZ3Z0X2hvc3Q7Cj4+ICsKPj4gKwlpZiAoIWhvc3QtPmluaXRpYWxpemVkKSB7Cj4+ICsJCWd2 dF9lcnIoImd2dF9ob3N0IGhhdmVuJ3QgYmVlbiBpbml0aWFsaXplZC4iKTsKPj4gKwkJcmV0dXJu IGZhbHNlOwo+PiArCX0KPj4gKwo+PiArCWd2dF9kYmdfY29yZSgicG9zdCBpbml0IHBndCBkZXZp Y2UgJWQiLCBwZGV2LT5pZCk7Cj4+ICsKPj4gKwlpZiAoIXBvc3RfaW5pdF9wZ3RfZGV2aWNlKHBk ZXYpKSB7Cj4+ICsJCWd2dF9lcnIoImZhaWwgdG8gcG9zdCBpbml0IHBoeXNpY2FsIGRldmljZSBz dGF0ZS4iKTsKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4gKwo+PiArCXJldHVybiB0cnVl Owo+PiArfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+ IGluZGV4IDAwMDAwMDAuLjZjODViYmEKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPj4gQEAgLTAsMCArMSwxMzAgQEAKPj4gKy8qCj4+ICsg KiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLgo+PiArICoKPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4+ICsgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAo+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4+ICsg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKPj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4+ICsgKgo+PiArICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAo+PiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+PiArICogU29mdHdhcmUuCj4+ICsgKgo+ PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+PiArICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcgRlJPTSwKPj4gKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCj4+ICsgKiBTT0ZUV0FSRS4KPj4g KyAqLwo+PiArCj4+ICsjaWZuZGVmIF9HVlRfSF8KPj4gKyNkZWZpbmUgX0dWVF9IXwo+PiArCj4+ ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4gKyNpbmNsdWRlICJpOTE1X3ZncHUuaCIKPj4gKwo+ PiArI2luY2x1ZGUgImRlYnVnLmgiCj4+ICsjaW5jbHVkZSAicGFyYW1zLmgiCj4+ICsjaW5jbHVk ZSAicmVnLmgiCj4+ICsjaW5jbHVkZSAiaHlwZXJjYWxsLmgiCj4+ICsjaW5jbHVkZSAibXB0Lmgi Cj4+ICsjaW5jbHVkZSAiZmJfZGVjb2Rlci5oIgo+PiArCj4+ICsjZGVmaW5lIEdWVF9NQVhfVkdQ VSA4Cj4+ICsKPj4gK2VudW0gewo+PiArCUdWVF9IWVBFUlZJU09SX1RZUEVfWEVOID0gMCwKPj4g KwlHVlRfSFlQRVJWSVNPUl9UWVBFX0tWTSwKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBndnRfaG9z dCB7Cj4+ICsJYm9vbCBpbml0aWFsaXplZDsKPj4gKwlpbnQgaHlwZXJ2aXNvcl90eXBlOwo+PiAr CXN0cnVjdCBtdXRleCBkZXZpY2VfaWRyX2xvY2s7Cj4+ICsJc3RydWN0IGlkciBkZXZpY2VfaWRy Owo+PiArCXN0cnVjdCBndnRfa2VybmVsX2RtICprZG07Cj4+ICt9Owo+PiArCj4+ICtleHRlcm4g c3RydWN0IGd2dF9ob3N0IGd2dF9ob3N0Owo+PiArCj4+ICsvKiBEZXNjcmliZSB0aGUgbGltaXRh dGlvbiBvZiBIVy4qLwo+PiArc3RydWN0IGd2dF9kZXZpY2VfaW5mbyB7Cj4+ICsJdTY0IG1heF9n dHRfZ21fc3o7Cj4+ICsJdTMyIGd0dF9zdGFydF9vZmZzZXQ7Cj4+ICsJdTMyIGd0dF9lbmRfb2Zm c2V0Owo+PiArCXUzMiBtYXhfZ3R0X3NpemU7Cj4+ICsJdTMyIGd0dF9lbnRyeV9zaXplOwo+PiAr CXUzMiBndHRfZW50cnlfc2l6ZV9zaGlmdDsKPj4gKwl1MzIgZ21hZHJfYnl0ZXNfaW5fY21kOwo+ PiArfTsKPj4gKwo+PiArc3RydWN0IHZndF9kZXZpY2Ugewo+PiArCWludCBpZDsKPj4gKwlpbnQg dm1faWQ7Cj4+ICsJc3RydWN0IHBndF9kZXZpY2UgKnBkZXY7Cj4+ICsJYm9vbCB3YXJuX3VudHJh Y2s7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgcGd0X2RldmljZSB7Cj4+ICsJc3RydWN0IG11dGV4 IGxvY2s7Cj4+ICsJaW50IGlkOwo+PiArCj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2Owo+PiArCXN0cnVjdCBpZHIgaW5zdGFuY2VfaWRyOwo+PiArCj4+ICsJc3RydWN0IGd2 dF9kZXZpY2VfaW5mbyBkZXZpY2VfaW5mbzsKPj4gKwo+PiArCXU4IGluaXRpYWxfY2ZnX3NwYWNl W0dWVF9DRkdfU1BBQ0VfU1pdOwo+PiArCXU2NCBiYXJfc2l6ZVtHVlRfQkFSX05VTV07Cj4+ICsK Pj4gKwl1NjQgZ3R0bW1pb19iYXNlOwo+PiArCXZvaWQgKmd0dG1taW9fdmE7Cj4+ICsKPj4gKwl1 NjQgZ21hZHJfYmFzZTsKPj4gKwl2b2lkICpnbWFkcl92YTsKPj4gKwo+PiArCXUzMiBtbWlvX3Np emU7Cj4+ICsJdTMyIHJlZ19udW07Cj4+ICsKPj4gKwl3YWl0X3F1ZXVlX2hlYWRfdCBzZXJ2aWNl X3RocmVhZF93cTsKPj4gKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnNlcnZpY2VfdGhyZWFkOwo+PiAr CXVuc2lnbmVkIGxvbmcgc2VydmljZV9yZXF1ZXN0Owo+PiArfTsKPj4gKwo+Cj4gSGVyZS0tPgo+ Cj4+ICtzdGF0aWMgaW5saW5lIHUzMiBndnRfbW1pb19yZWFkKHN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2LAo+PiArCQl1MzIgcmVnKQo+PiArewo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHBkZXYtPmRldl9wcml2Owo+PiArCWk5MTVfcmVnX3QgdG1wID0gey5yZWcgPSBy ZWd9Owo+PiArCXJldHVybiBJOTE1X1JFQUQodG1wKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlu bGluZSB2b2lkIGd2dF9tbWlvX3dyaXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LAo+PiArCQl1 MzIgcmVnLCB1MzIgdmFsKQo+PiArewo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHBkZXYtPmRldl9wcml2Owo+PiArCWk5MTVfcmVnX3QgdG1wID0gey5yZWcgPSByZWd9 Owo+PiArCUk5MTVfV1JJVEUodG1wLCB2YWwpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5l IHU2NCBndnRfbW1pb19yZWFkNjQoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsCj4+ICsJCXUzMiBy ZWcpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcGRldi0+ ZGV2X3ByaXY7Cj4+ICsJaTkxNV9yZWdfdCB0bXAgPSB7LnJlZyA9IHJlZ307Cj4+ICsJcmV0dXJu IEk5MTVfUkVBRDY0KHRtcCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBndnRf bW1pb193cml0ZTY0KHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LAo+PiArCQl1MzIgcmVnLCB1NjQg dmFsKQo+PiArewo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHBkZXYt PmRldl9wcml2Owo+PiArCWk5MTVfcmVnX3QgdG1wID0gey5yZWcgPSByZWd9Owo+PiArCUk5MTVf V1JJVEU2NCh0bXAsIHZhbCk7Cj4+ICt9Cj4+ICsKPgo+IDwtLSBXaHk/IFRoZSBpOTE1X3JlZ190 IHR5cGUgd2FzIGFkZGVkIHRvIGF2b2lkIHByb2JsZW1zLCB0aGlzIGNvZGUgaXMKPiBub3QgdXNl ZCBhbnl3aGVyZSwgYW5kIGl0IGhhcyBubyBkb2N1bWVudGF0aW9uLCBzbyBJIGNhbiBub3QgcmV2 aWV3IGl0Lgo+Cj4gSSB3cm90ZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIHRoZSBwb3N0Lgo+Clta aGldIFRoYW5rcywgSSB3aWxsIGNoZWNrIHRoYXQuCgo+IFJlZ2FyZHMsIEpvb25hcwo+Cj4+ICsj ZW5kaWYKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaAo+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi4wYTQxODc0Cj4+IC0tLSAvZGV2L251bGwKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oCj4+IEBAIC0wLDAgKzEsMzAg QEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+PiArICoKPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4+ICsg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAo+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+PiArICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4+ICsgKgo+ PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+PiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+PiArICogU29m dHdhcmUuCj4+ICsgKgo+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAo+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+PiAr ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKPj4gKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCj4+ICsg KiBTT0ZUV0FSRS4KPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9HVlRfSFlQRVJDQUxMX0hfCj4+ ICsjZGVmaW5lIF9HVlRfSFlQRVJDQUxMX0hfCj4+ICsKPj4gK3N0cnVjdCBndnRfa2VybmVsX2Rt IHsKPj4gK307Cj4+ICsKPj4gKyNlbmRpZiAvKiBfR1ZUX0hZUEVSQ0FMTF9IXyAqLwo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21wdC5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L21wdC5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAu LmJiZTQ0NjUKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvbXB0LmgKPj4gQEAgLTAsMCArMSw5NyBAQAo+PiArLyoKPj4gKyAqIENvcHlyaWdodChjKSAy MDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+ PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKPj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4+ICsgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPj4gKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKPj4gKyAqCj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCj4+ICsgKiBTb2Z0d2FyZS4KPj4gKyAqCj4+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPj4g KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+PiArICog T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUyBJTiBUSEUKPj4gKyAqIFNPRlRXQVJFLgo+PiArICovCj4+ICsKPj4gKyNp Zm5kZWYgX0dWVF9NUFRfSF8KPj4gKyNkZWZpbmUgX0dWVF9NUFRfSF8KPj4gKwo+PiArc3RydWN0 IHZndF9kZXZpY2U7Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBoeXBlcnZp c29yX2cybV9wZm4oc3RydWN0IHZndF9kZXZpY2UgKnZndCwKPj4gKwl1bnNpZ25lZCBsb25nIGdf cGZuKQo+PiArewo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIGlu dCBoeXBlcnZpc29yX3BhdXNlX2RvbWFpbihzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQo+PiArewo+ PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIGludCBoeXBlcnZpc29y X3NodXRkb3duX2RvbWFpbihzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQo+PiArewo+PiArCXJldHVy biAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIGludCBoeXBlcnZpc29yX3NldF90cmFw X2FyZWEoc3RydWN0IHZndF9kZXZpY2UgKnZndCwKPj4gKwl1aW50NjRfdCBzdGFydCwgdWludDY0 X3QgZW5kLCBib29sIG1hcCkKPj4gK3sKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3Rh dGljIGlubGluZSBib29sIGh5cGVydmlzb3JfZGV0ZWN0X2hvc3Qodm9pZCkKPj4gK3sKPj4gKwly ZXR1cm4gZmFsc2U7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgaW50IGh5cGVydmlzb3Jf dmlydF90b19tZm4odm9pZCAqYWRkcikKPj4gK3sKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGlubGluZSB2b2lkICpoeXBlcnZpc29yX21mbl90b192aXJ0KGludCBtZm4pCj4+ ICt7Cj4+ICsJcmV0dXJuIE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBo eXBlcnZpc29yX2luamVjdF9tc2koc3RydWN0IHZndF9kZXZpY2UgKnZndCkKPj4gK3sKPj4gKwly ZXR1cm47Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgaW50IGh5cGVydmlzb3JfaHZtX2lu aXQoc3RydWN0IHZndF9kZXZpY2UgKnZndCkKPj4gK3sKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGlubGluZSB2b2lkIGh5cGVydmlzb3JfaHZtX2V4aXQoc3RydWN0IHZndF9k ZXZpY2UgKnZndCkKPj4gK3sKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSB2b2lkICpoeXBl cnZpc29yX2dwYV90b192YShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LCB1bnNpZ25lZCBsb25nIGdw YSkKPj4gK3sKPj4gKwlyZXR1cm4gTlVMTDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSBi b29sIGh5cGVydmlzb3JfcmVhZF92YShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LCB2b2lkICp2YSwK Pj4gKwkJdm9pZCAqdmFsLCBpbnQgbGVuLCBpbnQgYXRvbWljKQo+PiArewo+PiArCXJldHVybiBm YWxzZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSBib29sIGh5cGVydmlzb3Jfd3JpdGVf dmEoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgdm9pZCAqdmEsCj4+ICsJCXZvaWQgKnZhbCwgaW50 IGxlbiwgaW50IGF0b21pYykKPj4gK3sKPj4gKwlyZXR1cm4gZmFsc2U7Cj4+ICt9Cj4+ICsKPj4g KyNlbmRpZiAvKiBfR1ZUX01QVF9IXyAqLwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L3BhcmFtcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jCj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmRmYzMzYzMKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmMKPj4gQEAg LTAsMCArMSwyOSBAQAo+PiArLyoKPj4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKPj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4+ ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwKPj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+PiArICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKPj4gKyAqCj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4+ICsgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl Cj4+ICsgKiBTb2Z0d2FyZS4KPj4gKyAqCj4+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+PiArICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPj4gKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+PiArICogT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ TiBUSEUKPj4gKyAqIFNPRlRXQVJFLgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlICJndnQuaCIK Pj4gKwo+PiArc3RydWN0IGd2dF9rZXJuZWxfcGFyYW1zIGd2dCA9IHsKPj4gKwkuZW5hYmxlID0g dHJ1ZSwKPj4gKwkuZGVidWcgPSAwLAo+PiArfTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9wYXJhbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMu aAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi5kMjk1NWI5Cj4+IC0t LSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5oCj4+ IEBAIC0wLDAgKzEsMzQgQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+PiArICoKPj4gKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+PiArICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgo+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPj4gKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cj4+ICsgKgo+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+PiArICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQo+PiArICogU29mdHdhcmUuCj4+ICsgKgo+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4g KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4+ICsgKiBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUgo+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKPj4gKyAqIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO R1MgSU4gVEhFCj4+ICsgKiBTT0ZUV0FSRS4KPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9HVlRf UEFSQU1TX0hfCj4+ICsjZGVmaW5lIF9HVlRfUEFSQU1TX0hfCj4+ICsKPj4gK3N0cnVjdCBndnRf a2VybmVsX3BhcmFtcyB7Cj4+ICsJYm9vbCBlbmFibGU7Cj4+ICsJaW50IGRlYnVnOwo+PiArfTsK Pj4gKwo+PiArZXh0ZXJuIHN0cnVjdCBndnRfa2VybmVsX3BhcmFtcyBndnQ7Cj4+ICsKPj4gKyNl bmRpZgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGlu ZGV4IDAwMDAwMDAuLmQzNjNiNzQKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvcmVnLmgKPj4gQEAgLTAsMCArMSwzNCBAQAo+PiArLyoKPj4gKyAqIENv cHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCj4+ICsgKgo+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks Cj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPj4gKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQo+PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPj4gKyAqCj4+ICsgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0Cj4+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4+ICsgKiBTb2Z0d2FyZS4KPj4gKyAqCj4+ICsg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgo+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4+ICsgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwKPj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4+ICsgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBG Uk9NLAo+PiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKPj4gKyAqIFNPRlRXQVJFLgo+PiArICov Cj4+ICsKPj4gKyNpZm5kZWYgX0dWVF9SRUdfSAo+PiArI2RlZmluZSBfR1ZUX1JFR19ICj4+ICsK Pj4gKyNkZWZpbmUgR1ZUX0NGR19TUEFDRV9TWgkyNTYKPj4gKyNkZWZpbmUgR1ZUX0JBUl9OVU0J CTQKPj4gKwo+PiArI2RlZmluZSBHVlRfUkVHX0NGR19TUEFDRV9CQVIwCTB4MTAKPj4gKyNkZWZp bmUgR1ZUX1JFR19DRkdfU1BBQ0VfQkFSMQkweDE4Cj4+ICsjZGVmaW5lIEdWVF9SRUdfQ0ZHX1NQ QUNFX0JBUjIJMHgyMAo+PiArCj4+ICsjZW5kaWYKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4+ IGluZGV4IDQ3MjVlOGQuLmVjYThlNTAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZG1hLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ PiBAQCAtOTQzLDYgKzk0MywxMCBAQCBpbnQgaTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+Pgo+PiAgIAlpbnRlbF91bmNvcmVfaW5p dChkZXYpOwo+Pgo+PiArCWRldl9wcml2LT52Z3B1Lmhvc3RfcHJpdmF0ZV9kYXRhID0gZ3Z0X2Ny ZWF0ZV9wZ3RfZGV2aWNlKGRldl9wcml2KTsKPj4gKwlpZihpbnRlbF9ndnRfaG9zdF9hY3RpdmUo ZGV2KSkKPj4gKwkJRFJNX0lORk8oIkdWVC1nIGlzIHJ1bm5pbmcgaW4gaG9zdCBtb2RlXG4iKTsK Pj4gKwo+PiAgIAlyZXQgPSBpOTE1X2dlbV9ndHRfaW5pdChkZXYpOwo+PiAgIAlpZiAocmV0KQo+ PiAgIAkJZ290byBvdXRfZnJlZWNzcjsKPj4gQEAgLTEwNjcsNiArMTA3MSwxMyBAQCBpbnQgaTkx NV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdz KQo+PiAgIAkJZ290byBvdXRfcG93ZXJfd2VsbDsKPj4gICAJfQo+Pgo+PiArCWlmIChpbnRlbF9n dnRfaG9zdF9hY3RpdmUoZGV2KSkgewo+PiArCQlpZiAoIWd2dF9wb3N0X2luaXRfcGd0X2Rldmlj ZShkZXZfcHJpdi0+dmdwdS5ob3N0X3ByaXZhdGVfZGF0YSkpIHsKPj4gKwkJCURSTV9FUlJPUigi ZmFpbGVkIHRvIHBvc3QgaW5pdCBwZ3QgZGV2aWNlXG4iKTsKPj4gKwkJCWdvdG8gb3V0X3Bvd2Vy X3dlbGw7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gICAJLyoKPj4gICAJICogTm90aWZ5IGEgdmFs aWQgc3VyZmFjZSBhZnRlciBtb2Rlc2V0dGluZywKPj4gICAJICogd2hlbiBydW5uaW5nIGluc2lk ZSBhIFZNLgo+PiBAQCAtMTExNyw2ICsxMTI4LDEwIEBAIG91dF9ndHQ6Cj4+ICAgCWk5MTVfZ2xv YmFsX2d0dF9jbGVhbnVwKGRldik7Cj4+ICAgb3V0X2ZyZWVjc3I6Cj4+ICAgCWludGVsX2Nzcl91 Y29kZV9maW5pKGRldl9wcml2KTsKPj4gKwlpZiAoaW50ZWxfZ3Z0X2hvc3RfYWN0aXZlKGRldikp IHsKPj4gKwkJZ3Z0X2Rlc3Ryb3lfcGd0X2RldmljZShkZXZfcHJpdi0+dmdwdS5ob3N0X3ByaXZh dGVfZGF0YSk7Cj4+ICsJCWRldl9wcml2LT52Z3B1Lmhvc3RfcHJpdmF0ZV9kYXRhID0gTlVMTDsK Pj4gKwl9Cj4+ICAgCWludGVsX3VuY29yZV9maW5pKGRldik7Cj4+ICAgCXBjaV9pb3VubWFwKGRl di0+cGRldiwgZGV2X3ByaXYtPnJlZ3MpOwo+PiAgIHB1dF9icmlkZ2U6Cj4+IEBAIC0xMTY1LDYg KzExODAsMTAgQEAgaW50IGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+Pgo+PiAgIAlpbnRlbF9tb2Rlc2V0X2NsZWFudXAoZGV2KTsKPj4KPj4gKwlpZiAoaW50ZWxf Z3Z0X2hvc3RfYWN0aXZlKGRldikpIHsKPj4gKwkJZ3Z0X2Rlc3Ryb3lfcGd0X2RldmljZShkZXZf cHJpdi0+dmdwdS5ob3N0X3ByaXZhdGVfZGF0YSk7Cj4+ICsJCWRldl9wcml2LT52Z3B1Lmhvc3Rf cHJpdmF0ZV9kYXRhID0gTlVMTDsKPj4gKwl9Cj4+ICAgCS8qCj4+ICAgCSAqIGZyZWUgdGhlIG1l bW9yeSBzcGFjZSBhbGxvY2F0ZWQgZm9yIHRoZSBjaGlsZCBkZXZpY2UKPj4gICAJICogY29uZmln IHBhcnNlZCBmcm9tIFZCVAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggMDFjYzk4 Mi4uZGIzYzc5YiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC0xNjczLDYg KzE2NzMsNyBAQCBzdHJ1Y3QgaTkxNV93b3JrYXJvdW5kcyB7Cj4+Cj4+ICAgc3RydWN0IGk5MTVf dmlydHVhbF9ncHUgewo+PiAgIAlib29sIGFjdGl2ZTsKPj4gKwl2b2lkICpob3N0X3ByaXZhdGVf ZGF0YTsKPj4gICB9Owo+Pgo+PiAgIHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zIHsKPj4g QEAgLTI3NDcsNiArMjc0OCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfdmdwdV9hY3Rp dmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gICAJcmV0dXJuIHRvX2k5MTUoZGV2KS0+dmdw dS5hY3RpdmU7Cj4+ICAgfQo+Pgo+PiArc3RhdGljIGlubGluZSBib29sIGludGVsX2d2dF9ob3N0 X2FjdGl2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiArewo+PiArCXJldHVybiB0b19pOTE1 KGRldiktPnZncHUuaG9zdF9wcml2YXRlX2RhdGEgPyB0cnVlIDogZmFsc2U7Cj4+ICt9Cj4+ICsK Pj4gICB2b2lkCj4+ICAgaTkxNV9lbmFibGVfcGlwZXN0YXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwKPj4gICAJCSAgICAgdTMyIHN0YXR1c19tYXNr KTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmgKPj4gaW5kZXggM2M4M2I0Ny4uOTQyNDkwYSAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmgKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmgKPj4gQEAgLTExMyw1ICsxMTMsOCBAQCBz dHJ1Y3Qgdmd0X2lmIHsKPj4gICBleHRlcm4gdm9pZCBpOTE1X2NoZWNrX3ZncHUoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4+ICAgZXh0ZXJuIGludCBpbnRlbF92Z3RfYmFsbG9vbihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPj4gICBleHRlcm4gdm9pZCBpbnRlbF92Z3RfZGViYWxsb29uKHZv aWQpOwo+PiArZXh0ZXJuIHZvaWQgKmd2dF9jcmVhdGVfcGd0X2RldmljZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiArZXh0ZXJuIGJvb2wgZ3Z0X3Bvc3RfaW5pdF9wZ3Rf ZGV2aWNlKHZvaWQgKnByaXZhdGVfZGF0YSk7Cj4+ICtleHRlcm4gdm9pZCBndnRfZGVzdHJveV9w Z3RfZGV2aWNlKHZvaWQgKnByaXZhdGVfZGF0YSk7Cj4+Cj4+ICAgI2VuZGlmIC8qIF9JOTE1X1ZH UFVfSF8gKi8KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2ludGVyZmFjZS94ZW4uaCBiL2lu Y2x1ZGUveGVuL2ludGVyZmFjZS94ZW4uaAo+PiBpbmRleCBkMTMzMTEyLi43OGEzOGYxIDEwMDY0 NAo+PiAtLS0gYS9pbmNsdWRlL3hlbi9pbnRlcmZhY2UveGVuLmgKPj4gKysrIGIvaW5jbHVkZS94 ZW4vaW50ZXJmYWNlL3hlbi5oCj4+IEBAIC0yOCw2ICsyOCw3IEBACj4+ICAgI2RlZmluZSBfX1hF Tl9QVUJMSUNfWEVOX0hfXwo+Pgo+PiAgICNpbmNsdWRlCj4+ICsjaW5jbHVkZQo+Pgo+PiAgIC8q Cj4+ICAgICogWEVOICJTWVNURU0gQ0FMTFMiIChhLmsuYS4gSFlQRVJDQUxMUykuCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==