From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH 1/2] drm: Pretty print mode flags Date: Thu, 20 Jun 2019 22:25:42 +0200 Message-ID: <20190620202542.GA12106@ravnborg.org> References: <20190620185049.8974-1-ville.syrjala@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: <20190620185049.8974-1-ville.syrjala@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: Ville Syrjala Cc: freedreno@lists.freedesktop.org, Neil Armstrong , linux-arm-msm@vger.kernel.org, intel-gfx@lists.freedesktop.org, Russell King , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Benjamin Gaignard , linux-amlogic@lists.infradead.org, Vincent Abriou , Ilia Mirkin List-Id: intel-gfx@lists.freedesktop.org SGkgVmlsbGUuCgpPbiBUaHUsIEp1biAyMCwgMjAxOSBhdCAwOTo1MDo0OFBNICswMzAwLCBWaWxs ZSBTeXJqYWxhIHdyb3RlOgo+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4gCj4gRGVjb2RlIHRoZSBtb2RlIGZsYWdzIHdoZW4gcHJpbnRpbmcg dGhlIG1vZGVsaW5lIHNvIHRoYXQgSQo+IG5vIGxvbmdlciBoYXZlIHRvIGRlY29kZSB0aGUgaGV4 IG51bWJlciBteXNlbGYuCllvdSBhcmUgZXh0ZW5kaW5nIHRoZSBjdXJyZW50IHdheSB0byBwcmlu dCBtb2RlIGZsYWdzLApidXQgSSB3b3VsZCBhbnl3YXkgbGlrZSB0byBwb2ludCBvdXQgYSBkaWZm ZXJlbnQgYXBwcm9hY2guCgpXaGVuIEkgbmVlZCB0byBwcmludCBhIGZvdXJjYyBjb2RlIGl0IGlz IGFzIHNpbXBsZSBhczoKCnsKCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZidWY7CgoJcHJp bnRrKCJNeSBmb3JtYXQ6ICVzXG4iLCBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZvcm1hdCwgJmZidWYp Owp9CgpUaGlzIHdheSB0byBoYW5kbGUgdGhpcyBmZWVscyBtb3JlIHN0cmFpZ2h0Zm9yd2FyZAp0 aGFuIHRoZSBjdXJyZW50IGFwcHJvYWNoIHVzZWQgZm9yIG1vZGVzLgoKTWF5YmUgYmlrZXNoZWRk aW5nLCBhcyB5b3VyIG1pbGVhZ2UgbWF5IHZhcnkuCgpBIG1pZGRsZSBncm91bmQgY291bGQgYmUg dG8gaW50cm9kdWNlIGEgc3RydWN0IGZvciB0aGUgYnVmIHNvIHdlIGtub3cKdGhlIGNhbGxlcnMg ZG8gaXQgcmlnaHQuCgpNb3N0IG9mIHRoZSBjb2RlIHdvdWxkIGJlIHRoZSBzYW1lLCBidXQgYWxs IGNhbGwgc2l0ZXMgd291bGQgbmVlZCB0byBiZQp1cGRhdGVkLgpXaGF0IGRvIHlvdSB0aGluaz8K CglTYW0KCgo+IAo+IFRvIGRvIHRoaXMgbmVhdGx5IEkgbWFkZSB0aGUgY2FsbGVyIHByb3ZpZGUg YSB0ZW1wb3JhcnkKPiBvbiBzdGFjayBidWZmZXIgd2hlcmUgd2UgY2FuIHByb2R1Y2UgdGhlIHJl c3VsdHMuIEkgY2hvY2UgNjQKPiBieXRlcyBhcyBhIHJlYXNvbmFibGUgc2l6ZSBmb3IgdGhpcy4g VGhlIHdvcnN0IGNhc2UgSSB0aGluawo+IGlzID4gMTAwIGJ5dGVzIGJ1dCB0aGF0IGtpbmQgb2Yg bW9kZSB3b3VsZCBiZSBub25zZW5zZSBhbnl3YXkKPiBzbyBJIGZpZ3VyZWQgY29ycmVjdCBkZWNv ZGluZyBpc24ndCBhcyBpbXBvcnRhbnQgaW4gc3VjaAo+IGNhc2VzLgo+IAo+IENjOiBSdXNzZWxs IEtpbmcgPGxpbnV4QGFybWxpbnV4Lm9yZy51az4KPiBDYzogTmVpbCBBcm1zdHJvbmcgPG5hcm1z dHJvbmdAYmF5bGlicmUuY29tPgo+IENjOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+ Cj4gQ2M6IFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20+Cj4gQ2M6IFRoaWVy cnkgUmVkaW5nIDx0aGllcnJ5LnJlZGluZ0BnbWFpbC5jb20+Cj4gQ2M6IFNhbSBSYXZuYm9yZyA8 c2FtQHJhdm5ib3JnLm9yZz4KPiBDYzogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWdu YXJkQGxpbmFyby5vcmc+Cj4gQ2M6IFZpbmNlbnQgQWJyaW91IDx2aW5jZW50LmFicmlvdUBzdC5j b20+Cj4gQ2M6IGxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwo+IENjOiBsaW51eC1h cm0tbXNtQHZnZXIua2VybmVsLm9yZwo+IENjOiBmcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gQ2M6IElsaWEgTWlya2luIDxpbWlya2luQGFsdW0ubWl0LmVkdT4KPiBTaWduZWQtb2Zm LWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9jcnRjLmMgICAgICAgICAgfCAgIDMg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgICAgICAgICAgIHwgICAz ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXMuYyAgICAgICAgICAgICAgICAgICB8IDEx NiArKysrKysrKysrKysrKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgICAgICAgICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9kd19o ZG1pLmMgICAgICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fdmVu Yy5jICAgICAgICAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDQv bWRwNF9jcnRjLmMgICAgIHwgICAzICstCj4gIC4uLi9ncHUvZHJtL21zbS9kaXNwL21kcDQvbWRw NF9kc2lfZW5jb2Rlci5jICB8ICAgMyArLQo+ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9tZHA0L21k cDRfZHR2X2VuY29kZXIuYyAgfCAgIDMgKy0KPiAgLi4uL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNC9t ZHA0X2xjZGNfZW5jb2Rlci5jIHwgICAzICstCj4gIC4uLi9ncHUvZHJtL21zbS9kaXNwL21kcDUv bWRwNV9jbWRfZW5jb2Rlci5jICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av bWRwNS9tZHA1X2NydGMuYyAgICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L21kcDUvbWRwNV9lbmNvZGVyLmMgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNp L2RzaV9tYW5hZ2VyLmMgICAgICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Vk cC9lZHBfYnJpZGdlLmMgICAgICAgICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL29tYXBk cm0vb21hcF9jb25uZWN0b3IuYyAgICAgIHwgICA1ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFw ZHJtL29tYXBfY3J0Yy5jICAgICAgICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtcm9uYm8tcmIwNzBkMzAuYyAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL3N0 aS9zdGlfY3J0Yy5jICAgICAgICAgICAgICAgIHwgICAzICstCj4gIGluY2x1ZGUvZHJtL2RybV9t b2Rlcy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArKy0KPiAgMjAgZmlsZXMgY2hhbmdl ZCwgMTY1IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJt YWRhL2FybWFkYV9jcnRjLmMKPiBpbmRleCBiYTRhM2ZhYjc3NDUuLmNlOTMzNTY4MmJkMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9jcnRjLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9jcnRjLmMKPiBAQCAtMjYyLDYgKzI2Miw3IEBA IHN0YXRpYyB2b2lkIGFybWFkYV9kcm1fY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAl1bnNpZ25lZCBpOwo+ICAJYm9v bCBpbnRlcmxhY2VkID0gISEoYWRqLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKTsK PiArCWNoYXIgYnVmW0RSTV9NT0RFX0ZMQUdTX0JVRl9MRU5dOwo+ICAKPiAgCWkgPSAwOwo+ICAJ cm0gPSBhZGotPmNydGNfaHN5bmNfc3RhcnQgLSBhZGotPmNydGNfaGRpc3BsYXk7Cj4gQEAgLTI3 MCw3ICsyNzEsNyBAQCBzdGF0aWMgdm9pZCBhcm1hZGFfZHJtX2NydGNfbW9kZV9zZXRfbm9mYihz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAl0bSA9IGFkai0+Y3J0Y192dG90YWwgLSBhZGotPmNy dGNfdnN5bmNfZW5kOwo+ICAKPiAgCURSTV9ERUJVR19LTVMoIltDUlRDOiVkOiVzXSBtb2RlICIg RFJNX01PREVfRk1UICJcbiIsCj4gLQkJICAgICAgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSwg RFJNX01PREVfQVJHKGFkaikpOwo+ICsJCSAgICAgIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUs IERSTV9NT0RFX0FSRyhhZGosIGJ1ZikpOwo+ICAJRFJNX0RFQlVHX0tNUygibG0gJWQgcm0gJWQg dG0gJWQgYm0gJWRcbiIsIGxtLCBybSwgdG0sIGJtKTsKPiAgCj4gIAkvKiBOb3cgY29tcHV0ZSB0 aGUgZGl2aWRlciBmb3IgcmVhbCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+IGluZGV4IDQxOTM4MWFi YmRkMS4uODFjYWY5MWZiZDcyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gQEAgLTM4MCw2ICsz ODAsNyBAQCBzdGF0aWMgdm9pZCBkcm1fYXRvbWljX2NydGNfcHJpbnRfc3RhdGUoc3RydWN0IGRy bV9wcmludGVyICpwLAo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4g IHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjOwo+ICsJY2hhciBidWZb RFJNX01PREVfRkxBR1NfQlVGX0xFTl07Cj4gIAo+ICAJZHJtX3ByaW50ZihwLCAiY3J0Y1sldV06 ICVzXG4iLCBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKPiAgCWRybV9wcmludGYocCwgIlx0 ZW5hYmxlPSVkXG4iLCBzdGF0ZS0+ZW5hYmxlKTsKPiBAQCAtMzkzLDcgKzM5NCw3IEBAIHN0YXRp YyB2b2lkIGRybV9hdG9taWNfY3J0Y19wcmludF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAs Cj4gIAlkcm1fcHJpbnRmKHAsICJcdHBsYW5lX21hc2s9JXhcbiIsIHN0YXRlLT5wbGFuZV9tYXNr KTsKPiAgCWRybV9wcmludGYocCwgIlx0Y29ubmVjdG9yX21hc2s9JXhcbiIsIHN0YXRlLT5jb25u ZWN0b3JfbWFzayk7Cj4gIAlkcm1fcHJpbnRmKHAsICJcdGVuY29kZXJfbWFzaz0leFxuIiwgc3Rh dGUtPmVuY29kZXJfbWFzayk7Cj4gLQlkcm1fcHJpbnRmKHAsICJcdG1vZGU6ICIgRFJNX01PREVf Rk1UICJcbiIsIERSTV9NT0RFX0FSRygmc3RhdGUtPm1vZGUpKTsKPiArCWRybV9wcmludGYocCwg Ilx0bW9kZTogIiBEUk1fTU9ERV9GTVQgIlxuIiwgRFJNX01PREVfQVJHKCZzdGF0ZS0+bW9kZSwg YnVmKSk7Cj4gIAo+ICAJaWYgKGNydGMtPmZ1bmNzLT5hdG9taWNfcHJpbnRfc3RhdGUpCj4gIAkJ Y3J0Yy0+ZnVuY3MtPmF0b21pY19wcmludF9zdGF0ZShwLCBzdGF0ZSk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXMu Ywo+IGluZGV4IDU3ZTY0MDgyODhjOC4uM2QxNWM2MDAyOTVhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fbW9kZXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXMu Ywo+IEBAIC00NSw2ICs0NSwxMTggQEAKPiAgCj4gICNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5h bC5oIgo+ICAKPiArc3RhdGljIGNoYXIgKnNucHJpbnRfY29udChjaGFyICpidWYsIGludCAqbGVu LAo+ICsJCQkgIGNvbnN0IGNoYXIgKnN0ciwgYm9vbCBsYXN0KQo+ICt7Cj4gKwlpbnQgcjsKPiAr Cj4gKwlyID0gc25wcmludGYoYnVmLCAqbGVuLCAiJXMlcyIsIHN0ciwgbGFzdCA/ICIiIDogIiwi KTsKPiArCWlmIChyID49ICpsZW4pCj4gKwkJcmV0dXJuIGJ1ZjsKPiArCj4gKwkqbGVuIC09IHI7 Cj4gKwlidWYgKz0gcjsKPiArCj4gKwlyZXR1cm4gYnVmOwo+ICt9Cj4gKwo+ICsjZGVmaW5lIE1P REVfU1RSKHgpIHsgLm5hbWUgPSAjeCwgLmZsYWcgPSBEUk1fTU9ERV9GTEFHXyAjIyB4LCB9Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiArCWNvbnN0IGNoYXIgKm5hbWU7Cj4gKwl1MzIg ZmxhZzsKPiArfSBtb2RlX2ZsYWdzW10gPSB7Cj4gKwlNT0RFX1NUUihQSFNZTkMpLAo+ICsJTU9E RV9TVFIoTkhTWU5DKSwKPiArCU1PREVfU1RSKFBWU1lOQyksCj4gKwlNT0RFX1NUUihOVlNZTkMp LAo+ICsJTU9ERV9TVFIoSU5URVJMQUNFKSwKPiArCU1PREVfU1RSKENTWU5DKSwKPiArCU1PREVf U1RSKFBDU1lOQyksCj4gKwlNT0RFX1NUUihOQ1NZTkMpLAo+ICsJTU9ERV9TVFIoREJMU0NBTiks Cj4gKwlNT0RFX1NUUihIU0tFVyksCj4gKwlNT0RFX1NUUihEQkxDTEspLAo+ICsJTU9ERV9TVFIo Q0xLRElWMiksCj4gK307Cj4gKwo+ICsjdW5kZWYgTU9ERV9TVFIKPiArI2RlZmluZSBNT0RFX1NU Uih4KSBbRFJNX01PREVfRkxBR18zRF8gIyMgeCA+PiAxNF0gPSAjeAo+ICsKPiArc3RhdGljIGNv bnN0IGNoYXIgKiBjb25zdCBzdGVyZW9fZmxhZ3NbXSA9IHsKPiArCU1PREVfU1RSKE5PTkUpLAo+ ICsJTU9ERV9TVFIoRlJBTUVfUEFDS0lORyksCj4gKwlNT0RFX1NUUihGSUVMRF9BTFRFUk5BVElW RSksCj4gKwlNT0RFX1NUUihMSU5FX0FMVEVSTkFUSVZFKSwKPiArCU1PREVfU1RSKFNJREVfQllf U0lERV9GVUxMKSwKPiArCU1PREVfU1RSKExfREVQVEgpLAo+ICsJTU9ERV9TVFIoTF9ERVBUSF9H RlhfR0ZYX0RFUFRIKSwKPiArCU1PREVfU1RSKFRPUF9BTkRfQk9UVE9NKSwKPiArCU1PREVfU1RS KFNJREVfQllfU0lERV9IQUxGKSwKPiArfTsKPiArCj4gKyN1bmRlZiBNT0RFX1NUUgo+ICsjZGVm aW5lIE1PREVfU1RSKHgpIFtEUk1fTU9ERV9GTEFHX1BJQ19BUl8gIyMgeCA+PiAxOV0gPSAjeAo+ ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBhc3BlY3RfZmxhZ3NbXSA9IHsKPiArCU1P REVfU1RSKE5PTkUpLAo+ICsJTU9ERV9TVFIoNF8zKSwKPiArCU1PREVfU1RSKDE2XzkpLAo+ICsJ TU9ERV9TVFIoNjRfMjcpLAo+ICsJTU9ERV9TVFIoMjU2XzEzNSksCj4gK307Cj4gKwo+ICsjdW5k ZWYgTU9ERV9TVFIKPiArCj4gK2NvbnN0IGNoYXIgKmRybV9nZXRfbW9kZV9mbGFnc19uYW1lKGNo YXIgKmJ1ZiwgaW50IGxlbiwgdTMyIGZsYWdzKQo+ICt7Cj4gKwljaGFyICpwdHIgPSBidWY7Cj4g KwlpbnQgaTsKPiArCj4gKwlpZiAobGVuID09IDApCj4gKwkJcmV0dXJuIGJ1ZjsKPiArCj4gKwli dWZbMF0gPSAnXDAnOwo+ICsKPiArCWlmIChmbGFncyAmIERSTV9NT0RFX0ZMQUdfM0RfTUFTSykg ewo+ICsJCWludCBzdGVyZW8gPSAoZmxhZ3MgJiBEUk1fTU9ERV9GTEFHXzNEX01BU0spID4+IDE0 Owo+ICsKPiArCQlpZiAoc3RlcmVvIDwgQVJSQVlfU0laRShzdGVyZW9fZmxhZ3MpKSB7Cj4gKwkJ CWZsYWdzICY9IH5EUk1fTU9ERV9GTEFHXzNEX01BU0s7Cj4gKwkJCXB0ciA9IHNucHJpbnRfY29u dChwdHIsICZsZW4sCj4gKwkJCQkJICAgc3RlcmVvX2ZsYWdzW3N0ZXJlb10sICFmbGFncyk7Cj4g KwkJfQo+ICsJfQo+ICsKPiArCWlmIChmbGFncyAmIERSTV9NT0RFX0ZMQUdfUElDX0FSX01BU0sp IHsKPiArCQlpbnQgYXNwZWN0ID0gKGZsYWdzICYgRFJNX01PREVfRkxBR19QSUNfQVJfTUFTSykg Pj4gMTk7Cj4gKwo+ICsJCWlmIChhc3BlY3QgPCBBUlJBWV9TSVpFKGFzcGVjdF9mbGFncykpIHsK PiArCQkJZmxhZ3MgJj0gfkRSTV9NT0RFX0ZMQUdfUElDX0FSX01BU0s7Cj4gKwkJCXB0ciA9IHNu cHJpbnRfY29udChwdHIsICZsZW4sCj4gKwkJCQkJICAgYXNwZWN0X2ZsYWdzW2FzcGVjdF0sICFm bGFncyk7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG1v ZGVfZmxhZ3MpOyBpKyspIHsKPiArCQl1MzIgZmxhZyA9IG1vZGVfZmxhZ3NbaV0uZmxhZzsKPiAr Cj4gKwkJaWYgKChmbGFncyAmIGZsYWcpID09IDApCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlm bGFncyAmPSB+ZmxhZzsKPiArCj4gKwkJcHRyID0gc25wcmludF9jb250KHB0ciwgJmxlbiwKPiAr CQkJCSAgIG1vZGVfZmxhZ3NbaV0ubmFtZSwgIWZsYWdzKTsKPiArCX0KPiArCj4gKwlpZiAoZmxh Z3MpCj4gKwkJcHRyID0gc25wcmludF9jb250KHB0ciwgJmxlbiwgIj8iLCB0cnVlKTsKPiArCj4g KwlyZXR1cm4gYnVmOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2dldF9tb2RlX2ZsYWdzX25h bWUpOwo+ICsKPiAgLyoqCj4gICAqIGRybV9tb2RlX2RlYnVnX3ByaW50bW9kZWxpbmUgLSBwcmlu dCBhIG1vZGUgdG8gZG1lc2cKPiAgICogQG1vZGU6IG1vZGUgdG8gcHJpbnQKPiBAQCAtNTMsNyAr MTY1LDkgQEAKPiAgICovCj4gIHZvaWQgZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZShjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiAgewo+IC0JRFJNX0RFQlVHX0tNUygi TW9kZWxpbmUgIiBEUk1fTU9ERV9GTVQgIlxuIiwgRFJNX01PREVfQVJHKG1vZGUpKTsKPiArCWNo YXIgYnVmW0RSTV9NT0RFX0ZMQUdTX0JVRl9MRU5dOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIk1v ZGVsaW5lICIgRFJNX01PREVfRk1UICJcbiIsIERSTV9NT0RFX0FSRyhtb2RlLCBidWYpKTsKPiAg fQo+ICBFWFBPUlRfU1lNQk9MKGRybV9tb2RlX2RlYnVnX3ByaW50bW9kZWxpbmUpOwo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDYyY2YzNGRiOTI4MC4uMThhM2Zm OGUxNDYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMjUzOSwx MiArMjUzOSwxMyBAQCBzdGF0aWMgaW50IGk5MTVfZG1jX2luZm8oc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCj4gIHN0YXRpYyB2b2lkIGludGVsX3NlcV9wcmludF9tb2RlKHN0cnVj dCBzZXFfZmlsZSAqbSwgaW50IHRhYnMsCj4gIAkJCQkgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUpCj4gIHsKPiArCWNoYXIgYnVmW0RSTV9NT0RFX0ZMQUdTX0JVRl9MRU5dOwo+ICAJaW50 IGk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IHRhYnM7IGkrKykKPiAgCQlzZXFfcHV0YyhtLCAn XHQnKTsKPiAgCj4gLQlzZXFfcHJpbnRmKG0sIERSTV9NT0RFX0ZNVCAiXG4iLCBEUk1fTU9ERV9B UkcobW9kZSkpOwo+ICsJc2VxX3ByaW50ZihtLCBEUk1fTU9ERV9GTVQgIlxuIiwgRFJNX01PREVf QVJHKG1vZGUsIGJ1ZikpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyX2lu Zm8oc3RydWN0IHNlcV9maWxlICptLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVz b24vbWVzb25fZHdfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX2R3X2hkbWku Ywo+IGluZGV4IGRmM2Y5ZGRkMjIzNC4uMzBlNTNhMDQzYmE2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9kd19oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v bWVzb24vbWVzb25fZHdfaGRtaS5jCj4gQEAgLTYxMCwxMyArNjEwLDE0IEBAIGR3X2hkbWlfbW9k ZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCSAgIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ICB7Cj4gIAlzdHJ1Y3QgbWVzb25fZHJtICpw cml2ID0gY29ubmVjdG9yLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJY2hhciBidWZbRFJNX01PREVf RkxBR1NfQlVGX0xFTl07Cj4gIAl1bnNpZ25lZCBpbnQgdmNsa19mcmVxOwo+ICAJdW5zaWduZWQg aW50IHZlbmNfZnJlcTsKPiAgCXVuc2lnbmVkIGludCBoZG1pX2ZyZXE7Cj4gIAlpbnQgdmljID0g ZHJtX21hdGNoX2NlYV9tb2RlKG1vZGUpOwo+ICAJZW51bSBkcm1fbW9kZV9zdGF0dXMgc3RhdHVz Owo+ICAKPiAtCURSTV9ERUJVR19EUklWRVIoIk1vZGVsaW5lICIgRFJNX01PREVfRk1UICJcbiIs IERSTV9NT0RFX0FSRyhtb2RlKSk7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJNb2RlbGluZSAiIERS TV9NT0RFX0ZNVCAiXG4iLCBEUk1fTU9ERV9BUkcobW9kZSwgYnVmKSk7Cj4gIAo+ICAJLyogSWYg c2luayBtYXggVE1EUyBjbG9jaywgd2UgcmVqZWN0IHRoZSBtb2RlICovCj4gIAlpZiAoY29ubmVj dG9yLT5kaXNwbGF5X2luZm8ubWF4X3RtZHNfY2xvY2sgJiYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21lc29uL21lc29uX3ZlbmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNv bl92ZW5jLmMKPiBpbmRleCA3YjdhMGQ4ZDczN2MuLjA5YWNiYzA2ZjlmMyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fdmVuYy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lc29uL21lc29uX3ZlbmMuYwo+IEBAIC05ODcsOSArOTg3LDExIEBAIHZvaWQgbWVzb25f dmVuY19oZG1pX21vZGVfc2V0KHN0cnVjdCBtZXNvbl9kcm0gKnByaXYsIGludCB2aWMsCj4gIAlp ZiAobWVzb25fdmVuY19oZG1pX3N1cHBvcnRlZF92aWModmljKSkgewo+ICAJCXZtb2RlID0gbWVz b25fdmVuY19oZG1pX2dldF92aWNfdm1vZGUodmljKTsKPiAgCQlpZiAoIXZtb2RlKSB7Cj4gKwkJ CWNoYXIgYnVmW0RSTV9NT0RFX0ZMQUdTX0JVRl9MRU5dOwo+ICsKPiAgCQkJZGV2X2Vycihwcml2 LT5kZXYsICIlczogRmF0YWwgRXJyb3IsIHVuc3VwcG9ydGVkIG1vZGUgIgo+ICAJCQkJRFJNX01P REVfRk1UICJcbiIsIF9fZnVuY19fLAo+IC0JCQkJRFJNX01PREVfQVJHKG1vZGUpKTsKPiArCQkJ CURSTV9NT0RFX0FSRyhtb2RlLCBidWYpKTsKPiAgCQkJcmV0dXJuOwo+ICAJCX0KPiAgCX0gZWxz ZSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA0L21kcDRfY3J0 Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDQvbWRwNF9jcnRjLmMKPiBpbmRleCAw Y2ZkNGMwNmI2MTAuLmY2OGQ5Zjc0YjBlNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvbWRwNC9tZHA0X2NydGMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9tZHA0L21kcDRfY3J0Yy5jCj4gQEAgLTIzOCw2ICsyMzgsNyBAQCBzdGF0aWMgdm9pZCBtZHA0 X2NydGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAllbnVtIG1kcDRf ZG1hIGRtYSA9IG1kcDRfY3J0Yy0+ZG1hOwo+ICAJaW50IG92bHAgPSBtZHA0X2NydGMtPm92bHA7 Cj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiArCWNoYXIgYnVmW0RSTV9NT0RF X0ZMQUdTX0JVRl9MRU5dOwo+ICAKPiAgCWlmIChXQVJOX09OKCFjcnRjLT5zdGF0ZSkpCj4gIAkJ cmV0dXJuOwo+IEBAIC0yNDUsNyArMjQ2LDcgQEAgc3RhdGljIHZvaWQgbWRwNF9jcnRjX21vZGVf c2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJbW9kZSA9ICZjcnRjLT5zdGF0ZS0+ YWRqdXN0ZWRfbW9kZTsKPiAgCj4gIAlEQkcoIiVzOiBzZXQgbW9kZTogIiBEUk1fTU9ERV9GTVQs Cj4gLQkJCW1kcDRfY3J0Yy0+bmFtZSwgRFJNX01PREVfQVJHKG1vZGUpKTsKPiArCSAgICBtZHA0 X2NydGMtPm5hbWUsIERSTV9NT0RFX0FSRyhtb2RlLCBidWYpKTsKPiAgCj4gIAltZHA0X3dyaXRl KG1kcDRfa21zLCBSRUdfTURQNF9ETUFfU1JDX1NJWkUoZG1hKSwKPiAgCQkJTURQNF9ETUFfU1JD X1NJWkVfV0lEVEgobW9kZS0+aGRpc3BsYXkpIHwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL21kcDQvbWRwNF9kc2lfZW5jb2Rlci5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL21kcDQvbWRwNF9kc2lfZW5jb2Rlci5jCj4gaW5kZXggY2FhMzliNDYyMWUzLi4yZTBk Y2E0ZDI0ODQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDQvbWRw NF9kc2lfZW5jb2Rlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDQvbWRw NF9kc2lfZW5jb2Rlci5jCj4gQEAgLTU1LDEwICs1NSwxMSBAQCBzdGF0aWMgdm9pZCBtZHA0X2Rz aV9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiAgCXVpbnQz Ml90IGRzaV9oc3luY19za2V3LCB2c3luY19wZXJpb2QsIHZzeW5jX2xlbiwgY3RybF9wb2w7Cj4g IAl1aW50MzJfdCBkaXNwbGF5X3Zfc3RhcnQsIGRpc3BsYXlfdl9lbmQ7Cj4gIAl1aW50MzJfdCBo c3luY19zdGFydF94LCBoc3luY19lbmRfeDsKPiArCWNoYXIgYnVmW0RSTV9NT0RFX0ZMQUdTX0JV Rl9MRU5dOwo+ICAKPiAgCW1vZGUgPSBhZGp1c3RlZF9tb2RlOwo+ICAKPiAtCURCRygic2V0IG1v ZGU6ICIgRFJNX01PREVfRk1ULCBEUk1fTU9ERV9BUkcobW9kZSkpOwo+ICsJREJHKCJzZXQgbW9k ZTogIiBEUk1fTU9ERV9GTVQsIERSTV9NT0RFX0FSRyhtb2RlLCBidWYpKTsKPiAgCj4gIAljdHJs X3BvbCA9IDA7Cj4gIAlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX05IU1lOQykKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDQvbWRwNF9kdHZfZW5jb2Rl ci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDQvbWRwNF9kdHZfZW5jb2Rlci5jCj4g aW5kZXggMjU5ZDUxOTcxNDAxLi5lODhhYzA3MGE2NzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL21kcDQvbWRwNF9kdHZfZW5jb2Rlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL21kcDQvbWRwNF9kdHZfZW5jb2Rlci5jCj4gQEAgLTEwMSwxMCArMTAx LDExIEBAIHN0YXRpYyB2b2lkIG1kcDRfZHR2X2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyLAo+ICAJdWludDMyX3QgZHR2X2hzeW5jX3NrZXcsIHZzeW5jX3Blcmlv ZCwgdnN5bmNfbGVuLCBjdHJsX3BvbDsKPiAgCXVpbnQzMl90IGRpc3BsYXlfdl9zdGFydCwgZGlz cGxheV92X2VuZDsKPiAgCXVpbnQzMl90IGhzeW5jX3N0YXJ0X3gsIGhzeW5jX2VuZF94Owo+ICsJ Y2hhciBidWZbRFJNX01PREVfRkxBR1NfQlVGX0xFTl07Cj4gIAo+ICAJbW9kZSA9IGFkanVzdGVk X21vZGU7Cj4gIAo+IC0JREJHKCJzZXQgbW9kZTogIiBEUk1fTU9ERV9GTVQsIERSTV9NT0RFX0FS Ryhtb2RlKSk7Cj4gKwlEQkcoInNldCBtb2RlOiAiIERSTV9NT0RFX0ZNVCwgRFJNX01PREVfQVJH KG1vZGUsIGJ1ZikpOwo+ICAKPiAgCW1kcDRfZHR2X2VuY29kZXItPnBpeGNsb2NrID0gbW9kZS0+ Y2xvY2sgKiAxMDAwOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L21kcDQvbWRwNF9sY2RjX2VuY29kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA0 L21kcDRfbGNkY19lbmNvZGVyLmMKPiBpbmRleCBkZjZmOTgwM2ExZDcuLjk5YmRhZTljOTQ1YiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNC9tZHA0X2xjZGNfZW5j b2Rlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDQvbWRwNF9sY2RjX2Vu Y29kZXIuYwo+IEBAIC0yNzAsMTAgKzI3MCwxMSBAQCBzdGF0aWMgdm9pZCBtZHA0X2xjZGNfZW5j b2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gIAl1aW50MzJfdCBs Y2RjX2hzeW5jX3NrZXcsIHZzeW5jX3BlcmlvZCwgdnN5bmNfbGVuLCBjdHJsX3BvbDsKPiAgCXVp bnQzMl90IGRpc3BsYXlfdl9zdGFydCwgZGlzcGxheV92X2VuZDsKPiAgCXVpbnQzMl90IGhzeW5j X3N0YXJ0X3gsIGhzeW5jX2VuZF94Owo+ICsJY2hhciBidWZbRFJNX01PREVfRkxBR1NfQlVGX0xF Tl07Cj4gIAo+ICAJbW9kZSA9IGFkanVzdGVkX21vZGU7Cj4gIAo+IC0JREJHKCJzZXQgbW9kZTog IiBEUk1fTU9ERV9GTVQsIERSTV9NT0RFX0FSRyhtb2RlKSk7Cj4gKwlEQkcoInNldCBtb2RlOiAi IERSTV9NT0RFX0ZNVCwgRFJNX01PREVfQVJHKG1vZGUsIGJ1ZikpOwo+ICAKPiAgCW1kcDRfbGNk Y19lbmNvZGVyLT5waXhjbG9jayA9IG1vZGUtPmNsb2NrICogMTAwMDsKPiAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfY21kX2VuY29kZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfY21kX2VuY29kZXIuYwo+IGluZGV4IGVl ZWY0MWZjZDRlMS4uNmJmZmJlYmVlOGJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9tZHA1L21kcDVfY21kX2VuY29kZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9tZHA1L21kcDVfY21kX2VuY29kZXIuYwo+IEBAIC0xMjQsOSArMTI0LDExIEBAIHZv aWQgbWRwNV9jbWRfZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIs Cj4gIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAgCQkJICAgICAg IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQo+ICB7Cj4gKwljaGFyIGJ1 ZltEUk1fTU9ERV9GTEFHU19CVUZfTEVOXTsKPiArCj4gIAltb2RlID0gYWRqdXN0ZWRfbW9kZTsK PiAgCj4gLQlEQkcoInNldCBtb2RlOiAiIERSTV9NT0RFX0ZNVCwgRFJNX01PREVfQVJHKG1vZGUp KTsKPiArCURCRygic2V0IG1vZGU6ICIgRFJNX01PREVfRk1ULCBEUk1fTU9ERV9BUkcobW9kZSwg YnVmKSk7Cj4gIAlwaW5ncG9uZ190ZWFyY2hlY2tfc2V0dXAoZW5jb2RlciwgbW9kZSk7Cj4gIAlt ZHA1X2NydGNfc2V0X3BpcGVsaW5lKGVuY29kZXItPmNydGMpOwo+ICB9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfY3J0Yy5jIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL21kcDUvbWRwNV9jcnRjLmMKPiBpbmRleCBjMzc1MWM5NWI0NTIuLjg4OGEy NWQxZGE4YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1 X2NydGMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfY3J0Yy5j Cj4gQEAgLTM3OCwxMyArMzc4LDE0IEBAIHN0YXRpYyB2b2lkIG1kcDVfY3J0Y19tb2RlX3NldF9u b2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXUzMiBtaXhlcl93aWR0aCwgdmFsOwo+ICAJ dW5zaWduZWQgbG9uZyBmbGFnczsKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ ICsJY2hhciBidWZbRFJNX01PREVfRkxBR1NfQlVGX0xFTl07Cj4gIAo+ICAJaWYgKFdBUk5fT04o IWNydGMtPnN0YXRlKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJbW9kZSA9ICZjcnRjLT5zdGF0ZS0+ YWRqdXN0ZWRfbW9kZTsKPiAgCj4gLQlEQkcoIiVzOiBzZXQgbW9kZTogIiBEUk1fTU9ERV9GTVQs IGNydGMtPm5hbWUsIERSTV9NT0RFX0FSRyhtb2RlKSk7Cj4gKwlEQkcoIiVzOiBzZXQgbW9kZTog IiBEUk1fTU9ERV9GTVQsIGNydGMtPm5hbWUsIERSTV9NT0RFX0FSRyhtb2RlLCBidWYpKTsKPiAg Cj4gIAltaXhlcl93aWR0aCA9IG1vZGUtPmhkaXNwbGF5Owo+ICAJaWYgKHJfbWl4ZXIpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfZW5jb2Rlci5jIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9lbmNvZGVyLmMKPiBpbmRleCA4MjBh NjJjNDAwNjMuLjgwOTExOGJiNjk2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvbWRwNS9tZHA1X2VuY29kZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9tZHA1L21kcDVfZW5jb2Rlci5jCj4gQEAgLTExNSwxMCArMTE1LDExIEBAIHN0YXRpYyB2b2lk IG1kcDVfdmlkX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ ICAJdWludDMyX3QgaHN5bmNfc3RhcnRfeCwgaHN5bmNfZW5kX3g7Cj4gIAl1aW50MzJfdCBmb3Jt YXQgPSAweDIxMDA7Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsJY2hhciBidWZbRFJNX01P REVfRkxBR1NfQlVGX0xFTl07Cj4gIAo+ICAJbW9kZSA9IGFkanVzdGVkX21vZGU7Cj4gIAo+IC0J REJHKCJzZXQgbW9kZTogIiBEUk1fTU9ERV9GTVQsIERSTV9NT0RFX0FSRyhtb2RlKSk7Cj4gKwlE QkcoInNldCBtb2RlOiAiIERSTV9NT0RFX0ZNVCwgRFJNX01PREVfQVJHKG1vZGUsIGJ1ZikpOwo+ ICAKPiAgCWN0cmxfcG9sID0gMDsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZHNpL2RzaV9tYW5hZ2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfbWFuYWdl ci5jCj4gaW5kZXggZWM2Y2IwZjdmMjA2Li4xYmYyZjUwM2I4NGIgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX21hbmFnZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZHNpL2RzaV9tYW5hZ2VyLmMKPiBAQCAtNTI3LDggKzUyNyw5IEBAIHN0YXRpYyB2b2lk IGRzaV9tZ3JfYnJpZGdlX21vZGVfc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gIAlz dHJ1Y3QgbXNtX2RzaSAqb3RoZXJfZHNpID0gZHNpX21ncl9nZXRfb3RoZXJfZHNpKGlkKTsKPiAg CXN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0ID0gbXNtX2RzaS0+aG9zdDsKPiAgCWJvb2wgaXNf ZHVhbF9kc2kgPSBJU19EVUFMX0RTSSgpOwo+ICsJY2hhciBidWZbRFJNX01PREVfRkxBR1NfQlVG X0xFTl07Cj4gIAo+IC0JREJHKCJzZXQgbW9kZTogIiBEUk1fTU9ERV9GTVQsIERSTV9NT0RFX0FS Ryhtb2RlKSk7Cj4gKwlEQkcoInNldCBtb2RlOiAiIERSTV9NT0RFX0ZNVCwgRFJNX01PREVfQVJH KG1vZGUsIGJ1ZikpOwo+ICAKPiAgCWlmIChpc19kdWFsX2RzaSAmJiAhSVNfTUFTVEVSX0RTSV9M SU5LKGlkKSkKPiAgCQlyZXR1cm47Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZWRwL2VkcF9icmlkZ2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZWRwL2VkcF9icmlkZ2UuYwo+ IGluZGV4IDI5NTBiYmE0YWNhOS4uMDg0NDM0NTg2MmVmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZWRwL2VkcF9icmlkZ2UuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZWRwL2VkcF9icmlkZ2UuYwo+IEBAIC01MSw4ICs1MSw5IEBAIHN0YXRpYyB2b2lkIGVkcF9icmlk Z2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiAgCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7Cj4gIAlzdHJ1Y3QgZWRwX2JyaWRnZSAqZWRwX2JyaWRnZSA9IHRv X2VkcF9icmlkZ2UoYnJpZGdlKTsKPiAgCXN0cnVjdCBtc21fZWRwICplZHAgPSBlZHBfYnJpZGdl LT5lZHA7Cj4gKwljaGFyIGJ1ZltEUk1fTU9ERV9GTEFHU19CVUZfTEVOXTsKPiAgCj4gLQlEQkco InNldCBtb2RlOiAiIERSTV9NT0RFX0ZNVCwgRFJNX01PREVfQVJHKG1vZGUpKTsKPiArCURCRygi c2V0IG1vZGU6ICIgRFJNX01PREVfRk1ULCBEUk1fTU9ERV9BUkcobW9kZSwgYnVmKSk7Cj4gIAo+ ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5l Y3Rvcl9saXN0LCBoZWFkKSB7Cj4gIAkJaWYgKChjb25uZWN0b3ItPmVuY29kZXIgIT0gTlVMTCkg JiYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9jb25uZWN0b3Iu YyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY29ubmVjdG9yLmMKPiBpbmRleCA1OTY3 MjgzOTM0ZTEuLjRjZTI5Mjg4YzcwZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21h cGRybS9vbWFwX2Nvbm5lY3Rvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21h cF9jb25uZWN0b3IuYwo+IEBAIC0yNzYsNiArMjc2LDcgQEAgc3RhdGljIGVudW0gZHJtX21vZGVf c3RhdHVzIG9tYXBfY29ubmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm4KPiAgCXN0cnVjdCBvbWFwX2Nvbm5lY3RvciAqb21hcF9jb25uZWN0b3IgPSB0b19vbWFwX2Nv bm5lY3Rvcihjb25uZWN0b3IpOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgbmV3X21vZGUg PSB7IHsgMCB9IH07Cj4gIAllbnVtIGRybV9tb2RlX3N0YXR1cyBzdGF0dXM7Cj4gKwljaGFyIGJ1 ZltEUk1fTU9ERV9GTEFHU19CVUZfTEVOXTsKPiAgCj4gIAlzdGF0dXMgPSBvbWFwX2Nvbm5lY3Rv cl9tb2RlX2ZpeHVwKG9tYXBfY29ubmVjdG9yLT5vdXRwdXQsIG1vZGUsCj4gIAkJCQkJICAgJm5l d19tb2RlKTsKPiBAQCAtMjg4LDggKzI4OSw4IEBAIHN0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1 cyBvbWFwX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uCj4g IAo+ICBkb25lOgo+ICAJREJHKCJjb25uZWN0b3I6IG1vZGUgJXM6ICIgRFJNX01PREVfRk1ULAo+ IC0JCQkoc3RhdHVzID09IE1PREVfT0spID8gInZhbGlkIiA6ICJpbnZhbGlkIiwKPiAtCQkJRFJN X01PREVfQVJHKG1vZGUpKTsKPiArCSAgICAoc3RhdHVzID09IE1PREVfT0spID8gInZhbGlkIiA6 ICJpbnZhbGlkIiwKPiArCSAgICBEUk1fTU9ERV9BUkcobW9kZSwgYnVmKSk7Cj4gIAo+ICAJcmV0 dXJuIHN0YXR1czsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9v bWFwX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY3J0Yy5jCj4gaW5kZXgg ZDYxMjE1NDk0NjE3Li4yMjE0NTlkNmFiZTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L29tYXBkcm0vb21hcF9jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFw X2NydGMuYwo+IEBAIC01NTMsOSArNTUzLDEwIEBAIHN0YXRpYyB2b2lkIG9tYXBfY3J0Y19tb2Rl X3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IG9tYXBfY3J0 YyAqb21hcF9jcnRjID0gdG9fb21hcF9jcnRjKGNydGMpOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUgPSAmY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7Cj4gKwljaGFyIGJ1ZltE Uk1fTU9ERV9GTEFHU19CVUZfTEVOXTsKPiAgCj4gIAlEQkcoIiVzOiBzZXQgbW9kZTogIiBEUk1f TU9ERV9GTVQsCj4gLQkgICAgb21hcF9jcnRjLT5uYW1lLCBEUk1fTU9ERV9BUkcobW9kZSkpOwo+ ICsJICAgIG9tYXBfY3J0Yy0+bmFtZSwgRFJNX01PREVfQVJHKG1vZGUsIGJ1ZikpOwo+ICAKPiAg CWRybV9kaXNwbGF5X21vZGVfdG9fdmlkZW9tb2RlKG1vZGUsICZvbWFwX2NydGMtPnZtKTsKPiAg fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtcm9uYm8tcmIwNzBk MzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1yb25iby1yYjA3MGQzMC5jCj4gaW5k ZXggM2MxNTc2NGYwYzAzLi40NjhlYmRjYTk0ZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL3BhbmVsLXJvbmJvLXJiMDcwZDMwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvcGFuZWwtcm9uYm8tcmIwNzBkMzAuYwo+IEBAIC0xMjYsMTIgKzEyNiwxMyBAQCBzdGF0 aWMgaW50IHJiMDcwZDMwX3BhbmVsX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkK PiAgCXN0cnVjdCByYjA3MGQzMF9wYW5lbCAqY3R4ID0gcGFuZWxfdG9fcmIwNzBkMzBfcGFuZWwo cGFuZWwpOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gIAlzdGF0aWMgY29u c3QgdTMyIGJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0Owo+ICsJY2hhciBi dWZbRFJNX01PREVfRkxBR1NfQlVGX0xFTl07Cj4gIAo+ICAJbW9kZSA9IGRybV9tb2RlX2R1cGxp Y2F0ZShwYW5lbC0+ZHJtLCAmZGVmYXVsdF9tb2RlKTsKPiAgCWlmICghbW9kZSkgewo+ICAJCURS TV9ERVZfRVJST1IoJmN0eC0+ZHNpLT5kZXYsCj4gIAkJCSAgICAgICJGYWlsZWQgdG8gYWRkIG1v ZGUgIiBEUk1fTU9ERV9GTVQgIlxuIiwKPiAtCQkJICAgICAgRFJNX01PREVfQVJHKCZkZWZhdWx0 X21vZGUpKTsKPiArCQkJICAgICAgRFJNX01PREVfQVJHKCZkZWZhdWx0X21vZGUsIGJ1ZikpOwo+ ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3N0aS9zdGlfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jCj4gaW5k ZXggZGM2NGZiZmM0ZTYxLi5iYzk2MDJmNTE5ZDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3N0aS9zdGlfY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5j Cj4gQEAgLTU0LDExICs1NCwxMiBAQCBzdGlfY3J0Y19tb2RlX3NldChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ICAJc3RydWN0IHN0aV9jb21w b3NpdG9yICpjb21wbyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICAJc3RydWN0IGNsayAqY29t cG9fY2xrLCAqcGl4X2NsazsKPiAgCWludCByYXRlID0gbW9kZS0+Y2xvY2sgKiAxMDAwOwo+ICsJ Y2hhciBidWZbRFJNX01PREVfRkxBR1NfQlVGX0xFTl07Cj4gIAo+ICAJRFJNX0RFQlVHX0tNUygi Q1JUQzolZCAoJXMpIG1vZGU6ICglcylcbiIsCj4gIAkJICAgICAgY3J0Yy0+YmFzZS5pZCwgc3Rp X21peGVyX3RvX3N0cihtaXhlciksIG1vZGUtPm5hbWUpOwo+ICAKPiAtCURSTV9ERUJVR19LTVMo RFJNX01PREVfRk1UICJcbiIsIERSTV9NT0RFX0FSRyhtb2RlKSk7Cj4gKwlEUk1fREVCVUdfS01T KERSTV9NT0RFX0ZNVCAiXG4iLCBEUk1fTU9ERV9BUkcobW9kZSwgYnVmKSk7Cj4gIAo+ICAJaWYg KG1peGVyLT5pZCA9PSBTVElfTUlYRVJfTUFJTikgewo+ICAJCWNvbXBvX2NsayA9IGNvbXBvLT5j bGtfY29tcG9fbWFpbjsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX21vZGVzLmggYi9p bmNsdWRlL2RybS9kcm1fbW9kZXMuaAo+IGluZGV4IDA4M2YxNjc0NzM2OS4uMzk2MmRiZjgyMTAw IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9tb2Rlcy5oCj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX21vZGVzLmgKPiBAQCAtNDI4LDIwICs0MjgsMjcgQEAgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgewo+ICAJc3RydWN0IGxpc3RfaGVhZCBleHBvcnRfaGVhZDsKPiAgfTsKPiAgCj4gKy8q Kgo+ICsgKiBEUk1fTU9ERV9GTEFHU19CVUZfTEVOIC0gcmVhc29uYWJsZSBzaXplIGZvciB0aGUg YnVmZmVyIHBhc3NlZCB0byBEUk1fTU9ERV9BUkcoKQo+ICsgKi8KPiArI2RlZmluZSBEUk1fTU9E RV9GTEFHU19CVUZfTEVOIDY0Cj4gKwo+ICAvKioKPiAgICogRFJNX01PREVfRk1UIC0gcHJpbnRm IHN0cmluZyBmb3IgJnN0cnVjdCBkcm1fZGlzcGxheV9tb2RlCj4gICAqLwo+IC0jZGVmaW5lIERS TV9NT0RFX0ZNVCAgICAiXCIlc1wiOiAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAweCV4 IDB4JXgiCj4gKyNkZWZpbmUgRFJNX01PREVfRk1UICAgICJcIiVzXCI6ICVkICVkICVkICVkICVk ICVkICVkICVkICVkICVkIDB4JXggMHgleCAlcyIKPiAgCj4gIC8qKgo+ICAgKiBEUk1fTU9ERV9B UkcgLSBwcmludGYgYXJndW1lbnRzIGZvciAmc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiAgICog QG06IGRpc3BsYXkgbW9kZQo+ICsgKiBAYjogYnVmZmVyIGZvciB0ZW1wb3Jhcnkgc3RyaW5nCj4g ICAqLwo+IC0jZGVmaW5lIERSTV9NT0RFX0FSRyhtKSBcCj4gKyNkZWZpbmUgRFJNX01PREVfQVJH KG0sIGIpIFwKPiAgCShtKS0+bmFtZSwgKG0pLT52cmVmcmVzaCwgKG0pLT5jbG9jaywgXAo+ICAJ KG0pLT5oZGlzcGxheSwgKG0pLT5oc3luY19zdGFydCwgKG0pLT5oc3luY19lbmQsIChtKS0+aHRv dGFsLCBcCj4gIAkobSktPnZkaXNwbGF5LCAobSktPnZzeW5jX3N0YXJ0LCAobSktPnZzeW5jX2Vu ZCwgKG0pLT52dG90YWwsIFwKPiAtCShtKS0+dHlwZSwgKG0pLT5mbGFncwo+ICsJKG0pLT50eXBl LCAobSktPmZsYWdzLCBcCj4gKwlkcm1fZ2V0X21vZGVfZmxhZ3NfbmFtZShiLCBzaXplb2YoYiks IChtKS0+ZmxhZ3MpCj4gIAo+ICAjZGVmaW5lIG9ial90b19tb2RlKHgpIGNvbnRhaW5lcl9vZih4 LCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSwgYmFzZSkKPiAgCj4gQEAgLTU0Miw1ICs1NDksNiBA QCBkcm1fbW9kZV9wYXJzZV9jb21tYW5kX2xpbmVfZm9yX2Nvbm5lY3Rvcihjb25zdCBjaGFyICpt b2RlX29wdGlvbiwKPiAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKgo+ICBkcm1fbW9kZV9jcmVh dGVfZnJvbV9jbWRsaW5lX21vZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCSAgc3Ry dWN0IGRybV9jbWRsaW5lX21vZGUgKmNtZCk7Cj4gK2NvbnN0IGNoYXIgKmRybV9nZXRfbW9kZV9m bGFnc19uYW1lKGNoYXIgKmJ1ZiwgaW50IGxlbiwgdTMyIGZsYWdzKTsKPiAgCj4gICNlbmRpZiAv KiBfX0RSTV9NT0RFU19IX18gKi8KPiAtLSAKPiAyLjIxLjAKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4