From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kieran Bingham Subject: Re: [PATCH 15/15] v4l: vsp1: Rename BRU to BRx Date: Wed, 4 Apr 2018 17:23:52 +0100 Message-ID: <3557ae9d-035a-2fd1-3bde-34259d05abd8@ideasonboard.com> References: <20180226214516.11559-1-laurent.pinchart+renesas@ideasonboard.com> <20180226214516.11559-16-laurent.pinchart+renesas@ideasonboard.com> Reply-To: kieran.bingham@ideasonboard.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [185.26.127.97]) by gabe.freedesktop.org (Postfix) with ESMTPS id E02206E11A for ; Wed, 4 Apr 2018 16:23:56 +0000 (UTC) In-Reply-To: <20180226214516.11559-16-laurent.pinchart+renesas@ideasonboard.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart , linux-media@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgTGF1cmVudCwKCkFuZCBzbyAtIHRoZSBmaW5hbCBwYXRjaCAob2YgdGhlIHNlcmllcykKCk9u IDI2LzAyLzE4IDIxOjQ1LCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+IFNvbWUgVlNQIGluc3Rh bmNlcyBoYXZlIHR3byBibGVuZGluZyB1bml0cyBuYW1lZCBCUlUgKEJsZW5kL1JPUCBVbml0KQo+ IGFuZCBCUlMgKEJsZW5kL1JPUCBTdWIgdW5pdCkuIFRoZSBCUlMgaXMgYSBzbWFsbGVyIHZlcnNp b24gb2YgdGhlIEJSVQo+IHdpdGggb25seSB0d28gaW5wdXRzLCBidXQgb3RoZXJ3aXNlIG9mZmVy cyBzaW1pbGFyIGZlYXR1cmVzIGFuZCBvZmZlcnMKPiB0aGUgc2FtZSByZWdpc3RlciBpbnRlcmZh Y2UuIFRoZSBCUlUgYW5kIEJSUyBjYW4gYmUgdXNlZCBleGNoYW5nZWFibHkgaW4+IFZTUCBwaXBl bGluZXMgKHByb3ZpZGVkIG5vIG1vcmUgdGhhbiB0d28gaW5wdXRzIGFyZSBuZWVkZWQpLgo+IAo+ IER1ZSB0byBoaXN0b3JpY2FsIHJlYXNvbnMsIHRoZSBWU1AxIGRyaXZlciBpbXBsZW1lbnRzIHN1 cHBvcnQgZm9yIGJvdGgKPiB0aGUgQlJVIGFuZCBCUlMgdGhyb3VnaCBvYmplY3RzIG5hbWVkIHZz cDFfYnJ1LiBUaGUgY29kZSB1c2VzIHRoZSBuYW1lCj4gQlJVIHRvIHJlZmVyIHRvIGVpdGhlciB0 aGUgQlJVIG9yIHRoZSBCUlMsIGV4Y2VwdCBpbiBhIGZldyBwbGFjZXMgd2hlcmUKPiBub3RlZCBl eHBsaWNpdGx5LiBUaGlzIGNyZWF0ZXMgY29uZnVzaW9uLgo+IAo+IEluIGFuIGVmZm9ydCB0byBh dm9pZCBjb25mdXNpb24sIHJlbmFtZSB0aGUgdnNwMV9icnUgb2JqZWN0IGFuZCB0aGUKPiBjb3Jy ZXNwb25kaW5nIEFQSSB0byB2c3AxX2JyeCwgYW5kIHVzZSBCUnggdG8gcmVmZXIgdG8gYmxlbmQg dW5pdAo+IGluc3RhbmNlcyByZWdhcmRsZXNzIG9mIHRoZWlyIHR5cGUuIFRoZSBuYW1lcyBCUlUg YW5kIEJSUyBhcmUgcmV0YWluZWQKPiB3aGVyZSByZWZlcmVuY2UgdG8gYSBwYXJ0aWN1bGFyIGJs ZW5kIHVuaXQgdHlwZSBpcyBuZWVkZWQsIGFzIHdlbGwgYXMgaW4KPiBoYXJkd2FyZSByZWdpc3Rl cnMgdG8gc3RheSBjbG9zZSB0byB0aGUgZGF0YXNoZWV0Lgo+IAoKSSBmdWxseSBhcHByb3ZlIG9m IHRoaXMgY2hhbmdlLCB0aG91Z2ggSSBjYW4gc2VlIHRoZXJlIHdpbGwgYmUgc29tZSBjb25mbGlj dHMgLwpmaXh1cHMgbmVlZGVkIHdoZW4geW91IHJlYmFzZSB0aGlzIC0gYW5kIGRlcGVuZGluZyB1 cG9uIHdoZW4gb3RoZXIgc2VyaWVzIGdldCBpbi4KClRodXMgLSByYXRoZXIgdGhhbiBkbyBhIGZ1 bGwgcmV2aWV3LCBmb3Igbm93IEknbGwganVzdCBzYXk6CgpBY2tlZC1ieTogS2llcmFuIEJpbmdo YW0gPGtpZXJhbi5iaW5naGFtK3JlbmVzYXNAaWRlYXNvbmJvYXJkLmNvbT4KCj4gU2lnbmVkLW9m Zi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25i b2FyZC5jb20+CgoKCj4gLS0tCj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS9NYWtlZmls ZSAgICAgICAgICAgICAgIHwgICAyICstCj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92 c3AxLmggICAgICAgICAgICAgICAgIHwgICA2ICstCj4gIC4uLi9tZWRpYS9wbGF0Zm9ybS92c3Ax L3t2c3AxX2JydS5jID0+IHZzcDFfYnJ4LmN9IHwgMjAyICsrKysrKysrKystLS0tLS0tLS0tLQo+ ICAuLi4vbWVkaWEvcGxhdGZvcm0vdnNwMS97dnNwMV9icnUuaCA9PiB2c3AxX2JyeC5ofSB8ICAx OCArLQo+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9kcm0uYyAgICAgICAgICAg ICB8IDE3MiArKysrKysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3Ax L3ZzcDFfZHJtLmggICAgICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS92c3AxL3ZzcDFfZHJ2LmMgICAgICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS92c3AxL3ZzcDFfcGlwZS5jICAgICAgICAgICAgfCAgMTIgKy0KPiAgZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfcGlwZS5oICAgICAgICAgICAgfCAgIDQgKy0KPiAgZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfcnBmLmMgICAgICAgICAgICAgfCAgMTIgKy0K PiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfcndwZi5oICAgICAgICAgICAgfCAg IDIgKy0KPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfdmlkZW8uYyAgICAgICAg ICAgfCAgMTYgKy0KPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfd3BmLmMgICAg ICAgICAgICAgfCAgIDggKy0KPiAgMTMgZmlsZXMgY2hhbmdlZCwgMjMzIGluc2VydGlvbnMoKyks IDIzMyBkZWxldGlvbnMoLSkKPiAgcmVuYW1lIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS97 dnNwMV9icnUuYyA9PiB2c3AxX2JyeC5jfSAoNjMlKQo+ICByZW5hbWUgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS92c3AxL3t2c3AxX2JydS5oID0+IHZzcDFfYnJ4Lmh9ICg2NiUpCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS9NYWtlZmlsZSBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vdnNwMS9NYWtlZmlsZQo+IGluZGV4IGY1Y2Q2ZjA0OTFjYi4uNTk2Nzc1Zjkz MmMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS9NYWtlZmlsZQo+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS9NYWtlZmlsZQo+IEBAIC0zLDcgKzMs NyBAQCB2c3AxLXkJCQkJCTo9IHZzcDFfZHJ2Lm8gdnNwMV9lbnRpdHkubyB2c3AxX3BpcGUubwo+ ICB2c3AxLXkJCQkJCSs9IHZzcDFfZGwubyB2c3AxX2RybS5vIHZzcDFfdmlkZW8ubwo+ICB2c3Ax LXkJCQkJCSs9IHZzcDFfcnBmLm8gdnNwMV9yd3BmLm8gdnNwMV93cGYubwo+ICB2c3AxLXkJCQkJ CSs9IHZzcDFfY2x1Lm8gdnNwMV9oc2l0Lm8gdnNwMV9sdXQubwo+IC12c3AxLXkJCQkJCSs9IHZz cDFfYnJ1Lm8gdnNwMV9zcnUubyB2c3AxX3Vkcy5vCj4gK3ZzcDEteQkJCQkJKz0gdnNwMV9icngu byB2c3AxX3NydS5vIHZzcDFfdWRzLm8KPiAgdnNwMS15CQkJCQkrPSB2c3AxX2hnby5vIHZzcDFf aGd0Lm8gdnNwMV9oaXN0by5vCj4gIHZzcDEteQkJCQkJKz0gdnNwMV9saWYubwo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDEuaCBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vdnNwMS92c3AxLmgKPiBpbmRleCA3OGVmODM4NDE2YjMuLjg5NGNjNzI1YzJk NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMS5oCj4gKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDEuaAo+IEBAIC0zMCw3ICszMCw3IEBA IHN0cnVjdCByY2FyX2ZjcF9kZXZpY2U7Cj4gIHN0cnVjdCB2c3AxX2RybTsKPiAgc3RydWN0IHZz cDFfZW50aXR5Owo+ICBzdHJ1Y3QgdnNwMV9wbGF0Zm9ybV9kYXRhOwo+IC1zdHJ1Y3QgdnNwMV9i cnU7Cj4gK3N0cnVjdCB2c3AxX2JyeDsKPiAgc3RydWN0IHZzcDFfY2x1Owo+ICBzdHJ1Y3QgdnNw MV9oZ287Cj4gIHN0cnVjdCB2c3AxX2hndDsKPiBAQCAtNzgsOCArNzgsOCBAQCBzdHJ1Y3QgdnNw MV9kZXZpY2Ugewo+ICAJc3RydWN0IHJjYXJfZmNwX2RldmljZSAqZmNwOwo+ICAJc3RydWN0IGRl dmljZSAqYnVzX21hc3RlcjsKPiAgCj4gLQlzdHJ1Y3QgdnNwMV9icnUgKmJyczsKPiAtCXN0cnVj dCB2c3AxX2JydSAqYnJ1Owo+ICsJc3RydWN0IHZzcDFfYnJ4ICpicnM7Cj4gKwlzdHJ1Y3QgdnNw MV9icnggKmJydTsKPiAgCXN0cnVjdCB2c3AxX2NsdSAqY2x1Owo+ICAJc3RydWN0IHZzcDFfaGdv ICpoZ287Cj4gIAlzdHJ1Y3QgdnNwMV9oZ3QgKmhndDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfYnJ1LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zz cDEvdnNwMV9icnguYwo+IHNpbWlsYXJpdHkgaW5kZXggNjMlCj4gcmVuYW1lIGZyb20gZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfYnJ1LmMKPiByZW5hbWUgdG8gZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS92c3AxL3ZzcDFfYnJ4LmMKPiBpbmRleCBlOGZkMmFlM2IzZWIuLmI0YWYxZDU0 NjAyMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9icnUu Ywo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2JyeC5jCj4gQEAgLTEs NSArMSw1IEBACj4gIC8qCj4gLSAqIHZzcDFfYnJ1LmMgIC0tICBSLUNhciBWU1AxIEJsZW5kIFJP UCBVbml0Cj4gKyAqIHZzcDFfYnJ4LmMgIC0tICBSLUNhciBWU1AxIEJsZW5kIFJPUCBVbml0IChC UlUgYW5kIEJSUykKPiAgICoKPiAgICogQ29weXJpZ2h0IChDKSAyMDEzIFJlbmVzYXMgQ29ycG9y YXRpb24KPiAgICoKPiBAQCAtMTcsNDUgKzE3LDQ1IEBACj4gICNpbmNsdWRlIDxtZWRpYS92NGwy LXN1YmRldi5oPgo+ICAKPiAgI2luY2x1ZGUgInZzcDEuaCIKPiAtI2luY2x1ZGUgInZzcDFfYnJ1 LmgiCj4gKyNpbmNsdWRlICJ2c3AxX2JyeC5oIgo+ICAjaW5jbHVkZSAidnNwMV9kbC5oIgo+ICAj aW5jbHVkZSAidnNwMV9waXBlLmgiCj4gICNpbmNsdWRlICJ2c3AxX3J3cGYuaCIKPiAgI2luY2x1 ZGUgInZzcDFfdmlkZW8uaCIKPiAgCj4gLSNkZWZpbmUgQlJVX01JTl9TSVpFCQkJCTFVCj4gLSNk ZWZpbmUgQlJVX01BWF9TSVpFCQkJCTgxOTBVCj4gKyNkZWZpbmUgQlJYX01JTl9TSVpFCQkJCTFV Cj4gKyNkZWZpbmUgQlJYX01BWF9TSVpFCQkJCTgxOTBVCj4gIAo+ICAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ICAgKiBEZXZpY2UgQWNjZXNzCj4gICAqLwo+ICAKPiAtc3RhdGljIGlubGluZSB2 b2lkIHZzcDFfYnJ1X3dyaXRlKHN0cnVjdCB2c3AxX2JydSAqYnJ1LCBzdHJ1Y3QgdnNwMV9kbF9s aXN0ICpkbCwKPiArc3RhdGljIGlubGluZSB2b2lkIHZzcDFfYnJ4X3dyaXRlKHN0cnVjdCB2c3Ax X2JyeCAqYnJ4LCBzdHJ1Y3QgdnNwMV9kbF9saXN0ICpkbCwKPiAgCQkJCSAgdTMyIHJlZywgdTMy IGRhdGEpCj4gIHsKPiAtCXZzcDFfZGxfbGlzdF93cml0ZShkbCwgYnJ1LT5iYXNlICsgcmVnLCBk YXRhKTsKPiArCXZzcDFfZGxfbGlzdF93cml0ZShkbCwgYnJ4LT5iYXNlICsgcmVnLCBkYXRhKTsK PiAgfQo+ICAKPiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgICogQ29udHJvbHMKPiAgICov Cj4gIAo+IC1zdGF0aWMgaW50IGJydV9zX2N0cmwoc3RydWN0IHY0bDJfY3RybCAqY3RybCkKPiAr c3RhdGljIGludCBicnhfc19jdHJsKHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpCj4gIHsKPiAtCXN0 cnVjdCB2c3AxX2JydSAqYnJ1ID0KPiAtCQljb250YWluZXJfb2YoY3RybC0+aGFuZGxlciwgc3Ry dWN0IHZzcDFfYnJ1LCBjdHJscyk7Cj4gKwlzdHJ1Y3QgdnNwMV9icnggKmJyeCA9Cj4gKwkJY29u dGFpbmVyX29mKGN0cmwtPmhhbmRsZXIsIHN0cnVjdCB2c3AxX2JyeCwgY3RybHMpOwo+ICAKPiAg CXN3aXRjaCAoY3RybC0+aWQpIHsKPiAgCWNhc2UgVjRMMl9DSURfQkdfQ09MT1I6Cj4gLQkJYnJ1 LT5iZ2NvbG9yID0gY3RybC0+dmFsOwo+ICsJCWJyeC0+Ymdjb2xvciA9IGN0cmwtPnZhbDsKPiAg CQlicmVhazsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGNvbnN0 IHN0cnVjdCB2NGwyX2N0cmxfb3BzIGJydV9jdHJsX29wcyA9IHsKPiAtCS5zX2N0cmwgPSBicnVf c19jdHJsLAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgYnJ4X2N0cmxfb3Bz ID0gewo+ICsJLnNfY3RybCA9IGJyeF9zX2N0cmwsCj4gIH07Cj4gIAo+ICAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+IEBAIC02MywxMiArNjMsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwy X2N0cmxfb3BzIGJydV9jdHJsX29wcyA9IHsKPiAgICovCj4gIAo+ICAvKgo+IC0gKiBUaGUgQlJV IGNhbid0IHBlcmZvcm0gZm9ybWF0IGNvbnZlcnNpb24sIGFsbCBzaW5rIGFuZCBzb3VyY2UgZm9y bWF0cyBtdXN0IGJlCj4gKyAqIFRoZSBCUnggY2FuJ3QgcGVyZm9ybSBmb3JtYXQgY29udmVyc2lv biwgYWxsIHNpbmsgYW5kIHNvdXJjZSBmb3JtYXRzIG11c3QgYmUKPiAgICogaWRlbnRpY2FsLiBX ZSBwaWNrIHRoZSBmb3JtYXQgb24gdGhlIGZpcnN0IHNpbmsgcGFkIChwYWQgMCkgYW5kIHByb3Bh Z2F0ZSBpdAo+ICAgKiB0byBhbGwgb3RoZXIgcGFkcy4KPiAgICovCj4gIAo+IC1zdGF0aWMgaW50 IGJydV9lbnVtX21idXNfY29kZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiArc3RhdGlj IGludCBicnhfZW51bV9tYnVzX2NvZGUoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAkJ CSAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsCj4gIAkJCSAgICAgIHN0 cnVjdCB2NGwyX3N1YmRldl9tYnVzX2NvZGVfZW51bSAqY29kZSkKPiAgewo+IEBAIC04MSw3ICs4 MSw3IEBAIHN0YXRpYyBpbnQgYnJ1X2VudW1fbWJ1c19jb2RlKHN0cnVjdCB2NGwyX3N1YmRldiAq c3ViZGV2LAo+ICAJCQkJCSAgQVJSQVlfU0laRShjb2RlcykpOwo+ICB9Cj4gIAo+IC1zdGF0aWMg aW50IGJydV9lbnVtX2ZyYW1lX3NpemUoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gK3N0 YXRpYyBpbnQgYnJ4X2VudW1fZnJhbWVfc2l6ZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwK PiAgCQkJICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsCj4gIAkJCSAg ICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZnJhbWVfc2l6ZV9lbnVtICpmc2UpCj4gIHsKPiBAQCAt OTIsMjkgKzkyLDI5IEBAIHN0YXRpYyBpbnQgYnJ1X2VudW1fZnJhbWVfc2l6ZShzdHJ1Y3QgdjRs Ml9zdWJkZXYgKnN1YmRldiwKPiAgCSAgICBmc2UtPmNvZGUgIT0gTUVESUFfQlVTX0ZNVF9BWVVW OF8xWDMyKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCWZzZS0+bWluX3dpZHRoID0gQlJV X01JTl9TSVpFOwo+IC0JZnNlLT5tYXhfd2lkdGggPSBCUlVfTUFYX1NJWkU7Cj4gLQlmc2UtPm1p bl9oZWlnaHQgPSBCUlVfTUlOX1NJWkU7Cj4gLQlmc2UtPm1heF9oZWlnaHQgPSBCUlVfTUFYX1NJ WkU7Cj4gKwlmc2UtPm1pbl93aWR0aCA9IEJSWF9NSU5fU0laRTsKPiArCWZzZS0+bWF4X3dpZHRo ID0gQlJYX01BWF9TSVpFOwo+ICsJZnNlLT5taW5faGVpZ2h0ID0gQlJYX01JTl9TSVpFOwo+ICsJ ZnNlLT5tYXhfaGVpZ2h0ID0gQlJYX01BWF9TSVpFOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4g IAo+IC1zdGF0aWMgc3RydWN0IHY0bDJfcmVjdCAqYnJ1X2dldF9jb21wb3NlKHN0cnVjdCB2c3Ax X2JydSAqYnJ1LAo+ICtzdGF0aWMgc3RydWN0IHY0bDJfcmVjdCAqYnJ4X2dldF9jb21wb3NlKHN0 cnVjdCB2c3AxX2JyeCAqYnJ4LAo+ICAJCQkJCSBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2NvbmZp ZyAqY2ZnLAo+ICAJCQkJCSB1bnNpZ25lZCBpbnQgcGFkKQo+ICB7Cj4gLQlyZXR1cm4gdjRsMl9z dWJkZXZfZ2V0X3RyeV9jb21wb3NlKCZicnUtPmVudGl0eS5zdWJkZXYsIGNmZywgcGFkKTsKPiAr CXJldHVybiB2NGwyX3N1YmRldl9nZXRfdHJ5X2NvbXBvc2UoJmJyeC0+ZW50aXR5LnN1YmRldiwg Y2ZnLCBwYWQpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBicnVfdHJ5X2Zvcm1hdChzdHJ1Y3Qg dnNwMV9icnUgKmJydSwKPiArc3RhdGljIHZvaWQgYnJ4X3RyeV9mb3JtYXQoc3RydWN0IHZzcDFf YnJ4ICpicngsCj4gIAkJCSAgIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjb25maWcs Cj4gIAkJCSAgIHVuc2lnbmVkIGludCBwYWQsIHN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKmZt dCkKPiAgewo+ICAJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqZm9ybWF0Owo+ICAKPiAgCXN3 aXRjaCAocGFkKSB7Cj4gLQljYXNlIEJSVV9QQURfU0lOSygwKToKPiArCWNhc2UgQlJYX1BBRF9T SU5LKDApOgo+ICAJCS8qIERlZmF1bHQgdG8gWVVWIGlmIHRoZSByZXF1ZXN0ZWQgZm9ybWF0IGlz IG5vdCBzdXBwb3J0ZWQuICovCj4gIAkJaWYgKGZtdC0+Y29kZSAhPSBNRURJQV9CVVNfRk1UX0FS R0I4ODg4XzFYMzIgJiYKPiAgCQkgICAgZm10LT5jb2RlICE9IE1FRElBX0JVU19GTVRfQVlVVjhf MVgzMikKPiBAQCAtMTIyLDQ2ICsxMjIsNDYgQEAgc3RhdGljIHZvaWQgYnJ1X3RyeV9mb3JtYXQo c3RydWN0IHZzcDFfYnJ1ICpicnUsCj4gIAkJYnJlYWs7Cj4gIAo+ICAJZGVmYXVsdDoKPiAtCQkv KiBUaGUgQlJVIGNhbid0IHBlcmZvcm0gZm9ybWF0IGNvbnZlcnNpb24uICovCj4gLQkJZm9ybWF0 ID0gdnNwMV9lbnRpdHlfZ2V0X3BhZF9mb3JtYXQoJmJydS0+ZW50aXR5LCBjb25maWcsCj4gLQkJ CQkJCSAgICBCUlVfUEFEX1NJTksoMCkpOwo+ICsJCS8qIFRoZSBCUnggY2FuJ3QgcGVyZm9ybSBm b3JtYXQgY29udmVyc2lvbi4gKi8KPiArCQlmb3JtYXQgPSB2c3AxX2VudGl0eV9nZXRfcGFkX2Zv cm1hdCgmYnJ4LT5lbnRpdHksIGNvbmZpZywKPiArCQkJCQkJICAgIEJSWF9QQURfU0lOSygwKSk7 Cj4gIAkJZm10LT5jb2RlID0gZm9ybWF0LT5jb2RlOwo+ICAJCWJyZWFrOwo+ICAJfQo+ICAKPiAt CWZtdC0+d2lkdGggPSBjbGFtcChmbXQtPndpZHRoLCBCUlVfTUlOX1NJWkUsIEJSVV9NQVhfU0la RSk7Cj4gLQlmbXQtPmhlaWdodCA9IGNsYW1wKGZtdC0+aGVpZ2h0LCBCUlVfTUlOX1NJWkUsIEJS VV9NQVhfU0laRSk7Cj4gKwlmbXQtPndpZHRoID0gY2xhbXAoZm10LT53aWR0aCwgQlJYX01JTl9T SVpFLCBCUlhfTUFYX1NJWkUpOwo+ICsJZm10LT5oZWlnaHQgPSBjbGFtcChmbXQtPmhlaWdodCwg QlJYX01JTl9TSVpFLCBCUlhfTUFYX1NJWkUpOwo+ICAJZm10LT5maWVsZCA9IFY0TDJfRklFTERf Tk9ORTsKPiAgCWZtdC0+Y29sb3JzcGFjZSA9IFY0TDJfQ09MT1JTUEFDRV9TUkdCOwo+ICB9Cj4g IAo+IC1zdGF0aWMgaW50IGJydV9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2 LAo+ICtzdGF0aWMgaW50IGJyeF9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2 LAo+ICAJCQkgIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsCj4gIAkJCSAgc3Ry dWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCAqZm10KQo+ICB7Cj4gLQlzdHJ1Y3QgdnNwMV9icnUgKmJy dSA9IHRvX2JydShzdWJkZXYpOwo+ICsJc3RydWN0IHZzcDFfYnJ4ICpicnggPSB0b19icngoc3Vi ZGV2KTsKPiAgCXN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjb25maWc7Cj4gIAlzdHJ1 Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmb3JtYXQ7Cj4gIAlpbnQgcmV0ID0gMDsKPiAgCj4gLQlt dXRleF9sb2NrKCZicnUtPmVudGl0eS5sb2NrKTsKPiArCW11dGV4X2xvY2soJmJyeC0+ZW50aXR5 LmxvY2spOwo+ICAKPiAtCWNvbmZpZyA9IHZzcDFfZW50aXR5X2dldF9wYWRfY29uZmlnKCZicnUt PmVudGl0eSwgY2ZnLCBmbXQtPndoaWNoKTsKPiArCWNvbmZpZyA9IHZzcDFfZW50aXR5X2dldF9w YWRfY29uZmlnKCZicngtPmVudGl0eSwgY2ZnLCBmbXQtPndoaWNoKTsKPiAgCWlmICghY29uZmln KSB7Cj4gIAkJcmV0ID0gLUVJTlZBTDsKPiAgCQlnb3RvIGRvbmU7Cj4gIAl9Cj4gIAo+IC0JYnJ1 X3RyeV9mb3JtYXQoYnJ1LCBjb25maWcsIGZtdC0+cGFkLCAmZm10LT5mb3JtYXQpOwo+ICsJYnJ4 X3RyeV9mb3JtYXQoYnJ4LCBjb25maWcsIGZtdC0+cGFkLCAmZm10LT5mb3JtYXQpOwo+ICAKPiAt CWZvcm1hdCA9IHZzcDFfZW50aXR5X2dldF9wYWRfZm9ybWF0KCZicnUtPmVudGl0eSwgY29uZmln LCBmbXQtPnBhZCk7Cj4gKwlmb3JtYXQgPSB2c3AxX2VudGl0eV9nZXRfcGFkX2Zvcm1hdCgmYnJ4 LT5lbnRpdHksIGNvbmZpZywgZm10LT5wYWQpOwo+ICAJKmZvcm1hdCA9IGZtdC0+Zm9ybWF0Owo+ ICAKPiAgCS8qIFJlc2V0IHRoZSBjb21wb3NlIHJlY3RhbmdsZSAqLwo+IC0JaWYgKGZtdC0+cGFk ICE9IGJydS0+ZW50aXR5LnNvdXJjZV9wYWQpIHsKPiArCWlmIChmbXQtPnBhZCAhPSBicngtPmVu dGl0eS5zb3VyY2VfcGFkKSB7Cj4gIAkJc3RydWN0IHY0bDJfcmVjdCAqY29tcG9zZTsKPiAgCj4g LQkJY29tcG9zZSA9IGJydV9nZXRfY29tcG9zZShicnUsIGNvbmZpZywgZm10LT5wYWQpOwo+ICsJ CWNvbXBvc2UgPSBicnhfZ2V0X2NvbXBvc2UoYnJ4LCBjb25maWcsIGZtdC0+cGFkKTsKPiAgCQlj b21wb3NlLT5sZWZ0ID0gMDsKPiAgCQljb21wb3NlLT50b3AgPSAwOwo+ICAJCWNvbXBvc2UtPndp ZHRoID0gZm9ybWF0LT53aWR0aDsKPiBAQCAtMTY5LDQ4ICsxNjksNDggQEAgc3RhdGljIGludCBi cnVfc2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiAgCX0KPiAgCj4gIAkv KiBQcm9wYWdhdGUgdGhlIGZvcm1hdCBjb2RlIHRvIGFsbCBwYWRzICovCj4gLQlpZiAoZm10LT5w YWQgPT0gQlJVX1BBRF9TSU5LKDApKSB7Cj4gKwlpZiAoZm10LT5wYWQgPT0gQlJYX1BBRF9TSU5L KDApKSB7Cj4gIAkJdW5zaWduZWQgaW50IGk7Cj4gIAo+IC0JCWZvciAoaSA9IDA7IGkgPD0gYnJ1 LT5lbnRpdHkuc291cmNlX3BhZDsgKytpKSB7Cj4gLQkJCWZvcm1hdCA9IHZzcDFfZW50aXR5X2dl dF9wYWRfZm9ybWF0KCZicnUtPmVudGl0eSwKPiArCQlmb3IgKGkgPSAwOyBpIDw9IGJyeC0+ZW50 aXR5LnNvdXJjZV9wYWQ7ICsraSkgewo+ICsJCQlmb3JtYXQgPSB2c3AxX2VudGl0eV9nZXRfcGFk X2Zvcm1hdCgmYnJ4LT5lbnRpdHksCj4gIAkJCQkJCQkgICAgY29uZmlnLCBpKTsKPiAgCQkJZm9y bWF0LT5jb2RlID0gZm10LT5mb3JtYXQuY29kZTsKPiAgCQl9Cj4gIAl9Cj4gIAo+ICBkb25lOgo+ IC0JbXV0ZXhfdW5sb2NrKCZicnUtPmVudGl0eS5sb2NrKTsKPiArCW11dGV4X3VubG9jaygmYnJ4 LT5lbnRpdHkubG9jayk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGJy dV9nZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ICtzdGF0aWMgaW50 IGJyeF9nZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ICAJCQkgICAg IHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsCj4gIAkJCSAgICAgc3RydWN0IHY0 bDJfc3ViZGV2X3NlbGVjdGlvbiAqc2VsKQo+ICB7Cj4gLQlzdHJ1Y3QgdnNwMV9icnUgKmJydSA9 IHRvX2JydShzdWJkZXYpOwo+ICsJc3RydWN0IHZzcDFfYnJ4ICpicnggPSB0b19icngoc3ViZGV2 KTsKPiAgCXN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjb25maWc7Cj4gIAo+IC0JaWYg KHNlbC0+cGFkID09IGJydS0+ZW50aXR5LnNvdXJjZV9wYWQpCj4gKwlpZiAoc2VsLT5wYWQgPT0g YnJ4LT5lbnRpdHkuc291cmNlX3BhZCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAlzd2l0 Y2ggKHNlbC0+dGFyZ2V0KSB7Cj4gIAljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFX0JPVU5EUzoK PiAgCQlzZWwtPnIubGVmdCA9IDA7Cj4gIAkJc2VsLT5yLnRvcCA9IDA7Cj4gLQkJc2VsLT5yLndp ZHRoID0gQlJVX01BWF9TSVpFOwo+IC0JCXNlbC0+ci5oZWlnaHQgPSBCUlVfTUFYX1NJWkU7Cj4g KwkJc2VsLT5yLndpZHRoID0gQlJYX01BWF9TSVpFOwo+ICsJCXNlbC0+ci5oZWlnaHQgPSBCUlhf TUFYX1NJWkU7Cj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJY2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9T RToKPiAtCQljb25maWcgPSB2c3AxX2VudGl0eV9nZXRfcGFkX2NvbmZpZygmYnJ1LT5lbnRpdHks IGNmZywKPiArCQljb25maWcgPSB2c3AxX2VudGl0eV9nZXRfcGFkX2NvbmZpZygmYnJ4LT5lbnRp dHksIGNmZywKPiAgCQkJCQkJICAgIHNlbC0+d2hpY2gpOwo+ICAJCWlmICghY29uZmlnKQo+ICAJ CQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQkJbXV0ZXhfbG9jaygmYnJ1LT5lbnRpdHkubG9jayk7 Cj4gLQkJc2VsLT5yID0gKmJydV9nZXRfY29tcG9zZShicnUsIGNvbmZpZywgc2VsLT5wYWQpOwo+ IC0JCW11dGV4X3VubG9jaygmYnJ1LT5lbnRpdHkubG9jayk7Cj4gKwkJbXV0ZXhfbG9jaygmYnJ4 LT5lbnRpdHkubG9jayk7Cj4gKwkJc2VsLT5yID0gKmJyeF9nZXRfY29tcG9zZShicngsIGNvbmZp Zywgc2VsLT5wYWQpOwo+ICsJCW11dGV4X3VubG9jaygmYnJ4LT5lbnRpdHkubG9jayk7Cj4gIAkJ cmV0dXJuIDA7Cj4gIAo+ICAJZGVmYXVsdDoKPiBAQCAtMjE4LDI1ICsyMTgsMjUgQEAgc3RhdGlj IGludCBicnVfZ2V0X3NlbGVjdGlvbihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiAgCX0K PiAgfQo+ICAKPiAtc3RhdGljIGludCBicnVfc2V0X3NlbGVjdGlvbihzdHJ1Y3QgdjRsMl9zdWJk ZXYgKnN1YmRldiwKPiArc3RhdGljIGludCBicnhfc2V0X3NlbGVjdGlvbihzdHJ1Y3QgdjRsMl9z dWJkZXYgKnN1YmRldiwKPiAgCQkJICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2NvbmZpZyAq Y2ZnLAo+ICAJCQkgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9zZWxlY3Rpb24gKnNlbCkKPiAgewo+ IC0Jc3RydWN0IHZzcDFfYnJ1ICpicnUgPSB0b19icnUoc3ViZGV2KTsKPiArCXN0cnVjdCB2c3Ax X2JyeCAqYnJ4ID0gdG9fYnJ4KHN1YmRldik7Cj4gIAlzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2Nv bmZpZyAqY29uZmlnOwo+ICAJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqZm9ybWF0Owo+ICAJ c3RydWN0IHY0bDJfcmVjdCAqY29tcG9zZTsKPiAgCWludCByZXQgPSAwOwo+ICAKPiAtCWlmIChz ZWwtPnBhZCA9PSBicnUtPmVudGl0eS5zb3VyY2VfcGFkKQo+ICsJaWYgKHNlbC0+cGFkID09IGJy eC0+ZW50aXR5LnNvdXJjZV9wYWQpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJaWYgKHNl bC0+dGFyZ2V0ICE9IFY0TDJfU0VMX1RHVF9DT01QT1NFKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ ICAKPiAtCW11dGV4X2xvY2soJmJydS0+ZW50aXR5LmxvY2spOwo+ICsJbXV0ZXhfbG9jaygmYnJ4 LT5lbnRpdHkubG9jayk7Cj4gIAo+IC0JY29uZmlnID0gdnNwMV9lbnRpdHlfZ2V0X3BhZF9jb25m aWcoJmJydS0+ZW50aXR5LCBjZmcsIHNlbC0+d2hpY2gpOwo+ICsJY29uZmlnID0gdnNwMV9lbnRp dHlfZ2V0X3BhZF9jb25maWcoJmJyeC0+ZW50aXR5LCBjZmcsIHNlbC0+d2hpY2gpOwo+ICAJaWYg KCFjb25maWcpIHsKPiAgCQlyZXQgPSAtRUlOVkFMOwo+ICAJCWdvdG8gZG9uZTsKPiBAQCAtMjQ2 LDggKzI0Niw4IEBAIHN0YXRpYyBpbnQgYnJ1X3NldF9zZWxlY3Rpb24oc3RydWN0IHY0bDJfc3Vi ZGV2ICpzdWJkZXYsCj4gIAkgKiBUaGUgY29tcG9zZSByZWN0YW5nbGUgdG9wIGxlZnQgY29ybmVy IG11c3QgYmUgaW5zaWRlIHRoZSBvdXRwdXQKPiAgCSAqIGZyYW1lLgo+ICAJICovCj4gLQlmb3Jt YXQgPSB2c3AxX2VudGl0eV9nZXRfcGFkX2Zvcm1hdCgmYnJ1LT5lbnRpdHksIGNvbmZpZywKPiAt CQkJCQkgICAgYnJ1LT5lbnRpdHkuc291cmNlX3BhZCk7Cj4gKwlmb3JtYXQgPSB2c3AxX2VudGl0 eV9nZXRfcGFkX2Zvcm1hdCgmYnJ4LT5lbnRpdHksIGNvbmZpZywKPiArCQkJCQkgICAgYnJ4LT5l bnRpdHkuc291cmNlX3BhZCk7Cj4gIAlzZWwtPnIubGVmdCA9IGNsYW1wX3QodW5zaWduZWQgaW50 LCBzZWwtPnIubGVmdCwgMCwgZm9ybWF0LT53aWR0aCAtIDEpOwo+ICAJc2VsLT5yLnRvcCA9IGNs YW1wX3QodW5zaWduZWQgaW50LCBzZWwtPnIudG9wLCAwLCBmb3JtYXQtPmhlaWdodCAtIDEpOwo+ ICAKPiBAQCAtMjU1LDQyICsyNTUsNDIgQEAgc3RhdGljIGludCBicnVfc2V0X3NlbGVjdGlvbihz dHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiAgCSAqIFNjYWxpbmcgaXNuJ3Qgc3VwcG9ydGVk LCB0aGUgY29tcG9zZSByZWN0YW5nbGUgc2l6ZSBtdXN0IGJlIGlkZW50aWNhbAo+ICAJICogdG8g dGhlIHNpbmsgZm9ybWF0IHNpemUuCj4gIAkgKi8KPiAtCWZvcm1hdCA9IHZzcDFfZW50aXR5X2dl dF9wYWRfZm9ybWF0KCZicnUtPmVudGl0eSwgY29uZmlnLCBzZWwtPnBhZCk7Cj4gKwlmb3JtYXQg PSB2c3AxX2VudGl0eV9nZXRfcGFkX2Zvcm1hdCgmYnJ4LT5lbnRpdHksIGNvbmZpZywgc2VsLT5w YWQpOwo+ICAJc2VsLT5yLndpZHRoID0gZm9ybWF0LT53aWR0aDsKPiAgCXNlbC0+ci5oZWlnaHQg PSBmb3JtYXQtPmhlaWdodDsKPiAgCj4gLQljb21wb3NlID0gYnJ1X2dldF9jb21wb3NlKGJydSwg Y29uZmlnLCBzZWwtPnBhZCk7Cj4gKwljb21wb3NlID0gYnJ4X2dldF9jb21wb3NlKGJyeCwgY29u ZmlnLCBzZWwtPnBhZCk7Cj4gIAkqY29tcG9zZSA9IHNlbC0+cjsKPiAgCj4gIGRvbmU6Cj4gLQlt dXRleF91bmxvY2soJmJydS0+ZW50aXR5LmxvY2spOwo+ICsJbXV0ZXhfdW5sb2NrKCZicngtPmVu dGl0eS5sb2NrKTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgdjRsMl9zdWJkZXZfcGFkX29wcyBicnVfcGFkX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCB2NGwyX3N1YmRldl9wYWRfb3BzIGJyeF9wYWRfb3BzID0gewo+ICAJLmluaXRfY2ZnID0g dnNwMV9lbnRpdHlfaW5pdF9jZmcsCj4gLQkuZW51bV9tYnVzX2NvZGUgPSBicnVfZW51bV9tYnVz X2NvZGUsCj4gLQkuZW51bV9mcmFtZV9zaXplID0gYnJ1X2VudW1fZnJhbWVfc2l6ZSwKPiArCS5l bnVtX21idXNfY29kZSA9IGJyeF9lbnVtX21idXNfY29kZSwKPiArCS5lbnVtX2ZyYW1lX3NpemUg PSBicnhfZW51bV9mcmFtZV9zaXplLAo+ICAJLmdldF9mbXQgPSB2c3AxX3N1YmRldl9nZXRfcGFk X2Zvcm1hdCwKPiAtCS5zZXRfZm10ID0gYnJ1X3NldF9mb3JtYXQsCj4gLQkuZ2V0X3NlbGVjdGlv biA9IGJydV9nZXRfc2VsZWN0aW9uLAo+IC0JLnNldF9zZWxlY3Rpb24gPSBicnVfc2V0X3NlbGVj dGlvbiwKPiArCS5zZXRfZm10ID0gYnJ4X3NldF9mb3JtYXQsCj4gKwkuZ2V0X3NlbGVjdGlvbiA9 IGJyeF9nZXRfc2VsZWN0aW9uLAo+ICsJLnNldF9zZWxlY3Rpb24gPSBicnhfc2V0X3NlbGVjdGlv biwKPiAgfTsKPiAgCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfb3BzIGJydV9v cHMgPSB7Cj4gLQkucGFkICAgID0gJmJydV9wYWRfb3BzLAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHY0bDJfc3ViZGV2X29wcyBicnhfb3BzID0gewo+ICsJLnBhZCAgICA9ICZicnhfcGFkX29wcywK PiAgfTsKPiAgCj4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICAqIFZTUDEgRW50aXR5IE9w ZXJhdGlvbnMKPiAgICovCj4gIAo+IC1zdGF0aWMgdm9pZCBicnVfY29uZmlndXJlKHN0cnVjdCB2 c3AxX2VudGl0eSAqZW50aXR5LAo+ICtzdGF0aWMgdm9pZCBicnhfY29uZmlndXJlKHN0cnVjdCB2 c3AxX2VudGl0eSAqZW50aXR5LAo+ICAJCQkgIHN0cnVjdCB2c3AxX3BpcGVsaW5lICpwaXBlLAo+ ICAJCQkgIHN0cnVjdCB2c3AxX2RsX2xpc3QgKmRsLAo+ICAJCQkgIGVudW0gdnNwMV9lbnRpdHlf cGFyYW1zIHBhcmFtcykKPiAgewo+IC0Jc3RydWN0IHZzcDFfYnJ1ICpicnUgPSB0b19icnUoJmVu dGl0eS0+c3ViZGV2KTsKPiArCXN0cnVjdCB2c3AxX2JyeCAqYnJ4ID0gdG9fYnJ4KCZlbnRpdHkt PnN1YmRldik7Cj4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmb3JtYXQ7Cj4gIAl1bnNp Z25lZCBpbnQgZmxhZ3M7Cj4gIAl1bnNpZ25lZCBpbnQgaTsKPiBAQCAtMjk4LDggKzI5OCw4IEBA IHN0YXRpYyB2b2lkIGJydV9jb25maWd1cmUoc3RydWN0IHZzcDFfZW50aXR5ICplbnRpdHksCj4g IAlpZiAocGFyYW1zICE9IFZTUDFfRU5USVRZX1BBUkFNU19JTklUKQo+ICAJCXJldHVybjsKPiAg Cj4gLQlmb3JtYXQgPSB2c3AxX2VudGl0eV9nZXRfcGFkX2Zvcm1hdCgmYnJ1LT5lbnRpdHksIGJy dS0+ZW50aXR5LmNvbmZpZywKPiAtCQkJCQkgICAgYnJ1LT5lbnRpdHkuc291cmNlX3BhZCk7Cj4g Kwlmb3JtYXQgPSB2c3AxX2VudGl0eV9nZXRfcGFkX2Zvcm1hdCgmYnJ4LT5lbnRpdHksIGJyeC0+ ZW50aXR5LmNvbmZpZywKPiArCQkJCQkgICAgYnJ4LT5lbnRpdHkuc291cmNlX3BhZCk7Cj4gIAo+ ICAJLyoKPiAgCSAqIFRoZSBoYXJkd2FyZSBpcyBleHRyZW1lbHkgZmxleGlibGUgYnV0IHdlIGhh dmUgbm8gdXNlcnNwYWNlIEFQSSB0bwo+IEBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIHZvaWQg YnJ1X2NvbmZpZ3VyZShzdHJ1Y3QgdnNwMV9lbnRpdHkgKmVudGl0eSwKPiAgCSAqIGZvcm1hdCBh dCB0aGUgcGlwZWxpbmUgb3V0cHV0IGlzIHByZW11bHRpcGxpZWQuCj4gIAkgKi8KPiAgCWZsYWdz ID0gcGlwZS0+b3V0cHV0ID8gcGlwZS0+b3V0cHV0LT5mb3JtYXQuZmxhZ3MgOiAwOwo+IC0JdnNw MV9icnVfd3JpdGUoYnJ1LCBkbCwgVkk2X0JSVV9JTkNUUkwsCj4gKwl2c3AxX2JyeF93cml0ZShi cngsIGRsLCBWSTZfQlJVX0lOQ1RSTCwKPiAgCQkgICAgICAgZmxhZ3MgJiBWNEwyX1BJWF9GTVRf RkxBR19QUkVNVUxfQUxQSEEgPwo+ICAJCSAgICAgICAwIDogVkk2X0JSVV9JTkNUUkxfTlJNKTsK PiAgCj4gQEAgLTMyMSwxMiArMzIxLDEyIEBAIHN0YXRpYyB2b2lkIGJydV9jb25maWd1cmUoc3Ry dWN0IHZzcDFfZW50aXR5ICplbnRpdHksCj4gIAkgKiBTZXQgdGhlIGJhY2tncm91bmQgcG9zaXRp b24gdG8gY292ZXIgdGhlIHdob2xlIG91dHB1dCBpbWFnZSBhbmQKPiAgCSAqIGNvbmZpZ3VyZSBp dHMgY29sb3IuCj4gIAkgKi8KPiAtCXZzcDFfYnJ1X3dyaXRlKGJydSwgZGwsIFZJNl9CUlVfVklS UlBGX1NJWkUsCj4gKwl2c3AxX2JyeF93cml0ZShicngsIGRsLCBWSTZfQlJVX1ZJUlJQRl9TSVpF LAo+ICAJCSAgICAgICAoZm9ybWF0LT53aWR0aCA8PCBWSTZfQlJVX1ZJUlJQRl9TSVpFX0hTSVpF X1NISUZUKSB8Cj4gIAkJICAgICAgIChmb3JtYXQtPmhlaWdodCA8PCBWSTZfQlJVX1ZJUlJQRl9T SVpFX1ZTSVpFX1NISUZUKSk7Cj4gLQl2c3AxX2JydV93cml0ZShicnUsIGRsLCBWSTZfQlJVX1ZJ UlJQRl9MT0MsIDApOwo+ICsJdnNwMV9icnhfd3JpdGUoYnJ4LCBkbCwgVkk2X0JSVV9WSVJSUEZf TE9DLCAwKTsKPiAgCj4gLQl2c3AxX2JydV93cml0ZShicnUsIGRsLCBWSTZfQlJVX1ZJUlJQRl9D T0wsIGJydS0+Ymdjb2xvciB8Cj4gKwl2c3AxX2JyeF93cml0ZShicngsIGRsLCBWSTZfQlJVX1ZJ UlJQRl9DT0wsIGJyeC0+Ymdjb2xvciB8Cj4gIAkJICAgICAgICgweGZmIDw8IFZJNl9CUlVfVklS UlBGX0NPTF9BX1NISUZUKSk7Cj4gIAo+ICAJLyoKPiBAQCAtMzM2LDI1ICszMzYsMjUgQEAgc3Rh dGljIHZvaWQgYnJ1X2NvbmZpZ3VyZShzdHJ1Y3QgdnNwMV9lbnRpdHkgKmVudGl0eSwKPiAgCSAq IHVuaXQuCj4gIAkgKi8KPiAgCWlmIChlbnRpdHktPnR5cGUgPT0gVlNQMV9FTlRJVFlfQlJVKQo+ IC0JCXZzcDFfYnJ1X3dyaXRlKGJydSwgZGwsIFZJNl9CUlVfUk9QLAo+ICsJCXZzcDFfYnJ4X3dy aXRlKGJyeCwgZGwsIFZJNl9CUlVfUk9QLAo+ICAJCQkgICAgICAgVkk2X0JSVV9ST1BfRFNUU0VM X0JSVUlOKDEpIHwKPiAgCQkJICAgICAgIFZJNl9CUlVfUk9QX0NST1AoVkk2X1JPUF9OT1ApIHwK PiAgCQkJICAgICAgIFZJNl9CUlVfUk9QX0FST1AoVkk2X1JPUF9OT1ApKTsKPiAgCj4gLQlmb3Ig KGkgPSAwOyBpIDwgYnJ1LT5lbnRpdHkuc291cmNlX3BhZDsgKytpKSB7Cj4gKwlmb3IgKGkgPSAw OyBpIDwgYnJ4LT5lbnRpdHkuc291cmNlX3BhZDsgKytpKSB7Cj4gIAkJYm9vbCBwcmVtdWx0aXBs aWVkID0gZmFsc2U7Cj4gIAkJdTMyIGN0cmwgPSAwOwo+ICAKPiAgCQkvKgo+IC0JCSAqIENvbmZp Z3VyZSBhbGwgQmxlbmQvUk9QIHVuaXRzIGNvcnJlc3BvbmRpbmcgdG8gYW4gZW5hYmxlZCBCUlUK PiArCQkgKiBDb25maWd1cmUgYWxsIEJsZW5kL1JPUCB1bml0cyBjb3JyZXNwb25kaW5nIHRvIGFu IGVuYWJsZWQgQlJ4Cj4gIAkJICogaW5wdXQgZm9yIGFscGhhIGJsZW5kaW5nLiBCbGVuZC9ST1Ag dW5pdHMgY29ycmVzcG9uZGluZyB0bwo+IC0JCSAqIGRpc2FibGVkIEJSVSBpbnB1dHMgYXJlIHVz ZWQgaW4gUk9QIE5PUCBtb2RlIHRvIGlnbm9yZSB0aGUKPiArCQkgKiBkaXNhYmxlZCBCUnggaW5w dXRzIGFyZSB1c2VkIGluIFJPUCBOT1AgbW9kZSB0byBpZ25vcmUgdGhlCj4gIAkJICogU1JDIGlu cHV0Lgo+ICAJCSAqLwo+IC0JCWlmIChicnUtPmlucHV0c1tpXS5ycGYpIHsKPiArCQlpZiAoYnJ4 LT5pbnB1dHNbaV0ucnBmKSB7Cj4gIAkJCWN0cmwgfD0gVkk2X0JSVV9DVFJMX1JCQzsKPiAgCj4g LQkJCXByZW11bHRpcGxpZWQgPSBicnUtPmlucHV0c1tpXS5ycGYtPmZvcm1hdC5mbGFncwo+ICsJ CQlwcmVtdWx0aXBsaWVkID0gYnJ4LT5pbnB1dHNbaV0ucnBmLT5mb3JtYXQuZmxhZ3MKPiAgCQkJ CSAgICAgICYgVjRMMl9QSVhfRk1UX0ZMQUdfUFJFTVVMX0FMUEhBOwo+ICAJCX0gZWxzZSB7Cj4g IAkJCWN0cmwgfD0gVkk2X0JSVV9DVFJMX0NST1AoVkk2X1JPUF9OT1ApCj4gQEAgLTM3OCw3ICsz NzgsNyBAQCBzdGF0aWMgdm9pZCBicnVfY29uZmlndXJlKHN0cnVjdCB2c3AxX2VudGl0eSAqZW50 aXR5LAo+ICAJCWlmICghKGVudGl0eS0+dHlwZSA9PSBWU1AxX0VOVElUWV9CUlUgJiYgaSA9PSAx KSkKPiAgCQkJY3RybCB8PSBWSTZfQlJVX0NUUkxfU1JDU0VMX0JSVUlOKGkpOwo+ICAKPiAtCQl2 c3AxX2JydV93cml0ZShicnUsIGRsLCBWSTZfQlJVX0NUUkwoaSksIGN0cmwpOwo+ICsJCXZzcDFf YnJ4X3dyaXRlKGJyeCwgZGwsIFZJNl9CUlVfQ1RSTChpKSwgY3RybCk7Cj4gIAo+ICAJCS8qCj4g IAkJICogSGFyY29kZSB0aGUgYmxlbmRpbmcgZm9ybXVsYSB0bwo+IEBAIC0zOTMsNyArMzkzLDcg QEAgc3RhdGljIHZvaWQgYnJ1X2NvbmZpZ3VyZShzdHJ1Y3QgdnNwMV9lbnRpdHkgKmVudGl0eSwK PiAgCQkgKgo+ICAJCSAqIG90aGVyd2lzZS4KPiAgCQkgKi8KPiAtCQl2c3AxX2JydV93cml0ZShi cnUsIGRsLCBWSTZfQlJVX0JMRChpKSwKPiArCQl2c3AxX2JyeF93cml0ZShicngsIGRsLCBWSTZf QlJVX0JMRChpKSwKPiAgCQkJICAgICAgIFZJNl9CUlVfQkxEX0NDTURYXzI1NV9TUkNfQSB8Cj4g IAkJCSAgICAgICAocHJlbXVsdGlwbGllZCA/IFZJNl9CUlVfQkxEX0NDTURZX0NPRUZZIDoKPiAg CQkJCQkJVkk2X0JSVV9CTERfQ0NNRFlfU1JDX0EpIHwKPiBAQCAtNDAzLDI5ICs0MDMsMjkgQEAg c3RhdGljIHZvaWQgYnJ1X2NvbmZpZ3VyZShzdHJ1Y3QgdnNwMV9lbnRpdHkgKmVudGl0eSwKPiAg CX0KPiAgfQo+ICAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCB2c3AxX2VudGl0eV9vcGVyYXRpb25z IGJydV9lbnRpdHlfb3BzID0gewo+IC0JLmNvbmZpZ3VyZSA9IGJydV9jb25maWd1cmUsCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgdnNwMV9lbnRpdHlfb3BlcmF0aW9ucyBicnhfZW50aXR5X29wcyA9 IHsKPiArCS5jb25maWd1cmUgPSBicnhfY29uZmlndXJlLAo+ICB9Owo+ICAKPiAgLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiAgICogSW5pdGlhbGl6YXRpb24gYW5kIENsZWFudXAKPiAgICovCj4g IAo+IC1zdHJ1Y3QgdnNwMV9icnUgKnZzcDFfYnJ1X2NyZWF0ZShzdHJ1Y3QgdnNwMV9kZXZpY2Ug KnZzcDEsCj4gK3N0cnVjdCB2c3AxX2JyeCAqdnNwMV9icnhfY3JlYXRlKHN0cnVjdCB2c3AxX2Rl dmljZSAqdnNwMSwKPiAgCQkJCSBlbnVtIHZzcDFfZW50aXR5X3R5cGUgdHlwZSkKPiAgewo+IC0J c3RydWN0IHZzcDFfYnJ1ICpicnU7Cj4gKwlzdHJ1Y3QgdnNwMV9icnggKmJyeDsKPiAgCXVuc2ln bmVkIGludCBudW1fcGFkczsKPiAgCWNvbnN0IGNoYXIgKm5hbWU7Cj4gIAlpbnQgcmV0Owo+ICAK PiAtCWJydSA9IGRldm1fa3phbGxvYyh2c3AxLT5kZXYsIHNpemVvZigqYnJ1KSwgR0ZQX0tFUk5F TCk7Cj4gLQlpZiAoYnJ1ID09IE5VTEwpCj4gKwlicnggPSBkZXZtX2t6YWxsb2ModnNwMS0+ZGV2 LCBzaXplb2YoKmJyeCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKGJyeCA9PSBOVUxMKQo+ICAJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICAKPiAtCWJydS0+YmFzZSA9IHR5cGUgPT0gVlNQMV9F TlRJVFlfQlJVID8gVkk2X0JSVV9CQVNFIDogVkk2X0JSU19CQVNFOwo+IC0JYnJ1LT5lbnRpdHku b3BzID0gJmJydV9lbnRpdHlfb3BzOwo+IC0JYnJ1LT5lbnRpdHkudHlwZSA9IHR5cGU7Cj4gKwli cngtPmJhc2UgPSB0eXBlID09IFZTUDFfRU5USVRZX0JSVSA/IFZJNl9CUlVfQkFTRSA6IFZJNl9C UlNfQkFTRTsKPiArCWJyeC0+ZW50aXR5Lm9wcyA9ICZicnhfZW50aXR5X29wczsKPiArCWJyeC0+ ZW50aXR5LnR5cGUgPSB0eXBlOwo+ICAKPiAgCWlmICh0eXBlID09IFZTUDFfRU5USVRZX0JSVSkg ewo+ICAJCW51bV9wYWRzID0gdnNwMS0+aW5mby0+bnVtX2JydV9pbnB1dHMgKyAxOwo+IEBAIC00 MzUsMjYgKzQzNSwyNiBAQCBzdHJ1Y3QgdnNwMV9icnUgKnZzcDFfYnJ1X2NyZWF0ZShzdHJ1Y3Qg dnNwMV9kZXZpY2UgKnZzcDEsCj4gIAkJbmFtZSA9ICJicnMiOwo+ICAJfQo+ICAKPiAtCXJldCA9 IHZzcDFfZW50aXR5X2luaXQodnNwMSwgJmJydS0+ZW50aXR5LCBuYW1lLCBudW1fcGFkcywgJmJy dV9vcHMsCj4gKwlyZXQgPSB2c3AxX2VudGl0eV9pbml0KHZzcDEsICZicngtPmVudGl0eSwgbmFt ZSwgbnVtX3BhZHMsICZicnhfb3BzLAo+ICAJCQkgICAgICAgTUVESUFfRU5UX0ZfUFJPQ19WSURF T19DT01QT1NFUik7Cj4gIAlpZiAocmV0IDwgMCkKPiAgCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ ICAKPiAgCS8qIEluaXRpYWxpemUgdGhlIGNvbnRyb2wgaGFuZGxlci4gKi8KPiAtCXY0bDJfY3Ry bF9oYW5kbGVyX2luaXQoJmJydS0+Y3RybHMsIDEpOwo+IC0JdjRsMl9jdHJsX25ld19zdGQoJmJy dS0+Y3RybHMsICZicnVfY3RybF9vcHMsIFY0TDJfQ0lEX0JHX0NPTE9SLAo+ICsJdjRsMl9jdHJs X2hhbmRsZXJfaW5pdCgmYnJ4LT5jdHJscywgMSk7Cj4gKwl2NGwyX2N0cmxfbmV3X3N0ZCgmYnJ4 LT5jdHJscywgJmJyeF9jdHJsX29wcywgVjRMMl9DSURfQkdfQ09MT1IsCj4gIAkJCSAgMCwgMHhm ZmZmZmYsIDEsIDApOwo+ICAKPiAtCWJydS0+Ymdjb2xvciA9IDA7Cj4gKwlicngtPmJnY29sb3Ig PSAwOwo+ICAKPiAtCWJydS0+ZW50aXR5LnN1YmRldi5jdHJsX2hhbmRsZXIgPSAmYnJ1LT5jdHJs czsKPiArCWJyeC0+ZW50aXR5LnN1YmRldi5jdHJsX2hhbmRsZXIgPSAmYnJ4LT5jdHJsczsKPiAg Cj4gLQlpZiAoYnJ1LT5jdHJscy5lcnJvcikgewo+ICsJaWYgKGJyeC0+Y3RybHMuZXJyb3IpIHsK PiAgCQlkZXZfZXJyKHZzcDEtPmRldiwgIiVzOiBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb250cm9s c1xuIiwgbmFtZSk7Cj4gLQkJcmV0ID0gYnJ1LT5jdHJscy5lcnJvcjsKPiAtCQl2c3AxX2VudGl0 eV9kZXN0cm95KCZicnUtPmVudGl0eSk7Cj4gKwkJcmV0ID0gYnJ4LT5jdHJscy5lcnJvcjsKPiAr CQl2c3AxX2VudGl0eV9kZXN0cm95KCZicngtPmVudGl0eSk7Cj4gIAkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKPiAgCX0KPiAgCj4gLQlyZXR1cm4gYnJ1Owo+ICsJcmV0dXJuIGJyeDsKPiAgfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9icnUuaCBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2JyeC5oCj4gc2ltaWxhcml0eSBpbmRleCA2NiUK PiByZW5hbWUgZnJvbSBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9icnUuaAo+IHJl bmFtZSB0byBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9icnguaAo+IGluZGV4IGM5 OGVkOTZkOGRlNi4uOTI3YWE0MjU0YzBmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vdnNwMS92c3AxX2JydS5oCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3Ax L3ZzcDFfYnJ4LmgKPiBAQCAtMSw1ICsxLDUgQEAKPiAgLyoKPiAtICogdnNwMV9icnUuaCAgLS0g IFItQ2FyIFZTUDEgQmxlbmQgUk9QIFVuaXQKPiArICogdnNwMV9icnguaCAgLS0gIFItQ2FyIFZT UDEgQmxlbmQgUk9QIFVuaXQgKEJSVSBhbmQgQlJTKQo+ICAgKgo+ICAgKiBDb3B5cmlnaHQgKEMp IDIwMTMgUmVuZXNhcyBDb3Jwb3JhdGlvbgo+ICAgKgo+IEBAIC0xMCw4ICsxMCw4IEBACj4gICAq IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCj4gICAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gICAq Lwo+IC0jaWZuZGVmIF9fVlNQMV9CUlVfSF9fCj4gLSNkZWZpbmUgX19WU1AxX0JSVV9IX18KPiAr I2lmbmRlZiBfX1ZTUDFfQlJYX0hfXwo+ICsjZGVmaW5lIF9fVlNQMV9CUlhfSF9fCj4gIAo+ICAj aW5jbHVkZSA8bWVkaWEvbWVkaWEtZW50aXR5Lmg+Cj4gICNpbmNsdWRlIDxtZWRpYS92NGwyLWN0 cmxzLmg+Cj4gQEAgLTIyLDkgKzIyLDkgQEAKPiAgc3RydWN0IHZzcDFfZGV2aWNlOwo+ICBzdHJ1 Y3QgdnNwMV9yd3BmOwo+ICAKPiAtI2RlZmluZSBCUlVfUEFEX1NJTksobikJCQkJKG4pCj4gKyNk ZWZpbmUgQlJYX1BBRF9TSU5LKG4pCQkJCShuKQo+ICAKPiAtc3RydWN0IHZzcDFfYnJ1IHsKPiAr c3RydWN0IHZzcDFfYnJ4IHsKPiAgCXN0cnVjdCB2c3AxX2VudGl0eSBlbnRpdHk7Cj4gIAl1bnNp Z25lZCBpbnQgYmFzZTsKPiAgCj4gQEAgLTM3LDEyICszNywxMiBAQCBzdHJ1Y3QgdnNwMV9icnUg ewo+ICAJdTMyIGJnY29sb3I7Cj4gIH07Cj4gIAo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCB2c3Ax X2JydSAqdG9fYnJ1KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2KQo+ICtzdGF0aWMgaW5saW5l IHN0cnVjdCB2c3AxX2JyeCAqdG9fYnJ4KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2KQo+ICB7 Cj4gLQlyZXR1cm4gY29udGFpbmVyX29mKHN1YmRldiwgc3RydWN0IHZzcDFfYnJ1LCBlbnRpdHku c3ViZGV2KTsKPiArCXJldHVybiBjb250YWluZXJfb2Yoc3ViZGV2LCBzdHJ1Y3QgdnNwMV9icngs IGVudGl0eS5zdWJkZXYpOwo+ICB9Cj4gIAo+IC1zdHJ1Y3QgdnNwMV9icnUgKnZzcDFfYnJ1X2Ny ZWF0ZShzdHJ1Y3QgdnNwMV9kZXZpY2UgKnZzcDEsCj4gK3N0cnVjdCB2c3AxX2JyeCAqdnNwMV9i cnhfY3JlYXRlKHN0cnVjdCB2c3AxX2RldmljZSAqdnNwMSwKPiAgCQkJCSBlbnVtIHZzcDFfZW50 aXR5X3R5cGUgdHlwZSk7Cj4gIAo+IC0jZW5kaWYgLyogX19WU1AxX0JSVV9IX18gKi8KPiArI2Vu ZGlmIC8qIF9fVlNQMV9CUlhfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vdnNwMS92c3AxX2RybS5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFf ZHJtLmMKPiBpbmRleCA1MjFiYmMyMjcxMTAuLjUwNDk2MzQzYmJkYiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9kcm0uYwo+ICsrKyBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vdnNwMS92c3AxX2RybS5jCj4gQEAgLTIwLDE0ICsyMCwxNCBAQAo+ICAjaW5j bHVkZSA8bWVkaWEvdnNwMS5oPgo+ICAKPiAgI2luY2x1ZGUgInZzcDEuaCIKPiAtI2luY2x1ZGUg InZzcDFfYnJ1LmgiCj4gKyNpbmNsdWRlICJ2c3AxX2JyeC5oIgo+ICAjaW5jbHVkZSAidnNwMV9k bC5oIgo+ICAjaW5jbHVkZSAidnNwMV9kcm0uaCIKPiAgI2luY2x1ZGUgInZzcDFfbGlmLmgiCj4g ICNpbmNsdWRlICJ2c3AxX3BpcGUuaCIKPiAgI2luY2x1ZGUgInZzcDFfcndwZi5oIgo+ICAKPiAt I2RlZmluZSBCUlVfTkFNRShlKQkoZSktPnR5cGUgPT0gVlNQMV9FTlRJVFlfQlJVID8gIkJSVSIg OiAiQlJTIgo+ICsjZGVmaW5lIEJSWF9OQU1FKGUpCShlKS0+dHlwZSA9PSBWU1AxX0VOVElUWV9C UlUgPyAiQlJVIiA6ICJCUlMiCj4gIAo+ICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgKiBJ bnRlcnJ1cHQgSGFuZGxpbmcKPiBAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCB2c3AxX2R1 X3BpcGVsaW5lX2ZyYW1lX2VuZChzdHJ1Y3QgdnNwMV9waXBlbGluZSAqcGlwZSwKPiAgCQkJCSAg ICAgIGNvbXBsZXRlZCAmJiAhbm90aWZ5KTsKPiAgCj4gIAlpZiAobm90aWZ5KSB7Cj4gLQkJZHJt X3BpcGUtPmZvcmNlX2JydV9yZWxlYXNlID0gZmFsc2U7Cj4gKwkJZHJtX3BpcGUtPmZvcmNlX2Jy eF9yZWxlYXNlID0gZmFsc2U7Cj4gIAkJd2FrZV91cCgmZHJtX3BpcGUtPndhaXRfcXVldWUpOwo+ ICAJfQo+ICB9Cj4gQEAgLTUyLDExICs1MiwxMSBAQCBzdGF0aWMgdm9pZCB2c3AxX2R1X3BpcGVs aW5lX2ZyYW1lX2VuZChzdHJ1Y3QgdnNwMV9waXBlbGluZSAqcGlwZSwKPiAgICogUGlwZWxpbmUg Q29uZmlndXJhdGlvbgo+ICAgKi8KPiAgCj4gLS8qIFNldHVwIG9uZSBSUEYgYW5kIHRoZSBjb25u ZWN0ZWQgQlJVIHNpbmsgcGFkLiAqLwo+ICsvKiBTZXR1cCBvbmUgUlBGIGFuZCB0aGUgY29ubmVj dGVkIEJSeCBzaW5rIHBhZC4gKi8KPiAgc3RhdGljIGludCB2c3AxX2R1X3BpcGVsaW5lX3NldHVw X3JwZihzdHJ1Y3QgdnNwMV9kZXZpY2UgKnZzcDEsCj4gIAkJCQkgICAgICBzdHJ1Y3QgdnNwMV9w aXBlbGluZSAqcGlwZSwKPiAgCQkJCSAgICAgIHN0cnVjdCB2c3AxX3J3cGYgKnJwZiwKPiAtCQkJ CSAgICAgIHVuc2lnbmVkIGludCBicnVfaW5wdXQpCj4gKwkJCQkgICAgICB1bnNpZ25lZCBpbnQg YnJ4X2lucHV0KQo+ICB7Cj4gIAlzdHJ1Y3QgdjRsMl9zdWJkZXZfc2VsZWN0aW9uIHNlbDsKPiAg CXN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgZm9ybWF0Owo+IEBAIC02NSw3ICs2NSw3IEBAIHN0 YXRpYyBpbnQgdnNwMV9kdV9waXBlbGluZV9zZXR1cF9ycGYoc3RydWN0IHZzcDFfZGV2aWNlICp2 c3AxLAo+ICAKPiAgCS8qCj4gIAkgKiBDb25maWd1cmUgdGhlIGZvcm1hdCBvbiB0aGUgUlBGIHNp bmsgcGFkIGFuZCBwcm9wYWdhdGUgaXQgdXAgdG8gdGhlCj4gLQkgKiBCUlUgc2luayBwYWQuCj4g KwkgKiBCUnggc2luayBwYWQuCj4gIAkgKi8KPiAgCWNyb3AgPSAmdnNwMS0+ZHJtLT5pbnB1dHNb cnBmLT5lbnRpdHkuaW5kZXhdLmNyb3A7Cj4gIAo+IEBAIC0xMjYsMTE0ICsxMjYsMTE0IEBAIHN0 YXRpYyBpbnQgdnNwMV9kdV9waXBlbGluZV9zZXR1cF9ycGYoc3RydWN0IHZzcDFfZGV2aWNlICp2 c3AxLAo+ICAJaWYgKHJldCA8IDApCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQkvKiBCUlUgc2lu aywgcHJvcGFnYXRlIHRoZSBmb3JtYXQgZnJvbSB0aGUgUlBGIHNvdXJjZS4gKi8KPiAtCWZvcm1h dC5wYWQgPSBicnVfaW5wdXQ7Cj4gKwkvKiBCUnggc2luaywgcHJvcGFnYXRlIHRoZSBmb3JtYXQg ZnJvbSB0aGUgUlBGIHNvdXJjZS4gKi8KPiArCWZvcm1hdC5wYWQgPSBicnhfaW5wdXQ7Cj4gIAo+ IC0JcmV0ID0gdjRsMl9zdWJkZXZfY2FsbCgmcGlwZS0+YnJ1LT5zdWJkZXYsIHBhZCwgc2V0X2Zt dCwgTlVMTCwKPiArCXJldCA9IHY0bDJfc3ViZGV2X2NhbGwoJnBpcGUtPmJyeC0+c3ViZGV2LCBw YWQsIHNldF9mbXQsIE5VTEwsCj4gIAkJCSAgICAgICAmZm9ybWF0KTsKPiAgCWlmIChyZXQgPCAw KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ICAJZGV2X2RiZyh2c3AxLT5kZXYsICIlczogc2V0IGZv cm1hdCAldXgldSAoJXgpIG9uICVzIHBhZCAldVxuIiwKPiAgCQlfX2Z1bmNfXywgZm9ybWF0LmZv cm1hdC53aWR0aCwgZm9ybWF0LmZvcm1hdC5oZWlnaHQsCj4gLQkJZm9ybWF0LmZvcm1hdC5jb2Rl LCBCUlVfTkFNRShwaXBlLT5icnUpLCBmb3JtYXQucGFkKTsKPiArCQlmb3JtYXQuZm9ybWF0LmNv ZGUsIEJSWF9OQU1FKHBpcGUtPmJyeCksIGZvcm1hdC5wYWQpOwo+ICAKPiAtCXNlbC5wYWQgPSBi cnVfaW5wdXQ7Cj4gKwlzZWwucGFkID0gYnJ4X2lucHV0Owo+ICAJc2VsLnRhcmdldCA9IFY0TDJf U0VMX1RHVF9DT01QT1NFOwo+ICAJc2VsLnIgPSB2c3AxLT5kcm0tPmlucHV0c1tycGYtPmVudGl0 eS5pbmRleF0uY29tcG9zZTsKPiAgCj4gLQlyZXQgPSB2NGwyX3N1YmRldl9jYWxsKCZwaXBlLT5i cnUtPnN1YmRldiwgcGFkLCBzZXRfc2VsZWN0aW9uLCBOVUxMLAo+ICsJcmV0ID0gdjRsMl9zdWJk ZXZfY2FsbCgmcGlwZS0+YnJ4LT5zdWJkZXYsIHBhZCwgc2V0X3NlbGVjdGlvbiwgTlVMTCwKPiAg CQkJICAgICAgICZzZWwpOwo+ICAJaWYgKHJldCA8IDApCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4g IAlkZXZfZGJnKHZzcDEtPmRldiwgIiVzOiBzZXQgc2VsZWN0aW9uICgldSwldSkvJXV4JXUgb24g JXMgcGFkICV1XG4iLAo+ICAJCV9fZnVuY19fLCBzZWwuci5sZWZ0LCBzZWwuci50b3AsIHNlbC5y LndpZHRoLCBzZWwuci5oZWlnaHQsCj4gLQkJQlJVX05BTUUocGlwZS0+YnJ1KSwgc2VsLnBhZCk7 Cj4gKwkJQlJYX05BTUUocGlwZS0+YnJ4KSwgc2VsLnBhZCk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLS8qIFNldHVwIHRoZSBCUlUgc291cmNlIHBhZC4gKi8KPiArLyogU2V0dXAgdGhl IEJSeCBzb3VyY2UgcGFkLiAqLwo+ICBzdGF0aWMgaW50IHZzcDFfZHVfcGlwZWxpbmVfc2V0dXBf aW5wdXQoc3RydWN0IHZzcDFfZGV2aWNlICp2c3AxLAo+ICAJCQkJCXN0cnVjdCB2c3AxX3BpcGVs aW5lICpwaXBlKTsKPiAgc3RhdGljIHZvaWQgdnNwMV9kdV9waXBlbGluZV9jb25maWd1cmUoc3Ry dWN0IHZzcDFfcGlwZWxpbmUgKnBpcGUpOwo+ICAKPiAtc3RhdGljIGludCB2c3AxX2R1X3BpcGVs aW5lX3NldHVwX2JydShzdHJ1Y3QgdnNwMV9kZXZpY2UgKnZzcDEsCj4gK3N0YXRpYyBpbnQgdnNw MV9kdV9waXBlbGluZV9zZXR1cF9icngoc3RydWN0IHZzcDFfZGV2aWNlICp2c3AxLAo+ICAJCQkJ ICAgICAgc3RydWN0IHZzcDFfcGlwZWxpbmUgKnBpcGUpCj4gIHsKPiAgCXN0cnVjdCB2c3AxX2Ry bV9waXBlbGluZSAqZHJtX3BpcGUgPSB0b192c3AxX2RybV9waXBlbGluZShwaXBlKTsKPiAgCXN0 cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgZm9ybWF0ID0gewo+ICAJCS53aGljaCA9IFY0TDJfU1VC REVWX0ZPUk1BVF9BQ1RJVkUsCj4gIAl9Owo+IC0Jc3RydWN0IHZzcDFfZW50aXR5ICpicnU7Cj4g KwlzdHJ1Y3QgdnNwMV9lbnRpdHkgKmJyeDsKPiAgCWludCByZXQ7Cj4gIAo+ICAJLyoKPiAtCSAq IFBpY2sgYSBCUlU6Cj4gLQkgKiAtIElmIHdlIG5lZWQgbW9yZSB0aGFuIHR3byBpbnB1dHMsIHVz ZSB0aGUgbWFpbiBCUlUuCj4gLQkgKiAtIE90aGVyd2lzZSwgaWYgd2UgYXJlIG5vdCBmb3JjZWQg dG8gcmVsZWFzZSBvdXIgQlJVLCBrZWVwIGl0Lgo+IC0JICogLSBFbHNlLCB1c2UgYW55IGZyZWUg QlJVIChyYW5kb21seSBzdGFydGluZyB3aXRoIHRoZSBtYWluIEJSVSkuCj4gKwkgKiBQaWNrIGEg QlJ4Ogo+ICsJICogLSBJZiB3ZSBuZWVkIG1vcmUgdGhhbiB0d28gaW5wdXRzLCB1c2UgdGhlIEJS VS4KPiArCSAqIC0gT3RoZXJ3aXNlLCBpZiB3ZSBhcmUgbm90IGZvcmNlZCB0byByZWxlYXNlIG91 ciBCUngsIGtlZXAgaXQuCj4gKwkgKiAtIEVsc2UsIHVzZSBhbnkgZnJlZSBCUnggKHJhbmRvbWx5 IHN0YXJ0aW5nIHdpdGggdGhlIEJSVSkuCj4gIAkgKi8KPiAgCWlmIChwaXBlLT5udW1faW5wdXRz ID4gMikKPiAtCQlicnUgPSAmdnNwMS0+YnJ1LT5lbnRpdHk7Cj4gLQllbHNlIGlmIChwaXBlLT5i cnUgJiYgIWRybV9waXBlLT5mb3JjZV9icnVfcmVsZWFzZSkKPiAtCQlicnUgPSBwaXBlLT5icnU7 Cj4gKwkJYnJ4ID0gJnZzcDEtPmJydS0+ZW50aXR5Owo+ICsJZWxzZSBpZiAocGlwZS0+YnJ4ICYm ICFkcm1fcGlwZS0+Zm9yY2VfYnJ4X3JlbGVhc2UpCj4gKwkJYnJ4ID0gcGlwZS0+YnJ4Owo+ICAJ ZWxzZSBpZiAoIXZzcDEtPmJydS0+ZW50aXR5LnBpcGUpCj4gLQkJYnJ1ID0gJnZzcDEtPmJydS0+ ZW50aXR5Owo+ICsJCWJyeCA9ICZ2c3AxLT5icnUtPmVudGl0eTsKPiAgCWVsc2UKPiAtCQlicnUg PSAmdnNwMS0+YnJzLT5lbnRpdHk7Cj4gKwkJYnJ4ID0gJnZzcDEtPmJycy0+ZW50aXR5Owo+ICAK PiAtCS8qIFN3aXRjaCBCUlUgaWYgbmVlZGVkLiAqLwo+IC0JaWYgKGJydSAhPSBwaXBlLT5icnUp IHsKPiAtCQlzdHJ1Y3QgdnNwMV9lbnRpdHkgKnJlbGVhc2VkX2JydSA9IE5VTEw7Cj4gKwkvKiBT d2l0Y2ggQlJ4IGlmIG5lZWRlZC4gKi8KPiArCWlmIChicnggIT0gcGlwZS0+YnJ4KSB7Cj4gKwkJ c3RydWN0IHZzcDFfZW50aXR5ICpyZWxlYXNlZF9icnggPSBOVUxMOwo+ICAKPiAtCQkvKiBSZWxl YXNlIG91ciBCUlUgaWYgd2UgaGF2ZSBvbmUuICovCj4gLQkJaWYgKHBpcGUtPmJydSkgewo+ICsJ CS8qIFJlbGVhc2Ugb3VyIEJSeCBpZiB3ZSBoYXZlIG9uZS4gKi8KPiArCQlpZiAocGlwZS0+YnJ4 KSB7Cj4gIAkJCWRldl9kYmcodnNwMS0+ZGV2LCAiJXM6IHBpcGUgJXU6IHJlbGVhc2luZyAlc1xu IiwKPiAgCQkJCV9fZnVuY19fLCBwaXBlLT5saWYtPmluZGV4LAo+IC0JCQkJQlJVX05BTUUocGlw ZS0+YnJ1KSk7Cj4gKwkJCQlCUlhfTkFNRShwaXBlLT5icngpKTsKPiAgCj4gIAkJCS8qCj4gLQkJ CSAqIFRoZSBCUlUgbWlnaHQgYmUgYWNxdWlyZWQgYnkgdGhlIG90aGVyIHBpcGVsaW5lIGluCj4g KwkJCSAqIFRoZSBCUnggbWlnaHQgYmUgYWNxdWlyZWQgYnkgdGhlIG90aGVyIHBpcGVsaW5lIGlu Cj4gIAkJCSAqIHRoZSBuZXh0IHN0ZXAuIFdlIG11c3QgdGh1cyByZW1vdmUgaXQgZnJvbSB0aGUg bGlzdAo+ICAJCQkgKiBvZiBlbnRpdGllcyBmb3IgdGhpcyBwaXBlbGluZS4gVGhlIG90aGVyIHBp cGVsaW5lJ3MKPiAtCQkJICogaGFyZHdhcmUgY29uZmlndXJhdGlvbiB3aWxsIHJlY29uZmlndXJl IHRoZSBCUlUKPiArCQkJICogaGFyZHdhcmUgY29uZmlndXJhdGlvbiB3aWxsIHJlY29uZmlndXJl IHRoZSBCUngKPiAgCQkJICogcm91dGluZy4KPiAgCQkJICoKPiAgCQkJICogSG93ZXZlciwgaWYg dGhlIG90aGVyIHBpcGVsaW5lIGRvZXNuJ3QgYWNxdWlyZSBvdXIKPiAtCQkJICogQlJVLCB3ZSBu ZWVkIHRvIGtlZXAgaXQgaW4gdGhlIGxpc3QsIG90aGVyd2lzZSB0aGUKPiArCQkJICogQlJ4LCB3 ZSBuZWVkIHRvIGtlZXAgaXQgaW4gdGhlIGxpc3QsIG90aGVyd2lzZSB0aGUKPiAgCQkJICogaGFy ZHdhcmUgY29uZmlndXJhdGlvbiBzdGVwIHdvbid0IGRpc2Nvbm5lY3QgaXQgZnJvbQo+IC0JCQkg KiB0aGUgcGlwZWxpbmUuIFRvIHNvbHZlIHRoaXMsIHN0b3JlIHRoZSByZWxlYXNlZCBCUlUKPiAr CQkJICogdGhlIHBpcGVsaW5lLiBUbyBzb2x2ZSB0aGlzLCBzdG9yZSB0aGUgcmVsZWFzZWQgQlJ4 Cj4gIAkJCSAqIHBvaW50ZXIgdG8gYWRkIGl0IGJhY2sgdG8gdGhlIGxpc3Qgb2YgZW50aXRpZXMg bGF0ZXIKPiAgCQkJICogaWYgaXQgaXNuJ3QgYWNxdWlyZWQgYnkgdGhlIG90aGVyIHBpcGVsaW5l Lgo+ICAJCQkgKi8KPiAtCQkJcmVsZWFzZWRfYnJ1ID0gcGlwZS0+YnJ1Owo+ICsJCQlyZWxlYXNl ZF9icnggPSBwaXBlLT5icng7Cj4gIAo+IC0JCQlsaXN0X2RlbCgmcGlwZS0+YnJ1LT5saXN0X3Bp cGUpOwo+IC0JCQlwaXBlLT5icnUtPnNpbmsgPSBOVUxMOwo+IC0JCQlwaXBlLT5icnUtPnBpcGUg PSBOVUxMOwo+IC0JCQlwaXBlLT5icnUgPSBOVUxMOwo+ICsJCQlsaXN0X2RlbCgmcGlwZS0+YnJ4 LT5saXN0X3BpcGUpOwo+ICsJCQlwaXBlLT5icngtPnNpbmsgPSBOVUxMOwo+ICsJCQlwaXBlLT5i cngtPnBpcGUgPSBOVUxMOwo+ICsJCQlwaXBlLT5icnggPSBOVUxMOwo+ICAJCX0KPiAgCj4gIAkJ LyoKPiAtCQkgKiBJZiB0aGUgQlJVIHdlIG5lZWQgaXMgaW4gdXNlLCBmb3JjZSB0aGUgb3duZXIg cGlwZWxpbmUgdG8KPiAtCQkgKiBzd2l0Y2ggdG8gdGhlIG90aGVyIEJSVSBhbmQgd2FpdCB1bnRp bCB0aGUgc3dpdGNoIGNvbXBsZXRlcy4KPiArCQkgKiBJZiB0aGUgQlJ4IHdlIG5lZWQgaXMgaW4g dXNlLCBmb3JjZSB0aGUgb3duZXIgcGlwZWxpbmUgdG8KPiArCQkgKiBzd2l0Y2ggdG8gdGhlIG90 aGVyIEJSeCBhbmQgd2FpdCB1bnRpbCB0aGUgc3dpdGNoIGNvbXBsZXRlcy4KPiAgCQkgKi8KPiAt CQlpZiAoYnJ1LT5waXBlKSB7Cj4gKwkJaWYgKGJyeC0+cGlwZSkgewo+ICAJCQlzdHJ1Y3QgdnNw MV9kcm1fcGlwZWxpbmUgKm93bmVyX3BpcGU7Cj4gIAo+ICAJCQlkZXZfZGJnKHZzcDEtPmRldiwg IiVzOiBwaXBlICV1OiB3YWl0aW5nIGZvciAlc1xuIiwKPiAtCQkJCV9fZnVuY19fLCBwaXBlLT5s aWYtPmluZGV4LCBCUlVfTkFNRShicnUpKTsKPiArCQkJCV9fZnVuY19fLCBwaXBlLT5saWYtPmlu ZGV4LCBCUlhfTkFNRShicngpKTsKPiAgCj4gLQkJCW93bmVyX3BpcGUgPSB0b192c3AxX2RybV9w aXBlbGluZShicnUtPnBpcGUpOwo+IC0JCQlvd25lcl9waXBlLT5mb3JjZV9icnVfcmVsZWFzZSA9 IHRydWU7Cj4gKwkJCW93bmVyX3BpcGUgPSB0b192c3AxX2RybV9waXBlbGluZShicngtPnBpcGUp Owo+ICsJCQlvd25lcl9waXBlLT5mb3JjZV9icnhfcmVsZWFzZSA9IHRydWU7Cj4gIAo+ICAJCQl2 c3AxX2R1X3BpcGVsaW5lX3NldHVwX2lucHV0KHZzcDEsICZvd25lcl9waXBlLT5waXBlKTsKPiAg CQkJdnNwMV9kdV9waXBlbGluZV9jb25maWd1cmUoJm93bmVyX3BpcGUtPnBpcGUpOwo+ICAKPiAg CQkJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KG93bmVyX3BpcGUtPndhaXRfcXVldWUsCj4gLQkJ CQkJCSAhb3duZXJfcGlwZS0+Zm9yY2VfYnJ1X3JlbGVhc2UsCj4gKwkJCQkJCSAhb3duZXJfcGlw ZS0+Zm9yY2VfYnJ4X3JlbGVhc2UsCj4gIAkJCQkJCSBtc2Vjc190b19qaWZmaWVzKDUwMCkpOwo+ ICAJCQlpZiAocmV0ID09IDApCj4gIAkJCQlkZXZfd2Fybih2c3AxLT5kZXYsCj4gQEAgLTI0Miw0 NiArMjQyLDQ2IEBAIHN0YXRpYyBpbnQgdnNwMV9kdV9waXBlbGluZV9zZXR1cF9icnUoc3RydWN0 IHZzcDFfZGV2aWNlICp2c3AxLAo+ICAJCX0KPiAgCj4gIAkJLyoKPiAtCQkgKiBJZiB0aGUgQlJV IHdlIGhhdmUgcmVsZWFzZWQgcHJldmlvdXNseSBoYXNuJ3QgYmVlbiBhY3F1aXJlZAo+ICsJCSAq IElmIHRoZSBCUnggd2UgaGF2ZSByZWxlYXNlZCBwcmV2aW91c2x5IGhhc24ndCBiZWVuIGFjcXVp cmVkCj4gIAkJICogYnkgdGhlIG90aGVyIHBpcGVsaW5lLCBhZGQgaXQgYmFjayB0byB0aGUgZW50 aXRpZXMgbGlzdCAod2l0aAo+ICAJCSAqIHRoZSBwaXBlIHBvaW50ZXIgTlVMTCkgdG8gbGV0IHZz cDFfZHVfcGlwZWxpbmVfY29uZmlndXJlKCkKPiAgCQkgKiBkaXNjb25uZWN0IGl0IGZyb20gdGhl IGhhcmR3YXJlIHBpcGVsaW5lLgo+ICAJCSAqLwo+IC0JCWlmIChyZWxlYXNlZF9icnUgJiYgIXJl bGVhc2VkX2JydS0+cGlwZSkKPiAtCQkJbGlzdF9hZGRfdGFpbCgmcmVsZWFzZWRfYnJ1LT5saXN0 X3BpcGUsCj4gKwkJaWYgKHJlbGVhc2VkX2JyeCAmJiAhcmVsZWFzZWRfYnJ4LT5waXBlKQo+ICsJ CQlsaXN0X2FkZF90YWlsKCZyZWxlYXNlZF9icngtPmxpc3RfcGlwZSwKPiAgCQkJCSAgICAgICZw aXBlLT5lbnRpdGllcyk7Cj4gIAo+IC0JCS8qIEFkZCB0aGUgQlJVIHRvIHRoZSBwaXBlbGluZS4g Ki8KPiArCQkvKiBBZGQgdGhlIEJSeCB0byB0aGUgcGlwZWxpbmUuICovCj4gIAkJZGV2X2RiZyh2 c3AxLT5kZXYsICIlczogcGlwZSAldTogYWNxdWlyZWQgJXNcbiIsCj4gLQkJCV9fZnVuY19fLCBw aXBlLT5saWYtPmluZGV4LCBCUlVfTkFNRShicnUpKTsKPiArCQkJX19mdW5jX18sIHBpcGUtPmxp Zi0+aW5kZXgsIEJSWF9OQU1FKGJyeCkpOwo+ICAKPiAtCQlwaXBlLT5icnUgPSBicnU7Cj4gLQkJ cGlwZS0+YnJ1LT5waXBlID0gcGlwZTsKPiAtCQlwaXBlLT5icnUtPnNpbmsgPSAmcGlwZS0+b3V0 cHV0LT5lbnRpdHk7Cj4gLQkJcGlwZS0+YnJ1LT5zaW5rX3BhZCA9IDA7Cj4gKwkJcGlwZS0+YnJ4 ID0gYnJ4Owo+ICsJCXBpcGUtPmJyeC0+cGlwZSA9IHBpcGU7Cj4gKwkJcGlwZS0+YnJ4LT5zaW5r ID0gJnBpcGUtPm91dHB1dC0+ZW50aXR5Owo+ICsJCXBpcGUtPmJyeC0+c2lua19wYWQgPSAwOwo+ ICAKPiAtCQlsaXN0X2FkZF90YWlsKCZwaXBlLT5icnUtPmxpc3RfcGlwZSwgJnBpcGUtPmVudGl0 aWVzKTsKPiArCQlsaXN0X2FkZF90YWlsKCZwaXBlLT5icngtPmxpc3RfcGlwZSwgJnBpcGUtPmVu dGl0aWVzKTsKPiAgCX0KPiAgCj4gIAkvKgo+IC0JICogQ29uZmlndXJlIHRoZSBmb3JtYXQgb24g dGhlIEJSVSBzb3VyY2UgYW5kIHZlcmlmeSB0aGF0IGl0IG1hdGNoZXMgdGhlCj4gKwkgKiBDb25m aWd1cmUgdGhlIGZvcm1hdCBvbiB0aGUgQlJ4IHNvdXJjZSBhbmQgdmVyaWZ5IHRoYXQgaXQgbWF0 Y2hlcyB0aGUKPiAgCSAqIHJlcXVlc3RlZCBmb3JtYXQuIFdlIGRvbid0IHNldCB0aGUgbWVkaWEg YnVzIGNvZGUgYXMgaXQgaXMgY29uZmlndXJlZAo+IC0JICogb24gdGhlIEJSVSBzaW5rIHBhZCAw IGFuZCBwcm9wYWdhdGVkIGluc2lkZSB0aGUgZW50aXR5LCBub3Qgb24gdGhlCj4gKwkgKiBvbiB0 aGUgQlJ4IHNpbmsgcGFkIDAgYW5kIHByb3BhZ2F0ZWQgaW5zaWRlIHRoZSBlbnRpdHksIG5vdCBv biB0aGUKPiAgCSAqIHNvdXJjZSBwYWQuCj4gIAkgKi8KPiAtCWZvcm1hdC5wYWQgPSBwaXBlLT5i cnUtPnNvdXJjZV9wYWQ7Cj4gKwlmb3JtYXQucGFkID0gcGlwZS0+YnJ4LT5zb3VyY2VfcGFkOwo+ ICAJZm9ybWF0LmZvcm1hdC53aWR0aCA9IGRybV9waXBlLT53aWR0aDsKPiAgCWZvcm1hdC5mb3Jt YXQuaGVpZ2h0ID0gZHJtX3BpcGUtPmhlaWdodDsKPiAgCWZvcm1hdC5mb3JtYXQuZmllbGQgPSBW NEwyX0ZJRUxEX05PTkU7Cj4gIAo+IC0JcmV0ID0gdjRsMl9zdWJkZXZfY2FsbCgmcGlwZS0+YnJ1 LT5zdWJkZXYsIHBhZCwgc2V0X2ZtdCwgTlVMTCwKPiArCXJldCA9IHY0bDJfc3ViZGV2X2NhbGwo JnBpcGUtPmJyeC0+c3ViZGV2LCBwYWQsIHNldF9mbXQsIE5VTEwsCj4gIAkJCSAgICAgICAmZm9y bWF0KTsKPiAgCWlmIChyZXQgPCAwKQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ICAJZGV2X2RiZyh2 c3AxLT5kZXYsICIlczogc2V0IGZvcm1hdCAldXgldSAoJXgpIG9uICVzIHBhZCAldVxuIiwKPiAg CQlfX2Z1bmNfXywgZm9ybWF0LmZvcm1hdC53aWR0aCwgZm9ybWF0LmZvcm1hdC5oZWlnaHQsCj4g LQkJZm9ybWF0LmZvcm1hdC5jb2RlLCBCUlVfTkFNRShwaXBlLT5icnUpLCBwaXBlLT5icnUtPnNv dXJjZV9wYWQpOwo+ICsJCWZvcm1hdC5mb3JtYXQuY29kZSwgQlJYX05BTUUocGlwZS0+YnJ4KSwg cGlwZS0+YnJ4LT5zb3VyY2VfcGFkKTsKPiAgCj4gIAlpZiAoZm9ybWF0LmZvcm1hdC53aWR0aCAh PSBkcm1fcGlwZS0+d2lkdGggfHwKPiAgCSAgICBmb3JtYXQuZm9ybWF0LmhlaWdodCAhPSBkcm1f cGlwZS0+aGVpZ2h0KSB7Cj4gQEAgLTI5NywxMiArMjk3LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgcnBmX3pwb3Moc3RydWN0IHZzcDFfZGV2aWNlICp2c3AxLCBzdHJ1Y3QgdnNwMV9yd3BmICpy cGYpCj4gIAlyZXR1cm4gdnNwMS0+ZHJtLT5pbnB1dHNbcnBmLT5lbnRpdHkuaW5kZXhdLnpwb3M7 Cj4gIH0KPiAgCj4gLS8qIFNldHVwIHRoZSBpbnB1dCBzaWRlIG9mIHRoZSBwaXBlbGluZSAoUlBG cyBhbmQgQlJVKS4gKi8KPiArLyogU2V0dXAgdGhlIGlucHV0IHNpZGUgb2YgdGhlIHBpcGVsaW5l IChSUEZzIGFuZCBCUngpLiAqLwo+ICBzdGF0aWMgaW50IHZzcDFfZHVfcGlwZWxpbmVfc2V0dXBf aW5wdXQoc3RydWN0IHZzcDFfZGV2aWNlICp2c3AxLAo+ICAJCQkJCXN0cnVjdCB2c3AxX3BpcGVs aW5lICpwaXBlKQo+ICB7Cj4gIAlzdHJ1Y3QgdnNwMV9yd3BmICppbnB1dHNbVlNQMV9NQVhfUlBG XSA9IHsgTlVMTCwgfTsKPiAtCXN0cnVjdCB2c3AxX2JydSAqYnJ1Owo+ICsJc3RydWN0IHZzcDFf YnJ4ICpicng7Cj4gIAl1bnNpZ25lZCBpbnQgaTsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC0zMjcs MjUgKzMyNywyNSBAQCBzdGF0aWMgaW50IHZzcDFfZHVfcGlwZWxpbmVfc2V0dXBfaW5wdXQoc3Ry dWN0IHZzcDFfZGV2aWNlICp2c3AxLAo+ICAJfQo+ICAKPiAgCS8qCj4gLQkgKiBTZXR1cCB0aGUg QlJVLiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgc2V0dGluZyB1cCB0aGUgUlBGIGlucHV0Cj4g LQkgKiBwaXBlbGluZXMgYXMgdGhlIEJSVSBzaW5rIGNvbXBvc2UgcmVjdGFuZ2xlcyBkZXBlbmQg b24gdGhlIEJSVSBzb3VyY2UKPiArCSAqIFNldHVwIHRoZSBCUnguIFRoaXMgbXVzdCBiZSBkb25l IGJlZm9yZSBzZXR0aW5nIHVwIHRoZSBSUEYgaW5wdXQKPiArCSAqIHBpcGVsaW5lcyBhcyB0aGUg QlJ4IHNpbmsgY29tcG9zZSByZWN0YW5nbGVzIGRlcGVuZCBvbiB0aGUgQlJ4IHNvdXJjZQo+ICAJ ICogZm9ybWF0Lgo+ICAJICovCj4gLQlyZXQgPSB2c3AxX2R1X3BpcGVsaW5lX3NldHVwX2JydSh2 c3AxLCBwaXBlKTsKPiArCXJldCA9IHZzcDFfZHVfcGlwZWxpbmVfc2V0dXBfYnJ4KHZzcDEsIHBp cGUpOwo+ICAJaWYgKHJldCA8IDApIHsKPiAgCQlkZXZfZXJyKHZzcDEtPmRldiwgIiVzOiBmYWls ZWQgdG8gc2V0dXAgJXMgc291cmNlXG4iLCBfX2Z1bmNfXywKPiAtCQkJQlJVX05BTUUocGlwZS0+ YnJ1KSk7Cj4gKwkJCUJSWF9OQU1FKHBpcGUtPmJyeCkpOwo+ICAJCXJldHVybiByZXQ7Cj4gIAl9 Cj4gIAo+IC0JYnJ1ID0gdG9fYnJ1KCZwaXBlLT5icnUtPnN1YmRldik7Cj4gKwlicnggPSB0b19i cngoJnBpcGUtPmJyeC0+c3ViZGV2KTsKPiAgCj4gIAkvKiBTZXR1cCB0aGUgUlBGIGlucHV0IHBp cGVsaW5lIGZvciBldmVyeSBlbmFibGVkIGlucHV0LiAqLwo+IC0JZm9yIChpID0gMDsgaSA8IHBp cGUtPmJydS0+c291cmNlX3BhZDsgKytpKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgcGlwZS0+YnJ4 LT5zb3VyY2VfcGFkOyArK2kpIHsKPiAgCQlzdHJ1Y3QgdnNwMV9yd3BmICpycGYgPSBpbnB1dHNb aV07Cj4gIAo+ICAJCWlmICghcnBmKSB7Cj4gLQkJCWJydS0+aW5wdXRzW2ldLnJwZiA9IE5VTEw7 Cj4gKwkJCWJyeC0+aW5wdXRzW2ldLnJwZiA9IE5VTEw7Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0K PiAgCj4gQEAgLTM1NCwxMyArMzU0LDEzIEBAIHN0YXRpYyBpbnQgdnNwMV9kdV9waXBlbGluZV9z ZXR1cF9pbnB1dChzdHJ1Y3QgdnNwMV9kZXZpY2UgKnZzcDEsCj4gIAkJCWxpc3RfYWRkX3RhaWwo JnJwZi0+ZW50aXR5Lmxpc3RfcGlwZSwgJnBpcGUtPmVudGl0aWVzKTsKPiAgCQl9Cj4gIAo+IC0J CWJydS0+aW5wdXRzW2ldLnJwZiA9IHJwZjsKPiAtCQlycGYtPmJydV9pbnB1dCA9IGk7Cj4gLQkJ cnBmLT5lbnRpdHkuc2luayA9IHBpcGUtPmJydTsKPiArCQlicngtPmlucHV0c1tpXS5ycGYgPSBy cGY7Cj4gKwkJcnBmLT5icnhfaW5wdXQgPSBpOwo+ICsJCXJwZi0+ZW50aXR5LnNpbmsgPSBwaXBl LT5icng7Cj4gIAkJcnBmLT5lbnRpdHkuc2lua19wYWQgPSBpOwo+ICAKPiAgCQlkZXZfZGJnKHZz cDEtPmRldiwgIiVzOiBjb25uZWN0aW5nIFJQRi4ldSB0byAlczoldVxuIiwKPiAtCQkJX19mdW5j X18sIHJwZi0+ZW50aXR5LmluZGV4LCBCUlVfTkFNRShwaXBlLT5icnUpLCBpKTsKPiArCQkJX19m dW5jX18sIHJwZi0+ZW50aXR5LmluZGV4LCBCUlhfTkFNRShwaXBlLT5icngpLCBpKTsKPiAgCj4g IAkJcmV0ID0gdnNwMV9kdV9waXBlbGluZV9zZXR1cF9ycGYodnNwMSwgcGlwZSwgcnBmLCBpKTsK PiAgCQlpZiAocmV0IDwgMCkgewo+IEBAIC00NjgsNyArNDY4LDcgQEAgc3RhdGljIHZvaWQgdnNw MV9kdV9waXBlbGluZV9jb25maWd1cmUoc3RydWN0IHZzcDFfcGlwZWxpbmUgKnBpcGUpCj4gIAkJ fQo+ICAJfQo+ICAKPiAtCXZzcDFfZGxfbGlzdF9jb21taXQoZGwsIGRybV9waXBlLT5mb3JjZV9i cnVfcmVsZWFzZSk7Cj4gKwl2c3AxX2RsX2xpc3RfY29tbWl0KGRsLCBkcm1fcGlwZS0+Zm9yY2Vf YnJ4X3JlbGVhc2UpOwo+ICB9Cj4gIAo+ICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IEBAIC00 OTMsOCArNDkzLDggQEAgRVhQT1JUX1NZTUJPTF9HUEwodnNwMV9kdV9pbml0KTsKPiAgICogQGNm ZzogdGhlIExJRiBjb25maWd1cmF0aW9uCj4gICAqCj4gICAqIENvbmZpZ3VyZSB0aGUgb3V0cHV0 IHBhcnQgb2YgVlNQIERSTSBwaXBlbGluZSBmb3IgdGhlIGdpdmVuIGZyYW1lIEBjZmcud2lkdGgK PiAtICogYW5kIEBjZmcuaGVpZ2h0LiBUaGlzIHNldHMgdXAgZm9ybWF0cyBvbiB0aGUgYmxlbmQg dW5pdCAoQlJVIG9yIEJSUykgc291cmNlCj4gLSAqIHBhZCwgdGhlIFdQRiBzaW5rIGFuZCBzb3Vy Y2UgcGFkcywgYW5kIHRoZSBMSUYgc2luayBwYWQuCj4gKyAqIGFuZCBAY2ZnLmhlaWdodC4gVGhp cyBzZXRzIHVwIGZvcm1hdHMgb24gdGhlIEJSeCBzb3VyY2UgcGFkLCB0aGUgV1BGIHNpbmsgYW5k Cj4gKyAqIHNvdXJjZSBwYWRzLCBhbmQgdGhlIExJRiBzaW5rIHBhZC4KPiAgICoKPiAgICogVGhl IEBwaXBlX2luZGV4IGFyZ3VtZW50IHNlbGVjdHMgd2hpY2ggRFJNIHBpcGVsaW5lIHRvIHNldHVw LiBUaGUgbnVtYmVyIG9mCj4gICAqIGF2YWlsYWJsZSBwaXBlbGluZXMgZGVwZW5kIG9uIHRoZSBW U1AgaW5zdGFuY2UuCj4gQEAgLTUyNCwxMSArNTI0LDExIEBAIGludCB2c3AxX2R1X3NldHVwX2xp ZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlX2luZGV4LAo+ICAJcGlwZSA9 ICZkcm1fcGlwZS0+cGlwZTsKPiAgCj4gIAlpZiAoIWNmZykgewo+IC0JCXN0cnVjdCB2c3AxX2Jy dSAqYnJ1Owo+ICsJCXN0cnVjdCB2c3AxX2JyeCAqYnJ4Owo+ICAKPiAgCQltdXRleF9sb2NrKCZ2 c3AxLT5kcm0tPmxvY2spOwo+ICAKPiAtCQlicnUgPSB0b19icnUoJnBpcGUtPmJydS0+c3ViZGV2 KTsKPiArCQlicnggPSB0b19icngoJnBpcGUtPmJyeC0+c3ViZGV2KTsKPiAgCj4gIAkJLyoKPiAg CQkgKiBOVUxMIGNvbmZpZ3VyYXRpb24gbWVhbnMgdGhlIENSVEMgaXMgYmVpbmcgZGlzYWJsZWQs IHN0b3AKPiBAQCAtNTQ1LDcgKzU0NSw3IEBAIGludCB2c3AxX2R1X3NldHVwX2xpZihzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlX2luZGV4LAo+ICAJCQkJY29udGludWU7Cj4g IAo+ICAJCQkvKgo+IC0JCQkgKiBSZW1vdmUgdGhlIFJQRiBmcm9tIHRoZSBwaXBlIGFuZCB0aGUg bGlzdCBvZiBCUlUKPiArCQkJICogUmVtb3ZlIHRoZSBSUEYgZnJvbSB0aGUgcGlwZSBhbmQgdGhl IGxpc3Qgb2YgQlJ4Cj4gIAkJCSAqIGlucHV0cy4KPiAgCQkJICovCj4gIAkJCVdBUk5fT04oIXJw Zi0+ZW50aXR5LnBpcGUpOwo+IEBAIC01NTMsNyArNTUzLDcgQEAgaW50IHZzcDFfZHVfc2V0dXBf bGlmKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGVfaW5kZXgsCj4gIAkJCWxp c3RfZGVsKCZycGYtPmVudGl0eS5saXN0X3BpcGUpOwo+ICAJCQlwaXBlLT5pbnB1dHNbaV0gPSBO VUxMOwo+ICAKPiAtCQkJYnJ1LT5pbnB1dHNbcnBmLT5icnVfaW5wdXRdLnJwZiA9IE5VTEw7Cj4g KwkJCWJyeC0+aW5wdXRzW3JwZi0+YnJ4X2lucHV0XS5ycGYgPSBOVUxMOwo+ICAJCX0KPiAgCj4g IAkJZHJtX3BpcGUtPmR1X2NvbXBsZXRlID0gTlVMTDsKPiBAQCAtNTYxLDExICs1NjEsMTEgQEAg aW50IHZzcDFfZHVfc2V0dXBfbGlmKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBp cGVfaW5kZXgsCj4gIAo+ICAJCWRldl9kYmcodnNwMS0+ZGV2LCAiJXM6IHBpcGUgJXU6IHJlbGVh c2luZyAlc1xuIiwKPiAgCQkJX19mdW5jX18sIHBpcGUtPmxpZi0+aW5kZXgsCj4gLQkJCUJSVV9O QU1FKHBpcGUtPmJydSkpOwo+ICsJCQlCUlhfTkFNRShwaXBlLT5icngpKTsKPiAgCj4gLQkJbGlz dF9kZWwoJnBpcGUtPmJydS0+bGlzdF9waXBlKTsKPiAtCQlwaXBlLT5icnUtPnBpcGUgPSBOVUxM Owo+IC0JCXBpcGUtPmJydSA9IE5VTEw7Cj4gKwkJbGlzdF9kZWwoJnBpcGUtPmJyeC0+bGlzdF9w aXBlKTsKPiArCQlwaXBlLT5icngtPnBpcGUgPSBOVUxMOwo+ICsJCXBpcGUtPmJyeCA9IE5VTEw7 Cj4gIAo+ICAJCW11dGV4X3VubG9jaygmdnNwMS0+ZHJtLT5sb2NrKTsKPiAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2RybS5oIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS92c3AxL3ZzcDFfZHJtLmgKPiBpbmRleCBjODRiYzFjNDU2YzAuLmQ3MzhjYzU3 ZjBlMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9kcm0u aAo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2RybS5oCj4gQEAgLTI0 LDggKzI0LDggQEAKPiAgICogQHBpcGU6IHRoZSBWU1AxIHBpcGVsaW5lIHVzZWQgZm9yIGRpc3Bs YXkKPiAgICogQHdpZHRoOiBvdXRwdXQgZGlzcGxheSB3aWR0aAo+ICAgKiBAaGVpZ2h0OiBvdXRw dXQgZGlzcGxheSBoZWlnaHQKPiAtICogQGZvcmNlX2JydV9yZWxlYXNlOiB3aGVuIHNldCwgcmVs ZWFzZSB0aGUgQlJVIGR1cmluZyB0aGUgbmV4dCByZWNvbmZpZ3VyYXRpb24KPiAtICogQHdhaXRf cXVldWU6IHdhaXQgcXVldWUgdG8gd2FpdCBmb3IgQlJVIHJlbGVhc2UgY29tcGxldGlvbgo+ICsg KiBAZm9yY2VfYnJ4X3JlbGVhc2U6IHdoZW4gc2V0LCByZWxlYXNlIHRoZSBCUnggZHVyaW5nIHRo ZSBuZXh0IHJlY29uZmlndXJhdGlvbgo+ICsgKiBAd2FpdF9xdWV1ZTogd2FpdCBxdWV1ZSB0byB3 YWl0IGZvciBCUnggcmVsZWFzZSBjb21wbGV0aW9uCj4gICAqIEBkdV9jb21wbGV0ZTogZnJhbWUg Y29tcGxldGlvbiBjYWxsYmFjayBmb3IgdGhlIERVIGRyaXZlciAob3B0aW9uYWwpCj4gICAqIEBk dV9wcml2YXRlOiBkYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgZHVfY29tcGxldGUgY2FsbGJhY2sK PiAgICovCj4gQEAgLTM1LDcgKzM1LDcgQEAgc3RydWN0IHZzcDFfZHJtX3BpcGVsaW5lIHsKPiAg CXVuc2lnbmVkIGludCB3aWR0aDsKPiAgCXVuc2lnbmVkIGludCBoZWlnaHQ7Cj4gIAo+IC0JYm9v bCBmb3JjZV9icnVfcmVsZWFzZTsKPiArCWJvb2wgZm9yY2VfYnJ4X3JlbGVhc2U7Cj4gIAl3YWl0 X3F1ZXVlX2hlYWRfdCB3YWl0X3F1ZXVlOwo+ICAKPiAgCS8qIEZyYW1lIHN5bmNocm9uaXNhdGlv biAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9kcnYu YyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2Rydi5jCj4gaW5kZXggNThhNzk5 M2YyMzA2Li5mNDFjZDcwNDA5ZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS92c3AxL3ZzcDFfZHJ2LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNw MV9kcnYuYwo+IEBAIC0yNiw3ICsyNiw3IEBACj4gICNpbmNsdWRlIDxtZWRpYS92NGwyLXN1YmRl di5oPgo+ICAKPiAgI2luY2x1ZGUgInZzcDEuaCIKPiAtI2luY2x1ZGUgInZzcDFfYnJ1LmgiCj4g KyNpbmNsdWRlICJ2c3AxX2JyeC5oIgo+ICAjaW5jbHVkZSAidnNwMV9jbHUuaCIKPiAgI2luY2x1 ZGUgInZzcDFfZGwuaCIKPiAgI2luY2x1ZGUgInZzcDFfZHJtLmgiCj4gQEAgLTI2OSw3ICsyNjks NyBAQCBzdGF0aWMgaW50IHZzcDFfY3JlYXRlX2VudGl0aWVzKHN0cnVjdCB2c3AxX2RldmljZSAq dnNwMSkKPiAgCj4gIAkvKiBJbnN0YW50aWF0ZSBhbGwgdGhlIGVudGl0aWVzLiAqLwo+ICAJaWYg KHZzcDEtPmluZm8tPmZlYXR1cmVzICYgVlNQMV9IQVNfQlJTKSB7Cj4gLQkJdnNwMS0+YnJzID0g dnNwMV9icnVfY3JlYXRlKHZzcDEsIFZTUDFfRU5USVRZX0JSUyk7Cj4gKwkJdnNwMS0+YnJzID0g dnNwMV9icnhfY3JlYXRlKHZzcDEsIFZTUDFfRU5USVRZX0JSUyk7Cj4gIAkJaWYgKElTX0VSUih2 c3AxLT5icnMpKSB7Cj4gIAkJCXJldCA9IFBUUl9FUlIodnNwMS0+YnJzKTsKPiAgCQkJZ290byBk b25lOwo+IEBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIGludCB2c3AxX2NyZWF0ZV9lbnRpdGll cyhzdHJ1Y3QgdnNwMV9kZXZpY2UgKnZzcDEpCj4gIAl9Cj4gIAo+ICAJaWYgKHZzcDEtPmluZm8t PmZlYXR1cmVzICYgVlNQMV9IQVNfQlJVKSB7Cj4gLQkJdnNwMS0+YnJ1ID0gdnNwMV9icnVfY3Jl YXRlKHZzcDEsIFZTUDFfRU5USVRZX0JSVSk7Cj4gKwkJdnNwMS0+YnJ1ID0gdnNwMV9icnhfY3Jl YXRlKHZzcDEsIFZTUDFfRU5USVRZX0JSVSk7Cj4gIAkJaWYgKElTX0VSUih2c3AxLT5icnUpKSB7 Cj4gIAkJCXJldCA9IFBUUl9FUlIodnNwMS0+YnJ1KTsKPiAgCQkJZ290byBkb25lOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9waXBlLmMgYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9waXBlLmMKPiBpbmRleCA0ZDgxOWM5MDE5ZjQuLjQ1 ZGEzZmYxMDk1NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNw MV9waXBlLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9waXBlLmMK PiBAQCAtMjAsNyArMjAsNyBAQAo+ICAjaW5jbHVkZSA8bWVkaWEvdjRsMi1zdWJkZXYuaD4KPiAg Cj4gICNpbmNsdWRlICJ2c3AxLmgiCj4gLSNpbmNsdWRlICJ2c3AxX2JydS5oIgo+ICsjaW5jbHVk ZSAidnNwMV9icnguaCIKPiAgI2luY2x1ZGUgInZzcDFfZGwuaCIKPiAgI2luY2x1ZGUgInZzcDFf ZW50aXR5LmgiCj4gICNpbmNsdWRlICJ2c3AxX2hnby5oIgo+IEBAIC0xODgsMTEgKzE4OCwxMSBA QCB2b2lkIHZzcDFfcGlwZWxpbmVfcmVzZXQoc3RydWN0IHZzcDFfcGlwZWxpbmUgKnBpcGUpCj4g IAlzdHJ1Y3QgdnNwMV9lbnRpdHkgKmVudGl0eTsKPiAgCXVuc2lnbmVkIGludCBpOwo+ICAKPiAt CWlmIChwaXBlLT5icnUpIHsKPiAtCQlzdHJ1Y3QgdnNwMV9icnUgKmJydSA9IHRvX2JydSgmcGlw ZS0+YnJ1LT5zdWJkZXYpOwo+ICsJaWYgKHBpcGUtPmJyeCkgewo+ICsJCXN0cnVjdCB2c3AxX2Jy eCAqYnJ4ID0gdG9fYnJ4KCZwaXBlLT5icngtPnN1YmRldik7Cj4gIAo+IC0JCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKGJydS0+aW5wdXRzKTsgKytpKQo+IC0JCQlicnUtPmlucHV0c1tpXS5y cGYgPSBOVUxMOwo+ICsJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGJyeC0+aW5wdXRzKTsg KytpKQo+ICsJCQlicngtPmlucHV0c1tpXS5ycGYgPSBOVUxMOwo+ICAJfQo+ICAKPiAgCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBpcGUtPmlucHV0cyk7ICsraSkKPiBAQCAtMjA3LDcgKzIw Nyw3IEBAIHZvaWQgdnNwMV9waXBlbGluZV9yZXNldChzdHJ1Y3QgdnNwMV9waXBlbGluZSAqcGlw ZSkKPiAgCXBpcGUtPnN0YXRlID0gVlNQMV9QSVBFTElORV9TVE9QUEVEOwo+ICAJcGlwZS0+YnVm ZmVyc19yZWFkeSA9IDA7Cj4gIAlwaXBlLT5udW1faW5wdXRzID0gMDsKPiAtCXBpcGUtPmJydSA9 IE5VTEw7Cj4gKwlwaXBlLT5icnggPSBOVUxMOwo+ICAJcGlwZS0+aGdvID0gTlVMTDsKPiAgCXBp cGUtPmhndCA9IE5VTEw7Cj4gIAlwaXBlLT5saWYgPSBOVUxMOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9waXBlLmggYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL3ZzcDEvdnNwMV9waXBlLmgKPiBpbmRleCA0ODI3MTEwMjRmYTIuLjllY2E5ZmUxNjcyNCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9waXBlLmgKPiAr KysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9waXBlLmgKPiBAQCAtOTksNyAr OTksNyBAQCBzdHJ1Y3QgdnNwMV9wYXJ0aXRpb24gewo+ICAgKiBAbnVtX2lucHV0czogbnVtYmVy IG9mIFJQRnMKPiAgICogQGlucHV0czogYXJyYXkgb2YgUlBGcyBpbiB0aGUgcGlwZWxpbmUgKGlu ZGV4ZWQgYnkgUlBGIGluZGV4KQo+ICAgKiBAb3V0cHV0OiBXUEYgYXQgdGhlIG91dHB1dCBvZiB0 aGUgcGlwZWxpbmUKPiAtICogQGJydTogQlJVIGVudGl0eSwgaWYgcHJlc2VudAo+ICsgKiBAYnJ4 OiBCUnggZW50aXR5LCBpZiBwcmVzZW50Cj4gICAqIEBoZ286IEhHTyBlbnRpdHksIGlmIHByZXNl bnQKPiAgICogQGhndDogSEdUIGVudGl0eSwgaWYgcHJlc2VudAo+ICAgKiBAbGlmOiBMSUYgZW50 aXR5LCBpZiBwcmVzZW50Cj4gQEAgLTEzMCw3ICsxMzAsNyBAQCBzdHJ1Y3QgdnNwMV9waXBlbGlu ZSB7Cj4gIAl1bnNpZ25lZCBpbnQgbnVtX2lucHV0czsKPiAgCXN0cnVjdCB2c3AxX3J3cGYgKmlu cHV0c1tWU1AxX01BWF9SUEZdOwo+ICAJc3RydWN0IHZzcDFfcndwZiAqb3V0cHV0Owo+IC0Jc3Ry dWN0IHZzcDFfZW50aXR5ICpicnU7Cj4gKwlzdHJ1Y3QgdnNwMV9lbnRpdHkgKmJyeDsKPiAgCXN0 cnVjdCB2c3AxX2VudGl0eSAqaGdvOwo+ICAJc3RydWN0IHZzcDFfZW50aXR5ICpoZ3Q7Cj4gIAlz dHJ1Y3QgdnNwMV9lbnRpdHkgKmxpZjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS92c3AxL3ZzcDFfcnBmLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9y cGYuYwo+IGluZGV4IGZlMDYzM2RhNWE1Zi4uN2U3NGMyMDE1MDcwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX3JwZi5jCj4gKysrIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS92c3AxL3ZzcDFfcnBmLmMKPiBAQCAtMTY3LDEyICsxNjcsMTIgQEAgc3RhdGlj IHZvaWQgcnBmX2NvbmZpZ3VyZShzdHJ1Y3QgdnNwMV9lbnRpdHkgKmVudGl0eSwKPiAgCXZzcDFf cnBmX3dyaXRlKHJwZiwgZGwsIFZJNl9SUEZfRFNXQVAsIGZtdGluZm8tPnN3YXApOwo+ICAKPiAg CS8qIE91dHB1dCBsb2NhdGlvbiAqLwo+IC0JaWYgKHBpcGUtPmJydSkgewo+ICsJaWYgKHBpcGUt PmJyeCkgewo+ICAJCWNvbnN0IHN0cnVjdCB2NGwyX3JlY3QgKmNvbXBvc2U7Cj4gIAo+IC0JCWNv bXBvc2UgPSB2c3AxX2VudGl0eV9nZXRfcGFkX3NlbGVjdGlvbihwaXBlLT5icnUsCj4gLQkJCQkJ CQlwaXBlLT5icnUtPmNvbmZpZywKPiAtCQkJCQkJCXJwZi0+YnJ1X2lucHV0LAo+ICsJCWNvbXBv c2UgPSB2c3AxX2VudGl0eV9nZXRfcGFkX3NlbGVjdGlvbihwaXBlLT5icngsCj4gKwkJCQkJCQlw aXBlLT5icngtPmNvbmZpZywKPiArCQkJCQkJCXJwZi0+YnJ4X2lucHV0LAo+ICAJCQkJCQkJVjRM Ml9TRUxfVEdUX0NPTVBPU0UpOwo+ICAJCWxlZnQgPSBjb21wb3NlLT5sZWZ0Owo+ICAJCXRvcCA9 IGNvbXBvc2UtPnRvcDsKPiBAQCAtMTkxLDEwICsxOTEsMTAgQEAgc3RhdGljIHZvaWQgcnBmX2Nv bmZpZ3VyZShzdHJ1Y3QgdnNwMV9lbnRpdHkgKmVudGl0eSwKPiAgCSAqIGFscGhhIGNoYW5uZWwg YnkgYSBmaXhlZCBnbG9iYWwgYWxwaGEgdmFsdWUsIGFuZCBtdWx0aXBseSB0aGUgcGl4ZWwKPiAg CSAqIGNvbXBvbmVudHMgdG8gY29udmVydCB0aGUgaW5wdXQgdG8gcHJlbXVsdGlwbGllZCBhbHBo YS4KPiAgCSAqCj4gLQkgKiBBcyBhbHBoYSBwcmVtdWx0aXBsaWNhdGlvbiBpcyBhdmFpbGFibGUg aW4gdGhlIEJSVSBmb3IgYm90aCBHZW4yIGFuZAo+ICsJICogQXMgYWxwaGEgcHJlbXVsdGlwbGlj YXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBCUnggZm9yIGJvdGggR2VuMiBhbmQKPiAgCSAqIEdl bjMgd2UgaGFuZGxlIGl0IHRoZXJlIGFuZCB1c2UgdGhlIEdlbjMgYWxwaGEgbXVsdGlwbGllciBm b3IgZ2xvYmFsCj4gIAkgKiBhbHBoYSBtdWx0aXBsaWNhdGlvbiBvbmx5LiBUaGlzIGhvd2V2ZXIg cHJldmVudHMgY29udmVyc2lvbiB0bwo+IC0JICogcHJlbXVsdGlwbGllZCBhbHBoYSBpZiBubyBC UlUgaXMgcHJlc2VudCBpbiB0aGUgcGlwZWxpbmUuIElmIHRoYXQgdXNlCj4gKwkgKiBwcmVtdWx0 aXBsaWVkIGFscGhhIGlmIG5vIEJSeCBpcyBwcmVzZW50IGluIHRoZSBwaXBlbGluZS4gSWYgdGhh dCB1c2UKPiAgCSAqIGNhc2UgdHVybnMgb3V0IHRvIGJlIHVzZWZ1bCB3ZSB3aWxsIHJldmlzaXQg dGhlIGltcGxlbWVudGF0aW9uIChmb3IKPiAgCSAqIEdlbjMgb25seSkuCj4gIAkgKgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9yd3BmLmggYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9yd3BmLmgKPiBpbmRleCBjOTRhYzg5YWJmYTcuLjkx NWFlYWRiMjFkZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNw MV9yd3BmLmgKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9yd3BmLmgK PiBAQCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3QgdnNwMV9yd3BmIHsKPiAgCj4gIAlzdHJ1Y3QgdjRs Ml9waXhfZm9ybWF0X21wbGFuZSBmb3JtYXQ7Cj4gIAljb25zdCBzdHJ1Y3QgdnNwMV9mb3JtYXRf aW5mbyAqZm10aW5mbzsKPiAtCXVuc2lnbmVkIGludCBicnVfaW5wdXQ7Cj4gKwl1bnNpZ25lZCBp bnQgYnJ4X2lucHV0Owo+ICAKPiAgCXVuc2lnbmVkIGludCBhbHBoYTsKPiAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX3ZpZGVvLmMgYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV92aWRlby5jCj4gaW5kZXggNDgzYjQyNTllMWI0Li4xOTU4 ZDI0MWQxOWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFf dmlkZW8uYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX3ZpZGVvLmMK PiBAQCAtMjgsNyArMjgsNyBAQAo+ICAjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLWRtYS1jb250 aWcuaD4KPiAgCj4gICNpbmNsdWRlICJ2c3AxLmgiCj4gLSNpbmNsdWRlICJ2c3AxX2JydS5oIgo+ ICsjaW5jbHVkZSAidnNwMV9icnguaCIKPiAgI2luY2x1ZGUgInZzcDFfZGwuaCIKPiAgI2luY2x1 ZGUgInZzcDFfZW50aXR5LmgiCj4gICNpbmNsdWRlICJ2c3AxX2hnby5oIgo+IEBAIC00ODgsNyAr NDg4LDcgQEAgc3RhdGljIGludCB2c3AxX3ZpZGVvX3BpcGVsaW5lX2J1aWxkX2JyYW5jaChzdHJ1 Y3QgdnNwMV9waXBlbGluZSAqcGlwZSwKPiAgCXN0cnVjdCBtZWRpYV9lbnRpdHlfZW51bSBlbnRf ZW51bTsKPiAgCXN0cnVjdCB2c3AxX2VudGl0eSAqZW50aXR5Owo+ICAJc3RydWN0IG1lZGlhX3Bh ZCAqcGFkOwo+IC0Jc3RydWN0IHZzcDFfYnJ1ICpicnUgPSBOVUxMOwo+ICsJc3RydWN0IHZzcDFf YnJ4ICpicnggPSBOVUxMOwo+ICAJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBtZWRpYV9lbnRpdHlf ZW51bV9pbml0KCZlbnRfZW51bSwgJmlucHV0LT5lbnRpdHkudnNwMS0+bWVkaWFfZGV2KTsKPiBA QCAtNTI0LDE0ICs1MjQsMTQgQEAgc3RhdGljIGludCB2c3AxX3ZpZGVvX3BpcGVsaW5lX2J1aWxk X2JyYW5jaChzdHJ1Y3QgdnNwMV9waXBlbGluZSAqcGlwZSwKPiAgCQlpZiAoZW50aXR5LT50eXBl ID09IFZTUDFfRU5USVRZX0JSVSB8fAo+ICAJCSAgICBlbnRpdHktPnR5cGUgPT0gVlNQMV9FTlRJ VFlfQlJTKSB7Cj4gIAkJCS8qIEJSVSBhbmQgQlJTIGNhbid0IGJlIGNoYWluZWQuICovCj4gLQkJ CWlmIChicnUpIHsKPiArCQkJaWYgKGJyeCkgewo+ICAJCQkJcmV0ID0gLUVQSVBFOwo+ICAJCQkJ Z290byBvdXQ7Cj4gIAkJCX0KPiAgCj4gLQkJCWJydSA9IHRvX2JydSgmZW50aXR5LT5zdWJkZXYp Owo+IC0JCQlicnUtPmlucHV0c1twYWQtPmluZGV4XS5ycGYgPSBpbnB1dDsKPiAtCQkJaW5wdXQt PmJydV9pbnB1dCA9IHBhZC0+aW5kZXg7Cj4gKwkJCWJyeCA9IHRvX2JyeCgmZW50aXR5LT5zdWJk ZXYpOwo+ICsJCQlicngtPmlucHV0c1twYWQtPmluZGV4XS5ycGYgPSBpbnB1dDsKPiArCQkJaW5w dXQtPmJyeF9pbnB1dCA9IHBhZC0+aW5kZXg7Cj4gIAkJfQo+ICAKPiAgCQkvKiBXZSd2ZSByZWFj aGVkIHRoZSBXUEYsIHdlJ3JlIGRvbmUuICovCj4gQEAgLTU1Myw3ICs1NTMsNyBAQCBzdGF0aWMg aW50IHZzcDFfdmlkZW9fcGlwZWxpbmVfYnVpbGRfYnJhbmNoKHN0cnVjdCB2c3AxX3BpcGVsaW5l ICpwaXBlLAo+ICAJCQl9Cj4gIAo+ICAJCQlwaXBlLT51ZHMgPSBlbnRpdHk7Cj4gLQkJCXBpcGUt PnVkc19pbnB1dCA9IGJydSA/ICZicnUtPmVudGl0eSA6ICZpbnB1dC0+ZW50aXR5Owo+ICsJCQlw aXBlLT51ZHNfaW5wdXQgPSBicnggPyAmYnJ4LT5lbnRpdHkgOiAmaW5wdXQtPmVudGl0eTsKPiAg CQl9Cj4gIAo+ICAJCS8qIEZvbGxvdyB0aGUgc291cmNlIGxpbmssIGlnbm9yaW5nIGFueSBIR08g b3IgSEdULiAqLwo+IEBAIC02MTksNyArNjE5LDcgQEAgc3RhdGljIGludCB2c3AxX3ZpZGVvX3Bp cGVsaW5lX2J1aWxkKHN0cnVjdCB2c3AxX3BpcGVsaW5lICpwaXBlLAo+ICAKPiAgCQljYXNlIFZT UDFfRU5USVRZX0JSVToKPiAgCQljYXNlIFZTUDFfRU5USVRZX0JSUzoKPiAtCQkJcGlwZS0+YnJ1 ID0gZTsKPiArCQkJcGlwZS0+YnJ4ID0gZTsKPiAgCQkJYnJlYWs7Cj4gIAo+ICAJCWNhc2UgVlNQ MV9FTlRJVFlfSEdPOgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEv dnNwMV93cGYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX3dwZi5jCj4gaW5k ZXggZjdmM2I0YjJjMmRlLi43NmYyNjg2ZTI5MmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS92c3AxL3ZzcDFfd3BmLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L3ZzcDEvdnNwMV93cGYuYwo+IEBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIHZvaWQgd3BmX2Nv bmZpZ3VyZShzdHJ1Y3QgdnNwMV9lbnRpdHkgKmVudGl0eSwKPiAgCXZzcDFfZGxfbGlzdF93cml0 ZShkbCwgVkk2X1dQRl9XUkJDS19DVFJMLCAwKTsKPiAgCj4gIAkvKgo+IC0JICogU291cmNlcy4g SWYgdGhlIHBpcGVsaW5lIGhhcyBhIHNpbmdsZSBpbnB1dCBhbmQgQlJVIGlzIG5vdCB1c2VkLAo+ ICsJICogU291cmNlcy4gSWYgdGhlIHBpcGVsaW5lIGhhcyBhIHNpbmdsZSBpbnB1dCBhbmQgQlJ4 IGlzIG5vdCB1c2VkLAo+ICAJICogY29uZmlndXJlIGl0IGFzIHRoZSBtYXN0ZXIgbGF5ZXIuIE90 aGVyd2lzZSBjb25maWd1cmUgYWxsCj4gIAkgKiBpbnB1dHMgYXMgc3ViLWxheWVycyBhbmQgc2Vs ZWN0IHRoZSB2aXJ0dWFsIFJQRiBhcyB0aGUgbWFzdGVyCj4gIAkgKiBsYXllci4KPiBAQCAtNDQ3 LDEzICs0NDcsMTMgQEAgc3RhdGljIHZvaWQgd3BmX2NvbmZpZ3VyZShzdHJ1Y3QgdnNwMV9lbnRp dHkgKmVudGl0eSwKPiAgCQlpZiAoIWlucHV0KQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJc3Jj cnBmIHw9ICghcGlwZS0+YnJ1ICYmIHBpcGUtPm51bV9pbnB1dHMgPT0gMSkKPiArCQlzcmNycGYg fD0gKCFwaXBlLT5icnggJiYgcGlwZS0+bnVtX2lucHV0cyA9PSAxKQo+ICAJCQk/IFZJNl9XUEZf U1JDUlBGX1JQRl9BQ1RfTVNUKGlucHV0LT5lbnRpdHkuaW5kZXgpCj4gIAkJCTogVkk2X1dQRl9T UkNSUEZfUlBGX0FDVF9TVUIoaW5wdXQtPmVudGl0eS5pbmRleCk7Cj4gIAl9Cj4gIAo+IC0JaWYg KHBpcGUtPmJydSB8fCBwaXBlLT5udW1faW5wdXRzID4gMSkKPiAtCQlzcmNycGYgfD0gcGlwZS0+ YnJ1LT50eXBlID09IFZTUDFfRU5USVRZX0JSVQo+ICsJaWYgKHBpcGUtPmJyeCB8fCBwaXBlLT5u dW1faW5wdXRzID4gMSkKPiArCQlzcmNycGYgfD0gcGlwZS0+YnJ4LT50eXBlID09IFZTUDFfRU5U SVRZX0JSVQo+ICAJCQk/IFZJNl9XUEZfU1JDUlBGX1ZJUkFDVF9NU1QKPiAgCQkJOiBWSTZfV1BG X1NSQ1JQRl9WSVJBQ1QyX01TVDsKPiAgCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=