From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3703689487 for ; Mon, 14 Jun 2021 17:28:24 +0000 (UTC) Date: Mon, 14 Jun 2021 19:28:19 +0200 From: Zbigniew =?utf-8?Q?Kempczy=C5=84ski?= Message-ID: <20210614172819.GF20637@zkempczy-mobl2> References: <20210614163704.365989-1-jason@jlekstrand.net> <20210614163704.365989-24-jason@jlekstrand.net> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210614163704.365989-24-jason@jlekstrand.net> Subject: Re: [igt-dev] [PATCH i-g-t 23/77] tests/i915/gem_sync: Convert to intel_ctx_t List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Jason Ekstrand Cc: igt-dev@lists.freedesktop.org List-ID: T24gTW9uLCBKdW4gMTQsIDIwMjEgYXQgMTE6MzY6MzhBTSAtMDUwMCwgSmFzb24gRWtzdHJhbmQg d3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogSmFzb24gRWtzdHJhbmQgPGphc29uQGpsZWtzdHJhbmQu bmV0Pgo+IC0tLQo+ICB0ZXN0cy9pOTE1L2dlbV9zeW5jLmMgfCAxNTkgKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA5MCBpbnNlcnRp b25zKCspLCA2OSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1f c3luYy5jIGIvdGVzdHMvaTkxNS9nZW1fc3luYy5jCj4gaW5kZXggYWU0MWI2YmIwLi4yNmU5ZTBh MTUgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fc3luYy5jCj4gKysrIGIvdGVzdHMvaTkx NS9nZW1fc3luYy5jCj4gQEAgLTk3LDM4ICs5NywzMyBAQCBmaWx0ZXJfZW5naW5lc19jYW5fc3Rv cmVfZHdvcmQoaW50IGZkLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmllZCkKPiAgCWllZC0+ bmVuZ2luZXMgPSBjb3VudDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBpbnRlbF9lbmdpbmVf ZGF0YSBsaXN0X3N0b3JlX2VuZ2luZXMoaW50IGZkLCB1bnNpZ25lZCByaW5nKQo+ICtzdGF0aWMg c3RydWN0IGludGVsX2VuZ2luZV9kYXRhCj4gK2xpc3RfZW5naW5lcyhpbnQgZmQsIGNvbnN0IGlu dGVsX2N0eF90ICpjdHgsIHVuc2lnbmVkIHJpbmcpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSBpZWQgPSB7IH07Cj4gIAo+ICAJaWYgKHJpbmcgPT0gQUxMX0VOR0lORVMpIHsKPiAt CQlpZWQgPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZkLCAwKTsKPiAtCQlmaWx0ZXJfZW5naW5l c19jYW5fc3RvcmVfZHdvcmQoZmQsICZpZWQpOwo+ICsJCWllZCA9IGludGVsX2VuZ2luZV9saXN0 X2Zvcl9jdHhfY2ZnKGZkLCAmY3R4LT5jZmcpOwo+ICsJfSBlbHNlIGlmIChjdHgtPmNmZy5udW1f ZW5naW5lcykgewo+ICsJCWlndF9hc3NlcnQocmluZyA8IGN0eC0+Y2ZnLm51bV9lbmdpbmVzKTsK PiArCQlpZWQuZW5naW5lc1tpZWQubmVuZ2luZXNdLmZsYWdzID0gcmluZzsKPiArCQlzdHJjcHko aWVkLmVuZ2luZXNbaWVkLm5lbmdpbmVzXS5uYW1lLCAiICIpOwo+ICsJCWllZC5uZW5naW5lcysr Owo+ICAJfSBlbHNlIHsKPiAtCQlpZiAoZ2VtX2hhc19yaW5nKGZkLCByaW5nKSAmJiBnZW1fY2Fu X3N0b3JlX2R3b3JkKGZkLCByaW5nKSkgewo+IC0JCQlpZWQuZW5naW5lc1tpZWQubmVuZ2luZXNd LmZsYWdzID0gcmluZzsKPiAtCQkJc3RyY3B5KGllZC5lbmdpbmVzW2llZC5uZW5naW5lc10ubmFt ZSwgIiAiKTsKPiAtCQkJaWVkLm5lbmdpbmVzKys7Cj4gLQkJfQo+ICsJCWlndF9hc3NlcnQoZ2Vt X2hhc19yaW5nKGZkLCByaW5nKSk7Cj4gKwkJaWVkLmVuZ2luZXNbaWVkLm5lbmdpbmVzXS5mbGFn cyA9IHJpbmc7Cj4gKwkJc3RyY3B5KGllZC5lbmdpbmVzW2llZC5uZW5naW5lc10ubmFtZSwgIiAi KTsKPiArCQlpZWQubmVuZ2luZXMrKzsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gaWVkOwo+ICB9CgpU YWtlIGNvbW1lbnQgZnJvbSBwcmV2aW91cyBzZXJpZXMgLSBpZ25vcmUgb3IgYXBwbHkgbXkgc3Vn Z2VzdGlvbiwgCnJlZ2FyZGxlc3MgdGhhdDoKClJldmlld2VkLWJ5OiBaYmlnbmlldyBLZW1wY3p5 xYRza2kgPHpiaWduaWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KCi0tClpiaWduaWV3Cgo+ICAK PiAtc3RhdGljIHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBsaXN0X2VuZ2luZXMoaW50IGZkLCB1 bnNpZ25lZCByaW5nKQo+ICtzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9kYXRhCj4gK2xpc3Rf c3RvcmVfZW5naW5lcyhpbnQgZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsIHVuc2lnbmVkIHJp bmcpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpZWQgPSB7IH07Cj4gLQo+IC0J aWYgKHJpbmcgPT0gQUxMX0VOR0lORVMpIHsKPiAtCQlpZWQgPSBpbnRlbF9pbml0X2VuZ2luZV9s aXN0KGZkLCAwKTsKPiAtCX0gZWxzZSB7Cj4gLQkJaWYgKGdlbV9oYXNfcmluZyhmZCwgcmluZykp IHsKPiAtCQkJaWVkLmVuZ2luZXNbaWVkLm5lbmdpbmVzXS5mbGFncyA9IHJpbmc7Cj4gLQkJCXN0 cmNweShpZWQuZW5naW5lc1tpZWQubmVuZ2luZXNdLm5hbWUsICIgIik7Cj4gLQkJCWllZC5uZW5n aW5lcysrOwo+IC0JCX0KPiAtCX0KPiAtCj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaWVk ID0gbGlzdF9lbmdpbmVzKGZkLCBjdHgsIHJpbmcpOwo+ICsJZmlsdGVyX2VuZ2luZXNfY2FuX3N0 b3JlX2R3b3JkKGZkLCAmaWVkKTsKPiAgCXJldHVybiBpZWQ7Cj4gIH0KPiAgCj4gQEAgLTE1MCwx MSArMTQ1LDEyIEBAIHN0YXRpYyB2b2lkIHhjaGdfZW5naW5lKHZvaWQgKmFycmF5LCB1bnNpZ25l ZCBpLCB1bnNpZ25lZCBqKQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1zeW5jX3JpbmcoaW50 IGZkLCB1bnNpZ25lZCByaW5nLCBpbnQgbnVtX2NoaWxkcmVuLCBpbnQgdGltZW91dCkKPiArc3lu Y19yaW5nKGludCBmZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKPiArCSAgdW5zaWduZWQgcmlu ZywgaW50IG51bV9jaGlsZHJlbiwgaW50IHRpbWVvdXQpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9l bmdpbmVfZGF0YSBpZWQ7Cj4gIAo+IC0JaWVkID0gbGlzdF9lbmdpbmVzKGZkLCByaW5nKTsKPiAr CWllZCA9IGxpc3RfZW5naW5lcyhmZCwgY3R4LCByaW5nKTsKPiAgCWlndF9yZXF1aXJlKGllZC5u ZW5naW5lcyk7Cj4gIAludW1fY2hpbGRyZW4gKj0gaWVkLm5lbmdpbmVzOwo+ICAKPiBAQCAtMTc0 LDYgKzE3MCw3IEBAIHN5bmNfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCBudW1fY2hp bGRyZW4sIGludCB0aW1lb3V0KQo+ICAJCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3Bv aW50ZXIoJm9iamVjdCk7Cj4gIAkJZXhlY2J1Zi5idWZmZXJfY291bnQgPSAxOwo+ICAJCWV4ZWNi dWYuZmxhZ3MgPSBpZWRfZmxhZ3MoJmllZCwgY2hpbGQpOwo+ICsJCWV4ZWNidWYucnN2ZDEgPSBj dHgtPmlkOwo+ICAJCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7Cj4gIAkJZ2VtX3N5bmMoZmQs IG9iamVjdC5oYW5kbGUpOwo+ICAKPiBAQCAtMTk2LDcgKzE5Myw4IEBAIHN5bmNfcmluZyhpbnQg ZmQsIHVuc2lnbmVkIHJpbmcsIGludCBudW1fY2hpbGRyZW4sIGludCB0aW1lb3V0KQo+ICB9Cj4g IAo+ICBzdGF0aWMgdm9pZAo+IC1pZGxlX3JpbmcoaW50IGZkLCB1bnNpZ25lZCBpbnQgcmluZywg aW50IG51bV9jaGlsZHJlbiwgaW50IHRpbWVvdXQpCj4gK2lkbGVfcmluZyhpbnQgZmQsIGNvbnN0 IGludGVsX2N0eF90ICpjdHgsIHVuc2lnbmVkIGludCByaW5nLAo+ICsJICBpbnQgbnVtX2NoaWxk cmVuLCBpbnQgdGltZW91dCkKPiAgewo+ICAJY29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hf QlVGRkVSX0VORDsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iamVjdDsK PiBAQCAtMjE0LDYgKzIxMiw3IEBAIGlkbGVfcmluZyhpbnQgZmQsIHVuc2lnbmVkIGludCByaW5n LCBpbnQgbnVtX2NoaWxkcmVuLCBpbnQgdGltZW91dCkKPiAgCWV4ZWNidWYuYnVmZmVyc19wdHIg PSB0b191c2VyX3BvaW50ZXIoJm9iamVjdCk7Cj4gIAlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDE7 Cj4gIAlleGVjYnVmLmZsYWdzID0gcmluZzsKPiArCWV4ZWNidWYucnN2ZDEgPSBjdHgtPmlkOwo+ ICAJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKPiAgCWdlbV9zeW5jKGZkLCBvYmplY3QuaGFu ZGxlKTsKPiAgCj4gQEAgLTIzNSwxMSArMjM0LDEyIEBAIGlkbGVfcmluZyhpbnQgZmQsIHVuc2ln bmVkIGludCByaW5nLCBpbnQgbnVtX2NoaWxkcmVuLCBpbnQgdGltZW91dCkKPiAgfQo+ICAKPiAg c3RhdGljIHZvaWQKPiAtd2FrZXVwX3JpbmcoaW50IGZkLCB1bnNpZ25lZCByaW5nLCBpbnQgdGlt ZW91dCwgaW50IHdsZW4pCj4gK3dha2V1cF9yaW5nKGludCBmZCwgY29uc3QgaW50ZWxfY3R4X3Qg KmN0eCwgdW5zaWduZWQgcmluZywKPiArCSAgICBpbnQgdGltZW91dCwgaW50IHdsZW4pCj4gIHsK PiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpZWQ7Cj4gIAo+IC0JaWVkID0gbGlzdF9zdG9y ZV9lbmdpbmVzKGZkLCByaW5nKTsKPiArCWllZCA9IGxpc3Rfc3RvcmVfZW5naW5lcyhmZCwgY3R4 LCByaW5nKTsKPiAgCWlndF9yZXF1aXJlKGllZC5uZW5naW5lcyk7Cj4gIAo+ICAJaW50ZWxfZGV0 ZWN0X2FuZF9jbGVhcl9taXNzZWRfaW50ZXJydXB0cyhmZCk7Cj4gQEAgLTI1OSw4ICsyNTksMTAg QEAgd2FrZXVwX3JpbmcoaW50IGZkLCB1bnNpZ25lZCByaW5nLCBpbnQgdGltZW91dCwgaW50IHds ZW4pCj4gIAkJZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqZWN0KTsK PiAgCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDE7Cj4gIAkJZXhlY2J1Zi5mbGFncyA9IGllZF9m bGFncygmaWVkLCBjaGlsZCk7Cj4gKwkJZXhlY2J1Zi5yc3ZkMSA9IGN0eC0+aWQ7Cj4gIAo+ICAJ CXNwaW4gPSBfX2lndF9zcGluX25ldyhmZCwKPiArCQkJCSAgICAgIC5jdHggPSBjdHgsCj4gIAkJ CQkgICAgICAuZW5naW5lID0gZXhlY2J1Zi5mbGFncywKPiAgCQkJCSAgICAgIC5mbGFncyA9IChJ R1RfU1BJTl9QT0xMX1JVTiB8Cj4gIAkJCQkJCUlHVF9TUElOX0ZBU1QpKTsKPiBAQCAtMzI3LDEy ICszMjksMTIgQEAgd2FrZXVwX3JpbmcoaW50IGZkLCB1bnNpZ25lZCByaW5nLCBpbnQgdGltZW91 dCwgaW50IHdsZW4pCj4gIAlpZ3RfYXNzZXJ0X2VxKGludGVsX2RldGVjdF9hbmRfY2xlYXJfbWlz c2VkX2ludGVycnVwdHMoZmQpLCAwKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgYWN0aXZlX3Jp bmcoaW50IGZkLCB1bnNpZ25lZCBpbnQgcmluZywKPiArc3RhdGljIHZvaWQgYWN0aXZlX3Jpbmco aW50IGZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LCB1bnNpZ25lZCBpbnQgcmluZywKPiAgCQkJ aW50IG51bV9jaGlsZHJlbiwgaW50IHRpbWVvdXQpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSBpZWQ7Cj4gIAo+IC0JaWVkID0gbGlzdF9zdG9yZV9lbmdpbmVzKGZkLCByaW5nKTsK PiArCWllZCA9IGxpc3Rfc3RvcmVfZW5naW5lcyhmZCwgY3R4LCByaW5nKTsKPiAgCWlndF9yZXF1 aXJlKGllZC5uZW5naW5lcyk7Cj4gIAo+ICAJaW50ZWxfZGV0ZWN0X2FuZF9jbGVhcl9taXNzZWRf aW50ZXJydXB0cyhmZCk7Cj4gQEAgLTM0MiwxMCArMzQ0LDEyIEBAIHN0YXRpYyB2b2lkIGFjdGl2 ZV9yaW5nKGludCBmZCwgdW5zaWduZWQgaW50IHJpbmcsCj4gIAkJaWd0X3NwaW5fdCAqc3Bpblsy XTsKPiAgCj4gIAkJc3BpblswXSA9IF9faWd0X3NwaW5fbmV3KGZkLAo+ICsJCQkJCSAuY3R4ID0g Y3R4LAo+ICAJCQkJCSAuZW5naW5lID0gaWVkX2ZsYWdzKCZpZWQsIGNoaWxkKSwKPiAgCQkJCQkg LmZsYWdzID0gSUdUX1NQSU5fRkFTVCk7Cj4gIAo+ICAJCXNwaW5bMV0gPSBfX2lndF9zcGluX25l dyhmZCwKPiArCQkJCQkgLmN0eCA9IGN0eCwKPiAgCQkJCQkgLmVuZ2luZSA9IGllZF9mbGFncygm aWVkLCBjaGlsZCksCj4gIAkJCQkJIC5mbGFncyA9IElHVF9TUElOX0ZBU1QpOwo+ICAKPiBAQCAt Mzc3LDExICszODEsMTIgQEAgc3RhdGljIHZvaWQgYWN0aXZlX3JpbmcoaW50IGZkLCB1bnNpZ25l ZCBpbnQgcmluZywKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAtYWN0aXZlX3dha2V1cF9yaW5n KGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IHRpbWVvdXQsIGludCB3bGVuKQo+ICthY3RpdmVf d2FrZXVwX3JpbmcoaW50IGZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LCB1bnNpZ25lZCByaW5n LAo+ICsJCSAgIGludCB0aW1lb3V0LCBpbnQgd2xlbikKPiAgewo+ICAJc3RydWN0IGludGVsX2Vu Z2luZV9kYXRhIGllZDsKPiAgCj4gLQlpZWQgPSBsaXN0X3N0b3JlX2VuZ2luZXMoZmQsIHJpbmcp Owo+ICsJaWVkID0gbGlzdF9zdG9yZV9lbmdpbmVzKGZkLCBjdHgsIHJpbmcpOwo+ICAJaWd0X3Jl cXVpcmUoaWVkLm5lbmdpbmVzKTsKPiAgCj4gIAlpbnRlbF9kZXRlY3RfYW5kX2NsZWFyX21pc3Nl ZF9pbnRlcnJ1cHRzKGZkKTsKPiBAQCAtNDAxLDYgKzQwNiw3IEBAIGFjdGl2ZV93YWtldXBfcmlu ZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCB0aW1lb3V0LCBpbnQgd2xlbikKPiAgCQlleGVj YnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZvYmplY3QpOwo+ICAJCWV4ZWNidWYu YnVmZmVyX2NvdW50ID0gMTsKPiAgCQlleGVjYnVmLmZsYWdzID0gaWVkX2ZsYWdzKCZpZWQsIGNo aWxkKTsKPiArCQlleGVjYnVmLnJzdmQxID0gY3R4LT5pZDsKPiAgCj4gIAkJc3BpblswXSA9IF9f aWd0X3NwaW5fbmV3KGZkLAo+ICAJCQkJCSAuZW5naW5lID0gZXhlY2J1Zi5mbGFncywKPiBAQCAt NDkxLDEyICs0OTcsMTMgQEAgYWN0aXZlX3dha2V1cF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmlu ZywgaW50IHRpbWVvdXQsIGludCB3bGVuKQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1zdG9y ZV9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IG51bV9jaGlsZHJlbiwgaW50IHRpbWVv dXQpCj4gK3N0b3JlX3JpbmcoaW50IGZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LCB1bnNpZ25l ZCByaW5nLAo+ICsJICAgaW50IG51bV9jaGlsZHJlbiwgaW50IHRpbWVvdXQpCj4gIHsKPiAgCWNv bnN0IHVuc2lnbmVkIGludCBnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkp Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGllZDsKPiAgCj4gLQlpZWQgPSBsaXN0X3N0 b3JlX2VuZ2luZXMoZmQsIHJpbmcpOwo+ICsJaWVkID0gbGlzdF9zdG9yZV9lbmdpbmVzKGZkLCBj dHgsIHJpbmcpOwo+ICAJaWd0X3JlcXVpcmUoaWVkLm5lbmdpbmVzKTsKPiAgCW51bV9jaGlsZHJl biAqPSBpZWQubmVuZ2luZXM7Cj4gIAo+IEBAIC01MTcsNiArNTI0LDcgQEAgc3RvcmVfcmluZyhp bnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCBudW1fY2hpbGRyZW4sIGludCB0aW1lb3V0KQo+ICAJ CWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX0hBTkRMRV9MVVQ7Cj4gIAkJaWYgKGdlbiA8IDYp Cj4gIAkJCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsKPiArCQlleGVjYnVmLnJz dmQxID0gY3R4LT5pZDsKPiAgCj4gIAkJbWVtc2V0KG9iamVjdCwgMCwgc2l6ZW9mKG9iamVjdCkp Owo+ICAJCW9iamVjdFswXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKPiBAQCAtNTg3 LDE0ICs1OTUsMTUgQEAgc3RvcmVfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCBudW1f Y2hpbGRyZW4sIGludCB0aW1lb3V0KQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1zd2l0Y2hf cmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCBudW1fY2hpbGRyZW4sIGludCB0aW1lb3V0 KQo+ICtzd2l0Y2hfcmluZyhpbnQgZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsIHVuc2lnbmVk IHJpbmcsCj4gKwkgICAgaW50IG51bV9jaGlsZHJlbiwgaW50IHRpbWVvdXQpCj4gIHsKPiAgCWNv bnN0IHVuc2lnbmVkIGludCBnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkp Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGllZDsKPiAgCj4gIAlnZW1fcmVxdWlyZV9j b250ZXh0cyhmZCk7Cj4gIAo+IC0JaWVkID0gbGlzdF9zdG9yZV9lbmdpbmVzKGZkLCByaW5nKTsK PiArCWllZCA9IGxpc3Rfc3RvcmVfZW5naW5lcyhmZCwgY3R4LCByaW5nKTsKPiAgCWlndF9yZXF1 aXJlKGllZC5uZW5naW5lcyk7Cj4gIAludW1fY2hpbGRyZW4gKj0gaWVkLm5lbmdpbmVzOwo+ICAK PiBAQCAtNjA0LDYgKzYxMyw3IEBAIHN3aXRjaF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywg aW50IG51bV9jaGlsZHJlbiwgaW50IHRpbWVvdXQpCj4gIAkJCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyIG9iamVjdFsyXTsKPiAgCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0 aW9uX2VudHJ5IHJlbG9jWzEwMjRdOwo+ICAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZm ZXIyIGV4ZWNidWY7Cj4gKwkJCWNvbnN0IGludGVsX2N0eF90ICpjdHg7Cj4gIAkJfSBjb250ZXh0 c1syXTsKPiAgCQlkb3VibGUgZWxhcHNlZCwgYmFzZWxpbmU7Cj4gIAkJdW5zaWduZWQgbG9uZyBj eWNsZXM7Cj4gQEAgLTYyMSw3ICs2MzEsOSBAQCBzd2l0Y2hfcmluZyhpbnQgZmQsIHVuc2lnbmVk IHJpbmcsIGludCBudW1fY2hpbGRyZW4sIGludCB0aW1lb3V0KQo+ICAJCQljLT5leGVjYnVmLmZs YWdzIHw9IEk5MTVfRVhFQ19IQU5ETEVfTFVUOwo+ICAJCQlpZiAoZ2VuIDwgNikKPiAgCQkJCWMt PmV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsKPiAtCQkJYy0+ZXhlY2J1Zi5yc3Zk MSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7Cj4gKwo+ICsJCQljLT5jdHggPSBpbnRlbF9jdHhf Y3JlYXRlKGZkLCAmY3R4LT5jZmcpOwo+ICsJCQljLT5leGVjYnVmLnJzdmQxID0gYy0+Y3R4LT5p ZDsKPiAgCj4gIAkJCW1lbXNldChjLT5vYmplY3QsIDAsIHNpemVvZihjLT5vYmplY3QpKTsKPiAg CQkJYy0+b2JqZWN0WzBdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+IEBAIC03MTcs NyArNzI5LDcgQEAgc3dpdGNoX3JpbmcoaW50IGZkLCB1bnNpZ25lZCByaW5nLCBpbnQgbnVtX2No aWxkcmVuLCBpbnQgdGltZW91dCkKPiAgCQlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUo Y29udGV4dHMpOyBpKyspIHsKPiAgCQkJZ2VtX2Nsb3NlKGZkLCBjb250ZXh0c1tpXS5vYmplY3Rb MV0uaGFuZGxlKTsKPiAgCQkJZ2VtX2Nsb3NlKGZkLCBjb250ZXh0c1tpXS5vYmplY3RbMF0uaGFu ZGxlKTsKPiAtCQkJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY29udGV4dHNbaV0uZXhlY2J1Zi5y c3ZkMSk7Cj4gKwkJCWludGVsX2N0eF9kZXN0cm95KGZkLCBjb250ZXh0c1tpXS5jdHgpOwo+ICAJ CX0KPiAgCX0KPiAgCWlndF93YWl0Y2hpbGRyZW5fdGltZW91dCh0aW1lb3V0KzEwLCBOVUxMKTsK PiBAQCAtNzY2LDcgKzc3OCw4IEBAIHN0YXRpYyB2b2lkICp3YWl0ZXIodm9pZCAqYXJnKQo+ICB9 Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1fX3N0b3JlX21hbnkoaW50IGZkLCB1bnNpZ25lZCByaW5n LCBpbnQgdGltZW91dCwgdW5zaWduZWQgbG9uZyAqY3ljbGVzKQo+ICtfX3N0b3JlX21hbnkoaW50 IGZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LCB1bnNpZ25lZCByaW5nLAo+ICsJICAgICBpbnQg dGltZW91dCwgdW5zaWduZWQgbG9uZyAqY3ljbGVzKQo+ICB7Cj4gIAljb25zdCB1bnNpZ25lZCBp bnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKPiAgCWNvbnN0IHVp bnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4gQEAgLTc4NSw2ICs3OTgsNyBAQCBf X3N0b3JlX21hbnkoaW50IGZkLCB1bnNpZ25lZCByaW5nLCBpbnQgdGltZW91dCwgdW5zaWduZWQg bG9uZyAqY3ljbGVzKQo+ICAJZXhlY2J1Zi5mbGFncyB8PSBJOTE1X0VYRUNfSEFORExFX0xVVDsK PiAgCWlmIChnZW4gPCA2KQo+ICAJCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsK PiArCWV4ZWNidWYucnN2ZDEgPSBjdHgtPmlkOwo+ICAKPiAgCW1lbXNldChvYmplY3QsIDAsIHNp emVvZihvYmplY3QpKTsKPiAgCW9iamVjdFswXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2 KTsKPiBAQCAtODk0LDcgKzkwOCw4IEBAIF9fc3RvcmVfbWFueShpbnQgZmQsIHVuc2lnbmVkIHJp bmcsIGludCB0aW1lb3V0LCB1bnNpZ25lZCBsb25nICpjeWNsZXMpCj4gIH0KPiAgCj4gIHN0YXRp YyB2b2lkCj4gLXN0b3JlX21hbnkoaW50IGZkLCB1bnNpZ25lZCBpbnQgcmluZywgaW50IG51bV9j aGlsZHJlbiwgaW50IHRpbWVvdXQpCj4gK3N0b3JlX21hbnkoaW50IGZkLCBjb25zdCBpbnRlbF9j dHhfdCAqY3R4LCB1bnNpZ25lZCBpbnQgcmluZywKPiArCSAgIGludCBudW1fY2hpbGRyZW4sIGlu dCB0aW1lb3V0KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaWVkOwo+ICAJdW5z aWduZWQgbG9uZyAqc2hhcmVkOwo+IEBAIC05MDIsMTQgKzkxNywxNCBAQCBzdG9yZV9tYW55KGlu dCBmZCwgdW5zaWduZWQgaW50IHJpbmcsIGludCBudW1fY2hpbGRyZW4sIGludCB0aW1lb3V0KQo+ ICAJc2hhcmVkID0gbW1hcChOVUxMLCA0MDk2LCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVEIHwgTUFQ X0FOT04sIC0xLCAwKTsKPiAgCWlndF9hc3NlcnQoc2hhcmVkICE9IE1BUF9GQUlMRUQpOwo+ICAK PiAtCWllZCA9IGxpc3Rfc3RvcmVfZW5naW5lcyhmZCwgcmluZyk7Cj4gKwlpZWQgPSBsaXN0X3N0 b3JlX2VuZ2luZXMoZmQsIGN0eCwgcmluZyk7Cj4gIAlpZ3RfcmVxdWlyZShpZWQubmVuZ2luZXMp Owo+ICAKPiAgCWludGVsX2RldGVjdF9hbmRfY2xlYXJfbWlzc2VkX2ludGVycnVwdHMoZmQpOwo+ ICAKPiAgCWZvciAoaW50IG4gPSAwOyBuIDwgaWVkLm5lbmdpbmVzOyBuKyspIHsKPiAgCQlpZ3Rf Zm9yayhjaGlsZCwgMSkKPiAtCQkJX19zdG9yZV9tYW55KGZkLAo+ICsJCQlfX3N0b3JlX21hbnko ZmQsIGN0eCwKPiAgCQkJCSAgICAgaWVkX2ZsYWdzKCZpZWQsIG4pLAo+ICAJCQkJICAgICB0aW1l b3V0LAo+ICAJCQkJICAgICAmc2hhcmVkW25dKTsKPiBAQCAtOTI1LDExICs5NDAsMTEgQEAgc3Rv cmVfbWFueShpbnQgZmQsIHVuc2lnbmVkIGludCByaW5nLCBpbnQgbnVtX2NoaWxkcmVuLCBpbnQg dGltZW91dCkKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAtc3luY19hbGwoaW50IGZkLCBpbnQg bnVtX2NoaWxkcmVuLCBpbnQgdGltZW91dCkKPiArc3luY19hbGwoaW50IGZkLCBjb25zdCBpbnRl bF9jdHhfdCAqY3R4LCBpbnQgbnVtX2NoaWxkcmVuLCBpbnQgdGltZW91dCkKPiAgewo+ICAJc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhIGllZDsKPiAgCj4gLQlpZWQgPSBsaXN0X2VuZ2luZXMoZmQs IEFMTF9FTkdJTkVTKTsKPiArCWllZCA9IGxpc3RfZW5naW5lcyhmZCwgY3R4LCBBTExfRU5HSU5F Uyk7Cj4gIAlpZ3RfcmVxdWlyZShpZWQubmVuZ2luZXMpOwo+ICAKPiAgCWludGVsX2RldGVjdF9h bmRfY2xlYXJfbWlzc2VkX2ludGVycnVwdHMoZmQpOwo+IEBAIC05NDcsNiArOTYyLDcgQEAgc3lu Y19hbGwoaW50IGZkLCBpbnQgbnVtX2NoaWxkcmVuLCBpbnQgdGltZW91dCkKPiAgCQltZW1zZXQo JmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7Cj4gIAkJZXhlY2J1Zi5idWZmZXJzX3B0ciA9 IHRvX3VzZXJfcG9pbnRlcigmb2JqZWN0KTsKPiAgCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDE7 Cj4gKwkJZXhlY2J1Zi5yc3ZkMSA9IGN0eC0+aWQ7Cj4gIAkJZ2VtX2V4ZWNidWYoZmQsICZleGVj YnVmKTsKPiAgCQlnZW1fc3luYyhmZCwgb2JqZWN0LmhhbmRsZSk7Cj4gIAo+IEBAIC05NzEsMTIg Kzk4NywxMiBAQCBzeW5jX2FsbChpbnQgZmQsIGludCBudW1fY2hpbGRyZW4sIGludCB0aW1lb3V0 KQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1zdG9yZV9hbGwoaW50IGZkLCBpbnQgbnVtX2No aWxkcmVuLCBpbnQgdGltZW91dCkKPiArc3RvcmVfYWxsKGludCBmZCwgY29uc3QgaW50ZWxfY3R4 X3QgKmN0eCwgaW50IG51bV9jaGlsZHJlbiwgaW50IHRpbWVvdXQpCj4gIHsKPiAgCWNvbnN0IHVu c2lnbmVkIGludCBnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwo+ICAJ c3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGllZDsKPiAgCj4gLQlpZWQgPSBsaXN0X3N0b3JlX2Vu Z2luZXMoZmQsIEFMTF9FTkdJTkVTKTsKPiArCWllZCA9IGxpc3Rfc3RvcmVfZW5naW5lcyhmZCwg Y3R4LCBBTExfRU5HSU5FUyk7Cj4gIAlpZ3RfcmVxdWlyZShpZWQubmVuZ2luZXMpOwo+ICAKPiAg CWludGVsX2RldGVjdF9hbmRfY2xlYXJfbWlzc2VkX2ludGVycnVwdHMoZmQpOwo+IEBAIC05OTUs NiArMTAxMSw3IEBAIHN0b3JlX2FsbChpbnQgZmQsIGludCBudW1fY2hpbGRyZW4sIGludCB0aW1l b3V0KQo+ICAJCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX0hBTkRMRV9MVVQ7Cj4gIAkJaWYg KGdlbiA8IDYpCj4gIAkJCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsKPiArCQll eGVjYnVmLnJzdmQxID0gY3R4LT5pZDsKPiAgCj4gIAkJbWVtc2V0KG9iamVjdCwgMCwgc2l6ZW9m KG9iamVjdCkpOwo+ICAJCW9iamVjdFswXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK PiBAQCAtMTA3MCwyMCArMTA4NywyMSBAQCBzdG9yZV9hbGwoaW50IGZkLCBpbnQgbnVtX2NoaWxk cmVuLCBpbnQgdGltZW91dCkKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAtcHJlZW1wdChpbnQg ZmQsIHVuc2lnbmVkIHJpbmcsIGludCBudW1fY2hpbGRyZW4sIGludCB0aW1lb3V0KQo+ICtwcmVl bXB0KGludCBmZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwgdW5zaWduZWQgcmluZywKPiArCWlu dCBudW1fY2hpbGRyZW4sIGludCB0aW1lb3V0KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5l X2RhdGEgaWVkOwo+IC0JdWludDMyX3QgY3R4WzJdOwo+ICsJY29uc3QgaW50ZWxfY3R4X3QgKnRt cF9jdHhbMl07Cj4gIAo+IC0JaWVkID0gbGlzdF9lbmdpbmVzKGZkLCBBTExfRU5HSU5FUyk7Cj4g KwlpZWQgPSBsaXN0X2VuZ2luZXMoZmQsIGN0eCwgQUxMX0VOR0lORVMpOwo+ICAJaWd0X3JlcXVp cmUoaWVkLm5lbmdpbmVzKTsKPiAgCW51bV9jaGlsZHJlbiAqPSBpZWQubmVuZ2luZXM7Cj4gIAo+ IC0JY3R4WzBdID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKPiAtCWdlbV9jb250ZXh0X3NldF9w cmlvcml0eShmZCwgY3R4WzBdLCBNSU5fUFJJTyk7Cj4gKwl0bXBfY3R4WzBdID0gaW50ZWxfY3R4 X2NyZWF0ZShmZCwgJmN0eC0+Y2ZnKTsKPiArCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwg dG1wX2N0eFswXS0+aWQsIE1JTl9QUklPKTsKPiAgCj4gLQljdHhbMV0gPSBnZW1fY29udGV4dF9j cmVhdGUoZmQpOwo+IC0JZ2VtX2NvbnRleHRfc2V0X3ByaW9yaXR5KGZkLCBjdHhbMV0sIE1BWF9Q UklPKTsKPiArCXRtcF9jdHhbMV0gPSBpbnRlbF9jdHhfY3JlYXRlKGZkLCAmY3R4LT5jZmcpOwo+ ICsJZ2VtX2NvbnRleHRfc2V0X3ByaW9yaXR5KGZkLCB0bXBfY3R4WzFdLT5pZCwgTUFYX1BSSU8p Owo+ICAKPiAgCWludGVsX2RldGVjdF9hbmRfY2xlYXJfbWlzc2VkX2ludGVycnVwdHMoZmQpOwo+ ICAJaWd0X2ZvcmsoY2hpbGQsIG51bV9jaGlsZHJlbikgewo+IEBAIC0xMTAxLDcgKzExMTksNyBA QCBwcmVlbXB0KGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IG51bV9jaGlsZHJlbiwgaW50IHRp bWVvdXQpCj4gIAkJZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqZWN0 KTsKPiAgCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDE7Cj4gIAkJZXhlY2J1Zi5mbGFncyA9IGll ZF9mbGFncygmaWVkLCBjaGlsZCk7Cj4gLQkJZXhlY2J1Zi5yc3ZkMSA9IGN0eFsxXTsKPiArCQll eGVjYnVmLnJzdmQxID0gdG1wX2N0eFsxXS0+aWQ7Cj4gIAkJZ2VtX2V4ZWNidWYoZmQsICZleGVj YnVmKTsKPiAgCQlnZW1fc3luYyhmZCwgb2JqZWN0LmhhbmRsZSk7Cj4gIAo+IEBAIC0xMTEwLDcg KzExMjgsNyBAQCBwcmVlbXB0KGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IG51bV9jaGlsZHJl biwgaW50IHRpbWVvdXQpCj4gIAkJZG8gewo+ICAJCQlpZ3Rfc3Bpbl90ICpzcGluID0KPiAgCQkJ CV9faWd0X3NwaW5fbmV3KGZkLAo+IC0JCQkJCSAgICAgICAuY3R4X2lkID0gY3R4WzBdLAo+ICsJ CQkJCSAgICAgICAuY3R4ID0gdG1wX2N0eFswXSwKPiAgCQkJCQkgICAgICAgLmVuZ2luZSA9IGV4 ZWNidWYuZmxhZ3MpOwo+ICAKPiAgCQkJZG8gewo+IEBAIC0xMTI5LDggKzExNDcsOCBAQCBwcmVl bXB0KGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IG51bV9jaGlsZHJlbiwgaW50IHRpbWVvdXQp Cj4gIAlpZ3Rfd2FpdGNoaWxkcmVuX3RpbWVvdXQodGltZW91dCsxMCwgTlVMTCk7Cj4gIAlpZ3Rf YXNzZXJ0X2VxKGludGVsX2RldGVjdF9hbmRfY2xlYXJfbWlzc2VkX2ludGVycnVwdHMoZmQpLCAw KTsKPiAgCj4gLQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhbMV0pOwo+IC0JZ2VtX2NvbnRl eHRfZGVzdHJveShmZCwgY3R4WzBdKTsKPiArCWludGVsX2N0eF9kZXN0cm95KGZkLCB0bXBfY3R4 WzFdKTsKPiArCWludGVsX2N0eF9kZXN0cm95KGZkLCB0bXBfY3R4WzBdKTsKPiAgfQo+ICAKPiAg aWd0X21haW4KPiBAQCAtMTEzOCw3ICsxMTU2LDcgQEAgaWd0X21haW4KPiAgCWNvbnN0IGludCBu Y3B1cyA9IHN5c2NvbmYoX1NDX05QUk9DRVNTT1JTX09OTE4pOwo+ICAJY29uc3Qgc3RydWN0IHsK PiAgCQljb25zdCBjaGFyICpuYW1lOwo+IC0JCXZvaWQgKCpmdW5jKShpbnQgZmQsIHVuc2lnbmVk IGludCBlbmdpbmUsCj4gKwkJdm9pZCAoKmZ1bmMpKGludCBmZCwgY29uc3QgaW50ZWxfY3R4X3Qg KmN0eCwgdW5zaWduZWQgaW50IGVuZ2luZSwKPiAgCQkJICAgICBpbnQgbnVtX2NoaWxkcmVuLCBp bnQgdGltZW91dCk7Cj4gIAkJaW50IG51bV9jaGlsZHJlbjsKPiAgCQlpbnQgdGltZW91dDsKPiBA QCAtMTE3Myw2ICsxMTkxLDcgQEAgaWd0X21haW4KPiAgI2RlZmluZSBmb3JfZWFjaF90ZXN0KHQs IFQpIGZvcih0eXBlb2YoKlQpICp0ID0gVDsgdC0+bmFtZTsgdCsrKQo+ICAKPiAgCWNvbnN0IHN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKPiArCWNvbnN0IGludGVsX2N0eF90ICpj dHg7Cj4gIAlpbnQgZmQgPSAtMTsKPiAgCj4gIAlpZ3RfZml4dHVyZSB7Cj4gQEAgLTExODAsNiAr MTE5OSw3IEBAIGlndF9tYWluCj4gIAkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKPiAgCQlnZW1fc3Vi bWlzc2lvbl9wcmludF9tZXRob2QoZmQpOwo+ICAJCWdlbV9zY2hlZHVsZXJfcHJpbnRfY2FwYWJp bGl0eShmZCk7Cj4gKwkJY3R4ID0gaW50ZWxfY3R4X2NyZWF0ZV9hbGxfcGh5c2ljYWwoZmQpOwo+ ICAKPiAgCQlpZ3RfZm9ya19oYW5nX2RldGVjdG9yKGZkKTsKPiAgCX0KPiBAQCAtMTE4OSw3ICsx MjA5LDcgQEAgaWd0X21haW4KPiAgCQlpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWNfZigiJXMiLCB0 LT5uYW1lKSB7Cj4gIAkJCWZvciAoY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9yaW5nICps ID0gaW50ZWxfZXhlY3V0aW9uX3JpbmdzOyBsLT5uYW1lOyBsKyspIHsKPiAgCQkJCWlndF9keW5h bWljX2YoIiVzIiwgbC0+bmFtZSkgewo+IC0JCQkJCXQtPmZ1bmMoZmQsIGViX3JpbmcobCksCj4g KwkJCQkJdC0+ZnVuYyhmZCwgaW50ZWxfY3R4XzAoZmQpLCBlYl9yaW5nKGwpLAo+ICAJCQkJCQl0 LT5udW1fY2hpbGRyZW4sIHQtPnRpbWVvdXQpOwo+ICAJCQkJfQo+ICAJCQl9Cj4gQEAgLTExOTcs MzAgKzEyMTcsMzAgQEAgaWd0X21haW4KPiAgCX0KPiAgCj4gIAlpZ3Rfc3VidGVzdCgiYmFzaWMt YWxsIikKPiAtCQlzeW5jX2FsbChmZCwgMSwgMik7Cj4gKwkJc3luY19hbGwoZmQsIGN0eCwgMSwg Mik7Cj4gIAlpZ3Rfc3VidGVzdCgiYmFzaWMtc3RvcmUtYWxsIikKPiAtCQlzdG9yZV9hbGwoZmQs IDEsIDIpOwo+ICsJCXN0b3JlX2FsbChmZCwgY3R4LCAxLCAyKTsKPiAgCj4gIAlpZ3Rfc3VidGVz dCgiYWxsIikKPiAtCQlzeW5jX2FsbChmZCwgMSwgMjApOwo+ICsJCXN5bmNfYWxsKGZkLCBjdHgs IDEsIDIwKTsKPiAgCWlndF9zdWJ0ZXN0KCJzdG9yZS1hbGwiKQo+IC0JCXN0b3JlX2FsbChmZCwg MSwgMjApOwo+ICsJCXN0b3JlX2FsbChmZCwgY3R4LCAxLCAyMCk7Cj4gIAlpZ3Rfc3VidGVzdCgi Zm9ya2VkLWFsbCIpCj4gLQkJc3luY19hbGwoZmQsIG5jcHVzLCAyMCk7Cj4gKwkJc3luY19hbGwo ZmQsIGN0eCwgbmNwdXMsIDIwKTsKPiAgCWlndF9zdWJ0ZXN0KCJmb3JrZWQtc3RvcmUtYWxsIikK PiAtCQlzdG9yZV9hbGwoZmQsIG5jcHVzLCAyMCk7Cj4gKwkJc3RvcmVfYWxsKGZkLCBjdHgsIG5j cHVzLCAyMCk7Cj4gIAo+ICAJZm9yX2VhY2hfdGVzdCh0LCBhbGwpIHsKPiAgCQlpZ3Rfc3VidGVz dF9mKCIlcyIsIHQtPm5hbWUpCj4gLQkJCXQtPmZ1bmMoZmQsIEFMTF9FTkdJTkVTLCB0LT5udW1f Y2hpbGRyZW4sIHQtPnRpbWVvdXQpOwo+ICsJCQl0LT5mdW5jKGZkLCBjdHgsIEFMTF9FTkdJTkVT LCB0LT5udW1fY2hpbGRyZW4sIHQtPnRpbWVvdXQpOwo+ICAJfQo+ICAKPiAgCS8qIE5ldyB3YXkg b2Ygc2VsZWN0aW5nIGVuZ2luZXMuICovCj4gIAlmb3JfZWFjaF90ZXN0KHQsIGluZGl2aWR1YWwp IHsKPiAgCQlpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWNfZigiJXMiLCB0LT5uYW1lKSB7Cj4gLQkJ CV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKSB7Cj4gKwkJCWZvcl9lYWNoX2N0eF9l bmdpbmUoZmQsIGN0eCwgZSkgewo+ICAJCQkJaWd0X2R5bmFtaWNfZigiJXMiLCBlLT5uYW1lKSB7 Cj4gLQkJCQkJdC0+ZnVuYyhmZCwgZS0+ZmxhZ3MsCj4gKwkJCQkJdC0+ZnVuYyhmZCwgY3R4LCBl LT5mbGFncywKPiAgCQkJCQkJdC0+bnVtX2NoaWxkcmVuLCB0LT50aW1lb3V0KTsKPiAgCQkJCX0K PiAgCQkJfQo+IEBAIC0xMjM1LDE3ICsxMjU1LDE4IEBAIGlndF9tYWluCj4gIAkJfQo+ICAKPiAg CQlpZ3Rfc3VidGVzdCgicHJlZW1wdC1hbGwiKQo+IC0JCQlwcmVlbXB0KGZkLCBBTExfRU5HSU5F UywgMSwgMjApOwo+ICsJCQlwcmVlbXB0KGZkLCBjdHgsIEFMTF9FTkdJTkVTLCAxLCAyMCk7Cj4g IAkJaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljKCJwcmVlbXB0Iikgewo+IC0JCQlfX2Zvcl9lYWNo X3BoeXNpY2FsX2VuZ2luZShmZCwgZSkgewo+ICsJCQlmb3JfZWFjaF9jdHhfZW5naW5lKGZkLCBj dHgsIGUpIHsKPiAgCQkJCWlndF9keW5hbWljX2YoIiVzIiwgZS0+bmFtZSkKPiAtCQkJCQlwcmVl bXB0KGZkLCBlLT5mbGFncywgbmNwdXMsIDIwKTsKPiArCQkJCQlwcmVlbXB0KGZkLCBjdHgsIGUt PmZsYWdzLCBuY3B1cywgMjApOwo+ICAJCQl9Cj4gIAkJfQo+ICAJfQo+ICAKPiAgCWlndF9maXh0 dXJlIHsKPiAgCQlpZ3Rfc3RvcF9oYW5nX2RldGVjdG9yKCk7Cj4gKwkJaW50ZWxfY3R4X2Rlc3Ry b3koZmQsIGN0eCk7Cj4gIAkJY2xvc2UoZmQpOwo+ICAJfQo+ICB9Cj4gLS0gCj4gMi4zMS4xCj4g Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBpZ3Qt ZGV2IG1haWxpbmcgbGlzdAo+IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBs aXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=