From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: Re: [PATCH 1/2] drm/i915: Implement I915_PERF_ADD/REMOVE_CONFIG interface Date: Sat, 8 Jul 2017 00:53:41 +0100 Message-ID: References: <20170707170838.9492-1-lionel.g.landwerlin@intel.com> <20170707170838.9492-2-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-io0-x243.google.com (mail-io0-x243.google.com [IPv6:2607:f8b0:4001:c06::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5F8D16E794 for ; Fri, 7 Jul 2017 23:54:13 +0000 (UTC) Received: by mail-io0-x243.google.com with SMTP id z62so568190ioi.0 for ; Fri, 07 Jul 2017 16:54:13 -0700 (PDT) In-Reply-To: <20170707170838.9492-2-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin Cc: Intel Graphics Development , Andrzej Datczuk , Matthew Auld List-Id: intel-gfx@lists.freedesktop.org T24gNyBKdWx5IDIwMTcgYXQgMTg6MDgsIExpb25lbCBMYW5kd2VybGluCjxsaW9uZWwuZy5sYW5k d2VybGluQGludGVsLmNvbT4gd3JvdGU6Cj4gRnJvbTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1 bGRAaW50ZWwuY29tPgo+Cj4gVGhlIG1vdGl2YXRpb24gYmVoaW5kIHRoaXMgbmV3IGludGVyZmFj ZSBpcyBleHBvc2UgYXQgcnVudGltZSB0aGUKPiBjcmVhdGlvbiBvZiBuZXcgT0EgY29uZmlncyB3 aGljaCBjYW4gYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBpOTE1IHBlcmYKPiBvcGVuIGludGVyZmFj ZS4gVGhpcyB3aWxsIGVuYWJsZSB0aGUga2VybmVsIHRvIGxlYXJuIG5ldyBjb25maWdzIHdoaWNo Cj4gbWF5IGJlIGV4cGVyaW1lbnRhbCwgb3Igb3RoZXJ3aXNlIG5vdCBwYXJ0IG9mIHRoZSBjb3Jl IHNldCBjdXJyZW50bHkKPiBhdmFpbGFibGUgdGhyb3VnaCB0aGUgaTkxNSBwZXJmIGludGVyZmFj ZS4KPgo+IFRoaXMgd2lsbCByZWxpZXZlIHRoZSBrZXJuZWwgZnJvbSBob2xkaW5nIGFsbCB0aGUg cG9zc2libGUgY29uZmlncywgc28KPiB3ZSBjYW4gbGVhdmUgb25seSB0aGUgdGVzdCBjb25maWdz IGhlcmUuCj4KPiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRl bC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3 ZXJsaW5AaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEFuZHJ6ZWogRGF0Y3p1ayA8YW5kcnpl ai5kYXRjenVrQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYyAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICB8ICAzMCAr KysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgfCAzOTEgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggIHwgICAyICsKPiAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgfCAgMjEg KysrCj4gIDUgZmlsZXMgY2hhbmdlZCwgNDQxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCBkMzEwZDgyNDVkY2EuLmEzZDMzOTY3 MGVjMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC0yNzMwLDYgKzI3MzAsOCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGk5MTVfaW9jdGxzW10gPSB7Cj4g ICAgICAgICBEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9DT05URVhUX0dFVFBBUkFNLCBpOTE1 X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKPiAgICAgICAg IERSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX0NPTlRFWFRfU0VUUEFSQU0sIGk5MTVfZ2VtX2Nv bnRleHRfc2V0cGFyYW1faW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAo+ICAgICAgICAgRFJNX0lP Q1RMX0RFRl9EUlYoSTkxNV9QRVJGX09QRU4sIGk5MTVfcGVyZl9vcGVuX2lvY3RsLCBEUk1fUkVO REVSX0FMTE9XKSwKPiArICAgICAgIERSTV9JT0NUTF9ERUZfRFJWKEk5MTVfUEVSRl9BRERfQ09O RklHLCBpOTE1X3BlcmZfYWRkX2NvbmZpZ19pb2N0bCwgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJf QUxMT1cpLAo+ICsgICAgICAgRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9QRVJGX1JFTU9WRV9DT05G SUcsIGk5MTVfcGVyZl9yZW1vdmVfY29uZmlnX2lvY3RsLCBEUk1fVU5MT0NLRUR8RFJNX1JFTkRF Ul9BTExPVyksCj4gIH07Cj4KPiAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA4MWNkMjFlY2ZhN2QuLmNlNzMzYzJkYjk2 MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yMDA5LDYgKzIwMDksMTEgQEAg c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gewo+ICAgICAgICAgICogdHlwZSBvZiBjb25maWd1cmVk IHN0cmVhbS4KPiAgICAgICAgICAqLwo+ICAgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfcGVyZl9z dHJlYW1fb3BzICpvcHM7Cj4gKwo+ICsgICAgICAgLyoqCj4gKyAgICAgICAgKiBAbWV0cmljc19z ZXQ6IFRoZSBJRCBvZiB0aGUgY29uZmlnIHVzZWQgYnkgdGhlIHN0cmVhbS4KPiArICAgICAgICAq Lwo+ICsgICAgICAgaW50IG1ldHJpY3Nfc2V0Owo+ICB9Owo+Cj4gIC8qKgo+IEBAIC0yMDE2LDYg KzIwMjEsMjUgQEAgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gewo+ICAgKi8KPiAgc3RydWN0IGk5 MTVfb2Ffb3BzIHsKPiAgICAgICAgIC8qKgo+ICsgICAgICAgICogQGlzX3ZhbGlkX2JfY291bnRl cl9yZWc6IFZhbGlkYXRlcyByZWdpc3RlcidzIGFkZHJlc3MgZm9yCj4gKyAgICAgICAgKiBwcm9n cmFtbWluZyBib29sZWFuIGNvdW50ZXJzIGZvciBhIHBhcnRpY3VsYXIgcGxhdGZvcm0uCj4gKyAg ICAgICAgKi8KPiArICAgICAgIGJvb2wgKCppc192YWxpZF9iX2NvdW50ZXJfcmVnKShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdTMyIGFkZHIpOwo+ICsKPiArICAgICAgIC8qKgo+ICsgICAgICAgICogQGlz X3ZhbGlkX211eF9yZWc6IFZhbGlkYXRlcyByZWdpc3RlcidzIGFkZHJlc3MgZm9yIHByb2dyYW1t aW5nIG11eAo+ICsgICAgICAgICogZm9yIGEgcGFydGljdWxhciBwbGF0Zm9ybS4KPiArICAgICAg ICAqLwo+ICsgICAgICAgYm9vbCAoKmlzX3ZhbGlkX211eF9yZWcpKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpOwo+ICsKPiArICAgICAgIC8qKgo+ICsgICAgICAg ICogQGlzX3ZhbGlkX2ZsZXhfcmVnOiBWYWxpZGF0ZXMgcmVnaXN0ZXIncyBhZGRyZXNzIGZvciBw cm9ncmFtbWluZwo+ICsgICAgICAgICogZmxleCBFVSBmaWx0ZXJpbmcgZm9yIGEgcGFydGljdWxh ciBwbGF0Zm9ybS4KPiArICAgICAgICAqLwo+ICsgICAgICAgYm9vbCAoKmlzX3ZhbGlkX2ZsZXhf cmVnKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRyKTsKPiArCj4g KyAgICAgICAvKioKPiAgICAgICAgICAqIEBpbml0X29hX2J1ZmZlcjogUmVzZXRzIHRoZSBoZWFk IGFuZCB0YWlsIHBvaW50ZXJzIG9mIHRoZQo+ICAgICAgICAgICogY2lyY3VsYXIgYnVmZmVyIGZv ciBwZXJpb2RpYyBPQSByZXBvcnRzLgo+ICAgICAgICAgICoKPiBAQCAtMjQxMyw2ICsyNDM3LDgg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXV0 ZXggbG9jazsKPiAgICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzdHJlYW1zOwo+Cj4g KyAgICAgICAgICAgICAgIHN0cnVjdCBpZHIgbWV0cmljc19pZHI7Cj4gKwo+ICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpleGNsdXNpdmVfc3RyZWFtOwo+Cj4gQEAgLTM1ODksNiArMzYxNSwxMCBAQCBpOTE1 X2dlbV9jb250ZXh0X2xvb2t1cF90aW1lbGluZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LAo+Cj4gIGludCBpOTE1X3BlcmZfb3Blbl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpOwo+ICtpbnQgaTkxNV9wZXJmX2FkZF9jb25maWdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRybV9maWxlICpmaWxlKTsKPiAraW50IGk5MTVfcGVyZl9yZW1vdmVfY29uZmlnX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7Cj4gIHZvaWQgaTkxNV9vYV9pbml0 X3JlZ19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpyZWdfc3RhdGUpOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcGVyZi5jCj4gaW5kZXggZDlmNzdhNGQ4NWRiLi45MmNiNmE3NTY4ZTcgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0zNTcsNiArMzU3LDIzIEBAIHN0cnVjdCBwZXJmX29w ZW5fcHJvcGVydGllcyB7Cj4gICAgICAgICBpbnQgb2FfcGVyaW9kX2V4cG9uZW50Owo+ICB9Owo+ Cj4gK3N0cnVjdCBpOTE1X29hX2R5bmFtaWNfY29uZmlnCj4gK3sKPiArICAgICAgIGNoYXIgZ3Vp ZFs0MF07CnMvZ3VpZC91dWlkLyB0byBiZSBjb25zaXN0ZW50IHdpdGggZWxzZXdoZXJlPwoKPiAr ICAgICAgIGludCBpZDsKPiArCj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKm11 eF9yZWdzOwo+ICsgICAgICAgaW50IG11eF9yZWdzX2xlbjsKPiArICAgICAgIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyAqYl9jb3VudGVyX3JlZ3M7Cj4gKyAgICAgICBpbnQgYl9jb3VudGVyX3Jl Z3NfbGVuOwo+ICsgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICpmbGV4X3JlZ3M7Cj4g KyAgICAgICBpbnQgZmxleF9yZWdzX2xlbjsKPiArCj4gKyAgICAgICBzdHJ1Y3QgYXR0cmlidXRl X2dyb3VwIHN5c2ZzX21ldHJpYzsKPiArICAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzWzJd Owo+ICsgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgc3lzZnNfbWV0cmljX2lkOwo+ICt9 Owo+ICsKPiAgc3RhdGljIHUzMiBnZW44X29hX2h3X3RhaWxfcmVhZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgICAgICAgIHJldHVybiBJOTE1X1JFQUQoR0VOOF9P QVRBSUxQVFIpICYgR0VOOF9PQVRBSUxQVFJfTUFTSzsKPiBAQCAtMTQ1MSwxMSArMTQ2OCwzOSBA QCBzdGF0aWMgdm9pZCBjb25maWdfb2FfcmVncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gICAgICAgICB9Cj4gIH0KPgo+ICtpbnQgc2VsZWN0X2R5bmFtaWNfbWV0cmljX3Nl dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpClNob3VsZCBiZSBzdGF0aWMuCgo+ ICt7Cj4gKyAgICAgICBzdHJ1Y3QgaTkxNV9vYV9keW5hbWljX2NvbmZpZyAqb2FfY29uZmlnOwo+ ICsKPiArICAgICAgIG9hX2NvbmZpZyA9IGlkcl9maW5kKCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2lkciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm1l dHJpY3Nfc2V0KTsKPiArICAgICAgIGlmICghb2FfY29uZmlnKSB7Cj4gKyAgICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGRldl9wcml2LT5wZXJm Lm9hLm5fbXV4X2NvbmZpZ3MgPSAxOwo+ICsgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NbMF0gPSBvYV9jb25maWctPm11eF9yZWdzOwo+ICsgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVuc1swXSA9IG9hX2NvbmZpZy0+bXV4X3JlZ3NfbGVuOwo+ICsKPiArICAgICAg IGRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0gb2FfY29uZmlnLT5iX2NvdW50ZXJf cmVnczsKPiArICAgICAgIGRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9IG9h X2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3NfbGVuOwo+ICsKPiArICAgICAgIGRldl9wcml2LT5wZXJm Lm9hLmZsZXhfcmVncyA9IG9hX2NvbmZpZy0+ZmxleF9yZWdzOwo+ICsgICAgICAgZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzX2xlbiA9IG9hX2NvbmZpZy0+ZmxleF9yZWdzX2xlbjsKPiArCj4g KyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBoc3dfZW5hYmxlX21ldHJp Y19zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLSAgICAgICBp bnQgcmV0ID0gaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9oc3coZGV2X3ByaXYpOwo+ICsgICAg ICAgaW50IHJldDsKPiAgICAgICAgIGludCBpOwo+Cj4gKyAgICAgICBpZiAoZGV2X3ByaXYtPnBl cmYub2EubWV0cmljc19zZXQgPiBkZXZfcHJpdi0+cGVyZi5vYS5uX2J1aWx0aW5fc2V0cykKPiAr ICAgICAgICAgICAgICAgcmV0ID0gc2VsZWN0X2R5bmFtaWNfbWV0cmljX3NldChkZXZfcHJpdik7 Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIHJldCA9IGk5MTVfb2Ffc2VsZWN0X21l dHJpY19zZXRfaHN3KGRldl9wcml2KTsKPiArCj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+Cj4gQEAgLTE3NzYsOCArMTgyMSwxMiBAQCBzdGF0aWMgaW50 IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4KPiAgc3RhdGljIGludCBnZW44X2VuYWJsZV9tZXRyaWNfc2V0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0gICAgICAgaW50IHJldCA9IGRldl9wcml2 LT5wZXJmLm9hLm9wcy5zZWxlY3RfbWV0cmljX3NldChkZXZfcHJpdik7Cj4gLSAgICAgICBpbnQg aTsKPiArICAgICAgIGludCByZXQsIGk7Cj4gKwo+ICsgICAgICAgaWYgKGRldl9wcml2LT5wZXJm Lm9hLm1ldHJpY3Nfc2V0ID4gZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMpCj4gKyAg ICAgICAgICAgICAgIHJldCA9IHNlbGVjdF9keW5hbWljX21ldHJpY19zZXQoZGV2X3ByaXYpOwo+ ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICByZXQgPSBkZXZfcHJpdi0+cGVyZi5vYS5v cHMuc2VsZWN0X21ldHJpY19zZXQoZGV2X3ByaXYpOwo+Cj4gICAgICAgICBpZiAocmV0KQo+ICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+IEBAIC0yMDU1LDcgKzIxMDQsNyBAQCBzdGF0aWMg aW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwK PiAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXQgPQo+ICAgICAgICAg ICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzW3Byb3BzLT5vYV9mb3JtYXRdLmZv cm1hdDsKPgo+IC0gICAgICAgZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQgPSBwcm9wcy0+ bWV0cmljc19zZXQ7Cj4gKyAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tZXRyaWNzX3NldCA9IHN0 cmVhbS0+bWV0cmljc19zZXQgPSBwcm9wcy0+bWV0cmljc19zZXQ7Cj4KPiAgICAgICAgIGRldl9w cml2LT5wZXJmLm9hLnBlcmlvZGljID0gcHJvcHMtPm9hX3BlcmlvZGljOwo+ICAgICAgICAgaWYg KGRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljKQo+IEBAIC0yNzEzLDcgKzI3NjIsOSBAQCBzdGF0 aWMgaW50IHJlYWRfcHJvcGVydGllc191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgICAg ICAgIGNhc2UgRFJNX0k5MTVfUEVSRl9QUk9QX09BX01FVFJJQ1NfU0VUOgo+ICAgICAgICAgICAg ICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAwIHx8Cj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZhbHVlID4gZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMpIHsKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID4gZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGlu X3NldHMgJiYKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkcl9maW5kKCZkZXZfcHJp di0+cGVyZi5tZXRyaWNzX2lkciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZhbHVlKSA9PSBOVUxMKSkgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RFJNX0RFQlVHKCJVbmtub3duIE9BIG1ldHJpYyBzZXQgSURcbiIpOwo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gICAgICAgICAgICAgICAgICAgICAg ICAgfQo+IEBAIC0yOTU3LDYgKzMwMDgsMzIxIEBAIHZvaWQgaTkxNV9wZXJmX3VucmVnaXN0ZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgICAgICAgZGV2X3ByaXYtPnBl cmYubWV0cmljc19rb2JqID0gTlVMTDsKPiAgfQo+Cj4gK3N0YXRpYyBib29sIGdlbjhfaXNfdmFs aWRfZmxleF9hZGRyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIp Cj4gK3sKPiArICAgICAgIHN0YXRpYyBjb25zdCBpOTE1X3JlZ190IGZsZXhfZXVfcmVnc1tdID0g ewo+ICsgICAgICAgICAgICAgICBFVV9QRVJGX0NOVEwwLAo+ICsgICAgICAgICAgICAgICBFVV9Q RVJGX0NOVEwxLAo+ICsgICAgICAgICAgICAgICBFVV9QRVJGX0NOVEwyLAo+ICsgICAgICAgICAg ICAgICBFVV9QRVJGX0NOVEwzLAo+ICsgICAgICAgICAgICAgICBFVV9QRVJGX0NOVEw0LAo+ICsg ICAgICAgICAgICAgICBFVV9QRVJGX0NOVEw1LAo+ICsgICAgICAgICAgICAgICBFVV9QRVJGX0NO VEw2LAo+ICsgICAgICAgfTsKPiArICAgICAgIGludCBpOwo+ICsKPiArICAgICAgIGZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGZsZXhfZXVfcmVncyk7IGkrKykgewo+ICsgICAgICAgICAgICAg ICBpZiAoZmxleF9ldV9yZWdzW2ldLnJlZyA9PSBhZGRyKQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOwo+ICsgICAgICAgfQo+ICsgICAgICAgcmV0dXJuIGZhbHNlOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgYm9vbCBnZW43X2lzX3ZhbGlkX2JfY291bnRlcl9hZGRyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpCj4gK3sKPiArICAgICAgIHJldHVy biAoYWRkciA+PSAweDIzODAgJiYgYWRkciA8PSAweDI3YWMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg Ym9vbCBnZW43X2lzX3ZhbGlkX211eF9hZGRyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTMyIGFkZHIpCj4gK3sKPiArICAgICAgIHJldHVybiBhZGRyID09IE5PQV9XUklURS5y ZWcgfHwKPiArICAgICAgICAgICAgICAgKGFkZHIgPj0gMHhkMGMgJiYgYWRkciA8PSAweGQzYykg fHwKPiArICAgICAgICAgICAgICAgKGFkZHIgPj0gMHgyNTEwMCAmJiBhZGRyIDw9IDB4MkZCOUMp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBoc3dfaXNfdmFsaWRfbXV4X2FkZHIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcikKPiArewo+ICsgICAgICAgcmV0dXJu IChhZGRyID49IDB4MjUxMDAgJiYgYWRkciA8PSAweDJGRjkwKSB8fAo+ICsgICAgICAgICAgICAg ICBnZW43X2lzX3ZhbGlkX211eF9hZGRyKGRldl9wcml2LCBhZGRyKTsKPiArfQo+ICsKPiArc3Rh dGljIGJvb2wgY2h2X2lzX3ZhbGlkX211eF9hZGRyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyIGFkZHIpCj4gK3sKPiArICAgICAgIHJldHVybiAoYWRkciA+PSAweDE4MjMw MCAmJiBhZGRyIDw9IDB4MTgyM0E0KSB8fAo+ICsgICAgICAgICAgICAgICBnZW43X2lzX3ZhbGlk X211eF9hZGRyKGRldl9wcml2LCBhZGRyKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBpOTE1 X29hX3JlZyAqYWxsb2Nfb2FfcmVncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICgqaXNfdmFs aWQpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIF9fdXNlciAqcmVncywKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBuX3JlZ3MpCj4gK3sK PiArICAgICAgIGludCBlcnI7Cj4gKyAgICAgICBpbnQgaTsKPiArICAgICAgIHN0cnVjdCBpOTE1 X29hX3JlZyAqb2FfcmVnczsKTWF5YmUgcmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlc2U/Cgo+ICsK PiArICAgICAgIGlmICghbl9yZWdzKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQ2Fs bGVyIGV4cGVjdHMgRVJSX1BUUi4KCj4gKwo+ICsgICAgICAgaWYgKCFpc192YWxpZCkKPiArICAg ICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CkdFTV9CVUdfT04oIWlzX3ZhbGlk KTsKCj4gKwo+ICsgICAgICAgb2FfcmVncyA9IGttYWxsb2Moc2l6ZW9mKCpvYV9yZWdzKSAqIG5f cmVncywgR0ZQX0tFUk5FTCk7Cj4gKyAgICAgICBpZiAoIW9hX3JlZ3MpCj4gKyAgICAgICAgICAg ICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkg PCBuX3JlZ3M7IGkrKykgewo+ICsgICAgICAgICAgICAgICBpbnQgcmV0Owo+ICsgICAgICAgICAg ICAgICB1MzIgYWRkciwgdmFsdWU7Cj4gKwo+ICsgICAgICAgICAgICAgICByZXQgPSBnZXRfdXNl cihhZGRyLCByZWdzKTsKPiArICAgICAgICAgICAgICAgaWYgKHJldCkgewpHZXQgcmlkIG9mIHJl dCwgYW5kIHVzZSBlcnIgaGVyZSBhbmQgYmVsb3c/Cgo+ICsgICAgICAgICAgICAgICAgICAgICAg IGVyciA9IHJldDsKPiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGFkZHJfZXJyOwo+ICsg ICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoIWlzX3ZhbGlkKGRldl9w cml2LCBhZGRyKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigiSW52YWxp ZCBvYV9yZWcgYWRkcmVzczogJVhcbiIsIGFkZHIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAg IGVyciA9IC1FSU5WQUw7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBhZGRyX2VycjsK PiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgcmV0ID0gZ2V0X3VzZXIo dmFsdWUsIHJlZ3MgKyAxKTsKPiArICAgICAgICAgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGVyciA9IHJldDsKPiArICAgICAgICAgICAgICAgICAgICAgICBnb3Rv IHZhbHVlX2VycjsKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgb2Ff cmVnc1tpXS5hZGRyID0gX01NSU8oYWRkcik7Cj4gKyAgICAgICAgICAgICAgIG9hX3JlZ3NbaV0u dmFsdWUgPSB2YWx1ZTsKPiArCj4gKyAgICAgICAgICAgICAgIHJlZ3MgKz0gMjsKPiArICAgICAg IH0KPiArCj4gKyAgICAgICByZXR1cm4gb2FfcmVnczsKPiArCj4gK2FkZHJfZXJyOgo+ICt2YWx1 ZV9lcnI6ClNxdWFzaCB0aGVzZT8KCj4gKyAgICAgICBrZnJlZShvYV9yZWdzKTsKPiArICAgICAg IHJldHVybiBFUlJfUFRSKGVycik7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IHNob3dfZHlu YW1pY19pZChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGFyICpidWYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBpOTE1X29hX2R5bmFt aWNfY29uZmlnICpvYV9jb25maWcgPQo+ICsgICAgICAgICAgICAgICBjb250YWluZXJfb2YoYXR0 ciwgdHlwZW9mKCpvYV9jb25maWcpLCBzeXNmc19tZXRyaWNfaWQpOwo+ICsKPiArICAgICAgIHJl dHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBvYV9jb25maWctPmlkKTsKPiArfQo+ICsKPiArc3Rh dGljIGludCBjcmVhdGVfZHluYW1pY19vYV9zeXNmc19lbnRyeShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaTkxNV9vYV9keW5hbWljX2NvbmZpZyAqb2FfY29uZmlnKQo+ICt7Cj4gKyAgICAg ICBvYV9jb25maWctPnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOwo+ICsgICAgICAg b2FfY29uZmlnLT5zeXNmc19tZXRyaWNfaWQuYXR0ci5tb2RlID0gU19JUlVHTzsKPiArICAgICAg IG9hX2NvbmZpZy0+c3lzZnNfbWV0cmljX2lkLnNob3cgPSBzaG93X2R5bmFtaWNfaWQ7Cj4gKyAg ICAgICBvYV9jb25maWctPnN5c2ZzX21ldHJpY19pZC5zdG9yZSA9IE5VTEw7Cj4gKwo+ICsgICAg ICAgb2FfY29uZmlnLT5hdHRyc1swXSA9ICZvYV9jb25maWctPnN5c2ZzX21ldHJpY19pZC5hdHRy Owo+ICsgICAgICAgb2FfY29uZmlnLT5hdHRyc1sxXSA9IE5VTEw7Cj4gKwo+ICsgICAgICAgb2Ff Y29uZmlnLT5zeXNmc19tZXRyaWMubmFtZSA9IG9hX2NvbmZpZy0+Z3VpZDsKPiArICAgICAgIG9h X2NvbmZpZy0+c3lzZnNfbWV0cmljLmF0dHJzID0gb2FfY29uZmlnLT5hdHRyczsKPiArCj4gKyAg ICAgICByZXR1cm4gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9hX2NvbmZpZy0+c3lzZnNf bWV0cmljKTsKPiArfQo+ICsKPiAraW50IGk5MTVfcGVyZl9hZGRfY29uZmlnX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiArewo+ICsgICAgICAgaW50IGVycjsKTW92 ZSB0aGlzIGFuZCBpZCB0byB0aGUgZW5kIG9mIHRoZSBibG9jaz8KCj4gKyAgICAgICBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsgICAgICAg c3RydWN0IGRybV9pOTE1X3BlcmZfb2FfY29uZmlnICphcmdzID0gZGF0YTsKPiArICAgICAgIHN0 cnVjdCBpOTE1X29hX2R5bmFtaWNfY29uZmlnICpvYV9jb25maWcsICp0bXA7Cj4gKyAgICAgICBp bnQgaWQ7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgeDEsIHgyLCB4MywgeDQsIHg1Owo+ICsKPiAr ICAgICAgIGlmICghZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQpIHsKPiArICAgICAgICAgICAg ICAgRFJNX0RFQlVHKCJpOTE1IHBlcmYgaW50ZXJmYWNlIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMg c3lzdGVtXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9UU1VQUDsKPiArICAgICAg IH0KPiArCmlmICghZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqKSB7Cgp9Cgo+ICsgICAgICAg aWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9FUlJP UigiSW5zdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gYWRkIGk5MTUgT0EgY29uZmlnXG4iKTsKPiAr ICAgICAgICAgICAgICAgcmV0dXJuIC1FQUNDRVM7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAg aWYgKCghYXJncy0+bXV4X3JlZ3MgfHwgIWFyZ3MtPm5fbXV4X3JlZ3MpICYmCj4gKyAgICAgICAg ICAgKCFhcmdzLT5ib29sZWFuX3JlZ3MgfHwgIWFyZ3MtPm5fYm9vbGVhbl9yZWdzKSAmJgo+ICsg ICAgICAgICAgICghYXJncy0+ZmxleF9yZWdzIHx8ICFhcmdzLT5uX2ZsZXhfcmVncykpIHsKPiAr ICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJObyBPQSByZWdpc3RlcnMgZ2l2ZW5cbiIpOwo+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBv YV9jb25maWcgPSBremFsbG9jKHNpemVvZigqb2FfY29uZmlnKSwgR0ZQX0tFUk5FTCk7Cj4gKyAg ICAgICBpZiAoIW9hX2NvbmZpZykgewo+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxl ZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBPQSBjb25maWdcbiIpOwo+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBlcnIgPSBzdHJu Y3B5X2Zyb21fdXNlcihvYV9jb25maWctPmd1aWQsIHU2NF90b191c2VyX3B0cihhcmdzLT51dWlk KSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihvYV9jb25maWctPmd1 aWQpKTsKPiArICAgICAgIGlmIChlcnIgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9FUlJP UigiRmFpbGVkIHRvIGNvcHkgdXVpZCBmcm9tIE9BIGNvbmZpZ1xuIik7Cj4gKyAgICAgICAgICAg ICAgIGdvdG8gdXVpZF9lcnI7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKHNzY2FuZihv YV9jb25maWctPmd1aWQsICIlMDh4LSUwNHgtJTA0eC0lMDR4LSUwMTJ4IiwgJngxLCAmeDIsICZ4 MywKPiArICAgICAgICAgICAgICAgICAgJng0LCAmeDUpICE9IDUpIHsKPiArICAgICAgICAgICAg ICAgRFJNX0VSUk9SKCJJbnZhbGlkIHV1aWQgZm9ybWF0IGZvciBPQSBjb25maWdcbiIpOwo+ICsg ICAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgICBnb3RvIHV1aWRf ZXJyOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG9hX2NvbmZpZy0+bXV4X3JlZ3NfbGVuID0g YXJncy0+bl9tdXhfcmVnczsKPiArICAgICAgIG9hX2NvbmZpZy0+bXV4X3JlZ3MgPQo+ICsgICAg ICAgICAgICAgICBhbGxvY19vYV9yZWdzKGRldl9wcml2LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9tdXhfcmVnLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHU2NF90b191c2VyX3B0cihhcmdzLT5tdXhfcmVncyks Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+bl9tdXhfcmVncyk7Cj4gKwo+ ICsgICAgICAgaWYgKElTX0VSUihvYV9jb25maWctPm11eF9yZWdzKSkgewo+ICsgICAgICAgICAg ICAgICBEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgT0EgY29uZmlnIGZvciBtdXhfcmVnc1xu Iik7Cj4gKyAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIob2FfY29uZmlnLT5tdXhfcmVncyk7 Cj4gKyAgICAgICAgICAgICAgIGdvdG8gbXV4X2VycjsKPiArICAgICAgIH0KPiArCj4gKyAgICAg ICBvYV9jb25maWctPmJfY291bnRlcl9yZWdzX2xlbiA9IGFyZ3MtPm5fYm9vbGVhbl9yZWdzOwo+ ICsgICAgICAgb2FfY29uZmlnLT5iX2NvdW50ZXJfcmVncyA9Cj4gKyAgICAgICAgICAgICAgIGFs bG9jX29hX3JlZ3MoZGV2X3ByaXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2 X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX2JfY291bnRlcl9yZWcsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPmJvb2xlYW5fcmVncyksCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+bl9ib29sZWFuX3JlZ3MpOwo+ICsK PiArICAgICAgIGlmIChJU19FUlIob2FfY29uZmlnLT5iX2NvdW50ZXJfcmVncykpIHsKPiArICAg ICAgICAgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIE9BIGNvbmZpZyBmb3IgYl9j b3VudGVyX3JlZ3NcbiIpOwo+ICsgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKG9hX2NvbmZp Zy0+Yl9jb3VudGVyX3JlZ3MpOwo+ICsgICAgICAgICAgICAgICBnb3RvIGJvb2xlYW5fZXJyOwo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkgewo+ ICsgICAgICAgICAgICAgICBpZiAoYXJncy0+bl9mbGV4X3JlZ3MgIT0gMCkKPiArICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIGZsZXhfZXJyOwo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAg ICAgICAgICAgb2FfY29uZmlnLT5mbGV4X3JlZ3NfbGVuID0gYXJncy0+bl9mbGV4X3JlZ3M7Cj4g KyAgICAgICAgICAgICAgIG9hX2NvbmZpZy0+ZmxleF9yZWdzID0KPiArICAgICAgICAgICAgICAg ICAgICAgICBhbGxvY19vYV9yZWdzKGRldl9wcml2LAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX2ZsZXhfcmVnLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0X3RvX3VzZXJfcHRyKGFy Z3MtPmZsZXhfcmVncyksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh cmdzLT5uX2ZsZXhfcmVncyk7Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoSVNfRVJSKG9hX2Nv bmZpZy0+ZmxleF9yZWdzKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigi RmFpbGVkIHRvIGNyZWF0ZSBPQSBjb25maWcgZm9yIGZsZXhfcmVnc1xuIik7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihvYV9jb25maWctPmZsZXhfcmVncyk7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZ290byBmbGV4X2VycjsKPiArICAgICAgICAgICAgICAgfQo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIGVyciA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRp YmxlKGRldik7Cj4gKyAgICAgICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAgICBnb3RvIGxvY2tf ZXJyOwo+ICsKPiArICAgICAgIGlkcl9mb3JfZWFjaF9lbnRyeSgmZGV2X3ByaXYtPnBlcmYubWV0 cmljc19pZHIsIHRtcCwgaWQpIHsKPiArICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAodG1wLT5n dWlkLCBvYV9jb25maWctPmd1aWQpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgRFJNX0VS Uk9SKCJPQSBjb25maWcgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGlzIHV1aWRcbiIpOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGVyciA9IC1FQUREUklOVVNFOwo+ICsgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gc3lzZnNfZXJyOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9Cj4g Kwo+ICsgICAgICAgZXJyID0gY3JlYXRlX2R5bmFtaWNfb2Ffc3lzZnNfZW50cnkoZGV2X3ByaXYs IG9hX2NvbmZpZyk7Cj4gKyAgICAgICBpZiAoZXJyKSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9F UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBzeXNmcyBlbnRyeSBmb3IgT0EgY29uZmlnXG4iKTsKPiAr ICAgICAgICAgICAgICAgZ290byBzeXNmc19lcnI7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAg b2FfY29uZmlnLT5pZCA9IGlkcl9hbGxvYygmZGV2X3ByaXYtPnBlcmYubWV0cmljc19pZHIsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9hX2NvbmZpZywKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMg KyAxLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBHRlBfS0VSTkVMKTsK SG1tLCBJIHRoaW5rIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHRoZSBwb3NzaWJsZSBlcnJvciBoZXJl IGFuZCB1bndpbmQKYWNjb3JkaW5nbHkuCgo+ICsKPiArICAgICAgIG11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArICAgICAgIHJldHVybiBvYV9jb25maWctPmlkOwo+ICsK PiArc3lzZnNfZXJyOgo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gK2xvY2tfZXJyOgo+ICsgICAgICAga2ZyZWUob2FfY29uZmlnLT5mbGV4X3JlZ3MpOwo+ICtm bGV4X2VycjoKPiArICAgICAgIGtmcmVlKG9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3MpOwo+ICti b29sZWFuX2VycjoKPiArICAgICAgIGtmcmVlKG9hX2NvbmZpZy0+bXV4X3JlZ3MpOwo+ICttdXhf ZXJyOgo+ICt1dWlkX2VycjoKU3F1YXNoIHRoZXNlPwoKPiArICAgICAgIGtmcmVlKG9hX2NvbmZp Zyk7Cj4gKwo+ICsgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWRkIG5ldyBPQSBjb25maWdc biIpOwo+ICsgICAgICAgcmV0dXJuIGVycjsKPiArfQo+ICsKPiAraW50IGk5MTVfcGVyZl9yZW1v dmVfY29uZmlnX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAr ewo+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiArICAgICAgIHU2NCAqYXJnID0gZGF0YTsKaW50IGlkID0gKmRhdGE7Cgo+ICsg ICAgICAgc3RydWN0IGk5MTVfb2FfZHluYW1pY19jb25maWcgKm9hX2NvbmZpZzsKPiArICAgICAg IGludCByZXQ7Cj4gKwo+ICsgICAgICAgaWYgKCFkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCkg ewo+ICsgICAgICAgICAgICAgICBEUk1fREVCVUcoImk5MTUgcGVyZiBpbnRlcmZhY2Ugbm90IGF2 YWlsYWJsZSBmb3IgdGhpcyBzeXN0ZW1cbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVO T1RTVVBQOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmICghY2FwYWJsZShDQVBfU1lTX0FE TUlOKSkgewo+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoIkluc3VmZmljaWVudCBwcml2aWxl Z2VzIHRvIHJlbW92ZSBpOTE1IE9BIGNvbmZpZ1xuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVy biAtRUFDQ0VTOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9IGk5MTVfbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlKGRldik7Cj4gKyAgICAgICBpZiAocmV0KQo+ICsgICAgICAgICAgICAg ICBnb3RvIGxvY2tfZXJyOwo+ICsKPiArICAgICAgIGlmIChkZXZfcHJpdi0+cGVyZi5vYS5leGNs dXNpdmVfc3RyZWFtICYmCj4gKyAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZl X3N0cmVhbS0+bWV0cmljc19zZXQgPT0gKmFyZykgewo+ICsgICAgICAgICAgICAgICBEUk1fRVJS T1IoIkZhaWxlZCB0byByZW1vdmUgY29uZmlnIGluIHVzZVxuIik7Cj4gKyAgICAgICAgICAgICAg IHJldCA9IC1FQUREUklOVVNFOwo+ICsgICAgICAgICAgICAgICBnb3RvIGNvbmZpZ19lcnI7Cj4g KyAgICAgICB9Cj4gKwo+ICsgICAgICAgb2FfY29uZmlnID0gaWRyX2ZpbmQoJmRldl9wcml2LT5w ZXJmLm1ldHJpY3NfaWRyLCAqYXJnKTsKPiArICAgICAgIGlmICghb2FfY29uZmlnKSB7Cj4gKyAg ICAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIHJlbW92ZSB1bmtub3duIGNvbmZpZ1xu Iik7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4gKyAgICAgICAgICAgICAgIGdv dG8gY29uZmlnX2VycjsKPiArICAgICAgIH0KR0VNX0JVR19PTihpZCAhPSBvYV9jb25maWctPmlk KTsKCj4gKwo+ICsgICAgICAgaWRyX3JlbW92ZSgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19pZHIs ICphcmcpOwo+ICsKPiArICAgICAgIHN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm9hX2NvbmZpZy0+c3lz ZnNfbWV0cmljKTsKPiArICAgICAgIGlmIChvYV9jb25maWctPmZsZXhfcmVncykKPiArICAgICAg ICAgICAgICAga2ZyZWUob2FfY29uZmlnLT5mbGV4X3JlZ3MpOwo+ICsgICAgICAgaWYgKG9hX2Nv bmZpZy0+Yl9jb3VudGVyX3JlZ3MpCj4gKyAgICAgICAgICAgICAgIGtmcmVlKG9hX2NvbmZpZy0+ Yl9jb3VudGVyX3JlZ3MpOwo+ICsgICAgICAgaWYgKG9hX2NvbmZpZy0+bXV4X3JlZ3MpCj4gKyAg ICAgICAgICAgICAgIGtmcmVlKG9hX2NvbmZpZy0+bXV4X3JlZ3MpOwpKdXN0IGxldCBrZnJlZSBj aGVjayBmb3IgTlVMTD8KCj4gKyAgICAgICBrZnJlZShvYV9jb25maWcpOwo+ICsKPiArY29uZmln X2VycjoKPiArICAgICAgIG11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICtsb2Nr X2VycjoKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gIHN0YXRpYyBzdHJ1Y3QgY3Rs X3RhYmxlIG9hX3RhYmxlW10gPSB7Cj4gICAgICAgICB7Cj4gICAgICAgICAgLnByb2NuYW1lID0g InBlcmZfc3RyZWFtX3BhcmFub2lkIiwKPiBAQCAtMzAxMSw4ICszMzc3LDE0IEBAIHN0YXRpYyBz dHJ1Y3QgY3RsX3RhYmxlIGRldl9yb290W10gPSB7Cj4gIHZvaWQgaTkxNV9wZXJmX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gICAgICAgICBkZXZfcHJpdi0+ cGVyZi5vYS5uX2J1aWx0aW5fc2V0cyA9IDA7Cj4gKyAgICAgICBpZHJfaW5pdCgmZGV2X3ByaXYt PnBlcmYubWV0cmljc19pZHIpOwpXZSBzaG91bGQgYWxzbyB0aHJvdyBhbiBpZHJfZGVzdHJveSBp biBwZXJmX2ZpbmkuIE1heWJlIHdlIGFsc28gbmVlZAp0byBjbGVhbnVwIGFueSBkeW5hbWljIGNv bmZpZ3Mgd2hpY2ggaGF2ZW4ndCBiZWVuIHJlbW92ZWQgYWxzbz8KCj4KPiAgICAgICAgIGlmIChJ U19IQVNXRUxMKGRldl9wcml2KSkgewo+ICsgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5v YS5vcHMuaXNfdmFsaWRfYl9jb3VudGVyX3JlZyA9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg Z2VuN19pc192YWxpZF9iX2NvdW50ZXJfYWRkcjsKPiArICAgICAgICAgICAgICAgZGV2X3ByaXYt PnBlcmYub2Eub3BzLmlzX3ZhbGlkX211eF9yZWcgPQo+ICsgICAgICAgICAgICAgICAgICAgICAg IGhzd19pc192YWxpZF9tdXhfYWRkcjsKPiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYu b2Eub3BzLmlzX3ZhbGlkX2ZsZXhfcmVnID0gTlVMTDsKPiAgICAgICAgICAgICAgICAgZGV2X3By aXYtPnBlcmYub2Eub3BzLmluaXRfb2FfYnVmZmVyID0gZ2VuN19pbml0X29hX2J1ZmZlcjsKPiAg ICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLmVuYWJsZV9tZXRyaWNfc2V0ID0g aHN3X2VuYWJsZV9tZXRyaWNfc2V0Owo+ICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5v YS5vcHMuZGlzYWJsZV9tZXRyaWNfc2V0ID0gaHN3X2Rpc2FibGVfbWV0cmljX3NldDsKPiBAQCAt MzAzNiw2ICszNDA4LDEzIEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAgICAgICAgICAgICAgICAgKiBleGVjbGlzdCBtb2RlIGJ5IGRl ZmF1bHQuCj4gICAgICAgICAgICAgICAgICAqLwo+Cj4gKyAgICAgICAgICAgICAgIGRldl9wcml2 LT5wZXJmLm9hLm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0KPiArICAgICAgICAgICAgICAg ICAgICAgICBnZW43X2lzX3ZhbGlkX2JfY291bnRlcl9hZGRyOwo+ICsgICAgICAgICAgICAgICBk ZXZfcHJpdi0+cGVyZi5vYS5vcHMuaXNfdmFsaWRfbXV4X3JlZyA9Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZ2VuN19pc192YWxpZF9tdXhfYWRkcjsKPiArICAgICAgICAgICAgICAgZGV2X3By aXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX2ZsZXhfcmVnID0KPiArICAgICAgICAgICAgICAgICAg ICAgICBnZW44X2lzX3ZhbGlkX2ZsZXhfYWRkcjsKPiArCj4gICAgICAgICAgICAgICAgIGlmIChJ U19HRU44KGRldl9wcml2KSkgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5w ZXJmLm9hLmN0eF9vYWN0eGN0cmxfb2Zmc2V0ID0gMHgxMjA7Cj4gICAgICAgICAgICAgICAgICAg ICAgICAgZGV2X3ByaXYtPnBlcmYub2EuY3R4X2ZsZXhldTBfb2Zmc2V0ID0gMHgyY2U7Cj4gQEAg LTMwNTAsNiArMzQyOSw4IEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3By aXYtPnBlcmYub2Eub3BzLnNlbGVjdF9tZXRyaWNfc2V0ID0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9iZHc7Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkg ewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3Bz LmlzX3ZhbGlkX211eF9yZWcgPQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaHZfaXNfdmFsaWRfbXV4X2FkZHI7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZXZfcHJpdi0+cGVyZi5vYS5uX2J1aWx0aW5fc2V0cyA9Cj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2No djsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9w cy5zZWxlY3RfbWV0cmljX3NldCA9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggMjFh YjEyZjRlNzJhLi40MzNmY2Q3YmViNzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBA QCAtNzMyLDYgKzczMiw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X21taW9fcmVnX3ZhbGlk KGk5MTVfcmVnX3QgcmVnKQo+ICAjZGVmaW5lIEdEVF9DSElDS0VOX0JJVFMgICAgX01NSU8oMHg5 ODQwKQo+ICAjZGVmaW5lIEdUX05PQV9FTkFCTEUgICAgICAweDAwMDAwMDgwCj4KPiArI2RlZmlu ZSBOT0FfV1JJVEUgICAgICAgICAgIF9NTUlPKDB4OTg4OCkKPiArCj4gIC8qCj4gICAqIE9BIEJv b2xlYW4gc3RhdGUKPiAgICovCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9k cm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IGluZGV4IDdjY2JkNmEyYmJlMC4u ZTJmZjQ3NzMyMzAzIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IEBAIC0yNjAsNiArMjYwLDggQEAg dHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKPiAgI2RlZmluZSBEUk1fSTkxNV9HRU1f Q09OVEVYVF9HRVRQQVJBTSAgMHgzNAo+ICAjZGVmaW5lIERSTV9JOTE1X0dFTV9DT05URVhUX1NF VFBBUkFNICAweDM1Cj4gICNkZWZpbmUgRFJNX0k5MTVfUEVSRl9PUEVOICAgICAgICAgICAgIDB4 MzYKPiArI2RlZmluZSBEUk1fSTkxNV9QRVJGX0FERF9DT05GSUcgICAgICAgMHgzNwo+ICsjZGVm aW5lIERSTV9JOTE1X1BFUkZfUkVNT1ZFX0NPTkZJRyAgICAweDM4Cj4KPiAgI2RlZmluZSBEUk1f SU9DVExfSTkxNV9JTklUICAgICAgICAgICAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERS TV9JOTE1X0lOSVQsIGRybV9pOTE1X2luaXRfdCkKPiAgI2RlZmluZSBEUk1fSU9DVExfSTkxNV9G TFVTSCAgICAgICAgICAgRFJNX0lPICggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0ZMVVNI KQo+IEBAIC0zMTUsNiArMzE3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsK PiAgI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTSAgICBEUk1fSU9X UiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9DT05URVhUX0dFVFBBUkFNLCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0pCj4gICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVf R0VNX0NPTlRFWFRfU0VUUEFSQU0gICAgRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f STkxNV9HRU1fQ09OVEVYVF9TRVRQQVJBTSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3Bh cmFtKQo+ICAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X1BFUkZfT1BFTiAgICAgICBEUk1fSU9XKERS TV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9QRVJGX09QRU4sIHN0cnVjdCBkcm1faTkxNV9wZXJm X29wZW5fcGFyYW0pCj4gKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUEVSRl9BRERfQ09ORklHIERS TV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9QRVJGX0FERF9DT05GSUcsIHN0cnVj dCBkcm1faTkxNV9wZXJmX29hX2NvbmZpZykKPiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9QRVJG X1JFTU9WRV9DT05GSUcgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVf UEVSRl9SRU1PVkVfQ09ORklHLCBfX3U2NCkKPgo+ICAvKiBBbGxvdyBkcml2ZXJzIHRvIHN1Ym1p dCBiYXRjaGJ1ZmZlcnMgZGlyZWN0bHkgdG8gaGFyZHdhcmUsIHJlbHlpbmcKPiAgICogb24gdGhl IHNlY3VyaXR5IG1lY2hhbmlzbXMgcHJvdmlkZWQgYnkgaGFyZHdhcmUuCj4gQEAgLTE0NjcsNiAr MTQ3MSwyMyBAQCBlbnVtIGRybV9pOTE1X3BlcmZfcmVjb3JkX3R5cGUgewo+ICAgICAgICAgRFJN X0k5MTVfUEVSRl9SRUNPUkRfTUFYIC8qIG5vbi1BQkkgKi8KPiAgfTsKPgo+ICsvKioKPiArICog U3RydWN0dXJlIHRvIHVwbG9hZCBwZXJmIGR5bmFtaWMgY29uZmlndXJhdGlvbiBpbnRvIHRoZSBr ZXJuZWwuCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vYV9jb25maWcgewo+ICsgICAg ICAgLyogc3RyaW5nIGZvcm1hdHRlZCBsaWtlICIlMDh4LSUwNHgtJTA0eC0lMDR4LSUwMTJ4IiAq Ki8KCi8qKiBTdHJpbmcgZm9ybWF0dGVkIGxpa2U6ICIlMDh4LSUwNHgtJTA0eC0lMDR4LSUwMTJ4 IiAqLwoKPiArICAgICAgIF9fdTY0IF9fdXNlciB1dWlkOwo+ICsKPiArICAgICAgIF9fdTMyIG5f bXV4X3JlZ3M7Cj4gKyAgICAgICBfX3U2NCBfX3VzZXIgbXV4X3JlZ3M7Cj4gKwo+ICsgICAgICAg X191MzIgbl9ib29sZWFuX3JlZ3M7Cj4gKyAgICAgICBfX3U2NCBfX3VzZXIgYm9vbGVhbl9yZWdz Owo+ICsKPiArICAgICAgIF9fdTMyIG5fZmxleF9yZWdzOwo+ICsgICAgICAgX191NjQgX191c2Vy IGZsZXhfcmVnczsKPiArfTsKPiArCj4gICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQo+ICB9Cj4g ICNlbmRpZgo+IC0tCj4gMi4xMy4yCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==