From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v7 04/11] drm: revocation check at drm subsystem Date: Thu, 12 Sep 2019 12:24:55 +0530 Message-ID: <20190912065455.GA14191@intel.com> References: <20190507162745.25600-1-ramalingam.c@intel.com> <20190507162745.25600-5-ramalingam.c@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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Harry Wentland Cc: Anshuman Gupta , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "gwan-gyeong.mun@intel.com" , "Deucher, Alexander" , "daniel.vetter@intel.com" , "Kumar, Ranjeet" , "Lakha, Bhawanpreet" List-Id: dri-devel@lists.freedesktop.org T24gMjAxOS0wOS0xMiBhdCAwMDoxNTozMiArMDAwMCwgSGFycnkgV2VudGxhbmQgd3JvdGU6Cj4g QWRkaW5nIGEgY291cGxlIEFNRCBndXlzLgo+IAo+IEkga25vdyB0aGlzIGlzIGFscmVhZHkgbWVy Z2VkIGJ1dCBJIGhhdmUgYSBmZXcgcXVlc3Rpb25zIGFmdGVyIHNvbWUKPiBpbnRlcm5hbCBkaXNj dXNzaW9ucy4KPiAKPiBPbiAyMDE5LTA1LTA3IDEyOjI3IHAubS4sIFJhbWFsaW5nYW0gQyB3cm90 ZToKPiA+IE9uIGV2ZXJ5IGhkY3AgcmV2b2NhdGlvbiBjaGVjayByZXF1ZXN0IFNSTSBpcyByZWFk IGZyb20gZncgZmlsZQo+ID4gL2xpYi9maXJtd2FyZS9kaXNwbGF5X2hkY3Bfc3JtLmJpbgo+ID4g Cj4gCj4gQWNjb3JkaW5nIHRvIHNlY3Rpb24gNSBvZiB0aGUgSERDUCAyLjMgc3BlYyBbMV0gYSBk ZXZpY2UgY29tcGxpYW50IHdpdGgKPiBIRENQIDIuMCBhbmQgaGlnaGVyIG11c3QgYmUgY2FwYWJs ZSBvZiBzdG9yaW5nIGFuZCB1cGRhdGluZyB0aGUgU1JNIGluCj4gbm9uLXZvbGF0aWxlIG1lbW9y eS4gU2VjdGlvbiA1LjIgZGVzY3JpYmVzIGhvdyB0aGlzIFNSTSBuZWVkcyB0byBiZQo+IHVwZGF0 ZWQgd2hlbiBhIG5ldyB2ZXJzaW9uIGlzIHNlcnZlZCBhbG9uZ3NpZGUgcHJvdGVjdGVkIGNvbnRl bnQuCj4gCj4gSXNuJ3QgL2xpYi9maXJtd2FyZSBpbnRlbmRlZCBmb3Igc3RhdGljIGZpcm13YXJl IG1ha2luZyB1cGRhdGVzIHRvIHRoZQo+IGZvbGRlciBwcm9ibGVtYXRpYyBmb3IgYW55b25lIGJ1 dCB0aGUgc3lzdGVtJ3MgcGFja2FnZSBtYWludGFpbmVyPyBJJ3ZlCj4gaGVhcmQgL2xpYiBtaWdo dCBldmVuIGJlIHRyZWF0ZWQgYXMgcmVhZC1vbmx5IGluIGNlcnRhaW4gZW52aXJvbm1lbnRzLgo+ IFRoaXMgd291bGQgbWVhbiBpdCdkIGJlIGltcG9zc2libGUgdG8gc3VwcG9ydCBIRENQIDIueCBv biB0aG9zZSBzeXN0ZW1zLgo+IAo+IFdvdWxkbid0IGl0IGJlIGVhc2llciB0byBwcm92aWRlIGEg c3lzZnMgZW50cnkgZm9yIFNSTSB0aGF0IGFsbG93cwo+IHVzZXJzcGFjZSAoZS5nLiBzeXN0ZW0g c3RhcnR1cC9zaHV0ZG93biBzY3JpcHRzKSB0byAoYSkgcmV0cmlldmUgdGhlIFNSTQo+IGZyb20g dGhlIEhEQ1AgaW1wbGVtZW50YXRpb24gZm9yIG5vbi12b2xhdGlsZSBzdG9yYWdlIGFuZCAoYikg dG8gcGFzcwo+IHRoZSBTUk0gdG8gdGhlIEhEQ1AgaW1wbGVtZW50YXRpb24gZm9yIHJldm9jYXRp b24gY2hlY2tpbmc/CgpUaGlzIHVBUEkgaXMgZGVjaWRlZCBjb25zaWRlcmluZyBiZWxvdyBwb2lu dHM6Cgp1c2Vyc3BhY2Ugd2lsbCBoYW5kbGUgdGhlIG5vbi12b2xhdGlsZSBzdG9yYWdlIG9mIHRo ZSBTUk0gdGFibGUgYW5kIGl0J3MgdXBncmFkZQp3aXRoIGxhdGVzdCB2ZXJzaW9ucyByZWNlaXZl ZCBmcm9tIGNvbnRlbnQgcHJvdmlkZXJzIGV0Yy4KClByaW9yIHRvIGFueSBIRENQIGF1dGggcmVx dWVzdCB1c2Vyc3BhY2Ugd2lsbCB3cml0ZSB0aGUgbGF0ZXN0IFNSTSBpbnRvCnRoZSAvbGliL2Zp cm13YXJlLgoKQW5kIHJlZ2FyZGluZyB0aGUgaW50ZXJmYWNlLCBiaW5hcnkgc3lzZnMgYmFzZWQg aW1wbGVtZW50YXRpb24gWzFdIHdhcyBvcHBvc2VkIGJ5IEdyZWcgS0guCkFuZCBhZnRlciB0aGUg ZGlzY3Vzc2lvbiBvbiBkaWZmZXJlbnQgYWx0ZXJuYXRlIGkvZnMgWzJdIHJlcXVlc3QKZmlybXdh cmUgaXMgY2hvb3Nlbi4KClsxXS4gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Bh dGNoLzI5NjQ0Mi8/c2VyaWVzPTU3MjMyJnJldj01dUFQSQpbMl0uIGh0dHBzOi8vcGF0Y2h3b3Jr LmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8yOTY0MzkvP3Nlcmllcz01NzIzMiZyZXY9NQoKSSBob3Bl IHRoaXMgYWRkcmVzc2VzIHRoZSBxdWVzdGlvbnMgYWJvdmUuCgotUmFtCgoKPiAKPiBbMV0KPiBo dHRwczovL3d3dy5kaWdpdGFsLWNwLmNvbS9zaXRlcy9kZWZhdWx0L2ZpbGVzL0hEQ1AlMjBvbiUy MEhETUklMjBTcGVjaWZpY2F0aW9uJTIwUmV2Ml8zLnBkZgo+IAo+IFRoYW5rcywKPiBIYXJyeQo+ IAo+ID4gU1JNIHRhYmxlIGlzIHBhcnNlZCBhbmQgc3RvcmVkIGF0IGRybV9oZGNwLmMsIHdpdGgg ZnVuY3Rpb25zIGV4cG9ydGVkCj4gPiBmb3IgdGhlIHNlcnZpY2VzIGZvciByZXZvY2F0aW9uIGNo ZWNrIGZyb20gZHJpdmVycyAod2hpY2gKPiA+IGltcGxlbWVudHMgdGhlIEhEQ1AgYXV0aGVudGlj YXRpb24pCj4gPiAKPiA+IFRoaXMgcGF0Y2ggaGFuZGxlcyB0aGUgSERDUDEuNCBhbmQgMi4yIHZl cnNpb25zIG9mIFNSTSB0YWJsZS4KPiA+IAo+ID4gdjI6Cj4gPiAgIG1vdmVkIHRoZSB1QVBJIHRv IHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KCkgW0RhbmllbF0KPiA+IHYzOgo+ID4gICBrZG9jIGFk ZGVkLiBbRGFuaWVsXQo+ID4gICBzcm1faGVhZGVyIHVuaWZpZWQgYW5kIGJpdCBmaWVsZCBkZWZp bml0aW9ucyBhcmUgcmVtb3ZlZC4gW0RhbmllbF0KPiA+ICAgbG9ja2luZyBpbXByb3ZlZC4gW0Rh bmllbF0KPiA+ICAgdnJsIGxlbmd0aCB2aW9sYXRpb24gaXMgZml4ZWQuIFtEYW5pZWxdCj4gPiB2 NDoKPiA+ICAgcy9fX3N3YWIxNi9iZTE2X3RvX2NwdSBbRGFuaWVsXQo+ID4gICBiZTI0X3RvX2Nw dSBpcyBkb25lIHRocm91Z2ggYSBnbG9iYWwgZnVuYyBbRGFuaWVsXQo+ID4gICBVbnVzZWQgdmFy aWFibGVzIGFyZSByZW1vdmVkLiBbRGFuaWVsXQo+ID4gICB1bmNoZWNrZWQgcmV0dXJuIHZhbHVl cyBhcmUgZHJvcHBlZCBmcm9tIHN0YXRpYyBmdW5jcyBbRGFuaWVsXQo+ID4gCj4gPiBTaWduZWQt b2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4gPiBBY2tlZC1i eTogU2F0eWVzaHdhciBTaW5naCA8c2F0eWVzaHdhci5zaW5naEBpbnRlbC5jb20+Cj4gPiBSZXZp ZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+ID4gLS0tCj4gPiAgRG9j dW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdCB8ICAgNiArCj4gPiAgZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMiArLQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9kcm1faGRjcC5jICAgICAgICAgICAgfCAzMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysK PiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggICAgICAgIHwgICA0ICsKPiA+ICBk cml2ZXJzL2dwdS9kcm0vZHJtX3N5c2ZzLmMgICAgICAgICAgIHwgICAyICsKPiA+ICBpbmNsdWRl L2RybS9kcm1faGRjcC5oICAgICAgICAgICAgICAgIHwgIDI0ICsrCj4gPiAgNiBmaWxlcyBjaGFu Z2VkLCAzNzAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX2hkY3AuYwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2Ry bS1rbXMtaGVscGVycy5yc3QKPiA+IGluZGV4IDE0MTAyYWUwMzVkYy4uMGZlNzI2YTZlZTY3IDEw MDY0NAo+ID4gLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+ID4g KysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+ID4gQEAgLTE4MSw2 ICsxODEsMTIgQEAgUGFuZWwgSGVscGVyIFJlZmVyZW5jZQo+ID4gIC4uIGtlcm5lbC1kb2M6OiBk cml2ZXJzL2dwdS9kcm0vZHJtX3BhbmVsX29yaWVudGF0aW9uX3F1aXJrcy5jCj4gPiAgICAgOmV4 cG9ydDoKPiA+IAo+ID4gK0hEQ1AgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKPiA+ICs9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gPiArCj4gPiArLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS9kcm1faGRjcC5jCj4gPiArICAgOmV4cG9ydDoKPiA+ICsKPiA+ICBEaXNw bGF5IFBvcnQgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKPiA+ICA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4gaW5kZXggNzJmNTAz NmQ5YmZhLi5kZDAyZTlkZWM4MTAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4gQEAgLTE3LDcgKzE3 LDcgQEAgZHJtLXkgICAgICAgOj0gICAgICAgIGRybV9hdXRoLm8gZHJtX2NhY2hlLm8gXAo+ID4g ICAgICAgICAgICAgICAgIGRybV9wbGFuZS5vIGRybV9jb2xvcl9tZ210Lm8gZHJtX3ByaW50Lm8g XAo+ID4gICAgICAgICAgICAgICAgIGRybV9kdW1iX2J1ZmZlcnMubyBkcm1fbW9kZV9jb25maWcu byBkcm1fdmJsYW5rLm8gXAo+ID4gICAgICAgICAgICAgICAgIGRybV9zeW5jb2JqLm8gZHJtX2xl YXNlLm8gZHJtX3dyaXRlYmFjay5vIGRybV9jbGllbnQubyBcCj4gPiAtICAgICAgICAgICAgICAg ZHJtX2F0b21pY191YXBpLm8KPiA+ICsgICAgICAgICAgICAgICBkcm1fYXRvbWljX3VhcGkubyBk cm1faGRjcC5vCj4gPiAKPiA+ICBkcm0tJChDT05GSUdfRFJNX0xFR0FDWSkgKz0gZHJtX2xlZ2Fj eV9taXNjLm8gZHJtX2J1ZnMubyBkcm1fY29udGV4dC5vIGRybV9kbWEubyBkcm1fc2NhdHRlci5v IGRybV9sb2NrLm8KPiA+ICBkcm0tJChDT05GSUdfRFJNX0xJQl9SQU5ET00pICs9IGxpYi9kcm1f cmFuZG9tLm8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2hkY3AuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1faGRjcC5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5k ZXggMDAwMDAwMDAwMDAwLi41ZTU0MDk1MDVjMzEKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1faGRjcC5jCj4gPiBAQCAtMCwwICsxLDMzMyBAQAo+ID4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gPiArLyoKPiA+ICsgKiBDb3B5cmln aHQgKEMpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24uCj4gPiArICoKPiA+ICsgKiBBdXRob3JzOgo+ ID4gKyAqIFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiA+ICsgKi8KPiA+ ICsKPiA+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2Vy ci5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9nZnAuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvZXhw b3J0Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgv ZmlybXdhcmUuaD4KPiA+ICsKPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9oZGNwLmg+Cj4gPiArI2lu Y2x1ZGUgPGRybS9kcm1fc3lzZnMuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgo+ ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgo+ID4gKwo+ID4gK3N0cnVjdCBoZGNwX3Ny bSB7Cj4gPiArICAgICAgIHUzMiByZXZva2VkX2tzdl9jbnQ7Cj4gPiArICAgICAgIHU4ICpyZXZv a2VkX2tzdl9saXN0Owo+ID4gKwo+ID4gKyAgICAgICAvKiBNdXRleCB0byBwcm90ZWN0IGFib3Zl IHN0cnVjdCBtZW1iZXIgKi8KPiA+ICsgICAgICAgc3RydWN0IG11dGV4IG11dGV4Owo+ID4gK30g KnNybV9kYXRhOwo+ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1faGRjcF9wcmludF9r c3YoY29uc3QgdTggKmtzdikKPiA+ICt7Cj4gPiArICAgICAgIERSTV9ERUJVRygiXHQlIzAyeCwg JSMwMngsICUjMDJ4LCAlIzAyeCwgJSMwMnhcbiIsCj4gPiArICAgICAgICAgICAgICAgICBrc3Zb MF0sIGtzdlsxXSwga3N2WzJdLCBrc3ZbM10sIGtzdls0XSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0 YXRpYyB1MzIgZHJtX2hkY3BfZ2V0X3Jldm9rZWRfa3N2X2NvdW50KGNvbnN0IHU4ICpidWYsIHUz MiB2cmxzX2xlbmd0aCkKPiA+ICt7Cj4gPiArICAgICAgIHUzMiBwYXJzZWRfYnl0ZXMgPSAwLCBr c3ZfY291bnQgPSAwLCB2cmxfa3N2X2NudCwgdnJsX3N6Owo+ID4gKwo+ID4gKyAgICAgICB3aGls ZSAocGFyc2VkX2J5dGVzIDwgdnJsc19sZW5ndGgpIHsKPiA+ICsgICAgICAgICAgICAgICB2cmxf a3N2X2NudCA9ICpidWY7Cj4gPiArICAgICAgICAgICAgICAga3N2X2NvdW50ICs9IHZybF9rc3Zf Y250Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIHZybF9zeiA9ICh2cmxfa3N2X2NudCAqIERS TV9IRENQX0tTVl9MRU4pICsgMTsKPiA+ICsgICAgICAgICAgICAgICBidWYgKz0gdnJsX3N6Owo+ ID4gKyAgICAgICAgICAgICAgIHBhcnNlZF9ieXRlcyArPSB2cmxfc3o7Cj4gPiArICAgICAgIH0K PiA+ICsKPiA+ICsgICAgICAgLyoKPiA+ICsgICAgICAgICogV2hlbiB2cmxzIGFyZSBub3QgdmFs aWQsIGtzdnMgYXJlIG5vdCBjb25zaWRlcmVkLgo+ID4gKyAgICAgICAgKiBIZW5jZSBTUk0gd2ls bCBiZSBkaXNjYXJkZWQuCj4gPiArICAgICAgICAqLwo+ID4gKyAgICAgICBpZiAocGFyc2VkX2J5 dGVzICE9IHZybHNfbGVuZ3RoKQo+ID4gKyAgICAgICAgICAgICAgIGtzdl9jb3VudCA9IDA7Cj4g PiArCj4gPiArICAgICAgIHJldHVybiBrc3ZfY291bnQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyB1MzIgZHJtX2hkY3BfZ2V0X3Jldm9rZWRfa3N2cyhjb25zdCB1OCAqYnVmLCB1OCAqcmV2b2tl ZF9rc3ZfbGlzdCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIg dnJsc19sZW5ndGgpCj4gPiArewo+ID4gKyAgICAgICB1MzIgcGFyc2VkX2J5dGVzID0gMCwga3N2 X2NvdW50ID0gMDsKPiA+ICsgICAgICAgdTMyIHZybF9rc3ZfY250LCB2cmxfa3N2X3N6LCB2cmxf aWR4ID0gMDsKPiA+ICsKPiA+ICsgICAgICAgZG8gewo+ID4gKyAgICAgICAgICAgICAgIHZybF9r c3ZfY250ID0gKmJ1ZjsKPiA+ICsgICAgICAgICAgICAgICB2cmxfa3N2X3N6ID0gdnJsX2tzdl9j bnQgKiBEUk1fSERDUF9LU1ZfTEVOOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIGJ1ZisrOwo+ ID4gKwo+ID4gKyAgICAgICAgICAgICAgIERSTV9ERUJVRygidnJsOiAlZCwgUmV2b2tlZCBLU1Zz OiAlZFxuIiwgdnJsX2lkeCsrLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICB2cmxfa3N2 X2NudCk7Cj4gPiArICAgICAgICAgICAgICAgbWVtY3B5KHJldm9rZWRfa3N2X2xpc3QsIGJ1Ziwg dnJsX2tzdl9zeik7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAga3N2X2NvdW50ICs9IHZybF9r c3ZfY250Owo+ID4gKyAgICAgICAgICAgICAgIHJldm9rZWRfa3N2X2xpc3QgKz0gdnJsX2tzdl9z ejsKPiA+ICsgICAgICAgICAgICAgICBidWYgKz0gdnJsX2tzdl9zejsKPiA+ICsKPiA+ICsgICAg ICAgICAgICAgICBwYXJzZWRfYnl0ZXMgKz0gKHZybF9rc3Zfc3ogKyAxKTsKPiA+ICsgICAgICAg fSB3aGlsZSAocGFyc2VkX2J5dGVzIDwgdnJsc19sZW5ndGgpOwo+ID4gKwo+ID4gKyAgICAgICBy ZXR1cm4ga3N2X2NvdW50Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIHUzMiBnZXRf dnJsX2xlbmd0aChjb25zdCB1OCAqYnVmKQo+ID4gK3sKPiA+ICsgICAgICAgcmV0dXJuIGRybV9o ZGNwX2JlMjRfdG9fY3B1KGJ1Zik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgZHJtX2hk Y3BfcGFyc2VfaGRjcDFfc3JtKGNvbnN0IHU4ICpidWYsIHNpemVfdCBjb3VudCkKPiA+ICt7Cj4g PiArICAgICAgIHN0cnVjdCBoZGNwX3NybV9oZWFkZXIgKmhlYWRlcjsKPiA+ICsgICAgICAgdTMy IHZybF9sZW5ndGgsIGtzdl9jb3VudDsKPiA+ICsKPiA+ICsgICAgICAgaWYgKGNvdW50IDwgKHNp emVvZihzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyKSArCj4gPiArICAgICAgICAgICBEUk1fSERDUF8x XzRfVlJMX0xFTkdUSF9TSVpFICsgRFJNX0hEQ1BfMV80X0RDUF9TSUdfU0laRSkpIHsKPiA+ICsg ICAgICAgICAgICAgICBEUk1fRVJST1IoIkludmFsaWQgYmxvYiBsZW5ndGhcbiIpOwo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAg ICAgIGhlYWRlciA9IChzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyICopYnVmOwo+ID4gKyAgICAgICBE Uk1fREVCVUcoIlNSTSBJRDogMHgleCwgU1JNIFZlcjogMHgleCwgU1JNIEdlbiBObzogMHgleFxu IiwKPiA+ICsgICAgICAgICAgICAgICAgIGhlYWRlci0+c3JtX2lkLAo+ID4gKyAgICAgICAgICAg ICAgICAgYmUxNl90b19jcHUoaGVhZGVyLT5zcm1fdmVyc2lvbiksIGhlYWRlci0+c3JtX2dlbl9u byk7Cj4gPiArCj4gPiArICAgICAgIFdBUk5fT04oaGVhZGVyLT5yZXNlcnZlZCk7Cj4gPiArCj4g PiArICAgICAgIGJ1ZiA9IGJ1ZiArIHNpemVvZigqaGVhZGVyKTsKPiA+ICsgICAgICAgdnJsX2xl bmd0aCA9IGdldF92cmxfbGVuZ3RoKGJ1Zik7Cj4gPiArICAgICAgIGlmIChjb3VudCA8IChzaXpl b2Yoc3RydWN0IGhkY3Bfc3JtX2hlYWRlcikgKyB2cmxfbGVuZ3RoKSB8fAo+ID4gKyAgICAgICAg ICAgdnJsX2xlbmd0aCA8IChEUk1fSERDUF8xXzRfVlJMX0xFTkdUSF9TSVpFICsKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgRFJNX0hEQ1BfMV80X0RDUF9TSUdfU0laRSkpIHsKPiA+ICsg ICAgICAgICAgICAgICBEUk1fRVJST1IoIkludmFsaWQgYmxvYiBsZW5ndGggb3IgdnJsIGxlbmd0 aFxuIik7Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArICAgICAgIH0K PiA+ICsKPiA+ICsgICAgICAgLyogTGVuZ3RoIG9mIHRoZSBhbGwgdnJscyBjb21iaW5lZCAqLwo+ ID4gKyAgICAgICB2cmxfbGVuZ3RoIC09IChEUk1fSERDUF8xXzRfVlJMX0xFTkdUSF9TSVpFICsK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgRFJNX0hEQ1BfMV80X0RDUF9TSUdfU0laRSk7Cj4g PiArCj4gPiArICAgICAgIGlmICghdnJsX2xlbmd0aCkgewo+ID4gKyAgICAgICAgICAgICAgIERS TV9FUlJPUigiTm8gdnJsIGZvdW5kXG4iKTsKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBidWYgKz0gRFJNX0hEQ1BfMV80 X1ZSTF9MRU5HVEhfU0laRTsKPiA+ICsgICAgICAga3N2X2NvdW50ID0gZHJtX2hkY3BfZ2V0X3Jl dm9rZWRfa3N2X2NvdW50KGJ1ZiwgdnJsX2xlbmd0aCk7Cj4gPiArICAgICAgIGlmICgha3N2X2Nv dW50KSB7Cj4gPiArICAgICAgICAgICAgICAgRFJNX0RFQlVHKCJSZXZva2VkIEtTViBjb3VudCBp cyAwXG4iKTsKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gY291bnQ7Cj4gPiArICAgICAgIH0K PiA+ICsKPiA+ICsgICAgICAga2ZyZWUoc3JtX2RhdGEtPnJldm9rZWRfa3N2X2xpc3QpOwo+ID4g KyAgICAgICBzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCA9IGtjYWxsb2Moa3N2X2NvdW50LCBE Uk1fSERDUF9LU1ZfTEVOLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0ZQX0tFUk5FTCk7Cj4gPiArICAgICAgIGlmICghc3JtX2RhdGEtPnJldm9rZWRf a3N2X2xpc3QpIHsKPiA+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoIk91dCBvZiBNZW1vcnlc biIpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKyAgICAgICB9Cj4g PiArCj4gPiArICAgICAgIGlmIChkcm1faGRjcF9nZXRfcmV2b2tlZF9rc3ZzKGJ1Ziwgc3JtX2Rh dGEtPnJldm9rZWRfa3N2X2xpc3QsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZybF9sZW5ndGgpICE9IGtzdl9jb3VudCkgewo+ID4gKyAgICAgICAgICAgICAgIHNy bV9kYXRhLT5yZXZva2VkX2tzdl9jbnQgPSAwOwo+ID4gKyAgICAgICAgICAgICAgIGtmcmVlKHNy bV9kYXRhLT5yZXZva2VkX2tzdl9saXN0KTsKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBzcm1fZGF0YS0+cmV2b2tlZF9r c3ZfY250ID0ga3N2X2NvdW50Owo+ID4gKyAgICAgICByZXR1cm4gY291bnQ7Cj4gPiArfQo+ID4g Kwo+ID4gK3N0YXRpYyBpbnQgZHJtX2hkY3BfcGFyc2VfaGRjcDJfc3JtKGNvbnN0IHU4ICpidWYs IHNpemVfdCBjb3VudCkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBoZGNwX3NybV9oZWFkZXIg KmhlYWRlcjsKPiA+ICsgICAgICAgdTMyIHZybF9sZW5ndGgsIGtzdl9jb3VudCwga3N2X3N6Owo+ ID4gKwo+ID4gKyAgICAgICBpZiAoY291bnQgPCAoc2l6ZW9mKHN0cnVjdCBoZGNwX3NybV9oZWFk ZXIpICsKPiA+ICsgICAgICAgICAgIERSTV9IRENQXzJfVlJMX0xFTkdUSF9TSVpFICsgRFJNX0hE Q1BfMl9EQ1BfU0lHX1NJWkUpKSB7Cj4gPiArICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJJbnZh bGlkIGJsb2IgbGVuZ3RoXG4iKTsKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK PiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBoZWFkZXIgPSAoc3RydWN0IGhkY3Bfc3Jt X2hlYWRlciAqKWJ1ZjsKPiA+ICsgICAgICAgRFJNX0RFQlVHKCJTUk0gSUQ6IDB4JXgsIFNSTSBW ZXI6IDB4JXgsIFNSTSBHZW4gTm86IDB4JXhcbiIsCj4gPiArICAgICAgICAgICAgICAgICBoZWFk ZXItPnNybV9pZCAmIERSTV9IRENQX1NSTV9JRF9NQVNLLAo+ID4gKyAgICAgICAgICAgICAgICAg YmUxNl90b19jcHUoaGVhZGVyLT5zcm1fdmVyc2lvbiksIGhlYWRlci0+c3JtX2dlbl9ubyk7Cj4g PiArCj4gPiArICAgICAgIGlmIChoZWFkZXItPnJlc2VydmVkKQo+ID4gKyAgICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOwo+ID4gKwo+ID4gKyAgICAgICBidWYgPSBidWYgKyBzaXplb2YoKmhl YWRlcik7Cj4gPiArICAgICAgIHZybF9sZW5ndGggPSBnZXRfdnJsX2xlbmd0aChidWYpOwo+ID4g Kwo+ID4gKyAgICAgICBpZiAoY291bnQgPCAoc2l6ZW9mKHN0cnVjdCBoZGNwX3NybV9oZWFkZXIp ICsgdnJsX2xlbmd0aCkgfHwKPiA+ICsgICAgICAgICAgIHZybF9sZW5ndGggPCAoRFJNX0hEQ1Bf Ml9WUkxfTEVOR1RIX1NJWkUgKwo+ID4gKyAgICAgICAgICAgRFJNX0hEQ1BfMl9EQ1BfU0lHX1NJ WkUpKSB7Cj4gPiArICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJJbnZhbGlkIGJsb2IgbGVuZ3Ro IG9yIHZybCBsZW5ndGhcbiIpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIC8qIExlbmd0aCBvZiB0aGUgYWxsIHZybHMg Y29tYmluZWQgKi8KPiA+ICsgICAgICAgdnJsX2xlbmd0aCAtPSAoRFJNX0hEQ1BfMl9WUkxfTEVO R1RIX1NJWkUgKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBEUk1fSERDUF8yX0RDUF9TSUdf U0laRSk7Cj4gPiArCj4gPiArICAgICAgIGlmICghdnJsX2xlbmd0aCkgewo+ID4gKyAgICAgICAg ICAgICAgIERSTV9FUlJPUigiTm8gdnJsIGZvdW5kXG4iKTsKPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBidWYgKz0gRFJN X0hEQ1BfMl9WUkxfTEVOR1RIX1NJWkU7Cj4gPiArICAgICAgIGtzdl9jb3VudCA9ICgqYnVmIDw8 IDIpIHwgRFJNX0hEQ1BfMl9LU1ZfQ09VTlRfMl9MU0JJVFMoKihidWYgKyAxKSk7Cj4gPiArICAg ICAgIGlmICgha3N2X2NvdW50KSB7Cj4gPiArICAgICAgICAgICAgICAgRFJNX0RFQlVHKCJSZXZv a2VkIEtTViBjb3VudCBpcyAwXG4iKTsKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gY291bnQ7 Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAga2ZyZWUoc3JtX2RhdGEtPnJldm9rZWRf a3N2X2xpc3QpOwo+ID4gKyAgICAgICBzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCA9IGtjYWxs b2Moa3N2X2NvdW50LCBEUk1fSERDUF9LU1ZfTEVOLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0ZQX0tFUk5FTCk7Cj4gPiArICAgICAgIGlmICghc3Jt X2RhdGEtPnJldm9rZWRfa3N2X2xpc3QpIHsKPiA+ICsgICAgICAgICAgICAgICBEUk1fRVJST1Io Ik91dCBvZiBNZW1vcnlcbiIpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIGtzdl9zeiA9IGtzdl9jb3VudCAqIERSTV9I RENQX0tTVl9MRU47Cj4gPiArICAgICAgIGJ1ZiArPSBEUk1fSERDUF8yX05PX09GX0RFVl9QTFVT X1JFU0VSVkVEX1NaOwo+ID4gKwo+ID4gKyAgICAgICBEUk1fREVCVUcoIlJldm9rZWQgS1NWczog JWRcbiIsIGtzdl9jb3VudCk7Cj4gPiArICAgICAgIG1lbWNweShzcm1fZGF0YS0+cmV2b2tlZF9r c3ZfbGlzdCwgYnVmLCBrc3Zfc3opOwo+ID4gKwo+ID4gKyAgICAgICBzcm1fZGF0YS0+cmV2b2tl ZF9rc3ZfY250ID0ga3N2X2NvdW50Owo+ID4gKyAgICAgICByZXR1cm4gY291bnQ7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpc19zcm1fdmVyc2lvbl9oZGNwMShjb25zdCB1 OCAqYnVmKQo+ID4gK3sKPiA+ICsgICAgICAgcmV0dXJuICpidWYgPT0gKHU4KShEUk1fSERDUF8x XzRfU1JNX0lEIDw8IDQpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIGJvb2wgaXNf c3JtX3ZlcnNpb25faGRjcDIoY29uc3QgdTggKmJ1ZikKPiA+ICt7Cj4gPiArICAgICAgIHJldHVy biAqYnVmID09ICh1OCkoRFJNX0hEQ1BfMl9TUk1fSUQgPDwgNCB8IERSTV9IRENQXzJfSU5ESUNB VE9SKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgZHJtX2hkY3Bfc3JtX3VwZGF0ZShj b25zdCB1OCAqYnVmLCBzaXplX3QgY291bnQpCj4gPiArewo+ID4gKyAgICAgICBpZiAoY291bnQg PCBzaXplb2Yoc3RydWN0IGhkY3Bfc3JtX2hlYWRlcikpCj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuOwo+ID4gKwo+ID4gKyAgICAgICBpZiAoaXNfc3JtX3ZlcnNpb25faGRjcDEoYnVmKSkKPiA+ ICsgICAgICAgICAgICAgICBkcm1faGRjcF9wYXJzZV9oZGNwMV9zcm0oYnVmLCBjb3VudCk7Cj4g PiArICAgICAgIGVsc2UgaWYgKGlzX3NybV92ZXJzaW9uX2hkY3AyKGJ1ZikpCj4gPiArICAgICAg ICAgICAgICAgZHJtX2hkY3BfcGFyc2VfaGRjcDJfc3JtKGJ1ZiwgY291bnQpOwo+ID4gK30KPiA+ ICsKPiA+ICt2b2lkIGRybV9oZGNwX3JlcXVlc3Rfc3JtKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1f ZGV2KQo+ID4gK3sKPiA+ICsgICAgICAgY2hhciBmd19uYW1lWzM2XSA9ICJkaXNwbGF5X2hkY3Bf c3JtLmJpbiI7Cj4gPiArICAgICAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7Cj4gPiArCj4g PiArICAgICAgIGludCByZXQ7Cj4gPiArCj4gPiArICAgICAgIHJldCA9IHJlcXVlc3RfZmlybXdh cmVfZGlyZWN0KCZmdywgKGNvbnN0IGNoYXIgKilmd19uYW1lLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkcm1fZGV2LT5kZXYpOwo+ID4gKyAgICAgICBpZiAocmV0 IDwgMCkKPiA+ICsgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Cj4gPiArCj4gPiArICAgICAgIGlm IChmdy0+c2l6ZSAmJiBmdy0+ZGF0YSkKPiA+ICsgICAgICAgICAgICAgICBkcm1faGRjcF9zcm1f dXBkYXRlKGZ3LT5kYXRhLCBmdy0+c2l6ZSk7Cj4gPiArCj4gPiArZXhpdDoKPiA+ICsgICAgICAg cmVsZWFzZV9maXJtd2FyZShmdyk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGRybV9o ZGNwX2NoZWNrX2tzdnNfcmV2b2tlZCAtIENoZWNrIHRoZSByZXZva2VkIHN0YXR1cyBvZiB0aGUg SURzCj4gPiArICoKPiA+ICsgKiBAZHJtX2RldjogZHJtX2RldmljZSBmb3Igd2hpY2ggSERDUCBy ZXZvY2F0aW9uIGNoZWNrIGlzIHJlcXVlc3RlZAo+ID4gKyAqIEBrc3ZzOiBMaXN0IG9mIEtTVnMg KEhEQ1AgcmVjZWl2ZXIgSURzKQo+ID4gKyAqIEBrc3ZfY291bnQ6IEtTViBjb3VudCBwYXNzZWQg aW4gdGhyb3VnaCBAa3N2cwo+ID4gKyAqCj4gPiArICogVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUg SERDUCBTeXN0ZW0gcmVuZXdhYmlsaXR5IE1lc3NhZ2UoU1JNIFRhYmxlKQo+ID4gKyAqIGZyb20g dXNlcnNwYWNlIGFzIGEgZmlybXdhcmUgYW5kIHBhcnNlcyBpdCBmb3IgdGhlIHJldm9rZWQgSERD UAo+ID4gKyAqIEtTVnMoUmVjZWl2ZXIgSURzKSBkZXRlY3RlZCBieSBEQ1AgTExDLiBPbmNlIHRo ZSByZXZva2VkIEtTVnMgYXJlIGtub3duLAo+ID4gKyAqIHJldm9rZWQgc3RhdGUgb2YgdGhlIEtT VnMgaW4gdGhlIGxpc3QgcGFzc2VkIGluIGJ5IGRpc3BsYXkgZHJpdmVycyBhcmUKPiA+ICsgKiBk ZWNpZGVkIGFuZCByZXNwb25zZSBpcyBzZW50Lgo+ID4gKyAqCj4gPiArICogU1JNIHNob3VsZCBi ZSBwcmVzZW50ZWQgaW4gdGhlIG5hbWUgb2YgImRpc3BsYXlfaGRjcF9zcm0uYmluIi4KPiA+ICsg Kgo+ID4gKyAqIFJldHVybnM6Cj4gPiArICogVFJVRSBvbiBhbnkgb2YgdGhlIEtTViBpcyByZXZv a2VkLCBlbHNlIEZBTFNFLgo+ID4gKyAqLwo+ID4gK2Jvb2wgZHJtX2hkY3BfY2hlY2tfa3N2c19y ZXZva2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LCB1OCAqa3N2cywKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBrc3ZfY291bnQpCj4gPiArewo+ID4gKyAgICAg ICB1MzIgcmV2X2tzdl9jbnQsIGNudCwgaSwgajsKPiA+ICsgICAgICAgdTggKnJldl9rc3ZfbGlz dDsKPiA+ICsKPiA+ICsgICAgICAgaWYgKCFzcm1fZGF0YSkKPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArICAgICAgIG11dGV4X2xvY2soJnNybV9kYXRhLT5tdXRl eCk7Cj4gPiArICAgICAgIGRybV9oZGNwX3JlcXVlc3Rfc3JtKGRybV9kZXYpOwo+ID4gKwo+ID4g KyAgICAgICByZXZfa3N2X2NudCA9IHNybV9kYXRhLT5yZXZva2VkX2tzdl9jbnQ7Cj4gPiArICAg ICAgIHJldl9rc3ZfbGlzdCA9IHNybV9kYXRhLT5yZXZva2VkX2tzdl9saXN0Owo+ID4gKwo+ID4g KyAgICAgICAvKiBJZiB0aGUgUmV2b2tlZCBrc3YgbGlzdCBpcyBlbXB0eSAqLwo+ID4gKyAgICAg ICBpZiAoIXJldl9rc3ZfY250IHx8ICFyZXZfa3N2X2xpc3QpIHsKPiA+ICsgICAgICAgICAgICAg ICBtdXRleF91bmxvY2soJnNybV9kYXRhLT5tdXRleCk7Cj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwo+ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIGZvciAgKGNudCA9IDA7 IGNudCA8IGtzdl9jb3VudDsgY250KyspIHsKPiA+ICsgICAgICAgICAgICAgICByZXZfa3N2X2xp c3QgPSBzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdDsKPiA+ICsgICAgICAgICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgcmV2X2tzdl9jbnQ7IGkrKykgewo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZm9yIChqID0gMDsgaiA8IERSTV9IRENQX0tTVl9MRU47IGorKykKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKGtzdnNbal0gIT0gcmV2X2tzdl9saXN0W2pdKSB7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiA9PSAoRFJNX0hEQ1BfS1NW X0xFTiAtIDEpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RFJNX0RFQlVHKCJSZXZva2VkIEtTViBpcyAiKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkcm1faGRjcF9wcmludF9rc3Yoa3N2cyk7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZzcm1fZGF0YS0+bXV0 ZXgpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAvKiBNb3ZlIHRoZSBvZmZzZXQgdG8gbmV4dCBLU1YgaW4gdGhlIHJldm9r ZWQgbGlzdCAqLwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV2X2tzdl9saXN0ICs9IERS TV9IRENQX0tTVl9MRU47Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAg ICAgICAgIC8qIEl0ZXJhdGUgdG8gbmV4dCBrc3Zfb2Zmc2V0ICovCj4gPiArICAgICAgICAgICAg ICAga3N2cyArPSBEUk1fSERDUF9LU1ZfTEVOOwo+ID4gKyAgICAgICB9Cj4gPiArICAgICAgIG11 dGV4X3VubG9jaygmc3JtX2RhdGEtPm11dGV4KTsKPiA+ICsgICAgICAgcmV0dXJuIGZhbHNlOwo+ ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1faGRjcF9jaGVja19rc3ZzX3Jldm9rZWQp Owo+ID4gKwo+ID4gK2ludCBkcm1fc2V0dXBfaGRjcF9zcm0oc3RydWN0IGNsYXNzICpkcm1fY2xh c3MpCj4gPiArewo+ID4gKyAgICAgICBzcm1fZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKCpzcm1fZGF0 YSksIEdGUF9LRVJORUwpOwo+ID4gKyAgICAgICBpZiAoIXNybV9kYXRhKQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKyAgICAgICBtdXRleF9pbml0KCZzcm1fZGF0YS0+ bXV0ZXgpOwo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArdm9p ZCBkcm1fdGVhcmRvd25faGRjcF9zcm0oc3RydWN0IGNsYXNzICpkcm1fY2xhc3MpCj4gPiArewo+ ID4gKyAgICAgICBpZiAoc3JtX2RhdGEpIHsKPiA+ICsgICAgICAgICAgICAgICBrZnJlZShzcm1f ZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCk7Cj4gPiArICAgICAgICAgICAgICAga2ZyZWUoc3JtX2Rh dGEpOwo+ID4gKyAgICAgICB9Cj4gPiArfQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAo+ID4gaW5k ZXggZTE5YWM3Y2E2MDJkLi40NzZhNDIyNDE0ZjYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2ludGVybmFsLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJu YWwuaAo+ID4gQEAgLTIwMSwzICsyMDEsNyBAQCBpbnQgZHJtX3N5bmNvYmpfcXVlcnlfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+ICB2b2lkIGRybV9mcmFtZWJ1 ZmZlcl9wcmludF9pbmZvKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgdW5zaWduZWQgaW50IGluZGVu dCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIpOwo+ID4gIGludCBkcm1fZnJhbWVidWZmZXJfZGVidWdmc19pbml0KHN0 cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKPiA+ICsKPiA+ICsvKiBkcm1faGRjcC5jICovCj4gPiAr aW50IGRybV9zZXR1cF9oZGNwX3NybShzdHJ1Y3QgY2xhc3MgKmRybV9jbGFzcyk7Cj4gPiArdm9p ZCBkcm1fdGVhcmRvd25faGRjcF9zcm0oc3RydWN0IGNsYXNzICpkcm1fY2xhc3MpOwo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fc3lzZnMuYwo+ID4gaW5kZXggZWNiN2IzMzAwMmJiLi4xOGIxYWM0NDI5OTcgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5c2ZzLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fc3lzZnMuYwo+ID4gQEAgLTc4LDYgKzc4LDcgQEAgaW50IGRybV9zeXNmc19pbml0 KHZvaWQpCj4gPiAgICAgICAgIH0KPiA+IAo+ID4gICAgICAgICBkcm1fY2xhc3MtPmRldm5vZGUg PSBkcm1fZGV2bm9kZTsKPiA+ICsgICAgICAgZHJtX3NldHVwX2hkY3Bfc3JtKGRybV9jbGFzcyk7 Cj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0KPiA+IAo+ID4gQEAgLTkwLDYgKzkxLDcgQEAg dm9pZCBkcm1fc3lzZnNfZGVzdHJveSh2b2lkKQo+ID4gIHsKPiA+ICAgICAgICAgaWYgKElTX0VS Ul9PUl9OVUxMKGRybV9jbGFzcykpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4gKyAg ICAgICBkcm1fdGVhcmRvd25faGRjcF9zcm0oZHJtX2NsYXNzKTsKPiA+ICAgICAgICAgY2xhc3Nf cmVtb3ZlX2ZpbGUoZHJtX2NsYXNzLCAmY2xhc3NfYXR0cl92ZXJzaW9uLmF0dHIpOwo+ID4gICAg ICAgICBjbGFzc19kZXN0cm95KGRybV9jbGFzcyk7Cj4gPiAgICAgICAgIGRybV9jbGFzcyA9IE5V TEw7Cj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2hkY3AuaCBiL2luY2x1ZGUvZHJt L2RybV9oZGNwLmgKPiA+IGluZGV4IDFjYzY2ZGYwNWE0My4uMmYwMzM1ZDBhNTBmIDEwMDY0NAo+ ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2hkY3AuaAo+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJt X2hkY3AuaAo+ID4gQEAgLTI2NSw0ICsyNjUsMjggQEAgdm9pZCBkcm1faGRjcF9jcHVfdG9fYmUy NCh1OCBzZXFfbnVtW0hEQ1BfMl8yX1NFUV9OVU1fTEVOXSwgdTMyIHZhbCkKPiA+ICAgICAgICAg c2VxX251bVsyXSA9IHZhbDsKPiA+ICB9Cj4gPiAKPiA+ICsjZGVmaW5lIERSTV9IRENQX1NSTV9H RU4xX01BWF9CWVRFUyAgICAgICAgICAgICg1ICogMTAyNCkKPiA+ICsjZGVmaW5lIERSTV9IRENQ XzFfNF9TUk1fSUQgICAgICAgICAgICAgICAgICAgIDB4OAo+ID4gKyNkZWZpbmUgRFJNX0hEQ1Bf U1JNX0lEX01BU0sgICAgICAgICAgICAgICAgICAgKDB4RiA8PCA0KQo+ID4gKyNkZWZpbmUgRFJN X0hEQ1BfMV80X1ZSTF9MRU5HVEhfU0laRSAgICAgICAgICAgMwo+ID4gKyNkZWZpbmUgRFJNX0hE Q1BfMV80X0RDUF9TSUdfU0laRSAgICAgICAgICAgICAgNDAKPiA+ICsjZGVmaW5lIERSTV9IRENQ XzJfU1JNX0lEICAgICAgICAgICAgICAgICAgICAgIDB4OQo+ID4gKyNkZWZpbmUgRFJNX0hEQ1Bf Ml9JTkRJQ0FUT1IgICAgICAgICAgICAgICAgICAgMHgxCj4gPiArI2RlZmluZSBEUk1fSERDUF8y X0lORElDQVRPUl9NQVNLICAgICAgICAgICAgICAweEYKPiA+ICsjZGVmaW5lIERSTV9IRENQXzJf VlJMX0xFTkdUSF9TSVpFICAgICAgICAgICAgIDMKPiA+ICsjZGVmaW5lIERSTV9IRENQXzJfRENQ X1NJR19TSVpFICAgICAgICAgICAgICAgICAgICAgICAgMzg0Cj4gPiArI2RlZmluZSBEUk1fSERD UF8yX05PX09GX0RFVl9QTFVTX1JFU0VSVkVEX1NaICA0Cj4gPiArI2RlZmluZSBEUk1fSERDUF8y X0tTVl9DT1VOVF8yX0xTQklUUyhieXRlKSAgICAoKChieXRlKSAmIDB4QykgPj4gNikKPiA+ICsK PiA+ICtzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyIHsKPiA+ICsgICAgICAgdTggc3JtX2lkOwo+ID4g KyAgICAgICB1OCByZXNlcnZlZDsKPiA+ICsgICAgICAgX19iZTE2IHNybV92ZXJzaW9uOwo+ID4g KyAgICAgICB1OCBzcm1fZ2VuX25vOwo+ID4gK30gX19wYWNrZWQ7Cj4gPiArCj4gPiArc3RydWN0 IGRybV9kZXZpY2U7Cj4gPiArCj4gPiArYm9vbCBkcm1faGRjcF9jaGVja19rc3ZzX3Jldm9rZWQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHU4ICprc3ZzLCB1MzIga3N2X2NvdW50KTsKPiA+ICAjZW5kaWYKPiA+IC0tCj4gPiAyLjE5 LjEKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiA+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCj4gPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVs