From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web11.5263.1685436062447605971 for ; Tue, 30 May 2023 01:41:02 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=nR2ro3hu; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: ray.ni@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685436062; x=1716972062; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=U/brYazy23SOJWH94j2LUXnS10510ix0VOiANs6S5v4=; b=nR2ro3hu34blte46ePcbizcNO7bv2FrXCp0pKsKIndtzmHj6+ixpDHtE ie7fs4vsM+ixnh61cyjh/jTftecOVwcfE7ytlMxbeEnmtlxxndH2NHVdH +TKECacek+tPvYOKcFt6n+rzf1XJfEDjHBZL/xys51Hp3d9UPJLyoSHyP IYcnLx/M0BUtMET12+CkYjzobbbVr7BZJnHcfW3ip31+XhOXBOllEEWfn 5iNzjvJ4VQQyKa2/aMIOp67yENesab5qPk0NUtY1nMvdxszC1bXbzHNYO y8jB7lAJ+myUB1wxr803C6ARglwsW0RuBvVfj8/nr0NnvaW7woR4+MO9u Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="441213197" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="441213197" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2023 01:41:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10725"; a="776227086" X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="776227086" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga004.fm.intel.com with ESMTP; 30 May 2023 01:41:01 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.2507.23; Tue, 30 May 2023 01:41:01 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) 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.2507.23 via Frontend Transport; Tue, 30 May 2023 01:41:01 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.43) 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.2507.23; Tue, 30 May 2023 01:41:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CJ34O3hiecevL6C+4ybUgC7iaCMsJXlh6y7DdLvw/lhlT08eqhHj7+9ovoFWa7eDRNhvwUo/J6efmjYD0ukBZhhua7lMZoeT8r7tzylCMmwwrjESJ78lMgRSiw4DeFOClittdkfaxZ23Rl5eF50WD9APKlfHnAFpVuYJSaDvnKKxb2xqAiZlfELH4A77XgY8aquw2nVPm1jhfcrnFceSMJMffgS98wnOT1OPvZze+X17V03jBAsirVKfGEx++H+k2kZrl0Xw95JDaytm58mGhbUfAl5uB6bPWJK6ltdelPBVzlbPEPqzWJcTeTGdgf1mk6L9PreAz3x0QsyJbpbIgw== 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=U/brYazy23SOJWH94j2LUXnS10510ix0VOiANs6S5v4=; b=lHZ5Hj9xNVDYtlYFgJa0Bb1IWLHgY/cYl7BVNdHXTcuXoFkJHS4HgcrFVdL+WzvIVxFPGIGFq4GMBpZ7HxfCjrj0Fa/ZWrD71oN/TM7TcC/fIOqA9dSOLI+db8go9nGU6kCQHO6EKzvnysUIldaDwbUf6/lLunrh0RdIj/bOYdMfaZHORZuKUTJSvPVN1A8Nl1/70VhVCjY4tEj2vS517eJ9fD4C0uJA+RNQRK/fWRIzItYBJmnlZGDbKOTM0DZ9+4/rhuh+4hQCEsmRhvc24aGG3IakqAmZHObsMOvaltqBV6mfb3n4ZB96YciTLnos0uShz8QNBPizn+L+toHMFw== 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 Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by SA3PR11MB7526.namprd11.prod.outlook.com (2603:10b6:806:31c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.21; Tue, 30 May 2023 08:40:58 +0000 Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::892b:b8e6:bab7:635d]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::892b:b8e6:bab7:635d%5]) with mapi id 15.20.6433.018; Tue, 30 May 2023 08:40:58 +0000 From: "Ni, Ray" To: Ard Biesheuvel , "devel@edk2.groups.io" CC: "Yao, Jiewen" , Gerd Hoffmann , Taylor Beebe , Oliver Smith-Denny , "Bi, Dandan" , "Gao, Liming" , "Kinney, Michael D" , Leif Lindholm , Michael Kubacki Subject: Re: [edk2-devel] [RFC PATCH 05/11] MdeModulePkg/DxeCore: Use memory mapped FV protocol to avoid image copy Thread-Topic: [edk2-devel] [RFC PATCH 05/11] MdeModulePkg/DxeCore: Use memory mapped FV protocol to avoid image copy Thread-Index: AQHZkhbRcWfmpFxJ5k+ZOqPoaXAwbq9yV02QgAAbqgCAAAa7kA== Date: Tue, 30 May 2023 08:40:56 +0000 Message-ID: References: <20230529101705.2476949-1-ardb@kernel.org> <20230529101705.2476949-6-ardb@kernel.org> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|SA3PR11MB7526:EE_ x-ms-office365-filtering-correlation-id: fc282148-562e-48de-868e-08db60e9966c x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: smM6pCZ4KnZuAlEn2TpFub7ysO42Mv43hyhpq4dsDG+t8G57b7Bob6A9hViM9D9CpCnyQrLDK4mup7xdjd6fZE8W0IqDyvGxl6v3zwKydVHZ1kHfcXYwWBaNPe/xzynR9WmtGO0r4f1a2qPKr+mZIHJS4RDCmjRUgUfUFYKFTzRbQ4QKPkLh+9MsaT9a5pOkslkzW0fz3p3Qc11U18jKi5eZfxIDm0P+XpCJZeyky9/v1Js8DsKlMk6odFM1pBZH0kuVwxQJgin2vONyvylx8KsqKS/EJRu5iH7YNcEklGGBofL5dGw/krp7EwTqgLVY8R6nO97VQ8iqVL+t3XjUxBYMYKWL6cZ6T+zu4+uKGgMuTGXITtX2Posm8AeHpq0AhPpCSzeqyGuQq+X6gDveVxc9bPW00H4z2d3NWDVQlDBBrr0lIYakDfAjO5MNUfnRefuQcacYGNkW1HA7qtfqpY0K0l67JZCDNFZlBetDz/qxBZEM6LoE4uhMzJ8cFm+0tx4AUId5EyGq60A1e1knDxs57vMdoPSZ0rGhJRCYQblQiOuJ62v9VABV0maVfmDTV/ErKPY/nSbYb6wJ2L4TKbmAgyq2cIbWhWI84UIxrhYPGY0PfWJvPjOqQxAnHHLMFMDJnXFRuP61MvwjOA6IKg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN6PR11MB8244.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(376002)(366004)(346002)(39860400002)(396003)(451199021)(966005)(66899021)(478600001)(83380400001)(55016003)(5660300002)(186003)(33656002)(71200400001)(4326008)(52536014)(30864003)(86362001)(7696005)(8676002)(8936002)(2906002)(41300700001)(316002)(122000001)(38100700002)(82960400001)(38070700005)(6506007)(19627235002)(26005)(66946007)(76116006)(54906003)(110136005)(9686003)(53546011)(66446008)(66556008)(66476007)(64756008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N25saFNQQm9RSlBPOENwMzl0V0RSQVJqSzlyK1RMamx3RDlyeWdtR2FadU9U?= =?utf-8?B?RXNmNGk1U0Q1cTNVSU9FYWtlT2w5N3FjWk81Q2U1U2Fna3c1QmVGU1FyMWZm?= =?utf-8?B?aVRnekJiOVJNTm8wSGVUV3NtQ2h1VEhrS3lTUVlBOE5wUUszMm9YYXY0dTNO?= =?utf-8?B?bGR0R3Z1RzJ4T2hYdGd6Y3M4LytNeE90NlZ4dTNiT09TdEFvV3ZTN2t0bXNq?= =?utf-8?B?aHdKWncrL1l3ZmVycmkvY3RoUS81dExqNmxQNUNUeE90ZXR1QUxqNmcwcU00?= =?utf-8?B?ZnVhbEtGT3BwTXJTR1g5dzhIL3dtK0ppdytkdXdXYS9uR3pNajQ3NnpaMjFH?= =?utf-8?B?NVBxelpqSmdxYWRMUVVWVGJHTkRsNytxSGNQYlRVVm5YS3pVajNyOENLS3E5?= =?utf-8?B?aWJCM2czSEI4VERQb0FWUmFIRDIvMkVET0NiMmFJVzJLamFCS1pZLzg1cUx5?= =?utf-8?B?a01IZTg0ZGVzb1B0d2h4YXNvc1lpa3lZMWtGK2NLL2lRcU1aY1h2NTU2VHRB?= =?utf-8?B?UjVUamlteE5HWFhNWWNSTEdWYUgyR1pva3NZMlVHNVA5Z2xucTI1WFczSlR4?= =?utf-8?B?S3ZlakZhb0Vsb1VtSXZoU3hyZjlySzR2WWlZdHhpaDVibzlLcTYwQzVIZlc1?= =?utf-8?B?TU5SUnFxVWpOanNTZ2E2Zkw1YStOZVRMbTRNNHNJdGRxUDVuNWpJcGhyK1A3?= =?utf-8?B?VWYwYkZyYkN2dVVkKzBwZUVKbFIwWGw1SFdMSzQrcm9saHNZZ1dkQUdTTW5P?= =?utf-8?B?dUNmSmZNc04rRmJDcU03S2pMM1h2U1JUNWJDYnRKQ1dHd2VjUDRSZ2NpeFRY?= =?utf-8?B?K05VSWZBWlo1ZHhKOFhhRUtzNGNJL21NM0E0cDZnbXhLeVRuR2cyVnBWTzlE?= =?utf-8?B?NUF4Nzd4YjRFcG1JMkF4TWdBVURkV2sraDBJVnJMaCt0eUtTeEJVYlprWWtF?= =?utf-8?B?VVFDVEtOaGovcXFzcExVaXlzeGVYS3V6dE12T3hCLzdFN0NBWm5ia1NIUzIv?= =?utf-8?B?cXFhNG5hQVRqcXBCdEhoa2ZOTmw2ZFZIR2pDaTRlNjVrSUlKaExsVzc5WEU4?= =?utf-8?B?MVJrRkxoclMxT21OZVNXNDhkMmF4Z1F1ekNXUG03NVJIeVZmeEdXK2NoSU5n?= =?utf-8?B?RHViR2lrS0pZOHM5QTRTTHd2T1cxYTJWMm1zbFR4NjJWWW9HNkwxb0dCdXRa?= =?utf-8?B?RnA0U0ZRVm83ZUFWajczU2pLajMvNmdEeVdOeXBVRGVsYjJTTyszT09ZODRC?= =?utf-8?B?ZER6QUhCMjRIaUtFVDE3M1BUQjZJZW81THh2NTJ1NElrdllSOVg3aTBsVHVC?= =?utf-8?B?OXc0VmtWdlpXVmQwbFVXUTdOK0p5U2J0MG9tQk9ydlVXTndGMVNWZFhBUFFo?= =?utf-8?B?K3l0bHpVSC92MkF4cHNJZVpuc0R4Yk1qdURyVjJEaVF6TFNUZGdndnY0ZkZ0?= =?utf-8?B?L2pLYytTN0NnMlJ3M0tKZEVSZ2hITURHOXBjelNHOHZYaUkrSWwyRGpnSC9H?= =?utf-8?B?MDRjS3R1bXpLdzY4alJ6R0E5V0NYMHVuRWxjTXlSZFA2Rk1tVjVHRms3L0dw?= =?utf-8?B?MXl2NUcvSTBDLy9MQ3BUT2tIVXVoTERDMGdDdnJYYXp2MnlTMG02R3pscHZX?= =?utf-8?B?ZzhwY1cxQ3l1R3kvQlhkWVdiMWUxQUxFTUMxOUhkZ1NCek1JSkpGZDdFUmdM?= =?utf-8?B?NGV0cVdPZFB5TzdMUmMrM09tL3FKNEhrRXhGdWxsSWFJUDQ4T2E1bjFseEZS?= =?utf-8?B?VmF3UGU2V3d2S1MwQm1xc0RYOFFSdjN1bVNYSW1XTXlJZFVKYUQwemZRTk81?= =?utf-8?B?ZXNUMWNBNFhZTnVCRlkvSDlKbjRIVGJ1QWdHYkpnTUhSb0RIV0FCOHJVVlRQ?= =?utf-8?B?aUFGZGQ0VHorVGwxalhQQmpGSXlWRit0VGIwZk5nZENOMmpzaGRqdEgyckhr?= =?utf-8?B?VEdCNXFPWndaZGN5VEFRMXJ2aEVoTzQ4ZHV4TXVCNFlndjRJTGg5cWlBdVBm?= =?utf-8?B?TkE3ZU0ydU1uWVNMM1BrWTNVdGFnV2toY2FZaVZ5eGZ0bGdFZmJwcDhVSFV2?= =?utf-8?B?Rmo0aUVHQjJLaTVKNzVFTU11R0toRnNzUnl6Yi96Z1JZZ0NXV3NWazBmOE1y?= =?utf-8?Q?JD0g=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc282148-562e-48de-868e-08db60e9966c X-MS-Exchange-CrossTenant-originalarrivaltime: 30 May 2023 08:40:57.0177 (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: KGaMcoF3fzPaCZusXMdt7INUt8obFTvSoHtfMoSoOx6w8GfLLahOB8Yq+uKelC/HcsrpS18aOspW8ZbQ+78HGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR11MB7526 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg PGFyZGJAa2VybmVsLm9yZz4NCj4gU2VudDogVHVlc2RheSwgTWF5IDMwLCAyMDIzIDM6NTIgUE0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPg0K PiBDYzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgR2VyZCBIb2ZmbWFubiA8 a3JheGVsQHJlZGhhdC5jb20+Ow0KPiBUYXlsb3IgQmVlYmUgPHRAdGF5bG9yYmVlYmUuY29tPjsg T2xpdmVyIFNtaXRoLURlbm55IDxvc2RAc21pdGgtDQo+IGRlbm55LmNvbT47IEJpLCBEYW5kYW4g PGRhbmRhbi5iaUBpbnRlbC5jb20+OyBHYW8sIExpbWluZw0KPiA8Z2FvbGltaW5nQGJ5b3NvZnQu Y29tLmNuPjsgS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsN Cj4gTGVpZiBMaW5kaG9sbSA8cXVpY19sbGluZGhvbEBxdWljaW5jLmNvbT47IE1pY2hhZWwgS3Vi YWNraQ0KPiA8bWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNvbT4NCj4gU3ViamVjdDogUmU6IFtl ZGsyLWRldmVsXSBbUkZDIFBBVENIIDA1LzExXSBNZGVNb2R1bGVQa2cvRHhlQ29yZTogVXNlDQo+ IG1lbW9yeSBtYXBwZWQgRlYgcHJvdG9jb2wgdG8gYXZvaWQgaW1hZ2UgY29weQ0KPiANCj4gT24g VHVlLCAzMCBNYXkgMjAyMyBhdCAwODoyMSwgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4gd3Jv dGU6DQo+ID4NCj4gPiBHZXRGaWxlQnVmZmVyQnlGaWxlUGF0aCgpIGFsd2F5cyByZXR1cm5zIGEg Y29weSBvZiBmaWxlIGJ1ZmZlciBldmVuIHdoZW4gdGhlIGZpbGUNCj4gPiBpcyBpbiBhIG1lbW9y eS1tYXBwZWQgZGV2aWNlLg0KPiA+IFNvLCB5b3VyIHBhdGNoIGFkZHMgYSBuZXcgaW1wbGVtZW50 YXRpb24gKGFic3RyYWN0ZWQgdGhyb3VnaCB0aGUgbmV3IE1NIEZWDQo+IHByb3RvY29sKSB0aGF0 IGNhbiBkaXJlY3RseSByZXR1cm4gdGhlIGZpbGUgbG9jYXRpb24gaW4gdGhlIE1NSU8gZGV2aWNl Lg0KPiA+DQo+ID4gU2V2ZXJhbCBjb21tZW50czoNCj4gPiAxLiBJIGFtIG5vdCBzdXJlIGlmIGFu eSBuZWdhdGl2ZSBpbXBhY3QgZHVlIHRvIHRoaXMgY2hhbmdlLiBGb3IgZXhhbXBsZTogb2xkDQo+ IGxvZ2ljIHJlYWRzIHRoZSBNTUlPIGRldmljZSBidXQgZG9lc24ndCBleGVjdXRlIGluIHRoZSBN TUlPIGRldmljZS4gRG9lcw0KPiBNTUlPIGRldmljZSBhbHdheXMgc3VwcG9ydCBleGVjdXRpb24g aW4gcGxhY2U/DQo+IA0KPiBBdCB0aGlzIHBvaW50LCB3ZSBhcmUgbm90IGV4ZWN1dGluZyBhbnl0 aGluZyBpbiBwbGFjZS4gVGhlIGJ1ZmZlciBpcw0KPiBvbmx5IHVzZWQgYnkgdGhlIFBFL0NPRkYg bG9hZGVyIHRvIGFjY2VzcyB0aGUgZmlsZSBjb250ZW50cywgYnV0IGl0DQo+IHN0aWxsIGNyZWF0 ZXMgdGhlIHNlY3Rpb25zIGluIG1lbW9yeSBhcyBiZWZvcmUsIGFuZCBjb3BpZXMgdGhlIGRhdGEN Cj4gaW50byB0aGVtLg0KPiANCj4gVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBnQlMtPkxvYWRpbWFn ZSgpIHdpdGggYSBidWZmZXIvc2l6ZSBvbmx5IHVzZXMNCj4gdGhlIGJ1ZmZlciBjb250ZW50cyB0 byBhY2Nlc3MgdGhlIGZpbGUgZGF0YSwgaXQgZG9lcyBub3QgZXhlY3V0ZSB0aGUNCj4gaW1hZ2Ug ZnJvbSB0aGUgYnVmZmVyLg0KDQpPSy4gDQoNCj4gDQo+ID4gMi4gSWYgdGhlIE1NRlYgcHJvdG9j b2wgaXMgb25seSBwcm9kdWNlZCBieSBEeGVDb3JlIGFuZCBjb25zdW1lZCBieQ0KPiBEeGVDb3Jl LCBjYW4gd2UganVzdCBpbXBsZW1lbnQgYSBsb2NhbCBmdW5jdGlvbiBpbnN0ZWFkPyBUaGUgY2hh bGxlbmdlIG1pZ2h0IGJlDQo+IGhvdyB0byBwYXNzIHRoZSBGVl9ERVZJQ0UgaW5zdGFuY2UgdG8g dGhlIGxvY2FsIGZ1bmN0aW9uLiBDYW4gd2UgImhhbmRsZSIgdGhlDQo+ICJGaXJtd2FyZVZvbHVt ZTIiIHByb3RvY29sIGZyb20gdGhlIEhhbmRsZSBmaXJzdCBhbmQgdXNlIENSX0ZST01fVEhJUygp DQo+IG1hY3JvIHRvIHJldHJpZXZlIHRoZSBGVl9ERVZJQ0UgcG9pbnRlcj8gVGhpcyBoZWxwcyB0 byBub3QgYWRkIHRoZSBNTUZWDQo+IHByb3RvY29sLCBsZXR0aW5nIHRoZSBjaGFuZ2UgYSBwdXJl IER4ZUNvcmUgaW50ZXJuYWwgdGhpbmcuDQo+ID4NCj4gDQo+IFRoZSBsb2FkZXIgZG9lcyBub3Qg a25vdyB3aGV0aGVyIHRoZSBGaXJtd2FyZVZvbHVtZTIgcHJvdG9jb2wgd2FzDQo+IHByb2R1Y2Vk IGJ5IERYRSBjb3JlIG9yIGJ5IHNvbWUgb3RoZXIgY29tcG9uZW50LCBzbyB3ZSBjYW5ub3QgYXNz dW1lDQo+IHRoYXQgQ1JfRlJPTV9USElTKCkgaXMgdXNhYmxlLg0KDQpJIHNlZS4gSG93IGFib3V0 Og0KYS4gRGVmaW5lIGEgR1VJRCBpbiBEeGVDb3JlIG1vZHVsZSBpbnRlcm5hbA0KYi4gSW5zdGFs bCB0aGF0IEdVSUQgaW4gdGhlIEZWIGhhbmRsZSAodGhlIGFjY29yZGluZ2x5IGluc3RhbmNlIG9m IHRoYXQgR1VJRCBjYW4gYmUgc2ltcGx5IE5VTEwpIA0KICAgIGFzIGEgc2lnbmF0dXJlIHRvIHRl bGwgdGhlIEZWIGlzIHByb2R1Y2VkIGJ5IER4ZUNvcmUNCmMuIEltcGxlbWVudCBhIGxvY2FsIGZ1 bmN0aW9uIHRoYXQgcmV0dXJuIGxvY2F0aW9uIGluc2lkZSB0aGUgRlYgd2hlbiB0aGUgRnZIYW5k bGUgaGFzIHRoZQ0KICAgIHByaXZhdGUgR1VJRCBpbnN0YWxsZWQuDQoNCg0KPiANCj4gDQo+IA0K PiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEFyZCBCaWVzaGV1 dmVsIDxhcmRiQGtlcm5lbC5vcmc+DQo+ID4gPiBTZW50OiBNb25kYXksIE1heSAyOSwgMjAyMyA2 OjE3IFBNDQo+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+IENjOiBBcmQgQmll c2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IFlh bywNCj4gSmlld2VuDQo+ID4gPiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBHZXJkIEhvZmZtYW5u IDxrcmF4ZWxAcmVkaGF0LmNvbT47IFRheWxvciBCZWViZQ0KPiA+ID4gPHRAdGF5bG9yYmVlYmUu Y29tPjsgT2xpdmVyIFNtaXRoLURlbm55IDxvc2RAc21pdGgtZGVubnkuY29tPjsgQmksDQo+IERh bmRhbg0KPiA+ID4gPGRhbmRhbi5iaUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8Z2FvbGltaW5n QGJ5b3NvZnQuY29tLmNuPjsgS2lubmV5LA0KPiA+ID4gTWljaGFlbCBEIDxtaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT47IExlaWYgTGluZGhvbG0NCj4gPiA+IDxxdWljX2xsaW5kaG9sQHF1aWNp bmMuY29tPjsgTWljaGFlbCBLdWJhY2tpDQo+IDxtaWt1YmFja0BsaW51eC5taWNyb3NvZnQuY29t Pg0KPiA+ID4gU3ViamVjdDogW1JGQyBQQVRDSCAwNS8xMV0gTWRlTW9kdWxlUGtnL0R4ZUNvcmU6 IFVzZSBtZW1vcnkgbWFwcGVkDQo+IEZWDQo+ID4gPiBwcm90b2NvbCB0byBhdm9pZCBpbWFnZSBj b3B5DQo+ID4gPg0KPiA+ID4gVXNlIHRoZSBtZW1vcnkgbWFwcGVkIEZWIHByb3RvY29sIHRvIG9i dGFpbiB0aGUgZXhpc3RpbmcgbG9jYXRpb24gaW4NCj4gPiA+IG1lbW9yeSBhbmQgdGhlIHNpemUg b2YgYW4gaW1hZ2UgYmVpbmcgbG9hZGVkIGZyb20gYSBmaXJtd2FyZSB2b2x1bWUuDQo+ID4gPiBU aGlzIHJlbW92ZXMgdGhlIG5lZWQgdG8gZG8gYSBtZW1jb3B5IG9mIHRoZSBmaWxlIGRhdGEuDQo+ ID4gPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9y Zz4NCj4gPiA+IC0tLQ0KPiA+ID4gIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9EeGVNYWluLmggICAg ICAgICAgICAgICAgfCAgIDEgKw0KPiA+ID4gIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9EeGVNYWlu LmluZiAgICAgICAgICAgICAgfCAgIDMgKw0KPiA+ID4gIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9J bWFnZS9JbWFnZS5jICAgICAgICAgICAgfCAxMTEgKysrKysrKysrKysrKysrKystDQo+IC0tDQo+ ID4gPiAgTWRlTW9kdWxlUGtnL0luY2x1ZGUvUHJvdG9jb2wvTWVtb3J5TWFwcGVkRnYuaCB8ICA1 OSArKysrKysrKysrKw0KPiA+ID4gIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjICAgICAg ICAgICAgICAgICAgfCAgIDMgKw0KPiA+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTYzIGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9NZGVNb2R1 bGVQa2cvQ29yZS9EeGUvRHhlTWFpbi5oDQo+ID4gPiBiL01kZU1vZHVsZVBrZy9Db3JlL0R4ZS9E eGVNYWluLmgNCj4gPiA+IGluZGV4IDQzZGFhMDM3YmU0NDExNTAuLmE2OTViNDU3Yzc5YjY1YmIg MTAwNjQ0DQo+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvQ29yZS9EeGUvRHhlTWFpbi5oDQo+ID4g PiArKysgYi9NZGVNb2R1bGVQa2cvQ29yZS9EeGUvRHhlTWFpbi5oDQo+ID4gPiBAQCAtNDUsNiAr NDUsNyBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ ID4gICNpbmNsdWRlIDxQcm90b2NvbC9IaWlQYWNrYWdlTGlzdC5oPg0KPiA+ID4NCj4gPiA+ICAj aW5jbHVkZSA8UHJvdG9jb2wvU21tQmFzZTIuaD4NCj4gPiA+DQo+ID4gPiAgI2luY2x1ZGUgPFBy b3RvY29sL1BlQ29mZkltYWdlRW11bGF0b3IuaD4NCj4gPiA+DQo+ID4gPiArI2luY2x1ZGUgPFBy b3RvY29sL01lbW9yeU1hcHBlZEZ2Lmg+DQo+ID4gPg0KPiA+ID4gICNpbmNsdWRlIDxHdWlkL01l bW9yeVR5cGVJbmZvcm1hdGlvbi5oPg0KPiA+ID4NCj4gPiA+ICAjaW5jbHVkZSA8R3VpZC9GaXJt d2FyZUZpbGVTeXN0ZW0yLmg+DQo+ID4gPg0KPiA+ID4gICNpbmNsdWRlIDxHdWlkL0Zpcm13YXJl RmlsZVN5c3RlbTMuaD4NCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0Nv cmUvRHhlL0R4ZU1haW4uaW5mDQo+ID4gPiBiL01kZU1vZHVsZVBrZy9Db3JlL0R4ZS9EeGVNYWlu LmluZg0KPiA+ID4gaW5kZXggMzVkNWJmMGRlZTZmN2YzZi4uYTcxNzVjYjM2NGI5YjVkZSAxMDA2 NDQNCj4gPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9Db3JlL0R4ZS9EeGVNYWluLmluZg0KPiA+ID4g KysrIGIvTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0R4ZU1haW4uaW5mDQo+ID4gPiBAQCAtMTUzLDYg KzE1Myw5IEBAIFtQcm90b2NvbHNdDQo+ID4gPiAgICBnRWZpTG9hZGVkSW1hZ2VEZXZpY2VQYXRo UHJvdG9jb2xHdWlkICAgICAgICAgIyMgUFJPRFVDRVMNCj4gPiA+DQo+ID4gPiAgICBnRWZpSGlp UGFja2FnZUxpc3RQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgIyMgU09NRVRJTUVTX1BST0RV Q0VTDQo+ID4gPg0KPiA+ID4gICAgZ0VmaVNtbUJhc2UyUHJvdG9jb2xHdWlkICAgICAgICAgICAg ICAgICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1FUw0KPiA+ID4NCj4gPiA+ICsgICMjIFBST0RV Q0VTDQo+ID4gPg0KPiA+ID4gKyAgIyMgQ09OU1VNRVMNCj4gPiA+DQo+ID4gPiArICBnRWRraWlN ZW1vcnlNYXBwZWRGdlByb3RvY29sR3VpZA0KPiA+ID4NCj4gPiA+ICAgIGdFZGtpaVBlQ29mZklt YWdlRW11bGF0b3JQcm90b2NvbEd1aWQgICAgICAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMNCj4g PiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICAgICMgQXJjaCBQcm90b2NvbHMNCj4gPiA+DQo+ID4g PiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0ltYWdlL0ltYWdlLmMNCj4gPiA+ IGIvTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0ltYWdlL0ltYWdlLmMNCj4gPiA+IGluZGV4IGYzMGUz NjkzNzBhMDk2MDkuLjNkZmFiNDgyOWIzY2ExN2YgMTAwNjQ0DQo+ID4gPiAtLS0gYS9NZGVNb2R1 bGVQa2cvQ29yZS9EeGUvSW1hZ2UvSW1hZ2UuYw0KPiA+ID4gKysrIGIvTWRlTW9kdWxlUGtnL0Nv cmUvRHhlL0ltYWdlL0ltYWdlLmMNCj4gPiA+IEBAIC0xMDQzLDYgKzEwNDMsNzYgQEAgQ29yZVVu bG9hZEFuZENsb3NlSW1hZ2UgKA0KPiA+ID4gICAgQ29yZUZyZWVQb29sIChJbWFnZSk7DQo+ID4g Pg0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4g PiArICBHZXQgdGhlIGltYWdlIGZpbGUgZGF0YSBhbmQgc2l6ZSBkaXJlY3RseSBmcm9tIGEgbWVt b3J5IG1hcHBlZCBGVg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPiArICBJZiBGaWxlUGF0 aCBpcyBOVUxMLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQo+ID4gPg0KPiA+ID4gKyAgSWYgRmls ZVNpemUgaXMgTlVMTCwgdGhlbiBOVUxMIGlzIHJldHVybmVkLg0KPiA+ID4NCj4gPiA+ICsgIElm IEF1dGhlbnRpY2F0aW9uU3RhdHVzIGlzIE5VTEwsIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCj4g PiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBGdkhhbmRsZSAg ICAgICAgICAgICBUaGUgZmlybXdhcmUgdm9sdW1lIGhhbmRsZQ0KPiA+ID4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gICAgICAgRmlsZVBhdGggICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRl dmljZSBwYXRoIG9mIHRoZSBmaWxlDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIGFic3RyYWN0ZWQgdG8gdGhlIGZpbGUgYnVmZmVy Lg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgRmlsZVNpemUgICAgICAgICAgICAg VGhlIHBvaW50ZXIgdG8gdGhlIHNpemUgb2YgdGhlIGFic3RyYWN0ZWQNCj4gPiA+DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgYnVmZmVyLg0KPiA+ ID4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgQXV0aGVudGljYXRpb25TdGF0dXMgUG9pbnRl ciB0byB0aGUgYXV0aGVudGljYXRpb24gc3RhdHVzLg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ ID4gPiArICBAcmV0dmFsIE5VTEwgICBGaWxlUGF0aCBpcyBOVUxMLCBvciBGaWxlU2l6ZSBpcyBO VUxMLCBvciBBdXRoZW50aWNhdGlvblN0YXR1cw0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAg ICAgIGlzIE5VTEwsIG9yIHRoZSBmaWxlIGlzIG5vdCBtZW1vcnkgbWFwcGVkDQo+ID4gPg0KPiA+ ID4gKyAgQHJldHZhbCBvdGhlciAgVGhlIGFic3RyYWN0ZWQgZmlsZSBidWZmZXIuDQo+ID4gPg0K PiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+ICtTVEFUSUMNCj4gPiA+DQo+ID4gPiArVk9JRCAqDQo+ ID4gPg0KPiA+ID4gK0dldEZpbGVGcm9tTWVtb3J5TWFwcGVkRnYgKA0KPiA+ID4NCj4gPiA+ICsg IElOICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIEZ2SGFuZGxlLA0KPiA+ID4NCj4g PiA+ICsgIElOICBDT05TVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpGaWxlUGF0aCwNCj4g PiA+DQo+ID4gPiArICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAqRmlsZVNp emUsDQo+ID4gPg0KPiA+ID4gKyAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg KkF1dGhlbnRpY2F0aW9uU3RhdHVzDQo+ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+ICt7 DQo+ID4gPg0KPiA+ID4gKyAgRURLSUlfTUVNT1JZX01BUFBFRF9GVl9QUk9UT0NPTCAgKk1lbU1h cHBlZEZ2Ow0KPiA+ID4NCj4gPiA+ICsgIENPTlNUIEVGSV9HVUlEICAgICAgICAgICAgICAgICAg ICpOYW1lR3VpZDsNCj4gPiA+DQo+ID4gPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAg ICAgICBBZGRyZXNzOw0KPiA+ID4NCj4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgaWYgKChGaWxl UGF0aCA9PSBOVUxMKSB8fA0KPiA+ID4NCj4gPiA+ICsgICAgICAoRmlsZVNpemUgPT0gTlVMTCkg fHwNCj4gPiA+DQo+ID4gPiArICAgICAgKEF1dGhlbnRpY2F0aW9uU3RhdHVzID09IE5VTEwpKQ0K PiA+ID4NCj4gPiA+ICsgIHsNCj4gPiA+DQo+ID4gPiArICAgIHJldHVybiBOVUxMOw0KPiA+ID4N Cj4gPiA+ICsgIH0NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgTmFtZUd1aWQgPSBF ZmlHZXROYW1lR3VpZEZyb21Gd1ZvbERldmljZVBhdGhOb2RlICgNCj4gPiA+DQo+ID4gPiArICAg ICAgICAgICAgICAgKENPTlNUIE1FRElBX0ZXX1ZPTF9GSUxFUEFUSF9ERVZJQ0VfUEFUSCAqKUZp bGVQYXRoKTsNCj4gPiA+DQo+ID4gPiArICBpZiAoTmFtZUd1aWQgPT0gTlVMTCkgew0KPiA+ID4N Cj4gPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPg0KPiA+ID4gKyAgfQ0KPiA+ID4NCj4gPiA+ ICsNCj4gPiA+DQo+ID4gPiArICBTdGF0dXMgPSBnQlMtPkhhbmRsZVByb3RvY29sICgNCj4gPiA+ DQo+ID4gPiArICAgICAgICAgICAgICAgICAgRnZIYW5kbGUsDQo+ID4gPg0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICZnRWRraWlNZW1vcnlNYXBwZWRGdlByb3RvY29sR3VpZCwNCj4gPiA+DQo+ ID4gPiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopJk1lbU1hcHBlZEZ2DQo+ID4gPg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gPg0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ID4NCj4gPiA+ICsgICAgQVNTRVJUIChTdGF0dXMgPT0gRUZJX1VOU1VQ UE9SVEVEKTsNCj4gPiA+DQo+ID4gPiArICAgIHJldHVybiBOVUxMOw0KPiA+ID4NCj4gPiA+ICsg IH0NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgU3RhdHVzID0gTWVtTWFwcGVkRnYt PkdldExvY2F0aW9uQW5kU2l6ZSAoDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgTWVtTWFwcGVkRnYsDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgTmFtZUd1aWQsDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJ X1NFQ1RJT05fUEUzMiwNCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAm QWRkcmVzcywNCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlU2l6 ZSwNCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGlv blN0YXR1cw0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4g Pg0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSB8fCAoQWRkcmVzcyA+IChNQVhfQURE UkVTUyAtICpGaWxlU2l6ZSkpKSB7DQo+ID4gPg0KPiA+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4g PiA+DQo+ID4gPiArICB9DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgIHJldHVybiAo Vk9JRCAqKShVSU5UTilBZGRyZXNzOw0KPiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+ICAvKioNCj4gPiA+DQo+ID4gPiAgICBMb2FkcyBhbiBFRkkgaW1hZ2UgaW50 byBtZW1vcnkgYW5kIHJldHVybnMgYSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+ID4NCj4gPiA+ DQo+ID4gPg0KPiA+ID4gQEAgLTExNjQsNiArMTIzNCwxNiBAQCBDb3JlTG9hZEltYWdlQ29tbW9u ICgNCj4gPiA+ICAgICAgU3RhdHVzID0gQ29yZUxvY2F0ZURldmljZVBhdGggKCZnRWZpRmlybXdh cmVWb2x1bWUyUHJvdG9jb2xHdWlkLA0KPiA+ID4gJkhhbmRsZUZpbGVQYXRoLCAmRGV2aWNlSGFu ZGxlKTsNCj4gPiA+DQo+ID4gPiAgICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g Pg0KPiA+ID4gICAgICAgIEltYWdlSXNGcm9tRnYgPSBUUlVFOw0KPiA+ID4NCj4gPiA+ICsNCj4g PiA+DQo+ID4gPiArICAgICAgLy8NCj4gPiA+DQo+ID4gPiArICAgICAgLy8gSWYgcG9zc2libGUs IHVzZSB0aGUgbWVtb3J5IG1hcHBlZCBmaWxlIGltYWdlIGRpcmVjdGx5LCByYXRoZXIgdGhhbg0K PiA+ID4gY29weWluZyBpdCBpbnRvIGEgYnVmZmVyDQo+ID4gPg0KPiA+ID4gKyAgICAgIC8vDQo+ ID4gPg0KPiA+ID4gKyAgICAgIEZIYW5kLlNvdXJjZSA9IEdldEZpbGVGcm9tTWVtb3J5TWFwcGVk RnYgKA0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIERldmljZUhhbmRsZSwN Cj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVGaWxlUGF0aCwNCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAmRkhhbmQuU291cmNlU2l6ZSwNCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAmQXV0aGVudGljYXRpb25TdGF0dXMN Cj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4NCj4gPiA+ICAg ICAgfSBlbHNlIHsNCj4gPiA+DQo+ID4gPiAgICAgICAgSGFuZGxlRmlsZVBhdGggPSBGaWxlUGF0 aDsNCj4gPiA+DQo+ID4gPiAgICAgICAgU3RhdHVzICAgICAgICAgPSBDb3JlTG9jYXRlRGV2aWNl UGF0aCAoJmdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkLA0KPiA+ID4gJkhhbmRsZUZp bGVQYXRoLCAmRGV2aWNlSGFuZGxlKTsNCj4gPiA+DQo+ID4gPiBAQCAtMTE4NywyMSArMTI2Nywy NCBAQCBDb3JlTG9hZEltYWdlQ29tbW9uICgNCj4gPiA+ICAgICAgLy8NCj4gPiA+DQo+ID4gPiAg ICAgIC8vIEdldCB0aGUgc291cmNlIGZpbGUgYnVmZmVyIGJ5IGl0cyBkZXZpY2UgcGF0aC4NCj4g PiA+DQo+ID4gPiAgICAgIC8vDQo+ID4gPg0KPiA+ID4gLSAgICBGSGFuZC5Tb3VyY2UgPSBHZXRG aWxlQnVmZmVyQnlGaWxlUGF0aCAoDQo+ID4gPg0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAg IEJvb3RQb2xpY3ksDQo+ID4gPg0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRo LA0KPiA+ID4NCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAmRkhhbmQuU291cmNlU2l6ZSwN Cj4gPiA+DQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgJkF1dGhlbnRpY2F0aW9uU3RhdHVz DQo+ID4gPg0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPg0KPiA+ID4gICAg ICBpZiAoRkhhbmQuU291cmNlID09IE5VTEwpIHsNCj4gPiA+DQo+ID4gPiAtICAgICAgU3RhdHVz ID0gRUZJX05PVF9GT1VORDsNCj4gPiA+DQo+ID4gPiAtICAgIH0gZWxzZSB7DQo+ID4gPg0KPiA+ ID4gLSAgICAgIEZIYW5kLkZyZWVCdWZmZXIgPSBUUlVFOw0KPiA+ID4NCj4gPiA+IC0gICAgICBp ZiAoSW1hZ2VJc0Zyb21Mb2FkRmlsZSkgew0KPiA+ID4NCj4gPiA+IC0gICAgICAgIC8vDQo+ID4g Pg0KPiA+ID4gLSAgICAgICAgLy8gTG9hZEZpbGUgKCkgbWF5IGNhdXNlIHRoZSBkZXZpY2UgcGF0 aCBvZiB0aGUgSGFuZGxlIGJlIHVwZGF0ZWQuDQo+ID4gPg0KPiA+ID4gLSAgICAgICAgLy8NCj4g PiA+DQo+ID4gPiAtICAgICAgICBPcmlnaW5hbEZpbGVQYXRoID0gQXBwZW5kRGV2aWNlUGF0aCAo RGV2aWNlUGF0aEZyb21IYW5kbGUNCj4gPiA+IChEZXZpY2VIYW5kbGUpLCBOb2RlKTsNCj4gPiA+ DQo+ID4gPiArICAgICAgRkhhbmQuU291cmNlID0gR2V0RmlsZUJ1ZmZlckJ5RmlsZVBhdGggKA0K PiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIEJvb3RQb2xpY3ksDQo+ID4gPg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgsDQo+ID4gPg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgJkZIYW5kLlNvdXJjZVNpemUsDQo+ID4gPg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgJkF1dGhlbnRpY2F0aW9uU3RhdHVzDQo+ID4gPg0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4g KyAgICAgIGlmIChGSGFuZC5Tb3VyY2UgPT0gTlVMTCkgew0KPiA+ID4NCj4gPiA+ICsgICAgICAg IFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ID4gPg0KPiA+ID4gKyAgICAgIH0gZWxzZSB7DQo+ ID4gPg0KPiA+ID4gKyAgICAgICAgRkhhbmQuRnJlZUJ1ZmZlciA9IFRSVUU7DQo+ID4gPg0KPiA+ ID4gKyAgICAgICAgaWYgKEltYWdlSXNGcm9tTG9hZEZpbGUpIHsNCj4gPiA+DQo+ID4gPiArICAg ICAgICAgIC8vDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAvLyBMb2FkRmlsZSAoKSBtYXkgY2F1 c2UgdGhlIGRldmljZSBwYXRoIG9mIHRoZSBIYW5kbGUgYmUgdXBkYXRlZC4NCj4gPiA+DQo+ID4g PiArICAgICAgICAgIC8vDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICBPcmlnaW5hbEZpbGVQYXRo ID0gQXBwZW5kRGV2aWNlUGF0aCAoRGV2aWNlUGF0aEZyb21IYW5kbGUNCj4gPiA+IChEZXZpY2VI YW5kbGUpLCBOb2RlKTsNCj4gPiA+DQo+ID4gPiArICAgICAgICB9DQo+ID4gPg0KPiA+ID4gICAg ICAgIH0NCj4gPiA+DQo+ID4gPiAgICAgIH0NCj4gPiA+DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9JbmNsdWRlL1Byb3RvY29sL01lbW9yeU1hcHBl ZEZ2LmgNCj4gPiA+IGIvTWRlTW9kdWxlUGtnL0luY2x1ZGUvUHJvdG9jb2wvTWVtb3J5TWFwcGVk RnYuaA0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAw MDAwMDAuLjgyMTAwOTEyMjExM2E2NTgNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBi L01kZU1vZHVsZVBrZy9JbmNsdWRlL1Byb3RvY29sL01lbW9yeU1hcHBlZEZ2LmgNCj4gPiA+IEBA IC0wLDAgKzEsNTkgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+DQo+ID4gPiArICBQcm90b2Nv bCB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgZmlsZXMgaW4gbWVtb3J5IG1hcHBlZCBmaXJt d2FyZQ0KPiA+ID4gdm9sdW1lcw0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPiArICBDb3B5 cmlnaHQgKGMpIDIwMjMsIEdvb2dsZSBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPiArKiovDQo+ID4g Pg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsjaWZuZGVmIEVES0lJX01FTU9SWV9NQVBQRURfRlZf SF8NCj4gPiA+DQo+ID4gPiArI2RlZmluZSBFREtJSV9NRU1PUllfTUFQUEVEX0ZWX0hfDQo+ID4g Pg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsjZGVmaW5lIEVES0lJX01FTU9SWV9NQVBQRURfRlZf UFJPVE9DT0xfR1VJRCBcDQo+ID4gPg0KPiA+ID4gKyAgeyAweGI5YmZhOTczLCAweDUzODQsIDB4 NDQxZSwgeyAweGE0LCAweGU3LCAweDIwLCAweGU2LCAweDVkLCAweGFmLCAweDJlLA0KPiA+ID4g MHgwZiB9IH0NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gK3R5cGVkZWYgc3RydWN0IF9F REtJSV9NRU1PUllfTUFQUEVEX0ZWX1BST1RPQ09MDQo+ID4gPiBFREtJSV9NRU1PUllfTUFQUEVE X0ZWX1BST1RPQ09MOw0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPiArLy8NCj4gPiA+DQo+ ID4gPiArLy8gRnVuY3Rpb24gUHJvdG90eXBlcw0KPiA+ID4NCj4gPiA+ICsvLw0KPiA+ID4NCj4g PiA+ICsNCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4gKyAgR2V0IHRoZSBwaHlzaWNh bCBhZGRyZXNzIGFuZCBzaXplIG9mIGEgZmlsZSdzIHNlY3Rpb24gaW4gYSBtZW1vcnkgbWFwcGVk IEZWDQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAg ICAgICAgVGhlIHByb3RvY29sIHBvaW50ZXINCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBO YW1lR3VpZCAgICAgIFRoZSBuYW1lIEdVSUQgb2YgdGhlIGZpbGUNCj4gPiA+DQo+ID4gPiArICBA cGFyYW1baW5dICBTZWN0aW9uVHlwZSAgIFRoZSBmaWxlIHNlY3Rpb24gZnJvbSB3aGljaCB0byBy ZXRyaWV2ZSBhZGRyZXNzDQo+IGFuZA0KPiA+ID4gc2l6ZQ0KPiA+ID4NCj4gPiA+ICsgIEBwYXJh bVtvdXRdIEZpbGVBZGRyZXNzICAgVGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGZpbGUNCj4g PiA+DQo+ID4gPiArICBAcGFyYW1bb3V0XSBGaWxlU2l6ZSAgICAgIFRoZSBzaXplIG9mIHRoZSBm aWxlDQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW291dF0gQXV0aFN0YXR1cyAgICBUaGUgYXV0aGVu dGljYXRpb24gc3RhdHVzIGFzc29jaWF0ZWQgd2l0aCB0aGUNCj4gZmlsZQ0KPiA+ID4NCj4gPiA+ ICsNCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgSW5mb3Jt YXRpb24gYWJvdXQgdGhlIGZpbGUgd2FzIHJldHJpZXZlZA0KPiA+ID4gc3VjY2Vzc2Z1bGx5Lg0K PiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBGaWxlQWRkcmVz cyB3YXMgTlVMTCwgRmlsZVNpemUgd2FzDQo+IE5VTEwsDQo+ID4gPiBBdXRoU3RhdHVzDQo+ID4g Pg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBOVUxMLg0KPiA+ ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgICBObyBzZWN0aW9uIG9m IHRoZSBzcGVjaWZpZWQgdHlwZSBjb3VsZCBiZQ0KPiA+ID4gbG9jYXRlZCBpbg0KPiA+ID4NCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3BlY2lmaWVkIGZpbGUu DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPiArdHlwZWRl Zg0KPiA+ID4NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPg0KPiA+ID4gKyhFRklBUEkgKkdFVF9M T0NBVElPTl9BTkRfU0laRSkoDQo+ID4gPg0KPiA+ID4gKyAgSU4gIEVES0lJX01FTU9SWV9NQVBQ RURfRlZfUFJPVE9DT0wgICpUaGlzLA0KPiA+ID4NCj4gPiA+ICsgIElOICBDT05TVCBFRklfR1VJ RCAgICAgICAgICAgICAgICAgICAqTmFtZUd1aWQsDQo+ID4gPg0KPiA+ID4gKyAgSU4gIEVGSV9T RUNUSU9OX1RZUEUgICAgICAgICAgICAgICAgIFNlY3Rpb25UeXBlLA0KPiA+ID4NCj4gPiA+ICsg IE9VVCBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgICAgICAqRmlsZUFkZHJlc3MsDQo+ID4g Pg0KPiA+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICpGaWxlU2l6 ZSwNCj4gPiA+DQo+ID4gPiArICBPVVQgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAg KkF1dGhTdGF0dXMNCj4gPiA+DQo+ID4gPiArICApOw0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ ID4gPiArLy8NCj4gPiA+DQo+ID4gPiArLy8gUHJvdG9jb2wgaW50ZXJmYWNlIHN0cnVjdHVyZQ0K PiA+ID4NCj4gPiA+ICsvLw0KPiA+ID4NCj4gPiA+ICtzdHJ1Y3QgX0VES0lJX01FTU9SWV9NQVBQ RURfRlZfUFJPVE9DT0wgew0KPiA+ID4NCj4gPiA+ICsgIEdFVF9MT0NBVElPTl9BTkRfU0laRSAg IEdldExvY2F0aW9uQW5kU2l6ZTsNCj4gPiA+DQo+ID4gPiArfTsNCj4gPiA+DQo+ID4gPiArDQo+ ID4gPg0KPiA+ID4gK2V4dGVybiBFRklfR1VJRCAgZ0Vka2lpTWVtb3J5TWFwcGVkRnZQcm90b2Nv bEd1aWQ7DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsjZW5kaWYNCj4gPiA+DQo+ID4g PiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+IGIvTWRl TW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+IGluZGV4IGQ2NWRhZTE4YWE4MWU1Njku LjJkNzJhYzczM2Q4MjE5NWUgMTAwNjQ0DQo+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvTWRlTW9k dWxlUGtnLmRlYw0KPiA+ID4gKysrIGIvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4g PiA+IEBAIC02NzksNiArNjc5LDkgQEAgW1Byb3RvY29sc10NCj4gPiA+ICAgICMjIEluY2x1ZGUv UHJvdG9jb2wvUGxhdGZvcm1Cb290TWFuYWdlci5oDQo+ID4gPg0KPiA+ID4gICAgZ0Vka2lpUGxh dGZvcm1Cb290TWFuYWdlclByb3RvY29sR3VpZCA9IHsgMHhhYTE3YWRkNCwgMHg3NTZjLCAweDQ2 MGQsDQo+ID4gPiB7IDB4OTQsIDB4YjgsIDB4NDMsIDB4ODgsIDB4ZDcsIDB4ZmIsIDB4M2UsIDB4 NTkgfSB9DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAjIyBJbmNsdWRlL1Byb3RvY29s L01lbW9yeU1hcHBlZEZ2LmgNCj4gPiA+DQo+ID4gPiArICBnRWRraWlNZW1vcnlNYXBwZWRGdlBy b3RvY29sR3VpZCA9IHsgMHhiOWJmYTk3MywgMHg1Mzg0LCAweDQ0MWUsDQo+IHsgMHhhNCwNCj4g PiA+IDB4ZTcsIDB4MjAsIDB4ZTYsIDB4NWQsIDB4YWYsIDB4MmUsIDB4MGYgfSB9DQo+ID4gPg0K PiA+ID4gKw0KPiA+ID4NCj4gPiA+ICAjDQo+ID4gPg0KPiA+ID4gICMgW0Vycm9yLmdFZmlNZGVN b2R1bGVQa2dUb2tlblNwYWNlR3VpZF0NCj4gPiA+DQo+ID4gPiAgIyAgIDB4ODAwMDAwMDEgfCBJ bnZhbGlkIHZhbHVlIHByb3ZpZGVkLg0KPiA+ID4NCj4gPiA+IC0tDQo+ID4gPiAyLjM5LjINCj4g Pg0KPiA+DQo+ID4NCj4gPiANCj4gPg0KPiA+DQo=