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 17F02A0C45; Wed, 6 Oct 2021 09:54:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 05FE441139; Wed, 6 Oct 2021 09:54:44 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2070.outbound.protection.outlook.com [40.107.92.70]) by mails.dpdk.org (Postfix) with ESMTP id 4EC29410FF for ; Wed, 6 Oct 2021 09:54:42 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B8nzd1wpoP25KNbFVaFGBRyxnqMUlfFkATDr4TI60JFbyOfVakVdffHAk0exvb7NOmuVejEnsD8traPXJt+riooCKekZKlkNWRKN8vnX2UR2XbCnlS2JBFbzFC25UHLYlUD39iZxWmFKUwMbvgWtPj+xMNQTNuz8UK0LYXq3EewtAlDRZPZlCX9MCGv/bnUK+8zeDOzgxA/3IRo8ncBPOrukXh7+cWoSRUQsSwMbGnw7gxuWcJen9TvTYKMtTLgdS+cboGaRlENBeI8Ez2wNYvyDtT5tJQXbyTTpAPSlnCQWH33fS4Tfi7ypk0hYlMAmRye0z0KvnBKI7g0q5ZodjA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JAkAXILMw+5slhVfVyE0HNbfc48g8GX6A6PtVh/R6X4=; b=kYl7hNMLR68oMl3JciFxp84L4hdjYVhTG3p/eNezClTvo/g1gqQbe43ZyhswWsH+QaehzeGCBhsX7HyOevAP3eAaObhJCIybEB4Gb1Y3TAk4ASSumKMkeyLjOlagSDV30mxRsbHfW2aknN6GD7RjUUfDITxayzgCh0c6I+ZTwPW86/IbbF+D2kYfqfxurKdpnnw3eGvISnRMofIzsJSqBtmMW3c3IIH7jHAOhWHBKKwUY0XawhtMODuwwulYvbr9hARX0vfo0/9AsfP5H90JWrl12bp/hnta+t4bywJlXV8Wm3YNY5BU322X3Z6rpqplz76iXwyyIaEphty/4Cpacg== 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=JAkAXILMw+5slhVfVyE0HNbfc48g8GX6A6PtVh/R6X4=; b=r9OuADJ7Pz4MCbVu1W0v6L0vsdtA4e1ksAS76Bd4LP+pAeOwU/68ImEF793/q22Ev849tMJthER/8dyAX5DAixbAOSgX5zENnLSUmCYhoCRgpm2Wntoco4ToCHFtc6QOYypuY39D5LbzmqGsf7nDDeC8NBEE/+5yq5J+/kpyZtzri6ylelfvuhnbbRDUtyim5T3E5q1qU+uQW0D4thekVMlYjOr9jnWcpVrLq+jV1KoMOlkxHiRJow6woAGTGP8UtOlssFLVAx2909WOiBsicWcKoOiIz7QJjEiLkePZBDM+IaDupHLFzSm4WDth9Boydj8B9OJh4C0ncEFDZBCO7A== Received: from DM4PR12MB5373.namprd12.prod.outlook.com (2603:10b6:5:39a::17) by DM4PR12MB5151.namprd12.prod.outlook.com (2603:10b6:5:392::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15; Wed, 6 Oct 2021 07:54:40 +0000 Received: from DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::584f:672a:653f:fe25]) by DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::584f:672a:653f:fe25%6]) with mapi id 15.20.4566.023; Wed, 6 Oct 2021 07:54:40 +0000 From: "Xueming(Steven) Li" To: "jerinjacobk@gmail.com" , Raslan Darawsheh , "konstantin.ananyev@intel.com" CC: NBU-Contact-Thomas Monjalon , "andrew.rybchenko@oktetlabs.ru" , "dev@dpdk.org" , "ferruh.yigit@intel.com" Thread-Topic: [dpdk-dev] [PATCH v1] ethdev: introduce shared Rx queue Thread-Index: AQHXjRRw90lOFVUh8UWJorWd1QGccqtrMQAAgAAFuiCAAr2ogIAAA7rAgAA/vYCARM3YgIAGeHkAgAAiNICAABZuAIAAB6MAgAADvwCAAAXcgIAACzyAgACjuwCAAIoIAIAAHAEAgAAznICAAVjsAIAJSxiA Date: Wed, 6 Oct 2021 07:54:40 +0000 Message-ID: References: <20210727034204.20649-1-xuemingl@nvidia.com> <20210809114716.22035-1-xuemingl@nvidia.com> <6d4308c307a72d62b0be4d61f70f8d0c64a4e7ba.camel@nvidia.com> <15b1590a8899d85e85bb4f7c104b9399654ee160.camel@nvidia.com> <543d0e4ac61633fa179506906f88092a6d928fe6.camel@nvidia.com> <847b881fadbda7a2a4f3defc7ac7824395646497.camel@nvidia.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.40.4 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: a1366ea4-0149-40b3-f5c0-08d9889e8d7f x-ms-traffictypediagnostic: DM4PR12MB5151: 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-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yX/xqz72OM9i4lZAXCec6yqOl268hftstZ1u82zgtoIw7A6Cd4sip4YtfA5v5LKvuM5ts8vde0S3UnWDqoBte4/a1TG/Yw3rNNWbeGdG+U7yj8+edD+fvZjzZd4H2dI+ZVi06KVb8H2ZaN5XbB5toAD0UgeWpynCHfaswjW+2FU3htiV5hw+macxFKD1PiIeSodBVOtLt2dMsa/ux0vGlYcjS5QcmlLVUUhLsorShJaKDqybAmsTl55eRErvpb9GBJu1Lu3WLI28isRuKSu3c+QUOqPCExz1p9qqM7ixk8a+6xEfR/HBsdPmB7BmRbLprv6WbzcEMM3o+aIrQkXzhbpjPIEDG4tu7m4+aONmo8TvYRPeJi42EWZnTSeH95GnqpsWfnc/xrmMRig+dBBCg5I4qxhYNTPH5cee0QbxEw6mbUbkIYf8t1+RyvbReeSYXPtsIZMHW8iPXFMOfq5nJqEqETPTc+/y+84/ElLnCvoW7pL/byY6Us0I2ev3TgrTbDlA6LE7ajQHNps/6uPMPfTY4Nqy4kNhuVqYxrKB4jqCbDvFcDtrkhLFwT2ZppUOnJ1UOOEDNQF9KsPPdqV+iuOy3fCrcu3/adXEHvqrTQuy7J5BZb45W6fvwMxLJnYRtaUypjPGgUtv2awLjaTOas+ILqeYrB4nVVIAgjFmiYPhY4bIYoFDbUsfhQTDsjJQHUU9ye81d7WhLyF/3SuBhw== 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)(366004)(66556008)(110136005)(6506007)(66476007)(26005)(66946007)(64756008)(6486002)(4326008)(76116006)(508600001)(86362001)(8676002)(2616005)(8936002)(5660300002)(66446008)(316002)(54906003)(91956017)(38070700005)(186003)(2906002)(83380400001)(122000001)(71200400001)(6512007)(38100700002)(36756003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZHNUcFlPRnlvQUdXZllkODUyMy9uQ0tpYmlrMmZ4K2VpdUJZRStEZWJSUHV3?= =?utf-8?B?cFJ4V2MwS1dEbEl6Z2ExcjE2bjdVYW5lZ3c4MG9vVFkwczRHbVYrQmN2ZUNG?= =?utf-8?B?V2FlR2hLdkhRMGJpQ2IxSGdFMEdia0FyRDVSUWttVURzWmZCVElHVEMxdlhw?= =?utf-8?B?cmxWamdrUU5tM2tYdFNLSWhGTWsyZjJxNCtKOUt1MFAzM2h4bmxMMWFIRlJz?= =?utf-8?B?bXA1YWRWdnYzd1hxa0lhcXFVUEErMC9mYkNuUDZVQ1B0MjA3Y3JNR0FQYlph?= =?utf-8?B?UEIvemxrcVcyYzkvb2ZjNWd2bGdEZVV4WDVxZ1J3WVFzcVovektkOWZVTjZW?= =?utf-8?B?R0U4cCt3U21VUzlpZ1dnV3ZtT2kxVVFRc3h3dC9Gdm9PQU5wL2g4MTRJcHFD?= =?utf-8?B?RmlTWlF3YkFrUzVqTUhzeEtXUUR3V2NWY254REtSMlNUWjEraHJ4Uk1iYzJR?= =?utf-8?B?N1dCdnNQUW5rWHJKRGR1TldvUkJpaHJaNnZuUGRzRUFRMjlEd0p6RTRNMGZv?= =?utf-8?B?S2hKWGN1eTBwSzNYaEN6QXg0ZXlFc1Z2MVFjc0EwTVRKeVZEZ0Q0NzdZR05K?= =?utf-8?B?dUhBYzZZVTlhSkI1cGR5eHpMYlZHNFArTkRHOE9EajMraVl1ck1sMFRibzZ2?= =?utf-8?B?elYxTll3L3pXSDVCRmJIaUFaTFJqZkEyY0pRZlkrN2RCeVF5TXNZaEIraXN1?= =?utf-8?B?NHcxK0ZXQnJPc2FYeHEvcTkrUkxQeFZsQXUzQmJwRU0vWEJpbHE1UkJVcXB6?= =?utf-8?B?SldrK21RWFVZVm5lWjhWYkxuUXYzL2pOVTRyVGdWUWFGR3pSWUFBa3hqTmd3?= =?utf-8?B?bDArNUtNc2U1KzU1Q2c3RjRkK1E3K3dndUlhaVJuT0MrQ3RpUjM3WG5Obzhl?= =?utf-8?B?T0xnc0Npc0VYa0FDWjhFenJ5bWt3L0hqOHBISUZ4QVZSY3RSTG10Ymg4ZHAw?= =?utf-8?B?anRIUVVWZnp3OFF4d3NVcUhwbEkwSmFBN1Z6QldzVUh1eXlaZUUxOHhNTDFZ?= =?utf-8?B?Q0FsY3BCYmk2UHZsWGpxcW9vS0k4QzJ3ZC9IdEZDNS9TbVdXd0o1ZW9HQXVX?= =?utf-8?B?Y0h5cFZ0SDdyOXdRT2ZybC8vemhnZmRmRmxsWXZjM2o2UzFoRDlqK2Vwcmpp?= =?utf-8?B?Z3dkRDhBcU11b0g3Vk9tMWNWWi9nODByNE1zVU5kVmE5aE5WcThNVXBMRkdu?= =?utf-8?B?RktrYzVueXFJbWVFRnN6ZmdscmJMV0gzQmcwamRqUUJuVnl6Z0JYZGV6cHM1?= =?utf-8?B?cSt3S3hkOGg3dW5RVEpqcFFBQlRrbGlHNmJDSitvTVVqTWFkN05wRkNLdGxa?= =?utf-8?B?RUcxdGFVekt6dGxPUGltN0ZUSVdza2pZRTk0RWdNdG9Ob0Q4NUN0a1NhM3o4?= =?utf-8?B?Mklid2hQTHdRWTNTZzR4WkRUQnJHTlRKU0J6NGhrRnFwK1FWTitXTTUrUGxj?= =?utf-8?B?NGlPZjFxYkNLbVN4NEFwTFgxcWdTZ1VmVkhkUUdxeFEyUGRhMDhTcmxTblhK?= =?utf-8?B?RDJTcE8zdTFwSlZvTjhxWWlqVEMrSFJlS28xNkZnZDlSNXNUUU0vTEpvcGRu?= =?utf-8?B?RC9HWDN3cS9ub3RQV2ZTS1c3TVl1K1FSZ1liZ01rUjdYY0MyZW0rMzVQdUVz?= =?utf-8?B?MkZESERBdUZGb3lWL05NMTRBMjNSa2lMTkoxL0RLbXRnaGlrQ201dWxtRm1u?= =?utf-8?B?Mi83TzU0eXh3aDNtWWZzWnNvWnNGVm9ZYzlIVFlvc1RXelQ3dzV3bU1Wcjhy?= =?utf-8?B?MTZiTnp3eWZ4WVJ2UXlrS0RBN2tGQVVrRlBYZXAydDIvTFZYTCtkdk5IdGpu?= =?utf-8?B?andvWWhQR0J5a3hvMC82QT09?= 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: a1366ea4-0149-40b3-f5c0-08d9889e8d7f X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Oct 2021 07:54:40.8903 (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: dTwGzr2ujFARqNgnQu4PC99M7OZkWvBzkZfZ+QkJv7Zdg/pUMKWZfAYGWXI0sKNxWFVCqFMk4lyRxXg02EjEgQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5151 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [dpdk-dev] [PATCH v1] ethdev: introduce shared Rx queue 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" T24gVGh1LCAyMDIxLTA5LTMwIGF0IDA5OjU5ICswMDAwLCBBbmFueWV2LCBLb25zdGFudGluIHdy b3RlOg0KDQoNCk9uIFdlZCwgMjAyMS0wOS0yOSBhdCAxMDoyMCArMDAwMCwgQW5hbnlldiwgS29u c3RhbnRpbiB3cm90ZToNCg0KSW4gY3VycmVudCBEUERLIGZyYW1ld29yaywgZWFjaCBSWA0KDQpx dWV1ZQ0KDQppcw0KDQpwcmUtbG9hZGVkIHdpdGggbWJ1ZnMNCg0KZm9yIGluY29taW5nIHBhY2tl dHMuIFdoZW4gbnVtYmVyIG9mDQoNCnJlcHJlc2VudG9ycyBzY2FsZSBvdXQgaW4gYQ0KDQpzd2l0 Y2ggZG9tYWluLCB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uDQoNCmJlY2FtZQ0KDQpzaWduaWZpY2Fu dC4gTW9zdA0KDQppbXBvcnRhbnQsIHBvbGxpbmcgYWxsIHBvcnRzIGxlYWRzIHRvDQoNCmhpZ2gN Cg0KY2FjaGUgbWlzcywgaGlnaA0KDQpsYXRlbmN5IGFuZCBsb3cgdGhyb3VnaHB1dC4NCg0KDQpU aGlzIHBhdGNoIGludHJvZHVjZXMgc2hhcmVkIFJYDQoNCnF1ZXVlLg0KDQpQb3J0cw0KDQp3aXRo IHNhbWUNCg0KY29uZmlndXJhdGlvbiBpbiBhIHN3aXRjaCBkb21haW4NCg0KY291bGQNCg0Kc2hh cmUNCg0KUlggcXVldWUgc2V0IGJ5IHNwZWNpZnlpbmcgc2hhcmluZw0KDQpncm91cC4NCg0KUG9s bGluZyBhbnkgcXVldWUgdXNpbmcgc2FtZSBzaGFyZWQNCg0KUlgNCg0KcXVldWUNCg0KcmVjZWl2 ZXMgcGFja2V0cyBmcm9tDQoNCmFsbCBtZW1iZXIgcG9ydHMuIFNvdXJjZSBwb3J0IGlzDQoNCmlk ZW50aWZpZWQNCg0KYnkgbWJ1Zi0+cG9ydC4NCg0KDQpQb3J0IHF1ZXVlIG51bWJlciBpbiBhIHNo YXJlZCBncm91cA0KDQpzaG91bGQgYmUNCg0KaWRlbnRpY2FsLiBRdWV1ZQ0KDQppbmRleCBpcw0K DQoxOjEgbWFwcGVkIGluIHNoYXJlZCBncm91cC4NCg0KDQpTaGFyZSBSWCBxdWV1ZSBpcyBzdXBw b3NlZCB0byBiZQ0KDQpwb2xsZWQNCg0Kb24NCg0Kc2FtZSB0aHJlYWQuDQoNCg0KTXVsdGlwbGUg Z3JvdXBzIGlzIHN1cHBvcnRlZCBieSBncm91cA0KDQpJRC4NCg0KDQpJcyB0aGlzIG9mZmxvYWQg c3BlY2lmaWMgdG8gdGhlDQoNCnJlcHJlc2VudG9yPyBJZg0KDQpzbyBjYW4gdGhpcyBuYW1lIGJl IGNoYW5nZWQNCg0Kc3BlY2lmaWNhbGx5IHRvDQoNCnJlcHJlc2VudG9yPw0KDQoNClllcywgUEYg YW5kIHJlcHJlc2VudG9yIGluIHN3aXRjaCBkb21haW4NCg0KY291bGQNCg0KdGFrZSBhZHZhbnRh Z2UuDQoNCg0KSWYgaXQgaXMgZm9yIGEgZ2VuZXJpYyBjYXNlLCBob3cgdGhlDQoNCmZsb3cNCg0K b3JkZXJpbmcgd2lsbCBiZSBtYWludGFpbmVkPw0KDQoNCk5vdCBxdWl0ZSBzdXJlIHRoYXQgSSB1 bmRlcnN0b29kIHlvdXINCg0KcXVlc3Rpb24uDQoNClRoZSBjb250cm9sIHBhdGggb2YgaXMNCg0K YWxtb3N0IHNhbWUgYXMgYmVmb3JlLCBQRiBhbmQgcmVwcmVzZW50b3INCg0KcG9ydA0KDQpzdGls bCBuZWVkZWQsIHJ0ZSBmbG93cyBub3QgaW1wYWN0ZWQuDQoNClF1ZXVlcyBzdGlsbCBuZWVkZWQg Zm9yIGVhY2ggbWVtYmVyIHBvcnQsDQoNCmRlc2NyaXB0b3JzKG1idWYpIHdpbGwgYmUNCg0Kc3Vw cGxpZWQgZnJvbSBzaGFyZWQgUnggcXVldWUgaW4gbXkgUE1EDQoNCmltcGxlbWVudGF0aW9uLg0K DQoNCk15IHF1ZXN0aW9uIHdhcyBpZiBjcmVhdGUgYSBnZW5lcmljDQoNClJURV9FVEhfUlhfT0ZG TE9BRF9TSEFSRURfUlhRIG9mZmxvYWQsDQoNCm11bHRpcGxlDQoNCmV0aGRldiByZWNlaXZlIHF1 ZXVlcyBsYW5kIGludG8NCg0KdGhlIHNhbWUNCg0KcmVjZWl2ZSBxdWV1ZSwgSW4gdGhhdCBjYXNl LCBob3cgdGhlIGZsb3cNCg0Kb3JkZXINCg0KaXMNCg0KbWFpbnRhaW5lZCBmb3IgcmVzcGVjdGl2 ZSByZWNlaXZlIHF1ZXVlcy4NCg0KDQpJIGd1ZXNzIHRoZSBxdWVzdGlvbiBpcyB0ZXN0cG1kIGZv cndhcmQNCg0Kc3RyZWFtPw0KDQpUaGUNCg0KZm9yd2FyZGluZyBsb2dpYyBoYXMgdG8gYmUgY2hh bmdlZCBzbGlnaHRseQ0KDQppbg0KDQpjYXNlDQoNCm9mIHNoYXJlZCByeHEuDQoNCmJhc2ljYWxs eSBmb3IgZWFjaCBwYWNrZXQgaW4gcnhfYnVyc3QgcmVzdWx0LA0KDQpsb29rdXANCg0Kc291cmNl IHN0cmVhbSBhY2NvcmRpbmcgdG8gbWJ1Zi0+cG9ydCwNCg0KZm9yd2FyZGluZw0KDQp0bw0KDQp0 YXJnZXQgZnMuDQoNClBhY2tldHMgZnJvbSBzYW1lIHNvdXJjZSBwb3J0IGNvdWxkIGJlDQoNCmdy b3VwZWQgYXMNCg0KYQ0KDQpzbWFsbCBidXJzdCB0byBwcm9jZXNzLCB0aGlzIHdpbGwgYWNjZWxl cmF0ZXMNCg0KdGhlDQoNCnBlcmZvcm1hbmNlIGlmIHRyYWZmaWMNCg0KY29tZSBmcm9tDQoNCmxp bWl0ZWQgcG9ydHMuIEknbGwgaW50cm9kdWNlIHNvbWUgY29tbW9uIGFwaQ0KDQp0bw0KDQpkbw0K DQpzaGFyZCByeHEgZm9yd2FyZGluZywgY2FsbCBpdCB3aXRoIHBhY2tldHMNCg0KaGFuZGxpbmcN Cg0KY2FsbGJhY2ssIHNvIGl0IHN1aXRlcyBmb3INCg0KYWxsIGZvcndhcmRpbmcgZW5naW5lLiBX aWxsIHNlbnQgcGF0Y2hlcw0KDQpzb29uLg0KDQoNCg0KQWxsIHBvcnRzIHdpbGwgcHV0IHRoZSBw YWNrZXRzIGluIHRvIHRoZSBzYW1lDQoNCnF1ZXVlDQoNCihzaGFyZSBxdWV1ZSksIHJpZ2h0PyBE b2VzDQoNCnRoaXMgbWVhbnMgb25seSBzaW5nbGUgY29yZSB3aWxsIHBvbGwgb25seSwNCg0Kd2hh dA0KDQp3aWxsDQoNCmhhcHBlbiBpZiB0aGVyZSBhcmUNCg0KbXVsdGlwbGUgY29yZXMgcG9sbGlu Zywgd29uJ3QgaXQgY2F1c2UgcHJvYmxlbT8NCg0KDQpBbmQgaWYgdGhpcyByZXF1aXJlcyBzcGVj aWZpYyBjaGFuZ2VzIGluIHRoZQ0KDQphcHBsaWNhdGlvbiwgSSBhbSBub3Qgc3VyZSBhYm91dA0K DQp0aGUgc29sdXRpb24sIGNhbid0IHRoaXMgd29yayBpbiBhIHRyYW5zcGFyZW50DQoNCndheQ0K DQp0bw0KDQp0aGUgYXBwbGljYXRpb24/DQoNCg0KRGlzY3Vzc2VkIHdpdGggSmVyaW4sIG5ldyBB UEkgaW50cm9kdWNlZCBpbiB2Mw0KDQoyLzgNCg0KdGhhdA0KDQphZ2dyZWdhdGUgcG9ydHMNCg0K aW4gc2FtZSBncm91cCBpbnRvIG9uZSBuZXcgcG9ydC4gVXNlcnMgY291bGQNCg0Kc2NoZWR1bGUN Cg0KcG9sbGluZyBvbiB0aGUNCg0KYWdncmVnYXRlZCBwb3J0IGluc3RlYWQgb2YgYWxsIG1lbWJl ciBwb3J0cy4NCg0KDQpUaGUgdjMgc3RpbGwgaGFzIHRlc3RwbWQgY2hhbmdlcyBpbiBmYXN0cGF0 aC4NCg0KUmlnaHQ/DQoNCklNTywNCg0KRm9yIHRoaXMNCg0KZmVhdHVyZSwgd2Ugc2hvdWxkIG5v dCBjaGFuZ2UgZmFzdHBhdGggb2YgdGVzdHBtZA0KDQphcHBsaWNhdGlvbi4gSW5zdGVhZCwgdGVz dHBtZCBjYW4gdXNlIGFnZ3JlZ2F0ZWQNCg0KcG9ydHMNCg0KcHJvYmFibHkgYXMNCg0Kc2VwYXJh dGUgZndkX2VuZ2luZSB0byBzaG93IGhvdyB0byB1c2UgdGhpcw0KDQpmZWF0dXJlLg0KDQoNCkdv b2QgcG9pbnQgdG8gZGlzY3VzcyA6KSBUaGVyZSBhcmUgdHdvIHN0cmF0ZWdpZXMgdG8NCg0KcG9s bGluZw0KDQphIHNoYXJlZA0KDQpSeHE6DQoNCjEuIHBvbGxpbmcgZWFjaCBtZW1iZXIgcG9ydA0K DQogICBBbGwgZm9yd2FyZGluZyBlbmdpbmVzIGNhbiBiZSByZXVzZWQgdG8gd29yayBhcw0KDQpi ZWZvcmUuDQoNCiAgIE15IHRlc3RwbWQgcGF0Y2hlcyBhcmUgZWZmb3J0cyB0b3dhcmRzIHRoaXMN Cg0KZGlyZWN0aW9uLg0KDQogICBEb2VzIHlvdXIgUE1EIHN1cHBvcnQgdGhpcz8NCg0KDQpOb3Qg dW5mb3J0dW5hdGVseS4gTW9yZSB0aGFuIHRoYXQsIGV2ZXJ5IGFwcGxpY2F0aW9uDQoNCm5lZWRz DQoNCnRvDQoNCmNoYW5nZQ0KDQp0byBzdXBwb3J0IHRoaXMgbW9kZWwuDQoNCg0KQm90aCBzdHJh dGVnaWVzIG5lZWQgdXNlciBhcHBsaWNhdGlvbiB0byByZXNvbHZlIHBvcnQgSUQNCg0KZnJvbQ0K DQptYnVmIGFuZA0KDQpwcm9jZXNzIGFjY29yZGluZ2x5Lg0KDQpUaGlzIG9uZSBkb2Vzbid0IGRl bWFuZCBhZ2dyZWdhdGVkIHBvcnQsIG5vIHBvbGxpbmcNCg0Kc2NoZWR1bGUNCg0KY2hhbmdlLg0K DQoNCkkgd2FzIHRoaW5raW5nLCBtYnVmIHdpbGwgYmUgdXBkYXRlZCBmcm9tIGRyaXZlci9hZ2dy ZWdhdG9yDQoNCnBvcnQgYXMNCg0Kd2hlbiBpdA0KDQpjb21lcyB0byBhcHBsaWNhdGlvbi4NCg0K DQoNCg0KMi4gcG9sbGluZyBhZ2dyZWdhdGVkIHBvcnQNCg0KICAgQmVzaWRlcyBmb3J3YXJkaW5n IGVuZ2luZSwgbmVlZCBtb3JlIHdvcmsgdG8gdG8NCg0KZGVtbw0KDQppdC4NCg0KICAgVGhpcyBp cyBhbiBvcHRpb25hbCBBUEksIG5vdCBzdXBwb3J0ZWQgYnkgbXkgUE1EDQoNCnlldC4NCg0KDQpX ZSBhcmUgdGhpbmtpbmcgb2YgaW1wbGVtZW50aW5nIHRoaXMgUE1EIHdoZW4gaXQgY29tZXMNCg0K dG8NCg0KaXQsDQoNCmllLg0KDQp3aXRob3V0IGFwcGxpY2F0aW9uIGNoYW5nZSBpbiBmYXN0cGF0 aA0KDQpsb2dpYy4NCg0KDQpGYXN0cGF0aCBoYXZlIHRvIHJlc29sdmUgcG9ydCBJRCBhbnl3YXkg YW5kIGZvcndhcmRpbmcNCg0KYWNjb3JkaW5nDQoNCnRvDQoNCmxvZ2ljLiBGb3J3YXJkaW5nIGVu Z2luZSBuZWVkIHRvIGFkYXB0IHRvIHN1cHBvcnQgc2hhcmQNCg0KUnhxLg0KDQpGb3J0dW5hdGVs eSwgaW4gdGVzdHBtZCwgdGhpcyBjYW4gYmUgZG9uZSB3aXRoIGFuDQoNCmFic3RyYWN0DQoNCkFQ SS4NCg0KDQpMZXQncyBkZWZlciBwYXJ0IDIgdW50aWwgc29tZSBQTUQgcmVhbGx5IHN1cHBvcnQg aXQgYW5kDQoNCnRlc3RlZCwNCg0KaG93IGRvDQoNCnlvdSB0aGluaz8NCg0KDQpXZSBhcmUgbm90 IHBsYW5uaW5nIHRvIHVzZSB0aGlzIGZlYXR1cmUgc28gZWl0aGVyIHdheSBpdCBpcw0KDQpPSw0K DQp0bw0KDQptZS4NCg0KSSBsZWF2ZSB0byBldGhkZXYgbWFpbnRhaW5lcnMgZGVjaWRlIGJldHdl ZW4gMSB2cyAyLg0KDQoNCkkgZG8gaGF2ZSBhIHN0cm9uZyBvcGluaW9uIG5vdCBjaGFuZ2luZyB0 aGUgdGVzdHBtZCBiYXNpYw0KDQpmb3J3YXJkDQoNCmVuZ2luZXMNCg0KZm9yIHRoaXMgZmVhdHVy ZS5JIHdvdWxkIGxpa2UgdG8ga2VlcCBpdCBzaW1wbGUgYXMgZmFzdHBhdGgNCg0Kb3B0aW1pemVk IGFuZCB3b3VsZA0KDQpsaWtlIHRvIGFkZCBhIHNlcGFyYXRlIEZvcndhcmRpbmcgZW5naW5lIGFz IG1lYW5zIHRvIHZlcmlmeQ0KDQp0aGlzDQoNCmZlYXR1cmUuDQoNCg0KKzEgdG8gdGhhdC4NCg0K SSBkb24ndCB0aGluayBpdCBhICdjb21tb24nIGZlYXR1cmUuDQoNClNvIHNlcGFyYXRlIEZXRCBt b2RlIHNlZW1zIGxpa2UgYSBiZXN0IGNob2ljZSB0byBtZS4NCg0KDQotMSA6KQ0KDQpUaGVyZSB3 YXMgc29tZSBpbnRlcm5hbCByZXF1aXJlbWVudCBmcm9tIHRlc3QgdGVhbSwgdGhleSBuZWVkDQoN CnRvDQoNCnZlcmlmeQ0KDQphbGwgZmVhdHVyZXMgbGlrZSBwYWNrZXQgY29udGVudCwgcnNzLCB2 bGFuLCBjaGVja3N1bSwNCg0KcnRlX2Zsb3cuLi4NCg0KdG8NCg0KYmUgd29ya2luZyBiYXNlZCBv biBzaGFyZWQgcnggcXVldWUuDQoNCg0KVGhlbiBJIHN1cHBvc2UgeW91J2xsIG5lZWQgdG8gd3Jp dGUgcmVhbGx5IGNvbXByZWhlbnNpdmUgZndkLQ0KDQplbmdpbmUNCg0KdG8gc2F0aXNmeSB5b3Vy IHRlc3QgdGVhbSA6KQ0KDQpTcGVha2luZyBzZXJpb3VzbHksIEkgc3RpbGwgZG9uJ3QgdW5kZXJz dGFuZCB3aHkgZG8geW91IG5lZWQgYWxsDQoNCmF2YWlsYWJsZSBmd2QtZW5naW5lcyB0byB2ZXJp ZnkgdGhpcyBmZWF0dXJlLg0KDQoNClRoZSBzaGFyZWQgUnhxIGlzIGxvdyBsZXZlbCBmZWF0dXJl LCBuZWVkIHRvIG1ha2Ugc3VyZSBkcml2ZXINCg0KaGlnaGVyDQoNCmxldmVsIGZlYXR1cmVzIHdv cmtpbmcgcHJvcGVybHkuIGZ3ZC1lbmdpbmVzIGxpa2UgY3N1bSBjaGVja3MgaW5wdXQNCg0KcGFj a2V0IGFuZCBlbmFibGUgTDMvTDQgY2hlY2tzdW0gYW5kIHR1bm5lbCBvZmZsb2FkcyBhY2NvcmRp bmdseSwNCg0Kb3RoZXIgZW5naW5lcyBkbyB0aGVpciBvd24gZmVhdHVyZSB2ZXJpZmljYXRpb24u IEFsbCB0ZXN0DQoNCmF1dG9tYXRpb24NCg0KY291bGQgYmUgcmV1c2VkIHdpdGggdGhlc2UgZW5n aW5lcyBzdXBwb3J0ZWQgc2VhbWxlc3NseS4NCg0KDQpGcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCBt YWluIHB1cnBvc2Ugb2YgeW91ciBjaGFuZ2VzIHRvIHRlc3QtcG1kOg0KDQphbGxvdyB0byBmd2Qg cGFja2V0IHRob3VnaCBkaWZmZXJlbnQgZndkX3N0cmVhbSAoVFggdGhyb3VnaA0KDQpkaWZmZXJl bnQNCg0KSFcgcXVldWUpLg0KDQoNClllcywgZWFjaCBtYnVmIGluIGJ1cnN0IGNvbWUgZnJvbSBk aWZmZXJudCBwb3J0LCB0ZXN0cG1kIGN1cnJlbnQNCg0KZndkLQ0KDQplbmdpbmVzIHJlbGllcyBo ZWF2aWx5IG9uIHNvdXJjZSBmb3J3YXJkaW5nIHN0cmVhbSwgdGhhdCdzIHdoeSB0aGUNCg0KcGF0 Y2ggZGV2aWRlIGJ1cnN0IHJlc3VsdCBtYnVmcyBpbnRvIHN1Yi1idXJzdCBhbmQgdXNlIG9yZ2lu YWwgZndkLQ0KDQplbmdpbmUgY2FsbGJhY2sgdG8gaGFuZGxlLiBIb3cgdG8gaGFuZGxlIGlzIG5v dCBjaGFuZ2VkLg0KDQoNCkluIHRoZW9yeSwgaWYgaW1wbGVtZW50ZWQgaW4gZ2VuZXJpYyBhbmQg ZXh0ZW5kYWJsZSB3YXkgLSB0aGF0DQoNCm1pZ2h0IGJlIGEgdXNlZnVsIGFkZC1vbiB0byB0ZXNw bWQgZndkIGZ1bmN0aW9uYWxpdHkuDQoNCkJ1dCBjdXJyZW50IGltcGxlbWVudGF0aW9uIGxvb2tz IHZlcnkgY2FzZSBzcGVjaWZpYy4NCg0KQW5kIGFzIEkgZG9uJ3QgdGhpbmsgaXQgaXMgYSBjb21t b24gY2FzZSwgSSBkb24ndCBzZWUgbXVjaCBwb2ludA0KDQp0bw0KDQpwb2xsdXRlDQoNCmJhc2lj IGZ3ZCBjYXNlcyB3aXRoIGl0Lg0KDQoNClNoYXJlZCBSeHEgaXMgYSBldGhkZXYgZmVhdHVyZSB0 aGF0IGltcGFjdHMgaG93IHBhY2tldHMgZ2V0DQoNCmhhbmRsZWQuDQoNCkl0J3MgbmF0dXJhbCB0 byB1cGRhdGUgZm9yd2FyZGluZyBlbmdpbmVzIHRvIGF2b2lkIGJyb2tlbi4NCg0KDQpXaHkgaXMg dGhhdD8NCg0KQWxsIGl0IGFmZmVjdHMgdGhlIHdheSB5b3UgUlggdGhlIHBhY2tldHMuDQoNClNv IHdoeSAqYWxsKiBGV0QgZW5naW5lcyBoYXZlIHRvIGJlIHVwZGF0ZWQ/DQoNCg0KUGVvcGxlIHdp bGwgYXNrIHdoeSBzb21lIEZXRCBlbmdpbmUgY2FuJ3Qgd29yaz8NCg0KDQpJdCBjYW4gYmUgZG9j dW1lbnRlZDogd2hpY2ggZndkIGVuZ2luZSBzdXBwb3NlZCB0byB3b3JrIHByb3Blcmx5DQoNCndp dGggdGhpcyBmZWF0dXJlLCB3aGljaCBub3QuDQoNCkJUVywgYXMgSSB1bmRlcnN0YW5kLCBhcyBs b25nIGFzIFJYIHF1ZXVlcyBhcmUgcHJvcGVybHkgYXNzaWduZWQgdG8gbGNvcmVzLA0KDQphbnkg ZndkIGVuZ2luZSB3aWxsIGNvbnRpbnVlIHRvIHdvcmsuDQoNCkp1c3QgZm9yIGVuZ2luZXMgdGhh dCBhcmUgbm90IGF3YXJlIGFib3V0IHRoaXMgZmVhdHVyZSBwYWNrZXRzIGNhbiBiZSBzZW5kDQoN Cm91dCB2aWEgd3JvbmcgVFggcXVldWUuDQoNCg0KDQpMZXQgc2F5IHdoYXQgc3BlY2lmaWMgeW91 IGFyZSBnb2luZyB0byB0ZXN0IHdpdGggbWFjc3dhcCB2cyBtYWNmd2QNCg0KbW9kZSBmb3IgdGhh dCBmZWF0dXJlPw0KDQoNCklmIHBlb3BsZSB3YW50IHRvIHRlc3QgTklDIHdpdGggcmVhbCBzd2l0 Y2gsIG9yIG1ha2Ugc3VyZSBMMiBsYXllciBub3QNCg0KZ2V0IGNvcnJ1cHRlZC4NCg0KDQpJIHVu ZGVyc3RhbmQgdGhhdCwgd2hhdCBJIGFtIHNheWluZyB0aGF0IHlvdSBwcm9iYWJseSBkb24ndCBu ZWVkIGJvdGggdG8gdGVzdCB0aGlzIGZlYXR1cmUuDQoNCg0KSSBzdGlsbCB0aGluayBvbmUgc3Bl Y2lmaWMgRldEIGVuZ2luZSBpcyBlbm91Z2ggdG8gY292ZXIgbWFqb3JpdHkgb2YNCg0KdGVzdCBj YXNlcy4NCg0KDQpZZXMsIHJ4b25seSBzaG91bGQgYmUgc3VmZmljaWVudCB0byB2ZXJpZnkgdGhl IGZ1bmRhbWV0YWwsIGJ1dCB0bw0KDQp2ZXJpZnkgY3N1bSwgdGltaW5nLCBuZWVkIG90aGVycy4g U29tZSBiYWNrMmJhY2sgdGVzdCBzeXN0ZW0gbmVlZCBpbw0KDQpmb3J3YXJkaW5nLCByZWFsIHN3 aXRjaCBkZXBvbHltZW50IG5lZWQgbWFjc3dhcC4uLg0KDQoNCk9rLCBidXQgbm90aGluZyBzdG9w cyB5b3UgdG8gcGlja3VwIGZvciB5b3VyIHB1cnBvc2VzIGEgRldEIGVuZ2luZSB3aXRoIG1vc3Qg Y29tcHJlaGVuc2l2ZSBmdW5jdGlvbmFsaXR5Og0KDQptYWNzd2FwLCAgNXRzd2FwLCBldmVuIDV0 c3dhcCtjc3VtIHVwZGF0ZSAuLi4uDQoNCg0KDQoNCg0KVGhlIG5ldyBtYWNybyBpcyBpbnRyb2R1 Y2VkIHRvIG1pbmltaXplIHBlcmZvcm1hbmNlIGltcGFjdCwgSSdtDQoNCmFsc28NCg0Kd29uZGVy aW5nIGlzIHRoZXJlIGFuIGVsZWdhbnQgc29sdXRpb24gOikNCg0KDQpJIHRoaW5rIEplcmluIHN1 Z2dlc3RlZCBhIGdvb2QgYWx0ZXJuYXRpdmUgd2l0aCBldmVudGRldi4NCg0KQXMgYW5vdGhlciBh cHByb2FjaCAtIG1pZ2h0IGJlIGNvbnNpZGVyIHRvIGFkZCBhbiBSWCBjYWxsYmFjayB0aGF0DQoN CndpbGwgcmV0dXJuIHBhY2tldHMgb25seSBmb3Igb25lIHBhcnRpY3VsYXIgcG9ydCAod2hpbGUg a2VlcGluZw0KDQpwYWNrZXRzDQoNCmZvciBvdGhlciBwb3J0cyBjYWNoZWQgaW50ZXJuYWxseSku DQoNCg0KVGhpcyBhbmQgdGhlIGFnZ3JlYXRlIHBvcnQgQVBJIGNvdWxkIGJlIG9wdGlvbnMgaW4g ZXRoZGV2IGxheWVyIGxhdGVyLg0KDQpJdCBjYW4ndCBiZSB0aGUgZnVuZGFtZW50YWwgZHVlIHBl cmZvcm1hbmNlIGxvc3MgYW5kIHBvdGVudGlhbCBjYWNoZQ0KDQptaXNzLg0KDQoNCkFzIGEgJ3dp bGQnIHRob3VnaHQgLSBjaGFuZ2UgdGVzdHBtZCBmd2QgbG9naWMgdG8gYWxsb3cgbXVsdGlwbGUg VFgNCg0KcXVldWVzDQoNCnBlciBmd2Rfc3RyZWFtIGFuZCBhZGQgYSBmdW5jdGlvbiB0byBkbyBU WCBzd2l0Y2hpbmcgbG9naWMuDQoNCkJ1dCB0aGF0J3MgcHJvYmFibHkgcXVpdGUgYSBiaWcgY2hh bmdlIHRoYXQgbmVlZHMgYSBsb3Qgb2Ygd29yay4NCg0KDQpDdXJyZW50IHBlcmZvcm1hbmNlIHBl bmFsdHkNCg0KaXMgb25lICJpZiB1bmxpa2VseSIgcGVyIGJ1cnN0Lg0KDQoNCkl0IGlzIG5vdCBv bmx5IGFib3V0IHBlcmZvcm1hbmNlIGltcGFjdC4NCg0KSXQgaXMgYWJvdXQga2VlcGluZyB0ZXN0 LXBtZCBjb2RlIHNpbXBsZSBhbmQgbWFpbnRhaW5hYmxlLg0KDQoNClRoaW5rIGluIHJldmVyc2Ug ZGlyZWN0aW9uLCBpZiB3ZSBkb24ndCB1cGRhdGUgZndkLWVuZ2luZXMgaGVyZSwNCg0KYWxsDQoN Cm1hbGZ1bmN0aW9uIHdoZW4gc2hhcmVkIHJ4cSBlbmFibGVkLCB1c2VycyBjYW4ndCB2ZXJpZnkg ZHJpdmVyDQoNCmZlYXR1cmVzLCBhcmUgeW91IGV4cGVjdGluZyB0aGlzPw0KDQoNCkkgZXhwZWN0 IGRldmVsb3BlcnMgbm90IHRvIHJld3JpdGUgd2hvbGUgdGVzdC1wbWQgZndkIGNvZGUgZm9yIGVh Y2gNCg0KbmV3IGV0aGRldiBmZWF0dXJlLg0KDQoNCkhlcmUganVzdCBhYnN0cmFjdCBkdXBsaWNh dGVkIGNvZGUgZnJvbSBmd2QtZW5naW5lcywgYW4gaW1wcm92ZW1lbnQsDQoNCmtlZXAgdGVzdC1w bWQgY29kZSBzaW1wbGUgYW5kIG1hbnRhaW5hYmxlLg0KDQoNClNwZWNpYWxseSBmb3IgdGhlIGZl YXR1cmUgdGhhdCBpcyBub3Qgd2lkZWx5IHVzZWQuDQoNCg0KQmFzZWQgb24gdGhlIGh1Z2UgbWVt b3J5IHNhdmluZywgcGVyZm9ybWFuY2UgYW5kIGxhdGVuY3kgZ2FpbnMsIGl0IHdpbGwNCg0KYmUg cG9wdWxhciB0byB1c2Vycy4NCg0KDQpCdXQgdGhlIHRlc3QtcG1kIGlzIG5vdCBjcml0aWNhbCB0 byB0aGlzIGZlYXR1cmUsIEknbSBvayB0byBkcm9wIHRoZQ0KDQpmd2QtZW5naW5lIHN1cHBvcnQg aWYgeW91IGFncmVlLg0KDQoNCk5vdCBzdXJlIGZ1bGx5IHVuZGVyc3RhbmQgeW91IGhlcmUuLi4N Cg0KSWYgeW91IHNheWluZyB0aGF0IHlvdSBkZWNpZGVkIHRvIGRlbW9uc3RyYXRlIHRoaXMgZmVh dHVyZSB2aWEgc29tZSBvdGhlciBhcHAvZXhhbXBsZQ0KDQphbmQgcHJlZmVyIHRvIGFiYW5kb24g dGhlc2UgY2hhbmdlcyBpbiB0ZXN0cG1kIC0NCg0KdGhlbiwgeWVzIEkgZG9uJ3Qgc2VlIGFueSBw cm9ibGVtcyB3aXRoIHRoYXQuDQoNCkhpIEFuYW55ZXYgJiBKZXJpbiwNCg0KTmV3IHY0IHBvc3Rl ZCB3aXRoIGEgZGVkaWNhdGUgZndkIGVuZ2luZSB0byBkZW1vbnN0cmF0ZSB0aGlzIGZlYXR1cmUs IGRvIHlvdSBoYXZlIHRpbWUgdG8gY2hlY2s/DQoNClRoYW5rcywNClh1ZW1pbmcNCg==