From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C7B4845748; Tue, 6 Aug 2024 10:24:57 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B5E5D40685; Tue, 6 Aug 2024 10:24:57 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2042.outbound.protection.outlook.com [40.107.244.42]) by mails.dpdk.org (Postfix) with ESMTP id C89E0402CF for ; Tue, 6 Aug 2024 10:24:55 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Mgt7BKpEvt+Ylk/Nk6VH8CksbN1FLOW5x8YbSiiCZY9fFABip6fAiWxQpNZotIPjMWA6tq92I37uNUtK3Ou6kn6Vq+DUe01nZUnLS8+Dxz3UquK/JB19ZQNqoeoENll9efKzlaYcKV3g0fswUr/U1LdA9CxVx9wONeQD4vJjG6dvG7lPgSWdbOGfbo4i2ns0kbB8yLKo2bHI9G7OzNRclJ4nngWJ9bFO4tLPNbfC1m4AtKuwgmb5g7EyUEEcl3nophkuG4AT5yMlqEEG+JUqj53AElSk8dPVz9Wmxa1tYftdCQmm98YdA/SFnsrJJt+NIn5+Dtlx/uvHZahMy7c/qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PVCGP7ePBVWJ8PNjONNDFrJL0yEycET63S49811BVxg=; b=ELmJ3tgX1MAa6D1cBnN/7fFsWBSblcgW2Wmo60rFPfCWP/WkYk7+UgqRTGFT6Tx9Q66gDOSOwnxrbdNEEEbz07/2LQh3lSGsNUab+tRs6IBzwJo6Y+r8OHrxhKgITIOy93/T1qcQcAtgUnIl408phFCMhDeJHqsWV0igGZZs5tNU/3aTGnsFqFctR+e7r7xfovtpFEVzzhTXdK4htbPKKESOzIJLsXQFNaOeZMaOIdoktf4/6NBFMTpbY670gXrEfberH5h1erNfeT/hO+Ssqe2gcUh9yIyHFhMlPj7RmfeXiqUnd3lqWvCitNsrq9spzw8rAnEBz3j61Sfj957b0w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PVCGP7ePBVWJ8PNjONNDFrJL0yEycET63S49811BVxg=; b=pYoQCjRJ9DyAYNzxaShv3KR0uEhYfaT2jPk6nCYYbIURk9YTAKNCzY3D/6EFjIjrUh3Lbc4LzXds5LK16uh1xLUMfnKgcjah6j7Eot4uuBH0PZwFPDtxJnQAYCcxoly7Q+r81GDgVRO53bDpCZLg73E/Kk57lkVb167maRHaM/c/eT+HinCcUMhMatYvUHRmdALPCskWsMo3EOHaOUz82g1AdpHXeRaZZsPyKY7oSj9XuRbeK40sjHP903ZZALWdNh75UYegfsQYhtkntQfTkh7d45Jk9GsYcTkf8sbh40LVIMGITe2s5U11JH2nTtM9QBGuF1ryniBb7vjDs2FEvA== Received: from IA0PR12MB8983.namprd12.prod.outlook.com (2603:10b6:208:490::17) by SJ0PR12MB6943.namprd12.prod.outlook.com (2603:10b6:a03:44b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7828.25; Tue, 6 Aug 2024 08:24:52 +0000 Received: from IA0PR12MB8983.namprd12.prod.outlook.com ([fe80::68e7:8370:b169:fa0e]) by IA0PR12MB8983.namprd12.prod.outlook.com ([fe80::68e7:8370:b169:fa0e%6]) with mapi id 15.20.7807.026; Tue, 6 Aug 2024 08:24:52 +0000 From: Chenbo Xia To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= CC: Maxime Coquelin , "dev@dpdk.org" Subject: Re: [PATCH] vhost-user: optimize stats counters performance Thread-Topic: [PATCH] vhost-user: optimize stats counters performance Thread-Index: AQHa5OjiH6F5kjWLk0uMR3iZTgtP5bIZ6loA Date: Tue, 6 Aug 2024 08:24:52 +0000 Message-ID: References: <20240802143259.269827-1-mb@smartsharesystems.com> In-Reply-To: <20240802143259.269827-1-mb@smartsharesystems.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA0PR12MB8983:EE_|SJ0PR12MB6943:EE_ x-ms-office365-filtering-correlation-id: 51e0108b-9c8e-4e8a-17fa-08dcb5f13f0b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?RGNmRkIvUnNWb1V0SHZrM1lqREJWZmpjcTh3VHlWYWVUSHgwTDVHYmhvRnRl?= =?utf-8?B?SzIxYzdGeXVOcVNVeU1HRVZkcWl3dkM0M0E5U1hUekpiL3lUMHF0TFUwYk5s?= =?utf-8?B?dlBIbnBFeS9TUHQrU2dSbVBuL0VCeE9ZWG1uQVNlSExJdC9jcHE1emF5V2lR?= =?utf-8?B?dFdPc25RME1CcnplWkNwd2UvdjRmZEVJNXQxazJVZ2h4NlliOW1WOVNuQUJz?= =?utf-8?B?OVNManNBdDU5QWFGTndoMFRhNDU0ckIwa01yaC80TUwyRFhobWZmWHdGK1Fk?= =?utf-8?B?b3pmTmtJU3NHemJsRzlZaFNWSit1eWdUcTBsalgyY0QvbVZUbnpFRy9uQk0z?= =?utf-8?B?eDhidE0vcVN2dmJoSUVFVGwwSmowVk4rbUhVZWtQaE5RM1dUcTVHN1kxNHQ1?= =?utf-8?B?VllKWEdsZ1dIN25BL2VGbjd5L1Iyd1llTTB1WjVPTlBqYnpmNWE2U0E1dHJO?= =?utf-8?B?UXhsQk85eHluMHYvclNGSUNXdFBLS21NQ0gyU2djODVtVUI5azRjS1JpRzlq?= =?utf-8?B?MzNUVnhZWThqelBVcGNUeGlsb0FTRnBlRkU3NC94TXprdkNDaDJWN1pPTWhx?= =?utf-8?B?VnRIdUpRamlTZzNZUFBmZC82b0k2Slc1SVpteEU5UFhHQVBzMHVQR0JacUsz?= =?utf-8?B?bXRvZ0tjcmJuRHhHblRMZTk3SUp6bHp2L004VWR4MVB6VTVUKzR5WUIydkxk?= =?utf-8?B?RFFuOFc5ZTFldUdMS2pkN3c0TUEwVUNHckY1MFhyQWRXY1pmeUIyWlpUOWlT?= =?utf-8?B?YUxJUWk1dE9UMVVFVGdHbXMrbm02RVZLZVAyRWRPcUFDNDFqcVdpcThIMnJ5?= =?utf-8?B?YUs0ZWg0anFxTUVTQ1JkTDFGbjJTSUtqQ3BuT3d5bnJ2NnRtU1U3UHZacVlQ?= =?utf-8?B?TFBSazZUYzAxaEJLNmpOQ291dlZnT1lKc0laQ0lSQnErMmM0T0NVRmRGNjlR?= =?utf-8?B?WGlDNS9TelQ2azB1b3FLb0czUEtub3FHK3R2YkpBbjBkYS96bkV4aElCQXlG?= =?utf-8?B?N2pIQzRuNGxqNGtPRWhpa1ByZ01CZ0ZRVTFUdmUrY0RVcTYxU25IeUhDUTRv?= =?utf-8?B?SzF6eWV2eS9jaXE1NE9MRlMvTCt6bTVzRmc4SVVlYXk1N0YyK3FnRDNLS2ds?= =?utf-8?B?d1J5dWs1dmdXdE5pTmdUby9vMUIzSmtWMDY3YWtPRENaencweUxrNGxJQnFH?= =?utf-8?B?N3U1aGFMSEtqdlFJYWNZd2RTdmkyVi9HMkJBQU9NSHI3ZEJwNkg3andiSUhs?= =?utf-8?B?OXZmU1dDb0xUSElpMm5qRk5xMjVBNTRVT2FTTm41ajBIdlBLRW5EVGpSVzJa?= =?utf-8?B?b1FsZDExMlkxMEJFdHRIdjJES0ZqaG5ZQnByRkJkY0hPbkdyMkVZVXhrc2FH?= =?utf-8?B?d0wxZkNXQnlsWXJZVU5iVERYYWcyeGtwMlkrZHJ6YmcvU2kyRWxZSlNYT2Rr?= =?utf-8?B?VzAwOFNRNkh4RWtTaG4zOXBzZ0xOcUt5NnpXTmZ0VS9MVnBKWFJIa2ppQWhL?= =?utf-8?B?V0VLeGkwbDFESnVwYXZsbU9KMERNVjJDNCtWcnIwMDhkc29nYnppbklXbmJq?= =?utf-8?B?Q3JYMUVmWkhKYnZvdlFGKzBKYU91ZEMra1E1K2lwSVcxbXVsa0xBNFRjL0d2?= =?utf-8?B?N1hPZnE3ZndTNm4xaEZoc3F0TjlydGYrazVjY0NUN0ppTHg5RHZ2OC9lMVRa?= =?utf-8?B?TnUvb2NiRFpPSUxSbGtPa1orWHBNMDN3WU94OXIyWUdqL2QwM2hETCthaThE?= =?utf-8?B?V1h5UlJPeERmMHM2Z1FyOHlvdDNnOFpNR2FUTU1VUjlZZEprYlNUUFdDVjVM?= =?utf-8?B?dnJ4Y3RPM2tMaTJ6a2E0c0ZQTXpnMkhmc3A3aGkzanFtWHMxQnZCQUwxWi9q?= =?utf-8?B?NGs2TjJoQ3BjeEVUMFVDQ2toK21QMzMra0w2N1g2WmluRkE9PQ==?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:IA0PR12MB8983.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VEpKWm5jT1lKY3YvK2JjVnNrSG9MSk83QkxNUnExZEdSbWRtZXB6dU1idm9h?= =?utf-8?B?blM4SVlVZjBvT2ppODlsSElROXFjRXVIWGFXZnJRd25NREozd2ViOHcrRHdQ?= =?utf-8?B?aFhaSkZIMWUxbWFSbFM3QWpVUEptY014bXAzQ1ZJeG0wbkVYeVdmOG56UUNa?= =?utf-8?B?ZkdGNGVwQ1NSYlNycEp2VGpiZnlkSjNEL1hpWW1BeHBTMWxMTTNrN2FvRjY1?= =?utf-8?B?K2lRa0JGWnFwOXprWjJLbUNmZloxdFRETnBqWGNlL28rbjBjRjQ1aEpmTFVW?= =?utf-8?B?YW95QkMrRmRwOG9hUHNva0YvMURYbUN3djA0ZHBBSFNVWXMwaFYyYmlZNzBj?= =?utf-8?B?WEtadnJzWjhhMlZaU3QyTWUzbklZN2V4ZWliZzd6TUNUY25OTmlRVDVyNlJV?= =?utf-8?B?cVU1Y3JXdVR0cHg3TWZxN0JRZjZ5MWdPaWlEdGZHMUJtbTJra3d4eUlEc1ky?= =?utf-8?B?UlEvbnJESmM4OS90eTltSkFDNU5wS1dGRFNveWlqUU91ZGVuMlRtNEUwaC9r?= =?utf-8?B?RlBpV0VGK0pKeDJ5MmxKenFMWUJHOXYxTStBQTFrSXVPeXg2UG4rOEx5dFow?= =?utf-8?B?d3d6TTRiSGIxWXRLRWgvVStHSGtHM21WSzJWb3JLcjJKdkxzV1ltcFY0NTNY?= =?utf-8?B?dW9GQSs1KzA3KzMvbC9RVDFReTNVcHVNN2FFVTBHamhTK3p5YW5aYlI0UkY3?= =?utf-8?B?S1hxbGo4alEzZVNUREJVRU9hMEdYWm1zQW9nNUJ0SGVCMFpjc1Z0WndtbVQr?= =?utf-8?B?WjdHV3hxbFQxNWxwdzZhb1l2VGJWdVdyRUhsaHI1SnF1SzFoRGJTU05LcjdZ?= =?utf-8?B?L2xXQUM3TnNOeHJKWVppTW9scVJmUVdkSnhqVm1vQWhuV3NsS1J2NzBrMEhO?= =?utf-8?B?UEY3cldwTUpuN3N6M0VUbFFtSW9pMEtuRTNLTm4yZmcwbGNzWjhod3hBaGZC?= =?utf-8?B?b1FSMU00SXQwbFdoM2V4YXVKVHBXT1BFYUE5OXR0dmc2OGl3QlIrb1prNFl4?= =?utf-8?B?c3U1M1F3SkNHSjFOVUdDQzJDQlQySjhKa2c1alduZ2lOS096YkJZa0JqS3I0?= =?utf-8?B?K2VXN2UyNzgrSkxDbHlabnh3RXFYZEs3SFZXc0lSMjNRRWs4VzdCbExlVldI?= =?utf-8?B?WE5JVmk4d2tzaWk1RVVySGxZY1dZWXhmSlVRdVI4WFpUekJmVm5IOU5nTzM2?= =?utf-8?B?eGkvbUU4UWVFUFNxdVZjUllVc0Y0MjBscDAxNFkxUHUzZW9BNllkQlBZMDk2?= =?utf-8?B?SDJRVDNHY2ozSi93QkxxQ2FmdmdBTTMwQ2dlM3BNQkVJR1JwR295Y1RXRU1N?= =?utf-8?B?U1lMT25oOXNUcERhaFgwQW1IYmF2TTcreXB4TVFTVTJ0RHIvOEZJL2N4USs3?= =?utf-8?B?WUpvRVN5L0RURDRGd1dHb0QrYm1uK1BOb1cyQ21yY1NxN3R6NGYxSTJyWTE0?= =?utf-8?B?Sm5LeFpLcTRCNXlTUHpPemJkb0ZMMnphNU1tSllvTTdUaTNwNnFTRE9yK2Rv?= =?utf-8?B?UHZMR1lObmVEbmcxa005ZG8ySWt6MCtLOVNKNk04TGp6UFpaOHVHQTN4MWxo?= =?utf-8?B?eUZ6LzFBWmxPeXhqTFF0c0hJREtBaWt2YmZia3VMeE1ycXpuTW0raVphcXVh?= =?utf-8?B?VUFIdW9BMlBTcmtuZmtRc0tvZTZBSVdmNVRVMVJiNmxROEhtUHd2TkIvMHJq?= =?utf-8?B?UHRkR2drcnJlaHc2WEFlMjJLZWVpV0t5WHdNaFpmZ0l0MXBBTFlyUng4eHBE?= =?utf-8?B?UzdZbWFnSWZVU3loY1dsNFV2bmxsYlNBZ2Uxd0xpTDIwZ1ZWejVVZzRPR2pG?= =?utf-8?B?ZEl4UnJRUGlwT2lNMzUxY0dtUDZBWnpNcWM2RUpUVDRZbXJiK2FtZTM2SC9K?= =?utf-8?B?cmtRWTVZODhMYmdVZjhwN1M3MHh2b0svRFozZGhnQUhhN2cwY0ZFODZWY2Fz?= =?utf-8?B?blkwREdnMVJMbGdxV3B3cVRxUzgwY2d6WEdvZHNHeHdJOGthT3N4QkhNUTcy?= =?utf-8?B?Z3d4THNSZjlWQk5kSmVGYS9Senk1TGlPQ2pkbDZtdlZQOGtJMEQ1SmpwMFNh?= =?utf-8?B?Y1E1em8rS0wxYWtWem01ckRQSENMVmh4VGFmNjVPN1MvL1RoaFhzMXZpUXht?= =?utf-8?Q?ulBfDseViKneZsglKvemDQ7AB?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA0PR12MB8983.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 51e0108b-9c8e-4e8a-17fa-08dcb5f13f0b X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Aug 2024 08:24:52.9146 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HS84Oo9drNouXgosGXcNFcPmcyvesJB3xym+4CUChS5k5hqyVqwgzh4yN3E66Ld/a7+K2mvJMg3FAUwdv4q9ow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6943 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gT24gQXVnIDIsIDIwMjQsIGF0IDIyOjMyLCBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRz aGFyZXN5c3RlbXMuY29tPiB3cm90ZToNCj4gDQo+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlv biBvcGVuaW5nIGxpbmtzIG9yIGF0dGFjaG1lbnRzDQo+IA0KPiANCj4gT3B0aW1pemVkIHRoZSBw ZXJmb3JtYW5jZSBvZiB1cGRhdGluZyB0aGUgc3RhdGlzdGljcyBjb3VudGVycyBieSByZWR1Y2lu Zw0KPiB0aGUgbnVtYmVyIG9mIGJyYW5jaGVzLg0KPiANCj4gT3JkZXJlZCB0aGUgcGFja2V0IHNp emUgY29tcGFyaXNvbnMgYWNjb3JkaW5nIHRvIHRoZSBwcm9iYWJpbGl0eSB3aXRoDQo+IHR5cGlj YWwgaW50ZXJuZXQgdHJhZmZpYyBtaXguDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNb3J0ZW4gQnLD uHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiAtLS0NCj4gbGliL3Zob3N0L3ZpcnRp b19uZXQuYyB8IDQwICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g MSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQ0KPiANCj4g ZGlmZiAtLWdpdCBhL2xpYi92aG9zdC92aXJ0aW9fbmV0LmMgYi9saWIvdmhvc3QvdmlydGlvX25l dC5jDQo+IGluZGV4IDM3MDQwMmQ4NDkuLjI1YTQ5NWRmNTYgMTAwNjQ0DQo+IC0tLSBhL2xpYi92 aG9zdC92aXJ0aW9fbmV0LmMNCj4gKysrIGIvbGliL3Zob3N0L3ZpcnRpb19uZXQuYw0KPiBAQCAt NTMsNyArNTMsNyBAQCBpc192YWxpZF92aXJ0X3F1ZXVlX2lkeCh1aW50MzJfdCBpZHgsIGludCBp c190eCwgdWludDMyX3QgbnJfdnJpbmcpDQo+IH0NCj4gDQo+IHN0YXRpYyBpbmxpbmUgdm9pZA0K PiAtdmhvc3RfcXVldWVfc3RhdHNfdXBkYXRlKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVj dCB2aG9zdF92aXJ0cXVldWUgKnZxLA0KPiArdmhvc3RfcXVldWVfc3RhdHNfdXBkYXRlKGNvbnN0 IHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLA0KPiAg ICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX21idWYgKipwa3RzLCB1aW50MTZfdCBjb3VudCkNCj4g ICAgICAgIF9fcnRlX3NoYXJlZF9sb2Nrc19yZXF1aXJlZCgmdnEtPmFjY2Vzc19sb2NrKQ0KPiB7 DQo+IEBAIC02NCwzNyArNjQsMjUgQEAgdmhvc3RfcXVldWVfc3RhdHNfdXBkYXRlKHN0cnVjdCB2 aXJ0aW9fbmV0ICpkZXYsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLA0KPiAgICAgICAgICAg ICAgICByZXR1cm47DQo+IA0KPiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsN Cj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZXRoZXJfYWRkciAqZWE7DQo+IC0gICAgICAg ICAgICAgICBzdHJ1Y3QgcnRlX21idWYgKnBrdCA9IHBrdHNbaV07DQo+ICsgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKmVhOw0KPiArICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IHJ0ZV9tYnVmICpwa3QgPSBwa3RzW2ldOw0KPiAgICAgICAgICAgICAgICB1aW50 MzJfdCBwa3RfbGVuID0gcnRlX3BrdG1idWZfcGt0X2xlbihwa3QpOw0KPiANCj4gICAgICAgICAg ICAgICAgc3RhdHMtPnBhY2tldHMrKzsNCj4gICAgICAgICAgICAgICAgc3RhdHMtPmJ5dGVzICs9 IHBrdF9sZW47DQo+IA0KPiAtICAgICAgICAgICAgICAgaWYgKHBrdF9sZW4gPT0gNjQpIHsNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgc3RhdHMtPnNpemVfYmluc1sxXSsrOw0KPiAtICAgICAg ICAgICAgICAgfSBlbHNlIGlmIChwa3RfbGVuID4gNjQgJiYgcGt0X2xlbiA8IDEwMjQpIHsNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYmluOw0KPiAtDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgIC8qIGNvdW50IHplcm9zLCBhbmQgb2Zmc2V0IGludG8gY29ycmVjdCBiaW4g Ki8NCj4gLSAgICAgICAgICAgICAgICAgICAgICAgYmluID0gKHNpemVvZihwa3RfbGVuKSAqIDgp IC0gcnRlX2NsejMyKHBrdF9sZW4pIC0gNTsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgc3Rh dHMtPnNpemVfYmluc1tiaW5dKys7DQo+IC0gICAgICAgICAgICAgICB9IGVsc2Ugew0KPiAtICAg ICAgICAgICAgICAgICAgICAgICBpZiAocGt0X2xlbiA8IDY0KQ0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXRzLT5zaXplX2JpbnNbMF0rKzsNCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgZWxzZSBpZiAocGt0X2xlbiA8IDE1MTkpDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RhdHMtPnNpemVfYmluc1s2XSsrOw0KPiAtICAgICAgICAgICAgICAgICAg ICAgICBlbHNlDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHMtPnNpemVf Ymluc1s3XSsrOw0KPiAtICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgaWYgKHBr dF9sZW4gPj0gMTAyNCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RhdHMtPnNpemVfYmlu c1s2ICsgKHBrdF9sZW4gPiAxNTE4KV0rKzsNCj4gKyAgICAgICAgICAgICAgIGVsc2UgaWYgKHBr dF9sZW4gPD0gNjQpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLT5zaXplX2JpbnNb cGt0X2xlbiA+PiA2XSsrOw0KPiArICAgICAgICAgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICBzdGF0cy0+c2l6ZV9iaW5zWzMyVUwgLSBydGVfY2x6MzIocGt0X2xlbikgLSA1 XSsrOw0KPiANCj4gLSAgICAgICAgICAgICAgIGVhID0gcnRlX3BrdG1idWZfbXRvZChwa3QsIHN0 cnVjdCBydGVfZXRoZXJfYWRkciAqKTsNCj4gLSAgICAgICAgICAgICAgIGlmIChydGVfaXNfbXVs dGljYXN0X2V0aGVyX2FkZHIoZWEpKSB7DQo+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChy dGVfaXNfYnJvYWRjYXN0X2V0aGVyX2FkZHIoZWEpKQ0KPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXRzLT5icm9hZGNhc3QrKzsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ZWxzZQ0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLT5tdWx0aWNhc3Qr KzsNCj4gLSAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgIGVhID0gcnRlX3BrdG1i dWZfbXRvZChwa3QsIGNvbnN0IHN0cnVjdCBydGVfZXRoZXJfYWRkciAqKTsNCj4gKyAgICAgICAg ICAgICAgIFJURV9CVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IHZpcnRxdWV1ZV9zdGF0cywg YnJvYWRjYXN0KSAhPQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9m KHN0cnVjdCB2aXJ0cXVldWVfc3RhdHMsIG11bHRpY2FzdCkgKyBzaXplb2YodWludDY0X3QpKTsN Cj4gKyAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShydGVfaXNfbXVsdGljYXN0X2V0aGVyX2Fk ZHIoZWEpKSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKCZzdGF0cy0+bXVsdGljYXN0KVty dGVfaXNfYnJvYWRjYXN0X2V0aGVyX2FkZHIoZWEpXSsrOw0KPiAgICAgICAgfQ0KPiB9DQo+IA0K PiAtLQ0KPiAyLjQzLjANCj4gDQoNClJldmlld2VkLWJ5OiBDaGVuYm8gWGlhIDxjaGVuYm94QG52 aWRpYS5jb20+DQoNCg==