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 6DC49A0C41; Wed, 23 Jun 2021 17:40:02 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0149E4003F; Wed, 23 Jun 2021 17:40:02 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2062.outbound.protection.outlook.com [40.107.93.62]) by mails.dpdk.org (Postfix) with ESMTP id 8D1404003E; Wed, 23 Jun 2021 17:40:00 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iWJLnw5g7gkbMcy6DSDaNBqfxsX3GJ0vZ3DdZ0nyXweZc/o2AGZiqze0TIvf+ovSs9MZjuex+dogpiT0RisPB7oi/dDv13IJeH0xn5TGcQZ4S+8HCd6o6BjCbddQxJx3qFfKg21o8R7F2Vp2TsHNTXNiRDjsvOhNWYd5ZnN7Mm78xcQSAYfJ8DSmorseIu+fvLNz1vBZA8kaG18ai0UEWITXHxJ26MRbhD93CSsze+Bq81WEgOwNpPWavTPKhk3l2hcp9oazJ5UnhB9fya+d/livcJUIvcrZXO05oywKEnAgGpMc1S4AmbqSMeIXyr6te8cddYIpoC/M/vooX6TpJA== 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=kQbQiUn9FEOZzDTCBRNE2xpzh1BVdqNSDhJATwErCBQ=; b=EQnj+yyIC64sm12x+ti9dkmUh/ncy5UT7jK9vexGgTFFYKkBsNoqLTYeG1FNFrhq7gyy9+Kg42CvrOEJMyi1+uwEjBim4D8JTbxsN1e0E/5h6ubw2iAZM3vZVS8ZGR2KCtmEmFcodQ4UyefZr0qZO40PBq3WrAiBbh3nKJtxwsFIIRt0/zVLsD7TOksqB8ZT0/6nQLCeC6H6Nw4Nuuy9OTMhKtzvkbvExxyJR6qww5fLQnKHbIUK1HALtwAVC317ILE3C/4mZ1fnJErtkCAV9zcKlpyevStW3AQ2uhbr9JCceJvIBR5IeJKYBBtA59MV/AKHDFfwSBvvMN4UXzy+LA== 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=kQbQiUn9FEOZzDTCBRNE2xpzh1BVdqNSDhJATwErCBQ=; b=nQwwm4u+bRyppRjoQAUrfJ/Ey0NxIyivgVjyvxRGwRLZ1ULWdc4z+QbdNEpf5/TE+QkVtYbaLhz4SX6Z3FyJzuROPHpVxE1VD762BaSDEGGDncifBh6mwfwB+q5BfJ7yTk9o2ZUxSQZ99byxA1GEwo3hcgUG885O9s8vZTWwnCutE83ILnEbQ35Ctil9bXvpUDXPt/A8xtKwMeZnLELn35//nVkSvjloAhVXWLixYaReEUpzBRfy9lxKCkwcM7EBCkCx37vFMut1NMZ5qQZ38Wq/wcWh8ECRbgRtj5H/uSfrSJ8JPjruDcHXMz9AdicY6nJaWy+znBzGIWUj23BFrg== Received: from DM6PR12MB3753.namprd12.prod.outlook.com (2603:10b6:5:1c7::18) by DM6PR12MB4154.namprd12.prod.outlook.com (2603:10b6:5:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.19; Wed, 23 Jun 2021 15:39:59 +0000 Received: from DM6PR12MB3753.namprd12.prod.outlook.com ([fe80::2521:f25e:e8db:6e35]) by DM6PR12MB3753.namprd12.prod.outlook.com ([fe80::2521:f25e:e8db:6e35%6]) with mapi id 15.20.4264.018; Wed, 23 Jun 2021 15:39:59 +0000 From: Slava Ovsiienko To: David Marchand CC: dev , Raslan Darawsheh , Matan Azrad , NBU-Contact-Thomas Monjalon , dpdk stable Thread-Topic: [dpdk-dev] [PATCH v2] common/mlx5: add provider query port support to glue library Thread-Index: AQHXZQl5Vl6rlOJ4REakpD75VxQBlKshbu2AgAAJ+eCAACrJgIAAES+A Date: Wed, 23 Jun 2021 15:39:59 +0000 Message-ID: References: <20210619124830.25297-1-viacheslavo@nvidia.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [95.164.10.10] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f4324c74-39dd-44be-a45e-08d9365d28e0 x-ms-traffictypediagnostic: DM6PR12MB4154: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: a2gNaw8RONZ0qVolJ4oGwv6x1gwLpka/ApSnjsEhoETLH2kw2M6ULEXD0FMC/9d75iB+v5DBD3VQcYwpLAG5Qdr/MNGKuxZGw+3ua6/mGCL1g7gkYZMIhjpKOlm/Ok5WbkrmtGsGkRc0EIQIxNYS39lDN28FS9bJBv7nwWd6ULCSEogavfj7hzofLPdr/SiC417uu/eMCEQu5daGu2IAjke5ngJ5VuhNcIVmTItpuieILKjyOhnRv8vjZzCv8jM2a2ZPXKKnxHZDs8snIpdWmq8ZvCmbXU6AqRxDZZ4yJORYQduG3u4zG514Kb+ow/yOd4wPf3cti/Ze/PcL8l9p2heQStVxX3mFO74LxepZsBX1EPsJQQi92tpU7Mg+GtOi/t37LEM+3Sgaj8thfGuFJBRGSh83eMn25gcmoylntZlxeFPJO4rECxFbM1CMgGRDLlT1tGji9/CdQMsEcpCBwp+nqSB8mdoS40U2vUDyBYw0vLRyKNBMHNBsZOi2IYR7MvfcRn+u3dgyK2fA3x6e4OB/uekK+fjTmmZrOeThChTrLpAkq2Ee+9diNj3w8tByEKdwx6V59C/EBJTltWVt5+yMTEu0Tviu+DD131iL3WQ= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB3753.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(366004)(396003)(136003)(39860400002)(83380400001)(55016002)(54906003)(9686003)(38100700002)(71200400001)(2906002)(122000001)(478600001)(86362001)(316002)(26005)(5660300002)(8676002)(76116006)(52536014)(186003)(53546011)(7696005)(8936002)(6506007)(66946007)(6916009)(66556008)(33656002)(4326008)(64756008)(66476007)(66446008); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SUYyM1BpTWttM285c3hhVnhGMk5GYU5VbVNzUWNYV0pKRFM5MVhSUDROdjJ1?= =?utf-8?B?SXVVYjllQ0xSS2F6SHJuc0x4YUJ3Nnh5SmhIa3Y0SjE0ZHIwa3lLU05kSjBJ?= =?utf-8?B?dllXMGdmMVIxZVcvM0pyS0UxTkl5K2pwcWtFZlBoRmhiVVcrK0YvZnVWSzFn?= =?utf-8?B?SFdrNnhPbzRKUCsrR050SDBqUmJWWXVPUWkrNitNWDYrbERnTEQ3R2RVSHBw?= =?utf-8?B?VzhiLzFSalJvd0dSdy9EenV2RVpiN3dvcGp5b2Q5elV0QmFsNHJYZjFHa0hG?= =?utf-8?B?RXlMeTZoZisxejVYMVAvUi9LY1g4ZWVEeVVuTXZ2NHNPWG1lSUFUbHZXdUs4?= =?utf-8?B?dDBta2xUc29aK2pBSFQ0VGFyWnJWV3hDb2dHOVhrYWhSRjBXZjZxRmFXQndm?= =?utf-8?B?anJUZUhIQ3o4NkYybWdvRFpYM2lGbFRRMk9nMHZKLzN3RWU4ZlVRUEN4V2Vu?= =?utf-8?B?OFdWUHBVYmxZSVA3KzZ3VTBUMzFTbXh3aGt5czZ0ZXdTNmNqY0R1K1hYdUQ1?= =?utf-8?B?aUQrVWo0SkNhRTh6Tkl0Uk5LZWppUmRLSVlXUGJSdkZPb203MVVlTlJjWE4v?= =?utf-8?B?eFVmVmFCcG1nOFpPeUt1UGRrbXd1UmZ0QU1nTSsrT2FNNnl5TVhBMmVVeURV?= =?utf-8?B?SllxTTRKUktucUpOQ096NmlIaFI4UjFHdFdUSWJPbkR0RFIrYXhnSFBBejdn?= =?utf-8?B?TGtkZUhsUjNsUmNueGM1WUNiQnB3eFFUQ21IOVZlalh4WEZrKzZYUG1JR1RL?= =?utf-8?B?WHNCaHJhRVVpNUVNL29zUTVrRldyQmJrKzd0TVAzMXhSWnEyMTU3ekcyaXhO?= =?utf-8?B?WW52cHdaWHBrVnNpMUoySWJRVnJ5anB5cmRSZk5KWFR4d2ZCTFdzK3JpdFJ2?= =?utf-8?B?Si94T3d2Mi9wVGNYL0IyWDQzTG1qR09jZkpjYU5udDIwVVUzeHY3VUdWVVZZ?= =?utf-8?B?R3l5eFgwbmJhSzB5Q2VQRzhQTkdEVUhxUE13N3IzWU9mMWNwY3FvTW13OU9K?= =?utf-8?B?QndsY1NOSG5NajZneWwySlB4MnRvYXlWT2tEbi9BSjNLNzNKcFAvM0hyMXor?= =?utf-8?B?SkdoR1MrNjdQNE1oK0pOcy9BK0lVa1NEc3dRRFBXMEdNSzFGUzJqTUg3TzdW?= =?utf-8?B?cFlBU2JVSHZGWWlTbklNbUovemF1RitveUxxVEN1VGdqaHBOaVNianBRS2Nh?= =?utf-8?B?dUFsZkxuaUNVemxCNFpmclljR3BhSmNiWGxwakk3SjB5eVJCMTVpZXlUYkpX?= =?utf-8?B?Rmp4WCsrL2dhUmZkaU5UdjFNakpDMTVmYzZoUDVpMEVMWk1TTUl2bFhuVHFP?= =?utf-8?B?SFVxVXVVR0Qva3RpRGpuVjZteS9YcGowUVRSV1lXcklHNmR4eTJQRXY0Nita?= =?utf-8?B?Ri9xRnplMExMMjh3UVZVZDZEOGp1WTc2ODhpUmdNczQyT3dHYmY0SkpteHdD?= =?utf-8?B?RThTeElhNHQvUWpBWk4zdXRENU5jaFNRRUJpQnFiSGVwNWdJMTlTc1FnTUZP?= =?utf-8?B?ak5nQW1jV0pGTnRLd1dIcXpZYnZhdVRYMVFhMWd5SEVrdUNBd092LzRISVl1?= =?utf-8?B?Tk50eWw0c0VFK0QrWDBCMmVpYmZJbXJ0UnNwblFyVng5QnFlN21CblBtaEZW?= =?utf-8?B?enlPcEFIWmRNMWVOcXg1QW4zT2hjVGxrbTk3SzJxeU5WL0dhcVoxOVFzK1I4?= =?utf-8?B?S0c3cHAvZWlCbkVtVnJ6Q3JUR2lIZ2Y0blI1aDJNTXo5MWs0YWlBcUkrT0lu?= =?utf-8?Q?Z2d2Yw4/VX8Le9MfTQ=3D?= 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: DM6PR12MB3753.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4324c74-39dd-44be-a45e-08d9365d28e0 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jun 2021 15:39:59.3835 (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: 6CZc/KuEhZKkSznPr4yPgLTQvyMZCbTCAHdZLmxQSWnG/8mEq2+DsmjjVP2BL0oCmQMI614l8bMUnewZp0Vieg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4154 Subject: Re: [dpdk-dev] [PATCH v2] common/mlx5: add provider query port support to glue library 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" SGksIERhdmlkDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRGF2aWQg TWFyY2hhbmQgPGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwg SnVuZSAyMywgMjAyMSAxNjo1Mg0KPiBUbzogU2xhdmEgT3ZzaWllbmtvIDx2aWFjaGVzbGF2b0Bu dmlkaWEuY29tPg0KPiBDYzogZGV2IDxkZXZAZHBkay5vcmc+OyBSYXNsYW4gRGFyYXdzaGVoIDxy YXNsYW5kQG52aWRpYS5jb20+OyBNYXRhbg0KPiBBenJhZCA8bWF0YW5AbnZpZGlhLmNvbT47IE5C VS1Db250YWN0LVRob21hcyBNb25qYWxvbg0KPiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IGRwZGsg c3RhYmxlIDxzdGFibGVAZHBkay5vcmc+DQo+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRD SCB2Ml0gY29tbW9uL21seDU6IGFkZCBwcm92aWRlciBxdWVyeSBwb3J0DQo+IHN1cHBvcnQgdG8g Z2x1ZSBsaWJyYXJ5DQo+IA0KPiBPbiBXZWQsIEp1biAyMywgMjAyMSBhdCAxOjI3IFBNIFNsYXZh IE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbnZpZGlhLmNvbT4NCj4gd3JvdGU6DQo+ID4gPiA+IFRo aXMgcGF0Y2ggaXMgaGlnaGx5IGRlc2lyYWJsZSB0byBiZSBwcm92aWRlZCBpbiBEUERLIExUUyBy ZWxlYXNlcw0KPiA+ID4gPiBkdWUgdG8gaXQgY292ZXJzIHRoZSBtYWpvciBjb21wYXRpYmlsaXR5 IGlzc3VlLg0KPiA+ID4NCj4gPiA+IFRoaXMgcGF0Y2ggaXMgYSBmaXgsIHlldCBub3RoaW5nIHRl bGxzIHRoaXMgc3RvcnkgaW4gdGhlIHRpdGxlLg0KPiA+DQo+ID4gVGhpcyBwYXRjaCBpcyBub3Qg YSBmaXguIEFjdHVhbGx5IGl0IGNvdmVycyB0aGUgY29tcGF0aWJpbGl0eSBpc3N1ZSwgbm90IGEg YnVnLg0KPiANCj4gSSBzdGlsbCB0aGluayBpdCBjb3VudHMgYXMgYSBmaXggaW4gdGhlIHNlbnNl IHRoYXQgdGhlIG1seDUgZHJpdmVyIGJlaGF2aW9yIGNoYW5nZXMNCj4gdG8gYW4gdW5kZXNpcmVk IHN0YXRlIGlmIHJkbWEtY29yZSBnZXRzIHVwZGF0ZWQuDQo+IA0KPiBJdCdzIG5vdCBhYm91dCBw cmVmZXJyaW5nICJmaXgiIGluIHRoZSB0aXRsZS4NCj4gSXQgaXMgbW9yZSBhY2N1cmF0ZS9kZXNj cmlwdGl2ZSB0byBtZS4NCj4gSWYgeW91IGZlZWwgc3Ryb25nbHkgYWdhaW5zdCAiZml4IiwgSSB3 b24ndCBpbnNpc3QuDQoNCkkgaGF2ZSBubyBzdHJvbmcgb2JqZWN0aW9ucyBhZ2FpbnN0ICJmaXgi LiBUaGUgcGF0Y2ggZGVmaW5pdGVseSBjYW4gYmUNCmNhdGVnb3JpemVkIGFzICJmaXgiIGFzIHdl bGwuIEl0IHdvdWxkIGJlIGVhc2llciB0byBwdXNoIHRoZSBwYXRjaCB0byBMVFMg8J+Yig0KSSBq dXN0IHRyaWVkIHRvIGJlIGV4dHJlbWVseSBob25lc3QgLSB1cHN0cmVhbSByZG1hLWNvcmUgZGlk IG5vdCBwcm92aWRlIHRoaXMgQVBJLA0Kbm93IGl0IGRvZXMsIGl0IHdvdWxkIGJlIHZlcnkgbmlj ZSB0byBlbmdhZ2UgaXQsIGFsbG93aW5nIGZ1bGwgRS1Td2l0Y2ggc3VwcG9ydCBvdmVyDQp1cHN0 cmVhbSByZG1hLWNvcmUgaW4gc29tZSBjb25maWd1cmF0aW9ucy4gRnJvbSBvdGhlciBzaWRlIC0g eW91IGFyZSByaWdodCwNCncvbyBwYXRjaCBFLVN3aXRjaCBtaWdodCBub3Qgd29yayBpbiBEUERL LCB3aXRoIHBhdGNoIC0gaXQgc2hvdWxkIHdvcmsuDQpMb29rcyBsaWtlIGEgdHJ1ZSBtYWdpYyBm aXgg8J+Yii4NCg0KPiANCj4gWWV0ICJhZGQgcHJvdmlkZXIgcXVlciBwb3J0IHN1cHBvcnQgdG8g Z2x1ZSBsaWJyYXJ5IiBpcyBqdXN0IGJsYWNrIG1hZ2ljIHRvDQo+IG1vc3Qgb2YgdXMuDQo+IA0K PiA+IFRoZSBVcHN0cmVhbSByZG1hLWNvcmUgd2FzIGV2b2x2ZWQsIGl0cyBjb21tdW5pdHkgYWRv cHRlZCBhIHNsaWdodGx5DQo+ID4gZGlmZmVyZW50IEFQSSB2ZXJzaW9uIHRoYW4gd2FzIHByZXNl bnRlZCBpbiB0aGUgdmVuZG9yIHZlcnNpb24uDQo+ID4gT3VyIFBNRCBzaG91bGQgY29uZm9ybSBi b3RoIHZlcnNpb25zIGFuZCB3ZSBwcm92aWRlZCB0aGlzIHBhdGNoIGZvcg0KPiBEUERLLg0KPiAN Cj4gTGV0J3MgdHJ5IGRpZmZlcmVudGx5Lg0KPiBQbGFjZSB5b3Vyc2VsZiBhcyBzb21lb25lIHdo byBkb2VzIG5vdCBrbm93IGEgdGhpbmcgYWJvdXQgdGhlIG1seDUgZHJpdmVyDQo+IGFuZCByZG1h LWNvcmUuDQo+IEhvdyBkb2VzIHN1Y2ggYSBwZXJzb24gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9m IHRoaXMgcGF0Y2g/DQo+IA0KPiBJIHdvdWxkIHN0YXRlIGluIHRoZSB0aXRsZSB0aGF0IHRoZSBt bHg1IGRyaXZlciBjYW4gbm93IGhhbmRsZSBjb3JyZWN0bHkgcmRtYS0NCj4gY29yZSAzNS4NCj4g QWRkaXRpb25hbGx5LCBpdCBjb3VsZCBpbmRpY2F0ZSB3aGljaCBmZWF0dXJlIFggaXMgbm93IGJl aGF2aW5nIGFzIGludGVuZGVkLg0KPiBCdXQgaWYgZmVhdHVyZSBYIGlzIHNvbWV0aGluZyBpbnRl cm5hbCB0byB0aGUgbWx4NSBkcml2ZXIsIGl0IGlzIHdvcnRoIHNraXBwaW5nLg0KDQpUaGlzIHJk bWEtY29yZSBBUEkgbW9zdGx5IHJlcG9ydHMgRS1Td2l0Y2ggdnBvcnQgYXNzaWduZWQgaW5kaWNl cywgdGhlIGFzc2lnbmluZyBzY2hlbWENCm9mIHRoZXNlIG9uZXMgZGVwZW5kcyBvbiBtYW55IGZh Y3RvcnMgLSBrZXJuZWwvZmlybXdhcmUvTEFHIGNvbmZpZ3MvZXRjLiBGb3JtZXJseSwNCnRoZSB2 cG9ydCBpbmRpY2VzIHdlcmUgYXNzaWduZWQgaW4gZGlyZWN0IGNvcnJlc3BvbmRlbmNlIHdpdGgg VkYgaW5kZXgsIGZvciB0aGVzZSBjYXNlcw0KRS1Td2l0Y2ggaXMgc3VwcG9ydGVkIGZpbmUgZXZl biB3L28gQVBJLiBCdXQgdGhlIG5ld2VyIGtlcm5lbCBkcml2ZXJzIHdpdGggbmV3IGZlYXR1cmVz IHN1cHBvcnRlZA0KY2hhbmdlZCB0aGUgdnBvcnQgaWRlbnRpZmljYXRpb24gc2NoZW1hIGFuZCBm b3JtZXIgYXBwcm9hY2ggbWlnaHQgbm90IHdvcmssIHRoYXQncyB3aHkgdGhpcw0KQVBJIHdhcyBp bnRyb2R1Y2VkLg0KDQpTbywgaWYgSSB1bmRlcnN0YW5kIHlvdXIgY29tbWVudCBjb3JyZWN0bHks IHdlIHNob3VsZCB0ZWxsIGZldyB3b3JkcyB0aGUgRS1Td2l0Y2gNCmJlaGF2aW9yIG1pZ2h0IGJl IGFmZmVjdGVkIGFuZCB0aGUgZmVhdHVyZSBtYWxmdW5jdGlvbiBpcyBwb3NzaWJsZS4NCg0KV2l0 aCBiZXN0IHJlZ2FyZHMsDQpTbGF2YQ0K