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 1D609A0C43; Wed, 18 Aug 2021 16:08:56 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DDB6B41164; Wed, 18 Aug 2021 16:08:55 +0200 (CEST) Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam08on2067.outbound.protection.outlook.com [40.107.100.67]) by mails.dpdk.org (Postfix) with ESMTP id A21DB40151 for ; Wed, 18 Aug 2021 16:08:54 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NxG8dxItvr0sWtKnXBGlmMLpKgE/VpMx2ngKB1cCDd/V+igpn41YKMNLxKaUK7bl4E8QRBnlDfQo20kU2NubsNgMZ/70HbGyeHfIHtWFRwKBdzg0c/Wv246Dx9OJ0lEBNz2Ahh2gT6fkUZIExP5HBn6ed6mywMRXxbAH8NDJ82YIr1RaEL0S/D86XGgLm4Kk2nlUZJoex3xNcJaOebc23ttLs/bpNK5mmcNVofRNW0eQmaQeWzOc597XOWqtNaH8SpCozPxFA53Km+iTkIzQxj7EIOtaTpUkwi8q0iN6akQHpNeYgrsuWyVcNi2FgBr72mTGGBg7WhDyxNcsu0w87w== 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=YmE2AW0hfYcYN8ImP4+WdKTC3/svsjghLxvXvPWuFK4=; b=knAXfNL5NCWksIYUWMv2e5l8hMcbZR0HD9JynIM4qIhh0xYooPxBpaQRRu5DnJzvMGbBnJPAx0CUIl1tCTxuSQa3FeXC89xDWq81dwwvbX1E3QA/D4MjcbfBfHT2VkRSL55WEpGd+l27LeOmSVYBx3Q4kuTsxtwiFams7KM/Yr7UmYQy92mLLR4aCwKqX6InVX10zuaZuqk8PPuVfpBnaPX6iR66CWL18JPAUAKT90IDqCOTXfggk+SdheU/DpEmfyNNZzR23omYSdD8LQ32/wQXRSnZfQEAqN9gyuBrzR+phs4inTXpew4aoS3se4GZd573OLsANuvH6z884zkeLg== 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=YmE2AW0hfYcYN8ImP4+WdKTC3/svsjghLxvXvPWuFK4=; b=dLHdrl4//JcIavLwzF43iLgySJ2I0HTK1xEJLEMzCyZbwWeLN7hiXe4JhUlndZt4X4czuynCwHp/EmPSRka7oganVudL3uezSytSZXYF4mCwW+/nTnghgydjmAAalfuuVCW6A/T5mVS1C5AwjR9zfYi/ClpOj775azqM1/ElechvUMYvrDydZkXLpb99k0hGVgLLjB/0uASLE4OTDfIlDDwNFdpuVPq6m3wn4AYrZQ8XYWWSwlm7DRk5TKpZEDEuenfnjdHKbj3I5hSTPUB5YAq4jZ9Hibme2SXAm7aGRI6Z5cRW4MryhUO+0B8fy28jemr7bUBjuYjcqvL+5LtVyw== Received: from DM4PR12MB5373.namprd12.prod.outlook.com (2603:10b6:5:39a::17) by DM4PR12MB5198.namprd12.prod.outlook.com (2603:10b6:5:395::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.16; Wed, 18 Aug 2021 14:08:53 +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.4415.023; Wed, 18 Aug 2021 14:08:53 +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+XLUrIGqt3eWqAgAGtypCAAAkFAIAAHs4Q Date: Wed, 18 Aug 2021 14:08:53 +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: c4f2cc96-1919-4146-5bc1-08d96251b627 x-ms-traffictypediagnostic: DM4PR12MB5198: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oyzgGdhN0Jydn3gRT5/Pz79XJt7J7fm6Ug8kL4mScYwVIkzsnOkr9VoFFrKehPyMBl06nFlwPYu3VEunvBrDpVCsHo1pHJ2jGXJw2S6erGBZvcev5gSZbZ57e3RLdVVfiHLjibSwUr7uIbV3OwFIN9yMxu2uvPGxPfJpJ6so9U3FZYzFTYXNfxtYQkl/y3g7ej9kADa6efs35FmHOfuDnU6ki4fr6QxKq0ddpmR3h64LtpxyVXy4/uIDOZ8C0PhArsDgz5GHeHYYDjgjCWZcijixxRhUcfQh2dHp8Nx5dBaYABacLHbpayesv1UJLqjEcr7rQIRkqn5SPmqkZV61gS+oIwrftHu+42BUAZE69WMNdL0gsuvGWjiRdHXiNf9Rypqd1OgOJi0j81nJhXDlybEM7KBlZ92S5poigRsx1vksRrQokNVoUGuJ7ueZ5NOmvRwlBzaCyVzRRcWJFjaUAdCRschbf4KkhLc043aQe4FaTeyvaHfuX1ufpTc3kCtztVR2FEaMB+ve0Cp93Q0uWCmiaR5Sp+aaVzyb64S2EIvqpBDxedPsu3KAdpDTAAlVLqGQF6bUts6uCSTPw91cmo0+Y3o+Ia8DrmK5gHH/pzohlhziO9jX3oXQ3R2zyh6CoeN58jG3MqSQrV7tef2XNQX42sewnOXqKtf1MYYm5bW3UobSy4d75SMbc8NUO+zHH4AmKrxFD7X9RhqjShQEXA== 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)(346002)(39860400002)(136003)(396003)(366004)(376002)(33656002)(26005)(478600001)(6506007)(316002)(53546011)(8676002)(52536014)(38070700005)(6916009)(4326008)(186003)(66556008)(7696005)(9686003)(64756008)(71200400001)(5660300002)(122000001)(66946007)(54906003)(8936002)(2906002)(76116006)(66476007)(86362001)(83380400001)(66446008)(38100700002)(55016002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QlI3VHcwU2hOeEJoSCtNelA5SUh1S3ZzVVdHNi93cFh3blBMendXSGo1MElC?= =?utf-8?B?YU1nZmp1ZVF1OElUazlNSVZFelh4eEZjZXhQcHdGMndabFRUbDd4dkxqUGUw?= =?utf-8?B?UlgxSThHalMvZ2RoMUJyYXJpWUxORTNmQmZMUkVNdHA1Uk5JNDcwNk1reFBS?= =?utf-8?B?NVBNa3ZibE94VUk0Sm5kREMyWUo1OStpR3JWZ1pmZ08xeFBLdlVVWlNhRnpF?= =?utf-8?B?VG9IajE3cm9uZXB3YzNmYUxRWDBqOUZwcFAydDJZSXUzak53MkZmRzFNazIw?= =?utf-8?B?V28vQmVqdENGb0poMnRRbURITzJsbHJJNEVsUXV4Z3YyZU01Um13ZUgyamRR?= =?utf-8?B?YzFkM0Y2azdvT0xFcEd5S1cvdUVvT3lMOHFTRlhVeDlvUlFuNWtvdjZrcVAx?= =?utf-8?B?MVRLQllTcUpRb1FRREZEcWtFZU0yZ2tiVCtWOW00dGFKcTI2WDlPdFZwdzRF?= =?utf-8?B?dDlkNHUzNFJzZjZ4T1h4ODgyVUQxSlU0ZlJzcWtqeCt4RVJaVHR2alUrWnds?= =?utf-8?B?YTBpQUJ4cEpxYWR5cnU1T1duZDcyNXQzTTBFRmZWTkxvdXRPY1pIS2lleVJp?= =?utf-8?B?NWdCMlhQeHh0THBlSDhkelJGdXNvZjB0cW1PMHByVHR2b25uVjBzNE0wT0NS?= =?utf-8?B?TXNRZkpuSlNpSGVRYWtQZ0pmRnhmN29mTkdaZG1ISGFWclYzc3hkdkhQem1N?= =?utf-8?B?S3hLTVV4cmFFZVhYM1VHb1ZrSFFmLzJJc08vYkdTblgyTFRORXI3WVFNOXg3?= =?utf-8?B?WW9XOWFJVllWaDR5MFR5RjFNTlVIcGRneGlFaWRES3dscjZmUUZkU1JMYmRh?= =?utf-8?B?Sm1JV0pzNFZ1SWNxcVpOS21SWjgrTzQvbW52MGkrY2RtRXlIU1FUTTVnWDFT?= =?utf-8?B?c1dOYlJYWXhXbytINVJPbHd3NHNSZy9Ub1RRQldpcGRJei9wQmkyQzZSenhE?= =?utf-8?B?R1I4ZnlHTXNQdEFTQXpnaEJkeGRMUXRxV1hzRDk2Rm10WjRCRjlIUy9YQ25H?= =?utf-8?B?M1FVbHRIVXBwMmR1dkpmL1pWT2czRDkrSHcvaTFuQUVlM3IrRlhkTTF5NS9M?= =?utf-8?B?V2VMcmhUTTdLVkVaUEhrc2wyUjVYbmpOWXRrYVNOQXVET0tROHFzbE42SGsv?= =?utf-8?B?WUhOdzRxc0QzTDhiWkRva1RGQ3ZaQlZiTU9lOEtQR00zVzR3WTZlNkp1L1NM?= =?utf-8?B?ZTdmVE1oaW5ZK3dzRlRuMlNYSmdUYWNQTjBmM1hMZTJNMUplT2czdGU4Q29N?= =?utf-8?B?eFN1RmpnUS9XZmhBSWx3K0tIL0tndGhjYzQyZklyeVVGVGs1alRMYmthRjEx?= =?utf-8?B?d3pFUENRVHdZNHZwelhleFFSUUIxRmswcU1PcHNDWnJvNHp4NThNUGJSZGpt?= =?utf-8?B?MHkvNE9uWDZZaDc4YmFTQnl6SndjQ1BjY3U5M1dTQW51UFM1RGNEM3RyVk1u?= =?utf-8?B?SE1vbTRNK0g1cjloNk5CVTcvTHo4RTd6cVJUMmw4aFB3RUdOd1FGWG5PWER4?= =?utf-8?B?eExTREt5RTlrc0c4bkF6K2oySkdXYzJSOXdodnZEWkIyb2laS2ZoREJMemlq?= =?utf-8?B?UUtMbFFOL2VEYi85MmF2anBpajZvdDVzZlAvRzd4dnFteEVUQzZEQ0ZRY0lJ?= =?utf-8?B?SU5NT2QwakhHai9ZVWpQZzJGQ3M1SUhwcC9kZERkWERtcTZJdG92WHJDbi9T?= =?utf-8?B?T2tNZHI3Ymd6Sng2SDNoZkY3MG5obGhzZ1FYSW9ZdGNhRTBJK1cvdGwySlVJ?= =?utf-8?Q?f6GRmugljg8Tjyem7SEms3A6mrIw3d/w7emP8WZ?= 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: c4f2cc96-1919-4146-5bc1-08d96251b627 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Aug 2021 14:08:53.5809 (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: hrT6Ipb+AkxxwfnEwxTY8mok+EEpghLrJVlbB16kOvBeQRyRUvdUjXyUBG4pPPOUdyHhySwiXFUuwomd9vII8w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5198 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 cmluamFjb2JrQGdtYWlsLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBBdWd1c3QgMTgsIDIwMjEg Nzo0OCBQTQ0KPiBUbzogWHVlbWluZyhTdGV2ZW4pIExpIDx4dWVtaW5nbEBudmlkaWEuY29tPg0K PiBDYzogSmFjayBNaW4gPGphY2ttaW5AbnZpZGlhLmNvbT47IGRwZGstZGV2IDxkZXZAZHBkay5v cmc+OyBYaWFveXVuIExpIDx4aWFveXVuLmxpQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtk cGRrLWRldl0gW1BBVENIIHYyIDA2LzE1XSBhcHAvdGVzdHBtZDogYWRkIGNvbW1vbiBmd2Qgd3Jh cHBlciBmdW5jdGlvbg0KPiANCj4gT24gV2VkLCBBdWcgMTgsIDIwMjEgYXQgNDo1NyBQTSBYdWVt aW5nKFN0ZXZlbikgTGkgPHh1ZW1pbmdsQG52aWRpYS5jb20+IHdyb3RlOg0KPiA+DQo+ID4NCj4g Pg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEplcmluIEph Y29iIDxqZXJpbmphY29ia0BnbWFpbC5jb20+DQo+ID4gPiBTZW50OiBUdWVzZGF5LCBBdWd1c3Qg MTcsIDIwMjEgNTozNyBQTQ0KPiA+ID4gVG86IFh1ZW1pbmcoU3RldmVuKSBMaSA8eHVlbWluZ2xA bnZpZGlhLmNvbT4NCj4gPiA+IENjOiBKYWNrIE1pbiA8amFja21pbkBudmlkaWEuY29tPjsgZHBk ay1kZXYgPGRldkBkcGRrLm9yZz47IFhpYW95dW4NCj4gPiA+IExpIDx4aWFveXVuLmxpQGludGVs LmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2MiAwNi8xNV0gYXBw L3Rlc3RwbWQ6IGFkZCBjb21tb24gZndkDQo+ID4gPiB3cmFwcGVyIGZ1bmN0aW9uDQo+ID4gPg0K PiA+ID4gT24gV2VkLCBBdWcgMTEsIDIwMjEgYXQgNzozNSBQTSBYdWVtaW5nIExpIDx4dWVtaW5n bEBudmlkaWEuY29tPiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4gRnJvbTogWGlhb3l1IE1pbiA8 amFja21pbkBudmlkaWEuY29tPg0KPiA+ID4gPg0KPiA+ID4gPiBBZGRlZCBhbiBpbmxpbmUgY29t bW9uIHdyYXBwZXIgZnVuY3Rpb24gZm9yIGFsbCBmd2QgZW5naW5lcyB3aGljaA0KPiA+ID4gPiBk byB0aGUgZm9sbG93aW5nIGluIGNvbW1vbjoNCj4gPiA+ID4NCj4gPiA+ID4gMS4gZ2V0X3N0YXJ0 X2N5Y2xlcw0KPiA+ID4gPiAyLiBydGVfZXRoX3J4X2J1cnN0KC4uLixuYl9wa3RfcGVyX2J1cnN0 KQ0KPiA+ID4gPiAzLiBpZiByeHFfc2hhcmUgZG8gZm9yd2FyZF9zaGFyZWRfcnhxKCksIG90aGVy d2lzZSBkbyBmd2QgZGlyZWN0bHkgNC4NCj4gPiA+ID4gZ2V0X2VuZF9jeWNsZQ0KPiA+ID4gPg0K PiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBYaWFveXUgTWluIDxqYWNrbWluQG52aWRpYS5jb20+DQo+ ID4gPiA+IC0tLQ0KPiA+ID4gPiAgYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaCB8IDI0ICsrKysrKysr KysrKysrKysrKysrKysrKw0KPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDI0IGluc2VydGlvbnMo KykNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmgg Yi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oIGluZGV4DQo+ID4gPiA+IDEzMTQxZGZlZDkuLmI2ODVh YzQ4ZDYgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmgNCj4gPiA+ ID4gKysrIGIvYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaA0KPiA+ID4gPiBAQCAtMTAyMiw2ICsxMDIy LDMwIEBAIHZvaWQgYWRkX3R4X2R5bmZfY2FsbGJhY2socG9ydGlkX3QgcG9ydGlkKTsNCj4gPiA+ ID4gdm9pZCByZW1vdmVfdHhfZHluZl9jYWxsYmFjayhwb3J0aWRfdCBwb3J0aWQpOyAgaW50DQo+ ID4gPiA+IHVwZGF0ZV9qdW1ib19mcmFtZV9vZmZsb2FkKHBvcnRpZF90IHBvcnRpZCk7DQo+ID4g PiA+DQo+ID4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiA+ID4gK2RvX2J1cnN0X2Z3ZChz dHJ1Y3QgZndkX3N0cmVhbSAqZnMsIHBhY2tldF9md2RfY2IgZndkKSB7DQo+ID4gPiA+ICsgICAg ICAgc3RydWN0IHJ0ZV9tYnVmICpwa3RzX2J1cnN0W01BWF9QS1RfQlVSU1RdOw0KPiA+ID4gPiAr ICAgICAgIHVpbnQxNl90IG5iX3J4Ow0KPiA+ID4gPiArICAgICAgIHVpbnQ2NF90IHN0YXJ0X3Rz YyA9IDA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICBnZXRfc3RhcnRfY3ljbGVzKCZzdGFy dF90c2MpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgLyoNCj4gPiA+ID4gKyAgICAgICAg KiBSZWNlaXZlIGEgYnVyc3Qgb2YgcGFja2V0cyBhbmQgZm9yd2FyZCB0aGVtLg0KPiA+ID4gPiAr ICAgICAgICAqLw0KPiA+ID4gPiArICAgICAgIG5iX3J4ID0gcnRlX2V0aF9yeF9idXJzdChmcy0+ cnhfcG9ydCwgZnMtPnJ4X3F1ZXVlLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBw a3RzX2J1cnN0LCBuYl9wa3RfcGVyX2J1cnN0KTsNCj4gPiA+ID4gKyAgICAgICBpbmNfcnhfYnVy c3Rfc3RhdHMoZnMsIG5iX3J4KTsNCj4gPiA+ID4gKyAgICAgICBpZiAodW5saWtlbHkobmJfcngg PT0gMCkpDQo+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ID4gPiA+ICsgICAgICAg aWYgKHVubGlrZWx5KHJ4cV9zaGFyZSA+IDApKQ0KPiA+ID4NCj4gPiA+IFNlZSBiZWxvdy4gSXQg cmVhZHMgYSBnbG9iYWwgbWVtb3J5Lg0KPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgIGZv cndhcmRfc2hhcmVkX3J4cShmcywgbmJfcngsIHBrdHNfYnVyc3QsIGZ3ZCk7DQo+ID4gPiA+ICsg ICAgICAgZWxzZQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgKCpmd2QpKGZzLCBuYl9yeCwgcGt0 c19idXJzdCk7DQo+ID4gPg0KPiA+ID4gTmV3IGZ1bmN0aW9uIHBvaW50ZXIgaW4gZmFzdHBhdGgu DQo+ID4gPg0KPiA+ID4gSU1PLCBXZSBzaG91bGQgbm90IGNyZWF0ZSBwZXJmb3JtYW5jZSByZWdy ZXNzaW9uIGZvciB0aGUgZXhpc3RpbmcgZm9yd2FyZCBlbmdpbmUuDQo+ID4gPiBDYW4gd2UgaGF2 ZSBhIG5ldyBmb3J3YXJkIGVuZ2luZSBqdXN0IGZvciBzaGFyZWQgbWVtb3J5IHRlc3Rpbmc/DQo+ ID4NCj4gPiBZZXMsIGZ1bGx5IGF3YXJlIG9mIHRoZSBwZXJmb3JtYW5jZSBjb25jZXJuLCB0aGUg Z2xvYmFsIGNvdWxkIGJlIGRlZmluZWQgYXJvdW5kIHJlY29yZF9jb3JlX2N5Y2xlcyB0byBtaW5p bWl6ZSB0aGUgaW1wYWN0cy4NCj4gPiBCYXNlZCBvbiB0ZXN0IGRhdGEsIHRoZSBpbXBhY3RzIGFs bW9zdCBpbnZpc2libGUgaW4gbGVnYWN5IG1vZGUuDQo+IA0KPiBBcmUgeW91IHNheWluZyB0aGVy ZSBpcyB6ZXJvICUgcmVncmVzc2lvbj8gSWYgbm90LCBjb3VsZCB5b3Ugc2hhcmUgdGhlIGRhdGE/ DQoNCkFsbW9zdCB6ZXJvLCBoZXJlIGlzIGEgcXVpY2sgc2luZ2xlIGNvcmUgcmVzdWx0IG9mIHJ4 b25seToNCgkzMi4yTXBwcywgNTguOWN5Y2xlcy9wYWNrZXQNClJldmVydCB0aGUgcGF0Y2ggdG8g cnhvbmx5LmM6DQoJMzIuMU1wcHMgNTkuOWN5Y2xlcy9wYWNrZXQNClRoZSByZXN1bHQgZG9lc24n dCBtYWtlIHNlbnNlIGFuZCBJIHJlYWxpemVkIHRoYXQgSSB1c2VkIGJhdGNoIG1idWYgZnJlZSwg YXBwbHkgaXQgbm93OiANCgkzMi4yTXBwcywgNTguOWN5Y2xlcy9wYWNrZXQNClRoZXJlIHdlcmUg c21hbGwgZGlnaXQganVtcHMgYmV0d2VlbiB0ZXN0cG1kIHJlc3RhcnQsIEkgcGlja2VkIHRoZSBi ZXN0IG9uZS4NClRoZSByZXN1bHQgaXMgYWxtb3N0IHNhbWUsIHNlZW1zIHRoZSBjb3N0IG9mIGVh Y2ggcGFja2V0IGlzIHNtYWxsIGVub3VnaC4NCkJUVywgSSdtIHRlc3Rpbmcgd2l0aCBkZWZhdWx0 IGJ1cnN0IHNpemUgYW5kIHF1ZXVlIGRlcHRoLg0KDQo+IA0KPiA+DQo+ID4gRnJvbSB0ZXN0IHBl cnNwZWN0aXZlLCBiZXR0ZXIgdG8gaGF2ZSBhbGwgZm9yd2FyZCBlbmdpbmUgdG8gdmVyaWZ5DQo+ ID4gc2hhcmVkIHJ4cSwgdGVzdCB0ZWFtIHdhbnQgdG8gcnVuIHRoZSByZWdyZXNzaW9uIHdpdGgg bGVzcyBpbXBhY3RzLiBIb3BlIHRvIGhhdmUgYSBzb2x1dGlvbiB0byB1dGlsaXplIGFsbCBmb3J3 YXJkaW5nIGVuZ2luZXMNCj4gc2VhbWxlc3NseS4NCj4gDQo+IFllcy4gaXQgZ29vZCBnb2FsLiB0 ZXN0cG1kIGZvcndhcmQgcGVyZm9ybWFuY2UgdXNpbmcgYXMgc3ludGhldGljIGJlbmNoIGV2ZXJ5 b25lLg0KPiBJIHRoaW5rLCB3ZSBhcmUgYWxpZ25lZCB0byBub3QgaGF2ZSBhbnkgcmVncmVzc2lv biBmb3IgdGhlIGdlbmVyaWMgZm9yd2FyZCBlbmdpbmUuDQo+IA0KPiA+DQo+ID4gPg0KPiA+ID4g PiArICAgICAgIGdldF9lbmRfY3ljbGVzKGZzLCBzdGFydF90c2MpOyB9DQo+ID4gPiA+ICsNCj4g PiA+ID4gIC8qDQo+ID4gPiA+ICAgKiBXb3JrLWFyb3VuZCBvZiBhIGNvbXBpbGF0aW9uIGVycm9y IHdpdGggSUNDIG9uIGludm9jYXRpb25zIG9mIHRoZQ0KPiA+ID4gPiAgICogcnRlX2JlX3RvX2Nw dV8xNigpIGZ1bmN0aW9uLg0KPiA+ID4gPiAtLQ0KPiA+ID4gPiAyLjI1LjENCj4gPiA+ID4NCg==