From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from SHSQR01.spreadtrum.com (mx1.unisoc.com [222.66.158.135]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 63023386429 for ; Thu, 18 Jun 2026 12:44:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=222.66.158.135 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781786677; cv=none; b=frCzTMail78PZhDKyHjDlrbQ33I1IeuAcK+56/kz5i/DO3Vp3W8afPkNQaf0BxhHYW46MIwWiN9ArSht8ibZUKNzCYYYoDF7U4U+kErknom58F7ubNBiw2EcTTDBXmIiU3/h25ml1fW949i7JrKL/gMeK7AVkjBFCAgwPbtgrek= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781786677; c=relaxed/simple; bh=IeRjYgq6OSTJ+sTXYc1S9zFNJGBI+HIY4Wh4DTuhE5k=; h=From:To:CC:Subject:Date:Message-ID:References:Content-Type: MIME-Version; b=FigFysr8pFT/f5I85B6xvgzqLq6bTR+XeQDn8er4gAdxVy/8q5dDH6ffgduzCiQYTYuuJKH/S/y3KjqwxO1T0p2KLVaZqa6q8R9eNSFVvoYKrm0wOyoTIF7A7pZVqVPcQJ4GP/m1iQz/t8f1gFLZH8x5ySWxxUOjthQxF2x7DxY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=unisoc.com; spf=pass smtp.mailfrom=unisoc.com; dkim=pass (2048-bit key) header.d=unisoc.com header.i=@unisoc.com header.b=sLIeGlzF; arc=none smtp.client-ip=222.66.158.135 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=unisoc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=unisoc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=unisoc.com header.i=@unisoc.com header.b="sLIeGlzF" Received: from dlp.unisoc.com ([10.29.3.86]) by SHSQR01.spreadtrum.com with ESMTPS id 65ICiMOx039335 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Thu, 18 Jun 2026 20:44:22 +0800 (+08) (envelope-from Yi.Sun@unisoc.com) Received: from SHDLP.spreadtrum.com (BJMBX01.spreadtrum.com [10.0.64.7]) by dlp.unisoc.com (SkyGuard) with ESMTPS id 4gh0fm4rjzz2Msdlk; Thu, 18 Jun 2026 20:39:44 +0800 (CST) Received: from BJMBX02.spreadtrum.com (10.0.64.8) by BJMBX01.spreadtrum.com (10.0.64.7) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Thu, 18 Jun 2026 20:44:19 +0800 Received: from BJMBX02.spreadtrum.com ([fe80::25c6:a6ca:5208:2d95]) by BJMBX02.spreadtrum.com ([fe80::25c6:a6ca:5208:2d95%19]) with mapi id 15.00.1497.048; Thu, 18 Jun 2026 20:44:19 +0800 From: =?utf-8?B?5a2Z5q+FIChZaSBTdW4p?= To: Yury Norov CC: "mina86@mina86.com" , "279644543@qq.com" <279644543@qq.com>, "mnazarewicz@gmail.com" , "akpm@linux-foundation.org" , "akinobu.mita@gmail.com" , "linux-kernel@vger.kernel.org" , "tjmercier@google.com" , "qiang.zhao@freescale.com" , "scottwood@freescale.com" , "fvdl@google.com" , "tglx@kernel.org" , "song@kernel.org" , "hch@lst.de" , "minchan@kernel.org" , =?utf-8?B?546L56eRIChLZSBXYW5nKQ==?= , John Stultz Subject: =?utf-8?B?562U5aSNOiBbUEFUQ0ggdjUgMS8yXSBsaWI6IGJpdG1hcDogYWRkIHRlc3Rz?= =?utf-8?B?IGZvciBiaXRtYXBfZmluZF9uZXh0X3plcm9fYXJlYV9vZmYoKQ==?= Thread-Topic: [PATCH v5 1/2] lib: bitmap: add tests for bitmap_find_next_zero_area_off() Thread-Index: AQHc/sUvsk/zfMq8g0eNXkx5+e3YC7ZDSGQAgADFnjCAADQu0A== Date: Thu, 18 Jun 2026 12:44:19 +0000 Message-ID: References: <20260618015252.3601554-1-yi.sun@unisoc.com> <20260618015252.3601554-2-yi.sun@unisoc.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MAIL:SHSQR01.spreadtrum.com 65ICiMOx039335 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unisoc.com; s=default; t=1781786668; bh=IeRjYgq6OSTJ+sTXYc1S9zFNJGBI+HIY4Wh4DTuhE5k=; h=From:To:CC:Subject:Date:References; b=sLIeGlzFK6f5p697Shs441GDR8On7QGXnHkBkn/7thtHdZEXWvBgCEThXc1plzsG4 fkv5U4TetOFZhW0YFHWxjqVtKyuXxnklZqtwFMmJOvU7vgFV14JtQiDVYqeopEHNog yAOxJW1qRn7tzwZobuyZ70maR/HjxDWX7pr60Zjn4p5BGEOFsql32bHNheiJWkzMnG 6GYzle138NdnESei0uSVsM8vtw5KrcotwMy28GLo77vXqd6wM983/nBFiPEaXK9y4l COvEKIEnGLD6RzjVlLyw2cD2jcoir7UFLARq1/ng/ZG36mSoVnnUyBUj3G7fudij6a bOpZ4A0d5xpCA== DQoNCj4gLS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hku7bkuro6IOWtmeavhSAoWWkgU3Vu KQ0KPiDlj5HpgIHml7bpl7Q6IDIwMjblubQ25pyIMTjml6UgMTc6NDMNCj4g5pS25Lu25Lq6OiAn WXVyeSBOb3JvdicgPHl1cnkubm9yb3ZAZ21haWwuY29tPg0KPiDmioTpgIE6ICdtaW5hODZAbWlu YTg2LmNvbScgPG1pbmE4NkBtaW5hODYuY29tPjsgJzI3OTY0NDU0M0BxcS5jb20nDQo+IDwyNzk2 NDQ1NDNAcXEuY29tPjsgJ21uYXphcmV3aWN6QGdtYWlsLmNvbScgPG1uYXphcmV3aWN6QGdtYWls LmNvbT47DQo+ICdha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnJyA8YWtwbUBsaW51eC1mb3VuZGF0 aW9uLm9yZz47DQo+ICdha2lub2J1Lm1pdGFAZ21haWwuY29tJyA8YWtpbm9idS5taXRhQGdtYWls LmNvbT47ICdsaW51eC0NCj4ga2VybmVsQHZnZXIua2VybmVsLm9yZycgPGxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmc+OyAndGptZXJjaWVyQGdvb2dsZS5jb20nDQo+IDx0am1lcmNpZXJAZ29v Z2xlLmNvbT47ICdxaWFuZy56aGFvQGZyZWVzY2FsZS5jb20nDQo+IDxxaWFuZy56aGFvQGZyZWVz Y2FsZS5jb20+OyAnc2NvdHR3b29kQGZyZWVzY2FsZS5jb20nDQo+IDxzY290dHdvb2RAZnJlZXNj YWxlLmNvbT47ICdmdmRsQGdvb2dsZS5jb20nIDxmdmRsQGdvb2dsZS5jb20+Ow0KPiAndGdseEBr ZXJuZWwub3JnJyA8dGdseEBrZXJuZWwub3JnPjsgJ3NvbmdAa2VybmVsLm9yZycgPHNvbmdAa2Vy bmVsLm9yZz47DQo+ICdoY2hAbHN0LmRlJyA8aGNoQGxzdC5kZT47ICdtaW5jaGFuQGtlcm5lbC5v cmcnIDxtaW5jaGFuQGtlcm5lbC5vcmc+OyDnjovnp5ENCj4gKEtlIFdhbmcpIDxLZS5XYW5nQHVu aXNvYy5jb20+OyAnSm9obiBTdHVsdHonIDxqc3R1bHR6QGdvb2dsZS5jb20+DQo+IOS4u+mimDog 562U5aSNOiBbUEFUQ0ggdjUgMS8yXSBsaWI6IGJpdG1hcDogYWRkIHRlc3RzIGZvcg0KPiBiaXRt YXBfZmluZF9uZXh0X3plcm9fYXJlYV9vZmYoKQ0KPiANCj4gDQo+IA0KPiA+IC0tLS0t6YKu5Lu2 5Y6f5Lu2LS0tLS0NCj4gPiDlj5Hku7bkuro6IFl1cnkgTm9yb3YgPHl1cnkubm9yb3ZAZ21haWwu Y29tPg0KPiA+IOWPkemAgeaXtumXtDogMjAyNuW5tDbmnIgxOOaXpSAxMzo0OA0KPiA+IOaUtuS7 tuS6ujog5a2Z5q+FIChZaSBTdW4pIDxZaS5TdW5AdW5pc29jLmNvbT4NCj4gPiDmioTpgIE6IHl1 cnkubm9yb3ZAZ21haWwuY29tOyBtaW5hODZAbWluYTg2LmNvbTsgMjc5NjQ0NTQzQHFxLmNvbTsN Cj4gPiBtbmF6YXJld2ljekBnbWFpbC5jb207IGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc7DQo+ ID4gYWtpbm9idS5taXRhQGdtYWlsLmNvbTsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsg am9obi5zdHVsdHpAbGluYXJvLm9yZzsNCj4gPiB0am1lcmNpZXJAZ29vZ2xlLmNvbTsgcWlhbmcu emhhb0BmcmVlc2NhbGUuY29tOyBzY290dHdvb2RAZnJlZXNjYWxlLmNvbTsNCj4gPiBiZW5qYW1p bi5nYWlnbmFyZEBsaW5hcm8ub3JnOyBmdmRsQGdvb2dsZS5jb207IHRnbHhAa2VybmVsLm9yZzsN Cj4gPiBhbmRyZWFzLmhlcnJtYW5uQGNhbHhlZGEuY29tOyBzb25nQGtlcm5lbC5vcmc7IGhjaEBs c3QuZGU7DQo+ID4gc2FzaGEubGV2aW5Ab3JhY2xlLmNvbTsgbWluY2hhbkBrZXJuZWwub3JnDQo+ ID4g5Li76aKYOiBSZTogW1BBVENIIHY1IDEvMl0gbGliOiBiaXRtYXA6IGFkZCB0ZXN0cyBmb3IN Cj4gPiBiaXRtYXBfZmluZF9uZXh0X3plcm9fYXJlYV9vZmYoKQ0KPiA+DQo+ID4NCj4gPiDms6jm hI86IOi/meWwgemCruS7tuadpeiHquS6juWklumDqOOAgumZpOmdnuS9oOehruWumumCruS7tuWG heWuueWuieWFqO+8jOWQpuWImeS4jeimgeeCueWHu+S7u+S9lQ0KPiDpk74NCj4gPiDmjqXlkozp mYTku7bjgIINCj4gPiBDQVVUSU9OOiBUaGlzIGVtYWlsIG9yaWdpbmF0ZWQgZnJvbSBvdXRzaWRl IG9mIHRoZSBvcmdhbml6YXRpb24uIERvIG5vdCBjbGljaw0KPiBsaW5rcw0KPiA+IG9yIG9wZW4g YXR0YWNobWVudHMgdW5sZXNzIHlvdSByZWNvZ25pemUgdGhlIHNlbmRlciBhbmQga25vdyB0aGUg Y29udGVudCBpcw0KPiA+IHNhZmUuDQo+ID4NCj4gPg0KPiA+DQo+ID4gT24gVGh1LCBKdW4gMTgs IDIwMjYgYXQgMDk6NTI6NTFBTSArMDgwMCwgWWkgU3VuIHdyb3RlOg0KPiA+ID4gQWRkIGZ1bmN0 aW9uYWwgYW5kIHBlcmZvcm1hbmNlIHRlc3RzDQo+ID4gPiBmb3IgYml0bWFwX2ZpbmRfbmV4dF96 ZXJvX2FyZWFfb2ZmKCkuDQo+ID4gPg0KPiA+ID4gVG8gbWFpbnRhaW4gY29uc2lzdGVudCBvdXRw dXQgZm9ybWF0LA0KPiA+ID4gdXNlICJmaW5kX25leHRfMF9hcmVhIiBpbnN0ZWFkIG9mDQo+ID4g PiAiYml0bWFwX2ZpbmRfbmV4dF96ZXJvX2FyZWFfb2ZmIi4NCj4gPiA+DQo+ID4gPiBwZXJmb3Jt YW5jZSB0ZXN0cyBwYXJ0aWFsIG91dHB1dDoNCj4gPiA+IFN0YXJ0IHRlc3RpbmcgZmluZF9iaXQo KSB3aXRoIHJhbmRvbS1maWxsZWQgYml0bWFwDQo+ID4gPiBbICAgIDAuMTkxMTY2XSBmaW5kX25l eHRfMF9hcmVhOiAgICAgICAgICAgICAgMTUyMTMwOCBucywgICAxMzI2IGl0ZXJhdGlvbnMNCj4g PiA+IFsgICAgMC4xOTI1NTJdIGZpbmRfbmV4dF9iaXQ6ICAgICAgICAgICAgICAgICAxMzgyMzg1 IG5zLCAxNjM3MjQgaXRlcmF0aW9ucw0KPiA+ID4gU3RhcnQgdGVzdGluZyBmaW5kX2JpdCgpIHdp dGggc3BhcnNlIGJpdG1hcA0KPiA+ID4gWyAgICAwLjE5NjgzNV0gZmluZF9uZXh0XzBfYXJlYTog ICAgICAgICAgICAgIDQyNTAzMDcgbnMsIDMyMjQ5NyBpdGVyYXRpb25zDQo+ID4gPiBbICAgIDAu MTk2ODUzXSBmaW5kX25leHRfYml0OiAgICAgICAgICAgICAgICAgICAxNTA3NyBucywgICAgNjU2 IGl0ZXJhdGlvbnMNCj4gPiA+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBZaSBTdW4gPHlpLnN1bkB1 bmlzb2MuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgbGliL2ZpbmRfYml0X2JlbmNobWFyay5jIHwg MTcgKysrKysrKysrKysrKysrKysNCj4gPiA+ICBsaWIvdGVzdF9iaXRtYXAuYyAgICAgICAgfCAz OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gIDIgZmlsZXMg Y2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9saWIv ZmluZF9iaXRfYmVuY2htYXJrLmMgYi9saWIvZmluZF9iaXRfYmVuY2htYXJrLmMNCj4gPiA+IGlu ZGV4IDAwZDlkYzYxY2Q0Ni4uMDYyYTY5OTMwZDgzIDEwMDY0NA0KPiA+ID4gLS0tIGEvbGliL2Zp bmRfYml0X2JlbmNobWFyay5jDQo+ID4gPiArKysgYi9saWIvZmluZF9iaXRfYmVuY2htYXJrLmMN Cj4gPiA+IEBAIC0xNDksNiArMTQ5LDIxIEBAIHN0YXRpYyBpbnQgX19pbml0IHRlc3RfZmluZF9u ZXh0X2FuZF9iaXQoY29uc3Qgdm9pZA0KPiA+ICpiaXRtYXAsDQo+ID4gPiAgICAgICByZXR1cm4g MDsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gK3N0YXRpYyBpbnQgX19pbml0DQo+ID4gPiArdGVz dF9iaXRtYXBfZmluZF9uZXh0X3plcm9fYXJlYV9vZmYodW5zaWduZWQgbG9uZyAqYml0bWFwLCB1 bnNpZ25lZCBsb25nDQo+ID4gbGVuKQ0KPiA+ID4gK3sNCj4gPiA+ICsgICAgIHVuc2lnbmVkIGxv bmcgaSwgY250Ow0KPiA+ID4gKyAgICAga3RpbWVfdCB0aW1lOw0KPiA+ID4gKw0KPiA+ID4gKyAg ICAgdGltZSA9IGt0aW1lX2dldCgpOw0KPiA+ID4gKyAgICAgZm9yIChjbnQgPSBpID0gMDsgaSA8 IEJJVE1BUF9MRU47IGNudCsrKQ0KPiA+ID4gKyAgICAgICAgICAgICBpID0gYml0bWFwX2ZpbmRf bmV4dF96ZXJvX2FyZWFfb2ZmKGJpdG1hcCwgQklUTUFQX0xFTiwgaSwgOCwgMCwgMCkgKw0KPiAx Ow0KPiA+ID4gKyAgICAgdGltZSA9IGt0aW1lX2dldCgpIC0gdGltZTsNCj4gPiA+ICsgICAgIHBy X2VycigiZmluZF9uZXh0XzBfYXJlYTogICAlMThsbHUgbnMsICU2bGQgaXRlcmF0aW9uc1xuIiwg dGltZSwgY250KTsNCj4gPg0KPiA+IENoYW5nZSAlMThsbHUgdG8gJTE0bGx1IChvciB3aGF0ZXZl ciksIGFuZCBrZWVwIHRoZSBuYW1lIGFzIGl0IHNob3VsZC4NCj4gDQo+IG9rLCAgSSB3aWxsIG1h a2UgY2hhbmdlcyBpbiB2Ni4NCj4gDQo+ID4NCj4gPiA+ICsNCj4gPiA+ICsgICAgIHJldHVybiAw Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICBzdGF0aWMgaW50IF9faW5pdCBmaW5kX2JpdF90 ZXN0KHZvaWQpDQo+ID4gPiAgew0KPiA+ID4gICAgICAgdW5zaWduZWQgbG9uZyBuYml0cyA9IEJJ VE1BUF9MRU4gLyBTUEFSU0U7DQo+ID4gPiBAQCAtMTU4LDYgKzE3Myw3IEBAIHN0YXRpYyBpbnQg X19pbml0IGZpbmRfYml0X3Rlc3Qodm9pZCkNCj4gPiA+ICAgICAgIGdldF9yYW5kb21fYnl0ZXMo Yml0bWFwLCBzaXplb2YoYml0bWFwKSk7DQo+ID4gPiAgICAgICBnZXRfcmFuZG9tX2J5dGVzKGJp dG1hcDIsIHNpemVvZihiaXRtYXAyKSk7DQo+ID4gPg0KPiA+ID4gKyAgICAgdGVzdF9iaXRtYXBf ZmluZF9uZXh0X3plcm9fYXJlYV9vZmYoYml0bWFwLCBCSVRNQVBfTEVOKTsNCj4gPiA+ICAgICAg IHRlc3RfZmluZF9uZXh0X2JpdChiaXRtYXAsIEJJVE1BUF9MRU4pOw0KPiA+ID4gICAgICAgdGVz dF9maW5kX25leHRfemVyb19iaXQoYml0bWFwLCBCSVRNQVBfTEVOKTsNCj4gPiA+ICAgICAgIHRl c3RfZmluZF9sYXN0X2JpdChiaXRtYXAsIEJJVE1BUF9MRU4pOw0KPiA+ID4gQEAgLTE4MSw2ICsx OTcsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBmaW5kX2JpdF90ZXN0KHZvaWQpDQo+ID4gPiAgICAg ICAgICAgICAgIF9fc2V0X2JpdChnZXRfcmFuZG9tX3UzMl9iZWxvdyhCSVRNQVBfTEVOKSwgYml0 bWFwMik7DQo+ID4gPiAgICAgICB9DQo+ID4gPg0KPiA+ID4gKyAgICAgdGVzdF9iaXRtYXBfZmlu ZF9uZXh0X3plcm9fYXJlYV9vZmYoYml0bWFwLCBCSVRNQVBfTEVOKTsNCj4gPiA+ICAgICAgIHRl c3RfZmluZF9uZXh0X2JpdChiaXRtYXAsIEJJVE1BUF9MRU4pOw0KPiA+ID4gICAgICAgdGVzdF9m aW5kX25leHRfemVyb19iaXQoYml0bWFwLCBCSVRNQVBfTEVOKTsNCj4gPiA+ICAgICAgIHRlc3Rf ZmluZF9sYXN0X2JpdChiaXRtYXAsIEJJVE1BUF9MRU4pOw0KPiA+ID4gZGlmZiAtLWdpdCBhL2xp Yi90ZXN0X2JpdG1hcC5jIGIvbGliL3Rlc3RfYml0bWFwLmMNCj4gPiA+IGluZGV4IDY5ODEzYzEw ZTZjMC4uMTJhYTJjYTM3ZmUxIDEwMDY0NA0KPiA+ID4gLS0tIGEvbGliL3Rlc3RfYml0bWFwLmMN Cj4gPiA+ICsrKyBiL2xpYi90ZXN0X2JpdG1hcC5jDQo+ID4gPiBAQCAtMjM0LDYgKzIzNCw0MyBA QCBzdGF0aWMgdm9pZCBfX2luaXQgdGVzdF9maW5kX250aF9iaXQodm9pZCkNCj4gPiA+ICAgICAg IH0NCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gK3N0YXRpYyB2b2lkIF9faW5pdA0KPiA+ID4gK3Rl c3RfYml0bWFwX2ZpbmRfbmV4dF96ZXJvX2FyZWFfb2ZmKHZvaWQpDQo+ID4gPiArew0KPiA+ID4g KyAgICAgREVDTEFSRV9CSVRNQVAoYm1hcCwgMTkyKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIGJp dG1hcF9zZXQoYm1hcCwgMCwgMTkyKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIGJpdG1hcF9jbGVh cihibWFwLCAwLCA4KTsNCj4gPiA+ICsgICAgIF9fY2xlYXJfYml0KDUwLCBibWFwKTsNCj4gPiA+ ICsgICAgIGJpdG1hcF9jbGVhcihibWFwLCA2MCwgMTgpOw0KPiA+ID4gKyAgICAgX19zZXRfYml0 KDY5LCBibWFwKTsNCj4gPiA+ICsgICAgIF9fY2xlYXJfYml0KDgwLCBibWFwKTsNCj4gPiA+ICsg ICAgIGJpdG1hcF9jbGVhcihibWFwLCAxMDAsIDEwKTsNCj4gPiA+ICsgICAgIF9fY2xlYXJfYml0 KDEyMCwgYm1hcCk7DQo+ID4gPiArICAgICBiaXRtYXBfY2xlYXIoYm1hcCwgMTQ1LCA4KTsNCj4g PiA+ICsgICAgIGJpdG1hcF9jbGVhcihibWFwLCAxNjAsIDMyKTsNCj4gPiA+ICsNCj4gPiA+ICsg ICAgIGV4cGVjdF9lcV91aW50KDAsDQo+ID4gPiArICAgICAgICAgICAgIGJpdG1hcF9maW5kX25l eHRfemVyb19hcmVhX29mZihibWFwLCAxOTIsIDAsIDgsIDAsIDApKTsNCj4gPiA+ICsgICAgIGV4 cGVjdF9lcV91aW50KDAsDQo+ID4gPiArICAgICAgICAgICAgIGJpdG1hcF9maW5kX25leHRfemVy b19hcmVhX29mZihibWFwLCAxOTIsIDAsIDgsIDMsIDApKTsNCj4gPiA+ICsgICAgIGV4cGVjdF9l cV91aW50KDE2MywNCj4gPiA+ICsgICAgICAgICAgICAgYml0bWFwX2ZpbmRfbmV4dF96ZXJvX2Fy ZWFfb2ZmKGJtYXAsIDE5MiwgMCwgOCwgMywgMSkpOw0KPiA+ID4gKyAgICAgZXhwZWN0X2VxX3Vp bnQoNjAsDQo+ID4gPiArICAgICAgICAgICAgIGJpdG1hcF9maW5kX25leHRfemVyb19hcmVhX29m ZihibWFwLCAxOTIsIDEsIDgsIDAsIDApKTsNCj4gPiA+ICsgICAgIGV4cGVjdF9lcV91aW50KDE2 MCwNCj4gPiA+ICsgICAgICAgICAgICAgYml0bWFwX2ZpbmRfbmV4dF96ZXJvX2FyZWFfb2ZmKGJt YXAsIDE5MiwgMSwgOCwgNywgMCkpOw0KPiA+ID4gKyAgICAgZXhwZWN0X2VxX3VpbnQoNjAsDQo+ ID4gPiArICAgICAgICAgICAgIGJpdG1hcF9maW5kX25leHRfemVyb19hcmVhX29mZihibWFwLCAx OTIsIDEsIDgsIDcsIDQpKTsNCj4gPiA+ICsgICAgIGV4cGVjdF9lcV91aW50KDEwMCwNCj4gPiA+ ICsgICAgICAgICAgICAgYml0bWFwX2ZpbmRfbmV4dF96ZXJvX2FyZWFfb2ZmKGJtYXAsIDE5Miwg MCwgMTAsIDAsIDApKTsNCj4gPiA+ICsgICAgIGV4cGVjdF9lcV91aW50KDE2MCwNCj4gPiA+ICsg ICAgICAgICAgICAgYml0bWFwX2ZpbmRfbmV4dF96ZXJvX2FyZWFfb2ZmKGJtYXAsIDE5MiwgMCwg MzIsIDAsIDApKTsNCj4gPiA+ICsgICAgIGV4cGVjdF9lcV91aW50KDEsDQo+ID4gPiArICAgICAg ICAgICAgICEhKGJpdG1hcF9maW5kX25leHRfemVyb19hcmVhX29mZihibWFwLCAxOTIsIDAsIDMz LCAwLCAwKSA+IDE5MikpOw0KPiA+DQo+ID4gSXQgc2hvdWxkIGJlID49IGhlcmUuDQo+IA0KPiBU aGVyZSB3b3VsZCBiZSBhIHByb2JsZW0gaWYgdGhlIHJldHVybiB2YWx1ZSBlcXVhbHMgMTkyLg0K PiBzaXplID0gMTkyOw0KPiBpZiAoZW5kID4gc2l6ZSkNCj4gCXJldHVybiBlbmQ7DQo+IFNvIHRo ZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gMTkyLg0KDQpJIGFncmVlIHdpdGgg dGhlIHBhdGNoIHlvdSBzdWdnZXN0ZWQgdGhhdCByZXR1cm5zIHRoZSBzaXplLCBzbyBpdCBuZWVk cyB0byBiZSBjaGFuZ2VkIHRvID49IGhlcmUuDQoNCj4gDQo+ID4NCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiAgc3RhdGljIHZvaWQgX19pbml0IHRlc3RfZmlsbF9zZXQodm9pZCkNCj4gPiA+ICB7 DQo+ID4gPiAgICAgICBERUNMQVJFX0JJVE1BUChibWFwLCAxMDI0KTsNCj4gPiA+IEBAIC0xNTU5 LDYgKzE1OTYsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc2VsZnRlc3Qodm9pZCkNCj4gPiA+ICAg ICAgIHRlc3RfZm9yX2VhY2hfY2xlYXJfYml0cmFuZ2VfZnJvbSgpOw0KPiA+ID4gICAgICAgdGVz dF9mb3JfZWFjaF9zZXRfY2x1bXA4KCk7DQo+ID4gPiAgICAgICB0ZXN0X2Zvcl9lYWNoX3NldF9i aXRfd3JhcCgpOw0KPiA+ID4gKyAgICAgdGVzdF9iaXRtYXBfZmluZF9uZXh0X3plcm9fYXJlYV9v ZmYoKTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gIEtTVE1fTU9EVUxFX0xPQURFUlModGVzdF9i aXRtYXApOw0KPiA+ID4gLS0NCj4gPiA+IDIuMzQuMQ0K