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 617B9C77B75 for ; Tue, 9 May 2023 06:51:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DEA0628000D; Tue, 9 May 2023 02:51:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D9AB3280001; Tue, 9 May 2023 02:51:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C630228000D; Tue, 9 May 2023 02:51:07 -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 B860C280001 for ; Tue, 9 May 2023 02:51:07 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 82FD2C045F for ; Tue, 9 May 2023 06:51:07 +0000 (UTC) X-FDA: 80769794574.14.09A696B Received: from mx6.didiglobal.com (mx6.didiglobal.com [111.202.70.123]) by imf12.hostedemail.com (Postfix) with SMTP id C8B8340006 for ; Tue, 9 May 2023 06:51:04 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=none; spf=pass (imf12.hostedemail.com: domain of chengkaitao@didiglobal.com designates 111.202.70.123 as permitted sender) smtp.mailfrom=chengkaitao@didiglobal.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1683615065; 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:in-reply-to:references; bh=nMgK1RvYH5VjO84+DA+zGs+4jhBdFK6sb8PLw+BuFyM=; b=xh0kUYngOTYrs/BgBCLotM7NmiHGZLs2kTcNWRlz8CG9Zh4ATP3yD0VIbpiBDGjhKefYrB WlGcRhMAQwuASvw5yoGLLXLlrO02SW2XyN62jgvN1+mu/Ni2mkIsOaSmIu1qWBKmGgNBJA WVVn1J4xx18HQjvgtYUTgk1GpPeHeZ8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1683615065; a=rsa-sha256; cv=none; b=Dj29hhCNEYFHVhHo3kqN6nEAZIuGyKiWPmjj77uQxibTOJO/033wckeZjsK4tlraCviu3d 1crJpk0uGPgHxq0Rln7X/nrJv+DxajndY7hFC3sRRjwwglIDjKtQpdlnIrGG1AlCvXdVZr MHo5Rlnddr9rtnFbzRbTH0NzVUHcu5k= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=none; spf=pass (imf12.hostedemail.com: domain of chengkaitao@didiglobal.com designates 111.202.70.123 as permitted sender) smtp.mailfrom=chengkaitao@didiglobal.com; dmarc=none Received: from mail.didiglobal.com (unknown [10.79.65.18]) by mx6.didiglobal.com (Maildata Gateway V2.8) with ESMTPS id 1A180110053A11; Tue, 9 May 2023 14:51:00 +0800 (CST) Received: from ZJY03-ACTMBX-05.didichuxing.com (10.79.71.35) by ZJY02-ACTMBX-06.didichuxing.com (10.79.65.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 9 May 2023 14:50:59 +0800 Received: from ZJY03-ACTMBX-05.didichuxing.com ([fe80::7d7d:d727:7a02:e909]) by ZJY03-ACTMBX-05.didichuxing.com ([fe80::7d7d:d727:7a02:e909%7]) with mapi id 15.01.2507.021; Tue, 9 May 2023 14:50:59 +0800 X-MD-Sfrom: chengkaitao@didiglobal.com X-MD-SrcIP: 10.79.65.18 From: =?utf-8?B?56iL5Z6y5rabIENoZW5na2FpdGFvIENoZW5n?= To: Michal Hocko CC: "tj@kernel.org" , "lizefan.x@bytedance.com" , "hannes@cmpxchg.org" , "corbet@lwn.net" , "roman.gushchin@linux.dev" , "shakeelb@google.com" , "akpm@linux-foundation.org" , "brauner@kernel.org" , "muchun.song@linux.dev" , "viro@zeniv.linux.org.uk" , "zhengqi.arch@bytedance.com" , "ebiederm@xmission.com" , "Liam.Howlett@oracle.com" , "chengzhihao1@huawei.com" , "pilgrimtao@gmail.com" , "haolee.swjtu@gmail.com" , "yuzhao@google.com" , "willy@infradead.org" , "vasily.averin@linux.dev" , "vbabka@suse.cz" , "surenb@google.com" , "sfr@canb.auug.org.au" , "mcgrof@kernel.org" , "feng.tang@intel.com" , "cgroups@vger.kernel.org" , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-mm@kvack.org" Subject: Re: [PATCH v3 0/2] memcontrol: support cgroup level OOM protection Thread-Topic: [PATCH v3 0/2] memcontrol: support cgroup level OOM protection Thread-Index: AQHZgBDkVfbL1Z6yKEKz1c3DJxWsna9OEngAgAIGrwD//9B5AIABm3eA Date: Tue, 9 May 2023 06:50:59 +0000 Message-ID: <900EF82B-9899-46DD-9ACC-16D82D9B7A3F@didiglobal.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.79.65.102] Content-Type: text/plain; charset="utf-8" Content-ID: <04171DD01B3BA941934C36D472FF7216@didichuxing.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Rspamd-Queue-Id: C8B8340006 X-Stat-Signature: phiy3gphayo6rp8inoqn1ybk49pup3dr X-Rspam-User: X-Rspamd-Server: rspam09 X-HE-Tag: 1683615064-130900 X-HE-Meta: U2FsdGVkX1/Ul/ikYXYyw8mV8FL8UvfrpkPiNgn2juhhO4e9vROnlMsQnC9jR1csewzpAKE/ShfihcNuykdiM8QOSvrbrr68RNP8MlsPbskc1mUQhA06Y3MNSElF7/uBpxJfmC8lgiqMYJCV0FMbb2T7nG8tUqDEOuX8q2WlQFYUm0tseyKDp+eCGM8dFuU8Mh+94hMW5j3tnDHNrXcY6Wn5tKM3T23E9nZcwhgwUO2T09AOqzSKtGFE//furO2+WM4Mdbb+WscS1mY+qw195964XFp5ZQT/VAUgZT5a2ZeVDiDZASNZhMs/gw9FGKdYqaJzSXiE951WAKouS1EiLYPGIfk8CIJrbHZDbYMfD4GdVQeyQqHE+3y3TSAuZCUR9XsLnElO9LMystkSr5fIo3Ej63+GFnUl2pOGuX5zG0MiWihNoF0/Oh6m2PyWH+HHmA79cAO350bv91hHxvnsYALMQfPlqzGox0FRRvw5vy1XSZpRT/SHhKt6uchTY8JcX1bJ2c+QqauxI9Hq3M4x5Jf+pP8nsVS8qYwBvB3z2OozL+99HdSXYtDp5wPEGqPEPK2wHcUOoF8XsFd31xLQqLf3JAHnDnWcsmI/QfV+SeiE285TNZJnwzAEml02S+GfY1H229UsMioBaHnceAhaKlM6brYYzQBq4gJOXsPsbyxwwm0k9Ti9YqFABRsPnufctYDLOFJ/wtqCEmcqdYDXOV2Fqh4nLWDaInTW3yww0xH3oFjty1B636+PgXsEHUqEBeUvhELmacYaFCi8aaS8/eL3Xx/XMcm1T+fRIoePsf6VWTQSOlblbqUrfpqBkqybqx1IIq1muWNCu8hvGocVbLHUfeDe/8mW7wW+YAJSDMTGiNo05oxY7ZIiMRRZa7JrLm9aEqg8gxZr85gA8PiZHTCAb0IRmT+PLqK9CLx7WJggvBqeRFIk3687a8wavLZHXBdcumJmnRVnBU2qn9P 30Og7Gmr 8DuwdqMp8L0nrTdvXHryRs+Z6aL0eff/060XG61KQwANLaiN497t8VLPtwCrJ/Q/LFpdyje7sCw7AayuItq8jnDuR5LeZE+IdK7ddKRpD4H0k0nl0kKDQm4ABCq5MBlTMUFfs1IQl6yIZTdnU7GizQesfS9GUZfe4aEPENMbqc/2ttx7g4a5cITTShyRsUDV0TeGmMi+ySIdyyK9QOXpGT2GAgOoVOc8TKxxcQwbDX/lWB/gfDzaNf5cv5j731VWRvJPk3h2bN3DYGKnMi83pW5IxoDMc8jdjZsz6GocZBYEyqCxH6OADUbfGBoR6Gr9gmpyVsmtSCquEvTmCOISXTDbWUhbKFrwz7QmPZJPG8uY7+dta4a4yB4M0TM1y1IZjGQ+RG5WPLyNKjdmlavKUj0dW3y4VTyK0UXyrOHqC0jqGDQbX8jV0tIpnseytDM6djTBfh1MyqiL9lL8n1lXWk/kOEb5KmS852lhi 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: QXQgMjAyMy0wNS0wOCAyMjoxODoxOCwgIk1pY2hhbCBIb2NrbyIgPG1ob2Nrb0BzdXNlLmNvbT4g d3JvdGU6DQo+T24gTW9uIDA4LTA1LTIzIDA5OjA4OjI1LCDnqIvlnrLmtpsgQ2hlbmdrYWl0YW8g Q2hlbmcgd3JvdGU6DQo+PiBBdCAyMDIzLTA1LTA3IDE4OjExOjU4LCAiTWljaGFsIEhvY2tvIiA8 bWhvY2tvQHN1c2UuY29tPiB3cm90ZToNCj4+ID5PbiBTYXQgMDYtMDUtMjMgMTk6NDk6NDYsIGNo ZW5na2FpdGFvIHdyb3RlOg0KPj4gPg0KPj4gPlRoYXQgYmVpbmcgc2FpZCwgbWFrZSBzdXJlIHlv dSBkZXNjcmliZSB5b3VyIHVzZWNhc2UgbW9yZSB0aG9yb3VnaGx5Lg0KPj4gPlBsZWFzZSBhbHNv IG1ha2Ugc3VyZSB5b3UgZGVzY3JpYmUgdGhlIGludGVuZGVkIGhldXJpc3RpYyBvZiB0aGUga25v Yi4NCj4+ID5JdCBpcyBub3QgcmVhbGx5IGNsZWFyIGZyb20gdGhlIGRlc2NyaXB0aW9uIGhvdyB0 aGlzIGZpdHMgaGllcmFyY2hpY2FsDQo+PiA+YmVoYXZpb3Igb2YgY2dyb3Vwcy4gSSB3b3VsZCBi ZSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHNlbWFudGljcw0KPj4gPm9mIG5vbi1sZWFm IG1lbWNncyBwcm90ZWN0aW9uIGFzIHRoZXkgZG8gbm90IGhhdmUgYW55IGFjdHVhbCBwcm9jZXNz ZXMNCj4+ID50byBwcm90ZWN0Lg0KPj4gPg0KPj4gPkFsc28gdGhlcmUgaGF2ZSBiZWVuIGNvbmNl cm5zIG1lbnRpb25lZCBpbiB2MiBkaXNjdXNzaW9uIGFuZCBpdCB3b3VsZCBiZQ0KPj4gPnJlYWxs eSBhcHByZWNpYXRlZCB0byBzdW1tYXJpemUgaG93IHlvdSBoYXZlIGRlYWx0IHdpdGggdGhlbS4N Cj4+ID4NCj4+ID5QbGVhc2UgYWxzbyBub3RlIHRoYXQgbWFueSBwZW9wbGUgYXJlIGdvaW5nIHRv IGJlIHNsb3cgaW4gcmVzcG9uZGluZw0KPj4gPnRoaXMgd2VlayBiZWNhdXNlIG9mIExTRk1NIGNv bmZlcmVuY2UNCj4+ID4oaHR0cHM6Ly9ldmVudHMubGludXhmb3VuZGF0aW9uLm9yZy9sc2ZtbS8p DQo+PiANCj4+IEhlcmUgaXMgYSBtb3JlIGRldGFpbGVkIGNvbXBhcmlzb24gYW5kIGludHJvZHVj dGlvbiBvZiB0aGUgb2xkIG9vbV9zY29yZV9hZGoNCj4+IG1lY2hhbmlzbSBhbmQgdGhlIG5ldyBv b21fcHJvdGVjdCBtZWNoYW5pc20sDQo+PiAxLiBUaGUgcmVndWxhdGluZyBncmFudWxhcml0eSBv ZiBvb21fcHJvdGVjdCBpcyBzbWFsbGVyIHRoYW4gdGhhdCBvZiBvb21fc2NvcmVfYWRqLg0KPj4g T24gYSA1MTJHIHBoeXNpY2FsIG1hY2hpbmUsIHRoZSBtaW5pbXVtIGdyYW51bGFyaXR5IGFkanVz dGVkIGJ5IG9vbV9zY29yZV9hZGoNCj4+IGlzIDUxMk0sIGFuZCB0aGUgbWluaW11bSBncmFudWxh cml0eSBhZGp1c3RlZCBieSBvb21fcHJvdGVjdCBpcyBvbmUgcGFnZSAoNEspLg0KPj4gMi4gSXQg bWF5IGJlIHNpbXBsZSB0byBjcmVhdGUgYSBsaWdodHdlaWdodCBwYXJlbnQgcHJvY2VzcyBhbmQg dW5pZm9ybWx5IHNldCB0aGUgDQo+PiBvb21fc2NvcmVfYWRqIG9mIHNvbWUgaW1wb3J0YW50IHBy b2Nlc3NlcywgYnV0IGl0IGlzIG5vdCBhIHNpbXBsZSBtYXR0ZXIgdG8gbWFrZSANCj4+IG11bHRp LWxldmVsIHNldHRpbmdzIGZvciB0ZW5zIG9mIHRob3VzYW5kcyBvZiBwcm9jZXNzZXMgb24gdGhl IHBoeXNpY2FsIG1hY2hpbmUgDQo+PiB0aHJvdWdoIHRoZSBsaWdodHdlaWdodCBwYXJlbnQgcHJv Y2Vzc2VzLiBXZSBtYXkgbmVlZCBhIGh1Z2UgdGFibGUgdG8gcmVjb3JkIHRoZSANCj4+IHZhbHVl IG9mIG9vbV9zY29yZV9hZGogbWFpbnRhaW5lZCBieSBhbGwgbGlnaHR3ZWlnaHQgcGFyZW50IHBy b2Nlc3NlcywgYW5kIHRoZSANCj4+IHVzZXIgcHJvY2VzcyBsaW1pdGVkIGJ5IHRoZSBwYXJlbnQg cHJvY2VzcyBoYXMgbm8gYWJpbGl0eSB0byBjaGFuZ2UgaXRzIG93biANCj4+IG9vbV9zY29yZV9h ZGosIGJlY2F1c2UgaXQgZG9lcyBub3Qga25vdyB0aGUgZGV0YWlscyBvZiB0aGUgaHVnZSB0YWJs ZS4gVGhlIG5ldyANCj4+IHBhdGNoIGFkb3B0cyB0aGUgY2dyb3VwIG1lY2hhbmlzbS4gSXQgZG9l cyBub3QgbmVlZCBhbnkgcGFyZW50IHByb2Nlc3MgdG8gbWFuYWdlIA0KPj4gb29tX3Njb3JlX2Fk ai4gdGhlIHNldHRpbmdzIGJldHdlZW4gZWFjaCBtZW1jZyBhcmUgaW5kZXBlbmRlbnQgb2YgZWFj aCBvdGhlciwgDQo+PiBtYWtpbmcgaXQgZWFzaWVyIHRvIHBsYW4gdGhlIE9PTSBvcmRlciBvZiBh bGwgcHJvY2Vzc2VzLiBEdWUgdG8gdGhlIHVuaXF1ZSBuYXR1cmUgDQo+PiBvZiBtZW1vcnkgcmVz b3VyY2VzLCBjdXJyZW50IFNlcnZpY2UgY2xvdWQgdmVuZG9ycyBhcmUgbm90IG92ZXJzb2xkIGlu IG1lbW9yeSANCj4+IHBsYW5uaW5nLiBJIHdvdWxkIGxpa2UgdG8gdXNlIHRoZSBuZXcgcGF0Y2gg dG8gdHJ5IHRvIGFjaGlldmUgdGhlIHBvc3NpYmlsaXR5IG9mIA0KPj4gb3ZlcnNvbGQgbWVtb3J5 IHJlc291cmNlcy4NCj4NCj5PSywgdGhpcyBpcyBtb3JlIHNwZWNpZmljIGFib3V0IHRoZSB1c2Vj YXNlLiBUaGFua3MhIFNvIGVzc2VudGlhbGx5IHdoYXQNCj5pdCBib2lscyBkb3duIHRvIGlzIHRo YXQgeW91IGFyZSBoYW5kbGluZyBtYW55IGNvbnRhaW5lcnMgKG1lbWNncyBmcm9tDQo+b3VyIFBP VikgYW5kIHRoZXkgaGF2ZSBkaWZmZXJlbnQgcHJpb3JpdGllcy4gWW91IHdhbnQgdG8gb3ZlcmNv bW1pdCB0aGUNCj5tZW1vcnkgdG8gdGhlIGV4dGVuZCB0aGF0IGdsb2JhbCBvb21zIGFyZSBub3Qg YW4gdW5leHBlY3RlZCBldmVudC4gT25jZQ0KPnRoYXQgaGFwcGVucyB0aGUgdG90YWwgbWVtb3J5 IGNvbnN1bXB0aW9uIG9mIGEgc3BlY2lmaWMgbWVtY2cgaXMgbGVzcw0KPmltcG9ydGFudCB0aGFu IGl0cyAicHJpb3JpdHkiLiBZb3UgZGVmaW5lIHRoYXQgcHJpb3JpdHkgYnkgdGhlIGV4Y2VzcyBv Zg0KPnRoZSBtZW1vcnkgdXNhZ2UgYWJvdmUgYSB1c2VyIGRlZmluZWQgdGhyZXNob2xkLiBDb3Jy ZWN0Pw0KDQpJdCdzIGNvcnJlY3QuDQoNCj5Zb3VyIGNvdmVyIGxldHRlciBtZW50aW9ucyB0aGF0 IHRoZW4gImFsbCBwcm9jZXNzZXMgaW4gdGhlIGNncm91cCBhcyBhDQo+d2hvbGUiLiBUaGF0IHRv IG1lIHJlYWRzIGFzIG9vbS5ncm91cCBvb20ga2lsbGVyIHBvbGljeS4gQnV0IGEgYnJpZWYNCj5s b29rIGludG8gdGhlIHBhdGNoIHN1Z2dlc3RzIHlvdSBhcmUgc3RpbGwgbG9va2luZyBhdCBzcGVj aWZpYyB0YXNrcyBhbmQNCj50aGlzIGhhcyBiZWVuIGEgY29uY2VybiBpbiB0aGUgcHJldmlvdXMg dmVyc2lvbiBvZiB0aGUgcGF0Y2ggYmVjYXVzZQ0KPm1lbWNnIGFjY291bnRpbmcgYW5kIHBlci1w cm9jZXNzIGFjY291bnRpbmcgYXJlIGRldGFjaGVkLg0KDQpJIHRoaW5rIHRoZSBtZW1jZyBhY2Nv dW50aW5nIG1heSBiZSBtb3JlIHJlYXNvbmFibGUsIGFzIGl0cyBtZW1vcnkgDQpzdGF0aXN0aWNz IGFyZSBtb3JlIGNvbXByZWhlbnNpdmUsIHNpbWlsYXIgdG8gYWN0aXZlIHBhZ2UgY2FjaGUsIHdo aWNoIA0KYWxzbyBpbmNyZWFzZXMgdGhlIHByb2JhYmlsaXR5IG9mIE9PTS1raWxsLiBJbiB0aGUg bmV3IHBhdGNoLCBhbGwgdGhlIA0Kc2hhcmVkIG1lbW9yeSB3aWxsIGFsc28gY29uc3VtZSB0aGUg b29tX3Byb3RlY3QgcXVvdGEgb2YgdGhlIG1lbWNnLCANCmFuZCB0aGUgcHJvY2VzcydzIG9vbV9w cm90ZWN0IHF1b3RhIG9mIHRoZSBtZW1jZyB3aWxsIGRlY3JlYXNlLg0KDQo+PiAzLiBJIGNvbmR1 Y3RlZCBhIHRlc3QgYW5kIGRlcGxveWVkIGFuIGV4Y2Vzc2l2ZSBudW1iZXIgb2YgY29udGFpbmVy cyBvbiBhIHBoeXNpY2FsIA0KPj4gbWFjaGluZSwgQnkgc2V0dGluZyB0aGUgb29tX3Njb3JlX2Fk aiB2YWx1ZSBvZiBhbGwgcHJvY2Vzc2VzIGluIHRoZSBjb250YWluZXIgdG8gDQo+PiBhIHBvc2l0 aXZlIG51bWJlciB0aHJvdWdoIGRvY2tlcmluaXQsIGV2ZW4gcHJvY2Vzc2VzIHRoYXQgb2NjdXB5 IHZlcnkgbGl0dGxlIG1lbW9yeSANCj4+IGluIHRoZSBjb250YWluZXIgYXJlIGVhc2lseSBraWxs ZWQsIHJlc3VsdGluZyBpbiBhIGxhcmdlIG51bWJlciBvZiBpbnZhbGlkIGtpbGwgYmVoYXZpb3Jz LiANCj4+IElmIGRvY2tlcmluaXQgaXMgYWxzbyBraWxsZWQgdW5mb3J0dW5hdGVseSwgaXQgd2ls bCB0cmlnZ2VyIGNvbnRhaW5lciBzZWxmLWhlYWxpbmcsIGFuZCB0aGUgDQo+PiBjb250YWluZXIg d2lsbCByZWJ1aWxkLCByZXN1bHRpbmcgaW4gbW9yZSBzZXZlcmUgbWVtb3J5IG9zY2lsbGF0aW9u cy4gVGhlIG5ldyBwYXRjaCANCj4+IGFiYW5kb25zIHRoZSBiZWhhdmlvciBvZiBhZGRpbmcgYW4g ZXF1YWwgYW1vdW50IG9mIG9vbV9zY29yZV9hZGogdG8gZWFjaCBwcm9jZXNzIA0KPj4gaW4gdGhl IGNvbnRhaW5lciBhbmQgYWRvcHRzIGEgc2hhcmVkIG9vbV9wcm90ZWN0IHF1b3RhIGZvciBhbGwg cHJvY2Vzc2VzIGluIHRoZSBjb250YWluZXIuIA0KPj4gSWYgYSBwcm9jZXNzIGluIHRoZSBjb250 YWluZXIgaXMga2lsbGVkLCB0aGUgcmVtYWluaW5nIG90aGVyIHByb2Nlc3NlcyB3aWxsIHJlY2Vp dmUgbW9yZSANCj4+IG9vbV9wcm90ZWN0IHF1b3RhLCBtYWtpbmcgaXQgbW9yZSBkaWZmaWN1bHQg Zm9yIHRoZSByZW1haW5pbmcgcHJvY2Vzc2VzIHRvIGJlIGtpbGxlZC4NCj4+IEluIG15IHRlc3Qg Y2FzZSwgdGhlIG5ldyBwYXRjaCByZWR1Y2VkIHRoZSBudW1iZXIgb2YgaW52YWxpZCBraWxsIGJl aGF2aW9ycyBieSA3MCUuDQo+PiA0LiBvb21fc2NvcmVfYWRqIGlzIGEgZ2xvYmFsIGNvbmZpZ3Vy YXRpb24gdGhhdCBjYW5ub3QgYWNoaWV2ZSBhIGtpbGwgb3JkZXIgdGhhdCBvbmx5IA0KPj4gYWZm ZWN0cyBhIGNlcnRhaW4gbWVtY2ctb29tLWtpbGxlci4gSG93ZXZlciwgdGhlIG9vbV9wcm90ZWN0 IG1lY2hhbmlzbSBpbmhlcml0cyANCj4+IGRvd253YXJkcywgYW5kIHVzZXIgY2FuIG9ubHkgY2hh bmdlIHRoZSBraWxsIG9yZGVyIG9mIGl0cyBvd24gbWVtY2cgb29tLCBidXQgdGhlIA0KPj4ga2ls bCBvcmRlciBvZiB0aGVpciBwYXJlbnQgbWVtY2ctb29tLWtpbGxlciBvciBnbG9iYWwtb29tLWtp bGxlciB3aWxsIG5vdCBiZSBhZmZlY3RlZA0KPg0KPlllcyBvb21fc2NvcmVfYWRqIGhhcyBzaG9y dGNvbWluZ3MuDQo+DQo+PiBJbiB0aGUgZmluYWwgZGlzY3Vzc2lvbiBvZiBwYXRjaCB2Miwgd2Ug ZGlzY3Vzc2VkIHRoYXQgYWx0aG91Z2ggdGhlIGFkanVzdG1lbnQgcmFuZ2UgDQo+PiBvZiBvb21f c2NvcmVfYWRqIGlzIFstMTAwMCwxMDAwXSwgYnV0IGVzc2VudGlhbGx5IGl0IG9ubHkgYWxsb3dz IHR3byB1c2VjYXNlcw0KPj4gKE9PTV9TQ09SRV9BREpfTUlOLCBPT01fU0NPUkVfQURKX01BWCkg cmVsaWFibHkuIEV2ZXJ5dGhpbmcgaW4gYmV0d2VlbiBpcyANCj4+IGNsdW1zeSBhdCBiZXN0LiBJ biBvcmRlciB0byBzb2x2ZSB0aGlzIHByb2JsZW0gaW4gdGhlIG5ldyBwYXRjaCwgSSBpbnRyb2R1 Y2VkIGEgbmV3IA0KPj4gaW5kaWNhdG9yIG9vbV9raWxsX2luaGVyaXQsIHdoaWNoIGNvdW50cyB0 aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBsb2NhbCBhbmQgY2hpbGQgDQo+PiBjZ3JvdXBzIGhhdmUg YmVlbiBzZWxlY3RlZCBieSB0aGUgT09NIGtpbGxlciBvZiB0aGUgYW5jZXN0b3IgY2dyb3VwLiBC eSBvYnNlcnZpbmcgDQo+PiB0aGUgcHJvcG9ydGlvbiBvZiBvb21fa2lsbF9pbmhlcml0IGluIHRo ZSBwYXJlbnQgY2dyb3VwLCBJIGNhbiBlZmZlY3RpdmVseSBhZGp1c3QgdGhlIA0KPj4gdmFsdWUg b2Ygb29tX3Byb3RlY3QgdG8gYWNoaWV2ZSB0aGUgYmVzdC4NCj4NCj5XaGF0IGRvZXMgdGhlIGJl c3QgbWVhbiBpbiB0aGlzIGNvbnRleHQ/DQoNCkkgaGF2ZSBjcmVhdGVkIGEgbmV3IGluZGljYXRv ciBvb21fa2lsbF9pbmhlcml0IHRoYXQgbWFpbnRhaW5zIGEgbmVnYXRpdmUgY29ycmVsYXRpb24g DQp3aXRoIG1lbW9yeS5vb20ucHJvdGVjdCwgc28gd2UgaGF2ZSBhIHJ1bGVyIHRvIG1lYXN1cmUg dGhlIG9wdGltYWwgdmFsdWUgb2YgDQptZW1vcnkub29tLnByb3RlY3QuDQoNCj4+IGFib3V0IHRo ZSBzZW1hbnRpY3Mgb2Ygbm9uLWxlYWYgbWVtY2dzIHByb3RlY3Rpb24sDQo+PiBJZiBhIG5vbi1s ZWFmIG1lbWNnJ3Mgb29tX3Byb3RlY3QgcXVvdGEgaXMgc2V0LCBpdHMgbGVhZiBtZW1jZyB3aWxs IHByb3BvcnRpb25hbGx5IA0KPj4gY2FsY3VsYXRlIHRoZSBuZXcgZWZmZWN0aXZlIG9vbV9wcm90 ZWN0IHF1b3RhIGJhc2VkIG9uIG5vbi1sZWFmIG1lbWNnJ3MgcXVvdGEuDQo+DQo+U28gdGhlIG5v bi1sZWFmIG1lbWNnIGlzIG5ldmVyIHVzZWQgYXMgYSB0YXJnZXQ/IFdoYXQgaWYgdGhlIHdvcmts b2FkIGlzDQo+ZGlzdHJpYnV0ZWQgb3ZlciBzZXZlcmFsIHN1Yi1ncm91cHM/IE91ciBjdXJyZW50 IG9vbS5ncm91cA0KPmltcGxlbWVudGF0aW9uIHRyYXZlcnNlcyB0aGUgdHJlZSB0byBmaW5kIGEg Y29tbW9uIGFuY2VzdG9yIGluIHRoZSBvb20NCj5kb21haW4gd2l0aCB0aGUgb29tLmdyb3VwLg0K DQpJZiB0aGUgb29tX3Byb3RlY3QgcXVvdGEgb2YgdGhlIHBhcmVudCBub24tbGVhZiBtZW1jZyBp cyBsZXNzIHRoYW4gdGhlIHN1bSBvZiANCnN1Yi1ncm91cHMgb29tX3Byb3RlY3QgcXVvdGEsIHRo ZSBvb21fcHJvdGVjdCBxdW90YSBvZiBlYWNoIHN1Yi1ncm91cCB3aWxsIA0KYmUgcHJvcG9ydGlv bmFsbHkgcmVkdWNlZA0KSWYgdGhlIG9vbV9wcm90ZWN0IHF1b3RhIG9mIHRoZSBwYXJlbnQgbm9u LWxlYWYgbWVtY2cgaXMgZ3JlYXRlciB0aGFuIHRoZSBzdW0gDQpvZiBzdWItZ3JvdXBzIG9vbV9w cm90ZWN0IHF1b3RhLCB0aGUgb29tX3Byb3RlY3QgcXVvdGEgb2YgZWFjaCBzdWItZ3JvdXAgDQp3 aWxsIGJlIHByb3BvcnRpb25hbGx5IGluY3JlYXNlZA0KVGhlIHB1cnBvc2Ugb2YgZG9pbmcgc28g aXMgdGhhdCB1c2VycyBjYW4gc2V0IG9vbV9wcm90ZWN0IHF1b3RhIGFjY29yZGluZyB0byANCnRo ZWlyIG93biBuZWVkcywgYW5kIHRoZSBzeXN0ZW0gbWFuYWdlbWVudCBwcm9jZXNzIGNhbiBzZXQg YXBwcm9wcmlhdGUgDQpvb21fcHJvdGVjdCBxdW90YSBvbiB0aGUgcGFyZW50IG5vbi1sZWFmIG1l bWNnIGFzIHRoZSBmaW5hbCBjb3Zlciwgc28gdGhhdCANCnRoZSBzeXN0ZW0gbWFuYWdlbWVudCBw cm9jZXNzIGNhbiBpbmRpcmVjdGx5IG1hbmFnZSBhbGwgdXNlciBwcm9jZXNzZXMuDQoNCj5BbGwg dGhhdCBiZWluZyBzYWlkIGFuZCB3aXRoIHRoZSB1c2VjYXNlIGRlc2NyaWJlZCBtb3JlIHNwZWNp ZmljYWxseS4gSQ0KPmNhbiBzZWUgdGhhdCBtZW1jZyBiYXNlZCBvb20gdmljdGltIHNlbGVjdGlv biBtYWtlcyBzb21lIHNlbnNlLiBUaGF0DQo+bWVuYXMgdGhhdCBpdCBpcyBhbHdheXMgYSBtZW1j ZyBzZWxlY3RlZCBhbmQgYWxsIHRhc2tzIHdpdGhpbmcga2lsbGVkLg0KPk1lbWNnIGJhc2VkIHBy b3RlY3Rpb24gY2FuIGJlIHVzZWQgdG8gZXZhbHVhdGUgd2hpY2ggbWVtY2cgdG8gY2hvb3NlIGFu ZA0KPnRoZSBvdmVyYWxsIHNjaGVtZSBzaG91bGQgYmUgc3RpbGwgbWFuYWdlYWJsZS4gSXQgd291 bGQgaW5kZWVkIHJlc2VtYmxlDQo+bWVtb3J5IHByb3RlY3Rpb24gZm9yIHRoZSByZWd1bGFyIHJl Y2xhaW0uDQo+DQo+T25lIHRoaW5nIHRoYXQgaXMgc3RpbGwgbm90IHJlYWxseSBjbGVhciB0byBt ZSBpcyB0byBob3cgZ3JvdXAgdnMuDQo+bm9uLWdyb3VwIG9vbXMgY291bGQgYmUgaGFuZGxlZCBn cmFjZWZ1bGx5LiBSaWdodCBub3cgd2UgY2FuIGhhbmRsZSB0aGF0DQo+YmVjYXVzZSB0aGUgb29t IHNlbGVjdGlvbiBpcyBzdGlsbCBwcm9jZXNzIGJhc2VkIGJ1dCB3aXRoIHRoZSBwcm90ZWN0aW9u DQo+dGhpcyB3aWxsIGJlY29tZSBtb3JlIHByb2JsZW1hdGljIGFzIGV4cGxhaW5lZCBwcmV2aW91 c2x5LiBFc3NlbnRpYWxseQ0KPndlIHdvdWxkIG5lZWQgdG8gZW5mb3JjZSB0aGUgb29tIHNlbGVj dGlvbiB0byBiZSBtZW1jZyBiYXNlZCBmb3IgYWxsDQo+bWVtY2dzLiBNYXliZSBhIG1vdW50IGtu b2I/IFdoYXQgZG8geW91IHRoaW5rPw0KDQpUaGVyZSBpcyBhIGZ1bmN0aW9uIGluIHRoZSBwYXRj aCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgb29tX3Byb3RlY3QgDQptZWNoYW5pc20gaXMgZW5h YmxlZC4gQWxsIG1lbW9yeS5vb20ucHJvdGVjdCBub2RlcyBkZWZhdWx0IHRvIDAsIHNvIHRoZSBm dW5jdGlvbiANCjxpc19yb290X29vbV9wcm90ZWN0PiByZXR1cm5zIDAgYnkgZGVmYXVsdC4gVGhl IG9vbV9wcm90ZWN0ICBtZWNoYW5pc20gd2lsbCANCm9ubHkgdGFrZSBlZmZlY3Qgd2hlbiAicm9v dF9tZW1fY2dyb3VwLT5tZW1vcnkuY2hpbGRyZW5fb29tX3Byb3RlY3RfdXNhZ2UiIA0KaXMgbm90 IDAsIGFuZCBvbmx5IG1lbWNnIHdpdGggbWVtb3J5Lm9vbS5wcm90ZWN0IG5vZGUgc2V0IHdpbGwg dGFrZSBlZmZlY3QuDQoNCitib29sIGlzX3Jvb3Rfb29tX3Byb3RlY3Qodm9pZCkNCit7DQorCWlm IChtZW1fY2dyb3VwX2Rpc2FibGVkKCkpDQorCQlyZXR1cm4gMDsNCisNCisJcmV0dXJuICEhYXRv bWljX2xvbmdfcmVhZCgmcm9vdF9tZW1fY2dyb3VwLT5tZW1vcnkuY2hpbGRyZW5fb29tX3Byb3Rl Y3RfdXNhZ2UpOw0KK30NCkkgZG9uJ3Qga25vdyBpZiB0aGVyZSBpcyBzb21lIHByb2JsZW1zIHdp dGggbXkgdW5kZXJzdGFuZGluZz8NCg0KLS0gDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudCENCmNo ZW5na2FpdGFvDQoNCg==