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 7FD4AA0C48; Wed, 7 Jul 2021 08:25:15 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 06795406FF; Wed, 7 Jul 2021 08:25:15 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 20D9C4069E for ; Wed, 7 Jul 2021 08:25:12 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10037"; a="273091595" X-IronPort-AV: E=Sophos;i="5.83,331,1616482800"; d="scan'208";a="273091595" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jul 2021 23:25:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,331,1616482800"; d="scan'208";a="645284896" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga006.fm.intel.com with ESMTP; 06 Jul 2021 23:25:11 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Tue, 6 Jul 2021 23:25:11 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Tue, 6 Jul 2021 23:25:11 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.47) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Tue, 6 Jul 2021 23:25:10 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=if4NXlXPfdN5AXWhEBlchK5uXazH+Hw8I9HgzQJu698Z/4UBXUikA0TKueG9bQetlLEIltgymJCgf6YZ5JqPtcC4VZTtDsbWq/mqRuzPjfesr4RdhreoxE2AX13v6+QCYWRcK59H1iJW5N5sq32MLxI1f+Jd56tRk5ViSI9e+LSxEk/CWgZv4RRlZQeM9MVtXYqjImMpCn9SMjn0cAUkdicRUsxACM7hzO2/0F+g8RENWQAUNxI+PLJHpRkoWBI/WiLK6t8Ja8YEteJhvxigdeu3nO7XhfQJFpu5KC+QG2IoXsZ/GxbhCX1CLlKo1CqS4iIGUsPXL1rgN1PAzseeAQ== 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=V6mZphgdFmmqXLmvcwuS7wQj1OlMWD7dx8zX9GMES58=; b=n33XtsTaFXNkM+GAw2TIt5E/f0T9p0PHA/Z0e+x0w6hqt/LrWz7xl/Fyhe2+GVid1Q1qDvNYsE2osaHJx1Z0V0NIqYF3gQgpryxHM84NY07DmooKm/hXW3Y0red3Ea+6UsD474lWVLI9WKqdzFQXwmt35TkqwCMtERw3s5fP4qQK2w7bA0kui9cVAqMDs5AWZlT42OTX4SutiBUr3d17sxMVBrsryFWBzPYymTnNycLu6wqnUT/oR58M1wTNL55j04lma0rAWL4ghq0GgN7pt3JzMemsqJr05ByvhWutX7G/ycrJgRFVphTe8w2nspuO2Pt63V7zEK7hApG6r0AB+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V6mZphgdFmmqXLmvcwuS7wQj1OlMWD7dx8zX9GMES58=; b=y0mv7hASSjYqMqt4hdmENSh7rjLR2jOp2PyIQ6L1Z8gfTFqokeZGATcOtwMcmyEUDO0PfEZ4PJZEhZjkbKvpKenh7n/HpOdhNmrfF4wRcMeVoXdYlLWNaqYCsM19T50H1RH0HWe5FbelX3ZVjTJnLuyqwpuxj2Cepmma7CalrgU= Received: from BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by BN9PR11MB5387.namprd11.prod.outlook.com (2603:10b6:408:11c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.19; Wed, 7 Jul 2021 06:25:01 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::e9c1:3649:2c25:6e27]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::e9c1:3649:2c25:6e27%3]) with mapi id 15.20.4308.020; Wed, 7 Jul 2021 06:25:01 +0000 From: "Ding, Xuan" To: Maxime Coquelin , "Burakov, Anatoly" , "Xia, Chenbo" , "Thomas Monjalon" , David Marchand CC: "dev@dpdk.org" , "Hu, Jiayu" , "Pai G, Sunil" , "Richardson, Bruce" , "Van Haaren, Harry" , "Liu, Yong" , "Ma, WenwuX" Thread-Topic: [dpdk-dev] [PATCH v5 1/2] vhost: enable IOMMU for async vhost Thread-Index: AQHXcXpqbvUY9amCikO+ie2Du6+0b6s0TBaAgAAIPICAAB/9gIABN92AgAAEhYCAASDbMA== Date: Wed, 7 Jul 2021 06:25:01 +0000 Message-ID: References: <20210531150629.35020-1-xuan.ding@intel.com> <20210705084026.99898-1-xuan.ding@intel.com> <20210705084026.99898-2-xuan.ding@intel.com> <37d0691a-5094-4fea-8557-d117d230dcc8@intel.com> <68f64aa6-59a8-2e17-6eab-a49a6682e626@redhat.com> <4077e127-afff-0a2b-f2ba-5850b5e0a2ff@intel.com> <1013369b-3661-38fd-7207-6993e61da08e@redhat.com> In-Reply-To: <1013369b-3661-38fd-7207-6993e61da08e@redhat.com> Accept-Language: zh-CN, 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=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6b88a665-ac37-466a-4707-08d9410ff3c3 x-ms-traffictypediagnostic: BN9PR11MB5387: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Yjg7Kum3LOKYQZT//GLSruDZbwvoKFTjhdvZkmGlVmzFLbTxU1+qKAr4gprzdFewBvQRb0qtd/CwaOFKDh3vS4N1d5eqOlLm3gXhknq53L9cKn9uHwyl+DQ35OuzO3HeAcNV9WvAgfh4KwQBlx7MhEgzmtMEJjMmlDYXbfbcLxmvcnzWmGKN5osjU9xgNdFGocEWBq8DWe/9wYxVrVI44adBITdqSRmeAN+BDNsq27FCxVm2S/fD34MNO7kiSwT9S3rxx8ZeQPM3pGftzl+IZkWdnZwHvHNmqesy3x91zmn4E6hpqDz4RFnST5Ao+KxSAOwKghuLk0+53RPjf2SYU2z/iTnl6qacG7DEYrhwL8SJItxRv6qSzguLjKZnGuXajvkjxLqp3+j/9qflR9pMM4CdVQPmTSwzkppQaRmTzWmMzvyRGkBbXPg3bGSIF9BdQSOgzuWqyV0iUww3QmG3XEdH0KVHun7gnUUMd0GgStuesSFTlKWpU5xicnxIvLrw8+1URGmmGOFjMrUeaYY6655Spvpfde6UhAts5UFuNipynampqWv1N3gioDS9281wMsOk84x5AgbbTb6xnQnnbgXefhpkr71xHG9D/Ou2UIcztv4MRDVoHrfIhYcbs+AI3PLrFOfARwiKXYGyeC75/g== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(39860400002)(376002)(346002)(136003)(396003)(30864003)(53546011)(26005)(6506007)(54906003)(83380400001)(110136005)(71200400001)(76116006)(316002)(2906002)(55016002)(186003)(8936002)(52536014)(7696005)(107886003)(9686003)(86362001)(66946007)(5660300002)(122000001)(38100700002)(66556008)(66446008)(64756008)(478600001)(33656002)(8676002)(4326008)(66476007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RWlCWVRDUTZ5bUxEa1FRMU9kV1RkcGFUTzNSV0pVWC9ubUNxWHJzWFA1bXZn?= =?utf-8?B?WnE1ZG9tcVF6WHNWMWpzK3J3djROWlJjMXhlRkRpeUU2UGpOLzgxbHhYTGxs?= =?utf-8?B?OFBWczVmWDNDbHpRUFdSWG1LZWpaMjhkS2lrVXh4RlVkOHVTTVBFQWp3dGpp?= =?utf-8?B?Ly9MeEc5S05tS2JFV1NiNGtZektCRW5pSkJuc0RGTW05MHdtV0lZdS85WWNv?= =?utf-8?B?NHVhMSs4eWZBa1pkeDZlQ01pTmNvckNGZnRHZnNoUWxBaE1Jbi96bmhIU1J1?= =?utf-8?B?TWJCaTdWWCsyOG9PTVAwMzBEVHFSazJrczVQYkpIRmJKQkhBZDc1dUZIZEQy?= =?utf-8?B?MFVNblJzOHAxSmlqb1crQk5GUG1TcTJOVlU0MDBGZzBoajJHUHFJZ2hqMHJQ?= =?utf-8?B?bFNGTld3YlN6Tlo4aHhJRm81RmxjOGVCZHBRVlZrUzFtZFMrZ3l3WWdyYWJs?= =?utf-8?B?ODlMSkRUaDhrZzBGblJHeWhua29kNUxTbVRGWCt5Smg5RXcydFFDdHNyV1lt?= =?utf-8?B?MFJqYXg3cFhwYy9iT0JmeC92Y1F5QXNma3RmQktueWJ2NU83QU85VElsRkRB?= =?utf-8?B?RWcrdGcyc21MWnNvU2hZYnB2ZlIvZTVhTlBsOXplV1hzaFgwWHBFb1RqNTFZ?= =?utf-8?B?cVFGeUF0TUFJQ3U5Q0hiUkRPSTZRYTBZamg4emt2K3ZqVkZSb2hBR1VlcHhr?= =?utf-8?B?UnZnUUl0aUlBM1NpR3FmTnpkZUtuakRKTnBueDNXbHdlZCtQdHZubXdLSVNq?= =?utf-8?B?ZEcra3JGSEt3RkVFR3lTWWdUc09UMjZzWDd4SGgzczZmVi9POG1zV0JmMFFS?= =?utf-8?B?cHZPWVhEc0FINndxOVdBQXZIUWY4L0NDbmExWS9JUHd6SEc5ZkFIcFNNcU8y?= =?utf-8?B?dUM5d0llRjBFb2YyQk9sdkF5bHlHNUs3NGphSytDaDB2YW9RVSs2OXI2Zkxw?= =?utf-8?B?OTRqN01qK0w4NUhSZVJhUG1IdWFEYzd3d1hBdzh3SEtMZ0JWLytTdzhYeXg0?= =?utf-8?B?OThHZzU0T3ZMU0RKcDJmeFNvT2ErdUZlTmJuRFdrbWVjQ3ZQaWRGTW9qdUpL?= =?utf-8?B?LzcydDYyRStySXFUcTliS1grYW9CMzJMamxWdTIya09Ebmx6VXVFd1YrTXMr?= =?utf-8?B?Rjd2dStFNVJoRzdpd2pKd3dnWTluYWdVQWYyNTFzTldISUtkQU5mcitGVFBs?= =?utf-8?B?Rk4yYVVlUHZwelNNa0cxbUkxMEMzZW1HNENmRVNHRzFnTUFoZGljRnZsQVhj?= =?utf-8?B?aGFLOFlFZTlFU0RQSit3NmZvb1RtV0hRVFRFY01FTkp6M1Z1QmdXUWpLK2sw?= =?utf-8?B?MTdUSmF4QlFmaDQ0YU5ISXRQL3lrN1V5eWZ2dXlnalpyTDBBUGszaGFYOTdW?= =?utf-8?B?UWg0YUJrQiswOU42SmlldmlONm5neDlXdDhwdHZiY0pCODJGQkJnUGx6c2VP?= =?utf-8?B?Zmxpa2FQV2g3d0l4QmdLaE1KSXUwZjhkSmJSa0dmMjM3YStWbHlJQTZvcFdH?= =?utf-8?B?TXRCTjZIaXh1elYwdnJvMDV3SzRyOWc5eUIyUG9CTlZrdHBuemNGNkwydUNW?= =?utf-8?B?STNqN3JXSzA2YmZ3R09nK1BGU0hxeENnTXhFT0x0eEVBRmVkN2FTZlB2ajZX?= =?utf-8?B?TGVvK3FKMEsrRVFET281SXYwby9CN2V1QUkvbTVBYVFRb2M5QXpqbkNqMHdu?= =?utf-8?B?Rk5qSnNUdjhxOEptNmZVTHMvZ2dubW9ETGxTMlNPWEZSdVpDVGRUUmpGWTNC?= =?utf-8?Q?1+mOLYOBam7zGWUVzE=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b88a665-ac37-466a-4707-08d9410ff3c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jul 2021 06:25:01.7331 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qAX60OdXz6Fi1HPgipdKQl7s2fJ4s7rLFdu3dxAZ5Bxrk9I5DBkMWp1IsKyCOZqXNtSAjR/slfxPl2pBUwM9mA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5387 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v5 1/2] vhost: enable IOMMU for async vhost 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" SGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4aW1lIENvcXVl bGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU2VudDogVHVlc2RheSwgSnVseSA2 LCAyMDIxIDU6MzIgUE0NCj4gVG86IEJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBp bnRlbC5jb20+OyBEaW5nLCBYdWFuDQo+IDx4dWFuLmRpbmdAaW50ZWwuY29tPjsgWGlhLCBDaGVu Ym8gPGNoZW5iby54aWFAaW50ZWwuY29tPjsgVGhvbWFzDQo+IE1vbmphbG9uIDx0aG9tYXNAbW9u amFsb24ubmV0PjsgRGF2aWQgTWFyY2hhbmQNCj4gPGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb20+ DQo+IENjOiBkZXZAZHBkay5vcmc7IEh1LCBKaWF5dSA8amlheXUuaHVAaW50ZWwuY29tPjsgUGFp IEcsIFN1bmlsDQo+IDxzdW5pbC5wYWkuZ0BpbnRlbC5jb20+OyBSaWNoYXJkc29uLCBCcnVjZSA8 YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+OyBWYW4NCj4gSGFhcmVuLCBIYXJyeSA8aGFycnku dmFuLmhhYXJlbkBpbnRlbC5jb20+OyBMaXUsIFlvbmcgPHlvbmcubGl1QGludGVsLmNvbT47DQo+ IE1hLCBXZW53dVggPHdlbnd1eC5tYUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZHBkay1k ZXZdIFtQQVRDSCB2NSAxLzJdIHZob3N0OiBlbmFibGUgSU9NTVUgZm9yIGFzeW5jIHZob3N0DQo+ IA0KPiANCj4gDQo+IE9uIDcvNi8yMSAxMToxNiBBTSwgQnVyYWtvdiwgQW5hdG9seSB3cm90ZToN Cj4gPiBPbiAwNi1KdWwtMjEgOTozMSBBTSwgRGluZywgWHVhbiB3cm90ZToNCj4gPj4gSGkgTWF4 aW1lLA0KPiA+Pg0KPiA+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+IEZyb206 IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+ID4+PiBTZW50 OiBNb25kYXksIEp1bHkgNSwgMjAyMSA4OjQ2IFBNDQo+ID4+PiBUbzogQnVyYWtvdiwgQW5hdG9s eSA8YW5hdG9seS5idXJha292QGludGVsLmNvbT47IERpbmcsIFh1YW4NCj4gPj4+IDx4dWFuLmRp bmdAaW50ZWwuY29tPjsgWGlhLCBDaGVuYm8gPGNoZW5iby54aWFAaW50ZWwuY29tPjsgVGhvbWFz DQo+ID4+PiBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IERhdmlkIE1hcmNoYW5kDQo+ ID4+PiA8ZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbT4NCj4gPj4+IENjOiBkZXZAZHBkay5vcmc7 IEh1LCBKaWF5dSA8amlheXUuaHVAaW50ZWwuY29tPjsgUGFpIEcsIFN1bmlsDQo+ID4+PiA8c3Vu aWwucGFpLmdAaW50ZWwuY29tPjsgUmljaGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25A aW50ZWwuY29tPjsNCj4gPj4+IFZhbiBIYWFyZW4sIEhhcnJ5IDxoYXJyeS52YW4uaGFhcmVuQGlu dGVsLmNvbT47IExpdSwgWW9uZw0KPiA+Pj4gPHlvbmcubGl1QGludGVsLmNvbT47IE1hLCBXZW53 dVggPHdlbnd1eC5tYUBpbnRlbC5jb20+DQo+ID4+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBb UEFUQ0ggdjUgMS8yXSB2aG9zdDogZW5hYmxlIElPTU1VIGZvciBhc3luYw0KPiA+Pj4gdmhvc3QN Cj4gPj4+DQo+ID4+Pg0KPiA+Pj4NCj4gPj4+IE9uIDcvNS8yMSAyOjE2IFBNLCBCdXJha292LCBB bmF0b2x5IHdyb3RlOg0KPiA+Pj4+IE9uIDA1LUp1bC0yMSA5OjQwIEFNLCBYdWFuIERpbmcgd3Jv dGU6DQo+ID4+Pj4+IFRoZSB1c2Ugb2YgSU9NTVUgaGFzIG1hbnkgYWR2YW50YWdlcywgc3VjaCBh cyBpc29sYXRpb24gYW5kIGFkZHJlc3MNCj4gPj4+Pj4gdHJhbnNsYXRpb24uIFRoaXMgcGF0Y2gg ZXh0ZW5kcyB0aGUgY2FwYmlsaXR5IG9mIERNQSBlbmdpbmUgdG8gdXNlDQo+ID4+Pj4+IElPTU1V IGlmIHRoZSBETUEgZGV2aWNlIGlzIGJvdW5kIHRvIHZmaW8uDQo+ID4+Pj4+DQo+ID4+Pj4+IFdo ZW4gc2V0IG1lbW9yeSB0YWJsZSwgdGhlIGd1ZXN0IG1lbW9yeSB3aWxsIGJlIG1hcHBlZA0KPiA+ Pj4+PiBpbnRvIHRoZSBkZWZhdWx0IGNvbnRhaW5lciBvZiBEUERLLg0KPiA+Pj4+Pg0KPiA+Pj4+ PiBTaWduZWQtb2ZmLWJ5OiBYdWFuIERpbmcgPHh1YW4uZGluZ0BpbnRlbC5jb20+DQo+ID4+Pj4+ IC0tLQ0KPiA+Pj4+PiDCoMKgIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9zdF9saWIucnN0IHzC oCA5ICsrKysrKw0KPiA+Pj4+PiDCoMKgIGxpYi92aG9zdC9ydGVfdmhvc3QuaMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEgKw0KPiA+Pj4+PiDCoMKgIGxpYi92aG9zdC9zb2NrZXQu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDkgKysrKysrDQo+ID4+Pj4+ IMKgwqAgbGliL3Zob3N0L3Zob3N0LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDEgKw0KPiA+Pj4+PiDCoMKgIGxpYi92aG9zdC92aG9zdF91c2VyLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDQ2DQo+ID4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KystDQo+ID4+Pj4+IMKgwqAgNSBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pDQo+ID4+Pj4+DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2df Z3VpZGUvdmhvc3RfbGliLnJzdA0KPiA+Pj4+PiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9z dF9saWIucnN0DQo+ID4+Pj4+IGluZGV4IDA1YzQyYzliMTEuLmMzYmVkYTIzZDkgMTAwNjQ0DQo+ ID4+Pj4+IC0tLSBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9zdF9saWIucnN0DQo+ID4+Pj4+ ICsrKyBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9zdF9saWIucnN0DQo+ID4+Pj4+IEBAIC0x MTgsNiArMTE4LDE1IEBAIFRoZSBmb2xsb3dpbmcgaXMgYW4gb3ZlcnZpZXcgb2Ygc29tZSBrZXkg Vmhvc3QNCj4gPj4+Pj4gQVBJIGZ1bmN0aW9uczoNCj4gPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBJ dCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0Lg0KPiA+Pj4+PiDCoMKgICvCoCAtIGBgUlRFX1ZIT1NU X1VTRVJfQVNZTkNfVVNFX1ZGSU9gYA0KPiA+Pj4+PiArDQo+ID4+Pj4+ICvCoMKgwqAgSW4gYXN5 bmNocm9ub3VzIGRhdGEgcGF0aCwgdmhvc3QgbGlhcmFyeSBpcyBub3QgYXdhcmUgb2Ygd2hpY2gN Cj4gPj4+Pj4gZHJpdmVyDQo+ID4+Pj4+ICvCoMKgwqAgKGlnYl91aW8vdmZpbykgdGhlIERNQSBk ZXZpY2UgaXMgYm91bmQgdG8uIEFwcGxpY2F0aW9uIHNob3VsZA0KPiA+Pj4+PiBwYXNzDQo+ID4+ Pj4+ICvCoMKgwqAgdGhpcyBmbGFnIHRvIHRlbGwgdmhvc3QgbGlicmFyeSB3aGV0aGVyIElPTU1V IHNob3VsZCBiZQ0KPiA+Pj4+PiBwcm9ncmFtbWVkDQo+ID4+Pj4+ICvCoMKgwqAgZm9yIGd1ZXN0 IG1lbW9yeS4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgIEl0IGlzIGRpc2FibGVkIGJ5IGRl ZmF1bHQuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gwqDCoMKgwqAgLSBgYFJURV9WSE9TVF9VU0VSX05F VF9DT01QTElBTlRfT0xfRkxBR1NgYA0KPiA+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgIFNpbmNlIHYx Ni4wNCwgdGhlIHZob3N0IGxpYnJhcnkgZm9yd2FyZHMgY2hlY2tzdW0gYW5kIGdzbw0KPiA+Pj4+ PiByZXF1ZXN0cyBmb3INCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi92aG9zdC9ydGVfdmhvc3Qu aCBiL2xpYi92aG9zdC9ydGVfdmhvc3QuaA0KPiA+Pj4+PiBpbmRleCA4ZDg3NWU5MzIyLi5hNzY2 ZWE3YjZiIDEwMDY0NA0KPiA+Pj4+PiAtLS0gYS9saWIvdmhvc3QvcnRlX3Zob3N0LmgNCj4gPj4+ Pj4gKysrIGIvbGliL3Zob3N0L3J0ZV92aG9zdC5oDQo+ID4+Pj4+IEBAIC0zNyw2ICszNyw3IEBA IGV4dGVybiAiQyIgew0KPiA+Pj4+PiDCoMKgICNkZWZpbmUgUlRFX1ZIT1NUX1VTRVJfTElORUFS QlVGX1NVUFBPUlTCoMKgwqAgKDFVTEwgPDwgNikNCj4gPj4+Pj4gwqDCoCAjZGVmaW5lIFJURV9W SE9TVF9VU0VSX0FTWU5DX0NPUFnCoMKgwqAgKDFVTEwgPDwgNykNCj4gPj4+Pj4gwqDCoCAjZGVm aW5lIFJURV9WSE9TVF9VU0VSX05FVF9DT01QTElBTlRfT0xfRkxBR1PCoMKgwqAgKDFVTEwgPDwg OCkNCj4gPj4+Pj4gKyNkZWZpbmUgUlRFX1ZIT1NUX1VTRVJfQVNZTkNfVVNFX1ZGSU/CoMKgwqAg KDFVTEwgPDwgOSkNCj4gPj4+Pj4gwqDCoMKgwqAgLyogRmVhdHVyZXMuICovDQo+ID4+Pj4+IMKg wqAgI2lmbmRlZiBWSVJUSU9fTkVUX0ZfR1VFU1RfQU5OT1VOQ0UNCj4gPj4+Pj4gZGlmZiAtLWdp dCBhL2xpYi92aG9zdC9zb2NrZXQuYyBiL2xpYi92aG9zdC9zb2NrZXQuYw0KPiA+Pj4+PiBpbmRl eCA1ZDBkNzI4ZDUyLi43N2M3MjJjODZiIDEwMDY0NA0KPiA+Pj4+PiAtLS0gYS9saWIvdmhvc3Qv c29ja2V0LmMNCj4gPj4+Pj4gKysrIGIvbGliL3Zob3N0L3NvY2tldC5jDQo+ID4+Pj4+IEBAIC00 Miw2ICs0Miw3IEBAIHN0cnVjdCB2aG9zdF91c2VyX3NvY2tldCB7DQo+ID4+Pj4+IMKgwqDCoMKg wqDCoCBib29sIGV4dGJ1ZjsNCj4gPj4+Pj4gwqDCoMKgwqDCoMKgIGJvb2wgbGluZWFyYnVmOw0K PiA+Pj4+PiDCoMKgwqDCoMKgwqAgYm9vbCBhc3luY19jb3B5Ow0KPiA+Pj4+PiArwqDCoMKgIGJv b2wgYXN5bmNfdXNlX3ZmaW87DQo+ID4+Pj4+IMKgwqDCoMKgwqDCoCBib29sIG5ldF9jb21wbGlh bnRfb2xfZmxhZ3M7DQo+ID4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgLyoNCj4gPj4+Pj4gQEAgLTI0 Myw2ICsyNDQsMTMgQEAgdmhvc3RfdXNlcl9hZGRfY29ubmVjdGlvbihpbnQgZmQsIHN0cnVjdA0K PiA+Pj4+PiB2aG9zdF91c2VyX3NvY2tldCAqdnNvY2tldCkNCj4gPj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkZXYtPmFzeW5jX2NvcHkgPSAxOw0KPiA+Pj4+PiDCoMKgwqDCoMKg wqAgfQ0KPiA+Pj4+PiDCoMKgICvCoMKgwqAgaWYgKHZzb2NrZXQtPmFzeW5jX3VzZV92ZmlvKSB7 DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBkZXYgPSBnZXRfZGV2aWNlKHZpZCk7DQo+ID4+Pj4+ ICsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChkZXYpDQo+ID4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRldi0+YXN5bmNfdXNlX3ZmaW8gPSAxOw0KPiA+Pj4+PiArwqDCoMKgIH0N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiDCoMKgwqDCoMKgwqAgVkhPU1RfTE9HX0NPTkZJRyhJTkZPLCAi bmV3IGRldmljZSwgaGFuZGxlIGlzICVkXG4iLCB2aWQpOw0KPiA+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgIGlmICh2c29ja2V0LT5ub3RpZnlfb3BzLT5uZXdfY29ubmVjdGlvbikgew0KPiA+Pj4+PiBA QCAtODc5LDYgKzg4Nyw3IEBAIHJ0ZV92aG9zdF9kcml2ZXJfcmVnaXN0ZXIoY29uc3QgY2hhciAq cGF0aCwNCj4gPj4+Pj4gdWludDY0X3QgZmxhZ3MpDQo+ID4+Pj4+IMKgwqDCoMKgwqDCoCB2c29j a2V0LT5leHRidWYgPSBmbGFncyAmIFJURV9WSE9TVF9VU0VSX0VYVEJVRl9TVVBQT1JUOw0KPiA+ Pj4+PiDCoMKgwqDCoMKgwqAgdnNvY2tldC0+bGluZWFyYnVmID0gZmxhZ3MgJg0KPiBSVEVfVkhP U1RfVVNFUl9MSU5FQVJCVUZfU1VQUE9SVDsNCj4gPj4+Pj4gwqDCoMKgwqDCoMKgIHZzb2NrZXQt PmFzeW5jX2NvcHkgPSBmbGFncyAmIFJURV9WSE9TVF9VU0VSX0FTWU5DX0NPUFk7DQo+ID4+Pj4+ ICvCoMKgwqAgdnNvY2tldC0+YXN5bmNfdXNlX3ZmaW8gPSBmbGFncyAmDQo+ID4+PiBSVEVfVkhP U1RfVVNFUl9BU1lOQ19VU0VfVkZJTzsNCj4gPj4+Pj4gwqDCoMKgwqDCoMKgIHZzb2NrZXQtPm5l dF9jb21wbGlhbnRfb2xfZmxhZ3MgPSBmbGFncyAmDQo+ID4+Pj4+IFJURV9WSE9TVF9VU0VSX05F VF9DT01QTElBTlRfT0xfRkxBR1M7DQo+ID4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgaWYgKHZzb2Nr ZXQtPmFzeW5jX2NvcHkgJiYNCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi92aG9zdC92aG9zdC5o IGIvbGliL3Zob3N0L3Zob3N0LmgNCj4gPj4+Pj4gaW5kZXggODA3OGRkZmY3OS4uZmI3NzVjZTRl ZCAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvbGliL3Zob3N0L3Zob3N0LmgNCj4gPj4+Pj4gKysrIGIv bGliL3Zob3N0L3Zob3N0LmgNCj4gPj4+Pj4gQEAgLTM3MCw2ICszNzAsNyBAQCBzdHJ1Y3Qgdmly dGlvX25ldCB7DQo+ID4+Pj4+IMKgwqDCoMKgwqDCoCBpbnQxNl90wqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBicm9hZGNhc3RfcmFycDsNCj4gPj4+Pj4gwqDCoMKgwqDCoMKgIHVpbnQzMl90wqDCoMKg wqDCoMKgwqAgbnJfdnJpbmc7DQo+ID4+Pj4+IMKgwqDCoMKgwqDCoCBpbnTCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFzeW5jX2NvcHk7DQo+ID4+Pj4+ICvCoMKgwqAgaW50wqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBhc3luY191c2VfdmZpbzsNCj4gPj4+Pj4gwqDCoMKgwqDCoMKgIGludMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZXh0YnVmOw0KPiA+Pj4+PiDCoMKgwqDCoMKgwqAgaW50wqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBsaW5lYXJidWY7DQo+ID4+Pj4+IMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgdmhv c3RfdmlydHF1ZXVlwqDCoMKgICp2aXJ0cXVldWVbVkhPU1RfTUFYX1FVRVVFX1BBSVJTICoNCj4g Pj4+Pj4gMl07DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9saWIvdmhvc3Qvdmhvc3RfdXNlci5jIGIv bGliL3Zob3N0L3Zob3N0X3VzZXIuYw0KPiA+Pj4+PiBpbmRleCA4ZjBlYmE2NDEyLi5mMzcwM2Yy ZTcyIDEwMDY0NA0KPiA+Pj4+PiAtLS0gYS9saWIvdmhvc3Qvdmhvc3RfdXNlci5jDQo+ID4+Pj4+ ICsrKyBiL2xpYi92aG9zdC92aG9zdF91c2VyLmMNCj4gPj4+Pj4gQEAgLTQ1LDYgKzQ1LDcgQEAN Cj4gPj4+Pj4gwqDCoCAjaW5jbHVkZSA8cnRlX2NvbW1vbi5oPg0KPiA+Pj4+PiDCoMKgICNpbmNs dWRlIDxydGVfbWFsbG9jLmg+DQo+ID4+Pj4+IMKgwqAgI2luY2x1ZGUgPHJ0ZV9sb2cuaD4NCj4g Pj4+Pj4gKyNpbmNsdWRlIDxydGVfdmZpby5oPg0KPiA+Pj4+PiDCoMKgwqDCoCAjaW5jbHVkZSAi aW90bGIuaCINCj4gPj4+Pj4gwqDCoCAjaW5jbHVkZSAidmhvc3QuaCINCj4gPj4+Pj4gQEAgLTE0 MSw2ICsxNDIsMzYgQEAgZ2V0X2Jsa19zaXplKGludCBmZCkNCj4gPj4+Pj4gwqDCoMKgwqDCoMKg IHJldHVybiByZXQgPT0gLTEgPyAodWludDY0X3QpLTEgOiAodWludDY0X3Qpc3RhdC5zdF9ibGtz aXplOw0KPiA+Pj4+PiDCoMKgIH0NCj4gPj4+Pj4gwqDCoCArc3RhdGljIGludA0KPiA+Pj4+PiAr YXN5bmNfZG1hX21hcChzdHJ1Y3QgcnRlX3Zob3N0X21lbV9yZWdpb24gKnJlZ2lvbiwgYm9vbCBk b19tYXApDQo+ID4+Pj4+ICt7DQo+ID4+Pj4+ICvCoMKgwqAgaW50IHJldCA9IDA7DQo+ID4+Pj4+ ICvCoMKgwqAgdWludDY0X3QgaG9zdF9pb3ZhOw0KPiA+Pj4+PiArwqDCoMKgIGhvc3RfaW92YSA9 IHJ0ZV9tZW1fdmlydDJpb3ZhKCh2b2lkDQo+ID4+Pj4+ICopKHVpbnRwdHJfdClyZWdpb24tPmhv c3RfdXNlcl9hZGRyKTsNCj4gPj4+Pj4gK8KgwqDCoCBpZiAoZG9fbWFwKSB7DQo+ID4+Pj4+ICvC oMKgwqDCoMKgwqDCoCAvKiBBZGQgbWFwcGVkIHJlZ2lvbiBpbnRvIHRoZSBkZWZhdWx0IGNvbnRh aW5lciBvZiBEUERLLiAqLw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0NCj4gPj4+IHJ0 ZV92ZmlvX2NvbnRhaW5lcl9kbWFfbWFwKFJURV9WRklPX0RFRkFVTFRfQ09OVEFJTkVSX0ZELA0K PiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJlZ2lvbi0+aG9zdF91c2VyX2FkZHIsDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaG9zdF9pb3ZhLA0KPiA+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZ2lvbi0+c2l6ZSk7DQo+ ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0KSB7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFZIT1NUX0xPR19DT05GSUcoRVJSLCAiRE1BIGVuZ2luZSBtYXAgZmFpbGVkXG4i KTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4gPj4+Pj4g K8KgwqDCoMKgwqDCoMKgIH0NCj4gPj4+Pj4gK8KgwqDCoCB9IGVsc2Ugew0KPiA+Pj4+PiArwqDC oMKgwqDCoMKgwqAgLyogUmVtb3ZlIG1hcHBlZCByZWdpb24gZnJvbSB0aGUgZGVmYXVsdCBjb250 YWluZXIgb2YNCj4gPj4+Pj4gRFBESy4gKi8NCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9 DQo+ID4+Pj4+IHJ0ZV92ZmlvX2NvbnRhaW5lcl9kbWFfdW5tYXAoUlRFX1ZGSU9fREVGQVVMVF9D T05UQUlORVJfRkQsDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJlZ2lvbi0+aG9zdF91c2VyX2FkZHIsDQo+ID4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhvc3RfaW92 YSwNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmVnaW9uLT5zaXplKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChyZXQp IHsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkhPU1RfTE9HX0NPTkZJRyhFUlIs ICJETUEgZW5naW5lIHVubWFwIGZhaWxlZFxuIik7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiByZXQ7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+ID4+Pj4+ICvC oMKgwqAgfQ0KPiA+Pj4+PiArwqDCoMKgIHJldHVybiByZXQ7DQo+ID4+Pj4+ICt9DQo+ID4+Pj4N Cj4gPj4+PiBXZSd2ZSBiZWVuIGRpc2N1c3NpbmcgdGhpcyBvZmYgbGlzdCB3aXRoIFh1YW4sIGFu ZCB1bmZvcnR1bmF0ZWx5DQo+ID4+Pj4gdGhpcyBpcw0KPiA+Pj4+IGEgYmxvY2tlciBmb3Igbm93 Lg0KPiA+Pj4+DQo+ID4+Pj4gQ3VycmVudGx5LCB0aGUgeDg2IElPTU1VIGRvZXMgbm90IHN1cHBv cnQgcGFydGlhbCB1bm1hcCAtIHRoZSBzZWdtZW50cw0KPiA+Pj4+IGhhdmUgdG8gYmUgdW5tYXBw ZWQgZXhhY3RseSB0aGUgc2FtZSBhZGRyL2xlbiBhcyB0aGV5IHdlcmUgbWFwcGVkLiBXZQ0KPiA+ Pj4+IGFsc28gY29uY2F0ZW5hdGUgYWRqYWNlbnQgbWFwcGluZ3MgdG8gcHJldmVudCBmaWxsaW5n IHVwIHRoZSBETUENCj4gPj4+PiBtYXBwaW5nDQo+ID4+Pj4gZW50cnkgdGFibGUgd2l0aCBzdXBl cmZsdW91cyBlbnRyaWVzLg0KPiA+Pj4+DQo+ID4+Pj4gVGhpcyBtZWFucyB0aGF0LCB3aGVuIHR3 byB1bnJlbGF0ZWQgbWFwcGluZ3MgYXJlIGNvbnRpZ3VvdXMgaW4gbWVtb3J5DQo+ID4+Pj4gKGUu Zy4gaWYgeW91IG1hcCByZWdpb25zIDEgYW5kIDIgaW5kZXBlbmRlbnRseSwgYnV0IHRoZXkgaGFw cGVuIHRvIGJlDQo+ID4+Pj4gc2l0dGluZyByaWdodCBuZXh0IHRvIGVhY2ggb3RoZXIgaW4gdmly dHVhbCBtZW1vcnkpLCB3ZSBjYW5ub3QgbGF0ZXINCj4gPj4+PiB1bm1hcCBvbmUgb2YgdGhlbSBi ZWNhdXNlLCBldmVuIHRob3VnaCB0aGVzZSBhcmUgdHdvIHNlcGFyYXRlDQo+ID4+PiBtYXBwaW5n cw0KPiA+Pj4+IGFzIGZhciBhcyBrZXJuZWwgVkZJTyBpbmZyYXN0cnVjdHVyZSBpcyBjb25jZXJu ZWQsIHRoZSBtYXBwaW5nIGdldHMNCj4gPj4+PiBjb21wYWN0ZWQgYW5kIGxvb2tzIGxpa2Ugb25l IHNpbmdsZSBtYXBwaW5nIHRvIFZGSU8sIHNvIERQREsgQVBJIHdpbGwNCj4gPj4+PiBub3QgbGV0 IHVzIHVubWFwIHJlZ2lvbiAxIHdpdGhvdXQgYWxzbyB1bm1hcHBpbmcgcmVnaW9uIDIuDQo+ID4+ Pj4NCj4gPj4+PiBUaGUgcHJvcGVyIGZpeCBmb3IgdGhpcyBwcm9ibGVtIHdvdWxkIGJlIHRvIGFs d2F5cyBtYXAgbWVtb3J5DQo+ID4+Pj4gcGFnZS1ieS1wYWdlIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUg aXQgY29tZXMgZnJvbSAod2UgYWxyZWFkeSBkbyB0aGF0IGZvcg0KPiA+Pj4+IGludGVybmFsIG1l bW9yeSwgYnV0IG5vdCBmb3IgZXh0ZXJuYWwpLiBIb3dldmVyLCB0aGUgcmVhc29uIHRoaXMgd29y a3MNCj4gPj4+PiBmb3IgaW50ZXJuYWwgbWVtb3J5IGlzIGJlY2F1c2Ugd2hlbiBtYXBwaW5nIGlu dGVybmFsIG1lbW9yeSBzZWdtZW50cywNCj4gPj4+PiAqd2Uga25vdyB0aGUgcGFnZSBzaXplKi4g Rm9yIGV4dGVybmFsIG1lbW9yeSBzZWdtZW50cywgdGhlcmUgaXMgbm8gc3VjaA0KPiA+Pj4+IGd1 YXJhbnRlZSwgc28gd2UgY2Fubm90IGRlZHVjZSBwYWdlIHNpemUgZm9yIGEgZ2l2ZW4gbWVtb3J5 IHNlZ21lbnQsDQo+ID4+PiBhbmQNCj4gPj4+PiB0aHVzIGNhbid0IG1hcCB0aGluZ3MgcGFnZS1i eS1wYWdlLg0KPiA+Pj4+DQo+ID4+Pj4gU28sIHRoZSBwcm9wZXIgZml4IGZvciBpdCB3b3VsZCBi ZSB0byBhZGQgcGFnZSBzaXplIHRvIHRoZSBWRklPIERNQQ0KPiA+Pj4+IEFQSS4NCj4gPj4+PiBV bmZvcnR1bmF0ZWx5LCBpdCBwcm9iYWJseSBoYXMgdG8gd2FpdCB1bnRpbCAyMS4xMSBiZWNhdXNl IGl0IGlzIGFuIEFQSQ0KPiA+Pj4+IGNoYW5nZS4NCj4gPj4+Pg0KPiA+Pj4+IFRoZSBzbGlnaHRs eSBoYWNreSBmaXggZm9yIHRoaXMgd291bGQgYmUgdG8gZm9yZWdvIHVzZXIgbWVtIG1hcA0KPiA+ Pj4+IGNvbmNhdGVuYXRpb24gYW5kIHRydXN0IHRoYXQgdXNlciBpcyBub3QgZ29pbmcgdG8gZG8g YW55dGhpbmcgc3R1cGlkLA0KPiA+Pj4+IGFuZCB3aWxsIG5vdCBzcGFtIHRoZSBWRklPIERNQSBB UEkgd2l0aG91dCByZWFzb24uIEkgd291bGQgcmF0aGVyDQo+ID4+Pj4gbm90IGdvDQo+ID4+Pj4g ZG93biB0aGlzIHJvYWQsIGJ1dCB0aGlzIGNvdWxkIGJlIGFuIG9wdGlvbiBpbiB0aGlzIGNhc2Uu DQo+ID4+Pj4NCj4gPj4+PiBUaG91Z2h0cz8NCj4gPj4+Pg0KPiA+Pj4NCj4gPj4+IFRoYW5rcyBB bmF0b2x5IGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGlzc3VlLg0KPiA+Pj4g SXQgbWF5IGJlIHBvc3NpYmxlIHRvIGVpdGhlciBjcmVhdGUgYSB2ZXJzaW9uZWQgc3ltYm9sIGZv ciB0aGlzIEFQSQ0KPiA+Pj4gY2hhbmdlLCBvciBtYXliZSBldmVuIHRvIGhhdmUgYSB0ZW1wb3Jh cnkgaW50ZXJuYWwgQVBJLg0KPiA+Pj4NCj4gPj4+IEJ1dCBJIHRoaW5rIHRoaXMgc2VyaWVzIGlu IGl0cyBjdXJyZW50IGZvcm0gaXMgbm90IGFjY2VwdGFibGUsIHNvDQo+ID4+PiB3YWl0aW5nIGZv ciB2MjEuMTEgd291bGQgYmUgdGhlIGJlc3Qgb3B0aW9uICh3ZSBtYXkgd2FudCB0byBzZW5kIHRo ZQ0KPiA+Pj4gZGVwcmVjYXRpb24gbm90aWNlIGluIHRoaXMgcmVsZWFzZSB0aG91Z2gpLg0KPiA+ Pj4NCj4gPj4+IEluIHRoaXMgc2VyaWVzLCBJIGRvbid0IGxpa2UgdGhlIHVzZXIgYXBwbGljYXRp b24gaGFzIHRvIHBhc3MgYSBmbGFnIHRvDQo+ID4+PiBzdGF0ZSB3aGV0aGVyIHRoZSBETUEgZW5n aW5lIHVzZXMgVkZJTyBvciBub3QuIEFGQUlDVCwgdGhpcyBuZXcgcmV2aXNpb24NCj4gPj4+IGRv ZXMgbm90IGltcGxlbWVudCB3aGF0IHdhcyBkaXNjdXNzZWQgaW4gdGhlIHByZXZpb3VzIG9uZSwg aS5lLg0KPiA+Pj4gc3VwcG9ydGluZyBib3RoIElPVkFfQVNfVkEgYW5kIElPVkFfQVNfUEEuDQo+ ID4+DQo+ID4+IFRoYW5rcyBmb3IgeW91ciBjb21tZW50cy4gSGVyZSBJIGhvcGUgdG8gZXhwbGFp biBzb21lIHF1ZXN0aW9uczoNCj4gPj4gMS4gV2hldGhlciBib3RoIElPVkFfQVNfVkEgYW5kIElP VkFfQVNfUEEgYXJlIHN1cHBvcnRlZCBub3c/DQo+ID4+IEE6IEJvdGggSU9WQV9BU19QQSBhbmQg SU9WQV9BU19WQSBhcmUgc3VwcG9ydGVkIG5vdy4gSW4gdGhpcyB2ZXJzaW9uLCB0aGUNCj4gPj4g dmlydHVhbCBhZGRyZXNzIGlzIHJlcGxhY2VkIHdpdGggaW92YSBhZGRyZXNzIG9mIG1hcHBlZCBy ZWdpb24sIGFuZA0KPiA+PiB0aGUgaW92YQ0KPiA+PiBhZGRyZXNzIGlzIHNlbGVjdGVkIHRvIHBy b2dyYW0gdGhlIElPTU1VIGluc3RlYWQgb2YgdmlydHVhbCBhZGRyZXNzIG9ubHkuDQo+IA0KPiBH b29kIQ0KPiANCj4gPj4NCj4gPj4gMi4gV2h5IGEgZmxhZyBpcyBjaG9zZW4gdG8gYmUgcGFzc2Vk IGJ5IGFwcGxpY2F0aW9uPw0KPiA+PiBBOiBZZXMsIGFzIHdlIGRpc2N1c3NlZCBiZWZvcmUsIHRo ZSBydGVfZWFsX2lvdmFfbW9kZSgpIEFQSSBjYW4gYmUNCj4gPj4gdXNlZCB0bw0KPiA+PiBnZXQg dGhlIElPVkEgbW9kZSwgc28gYXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgSU9NTVUgc2hvdWxkIGJl DQo+IHByb2dyYW1tZWQuDQo+ID4+IEhvd2V2ZXIsIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBwcm9j ZXNzLCBJIGZvdW5kIGEgcHJvYmxlbS4gVGhhdCBpcyBob3cgdG8NCj4gPj4gZGlzdGluZ3Vpc2gg dGhlIFZGSU8gUEEgYW5kIElHQl9VSU8gUEEuIEJlY2F1c2UgZm9yIFZGSU8gY2FzZXMsIHdlIHNo b3VsZA0KPiA+PiBhbHdheXMgcHJvZ3JhbSB0aGUgSU9NTVUuIFdoaWxlIGluIElHQl9VSU8gY2Fz ZXMsIGl0IGRlcGVuZHMgb24gSU9NTVUNCj4gPj4gY2FwYWJpbGl0eSBvZiBwbGF0Zm9ybS4NCj4g Pg0KPiA+IEhvdyBkb2VzIG9uZSBwcm9ncmFtIElPTU1VIHdpdGggaWdiX3Vpbz8gSSB3YXMgdW5k ZXIgaW1wcmVzc2lvbiB0aGF0DQo+ID4gaWdiX3VpbyAoYW5kIHVpb19wY2lfZ2VuZXJpYyBmb3Ig dGhhdCBtYXR0ZXIpIGRvZXMgbm90IHByb3ZpZGUgc3VjaA0KPiA+IGZhY2lsaXRpZXMuDQo+IA0K PiArMQ0KDQpNYXliZSBzb21lIG1pc3VuZGVyc3RhbmRpbmcgaW4gdGhpcyBzZW50ZW5jZSBoZXJl Lg0KSW4gb3VyIGRlc2lnbiwgaWYgcnRlX2VhbF92ZmlvX2lzX2VuYWJsZWQoInZmaW8iKSBpcyB0 cnVlLCBpb21tdSB3aWxsIGJlIHByb2dyYW1tZWQuDQpUcnVlIG1lYW5zIHZmaW8gbW9kdWxlIGlz IG1vZHByb2JlZC4NCgkNCkJ1dCB0aGVyZSBpcyBhbiBleGNlcHRpb24gaGVyZSwgdGhhdCBpcywg ZXZlbiBpZiB2ZmlvIG1vZHVsZSBpcyBtb2Rwcm9iZWQsIA0KRFBESyB1c2VyIHN0aWxsIGJpbmQg YWxsIHRoZSBkZXZpY2VzIHRvIGlnYl91aW8uDQoNClRoaXMgc2l0dWF0aW9uIGNhbiBiZSBkaXN0 aW5ndWlzaGVkIGluIERQREsgZWFsIGluaXRpYWxpemF0aW9uLCBiZWNhdXNlIHRoZSByZXNvdXJj ZSBtYXBwaW5nDQppcyBhY2NvcmRpbmcgdG8gdGhlIGRyaXZlciBsb2FkZWQgYnkgZWFjaCBkZXZp Y2UocnRlX3BjaV9tYXBfZGV2aWNlKS4NCg0KQnV0IGluIG91ciBzY2VuYXJpbywgdGhpcyBqdWRn bWVudCBpcyBzb21ld2hhdCB3ZWFrLiBCZWNhdXNlIHdlIGNhbm5vdCBnZXQNCnRoZSBkZXZpY2Ug ZHJpdmVyIGluZm8gaW4gdmhvc3QgbGlicmFyeS4gSSBhbHNvIHRoaW5rIGl0IGlzIHVucmVhc29u YWJsZSBmb3Igdmhvc3QgdG8NCmRvIHRoaXMuIE9ubHkgdHJ1c3QgdGhhdCB1c2VycyB3aWxsIG5v dCB1c2UgaXQgbGlrZSB0aGlzLiBUaG91Z2h0cyBmb3IgdGhpcyBzY2VuYXJpbz8NCg0KPiANCj4g Pj4NCj4gPj4gU28gYSBmbGFnIGlzIHNlbGVjdGVkLCBidXQgdGhpcyByZXF1aXJlcyB0aGUgYXBw bGljYXRpb24gdG8gZG8gZXh0cmENCj4gPj4gdGhpbmdzLg0KPiA+PiBJIGZpbmQgYW5vdGhlciBz b2x1dGlvbiwgaXMgdG8gdXNlDQo+ID4+ICNpZmRlZiBWRklPX1BSRVNFTlQNCj4gPj4gwqDCoMKg wqDCoMKgwqDCoCBJZihydGVfdmZpb19pc19lbmFibGVkKCJ2ZmlvIikpDQo+ID4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByb2dyYW1faW9tbXU7DQo+ID4+ICNlbmRpZg0KPiA+ Pg0KPiA+PiBCZWNhdXNlIGFsbCB0aGUgZGV2aWNlcyBhcmUgbWFuYWdlZCBieSBEUERLLCB3ZSBj YW4gZm9sbG93IERQREsgdG8gZG8gdGhlDQo+ID4+IGRlY2lzaW9uLiBEb2VzIHRoaXMgbWFrZSBz ZW5zZSBmb3IgeW91LCBvciBhbnkgc29tZSBzdWdnZXN0aW9ucz8NCj4gPg0KPiA+IElNTyB0aGUg I2lmZGVmIGlzIG5vdCBuZWVkZWQuIFRoZSBBUEkgd2lsbCBhbHdheXMgd29yaywgaXQncyBqdXN0 IHRoYXQNCj4gPiBpZiBWRklPIGlzIG5vdCBjb21waWxlZCwgaXQnbGwganVzdCBjb21waWxlIGRv d24gdG8gbm9vcHMuDQo+IA0KPiBBZ3JlZSB0aGUgI2lmZGVmIGlzIG5vdCBuZWNlc3NhcnkuDQoN ClRoYW5rcywgSSB3aWxsIHJlbW92ZSB0aGUgI2lmZGVmIGluIG5leHQgdmVyc2lvbi4NCk9ubHkg dXNlIHJ0ZV92ZmlvX2lzX2VuYWJsZWQoInZmaW8iKS4NCg0KPiANCj4gVG8gYmUgY2xlYXIsIHJ0 ZV92ZmlvX2lzX2VuYWJsZWQoKSBjaGVjayBpcyBnb2luZyB0byBiZSBkb25lIGluIHRoZQ0KPiBW aG9zdCBsaWJyYXJ5LCBtYWtpbmcgdGhpcyB0cmFuc3BhcmVudCB0byB0aGUgYXBwbGljYXRpb24/ DQoNClllcywgeW91IGFyZSByaWdodCA6KQ0KVGhlIGNoZWNrIHdpbGwgYmUgZG9uZSBpbiB2aG9z dCBsaWJyYXJ5LCBhcHBsaWNhdGlvbiBkb2VzIG5vdCBuZWVkIHRvIGRvDQphZGRpdGlvbmFsIHRo aW5ncy4NCg0KPiANCj4gPj4NCj4gPj4gMy7CoCBUaGUgcGFydGlhbCB1bm1hcCBpc3N1ZQ0KPiA+ PiBBOiBUaGFua3MgQW5hdG9seSBmb3IgdGhlIGRldGFpbGVkIGV4cGxhbmF0aW9uLiBUaGlzIHBy b2JsZW0gd2FzIGZvdW5kIGluDQo+ID4+IHJlY29ubmVjdGlvbiBjYXNlcy4gQWZ0ZXIgb3VyIG9m ZiBsaXN0IGRpc2N1c3Npb24sIHRoZSBzb2x1dGlvbiByZXF1aXJlcw0KPiA+PiBydGVfdmZpb19j b250YWluZXJfZG1hX21hcC91bm1hcCBBUEkgY2hhbmdlLiBIZXJlIEkgd2FudCB0byBjb25zdWx0 DQo+ID4+IGlmIHRoZXJlIGFyZSBzb21lIGhvcGUgZm9yIHZlcnNpb25lZCBzeW1ib2wgb3IgYSB0 ZW1wb3JhcnkgaW50ZXJuYWwgQVBJDQo+ID4+IGJlIHVzZWQgaW4gdGhpcyByZWxlYXNlLg0KPiA+ DQo+ID4gSSBkb24ndCB0aGluayB3ZSBjYW4gYWRkIGEgdmVyc2lvbmVkIHN5bWJvbCBpbiB0aGlz IHJlbGVhc2UgdW5sZXNzDQo+ID4gdGhlcmUncyBhbiBleGNlcHRpb24gdG8gcmMxIGZlYXR1cmUg ZnJlZXplLiBJIGFsc28gZG9uJ3QgbGlrZSB0aGUgaWRlYQ0KPiA+IG9mIGEgdGVtcG9yYXJ5IGlu dGVybmFsIEFQSSBiZWNhdXNlIHZob3N0IGlzIG5vdCBpbiBFQUwsIGl0J3MgYSBsaWJyYXJ5DQo+ ID4gLSBtZWFuaW5nLCB0aGUgImludGVybmFsIiBBUEkgaGFzIHRvIGluIGZhY3QgYmUgZXh0ZXJu YWwgQVBJLCBhZGRlZCB0bw0KPiA+IHRoZSAubWFwIGZpbGUgZXRjLiwgb3RoZXJ3aXNlIGl0IHdv bid0IHdvcmsgd2l0aCBzaGFyZWQgbGlicmFyeSBidWlsZHMuDQoNCkdldCBpdCwgdGhhbmtzIGZv ciB5b3VyIHN1Z2dlc3Rpb24uDQoNCj4gPg0KPiA+IFRoYXQgc2FpZCwgaSdtIG5vdCBhbiBleHBl cnQgb24gdmVyc2lvbmluZywgc28gbWF5YmUgdGhlcmUgYXJlIG90aGVyDQo+ID4gd2F5cyBpJ20g bm90IGF3YXJlIG9mLCBvciBpIGhhdmUgc29tZSBtaXNjb25jZXB0aW9ucyBhYm91dCBob3cgaXQg d29ya3MgOikNCj4gDQo+IE9rLCBpdCBtYXliZSBpbmRlZWQgYmUgYmV0dGVyIHRvIHdhaXQgZm9y IHYyMS4xMSwgaXQgaXMgdG9vIGxhdGUgZm9yDQo+IHRoaXMgcmVsZWFzZS4NCg0KQWdyZWUsIHNv IEkgd2lsbCBzZW5kIGEgbmV3IHZlcnNpb24gaW4gdjIxLjExLg0KDQpUaGFua3MsDQpYdWFuDQoN Cj4gDQo+IFRoYW5rcywNCj4gTWF4aW1lDQo+IA0KPiA+Pg0KPiA+PiBUaGFua3MgZm9yIHlvdXIg dGltZSENCj4gPj4NCj4gPj4gUmVnYXJkcywNCj4gPj4gWHVhbg0KPiA+Pg0KPiA+Pj4NCj4gPj4+ IFJlZ2FyZHMsDQo+ID4+PiBNYXhpbWUNCj4gPj4NCj4gPg0KPiA+DQoNCg==