From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web10.5984.1676426399242553474 for ; Tue, 14 Feb 2023 17:59:59 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=X52+Rvnt; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676426399; x=1707962399; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=xJv818mED8ts/2dTuy2cU0NczlMLJacERiv2b9pudxE=; b=X52+RvntjkCthT7EKnEzkkoyci5cnhnnQf4WciJi1fyT5ceRZmh9dk3i yl3A6Hhc7gJ0WdeYffWUuszQ6mbt8ao8oKhZ1ONxhqIqAMV5TNRQTcyf7 s+yUe2KRhZGFS1FWnfrTauN5HnjMYm5ss6CwwOyCfbeJB3JSZbWzCrJSM Q73mDdrt4U1mWDByHIhk224CVUg2KFvtAtRCyUazXHk7ydkdHcA7fPCUw uLluGfhFY3hDcg3zTAIOEKTlR2ENz7EoO+MTu5xvTqShmPBOnYslNJ3N2 M2CZXhIvf292trXgFylxFawcqHVF+K9szg0GR0dyWP0JZUJy1OZPUCBUd w==; X-IronPort-AV: E=McAfee;i="6500,9779,10621"; a="333459079" X-IronPort-AV: E=Sophos;i="5.97,298,1669104000"; d="scan'208";a="333459079" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Feb 2023 17:59:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10621"; a="662756409" X-IronPort-AV: E=Sophos;i="5.97,298,1669104000"; d="scan'208";a="662756409" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga007.jf.intel.com with ESMTP; 14 Feb 2023 17:59:58 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Tue, 14 Feb 2023 17:59:58 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Tue, 14 Feb 2023 17:59:58 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.171) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Tue, 14 Feb 2023 17:59:57 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZxtC7R60NDEdr+b/+bvnTdejn+2h1W2XHgzCpiI/Xa00gnZjANQmCdzks0E7qg/Wq9AevSAAWYhEZ3hTqCkE32fX0v7NWK+yrci7QppKinjme8sFmlxGLOJ88lWFBTALDB0Lmq4CpjRIBYZVtLNbYKVDEOjwENeE9QFvv60Dp+S5MEQoZak3TzfnJiahaoR6+YyfOzHsPtEvYCKWBjbH4auzokHyfISaOe3wq8eOaqQsg9fzB7gPLPi4QL8XUZ+QYT7+ga1NpAuuJg/J7Vj3cir761r6XsTTPPZRpEm/TqcLL2WzwcVLe8pTcws9uNMoeaB8Fo0x0LnzfrZ09cYLbw== 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=xJv818mED8ts/2dTuy2cU0NczlMLJacERiv2b9pudxE=; b=GT6Cd3kMWi8PekRhscJAP0x905W+qt2aF7hrI1bU/dZsmbSeyzB82tS3l7QWpT4VyHTIS7GWfYZwLSdPF/YFnVIJWsZqJo7FCJObtB1RxZ19uTM7fJwUyXndPAX2jm5jgxfwP6a8TlkN09eD6+6jW6EYo4SkLH9cQELi0+4NUMhDwIYzFuLdqPu6JHB8CMK4npUP+S7fB3qeFgyJmwXQnEuA7L2YSXqCYuNB61GjX53tGavRNfhzb3Vi8R8uNIIg4rbFl6/QY0pGF7jeuy19IaJxBR7K6TBX6I4hpvPmm0JhlBCpQG5FBNjskhi890cyUwcgK89lUqQnb6RGxCqR8w== 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 CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by DS0PR11MB7788.namprd11.prod.outlook.com (2603:10b6:8:f5::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.22; Wed, 15 Feb 2023 01:59:55 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::c4d0:989a:e319:fe68]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::c4d0:989a:e319:fe68%5]) with mapi id 15.20.6086.026; Wed, 15 Feb 2023 01:59:55 +0000 From: "Michael D Kinney" To: Jeff Brasen , "devel@edk2.groups.io" , "Demeter, Miki" CC: "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v2] MdeModulePkg/EsrtFmpDxe: Support multiple devices with 0 HardwareInstance Thread-Topic: [edk2-devel] [PATCH v2] MdeModulePkg/EsrtFmpDxe: Support multiple devices with 0 HardwareInstance Thread-Index: AQHZPNI9XDWuAdgB7UmVem2cryIULq7Hhj7wgADeEgCAADLksIAAD8EAgAAJS7CAAAEtAIAGb5DggAAk/IA= Date: Wed, 15 Feb 2023 01:59:54 +0000 Message-ID: References: <3c3226e6c05a868f3f88d300181a157998c2786e.1670873141.git.jbrasen@nvidia.com> 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: CO1PR11MB4929:EE_|DS0PR11MB7788:EE_ x-ms-office365-filtering-correlation-id: 40e53c1d-095b-463d-212e-08db0ef85536 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XPrKybbuHJb9wPsyJVJOybjgV7OTRMH0uYjjPxeDTUEj/pi1OOiIqM0/Zvm8BGLZZYPsIxRPmRJAf/RBNH4LRjh6b2/SGnXC/ZUTKLIogIhFQuEFq+Bf/rJK7IktrxhAKSbMCDMrCq+wBL/S7zXV1hM+smMICHajy2gBWJ4QRL3ko515vMYG6+zZBUHpDJRkC8zc21/x9l9Cq4XJXNd8idAbcs2M648rb7j8Bmhj1abANrZPo0w7TlkuX4it9gVLIgKKTU2yQe7NvQ8Q+H/ytRI+pttsh0P1jkZyIYdhY1Cdn/K9Zy6mI/nGcHBXVy27PIr25K0kY/v3yYDRiVqmsLcw9/Fpi/EOjziZF281G6n7j//lWx0R5tBh44bSVuwFBzaYq7UvA+zpfUoaqfjGelx1kNPMvW62VGGmTpbwjRmzMUKwr+XlZ5zhvqI41L7Tm+POlr/d2zOqGV0ubyg9ntmfZOvaiLWd0tq0lAZvJOqsDZTpA6LntvQUuV5s5V63ejxTpBYHDPCKi8tzhlvqLGgs+X+xGDDn0QWRsy72zOk1wcm2xPQaveGO+CxKuuYjR6GaXgDWZ9OpD5gwe+ZJdiaNiBiVrkVVFIv3WGJf+JCeSTRxu9vr9L3VfaLa1CSSXpZz40iO8H/XoiUGCF9kWW8NDGFzsvxDlp+CoPs3XQRTsyLXEwIeuPCFNye/A/pvHv7x+0I+1PW4dYM6ghFzilt91MFOUui01G9wM8BvEw8= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(376002)(39860400002)(346002)(366004)(136003)(396003)(451199018)(5660300002)(52536014)(8936002)(86362001)(66446008)(41300700001)(30864003)(66899018)(66556008)(66946007)(64756008)(66476007)(110136005)(4326008)(2906002)(8676002)(76116006)(38070700005)(316002)(38100700002)(6636002)(122000001)(107886003)(82960400001)(55016003)(7696005)(186003)(83380400001)(33656002)(478600001)(71200400001)(966005)(6506007)(53546011)(9686003)(26005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WGpoZk9CUnlMWlgrQnhtU2RXTVFnSTViV05oakg1S3lDME1lZXFJR0R5SVdC?= =?utf-8?B?OWtvOU45M0Q4dFNPM2NYeTNQQ1NIUzUxMi9teGZFT1lZN1FjbVg2ZDJRME1o?= =?utf-8?B?Ykl3ViswaHU4Z1dIdUttdEtqalo1RjFNYmpjd01HMm9KUEVHM05kaFBXQ0li?= =?utf-8?B?NUloMFMrY3FCbHoyNVpLbmJQYVh0UWljT3NCcTBjSWF2UmIyV1kycEVsSVE0?= =?utf-8?B?N3hSSTlVZC9YcVZzWEFEMGpiSFNIL2RHcFZtdlc2ZGszd0NmaXN6UHRRNzd3?= =?utf-8?B?dHd1UWRtTEJvTkRzeHVRR2dONWZkMzdSL2cxaWppSmJSL0F2ekJRUkZ2ejdl?= =?utf-8?B?VHROYTdKNlg1WS9kZ2RnMnZROVNPaXAzeGFYeHBwa0RPNUw0K2tTcmViRERp?= =?utf-8?B?NzBIUGdMbDY2cUh3UmtBNmZtNTd1R1dWa2c5bWFWeUczZVk1WVp6d1lLb05s?= =?utf-8?B?RnZDdmViSm5ZeXRtbnB6Q2IrYXd0MW1DNWpiVTBjZGF6Q3FNYWg0eGQxZk55?= =?utf-8?B?TFI3NmV0V1NwQjNsVFpRcm5iRGZwTG42ZDA2c0pnMWF0ZVZRMGw5ZHNzczBI?= =?utf-8?B?WUVMdzhNVWtsTlQ1Zy9pc1Y4QmxoNitFYzJmTVdseVlncys4aGxaNDZrVUhP?= =?utf-8?B?ektOZHVzYW9mWVBwdUJWYlhnYlp3K3BhaEpGbDNBTWFMNmVldi82bEFmNnJM?= =?utf-8?B?b0VIM3NVWWtwQ1E0Mjd2Lyt1MDN4bXlva2hNbnVsR3NBZTZITGJlcldRdlcv?= =?utf-8?B?ZTloSktZbVJQUXhJUjFYeTQ4M2w4cVJDUDNuYTNSVzc3NEo1UzFGcXV3Yndx?= =?utf-8?B?Mk4vMWpHMmt5S0JpVmcwVzYxYnhGWmZPbXpCUEhQN1k5Z1pSNVBKeG9CUE5T?= =?utf-8?B?aGJrR2kwb296bWlIbGEzTmFTSjhaOEcrWWsxcUhpUXJHN1NlWUplYlM4Z0hQ?= =?utf-8?B?Z3FhQmdHazYzU0dEeEZ5Mmp0T2lYaHJvZ1N6NHF0L0dPa1htd1BkY09Xd1pF?= =?utf-8?B?SXVzREl6NCtpNm4yWVhlSHN3Um1YQTNUazI0TnhldHNEOGxDUHVUMCtTbS9E?= =?utf-8?B?U2FOdFBacVlWZEN3cUwydmN0d2poeHBVWm53SzgwRVRYaXdnQk10S1BJa25v?= =?utf-8?B?a1pVelFhY2NUNzllTEhyU3pMcXBSU3hkdzNUVEkySnl1MWk2YUZUbkFucGNO?= =?utf-8?B?aXcrdFlkVXh6WmxoRGhXdkM0ZEFlM3JGNzJVc0JKOEh2WWNmUlBRNjNlMzZo?= =?utf-8?B?NERLRDFVNTFLNzJuN2xub0lBcmk4QWVDakJsc1o1MWdBYzVRQXJQQ2NrWjY4?= =?utf-8?B?Rm9sdWtmeUNoUGtXWEpXa1p1c2RmUDBTSVVjemtyazBUWUwwMkhWV0NURS9U?= =?utf-8?B?Zi91bmxhbEEzRnJHbm16N1paQXJFNmFNbExCUWRqcytORDlJSnFBR1V5Y0lS?= =?utf-8?B?cldNSGZCTDRCbHEvUGNuOXQxRWk0S29yOVRCdEFVWUNVa3BxbWhneWZZNzdQ?= =?utf-8?B?SFg3NGFLY2NndHlBMEFuTTFVRHJ3V2JIbTVzQkhkYUF3VjdKcC9zVHJRQXU3?= =?utf-8?B?cWp5TFJlVWI0N29RSHM3SStZQVdCODZiWENrMEY4TkkzUHpjem5pcWlsM1hX?= =?utf-8?B?d1lQWjlGQVZ0T0pVZ0lnSGJkL21yckZVSndjOWE1TVYwc1FLUm54ZWJPVjBN?= =?utf-8?B?QnVEdHBLUlJQYkRsQ3Q1WGZKS2FYam85U09ld0FvUzdKQ2xJVDc5Z3JNZ0lq?= =?utf-8?B?elNwZHdpeFdweUNHenQ4c3hmTmZvYWpHc2ZnVUg0NjIxcU5vaDcwblVMMEdl?= =?utf-8?B?NWk5aHE3VUFNbTZUNTZnNlZIRHlnWStvT2czWThlcnpMemdnbEgxY1ZwRUtt?= =?utf-8?B?RVRpSWpydUhkNjY5dGN4N01XNHcwWFJWbXdQZjhmY2Y2R2syNVovUTd4ZnBE?= =?utf-8?B?dDZXcnN2dFljVmNocFUycVpoMktiVm53eGw1V0lIRG9UeFVJUXU0OVFPNjZo?= =?utf-8?B?RWJrR0hjS3F0M0ZtTFAxcHVvWCs0UUtUY1lISFg3bm9FcmhMZXlCajNyR1F0?= =?utf-8?B?c3VLM2dmK2ovVVducHJNb1BFNWpYNDZsRThpYWl5ZmMwZDNWWHIrVTJSK0hC?= =?utf-8?B?OWxrVDF5SXdpUnhKT2NlSGZOcXk2OUpNZEZKanJRbGJpYW1DSjZBMkhUaXl0?= =?utf-8?B?QVE9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 40e53c1d-095b-463d-212e-08db0ef85536 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Feb 2023 01:59:54.7033 (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: 9jcucyUqCMwLLrb/Nzi+GQxDwychExqO4UAFoGao2h8nuA6wSLihET7WAC0fuv52yil5KOr4a8vxYvXfSg5snVPd2SmW8kqYsUM5zPAZ3pI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7788 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWVyZ2VkDQoNClBSOiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvcHVsbC80MDQz DQpDb21taXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9jb21taXQvMDkwNjQy ZGI3YWMxMjRjMzM2ZGE3MmUxOTU0ZTFmYjA5ZTgxNmZiMA0KDQpNaWtlDQoNCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBGZWJydWFyeSAxNCwgMjAyMyAzOjUw IFBNDQo+IFRvOiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPjsgZGV2ZWxAZWRrMi5n cm91cHMuaW87IERlbWV0ZXIsIE1pa2kgPG1pa2kuZGVtZXRlckBpbnRlbC5jb20+DQo+IENjOiBL aW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6 IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYyXSBNZGVNb2R1bGVQa2cvRXNydEZtcER4ZTogU3Vw cG9ydCBtdWx0aXBsZSBkZXZpY2VzIHdpdGggMCBIYXJkd2FyZUluc3RhbmNlDQo+IA0KPiBIaSBK ZWZmLA0KPiANCj4gSSBoYXZlIGJlZW4gc3R1ZHlpbmcgdGhlIGNvZGUgZm9yIHNpZGUgZWZmZWN0 cyBmcm9tIFZlcnNpb24gPj0gMyBhbmQgSGFyZHdhcmVJbnN0YW5jZSA9IDAuDQo+IA0KPiBJIHRo aW5rIHRoZSBvbmx5IHNpZGUgZWZmZWN0IHdpdGggeW91ciBwYXRjaCBpcyBleHRyYSBlbnRyaWVz IGluIEhhcmR3YXJlSW50YW5jZXMgd2l0aCB0aGUNCj4gc2FtZSBHVUlEIHZhbHVlIGFuZCBIYXJk d2FyZUluc3RhbmNlIHZhbHVlIG9mIDAuDQo+IA0KPiAgIElOIE9VVCBHVUlEX0hBUkRXQVJFSU5T VEFOQ0VfUEFJUiAgICAgKkhhcmR3YXJlSW5zdGFuY2VzLA0KPiAgIElOIE9VVCBVSU5UMzIgICAg ICAgICAgICAgICAgICAgICAgICAgKk51bWJlck9mRGVzY3JpcHRvcnMsDQo+IA0KPiBUaGlzIHRh YmxlIGlzIG9ubHkgdXNlZCB0byBsb29rIGZvciBkdXBsaWNhdGUgR1VJRC9IYXJkd2FyZUluc3Rh bmNlIHBhaXJzIGFuZCBpcyBub3QgdXNlZA0KPiBhbnl3aGVyZSBlbHNlIGFuZCBpcyBmcmVlZCBh ZnRlciBFU1JUIGVudHJpZXMgYXJlIGRldGVybWluZWQuICBUaGUgc2FtZSBudW1iZXIgb2YgRVNS VCBlbnRyaWVzDQo+IGFyZSBiZSBjcmVhdGVkIGV2ZW4gaWYgdGhlc2UgZXh0cmEgSGFyZHdhcmVJ bnN0YW5jZXMgZW50cmllcyBhcmUgcHJlc2VudC4NCj4gDQo+IEkgaGF2ZSBhbHNvIG5vdCBzZWVu IGFueSBjb21tZW50cyBvciBjb25jZXJucyBmcm9tIGFueW9uZSBlbHNlIG9uIHRoaXMgdG9waWMu DQo+IA0KPiANCj4gDQo+IFJldmlld2VkLWJ5OiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4NCj4gDQo+IA0KPiANCj4gQmVzdCByZWdhcmRzLA0KPiANCj4gTWlr ZQ0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEplZmYgQnJh c2VuIDxqYnJhc2VuQG52aWRpYS5jb20+DQo+ID4gU2VudDogRnJpZGF5LCBGZWJydWFyeSAxMCwg MjAyMyAxOjIxIFBNDQo+ID4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBEZW1ldGVyLCBNaWtpIDxtaWtpLmRl bWV0ZXJAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYy XSBNZGVNb2R1bGVQa2cvRXNydEZtcER4ZTogU3VwcG9ydCBtdWx0aXBsZSBkZXZpY2VzIHdpdGgg MCBIYXJkd2FyZUluc3RhbmNlDQo+ID4NCj4gPiBUaGlzIGlzIHVuY2xlYXIgaW4gbXkgb3Bpbmlv bi4gVGhlIHNwZWMgZG9lcyBoYXZlDQo+ID4gVGhpcyBudW1iZXIgbXVzdCBiZSB1bmlxdWUgd2l0 aGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIEltYWdlVHlwZUlkIEdVSUQgYW5kIEltYWdlSW5kZXgu IEFuZA0KPiA+IEZvciBpbXBsZW1lbnRhdGlvbnMgdGhhdCB3aWxsIG5ldmVyIGhhdmUgbW9yZSB0 aGFuIG9uZSBpbnN0YW5jZSBhIHplcm8gY2FuIGJlIHVzZWQuDQo+ID4NCj4gPiBCdXQgaXQgYWxz byBzdGF0ZXMgdGhlIHBhcmFtZXRlciBpcyBvcHRpb25hbCBhbmQgc3RhdGVzIHRoYXQgemVybyBj YW4gYmUgdXNlZCB3aGVuIGlmIGl0IGlzIG5vdCBhYmxlIHRvIGRldGVybWluZSBhIHVuaXF1ZQ0K PiA+IGhhcmR3YXJlIGluc3RhbmNlIG51bWJlciBvciBhIGhhcmR3YXJlIGluc3RhbmNlIG51bWJl ciBpcyBub3QgbmVlZGVkLg0KPiA+DQo+ID4gSSBjb3VsZCBzZWUgcmVhc29uYWJsZSBhcmd1bWVu dHMgb24gYm90aCBzaWRlcy4NCj4gPg0KPiA+IC1KZWZmDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5k Lmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiBTZW50OiBGcmlkYXksIEZlYnJ1YXJ5IDEwLCAyMDIz IDI6MTcgUE0NCj4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgSmVmZiBCcmFzZW4gPGpi cmFzZW5AbnZpZGlhLmNvbT47IERlbWV0ZXIsDQo+ID4gPiBNaWtpIDxtaWtpLmRlbWV0ZXJAaW50 ZWwuY29tPg0KPiA+ID4gQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYyXSBNZGVN b2R1bGVQa2cvRXNydEZtcER4ZTogU3VwcG9ydA0KPiA+ID4gbXVsdGlwbGUgZGV2aWNlcyB3aXRo IDAgSGFyZHdhcmVJbnN0YW5jZQ0KPiA+ID4NCj4gPiA+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1 dGlvbiBvcGVuaW5nIGxpbmtzIG9yIGF0dGFjaG1lbnRzDQo+ID4gPg0KPiA+ID4NCj4gPiA+IEJh c2VkIG9uIFVFRkkgU3BlYywgd291bGQgeW91IGNvbnNpZGVyIHRob3NlIG9wdGlvbiByb21zIHRv IGJlIG5vbi0NCj4gPiA+IGNvbmZvcm1hbnQ/DQo+ID4gPg0KPiA+ID4gTWlrZQ0KPiA+ID4NCj4g PiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogZGV2ZWxAZWRr Mi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgSmVmZg0KPiA+ ID4gPiBCcmFzZW4gdmlhIGdyb3Vwcy5pbw0KPiA+ID4gPiBTZW50OiBGcmlkYXksIEZlYnJ1YXJ5 IDEwLCAyMDIzIDEyOjQzIFBNDQo+ID4gPiA+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiA+ID4gPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgRGVt ZXRlciwgTWlraSA8bWlraS5kZW1ldGVyQGludGVsLmNvbT4NCj4gPiA+ID4gU3ViamVjdDogUmU6 IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBrZy9Fc3J0Rm1wRHhlOg0KPiA+ID4g U3VwcG9ydA0KPiA+ID4gPiBtdWx0aXBsZSBkZXZpY2VzIHdpdGggMCBIYXJkd2FyZUluc3RhbmNl DQo+ID4gPiA+DQo+ID4gPiA+IEl0IHdhcyBub3QgYXMgd2Ugd2VyZSBzZWVpbmcgZGV2aWNlcyBl eHBvc2UgRk1QIHZpYSBhbiBvcHRpb24gcm9tDQo+ID4gPiA+IGRyaXZlciB3aXRoIFZlcnNpb24g PT0gMyBhbmQgSGFyZHdhcmVJbnN0YW5jZSA9IDAuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBvZg0K PiA+ID4gdGhlc2UgZGV2aWNlIGl0IHdvdWxkIGhpdCB0aGUgZXJyb3IgaW4gdGhlIEVzcnRDb2Rl LiBUaGUgcGF0Y2ggaW5jbHVkZWQgZG9lcw0KPiA+ID4gcmVzb2x2ZSB0aGUgaXNzdWVzIHdlIHdl cmUgc2VlaW5nLg0KPiA+ID4gPg0KPiA+ID4gPiAtSmVmZg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogS2lubmV5 LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ID4gPiA+IFNlbnQ6 IEZyaWRheSwgRmVicnVhcnkgMTAsIDIwMjMgMTI6NDggUE0NCj4gPiA+ID4gPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+OyBEZW1ldGVy LA0KPiA+ID4gPiA+IE1pa2kgPG1pa2kuZGVtZXRlckBpbnRlbC5jb20+DQo+ID4gPiA+ID4gQ2M6 IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+ID4g PiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCB2Ml0gTWRlTW9kdWxlUGtnL0VzcnRG bXBEeGU6DQo+ID4gPiA+ID4gU3VwcG9ydCBtdWx0aXBsZSBkZXZpY2VzIHdpdGggMCBIYXJkd2Fy ZUluc3RhbmNlDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRp b24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBEaWQgeW91ciBvcmlnaW5hbCBhcHByb2FjaCB3b3JrIGZvciBhbGwgeW91ciB1c2Ug Y2FzZXM/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBNaWtlDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiBGcm9tOiBkZXZlbEBlZGsy Lmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZg0KPiA+ID4gPiA+ ID4gSmVmZiBCcmFzZW4gdmlhIGdyb3Vwcy5pbw0KPiA+ID4gPiA+ID4gU2VudDogRnJpZGF5LCBG ZWJydWFyeSAxMCwgMjAyMyA4OjQ1IEFNDQo+ID4gPiA+ID4gPiBUbzogS2lubmV5LCBNaWNoYWVs IEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gPiA+ID4gPiA+IGRldmVsQGVkazIu Z3JvdXBzLmlvOyBEZW1ldGVyLCBNaWtpIDxtaWtpLmRlbWV0ZXJAaW50ZWwuY29tPg0KPiA+ID4g PiA+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBrZy9F c3J0Rm1wRHhlOg0KPiA+ID4gPiA+IFN1cHBvcnQNCj4gPiA+ID4gPiA+IG11bHRpcGxlIGRldmlj ZXMgd2l0aCAwIEhhcmR3YXJlSW5zdGFuY2UNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGF0 IHdhcyBteSBvcmlnaW5hbCBhcHByb2FjaCB3aGVuIEkgc2F3IHRoaXMgYnV0IEkgd2FzIHNlZWlu Zw0KPiA+ID4gPiA+ID4gdGhpcyBvY2N1ciBvbiBhIGRldmljZSB3aXRoIEZtcFZlcnNpb24gPT0g My4gVGhlIFVFRkkgc3BlYyBpc24ndA0KPiA+ID4gPiA+ID4gY29tcGxldGVseQ0KPiA+ID4gPiA+ IGNsZWFyIGJ1dCBjb3VsZCBiZSByZWFkIHRoYXQgMCBpcyBsZWdhbCBpZiB0aGlzIHBhcnQgaXNu J3QgYmVpbmcgdXNlZC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4g PiBodHRwczovL3VlZmkub3JnL3NwZWNzL1VFRkkvMi4xMC8yM19GaXJtd2FyZV9VcGRhdGVfYW5k X1JlcG9ydGluZy5odA0KPiA+ID4gPiA+IG0NCj4gPiA+ID4gPiBsDQo+ID4gPiA+ID4gPiAjZWZp LWZpcm13YXJlLW1hbmFnZW1lbnQtcHJvdG9jb2wtZ2V0aW1hZ2VpbmZvDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gSXQgZG9lcyBzdGF0ZSB0aGF0IHRoaXMgaXMgT3B0aW9uYWwsIGFuZCBoYXMg YSBzdGF0ZW1lbnQgIkEgemVybw0KPiA+ID4gPiA+ID4gbWVhbnMgdGhlIEZNUCBwcm92aWRlciBp cyBub3QgYWJsZSB0byBkZXRlcm1pbmUgYSB1bmlxdWUgaGFyZHdhcmUNCj4gPiA+ID4gPiA+IGlu c3RhbmNlDQo+ID4gPiA+ID4gbnVtYmVyIG9yIGEgaGFyZHdhcmUgaW5zdGFuY2UgbnVtYmVyIGlz IG5vdCBuZWVkZWQuIg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEFsc28sIG91ciBFU1JUIGlt cGxlbWVudGF0aW9uIGp1c3QgbWVyZ2VzIGFsbCBpbnN0YW5jZXMgdG8gb25lDQo+ID4gPiA+ID4g PiBhbnl3YXlzIHNvIGl0IGRvZXNuJ3QgY3VycmVudGx5IGNvbnN1bWUgdGhlIGhhcmR3YXJlIGlu c3RhbmNlDQo+ID4gPiA+ID4gPiBleGNlcHQgZm9yIHRoaXMNCj4gPiA+ID4gPiBjaGVjay4NCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+ID4gPiBKZWZmDQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ ID4gPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ DQo+ID4gPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBGZWJydWFyeSA5LCAyMDIzIDg6NDMgUE0N Cj4gPiA+ID4gPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBKZWZmIEJyYXNlbiA8amJy YXNlbkBudmlkaWEuY29tPjsNCj4gPiA+ID4gPiA+ID4gRGVtZXRlciwgTWlraSA8bWlraS5kZW1l dGVyQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gU3ViamVjdDogUkU6IFtQQVRD SCB2Ml0gTWRlTW9kdWxlUGtnL0VzcnRGbXBEeGU6IFN1cHBvcnQNCj4gPiA+ID4gPiA+ID4gbXVs dGlwbGUgZGV2aWNlcyB3aXRoIDAgSGFyZHdhcmVJbnN0YW5jZQ0KPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBh dHRhY2htZW50cw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBI aSBKZWZmLA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBUaGFuayB5b3UgZm9yIHRoZSBy ZW1pbmRlci4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSSBhbSB3b25kZXJpbmcgaWYg dGhlIGNoZWNrIHNob3VsZCBiZSBmb3IgRm1wVmVyc2lvbiA8IDMgYW5kIG5vdA0KPiA+ID4gPiA+ ID4gPiBGbXBIYXJkd2FyZUluc3RhbmNlICE9IDAuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+IEl0IGlzIHBvc3NpYmxlIGZvciBhbiBGbXBJbmZvQnVmZmVyIHRvIGhhdmUgYW4gRm1wVmVy c2lvbiA+PSAzDQo+ID4gPiA+ID4gPiA+IGFuZCBhIEhhcmR3YXJlSW5zdGFuY2Ugb2YgMC4gIElm IG1vcmUgdGhhbiBvbmUgb2YgdGhlc2UgaXQNCj4gPiA+ID4gPiA+ID4gZm91bmQsIHRoZW4gdGhh dCB3b3VsZCBiZSBhbiBFRklfVU5TVVBQT1JURUQgY29uZGl0aW9uLg0KPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiBJZiBGbXBWZXJzaW9uID49IDMsIHRoZW4gdGhlIEhhcmR3YXJlSW5zdGFu Y2UgbXVzdCBiZSBmaWxsZWQgaW4NCj4gPiA+ID4gPiA+ID4gd2l0aCBhIHVuaXF1ZSB2YWx1ZS4g IDAgY2FuIGJlIHVzZWQgaWYgdGhlcmUgaXMgYXQgbW9zdCAxDQo+ID4gPiA+ID4gPiA+IGluc3Rh bmNlLCBzbyB0aGUgZHVwbGljYXRlIGNoZWNrIHdvdWxkIG5ldmVyIGJlIHRyaWdnZXJlZC4gIElm DQo+ID4gPiA+ID4gPiA+IEZtcFZlcnNpb24gPj0gMyBhbmQgdGhlcmUgY2FuIGJlIG1vcmUgdGhl biBvbmUgaW5zdGFuY2UsIHRoZW4NCj4gPiA+ID4gPiA+ID4gdGhlIEhhcmR3YXJlSW5zdGFuY2Ug bXVzdCBiZSBhIG5vbi16ZXJvIHVuaXF1ZSB2YWx1ZS4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gVGhhbmtzLA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBNaWtlDQo+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ ID4gPiA+ID4gPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMu aW8+IE9uIEJlaGFsZiBPZg0KPiA+ID4gPiA+ID4gPiA+IEplZmYgQnJhc2VuIHZpYSBncm91cHMu aW8NCj4gPiA+ID4gPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgOSwgMjAyMyAyOjAz IFBNDQo+ID4gPiA+ID4gPiA+ID4gVG86IERlbWV0ZXIsIE1pa2kgPG1pa2kuZGVtZXRlckBpbnRl bC5jb20+DQo+ID4gPiA+ID4gPiA+ID4gQ2M6IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+ ID4gPiA+ID4gU3ViamVjdDogW2VkazItZGV2ZWxdIEZXOiBbUEFUQ0ggdjJdDQo+ID4gPiBNZGVN b2R1bGVQa2cvRXNydEZtcER4ZToNCj4gPiA+ID4gPiA+ID4gU3VwcG9ydA0KPiA+ID4gPiA+ID4g PiA+IG11bHRpcGxlIGRldmljZXMgd2l0aCAwIEhhcmR3YXJlSW5zdGFuY2UNCj4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+IEhlcmUgaXMgYSBwYXRjaCB0aGF0IGhhcyBiZWVuIHBlbmRp bmcgZm9yIGEgYml0DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBUaGFua3MsDQo+ ID4gPiA+ID4gPiA+ID4gSmVmZg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4gPiBGcm9tOiBKZWZmIEJyYXNl bg0KPiA+ID4gPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgRmVicnVhcnkgMSwgMjAyMyA5OjIx IEFNDQo+ID4gPiA+ID4gPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+ID4g PiA+ID4gQ2M6IGppYW4uai53YW5nQGludGVsLmNvbTsgZ2FvbGltaW5nQGJ5b3NvZnQuY29tLmNu Ow0KPiA+ID4gPiA+ID4gPiA+IGd1b21pbi5qaWFuZ0BpbnRlbC5jb20NCj4gPiA+ID4gPiA+ID4g PiBTdWJqZWN0OiBSRTogW1BBVENIIHYyXSBNZGVNb2R1bGVQa2cvRXNydEZtcER4ZTogU3VwcG9y dA0KPiA+ID4gPiA+ID4gPiA+IG11bHRpcGxlIGRldmljZXMgd2l0aCAwIEhhcmR3YXJlSW5zdGFu Y2UNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IEFueSB1cGRhdGVzIG9uIHRoaXMg d291bGQgYmUgZ3JlYXQgdG8gZ2V0IHRoaXMgaW4gZm9yIHRoZSBuZXh0DQo+ID4gPiA+ID4gPiA+ ID4gc3RhYmxlIHJlbGVhc2UNCj4gPiA+ID4gPiA+ID4gaWYgcG9zc2libGUuDQo+ID4gPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiA+ID4gPiA+ID4gPiBGcm9tOiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPg0KPiA+ ID4gPiA+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBEZWNlbWJlciAxMiwgMjAyMiAxMjoyNyBQTQ0K PiA+ID4gPiA+ID4gPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+ID4gPiA+ ID4gPiBDYzogamlhbi5qLndhbmdAaW50ZWwuY29tOyBnYW9saW1pbmdAYnlvc29mdC5jb20uY247 DQo+ID4gPiA+ID4gPiA+ID4gPiBndW9taW4uamlhbmdAaW50ZWwuY29tOyBKZWZmIEJyYXNlbiA8 amJyYXNlbkBudmlkaWEuY29tPg0KPiA+ID4gPiA+ID4gPiA+ID4gU3ViamVjdDogW1BBVENIIHYy XSBNZGVNb2R1bGVQa2cvRXNydEZtcER4ZTogU3VwcG9ydA0KPiA+ID4gPiA+ID4gPiA+ID4gbXVs dGlwbGUgZGV2aWNlcyB3aXRoIDAgSGFyZHdhcmVJbnN0YW5jZQ0KPiA+ID4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gPiA+IFNraXAgZXJyb3IgY2hlY2sgaWYgSGFyZHdhcmVJbnN0YW5jZSBp cyAwIGFzIHRoaXMgZWl0aGVyDQo+ID4gPiA+ID4gPiA+ID4gPiBtZWFucyB0aGF0IEZtcFZlcnNp b24gPCAzIGFuZCBub3Qgc3VwcG9ydGVkIG9yLCAiQSB6ZXJvDQo+ID4gPiA+ID4gPiA+ID4gPiBt ZWFucyB0aGUgRk1QIHByb3ZpZGVyIGlzIG5vdCBhYmxlIHRvIGRldGVybWluZSBhIHVuaXF1ZQ0K PiA+ID4gPiA+ID4gPiA+ID4gaGFyZHdhcmUgaW5zdGFuY2UgbnVtYmVyIG9yIGEgaGFyZHdhcmUg aW5zdGFuY2UgbnVtYmVyIGlzDQo+ID4gPiA+ID4gPiA+ID4gPiBub3QgbmVlZGVkLiIgcGVyIFVF RkkNCj4gPiA+ID4gPiBzcGVjaWZpY2F0aW9uLg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiA+IEFzIHRoZSBGbXBJbnN0YW5jZXMgYXJlIG1lcmdlZCBhbmQgSGFyZHdhcmVJbnN0 YW5jZSBpcyBub3QNCj4gPiA+ID4gPiA+ID4gPiA+IHVzZWQgcmVtb3ZlIGVycm9yIGNoZWNrIGlu IHRoaXMgY2FzZS4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNv bT4NCj4gPiA+ID4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4gPiA+ID4gIE1kZU1vZHVsZVBr Zy9Vbml2ZXJzYWwvRXNydEZtcER4ZS9Fc3J0Rm1wLmMgfCAyMg0KPiA+ID4gPiA+ICsrKysrKysr KysrKy0tDQo+ID4gPiA+ID4gPiA+IC0tLS0NCj4gPiA+ID4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4g PiA+ID4gPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9u cygtKQ0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9N ZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0VzcnRGbXBEeGUvRXNydEZtcC5jDQo+ID4gPiA+ID4gPiA+ ID4gPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRXNydEZtcER4ZS9Fc3J0Rm1wLmMNCj4gPiA+ ID4gPiA+ID4gPiA+IGluZGV4IDRmNDdjNTVjY2UuLjViYzYyNzQ2MWQgMTAwNjQ0DQo+ID4gPiA+ ID4gPiA+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0VzcnRGbXBEeGUvRXNydEZt cC5jDQo+ID4gPiA+ID4gPiA+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0VzcnRG bXBEeGUvRXNydEZtcC5jDQo+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTUzLDE2ICsxNTMsMjAgQEAg Q3JlYXRlRXNydEVudHJ5ICgNCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiAg ICAvLw0KPiA+ID4gPiA+ID4gPiA+ID4gICAgLy8gQ2hlY2sgdG8gc2VlIG9mIEZtcEltYWdlSW5m b0J1ZiBHVUlEL0hhcmR3YXJlSW5zdGFuY2UNCj4gPiA+ID4gPiA+ID4gPiA+IGlzIHVuaXF1ZQ0K PiA+ID4gPiA+ID4gPiA+ID4gKyAgLy8gU2tpcCBpZiBIYXJkd2FyZUluc3RhbmNlIGlzIDAgYXMg dGhpcyBpcyB0aGUgY2FzZSBpZg0KPiA+ID4gPiA+ID4gPiA+ID4gKyBGbXBWZXJzaW9uIDwNCj4g PiA+ID4gPiA+ID4gPiA+ICsgMyAgLy8gb3IgdGhlIGRldmljZSBjYW4gbm90IGNyZWF0ZSBhIHVu aXF1ZSBJRCBwZXIgVUVGSQ0KPiA+ID4gPiA+ID4gPiA+ID4gKyBzcGVjaWZpY2F0aW9uDQo+ID4g PiA+ID4gPiA+ID4gPiAgICAvLw0KPiA+ID4gPiA+ID4gPiA+ID4gLSAgZm9yIChJbmRleCA9IDA7 IEluZGV4IDwgKk51bWJlck9mRGVzY3JpcHRvcnM7IEluZGV4KyspIHsNCj4gPiA+ID4gPiA+ID4g PiA+IC0gICAgaWYgKENvbXBhcmVHdWlkICgmSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkltYWdl VHlwZUd1aWQsDQo+ID4gPiA+ID4gPiA+ID4gPiAmRm1wSW1hZ2VJbmZvQnVmLT5JbWFnZVR5cGVJ ZCkpIHsNCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICBpZiAoSGFyZHdhcmVJbnN0YW5jZXNbSW5k ZXhdLkhhcmR3YXJlSW5zdGFuY2UgPT0NCj4gPiA+ID4gPiA+ID4gPiA+IEZtcEhhcmR3YXJlSW5z dGFuY2UpIHsNCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgIERFQlVHICgoREVCVUdfRVJST1Is ICJFc3J0Rm1wRHhlOiBEdXBsaWNhdGUgZmlybXdhcmUNCj4gPiA+ID4gPiBpbWFnZQ0KPiA+ID4g PiA+ID4gPiA+ID4gZGVzY3JpcHRvciB3aXRoIEdVSUQgJWcgSGFyZHdhcmVJbnN0YW5jZToweCV4 XG4iLA0KPiA+ID4gPiA+ID4gPiAmRm1wSW1hZ2VJbmZvQnVmLQ0KPiA+ID4gPiA+ID4gPiA+ID4g PkltYWdlVHlwZUlkLCBGbXBIYXJkd2FyZUluc3RhbmNlKSk7DQo+ID4gPiA+ID4gPiA+ID4gPiAt ICAgICAgICBBU1NFUlQgKA0KPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAhQ29tcGFyZUd1 aWQNCj4gPiA+ICgmSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkltYWdlVHlwZUd1aWQsDQo+ID4g PiA+ID4gPiA+ID4gPiAmRm1wSW1hZ2VJbmZvQnVmLT5JbWFnZVR5cGVJZCkgfHwNCj4gPiA+ID4g PiA+ID4gPiA+IC0gICAgICAgICAgSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkhhcmR3YXJlSW5z dGFuY2UgIT0NCj4gPiA+ID4gPiA+ID4gPiA+IEZtcEhhcmR3YXJlSW5zdGFuY2UNCj4gPiA+ID4g PiA+ID4gPiA+IC0gICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgIHJldHVy biBFRklfVU5TVVBQT1JURUQ7DQo+ID4gPiA+ID4gPiA+ID4gPiArICBpZiAoRm1wSGFyZHdhcmVJ bnN0YW5jZSAhPSAwKSB7DQo+ID4gPiA+ID4gPiA+ID4gPiArICAgIGZvciAoSW5kZXggPSAwOyBJ bmRleCA8ICpOdW1iZXJPZkRlc2NyaXB0b3JzOyBJbmRleCsrKSB7DQo+ID4gPiA+ID4gPiA+ID4g PiArICAgICAgaWYgKENvbXBhcmVHdWlkDQo+ID4gPiA+ID4gPiA+ID4gPiArICgmSGFyZHdhcmVJ bnN0YW5jZXNbSW5kZXhdLkltYWdlVHlwZUd1aWQsDQo+ID4gPiA+ID4gPiA+ID4gPiAmRm1wSW1h Z2VJbmZvQnVmLT5JbWFnZVR5cGVJZCkpIHsNCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgIGlm IChIYXJkd2FyZUluc3RhbmNlc1tJbmRleF0uSGFyZHdhcmVJbnN0YW5jZSA9PQ0KPiA+ID4gPiA+ ID4gPiA+ID4gRm1wSGFyZHdhcmVJbnN0YW5jZSkgew0KPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRXNydEZtcER4ZTogRHVwbGljYXRlDQo+ID4gPiA+ ID4gPiA+ID4gPiArIGZpcm13YXJlIGltYWdlDQo+ID4gPiA+ID4gPiA+ID4gPiBkZXNjcmlwdG9y IHdpdGggR1VJRCAlZyBIYXJkd2FyZUluc3RhbmNlOjB4JXhcbiIsDQo+ID4gPiA+ID4gPiA+ICZG bXBJbWFnZUluZm9CdWYtDQo+ID4gPiA+ID4gPiA+ID4gPiA+SW1hZ2VUeXBlSWQsIEZtcEhhcmR3 YXJlSW5zdGFuY2UpKTsNCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgQVNTRVJUICgNCj4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAhQ29tcGFyZUd1aWQNCj4gPiA+ID4gPiA+ID4g PiA+ICsgKCZIYXJkd2FyZUluc3RhbmNlc1tJbmRleF0uSW1hZ2VUeXBlR3VpZCwNCj4gPiA+ID4g PiA+ID4gPiA+ICZGbXBJbWFnZUluZm9CdWYtPkltYWdlVHlwZUlkKSB8fA0KPiA+ID4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgIEhhcmR3YXJlSW5zdGFuY2VzW0luZGV4XS5IYXJkd2FyZUluc3Rh bmNlICE9DQo+ID4gPiA+ID4gPiA+ID4gPiBGbXBIYXJkd2FyZUluc3RhbmNlDQo+ID4gPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgcmV0 dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ ID4gPiA+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+ID4gPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4g PiA+ID4gPiA+ICAgIH0NCj4gPiA+ID4gPiA+ID4gPiA+IC0tDQo+ID4gPiA+ID4gPiA+ID4gPiAy LjI1LjENCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4NCj4gPiA+ID4gDQo+ID4gPiA+DQoNCg==