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 99F2AA0C45; Wed, 1 Sep 2021 16:44:17 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2B9ED4013F; Wed, 1 Sep 2021 16:44:17 +0200 (CEST) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2044.outbound.protection.outlook.com [40.107.212.44]) by mails.dpdk.org (Postfix) with ESMTP id 47C4A40041 for ; Wed, 1 Sep 2021 16:44:15 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BPY3xl6YIwpqgBCfUdTMtOp7D6FYu1fpuopagyvrkMLWSTDcGxwgc+J7PHjE2TUtsLq9embnkEt0JSbm+Te5hOIc3LzM64Fks2E6GUHUAQJ2GZPJGCzaRMtOBwOMJRrEY1DAyYkFVe2MCJTCEKV5vmlmItdQNvxFrpltqAQpp8Es6d1/diHjlQCBeZDFRWH/Qc3/RDmrmbmrInbvMYHiPJpCSbbSRYg9BgFL8/to31/EqsBBNE7POqw6qSsEp+lBGZ5yVmMIiApYIk9OR4iTWvi/tu9VHjyR/ZXSUTXwxttM5w8qu5M/IESLNmoh8Dyu1sT9HiPrM5LrRFlwTnDA/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=E82H3My9DyZKsEL8fHRn13t9HRJEnn/iHM0qPvk4+F4=; b=fqVtZAsAAAPdo4oTUPVTR1fC039PH+dT0ABEF6QbqwHjOTVb0oMewJzVfuVln94LgiTWR3WIJ33ErvwXXdoT2Lp2yli95xoSJe7j/SUOtHBD8F0T7OzhKvWjGy83odMmmx2uCCR+66sKfRA6okAz0955ghkcXwbWXcyFi/enxCs/mE8wgsn/G7ur4b396v//UBplR35eNHVeuUbDFHmJZbbt850NUbstFq10kC3o2hjx5sma7gnSxmkCFi/XIpHMevBW2/PLx2FbZRBOw6NlU80a4UixHwZwhQuClsnGC5qVmGmAq/5iEtPYRhXCYFBWyGyCcBvDx5GbveTeJfvoiw== 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=E82H3My9DyZKsEL8fHRn13t9HRJEnn/iHM0qPvk4+F4=; b=eYIFdVAWHZ9WNkqlRaDGQO0ticVLTtv38g1Ye/0ZUos8gThnRsB+Ceg0bUjdGoeiPRJsOn/7aD2lpCc4Kc6TFjmlzWGTObfNmT7LvWOBFofvvxGBWOMViGeUWONrsawA+q6NkrYhi27zfqFBey2bDF3bnMRx6tT098R8CXf33uHGNv/DVJyWi5sM4WaAuwxu+9eASabyNjRo50YTm6e/THD6sq/SXnjqK9ra2hKomLdCbzj9ytiiW6hIUpLcK7IBThnzv/pCFcESeFgK+LeJZWG09+XoqliAGVtJsqNLy0TiuWk+3L06wKvH/KJJEktzlK8IunqhT46noaffn/0+dA== Received: from DM4PR12MB5373.namprd12.prod.outlook.com (2603:10b6:5:39a::17) by DM4PR12MB5247.namprd12.prod.outlook.com (2603:10b6:5:39b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.20; Wed, 1 Sep 2021 14:44:13 +0000 Received: from DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::20f5:dbdd:64b1:617b]) by DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::20f5:dbdd:64b1:617b%9]) with mapi id 15.20.4457.024; Wed, 1 Sep 2021 14:44:14 +0000 From: "Xueming(Steven) Li" To: "Xueming(Steven) Li" , Jerin Jacob CC: Jack Min , dpdk-dev , Xiaoyun Li Thread-Topic: [dpdk-dev] [PATCH v2 06/15] app/testpmd: add common fwd wrapper function Thread-Index: AQHXjrniB07ytTm4iEOGiz+XLUrIGqt3eWqAgAGtypCAAAkFAIAAHs4QgAxudACABG158IAE0AAQ Date: Wed, 1 Sep 2021 14:44:13 +0000 Message-ID: References: <20210727034204.20649-1-xuemingl@nvidia.com> <20210811140418.393264-1-xuemingl@nvidia.com> <20210811140418.393264-6-xuemingl@nvidia.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1cfad76c-11b9-4191-034b-08d96d56f7c6 x-ms-traffictypediagnostic: DM4PR12MB5247: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kZUg6/7/mZY2VO2EiUzU/t33JG6BYrFGYZifOE+x2OQ5kxMp8qJ/+GKw7QLDDSGEnCtzLAU5vKubV0jKFfDYR7prTWpiVG/iauT1lOiZG+eLxQexj/bzNH1PKNKjZf91r/GjF54/5g7pGYNVHdJm+G3XPVX/GTjbZsMHqgp4WDBvOw5U26X+9q4pzeOg1h9xPtAYhKGmUEic7FDeoVJVHs4NRgWzw4OuO8qZF+TrWisHHwrEHgRn7HFxNcSKPpGsIf8QYxGz2Yu5n5t0xjKYz+RLPtkL4NnmSzoKIt1ZpML/Jz8tqAC0ji9bPah++bdxA+kTCeAb845ISuHoNiiRg4RWSt1vDVgeffHYNN4FYlFNTGnSqRFfW1938nCe0/cwNFyQElwyXKPTxUPL2KOVfxs90Pjl0KtiWqDzAEVFujc9jVi7Erhzqj2t6fVEiLyXJ3gSYB6Wo0f3CTEcmetdsMc1X6ZV7G61donB6o0Bdhp52gLpHAmrw1jdAzO25dZG2R3AAsHpq+ZS5K4GtbJ1nHIogu+9yxHfcrtEcHvocr2vzzYw59ogmyAtdrkftbCD8elCArSktvy1YBpgLvqM8EKv7G2pK91JVqtxCkDsMsLYry3YOjgwkpn4xfnnbgv6oRSFd/RcaHr0KSV31es9d57NQiTcFxKmcDpS/5OLD/1874QCAyTUY91y3ibG+oZHa8LzejHoRY2UIOHIfask2w== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5373.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(136003)(366004)(396003)(346002)(376002)(33656002)(186003)(86362001)(38070700005)(9686003)(122000001)(38100700002)(7696005)(83380400001)(8936002)(54906003)(110136005)(52536014)(53546011)(4326008)(66556008)(66476007)(64756008)(66446008)(26005)(55016002)(478600001)(316002)(8676002)(71200400001)(76116006)(6506007)(66946007)(2906002)(5660300002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U1RscGtaQjF4VWVkR3NBakZuR2ZTRWZ2TzRTUDdDTzFpV0x5SEc3N0pEZzll?= =?utf-8?B?NGRtRzFzMFJETDV2QVVKeVgwV0F4dGhncWh3U3dpTGcvL2FTaExhV0NpRHA2?= =?utf-8?B?aGV1REprMWJOQ3ZpOUdVc3doM3BiRWdrWmhLVWNXUTdVMHdSMnZ4bU5Ed2ta?= =?utf-8?B?OGxBMEV2ZC9NWUUyL3IxUklTU3pGYjFVbFZkRXkraWxHUjVpMEJjWktVUzhn?= =?utf-8?B?U0s4Rk5ZUFNqVDZNM0FYaWZsOGZCeHRVNFhQK0Jzclg0RzZ4N2RLZlg0L1J6?= =?utf-8?B?KzU0RTRYUis4TmVRNlRiV0IvRFpyQThZV0thR3NhSHZUOTF2Z3k5cmNqVUlL?= =?utf-8?B?Q1hlYXFTb3JVMlNuNDVCWGltY214eGJtYmFQTHFJS3djZ2x1VXNtRGJTeVhS?= =?utf-8?B?QWpiTnhLYlB0dUVwUnFVN3hFL05IbGJvQmFiR2JkUzZzV3Y4Yzc3c20wWDYx?= =?utf-8?B?eDdjbU5ydmZUeHpVbms2K1JNSkV4K3dVTERWYWc5T3pxcGp1VWkwVEp6N292?= =?utf-8?B?UkZRWGZHa25Mc2hZNElrN1ZxdW1aaFBQNXh4UUFKQzNXeDNqM1h3VnRENE92?= =?utf-8?B?NEVSRFNvelV4d0JYSWJBMVN3a0k3VkxZY0QwdG1LYkZtOXF6QnhjRUpoaC9s?= =?utf-8?B?dmI1TlNHejYyVk41RThqUDc2MUcyM1VMRE9LVmVsRmZ3T1B0NEdWdFlTYzhG?= =?utf-8?B?TmJOSVNkc2hrcDl0MmdLY0MwaU01dXhIdmJOMmFMQU9NV2luOC9pVVVFQ09O?= =?utf-8?B?MGNvZ3ZpVWdjeHA1Y1lpTEdUamdZVlpuN1JlUytYblNrWWsvODdYYnowYk1D?= =?utf-8?B?YmFHbHRGQ2VZQ3YvQzR3WTBINGFMeXc0bXEvclJiQ3c4RnNZME1jNWRJWVpu?= =?utf-8?B?N0h2aG41a056d0V2dy8reW16elpZN2w5a2h5K0NpdERHZUlQSDVDTHlmUTlo?= =?utf-8?B?aG5SemZ0MG5vdllKVDN5QWhGdUtIZU1UZW9wZEp3YnhSM1Zmb3dsTnMyVkNu?= =?utf-8?B?OHVXbUtEZmM4RmszM2lpRGZQVFQwNEFGZ1FFclJxK1hub2dZeGFVUjJBTkxY?= =?utf-8?B?cHRDVXlYQzZYM1JxVWk3YUsvOTJDaXZQa3F4WVV2Mk1MUkRURkxKUkY0bnhC?= =?utf-8?B?aDRJTndTTUxnMHZCUzdiOVJsSFc3ZWlVMy9KRlFSc0JOaGVKNHVObnJtVVF1?= =?utf-8?B?dGtvd2wrTHh1SGNsQzNGb3pvb240dzZxeGRwQ3VDaFpxUWMyTjVNcExkY0Fv?= =?utf-8?B?OU5WVk8wWW81OEMySWxXSXJjUmU3cUhqWjg4M1pIMTFEQWZuM1JLMWVGb3Mr?= =?utf-8?B?RGFaSW1pYXlPemcxdDQwcHN0UHlHaXJHdzB6ODJxVzVmbEphZjFObHlnRlZm?= =?utf-8?B?QkZqZFkxWFd5MzljZnJWZ2dJbWdzWGFtT3djZTd4LzVTZS8zd0xoVHEwMUZk?= =?utf-8?B?bmswdnk1NHZjNFNpZlBGdnd6a0c4UEJtelpPSFhwVzdwUHdyUWF1MWxRa0ZS?= =?utf-8?B?WGhzZmNBUmRpR0pPQlRGL2Y5M01rTGpZcWhjM1lnSUkyWXNCZVE5VGZsamk1?= =?utf-8?B?RSsvbEJXNVRRQ2pHSXVWV29oSHlXWlpPKytOMXUvNjRuTVdPd1hUa0dtQWpQ?= =?utf-8?B?b1ZpTU9yYVk1ZDJ2Sm9ORWROSnF5OHlwK01wZ1IrUGh6bk9jSElFbkFmajYw?= =?utf-8?B?c2k5Y0cwQXExVkV6QTEyUG9UbkFPTGJFZWVLdjcwd2l5bUZNeUgxTXFDYjgv?= =?utf-8?Q?kuyTfJwfKX9KRe6tBhLx/0Nd6I6b4LH7CcRwpWs?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5373.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1cfad76c-11b9-4191-034b-08d96d56f7c6 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Sep 2021 14:44:13.9856 (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: 6re4QnIhWG1oUCXSvdFOX/B89YVmkA222OQKdBReHGUSu77akizz97k3qtqLUppZHQIH5qq4JvMW74fahj8SfQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5247 Subject: Re: [dpdk-dev] [PATCH v2 06/15] app/testpmd: add common fwd wrapper function 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 Sender: "dev" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2IDxkZXYtYm91bmNl c0BkcGRrLm9yZz4gT24gQmVoYWxmIE9mIFh1ZW1pbmcoU3RldmVuKSBMaQ0KPiBTZW50OiBTdW5k YXksIEF1Z3VzdCAyOSwgMjAyMSAzOjA4IFBNDQo+IFRvOiBKZXJpbiBKYWNvYiA8amVyaW5qYWNv YmtAZ21haWwuY29tPg0KPiBDYzogSmFjayBNaW4gPGphY2ttaW5AbnZpZGlhLmNvbT47IGRwZGst ZGV2IDxkZXZAZHBkay5vcmc+OyBYaWFveXVuIExpIDx4aWFveXVuLmxpQGludGVsLmNvbT4NCj4g U3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHYyIDA2LzE1XSBhcHAvdGVzdHBtZDogYWRk IGNvbW1vbiBmd2Qgd3JhcHBlciBmdW5jdGlvbg0KPiANCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogSmVyaW4gSmFjb2IgPGplcmluamFjb2JrQGdtYWls LmNvbT4NCj4gPiBTZW50OiBUaHVyc2RheSwgQXVndXN0IDI2LCAyMDIxIDc6MjggUE0NCj4gPiBU bzogWHVlbWluZyhTdGV2ZW4pIExpIDx4dWVtaW5nbEBudmlkaWEuY29tPg0KPiA+IENjOiBKYWNr IE1pbiA8amFja21pbkBudmlkaWEuY29tPjsgZHBkay1kZXYgPGRldkBkcGRrLm9yZz47IFhpYW95 dW4gTGkNCj4gPiA8eGlhb3l1bi5saUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUmU6IFtkcGRr LWRldl0gW1BBVENIIHYyIDA2LzE1XSBhcHAvdGVzdHBtZDogYWRkIGNvbW1vbiBmd2QNCj4gPiB3 cmFwcGVyIGZ1bmN0aW9uDQo+ID4NCj4gPiBPbiBXZWQsIEF1ZyAxOCwgMjAyMSBhdCA3OjM4IFBN IFh1ZW1pbmcoU3RldmVuKSBMaSA8eHVlbWluZ2xAbnZpZGlhLmNvbT4gd3JvdGU6DQo+ID4gPg0K PiA+ID4NCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ IEZyb206IEplcmluIEphY29iIDxqZXJpbmphY29ia0BnbWFpbC5jb20+DQo+ID4gPiA+IFNlbnQ6 IFdlZG5lc2RheSwgQXVndXN0IDE4LCAyMDIxIDc6NDggUE0NCj4gPiA+ID4gVG86IFh1ZW1pbmco U3RldmVuKSBMaSA8eHVlbWluZ2xAbnZpZGlhLmNvbT4NCj4gPiA+ID4gQ2M6IEphY2sgTWluIDxq YWNrbWluQG52aWRpYS5jb20+OyBkcGRrLWRldiA8ZGV2QGRwZGsub3JnPjsNCj4gPiA+ID4gWGlh b3l1biBMaSA8eGlhb3l1bi5saUBpbnRlbC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZHBk ay1kZXZdIFtQQVRDSCB2MiAwNi8xNV0gYXBwL3Rlc3RwbWQ6IGFkZCBjb21tb24NCj4gPiA+ID4g ZndkIHdyYXBwZXIgZnVuY3Rpb24NCj4gPiA+ID4NCj4gPiA+ID4gT24gV2VkLCBBdWcgMTgsIDIw MjEgYXQgNDo1NyBQTSBYdWVtaW5nKFN0ZXZlbikgTGkgPHh1ZW1pbmdsQG52aWRpYS5jb20+IHdy b3RlOg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+IEZyb206IEplcmluIEphY29iIDxqZXJp bmphY29ia0BnbWFpbC5jb20+DQo+ID4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMTcs IDIwMjEgNTozNyBQTQ0KPiA+ID4gPiA+ID4gVG86IFh1ZW1pbmcoU3RldmVuKSBMaSA8eHVlbWlu Z2xAbnZpZGlhLmNvbT4NCj4gPiA+ID4gPiA+IENjOiBKYWNrIE1pbiA8amFja21pbkBudmlkaWEu Y29tPjsgZHBkay1kZXYgPGRldkBkcGRrLm9yZz47DQo+ID4gPiA+ID4gPiBYaWFveXVuIExpIDx4 aWFveXVuLmxpQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZd IFtQQVRDSCB2MiAwNi8xNV0gYXBwL3Rlc3RwbWQ6IGFkZA0KPiA+ID4gPiA+ID4gY29tbW9uIGZ3 ZCB3cmFwcGVyIGZ1bmN0aW9uDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gT24gV2VkLCBBdWcg MTEsIDIwMjEgYXQgNzozNSBQTSBYdWVtaW5nIExpIDx4dWVtaW5nbEBudmlkaWEuY29tPiB3cm90 ZToNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gRnJvbTogWGlhb3l1IE1pbiA8amFja21p bkBudmlkaWEuY29tPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBBZGRlZCBhbiBpbmxp bmUgY29tbW9uIHdyYXBwZXIgZnVuY3Rpb24gZm9yIGFsbCBmd2QgZW5naW5lcw0KPiA+ID4gPiA+ ID4gPiB3aGljaCBkbyB0aGUgZm9sbG93aW5nIGluIGNvbW1vbjoNCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gMS4gZ2V0X3N0YXJ0X2N5Y2xlcw0KPiA+ID4gPiA+ID4gPiAyLiBydGVfZXRo X3J4X2J1cnN0KC4uLixuYl9wa3RfcGVyX2J1cnN0KQ0KPiA+ID4gPiA+ID4gPiAzLiBpZiByeHFf c2hhcmUgZG8gZm9yd2FyZF9zaGFyZWRfcnhxKCksIG90aGVyd2lzZSBkbyBmd2QgZGlyZWN0bHkg NC4NCj4gPiA+ID4gPiA+ID4gZ2V0X2VuZF9jeWNsZQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBYaWFveXUgTWluIDxqYWNrbWluQG52aWRpYS5jb20+DQo+ID4g PiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4gPiAgYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaCB8IDI0 ICsrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQs IDI0IGluc2VydGlvbnMoKykNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdp dCBhL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmggYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oDQo+ID4g PiA+ID4gPiA+IGluZGV4DQo+ID4gPiA+ID4gPiA+IDEzMTQxZGZlZDkuLmI2ODVhYzQ4ZDYgMTAw NjQ0DQo+ID4gPiA+ID4gPiA+IC0tLSBhL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmgNCj4gPiA+ID4g PiA+ID4gKysrIGIvYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaA0KPiA+ID4gPiA+ID4gPiBAQCAtMTAy Miw2ICsxMDIyLDMwIEBAIHZvaWQgYWRkX3R4X2R5bmZfY2FsbGJhY2socG9ydGlkX3QNCj4gPiA+ ID4gPiA+ID4gcG9ydGlkKTsgdm9pZCByZW1vdmVfdHhfZHluZl9jYWxsYmFjayhwb3J0aWRfdCBw b3J0aWQpOyAgaW50DQo+ID4gPiA+ID4gPiA+IHVwZGF0ZV9qdW1ib19mcmFtZV9vZmZsb2FkKHBv cnRpZF90IHBvcnRpZCk7DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW5s aW5lIHZvaWQNCj4gPiA+ID4gPiA+ID4gK2RvX2J1cnN0X2Z3ZChzdHJ1Y3QgZndkX3N0cmVhbSAq ZnMsIHBhY2tldF9md2RfY2IgZndkKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0IHJ0 ZV9tYnVmICpwa3RzX2J1cnN0W01BWF9QS1RfQlVSU1RdOw0KPiA+ID4gPiA+ID4gPiArICAgICAg IHVpbnQxNl90IG5iX3J4Ow0KPiA+ID4gPiA+ID4gPiArICAgICAgIHVpbnQ2NF90IHN0YXJ0X3Rz YyA9IDA7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICBnZXRfc3RhcnRf Y3ljbGVzKCZzdGFydF90c2MpOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgLyoNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgKiBSZWNlaXZlIGEgYnVyc3Qgb2YgcGFja2V0 cyBhbmQgZm9yd2FyZCB0aGVtLg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAqLw0KPiA+ID4gPiA+ ID4gPiArICAgICAgIG5iX3J4ID0gcnRlX2V0aF9yeF9idXJzdChmcy0+cnhfcG9ydCwgZnMtPnJ4 X3F1ZXVlLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBwa3RzX2J1cnN0 LCBuYl9wa3RfcGVyX2J1cnN0KTsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICBpbmNfcnhfYnVyc3Rf c3RhdHMoZnMsIG5iX3J4KTsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICBpZiAodW5saWtlbHkobmJf cnggPT0gMCkpDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ID4gPiA+ ID4gPiA+ICsgICAgICAgaWYgKHVubGlrZWx5KHJ4cV9zaGFyZSA+IDApKQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+IFNlZSBiZWxvdy4gSXQgcmVhZHMgYSBnbG9iYWwgbWVtb3J5Lg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGZvcndhcmRfc2hhcmVkX3J4cShm cywgbmJfcngsIHBrdHNfYnVyc3QsIGZ3ZCk7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgZWxzZQ0K PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgKCpmd2QpKGZzLCBuYl9yeCwgcGt0c19idXJz dCk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gTmV3IGZ1bmN0aW9uIHBvaW50ZXIgaW4gZmFz dHBhdGguDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSU1PLCBXZSBzaG91bGQgbm90IGNyZWF0 ZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGZvciB0aGUgZXhpc3RpbmcgZm9yd2FyZCBlbmdpbmUu DQo+ID4gPiA+ID4gPiBDYW4gd2UgaGF2ZSBhIG5ldyBmb3J3YXJkIGVuZ2luZSBqdXN0IGZvciBz aGFyZWQgbWVtb3J5IHRlc3Rpbmc/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBZZXMsIGZ1bGx5IGF3 YXJlIG9mIHRoZSBwZXJmb3JtYW5jZSBjb25jZXJuLCB0aGUgZ2xvYmFsIGNvdWxkIGJlIGRlZmlu ZWQgYXJvdW5kIHJlY29yZF9jb3JlX2N5Y2xlcyB0byBtaW5pbWl6ZSB0aGUgaW1wYWN0cy4NCj4g PiA+ID4gPiBCYXNlZCBvbiB0ZXN0IGRhdGEsIHRoZSBpbXBhY3RzIGFsbW9zdCBpbnZpc2libGUg aW4gbGVnYWN5IG1vZGUuDQo+ID4gPiA+DQo+ID4gPiA+IEFyZSB5b3Ugc2F5aW5nIHRoZXJlIGlz IHplcm8gJSByZWdyZXNzaW9uPyBJZiBub3QsIGNvdWxkIHlvdSBzaGFyZSB0aGUgZGF0YT8NCj4g PiA+DQo+ID4gPiBBbG1vc3QgemVybywgaGVyZSBpcyBhIHF1aWNrIHNpbmdsZSBjb3JlIHJlc3Vs dCBvZiByeG9ubHk6DQo+ID4gPiAgICAgICAgIDMyLjJNcHBzLCA1OC45Y3ljbGVzL3BhY2tldA0K PiA+ID4gUmV2ZXJ0IHRoZSBwYXRjaCB0byByeG9ubHkuYzoNCj4gPiA+ICAgICAgICAgMzIuMU1w cHMgNTkuOWN5Y2xlcy9wYWNrZXQNCj4gPiA+IFRoZSByZXN1bHQgZG9lc24ndCBtYWtlIHNlbnNl IGFuZCBJIHJlYWxpemVkIHRoYXQgSSB1c2VkIGJhdGNoIG1idWYgZnJlZSwgYXBwbHkgaXQgbm93 Og0KPiA+ID4gICAgICAgICAzMi4yTXBwcywgNTguOWN5Y2xlcy9wYWNrZXQNCj4gPiA+IFRoZXJl IHdlcmUgc21hbGwgZGlnaXQganVtcHMgYmV0d2VlbiB0ZXN0cG1kIHJlc3RhcnQsIEkgcGlja2Vk IHRoZSBiZXN0IG9uZS4NCj4gPiA+IFRoZSByZXN1bHQgaXMgYWxtb3N0IHNhbWUsIHNlZW1zIHRo ZSBjb3N0IG9mIGVhY2ggcGFja2V0IGlzIHNtYWxsIGVub3VnaC4NCj4gPiA+IEJUVywgSSdtIHRl c3Rpbmcgd2l0aCBkZWZhdWx0IGJ1cnN0IHNpemUgYW5kIHF1ZXVlIGRlcHRoLg0KPiA+DQo+ID4g SSB0ZXN0ZWQgdGhpcyBvbiBvY3Rlb250eDIgd2l0aCBpb2Z3ZCB3aXRoIHNpbmdsZSBjb3JlIHdp dGggMTAwR2Jwcw0KPiA+IFdpdGhvdXQgdGhpcyBwYXRjaCAtIDczLjVtcHBzIFdpdGggdGhpcyBw YXRjaCAtIDcyLjggbXBwcw0KPiA+DQo+ID4gV2UgYXJlIHRha2luZyB0aGUgc2hhcmVkIHF1ZXVl IHJ1bnRpbWUgb3B0aW9uIHdpdGhvdXQgYSBzZXBhcmF0ZSBmd2QgZW5naW5lLg0KPiA+IGFuZCB0 byBoYXZlIHplcm8gcGVyZm9ybWFuY2UgaW1wYWN0IGFuZCBubyBjb21waWxlIHRpbWUgZmxhZyBU aGVuIEkgdGhpbmssIG9ubHkgd2F5IHRvIGhhdmUgYSBmdW5jdGlvbiB0ZW1wbGF0ZSAuDQo+ID4g RXhhbXBsZSBjaGFuZ2UgdG8gb3V0bGluZSBmdW5jdGlvbiB0ZW1wbGF0ZSBwcmluY2lwbGUuDQo+ ID4NCj4gPiBzdGF0aWMgaW5saW5lDQo+ID4gX19wa3RfYnVyc3RfaW9fZm9yd2FyZChzdHJ1Y3Qg ZndkX3N0cmVhbSAqZnMsIGNvbnN0IHU2NCBmbGFnKSB7DQo+ID4NCj4gPiBJbnRyb2R1Y2UgbmV3 IGNoZWNrcyB1bmRlcg0KPiA+IGlmIChmbGFncyAmIFNIQVJFRF9RVUVVRSkNCj4gPg0KPiA+DQo+ ID4gfQ0KPiA+DQo+ID4gSGF2ZSB0d28gdmVyc2lvbnMgb2YgaW9fZndkX2VuZ2luZS5wYWNrZXRf ZndkIHBlciBlbmdpbmUuDQo+ID4NCj4gPiAtIGZpcnN0IHZlcnNpb24NCj4gPiBzdGF0aWMgcGt0 X2J1cnN0X2lvX2ZvcndhcmQoc3RydWN0IGZ3ZF9zdHJlYW0gKmZzKSB7DQo+ID4gICAgICAgICBy ZXR1cm4gX19wa3RfYnVyc3RfaW9fZm9yd2FyZChmcywgMCk7IH0NCj4gPg0KPiA+IC0gU2Vjb25k IHZlcnNpb24NCj4gPiBzdGF0aWMgcGt0X2J1cnN0X2lvX2ZvcndhcmRfc2hhcmVkX3F1ZXVlKHN0 cnVjdCBmd2Rfc3RyZWFtICpmcykgew0KPiA+ICAgICAgICAgcmV0dXJuIF9fcGt0X2J1cnN0X2lv X2ZvcndhcmQoZnMsIFNIQVJFRF9RVUVVRSk7IH0NCj4gPg0KPiA+DQo+ID4gVXBkYXRlIGlvX2Z3 ZF9lbmdpbmUucGFja2V0X2Z3ZCBpbiBzbG93cGF0aCB0byByZXNwZWN0aXZlIHZlcnNpb24gYmFz ZWQgb24gb2ZmbG9hZC4NCj4gPg0KPiA+IElmIHNoYXJlZCBvZmZvYWQgaXMgbm90IHNlbGVjdGVk LCBwa3RfYnVyc3RfaW9fZm9yd2FyZCgpIHdpbGwgYmUNCj4gPiBzZWxlY3RlZCBhbmQNCj4gPiBf X3BrdF9idXJzdF9pb19mb3J3YXJkKCkgd2lsbCBiZSBhIGNvbXBpbGUgdGltZSB2ZXJzaW9uIG9m ICFTSEFSRURfUVVFVUUgYWthIHNhbWUgYXMgZXhpc3RpbmcgY29lLg0KPiANCj4gVGhhbmtzIGZv ciB0ZXN0aW5nIGFuZCBzdWdnZXN0aW9uLiBTbyB0aGUgb25seSBkaWZmZXJlbmNlIGhlcmUgaW4g YWJvdmUgY29kZSBpcyBhY2Nlc3MgdG8gcnhxX3NoYXJlZCBjaGFuZ2VkIHRvIGZ1bmN0aW9uIHBh cmFtZXRlciwNCj4gcmlnaHQ/IEhhdmUgeW91IHRlc3RlZCB0aGlzIHBlcmZvcm1hbmNlPyBJZiBu b3QsIEkgY291bGQgdmVyaWZ5Lg0KDQpQZXJmb3JtYW5jZSByZXN1bHQgbG9va3MgYmV0dGVyIGJ5 IHJlbW92aW5nIHRoaXMgd3JhcHBlciBhbmQgaGlkZSBnbG9iYWwgdmFyaWFibGUgYWNjZXNzIGxp a2UgeW91IHN1Z2dlc3RlZCwgdGhhbmtzIQ0KVHJpZWQgdG8gYWRkIHJ4cV9zaGFyZSBiaXQgZmll bGQgIGluIHN0cnVjdCBmd2Rfc3RyZWFtLCBzYW1lIHJlc3VsdCBhcyB0aGUgc3RhdGljIGZ1bmN0 aW9uIHNlbGVjdGlvbiwgbG9va3MgbGVzcyBjaGFuZ2VzLg0KDQo+IA0KPiA+DQo+ID4gPg0KPiA+ ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gRnJvbSB0ZXN0IHBlcnNwZWN0aXZlLCBiZXR0ZXIg dG8gaGF2ZSBhbGwgZm9yd2FyZCBlbmdpbmUgdG8NCj4gPiA+ID4gPiB2ZXJpZnkgc2hhcmVkIHJ4 cSwgdGVzdCB0ZWFtIHdhbnQgdG8gcnVuIHRoZSByZWdyZXNzaW9uIHdpdGgNCj4gPiA+ID4gPiBs ZXNzIGltcGFjdHMuIEhvcGUgdG8gaGF2ZSBhIHNvbHV0aW9uIHRvIHV0aWxpemUgYWxsIGZvcndh cmRpbmcNCj4gPiA+ID4gPiBlbmdpbmVzDQo+ID4gPiA+IHNlYW1sZXNzbHkuDQo+ID4gPiA+DQo+ ID4gPiA+IFllcy4gaXQgZ29vZCBnb2FsLiB0ZXN0cG1kIGZvcndhcmQgcGVyZm9ybWFuY2UgdXNp bmcgYXMgc3ludGhldGljIGJlbmNoIGV2ZXJ5b25lLg0KPiA+ID4gPiBJIHRoaW5rLCB3ZSBhcmUg YWxpZ25lZCB0byBub3QgaGF2ZSBhbnkgcmVncmVzc2lvbiBmb3IgdGhlIGdlbmVyaWMgZm9yd2Fy ZCBlbmdpbmUuDQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgZ2V0X2VuZF9jeWNsZXMoZnMsIHN0YXJ0X3RzYyk7IH0NCj4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiAgLyoNCj4gPiA+ID4gPiA+ID4gICAqIFdvcmstYXJvdW5kIG9mIGEg Y29tcGlsYXRpb24gZXJyb3Igd2l0aCBJQ0Mgb24gaW52b2NhdGlvbnMgb2YgdGhlDQo+ID4gPiA+ ID4gPiA+ICAgKiBydGVfYmVfdG9fY3B1XzE2KCkgZnVuY3Rpb24uDQo+ID4gPiA+ID4gPiA+IC0t DQo+ID4gPiA+ID4gPiA+IDIuMjUuMQ0KPiA+ID4gPiA+ID4gPg0K