From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B48410E268 for ; Mon, 8 May 2023 12:19:48 +0000 (UTC) From: "Hogander, Jouni" To: "Kempczynski, Zbigniew" , "Ch, Sai Gowtham" , "igt-dev@lists.freedesktop.org" Date: Mon, 8 May 2023 12:19:40 +0000 Message-ID: References: <20230505053528.25967-1-sai.gowtham.ch@intel.com> In-Reply-To: <20230505053528.25967-1-sai.gowtham.ch@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] lib/xe/xe_spin: Integrate igt_spin_new with Xe. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: T24gRnJpLCAyMDIzLTA1LTA1IGF0IDExOjA1ICswNTMwLCBzYWkuZ293dGhhbS5jaEBpbnRlbC5j b20gd3JvdGU6Cj4gRnJvbTogU2FpIEdvd3RoYW0gQ2ggPHNhaS5nb3d0aGFtLmNoQGludGVsLmNv bT4KPiAKPiBFeHRlbmRpbmcgdGhlIHNwaW5fY3JlYXRlIGltcGxlbWVudGF0aW9uIGFuZCBhbGxv Y2F0b3IgaGFuZGxlIHN1cHBvcnQKPiBpbiB4ZSwKPiB3aGVyZSBpdCBzdWJtaXRzIGR1bW15IHdv cmsgbG9hZHMgdG8gZW5naW5lLiBUaGlzIEltcGxlbWVudGF0aW9uIGlzCj4gd3JhcHBlZAo+IGFy b3VuZCB2bV9iaW5kIGFuZCB1bmJpbmQgYXMgd2UgYXJlIHN1cHBvc2VkIHRvIGRvIGl0IG1hbnVh bGx5IGZvcgo+IHhlLgoKSGVsbG8gU2FpLAoKRG8geW91IGhhdmUgc29tZSBleGFtcGxlIHRlc3Rj YXNlIGRlbW9uc3RyYXRpbmcgdXNhZ2Ugb2YgdGhpcyBYZQpzcGlubmVyPyBJJ3ZlIGJlZW4gdHJ5 aW5nIHRvIGFkYXB0IG15IHRlc3RjYXNlIGhlcmUgdG8gd29yayB3aXRoIFhlIGFuZApvbiB0b3Ag b2YgeW91ciBzcGlubmVyIHBhdGNoOgoKaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3Jn L3Nlcmllcy8xMTYxMzAvCgpXaXRob3V0IHN1Y2Nlc3MuIFNlZWluZyBjcmFzaC4uLgoKQlIsCgpK b3VuaSBIw7ZnYW5kZXIKCj4gCj4gQ2M6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcu a2VtcGN6eW5za2lAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFNhaSBHb3d0aGFtIENoIDxz YWkuZ293dGhhbS5jaEBpbnRlbC5jb20+Cj4gLS0tCj4gwqBsaWIvaWd0X2R1bW15bG9hZC5jIHwg MjggKysrKysrKysrKysrKystLS0tLS0KPiDCoGxpYi9pZ3RfZHVtbXlsb2FkLmggfMKgIDggKysr KysrCj4gwqBsaWIveGUveGVfc3Bpbi5jwqDCoMKgIHwgNjMKPiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiDCoGxpYi94ZS94ZV9zcGluLmjCoMKgwqAgfMKg IDcgKysrKysKPiDCoDQgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1teWxvYWQuYyBiL2xpYi9pZ3RfZHVt bXlsb2FkLmMKPiBpbmRleCA3NDBhNThmMy4uOTI1MDc4MTkgMTAwNjQ0Cj4gLS0tIGEvbGliL2ln dF9kdW1teWxvYWQuYwo+ICsrKyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmMKPiBAQCAtNDYsNiArNDYs NyBAQAo+IMKgI2luY2x1ZGUgImludGVsX3JlZy5oIgo+IMKgI2luY2x1ZGUgImlvY3RsX3dyYXBw ZXJzLmgiCj4gwqAjaW5jbHVkZSAic3dfc3luYy5oIgo+ICsjaW5jbHVkZSAieGUveGVfc3Bpbi5o Igo+IMKgCj4gwqAvKioKPiDCoCAqIFNFQ1RJT046aWd0X2R1bW15bG9hZAo+IEBAIC00NDcsNyAr NDQ4LDEwIEBAIHNwaW5fY3JlYXRlKGludCBmZCwgY29uc3Qgc3RydWN0Cj4gaWd0X3NwaW5fZmFj dG9yeSAqb3B0cykKPiDCoGlndF9zcGluX3QgKgo+IMKgX19pZ3Rfc3Bpbl9mYWN0b3J5KGludCBm ZCwgY29uc3Qgc3RydWN0IGlndF9zcGluX2ZhY3RvcnkgKm9wdHMpCj4gwqB7Cj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIHNwaW5fY3JlYXRlKGZkLCBvcHRzKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAo aXNfeGVfZGV2aWNlKGZkKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHhlX3NwaW5fY3JlYXRlKGZkLCBvcHRzKTsKPiArwqDCoMKgwqDCoMKgwqBlbHNlCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBzcGluX2NyZWF0ZShmZCwgb3B0cyk7Cj4g wqB9Cj4gwqAKPiDCoC8qKgo+IEBAIC00ODAsOCArNDg0LDEzIEBAIGlndF9zcGluX2ZhY3Rvcnko aW50IGZkLCBjb25zdCBzdHJ1Y3QKPiBpZ3Rfc3Bpbl9mYWN0b3J5ICpvcHRzKQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmUoIWdlbV9lbmdpbmVfaGFzX2NtZHBh cnNlcihmZCwgJm9wdHMtPmN0eC0KPiA+Y2ZnLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3B0cy0+ZW5naW5lKSk7Cj4gwqDCoMKgwqDCoMKgwqDC oH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKgc3BpbiA9IHNwaW5fY3JlYXRlKGZkLCBvcHRzKTsKPiAr wqDCoMKgwqDCoMKgwqBpZiAoaXNfeGVfZGV2aWNlKGZkKSkgewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzcGluID0geGVfc3Bpbl9jcmVhdGUoZmQsIG9wdHMpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gc3BpbjsKPiArwqDCoMKgwqDCoMKgwqB9IGVs c2Ugewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcGluID0gc3Bpbl9jcmVhdGUo ZmQsIG9wdHMpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gc3BpbjsK PiArwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCEob3B0cy0+Zmxh Z3MgJiBJR1RfU1BJTl9JTlZBTElEX0NTKSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyoKPiBAQCAtNjQ3LDExICs2NTYsMTQgQEAgdm9pZCBpZ3Rfc3Bpbl9mcmVlKGludCBm ZCwgaWd0X3NwaW5fdCAqc3BpbikKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFzcGluKQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKg cHRocmVhZF9tdXRleF9sb2NrKCZsaXN0X2xvY2spOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9saXN0 X2RlbCgmc3Bpbi0+bGluayk7Cj4gLcKgwqDCoMKgwqDCoMKgcHRocmVhZF9tdXRleF91bmxvY2so Jmxpc3RfbG9jayk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoF9faWd0X3NwaW5fZnJlZShmZCwgc3Bp bik7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKGlzX3hlX2RldmljZShmZCkpIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfc3Bpbl9mcmVlKGZkLCBzcGluKTsKPiArwqDCoMKgwqDC oMKgwqB9IGVsc2Ugewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwdGhyZWFkX211 dGV4X2xvY2soJmxpc3RfbG9jayk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGln dF9saXN0X2RlbCgmc3Bpbi0+bGluayk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZsaXN0X2xvY2spOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBfX2lndF9zcGluX2ZyZWUoZmQsIHNwaW4pOwo+ICvCoMKgwqDCoMKgwqDCoH0K PiDCoH0KPiDCoAo+IMKgdm9pZCBpZ3RfdGVybWluYXRlX3NwaW5zKHZvaWQpCj4gZGlmZiAtLWdp dCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmggYi9saWIvaWd0X2R1bW15bG9hZC5oCj4gaW5kZXggYjI0 N2FiMDIuLjdlZmJiNDY0IDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3RfZHVtbXlsb2FkLmgKPiArKysg Yi9saWIvaWd0X2R1bW15bG9hZC5oCj4gQEAgLTgzLDYgKzgzLDE0IEBAIHR5cGVkZWYgc3RydWN0 IGlndF9zcGluIHsKPiDCoCNkZWZpbmUgU1BJTl9DTEZMVVNIICgxIDw8IDApCj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IGlndF9zcGluX2ZhY3Rvcnkgb3B0czsKPiArwqDCoMKgwqDCoMKg wqB1bmlvbiB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQ2NF90IHBhZDsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDMyX3Qgc3RhcnQ7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IGVuZDsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdWludDMyX3Qgdm07Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHVpbnQzMl90IHN5bmNvYmo7Cj4gK8KgwqDCoMKgwqDCoMKgfTsKPiArCj4gwqB9IGlndF9z cGluX3Q7Cj4gwqAKPiDCoAo+IGRpZmYgLS1naXQgYS9saWIveGUveGVfc3Bpbi5jIGIvbGliL3hl L3hlX3NwaW4uYwo+IGluZGV4IDg1NmQwYmEyLi5iNzliNWEwYyAxMDA2NDQKPiAtLS0gYS9saWIv eGUveGVfc3Bpbi5jCj4gKysrIGIvbGliL3hlL3hlX3NwaW4uYwo+IEBAIC0xNSw2ICsxNSw3IEBA Cj4gwqAjaW5jbHVkZSAiaW50ZWxfcmVnLmgiCj4gwqAjaW5jbHVkZSAieGVfaW9jdGwuaCIKPiDC oCNpbmNsdWRlICJ4ZV9zcGluLmgiCj4gKyNpbmNsdWRlICJsaWIvaWd0X2R1bW15bG9hZC5oIgo+ IMKgCj4gwqAvKioKPiDCoCAqIHhlX3NwaW5faW5pdDoKPiBAQCAtODIsNiArODMsNjggQEAgdm9p ZCB4ZV9zcGluX2VuZChzdHJ1Y3QgeGVfc3BpbiAqc3BpbikKPiDCoMKgwqDCoMKgwqDCoMKgc3Bp bi0+ZW5kID0gMDsKPiDCoH0KPiDCoAo+ICtpZ3Rfc3Bpbl90ICoKPiAreGVfc3Bpbl9jcmVhdGUo aW50IGZkLCBjb25zdCBzdHJ1Y3QgaWd0X3NwaW5fZmFjdG9yeSAqb3B0KQo+ICt7Cj4gK8KgwqDC oMKgwqDCoMKgc3RydWN0IGRybV94ZV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgKmVjaTsKPiArwqDC oMKgwqDCoMKgwqBzaXplX3QgYm9fc2l6ZSA9IHhlX2dldF9kZWZhdWx0X2FsaWdubWVudChmZCk7 Cj4gK8KgwqDCoMKgwqDCoMKgdWludDMyX3Qgdm0sIGJvLCBlbmdpbmUsIHN5bmNvYmo7Cj4gK8Kg wqDCoMKgwqDCoMKgdWludDY0X3QgYWhuZCA9IG9wdC0+YWhuZCwgYWRkcjsKPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgaWd0X3NwaW4gKnNwaW47Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhlX3Nw aW4gKnhlX3NwaW47Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRybV94ZV9zeW5jIHN5bmMgPSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5mbGFncyA9IERSTV9YRV9TWU5DX1NZ TkNPQkogfCBEUk1fWEVfU1lOQ19TSUdOQUwsCj4gK8KgwqDCoMKgwqDCoMKgfTsKPiArwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgZHJtX3hlX2V4ZWMgZXhlYyA9IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLm51bV9iYXRjaF9idWZmZXIgPSAxLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAubnVtX3N5bmNzID0gMSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLnN5bmNzID0gdG9fdXNlcl9wb2ludGVyKCZzeW5jKSwKPiArwqDCoMKgwqDCoMKgwqB9Owo+ ICsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KGFobmQpOwo+ICvCoMKgwqDCoMKgwqDCoHhl X3NwaW4gPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCB4ZV9zcGluKSk7Cj4gK8KgwqDCoMKgwqDC oMKgaWd0X2Fzc2VydCh4ZV9zcGluKTsKPiArwqDCoMKgwqDCoMKgwqBzcGluID0gY2FsbG9jKDEs IHNpemVvZihzdHJ1Y3QgaWd0X3NwaW4pKTsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KHNw aW4pOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBibyA9IHhlX2JvX2NyZWF0ZShmZCwgZWNpLT5ndF9p ZCwgdm0sIGJvX3NpemUpOwo+ICvCoMKgwqDCoMKgwqDCoHNwaW4gPSB4ZV9ib19tYXAoZmQsIGJv LCAweDEwMDApOwo+ICvCoMKgwqDCoMKgwqDCoHNwaW4tPmhhbmRsZSA9IGJvOwo+ICvCoMKgwqDC oMKgwqDCoHNwaW4tPnZtID0geGVfdm1fY3JlYXRlKGZkLCAwLCAwKTsKPiArwqDCoMKgwqDCoMKg wqBlbmdpbmUgPSB4ZV9lbmdpbmVfY3JlYXRlKGZkLCB2bSwgZWNpLCAwKTsKPiArwqDCoMKgwqDC oMKgwqBzcGluLT5zeW5jb2JqID0gc3luY29ial9jcmVhdGUoZmQsIDApOwo+ICsKPiArwqDCoMKg wqDCoMKgwqBpZiAoYWhuZCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYWRkciA9 IGludGVsX2FsbG9jYXRvcl9hbGxvY193aXRoX3N0cmF0ZWd5KGFobmQsIGJvLAo+IGJvX3NpemUs IDAsIEFMTE9DX1NUUkFURUdZX0xPV19UT19ISUdIKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgeGVf dm1fYmluZF9zeW5jKGZkLCB2bSwgYm8sIDAsIGFkZHIsIGJvX3NpemUpOwo+ICsKPiArwqDCoMKg wqDCoMKgwqB4ZV9zcGluX2luaXQoeGVfc3BpbiwgYWRkciwgdHJ1ZSk7Cj4gK8KgwqDCoMKgwqDC oMKgZXhlYy5lbmdpbmVfaWQgPSBlbmdpbmU7Cj4gK8KgwqDCoMKgwqDCoMKgZXhlYy5hZGRyZXNz ID0gYWRkcjsKPiArwqDCoMKgwqDCoMKgwqBzeW5jLmhhbmRsZSA9IHN5bmNvYmo7Cj4gK8KgwqDC oMKgwqDCoMKgaWd0X2Fzc2VydF9lcShpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9YRV9FWEVDLCAm ZXhlYyksIDApOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBzcGluLT5iYXRjaCA9IHhlX3NwaW4tPmJh dGNoOwo+ICvCoMKgwqDCoMKgwqDCoHNwaW4tPnN0YXJ0ID0geGVfc3Bpbi0+c3RhcnQ7Cj4gK8Kg wqDCoMKgwqDCoMKgc3Bpbi0+ZW5kID0geGVfc3Bpbi0+ZW5kOwo+ICvCoMKgwqDCoMKgwqDCoHJl dHVybiBzcGluOwo+ICsKPiArfQo+ICsKPiArdm9pZCB4ZV9zcGluX3N5bmNfd2FpdChpbnQgZmQs IHN0cnVjdCBpZ3Rfc3BpbiAqc3BpbikKPiArewo+ICvCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQo c3luY29ial93YWl0KGZkLCAmc3Bpbi0+c3luY29iaiwgMSwgSU5UNjRfTUFYLCAwLAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oE5VTEwpKTsKPiArfQo+ICsKPiArdm9pZCB4ZV9zcGluX2ZyZWUoaW50IGZkLCBzdHJ1Y3QgaWd0 X3NwaW4gKnNwaW4pCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzcGluLT5lbmQgPSAwOwo+ICvCoMKg wqDCoMKgwqDCoHhlX3ZtX2Rlc3Ryb3koZmQsIHNwaW4tPnZtKTsKPiArwqDCoMKgwqDCoMKgwqBn ZW1fY2xvc2UoZmQsIHNwaW4tPmhhbmRsZSk7Cj4gK30KPiArCj4gwqB2b2lkIHhlX2NvcmtfaW5p dChpbnQgZmQsIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICpod2UsCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGVfY29yayAqY29yaykKPiDC oHsKPiBkaWZmIC0tZ2l0IGEvbGliL3hlL3hlX3NwaW4uaCBiL2xpYi94ZS94ZV9zcGluLmgKPiBp bmRleCA3M2Y5YTAyNi4uNDg4NjdlYjggMTAwNjQ0Cj4gLS0tIGEvbGliL3hlL3hlX3NwaW4uaAo+ ICsrKyBiL2xpYi94ZS94ZV9zcGluLmgKPiBAQCAtMTMsMTkgKzEzLDI2IEBACj4gwqAjaW5jbHVk ZSA8c3RkYm9vbC5oPgo+IMKgCj4gwqAjaW5jbHVkZSAieGVfcXVlcnkuaCIKPiArI2luY2x1ZGUg ImxpYi9pZ3RfZHVtbXlsb2FkLmgiCj4gwqAKPiDCoC8qIE1hcHBlZCBHUFUgb2JqZWN0ICovCj4g Kwo+IMKgc3RydWN0IHhlX3NwaW4gewo+IMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBiYXRjaFsx Nl07Cj4gwqDCoMKgwqDCoMKgwqDCoHVpbnQ2NF90IHBhZDsKPiDCoMKgwqDCoMKgwqDCoMKgdWlu dDMyX3Qgc3RhcnQ7Cj4gwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IGVuZDsKPiArCj4gwqB9Owo+ IMKgCj4gK2lndF9zcGluX3QgKgo+ICt4ZV9zcGluX2NyZWF0ZShpbnQgZmQsIGNvbnN0IHN0cnVj dCBpZ3Rfc3Bpbl9mYWN0b3J5ICpvcHQpOwo+IMKgdm9pZCB4ZV9zcGluX2luaXQoc3RydWN0IHhl X3NwaW4gKnNwaW4sIHVpbnQ2NF90IGFkZHIsIGJvb2wKPiBwcmVlbXB0KTsKPiDCoGJvb2wgeGVf c3Bpbl9zdGFydGVkKHN0cnVjdCB4ZV9zcGluICpzcGluKTsKPiArdm9pZCB4ZV9zcGluX3N5bmNf d2FpdChpbnQgZmQsIHN0cnVjdCBpZ3Rfc3BpbiAqc3Bpbik7Cj4gwqB2b2lkIHhlX3NwaW5fd2Fp dF9zdGFydGVkKHN0cnVjdCB4ZV9zcGluICpzcGluKTsKPiDCoHZvaWQgeGVfc3Bpbl9lbmQoc3Ry dWN0IHhlX3NwaW4gKnNwaW4pOwo+ICt2b2lkIHhlX3NwaW5fZnJlZShpbnQgZmQsIHN0cnVjdCBp Z3Rfc3BpbiAqc3Bpbik7Cj4gwqAKPiDCoHN0cnVjdCB4ZV9jb3JrIHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHhlX3NwaW4gKnNwaW47Cgo=