From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2] drm: BIT(DRM_ROTATE_?) -> DRM_ROTATE_? Date: Fri, 29 Jul 2016 15:33:31 -0400 Message-ID: <20160729193331.GA33083@boxwood.roam.corp.google.com> References: <1469771405-17653-1-git-send-email-joonas.lahtinen@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1469771405-17653-1-git-send-email-joonas.lahtinen@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Joonas Lahtinen Cc: David Airlie , linux-arm-msm@vger.kernel.org, intel-gfx@lists.freedesktop.org, Liviu Dudau , Direct Rendering Infrastructure - Development , malidp@foss.arm.com, Daniel Vetter , freedreno@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdWwgMjksIDIwMTYgYXQgMDg6NTA6MDVBTSArMDMwMCwgSm9vbmFzIExhaHRpbmVu IHdyb3RlOgo+IE9ubHkgcHJvcGVydHkgY3JlYXRpb24gdXNlcyB0aGUgcm90YXRpb24gYXMgYW4g aW5kZXgsIHNvIGNvbnZlcnQgdGhlCj4gdG8gZmlndXJlIHRoZSBpbmRleCB3aGVuIG5lZWRlZC4K PiAKPiB2MjogVXNlIHRoZSBuZXcgZGVmaW5lcyB0byBidWlsZCB0aGUgX01BU0sgZGVmaW5lcyAo U2VhbikKPiAKPiBDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IENjOiBsaW51 eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZwo+IENjOiBmcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gQ2M6IG1hbGlkcEBmb3NzLmFybS5jb20KPiBDYzogRGF2aWQgQWlybGllIDxhaXJs aWVkQGxpbnV4LmllPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNo Pgo+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ IENjOiBMaXZpdSBEdWRhdSA8TGl2aXUuRHVkYXVAYXJtLmNvbT4KPiBDYzogU2VhbiBQYXVsIDxz ZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gQWNrZWQtYnk6IExpdml1IER1ZGF1IDxMaXZpdS5EdWRh dUBhcm0uY29tPgo+IFJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPiAodjEpCj4gU2lnbmVkLW9mZi1ieTogSm9vbmFzIExhaHRpbmVuIDxq b29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgoKVGhhbmtzIGZvciByZXNwaW5uaW5nIHRo aXMsIEpvb25hcy4gSSd2ZSBhZGRlZCB0aGlzIHRvIG15IHF1ZXVlIGZvciAtbWlzYyBhZnRlcgp0 aGUgbWVyZ2Ugd2luZG93IGlzIGNsb3NlZC4KCkFja2VkLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVs QGNocm9taXVtLm9yZz4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5o ICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfcGxh bmVzLmMgICAgICAgICAgICAgfCAyMCArKysrKysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2FybWFkYS9hcm1hZGFfb3ZlcmxheS5jICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dw dS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNfcGxhbmUuYyB8IDIyICsrKysrKysrKy0tLS0t LS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAgICAgICAgICAg fCAgNCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jICAgICAgICAgICAgICAgICAg ICAgIHwgMjQgKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJf aGVscGVyLmMgICAgICAgICAgICAgICAgIHwgIDQgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJt X3BsYW5lX2hlbHBlci5jICAgICAgICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9k cm1fcmVjdC5jICAgICAgICAgICAgICAgICAgICAgIHwgMjggKysrKysrKysrKysrLS0tLS0tLS0t LS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgICB8 IDEyICsrKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFu ZS5jICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j ICAgICAgICAgICAgfCAyOCArKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgICAgICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jICAgICAgICAgICAgICB8ICA2ICsrKy0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgICAgICAgICB8ICA2ICsrKy0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYyAgICAgICB8IDEw ICsrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jICAgICAgICAg ICAgICB8ICA2ICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2ZiLmMgICAg ICAgICAgICAgICB8IDE0ICsrKysrKy0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL29tYXBkcm0v b21hcF9wbGFuZS5jICAgICAgICAgICAgfCAxMCArKysrLS0tLS0KPiAgaW5jbHVkZS9kcm0vZHJt X2NydGMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKy0tLS0tLS0KPiAg MjEgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDExMSBkZWxldGlvbnMoLSkKPiAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vYXJtL21hbGlkcF9kcnYuaAo+IGluZGV4IDk1NTU4ZmQuLjI3MWQyZmIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYXJtL21hbGlkcF9kcnYuaAo+IEBAIC00OSw2ICs0OSw2IEBAIHZvaWQgbWFsaWRw X2RlX3BsYW5lc19kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pOwo+ICBpbnQgbWFsaWRw X2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsKPiAgCj4gIC8qIG9mdGVuIHVzZWQg Y29tYmluYXRpb24gb2Ygcm90YXRpb25hbCBiaXRzICovCj4gLSNkZWZpbmUgTUFMSURQX1JPVEFU RURfTUFTSwkoQklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMjcwKSkKPiArI2Rl ZmluZSBNQUxJRFBfUk9UQVRFRF9NQVNLCShEUk1fUk9UQVRFXzkwIHwgRFJNX1JPVEFURV8yNzAp Cj4gIAo+ICAjZW5kaWYgIC8qIF9fTUFMSURQX0RSVl9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FybS9tYWxpZHBfcGxhbmVzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL21h bGlkcF9wbGFuZXMuYwo+IGluZGV4IDcyNTA5OGQuLjgyYzE5M2UgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FybS9tYWxpZHBfcGxhbmVzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YXJtL21hbGlkcF9wbGFuZXMuYwo+IEBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIGludCBtYWxp ZHBfZGVfcGxhbmVfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJcmV0dXJuIC1F SU5WQUw7Cj4gIAo+ICAJLyogcGFja2VkIFJHQjg4OCAvIEJHUjg4OCBjYW4ndCBiZSByb3RhdGVk IG9yIGZsaXBwZWQgKi8KPiAtCWlmIChzdGF0ZS0+cm90YXRpb24gIT0gQklUKERSTV9ST1RBVEVf MCkgJiYKPiArCWlmIChzdGF0ZS0+cm90YXRpb24gIT0gRFJNX1JPVEFURV8wICYmCj4gIAkgICAg KHN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfUkdCODg4IHx8Cj4gIAkgICAg IHN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfQkdSODg4KSkKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiBAQCAtMTg4LDkgKzE4OCw5IEBAIHN0YXRpYyB2b2lkIG1hbGlkcF9kZV9w bGFuZV91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkvKiBzZXR1cCB0aGUgcm90 YXRpb24gYW5kIGF4aXMgZmxpcCBiaXRzICovCj4gIAlpZiAocGxhbmUtPnN0YXRlLT5yb3RhdGlv biAmIERSTV9ST1RBVEVfTUFTSykKPiAgCQl2YWwgPSBpbG9nMihwbGFuZS0+c3RhdGUtPnJvdGF0 aW9uICYgRFJNX1JPVEFURV9NQVNLKSA8PCBMQVlFUl9ST1RfT0ZGU0VUOwo+IC0JaWYgKHBsYW5l LT5zdGF0ZS0+cm90YXRpb24gJiBCSVQoRFJNX1JFRkxFQ1RfWCkpCj4gKwlpZiAocGxhbmUtPnN0 YXRlLT5yb3RhdGlvbiAmIERSTV9SRUZMRUNUX1gpCj4gIAkJdmFsIHw9IExBWUVSX1ZfRkxJUDsK PiAtCWlmIChwbGFuZS0+c3RhdGUtPnJvdGF0aW9uICYgQklUKERSTV9SRUZMRUNUX1kpKQo+ICsJ aWYgKHBsYW5lLT5zdGF0ZS0+cm90YXRpb24gJiBEUk1fUkVGTEVDVF9ZKQo+ICAJCXZhbCB8PSBM QVlFUl9IX0ZMSVA7Cj4gIAo+ICAJLyogc2V0IHRoZSAnZW5hYmxlIGxheWVyJyBiaXQgKi8KPiBA QCAtMjU1LDEyICsyNTUsMTIgQEAgaW50IG1hbGlkcF9kZV9wbGFuZXNfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZHJtKQo+ICAJCQlnb3RvIGNsZWFudXA7Cj4gIAo+ICAJCWlmICghZHJtLT5tb2Rl X2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkgewo+IC0JCQl1bnNpZ25lZCBsb25nIGZsYWdzID0g QklUKERSTV9ST1RBVEVfMCkgfAo+IC0JCQkJCSAgICAgIEJJVChEUk1fUk9UQVRFXzkwKSB8Cj4g LQkJCQkJICAgICAgQklUKERSTV9ST1RBVEVfMTgwKSB8Cj4gLQkJCQkJICAgICAgQklUKERSTV9S T1RBVEVfMjcwKSB8Cj4gLQkJCQkJICAgICAgQklUKERSTV9SRUZMRUNUX1gpIHwKPiAtCQkJCQkg ICAgICBCSVQoRFJNX1JFRkxFQ1RfWSk7Cj4gKwkJCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBEUk1f Uk9UQVRFXzAgfAo+ICsJCQkJCSAgICAgIERSTV9ST1RBVEVfOTAgfAo+ICsJCQkJCSAgICAgIERS TV9ST1RBVEVfMTgwIHwKPiArCQkJCQkgICAgICBEUk1fUk9UQVRFXzI3MCB8Cj4gKwkJCQkJICAg ICAgRFJNX1JFRkxFQ1RfWCB8Cj4gKwkJCQkJICAgICAgRFJNX1JFRkxFQ1RfWTsKPiAgCQkJZHJt LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSA9Cj4gIAkJCQlkcm1fbW9kZV9jcmVhdGVf cm90YXRpb25fcHJvcGVydHkoZHJtLCBmbGFncyk7Cj4gIAkJfQo+IEBAIC0yNjgsNyArMjY4LDcg QEAgaW50IG1hbGlkcF9kZV9wbGFuZXNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQo+ICAJ CWlmIChkcm0tPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ICYmIChpZCAhPSBERV9TTUFS VCkpCj4gIAkJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZS5iYXNlLAo+ ICAJCQkJCQkgICBkcm0tPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+IC0JCQkJCQkg ICBCSVQoRFJNX1JPVEFURV8wKSk7Cj4gKwkJCQkJCSAgIERSTV9ST1RBVEVfMCk7Cj4gIAo+ICAJ CWRybV9wbGFuZV9oZWxwZXJfYWRkKCZwbGFuZS0+YmFzZSwKPiAgCQkJCSAgICAgJm1hbGlkcF9k ZV9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJt YWRhL2FybWFkYV9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9vdmVy bGF5LmMKPiBpbmRleCAxZWU3MDdlLi4xNTJiNGU3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hcm1hZGEvYXJtYWRhX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm1h ZGEvYXJtYWRhX292ZXJsYXkuYwo+IEBAIC0xMjEsNyArMTIxLDcgQEAgYXJtYWRhX292bF9wbGFu ZV91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCWludCByZXQ7Cj4gIAo+ICAJcmV0ID0gZHJtX3BsYW5lX2hlbHBlcl9jaGVja191cGRhdGUo cGxhbmUsIGNydGMsIGZiLCAmc3JjLCAmZGVzdCwgJmNsaXAsCj4gLQkJCQkJICAgIEJJVChEUk1f Uk9UQVRFXzApLAo+ICsJCQkJCSAgICBEUk1fUk9UQVRFXzAsCj4gIAkJCQkJICAgIDAsIElOVF9N QVgsIHRydWUsIGZhbHNlLCAmdmlzaWJsZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19w bGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX3BsYW5lLmMK PiBpbmRleCAwMTZjMTkxLi4xNDY4MDlhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h dG1lbC1obGNkYy9hdG1lbF9obGNkY19wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2F0 bWVsLWhsY2RjL2F0bWVsX2hsY2RjX3BsYW5lLmMKPiBAQCAtMzkzLDcgKzM5Myw3IEBAIHN0YXRp YyB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX3VwZGF0ZV9mb3JtYXQoc3RydWN0IGF0bWVsX2hsY2Rj X3BsYW5lICpwbGFuZSwKPiAgCj4gIAlpZiAoKHN0YXRlLT5iYXNlLmZiLT5waXhlbF9mb3JtYXQg PT0gRFJNX0ZPUk1BVF9ZVVY0MjIgfHwKPiAgCSAgICAgc3RhdGUtPmJhc2UuZmItPnBpeGVsX2Zv cm1hdCA9PSBEUk1fRk9STUFUX05WNjEpICYmCj4gLQkgICAgKHN0YXRlLT5iYXNlLnJvdGF0aW9u ICYgKEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRFXzI3MCkpKSkKPiArCSAgICAo c3RhdGUtPmJhc2Uucm90YXRpb24gJiAoRFJNX1JPVEFURV85MCB8IERSTV9ST1RBVEVfMjcwKSkp Cj4gIAkJY2ZnIHw9IEFUTUVMX0hMQ0RDX1lVVjQyMlJPVDsKPiAgCj4gIAlhdG1lbF9obGNkY19s YXllcl91cGRhdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsCj4gQEAgLTYyOCw3ICs2MjgsNyBAQCBzdGF0 aWMgaW50IGF0bWVsX2hsY2RjX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpw LAo+ICAJLyoKPiAgCSAqIFN3YXAgd2lkdGggYW5kIHNpemUgaW4gY2FzZSBvZiA5MCBvciAyNzAg ZGVncmVlcyByb3RhdGlvbgo+ICAJICovCj4gLQlpZiAoc3RhdGUtPmJhc2Uucm90YXRpb24gJiAo QklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMjcwKSkpIHsKPiArCWlmIChzdGF0 ZS0+YmFzZS5yb3RhdGlvbiAmIChEUk1fUk9UQVRFXzkwIHwgRFJNX1JPVEFURV8yNzApKSB7Cj4g IAkJdG1wID0gc3RhdGUtPmNydGNfdzsKPiAgCQlzdGF0ZS0+Y3J0Y193ID0gc3RhdGUtPmNydGNf aDsKPiAgCQlzdGF0ZS0+Y3J0Y19oID0gdG1wOwo+IEBAIC02NzcsNyArNjc3LDcgQEAgc3RhdGlj IGludCBhdG1lbF9obGNkY19wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcCwK PiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJCXN3aXRjaCAoc3RhdGUtPmJhc2Uucm90YXRp b24gJiBEUk1fUk9UQVRFX01BU0spIHsKPiAtCQljYXNlIEJJVChEUk1fUk9UQVRFXzkwKToKPiAr CQljYXNlIERSTV9ST1RBVEVfOTA6Cj4gIAkJCW9mZnNldCA9ICgoeV9vZmZzZXQgKyBzdGF0ZS0+ c3JjX3kgKyBwYXRjaGVkX3NyY193IC0gMSkgLwo+ICAJCQkJICB5ZGl2KSAqIGZiLT5waXRjaGVz W2ldOwo+ICAJCQlvZmZzZXQgKz0gKCh4X29mZnNldCArIHN0YXRlLT5zcmNfeCkgLyB4ZGl2KSAq Cj4gQEAgLTY4Niw3ICs2ODYsNyBAQCBzdGF0aWMgaW50IGF0bWVsX2hsY2RjX3BsYW5lX2F0b21p Y19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwLAo+ICAJCQkJCSAgZmItPnBpdGNoZXNbaV07Cj4g IAkJCXN0YXRlLT5wc3RyaWRlW2ldID0gLWZiLT5waXRjaGVzW2ldIC0gc3RhdGUtPmJwcFtpXTsK PiAgCQkJYnJlYWs7Cj4gLQkJY2FzZSBCSVQoRFJNX1JPVEFURV8xODApOgo+ICsJCWNhc2UgRFJN X1JPVEFURV8xODA6Cj4gIAkJCW9mZnNldCA9ICgoeV9vZmZzZXQgKyBzdGF0ZS0+c3JjX3kgKyBw YXRjaGVkX3NyY19oIC0gMSkgLwo+ICAJCQkJICB5ZGl2KSAqIGZiLT5waXRjaGVzW2ldOwo+ICAJ CQlvZmZzZXQgKz0gKCh4X29mZnNldCArIHN0YXRlLT5zcmNfeCArIHBhdGNoZWRfc3JjX3cgLSAx KSAvCj4gQEAgLTY5NSw3ICs2OTUsNyBAQCBzdGF0aWMgaW50IGF0bWVsX2hsY2RjX3BsYW5lX2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwLAo+ICAJCQkJCSAgIHN0YXRlLT5icHBbaV0p IC0gZmItPnBpdGNoZXNbaV07Cj4gIAkJCXN0YXRlLT5wc3RyaWRlW2ldID0gLTIgKiBzdGF0ZS0+ YnBwW2ldOwo+ICAJCQlicmVhazsKPiAtCQljYXNlIEJJVChEUk1fUk9UQVRFXzI3MCk6Cj4gKwkJ Y2FzZSBEUk1fUk9UQVRFXzI3MDoKPiAgCQkJb2Zmc2V0ID0gKCh5X29mZnNldCArIHN0YXRlLT5z cmNfeSkgLyB5ZGl2KSAqCj4gIAkJCQkgZmItPnBpdGNoZXNbaV07Cj4gIAkJCW9mZnNldCArPSAo KHhfb2Zmc2V0ICsgc3RhdGUtPnNyY194ICsgcGF0Y2hlZF9zcmNfaCAtIDEpIC8KPiBAQCAtNzA1 LDcgKzcwNSw3IEBAIHN0YXRpYyBpbnQgYXRtZWxfaGxjZGNfcGxhbmVfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fcGxhbmUgKnAsCj4gIAkJCQkJICAoMiAqIHN0YXRlLT5icHBbaV0pOwo+ICAJCQlz dGF0ZS0+cHN0cmlkZVtpXSA9IGZiLT5waXRjaGVzW2ldIC0gc3RhdGUtPmJwcFtpXTsKPiAgCQkJ YnJlYWs7Cj4gLQkJY2FzZSBCSVQoRFJNX1JPVEFURV8wKToKPiArCQljYXNlIERSTV9ST1RBVEVf MDoKPiAgCQlkZWZhdWx0Ogo+ICAJCQlvZmZzZXQgPSAoKHlfb2Zmc2V0ICsgc3RhdGUtPnNyY195 KSAvIHlkaXYpICoKPiAgCQkJCSBmYi0+cGl0Y2hlc1tpXTsKPiBAQCAtOTA1LDcgKzkwNSw3IEBA IHN0YXRpYyB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX2luaXRfcHJvcGVydGllcyhzdHJ1Y3QgYXRt ZWxfaGxjZGNfcGxhbmUgKnBsYW5lLAo+ICAJaWYgKGRlc2MtPmxheW91dC54c3RyaWRlICYmIGRl c2MtPmxheW91dC5wc3RyaWRlKQo+ICAJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFu ZS0+YmFzZS5iYXNlLAo+ICAJCQkJcGxhbmUtPmJhc2UuZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlv bl9wcm9wZXJ0eSwKPiAtCQkJCUJJVChEUk1fUk9UQVRFXzApKTsKPiArCQkJCURSTV9ST1RBVEVf MCk7Cj4gIAo+ICAJaWYgKGRlc2MtPmxheW91dC5jc2MpIHsKPiAgCQkvKgo+IEBAIC0xMDU2LDEw ICsxMDU2LDEwIEBAIGF0bWVsX2hsY2RjX3BsYW5lX2NyZWF0ZV9wcm9wZXJ0aWVzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0 eSA9Cj4gIAkJCWRybV9tb2RlX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsCj4gLQkJCQkJ CQkgIEJJVChEUk1fUk9UQVRFXzApIHwKPiAtCQkJCQkJCSAgQklUKERSTV9ST1RBVEVfOTApIHwK PiAtCQkJCQkJCSAgQklUKERSTV9ST1RBVEVfMTgwKSB8Cj4gLQkJCQkJCQkgIEJJVChEUk1fUk9U QVRFXzI3MCkpOwo+ICsJCQkJCQkJICBEUk1fUk9UQVRFXzAgfAo+ICsJCQkJCQkJICBEUk1fUk9U QVRFXzkwIHwKPiArCQkJCQkJCSAgRFJNX1JPVEFURV8xODAgfAo+ICsJCQkJCQkJICBEUk1fUk9U QVRFXzI3MCk7Cj4gIAlpZiAoIWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4g IAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jCj4gaW5kZXggZGU3ZmRkYy4uNjFhZmQ4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4gQEAgLTIzNDgsNyArMjM0OCw3IEBAIGludCBfX2RybV9hdG9taWNfaGVs cGVyX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0LAo+ICAJcHJpbWFyeV9zdGF0 ZS0+Y3J0Y19oID0gdmRpc3BsYXk7Cj4gIAlwcmltYXJ5X3N0YXRlLT5zcmNfeCA9IHNldC0+eCA8 PCAxNjsKPiAgCXByaW1hcnlfc3RhdGUtPnNyY195ID0gc2V0LT55IDw8IDE2Owo+IC0JaWYgKHBy aW1hcnlfc3RhdGUtPnJvdGF0aW9uICYgKEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9U QVRFXzI3MCkpKSB7Cj4gKwlpZiAocHJpbWFyeV9zdGF0ZS0+cm90YXRpb24gJiAoRFJNX1JPVEFU RV85MCB8IERSTV9ST1RBVEVfMjcwKSkgewo+ICAJCXByaW1hcnlfc3RhdGUtPnNyY193ID0gdmRp c3BsYXkgPDwgMTY7Cj4gIAkJcHJpbWFyeV9zdGF0ZS0+c3JjX2ggPSBoZGlzcGxheSA8PCAxNjsK PiAgCX0gZWxzZSB7Cj4gQEAgLTMwMzIsNyArMzAzMiw3IEBAIHZvaWQgZHJtX2F0b21pY19oZWxw ZXJfcGxhbmVfcmVzZXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gIAo+ICAJaWYgKHBsYW5l LT5zdGF0ZSkgewo+ICAJCXBsYW5lLT5zdGF0ZS0+cGxhbmUgPSBwbGFuZTsKPiAtCQlwbGFuZS0+ c3RhdGUtPnJvdGF0aW9uID0gQklUKERSTV9ST1RBVEVfMCk7Cj4gKwkJcGxhbmUtPnN0YXRlLT5y b3RhdGlvbiA9IERSTV9ST1RBVEVfMDsKPiAgCX0KPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9h dG9taWNfaGVscGVyX3BsYW5lX3Jlc2V0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwo+IGluZGV4IGYxZDlmMDUu LjkwOWEwMjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwo+IEBAIC0yODA0LDggKzI4MDQsOCBAQCBpbnQg ZHJtX2NydGNfY2hlY2tfdmlld3BvcnQoY29uc3Qgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJ ZHJtX2NydGNfZ2V0X2h2X3RpbWluZyhtb2RlLCAmaGRpc3BsYXksICZ2ZGlzcGxheSk7Cj4gIAo+ ICAJaWYgKGNydGMtPnN0YXRlICYmCj4gLQkgICAgY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0 aW9uICYgKEJJVChEUk1fUk9UQVRFXzkwKSB8Cj4gLQkJCQkJICAgICAgQklUKERSTV9ST1RBVEVf MjcwKSkpCj4gKwkgICAgY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uICYgKERSTV9ST1RB VEVfOTAgfAo+ICsJCQkJCSAgICAgIERSTV9ST1RBVEVfMjcwKSkKPiAgCQlzd2FwKGhkaXNwbGF5 LCB2ZGlzcGxheSk7Cj4gIAo+ICAJcmV0dXJuIGNoZWNrX3NyY19jb29yZHMoeCA8PCAxNiwgeSA8 PCAxNiwKPiBAQCAtNTY0Niw5ICs1NjQ2LDkgQEAgaW50IGRybV9tb2RlX2Rlc3Ryb3lfZHVtYl9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgKiBFZy4gaWYgdGhlIGhhcmR3YXJlIHN1 cHBvcnRzIGV2ZXJ5dGhpbmcgZXhjZXB0IERSTV9SRUZMRUNUX1gKPiAgICogb25lIGNvdWxkIGNh bGwgdGhpcyBmdW5jdGlvbiBsaWtlIHRoaXM6Cj4gICAqCj4gLSAqIGRybV9yb3RhdGlvbl9zaW1w bGlmeShyb3RhdGlvbiwgQklUKERSTV9ST1RBVEVfMCkgfAo+IC0gKiAgICAgICAgICAgICAgICAg ICAgICAgQklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMTgwKSB8Cj4gLSAqICAg ICAgICAgICAgICAgICAgICAgICBCSVQoRFJNX1JPVEFURV8yNzApIHwgQklUKERSTV9SRUZMRUNU X1kpKTsKPiArICogZHJtX3JvdGF0aW9uX3NpbXBsaWZ5KHJvdGF0aW9uLCBEUk1fUk9UQVRFXzAg fAo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgRFJNX1JPVEFURV85MCB8IERSTV9ST1RBVEVf MTgwIHwKPiArICogICAgICAgICAgICAgICAgICAgICAgIERSTV9ST1RBVEVfMjcwIHwgRFJNX1JF RkxFQ1RfWSk7Cj4gICAqCj4gICAqIHRvIGVsaW1pbmF0ZSB0aGUgRFJNX1JPVEFURV9YIGZsYWcu IERlcGVuZGluZyBvbiB3aGF0IGtpbmQgb2YKPiAgICogdHJhbnNmb3JtcyB0aGUgaGFyZHdhcmUg c3VwcG9ydHMsIHRoaXMgZnVuY3Rpb24gbWF5IG5vdAo+IEBAIC01NjU5LDcgKzU2NTksNyBAQCB1 bnNpZ25lZCBpbnQgZHJtX3JvdGF0aW9uX3NpbXBsaWZ5KHVuc2lnbmVkIGludCByb3RhdGlvbiwK PiAgCQkJCSAgIHVuc2lnbmVkIGludCBzdXBwb3J0ZWRfcm90YXRpb25zKQo+ICB7Cj4gIAlpZiAo cm90YXRpb24gJiB+c3VwcG9ydGVkX3JvdGF0aW9ucykgewo+IC0JCXJvdGF0aW9uIF49IEJJVChE Uk1fUkVGTEVDVF9YKSB8IEJJVChEUk1fUkVGTEVDVF9ZKTsKPiArCQlyb3RhdGlvbiBePSBEUk1f UkVGTEVDVF9YIHwgRFJNX1JFRkxFQ1RfWTsKPiAgCQlyb3RhdGlvbiA9IChyb3RhdGlvbiAmIERS TV9SRUZMRUNUX01BU0spIHwKPiAgCQkgICAgICAgICAgIEJJVCgoZmZzKHJvdGF0aW9uICYgRFJN X1JPVEFURV9NQVNLKSArIDEpICUgNCk7Cj4gIAl9Cj4gQEAgLTU3ODgsMTIgKzU3ODgsMTIgQEAg c3RydWN0IGRybV9wcm9wZXJ0eSAqZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgc3VwcG9y dGVkX3JvdGF0aW9ucykKPiAgewo+ICAJc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJvcF9lbnVt X2xpc3QgcHJvcHNbXSA9IHsKPiAtCQl7IERSTV9ST1RBVEVfMCwgICAicm90YXRlLTAiIH0sCj4g LQkJeyBEUk1fUk9UQVRFXzkwLCAgInJvdGF0ZS05MCIgfSwKPiAtCQl7IERSTV9ST1RBVEVfMTgw LCAicm90YXRlLTE4MCIgfSwKPiAtCQl7IERSTV9ST1RBVEVfMjcwLCAicm90YXRlLTI3MCIgfSwK PiAtCQl7IERSTV9SRUZMRUNUX1gsICAicmVmbGVjdC14IiB9LAo+IC0JCXsgRFJNX1JFRkxFQ1Rf WSwgICJyZWZsZWN0LXkiIH0sCj4gKwkJeyBfX2J1aWx0aW5fZmZzKERSTV9ST1RBVEVfMCkgLSAx LCAgICJyb3RhdGUtMCIgfSwKPiArCQl7IF9fYnVpbHRpbl9mZnMoRFJNX1JPVEFURV85MCkgLSAx LCAgInJvdGF0ZS05MCIgfSwKPiArCQl7IF9fYnVpbHRpbl9mZnMoRFJNX1JPVEFURV8xODApIC0g MSwgInJvdGF0ZS0xODAiIH0sCj4gKwkJeyBfX2J1aWx0aW5fZmZzKERSTV9ST1RBVEVfMjcwKSAt IDEsICJyb3RhdGUtMjcwIiB9LAo+ICsJCXsgX19idWlsdGluX2ZmcyhEUk1fUkVGTEVDVF9YKSAt IDEsICAicmVmbGVjdC14IiB9LAo+ICsJCXsgX19idWlsdGluX2ZmcyhEUk1fUkVGTEVDVF9ZKSAt IDEsICAicmVmbGVjdC15IiB9LAo+ICAJfTsKPiAgCj4gIAlyZXR1cm4gZHJtX3Byb3BlcnR5X2Ny ZWF0ZV9iaXRtYXNrKGRldiwgMCwgInJvdGF0aW9uIiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMK PiBpbmRleCBjZTU0ZTk4Li5kNDg5NmY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZmJfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4g QEAgLTMzNSw3ICszMzUsNyBAQCByZXRyeToKPiAgCQkJZ290byBmYWlsOwo+ICAJCX0KPiAgCj4g LQkJcGxhbmVfc3RhdGUtPnJvdGF0aW9uID0gQklUKERSTV9ST1RBVEVfMCk7Cj4gKwkJcGxhbmVf c3RhdGUtPnJvdGF0aW9uID0gRFJNX1JPVEFURV8wOwo+ICAKPiAgCQlwbGFuZS0+b2xkX2ZiID0g cGxhbmUtPmZiOwo+ICAJCXBsYW5lX21hc2sgfD0gMSA8PCBkcm1fcGxhbmVfaW5kZXgocGxhbmUp Owo+IEBAIC0zOTUsNyArMzk1LDcgQEAgc3RhdGljIGludCByZXN0b3JlX2ZiZGV2X21vZGUoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiAgCQlpZiAoZGV2LT5tb2RlX2NvbmZpZy5y b3RhdGlvbl9wcm9wZXJ0eSkgewo+ICAJCQlkcm1fbW9kZV9wbGFuZV9zZXRfb2JqX3Byb3AocGxh bmUsCj4gIAkJCQkJCSAgICBkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+IC0J CQkJCQkgICAgQklUKERSTV9ST1RBVEVfMCkpOwo+ICsJCQkJCQkgICAgRFJNX1JPVEFURV8wKTsK PiAgCQl9Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5l X2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZV9oZWxwZXIuYwo+IGluZGV4IDE2 YzRhN2IuLmMzNjBlMzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZV9o ZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmVfaGVscGVyLmMKPiBAQCAt Mjc0LDcgKzI3NCw3IEBAIGludCBkcm1fcHJpbWFyeV9oZWxwZXJfdXBkYXRlKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJcmV0ID0gZHJtX3Bs YW5lX2hlbHBlcl9jaGVja191cGRhdGUocGxhbmUsIGNydGMsIGZiLAo+ICAJCQkJCSAgICAmc3Jj LCAmZGVzdCwgJmNsaXAsCj4gLQkJCQkJICAgIEJJVChEUk1fUk9UQVRFXzApLAo+ICsJCQkJCSAg ICBEUk1fUk9UQVRFXzAsCj4gIAkJCQkJICAgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywK PiAgCQkJCQkgICAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJCQkJCSAgICBmYWxz ZSwgZmFsc2UsICZ2aXNpYmxlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9y ZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3JlY3QuYwo+IGluZGV4IGE4ZTJjODYuLjQwNjNm NmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9yZWN0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX3JlY3QuYwo+IEBAIC0zMTcsMzggKzMxNywzOCBAQCB2b2lkIGRybV9y ZWN0X3JvdGF0ZShzdHJ1Y3QgZHJtX3JlY3QgKnIsCj4gIHsKPiAgCXN0cnVjdCBkcm1fcmVjdCB0 bXA7Cj4gIAo+IC0JaWYgKHJvdGF0aW9uICYgKEJJVChEUk1fUkVGTEVDVF9YKSB8IEJJVChEUk1f UkVGTEVDVF9ZKSkpIHsKPiArCWlmIChyb3RhdGlvbiAmIChEUk1fUkVGTEVDVF9YIHwgRFJNX1JF RkxFQ1RfWSkpIHsKPiAgCQl0bXAgPSAqcjsKPiAgCj4gLQkJaWYgKHJvdGF0aW9uICYgQklUKERS TV9SRUZMRUNUX1gpKSB7Cj4gKwkJaWYgKHJvdGF0aW9uICYgRFJNX1JFRkxFQ1RfWCkgewo+ICAJ CQlyLT54MSA9IHdpZHRoIC0gdG1wLngyOwo+ICAJCQlyLT54MiA9IHdpZHRoIC0gdG1wLngxOwo+ ICAJCX0KPiAgCj4gLQkJaWYgKHJvdGF0aW9uICYgQklUKERSTV9SRUZMRUNUX1kpKSB7Cj4gKwkJ aWYgKHJvdGF0aW9uICYgRFJNX1JFRkxFQ1RfWSkgewo+ICAJCQlyLT55MSA9IGhlaWdodCAtIHRt cC55MjsKPiAgCQkJci0+eTIgPSBoZWlnaHQgLSB0bXAueTE7Cj4gIAkJfQo+ICAJfQo+ICAKPiAg CXN3aXRjaCAocm90YXRpb24gJiBEUk1fUk9UQVRFX01BU0spIHsKPiAtCWNhc2UgQklUKERSTV9S T1RBVEVfMCk6Cj4gKwljYXNlIERSTV9ST1RBVEVfMDoKPiAgCQlicmVhazsKPiAtCWNhc2UgQklU KERSTV9ST1RBVEVfOTApOgo+ICsJY2FzZSBEUk1fUk9UQVRFXzkwOgo+ICAJCXRtcCA9ICpyOwo+ ICAJCXItPngxID0gdG1wLnkxOwo+ICAJCXItPngyID0gdG1wLnkyOwo+ICAJCXItPnkxID0gd2lk dGggLSB0bXAueDI7Cj4gIAkJci0+eTIgPSB3aWR0aCAtIHRtcC54MTsKPiAgCQlicmVhazsKPiAt CWNhc2UgQklUKERSTV9ST1RBVEVfMTgwKToKPiArCWNhc2UgRFJNX1JPVEFURV8xODA6Cj4gIAkJ dG1wID0gKnI7Cj4gIAkJci0+eDEgPSB3aWR0aCAtIHRtcC54MjsKPiAgCQlyLT54MiA9IHdpZHRo IC0gdG1wLngxOwo+ICAJCXItPnkxID0gaGVpZ2h0IC0gdG1wLnkyOwo+ICAJCXItPnkyID0gaGVp Z2h0IC0gdG1wLnkxOwo+ICAJCWJyZWFrOwo+IC0JY2FzZSBCSVQoRFJNX1JPVEFURV8yNzApOgo+ ICsJY2FzZSBEUk1fUk9UQVRFXzI3MDoKPiAgCQl0bXAgPSAqcjsKPiAgCQlyLT54MSA9IGhlaWdo dCAtIHRtcC55MjsKPiAgCQlyLT54MiA9IGhlaWdodCAtIHRtcC55MTsKPiBAQCAtMzkyLDIzICsz OTIsMjMgQEAgdm9pZCBkcm1fcmVjdF9yb3RhdGVfaW52KHN0cnVjdCBkcm1fcmVjdCAqciwKPiAg CXN0cnVjdCBkcm1fcmVjdCB0bXA7Cj4gIAo+ICAJc3dpdGNoIChyb3RhdGlvbiAmIERSTV9ST1RB VEVfTUFTSykgewo+IC0JY2FzZSBCSVQoRFJNX1JPVEFURV8wKToKPiArCWNhc2UgRFJNX1JPVEFU RV8wOgo+ICAJCWJyZWFrOwo+IC0JY2FzZSBCSVQoRFJNX1JPVEFURV85MCk6Cj4gKwljYXNlIERS TV9ST1RBVEVfOTA6Cj4gIAkJdG1wID0gKnI7Cj4gIAkJci0+eDEgPSB3aWR0aCAtIHRtcC55MjsK PiAgCQlyLT54MiA9IHdpZHRoIC0gdG1wLnkxOwo+ICAJCXItPnkxID0gdG1wLngxOwo+ICAJCXIt PnkyID0gdG1wLngyOwo+ICAJCWJyZWFrOwo+IC0JY2FzZSBCSVQoRFJNX1JPVEFURV8xODApOgo+ ICsJY2FzZSBEUk1fUk9UQVRFXzE4MDoKPiAgCQl0bXAgPSAqcjsKPiAgCQlyLT54MSA9IHdpZHRo IC0gdG1wLngyOwo+ICAJCXItPngyID0gd2lkdGggLSB0bXAueDE7Cj4gIAkJci0+eTEgPSBoZWln aHQgLSB0bXAueTI7Cj4gIAkJci0+eTIgPSBoZWlnaHQgLSB0bXAueTE7Cj4gIAkJYnJlYWs7Cj4g LQljYXNlIEJJVChEUk1fUk9UQVRFXzI3MCk6Cj4gKwljYXNlIERSTV9ST1RBVEVfMjcwOgo+ICAJ CXRtcCA9ICpyOwo+ICAJCXItPngxID0gdG1wLnkxOwo+ICAJCXItPngyID0gdG1wLnkyOwo+IEBA IC00MTksMTUgKzQxOSwxNSBAQCB2b2lkIGRybV9yZWN0X3JvdGF0ZV9pbnYoc3RydWN0IGRybV9y ZWN0ICpyLAo+ICAJCWJyZWFrOwo+ICAJfQo+ICAKPiAtCWlmIChyb3RhdGlvbiAmIChCSVQoRFJN X1JFRkxFQ1RfWCkgfCBCSVQoRFJNX1JFRkxFQ1RfWSkpKSB7Cj4gKwlpZiAocm90YXRpb24gJiAo RFJNX1JFRkxFQ1RfWCB8IERSTV9SRUZMRUNUX1kpKSB7Cj4gIAkJdG1wID0gKnI7Cj4gIAo+IC0J CWlmIChyb3RhdGlvbiAmIEJJVChEUk1fUkVGTEVDVF9YKSkgewo+ICsJCWlmIChyb3RhdGlvbiAm IERSTV9SRUZMRUNUX1gpIHsKPiAgCQkJci0+eDEgPSB3aWR0aCAtIHRtcC54MjsKPiAgCQkJci0+ eDIgPSB3aWR0aCAtIHRtcC54MTsKPiAgCQl9Cj4gIAo+IC0JCWlmIChyb3RhdGlvbiAmIEJJVChE Uk1fUkVGTEVDVF9ZKSkgewo+ICsJCWlmIChyb3RhdGlvbiAmIERSTV9SRUZMRUNUX1kpIHsKPiAg CQkJci0+eTEgPSBoZWlnaHQgLSB0bXAueTI7Cj4gIAkJCXItPnkyID0gaGVpZ2h0IC0gdG1wLnkx Owo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDlhYTYyYzUu LjgxNTIzMmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0zMDgx LDEyICszMDgxLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpwbGFuZV9yb3RhdGlvbih1bnNpZ25l ZCBpbnQgcm90YXRpb24pCj4gIAkgKi8KPiAgCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCj4g IAkJICIlcyVzJXMlcyVzJXMoMHglMDh4KSIsCj4gLQkJIChyb3RhdGlvbiAmIEJJVChEUk1fUk9U QVRFXzApKSA/ICIwICIgOiAiIiwKPiAtCQkgKHJvdGF0aW9uICYgQklUKERSTV9ST1RBVEVfOTAp KSA/ICI5MCAiIDogIiIsCj4gLQkJIChyb3RhdGlvbiAmIEJJVChEUk1fUk9UQVRFXzE4MCkpID8g IjE4MCAiIDogIiIsCj4gLQkJIChyb3RhdGlvbiAmIEJJVChEUk1fUk9UQVRFXzI3MCkpID8gIjI3 MCAiIDogIiIsCj4gLQkJIChyb3RhdGlvbiAmIEJJVChEUk1fUkVGTEVDVF9YKSkgPyAiRkxJUFgg IiA6ICIiLAo+IC0JCSAocm90YXRpb24gJiBCSVQoRFJNX1JFRkxFQ1RfWSkpID8gIkZMSVBZICIg OiAiIiwKPiArCQkgKHJvdGF0aW9uICYgRFJNX1JPVEFURV8wKSA/ICIwICIgOiAiIiwKPiArCQkg KHJvdGF0aW9uICYgRFJNX1JPVEFURV85MCkgPyAiOTAgIiA6ICIiLAo+ICsJCSAocm90YXRpb24g JiBEUk1fUk9UQVRFXzE4MCkgPyAiMTgwICIgOiAiIiwKPiArCQkgKHJvdGF0aW9uICYgRFJNX1JP VEFURV8yNzApID8gIjI3MCAiIDogIiIsCj4gKwkJIChyb3RhdGlvbiAmIERSTV9SRUZMRUNUX1gp ID8gIkZMSVBYICIgOiAiIiwKPiArCQkgKHJvdGF0aW9uICYgRFJNX1JFRkxFQ1RfWSkgPyAiRkxJ UFkgIiA6ICIiLAo+ICAJCSByb3RhdGlvbik7Cj4gIAo+ICAJcmV0dXJuIGJ1ZjsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IGluZGV4IDdkZTc3MjEuLjdjYzlj NzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5l LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBA IC01NSw3ICs1NSw3IEBAIGludGVsX2NyZWF0ZV9wbGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSkKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gIAlzdGF0ZS0+YmFzZS5wbGFuZSA9IHBs YW5lOwo+IC0Jc3RhdGUtPmJhc2Uucm90YXRpb24gPSBCSVQoRFJNX1JPVEFURV8wKTsKPiArCXN0 YXRlLT5iYXNlLnJvdGF0aW9uID0gRFJNX1JPVEFURV8wOwo+ICAJc3RhdGUtPmNrZXkuZmxhZ3Mg PSBJOTE1X1NFVF9DT0xPUktFWV9OT05FOwo+ICAKPiAgCXJldHVybiBzdGF0ZTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggYzRjMWM4NS4uOTI3NWI1ZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMjY4OCw3ICsyNjg4LDcgQEAg c3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw cmltYXJ5LAo+ICAJCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0gbGluZWFyX29mZnNldDsK PiAgCX0KPiAgCj4gLQlpZiAocm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ICsJ aWYgKHJvdGF0aW9uID09IERSTV9ST1RBVEVfMTgwKSB7Cj4gIAkJZHNwY250ciB8PSBESVNQUExB TkVfUk9UQVRFXzE4MDsKPiAgCj4gIAkJeCArPSAoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdyAtIDEp Owo+IEBAIC0yNzkxLDcgKzI3OTEsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAo+ICAJCWludGVsX2NvbXB1dGVf dGlsZV9vZmZzZXQoJngsICZ5LCBmYiwgMCwKPiAgCQkJCQkgIGZiLT5waXRjaGVzWzBdLCByb3Rh dGlvbik7Cj4gIAlsaW5lYXJfb2Zmc2V0IC09IGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0Owo+ IC0JaWYgKHJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiArCWlmIChyb3RhdGlv biA9PSBEUk1fUk9UQVRFXzE4MCkgewo+ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1JPVEFURV8x ODA7Cj4gIAo+ICAJCWlmICghSVNfSEFTV0VMTChkZXYpICYmICFJU19CUk9BRFdFTEwoZGV2KSkg ewo+IEBAIC0yOTUyLDE3ICsyOTUyLDE3IEBAIHUzMiBza2xfcGxhbmVfY3RsX3RpbGluZyh1aW50 NjRfdCBmYl9tb2RpZmllcikKPiAgdTMyIHNrbF9wbGFuZV9jdGxfcm90YXRpb24odW5zaWduZWQg aW50IHJvdGF0aW9uKQo+ICB7Cj4gIAlzd2l0Y2ggKHJvdGF0aW9uKSB7Cj4gLQljYXNlIEJJVChE Uk1fUk9UQVRFXzApOgo+ICsJY2FzZSBEUk1fUk9UQVRFXzA6Cj4gIAkJYnJlYWs7Cj4gIAkvKgo+ ICAJICogRFJNX1JPVEFURV8gaXMgY291bnRlciBjbG9ja3dpc2UgdG8gc3RheSBjb21wYXRpYmxl IHdpdGggWHJhbmRyCj4gIAkgKiB3aGlsZSBpOTE1IEhXIHJvdGF0aW9uIGlzIGNsb2Nrd2lzZSwg dGhhdHMgd2h5IHRoaXMgc3dhcHBpbmcuCj4gIAkgKi8KPiAtCWNhc2UgQklUKERSTV9ST1RBVEVf OTApOgo+ICsJY2FzZSBEUk1fUk9UQVRFXzkwOgo+ICAJCXJldHVybiBQTEFORV9DVExfUk9UQVRF XzI3MDsKPiAtCWNhc2UgQklUKERSTV9ST1RBVEVfMTgwKToKPiArCWNhc2UgRFJNX1JPVEFURV8x ODA6Cj4gIAkJcmV0dXJuIFBMQU5FX0NUTF9ST1RBVEVfMTgwOwo+IC0JY2FzZSBCSVQoRFJNX1JP VEFURV8yNzApOgo+ICsJY2FzZSBEUk1fUk9UQVRFXzI3MDoKPiAgCQlyZXR1cm4gUExBTkVfQ1RM X1JPVEFURV85MDsKPiAgCWRlZmF1bHQ6Cj4gIAkJTUlTU0lOR19DQVNFKHJvdGF0aW9uKTsKPiBA QCAtNDI0OCw3ICs0MjQ4LDcgQEAgaW50IHNrbF91cGRhdGVfc2NhbGVyX2NydGMoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnN0YXRlKQo+ICAJCSAgICAgIGludGVsX2NydGMtPnBpcGUsIFNLTF9D UlRDX0lOREVYKTsKPiAgCj4gIAlyZXR1cm4gc2tsX3VwZGF0ZV9zY2FsZXIoc3RhdGUsICFzdGF0 ZS0+YmFzZS5hY3RpdmUsIFNLTF9DUlRDX0lOREVYLAo+IC0JCSZzdGF0ZS0+c2NhbGVyX3N0YXRl LnNjYWxlcl9pZCwgQklUKERSTV9ST1RBVEVfMCksCj4gKwkJJnN0YXRlLT5zY2FsZXJfc3RhdGUu c2NhbGVyX2lkLCBEUk1fUk9UQVRFXzAsCj4gIAkJc3RhdGUtPnBpcGVfc3JjX3csIHN0YXRlLT5w aXBlX3NyY19oLAo+ICAJCWFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXksIGFkanVzdGVkX21v ZGUtPmNydGNfdmRpc3BsYXkpOwo+ICB9Cj4gQEAgLTEwMjU1LDcgKzEwMjU1LDcgQEAgc3RhdGlj IHZvaWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdTMyIGJhc2Us Cj4gIAkJaWYgKEhBU19EREkoZGV2KSkKPiAgCQkJY250bCB8PSBDVVJTT1JfUElQRV9DU0NfRU5B QkxFOwo+ICAKPiAtCQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gPT0gQklUKERSTV9S T1RBVEVfMTgwKSkKPiArCQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gPT0gRFJNX1JP VEFURV8xODApCj4gIAkJCWNudGwgfD0gQ1VSU09SX1JPVEFURV8xODA7Cj4gIAl9Cj4gIAo+IEBA IC0xMDMwMSw3ICsxMDMwMSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfdXBkYXRlX2N1cnNv cihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJCS8qIElMSysgZG8gdGhpcyBhdXRvbWFn aWNhbGx5ICovCj4gIAkJaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2KSAmJgo+IC0JCSAgICBwbGFu ZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4gKwkJICAg IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uID09IERSTV9ST1RBVEVfMTgwKSB7Cj4gIAkJCWJh c2UgKz0gKHBsYW5lX3N0YXRlLT5iYXNlLmNydGNfaCAqCj4gIAkJCQkgcGxhbmVfc3RhdGUtPmJh c2UuY3J0Y193IC0gMSkgKiA0Owo+ICAJCX0KPiBAQCAtMTQyOTYsMTEgKzE0Mjk2LDExIEBAIGZh aWw6Cj4gIHZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCj4gIHsKPiAgCWlmICghZGV2LT5t b2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkgewo+IC0JCXVuc2lnbmVkIGxvbmcgZmxhZ3Mg PSBCSVQoRFJNX1JPVEFURV8wKSB8Cj4gLQkJCUJJVChEUk1fUk9UQVRFXzE4MCk7Cj4gKwkJdW5z aWduZWQgbG9uZyBmbGFncyA9IERSTV9ST1RBVEVfMCB8Cj4gKwkJCURSTV9ST1RBVEVfMTgwOwo+ ICAKPiAgCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiAtCQkJZmxhZ3MgfD0gQklU KERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMjcwKTsKPiArCQkJZmxhZ3MgfD0gRFJN X1JPVEFURV85MCB8IERSTV9ST1RBVEVfMjcwOwo+ICAKPiAgCQlkZXYtPm1vZGVfY29uZmlnLnJv dGF0aW9uX3Byb3BlcnR5ID0KPiAgCQkJZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5 KGRldiwgZmxhZ3MpOwo+IEBAIC0xNDQ0Myw4ICsxNDQ0Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgZHJt X3BsYW5lICppbnRlbF9jdXJzb3JfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gIAkJaWYgKCFkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQo+ICAJCQlkZXYt Pm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KPiAgCQkJCWRybV9tb2RlX2NyZWF0ZV9y b3RhdGlvbl9wcm9wZXJ0eShkZXYsCj4gLQkJCQkJCQlCSVQoRFJNX1JPVEFURV8wKSB8Cj4gLQkJ CQkJCQlCSVQoRFJNX1JPVEFURV8xODApKTsKPiArCQkJCQkJCURSTV9ST1RBVEVfMCB8Cj4gKwkJ CQkJCQlEUk1fUk9UQVRFXzE4MCk7Cj4gIAkJaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25f cHJvcGVydHkpCj4gIAkJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjdXJzb3ItPmJhc2Uu YmFzZSwKPiAgCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHksCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBlNzRkODUxLi5mODJkY2M1IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTI1OCw3ICsxMjU4LDcgQEAgdW5zaWduZWQgaW50IGlu dGVsX3RpbGVfaGVpZ2h0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgc3RhdGljIGlubGluZSBib29sCj4gIGludGVsX3JvdGF0aW9uXzkwX29yXzI3MCh1bnNpZ25l ZCBpbnQgcm90YXRpb24pCj4gIHsKPiAtCXJldHVybiByb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFU RV85MCkgfCBCSVQoRFJNX1JPVEFURV8yNzApKTsKPiArCXJldHVybiByb3RhdGlvbiAmIChEUk1f Uk9UQVRFXzkwIHwgRFJNX1JPVEFURV8yNzApOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX2NyZWF0 ZV9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiYy5jCj4gaW5kZXggNzgxZTJmNS4uZWZmMjZkNyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiYy5jCj4gQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNf Y2FuX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJCXJldHVybiBmYWxzZTsK PiAgCX0KPiAgCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0WChk ZXZfcHJpdikgJiYKPiAtCSAgICBjYWNoZS0+cGxhbmUucm90YXRpb24gIT0gQklUKERSTV9ST1RB VEVfMCkpIHsKPiArCSAgICBjYWNoZS0+cGxhbmUucm90YXRpb24gIT0gRFJNX1JPVEFURV8wKSB7 Cj4gIAkJZmJjLT5ub19mYmNfcmVhc29uID0gInJvdGF0aW9uIHVuc3VwcG9ydGVkIjsKPiAgCQly ZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gaW5kZXgg NjM0NDk5OS4uNGZlZTkzZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmRldi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+IEBA IC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIGludCBpbnRlbGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqaGVscGVyLAo+ICAJICogVGhpcyBhbHNvIHZhbGlkYXRlcyB0aGF0IGFueSBleGlz dGluZyBmYiBpbmhlcml0ZWQgZnJvbSB0aGUKPiAgCSAqIEJJT1MgaXMgc3VpdGFibGUgZm9yIG93 biBhY2Nlc3MuCj4gIAkgKi8KPiAtCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKCZp ZmJkZXYtPmZiLT5iYXNlLCBCSVQoRFJNX1JPVEFURV8wKSk7Cj4gKwlyZXQgPSBpbnRlbF9waW5f YW5kX2ZlbmNlX2ZiX29iaigmaWZiZGV2LT5mYi0+YmFzZSwgRFJNX1JPVEFURV8wKTsKPiAgCWlm IChyZXQpCj4gIAkJZ290byBvdXRfdW5sb2NrOwo+ICAKPiBAQCAtMjg5LDcgKzI4OSw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxmYl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPiAg b3V0X2Rlc3Ryb3lfZmJpOgo+ICAJZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaShoZWxwZXIpOwo+ ICBvdXRfdW5waW46Cj4gLQlpbnRlbF91bnBpbl9mYl9vYmooJmlmYmRldi0+ZmItPmJhc2UsIEJJ VChEUk1fUk9UQVRFXzApKTsKPiArCWludGVsX3VucGluX2ZiX29iaigmaWZiZGV2LT5mYi0+YmFz ZSwgRFJNX1JPVEFURV8wKTsKPiAgb3V0X3VubG9jazoKPiAgCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+ICAJcmV0dXJuIHJldDsKPiBAQCAtNTU0LDcgKzU1NCw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2ZiZGV2X2Rlc3Ryb3koc3RydWN0IGludGVsX2ZiZGV2ICppZmJkZXYpCj4g IAo+ICAJaWYgKGlmYmRldi0+ZmIpIHsKPiAgCQltdXRleF9sb2NrKCZpZmJkZXYtPmhlbHBlci5k ZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQkJaW50ZWxfdW5waW5fZmJfb2JqKCZpZmJkZXYtPmZiLT5i YXNlLCBCSVQoRFJNX1JPVEFURV8wKSk7Cj4gKwkJaW50ZWxfdW5waW5fZmJfb2JqKCZpZmJkZXYt PmZiLT5iYXNlLCBEUk1fUk9UQVRFXzApOwo+ICAJCW11dGV4X3VubG9jaygmaWZiZGV2LT5oZWxw ZXIuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCQlkcm1fZnJhbWVidWZmZXJfcmVtb3ZlKCZp ZmJkZXYtPmZiLT5iYXNlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IGluZGV4 IDBkZTkzNWEuLjIyYWUyMjk4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK PiBAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq ZHBsYW5lLAo+ICAJCQkJCQkgICBmYi0+cGl0Y2hlc1swXSwgcm90YXRpb24pOwo+ICAJbGluZWFy X29mZnNldCAtPSBzcHJzdXJmX29mZnNldDsKPiAgCj4gLQlpZiAocm90YXRpb24gPT0gQklUKERS TV9ST1RBVEVfMTgwKSkgewo+ICsJaWYgKHJvdGF0aW9uID09IERSTV9ST1RBVEVfMTgwKSB7Cj4g IAkJc3ByY3RsIHw9IFNQX1JPVEFURV8xODA7Cj4gIAo+ICAJCXggKz0gc3JjX3c7Cj4gQEAgLTU3 Nyw3ICs1NzcsNyBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ICAJCQkJCQkgICBmYi0+cGl0Y2hlc1swXSwgcm90YXRpb24pOwo+ICAJbGluZWFyX29mZnNldCAt PSBzcHJzdXJmX29mZnNldDsKPiAgCj4gLQlpZiAocm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVf MTgwKSkgewo+ICsJaWYgKHJvdGF0aW9uID09IERSTV9ST1RBVEVfMTgwKSB7Cj4gIAkJc3ByY3Rs IHw9IFNQUklURV9ST1RBVEVfMTgwOwo+ICAKPiAgCQkvKiBIU1cgYW5kIEJEVyBkb2VzIHRoaXMg YXV0b21hZ2ljYWxseSBpbiBoYXJkd2FyZSAqLwo+IEBAIC03MTQsNyArNzE0LDcgQEAgaWxrX3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkJCQkJICAgZmItPnBpdGNo ZXNbMF0sIHJvdGF0aW9uKTsKPiAgCWxpbmVhcl9vZmZzZXQgLT0gZHZzc3VyZl9vZmZzZXQ7Cj4g IAo+IC0JaWYgKHJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiArCWlmIChyb3Rh dGlvbiA9PSBEUk1fUk9UQVRFXzE4MCkgewo+ICAJCWR2c2NudHIgfD0gRFZTX1JPVEFURV8xODA7 Cj4gIAo+ICAJCXggKz0gc3JjX3c7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v bWRwL21kcDUvbWRwNV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1 X3BsYW5lLmMKPiBpbmRleCA0MzJjMDk4Li5hMDJhMjRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMKPiBAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9p ZCBtZHA1X3BsYW5lX2luc3RhbGxfcm90YXRpb25fcHJvcGVydHkoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgCWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiAgCQlk ZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KPiAgCQkJZHJtX21vZGVfY3JlYXRl X3JvdGF0aW9uX3Byb3BlcnR5KGRldiwKPiAtCQkJQklUKERSTV9SRUZMRUNUX1gpIHwgQklUKERS TV9SRUZMRUNUX1kpKTsKPiArCQkJRFJNX1JFRkxFQ1RfWCB8IERSTV9SRUZMRUNUX1kpOwo+ICAK PiAgCWlmIChkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQo+ICAJCWRybV9vYmpl Y3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwKPiBAQCAtMzA5LDggKzMwOSw4IEBAIHN0 YXRpYyBpbnQgbWRwNV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAgCj4gLQkJaGZsaXAgPSAhIShzdGF0ZS0+ cm90YXRpb24gJiBCSVQoRFJNX1JFRkxFQ1RfWCkpOwo+IC0JCXZmbGlwID0gISEoc3RhdGUtPnJv dGF0aW9uICYgQklUKERSTV9SRUZMRUNUX1kpKTsKPiArCQloZmxpcCA9ICEhKHN0YXRlLT5yb3Rh dGlvbiAmIERSTV9SRUZMRUNUX1gpOwo+ICsJCXZmbGlwID0gISEoc3RhdGUtPnJvdGF0aW9uICYg RFJNX1JFRkxFQ1RfWSk7Cj4gIAkJaWYgKCh2ZmxpcCAmJiAhKG1kcDVfcGxhbmUtPmNhcHMgJiBN RFBfUElQRV9DQVBfVkZMSVApKSB8fAo+ICAJCQkoaGZsaXAgJiYgIShtZHA1X3BsYW5lLT5jYXBz ICYgTURQX1BJUEVfQ0FQX0hGTElQKSkpIHsKPiAgCQkJZGV2X2VycihwbGFuZS0+ZGV2LT5kZXYs Cj4gQEAgLTc0Myw4ICs3NDMsOCBAQCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfbW9kZV9zZXQoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAljb25maWcgfD0gZ2V0X3NjYWxlX2NvbmZpZyhmb3Jt YXQsIHNyY19oLCBjcnRjX2gsIGZhbHNlKTsKPiAgCURCRygic2NhbGUgY29uZmlnID0gJXgiLCBj b25maWcpOwo+ICAKPiAtCWhmbGlwID0gISEocHN0YXRlLT5yb3RhdGlvbiAmIEJJVChEUk1fUkVG TEVDVF9YKSk7Cj4gLQl2ZmxpcCA9ICEhKHBzdGF0ZS0+cm90YXRpb24gJiBCSVQoRFJNX1JFRkxF Q1RfWSkpOwo+ICsJaGZsaXAgPSAhIShwc3RhdGUtPnJvdGF0aW9uICYgRFJNX1JFRkxFQ1RfWCk7 Cj4gKwl2ZmxpcCA9ICEhKHBzdGF0ZS0+cm90YXRpb24gJiBEUk1fUkVGTEVDVF9ZKTsKPiAgCj4g IAlzcGluX2xvY2tfaXJxc2F2ZSgmbWRwNV9wbGFuZS0+cGlwZV9sb2NrLCBmbGFncyk7Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jIGIvZHJpdmVy cy9ncHUvZHJtL29tYXBkcm0vb21hcF9kcnYuYwo+IGluZGV4IDI2YzYxMzQuLjNkZDc4ZjIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9kcnYuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2LmMKPiBAQCAtMjk1LDkgKzI5NSw5IEBAIHN0 YXRpYyBpbnQgb21hcF9tb2Rlc2V0X2luaXRfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAJaWYgKHByaXYtPmhhc19kbW0pIHsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0 aW9uX3Byb3BlcnR5ID0KPiAgCQkJZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KGRl diwKPiAtCQkJCUJJVChEUk1fUk9UQVRFXzApIHwgQklUKERSTV9ST1RBVEVfOTApIHwKPiAtCQkJ CUJJVChEUk1fUk9UQVRFXzE4MCkgfCBCSVQoRFJNX1JPVEFURV8yNzApIHwKPiAtCQkJCUJJVChE Uk1fUkVGTEVDVF9YKSB8IEJJVChEUk1fUkVGTEVDVF9ZKSk7Cj4gKwkJCQlEUk1fUk9UQVRFXzAg fCBEUk1fUk9UQVRFXzkwIHwKPiArCQkJCURSTV9ST1RBVEVfMTgwIHwgRFJNX1JPVEFURV8yNzAg fAo+ICsJCQkJRFJNX1JFRkxFQ1RfWCB8IERSTV9SRUZMRUNUX1kpOwo+ICAJCWlmICghZGV2LT5t b2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiAgCQkJcmV0dXJuIC1FTk9NRU07Cj4gIAl9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZmIuYyBiL2RyaXZl cnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZmIuYwo+IGluZGV4IDMxZjUxNzguLjVmMzMzN2YgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9mYi5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9mYi5jCj4gQEAgLTE3OSwyNCArMTc5LDI0IEBAIHZv aWQgb21hcF9mcmFtZWJ1ZmZlcl91cGRhdGVfc2Nhbm91dChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwKPiAgCQkJCQkodWludDMyX3Qpd2luLT5yb3RhdGlvbik7Cj4gIAkJCS8qIGZhbGx0aHJ1 IHRvIGRlZmF1bHQgdG8gbm8gcm90YXRpb24gKi8KPiAgCQljYXNlIDA6Cj4gLQkJY2FzZSBCSVQo RFJNX1JPVEFURV8wKToKPiArCQljYXNlIERSTV9ST1RBVEVfMDoKPiAgCQkJb3JpZW50ID0gMDsK PiAgCQkJYnJlYWs7Cj4gLQkJY2FzZSBCSVQoRFJNX1JPVEFURV85MCk6Cj4gKwkJY2FzZSBEUk1f Uk9UQVRFXzkwOgo+ICAJCQlvcmllbnQgPSBNQVNLX1hZX0ZMSVAgfCBNQVNLX1hfSU5WRVJUOwo+ ICAJCQlicmVhazsKPiAtCQljYXNlIEJJVChEUk1fUk9UQVRFXzE4MCk6Cj4gKwkJY2FzZSBEUk1f Uk9UQVRFXzE4MDoKPiAgCQkJb3JpZW50ID0gTUFTS19YX0lOVkVSVCB8IE1BU0tfWV9JTlZFUlQ7 Cj4gIAkJCWJyZWFrOwo+IC0JCWNhc2UgQklUKERSTV9ST1RBVEVfMjcwKToKPiArCQljYXNlIERS TV9ST1RBVEVfMjcwOgo+ICAJCQlvcmllbnQgPSBNQVNLX1hZX0ZMSVAgfCBNQVNLX1lfSU5WRVJU Owo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAo+IC0JCWlmICh3aW4tPnJvdGF0aW9uICYgQklUKERS TV9SRUZMRUNUX1gpKQo+ICsJCWlmICh3aW4tPnJvdGF0aW9uICYgRFJNX1JFRkxFQ1RfWCkKPiAg CQkJb3JpZW50IF49IE1BU0tfWF9JTlZFUlQ7Cj4gIAo+IC0JCWlmICh3aW4tPnJvdGF0aW9uICYg QklUKERSTV9SRUZMRUNUX1kpKQo+ICsJCWlmICh3aW4tPnJvdGF0aW9uICYgRFJNX1JFRkxFQ1Rf WSkKPiAgCQkJb3JpZW50IF49IE1BU0tfWV9JTlZFUlQ7Cj4gIAo+ICAJCS8qIGFkanVzdCB4LHkg b2Zmc2V0IGZvciBmbGlwL2ludmVydDogKi8KPiBAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgb21h cF9mcmFtZWJ1ZmZlcl91cGRhdGVfc2Nhbm91dChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwK PiAgCX0gZWxzZSB7Cj4gIAkJc3dpdGNoICh3aW4tPnJvdGF0aW9uICYgRFJNX1JPVEFURV9NQVNL KSB7Cj4gIAkJY2FzZSAwOgo+IC0JCWNhc2UgQklUKERSTV9ST1RBVEVfMCk6Cj4gKwkJY2FzZSBE Uk1fUk9UQVRFXzA6Cj4gIAkJCS8qIE9LICovCj4gIAkJCWJyZWFrOwo+ICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJt L29tYXBkcm0vb21hcF9wbGFuZS5jCj4gaW5kZXggNTI1MmFiNy4uNGM3NzI3ZSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX3BsYW5lLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vb21hcGRybS9vbWFwX3BsYW5lLmMKPiBAQCAtMTA5LDggKzEwOSw4IEBAIHN0YXRp YyB2b2lkIG9tYXBfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiAgCXdpbi5zcmNfeSA9IHN0YXRlLT5zcmNfeSA+PiAxNjsKPiAgCj4gIAlzd2l0Y2ggKHN0YXRl LT5yb3RhdGlvbiAmIERSTV9ST1RBVEVfTUFTSykgewo+IC0JY2FzZSBCSVQoRFJNX1JPVEFURV85 MCk6Cj4gLQljYXNlIEJJVChEUk1fUk9UQVRFXzI3MCk6Cj4gKwljYXNlIERSTV9ST1RBVEVfOTA6 Cj4gKwljYXNlIERSTV9ST1RBVEVfMjcwOgo+ICAJCXdpbi5zcmNfdyA9IHN0YXRlLT5zcmNfaCA+ PiAxNjsKPiAgCQl3aW4uc3JjX2ggPSBzdGF0ZS0+c3JjX3cgPj4gMTY7Cj4gIAkJYnJlYWs7Cj4g QEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgdm9pZCBvbWFwX3BsYW5lX2F0b21pY19kaXNhYmxl KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJc3RydWN0IG9tYXBfcGxhbmVfc3RhdGUgKm9t YXBfc3RhdGUgPSB0b19vbWFwX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Cj4gIAlzdHJ1Y3Qg b21hcF9wbGFuZSAqb21hcF9wbGFuZSA9IHRvX29tYXBfcGxhbmUocGxhbmUpOwo+ICAKPiAtCXBs YW5lLT5zdGF0ZS0+cm90YXRpb24gPSBCSVQoRFJNX1JPVEFURV8wKTsKPiArCXBsYW5lLT5zdGF0 ZS0+cm90YXRpb24gPSBEUk1fUk9UQVRFXzA7Cj4gIAlvbWFwX3N0YXRlLT56b3JkZXIgPSBwbGFu ZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZCj4gIAkJCSAgID8gMCA6IG9tYXBfcGxh bmUtPmlkOwo+ICAKPiBAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBpbnQgb21hcF9wbGFuZV9h dG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJcmV0dXJuIC1FSU5WQUw7 Cj4gIAo+ICAJaWYgKHN0YXRlLT5mYikgewo+IC0JCWlmIChzdGF0ZS0+cm90YXRpb24gIT0gQklU KERSTV9ST1RBVEVfMCkgJiYKPiArCQlpZiAoc3RhdGUtPnJvdGF0aW9uICE9IERSTV9ST1RBVEVf MCAmJgo+ICAJCSAgICAhb21hcF9mcmFtZWJ1ZmZlcl9zdXBwb3J0c19yb3RhdGlvbihzdGF0ZS0+ ZmIpKQo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiBAQCAtMjY5LDcgKzI2OSw3IEBAIHN0 YXRpYyB2b2lkIG9tYXBfcGxhbmVfcmVzZXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gIAkg Ki8KPiAgCW9tYXBfc3RhdGUtPnpvcmRlciA9IHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBF X1BSSU1BUlkKPiAgCQkJICAgPyAwIDogb21hcF9wbGFuZS0+aWQ7Cj4gLQlvbWFwX3N0YXRlLT5i YXNlLnJvdGF0aW9uID0gQklUKERSTV9ST1RBVEVfMCk7Cj4gKwlvbWFwX3N0YXRlLT5iYXNlLnJv dGF0aW9uID0gRFJNX1JPVEFURV8wOwo+ICAKPiAgCXBsYW5lLT5zdGF0ZSA9ICZvbWFwX3N0YXRl LT5iYXNlOwo+ICAJcGxhbmUtPnN0YXRlLT5wbGFuZSA9IHBsYW5lOwo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fY3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+IGluZGV4IDNl ZGVhZjguLjQ0ODYyNWQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+ICsr KyBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiBAQCAtODMsMTQgKzgzLDE1IEBAIHN0YXRpYyBp bmxpbmUgdWludDY0X3QgSTY0MlU2NChpbnQ2NF90IHZhbCkKPiAgICogc3BlY2lmaWVkIGFtb3Vu dCBpbiBkZWdyZWVzIGluIGNvdW50ZXIgY2xvY2t3aXNlIGRpcmVjdGlvbi4gRFJNX1JFRkxFQ1Rf WCBhbmQKPiAgICogRFJNX1JFRkxFQ1RfWSByZWZsZWN0cyB0aGUgaW1hZ2UgYWxvbmcgdGhlIHNw ZWNpZmllZCBheGlzIHByaW9yIHRvIHJvdGF0aW9uCj4gICAqLwo+IC0jZGVmaW5lIERSTV9ST1RB VEVfTUFTSyAweDBmCj4gLSNkZWZpbmUgRFJNX1JPVEFURV8wCTAKPiAtI2RlZmluZSBEUk1fUk9U QVRFXzkwCTEKPiAtI2RlZmluZSBEUk1fUk9UQVRFXzE4MAkyCj4gLSNkZWZpbmUgRFJNX1JPVEFU RV8yNzAJMwo+IC0jZGVmaW5lIERSTV9SRUZMRUNUX01BU0sgKH5EUk1fUk9UQVRFX01BU0spCj4g LSNkZWZpbmUgRFJNX1JFRkxFQ1RfWAk0Cj4gLSNkZWZpbmUgRFJNX1JFRkxFQ1RfWQk1Cj4gKyNk ZWZpbmUgRFJNX1JPVEFURV8wCUJJVCgwKQo+ICsjZGVmaW5lIERSTV9ST1RBVEVfOTAJQklUKDEp Cj4gKyNkZWZpbmUgRFJNX1JPVEFURV8xODAJQklUKDIpCj4gKyNkZWZpbmUgRFJNX1JPVEFURV8y NzAJQklUKDMpCj4gKyNkZWZpbmUgRFJNX1JPVEFURV9NQVNLIChEUk1fUk9UQVRFXzAgICB8IERS TV9ST1RBVEVfOTAgfCBcCj4gKwkJCSBEUk1fUk9UQVRFXzE4MCB8IERSTV9ST1RBVEVfMjcwKQo+ ICsjZGVmaW5lIERSTV9SRUZMRUNUX1gJQklUKDQpCj4gKyNkZWZpbmUgRFJNX1JFRkxFQ1RfWQlC SVQoNSkKPiArI2RlZmluZSBEUk1fUkVGTEVDVF9NQVNLIChEUk1fUkVGTEVDVF9YIHwgRFJNX1JF RkxFQ1RfWSkKPiAgCj4gIGVudW0gZHJtX2Nvbm5lY3Rvcl9mb3JjZSB7Cj4gIAlEUk1fRk9SQ0Vf VU5TUEVDSUZJRUQsCj4gLS0gCj4gMi41LjUKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==