From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandru Stefan ISAILA Subject: Ping: [PATCH RFC v2] x86/domctl: Don't pause the whole domain if only getting vcpu state Date: Mon, 23 Oct 2017 09:19:44 +0000 Message-ID: <1508750384.13117.2.camel@bitdefender.com> References: <1507284150-4985-1-git-send-email-aisaila@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1507284150-4985-1-git-send-email-aisaila@bitdefender.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "xen-devel@lists.xen.org" Cc: "andrew.cooper3@citrix.com" , "paul.durrant@citrix.com" , "ian.jackson@eu.citrix.com" , "wei.liu2@citrix.com" , "jbeulich@suse.com" List-Id: xen-devel@lists.xenproject.org QW55IHRob3VnaHRzIGFwcHJlY2lhdGVkLg0KDQpPbiBWaSwgMjAxNy0xMC0wNiBhdCAxMzowMiAr MDMwMCwgQWxleGFuZHJ1IElzYWlsYSB3cm90ZToNCj4gVGhpcyBwYXRjaCBhZGRzIHRoZSBodm1f c2F2ZV9vbmVfY3B1X2N0eHQoKSBmdW5jdGlvbi4NCj4gSXQgb3B0aW1pemVzIGJ5IG9ubHkgcGF1 c2luZyB0aGUgdmNwdSBvbiBhbGwgSFZNU1JfUEVSX1ZDUFUgc2F2ZQ0KPiBjYWxsYmFja3Mgd2hl cmUgb25seSBkYXRhIGZvciBvbmUgVkNQVSBpcyByZXF1aXJlZC4NCj4NCj4gU2lnbmVkLW9mZi1i eTogQWxleGFuZHJ1IElzYWlsYSA8YWlzYWlsYUBiaXRkZWZlbmRlci5jb20+DQo+DQo+IC0tLQ0K PiBDaGFuZ2VzIHNpbmNlIFYxOg0KPiAtIEludGVncmF0ZWQgdGhlIHZjcHUgY2hlY2sgaW50byBh bGwgdGhlIHNhdmUgY2FsbGJhY2tzDQo+IC0tLQ0KPiAgdG9vbHMvdGVzdHMvdmhwZXQvZW11bC5o ICAgICAgIHwgICAzICstDQo+ICB0b29scy90ZXN0cy92aHBldC9tYWluLmMgICAgICAgfCAgIDIg Ky0NCj4gIHhlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2UuYyB8ICAxNiArKy0NCj4gIHhlbi9h cmNoL3g4Ni9kb21jdGwuYyAgICAgICAgICB8ICAgMiAtDQo+ICB4ZW4vYXJjaC94ODYvaHZtL2hw ZXQuYyAgICAgICAgfCAgIDIgKy0NCj4gIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICB8 IDI4MCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tDQo+IC0tLS0tLS0tLS0NCj4gIHhl bi9hcmNoL3g4Ni9odm0vaTgyNTQuYyAgICAgICB8ICAgMiArLQ0KPiAgeGVuL2FyY2gveDg2L2h2 bS9pcnEuYyAgICAgICAgIHwgICA2ICstDQo+ICB4ZW4vYXJjaC94ODYvaHZtL210cnIuYyAgICAg ICAgfCAgMzIgKysrKy0NCj4gIHhlbi9hcmNoL3g4Ni9odm0vcG10aW1lci5jICAgICB8ICAgMiAr LQ0KPiAgeGVuL2FyY2gveDg2L2h2bS9ydGMuYyAgICAgICAgIHwgICAyICstDQo+ICB4ZW4vYXJj aC94ODYvaHZtL3NhdmUuYyAgICAgICAgfCAgNzEgKysrKysrKystLS0NCj4gIHhlbi9hcmNoL3g4 Ni9odm0vdmlvYXBpYy5jICAgICB8ICAgMiArLQ0KPiAgeGVuL2FyY2gveDg2L2h2bS92aXJpZGlh bi5jICAgIHwgIDE3ICsrLQ0KPiAgeGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYyAgICAgIHwgIDIz ICsrKy0NCj4gIHhlbi9hcmNoL3g4Ni9odm0vdnBpYy5jICAgICAgICB8ICAgMiArLQ0KPiAgeGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggIHwgICAyICsNCj4gIHhlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL3NhdmUuaCB8ICAgNSArLQ0KPiAgMTggZmlsZXMgY2hhbmdlZCwgMzI0IGluc2VydGlv bnMoKyksIDE0NyBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3RzL3Zo cGV0L2VtdWwuaCBiL3Rvb2xzL3Rlc3RzL3ZocGV0L2VtdWwuaA0KPiBpbmRleCAzODNhY2ZmLi45 OWQ1YmJkIDEwMDY0NA0KPiAtLS0gYS90b29scy90ZXN0cy92aHBldC9lbXVsLmgNCj4gKysrIGIv dG9vbHMvdGVzdHMvdmhwZXQvZW11bC5oDQo+IEBAIC0yOTYsNyArMjk2LDggQEAgc3RydWN0IGh2 bV9od19ocGV0DQo+ICB9Ow0KPg0KPiAgdHlwZWRlZiBpbnQgKCpodm1fc2F2ZV9oYW5kbGVyKShz dHJ1Y3QgZG9tYWluICpkLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodm1f ZG9tYWluX2NvbnRleHRfdCAqaCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGh2bV9kb21haW5fY29udGV4dF90ICpoLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgaW5zdGFuY2UpOw0KPiAgdHlwZWRlZiBpbnQgKCpodm1fbG9hZF9o YW5kbGVyKShzdHJ1Y3QgZG9tYWluICpkLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBodm1fZG9tYWluX2NvbnRleHRfdCAqaCk7DQo+DQo+IGRpZmYgLS1naXQgYS90b29scy90 ZXN0cy92aHBldC9tYWluLmMgYi90b29scy90ZXN0cy92aHBldC9tYWluLmMNCj4gaW5kZXggNmZl NjVlYS4uM2Q4ZTdmNSAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvdGVzdHMvdmhwZXQvbWFpbi5jDQo+ ICsrKyBiL3Rvb2xzL3Rlc3RzL3ZocGV0L21haW4uYw0KPiBAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv aWQgX19pbml0IGh2bV9yZWdpc3Rlcl9zYXZldm0odWludDE2X3QNCj4gdHlwZWNvZGUsDQo+DQo+ ICBpbnQgZG9fc2F2ZSh1aW50MTZfdCB0eXBlY29kZSwgc3RydWN0IGRvbWFpbiAqZCwNCj4gaHZt X2RvbWFpbl9jb250ZXh0X3QgKmgpDQo+ICB7DQo+IC0gICAgcmV0dXJuIGh2bV9zcl9oYW5kbGVy c1t0eXBlY29kZV0uc2F2ZShkLCBoKTsNCj4gKyAgICByZXR1cm4gaHZtX3NyX2hhbmRsZXJzW3R5 cGVjb2RlXS5zYXZlKGQsIGgsIGQtPm1heF92Y3B1cyk7DQo+ICB9DQo+DQo+ICBpbnQgZG9fbG9h ZCh1aW50MTZfdCB0eXBlY29kZSwgc3RydWN0IGRvbWFpbiAqZCwNCj4gaHZtX2RvbWFpbl9jb250 ZXh0X3QgKmgpDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMN Cj4gYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMNCj4gaW5kZXggZTA3Y2QyZi4uYTFh MTJhNSAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5jDQo+ICsr KyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2UuYw0KPiBAQCAtMzQ5LDEyICszNDksMjQg QEAgaW50IHZtY2Vfd3Jtc3IodWludDMyX3QgbXNyLCB1aW50NjRfdCB2YWwpDQo+ICAgICAgcmV0 dXJuIHJldDsNCj4gIH0NCj4NCj4gLXN0YXRpYyBpbnQgdm1jZV9zYXZlX3ZjcHVfY3R4dChzdHJ1 Y3QgZG9tYWluICpkLA0KPiBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gK3N0YXRpYyBpbnQg dm1jZV9zYXZlX3ZjcHVfY3R4dChzdHJ1Y3QgZG9tYWluICpkLA0KPiBodm1fZG9tYWluX2NvbnRl eHRfdCAqaCwgdW5zaWduZWQgaW50IGluc3RhbmNlKQ0KPiAgew0KPiAgICAgIHN0cnVjdCB2Y3B1 ICp2Ow0KPiAgICAgIGludCBlcnIgPSAwOw0KPg0KPiAtICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2 ICkNCj4gKyAgICBpZiggaW5zdGFuY2UgPCBkLT5tYXhfdmNwdXMgKQ0KPiArICAgIHsNCj4gKyAg ICAgICAgc3RydWN0IGh2bV92bWNlX3ZjcHUgY3R4dDsNCj4gKw0KPiArICAgICAgICB2ID0gZC0+ dmNwdVtpbnN0YW5jZV07DQo+ICsgICAgICAgIGN0eHQuY2FwcyA9IHYtPmFyY2gudm1jZS5tY2df Y2FwOw0KPiArICAgICAgICBjdHh0Lm1jaV9jdGwyX2JhbmswID0gdi0+YXJjaC52bWNlLmJhbmtb MF0ubWNpX2N0bDI7DQo+ICsgICAgICAgIGN0eHQubWNpX2N0bDJfYmFuazEgPSB2LT5hcmNoLnZt Y2UuYmFua1sxXS5tY2lfY3RsMjsNCj4gKyAgICAgICAgY3R4dC5tY2dfZXh0X2N0bCA9IHYtPmFy Y2gudm1jZS5tY2dfZXh0X2N0bDsNCj4gKw0KPiArICAgICAgICBlcnIgPSBodm1fc2F2ZV9lbnRy eShWTUNFX1ZDUFUsIHYtPnZjcHVfaWQsIGgsICZjdHh0KTsNCj4gKyAgICB9DQo+ICsgICAgZWxz ZSBmb3JfZWFjaF92Y3B1ICggZCwgdiApDQo+ICAgICAgew0KPiAgICAgICAgICBzdHJ1Y3QgaHZt X3ZtY2VfdmNwdSBjdHh0ID0gew0KPiAgICAgICAgICAgICAgLmNhcHMgPSB2LT5hcmNoLnZtY2Uu bWNnX2NhcCwNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNo L3g4Ni9kb21jdGwuYw0KPiBpbmRleCA1NDBiYTA4Li5kM2M0ZTE0IDEwMDY0NA0KPiAtLS0gYS94 ZW4vYXJjaC94ODYvZG9tY3RsLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jDQo+IEBA IC02MjQsMTIgKzYyNCwxMCBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKA0KPiAgICAgICAgICAgICAg ICFpc19odm1fZG9tYWluKGQpICkNCj4gICAgICAgICAgICAgIGJyZWFrOw0KPg0KPiAtICAgICAg ICBkb21haW5fcGF1c2UoZCk7DQo+ICAgICAgICAgIHJldCA9IGh2bV9zYXZlX29uZShkLCBkb21j dGwtPnUuaHZtY29udGV4dF9wYXJ0aWFsLnR5cGUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkb21jdGwtPnUuaHZtY29udGV4dF9wYXJ0aWFsLmluc3RhbmNlLA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG9tY3RsLT51Lmh2bWNvbnRleHRfcGFydGlhbC5idWZmZXIsDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG9tY3RsLT51Lmh2bWNvbnRleHRfcGFydGlh bC5idWZzeik7DQo+IC0gICAgICAgIGRvbWFpbl91bnBhdXNlKGQpOw0KPg0KPiAgICAgICAgICBp ZiAoICFyZXQgKQ0KPiAgICAgICAgICAgICAgY29weWJhY2sgPSB0cnVlOw0KPiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2h2bS9ocGV0LmMgYi94ZW4vYXJjaC94ODYvaHZtL2hwZXQuYw0KPiBp bmRleCAzZWE4OTVhLi41NmY0NjkxIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2hw ZXQuYw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2hwZXQuYw0KPiBAQCAtNTA5LDcgKzUwOSw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHZtX21taW9fb3BzIGhwZXRfbW1pb19vcHMgPQ0KPiB7 DQo+ICB9Ow0KPg0KPg0KPiAtc3RhdGljIGludCBocGV0X3NhdmUoc3RydWN0IGRvbWFpbiAqZCwg aHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpDQo+ICtzdGF0aWMgaW50IGhwZXRfc2F2ZShzdHJ1Y3Qg ZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwNCj4gdW5zaWduZWQgaW50IGluc3Rh bmNlKQ0KPiAgew0KPiAgICAgIEhQRVRTdGF0ZSAqaHAgPSBkb21haW5fdmhwZXQoZCk7DQo+ICAg ICAgc3RydWN0IHZjcHUgKnYgPSBwdF9nbG9iYWxfdmNwdV90YXJnZXQoZCk7DQo+IGRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYw0KPiBp bmRleCAyMDViNGNiLi4xNDBmMmMzIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2 bS5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMNCj4gQEAgLTcyOCwxMyArNzI4LDE5 IEBAIHZvaWQgaHZtX2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpDQo+ICAgICAgfQ0K PiAgfQ0KPg0KPiAtc3RhdGljIGludCBodm1fc2F2ZV90c2NfYWRqdXN0KHN0cnVjdCBkb21haW4g KmQsDQo+IGh2bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiArc3RhdGljIGludCBodm1fc2F2ZV90 c2NfYWRqdXN0KHN0cnVjdCBkb21haW4gKmQsDQo+IGh2bV9kb21haW5fY29udGV4dF90ICpoLCB1 bnNpZ25lZCBpbnQgaW5zdGFuY2UpDQo+ICB7DQo+ICAgICAgc3RydWN0IHZjcHUgKnY7DQo+ICAg ICAgc3RydWN0IGh2bV90c2NfYWRqdXN0IGN0eHQ7DQo+ICAgICAgaW50IGVyciA9IDA7DQo+DQo+ IC0gICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQ0KPiArICAgIGlmKCBpbnN0YW5jZSA8IGQtPm1h eF92Y3B1cyApDQo+ICsgICAgew0KPiArICAgICAgICB2ID0gZC0+dmNwdVtpbnN0YW5jZV07DQo+ ICsgICAgICAgIGN0eHQudHNjX2FkanVzdCA9IHYtPmFyY2guaHZtX3ZjcHUubXNyX3RzY19hZGp1 c3Q7DQo+ICsgICAgICAgIGVyciA9IGh2bV9zYXZlX2VudHJ5KFRTQ19BREpVU1QsIHYtPnZjcHVf aWQsIGgsICZjdHh0KTsNCj4gKyAgICB9DQo+ICsgICAgZWxzZSBmb3JfZWFjaF92Y3B1ICggZCwg diApDQo+ICAgICAgew0KPiAgICAgICAgICBjdHh0LnRzY19hZGp1c3QgPSB2LT5hcmNoLmh2bV92 Y3B1Lm1zcl90c2NfYWRqdXN0Ow0KPiAgICAgICAgICBlcnIgPSBodm1fc2F2ZV9lbnRyeShUU0Nf QURKVVNULCB2LT52Y3B1X2lkLCBoLCAmY3R4dCk7DQo+IEBAIC03NjgsMTE3ICs3NzQsMTM1IEBA IHN0YXRpYyBpbnQgaHZtX2xvYWRfdHNjX2FkanVzdChzdHJ1Y3QgZG9tYWluDQo+ICpkLCBodm1f ZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gIEhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoVFNDX0FE SlVTVCwgaHZtX3NhdmVfdHNjX2FkanVzdCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg aHZtX2xvYWRfdHNjX2FkanVzdCwgMSwgSFZNU1JfUEVSX1ZDUFUpOw0KPg0KPiAtc3RhdGljIGlu dCBodm1fc2F2ZV9jcHVfY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRf dA0KPiAqaCkNCj4gK3ZvaWQgaHZtX3NhdmVfb25lX2NwdV9jdHh0KHN0cnVjdCB2Y3B1ICp2LCBz dHJ1Y3QgaHZtX2h3X2NwdSAqY3R4dCkNCj4gK3sNCj4gKyAgICBzdHJ1Y3Qgc2VnbWVudF9yZWdp c3RlciBzZWc7DQo+ICsNCj4gKyAgICAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgdm1jcy92bWNi IGJpdHMgKi8NCj4gKyAgICBodm1fZnVuY3Muc2F2ZV9jcHVfY3R4dCh2LCBjdHh0KTsNCj4gKw0K PiArICAgIGN0eHQtPnRzYyA9IGh2bV9nZXRfZ3Vlc3RfdHNjX2ZpeGVkKHYsIHYtPmRvbWFpbi0N Cj4gPmFyY2guaHZtX2RvbWFpbi5zeW5jX3RzYyk7DQo+ICsNCj4gKyAgICBjdHh0LT5tc3JfdHNj X2F1eCA9IGh2bV9tc3JfdHNjX2F1eCh2KTsNCj4gKw0KPiArICAgIGh2bV9nZXRfc2VnbWVudF9y ZWdpc3Rlcih2LCB4ODZfc2VnX2lkdHIsICZzZWcpOw0KPiArICAgIGN0eHQtPmlkdHJfbGltaXQg PSBzZWcubGltaXQ7DQo+ICsgICAgY3R4dC0+aWR0cl9iYXNlID0gc2VnLmJhc2U7DQo+ICsNCj4g KyAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19nZHRyLCAmc2VnKTsNCj4g KyAgICBjdHh0LT5nZHRyX2xpbWl0ID0gc2VnLmxpbWl0Ow0KPiArICAgIGN0eHQtPmdkdHJfYmFz ZSA9IHNlZy5iYXNlOw0KPiArDQo+ICsgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4 Nl9zZWdfY3MsICZzZWcpOw0KPiArICAgIGN0eHQtPmNzX3NlbCA9IHNlZy5zZWw7DQo+ICsgICAg Y3R4dC0+Y3NfbGltaXQgPSBzZWcubGltaXQ7DQo+ICsgICAgY3R4dC0+Y3NfYmFzZSA9IHNlZy5i YXNlOw0KPiArICAgIGN0eHQtPmNzX2FyYnl0ZXMgPSBzZWcuYXR0cjsNCj4gKw0KPiArICAgIGh2 bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2RzLCAmc2VnKTsNCj4gKyAgICBjdHh0 LT5kc19zZWwgPSBzZWcuc2VsOw0KPiArICAgIGN0eHQtPmRzX2xpbWl0ID0gc2VnLmxpbWl0Ow0K PiArICAgIGN0eHQtPmRzX2Jhc2UgPSBzZWcuYmFzZTsNCj4gKyAgICBjdHh0LT5kc19hcmJ5dGVz ID0gc2VnLmF0dHI7DQo+ICsNCj4gKyAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2 X3NlZ19lcywgJnNlZyk7DQo+ICsgICAgY3R4dC0+ZXNfc2VsID0gc2VnLnNlbDsNCj4gKyAgICBj dHh0LT5lc19saW1pdCA9IHNlZy5saW1pdDsNCj4gKyAgICBjdHh0LT5lc19iYXNlID0gc2VnLmJh c2U7DQo+ICsgICAgY3R4dC0+ZXNfYXJieXRlcyA9IHNlZy5hdHRyOw0KPiArDQo+ICsgICAgaHZt X2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfc3MsICZzZWcpOw0KPiArICAgIGN0eHQt PnNzX3NlbCA9IHNlZy5zZWw7DQo+ICsgICAgY3R4dC0+c3NfbGltaXQgPSBzZWcubGltaXQ7DQo+ ICsgICAgY3R4dC0+c3NfYmFzZSA9IHNlZy5iYXNlOw0KPiArICAgIGN0eHQtPnNzX2FyYnl0ZXMg PSBzZWcuYXR0cjsNCj4gKw0KPiArICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZf c2VnX2ZzLCAmc2VnKTsNCj4gKyAgICBjdHh0LT5mc19zZWwgPSBzZWcuc2VsOw0KPiArICAgIGN0 eHQtPmZzX2xpbWl0ID0gc2VnLmxpbWl0Ow0KPiArICAgIGN0eHQtPmZzX2Jhc2UgPSBzZWcuYmFz ZTsNCj4gKyAgICBjdHh0LT5mc19hcmJ5dGVzID0gc2VnLmF0dHI7DQo+ICsNCj4gKyAgICBodm1f Z2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19ncywgJnNlZyk7DQo+ICsgICAgY3R4dC0+ Z3Nfc2VsID0gc2VnLnNlbDsNCj4gKyAgICBjdHh0LT5nc19saW1pdCA9IHNlZy5saW1pdDsNCj4g KyAgICBjdHh0LT5nc19iYXNlID0gc2VnLmJhc2U7DQo+ICsgICAgY3R4dC0+Z3NfYXJieXRlcyA9 IHNlZy5hdHRyOw0KPiArDQo+ICsgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9z ZWdfdHIsICZzZWcpOw0KPiArICAgIGN0eHQtPnRyX3NlbCA9IHNlZy5zZWw7DQo+ICsgICAgY3R4 dC0+dHJfbGltaXQgPSBzZWcubGltaXQ7DQo+ICsgICAgY3R4dC0+dHJfYmFzZSA9IHNlZy5iYXNl Ow0KPiArICAgIGN0eHQtPnRyX2FyYnl0ZXMgPSBzZWcuYXR0cjsNCj4gKw0KPiArICAgIGh2bV9n ZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2xkdHIsICZzZWcpOw0KPiArICAgIGN0eHQt PmxkdHJfc2VsID0gc2VnLnNlbDsNCj4gKyAgICBjdHh0LT5sZHRyX2xpbWl0ID0gc2VnLmxpbWl0 Ow0KPiArICAgIGN0eHQtPmxkdHJfYmFzZSA9IHNlZy5iYXNlOw0KPiArICAgIGN0eHQtPmxkdHJf YXJieXRlcyA9IHNlZy5hdHRyOw0KPiArDQo+ICsgICAgaWYgKCB2LT5mcHVfaW5pdGlhbGlzZWQg KQ0KPiArICAgIHsNCj4gKyAgICAgICAgbWVtY3B5KGN0eHQtPmZwdV9yZWdzLCB2LT5hcmNoLmZw dV9jdHh0LCBzaXplb2YoY3R4dC0NCj4gPmZwdV9yZWdzKSk7DQo+ICsgICAgICAgIGN0eHQtPmZs YWdzID0gWEVOX1g4Nl9GUFVfSU5JVElBTElTRUQ7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgY3R4 dC0+cmF4ID0gdi0+YXJjaC51c2VyX3JlZ3MucmF4Ow0KPiArICAgIGN0eHQtPnJieCA9IHYtPmFy Y2gudXNlcl9yZWdzLnJieDsNCj4gKyAgICBjdHh0LT5yY3ggPSB2LT5hcmNoLnVzZXJfcmVncy5y Y3g7DQo+ICsgICAgY3R4dC0+cmR4ID0gdi0+YXJjaC51c2VyX3JlZ3MucmR4Ow0KPiArICAgIGN0 eHQtPnJicCA9IHYtPmFyY2gudXNlcl9yZWdzLnJicDsNCj4gKyAgICBjdHh0LT5yc2kgPSB2LT5h cmNoLnVzZXJfcmVncy5yc2k7DQo+ICsgICAgY3R4dC0+cmRpID0gdi0+YXJjaC51c2VyX3JlZ3Mu cmRpOw0KPiArICAgIGN0eHQtPnJzcCA9IHYtPmFyY2gudXNlcl9yZWdzLnJzcDsNCj4gKyAgICBj dHh0LT5yaXAgPSB2LT5hcmNoLnVzZXJfcmVncy5yaXA7DQo+ICsgICAgY3R4dC0+cmZsYWdzID0g di0+YXJjaC51c2VyX3JlZ3MucmZsYWdzOw0KPiArICAgIGN0eHQtPnI4ICA9IHYtPmFyY2gudXNl cl9yZWdzLnI4Ow0KPiArICAgIGN0eHQtPnI5ICA9IHYtPmFyY2gudXNlcl9yZWdzLnI5Ow0KPiAr ICAgIGN0eHQtPnIxMCA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMDsNCj4gKyAgICBjdHh0LT5yMTEg PSB2LT5hcmNoLnVzZXJfcmVncy5yMTE7DQo+ICsgICAgY3R4dC0+cjEyID0gdi0+YXJjaC51c2Vy X3JlZ3MucjEyOw0KPiArICAgIGN0eHQtPnIxMyA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMzsNCj4g KyAgICBjdHh0LT5yMTQgPSB2LT5hcmNoLnVzZXJfcmVncy5yMTQ7DQo+ICsgICAgY3R4dC0+cjE1 ID0gdi0+YXJjaC51c2VyX3JlZ3MucjE1Ow0KPiArICAgIGN0eHQtPmRyMCA9IHYtPmFyY2guZGVi dWdyZWdbMF07DQo+ICsgICAgY3R4dC0+ZHIxID0gdi0+YXJjaC5kZWJ1Z3JlZ1sxXTsNCj4gKyAg ICBjdHh0LT5kcjIgPSB2LT5hcmNoLmRlYnVncmVnWzJdOw0KPiArICAgIGN0eHQtPmRyMyA9IHYt PmFyY2guZGVidWdyZWdbM107DQo+ICsgICAgY3R4dC0+ZHI2ID0gdi0+YXJjaC5kZWJ1Z3JlZ1s2 XTsNCj4gKyAgICBjdHh0LT5kcjcgPSB2LT5hcmNoLmRlYnVncmVnWzddOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW50IGh2bV9zYXZlX2NwdV9jdHh0KHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21h aW5fY29udGV4dF90DQo+ICpoLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2UpDQo+ICB7DQo+ICAgICAg c3RydWN0IHZjcHUgKnY7DQo+ICAgICAgc3RydWN0IGh2bV9od19jcHUgY3R4dDsNCj4gLSAgICBz dHJ1Y3Qgc2VnbWVudF9yZWdpc3RlciBzZWc7DQo+DQo+IC0gICAgZm9yX2VhY2hfdmNwdSAoIGQs IHYgKQ0KPiArICAgIGlmKCBpbnN0YW5jZSA8IGQtPm1heF92Y3B1cykNCj4gKyAgICB7DQo+ICsg ICAgICAgIHYgPSBkLT52Y3B1W2luc3RhbmNlXTsNCj4gKyAgICAgICAgaWYgKCB2LT5wYXVzZV9m bGFncyAmIFZQRl9kb3duICkNCj4gKyAgICAgICAgICAgIHJldHVybiAxOw0KPiArICAgICAgICBt ZW1zZXQoJmN0eHQsIDAsIHNpemVvZihjdHh0KSk7DQo+ICsNCj4gKyAgICAgICAgaHZtX3NhdmVf b25lX2NwdV9jdHh0KHYsICZjdHh0KTsNCj4gKw0KPiArICAgICAgICBpZiAoIGh2bV9zYXZlX2Vu dHJ5KENQVSwgdi0+dmNwdV9pZCwgaCwgJmN0eHQpICE9IDAgKQ0KPiArICAgICAgICAgICAgcmV0 dXJuIDE7DQo+ICsgICAgfQ0KPiArICAgIGVsc2UgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQ0KPiAg ICAgIHsNCj4gLSAgICAgICAgLyogV2UgZG9uJ3QgbmVlZCB0byBzYXZlIHN0YXRlIGZvciBhIHZj cHUgdGhhdCBpcyBkb3duOyB0aGUNCj4gcmVzdG9yZQ0KPiArICAgICAgICAvKiBXZSBkb24ndCBu ZWVkIHRvIHNhdmUgc3RhdGUgZm9yIGEgdmNwdSB0aGF0IGlzIGRvd247IHRoZQ0KPiByZXN0b3Jl DQo+ICAgICAgICAgICAqIGNvZGUgd2lsbCBsZWF2ZSBpdCBkb3duIGlmIHRoZXJlIGlzIG5vdGhp bmcgc2F2ZWQuICovDQo+ICAgICAgICAgIGlmICggdi0+cGF1c2VfZmxhZ3MgJiBWUEZfZG93biAp DQo+ICAgICAgICAgICAgICBjb250aW51ZTsNCj4NCj4gICAgICAgICAgbWVtc2V0KCZjdHh0LCAw LCBzaXplb2YoY3R4dCkpOw0KPg0KPiAtICAgICAgICAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMg dm1jcy92bWNiIGJpdHMgKi8NCj4gLSAgICAgICAgaHZtX2Z1bmNzLnNhdmVfY3B1X2N0eHQodiwg JmN0eHQpOw0KPiAtDQo+IC0gICAgICAgIGN0eHQudHNjID0gaHZtX2dldF9ndWVzdF90c2NfZml4 ZWQodiwgZC0NCj4gPmFyY2guaHZtX2RvbWFpbi5zeW5jX3RzYyk7DQo+IC0NCj4gLSAgICAgICAg Y3R4dC5tc3JfdHNjX2F1eCA9IGh2bV9tc3JfdHNjX2F1eCh2KTsNCj4gLQ0KPiAtICAgICAgICBo dm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19pZHRyLCAmc2VnKTsNCj4gLSAgICAg ICAgY3R4dC5pZHRyX2xpbWl0ID0gc2VnLmxpbWl0Ow0KPiAtICAgICAgICBjdHh0LmlkdHJfYmFz ZSA9IHNlZy5iYXNlOw0KPiAtDQo+IC0gICAgICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2 LCB4ODZfc2VnX2dkdHIsICZzZWcpOw0KPiAtICAgICAgICBjdHh0LmdkdHJfbGltaXQgPSBzZWcu bGltaXQ7DQo+IC0gICAgICAgIGN0eHQuZ2R0cl9iYXNlID0gc2VnLmJhc2U7DQo+IC0NCj4gLSAg ICAgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfY3MsICZzZWcpOw0KPiAt ICAgICAgICBjdHh0LmNzX3NlbCA9IHNlZy5zZWw7DQo+IC0gICAgICAgIGN0eHQuY3NfbGltaXQg PSBzZWcubGltaXQ7DQo+IC0gICAgICAgIGN0eHQuY3NfYmFzZSA9IHNlZy5iYXNlOw0KPiAtICAg ICAgICBjdHh0LmNzX2FyYnl0ZXMgPSBzZWcuYXR0cjsNCj4gLQ0KPiAtICAgICAgICBodm1fZ2V0 X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19kcywgJnNlZyk7DQo+IC0gICAgICAgIGN0eHQu ZHNfc2VsID0gc2VnLnNlbDsNCj4gLSAgICAgICAgY3R4dC5kc19saW1pdCA9IHNlZy5saW1pdDsN Cj4gLSAgICAgICAgY3R4dC5kc19iYXNlID0gc2VnLmJhc2U7DQo+IC0gICAgICAgIGN0eHQuZHNf YXJieXRlcyA9IHNlZy5hdHRyOw0KPiAtDQo+IC0gICAgICAgIGh2bV9nZXRfc2VnbWVudF9yZWdp c3Rlcih2LCB4ODZfc2VnX2VzLCAmc2VnKTsNCj4gLSAgICAgICAgY3R4dC5lc19zZWwgPSBzZWcu c2VsOw0KPiAtICAgICAgICBjdHh0LmVzX2xpbWl0ID0gc2VnLmxpbWl0Ow0KPiAtICAgICAgICBj dHh0LmVzX2Jhc2UgPSBzZWcuYmFzZTsNCj4gLSAgICAgICAgY3R4dC5lc19hcmJ5dGVzID0gc2Vn LmF0dHI7DQo+IC0NCj4gLSAgICAgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9z ZWdfc3MsICZzZWcpOw0KPiAtICAgICAgICBjdHh0LnNzX3NlbCA9IHNlZy5zZWw7DQo+IC0gICAg ICAgIGN0eHQuc3NfbGltaXQgPSBzZWcubGltaXQ7DQo+IC0gICAgICAgIGN0eHQuc3NfYmFzZSA9 IHNlZy5iYXNlOw0KPiAtICAgICAgICBjdHh0LnNzX2FyYnl0ZXMgPSBzZWcuYXR0cjsNCj4gLQ0K PiAtICAgICAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19mcywgJnNlZyk7 DQo+IC0gICAgICAgIGN0eHQuZnNfc2VsID0gc2VnLnNlbDsNCj4gLSAgICAgICAgY3R4dC5mc19s aW1pdCA9IHNlZy5saW1pdDsNCj4gLSAgICAgICAgY3R4dC5mc19iYXNlID0gc2VnLmJhc2U7DQo+ IC0gICAgICAgIGN0eHQuZnNfYXJieXRlcyA9IHNlZy5hdHRyOw0KPiAtDQo+IC0gICAgICAgIGh2 bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2dzLCAmc2VnKTsNCj4gLSAgICAgICAg Y3R4dC5nc19zZWwgPSBzZWcuc2VsOw0KPiAtICAgICAgICBjdHh0LmdzX2xpbWl0ID0gc2VnLmxp bWl0Ow0KPiAtICAgICAgICBjdHh0LmdzX2Jhc2UgPSBzZWcuYmFzZTsNCj4gLSAgICAgICAgY3R4 dC5nc19hcmJ5dGVzID0gc2VnLmF0dHI7DQo+IC0NCj4gLSAgICAgICAgaHZtX2dldF9zZWdtZW50 X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfdHIsICZzZWcpOw0KPiAtICAgICAgICBjdHh0LnRyX3NlbCA9 IHNlZy5zZWw7DQo+IC0gICAgICAgIGN0eHQudHJfbGltaXQgPSBzZWcubGltaXQ7DQo+IC0gICAg ICAgIGN0eHQudHJfYmFzZSA9IHNlZy5iYXNlOw0KPiAtICAgICAgICBjdHh0LnRyX2FyYnl0ZXMg PSBzZWcuYXR0cjsNCj4gLQ0KPiAtICAgICAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwg eDg2X3NlZ19sZHRyLCAmc2VnKTsNCj4gLSAgICAgICAgY3R4dC5sZHRyX3NlbCA9IHNlZy5zZWw7 DQo+IC0gICAgICAgIGN0eHQubGR0cl9saW1pdCA9IHNlZy5saW1pdDsNCj4gLSAgICAgICAgY3R4 dC5sZHRyX2Jhc2UgPSBzZWcuYmFzZTsNCj4gLSAgICAgICAgY3R4dC5sZHRyX2FyYnl0ZXMgPSBz ZWcuYXR0cjsNCj4gLQ0KPiAtICAgICAgICBpZiAoIHYtPmZwdV9pbml0aWFsaXNlZCApDQo+IC0g ICAgICAgIHsNCj4gLSAgICAgICAgICAgIG1lbWNweShjdHh0LmZwdV9yZWdzLCB2LT5hcmNoLmZw dV9jdHh0LA0KPiBzaXplb2YoY3R4dC5mcHVfcmVncykpOw0KPiAtICAgICAgICAgICAgY3R4dC5m bGFncyA9IFhFTl9YODZfRlBVX0lOSVRJQUxJU0VEOw0KPiAtICAgICAgICB9DQo+IC0NCj4gLSAg ICAgICAgY3R4dC5yYXggPSB2LT5hcmNoLnVzZXJfcmVncy5yYXg7DQo+IC0gICAgICAgIGN0eHQu cmJ4ID0gdi0+YXJjaC51c2VyX3JlZ3MucmJ4Ow0KPiAtICAgICAgICBjdHh0LnJjeCA9IHYtPmFy Y2gudXNlcl9yZWdzLnJjeDsNCj4gLSAgICAgICAgY3R4dC5yZHggPSB2LT5hcmNoLnVzZXJfcmVn cy5yZHg7DQo+IC0gICAgICAgIGN0eHQucmJwID0gdi0+YXJjaC51c2VyX3JlZ3MucmJwOw0KPiAt ICAgICAgICBjdHh0LnJzaSA9IHYtPmFyY2gudXNlcl9yZWdzLnJzaTsNCj4gLSAgICAgICAgY3R4 dC5yZGkgPSB2LT5hcmNoLnVzZXJfcmVncy5yZGk7DQo+IC0gICAgICAgIGN0eHQucnNwID0gdi0+ YXJjaC51c2VyX3JlZ3MucnNwOw0KPiAtICAgICAgICBjdHh0LnJpcCA9IHYtPmFyY2gudXNlcl9y ZWdzLnJpcDsNCj4gLSAgICAgICAgY3R4dC5yZmxhZ3MgPSB2LT5hcmNoLnVzZXJfcmVncy5yZmxh Z3M7DQo+IC0gICAgICAgIGN0eHQucjggID0gdi0+YXJjaC51c2VyX3JlZ3Mucjg7DQo+IC0gICAg ICAgIGN0eHQucjkgID0gdi0+YXJjaC51c2VyX3JlZ3Mucjk7DQo+IC0gICAgICAgIGN0eHQucjEw ID0gdi0+YXJjaC51c2VyX3JlZ3MucjEwOw0KPiAtICAgICAgICBjdHh0LnIxMSA9IHYtPmFyY2gu dXNlcl9yZWdzLnIxMTsNCj4gLSAgICAgICAgY3R4dC5yMTIgPSB2LT5hcmNoLnVzZXJfcmVncy5y MTI7DQo+IC0gICAgICAgIGN0eHQucjEzID0gdi0+YXJjaC51c2VyX3JlZ3MucjEzOw0KPiAtICAg ICAgICBjdHh0LnIxNCA9IHYtPmFyY2gudXNlcl9yZWdzLnIxNDsNCj4gLSAgICAgICAgY3R4dC5y MTUgPSB2LT5hcmNoLnVzZXJfcmVncy5yMTU7DQo+IC0gICAgICAgIGN0eHQuZHIwID0gdi0+YXJj aC5kZWJ1Z3JlZ1swXTsNCj4gLSAgICAgICAgY3R4dC5kcjEgPSB2LT5hcmNoLmRlYnVncmVnWzFd Ow0KPiAtICAgICAgICBjdHh0LmRyMiA9IHYtPmFyY2guZGVidWdyZWdbMl07DQo+IC0gICAgICAg IGN0eHQuZHIzID0gdi0+YXJjaC5kZWJ1Z3JlZ1szXTsNCj4gLSAgICAgICAgY3R4dC5kcjYgPSB2 LT5hcmNoLmRlYnVncmVnWzZdOw0KPiAtICAgICAgICBjdHh0LmRyNyA9IHYtPmFyY2guZGVidWdy ZWdbN107DQo+ICsgICAgICAgIGh2bV9zYXZlX29uZV9jcHVfY3R4dCh2LCAmY3R4dCk7DQo+DQo+ ICAgICAgICAgIGlmICggaHZtX3NhdmVfZW50cnkoQ1BVLCB2LT52Y3B1X2lkLCBoLCAmY3R4dCkg IT0gMCApDQo+IC0gICAgICAgICAgICByZXR1cm4gMTsNCj4gKyAgICAgICAgICAgIHJldHVybiAx Ow0KPiAgICAgIH0NCj4gICAgICByZXR1cm4gMDsNCj4gIH0NCj4gQEAgLTExNjIsNyArMTE4Niw4 IEBAIEhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoQ1BVLA0KPiBodm1fc2F2ZV9jcHVfY3R4dCwg aHZtX2xvYWRfY3B1X2N0eHQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2F2ZV9hcmVhKSArIFwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4c3RhdGVfY3R4dF9zaXplKHhjcjApKQ0KPg0KPiAtc3RhdGljIGludCBodm1fc2F2ZV9j cHVfeHNhdmVfc3RhdGVzKHN0cnVjdCBkb21haW4gKmQsDQo+IGh2bV9kb21haW5fY29udGV4dF90 ICpoKQ0KPiArc3RhdGljIGludCBodm1fc2F2ZV9jcHVfeHNhdmVfc3RhdGVzKHN0cnVjdCBkb21h aW4gKmQsDQo+IGh2bV9kb21haW5fY29udGV4dF90ICpoLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbnN0YW5jZSkNCj4gIHsNCj4gICAgICBz dHJ1Y3QgdmNwdSAqdjsNCj4gICAgICBzdHJ1Y3QgaHZtX2h3X2NwdV94c2F2ZSAqY3R4dDsNCj4g QEAgLTExNzAsNyArMTE5NSwyNyBAQCBzdGF0aWMgaW50IGh2bV9zYXZlX2NwdV94c2F2ZV9zdGF0 ZXMoc3RydWN0DQo+IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpDQo+ICAgICAg aWYgKCAhY3B1X2hhc194c2F2ZSApDQo+ICAgICAgICAgIHJldHVybiAwOyAgIC8qIGRvIG5vdGhp bmcgKi8NCj4NCj4gLSAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApDQo+ICsgICAgaWYoIGluc3Rh bmNlIDwgZC0+bWF4X3ZjcHVzICkNCj4gKyAgICB7DQo+ICsgICAgICAgIHVuc2lnbmVkIGludCBz aXplOw0KPiArDQo+ICsgICAgICAgIHYgPSBkLT52Y3B1W2luc3RhbmNlXTsNCj4gKyAgICAgICAg c2l6ZSA9IEhWTV9DUFVfWFNBVkVfU0laRSh2LT5hcmNoLnhjcjBfYWNjdW0pOw0KPiArDQo+ICsg ICAgICAgIGlmICggIXhzYXZlX2VuYWJsZWQodikgKQ0KPiArICAgICAgICAgICAgcmV0dXJuIDE7 DQo+ICsgICAgICAgIGlmICggX2h2bV9pbml0X2VudHJ5KGgsIENQVV9YU0FWRV9DT0RFLCB2LT52 Y3B1X2lkLCBzaXplKSApDQo+ICsgICAgICAgICAgICByZXR1cm4gMTsNCj4gKyAgICAgICAgY3R4 dCA9IChzdHJ1Y3QgaHZtX2h3X2NwdV94c2F2ZSAqKSZoLT5kYXRhW2gtPmN1cl07DQo+ICsgICAg ICAgIGgtPmN1ciArPSBzaXplOw0KPiArDQo+ICsgICAgICAgIGN0eHQtPnhmZWF0dXJlX21hc2sg PSB4ZmVhdHVyZV9tYXNrOw0KPiArICAgICAgICBjdHh0LT54Y3IwID0gdi0+YXJjaC54Y3IwOw0K PiArICAgICAgICBjdHh0LT54Y3IwX2FjY3VtID0gdi0+YXJjaC54Y3IwX2FjY3VtOw0KPiArICAg ICAgICBleHBhbmRfeHNhdmVfc3RhdGVzKHYsICZjdHh0LT5zYXZlX2FyZWEsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZSAtIG9mZnNldG9mKHR5cGVvZigqY3R4dCksDQo+IHNh dmVfYXJlYSkpOw0KPiArICAgIH0NCj4gKyAgICBlbHNlIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkN Cj4gICAgICB7DQo+ICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0gSFZNX0NQVV9YU0FWRV9T SVpFKHYtPmFyY2gueGNyMF9hY2N1bSk7DQo+DQo+IEBAIC0xMzI0LDEwICsxMzY5LDM5IEBAIHN0 YXRpYyBpbnQgaHZtX2xvYWRfY3B1X3hzYXZlX3N0YXRlcyhzdHJ1Y3QNCj4gZG9tYWluICpkLCBo dm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gICNkZWZpbmUgSFZNX0NQVV9NU1JfU0laRShjbnQp IG9mZnNldG9mKHN0cnVjdCBodm1fbXNyLCBtc3JbY250XSkNCj4gIHN0YXRpYyB1bnNpZ25lZCBp bnQgX19yZWFkX21vc3RseSBtc3JfY291bnRfbWF4Ow0KPg0KPiAtc3RhdGljIGludCBodm1fc2F2 ZV9jcHVfbXNycyhzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdA0KPiAqaCkN Cj4gK3N0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X21zcnMoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2Rv bWFpbl9jb250ZXh0X3QNCj4gKmgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBpbnN0YW5jZSkNCj4gIHsNCj4gICAgICBzdHJ1Y3QgdmNwdSAqdjsNCj4NCj4g KyAgICBpZiggaW5zdGFuY2UgPCBkLT5tYXhfdmNwdXMgKQ0KPiArICAgIHsNCj4gKyAgICAgICAg c3RydWN0IGh2bV9tc3IgKmN0eHQ7DQo+ICsgICAgICAgIHVuc2lnbmVkIGludCBpOw0KPiArDQo+ ICsgICAgICAgIHYgPSBkLT52Y3B1W2luc3RhbmNlXTsNCj4gKw0KPiArICAgICAgICBpZiAoIF9o dm1faW5pdF9lbnRyeShoLCBDUFVfTVNSX0NPREUsIHYtPnZjcHVfaWQsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEhWTV9DUFVfTVNSX1NJWkUobXNyX2NvdW50X21heCkpICkNCj4g KyAgICAgICAgICAgIHJldHVybiAxOw0KPiArICAgICAgICBjdHh0ID0gKHN0cnVjdCBodm1fbXNy ICopJmgtPmRhdGFbaC0+Y3VyXTsNCj4gKyAgICAgICAgY3R4dC0+Y291bnQgPSAwOw0KPiArDQo+ ICsgICAgICAgIGlmICggaHZtX2Z1bmNzLnNhdmVfbXNyICkNCj4gKyAgICAgICAgICAgIGh2bV9m dW5jcy5zYXZlX21zcih2LCBjdHh0KTsNCj4gKw0KPiArICAgICAgICBBU1NFUlQoY3R4dC0+Y291 bnQgPD0gbXNyX2NvdW50X21heCk7DQo+ICsNCj4gKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBj dHh0LT5jb3VudDsgKytpICkNCj4gKyAgICAgICAgICAgIGN0eHQtPm1zcltpXS5fcnN2ZCA9IDA7 DQo+ICsNCj4gKyAgICAgICAgaWYgKCBjdHh0LT5jb3VudCApDQo+ICsgICAgICAgICAgICBoLT5j dXIgKz0gSFZNX0NQVV9NU1JfU0laRShjdHh0LT5jb3VudCk7DQo+ICsgICAgICAgIGVsc2UNCj4g KyAgICAgICAgICAgIGgtPmN1ciAtPSBzaXplb2Yoc3RydWN0IGh2bV9zYXZlX2Rlc2NyaXB0b3Ip Ow0KPiArDQo+ICsgICAgfQ0KPiArDQo+ICAgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQ0KPiAg ICAgIHsNCj4gICAgICAgICAgc3RydWN0IGh2bV9tc3IgKmN0eHQ7DQo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2k4MjU0LmMgYi94ZW4vYXJjaC94ODYvaHZtL2k4MjU0LmMNCj4gaW5k ZXggOTkyZjA4ZC4uMTQzYjY0ZCAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pODI1 NC5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaTgyNTQuYw0KPiBAQCAtMzkwLDcgKzM5MCw3 IEBAIHZvaWQgcGl0X3N0b3BfY2hhbm5lbDBfaXJxKFBJVFN0YXRlICpwaXQpDQo+ICAgICAgc3Bp bl91bmxvY2soJnBpdC0+bG9jayk7DQo+ICB9DQo+DQo+IC1zdGF0aWMgaW50IHBpdF9zYXZlKHN0 cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiArc3RhdGljIGludCBw aXRfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwNCj4gdW5z aWduZWQgaW50IGluc3RhbmNlKQ0KPiAgew0KPiAgICAgIFBJVFN0YXRlICpwaXQgPSBkb21haW5f dnBpdChkKTsNCj4gICAgICBpbnQgcmM7DQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L2lycS5jIGIveGVuL2FyY2gveDg2L2h2bS9pcnEuYw0KPiBpbmRleCBlNDI1ZGY5Li5kYmJmNzY5 IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lycS5jDQo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9odm0vaXJxLmMNCj4gQEAgLTU5OCw3ICs1OTgsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBk dW1wX2lycV9pbmZvX2tleV9pbml0KHZvaWQpDQo+ICB9DQo+ICBfX2luaXRjYWxsKGR1bXBfaXJx X2luZm9fa2V5X2luaXQpOw0KPg0KPiAtc3RhdGljIGludCBpcnFfc2F2ZV9wY2koc3RydWN0IGRv bWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpDQo+ICtzdGF0aWMgaW50IGlycV9zYXZl X3BjaShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwNCj4gdW5zaWdu ZWQgaW50IGluc3RhbmNlKQ0KPiAgew0KPiAgICAgIHN0cnVjdCBodm1faXJxICpodm1faXJxID0g aHZtX2RvbWFpbl9pcnEoZCk7DQo+ICAgICAgdW5zaWduZWQgaW50IGFzc2VydGVkLCBwZGV2LCBw aW50eDsNCj4gQEAgLTYzMCw3ICs2MzAsNyBAQCBzdGF0aWMgaW50IGlycV9zYXZlX3BjaShzdHJ1 Y3QgZG9tYWluICpkLA0KPiBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gICAgICByZXR1cm4g cmM7DQo+ICB9DQo+DQo+IC1zdGF0aWMgaW50IGlycV9zYXZlX2lzYShzdHJ1Y3QgZG9tYWluICpk LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gK3N0YXRpYyBpbnQgaXJxX3NhdmVfaXNhKHN0 cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoLA0KPiB1bnNpZ25lZCBpbnQg aW5zdGFuY2UpDQo+ICB7DQo+ICAgICAgc3RydWN0IGh2bV9pcnEgKmh2bV9pcnEgPSBodm1fZG9t YWluX2lycShkKTsNCj4NCj4gQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgaW50IGlycV9zYXZl X2lzYShzdHJ1Y3QgZG9tYWluICpkLA0KPiBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gICAg ICByZXR1cm4gKCBodm1fc2F2ZV9lbnRyeShJU0FfSVJRLCAwLCBoLCAmaHZtX2lycS0+aXNhX2ly cSkgKTsNCj4gIH0NCj4NCj4gLXN0YXRpYyBpbnQgaXJxX3NhdmVfbGluayhzdHJ1Y3QgZG9tYWlu ICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gK3N0YXRpYyBpbnQgaXJxX3NhdmVfbGlu ayhzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwNCj4gdW5zaWduZWQg aW50IGluc3RhbmNlKQ0KPiAgew0KPiAgICAgIHN0cnVjdCBodm1faXJxICpodm1faXJxID0gaHZt X2RvbWFpbl9pcnEoZCk7DQo+DQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL210cnIu YyBiL3hlbi9hcmNoL3g4Ni9odm0vbXRyci5jDQo+IGluZGV4IGI3MjFjNjMuLmI5OThkODAgMTAw NjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vbXRyci5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4 Ni9odm0vbXRyci5jDQo+IEBAIC02NjYsMTQgKzY2Niw0MiBAQCBpbnQgaHZtX3NldF9tZW1fcGlu bmVkX2NhY2hlYXR0cihzdHJ1Y3QgZG9tYWluDQo+ICpkLCB1aW50NjRfdCBnZm5fc3RhcnQsDQo+ ICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+DQo+IC1zdGF0aWMgaW50IGh2bV9zYXZlX210cnJfbXNy KHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90DQo+ICpoKQ0KPiArc3RhdGlj IGludCBodm1fc2F2ZV9tdHJyX21zcihzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRl eHRfdA0KPiAqaCwgdW5zaWduZWQgaW50IGluc3RhbmNlKQ0KPiAgew0KPiAgICAgIGludCBpOw0K PiAgICAgIHN0cnVjdCB2Y3B1ICp2Ow0KPiAgICAgIHN0cnVjdCBodm1faHdfbXRyciBod19tdHJy Ow0KPiAgICAgIHN0cnVjdCBtdHJyX3N0YXRlICptdHJyX3N0YXRlOw0KPiAgICAgIC8qIHNhdmUg bXRyciZwYXQgKi8NCj4gLSAgICBmb3JfZWFjaF92Y3B1KGQsIHYpDQo+ICsgICAgaWYoIGluc3Rh bmNlIDwgZC0+bWF4X3ZjcHVzICkNCj4gKyAgICB7DQo+ICsgICAgICAgIHYgPSBkLT52Y3B1W2lu c3RhbmNlXTsNCj4gKyAgICAgICAgbXRycl9zdGF0ZSA9ICZ2LT5hcmNoLmh2bV92Y3B1Lm10cnI7 DQo+ICsNCj4gKyAgICAgICAgaHZtX2dldF9ndWVzdF9wYXQodiwgJmh3X210cnIubXNyX3BhdF9j cik7DQo+ICsNCj4gKyAgICAgICAgaHdfbXRyci5tc3JfbXRycl9kZWZfdHlwZSA9IG10cnJfc3Rh dGUtPmRlZl90eXBlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKG10cnJf c3RhdGUtPmVuYWJsZWQgPDwgMTApOw0KPiArICAgICAgICBod19tdHJyLm1zcl9tdHJyX2NhcCA9 IG10cnJfc3RhdGUtPm10cnJfY2FwOw0KPiArDQo+ICsgICAgICAgIGZvciAoIGkgPSAwOyBpIDwg TVRSUl9WQ05UOyBpKysgKQ0KPiArICAgICAgICB7DQo+ICsgICAgICAgICAgICAvKiBzYXZlIHBo eXNiYXNlICovDQo+ICsgICAgICAgICAgICBod19tdHJyLm1zcl9tdHJyX3ZhcltpKjJdID0NCj4g KyAgICAgICAgICAgICAgICAoKHVpbnQ2NF90KiltdHJyX3N0YXRlLT52YXJfcmFuZ2VzKVtpKjJd Ow0KPiArICAgICAgICAgICAgLyogc2F2ZSBwaHlzbWFzayAqLw0KPiArICAgICAgICAgICAgaHdf bXRyci5tc3JfbXRycl92YXJbaSoyKzFdID0NCj4gKyAgICAgICAgICAgICAgICAoKHVpbnQ2NF90 KiltdHJyX3N0YXRlLT52YXJfcmFuZ2VzKVtpKjIrMV07DQo+ICsgICAgICAgIH0NCj4gKw0KPiAr ICAgICAgICBmb3IgKCBpID0gMDsgaSA8IE5VTV9GSVhFRF9NU1I7IGkrKyApDQo+ICsgICAgICAg ICAgICBod19tdHJyLm1zcl9tdHJyX2ZpeGVkW2ldID0NCj4gKyAgICAgICAgICAgICAgICAoKHVp bnQ2NF90KiltdHJyX3N0YXRlLT5maXhlZF9yYW5nZXMpW2ldOw0KPiArDQo+ICsgICAgICAgIGlm ICggaHZtX3NhdmVfZW50cnkoTVRSUiwgdi0+dmNwdV9pZCwgaCwgJmh3X210cnIpICE9IDAgKQ0K PiArICAgICAgICAgICAgcmV0dXJuIDE7DQo+ICsgICAgfQ0KPiArICAgIGVsc2UgZm9yX2VhY2hf dmNwdShkLCB2KQ0KPiAgICAgIHsNCj4gICAgICAgICAgbXRycl9zdGF0ZSA9ICZ2LT5hcmNoLmh2 bV92Y3B1Lm10cnI7DQo+DQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3BtdGltZXIu YyBiL3hlbi9hcmNoL3g4Ni9odm0vcG10aW1lci5jDQo+IGluZGV4IGI3MGMyOTkuLjIxZGNkZWIg MTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vcG10aW1lci5jDQo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9odm0vcG10aW1lci5jDQo+IEBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIGludCBo YW5kbGVfcG10X2lvKA0KPiAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQo+ICB9DQo+DQo+IC1z dGF0aWMgaW50IGFjcGlfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRf dCAqaCkNCj4gK3N0YXRpYyBpbnQgYWNwaV9zYXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21h aW5fY29udGV4dF90ICpoLA0KPiB1bnNpZ25lZCBpbnQgaW5zdGFuY2UpDQo+ICB7DQo+ICAgICAg c3RydWN0IGh2bV9od19hY3BpICphY3BpID0gJmQtPmFyY2guaHZtX2RvbWFpbi5hY3BpOw0KPiAg ICAgIFBNVFN0YXRlICpzID0gJmQtPmFyY2guaHZtX2RvbWFpbi5wbF90aW1lLT52cG10Ow0KPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9ydGMuYyBiL3hlbi9hcmNoL3g4Ni9odm0vcnRj LmMNCj4gaW5kZXggYmNmYTE2OS4uODNmMzM5ZCAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2 L2h2bS9ydGMuYw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3J0Yy5jDQo+IEBAIC03MzcsNyAr NzM3LDcgQEAgdm9pZCBydGNfbWlncmF0ZV90aW1lcnMoc3RydWN0IHZjcHUgKnYpDQo+ICB9DQo+ DQo+ICAvKiBTYXZlIFJUQyBoYXJkd2FyZSBzdGF0ZSAqLw0KPiAtc3RhdGljIGludCBydGNfc2F2 ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gK3N0YXRpYyBp bnQgcnRjX3NhdmUoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgsDQo+ IHVuc2lnbmVkIGludCBpbnN0YW5jZSkNCj4gIHsNCj4gICAgICBSVENTdGF0ZSAqcyA9IGRvbWFp bl92cnRjKGQpOw0KPiAgICAgIGludCByYzsNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vc2F2ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9zYXZlLmMNCj4gaW5kZXggODk4NGEyMy4uOTdi NTZmNyAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9zYXZlLmMNCj4gKysrIGIveGVu L2FyY2gveDg2L2h2bS9zYXZlLmMNCj4gQEAgLTEzOCw2ICsxMzgsNyBAQCBpbnQgaHZtX3NhdmVf b25lKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludA0KPiB0eXBlY29kZSwgdW5zaWduZWQg aW50IGluc3RhbmNlLA0KPiAgICAgIGludCBydjsNCj4gICAgICBodm1fZG9tYWluX2NvbnRleHRf dCBjdHh0ID0geyB9Ow0KPiAgICAgIGNvbnN0IHN0cnVjdCBodm1fc2F2ZV9kZXNjcmlwdG9yICpk ZXNjOw0KPiArICAgIGJvb2wgaXNfc2luZ2xlX2luc3RhbmNlID0gZmFsc2U7DQo+DQo+ICAgICAg aWYgKCBkLT5pc19keWluZyB8fA0KPiAgICAgICAgICAgdHlwZWNvZGUgPiBIVk1fU0FWRV9DT0RF X01BWCB8fA0KPiBAQCAtMTQ1LDQxICsxNDYsNzUgQEAgaW50IGh2bV9zYXZlX29uZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQNCj4gdHlwZWNvZGUsIHVuc2lnbmVkIGludCBpbnN0YW5j ZSwNCj4gICAgICAgICAgICFodm1fc3JfaGFuZGxlcnNbdHlwZWNvZGVdLnNhdmUgKQ0KPiAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsNCj4NCj4gKyAgICBpZiggaHZtX3NyX2hhbmRsZXJzW3R5cGVj b2RlXS5raW5kID09IEhWTVNSX1BFUl9WQ1BVICYmDQo+ICsgICAgICAgIGluc3RhbmNlIDwgZC0+ bWF4X3ZjcHVzICkNCj4gKyAgICAgICAgaXNfc2luZ2xlX2luc3RhbmNlID0gdHJ1ZTsNCj4gKw0K PiAgICAgIGN0eHQuc2l6ZSA9IGh2bV9zcl9oYW5kbGVyc1t0eXBlY29kZV0uc2l6ZTsNCj4gLSAg ICBpZiAoIGh2bV9zcl9oYW5kbGVyc1t0eXBlY29kZV0ua2luZCA9PSBIVk1TUl9QRVJfVkNQVSAp DQo+ICsgICAgaWYgKCBodm1fc3JfaGFuZGxlcnNbdHlwZWNvZGVdLmtpbmQgPT0gSFZNU1JfUEVS X1ZDUFUgJiYNCj4gKyAgICAgICAgIGluc3RhbmNlID09IGQtPm1heF92Y3B1cyApDQo+ICAgICAg ICAgIGN0eHQuc2l6ZSAqPSBkLT5tYXhfdmNwdXM7DQo+ICsNCj4gICAgICBjdHh0LmRhdGEgPSB4 bWFsbG9jX2J5dGVzKGN0eHQuc2l6ZSk7DQo+ICAgICAgaWYgKCAhY3R4dC5kYXRhICkNCj4gICAg ICAgICAgcmV0dXJuIC1FTk9NRU07DQo+DQo+IC0gICAgaWYgKCAocnYgPSBodm1fc3JfaGFuZGxl cnNbdHlwZWNvZGVdLnNhdmUoZCwgJmN0eHQpKSAhPSAwICkNCj4gKyAgICBpZiggaXNfc2luZ2xl X2luc3RhbmNlICkNCj4gKyAgICAgICAgdmNwdV9wYXVzZShkLT52Y3B1W2luc3RhbmNlXSk7DQo+ ICsgICAgZWxzZQ0KPiArICAgICAgICBkb21haW5fcGF1c2UoZCk7DQo+ICsNCj4gKyAgICBpZiAo IChydiA9IGh2bV9zcl9oYW5kbGVyc1t0eXBlY29kZV0uc2F2ZShkLCAmY3R4dCwgaW5zdGFuY2Up KQ0KPiAhPSAwICkNCj4gICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiSFZNJWQgc2F2ZTog ZmFpbGVkIHRvIHNhdmUgdHlwZQ0KPiAlIlBSSXUxNiIgKCVkKVxuIiwNCj4gICAgICAgICAgICAg ICAgIGQtPmRvbWFpbl9pZCwgdHlwZWNvZGUsIHJ2KTsNCj4gICAgICBlbHNlIGlmICggcnYgPSAt RU5PRU5ULCBjdHh0LmN1ciA+PSBzaXplb2YoKmRlc2MpICkNCj4gICAgICB7DQo+ICAgICAgICAg IHVpbnQzMl90IG9mZjsNCj4NCj4gLSAgICAgICAgZm9yICggb2ZmID0gMDsgb2ZmIDw9IChjdHh0 LmN1ciAtIHNpemVvZigqZGVzYykpOyBvZmYgKz0NCj4gZGVzYy0+bGVuZ3RoICkNCj4gKyAgICAg ICAgaWYoIGlzX3NpbmdsZV9pbnN0YW5jZSApDQo+ICAgICAgICAgIHsNCj4gLSAgICAgICAgICAg IGRlc2MgPSAodm9pZCAqKShjdHh0LmRhdGEgKyBvZmYpOw0KPiArICAgICAgICAgICAgZGVzYyA9 ICh2b2lkICopKGN0eHQuZGF0YSk7DQo+ICAgICAgICAgICAgICAvKiBNb3ZlIHBhc3QgaGVhZGVy ICovDQo+IC0gICAgICAgICAgICBvZmYgKz0gc2l6ZW9mKCpkZXNjKTsNCj4gKyAgICAgICAgICAg IG9mZiA9IHNpemVvZigqZGVzYyk7DQo+ICAgICAgICAgICAgICBpZiAoIGN0eHQuY3VyIDwgZGVz Yy0+bGVuZ3RoIHx8DQo+ICAgICAgICAgICAgICAgICAgIG9mZiA+IGN0eHQuY3VyIC0gZGVzYy0+ bGVuZ3RoICkNCj4gLSAgICAgICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICAgICAgIGlmICgg aW5zdGFuY2UgPT0gZGVzYy0+aW5zdGFuY2UgKQ0KPiArICAgICAgICAgICAgICAgIHJ2ID0gLUVG QVVMVDsNCj4gKyAgICAgICAgICAgIHJ2ID0gMDsNCj4gKyAgICAgICAgICAgIGlmICggZ3Vlc3Rf aGFuZGxlX2lzX251bGwoaGFuZGxlKSApDQo+ICsgICAgICAgICAgICAgICAgKmJ1ZnN6ID0gZGVz Yy0+bGVuZ3RoOw0KPiArICAgICAgICAgICAgZWxzZSBpZiAoICpidWZzeiA8IGRlc2MtPmxlbmd0 aCApDQo+ICsgICAgICAgICAgICAgICAgcnYgPSAtRU5PQlVGUzsNCj4gKyAgICAgICAgICAgIGVs c2UgaWYgKCBjb3B5X3RvX2d1ZXN0KGhhbmRsZSwgY3R4dC5kYXRhICsgb2ZmLCBkZXNjLQ0KPiA+ bGVuZ3RoKSApDQo+ICsgICAgICAgICAgICAgICAgcnYgPSAtRUZBVUxUOw0KPiArICAgICAgICAg ICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgICpidWZzeiA9IGRlc2MtPmxlbmd0aDsNCj4gKyAg ICAgICAgICAgIHZjcHVfdW5wYXVzZShkLT52Y3B1W2luc3RhbmNlXSk7DQo+ICsgICAgICAgIH0N Cj4gKyAgICAgICAgZWxzZQ0KPiArICAgICAgICB7DQo+ICsgICAgICAgICAgICBmb3IgKCBvZmYg PSAwOyBvZmYgPD0gKGN0eHQuY3VyIC0gc2l6ZW9mKCpkZXNjKSk7IG9mZiArPQ0KPiBkZXNjLT5s ZW5ndGggKQ0KPiAgICAgICAgICAgICAgew0KPiAtICAgICAgICAgICAgICAgIHJ2ID0gMDsNCj4g LSAgICAgICAgICAgICAgICBpZiAoIGd1ZXN0X2hhbmRsZV9pc19udWxsKGhhbmRsZSkgKQ0KPiAt ICAgICAgICAgICAgICAgICAgICAqYnVmc3ogPSBkZXNjLT5sZW5ndGg7DQo+IC0gICAgICAgICAg ICAgICAgZWxzZSBpZiAoICpidWZzeiA8IGRlc2MtPmxlbmd0aCApDQo+IC0gICAgICAgICAgICAg ICAgICAgIHJ2ID0gLUVOT0JVRlM7DQo+IC0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIGNvcHlf dG9fZ3Vlc3QoaGFuZGxlLCBjdHh0LmRhdGEgKyBvZmYsDQo+IGRlc2MtPmxlbmd0aCkgKQ0KPiAt ICAgICAgICAgICAgICAgICAgICBydiA9IC1FRkFVTFQ7DQo+IC0gICAgICAgICAgICAgICAgZWxz ZQ0KPiAtICAgICAgICAgICAgICAgICAgICAqYnVmc3ogPSBkZXNjLT5sZW5ndGg7DQo+IC0gICAg ICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgZGVzYyA9ICh2b2lkICopKGN0 eHQuZGF0YSArIG9mZik7DQo+ICsgICAgICAgICAgICAgICAgLyogTW92ZSBwYXN0IGhlYWRlciAq Lw0KPiArICAgICAgICAgICAgICAgIG9mZiArPSBzaXplb2YoKmRlc2MpOw0KPiArICAgICAgICAg ICAgICAgIGlmICggY3R4dC5jdXIgPCBkZXNjLT5sZW5ndGggfHwNCj4gKyAgICAgICAgICAgICAg ICAgICAgIG9mZiA+IGN0eHQuY3VyIC0gZGVzYy0+bGVuZ3RoICkNCj4gKyAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgaWYgKCBpbnN0YW5jZSA9PSBkZXNjLT5p bnN0YW5jZSApDQo+ICsgICAgICAgICAgICAgICAgew0KPiArICAgICAgICAgICAgICAgICAgICBy diA9IDA7DQo+ICsgICAgICAgICAgICAgICAgICAgIGlmICggZ3Vlc3RfaGFuZGxlX2lzX251bGwo aGFuZGxlKSApDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqYnVmc3ogPSBkZXNjLT5sZW5n dGg7DQo+ICsgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCAqYnVmc3ogPCBkZXNjLT5sZW5n dGggKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgcnYgPSAtRU5PQlVGUzsNCj4gKyAgICAg ICAgICAgICAgICAgICAgZWxzZSBpZiAoIGNvcHlfdG9fZ3Vlc3QoaGFuZGxlLCBjdHh0LmRhdGEg KyBvZmYsDQo+IGRlc2MtPmxlbmd0aCkgKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgcnYg PSAtRUZBVUxUOw0KPiArICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAqYnVmc3ogPSBkZXNjLT5sZW5ndGg7DQo+ICsgICAgICAgICAgICAgICAgICAg IGJyZWFrOw0KPiArICAgICAgICAgICAgICAgIH0NCj4gICAgICAgICAgICAgIH0NCj4gKyAgICAg ICAgICAgIGRvbWFpbl91bnBhdXNlKGQpOw0KPiAgICAgICAgICB9DQo+ICAgICAgfQ0KPg0KPiBA QCAtMjI1LDcgKzI2MCw3IEBAIGludCBodm1fc2F2ZShzdHJ1Y3QgZG9tYWluICpkLA0KPiBodm1f ZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gICAgICAgICAgew0KPiAgICAgICAgICAgICAgcHJpbnRr KFhFTkxPR19HX0lORk8gIkhWTSVkIHNhdmU6ICVzXG4iLA0KPiAgICAgICAgICAgICAgICAgICAg IGQtPmRvbWFpbl9pZCwgaHZtX3NyX2hhbmRsZXJzW2ldLm5hbWUpOw0KPiAtICAgICAgICAgICAg aWYgKCBoYW5kbGVyKGQsIGgpICE9IDAgKQ0KPiArICAgICAgICAgICAgaWYgKCBoYW5kbGVyKGQs IGgsIGQtPm1heF92Y3B1cykgIT0gMCApDQo+ICAgICAgICAgICAgICB7DQo+ICAgICAgICAgICAg ICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAiSFZN JWQgc2F2ZTogZmFpbGVkIHRvIHNhdmUgdHlwZQ0KPiAlIlBSSXUxNiJcbiIsDQo+IGRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvaHZtL3Zpb2FwaWMuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlvYXBp Yy5jDQo+IGluZGV4IDk3YjQxOWYuLjM0ZDY5MDcgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vdmlvYXBpYy5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlvYXBpYy5jDQo+IEBA IC01NjksNyArNTY5LDcgQEAgaW50IHZpb2FwaWNfZ2V0X3RyaWdnZXJfbW9kZShjb25zdCBzdHJ1 Y3QgZG9tYWluDQo+ICpkLCB1bnNpZ25lZCBpbnQgZ3NpKQ0KPiAgICAgIHJldHVybiB2aW9hcGlj LT5yZWRpcnRibFtwaW5dLmZpZWxkcy50cmlnX21vZGU7DQo+ICB9DQo+DQo+IC1zdGF0aWMgaW50 IGlvYXBpY19zYXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQ0K PiArc3RhdGljIGludCBpb2FwaWNfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2Nv bnRleHRfdCAqaCwNCj4gdW5zaWduZWQgaW50IGluc3RhbmNlKQ0KPiAgew0KPiAgICAgIHN0cnVj dCBodm1fdmlvYXBpYyAqczsNCj4NCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdmly aWRpYW4uYw0KPiBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYw0KPiBpbmRleCBmMGZhNTlk Li41OTQzYmY0IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMNCj4g KysrIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jDQo+IEBAIC05OTQsNyArOTk0LDcgQEAg b3V0Og0KPiAgICAgIHJldHVybiBIVk1fSENBTExfY29tcGxldGVkOw0KPiAgfQ0KPg0KPiAtc3Rh dGljIGludCB2aXJpZGlhbl9zYXZlX2RvbWFpbl9jdHh0KHN0cnVjdCBkb21haW4gKmQsDQo+IGh2 bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiArc3RhdGljIGludCB2aXJpZGlhbl9zYXZlX2RvbWFp bl9jdHh0KHN0cnVjdCBkb21haW4gKmQsDQo+IGh2bV9kb21haW5fY29udGV4dF90ICpoLCB1bnNp Z25lZCBpbnQgaW5zdGFuY2UpDQo+ICB7DQo+ICAgICAgc3RydWN0IGh2bV92aXJpZGlhbl9kb21h aW5fY29udGV4dCBjdHh0ID0gew0KPiAgICAgICAgICAudGltZV9yZWZfY291bnQgPSBkLQ0KPiA+ YXJjaC5odm1fZG9tYWluLnZpcmlkaWFuLnRpbWVfcmVmX2NvdW50LnZhbCwNCj4gQEAgLTEwMzAs MTQgKzEwMzAsMjUgQEAgc3RhdGljIGludCB2aXJpZGlhbl9sb2FkX2RvbWFpbl9jdHh0KHN0cnVj dA0KPiBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiAgSFZNX1JFR0lTVEVS X1NBVkVfUkVTVE9SRShWSVJJRElBTl9ET01BSU4sDQo+IHZpcmlkaWFuX3NhdmVfZG9tYWluX2N0 eHQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcmlkaWFuX2xvYWRfZG9tYWluX2N0 eHQsIDEsDQo+IEhWTVNSX1BFUl9ET00pOw0KPg0KPiAtc3RhdGljIGludCB2aXJpZGlhbl9zYXZl X3ZjcHVfY3R4dChzdHJ1Y3QgZG9tYWluICpkLA0KPiBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkN Cj4gK3N0YXRpYyBpbnQgdmlyaWRpYW5fc2F2ZV92Y3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwN Cj4gaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgsIHVuc2lnbmVkIGludCBpbnN0YW5jZSkNCj4gIHsN Cj4gICAgICBzdHJ1Y3QgdmNwdSAqdjsNCj4NCj4gICAgICBpZiAoICFpc192aXJpZGlhbl9kb21h aW4oZCkgKQ0KPiAgICAgICAgICByZXR1cm4gMDsNCj4NCj4gLSAgICBmb3JfZWFjaF92Y3B1KCBk LCB2ICkgew0KPiArICAgIGlmKCBpbnN0YW5jZSA8IGQtPm1heF92Y3B1cyApDQo+ICsgICAgew0K PiArICAgICAgICBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCBjdHh0Ow0KPiArDQo+ ICsgICAgICAgIHYgPSBkLT52Y3B1W2luc3RhbmNlXTsNCj4gKyAgICAgICAgY3R4dC52cF9hc3Np c3RfbXNyID0gdi0NCj4gPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4udnBfYXNzaXN0Lm1zci5yYXc7 DQo+ICsgICAgICAgIGN0eHQudnBfYXNzaXN0X3ZlY3RvciA9IHYtDQo+ID5hcmNoLmh2bV92Y3B1 LnZpcmlkaWFuLnZwX2Fzc2lzdC52ZWN0b3I7DQo+ICsNCj4gKyAgICAgICAgaWYgKCBodm1fc2F2 ZV9lbnRyeShWSVJJRElBTl9WQ1BVLCB2LT52Y3B1X2lkLCBoLCAmY3R4dCkgIT0NCj4gMCApDQo+ ICsgICAgICAgICAgICByZXR1cm4gMTsNCj4gKyAgICB9DQo+ICsgICAgZWxzZSBmb3JfZWFjaF92 Y3B1KCBkLCB2ICkgew0KPiAgICAgICAgICBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4 dCBjdHh0ID0gew0KPiAgICAgICAgICAgICAgLnZwX2Fzc2lzdF9tc3IgPSB2LQ0KPiA+YXJjaC5o dm1fdmNwdS52aXJpZGlhbi52cF9hc3Npc3QubXNyLnJhdywNCj4gICAgICAgICAgICAgIC52cF9h c3Npc3RfdmVjdG9yID0gdi0NCj4gPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4udnBfYXNzaXN0LnZl Y3RvciwNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMgYi94ZW4vYXJj aC94ODYvaHZtL3ZsYXBpYy5jDQo+IGluZGV4IDRiZmM1M2UuLjU5MTYzMWEgMTAwNjQ0DQo+IC0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS92 bGFwaWMuYw0KPiBAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgc3RhdGljIHZvaWQgbGFwaWNfcmVhcm0o c3RydWN0IHZsYXBpYyAqcykNCj4gICAgICBzLT50aW1lcl9sYXN0X3VwZGF0ZSA9IHMtPnB0Lmxh c3RfcGx0X2d0aW1lOw0KPiAgfQ0KPg0KPiAtc3RhdGljIGludCBsYXBpY19zYXZlX2hpZGRlbihz dHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdA0KPiAqaCkNCj4gK3N0YXRpYyBp bnQgbGFwaWNfc2F2ZV9oaWRkZW4oc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0 X3QNCj4gKmgsIHVuc2lnbmVkIGludCBpbnN0YW5jZSkNCj4gIHsNCj4gICAgICBzdHJ1Y3QgdmNw dSAqdjsNCj4gICAgICBzdHJ1Y3QgdmxhcGljICpzOw0KPiBAQCAtMTM5Niw3ICsxMzk2LDEzIEBA IHN0YXRpYyBpbnQgbGFwaWNfc2F2ZV9oaWRkZW4oc3RydWN0IGRvbWFpbiAqZCwNCj4gaHZtX2Rv bWFpbl9jb250ZXh0X3QgKmgpDQo+ICAgICAgaWYgKCAhaGFzX3ZsYXBpYyhkKSApDQo+ICAgICAg ICAgIHJldHVybiAwOw0KPg0KPiAtICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkNCj4gKyAgICBp ZiggaW5zdGFuY2UgPCBkLT5tYXhfdmNwdXMgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgdiA9IGQt PnZjcHVbaW5zdGFuY2VdOw0KPiArICAgICAgICBzID0gdmNwdV92bGFwaWModik7DQo+ICsgICAg ICAgIHJjID0gaHZtX3NhdmVfZW50cnkoTEFQSUMsIHYtPnZjcHVfaWQsIGgsICZzLT5odyk7DQo+ ICsgICAgfQ0KPiArICAgIGVsc2UgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQ0KPiAgICAgIHsNCj4g ICAgICAgICAgcyA9IHZjcHVfdmxhcGljKHYpOw0KPiAgICAgICAgICBpZiAoIChyYyA9IGh2bV9z YXZlX2VudHJ5KExBUElDLCB2LT52Y3B1X2lkLCBoLCAmcy0+aHcpKSAhPQ0KPiAwICkNCj4gQEAg LTE0MDYsNyArMTQxMiw3IEBAIHN0YXRpYyBpbnQgbGFwaWNfc2F2ZV9oaWRkZW4oc3RydWN0IGRv bWFpbiAqZCwNCj4gaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpDQo+ICAgICAgcmV0dXJuIHJjOw0K PiAgfQ0KPg0KPiAtc3RhdGljIGludCBsYXBpY19zYXZlX3JlZ3Moc3RydWN0IGRvbWFpbiAqZCwg aHZtX2RvbWFpbl9jb250ZXh0X3QNCj4gKmgpDQo+ICtzdGF0aWMgaW50IGxhcGljX3NhdmVfcmVn cyhzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdA0KPiAqaCwgdW5zaWduZWQg aW50IGluc3RhbmNlKQ0KPiAgew0KPiAgICAgIHN0cnVjdCB2Y3B1ICp2Ow0KPiAgICAgIHN0cnVj dCB2bGFwaWMgKnM7DQo+IEBAIC0xNDE1LDcgKzE0MjEsMTYgQEAgc3RhdGljIGludCBsYXBpY19z YXZlX3JlZ3Moc3RydWN0IGRvbWFpbiAqZCwNCj4gaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpDQo+ ICAgICAgaWYgKCAhaGFzX3ZsYXBpYyhkKSApDQo+ICAgICAgICAgIHJldHVybiAwOw0KPg0KPiAt ICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkNCj4gKyAgICBpZiggaW5zdGFuY2UgPCBkLT5tYXhf dmNwdXMgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgdiA9IGQtPnZjcHVbaW5zdGFuY2VdOw0KPiAr ICAgICAgICBpZiAoIGh2bV9mdW5jcy5zeW5jX3Bpcl90b19pcnIgKQ0KPiArICAgICAgICAgICAg aHZtX2Z1bmNzLnN5bmNfcGlyX3RvX2lycih2KTsNCj4gKw0KPiArICAgICAgICBzID0gdmNwdV92 bGFwaWModik7DQo+ICsgICAgICAgIHJjID0gaHZtX3NhdmVfZW50cnkoTEFQSUNfUkVHUywgdi0+ dmNwdV9pZCwgaCwgcy0+cmVncyk7DQo+ICsgICAgfQ0KPiArICAgIGVsc2UgZm9yX2VhY2hfdmNw dSAoIGQsIHYgKQ0KPiAgICAgIHsNCj4gICAgICAgICAgaWYgKCBodm1fZnVuY3Muc3luY19waXJf dG9faXJyICkNCj4gICAgICAgICAgICAgIGh2bV9mdW5jcy5zeW5jX3Bpcl90b19pcnIodik7DQo+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZwaWMuYyBiL3hlbi9hcmNoL3g4Ni9odm0v dnBpYy5jDQo+IGluZGV4IGUxNjBiYmQuLjZiNzdmM2MgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNo L3g4Ni9odm0vdnBpYy5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdnBpYy5jDQo+IEBAIC0z NzEsNyArMzcxLDcgQEAgc3RhdGljIGludCB2cGljX2ludGVyY2VwdF9lbGNyX2lvKA0KPiAgICAg IHJldHVybiBYODZFTVVMX09LQVk7DQo+ICB9DQo+DQo+IC1zdGF0aWMgaW50IHZwaWNfc2F2ZShz dHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gK3N0YXRpYyBpbnQg dnBpY19zYXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoLA0KPiB1 bnNpZ25lZCBpbnQgaW5zdGFuY2UpDQo+ICB7DQo+ICAgICAgc3RydWN0IGh2bV9od192cGljICpz Ow0KPiAgICAgIGludCBpOw0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v aHZtLmggYi94ZW4vaW5jbHVkZS9hc20tDQo+IHg4Ni9odm0vaHZtLmgNCj4gaW5kZXggYjY4N2Uw My4uYzRiN2IzZCAxMDA2NDQNCj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgN Cj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgNCj4gQEAgLTYwOSw2ICs2MDks OCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWx0cDJtX3ZjcHVfZW11bGF0ZV92ZShzdHJ1Y3QNCj4g dmNwdSAqdikNCj4gICAgICByZXR1cm4gZmFsc2U7DQo+ICB9DQo+DQo+ICt2b2lkIGh2bV9zYXZl X29uZV9jcHVfY3R4dChzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9od19jcHUgKmN0eHQpOw0K PiArDQo+ICAvKiBDaGVjayBDUjQvRUZFUiB2YWx1ZXMgKi8NCj4gIGNvbnN0IGNoYXIgKmh2bV9l ZmVyX3ZhbGlkKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50NjRfdCB2YWx1ZSwNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBpbnQgY3IwX3BnKTsNCj4gZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3NhdmUuaCBiL3hlbi9pbmNsdWRlL2FzbS0NCj4geDg2 L2h2bS9zYXZlLmgNCj4gaW5kZXggZjg4OWU4Zi4uYTJjMzljNCAxMDA2NDQNCj4gLS0tIGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vc2F2ZS5oDQo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL3NhdmUuaA0KPiBAQCAtOTUsOCArOTUsOSBAQCBzdGF0aWMgaW5saW5lIHVpbnQxNl90IGh2 bV9sb2FkX2luc3RhbmNlKHN0cnVjdA0KPiBodm1fZG9tYWluX2NvbnRleHQgKmgpDQo+ICAgKiBU aGUgc2F2ZSBoYW5kbGVyIG1heSBzYXZlIG11bHRpcGxlIGluc3RhbmNlcyBvZiBhIHR5cGUgaW50 byB0aGUNCj4gYnVmZmVyOw0KPiAgICogdGhlIGxvYWQgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBv bmNlIGZvciBlYWNoIGluc3RhbmNlIGZvdW5kIHdoZW4NCj4gICAqIHJlc3RvcmluZy4gIEJvdGgg cmV0dXJuIG5vbi16ZXJvIG9uIGVycm9yLiAqLw0KPiAtdHlwZWRlZiBpbnQgKCpodm1fc2F2ZV9o YW5kbGVyKSAoc3RydWN0IGRvbWFpbiAqZCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGh2bV9kb21haW5fY29udGV4dF90ICpoKTsNCj4gK3R5cGVkZWYgaW50ICgqaHZtX3Nh dmVfaGFuZGxlcikgKHN0cnVjdCBkb21haW4gKmQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbnN0YW5jZSk7DQo+ICB0eXBlZGVmIGludCAo Kmh2bV9sb2FkX2hhbmRsZXIpIChzdHJ1Y3QgZG9tYWluICpkLA0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpOw0KPg0KDQpfX19fX19f X19fX19fX19fX19fX19fX18NClRoaXMgZW1haWwgd2FzIHNjYW5uZWQgYnkgQml0ZGVmZW5kZXIN Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo=