From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH i-g-t v4 2/3] lib/igt_core: Unify handling of slow/combinatorial tests Date: Tue, 16 Feb 2016 16:45:26 +0100 Message-ID: <20160216154526.GN32705@phenom.ffwll.local> References: <1455188974-17801-1-git-send-email-david.weinehall@linux.intel.com> <1455188974-17801-3-git-send-email-david.weinehall@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f46.google.com (mail-wm0-f46.google.com [74.125.82.46]) by gabe.freedesktop.org (Postfix) with ESMTPS id 644136E445 for ; Tue, 16 Feb 2016 15:45:01 +0000 (UTC) Received: by mail-wm0-f46.google.com with SMTP id a4so106262436wme.1 for ; Tue, 16 Feb 2016 07:45:01 -0800 (PST) Content-Disposition: inline In-Reply-To: <1455188974-17801-3-git-send-email-david.weinehall@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: David Weinehall Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBGZWIgMTEsIDIwMTYgYXQgMDE6MDk6MzNQTSArMDIwMCwgRGF2aWQgV2VpbmVoYWxs IHdyb3RlOgo+IFNvbWUgc3VidGVzdHMgYXJlIG5vdCBydW4gYnkgZGVmYXVsdCwgZm9yIHZhcmlv dXMgcmVhc29uczsKPiBiZSBpdCBiZWNhdXNlIHRoZXkncmUgb25seSBmb3IgZGVidWdnaW5nLCBi ZWNhdXNlIHRoZXkncmUgc2xvdywKPiBvciBiZWNhdXNlIHRoZXkgYXJlIG5vdCBvZiBoaWdoIGVu b3VnaCBxdWFsaXR5Lgo+IAo+IFRoaXMgcGF0Y2ggYWltcyB0byBpbnRyb2R1Y2UgYSBjb21tb24g bWVjaGFuaXNtIGZvciBjYXRlZ29yaXNpbmcKPiB0aGUgc3VidGVzdHMgYW5kIGludHJvZHVjZXMg YSBmbGFnICgtLWFsbCkgdGhhdCBydW5zL2xpc3RzIGFsbAo+IHN1YnRlc3RzIGluc3RlYWQgb2Yg anVzdCB0aGUgZGVmYXVsdCBzZXQuCgpJcyB0aGUgaWRlYSB0byBhbHNvIGFkZCBhIC0tdGVzdC1m bGFncyBpbnRlcmZhY2U/IEhvdyBpcyB0aGlzIG1lYW50IHRvCmludGVncmF0ZSB3aXRoIHRoZSBj dXJyZW50IEJBVCBydW50aW1lPyBBbHNvIHdlIG5lZWQgdG8gZmlndXJlIG91dApob3cvd2hldGhl ciB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgc3BlYyBmb3IgaG93IHRlc3RydW5uZXJzIGFyZSBzdXBw b3NlZCB0bwpydW4gaWd0IHRlc3RzLiBQbHVzIG9idmlvdXNseSBwYXRjaCBpZ3QucHkgaW4gcGln bGl0LgoKSSB0aGluayBJIGxpa2Ugd2hlcmUgdGhpcyBpcyBnb2luZywgYnV0IEkgZ3Vlc3MgbmVl ZHMgYSBiaXQgbW9yZSBwb2xpc2gKc3RpbGwuIEludGVncmF0aW5nIHRoaXMgaW50byBob3cgd2Ug cnVuL3NlbGVjdCBCQVQgd291bGQgYmUgYSBncmVhdApzaG93Y2FzZSBvZiB5b3VyIGNvbmNlcHQg SSB0aGluay4KCkNoZWVycywgRGFuaWVsCgo+IAo+IFNpZ25lZC1vZmYtYnk6IERhdmlkIFdlaW5l aGFsbCA8ZGF2aWQud2VpbmVoYWxsQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgbGliL2lndF9j b3JlLmMgICAgICAgICAgICAgICAgICAgfCAgNDMgKysrKysrKy0tCj4gIGxpYi9pZ3RfY29yZS5o ICAgICAgICAgICAgICAgICAgIHwgIDQyICsrKysrKysrKwo+ICB0ZXN0cy9nZW1fY29uY3VycmVu dF9ibGl0LmMgICAgICB8ICA1MCArKysrKy0tLS0tLQo+ICB0ZXN0cy9rbXNfZnJvbnRidWZmZXJf dHJhY2tpbmcuYyB8IDE4NiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0K PiAgNCBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKSwgMTExIGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2NvcmUuYyBiL2xpYi9pZ3RfY29yZS5jCj4gaW5kZXgg NmI2OWJiNzgwNzAwLi5lNmU2OTQ5ZWQ2NWEgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9jb3JlLmMK PiArKysgYi9saWIvaWd0X2NvcmUuYwo+IEBAIC0yMTYsNiArMjE2LDcgQEAgY29uc3QgY2hhciAq aWd0X2ludGVyYWN0aXZlX2RlYnVnOwo+ICAKPiAgLyogc3VidGVzdHMgaGVscGVycyAqLwo+ICBz dGF0aWMgYm9vbCBsaXN0X3N1YnRlc3RzID0gZmFsc2U7Cj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQg c3VidGVzdF90eXBlc19tYXNrID0gU1VCVEVTVF9UWVBFX05PUk1BTDsKPiAgc3RhdGljIGNoYXIg KnJ1bl9zaW5nbGVfc3VidGVzdCA9IE5VTEw7Cj4gIHN0YXRpYyBib29sIHJ1bl9zaW5nbGVfc3Vi dGVzdF9mb3VuZCA9IGZhbHNlOwo+ICBzdGF0aWMgY29uc3QgY2hhciAqaW5fc3VidGVzdCA9IE5V TEw7Cj4gQEAgLTIzNywxMiArMjM4LDEzIEBAIGludCB0ZXN0X2NoaWxkcmVuX3N6Owo+ICBib29s IHRlc3RfY2hpbGQ7Cj4gIAo+ICBlbnVtIHsKPiAtIE9QVF9MSVNUX1NVQlRFU1RTLAo+IC0gT1BU X1JVTl9TVUJURVNULAo+IC0gT1BUX0RFU0NSSVBUSU9OLAo+IC0gT1BUX0RFQlVHLAo+IC0gT1BU X0lOVEVSQUNUSVZFX0RFQlVHLAo+IC0gT1BUX0hFTFAgPSAnaCcKPiArCU9QVF9MSVNUX1NVQlRF U1RTLAo+ICsJT1BUX1dJVEhfQUxMX1NVQlRFU1RTLAo+ICsJT1BUX1JVTl9TVUJURVNULAo+ICsJ T1BUX0RFU0NSSVBUSU9OLAo+ICsJT1BUX0RFQlVHLAo+ICsJT1BUX0lOVEVSQUNUSVZFX0RFQlVH LAo+ICsJT1BUX0hFTFAgPSAnaCcKPiAgfTsKPiAgCj4gIHN0YXRpYyBpbnQgaWd0X2V4aXRjb2Rl ID0gSUdUX0VYSVRfU1VDQ0VTUzsKPiBAQCAtNTE2LDYgKzUxOCw3IEBAIHN0YXRpYyB2b2lkIHBy aW50X3VzYWdlKGNvbnN0IGNoYXIgKmhlbHBfc3RyLCBib29sIG91dHB1dF9vbl9zdGRlcnIpCj4g IAo+ICAJZnByaW50ZihmLCAiVXNhZ2U6ICVzIFtPUFRJT05TXVxuIiwgY29tbWFuZF9zdHIpOwo+ ICAJZnByaW50ZihmLCAiICAtLWxpc3Qtc3VidGVzdHNcbiIKPiArCQkgICAiICAtLWFsbFxuIgo+ ICAJCSAgICIgIC0tcnVuLXN1YnRlc3QgPHBhdHRlcm4+XG4iCj4gIAkJICAgIiAgLS1kZWJ1Z1s9 bG9nLWRvbWFpbl1cbiIKPiAgCQkgICAiICAtLWludGVyYWN0aXZlLWRlYnVnWz1kb21haW5dXG4i Cj4gQEAgLTU0OCw2ICs1NTEsNyBAQCBzdGF0aWMgaW50IGNvbW1vbl9pbml0KGludCAqYXJnYywg Y2hhciAqKmFyZ3YsCj4gIAlpbnQgYywgb3B0aW9uX2luZGV4ID0gMCwgaSwgeDsKPiAgCXN0YXRp YyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0gewo+ICAJCXsibGlzdC1zdWJ0ZXN0cyIs IDAsIDAsIE9QVF9MSVNUX1NVQlRFU1RTfSwKPiArCQl7ImFsbCIsIDAsIDAsIE9QVF9XSVRIX0FM TF9TVUJURVNUU30sCj4gIAkJeyJydW4tc3VidGVzdCIsIDEsIDAsIE9QVF9SVU5fU1VCVEVTVH0s Cj4gIAkJeyJoZWxwLWRlc2NyaXB0aW9uIiwgMCwgMCwgT1BUX0RFU0NSSVBUSU9OfSwKPiAgCQl7 ImRlYnVnIiwgb3B0aW9uYWxfYXJndW1lbnQsIDAsIE9QVF9ERUJVR30sCj4gQEAgLTY1OSw2ICs2 NjMsMTAgQEAgc3RhdGljIGludCBjb21tb25faW5pdChpbnQgKmFyZ2MsIGNoYXIgKiphcmd2LAo+ ICAJCQlpZiAoIXJ1bl9zaW5nbGVfc3VidGVzdCkKPiAgCQkJCWxpc3Rfc3VidGVzdHMgPSB0cnVl Owo+ICAJCQlicmVhazsKPiArCQljYXNlIE9QVF9XSVRIX0FMTF9TVUJURVNUUzoKPiArCQkJaWYg KCFydW5fc2luZ2xlX3N1YnRlc3QpCj4gKwkJCQlzdWJ0ZXN0X3R5cGVzX21hc2sgPSBTVUJURVNU X1RZUEVfQUxMOwo+ICsJCQlicmVhazsKPiAgCQljYXNlIE9QVF9SVU5fU1VCVEVTVDoKPiAgCQkJ aWYgKCFsaXN0X3N1YnRlc3RzKQo+ICAJCQkJcnVuX3NpbmdsZV9zdWJ0ZXN0ID0gc3RyZHVwKG9w dGFyZyk7Cj4gQEAgLTE2NjcsNiArMTY3NSwyOSBAQCB2b2lkIGlndF9za2lwX29uX3NpbXVsYXRp b24odm9pZCkKPiAgCQlpZ3RfcmVxdWlyZSghaWd0X3J1bl9pbl9zaW11bGF0aW9uKCkpOwo+ICB9 Cj4gIAo+ICsvKioKPiArICogaWd0X21hdGNoX3N1YnRlc3RfZmxhZ3M6Cj4gKyAqCj4gKyAqIFRo aXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBhdHRyaWJ1dGVzIG9mIHRo ZSBzdWJ0ZXN0Cj4gKyAqIG1ha2VzIGl0IGEgY2FuZGlkYXRlIGZvciBpbmNsdXNpb24gaW4gdGhl IHRlc3QgcnVuOyB0aGlzIGlzIHVzZWQgdG8KPiArICogY2F0ZWdvcmlzZSB0ZXN0cywgZm9yIGlu c3RhbmNlIHRvIGV4Y2x1ZGUgdGVzdHMgdGhhdCBhcmUgcHVyZWx5IGZvcgo+ICsgKiBkZWJ1ZyBw dXJwb3NlcywgdGVzdHMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gY2VydGFpbiBlbnZpcm9ubWVudHMs Cj4gKyAqIG9yIHRlc3RzIHRoYXQgYXJlIHZlcnkgc2xvdy4KPiArICoKPiArICogTm90ZSB0aGF0 IGEgdGVzdCBoYXMgdG8gaGF2ZSBhbGwgaXRzIGZsYWdzIG1ldCB0byBiZSBydW47IGZvciBpbnN0 YW5jZQo+ICsgKiBhIHN1YnRlc3Qgd2l0aCB0aGUgZmxhZ3MgU1VCVEVTVF9UWVBFX1NMT1cgfCBT VUJURVNUX1RZUEVfREVCVUcgcmVxdWlyZXMKPiArICogIi0tc3VidGVzdC10eXBlcz1zbG93LGRl YnVnIiBvciAiLS1hbGwiIHRvIGJlIGV4ZWN1dGVkCj4gKyAqCj4gKyAqIEBzdWJ0ZXN0X2ZsYWdz OiBUaGUgc3VidGVzdHMgdG8gY2hlY2sgZm9yCj4gKyAqCj4gKyAqIFJldHVybnM6IHRydWUgaWYg dGhlIHN1YnRlc3QgdGVzdCBzaG91bGQgYmUgcnVuLAo+ICsgKiAgICAgICAgICBmYWxzZSBpZiB0 aGUgc3VidGVzdCBzaG91bGQgYmUgc2tpcHBlZAo+ICsgKi8KPiArYm9vbCBpZ3RfbWF0Y2hfc3Vi dGVzdF9mbGFncyh1bnNpZ25lZCBsb25nIHN1YnRlc3RfZmxhZ3MpCj4gK3sKPiArCXJldHVybiAo KHN1YnRlc3RfZmxhZ3MgJiBzdWJ0ZXN0X3R5cGVzX21hc2spID09IHN1YnRlc3RfZmxhZ3MpOwo+ ICt9Cj4gKwo+ICAvKiBzdHJ1Y3R1cmVkIGxvZ2dpbmcgKi8KPiAgCj4gIC8qKgo+IGRpZmYgLS1n aXQgYS9saWIvaWd0X2NvcmUuaCBiL2xpYi9pZ3RfY29yZS5oCj4gaW5kZXggOGYyOTdlMDZhMDY4 Li5iZjgzZGU2MDliZmEgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9jb3JlLmgKPiArKysgYi9saWIv aWd0X2NvcmUuaAo+IEBAIC0xOTMsNiArMTkzLDQ4IEBAIGJvb2wgX19pZ3RfcnVuX3N1YnRlc3Qo Y29uc3QgY2hhciAqc3VidGVzdF9uYW1lKTsKPiAgI2RlZmluZSBpZ3Rfc3VidGVzdF9mKGYuLi4p IFwKPiAgCV9faWd0X3N1YnRlc3RfZihpZ3RfdG9rZW5jYXQoX190bXBjaGFyLCBfX0xJTkVfXyks IGYpCj4gIAo+ICtlbnVtIHsKPiArCS8qIFRoZSBzZXQgb2YgdGVzdHMgcnVuIGlmIG5vdGhpbmcg ZWxzZSBpcyBzcGVjaWZpZWQgKi8KPiArCVNVQlRFU1RfVFlQRV9OT1JNQUwgPSAxIDw8IDAsCj4g KwkvKiBCYXNpYyBBY2NlcHRhbmNlIFRlc3Rpbmcgc2V0ICovCj4gKwlTVUJURVNUX1RZUEVfQkFT SUMgPSAxIDw8IDEsCj4gKwkvKiBUZXN0cyB0aGF0IGFyZSB2ZXJ5IHNsb3cgKi8KPiArCVNVQlRF U1RfVFlQRV9TTE9XID0gMSA8PCAyLAo+ICsJLyogVGVzdHMgdGhhdCBtYWlubHkgaW50ZW5kZWQg Zm9yIGRlYnVnZ2luZyAqLwo+ICsJU1VCVEVTVF9UWVBFX0RFQlVHID0gMSA8PCAzLAo+ICsJU1VC VEVTVF9UWVBFX0FMTCA9IH4wCj4gK30gc3VidGVzdF90eXBlczsKPiArCj4gK2Jvb2wgaWd0X21h dGNoX3N1YnRlc3RfZmxhZ3ModW5zaWduZWQgbG9uZyBzdWJ0ZXN0X2ZsYWdzKTsKPiArCj4gKy8q Kgo+ICsgKiBpZ3Rfc3VidGVzdF9mbGFnczoKPiArICogQG5hbWU6IG5hbWUgb2YgdGhlIHN1YnRl c3QKPiArICogQF9fc3VidGVzdF9mbGFnczogdGhlIGNhdGVnb3JpZXMgdGhlIHN1YnRlc3QgYmVs b25ncyB0bwo+ICsgKgo+ICsgKiBUaGlzIGlzIGEgd3JhcHBlciBhcm91bmQgaWd0X3N1YnRlc3Qg dGhhdCB3aWxsIG9ubHkgZXhlY3V0ZSB0aGUKPiArICogdGVzdGNhc2UgaWYgYWxsIG9mIHRoZSBm bGFncyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBtYXRjaCB0aG9zZQo+ICsgKiBzcGVjaWZpZWQg YnkgdGhlIGxpc3Qgb2Ygc3VidGVzdCBjYXRlZ29yaWVzIHBhc3NlZCBmcm9tIHRoZQo+ICsgKiBj b21tYW5kIGxpbmU7IHRoZSBkZWZhdWx0IGNhdGVnb3J5IGlzIFNVQlRFU1RfVFlQRV9OT1JNQUwu Cj4gKyAqLwo+ICsjZGVmaW5lIGlndF9zdWJ0ZXN0X2ZsYWdzKG5hbWUsIF9fc3VidGVzdF9mbGFn cykgXAo+ICsJaWYgKGlndF9tYXRjaF9zdWJ0ZXN0X2ZsYWdzKF9fc3VidGVzdF9mbGFncykpIFwK PiArCQlpZ3Rfc3VidGVzdChuYW1lKQo+ICsKPiArLyoqCj4gKyAqIGlndF9zdWJ0ZXN0X2ZsYWdz X2Y6Cj4gKyAqIEAuLi46IGZvcm1hdCBzdHJpbmcgYW5kIG9wdGlvbmFsIGFyZ3VtZW50cwo+ICsg KiBAX19zdWJ0ZXN0X2ZsYWdzOiB0aGUgY2F0ZWdvcmllcyB0aGUgc3VidGVzdCBiZWxvbmdzIHRv Cj4gKyAqCj4gKyAqIFRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBpZ3Rfc3VidGVzdF9mIHRoYXQg d2lsbCBvbmx5IGV4ZWN1dGUgdGhlCj4gKyAqIHRlc3RjYXNlIGlmIGFsbCBvZiB0aGUgZmxhZ3Mg cGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gbWF0Y2ggdGhvc2UKPiArICogc3BlY2lmaWVkIGJ5IHRo ZSBsaXN0IG9mIHN1YnRlc3QgY2F0ZWdvcmllcyBwYXNzZWQgZnJvbSB0aGUKPiArICogY29tbWFu ZCBsaW5lOyB0aGUgZGVmYXVsdCBjYXRlZ29yeSBpcyBTVUJURVNUX1RZUEVfTk9STUFMLgo+ICsg Ki8KPiArI2RlZmluZSBpZ3Rfc3VidGVzdF9mbGFnc19mKF9fc3VidGVzdF9mbGFncywgZi4uLikg XAo+ICsJaWYgKGlndF9tYXRjaF9zdWJ0ZXN0X2ZsYWdzKF9fc3VidGVzdF9mbGFncykpIFwKPiAr CQlfX2lndF9zdWJ0ZXN0X2YoaWd0X3Rva2VuY2F0KF9fdG1wY2hhciwgX19MSU5FX18pLCBmKQo+ ICsKPiAgY29uc3QgY2hhciAqaWd0X3N1YnRlc3RfbmFtZSh2b2lkKTsKPiAgYm9vbCBpZ3Rfb25s eV9saXN0X3N1YnRlc3RzKHZvaWQpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VtX2NvbmN1 cnJlbnRfYmxpdC5jIGIvdGVzdHMvZ2VtX2NvbmN1cnJlbnRfYmxpdC5jCj4gaW5kZXggOWI3ZWY4 NzAwZTMxLi4zYzIzYTk1YzQ2MzEgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvZ2VtX2NvbmN1cnJlbnRf YmxpdC5jCj4gKysrIGIvdGVzdHMvZ2VtX2NvbmN1cnJlbnRfYmxpdC5jCj4gQEAgLTY0LDcgKzY0 LDYgQEAgc3RydWN0IGxvY2FsX2k5MTVfZ2VtX3VzZXJwdHIgewo+ICAKPiAgaW50IGZkLCBkZXZp ZCwgZ2VuOwo+ICBzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwo+IC1pbnQgYWxsOwo+ ICBpbnQgcGFzczsKPiAgCj4gIHN0cnVjdCBidWZmZXJzIHsKPiBAQCAtMTI1NiwxMCArMTI1NSwx NCBAQCBydW5fYmFzaWNfbW9kZXMoY29uc3QgY2hhciAqcHJlZml4LAo+ICAJfSwgKmg7Cj4gIAo+ ICAJZm9yIChoID0gaGFuZ3M7IGgtPnN1ZmZpeDsgaCsrKSB7Cj4gLQkJaWYgKCFhbGwgJiYgKmgt PnN1ZmZpeCkKPiAtCQkJY29udGludWU7Cj4gKwkJdW5zaWduZWQgaW50IHN1YnRlc3RfZmxhZ3M7 Cj4gIAo+IC0JCWZvciAocCA9IGFsbCA/IHBpcGVsaW5lcyA6IHBza2lwOyBwLT5wcmVmaXg7IHAr Kykgewo+ICsJCWlmICgqaC0+c3VmZml4KQo+ICsJCQlzdWJ0ZXN0X2ZsYWdzID0gU1VCVEVTVF9U WVBFX1NMT1c7Cj4gKwkJZWxzZQo+ICsJCQlzdWJ0ZXN0X2ZsYWdzID0gU1VCVEVTVF9UWVBFX05P Uk1BTDsKPiArCj4gKwkJZm9yIChwID0gaWd0X21hdGNoX3N1YnRlc3RfZmxhZ3MoU1VCVEVTVF9U WVBFX1NMT1cpID8gcGlwZWxpbmVzIDogcHNraXA7IHAtPnByZWZpeDsgcCsrKSB7Cj4gIAkJCXN0 cnVjdCBidWZmZXJzIGJ1ZmZlcnM7Cj4gIAo+ICAJCQlpZ3RfZml4dHVyZQo+IEBAIC0xMjY3LDIx ICsxMjcwLDIxIEBAIHJ1bl9iYXNpY19tb2Rlcyhjb25zdCBjaGFyICpwcmVmaXgsCj4gIAkJCQkJ CSAgICAgNTEyLCA1MTIsIGZkLAo+ICAJCQkJCQkgICAgIHJ1bl93cmFwX2Z1bmMgIT0gcnVuX2No aWxkKTsKPiAgCj4gLQkJCWlndF9zdWJ0ZXN0X2YoIiVzLSVzLSVzLXNhbml0eWNoZWNrMCVzJXMi LCBwcmVmaXgsIG1vZGUtPm5hbWUsIHAtPnByZWZpeCwgc3VmZml4LCBoLT5zdWZmaXgpIHsKPiAr CQkJaWd0X3N1YnRlc3RfZmxhZ3NfZihzdWJ0ZXN0X2ZsYWdzLCAiJXMtJXMtJXMtc2FuaXR5Y2hl Y2swJXMlcyIsIHByZWZpeCwgbW9kZS0+bmFtZSwgcC0+cHJlZml4LCBzdWZmaXgsIGgtPnN1ZmZp eCkgewo+ICAJCQkJcC0+cmVxdWlyZSgpOwo+ICAJCQkJYnVmZmVyc19jcmVhdGUoJmJ1ZmZlcnMs IG51bV9idWZmZXJzKTsKPiAgCQkJCXJ1bl93cmFwX2Z1bmMoJmJ1ZmZlcnMsIGRvX2Jhc2ljMCwK PiAgCQkJCQkgICAgICBwLT5jb3B5LCBoLT5oYW5nKTsKPiAgCQkJfQo+ICAKPiAtCQkJaWd0X3N1 YnRlc3RfZigiJXMtJXMtJXMtc2FuaXR5Y2hlY2sxJXMlcyIsIHByZWZpeCwgbW9kZS0+bmFtZSwg cC0+cHJlZml4LCBzdWZmaXgsIGgtPnN1ZmZpeCkgewo+ICsJCQlpZ3Rfc3VidGVzdF9mbGFnc19m KHN1YnRlc3RfZmxhZ3MsICIlcy0lcy0lcy1zYW5pdHljaGVjazElcyVzIiwgcHJlZml4LCBtb2Rl LT5uYW1lLCBwLT5wcmVmaXgsIHN1ZmZpeCwgaC0+c3VmZml4KSB7Cj4gIAkJCQlwLT5yZXF1aXJl KCk7Cj4gIAkJCQlidWZmZXJzX2NyZWF0ZSgmYnVmZmVycywgbnVtX2J1ZmZlcnMpOwo+ICAJCQkJ cnVuX3dyYXBfZnVuYygmYnVmZmVycywgZG9fYmFzaWMxLAo+ICAJCQkJCSAgICAgIHAtPmNvcHks IGgtPmhhbmcpOwo+ICAJCQl9Cj4gIAo+IC0JCQlpZ3Rfc3VidGVzdF9mKCIlcy0lcy0lcy1zYW5p dHljaGVja04lcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5wcmVmaXgsIHN1ZmZpeCwgaC0+ c3VmZml4KSB7Cj4gKwkJCWlndF9zdWJ0ZXN0X2ZsYWdzX2Yoc3VidGVzdF9mbGFncywgIiVzLSVz LSVzLXNhbml0eWNoZWNrTiVzJXMiLCBwcmVmaXgsIG1vZGUtPm5hbWUsIHAtPnByZWZpeCwgc3Vm Zml4LCBoLT5zdWZmaXgpIHsKPiAgCQkJCXAtPnJlcXVpcmUoKTsKPiAgCQkJCWJ1ZmZlcnNfY3Jl YXRlKCZidWZmZXJzLCBudW1fYnVmZmVycyk7Cj4gIAkJCQlydW5fd3JhcF9mdW5jKCZidWZmZXJz LCBkb19iYXNpY04sCj4gQEAgLTEyODksNyArMTI5Miw3IEBAIHJ1bl9iYXNpY19tb2Rlcyhjb25z dCBjaGFyICpwcmVmaXgsCj4gIAkJCX0KPiAgCj4gIAkJCS8qIHRyeSB0byBvdmVyd3JpdGUgdGhl IHNvdXJjZSB2YWx1ZXMgKi8KPiAtCQkJaWd0X3N1YnRlc3RfZigiJXMtJXMtJXMtb3ZlcndyaXRl LXNvdXJjZS1vbmUlcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5wcmVmaXgsIHN1ZmZpeCwg aC0+c3VmZml4KSB7Cj4gKwkJCWlndF9zdWJ0ZXN0X2ZsYWdzX2Yoc3VidGVzdF9mbGFncywgIiVz LSVzLSVzLW92ZXJ3cml0ZS1zb3VyY2Utb25lJXMlcyIsIHByZWZpeCwgbW9kZS0+bmFtZSwgcC0+ cHJlZml4LCBzdWZmaXgsIGgtPnN1ZmZpeCkgewo+ICAJCQkJcC0+cmVxdWlyZSgpOwo+ICAJCQkJ YnVmZmVyc19jcmVhdGUoJmJ1ZmZlcnMsIG51bV9idWZmZXJzKTsKPiAgCQkJCXJ1bl93cmFwX2Z1 bmMoJmJ1ZmZlcnMsCj4gQEAgLTEyOTcsNyArMTMwMCw3IEBAIHJ1bl9iYXNpY19tb2Rlcyhjb25z dCBjaGFyICpwcmVmaXgsCj4gIAkJCQkJICAgICAgcC0+Y29weSwgaC0+aGFuZyk7Cj4gIAkJCX0K PiAgCj4gLQkJCWlndF9zdWJ0ZXN0X2YoIiVzLSVzLSVzLW92ZXJ3cml0ZS1zb3VyY2UlcyVzIiwg cHJlZml4LCBtb2RlLT5uYW1lLCBwLT5wcmVmaXgsIHN1ZmZpeCwgaC0+c3VmZml4KSB7Cj4gKwkJ CWlndF9zdWJ0ZXN0X2ZsYWdzX2Yoc3VidGVzdF9mbGFncywgIiVzLSVzLSVzLW92ZXJ3cml0ZS1z b3VyY2UlcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5wcmVmaXgsIHN1ZmZpeCwgaC0+c3Vm Zml4KSB7Cj4gIAkJCQlwLT5yZXF1aXJlKCk7Cj4gIAkJCQlidWZmZXJzX2NyZWF0ZSgmYnVmZmVy cywgbnVtX2J1ZmZlcnMpOwo+ICAJCQkJcnVuX3dyYXBfZnVuYygmYnVmZmVycywKPiBAQCAtMTMw NSw3ICsxMzA4LDcgQEAgcnVuX2Jhc2ljX21vZGVzKGNvbnN0IGNoYXIgKnByZWZpeCwKPiAgCQkJ CQkgICAgICBwLT5jb3B5LCBoLT5oYW5nKTsKPiAgCQkJfQo+ICAKPiAtCQkJaWd0X3N1YnRlc3Rf ZigiJXMtJXMtJXMtb3ZlcndyaXRlLXNvdXJjZS1yZWFkLWJjcyVzJXMiLCBwcmVmaXgsIG1vZGUt Pm5hbWUsIHAtPnByZWZpeCwgc3VmZml4LCBoLT5zdWZmaXgpIHsKPiArCQkJaWd0X3N1YnRlc3Rf ZmxhZ3NfZihzdWJ0ZXN0X2ZsYWdzLCAiJXMtJXMtJXMtb3ZlcndyaXRlLXNvdXJjZS1yZWFkLWJj cyVzJXMiLCBwcmVmaXgsIG1vZGUtPm5hbWUsIHAtPnByZWZpeCwgc3VmZml4LCBoLT5zdWZmaXgp IHsKPiAgCQkJCXAtPnJlcXVpcmUoKTsKPiAgCQkJCWJ1ZmZlcnNfY3JlYXRlKCZidWZmZXJzLCBu dW1fYnVmZmVycyk7Cj4gIAkJCQlydW5fd3JhcF9mdW5jKCZidWZmZXJzLAo+IEBAIC0xMzEzLDcg KzEzMTYsNyBAQCBydW5fYmFzaWNfbW9kZXMoY29uc3QgY2hhciAqcHJlZml4LAo+ICAJCQkJCSAg ICAgIHAtPmNvcHksIGgtPmhhbmcpOwo+ICAJCQl9Cj4gIAo+IC0JCQlpZ3Rfc3VidGVzdF9mKCIl cy0lcy0lcy1vdmVyd3JpdGUtc291cmNlLXJlYWQtcmNzJXMlcyIsIHByZWZpeCwgbW9kZS0+bmFt ZSwgcC0+cHJlZml4LCBzdWZmaXgsIGgtPnN1ZmZpeCkgewo+ICsJCQlpZ3Rfc3VidGVzdF9mbGFn c19mKHN1YnRlc3RfZmxhZ3MsICIlcy0lcy0lcy1vdmVyd3JpdGUtc291cmNlLXJlYWQtcmNzJXMl cyIsIHByZWZpeCwgbW9kZS0+bmFtZSwgcC0+cHJlZml4LCBzdWZmaXgsIGgtPnN1ZmZpeCkgewo+ ICAJCQkJcC0+cmVxdWlyZSgpOwo+ICAJCQkJaWd0X3JlcXVpcmUocmVuZGVyY29weSk7Cj4gIAkJ CQlidWZmZXJzX2NyZWF0ZSgmYnVmZmVycywgbnVtX2J1ZmZlcnMpOwo+IEBAIC0xMzIyLDcgKzEz MjUsNyBAQCBydW5fYmFzaWNfbW9kZXMoY29uc3QgY2hhciAqcHJlZml4LAo+ICAJCQkJCSAgICAg IHAtPmNvcHksIGgtPmhhbmcpOwo+ICAJCQl9Cj4gIAo+IC0JCQlpZ3Rfc3VidGVzdF9mKCIlcy0l cy0lcy1vdmVyd3JpdGUtc291cmNlLXJldiVzJXMiLCBwcmVmaXgsIG1vZGUtPm5hbWUsIHAtPnBy ZWZpeCwgc3VmZml4LCBoLT5zdWZmaXgpIHsKPiArCQkJaWd0X3N1YnRlc3RfZmxhZ3NfZihzdWJ0 ZXN0X2ZsYWdzLCAiJXMtJXMtJXMtb3ZlcndyaXRlLXNvdXJjZS1yZXYlcyVzIiwgcHJlZml4LCBt b2RlLT5uYW1lLCBwLT5wcmVmaXgsIHN1ZmZpeCwgaC0+c3VmZml4KSB7Cj4gIAkJCQlwLT5yZXF1 aXJlKCk7Cj4gIAkJCQlidWZmZXJzX2NyZWF0ZSgmYnVmZmVycywgbnVtX2J1ZmZlcnMpOwo+ICAJ CQkJcnVuX3dyYXBfZnVuYygmYnVmZmVycywKPiBAQCAtMTMzMSw3ICsxMzM0LDcgQEAgcnVuX2Jh c2ljX21vZGVzKGNvbnN0IGNoYXIgKnByZWZpeCwKPiAgCQkJfQo+ICAKPiAgCQkJLyogdHJ5IHRv IGludGVybWl4IGNvcGllcyB3aXRoIEdQVSBjb3BpZXMqLwo+IC0JCQlpZ3Rfc3VidGVzdF9mKCIl cy0lcy0lcy1pbnRlcm1peC1yY3MlcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5wcmVmaXgs IHN1ZmZpeCwgaC0+c3VmZml4KSB7Cj4gKwkJCWlndF9zdWJ0ZXN0X2ZsYWdzX2Yoc3VidGVzdF9m bGFncywgIiVzLSVzLSVzLWludGVybWl4LXJjcyVzJXMiLCBwcmVmaXgsIG1vZGUtPm5hbWUsIHAt PnByZWZpeCwgc3VmZml4LCBoLT5zdWZmaXgpIHsKPiAgCQkJCXAtPnJlcXVpcmUoKTsKPiAgCQkJ CWlndF9yZXF1aXJlKHJlbmRlcmNvcHkpOwo+ICAJCQkJYnVmZmVyc19jcmVhdGUoJmJ1ZmZlcnMs IG51bV9idWZmZXJzKTsKPiBAQCAtMTMzOSw3ICsxMzQyLDcgQEAgcnVuX2Jhc2ljX21vZGVzKGNv bnN0IGNoYXIgKnByZWZpeCwKPiAgCQkJCQkgICAgICBkb19pbnRlcm1peF9yY3MsCj4gIAkJCQkJ ICAgICAgcC0+Y29weSwgaC0+aGFuZyk7Cj4gIAkJCX0KPiAtCQkJaWd0X3N1YnRlc3RfZigiJXMt JXMtJXMtaW50ZXJtaXgtYmNzJXMlcyIsIHByZWZpeCwgbW9kZS0+bmFtZSwgcC0+cHJlZml4LCBz dWZmaXgsIGgtPnN1ZmZpeCkgewo+ICsJCQlpZ3Rfc3VidGVzdF9mbGFnc19mKHN1YnRlc3RfZmxh Z3MsICIlcy0lcy0lcy1pbnRlcm1peC1iY3MlcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5w cmVmaXgsIHN1ZmZpeCwgaC0+c3VmZml4KSB7Cj4gIAkJCQlwLT5yZXF1aXJlKCk7Cj4gIAkJCQlp Z3RfcmVxdWlyZShyZW5kZXJjb3B5KTsKPiAgCQkJCWJ1ZmZlcnNfY3JlYXRlKCZidWZmZXJzLCBu dW1fYnVmZmVycyk7Cj4gQEAgLTEzNDcsNyArMTM1MCw3IEBAIHJ1bl9iYXNpY19tb2Rlcyhjb25z dCBjaGFyICpwcmVmaXgsCj4gIAkJCQkJICAgICAgZG9faW50ZXJtaXhfYmNzLAo+ICAJCQkJCSAg ICAgIHAtPmNvcHksIGgtPmhhbmcpOwo+ICAJCQl9Cj4gLQkJCWlndF9zdWJ0ZXN0X2YoIiVzLSVz LSVzLWludGVybWl4LWJvdGglcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5wcmVmaXgsIHN1 ZmZpeCwgaC0+c3VmZml4KSB7Cj4gKwkJCWlndF9zdWJ0ZXN0X2ZsYWdzX2Yoc3VidGVzdF9mbGFn cywgIiVzLSVzLSVzLWludGVybWl4LWJvdGglcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5w cmVmaXgsIHN1ZmZpeCwgaC0+c3VmZml4KSB7Cj4gIAkJCQlwLT5yZXF1aXJlKCk7Cj4gIAkJCQlp Z3RfcmVxdWlyZShyZW5kZXJjb3B5KTsKPiAgCQkJCWJ1ZmZlcnNfY3JlYXRlKCZidWZmZXJzLCBu dW1fYnVmZmVycyk7Cj4gQEAgLTEzNTcsNyArMTM2MCw3IEBAIHJ1bl9iYXNpY19tb2Rlcyhjb25z dCBjaGFyICpwcmVmaXgsCj4gIAkJCX0KPiAgCj4gIAkJCS8qIHRyeSB0byByZWFkIHRoZSByZXN1 bHRzIGJlZm9yZSB0aGUgY29weSBjb21wbGV0ZXMgKi8KPiAtCQkJaWd0X3N1YnRlc3RfZigiJXMt JXMtJXMtZWFybHktcmVhZCVzJXMiLCBwcmVmaXgsIG1vZGUtPm5hbWUsIHAtPnByZWZpeCwgc3Vm Zml4LCBoLT5zdWZmaXgpIHsKPiArCQkJaWd0X3N1YnRlc3RfZmxhZ3NfZihzdWJ0ZXN0X2ZsYWdz LCAiJXMtJXMtJXMtZWFybHktcmVhZCVzJXMiLCBwcmVmaXgsIG1vZGUtPm5hbWUsIHAtPnByZWZp eCwgc3VmZml4LCBoLT5zdWZmaXgpIHsKPiAgCQkJCXAtPnJlcXVpcmUoKTsKPiAgCQkJCWJ1ZmZl cnNfY3JlYXRlKCZidWZmZXJzLCBudW1fYnVmZmVycyk7Cj4gIAkJCQlydW5fd3JhcF9mdW5jKCZi dWZmZXJzLAo+IEBAIC0xMzY2LDE0ICsxMzY5LDE0IEBAIHJ1bl9iYXNpY19tb2Rlcyhjb25zdCBj aGFyICpwcmVmaXgsCj4gIAkJCX0KPiAgCj4gIAkJCS8qIGNvbmN1cnJlbnQgcmVhZHMgKi8KPiAt CQkJaWd0X3N1YnRlc3RfZigiJXMtJXMtJXMtcmVhZC1yZWFkLWJjcyVzJXMiLCBwcmVmaXgsIG1v ZGUtPm5hbWUsIHAtPnByZWZpeCwgc3VmZml4LCBoLT5zdWZmaXgpIHsKPiArCQkJaWd0X3N1YnRl c3RfZmxhZ3NfZihzdWJ0ZXN0X2ZsYWdzLCAiJXMtJXMtJXMtcmVhZC1yZWFkLWJjcyVzJXMiLCBw cmVmaXgsIG1vZGUtPm5hbWUsIHAtPnByZWZpeCwgc3VmZml4LCBoLT5zdWZmaXgpIHsKPiAgCQkJ CXAtPnJlcXVpcmUoKTsKPiAgCQkJCWJ1ZmZlcnNfY3JlYXRlKCZidWZmZXJzLCBudW1fYnVmZmVy cyk7Cj4gIAkJCQlydW5fd3JhcF9mdW5jKCZidWZmZXJzLAo+ICAJCQkJCSAgICAgIGRvX3JlYWRf cmVhZF9iY3MsCj4gIAkJCQkJICAgICAgcC0+Y29weSwgaC0+aGFuZyk7Cj4gIAkJCX0KPiAtCQkJ aWd0X3N1YnRlc3RfZigiJXMtJXMtJXMtcmVhZC1yZWFkLXJjcyVzJXMiLCBwcmVmaXgsIG1vZGUt Pm5hbWUsIHAtPnByZWZpeCwgc3VmZml4LCBoLT5zdWZmaXgpIHsKPiArCQkJaWd0X3N1YnRlc3Rf ZmxhZ3NfZihzdWJ0ZXN0X2ZsYWdzLCAiJXMtJXMtJXMtcmVhZC1yZWFkLXJjcyVzJXMiLCBwcmVm aXgsIG1vZGUtPm5hbWUsIHAtPnByZWZpeCwgc3VmZml4LCBoLT5zdWZmaXgpIHsKPiAgCQkJCXAt PnJlcXVpcmUoKTsKPiAgCQkJCWlndF9yZXF1aXJlKHJlbmRlcmNvcHkpOwo+ICAJCQkJYnVmZmVy c19jcmVhdGUoJmJ1ZmZlcnMsIG51bV9idWZmZXJzKTsKPiBAQCAtMTM4MywxNCArMTM4NiwxNCBA QCBydW5fYmFzaWNfbW9kZXMoY29uc3QgY2hhciAqcHJlZml4LAo+ICAJCQl9Cj4gIAo+ICAJCQkv KiBzcGxpdCBjb3B5aW5nIGJldHdlZW4gcmluZ3MgKi8KPiAtCQkJaWd0X3N1YnRlc3RfZigiJXMt JXMtJXMtd3JpdGUtcmVhZC1iY3MlcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5wcmVmaXgs IHN1ZmZpeCwgaC0+c3VmZml4KSB7Cj4gKwkJCWlndF9zdWJ0ZXN0X2ZsYWdzX2Yoc3VidGVzdF9m bGFncywgIiVzLSVzLSVzLXdyaXRlLXJlYWQtYmNzJXMlcyIsIHByZWZpeCwgbW9kZS0+bmFtZSwg cC0+cHJlZml4LCBzdWZmaXgsIGgtPnN1ZmZpeCkgewo+ICAJCQkJcC0+cmVxdWlyZSgpOwo+ICAJ CQkJYnVmZmVyc19jcmVhdGUoJmJ1ZmZlcnMsIG51bV9idWZmZXJzKTsKPiAgCQkJCXJ1bl93cmFw X2Z1bmMoJmJ1ZmZlcnMsCj4gIAkJCQkJICAgICAgZG9fd3JpdGVfcmVhZF9iY3MsCj4gIAkJCQkJ ICAgICAgcC0+Y29weSwgaC0+aGFuZyk7Cj4gIAkJCX0KPiAtCQkJaWd0X3N1YnRlc3RfZigiJXMt JXMtJXMtd3JpdGUtcmVhZC1yY3MlcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5wcmVmaXgs IHN1ZmZpeCwgaC0+c3VmZml4KSB7Cj4gKwkJCWlndF9zdWJ0ZXN0X2ZsYWdzX2Yoc3VidGVzdF9m bGFncywgIiVzLSVzLSVzLXdyaXRlLXJlYWQtcmNzJXMlcyIsIHByZWZpeCwgbW9kZS0+bmFtZSwg cC0+cHJlZml4LCBzdWZmaXgsIGgtPnN1ZmZpeCkgewo+ICAJCQkJcC0+cmVxdWlyZSgpOwo+ICAJ CQkJaWd0X3JlcXVpcmUocmVuZGVyY29weSk7Cj4gIAkJCQlidWZmZXJzX2NyZWF0ZSgmYnVmZmVy cywgbnVtX2J1ZmZlcnMpOwo+IEBAIC0xMzk5LDggKzE0MDIsOCBAQCBydW5fYmFzaWNfbW9kZXMo Y29uc3QgY2hhciAqcHJlZml4LAo+ICAJCQkJCSAgICAgIHAtPmNvcHksIGgtPmhhbmcpOwo+ICAJ CQl9Cj4gIAo+IC0JCQkvKiBhbmQgZmluYWxseSB0cnkgdG8gdHJpY2sgdGhlIGtlcm5lbCBpbnRv IGxvb3NpbmcgdGhlIHBlbmRpbmcgd3JpdGUgKi8KPiAtCQkJaWd0X3N1YnRlc3RfZigiJXMtJXMt JXMtZ3B1LXJlYWQtYWZ0ZXItd3JpdGUlcyVzIiwgcHJlZml4LCBtb2RlLT5uYW1lLCBwLT5wcmVm aXgsIHN1ZmZpeCwgaC0+c3VmZml4KSB7Cj4gKwkJCS8qIGFuZCBmaW5hbGx5IHRyeSB0byB0cmlj ayB0aGUga2VybmVsIGludG8gbG9zaW5nIHRoZSBwZW5kaW5nIHdyaXRlICovCj4gKwkJCWlndF9z dWJ0ZXN0X2ZsYWdzX2Yoc3VidGVzdF9mbGFncywgIiVzLSVzLSVzLWdwdS1yZWFkLWFmdGVyLXdy aXRlJXMlcyIsIHByZWZpeCwgbW9kZS0+bmFtZSwgcC0+cHJlZml4LCBzdWZmaXgsIGgtPnN1ZmZp eCkgewo+ICAJCQkJcC0+cmVxdWlyZSgpOwo+ICAJCQkJYnVmZmVyc19jcmVhdGUoJmJ1ZmZlcnMs IG51bV9idWZmZXJzKTsKPiAgCQkJCXJ1bl93cmFwX2Z1bmMoJmJ1ZmZlcnMsCj4gQEAgLTE0NTQs OSArMTQ1Nyw2IEBAIGlndF9tYWluCj4gIAo+ICAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwo+ ICAKPiAtCWlmIChzdHJzdHIoaWd0X3Rlc3RfbmFtZSgpLCAiYWxsIikpCj4gLQkJYWxsID0gdHJ1 ZTsKPiAtCj4gIAlpZ3RfZml4dHVyZSB7Cj4gIAkJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVS X0lOVEVMKTsKPiAgCQlpbnRlbF9kZXRlY3RfYW5kX2NsZWFyX21pc3NlZF9pbnRlcnJ1cHRzKGZk KTsKPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMgYi90ZXN0 cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwo+IGluZGV4IDY0Zjg4MGM2NjdhMy4uNjUxMzAz ZTlkMzkyIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCj4g KysrIGIvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMKPiBAQCAtNDcsOCArNDcsNyBA QCBJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCB0aGUgS2VybmVsJ3MgZnJvbnRidWZmZXIgdHJh Y2tpbmcgbWVjaGFuaXNtIGFuZCAiCj4gICAqIGNvbWJpbmF0aW9ucyB0aGF0IGFyZSBzb21ld2hh dCByZWR1bmRhbnQgYW5kIGRvbid0IGFkZCBtdWNoIHZhbHVlIHRvIHRoZQo+ICAgKiB0ZXN0LiBG b3IgZXhhbXBsZSwgc2luY2Ugd2UgYWxyZWFkeSBkbyB0aGUgb2Zmc2NyZWVuIHRlc3Rpbmcgd2l0 aCBhIHNpbmdsZQo+ICAgKiBwaXBlIGVuYWJsZWQsIHRoZXJlJ3Mgbm8gbXVjaCB2YWx1ZSBpbiBk b2luZyBpdCBhZ2FpbiB3aXRoIGR1YWwgcGlwZXMuIElmIHlvdQo+IC0gKiBzdGlsbCB3YW50IHRv IHRyeSB0aGVzZSByZWR1bmRhbnQgdGVzdHMsIHlvdSBuZWVkIHRvIHVzZSB0aGUgLS1zaG93LWhp ZGRlbgo+IC0gKiBvcHRpb24uCj4gKyAqIHN0aWxsIHdhbnQgdG8gdHJ5IHRoZXNlIHJlZHVuZGFu dCB0ZXN0cywgeW91IG5lZWQgdG8gdXNlIHRoZSAtLWFsbCBvcHRpb24uCj4gICAqCj4gICAqIFRo ZSBtb3N0IGltcG9ydGFudCBoaWRkZW4gdGhpbmcgaXMgdGhlIEZFQVRVUkVfTk9ORSBzZXQgb2Yg dGVzdHMuIFdoZW5ldmVyCj4gICAqIHlvdSBnZXQgYSBmYWlsdXJlIG9uIGFueSB0ZXN0LCBpdCBp cyBpbXBvcnRhbnQgdG8gY2hlY2sgd2hldGhlciB0aGUgc2FtZSB0ZXN0Cj4gQEAgLTEyNiw2ICsx MjUsOSBAQCBzdHJ1Y3QgdGVzdF9tb2RlIHsKPiAgCX0gZmxpcDsKPiAgCj4gIAllbnVtIGlndF9k cmF3X21ldGhvZCBtZXRob2Q7Cj4gKwo+ICsJLyogU3BlY2lmaWVzIHRoZSBzdWJ0ZXN0IGNhdGVn b3JpZXMgdGhpcyBzdWJ0ZXN0IGJlbG9uZ3MgdG8gKi8KPiArCXVuc2lnbmVkIGxvbmcgc3VidGVz dF9mbGFnczsKPiAgfTsKPiAgCj4gIGVudW0gY29sb3Igewo+IEBAIC0yNDEsNyArMjQzLDYgQEAg c3RydWN0IHsKPiAgCWJvb2wgZmJjX2NoZWNrX2xhc3RfYWN0aW9uOwo+ICAJYm9vbCBub19lZHA7 Cj4gIAlib29sIHNtYWxsX21vZGVzOwo+IC0JYm9vbCBzaG93X2hpZGRlbjsKPiAgCWludCBzdGVw Owo+ICAJaW50IG9ubHlfcGlwZXM7Cj4gIAlpbnQgc2hhcmVkX2ZiX3hfb2Zmc2V0Owo+IEBAIC0y NTMsNyArMjU0LDYgQEAgc3RydWN0IHsKPiAgCS5mYmNfY2hlY2tfbGFzdF9hY3Rpb24gPSB0cnVl LAo+ICAJLm5vX2VkcCA9IGZhbHNlLAo+ICAJLnNtYWxsX21vZGVzID0gZmFsc2UsCj4gLQkuc2hv d19oaWRkZW49IGZhbHNlLAo+ICAJLnN0ZXAgPSAwLAo+ICAJLm9ubHlfcGlwZXMgPSBQSVBFX0NP VU5ULAo+ICAJLnNoYXJlZF9mYl94X29mZnNldCA9IDUwMCwKPiBAQCAtMzA3NSw5ICszMDc1LDYg QEAgc3RhdGljIGludCBvcHRfaGFuZGxlcihpbnQgb3B0aW9uLCBpbnQgb3B0aW9uX2luZGV4LCB2 b2lkICpkYXRhKQo+ICAJY2FzZSAnbSc6Cj4gIAkJb3B0LnNtYWxsX21vZGVzID0gdHJ1ZTsKPiAg CQlicmVhazsKPiAtCWNhc2UgJ2knOgo+IC0JCW9wdC5zaG93X2hpZGRlbiA9IHRydWU7Cj4gLQkJ YnJlYWs7Cj4gIAljYXNlICd0JzoKPiAgCQlvcHQuc3RlcCsrOwo+ICAJCWJyZWFrOwo+IEBAIC0z MTEzLDcgKzMxMTAsNiBAQCBjb25zdCBjaGFyICpoZWxwX3N0ciA9Cj4gICIgIC0tbm8tZmJjLWFj dGlvbi1jaGVjayAgICAgICBEb24ndCBjaGVjayBmb3IgdGhlIEZCQyBsYXN0IGFjdGlvblxuIgo+ ICAiICAtLW5vLWVkcCAgICAgICAgICAgICAgICAgICAgRG9uJ3QgdXNlIGVEUCBtb25pdG9yc1xu Igo+ICAiICAtLXVzZS1zbWFsbC1tb2RlcyAgICAgICAgICAgVXNlIHNtYWxsZXIgcmVzb2x1dGlv bnMgZm9yIHRoZSBtb2Rlc1xuIgo+IC0iICAtLXNob3ctaGlkZGVuICAgICAgICAgICAgICAgU2hv dyBoaWRkZW4gc3VidGVzdHNcbiIKPiAgIiAgLS1zdGVwICAgICAgICAgICAgICAgICAgICAgIFN0 b3Agb24gZWFjaCBzdGVwIHNvIHlvdSBjYW4gY2hlY2sgdGhlIHNjcmVlblxuIgo+ICAiICAtLXNo YXJlZC1mYi14IG9mZnNldCAgICAgICAgVXNlICdvZmZzZXQnIGFzIHRoZSBYIG9mZnNldCBmb3Ig dGhlIHNoYXJlZCBGQlxuIgo+ICAiICAtLXNoYXJlZC1mYi15IG9mZnNldCAgICAgICAgVXNlICdv ZmZzZXQnIGFzIHRoZSBZIG9mZnNldCBmb3IgdGhlIHNoYXJlZCBGQlxuIgo+IEBAIC0zMjI3LDE4 ICszMjIzLDE5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpmbGlwX3N0cihlbnVtIGZsaXBfdHlwZSBm bGlwKQo+ICAJZm9yICh0LnBsYW5lID0gMDsgdC5wbGFuZSA8IFBMQU5FX0NPVU5UOyB0LnBsYW5l KyspIHsJCSAgIFwKPiAgCWZvciAodC5mYnMgPSAwOyB0LmZicyA8IEZCU19DT1VOVDsgdC5mYnMr KykgewkJCSAgIFwKPiAgCWZvciAodC5tZXRob2QgPSAwOyB0Lm1ldGhvZCA8IElHVF9EUkFXX01F VEhPRF9DT1VOVDsgdC5tZXRob2QrKykgeyBcCj4gKwkJdC5zdWJ0ZXN0X2ZsYWdzID0gU1VCVEVT VF9UWVBFX05PUk1BTDsJCQkgICBcCj4gIAkJaWYgKHQucGlwZXMgPT0gUElQRV9TSU5HTEUgJiYg dC5zY3JlZW4gPT0gU0NSRUVOX1NDTkQpCSAgIFwKPiAgCQkJY29udGludWU7CQkJCQkgICBcCj4g IAkJaWYgKHQuc2NyZWVuID09IFNDUkVFTl9PRkZTQ1JFRU4gJiYgdC5wbGFuZSAhPSBQTEFORV9Q UkkpICBcCj4gIAkJCWNvbnRpbnVlOwkJCQkJICAgXAo+IC0JCWlmICghb3B0LnNob3dfaGlkZGVu ICYmIHQucGlwZXMgPT0gUElQRV9EVUFMICYmCQkgICBcCj4gKwkJaWYgKHQucGlwZXMgPT0gUElQ RV9EVUFMICYmCQkJCSAgIFwKPiAgCQkgICAgdC5zY3JlZW4gPT0gU0NSRUVOX09GRlNDUkVFTikJ CQkgICBcCj4gLQkJCWNvbnRpbnVlOwkJCQkJICAgXAo+IC0JCWlmICghb3B0LnNob3dfaGlkZGVu ICYmIHQuZmVhdHVyZSA9PSBGRUFUVVJFX05PTkUpCSAgIFwKPiAtCQkJY29udGludWU7CQkJCQkg ICBcCj4gLQkJaWYgKCFvcHQuc2hvd19oaWRkZW4gJiYgdC5mYnMgPT0gRkJTX1NIQVJFRCAmJgkJ ICAgXAo+ICsJCQl0LnN1YnRlc3RfZmxhZ3MgPSBTVUJURVNUX1RZUEVfU0xPVzsJCSAgIFwKPiAr CQlpZiAodC5mZWF0dXJlID09IEZFQVRVUkVfTk9ORSkJCQkJICAgXAo+ICsJCQl0LnN1YnRlc3Rf ZmxhZ3MgPSBTVUJURVNUX1RZUEVfU0xPVzsJCSAgIFwKPiArCQlpZiAodC5mYnMgPT0gRkJTX1NI QVJFRCAmJgkJCQkgICBcCj4gIAkJICAgICh0LnBsYW5lID09IFBMQU5FX0NVUiB8fCB0LnBsYW5l ID09IFBMQU5FX1NQUikpCSAgIFwKPiAtCQkJY29udGludWU7Cj4gKwkJCXQuc3VidGVzdF9mbGFn cyA9IFNVQlRFU1RfVFlQRV9TTE9XOwo+ICAKPiAgCj4gICNkZWZpbmUgVEVTVF9NT0RFX0lURVJf RU5EIH0gfSB9IH0gfSB9Cj4gQEAgLTMyNTMsNyArMzI1MCw2IEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCj4gIAkJeyAibm8tZmJjLWFjdGlvbi1jaGVjayIsICAgICAgMCwgMCwg J2EnfSwKPiAgCQl7ICJuby1lZHAiLCAgICAgICAgICAgICAgICAgICAwLCAwLCAnZSd9LAo+ICAJ CXsgInVzZS1zbWFsbC1tb2RlcyIsICAgICAgICAgIDAsIDAsICdtJ30sCj4gLQkJeyAic2hvdy1o aWRkZW4iLCAgICAgICAgICAgICAgMCwgMCwgJ2knfSwKPiAgCQl7ICJzdGVwIiwgICAgICAgICAg ICAgICAgICAgICAwLCAwLCAndCd9LAo+ICAJCXsgInNoYXJlZC1mYi14IiwgICAgICAgICAgICAg IDEsIDAsICd4J30sCj4gIAkJeyAic2hhcmVkLWZiLXkiLCAgICAgICAgICAgICAgMSwgMCwgJ3kn fSwKPiBAQCAtMzI2OSw4ICszMjY1LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKPiAgCQlzZXR1cF9lbnZpcm9ubWVudCgpOwo+ICAKPiAgCWZvciAodC5mZWF0dXJlID0gMDsg dC5mZWF0dXJlIDwgRkVBVFVSRV9DT1VOVDsgdC5mZWF0dXJlKyspIHsKPiAtCQlpZiAoIW9wdC5z aG93X2hpZGRlbiAmJiB0LmZlYXR1cmUgPT0gRkVBVFVSRV9OT05FKQo+IC0JCQljb250aW51ZTsK PiArCQl0LnN1YnRlc3RfZmxhZ3MgPSBTVUJURVNUX1RZUEVfTk9STUFMOwo+ICsJCWlmICh0LmZl YXR1cmUgPT0gRkVBVFVSRV9OT05FKQo+ICsJCQl0LnN1YnRlc3RfZmxhZ3MgPSBTVUJURVNUX1RZ UEVfU0xPVzsKPiAgCQlmb3IgKHQucGlwZXMgPSAwOyB0LnBpcGVzIDwgUElQRV9DT1VOVDsgdC5w aXBlcysrKSB7Cj4gIAkJCXQuc2NyZWVuID0gU0NSRUVOX1BSSU07Cj4gIAkJCXQucGxhbmUgPSBQ TEFORV9QUkk7Cj4gQEAgLTMyODAsMzggKzMyNzcsNDMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKPiAgCQkJdC5mbGlwID0gLTE7Cj4gIAkJCXQubWV0aG9kID0gLTE7Cj4gIAo+ IC0JCQlpZ3Rfc3VidGVzdF9mKCIlcy0lcy1ydGUiLAo+IC0JCQkJICAgICAgZmVhdHVyZV9zdHIo dC5mZWF0dXJlKSwKPiAtCQkJCSAgICAgIHBpcGVzX3N0cih0LnBpcGVzKSkKPiArCQkJaWd0X3N1 YnRlc3RfZmxhZ3NfZih0LnN1YnRlc3RfZmxhZ3MsCj4gKwkJCQkJICAgICIlcy0lcy1ydGUiLAo+ ICsJCQkJCSAgICBmZWF0dXJlX3N0cih0LmZlYXR1cmUpLAo+ICsJCQkJCSAgICBwaXBlc19zdHIo dC5waXBlcykpCj4gIAkJCQlydGVfc3VidGVzdCgmdCk7Cj4gIAkJfQo+ICAJfQo+ICAKPiAgCVRF U1RfTU9ERV9JVEVSX0JFR0lOKHQpCj4gLQkJaWd0X3N1YnRlc3RfZigiJXMtJXMtJXMtJXMtJXMt ZHJhdy0lcyIsCj4gLQkJCSAgICAgIGZlYXR1cmVfc3RyKHQuZmVhdHVyZSksCj4gLQkJCSAgICAg IHBpcGVzX3N0cih0LnBpcGVzKSwKPiAtCQkJICAgICAgc2NyZWVuX3N0cih0LnNjcmVlbiksCj4g LQkJCSAgICAgIHBsYW5lX3N0cih0LnBsYW5lKSwKPiAtCQkJICAgICAgZmJzX3N0cih0LmZicyks Cj4gLQkJCSAgICAgIGlndF9kcmF3X2dldF9tZXRob2RfbmFtZSh0Lm1ldGhvZCkpCj4gKwkJaWd0 X3N1YnRlc3RfZmxhZ3NfZih0LnN1YnRlc3RfZmxhZ3MsCj4gKwkJCQkgICAgIiVzLSVzLSVzLSVz LSVzLWRyYXctJXMiLAo+ICsJCQkJICAgIGZlYXR1cmVfc3RyKHQuZmVhdHVyZSksCj4gKwkJCQkg ICAgcGlwZXNfc3RyKHQucGlwZXMpLAo+ICsJCQkJICAgIHNjcmVlbl9zdHIodC5zY3JlZW4pLAo+ ICsJCQkJICAgIHBsYW5lX3N0cih0LnBsYW5lKSwKPiArCQkJCSAgICBmYnNfc3RyKHQuZmJzKSwK PiArCQkJCSAgICBpZ3RfZHJhd19nZXRfbWV0aG9kX25hbWUodC5tZXRob2QpKQo+ICAJCQlkcmF3 X3N1YnRlc3QoJnQpOwo+ICAJVEVTVF9NT0RFX0lURVJfRU5ECj4gIAo+ICAJVEVTVF9NT0RFX0lU RVJfQkVHSU4odCkKPiAgCQlpZiAodC5wbGFuZSAhPSBQTEFORV9QUkkgfHwKPiAtCQkgICAgdC5z Y3JlZW4gPT0gU0NSRUVOX09GRlNDUkVFTiB8fAo+IC0JCSAgICAoIW9wdC5zaG93X2hpZGRlbiAm JiB0Lm1ldGhvZCAhPSBJR1RfRFJBV19CTFQpKQo+ICsJCSAgICB0LnNjcmVlbiA9PSBTQ1JFRU5f T0ZGU0NSRUVOKQo+ICAJCQljb250aW51ZTsKPiAgCj4gKwkJaWYgKHQubWV0aG9kICE9IElHVF9E UkFXX0JMVCkKPiArCQkJdC5zdWJ0ZXN0X2ZsYWdzID0gU1VCVEVTVF9UWVBFX1NMT1c7Cj4gKwo+ ICAJCWZvciAodC5mbGlwID0gMDsgdC5mbGlwIDwgRkxJUF9DT1VOVDsgdC5mbGlwKyspCj4gLQkJ CWlndF9zdWJ0ZXN0X2YoIiVzLSVzLSVzLSVzLSVzZmxpcC0lcyIsCj4gLQkJCQkgICAgICBmZWF0 dXJlX3N0cih0LmZlYXR1cmUpLAo+IC0JCQkJICAgICAgcGlwZXNfc3RyKHQucGlwZXMpLAo+IC0J CQkJICAgICAgc2NyZWVuX3N0cih0LnNjcmVlbiksCj4gLQkJCQkgICAgICBmYnNfc3RyKHQuZmJz KSwKPiAtCQkJCSAgICAgIGZsaXBfc3RyKHQuZmxpcCksCj4gLQkJCQkgICAgICBpZ3RfZHJhd19n ZXRfbWV0aG9kX25hbWUodC5tZXRob2QpKQo+ICsJCQlpZ3Rfc3VidGVzdF9mbGFnc19mKHQuc3Vi dGVzdF9mbGFncywKPiArCQkJCQkgICAgIiVzLSVzLSVzLSVzLSVzZmxpcC0lcyIsCj4gKwkJCQkJ ICAgIGZlYXR1cmVfc3RyKHQuZmVhdHVyZSksCj4gKwkJCQkJICAgIHBpcGVzX3N0cih0LnBpcGVz KSwKPiArCQkJCQkgICAgc2NyZWVuX3N0cih0LnNjcmVlbiksCj4gKwkJCQkJICAgIGZic19zdHIo dC5mYnMpLAo+ICsJCQkJCSAgICBmbGlwX3N0cih0LmZsaXApLAo+ICsJCQkJCSAgICBpZ3RfZHJh d19nZXRfbWV0aG9kX25hbWUodC5tZXRob2QpKQo+ICAJCQkJZmxpcF9zdWJ0ZXN0KCZ0KTsKPiAg CVRFU1RfTU9ERV9JVEVSX0VORAo+ICAKPiBAQCAtMzMyMiwxMCArMzMyNCwxMSBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCSAgICAodC5mZWF0dXJlICYgRkVBVFVSRV9G QkMpID09IDApCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZ3Rfc3VidGVzdF9mKCIlcy0lcy0l cy1mbGlwdHJhY2siLAo+IC0JCQkgICAgICBmZWF0dXJlX3N0cih0LmZlYXR1cmUpLAo+IC0JCQkg ICAgICBwaXBlc19zdHIodC5waXBlcyksCj4gLQkJCSAgICAgIGZic19zdHIodC5mYnMpKQo+ICsJ CWlndF9zdWJ0ZXN0X2ZsYWdzX2YodC5zdWJ0ZXN0X2ZsYWdzLAo+ICsJCQkJICAgICIlcy0lcy0l cy1mbGlwdHJhY2siLAo+ICsJCQkJICAgIGZlYXR1cmVfc3RyKHQuZmVhdHVyZSksCj4gKwkJCQkg ICAgcGlwZXNfc3RyKHQucGlwZXMpLAo+ICsJCQkJICAgIGZic19zdHIodC5mYnMpKQo+ICAJCQlm bGlwdHJhY2tfc3VidGVzdCgmdCwgRkxJUF9QQUdFRkxJUCk7Cj4gIAlURVNUX01PREVfSVRFUl9F TkQKPiAgCj4gQEAgLTMzMzUsMjAgKzMzMzgsMjIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKPiAgCQkgICAgdC5wbGFuZSA9PSBQTEFORV9QUkkpCj4gIAkJCWNvbnRpbnVlOwo+ ICAKPiAtCQlpZ3Rfc3VidGVzdF9mKCIlcy0lcy0lcy0lcy0lcy1tb3ZlIiwKPiAtCQkJICAgICAg ZmVhdHVyZV9zdHIodC5mZWF0dXJlKSwKPiAtCQkJICAgICAgcGlwZXNfc3RyKHQucGlwZXMpLAo+ IC0JCQkgICAgICBzY3JlZW5fc3RyKHQuc2NyZWVuKSwKPiAtCQkJICAgICAgcGxhbmVfc3RyKHQu cGxhbmUpLAo+IC0JCQkgICAgICBmYnNfc3RyKHQuZmJzKSkKPiArCQlpZ3Rfc3VidGVzdF9mbGFn c19mKHQuc3VidGVzdF9mbGFncywKPiArCQkJCSAgICAiJXMtJXMtJXMtJXMtJXMtbW92ZSIsCj4g KwkJCQkgICAgZmVhdHVyZV9zdHIodC5mZWF0dXJlKSwKPiArCQkJCSAgICBwaXBlc19zdHIodC5w aXBlcyksCj4gKwkJCQkgICAgc2NyZWVuX3N0cih0LnNjcmVlbiksCj4gKwkJCQkgICAgcGxhbmVf c3RyKHQucGxhbmUpLAo+ICsJCQkJICAgIGZic19zdHIodC5mYnMpKQo+ICAJCQltb3ZlX3N1YnRl c3QoJnQpOwo+ICAKPiAtCQlpZ3Rfc3VidGVzdF9mKCIlcy0lcy0lcy0lcy0lcy1vbm9mZiIsCj4g LQkJCSAgICAgIGZlYXR1cmVfc3RyKHQuZmVhdHVyZSksCj4gLQkJCSAgICAgIHBpcGVzX3N0cih0 LnBpcGVzKSwKPiAtCQkJICAgICAgc2NyZWVuX3N0cih0LnNjcmVlbiksCj4gLQkJCSAgICAgIHBs YW5lX3N0cih0LnBsYW5lKSwKPiAtCQkJICAgICAgZmJzX3N0cih0LmZicykpCj4gKwkJaWd0X3N1 YnRlc3RfZmxhZ3NfZih0LnN1YnRlc3RfZmxhZ3MsCj4gKwkJCQkgICAgIiVzLSVzLSVzLSVzLSVz LW9ub2ZmIiwKPiArCQkJCSAgICBmZWF0dXJlX3N0cih0LmZlYXR1cmUpLAo+ICsJCQkJICAgIHBp cGVzX3N0cih0LnBpcGVzKSwKPiArCQkJCSAgICBzY3JlZW5fc3RyKHQuc2NyZWVuKSwKPiArCQkJ CSAgICBwbGFuZV9zdHIodC5wbGFuZSksCj4gKwkJCQkgICAgZmJzX3N0cih0LmZicykpCj4gIAkJ CW9ub2ZmX3N1YnRlc3QoJnQpOwo+ICAJVEVTVF9NT0RFX0lURVJfRU5ECj4gIAo+IEBAIC0zMzU4 LDI3ICszMzYzLDMxIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJICAg IHQucGxhbmUgIT0gUExBTkVfU1BSKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaWd0X3N1YnRl c3RfZigiJXMtJXMtJXMtJXMtJXMtZnVsbHNjcmVlbiIsCj4gLQkJCSAgICAgIGZlYXR1cmVfc3Ry KHQuZmVhdHVyZSksCj4gLQkJCSAgICAgIHBpcGVzX3N0cih0LnBpcGVzKSwKPiAtCQkJICAgICAg c2NyZWVuX3N0cih0LnNjcmVlbiksCj4gLQkJCSAgICAgIHBsYW5lX3N0cih0LnBsYW5lKSwKPiAt CQkJICAgICAgZmJzX3N0cih0LmZicykpCj4gKwkJaWd0X3N1YnRlc3RfZmxhZ3NfZih0LnN1YnRl c3RfZmxhZ3MsCj4gKwkJCQkgICAgIiVzLSVzLSVzLSVzLSVzLWZ1bGxzY3JlZW4iLAo+ICsJCQkJ ICAgIGZlYXR1cmVfc3RyKHQuZmVhdHVyZSksCj4gKwkJCQkgICAgcGlwZXNfc3RyKHQucGlwZXMp LAo+ICsJCQkJICAgIHNjcmVlbl9zdHIodC5zY3JlZW4pLAo+ICsJCQkJICAgIHBsYW5lX3N0cih0 LnBsYW5lKSwKPiArCQkJCSAgICBmYnNfc3RyKHQuZmJzKSkKPiAgCQkJZnVsbHNjcmVlbl9wbGFu ZV9zdWJ0ZXN0KCZ0KTsKPiAgCVRFU1RfTU9ERV9JVEVSX0VORAo+ICAKPiAgCVRFU1RfTU9ERV9J VEVSX0JFR0lOKHQpCj4gIAkJaWYgKHQuc2NyZWVuICE9IFNDUkVFTl9QUklNIHx8Cj4gLQkJICAg IHQubWV0aG9kICE9IElHVF9EUkFXX0JMVCB8fAo+IC0JCSAgICAoIW9wdC5zaG93X2hpZGRlbiAm JiB0LnBsYW5lICE9IFBMQU5FX1BSSSkgfHwKPiAtCQkgICAgKCFvcHQuc2hvd19oaWRkZW4gJiYg dC5mYnMgIT0gRkJTX0lORElWSURVQUwpKQo+ICsJCSAgICB0Lm1ldGhvZCAhPSBJR1RfRFJBV19C TFQpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZ3Rfc3VidGVzdF9mKCIlcy0lcy0lcy0lcy1t dWx0aWRyYXciLAo+IC0JCQkgICAgICBmZWF0dXJlX3N0cih0LmZlYXR1cmUpLAo+IC0JCQkgICAg ICBwaXBlc19zdHIodC5waXBlcyksCj4gLQkJCSAgICAgIHBsYW5lX3N0cih0LnBsYW5lKSwKPiAt CQkJICAgICAgZmJzX3N0cih0LmZicykpCj4gKwkJaWYgKHQucGxhbmUgIT0gUExBTkVfUFJJIHx8 Cj4gKwkJICAgIHQuZmJzICE9IEZCU19JTkRJVklEVUFMKQo+ICsJCQl0LnN1YnRlc3RfZmxhZ3Mg PSBTVUJURVNUX1RZUEVfU0xPVzsKPiArCj4gKwkJaWd0X3N1YnRlc3RfZmxhZ3NfZih0LnN1YnRl c3RfZmxhZ3MsCj4gKwkJCQkgICAgIiVzLSVzLSVzLSVzLW11bHRpZHJhdyIsCj4gKwkJCQkgICAg ZmVhdHVyZV9zdHIodC5mZWF0dXJlKSwKPiArCQkJCSAgICBwaXBlc19zdHIodC5waXBlcyksCj4g KwkJCQkgICAgcGxhbmVfc3RyKHQucGxhbmUpLAo+ICsJCQkJICAgIGZic19zdHIodC5mYnMpKQo+ ICAJCQltdWx0aWRyYXdfc3VidGVzdCgmdCk7Cj4gIAlURVNUX01PREVfSVRFUl9FTkQKPiAgCj4g QEAgLTMzOTAsNyArMzM5OSw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4g IAkJICAgIHQubWV0aG9kICE9IElHVF9EUkFXX01NQVBfR1RUKQo+ICAJCQljb250aW51ZTsKPiAg Cj4gLQkJaWd0X3N1YnRlc3RfZigiJXMtZmFyZnJvbWZlbmNlIiwgZmVhdHVyZV9zdHIodC5mZWF0 dXJlKSkKPiArCQlpZ3Rfc3VidGVzdF9mbGFnc19mKHQuc3VidGVzdF9mbGFncywKPiArCQkJCSAg ICAiJXMtZmFyZnJvbWZlbmNlIiwKPiArCQkJCSAgICBmZWF0dXJlX3N0cih0LmZlYXR1cmUpKQo+ ICAJCQlmYXJmcm9tZmVuY2Vfc3VidGVzdCgmdCk7Cj4gIAlURVNUX01PREVfSVRFUl9FTkQKPiAg Cj4gQEAgLTM0MDYsMTAgKzM0MTcsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKPiAgCQkJaWYgKHQuZm9ybWF0ID09IEZPUk1BVF9ERUZBVUxUKQo+ICAJCQkJY29udGludWU7 Cj4gIAo+IC0JCQlpZ3Rfc3VidGVzdF9mKCIlcy0lcy1kcmF3LSVzIiwKPiAtCQkJCSAgICAgIGZl YXR1cmVfc3RyKHQuZmVhdHVyZSksCj4gLQkJCQkgICAgICBmb3JtYXRfc3RyKHQuZm9ybWF0KSwK PiAtCQkJCSAgICAgIGlndF9kcmF3X2dldF9tZXRob2RfbmFtZSh0Lm1ldGhvZCkpCj4gKwkJCWln dF9zdWJ0ZXN0X2ZsYWdzX2YodC5zdWJ0ZXN0X2ZsYWdzLAo+ICsJCQkJCSAgICAiJXMtJXMtZHJh dy0lcyIsCj4gKwkJCQkJICAgIGZlYXR1cmVfc3RyKHQuZmVhdHVyZSksCj4gKwkJCQkJICAgIGZv cm1hdF9zdHIodC5mb3JtYXQpLAo+ICsJCQkJCSAgICBpZ3RfZHJhd19nZXRfbWV0aG9kX25hbWUo dC5tZXRob2QpKQo+ICAJCQkJZm9ybWF0X2RyYXdfc3VidGVzdCgmdCk7Cj4gIAkJfQo+ICAJVEVT VF9NT0RFX0lURVJfRU5ECj4gQEAgLTM0MjAsOSArMzQzMiwxMSBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQo+ICAJCSAgICB0LnBsYW5lICE9IFBMQU5FX1BSSSB8fAo+ICAJCSAg ICB0Lm1ldGhvZCAhPSBJR1RfRFJBV19NTUFQX0NQVSkKPiAgCQkJY29udGludWU7Cj4gLQkJaWd0 X3N1YnRlc3RfZigiJXMtJXMtc2NhbGVkcHJpbWFyeSIsCj4gLQkJCSAgICAgIGZlYXR1cmVfc3Ry KHQuZmVhdHVyZSksCj4gLQkJCSAgICAgIGZic19zdHIodC5mYnMpKQo+ICsKPiArCQlpZ3Rfc3Vi dGVzdF9mbGFnc19mKHQuc3VidGVzdF9mbGFncywKPiArCQkJCSAgICAiJXMtJXMtc2NhbGVkcHJp bWFyeSIsCj4gKwkJCQkgICAgZmVhdHVyZV9zdHIodC5mZWF0dXJlKSwKPiArCQkJCSAgICBmYnNf c3RyKHQuZmJzKSkKPiAgCQkJc2NhbGVkcHJpbWFyeV9zdWJ0ZXN0KCZ0KTsKPiAgCVRFU1RfTU9E RV9JVEVSX0VORAo+ICAKPiBAQCAtMzQzNCwyNSArMzQ0OCwzNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQo+ICAJCSAgICB0Lm1ldGhvZCAhPSBJR1RfRFJBV19NTUFQX0NQVSkK PiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWlndF9zdWJ0ZXN0X2YoIiVzLW1vZGVzZXRmcm9tYnVz eSIsIGZlYXR1cmVfc3RyKHQuZmVhdHVyZSkpCj4gKwkJaWd0X3N1YnRlc3RfZmxhZ3NfZih0LnN1 YnRlc3RfZmxhZ3MsCj4gKwkJCQkgICAgIiVzLW1vZGVzZXRmcm9tYnVzeSIsCj4gKwkJCQkgICAg ZmVhdHVyZV9zdHIodC5mZWF0dXJlKSkKPiAgCQkJbW9kZXNldGZyb21idXN5X3N1YnRlc3QoJnQp Owo+ICAKPiAgCQlpZiAodC5mZWF0dXJlICYgRkVBVFVSRV9GQkMpIHsKPiAtCQkJaWd0X3N1YnRl c3RfZigiJXMtYmFkc3RyaWRlIiwgZmVhdHVyZV9zdHIodC5mZWF0dXJlKSkKPiArCQkJaWd0X3N1 YnRlc3RfZmxhZ3NfZih0LnN1YnRlc3RfZmxhZ3MsCj4gKwkJCQkJICAgICIlcy1iYWRzdHJpZGUi LAo+ICsJCQkJCSAgICBmZWF0dXJlX3N0cih0LmZlYXR1cmUpKQo+ICAJCQkJYmFkc3RyaWRlX3N1 YnRlc3QoJnQpOwo+ICAKPiAtCQkJaWd0X3N1YnRlc3RfZigiJXMtc3RyaWRlY2hhbmdlIiwgZmVh dHVyZV9zdHIodC5mZWF0dXJlKSkKPiArCQkJaWd0X3N1YnRlc3RfZmxhZ3NfZih0LnN1YnRlc3Rf ZmxhZ3MsCj4gKwkJCQkJICAgICIlcy1zdHJpZGVjaGFuZ2UiLAo+ICsJCQkJCSAgICBmZWF0dXJl X3N0cih0LmZlYXR1cmUpKQo+ICAJCQkJc3RyaWRlY2hhbmdlX3N1YnRlc3QoJnQpOwo+ICAKPiAt CQkJaWd0X3N1YnRlc3RfZigiJXMtdGlsaW5nY2hhbmdlIiwgZmVhdHVyZV9zdHIodC5mZWF0dXJl KSkKPiArCQkJaWd0X3N1YnRlc3RfZmxhZ3NfZih0LnN1YnRlc3RfZmxhZ3MsCj4gKwkJCQkJICAg ICIlcy10aWxpbmdjaGFuZ2UiLAo+ICsJCQkJCSAgICBmZWF0dXJlX3N0cih0LmZlYXR1cmUpKQo+ ICAJCQkJdGlsaW5nY2hhbmdlX3N1YnRlc3QoJnQpOwo+ICAJCX0KPiAgCj4gIAkJaWYgKHQuZmVh dHVyZSAmIEZFQVRVUkVfUFNSKQo+IC0JCQlpZ3Rfc3VidGVzdF9mKCIlcy1zbG93ZHJhdyIsIGZl YXR1cmVfc3RyKHQuZmVhdHVyZSkpCj4gKwkJCWlndF9zdWJ0ZXN0X2ZsYWdzX2YodC5zdWJ0ZXN0 X2ZsYWdzLAo+ICsJCQkJCSAgICAiJXMtc2xvd2RyYXciLAo+ICsJCQkJCSAgICBmZWF0dXJlX3N0 cih0LmZlYXR1cmUpKQo+ICAJCQkJc2xvd19kcmF3X3N1YnRlc3QoJnQpOwo+ICAKPiAtCQlpZ3Rf c3VidGVzdF9mKCIlcy1zdXNwZW5kIiwgZmVhdHVyZV9zdHIodC5mZWF0dXJlKSkKPiArCQlpZ3Rf c3VidGVzdF9mbGFnc19mKHQuc3VidGVzdF9mbGFncywKPiArCQkJCSAgICAiJXMtc3VzcGVuZCIs Cj4gKwkJCQkgICAgZmVhdHVyZV9zdHIodC5mZWF0dXJlKSkKPiAgCQkJc3VzcGVuZF9zdWJ0ZXN0 KCZ0KTsKPiAgCVRFU1RfTU9ERV9JVEVSX0VORAo+ICAKPiAtLSAKPiAyLjcuMAo+IAo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=