From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2E4C3C54E68 for ; Mon, 18 Mar 2024 01:38:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 568736B0085; Sun, 17 Mar 2024 21:38:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 518C26B0087; Sun, 17 Mar 2024 21:38:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3E0B96B0088; Sun, 17 Mar 2024 21:38:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 2C4126B0085 for ; Sun, 17 Mar 2024 21:38:03 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id DF396120BA7 for ; Mon, 18 Mar 2024 01:38:02 +0000 (UTC) X-FDA: 81908448804.02.0E51F5C Received: from SHSQR01.spreadtrum.com (unknown [222.66.158.135]) by imf21.hostedemail.com (Postfix) with ESMTP id 81D8E1C000B for ; Mon, 18 Mar 2024 01:37:59 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf21.hostedemail.com: domain of zhaoyang.huang@unisoc.com designates 222.66.158.135 as permitted sender) smtp.mailfrom=zhaoyang.huang@unisoc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710725881; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references; bh=nujjCl4axnQMnh6XH0r9eSJHHPTuopQzWt/PpwFNOrc=; b=UrZJDmeUKIimpAazAhhvVm78F1d3FjdhgzwVEqpT1ZR5Z4JULnP2+cb7K6OUxE7V7dr9bv qFcJFDCF0UKLG+wjj2lEqY0GT2uFVRr6T4GWr7cQVoTljzflcAN2Lz5ItAuwTAqZKyRXS8 kGOzbL4Hkf1e3ehvLG5qWcal9e9bv3c= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf21.hostedemail.com: domain of zhaoyang.huang@unisoc.com designates 222.66.158.135 as permitted sender) smtp.mailfrom=zhaoyang.huang@unisoc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710725881; a=rsa-sha256; cv=none; b=pcwT4BQTvF9tpVHS+aAOi4Z78HJhpc5leo87Kj0TVZoygHMPLoM8D+GXd9sSfRvjXCQir4 hpFdqtJFS1lV+akxsmfSUiXS4kPARzNaQM31rD48XjBqbcCTG+6O8GTFdMHqlEvI96dH9V hrY4sUx2+om2DZXvnVCo61/VxJNnF5M= Received: from dlp.unisoc.com ([10.29.3.86]) by SHSQR01.spreadtrum.com with ESMTP id 42I1b7HJ093189; Mon, 18 Mar 2024 09:37:07 +0800 (+08) (envelope-from zhaoyang.huang@unisoc.com) Received: from SHDLP.spreadtrum.com (bjmbx02.spreadtrum.com [10.0.64.8]) by dlp.unisoc.com (SkyGuard) with ESMTPS id 4Tycqx5QDLz2LSNqc; Mon, 18 Mar 2024 09:35:41 +0800 (CST) Received: from BJMBX01.spreadtrum.com (10.0.64.7) by BJMBX02.spreadtrum.com (10.0.64.8) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Mon, 18 Mar 2024 09:37:04 +0800 Received: from BJMBX01.spreadtrum.com ([fe80::54e:9a:129d:fac7]) by BJMBX01.spreadtrum.com ([fe80::54e:9a:129d:fac7%16]) with mapi id 15.00.1497.023; Mon, 18 Mar 2024 09:37:05 +0800 From: =?utf-8?B?6buE5pyd6ZizIChaaGFveWFuZyBIdWFuZyk=?= To: Matthew Wilcox , Zhaoyang Huang CC: Andrew Morton , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , =?utf-8?B?5bq357qq5ruoIChTdGV2ZSBLYW5nKQ==?= Subject: reply: [PATCH] mm: fix a race scenario in folio_isolate_lru Thread-Topic: reply: [PATCH] mm: fix a race scenario in folio_isolate_lru Thread-Index: Adp40BsOv6uT5Y/pQkKDdtGWd160wg== Date: Mon, 18 Mar 2024 01:37:04 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.0.126.24] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MAIL:SHSQR01.spreadtrum.com 42I1b7HJ093189 X-Rspamd-Queue-Id: 81D8E1C000B X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: bmo7z4cb1suf4ieste36ccw58xexyp4m X-HE-Tag: 1710725879-816598 X-HE-Meta: U2FsdGVkX18vN3CdJRrtG8SR9zY5/sHpTYw9UNYTUPjt5T4MKy9Ro3Cs9J8sl4jPSviWNMd9kOnrJvHnP5zOkLmhv3JoHrSCC45zZ913N2lj2KeVZmd64W3pyzDZhEYCyRzwBE1Ff+u49VYRfsysuni0gT17B1SNiPnJ5jXB36aZOcrJHQucQ1EaL05j+wLgYHW0fYVXoe3gnHCyQPZkx095u1saBYzf0uy4nYWs5+AohEMT5U1eeQ/MvgJXZgcOzp67ukCRm7ZbXZCqPPiJqSnOUPSokiU1zmCNV3WhNybSS2pd3Jniyeyd578sDsZHJVHO5aegQFtgVzeCCWn97mNoE7glp9FevYjzUPFsx11gjcr1T0XIsVKXDbuwW5kSJU41jH/Q4OoFvMo3i+tPArxcvzu5aruFTfW+LFLoDsR5PZjNjbWtbwfQnk78AdEinSN//2r8vQZqfy68LLZ5ScHnQb24GASmjDmGLUfVQWor0FkzvK3QFtlA5+J2JRb0J9ENC7sz8lNrrFrh7oBMZfZBbVLnqLEvRNebsh1GtmI3RHcvjHcL8yH5nmUL4jCxTwUnlKEPsb5iCivMqVvsAp/3esEtoaamzGv2509EuO9SmZuBO36AoHqmDlXzy8crUyLcf2U8C0X+WJWFIqVwlf63dHU+GSfg0+XXwlOA1lV79VkneMCSJvXUqXQaYi61QJHeX/bgFp/inMSdFhVy+SraKRVwNnCUYFfw4lqPvriiiKCC1v3EeD++8aryG9M6GlGCGfzKJWXGnOFkSuqKy6P7LURaLb0zMG0b+KrrRBoItDkufPG3rANHSCg1v3nyVH07uCXR0C5cx8F+T1qvbOvuBxULC9a8saQFCTsabUE9NWSh00Z4u6KMc/0zvPgO8Dq0zNfK2q93idZDNlE9T5aCx+zSv5uJ7KMYyBtz9/KiU6mRejBPxilcqWQG3cqlhfLCJTeHhTmXEpUrj2u EL8bUcwc HpKH6OsmyekmF1C3JOSwJ93Oh5tW51nCuBUU7hxLTojKoRSwQzUbNd1qvLqDr/rw882G33joEOxgCFvjo0z++SPBdl1Wj6hb+Iu+KNt2ilyLp/Kh4sp5QT1gOfakaCuoasMlO6ZsuNXurLSNb5hj5v89wAcnoW8jASyKzuICCD/ewtrI19bAnfF0xnpIwcW2sVGLuAmdg96LQCn30AEPEtZlHDeOlf/k2hbYR9DaYDpYPoL2OODdzl8+e2stpSoQ2vp3u3ydBgkBRge832Q5nUytkizhSzPhmzXxl/Eo54QG4HkcO7RoWL+PiqHRu7ejeiK6BUqfYnuh0J2WjQUP2lwVqZPE6ihcTyp6kYQxx/N8TknzWx2wr2hgGgydBpuoKV+3ktbHlkNXDZ+uNYV/6ctQ/ciXddkr+u7Gy X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Pg0KPg0KPk9uIFN1biwgTWFyIDE3LCAyMDI0IGF0IDEyOjA3OjQwUE0gKzA4MDAsIFpoYW95YW5n IEh1YW5nIHdyb3RlOg0KPj4gQ291bGQgaXQgYmUgdGhpcyBzY2VuYXJpbywgd2hlcmUgZm9saW8g Y29tZXMgZnJvbSBwdGUodGhyZWFkIDApLCBsb2NhbA0KPj4gZmJhdGNoKHRocmVhZCAxKSBhbmQg cGFnZSBjYWNoZSh0aHJlYWQgMikgY29uY3VycmVudGx5IGFuZCBwcm9jZWVkDQo+PiBpbnRlcm1p eGVkIHdpdGhvdXQgbG9jaydzIHByb3RlY3Rpb24/IEFjdHVhbGx5LCBJTU8sIHRocmVhZCAxIGFs c28NCj4+IGNvdWxkIHNlZSB0aGUgZm9saW8gd2l0aCByZWZjbnQ9PTEgc2luY2UgaXQgZG9lc24n dCBjYXJlIGlmIHRoZSBwYWdlDQo+PiBpcyBvbiB0aGUgcGFnZSBjYWNoZSBvciBub3QuDQo+Pg0K Pj4gbWFkaXZpc2VfY29sZF9hbmRfcGFnZW91dCBkb2VzIG5vIGV4cGxpY2l0IGZvbGlvX2dldCB0 aGluZyBzaW5jZSB0aGUNCj4+IGZvbGlvIGNvbWVzIGZyb20gcHRlIHdoaWNoIGltcGxpZXMgaXQg aGFzIG9uZSByZWZjbnQgZnJvbSBwYWdlY2FjaGUNCj4NCj5NbW0sIG5vLiAgSXQncyBpbXBsaWNp dCwgYnV0IG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZSgpDQo+ZG9lcyBndWFyYW50 ZWUgdGhhdCB0aGUgZm9saW8gaGFzIGF0IGxlYXN0IG9uZSByZWZjb3VudC4NCj4NCj5TaW5jZSB3 ZSBnZXQgdGhlIGZvbGlvIGZyb20gdm1fbm9ybWFsX2ZvbGlvKHZtYSwgYWRkciwgcHRlbnQpOyB3 ZSBrbm93IHRoYXQNCj50aGVyZSBpcyBhdCBsZWFzdCBvbmUgbWFwY291bnQgb24gdGhlIGZvbGlv LiAgcmVmY291bnQgaXMgYWx3YXlzID49IG1hcGNvdW50Lg0KPlNpbmNlIHdlIGhvbGQgcHRlX29m ZnNldF9tYXBfbG9jaygpLCB3ZSBrbm93IHRoYXQgbWFwY291bnQgKGFuZCB0aGVyZWZvcmUNCj5y ZWZjb3VudCkgY2Fubm90IGJlIGRlY3JlbWVudGVkIHVudGlsIHdlIGNhbGwgcHRlX3VubWFwX3Vu bG9jaygpLCB3aGljaCB3ZQ0KPmRvbid0IGRvIHVudGlsIHdlIGhhdmUgY2FsbGVkIGZvbGlvX2lz b2xhdGVfbHJ1KCkuDQo+DQo+R29vZCB0cnkgdGhvdWdoLCB0b29rIG1lIGEgZmV3IG1pbnV0ZXMg b2YgbG9va2luZyBhdCBpdCB0byBjb252aW5jZSBteXNlbGYgdGhhdA0KPml0IHdhcyBzYWZlLg0K Pg0KPlNvbWV0aGluZyB0byBiZWFyIGluIG1pbmQgaXMgdGhhdCBpZiB0aGUgcmFjZSB5b3Ugb3V0 bGluZSBpcyByZWFsLCBmYWlsaW5nIHRvIGhvbGQgYQ0KPnJlZmNvdW50IG9uIHRoZSBmb2xpbyBs ZWF2ZXMgdGhlIGNhbGxlciBzdXNjZXB0aWJsZSB0byB0aGUNCj5WTV9CVUdfT05fRk9MSU8oIWZv bGlvX3JlZl9jb3VudChmb2xpbyksIGZvbGlvKTsgaWYgdGhlIG90aGVyIHRocmVhZCBjYWxscw0K PmZvbGlvX3B1dCgpLg0KUmVzZW5kIHRoZSBjaGFydCB2aWEgb3V0bG9vay4NCkkgdGhpbmsgdGhl IHByb2JsZW0gcmVseSBvbiBhbiBzcGVjaWFsIHRpbWluZyB3aGljaCBpcyByYXJlLCBJIHdvdWxk IGxpa2UgdG8gbGlzdCB0aGVtIGJlbG93IGluIHRpbWluZyBzZXF1ZW5jZS4NCg0KMS4gdGhyZWFk IDAgY2FsbHMgZm9saW9faXNvbGF0ZV9scnUgd2l0aCByZWZjbnQgPT0gMQ0KMi4gdGhyZWFkIDEg Y2FsbHMgcmVsZWFzZV9wYWdlcyB3aXRoIHJlZmNudCA9PSAyLihJTU8sIGl0IGNvdWxkIGJlIDEg YXMgcmVsZWFzZV9wYWdlcyBkb2Vzbid0IGNhcmUgaWYgdGhlIGZvbGlvIGlzIHVzZWQgYnkgcGFn ZSBjYWNoZSBvciBmcykNCjMuIHRocmVhZCAyIGRlY3JlYXNlIHJlZmNudCB0byAxIGJ5IGNhbGxp bmcgZmlsZW1hcF9mcmVlX2ZvbGlvLihhcyBJIG1lbnRpb25lZCBpbiAyLCB0aHJlYWQgMiBpcyBu b3QgbWFuZGF0YXJ5IGhlcmUpDQo0LiB0aHJlYWQgMSBjYWxscyBmb2xpb19wdXRfdGVzdHplcm8g YW5kIHBhc3MuKGxydXZlYy0+bG9jayBoYXMgbm90IGJlZW4gdGFrZSBoZXJlKQ0KNS4gdGhyZWFk IDAgY2xlYXIgZm9saW8ncyBQR19scnUgYnkgY2FsbGluZyBmb2xpb190ZXN0X2NsZWFyX2xydS4g VGhlIGZvbGlvX2dldCBiZWhpbmQgaGFzIG5vIG1lYW5pbmcgdGhlcmUuDQo2LiB0aHJlYWQgMSBm YWlsZWQgaW4gZm9saW9fdGVzdF9scnUgYW5kIGxlYXZlIHRoZSBmb2xpbyBvbiB0aGUgTFJVLg0K Ny4gdGhyZWFkIDEgYWRkIGZvbGlvIHRvIHBhZ2VzX3RvX2ZyZWUgd3JvbmdseSB3aGljaCBjb3Vs ZCBicmVhayB0aGUgTFJVJ3MtPmxpc3QgYW5kIHdpbGwgaGF2ZSBuZXh0IGZvbGlvIGV4cGVyaWVu Y2UgbGlzdF9kZWxfaW52YWxpZA0KDQojdGhyZWFkIDAobWFkaXZpc2VfY29sZF9hbmRfcGFnZW91 dCkgICAgICAgICMxKGxydV9hZGRfZHJhaW4tPmZiYXRjaF9yZWxlYXNlX3BhZ2VzKSAgICAgICAj MihyZWFkX3BhZ2VzLT5maWxlbWFwX3JlbW92ZV9mb2xpb3MpDQpyZWZjbnQgPT0gMShyZXByZXNl bnQgcGFnZSBjYWNoZSkgICAgICAgICAgICAgcmVmY250PT0yKGFub3RoZXIgb25lIHJlcHJlc2Vu dCBMUlUpICAgICAgICAgIGZvbGlvIGNvbWVzIGZyb20gcGFnZSBjYWNoZQ0KDQpmb2xpb19pc29s YXRlX2xydSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfcGFnZXMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZpbGVtYXBfZnJlZV9mb2xpbw0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCQkJCQkgcmVmY250PT0xKGRlY3JlYXNlIHRoZSBv bmUgb2YgcGFnZSBjYWNoZSkNCmZvbGlvX3Rlc3RfY2xlYXJfbHJ1DQo8Zm9saW8ncyBQR19scnUg Z29uZT4NCgkJCQkJCQkJCQlmb2xpb19wdXRfdGVzdHplcm8gPT0gdHJ1ZQ0KZm9saW9fZ2V0DQoJ CQkJCQkJCQkJZm9saW9fdGVzdF9scnUgPT0gZmFsc2UNCgkJCQkJCQkJCSAgCTxObyBscnV2ZWNf ZGVsX2ZvbGlvPg0KCQkJCQkJCQkJCWxpc3RfYWRkKGZvbGlvLT5scnUsIHBhZ2VzX3RvX2ZyZWUp DQoJCQkJCQkJCQkJLy9jdXJyZW50IGZvbGlvIHdpbGwgYnJlYWsgTFJVJ3MgaW50ZWdyaXR5IHNp bmNlIGl0IGhhcyBub3QgYmVlbiBkZWxldGVkDQo+DQo+SSBjYW4ndCB1bmRlcnN0YW5kIGFueSBv ZiB0aGUgc2NlbmFyaW9zIHlvdSBvdXRsaW5lIGJlbG93Lg0KPlBsZWFzZSB0cnkgYWdhaW4gd2l0 aG91dCByZWx5aW5nIG9uIGluZGVudGF0aW9uLg0KPg0KPj4gI3RocmVhZCAwKG1hZGl2aXNlX2Nv bGRfYW5kX3BhZ2VvdXQpICAgICAgICAjMQ0KPj4gKGxydV9hZGRfZHJhaW4tPmZiYXRjaF9yZWxl YXNlX3BhZ2VzKQ0KPj4gIzIocmVhZF9wYWdlcy0+ZmlsZW1hcF9yZW1vdmVfZm9saW9zKQ0KPj4g cmVmY250ID09IDEocmVwcmVzZW50IHBhZ2UgY2FjaGUpDQo+Pg0KPj4gcmVmY250PT0yKGFub3Ro ZXIgb25lIHJlcHJlc2VudCBMUlUpDQo+PiAgICBmb2xpbyBjb21lcyBmcm9tIHBhZ2UgY2FjaGUN Cj4+IGZvbGlvX2lzb2xhdGVfbHJ1DQo+PiByZWxlYXNlX3BhZ2VzDQo+PiAgICAgICAgICAgICAg ICAgIGZpbGVtYXBfZnJlZV9mb2xpbw0KPj4NCj4+DQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlZmNudD09MShkZWNyZWFzZSB0aGUgb25lIG9mIHBhZ2UNCj5jYWNoZSkNCj4+DQo+ PiAgZm9saW9fcHV0X3Rlc3R6ZXJvID09IHRydWUNCj4+DQo+PiAgIDxObyBscnV2ZWNfZGVsX2Zv bGlvPg0KPj4NCj4+ICBsaXN0X2FkZChmb2xpby0+bHJ1LCBwYWdlc190b19mcmVlKSAvL2N1cnJl bnQgZm9saW8gd2lsbCBicmVhayBMUlUncw0KPj4gaW50ZWdyaXR5IHNpbmNlIGl0IGhhcyBub3Qg YmVlbiBkZWxldGVkDQo+Pg0KPj4gSW4gY2FzZSBvZiBnbWFpbCdzIHdyYXAsIHNwbGl0IGFib3Zl IGNoYXJ0IHRvIHR3byBwYXJ0cw0KPj4NCj4+ICN0aHJlYWQgMChtYWRpdmlzZV9jb2xkX2FuZF9w YWdlb3V0KSAgICAgICAgIzENCj4+IChscnVfYWRkX2RyYWluLT5mYmF0Y2hfcmVsZWFzZV9wYWdl cykNCj4+IHJlZmNudCA9PSAxKHJlcHJlc2VudCBwYWdlIGNhY2hlKQ0KPj4NCj4+IHJlZmNudD09 Mihhbm90aGVyIG9uZSByZXByZXNlbnQgTFJVKQ0KPj4gZm9saW9faXNvbGF0ZV9scnUNCj5yZWxl YXNlX3BhZ2VzDQo+Pg0KPj4gIGZvbGlvX3B1dF90ZXN0emVybyA9PSB0cnVlDQo+Pg0KPj4gICA8 Tm8gbHJ1dmVjX2RlbF9mb2xpbz4NCj4+DQo+PiAgbGlzdF9hZGQoZm9saW8tPmxydSwgcGFnZXNf dG9fZnJlZSkNCj4+DQo+PiAgLy9jdXJyZW50IGZvbGlvIHdpbGwgYnJlYWsgTFJVJ3MgaW50ZWdy aXR5IHNpbmNlIGl0IGhhcyBub3QgYmVlbg0KPj4gZGVsZXRlZA0KPj4NCj4+ICMxIChscnVfYWRk X2RyYWluLT5mYmF0Y2hfcmVsZWFzZV9wYWdlcykNCj4+ICMyKHJlYWRfcGFnZXMtPmZpbGVtYXBf cmVtb3ZlX2ZvbGlvcykNCj4+IHJlZmNudD09Mihhbm90aGVyIG9uZSByZXByZXNlbnQgTFJVKQ0K Pj4gICAgZm9saW8gY29tZXMgZnJvbSBwYWdlIGNhY2hlDQo+PiByZWxlYXNlX3BhZ2VzDQo+PiAg ICAgICAgICAgICAgICAgIGZpbGVtYXBfZnJlZV9mb2xpbw0KPj4NCj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWZjbnQ9PTEoZGVjcmVhc2UgdGhlIG9uZSBvZiBwYWdlDQo+Y2FjaGUp DQo+PiBmb2xpb19wdXRfdGVzdHplcm8gPT0gdHJ1ZSAgPE5vIGxydXZlY19kZWxfZm9saW8+DQo+ PiBsaXN0X2FkZChmb2xpby0+bHJ1LCBwYWdlc190b19mcmVlKSAvL2N1cnJlbnQgZm9saW8gd2ls bCBicmVhayBMUlUncw0KPj4gaW50ZWdyaXR5IHNpbmNlIGl0IGhhcyBub3QgYmVlbiBkZWxldGVk DQo+PiA+DQo+PiA+ID4gICAgIzAgZm9saW9faXNvbGF0ZV9scnUgICAgICAgICAgIzEgcmVsZWFz ZV9wYWdlcw0KPj4gPiA+IEJVR19PTighZm9saW9fcmVmY250KQ0KPj4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYNCj4oZm9saW9fcHV0X3Rlc3R6ZXJvKCkp DQo+PiA+ID4gICAgZm9saW9fZ2V0KGZvbGlvKQ0KPj4gPiA+ICAgIGlmIChmb2xpb190ZXN0X2Ns ZWFyX2xydSgpKQ0K