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 55CDDA0C4A; Wed, 7 Jul 2021 14:55:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 36AA9413A8; Wed, 7 Jul 2021 14:55:04 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id B822A41391 for ; Wed, 7 Jul 2021 14:55:01 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10037"; a="294936741" X-IronPort-AV: E=Sophos;i="5.83,331,1616482800"; d="scan'208";a="294936741" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jul 2021 05:54:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,331,1616482800"; d="scan'208";a="497852993" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga002.fm.intel.com with ESMTP; 07 Jul 2021 05:54:51 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Wed, 7 Jul 2021 05:54:50 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Wed, 7 Jul 2021 05:54:49 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Wed, 7 Jul 2021 05:54:49 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.41) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Wed, 7 Jul 2021 05:54:49 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GQ5Ff4sSNtbMjlo00HKRfe1OqLB951A69+9FWP4BdHmVAxANedLEhM58S+u+SHT1nWQniSpj+kkc0cudBtKJtG7MqFep/YeexASlOmfvDCOHJ6u4/9Eqn/LBo5ZBuJe5IJwunJZOZi6vkyGpa9INpKi8P9OG4k4WfXS11qkWRMu3f27KOlNc4CV+yf9tsU0H8GK9pSPrB15ZsBvAmvJKldhbPziNISWwYB34WOE3xyLdUNTa/GlL3/Kg/NM2FzBWwbiUQAGRMyWPB8MaERuqANm1uWPc1sJ7DbOG6NslF54Dmrwe8NabgLt3cTU3kA2W7WFKvRrC5nMvKi8M9czeaA== 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=oYMR7s2R+tv8InTXYL09JtPLLfHDkb08XqWPnLwjdrw=; b=MQVAXp7iyS/SgQK6jqGmZjDSlb6fxavACobIIVa4bYLos7Jjeuy/OuSntSwN1xertFL6AEp+Jn86phL2jFyPMAWm+rDQ0HcHAPlN5ly1x2FJLwApQeJRO1wRUClNRuXxKJoozydOYrxqVVLvIGsADoPOfvXG8t9bmkIp+vGMH+8Kdwus/cLv6npQ2ZE/GwF1gXLDcw+LakJXv4So5hu1+xktHS2Y1IgfJMuOK90g46Hx8BSeuepuPBERMqDRVh0RKOXszhsDCEESWnnyoC9JaKSG4U2CK7RrC+2NP/QTIB4Q8qctIMqcdSki7TjMioq1Vx9O+d3wI6sSCPw1+urQgg== 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=oYMR7s2R+tv8InTXYL09JtPLLfHDkb08XqWPnLwjdrw=; b=Da7gAaut88y3m+fbfIQj4wf7ywmM2rEkpIPJbUsvFCOTsgapQm70QOGAZdTYY9lT62qhZj1aNMRs0hrtFsSHJk0peo/p/AdYzKAoclZT/psSyMgxjKEygZ6R4+dDgkkg1HhHu8X4XuZEAzCPo6VkoYABHSodhc7+9XE1gLemMBQ= Received: from BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by BN8PR11MB3633.namprd11.prod.outlook.com (2603:10b6:408:8a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23; Wed, 7 Jul 2021 12:54:47 +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 12:54:47 +0000 From: "Ding, Xuan" To: "Burakov, Anatoly" , Maxime Coquelin , "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/9gIABN92AgAAEhYCAASDbMIAAn7yAgAACNoA= Date: Wed, 7 Jul 2021 12:54:46 +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> <095cc219-4cba-5fbe-a7c0-bf02138f0959@intel.com> In-Reply-To: <095cc219-4cba-5fbe-a7c0-bf02138f0959@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 011c6333-e1b6-44b4-cf86-08d94146667d x-ms-traffictypediagnostic: BN8PR11MB3633: 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:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: lQC49S4BNkBfCq2w0Mb/3p6s+WBhmJoagM+SZRBbJZv8l4bMsBKAvl1t9YpEb2tby402Yf8YLMLKzxLjk8zPeua4MO7ro89EBJ2x6H+nT+OMPhIO1V7RsIlmGOL4I58UTNwq4X9jFssFL/dkmA2REYZWSWY876VDfNHVOkaBuz7tHpBvddOwM+HoxPgG6jDt+u+pEQr5BDvIVKC5AZqShqrG78idRdl2QJfhA5zVSgB8PMtggBHc4LWoZACZCqjvS3zL1xEdbMZYabKxel5q5LcdqcbS9eRqXYgZtXPh1jZP8gLphe+7cpTIy9MDFAgdwOFoezMo9YXPSaG4c/YNlGiI31dARvp5AgmEhS8Unx2RSVyC+u2lngVIUVOwVPhOAritHLuNv3J9eSPDkk3uqO5744KOc/FuRmmKYxUOyXSofADGsabA8wjt8h1t6XZDNKi7OtJ8FiDMRDNKE2SpYa8Y7UKDIWD+16OCHIwqn2pGs0xcrj4j5/S3VWMAsBoZV+DH0x01MtQFOuxsVo0vU1niv5kNvCZM7yflAoyKu40TcsE11KOnTqhuLETyyZvvILoafD7yACc2aBbyyv+5wktn+LnnH6c5/eFp/uJosKKMNTfW1GjqnJvixxH7cTFQCpjSJQj7OnvGWokMXxLUNA== 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:(396003)(39860400002)(366004)(136003)(376002)(346002)(55016002)(6506007)(54906003)(53546011)(26005)(66476007)(38100700002)(33656002)(66556008)(30864003)(5660300002)(186003)(9686003)(4326008)(83380400001)(110136005)(478600001)(316002)(8676002)(7696005)(86362001)(122000001)(8936002)(107886003)(71200400001)(66446008)(66946007)(52536014)(2906002)(76116006)(64756008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dExpdERndWJuOHNIbnYwcE9jLzNidVVoellLVDhUbHB5OVByN3NzMHVoYkhI?= =?utf-8?B?ZUV0TUVOWmJOVENzUmhNUC8zN0RkeFQ5ZVlma3FiQzBFVTJ3b0pyS1BFdXFs?= =?utf-8?B?Q3lFaEVtcW41ZmN4U1lrUHNNK1VOWlB1S0ZsMjRPa09xTDZ1ME5BSWNHYm1X?= =?utf-8?B?SHRXUEozV2VsL0VDdUZ3dGt0bjFveDh6a0gzYXlPaXZIN0VpMDNYNVRwUTEz?= =?utf-8?B?SEwwQWd1YVlEWVFIbU90VnZ5L0JlcGZCYzZuUEZublZTQmFKMDR3Sm1YZVMz?= =?utf-8?B?TlFMRThNdW9ZN0ZoMjVsVTZub2czN0NITktEUFNPeGRmeHdyOUt4WHNONzVD?= =?utf-8?B?M2haQkM3NWRTTzh3akhiNWphbXdnNFhIcTRLeXNiaVlpK1VLRndud29UU2ww?= =?utf-8?B?NUZXSXBHKzFMMHVJTlZRUDQ1K1pBdDRKNndDUXUvM0hmdjlwN0FGeFhheDB2?= =?utf-8?B?MzNBR1BoTFVCRFlJakJhSWI1OFUvdUF6TFlFUTdxNVFTZ2EzaTB2bmtJeGU1?= =?utf-8?B?cE5DTnU5NnBoUDd1aWxaZEVHR1NLdjhRZE1tMzFFNTBBSGVQTXNjUWJabVNJ?= =?utf-8?B?em93ajFDZnorSkJwOGtGdTVOcFlXOHdYNlNIdDdNUG10NHRoeGphc3ZXY0ph?= =?utf-8?B?MktlTEcwRUJwOGdyZmdOTUpCbXpvVWNWS0ZYb2p1OXNBbWs2cjF2R3B5ZXgz?= =?utf-8?B?d0hhdHlsTmpUMGJLVGd6aE9WZUxLaklOczRuenVzUEQ2OGVlUG5DQVRaS0p2?= =?utf-8?B?ZVlFSEhiR2hxT29UVTcxei9KUnhxaHNpRkNpNGhjU21PVGl4OUpvM2J4Qjh5?= =?utf-8?B?SVUyM0tVYktIOTR1Y2ZJcjJuRjhUUzkrWC9jOEFOMU84OXFKS0pYRkYzL2lS?= =?utf-8?B?OEdBYXpZcWpaaWdraWt3TDY4d2NYbmtLVWxGR0xrbGVBZEpjUy9YL3NFWlpv?= =?utf-8?B?WlFxdjhneE9uOUxDMzRKSVlRRTZFa2R2ZURoaThNeFVoMjUwUUZkRmtaaVRS?= =?utf-8?B?SU5ITUYvK0Z5c0FqMkNDVTI1bVNSMENUTC82RmJDQk9jQk9McGpzMlZLMXVR?= =?utf-8?B?V0JyMWlSYWIwRUpnSG5Bam5FWkZrdkhmU3NKODBZNlBURVE4TG5VMkd3K0tO?= =?utf-8?B?YXV5ejJWWEliU1VleWg0cVYwWlVDK1NCNWN4Y2VmZjM2L0RrcFpCRHEzdHdk?= =?utf-8?B?QWRESVErL0paWmc1VndEbWYzOW5RTHVNeWY0Wk5SQWZmS3VNNSt3QWJUTExO?= =?utf-8?B?SjZnSkZXNlY4QWl6YVF3Qm0xNEVlOXVLaU1Wdk9rY1loODA3Q1R5ZmE3SmZP?= =?utf-8?B?NzcrdjRqbUxXWS85TnNXNllzekk0b0dVVzJzckVkVkl2cy9wckI2RXg1MlpK?= =?utf-8?B?Q3BjSW9EVTlEOHhuSnZSSW40MGlYejV3TTkwVG1yMzBWbVVwZllBOTNkcTl4?= =?utf-8?B?Wk9ZQnRjeVBmeEpJaUswWFNSKzlFV3JpaEh6U0xETzFWNWh4R1dPd2lmQTUz?= =?utf-8?B?OXlwY0R3WjJQK2I0N0JnbDYvdkJ0NWZTZVNmT0QyT3oxWlhPa0VrZ3drUi9H?= =?utf-8?B?NDN4c0VhUUpNcENxNHBxZE42dEIxL2JEZCtodTJrbnVBSHJJNGViUlIvQ0gw?= =?utf-8?B?WEJGMVVQSnRJZlRDVzIvZTBCeG12SnkzeFJHRXBCWCtFL2ZOaDVha3R4VWZW?= =?utf-8?B?RTU0SzBqUUZ1NGVKc3loaE0zTEk5S094Rk9HTUg0U000RjlCOHU4Mm5HTHdK?= =?utf-8?Q?OlUfwEoDlRA/OyXopU=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: 011c6333-e1b6-44b4-cf86-08d94146667d X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jul 2021 12:54:47.0403 (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: RmVZH1mRxtrh+IXNfy5u4IbOfZ3t+yKqLDrwbn2bC2od3E+EmKvxdnNOkJRO+QpHx25FYn10XCtjrqgA1uBPIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR11MB3633 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" SGkgQW5hdG9seSwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCdXJh a292LCBBbmF0b2x5IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPg0KPiBTZW50OiBXZWRuZXNk YXksIEp1bHkgNywgMjAyMSA4OjE4IFBNDQo+IFRvOiBEaW5nLCBYdWFuIDx4dWFuLmRpbmdAaW50 ZWwuY29tPjsgTWF4aW1lIENvcXVlbGluDQo+IDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT47 IFhpYSwgQ2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT47DQo+IFRob21hcyBNb25qYWxvbiA8 dGhvbWFzQG1vbmphbG9uLm5ldD47IERhdmlkIE1hcmNoYW5kDQo+IDxkYXZpZC5tYXJjaGFuZEBy ZWRoYXQuY29tPg0KPiBDYzogZGV2QGRwZGsub3JnOyBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVs LmNvbT47IFBhaSBHLCBTdW5pbA0KPiA8c3VuaWwucGFpLmdAaW50ZWwuY29tPjsgUmljaGFyZHNv biwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgVmFuDQo+IEhhYXJlbiwgSGFy cnkgPGhhcnJ5LnZhbi5oYWFyZW5AaW50ZWwuY29tPjsgTGl1LCBZb25nIDx5b25nLmxpdUBpbnRl bC5jb20+Ow0KPiBNYSwgV2Vud3VYIDx3ZW53dXgubWFAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBS ZTogW2RwZGstZGV2XSBbUEFUQ0ggdjUgMS8yXSB2aG9zdDogZW5hYmxlIElPTU1VIGZvciBhc3lu YyB2aG9zdA0KPiANCj4gT24gMDctSnVsLTIxIDc6MjUgQU0sIERpbmcsIFh1YW4gd3JvdGU6DQo+ ID4gSGksDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTog TWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gPj4gU2VudDog VHVlc2RheSwgSnVseSA2LCAyMDIxIDU6MzIgUE0NCj4gPj4gVG86IEJ1cmFrb3YsIEFuYXRvbHkg PGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+OyBEaW5nLCBYdWFuDQo+ID4+IDx4dWFuLmRpbmdA aW50ZWwuY29tPjsgWGlhLCBDaGVuYm8gPGNoZW5iby54aWFAaW50ZWwuY29tPjsgVGhvbWFzDQo+ ID4+IE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0PjsgRGF2aWQgTWFyY2hhbmQNCj4gPj4g PGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb20+DQo+ID4+IENjOiBkZXZAZHBkay5vcmc7IEh1LCBK aWF5dSA8amlheXUuaHVAaW50ZWwuY29tPjsgUGFpIEcsIFN1bmlsDQo+ID4+IDxzdW5pbC5wYWku Z0BpbnRlbC5jb20+OyBSaWNoYXJkc29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5j b20+Ow0KPiBWYW4NCj4gPj4gSGFhcmVuLCBIYXJyeSA8aGFycnkudmFuLmhhYXJlbkBpbnRlbC5j b20+OyBMaXUsIFlvbmcNCj4gPHlvbmcubGl1QGludGVsLmNvbT47DQo+ID4+IE1hLCBXZW53dVgg PHdlbnd1eC5tYUBpbnRlbC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRD SCB2NSAxLzJdIHZob3N0OiBlbmFibGUgSU9NTVUgZm9yIGFzeW5jIHZob3N0DQo+ID4+DQo+ID4+ DQo+ID4+DQo+ID4+IE9uIDcvNi8yMSAxMToxNiBBTSwgQnVyYWtvdiwgQW5hdG9seSB3cm90ZToN Cj4gPj4+IE9uIDA2LUp1bC0yMSA5OjMxIEFNLCBEaW5nLCBYdWFuIHdyb3RlOg0KPiA+Pj4+IEhp IE1heGltZSwNCj4gPj4+Pg0KPiA+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ Pj4+PiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0K PiA+Pj4+PiBTZW50OiBNb25kYXksIEp1bHkgNSwgMjAyMSA4OjQ2IFBNDQo+ID4+Pj4+IFRvOiBC dXJha292LCBBbmF0b2x5IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPjsgRGluZywgWHVhbg0K PiA+Pj4+PiA8eHVhbi5kaW5nQGludGVsLmNvbT47IFhpYSwgQ2hlbmJvIDxjaGVuYm8ueGlhQGlu dGVsLmNvbT47IFRob21hcw0KPiA+Pj4+PiBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47 IERhdmlkIE1hcmNoYW5kDQo+ID4+Pj4+IDxkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tPg0KPiA+ Pj4+PiBDYzogZGV2QGRwZGsub3JnOyBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT47IFBh aSBHLCBTdW5pbA0KPiA+Pj4+PiA8c3VuaWwucGFpLmdAaW50ZWwuY29tPjsgUmljaGFyZHNvbiwg QnJ1Y2UNCj4gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsNCj4gPj4+Pj4gVmFuIEhhYXJl biwgSGFycnkgPGhhcnJ5LnZhbi5oYWFyZW5AaW50ZWwuY29tPjsgTGl1LCBZb25nDQo+ID4+Pj4+ IDx5b25nLmxpdUBpbnRlbC5jb20+OyBNYSwgV2Vud3VYIDx3ZW53dXgubWFAaW50ZWwuY29tPg0K PiA+Pj4+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjUgMS8yXSB2aG9zdDogZW5h YmxlIElPTU1VIGZvciBhc3luYw0KPiA+Pj4+PiB2aG9zdA0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBPbiA3LzUvMjEgMjoxNiBQTSwgQnVyYWtvdiwgQW5hdG9seSB3cm90ZToN Cj4gPj4+Pj4+IE9uIDA1LUp1bC0yMSA5OjQwIEFNLCBYdWFuIERpbmcgd3JvdGU6DQo+ID4+Pj4+ Pj4gVGhlIHVzZSBvZiBJT01NVSBoYXMgbWFueSBhZHZhbnRhZ2VzLCBzdWNoIGFzIGlzb2xhdGlv biBhbmQgYWRkcmVzcw0KPiA+Pj4+Pj4+IHRyYW5zbGF0aW9uLiBUaGlzIHBhdGNoIGV4dGVuZHMg dGhlIGNhcGJpbGl0eSBvZiBETUEgZW5naW5lIHRvIHVzZQ0KPiA+Pj4+Pj4+IElPTU1VIGlmIHRo ZSBETUEgZGV2aWNlIGlzIGJvdW5kIHRvIHZmaW8uDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBXaGVu IHNldCBtZW1vcnkgdGFibGUsIHRoZSBndWVzdCBtZW1vcnkgd2lsbCBiZSBtYXBwZWQNCj4gPj4+ Pj4+PiBpbnRvIHRoZSBkZWZhdWx0IGNvbnRhaW5lciBvZiBEUERLLg0KPiA+Pj4+Pj4+DQo+ID4+ Pj4+Pj4gU2lnbmVkLW9mZi1ieTogWHVhbiBEaW5nIDx4dWFuLmRpbmdAaW50ZWwuY29tPg0KPiA+ Pj4+Pj4+IC0tLQ0KPiA+Pj4+Pj4+ICAgICBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvdmhvc3RfbGli LnJzdCB8ICA5ICsrKysrKw0KPiA+Pj4+Pj4+ICAgICBsaWIvdmhvc3QvcnRlX3Zob3N0LmggICAg ICAgICAgICAgICB8ICAxICsNCj4gPj4+Pj4+PiAgICAgbGliL3Zob3N0L3NvY2tldC5jICAgICAg ICAgICAgICAgICAgfCAgOSArKysrKysNCj4gPj4+Pj4+PiAgICAgbGliL3Zob3N0L3Zob3N0Lmgg ICAgICAgICAgICAgICAgICAgfCAgMSArDQo+ID4+Pj4+Pj4gICAgIGxpYi92aG9zdC92aG9zdF91 c2VyLmMgICAgICAgICAgICAgIHwgNDYNCj4gPj4+Pj4+PiArKysrKysrKysrKysrKysrKysrKysr KysrKysrLQ0KPiA+Pj4+Pj4+ICAgICA1IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kb2MvZ3Vp ZGVzL3Byb2dfZ3VpZGUvdmhvc3RfbGliLnJzdA0KPiA+Pj4+Pj4+IGIvZG9jL2d1aWRlcy9wcm9n X2d1aWRlL3Zob3N0X2xpYi5yc3QNCj4gPj4+Pj4+PiBpbmRleCAwNWM0MmM5YjExLi5jM2JlZGEy M2Q5IDEwMDY0NA0KPiA+Pj4+Pj4+IC0tLSBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9zdF9s aWIucnN0DQo+ID4+Pj4+Pj4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Zob3N0X2xpYi5y c3QNCj4gPj4+Pj4+PiBAQCAtMTE4LDYgKzExOCwxNSBAQCBUaGUgZm9sbG93aW5nIGlzIGFuIG92 ZXJ2aWV3IG9mIHNvbWUga2V5DQo+IFZob3N0DQo+ID4+Pj4+Pj4gQVBJIGZ1bmN0aW9uczoNCj4g Pj4+Pj4+PiAgICAgICAgICAgSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4NCj4gPj4+Pj4+PiAg ICAgKyAgLSBgYFJURV9WSE9TVF9VU0VSX0FTWU5DX1VTRV9WRklPYGANCj4gPj4+Pj4+PiArDQo+ ID4+Pj4+Pj4gKyAgICBJbiBhc3luY2hyb25vdXMgZGF0YSBwYXRoLCB2aG9zdCBsaWFyYXJ5IGlz IG5vdCBhd2FyZSBvZiB3aGljaA0KPiA+Pj4+Pj4+IGRyaXZlcg0KPiA+Pj4+Pj4+ICsgICAgKGln Yl91aW8vdmZpbykgdGhlIERNQSBkZXZpY2UgaXMgYm91bmQgdG8uIEFwcGxpY2F0aW9uIHNob3Vs ZA0KPiA+Pj4+Pj4+IHBhc3MNCj4gPj4+Pj4+PiArICAgIHRoaXMgZmxhZyB0byB0ZWxsIHZob3N0 IGxpYnJhcnkgd2hldGhlciBJT01NVSBzaG91bGQgYmUNCj4gPj4+Pj4+PiBwcm9ncmFtbWVkDQo+ ID4+Pj4+Pj4gKyAgICBmb3IgZ3Vlc3QgbWVtb3J5Lg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiAr ICAgIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICAg ICAgIC0gYGBSVEVfVkhPU1RfVVNFUl9ORVRfQ09NUExJQU5UX09MX0ZMQUdTYGANCj4gPj4+Pj4+ PiAgICAgICAgICAgU2luY2UgdjE2LjA0LCB0aGUgdmhvc3QgbGlicmFyeSBmb3J3YXJkcyBjaGVj a3N1bSBhbmQgZ3NvDQo+ID4+Pj4+Pj4gcmVxdWVzdHMgZm9yDQo+ID4+Pj4+Pj4gZGlmZiAtLWdp dCBhL2xpYi92aG9zdC9ydGVfdmhvc3QuaCBiL2xpYi92aG9zdC9ydGVfdmhvc3QuaA0KPiA+Pj4+ Pj4+IGluZGV4IDhkODc1ZTkzMjIuLmE3NjZlYTdiNmIgMTAwNjQ0DQo+ID4+Pj4+Pj4gLS0tIGEv bGliL3Zob3N0L3J0ZV92aG9zdC5oDQo+ID4+Pj4+Pj4gKysrIGIvbGliL3Zob3N0L3J0ZV92aG9z dC5oDQo+ID4+Pj4+Pj4gQEAgLTM3LDYgKzM3LDcgQEAgZXh0ZXJuICJDIiB7DQo+ID4+Pj4+Pj4g ICAgICNkZWZpbmUgUlRFX1ZIT1NUX1VTRVJfTElORUFSQlVGX1NVUFBPUlQgICAgKDFVTEwgPDwg NikNCj4gPj4+Pj4+PiAgICAgI2RlZmluZSBSVEVfVkhPU1RfVVNFUl9BU1lOQ19DT1BZICAgICgx VUxMIDw8IDcpDQo+ID4+Pj4+Pj4gICAgICNkZWZpbmUgUlRFX1ZIT1NUX1VTRVJfTkVUX0NPTVBM SUFOVF9PTF9GTEFHUyAgICAoMVVMTCA8PA0KPiA4KQ0KPiA+Pj4+Pj4+ICsjZGVmaW5lIFJURV9W SE9TVF9VU0VSX0FTWU5DX1VTRV9WRklPICAgICgxVUxMIDw8IDkpDQo+ID4+Pj4+Pj4gICAgICAg LyogRmVhdHVyZXMuICovDQo+ID4+Pj4+Pj4gICAgICNpZm5kZWYgVklSVElPX05FVF9GX0dVRVNU X0FOTk9VTkNFDQo+ID4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi92aG9zdC9zb2NrZXQuYyBiL2xp Yi92aG9zdC9zb2NrZXQuYw0KPiA+Pj4+Pj4+IGluZGV4IDVkMGQ3MjhkNTIuLjc3YzcyMmM4NmIg MTAwNjQ0DQo+ID4+Pj4+Pj4gLS0tIGEvbGliL3Zob3N0L3NvY2tldC5jDQo+ID4+Pj4+Pj4gKysr IGIvbGliL3Zob3N0L3NvY2tldC5jDQo+ID4+Pj4+Pj4gQEAgLTQyLDYgKzQyLDcgQEAgc3RydWN0 IHZob3N0X3VzZXJfc29ja2V0IHsNCj4gPj4+Pj4+PiAgICAgICAgIGJvb2wgZXh0YnVmOw0KPiA+ Pj4+Pj4+ICAgICAgICAgYm9vbCBsaW5lYXJidWY7DQo+ID4+Pj4+Pj4gICAgICAgICBib29sIGFz eW5jX2NvcHk7DQo+ID4+Pj4+Pj4gKyAgICBib29sIGFzeW5jX3VzZV92ZmlvOw0KPiA+Pj4+Pj4+ ICAgICAgICAgYm9vbCBuZXRfY29tcGxpYW50X29sX2ZsYWdzOw0KPiA+Pj4+Pj4+ICAgICAgICAg ICAvKg0KPiA+Pj4+Pj4+IEBAIC0yNDMsNiArMjQ0LDEzIEBAIHZob3N0X3VzZXJfYWRkX2Nvbm5l Y3Rpb24oaW50IGZkLCBzdHJ1Y3QNCj4gPj4+Pj4+PiB2aG9zdF91c2VyX3NvY2tldCAqdnNvY2tl dCkNCj4gPj4+Pj4+PiAgICAgICAgICAgICAgICAgZGV2LT5hc3luY19jb3B5ID0gMTsNCj4gPj4+ Pj4+PiAgICAgICAgIH0NCj4gPj4+Pj4+PiAgICAgKyAgICBpZiAodnNvY2tldC0+YXN5bmNfdXNl X3ZmaW8pIHsNCj4gPj4+Pj4+PiArICAgICAgICBkZXYgPSBnZXRfZGV2aWNlKHZpZCk7DQo+ID4+ Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgICAgICAgIGlmIChkZXYpDQo+ID4+Pj4+Pj4gKyAgICAgICAg ICAgIGRldi0+YXN5bmNfdXNlX3ZmaW8gPSAxOw0KPiA+Pj4+Pj4+ICsgICAgfQ0KPiA+Pj4+Pj4+ ICsNCj4gPj4+Pj4+PiAgICAgICAgIFZIT1NUX0xPR19DT05GSUcoSU5GTywgIm5ldyBkZXZpY2Us IGhhbmRsZSBpcyAlZFxuIiwgdmlkKTsNCj4gPj4+Pj4+PiAgICAgICAgICAgaWYgKHZzb2NrZXQt Pm5vdGlmeV9vcHMtPm5ld19jb25uZWN0aW9uKSB7DQo+ID4+Pj4+Pj4gQEAgLTg3OSw2ICs4ODcs NyBAQCBydGVfdmhvc3RfZHJpdmVyX3JlZ2lzdGVyKGNvbnN0IGNoYXIgKnBhdGgsDQo+ID4+Pj4+ Pj4gdWludDY0X3QgZmxhZ3MpDQo+ID4+Pj4+Pj4gICAgICAgICB2c29ja2V0LT5leHRidWYgPSBm bGFncyAmIFJURV9WSE9TVF9VU0VSX0VYVEJVRl9TVVBQT1JUOw0KPiA+Pj4+Pj4+ICAgICAgICAg dnNvY2tldC0+bGluZWFyYnVmID0gZmxhZ3MgJg0KPiA+PiBSVEVfVkhPU1RfVVNFUl9MSU5FQVJC VUZfU1VQUE9SVDsNCj4gPj4+Pj4+PiAgICAgICAgIHZzb2NrZXQtPmFzeW5jX2NvcHkgPSBmbGFn cyAmIFJURV9WSE9TVF9VU0VSX0FTWU5DX0NPUFk7DQo+ID4+Pj4+Pj4gKyAgICB2c29ja2V0LT5h c3luY191c2VfdmZpbyA9IGZsYWdzICYNCj4gPj4+Pj4gUlRFX1ZIT1NUX1VTRVJfQVNZTkNfVVNF X1ZGSU87DQo+ID4+Pj4+Pj4gICAgICAgICB2c29ja2V0LT5uZXRfY29tcGxpYW50X29sX2ZsYWdz ID0gZmxhZ3MgJg0KPiA+Pj4+Pj4+IFJURV9WSE9TVF9VU0VSX05FVF9DT01QTElBTlRfT0xfRkxB R1M7DQo+ID4+Pj4+Pj4gICAgICAgICAgIGlmICh2c29ja2V0LT5hc3luY19jb3B5ICYmDQo+ID4+ Pj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi92aG9zdC92aG9zdC5oIGIvbGliL3Zob3N0L3Zob3N0LmgN Cj4gPj4+Pj4+PiBpbmRleCA4MDc4ZGRmZjc5Li5mYjc3NWNlNGVkIDEwMDY0NA0KPiA+Pj4+Pj4+ IC0tLSBhL2xpYi92aG9zdC92aG9zdC5oDQo+ID4+Pj4+Pj4gKysrIGIvbGliL3Zob3N0L3Zob3N0 LmgNCj4gPj4+Pj4+PiBAQCAtMzcwLDYgKzM3MCw3IEBAIHN0cnVjdCB2aXJ0aW9fbmV0IHsNCj4g Pj4+Pj4+PiAgICAgICAgIGludDE2X3QgICAgICAgICAgICBicm9hZGNhc3RfcmFycDsNCj4gPj4+ Pj4+PiAgICAgICAgIHVpbnQzMl90ICAgICAgICBucl92cmluZzsNCj4gPj4+Pj4+PiAgICAgICAg IGludCAgICAgICAgICAgIGFzeW5jX2NvcHk7DQo+ID4+Pj4+Pj4gKyAgICBpbnQgICAgICAgICAg ICBhc3luY191c2VfdmZpbzsNCj4gPj4+Pj4+PiAgICAgICAgIGludCAgICAgICAgICAgIGV4dGJ1 ZjsNCj4gPj4+Pj4+PiAgICAgICAgIGludCAgICAgICAgICAgIGxpbmVhcmJ1ZjsNCj4gPj4+Pj4+ PiAgICAgICAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgICAgKnZpcnRxdWV1ZVtWSE9TVF9NQVhf UVVFVUVfUEFJUlMgKg0KPiA+Pj4+Pj4+IDJdOw0KPiA+Pj4+Pj4+IGRpZmYgLS1naXQgYS9saWIv dmhvc3Qvdmhvc3RfdXNlci5jIGIvbGliL3Zob3N0L3Zob3N0X3VzZXIuYw0KPiA+Pj4+Pj4+IGlu ZGV4IDhmMGViYTY0MTIuLmYzNzAzZjJlNzIgMTAwNjQ0DQo+ID4+Pj4+Pj4gLS0tIGEvbGliL3Zo b3N0L3Zob3N0X3VzZXIuYw0KPiA+Pj4+Pj4+ICsrKyBiL2xpYi92aG9zdC92aG9zdF91c2VyLmMN Cj4gPj4+Pj4+PiBAQCAtNDUsNiArNDUsNyBAQA0KPiA+Pj4+Pj4+ICAgICAjaW5jbHVkZSA8cnRl X2NvbW1vbi5oPg0KPiA+Pj4+Pj4+ICAgICAjaW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiA+Pj4+ Pj4+ICAgICAjaW5jbHVkZSA8cnRlX2xvZy5oPg0KPiA+Pj4+Pj4+ICsjaW5jbHVkZSA8cnRlX3Zm aW8uaD4NCj4gPj4+Pj4+PiAgICAgICAjaW5jbHVkZSAiaW90bGIuaCINCj4gPj4+Pj4+PiAgICAg I2luY2x1ZGUgInZob3N0LmgiDQo+ID4+Pj4+Pj4gQEAgLTE0MSw2ICsxNDIsMzYgQEAgZ2V0X2Js a19zaXplKGludCBmZCkNCj4gPj4+Pj4+PiAgICAgICAgIHJldHVybiByZXQgPT0gLTEgPyAodWlu dDY0X3QpLTEgOiAodWludDY0X3Qpc3RhdC5zdF9ibGtzaXplOw0KPiA+Pj4+Pj4+ICAgICB9DQo+ ID4+Pj4+Pj4gICAgICtzdGF0aWMgaW50DQo+ID4+Pj4+Pj4gK2FzeW5jX2RtYV9tYXAoc3RydWN0 IHJ0ZV92aG9zdF9tZW1fcmVnaW9uICpyZWdpb24sIGJvb2wgZG9fbWFwKQ0KPiA+Pj4+Pj4+ICt7 DQo+ID4+Pj4+Pj4gKyAgICBpbnQgcmV0ID0gMDsNCj4gPj4+Pj4+PiArICAgIHVpbnQ2NF90IGhv c3RfaW92YTsNCj4gPj4+Pj4+PiArICAgIGhvc3RfaW92YSA9IHJ0ZV9tZW1fdmlydDJpb3ZhKCh2 b2lkDQo+ID4+Pj4+Pj4gKikodWludHB0cl90KXJlZ2lvbi0+aG9zdF91c2VyX2FkZHIpOw0KPiA+ Pj4+Pj4+ICsgICAgaWYgKGRvX21hcCkgew0KPiA+Pj4+Pj4+ICsgICAgICAgIC8qIEFkZCBtYXBw ZWQgcmVnaW9uIGludG8gdGhlIGRlZmF1bHQgY29udGFpbmVyIG9mIERQREsuICovDQo+ID4+Pj4+ Pj4gKyAgICAgICAgcmV0ID0NCj4gPj4+Pj4gcnRlX3ZmaW9fY29udGFpbmVyX2RtYV9tYXAoUlRF X1ZGSU9fREVGQVVMVF9DT05UQUlORVJfRkQsDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICByZWdpb24tPmhvc3RfdXNlcl9hZGRyLA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgaG9zdF9pb3ZhLA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgcmVnaW9uLT5zaXplKTsNCj4gPj4+Pj4+PiArICAgICAgICBpZiAocmV0KSB7DQo+ID4+Pj4+ Pj4gKyAgICAgICAgICAgIFZIT1NUX0xPR19DT05GSUcoRVJSLCAiRE1BIGVuZ2luZSBtYXAgZmFp bGVkXG4iKTsNCj4gPj4+Pj4+PiArICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPj4+Pj4+PiAr ICAgICAgICB9DQo+ID4+Pj4+Pj4gKyAgICB9IGVsc2Ugew0KPiA+Pj4+Pj4+ICsgICAgICAgIC8q IFJlbW92ZSBtYXBwZWQgcmVnaW9uIGZyb20gdGhlIGRlZmF1bHQgY29udGFpbmVyIG9mDQo+ID4+ Pj4+Pj4gRFBESy4gKi8NCj4gPj4+Pj4+PiArICAgICAgICByZXQgPQ0KPiA+Pj4+Pj4+IHJ0ZV92 ZmlvX2NvbnRhaW5lcl9kbWFfdW5tYXAoUlRFX1ZGSU9fREVGQVVMVF9DT05UQUlORVJfRkQsDQo+ ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+aG9zdF91c2VyX2Fk ZHIsDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RfaW92YSwNCj4g Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLT5zaXplKTsNCj4gPj4+ Pj4+PiArICAgICAgICBpZiAocmV0KSB7DQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgIFZIT1NUX0xP R19DT05GSUcoRVJSLCAiRE1BIGVuZ2luZSB1bm1hcCBmYWlsZWRcbiIpOw0KPiA+Pj4+Pj4+ICsg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+Pj4+Pj4+ICsgICAgICAgIH0NCj4gPj4+Pj4+PiAr ICAgIH0NCj4gPj4+Pj4+PiArICAgIHJldHVybiByZXQ7DQo+ID4+Pj4+Pj4gK30NCj4gPj4+Pj4+ DQo+ID4+Pj4+PiBXZSd2ZSBiZWVuIGRpc2N1c3NpbmcgdGhpcyBvZmYgbGlzdCB3aXRoIFh1YW4s IGFuZCB1bmZvcnR1bmF0ZWx5DQo+ID4+Pj4+PiB0aGlzIGlzDQo+ID4+Pj4+PiBhIGJsb2NrZXIg Zm9yIG5vdy4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBDdXJyZW50bHksIHRoZSB4ODYgSU9NTVUgZG9l cyBub3Qgc3VwcG9ydCBwYXJ0aWFsIHVubWFwIC0gdGhlDQo+IHNlZ21lbnRzDQo+ID4+Pj4+PiBo YXZlIHRvIGJlIHVubWFwcGVkIGV4YWN0bHkgdGhlIHNhbWUgYWRkci9sZW4gYXMgdGhleSB3ZXJl IG1hcHBlZC4NCj4gV2UNCj4gPj4+Pj4+IGFsc28gY29uY2F0ZW5hdGUgYWRqYWNlbnQgbWFwcGlu Z3MgdG8gcHJldmVudCBmaWxsaW5nIHVwIHRoZSBETUENCj4gPj4+Pj4+IG1hcHBpbmcNCj4gPj4+ Pj4+IGVudHJ5IHRhYmxlIHdpdGggc3VwZXJmbHVvdXMgZW50cmllcy4NCj4gPj4+Pj4+DQo+ID4+ Pj4+PiBUaGlzIG1lYW5zIHRoYXQsIHdoZW4gdHdvIHVucmVsYXRlZCBtYXBwaW5ncyBhcmUgY29u dGlndW91cyBpbg0KPiBtZW1vcnkNCj4gPj4+Pj4+IChlLmcuIGlmIHlvdSBtYXAgcmVnaW9ucyAx IGFuZCAyIGluZGVwZW5kZW50bHksIGJ1dCB0aGV5IGhhcHBlbiB0byBiZQ0KPiA+Pj4+Pj4gc2l0 dGluZyByaWdodCBuZXh0IHRvIGVhY2ggb3RoZXIgaW4gdmlydHVhbCBtZW1vcnkpLCB3ZSBjYW5u b3QgbGF0ZXINCj4gPj4+Pj4+IHVubWFwIG9uZSBvZiB0aGVtIGJlY2F1c2UsIGV2ZW4gdGhvdWdo IHRoZXNlIGFyZSB0d28gc2VwYXJhdGUNCj4gPj4+Pj4gbWFwcGluZ3MNCj4gPj4+Pj4+IGFzIGZh ciBhcyBrZXJuZWwgVkZJTyBpbmZyYXN0cnVjdHVyZSBpcyBjb25jZXJuZWQsIHRoZSBtYXBwaW5n IGdldHMNCj4gPj4+Pj4+IGNvbXBhY3RlZCBhbmQgbG9va3MgbGlrZSBvbmUgc2luZ2xlIG1hcHBp bmcgdG8gVkZJTywgc28gRFBESyBBUEkgd2lsbA0KPiA+Pj4+Pj4gbm90IGxldCB1cyB1bm1hcCBy ZWdpb24gMSB3aXRob3V0IGFsc28gdW5tYXBwaW5nIHJlZ2lvbiAyLg0KPiA+Pj4+Pj4NCj4gPj4+ Pj4+IFRoZSBwcm9wZXIgZml4IGZvciB0aGlzIHByb2JsZW0gd291bGQgYmUgdG8gYWx3YXlzIG1h cCBtZW1vcnkNCj4gPj4+Pj4+IHBhZ2UtYnktcGFnZSByZWdhcmRsZXNzIG9mIHdoZXJlIGl0IGNv bWVzIGZyb20gKHdlIGFscmVhZHkgZG8gdGhhdCBmb3INCj4gPj4+Pj4+IGludGVybmFsIG1lbW9y eSwgYnV0IG5vdCBmb3IgZXh0ZXJuYWwpLiBIb3dldmVyLCB0aGUgcmVhc29uIHRoaXMgd29ya3MN Cj4gPj4+Pj4+IGZvciBpbnRlcm5hbCBtZW1vcnkgaXMgYmVjYXVzZSB3aGVuIG1hcHBpbmcgaW50 ZXJuYWwgbWVtb3J5DQo+IHNlZ21lbnRzLA0KPiA+Pj4+Pj4gKndlIGtub3cgdGhlIHBhZ2Ugc2l6 ZSouIEZvciBleHRlcm5hbCBtZW1vcnkgc2VnbWVudHMsIHRoZXJlIGlzIG5vDQo+IHN1Y2gNCj4g Pj4+Pj4+IGd1YXJhbnRlZSwgc28gd2UgY2Fubm90IGRlZHVjZSBwYWdlIHNpemUgZm9yIGEgZ2l2 ZW4gbWVtb3J5IHNlZ21lbnQsDQo+ID4+Pj4+IGFuZA0KPiA+Pj4+Pj4gdGh1cyBjYW4ndCBtYXAg dGhpbmdzIHBhZ2UtYnktcGFnZS4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBTbywgdGhlIHByb3BlciBm aXggZm9yIGl0IHdvdWxkIGJlIHRvIGFkZCBwYWdlIHNpemUgdG8gdGhlIFZGSU8gRE1BDQo+ID4+ Pj4+PiBBUEkuDQo+ID4+Pj4+PiBVbmZvcnR1bmF0ZWx5LCBpdCBwcm9iYWJseSBoYXMgdG8gd2Fp dCB1bnRpbCAyMS4xMSBiZWNhdXNlIGl0IGlzIGFuIEFQSQ0KPiA+Pj4+Pj4gY2hhbmdlLg0KPiA+ Pj4+Pj4NCj4gPj4+Pj4+IFRoZSBzbGlnaHRseSBoYWNreSBmaXggZm9yIHRoaXMgd291bGQgYmUg dG8gZm9yZWdvIHVzZXIgbWVtIG1hcA0KPiA+Pj4+Pj4gY29uY2F0ZW5hdGlvbiBhbmQgdHJ1c3Qg dGhhdCB1c2VyIGlzIG5vdCBnb2luZyB0byBkbyBhbnl0aGluZyBzdHVwaWQsDQo+ID4+Pj4+PiBh bmQgd2lsbCBub3Qgc3BhbSB0aGUgVkZJTyBETUEgQVBJIHdpdGhvdXQgcmVhc29uLiBJIHdvdWxk IHJhdGhlcg0KPiA+Pj4+Pj4gbm90IGdvDQo+ID4+Pj4+PiBkb3duIHRoaXMgcm9hZCwgYnV0IHRo aXMgY291bGQgYmUgYW4gb3B0aW9uIGluIHRoaXMgY2FzZS4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBU aG91Z2h0cz8NCj4gPj4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+IFRoYW5rcyBBbmF0b2x5IGZvciB0 aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGlzc3VlLg0KPiA+Pj4+PiBJdCBtYXkgYmUg cG9zc2libGUgdG8gZWl0aGVyIGNyZWF0ZSBhIHZlcnNpb25lZCBzeW1ib2wgZm9yIHRoaXMgQVBJ DQo+ID4+Pj4+IGNoYW5nZSwgb3IgbWF5YmUgZXZlbiB0byBoYXZlIGEgdGVtcG9yYXJ5IGludGVy bmFsIEFQSS4NCj4gPj4+Pj4NCj4gPj4+Pj4gQnV0IEkgdGhpbmsgdGhpcyBzZXJpZXMgaW4gaXRz IGN1cnJlbnQgZm9ybSBpcyBub3QgYWNjZXB0YWJsZSwgc28NCj4gPj4+Pj4gd2FpdGluZyBmb3Ig djIxLjExIHdvdWxkIGJlIHRoZSBiZXN0IG9wdGlvbiAod2UgbWF5IHdhbnQgdG8gc2VuZCB0aGUN Cj4gPj4+Pj4gZGVwcmVjYXRpb24gbm90aWNlIGluIHRoaXMgcmVsZWFzZSB0aG91Z2gpLg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBJbiB0aGlzIHNlcmllcywgSSBkb24ndCBsaWtlIHRoZSB1c2VyIGFwcGxp Y2F0aW9uIGhhcyB0byBwYXNzIGEgZmxhZyB0bw0KPiA+Pj4+PiBzdGF0ZSB3aGV0aGVyIHRoZSBE TUEgZW5naW5lIHVzZXMgVkZJTyBvciBub3QuIEFGQUlDVCwgdGhpcyBuZXcgcmV2aXNpb24NCj4g Pj4+Pj4gZG9lcyBub3QgaW1wbGVtZW50IHdoYXQgd2FzIGRpc2N1c3NlZCBpbiB0aGUgcHJldmlv dXMgb25lLCBpLmUuDQo+ID4+Pj4+IHN1cHBvcnRpbmcgYm90aCBJT1ZBX0FTX1ZBIGFuZCBJT1ZB X0FTX1BBLg0KPiA+Pj4+DQo+ID4+Pj4gVGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzLiBIZXJlIEkg aG9wZSB0byBleHBsYWluIHNvbWUgcXVlc3Rpb25zOg0KPiA+Pj4+IDEuIFdoZXRoZXIgYm90aCBJ T1ZBX0FTX1ZBIGFuZCBJT1ZBX0FTX1BBIGFyZSBzdXBwb3J0ZWQgbm93Pw0KPiA+Pj4+IEE6IEJv dGggSU9WQV9BU19QQSBhbmQgSU9WQV9BU19WQSBhcmUgc3VwcG9ydGVkIG5vdy4gSW4gdGhpcyB2 ZXJzaW9uLA0KPiB0aGUNCj4gPj4+PiB2aXJ0dWFsIGFkZHJlc3MgaXMgcmVwbGFjZWQgd2l0aCBp b3ZhIGFkZHJlc3Mgb2YgbWFwcGVkIHJlZ2lvbiwgYW5kDQo+ID4+Pj4gdGhlIGlvdmENCj4gPj4+ PiBhZGRyZXNzIGlzIHNlbGVjdGVkIHRvIHByb2dyYW0gdGhlIElPTU1VIGluc3RlYWQgb2Ygdmly dHVhbCBhZGRyZXNzIG9ubHkuDQo+ID4+DQo+ID4+IEdvb2QhDQo+ID4+DQo+ID4+Pj4NCj4gPj4+ PiAyLiBXaHkgYSBmbGFnIGlzIGNob3NlbiB0byBiZSBwYXNzZWQgYnkgYXBwbGljYXRpb24/DQo+ ID4+Pj4gQTogWWVzLCBhcyB3ZSBkaXNjdXNzZWQgYmVmb3JlLCB0aGUgcnRlX2VhbF9pb3ZhX21v ZGUoKSBBUEkgY2FuIGJlDQo+ID4+Pj4gdXNlZCB0bw0KPiA+Pj4+IGdldCB0aGUgSU9WQSBtb2Rl LCBzbyBhcyB0byBkZXRlcm1pbmUgd2hldGhlciBJT01NVSBzaG91bGQgYmUNCj4gPj4gcHJvZ3Jh bW1lZC4NCj4gPj4+PiBIb3dldmVyLCBpbiB0aGUgaW1wbGVtZW50YXRpb24gcHJvY2VzcywgSSBm b3VuZCBhIHByb2JsZW0uIFRoYXQgaXMgaG93IHRvDQo+ID4+Pj4gZGlzdGluZ3Vpc2ggdGhlIFZG SU8gUEEgYW5kIElHQl9VSU8gUEEuIEJlY2F1c2UgZm9yIFZGSU8gY2FzZXMsIHdlDQo+IHNob3Vs ZA0KPiA+Pj4+IGFsd2F5cyBwcm9ncmFtIHRoZSBJT01NVS4gV2hpbGUgaW4gSUdCX1VJTyBjYXNl cywgaXQgZGVwZW5kcyBvbg0KPiBJT01NVQ0KPiA+Pj4+IGNhcGFiaWxpdHkgb2YgcGxhdGZvcm0u DQo+ID4+Pg0KPiA+Pj4gSG93IGRvZXMgb25lIHByb2dyYW0gSU9NTVUgd2l0aCBpZ2JfdWlvPyBJ IHdhcyB1bmRlciBpbXByZXNzaW9uIHRoYXQNCj4gPj4+IGlnYl91aW8gKGFuZCB1aW9fcGNpX2dl bmVyaWMgZm9yIHRoYXQgbWF0dGVyKSBkb2VzIG5vdCBwcm92aWRlIHN1Y2gNCj4gPj4+IGZhY2ls aXRpZXMuDQo+ID4+DQo+ID4+ICsxDQo+ID4NCj4gPiBNYXliZSBzb21lIG1pc3VuZGVyc3RhbmRp bmcgaW4gdGhpcyBzZW50ZW5jZSBoZXJlLg0KPiA+IEluIG91ciBkZXNpZ24sIGlmIHJ0ZV9lYWxf dmZpb19pc19lbmFibGVkKCJ2ZmlvIikgaXMgdHJ1ZSwgaW9tbXUgd2lsbCBiZQ0KPiBwcm9ncmFt bWVkLg0KPiA+IFRydWUgbWVhbnMgdmZpbyBtb2R1bGUgaXMgbW9kcHJvYmVkLg0KPiA+DQo+ID4g QnV0IHRoZXJlIGlzIGFuIGV4Y2VwdGlvbiBoZXJlLCB0aGF0IGlzLCBldmVuIGlmIHZmaW8gbW9k dWxlIGlzIG1vZHByb2JlZCwNCj4gPiBEUERLIHVzZXIgc3RpbGwgYmluZCBhbGwgdGhlIGRldmlj ZXMgdG8gaWdiX3Vpby4NCj4gPg0KPiA+IFRoaXMgc2l0dWF0aW9uIGNhbiBiZSBkaXN0aW5ndWlz aGVkIGluIERQREsgZWFsIGluaXRpYWxpemF0aW9uLCBiZWNhdXNlIHRoZQ0KPiByZXNvdXJjZSBt YXBwaW5nDQo+ID4gaXMgYWNjb3JkaW5nIHRvIHRoZSBkcml2ZXIgbG9hZGVkIGJ5IGVhY2ggZGV2 aWNlKHJ0ZV9wY2lfbWFwX2RldmljZSkuDQo+ID4NCj4gPiBCdXQgaW4gb3VyIHNjZW5hcmlvLCB0 aGlzIGp1ZGdtZW50IGlzIHNvbWV3aGF0IHdlYWsuIEJlY2F1c2Ugd2UgY2Fubm90IGdldA0KPiA+ IHRoZSBkZXZpY2UgZHJpdmVyIGluZm8gaW4gdmhvc3QgbGlicmFyeS4gSSBhbHNvIHRoaW5rIGl0 IGlzIHVucmVhc29uYWJsZSBmb3Igdmhvc3QgdG8NCj4gPiBkbyB0aGlzLiBPbmx5IHRydXN0IHRo YXQgdXNlcnMgd2lsbCBub3QgdXNlIGl0IGxpa2UgdGhpcy4gVGhvdWdodHMgZm9yIHRoaXMgc2Nl bmFyaW8/DQo+IA0KPiBJIGRvbid0IHNlZSBob3cgaWdiX3VpbyB3b3VsZCBtYWtlIGFueSBkaWZm ZXJlbmNlIGF0IGFsbC4gSWYgeW91IGFyZQ0KPiB1c2luZyBpZ2JfdWlvLCB5b3UgKmRvbid0IGhh dmUgRE1BIG1hcHBpbmcgYXQgYWxsKiBhbmQgd2lsbCB1c2UgcmF3DQo+IHBoeXNpY2FsIGFkZHJl c3Nlcy4gQXNzdW1pbmcgeW91ciBjb2RlIHN1cHBvcnRzIHRoaXMsIHRoYXQncyBhbGwgeW91J3Jl DQo+IGV2ZXIgZ29pbmcgdG8gZ2V0LiBUaGUgcG9pbnQgb2YgVkZJTyBpcyB0byBoYXZlIG1lbW9y eSByZWdpb25zIHRoYXQgYXJlDQo+IG1hcHBlZCBmb3IgRE1BICpiZWNhdXNlIHJlYWwgcGh5c2lj YWwgYWRkcmVzc2VzIGFyZSBhc3N1bWVkIHRvIGJlIG5vdA0KPiBhdmFpbGFibGUqLiBXaGVuIHlv dSdyZSB1c2luZyBpZ2JfdWlvLCB5b3UgZWZmZWN0aXZlbHkgZG8gaGF2ZSBETUENCj4gYWNjZXNz IHRvIHRoZSBlbnRpcmUgbWVtb3J5LCBhbmQgdGh1cyBjYW4gYnlwYXNzIElPTU1VIGFsdG9nZXRo ZXINCj4gKGFzc3VtaW5nIHlvdSdyZSB1c2luZyBwYXNzdGhyb3VnaCBtb2RlKS4NCg0KTXkgY29u Y2VybiBpcyBleGFjdGx5IGhlcmUuDQpJbiBpZ2JfdWlvIGNhc2VzLCBhbHRob3VnaCBkZXZpY2Vz IGFyZSBub3QgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY29udGFpbmVyIGluIGVhbCBpbml0LA0KYnV0 IHRoZSAiSU9NTVUgcHJvZ3JhbW1pbmciIGFjdHVhbGx5IGhhcHBlbnMgd2hlbiB0aGUgcnRlX3Zm aW9fY29udGFpbmVyX2RtYV9tYXAoKSBpcyBjYWxsZWQuDQpJdCBpcyBubyBoYXJtIGJ1dCBpdCBp cyBhbHNvIHVubmVjZXNzYXJ5Lg0KDQo+IA0KPiBCb3R0b20gbGluZTogZG8gVkZJTyBETUEgbWFw cGluZyB1bmNvbmRpdGlvbmFsbHkuIElmIFZGSU8gaXMgYWN0aXZlIC0NCj4gZ3JlYXQsIHRoZSBt ZW1vcnkgd2lsbCBiZSBETUEgbWFwcGVkLiBJZiBpdCdzIG5vdCBhY3RpdmUgLSBubyBoYXJtIHdp bGwNCj4gZXZlciBiZSBkb25lIGJ5IG1hcHBpbmcgdGhlIG1lbW9yeSBmb3IgRE1BIGFueXdheS4N Cg0KRG8gVkZJTyBETUEgbWFwcGluZyB1bmNvbmRpdGlvbmFsbHksIGRvIHlvdSBtZWFuIHRoZSBy dGVfZWFsX3ZmaW9faXNfZW5hYmxlZCgpIGlzIHVubmVjZXNzYXJ5Pw0KV2hhdCBpZiB0aGUgcGxh dGZvcm0gZG9lcyBub3QgaGF2ZSBJT01NVT8NCg0KVGhhbmtzIHZlcnkgbXVjaC4NCg0KUmVnYXJk cywNClh1YW4NCg0KPiANCj4gLS0NCj4gVGhhbmtzLA0KPiBBbmF0b2x5DQo=