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 C327DA0C4C; Sun, 29 Aug 2021 09:07:52 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 34C2F40142; Sun, 29 Aug 2021 09:07:52 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2060.outbound.protection.outlook.com [40.107.220.60]) by mails.dpdk.org (Postfix) with ESMTP id 4587940042 for ; Sun, 29 Aug 2021 09:07:50 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R3tmojfUu4CgLs+JKoRA4hypkwNwbXpTu71UhmpOuxgZj2k5zB5YlmgaUDOrHAr4UaUaEVpFouxhoIpQIczOfxGJwTobFZwsgd34IYLcUwnTEv3It+/6p+snpfyaFomZwbZRB8JTIknMH7MoKsbYEEY3Rs1WXqkmj+I2UqkR7RJcFAhJ5gB3iowg0iQY6nlt/JFYxkxXK07OUepE0jUQd6VIXJ4+KnnP+m2H28546Oi8nepov0lsjzsNPF0Tkv2Iot2DNlyFMLKLOvAnd7s0DfUquuCSFJelHDo6FBVeOWP1gsN7MxliMnE5bMYZWWnEpf3sIKDBv663BPDKwtFjYQ== 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:X-MS-Exchange-SenderADCheck; bh=Adl01AusmCgN+is23O32EYHbh7hu6LMaHdgMdFt1XQ8=; b=cJ4oo2Z3HfdTAUVVgfKEDnFDcbqn36peLRra+Mpn7a+WPFcrj4xl0D/8mHn+J807zoH4TgvGJ/t/fhq+1a1+xHH5XaiaLTLt/4Yjm/QOCukDF2kxhT4hczf53nvImhWsGqm7hx3ddAElb8Sb41Z3P6Eu7v5pLCcysVEsLhbDwX7/5SUb6DYzyKcazNmAUPs0r1ZCVjE/mB9s/LNAEnTFv7U84fsMQLRPKlDiqb7Hyo4KzY01ddvSeS0+hQqgXOkFbE5IvThiqkCfxAe/dcGNCyolazjKDBHF5xEJdhB/LF/Yjokt0mcbZNanovRhL8aMOZlviWoY3p+Z2Edyvr9vjA== 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=Adl01AusmCgN+is23O32EYHbh7hu6LMaHdgMdFt1XQ8=; b=HGoUTIwTShUdY0H7g+E0vwH6EquHCda/Ell3+EPEFzG66soVVj0E16tNs7Q3tVar4CPGj/1d2DojqQGh+WhLqYTuMFn2CYeKbM5CoLiA7gtgrxQyjLWEfee8B3AkmwMXd3MEbFqm9OqGixxwuwo2SLVwnWAH9yIXHJlrBRhacJ7UyS+3nMvVV49rNI2/VxR7/opJ/qzzVlwQ8/4YrYl1YAUlC1DM6YFrh7Tsi9ttEKVhHN/6ebpKYsijVSiavkGeHbyWD+h0H4V4Sf9BGD2ukOBxzI5aba3yARx7CaJ6y4EI3q3jj3ijFR5yaeBN7IV2M4khHKHdjDXSCgNNb2Wwig== Received: from DM4PR12MB5373.namprd12.prod.outlook.com (2603:10b6:5:39a::17) by DM4PR12MB5070.namprd12.prod.outlook.com (2603:10b6:5:389::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.17; Sun, 29 Aug 2021 07:07:48 +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; Sun, 29 Aug 2021 07:07:48 +0000 From: "Xueming(Steven) Li" To: 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+XLUrIGqt3eWqAgAGtypCAAAkFAIAAHs4QgAxudACABG158A== Date: Sun, 29 Aug 2021 07:07:48 +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: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e3cbce74-9023-4588-e026-08d96abbb58c x-ms-traffictypediagnostic: DM4PR12MB5070: 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: /pD0iR2ChzQ+KJq0XL9kSC8JemF+MD45ylrMrdlvIABO03APapCnkWjd6s71Fdep+zQUzIVLD6dI/iwHsXgAZ3JF3YL2Jqji9/Nj4tjidJ/VneOCzv8xlZFR6eNkuB9dAg2PMyLTOHXOS8vT4O+Z0Yu5dQcifFpEUF+IlxA3amubPkLyjpPAPBffT+0/qW+nVtkDoRnrOgUwe+R7cVCweeNyw0cgXzB6nIU2H2lc0NPGnn5uPM8YcboZTYXkOq0YZHdfPdaJ6ozBMPVupNsGySqFaCB3rgw6P2rS0O94r6ZSS6I5jilhPrC/P24TdUZIhL/z8A0mT4ie9RDZ6vFZfaluaSxK6CCD7ANzRG9Vwr9wgkusnFJZv3LUCsEvX+AraBEYKUlHfsD0EwRNQ46HjFD69EcvGdQz+bA7c2V3T/pyUguu1U9iJsRMWz6a7ZHRcmdyPbzAPFF+qCw+2Kap4BtSg66SH79TmVx96/xbn0tX4dGCSIA2tP66LSgDycvs/X02ddttssKm4Xicf2BsRFCMuKLTr51XiN2TSwMGhxDsWMXTkPi50va3k1Nh5aZfLcvSedL+MN9MmTZdmGRMkJv4c81w/Vl1EgGs7BTBcNi57F+yCtLr8iiubLP639RekjOJySIQ0kQcl8W4hCT+eBt09rvkasApFciwn+3tf0KfeFKx7ktqtB0i4IWFUkMiIEfsMdcl14Mvk3If3aebgA== 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)(396003)(39860400002)(376002)(366004)(346002)(136003)(86362001)(186003)(6506007)(38100700002)(55016002)(2906002)(6916009)(9686003)(83380400001)(53546011)(33656002)(66946007)(38070700005)(71200400001)(8676002)(64756008)(66556008)(66476007)(7696005)(66446008)(316002)(54906003)(4326008)(52536014)(8936002)(76116006)(26005)(122000001)(5660300002)(478600001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WU03eDMxenE2UEhjRDZDZTRCVWcrYWVtbG91a2F0L0x3ZWhNcHZaY0RxYzZB?= =?utf-8?B?ZzIyd0hRaG80ZWhhTEhjVEcxY1EyMHBVcHB5RE84K0U0bUtXd1pWTWxSWW9w?= =?utf-8?B?elBUVDJrMWd3WlE0STJOV0ZXY01ZV2NCaHBRbUk4QTFJTWJsK2JOMkxqQVFr?= =?utf-8?B?OFJuVDAwYjNpSnMwcERCc2tERFRKUENPNmRoZHU3QndtOEg3cmNpMDBOVWR1?= =?utf-8?B?TFZhZUpLdU42OTEyQ0xCQ2EzNzlMT3lONHFidjZ3OU9YaEJ6bDlpRXYwckU5?= =?utf-8?B?UVFHcmZ0YmVpOTNpeEl1NWc4dGlYNDRZMGdIK2c3Y3NGdFRKQnYraWJ4Rkhm?= =?utf-8?B?eEJBM2pTZ0tOSFMydDdSSUQwNnhRcC9HeU5IRWNMNW9OK1dMcUs1cHBvMklG?= =?utf-8?B?ekxnTGt6SXBNVWtxTXRFRE5wWVRWRFNpeWpiTHU4N1N1UkNEbmZzd3dXYVNP?= =?utf-8?B?Qzd4OXBVQUVsUk9GMjkvSHluWUVOVkFOUUZ6dEZIdkRuVGJtRVUxWkZmTFJT?= =?utf-8?B?R2g0NGkrOFphaG1PRWdmNG13U2lzVEEyd1oyVEhValBpVFlIanA5UlYvTHRv?= =?utf-8?B?dkdQYzNpc3dZZHM3SEZYTHMra2xld29ZcWsrWUIrSDZaT2hlRVZMZ1VIdkU3?= =?utf-8?B?WHZZMFFWbThrMUpTZ1BQY2dUeVBINlE1QWxoeldGeWN5Wm9XSkZDS2xFVjNZ?= =?utf-8?B?dGIvcUpEMnJEVEErS1Z1TlJRNDhVb2xETGNKUXFUVXFUWnQrZ2EzWU1tMXhi?= =?utf-8?B?elVJL3JVLzlvcWw2RGh5eTVoWUZKZ0xtS0NFUk9EdGRWMGxmWERQSWtRN0VQ?= =?utf-8?B?SlZHd2J3ZFhqVkVreEhoTkVCUmh1ZC91R1N5NDZyTWMwVnBoMzZYMW9QU1N2?= =?utf-8?B?VTJ3cTdJd2VGSjF4WnRBdHJFN1RGbUdrc3NVT1pNekl1aGd0S3ZKQThpQTA2?= =?utf-8?B?VEdaVi9mS1Q5d2pUTFdTRGpnbW0zanZPN1NYbUFFUHFDVmo5b0h2Z045Y0hs?= =?utf-8?B?aU5uUFNVTGEzRzExdk9BaEs1anA1SlphSi9DbWk1Tk1CamgxcDMzQS9FWUtB?= =?utf-8?B?MnovcXlTQ3pLQ21hYzVlZjhPOWl1bUFnMTVWT3NhaGsxZTBlYlkyUVlGMjBy?= =?utf-8?B?QkNVRHlkQnc2YS80SElMd2drSGlHS0EzaXBReGZIY2h2YVNwdGI0Sjg5QTl2?= =?utf-8?B?QWJzOERWTXBJaHVEaDUxd1hlZ2JQRk9Ha2c4bGxBT1pzSmt2Y0JXQ0xQUG5y?= =?utf-8?B?S0ZhMUpUUm5vSVU2TWRsaWl6VzVUK1dwZU9Xa1o3RU54YlhHSnk5Z09xQjd5?= =?utf-8?B?bDNJK0xHWnBaSmtpeXp1dXBJWkxoWXErNWJWMXFoY1pubndiU1FtQnhxUTNN?= =?utf-8?B?bEJzeTJDc2ExK1JpaFhrSCtHdXZnK2JjZ3NMUW81cjZwZGdyc2IrN0V4ZXl5?= =?utf-8?B?NHRsUW4wSGFtWSswRkZOZXJtSjNCYW9salZQcFJIUDJNK3VrZFlmSzFUOGEw?= =?utf-8?B?dEVzeGZiUEt2dHJJenk5Q28yL1dTMFI5azl1aWFoRmhnc1JobUlUYWpPVCtz?= =?utf-8?B?U3lkT005QUVONU8zNmV1Y3pTa05wTExXcUZlTXJ6U1RnQWwycGhvZ3dHbGd1?= =?utf-8?B?RW56dU1pT0FFeTZ2VGF1dndCek94ZjYxRC96SEU5ZzlBZDhIWjdkSnJmRDlJ?= =?utf-8?B?RldwRi9JczY3TS9NSzR3SWxsQndNSjQ4MStGMmJUdVNKOFA2U3hDbDJQRXF2?= =?utf-8?Q?CSwGGQZESElO7V/PTiKu6dUo6nsOfB/gIvfjhR9?= 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: e3cbce74-9023-4588-e026-08d96abbb58c X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2021 07:07:48.5419 (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: 5MwqgO0o3JRAVITlVS8RupQKcVfo88qvvF1eb+IW0cIhRnjuGQf8H6TnVuOQZ/B6+yxlnPv6MNc299QAJGUArg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5070 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmVyaW4gSmFjb2IgPGpl cmluamFjb2JrQGdtYWlsLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIEF1Z3VzdCAyNiwgMjAyMSA3 OjI4IFBNDQo+IFRvOiBYdWVtaW5nKFN0ZXZlbikgTGkgPHh1ZW1pbmdsQG52aWRpYS5jb20+DQo+ IENjOiBKYWNrIE1pbiA8amFja21pbkBudmlkaWEuY29tPjsgZHBkay1kZXYgPGRldkBkcGRrLm9y Zz47IFhpYW95dW4gTGkgPHhpYW95dW4ubGlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW2Rw ZGstZGV2XSBbUEFUQ0ggdjIgMDYvMTVdIGFwcC90ZXN0cG1kOiBhZGQgY29tbW9uIGZ3ZCB3cmFw cGVyIGZ1bmN0aW9uDQo+IA0KPiBPbiBXZWQsIEF1ZyAxOCwgMjAyMSBhdCA3OjM4IFBNIFh1ZW1p bmcoU3RldmVuKSBMaSA8eHVlbWluZ2xAbnZpZGlhLmNvbT4gd3JvdGU6DQo+ID4NCj4gPg0KPiA+ DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogSmVyaW4gSmFj b2IgPGplcmluamFjb2JrQGdtYWlsLmNvbT4NCj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXVndXN0 IDE4LCAyMDIxIDc6NDggUE0NCj4gPiA+IFRvOiBYdWVtaW5nKFN0ZXZlbikgTGkgPHh1ZW1pbmds QG52aWRpYS5jb20+DQo+ID4gPiBDYzogSmFjayBNaW4gPGphY2ttaW5AbnZpZGlhLmNvbT47IGRw ZGstZGV2IDxkZXZAZHBkay5vcmc+OyBYaWFveXVuDQo+ID4gPiBMaSA8eGlhb3l1bi5saUBpbnRl bC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjIgMDYvMTVdIGFw cC90ZXN0cG1kOiBhZGQgY29tbW9uIGZ3ZA0KPiA+ID4gd3JhcHBlciBmdW5jdGlvbg0KPiA+ID4N Cj4gPiA+IE9uIFdlZCwgQXVnIDE4LCAyMDIxIGF0IDQ6NTcgUE0gWHVlbWluZyhTdGV2ZW4pIExp IDx4dWVtaW5nbEBudmlkaWEuY29tPiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IEpl cmluIEphY29iIDxqZXJpbmphY29ia0BnbWFpbC5jb20+DQo+ID4gPiA+ID4gU2VudDogVHVlc2Rh eSwgQXVndXN0IDE3LCAyMDIxIDU6MzcgUE0NCj4gPiA+ID4gPiBUbzogWHVlbWluZyhTdGV2ZW4p IExpIDx4dWVtaW5nbEBudmlkaWEuY29tPg0KPiA+ID4gPiA+IENjOiBKYWNrIE1pbiA8amFja21p bkBudmlkaWEuY29tPjsgZHBkay1kZXYgPGRldkBkcGRrLm9yZz47DQo+ID4gPiA+ID4gWGlhb3l1 biBMaSA8eGlhb3l1bi5saUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtkcGRr LWRldl0gW1BBVENIIHYyIDA2LzE1XSBhcHAvdGVzdHBtZDogYWRkIGNvbW1vbg0KPiA+ID4gPiA+ IGZ3ZCB3cmFwcGVyIGZ1bmN0aW9uDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPbiBXZWQsIEF1ZyAx MSwgMjAyMSBhdCA3OjM1IFBNIFh1ZW1pbmcgTGkgPHh1ZW1pbmdsQG52aWRpYS5jb20+IHdyb3Rl Og0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEZyb206IFhpYW95dSBNaW4gPGphY2ttaW5AbnZp ZGlhLmNvbT4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBBZGRlZCBhbiBpbmxpbmUgY29tbW9u IHdyYXBwZXIgZnVuY3Rpb24gZm9yIGFsbCBmd2QgZW5naW5lcw0KPiA+ID4gPiA+ID4gd2hpY2gg ZG8gdGhlIGZvbGxvd2luZyBpbiBjb21tb246DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gMS4g Z2V0X3N0YXJ0X2N5Y2xlcw0KPiA+ID4gPiA+ID4gMi4gcnRlX2V0aF9yeF9idXJzdCguLi4sbmJf cGt0X3Blcl9idXJzdCkNCj4gPiA+ID4gPiA+IDMuIGlmIHJ4cV9zaGFyZSBkbyBmb3J3YXJkX3No YXJlZF9yeHEoKSwgb3RoZXJ3aXNlIGRvIGZ3ZCBkaXJlY3RseSA0Lg0KPiA+ID4gPiA+ID4gZ2V0 X2VuZF9jeWNsZQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFhpYW95 dSBNaW4gPGphY2ttaW5AbnZpZGlhLmNvbT4NCj4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4g IGFwcC90ZXN0LXBtZC90ZXN0cG1kLmggfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysNCj4g PiA+ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oIGIvYXBwL3Rl c3QtcG1kL3Rlc3RwbWQuaA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPiA+IDEzMTQxZGZl ZDkuLmI2ODVhYzQ4ZDYgMTAwNjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9hcHAvdGVzdC1wbWQvdGVz dHBtZC5oDQo+ID4gPiA+ID4gPiArKysgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oDQo+ID4gPiA+ ID4gPiBAQCAtMTAyMiw2ICsxMDIyLDMwIEBAIHZvaWQgYWRkX3R4X2R5bmZfY2FsbGJhY2socG9y dGlkX3QNCj4gPiA+ID4gPiA+IHBvcnRpZCk7IHZvaWQgcmVtb3ZlX3R4X2R5bmZfY2FsbGJhY2so cG9ydGlkX3QgcG9ydGlkKTsgIGludA0KPiA+ID4gPiA+ID4gdXBkYXRlX2p1bWJvX2ZyYW1lX29m ZmxvYWQocG9ydGlkX3QgcG9ydGlkKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArc3RhdGlj IGlubGluZSB2b2lkDQo+ID4gPiA+ID4gPiArZG9fYnVyc3RfZndkKHN0cnVjdCBmd2Rfc3RyZWFt ICpmcywgcGFja2V0X2Z3ZF9jYiBmd2QpIHsNCj4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0IHJ0 ZV9tYnVmICpwa3RzX2J1cnN0W01BWF9QS1RfQlVSU1RdOw0KPiA+ID4gPiA+ID4gKyAgICAgICB1 aW50MTZfdCBuYl9yeDsNCj4gPiA+ID4gPiA+ICsgICAgICAgdWludDY0X3Qgc3RhcnRfdHNjID0g MDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAgZ2V0X3N0YXJ0X2N5Y2xlcygm c3RhcnRfdHNjKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAgLyoNCj4gPiA+ ID4gPiA+ICsgICAgICAgICogUmVjZWl2ZSBhIGJ1cnN0IG9mIHBhY2tldHMgYW5kIGZvcndhcmQg dGhlbS4NCj4gPiA+ID4gPiA+ICsgICAgICAgICovDQo+ID4gPiA+ID4gPiArICAgICAgIG5iX3J4 ID0gcnRlX2V0aF9yeF9idXJzdChmcy0+cnhfcG9ydCwgZnMtPnJ4X3F1ZXVlLA0KPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcGt0c19idXJzdCwgbmJfcGt0X3Blcl9idXJzdCk7 DQo+ID4gPiA+ID4gPiArICAgICAgIGluY19yeF9idXJzdF9zdGF0cyhmcywgbmJfcngpOw0KPiA+ ID4gPiA+ID4gKyAgICAgICBpZiAodW5saWtlbHkobmJfcnggPT0gMCkpDQo+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ID4gPiA+ID4gKyAgICAgICBpZiAodW5saWtlbHko cnhxX3NoYXJlID4gMCkpDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBTZWUgYmVsb3cuIEl0IHJlYWRz IGEgZ2xvYmFsIG1lbW9yeS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg IGZvcndhcmRfc2hhcmVkX3J4cShmcywgbmJfcngsIHBrdHNfYnVyc3QsIGZ3ZCk7DQo+ID4gPiA+ ID4gPiArICAgICAgIGVsc2UNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAoKmZ3ZCkoZnMs IG5iX3J4LCBwa3RzX2J1cnN0KTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE5ldyBmdW5jdGlvbiBw b2ludGVyIGluIGZhc3RwYXRoLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSU1PLCBXZSBzaG91bGQg bm90IGNyZWF0ZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGZvciB0aGUgZXhpc3RpbmcgZm9yd2Fy ZCBlbmdpbmUuDQo+ID4gPiA+ID4gQ2FuIHdlIGhhdmUgYSBuZXcgZm9yd2FyZCBlbmdpbmUganVz dCBmb3Igc2hhcmVkIG1lbW9yeSB0ZXN0aW5nPw0KPiA+ID4gPg0KPiA+ID4gPiBZZXMsIGZ1bGx5 IGF3YXJlIG9mIHRoZSBwZXJmb3JtYW5jZSBjb25jZXJuLCB0aGUgZ2xvYmFsIGNvdWxkIGJlIGRl ZmluZWQgYXJvdW5kIHJlY29yZF9jb3JlX2N5Y2xlcyB0byBtaW5pbWl6ZSB0aGUgaW1wYWN0cy4N Cj4gPiA+ID4gQmFzZWQgb24gdGVzdCBkYXRhLCB0aGUgaW1wYWN0cyBhbG1vc3QgaW52aXNpYmxl IGluIGxlZ2FjeSBtb2RlLg0KPiA+ID4NCj4gPiA+IEFyZSB5b3Ugc2F5aW5nIHRoZXJlIGlzIHpl cm8gJSByZWdyZXNzaW9uPyBJZiBub3QsIGNvdWxkIHlvdSBzaGFyZSB0aGUgZGF0YT8NCj4gPg0K PiA+IEFsbW9zdCB6ZXJvLCBoZXJlIGlzIGEgcXVpY2sgc2luZ2xlIGNvcmUgcmVzdWx0IG9mIHJ4 b25seToNCj4gPiAgICAgICAgIDMyLjJNcHBzLCA1OC45Y3ljbGVzL3BhY2tldA0KPiA+IFJldmVy dCB0aGUgcGF0Y2ggdG8gcnhvbmx5LmM6DQo+ID4gICAgICAgICAzMi4xTXBwcyA1OS45Y3ljbGVz L3BhY2tldA0KPiA+IFRoZSByZXN1bHQgZG9lc24ndCBtYWtlIHNlbnNlIGFuZCBJIHJlYWxpemVk IHRoYXQgSSB1c2VkIGJhdGNoIG1idWYgZnJlZSwgYXBwbHkgaXQgbm93Og0KPiA+ICAgICAgICAg MzIuMk1wcHMsIDU4LjljeWNsZXMvcGFja2V0DQo+ID4gVGhlcmUgd2VyZSBzbWFsbCBkaWdpdCBq dW1wcyBiZXR3ZWVuIHRlc3RwbWQgcmVzdGFydCwgSSBwaWNrZWQgdGhlIGJlc3Qgb25lLg0KPiA+ IFRoZSByZXN1bHQgaXMgYWxtb3N0IHNhbWUsIHNlZW1zIHRoZSBjb3N0IG9mIGVhY2ggcGFja2V0 IGlzIHNtYWxsIGVub3VnaC4NCj4gPiBCVFcsIEknbSB0ZXN0aW5nIHdpdGggZGVmYXVsdCBidXJz dCBzaXplIGFuZCBxdWV1ZSBkZXB0aC4NCj4gDQo+IEkgdGVzdGVkIHRoaXMgb24gb2N0ZW9udHgy IHdpdGggaW9md2Qgd2l0aCBzaW5nbGUgY29yZSB3aXRoIDEwMEdicHMgV2l0aG91dCB0aGlzIHBh dGNoIC0gNzMuNW1wcHMgV2l0aCB0aGlzIHBhdGNoIC0gNzIuOCBtcHBzDQo+IA0KPiBXZSBhcmUg dGFraW5nIHRoZSBzaGFyZWQgcXVldWUgcnVudGltZSBvcHRpb24gd2l0aG91dCBhIHNlcGFyYXRl IGZ3ZCBlbmdpbmUuDQo+IGFuZCB0byBoYXZlIHplcm8gcGVyZm9ybWFuY2UgaW1wYWN0IGFuZCBu byBjb21waWxlIHRpbWUgZmxhZyBUaGVuIEkgdGhpbmssIG9ubHkgd2F5IHRvIGhhdmUgYSBmdW5j dGlvbiB0ZW1wbGF0ZSAuDQo+IEV4YW1wbGUgY2hhbmdlIHRvIG91dGxpbmUgZnVuY3Rpb24gdGVt cGxhdGUgcHJpbmNpcGxlLg0KPiANCj4gc3RhdGljIGlubGluZQ0KPiBfX3BrdF9idXJzdF9pb19m b3J3YXJkKHN0cnVjdCBmd2Rfc3RyZWFtICpmcywgY29uc3QgdTY0IGZsYWcpIHsNCj4gDQo+IElu dHJvZHVjZSBuZXcgY2hlY2tzIHVuZGVyDQo+IGlmIChmbGFncyAmIFNIQVJFRF9RVUVVRSkNCj4g DQo+IA0KPiB9DQo+IA0KPiBIYXZlIHR3byB2ZXJzaW9ucyBvZiBpb19md2RfZW5naW5lLnBhY2tl dF9md2QgcGVyIGVuZ2luZS4NCj4gDQo+IC0gZmlyc3QgdmVyc2lvbg0KPiBzdGF0aWMgcGt0X2J1 cnN0X2lvX2ZvcndhcmQoc3RydWN0IGZ3ZF9zdHJlYW0gKmZzKSB7DQo+ICAgICAgICAgcmV0dXJu IF9fcGt0X2J1cnN0X2lvX2ZvcndhcmQoZnMsIDApOyB9DQo+IA0KPiAtIFNlY29uZCB2ZXJzaW9u DQo+IHN0YXRpYyBwa3RfYnVyc3RfaW9fZm9yd2FyZF9zaGFyZWRfcXVldWUoc3RydWN0IGZ3ZF9z dHJlYW0gKmZzKSB7DQo+ICAgICAgICAgcmV0dXJuIF9fcGt0X2J1cnN0X2lvX2ZvcndhcmQoZnMs IFNIQVJFRF9RVUVVRSk7IH0NCj4gDQo+IA0KPiBVcGRhdGUgaW9fZndkX2VuZ2luZS5wYWNrZXRf ZndkIGluIHNsb3dwYXRoIHRvIHJlc3BlY3RpdmUgdmVyc2lvbiBiYXNlZCBvbiBvZmZsb2FkLg0K PiANCj4gSWYgc2hhcmVkIG9mZm9hZCBpcyBub3Qgc2VsZWN0ZWQsIHBrdF9idXJzdF9pb19mb3J3 YXJkKCkgd2lsbCBiZSBzZWxlY3RlZCBhbmQNCj4gX19wa3RfYnVyc3RfaW9fZm9yd2FyZCgpIHdp bGwgYmUgYSBjb21waWxlIHRpbWUgdmVyc2lvbiBvZiAhU0hBUkVEX1FVRVVFIGFrYSBzYW1lIGFz IGV4aXN0aW5nIGNvZS4NCg0KVGhhbmtzIGZvciB0ZXN0aW5nIGFuZCBzdWdnZXN0aW9uLiBTbyB0 aGUgb25seSBkaWZmZXJlbmNlIGhlcmUgaW4gYWJvdmUgY29kZSBpcyBhY2Nlc3MgdG8gcnhxX3No YXJlZCBjaGFuZ2VkDQp0byBmdW5jdGlvbiBwYXJhbWV0ZXIsIHJpZ2h0PyBIYXZlIHlvdSB0ZXN0 ZWQgdGhpcyBwZXJmb3JtYW5jZT8gSWYgbm90LCBJIGNvdWxkIHZlcmlmeS4NCg0KPiANCj4gPg0K PiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gRnJvbSB0ZXN0IHBlcnNwZWN0aXZlLCBiZXR0ZXIgdG8g aGF2ZSBhbGwgZm9yd2FyZCBlbmdpbmUgdG8gdmVyaWZ5DQo+ID4gPiA+IHNoYXJlZCByeHEsIHRl c3QgdGVhbSB3YW50IHRvIHJ1biB0aGUgcmVncmVzc2lvbiB3aXRoIGxlc3MNCj4gPiA+ID4gaW1w YWN0cy4gSG9wZSB0byBoYXZlIGEgc29sdXRpb24gdG8gdXRpbGl6ZSBhbGwgZm9yd2FyZGluZyBl bmdpbmVzDQo+ID4gPiBzZWFtbGVzc2x5Lg0KPiA+ID4NCj4gPiA+IFllcy4gaXQgZ29vZCBnb2Fs LiB0ZXN0cG1kIGZvcndhcmQgcGVyZm9ybWFuY2UgdXNpbmcgYXMgc3ludGhldGljIGJlbmNoIGV2 ZXJ5b25lLg0KPiA+ID4gSSB0aGluaywgd2UgYXJlIGFsaWduZWQgdG8gbm90IGhhdmUgYW55IHJl Z3Jlc3Npb24gZm9yIHRoZSBnZW5lcmljIGZvcndhcmQgZW5naW5lLg0KPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKyAgICAgICBnZXRfZW5kX2N5Y2xlcyhmcywgc3RhcnRf dHNjKTsgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gIC8qDQo+ID4gPiA+ID4gPiAgICog V29yay1hcm91bmQgb2YgYSBjb21waWxhdGlvbiBlcnJvciB3aXRoIElDQyBvbiBpbnZvY2F0aW9u cyBvZiB0aGUNCj4gPiA+ID4gPiA+ICAgKiBydGVfYmVfdG9fY3B1XzE2KCkgZnVuY3Rpb24uDQo+ ID4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+ID4gMi4yNS4xDQo+ID4gPiA+ID4gPg0K