From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web10.10113.1593395259465180916 for ; Sun, 28 Jun 2020 18:47:39 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=dC68WeL2; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: zhichao.gao@intel.com) IronPort-SDR: d0rU1dz6prGh4JiP7kIJI00LDQlok9ihpRE9tl3GST7B07E54h3LuGfkKuRmzDwxWnrBNYGDfp uovB53DYU7qw== X-IronPort-AV: E=McAfee;i="6000,8403,9666"; a="210968388" X-IronPort-AV: E=Sophos;i="5.75,293,1589266800"; d="scan'208";a="210968388" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2020 18:47:32 -0700 IronPort-SDR: MBGdN+MF/aav0hDr0GyubSUO88bNhNiqE16jJTtGWMTmyUV0Z2gQS7UxqNDnrbsXe72IidfIQx 350RoL+OtrvQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,293,1589266800"; d="scan'208";a="312894964" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga002.fm.intel.com with ESMTP; 28 Jun 2020 18:47:32 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 28 Jun 2020 18:47:31 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) 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.1713.5; Sun, 28 Jun 2020 18:47:31 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Sun, 28 Jun 2020 18:47:31 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.107) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 28 Jun 2020 18:47:30 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NdN0/fuVgISwll+xaImnIYDe7i0We3GfL08geGByt6774M511d4IwqL6ONpGUkhinhU5KhEPICzKdzoYh5z7ONvfnGt5yhoKy9jN6Ze/XWkcXE3BSAV75DZaaP6RIY9K3/0KBbydky4nChQASSN6H5sLw8ZOtKpr2Er3zn3VNc4L6s1wCo8hZD/Q9xyPW4X94UxGw7lzMBt7jKckAcRknX35hEMdT0pYtEayjkDbNok7xnLNo3JbLvwM4b6S4XibUWVMiOiLsLApCMxbEnmLzWzFIrU6/bbv7Fxsg0o0B3CHn4weLZi+vyWWLlTWTJJWmznNPo/qFtLwE5WGjkMSFQ== 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=fTeLhGGcCCXBNO6q22+WQpQkJQeq8oCkaTlQgNrM9pM=; b=EXR36n7ah9ApdhO8E+YKIyYxLgGV4PqbrLukPuUmo7SSfjrv78T9bvGSKq6LI9vsgjXWY8ykwDK9V26r/aAVjMH5B3mI5WNNPYlM2gazMjqVaGTvqvo0ET1JpL/R0gKbzmzTOuw2O/YNQqT/IEIuXvAf8ReO5nMYbrXPDAE5Yufl/MdSluqA7g8VgEj8XZSYOjerBrsBhSyBl8PvfNs5BBGn+jWxifdkoRRNnsgBgvH3T9uIHmyH7E2Nl7CuHjVHp5gif/qNCPiZSu9qVWONlhhjoSSrQPzc49T8HzmWAQ771XTmgaSqlzOrrUqjfx3g2Cxjbo5HG9gPSzEcab1n/A== 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=fTeLhGGcCCXBNO6q22+WQpQkJQeq8oCkaTlQgNrM9pM=; b=dC68WeL2OgpiAjTnpQRWOiSNsrzAkRcDFXdKspSlkT0++OhQAp+/ydvuaiq74rXZPd+vkHEabAM8EkNGsiCya9cm3exAt/z4lBVtEgrUzs2IaVVZw7BMGxW4EhqNI6ui9z3iQX/g7BZSFpztauZyssY81v951QyRBdZWcBwBiJw= Received: from DM6PR11MB4425.namprd11.prod.outlook.com (2603:10b6:5:1d9::31) by DM5PR11MB1402.namprd11.prod.outlook.com (2603:10b6:3:7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.24; Mon, 29 Jun 2020 01:47:21 +0000 Received: from DM6PR11MB4425.namprd11.prod.outlook.com ([fe80::ad34:e1fc:2e7b:d124]) by DM6PR11MB4425.namprd11.prod.outlook.com ([fe80::ad34:e1fc:2e7b:d124%3]) with mapi id 15.20.3131.026; Mon, 29 Jun 2020 01:47:21 +0000 From: "Gao, Zhichao" To: Laszlo Ersek , "Ni, Ray" , "devel@edk2.groups.io" CC: "Wu, Hao A" , "Wang, Jian J" , "Gao, Liming" Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/PartitionDxe: Seperate the Udf handler Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/PartitionDxe: Seperate the Udf handler Thread-Index: AQHWSew7PLCnQJWhREa5iLSmiIY1Kqjnb68ggAA5xQCAAM/XgIAAkX6AgAXHiMA= Date: Mon, 29 Jun 2020 01:47:20 +0000 Message-ID: References: <20200624055610.13984-1-zhichao.gao@intel.com> <734D49CCEBEEF84792F5B80ED585239D5C5D1BBB@SHSMSX104.ccr.corp.intel.com> <2f85dc90-41ae-0b51-4512-d65dbdd143b5@redhat.com> <734D49CCEBEEF84792F5B80ED585239D5C5D2639@SHSMSX104.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.38] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6b3ca89b-f79f-4ea2-efc6-08d81bce5d17 x-ms-traffictypediagnostic: DM5PR11MB1402: 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:10000; x-forefront-prvs: 044968D9E1 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TQnvAY5H9NbnzWHFK4QeTkMSng7m4KlhM5GuWLupbi4cbeXxuKuEOdjUodu6PBWX1AuL4lEgWCAtxff75/ftgpLWgbhvShmTkxzP41oFSwIaQXPmSr6+cQEKBc17GcN7/vL0jdeEQNbbsDCwpNXB537bMaSoMB4HjY+/OWv9pOtd3B1EoaS7rFHQ4vBBnyqi/4Cyv6E1PKymDksEyZ6EVVudYxATefVtPdEeMC9iYWjJbqApENn5b537q6O21YLXYv2+Ut2dwXjDTCfSjZsPveEWv8qToZurlxn0BINLF4sBm+FwBGZeqKVlhAD/KFmQsOvn9HqxIEWGUzeUz1QXwhaVw06JWXMMvil6Hj1sa/rb7mEFefupcWsRFdNKryEZvVwtjMR9qHRp2yItOPs8qT4UW56p2/bpPMqpCRum+sTaU9DISJIk1bUlLNPtXp9XJ8Ib91xzho0YsaSgHTS/zg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4425.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(366004)(396003)(39860400002)(136003)(376002)(346002)(6506007)(966005)(110136005)(54906003)(7696005)(26005)(53546011)(316002)(83380400001)(186003)(55016002)(8676002)(478600001)(8936002)(45080400002)(9686003)(107886003)(2906002)(71200400001)(4326008)(66446008)(64756008)(66556008)(66476007)(76116006)(66946007)(5660300002)(86362001)(33656002)(30864003)(52536014)(562404015);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: NFLBi8uWQfL80ajdmJIcwHxUNIVkbC4PZcNUiaiyIq9CjI1uSYy1wOVZca7LSbEVqRcph37b171ctlsUHnS+xkqIUGrJb3PLpz+wECELk3g8iUnoKue/7dZ0dZuztnrAuQvr9tSBM3vKVvZhRCu9k90jB/EYJPXfwZgwNuMx1/gAt5wTHkdFu/Hqk2rMbQIbs1mdG/EK3YGEV5E5vzQHFISOSa2ZmTRQ2iA0LqP/PqWmvGvRVxNtJij7hXyR6FzItILl3IO4SJDkwT5uS2mYWevag2mx0T1SgE+NB+pGGNDqsxy2AwCqFjHkrTjv1XibWR++pgdvGztASKVMs8NJtf7Y37IIO/udmjdxzEKttdu9xjhm1scmPUv7aapgFC+qdqXdyj7wbeT+1myAUZL68T1iYwQnvRxEQ/Vlv3ta+Tgg6S8hsfR6+uwydymIPDTAvN2Kcy0nIMZHk3/cC4SfAouFVnBEfGx4o5UQqdV7D2ANSVY/ybxyD8KZV0vbEiHY MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4425.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b3ca89b-f79f-4ea2-efc6-08d81bce5d17 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2020 01:47:20.9389 (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: Jy5H228c5sqPT33kf+s8B51c3OohMJPJ1de9WrlIbzrYzSRKENXyIJ4MfVUL9uS6go73I+0wG2ZKx+2QqO2mow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1402 Return-Path: zhichao.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvLA0KDQpTb3JyeSwgSSBkaWRuJ3QgcHV0IHRoZSBkZXRhaWwgaW5mbyBhYm91dCB0 aGUgaXNzdWUuIExldCBtZSBkZXNjcmlwdCBoZXJlLg0KDQpUaGUgaXNzdWUgaXMgbm90IG9ubHkg Zm9yIFJlZCBIYXQuIEkgZm91bmQgaXQgd2l0aCB1YnVudHUgMTguMDIgYW1kNjQgYW5kIEZlZG9y YS0yMC14ODZfNjQgSVNPIGltYWdlIGFzIHdlbGwuIEkgZGlkbid0IHZpZXcgYWxsIHRoZSBsaW51 eCBpc28gaW1hZ2VzLg0KDQpIZXJlIGlzIHRoZSBpc3N1ZToNClVzaW5nIFVTQiBDRCBST00gd2l0 aCB0aGUgbGludXggSVNPIERWRC4gUnVuIHRoZSBwbGF0Zm9ybSBhbmQgZW50ZXIgVUVGSSBzaGVs bCAtPiBwbHVnIHRoZSBVU0IgQ0QgUk9NIHdpdGggdGhlIElTTyBEVkQgLT4gcnVuICJtYXAgLXIi LiBUaGUgQ0QncyBmaWxlIHN5c3RlbSBkaWRuJ3Qgc2hvdy4NCg0KSXQgd29ya3MgZmluZSB3aXRo IHRoZSBub3JtYWwgYm9vdCAoc3VjaCBhcyBGMiwgRjcgYW5kIGF1dG8gYm9vdCkgYmVjYXVzZSBp dCB3b3VsZCBydW4gdGhlICpjb25uZWN0IGFsbCogb3BlcmF0aW9uLiBUaGF0IHdvdWxkIHJ1biB0 aGUgcGFydGl0aW9uIGRyaXZlciBzZXJ2YWwgdGltZXMuIEZpcnN0IHRpbWUgdGhlIHBhcnRpdGlv biBkcml2ZXIgd291bGQgaW5zdGFsbCBNQlIgcGFydGl0aW9uIGluZm8gcHJvdG9jb2wgd2l0aCB0 aGUgZGV2aWNlIGhhbmRsZSBhbmQgc2tpcCB0aGUgVURGIGNoZWNrLiBUaGUgc2Vjb25kIHRpbWUs IGl0IHdvdWxkIGZhaWwgdGhlIE1CUiBjaGVjayB3aXRoICphbHJlYWR5IHN0YXJ0ZWQqIGFuZCBy dW4gVURGIGNoZWNrIG5leHQuIFRoYXQgbWVhbnMgZm9yIHN1Y2ggSVNPIHRoZSBVRUZJIHdvdWxk IGluc3RhbGwgdHdvIHBhcnRpdGlvbiBwcm90b2NvbCwgYm90aCBNQlIgYW5kIFVERi4NCg0KQnV0 IGZvciBzaGVsbCBlbnZpcm9ubWVudCwgdGhlIFVTQiBob3QgcGx1ZyBoYW5kbGUgd291bGQgY29u bmVjdCB0aGUgVVNCIGRldmljZSBvbmx5IG9uY2UgYW5kIG1pc3NpbmcgdGhlIFVERiBjaGVjay4N Cg0KSSBkb24ndCBrbm93IHdoeSBsaW51eCBuZWVkIHRoZSBNQlIgaW5mby4gTWF5YmUgZm9yIGxl Z2FjeSBjb21wYXRpYmxlIHRoaW5raW5nIChteSBvcGluaW9uLCBtYXkgYmUgd3JvbmcpLg0KDQpJ ZiB0aGUgR1BULCBNQlIgYW5kIFVERiBhcmUgY29uZmxpY3QsIHRoZW4gdGhlIG9yaWdpbmFsIGxv Z2ljIGlzIGZpbmUuIEJ1dCBpbiBmYWN0LCBHUFQgYW5kIE1CUiBhcmUgY29uZmxpY3QgYW5kIEdQ VC9NQlIgYW5kIFVERiBhcmUgbm90IGNvbmZsaWN0Lg0KDQpUaGFua3MsDQpaaGljaGFvDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIDxsZXJzZWtA cmVkaGF0LmNvbT4NCj4gU2VudDogVGh1cnNkYXksIEp1bmUgMjUsIDIwMjAgNTowMiBQTQ0KPiBU bzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBHYW8s IFpoaWNoYW8NCj4gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4gQ2M6IFd1LCBIYW8gQSA8aGFv LmEud3VAaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+Ow0K PiBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRr Mi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQa2cvUGFydGl0aW9uRHhlOiBTZXBlcmF0ZSB0aGUg VWRmDQo+IGhhbmRsZXINCj4gDQo+IE9uIDA2LzI1LzIwIDAyOjIxLCBOaSwgUmF5IHdyb3RlOg0K PiA+IExhc3psbywNCj4gPiBZb3UgYXJlIHN1cnByaXNlZCBiZWNhdXNlIHRoZSBpc3N1ZSBpcyBy ZWxhdGVkIHRvIFJlZGhhdCwgb3IgYmVjYXVzZQ0KPiA+IHRoZSB3b3JkICJSZWRoYXQiIHNob3Vs ZCBub3QgYmUgbWVudGlvbmVkIGluIHRoZSBCdWd6aWxsYT8NCj4gDQo+IEl0J3MgdG90YWxseSBm aW5lIHRvIG1lbnRpb24gUmVkIEhhdCAod2l0aCBjb3JyZWN0IHNwZWxsaW5nKSBpbiB0aGUgaXNz dWUgZGVzY3JpcHRpb24uDQo+IFRoZSBtb3JlIGRldGFpbHMsIHRoZSBiZXR0ZXIuDQo+IA0KPiBJ J20gc3VycHJpc2VkIHRoYXQgdGhlIGlzc3VlICpzZWVtcyogc3BlY2lmaWMgdG8gUmVkIEhhdC4g RWFybGllciBJIGhhZCBsb29rZWQgb24tDQo+IGFuZC1vZmYgb24gdGhlIHNjcmlwdHMgdGhhdCBn ZW5lcmF0ZSAoZm9yIGV4YW1wbGUpIHRoZSBGZWRvcmEgSVNPIGltYWdlcyAoc28gdGhhdA0KPiB0 aGV5IGJlIGJvdGggQklPUy1ib290YWJsZSBhbmQgVUVGSS1ib290YWJsZSksIGFuZCBJIGRvbid0 IHJlY2FsbCBhbnkgcGFydGljdWxhcg0KPiB0cmlja3MgdGhhdCB3b3VsZCBleHBsb2l0IGdyYXkg YXJlYXMgaW4gc3BlY3Mgb3Igc28uDQo+IA0KPiBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlICp0b29s cyogdGhlIHNjcmlwdHMgdXNlIGZvciBmb3JtYXR0aW5nIHRoZSBJU09zIGhhdmUgc29tZQ0KPiBi dWdzIG9yIHF1aXJrcywgb2YgY291cnNlLiAoQnV0IHRoZW4gSSdtIGFnYWluIGEgYml0IHN1cnBy aXNlZCBmb3IgdGhvc2UgaXNzdWVzIG9yDQo+IHF1aXJrcyB0byBiZSBSSC1zcGVjaWZpYyAtLSBJ IGp1c3QgZG9uJ3Qgc2VlIGEgcmVhc29uIGZvciB1cyB0byBkaXZlcmdlIGZyb20gdGhlDQo+IHJl c3BlY3RpdmUgdXBzdHJlYW0gY29kZSBiYXNlcyBvZiB0aG9zZSB0b29scy4pDQo+IA0KPiA+IGh0 dHA6Ly9tYW5wYWdlcy51YnVudHUuY29tL21hbnBhZ2VzL2Jpb25pYy9tYW44L21rdWRmZnMuOC5o dG1sDQo+ID4gaXMgYSB0b29sIHRoYXQgY3JlYXRlcyBVREYgZmlsZSBzeXN0ZW0gd2l0aCBhIGNv bXBhdGlibGUgTUJSIHRhYmxlIGluDQo+ID4gdGhlIHRvcCAzMktCIHNwZWNpYWxseSBmb3IgV2lu ZG93cy4NCj4gPg0KPiA+IFNlYXJjaCAiIFdIT0xFIERJU0sgVlMgUEFSVElUSU9OIiBpbiB0aGUg d2ViIHBhZ2UuDQo+IA0KPiBUaGFua3MgLS0gYW5kLCBpbmRlZWQsIHRoaXMgY29uZmlybXMgbXkg cG9pbnQuIFRoZSBpc3N1ZSAob3IgdW5leHBlY3RlZCBiZWhhdmlvcg0KPiBhdCBsZWFzdCkgaXMg bm90IHNwZWNpZmljIHRvIFJlZCBIYXQsIGl0IGlzIHBhcnQgb2YgdGhlIChtb3N0DQo+IGxpa2Vs eTogdXBzdHJlYW0pIG1rdWRmZnMgdG9vbC4gKENhc2UgaW4gcG9pbnQsIHRoZSBtYW51YWwgcGFn ZSB5b3UncmUgcXVvdGluZyBpcw0KPiBmcm9tIGFuIFVidW50dSBkaXN0cm8uKQ0KPiANCj4gSSB0 aGluayBhIG1pbmltYWwgcmVwcm9kdWNlciB1c2luZyB0aGUgbWt1ZGZmcyBjb21tYW5kIChhbmQg bWF5YmUgbW9yZQ0KPiBjb21tYW5kcykgd291bGQgYmUgbmljZSBpbiB0aGUgVGlhbm9Db3JlIEJa Lg0KPiANCj4gQW55d2F5LCBsb29raW5nIGF0IHRoZSBtYW51YWwgeW91J3ZlIGlkZW50aWZpZWQs IGl0IGRvZXMgc2VlbSBsaWtlIGEgZ3JheSBhcmVhLg0KPiBJdCdzIGEgY29uZmxpY3QgYmV0d2Vl biB0d28gc3BlY2lmaWNhdGlvbnMsIGFwcGFyZW50bHkuIE9yIHBlcmhhcHMgbW9yZSBwcmVjaXNl bHksDQo+IGEgYnVnIGluIHRoZSBVREYgc3BlYy4gKEl0IHNlZW1zIHJlYWxseSBzdHJhbmdlIHRo YXQgYSBmaWxlc3lzdGVtIGluc2lzdHMgb24gYmVpbmcNCj4gaW5zdGFsbGVkIG9uIGEgY29tcGxl dGUgYmxvY2sgZGV2aWNlLCBhbmQgbm90IG9uIGEgcGFydGl0aW9uIGRlc2NyaWJlZCBpbiBhDQo+ IHN0YW5kYXJkIHBhcnRpdGlvbiB0YWJsZS4pDQo+IA0KPiBUaGUgd29ya2Fyb3VuZCBkZXNjcmli ZWQgaW4gdGhlIG1hbnVhbCBpcyBwcmVzZW50ZWQgYXMgYSB3b3JrYXJvdW5kICJmb3INCj4gV2lu ZG93cycgc2FrZSIuIEkgZG9uJ3QgdGhpbmsgdGhhdCdzIGZhaXI7IGluIG15ICh1bmVkdWNhdGVk Pykgb3Bpbmlvbg0KPiAqYW55KiBmaWxlIHN5c3RlbSBzaG91bGQgYmUgaGFwcHkgdG8gbGl2ZSBp bnNpZGUgYSBwYXJ0aXRpb24uIEkgd291bGRuJ3QgImJsYW1lIg0KPiBXaW5kb3dzIGZvciBtYWtp bmcgYW4gYXNzdW1wdGlvbiBsaWtlIHRoaXMuDQo+IA0KPiBGdXJ0aGVybW9yZSwgdGhlIHRlY2hu aWNhbCBkZXRhaWxzIG9mIHRoZSB3b3JrYXJvdW5kIGFyZSByZWFsbHkgYW5ub3lpbmc6DQo+IA0K PiAgICAgU28gIHRoZSAgd2hvbGUgIGRpc2sgZGV2aWNlICBhbmQgIGFsc28gZmlyc3QgcGFydGl0 aW9uIG9uIGRpc2sNCj4gICAgIHBvaW50cyB0byBzYW1lIHNlY3RvcnMuDQo+IA0KPiBUaGlzIG1l YW5zIHRoYXQgdGhlIGZpcnN0IHBhcnRpdGlvbiByZWN1cnNpdmVseSBpbmNsdWRlcyBpdHNlbGYg LS0gaW4gb3RoZXIgd29yZHMsIGl0DQo+IGluY2x1ZGVzIHRoZSBwYXJ0aXRpb24gKnRhYmxlKiB0 aGF0IGRlc2NyaWJlcyBpdHNlbGYuIDovDQo+IA0KPiBUaGUgbWFudWFsIHRoZW4gc2F5cywNCj4g DQo+ICAgICBta3VkZmZzICBvcHRpb24gLS1ib290YXJlYT1tYnIgcHV0IHN1Y2ggTUJSIHRhYmxl IGZvciBjb21wYXRpYmlsaXR5DQo+ICAgICB3aXRoIE1pY3Jvc29mdCBXaW5kb3dzIHN5c3RlbXMg aW50byBkaXNrIHdoZW4gZm9ybWF0dGluZy4NCj4gDQo+IFNvIG1heWJlIHRoZXJlICppcyogYSBi dWcgaW4gdGhlIFJlZCBIYXQgSVNPIGdlbmVyYXRvciBzY3JpcHRzOyBJJ20gbm90IHN1cmUuIEkN Cj4gZG9uJ3Qgc2VlIGEgcmVhc29uIHdoeSAiLS1ib290YXJlYT1tYnIiIHNob3VsZCBldmVyIGJl IHVzZWQgd2l0aA0KPiAqcmVtb3ZhYmxlKiBtZWRpYSAoc3VjaCBhcyBhbiBJU08gaW1hZ2UpLiBU aGUgbWt1ZGZmcyBtYW51YWwgc3RhdGVzIHRoYXQgdGhpcw0KPiB0cmlja2VyeSBpcyB1c2VmdWwg b25seSBmb3Igbm9uLXJlbW92YWJsZSBtZWRpYSBldmVuIG9uIFdpbmRvd3M6DQo+IA0KPiAgICAg TWljcm9zb2Z0IFdpbmRvd3Mgc3lzdGVtcyBhcmUgdW5hYmxlIHRvIGRldGVjdCBub24tcmVtb3Zh YmxlIGhhcmQNCj4gICAgIGRpc2tzIHdpdGhvdXQgTUJSIG9yIEdQVCBwYXJ0aXRpb24gdGFibGUu ICBSZW1vdmFibGUgZGlza3MgZG8gbm90DQo+ICAgICBoYXZlIHRoaXMgcmVzdHJpY3Rpb24uDQo+ IA0KPiAoUGVyc29uYWxseSBJJ3ZlIGJlZW4gdXNpbmcgYW4gVURGLWZvcm1hdHRlZCBVU0IgcGVu ZHJpdmUgZm9yIGEgbG9uZyB0aW1lIG5vdywNCj4gYmVjYXVzZSBpdCBzdXBwb3J0cyA0RysgZmls ZXMsIGFuZCBpcyBjb21wYXRpYmxlIHdpdGggYm90aCBMaW51eCBhbmQgV2luZG93cy4NCj4gVGhl cmUncyBubyBwYXJ0aXRpb24gdGFibGUgb24gaXQ7IEkgZm9ybWF0dGVkIHRoZSBwZW5kcml2ZSBt eXNlbGYsIGFuZCBJIHVzZWQNCj4gbmVpdGhlciBhIHBhcnRpdGlvbiB0YWJsZSBub3IgdGhlICIt LWJvb3RhcmVhPW1icicgZmxhZy4pDQo+IA0KPiBZZXQgZnVydGhlciwgSSBhbHNvIGRvbid0IHVu ZGVyc3RhbmQgd2h5IHRoaXMgaXNzdWUgaXMgYmVpbmcgcmVwb3J0ZWQgb25seSBub3csDQo+IGFu ZCBub3QgYmVmb3JlLiBUaWFub0NvcmUjMjgyMyBkb2VzIG5vdCBleHBsYWluIHdoYXQgaXQgaXMg ZXhhY3RseSB0aGF0IGZhaWxzLA0KPiB3aXRoIFJIIElTT3MuIEkndmUgYm9vdGVkIGEgd2hvbGUg bG90IG9mIHN1Y2ggSVNPcyBvdmVyIHRpbWUgKHVzaW5nIE9WTUYpLg0KPiANCj4gU28gaXMgdGhp cyAtLSB0aGF0IGlzLCB0aGUgYXNzdW1lZCB1c2Ugb2YgIi0tYm9vdGFyZWE9bWJyIiAtLSBhIHJl Y2VudCBpc3N1ZT8NCj4gDQo+IElzIGl0IGEgcmVncmVzc2lvbiB3aXRoIHRoZSBJU09zPw0KPiAN Cj4gV2hhdCBpcyB0aGUgYmFkIHN5bXB0b20gKnByZWNpc2VseSosIHdoZW4gdGhlIElTTyBpbWFn ZSBpcyBmb3JtYXR0ZWQgd2l0aCAiLS0NCj4gYm9vdGFyZWE9bWJyIj8NCj4gDQo+IFRoZSBwcm9i bGVtIGRlc2NyaXB0aW9uIGlzIHZlcnkgbGFja2luZy4NCj4gDQo+IFRoYW5rcywNCj4gTGFzemxv DQo+IA0KPiANCj4gPiBJIHRoaW5rIG1heWJlIGVkazIgTWJyIGxvZ2ljIHNob3VsZCAoYnV0IGRv ZXNuJ3QpIHNraXAgTUJSIHdob3NlDQo+ID4gcGFydGl0aW9uIHN0YXJ0cyBmcm9tIExCQSAjMCAo aW5jbHVkZXMgTUJSIGl0c2VsZikuDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4gRnJvbTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPj4gU2Vu dDogV2VkbmVzZGF5LCBKdW5lIDI0LCAyMDIwIDc6NTggUE0NCj4gPj4gVG86IGRldmVsQGVkazIu Z3JvdXBzLmlvOyBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgR2FvLCBaaGljaGFvDQo+ID4+ IDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+ID4+IENjOiBXdSwgSGFvIEEgPGhhby5hLnd1QGlu dGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA+PiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgR2Fv LCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW2VkazIt ZGV2ZWxdIFtQQVRDSF0gTWRlTW9kdWxlUGtnL1BhcnRpdGlvbkR4ZTogU2VwZXJhdGUNCj4gPj4g dGhlIFVkZiBoYW5kbGVyDQo+ID4+DQo+ID4+IE9uIDA2LzI0LzIwIDEwOjMyLCBOaSwgUmF5IHdy b3RlOg0KPiA+Pj4gWmhpY2hhbywNCj4gPj4+IFdpbGwgdHdvIEJsb2NrSW8gY2hpbGQgZGV2aWNl cyBjb3ZlciB0aGUgc2FtZSByYW5nZSBpbiB0aGUgSVNPIGFmdGVyIHlvdXINCj4gcGF0Y2g/DQo+ ID4+Pg0KPiA+Pj4gSSBkb24ndCB0aGluayB0aGF0J3MgYSB2YWxpZCBiZWhhdmlvci4NCj4gPj4N Cj4gPj4gUmlnaHQ7IEknbSBzdXJwcmlzZWQgdG8gZmluZCB0aGUgUmVkIEhhdCByZWZlcmVuY2Ug aW4gYm90aCB0aGUgY29tbWl0DQo+ID4+IG1lc3NhZ2UgYW5kIHRoZSBCWi4NCj4gPj4NCj4gPj4g SSBjYW4ndCBzYXkgSSB1bmRlcnN0YW5kIHRoZSBpc3N1ZSBhdCBoYW5kLCBidXQgYXJlIHdlIHN1 cmUgdGhpcw0KPiA+PiBpc24ndCBhIGJ1ZyAtLSBhIHN0YW5kYXJkcyBjb25mb3JtYW5jZSBwcm9i bGVtIC0tIHdpdGggdGhlIElTTyBpbiBxdWVzdGlvbj8NCj4gPj4NCj4gPj4gWmhpY2hhbywgZG8g eW91IGhhdmUgYSBsaW5rIHRvIGFuIElTTyBpbWFnZSB0aGF0IHRyaWdnZXJzIHRoZQ0KPiA+PiBw cm9ibGVtLCBhbmQgY2FuIHlvdSBwcm92aWRlIGEgaGV4ZHVtcCBvZiB0aGUgcGFydCBvZiB0aGUg aW1hZ2UgdGhhdA0KPiA+PiBpcyBlaXRoZXIgYnVnZ3ksIG9yIHRyaWdnZXJzIHRoZSBwcm9ibGVt IGluIGVkazI/IFdpdGggYSBtb3JlDQo+ID4+IHNwZWNpZmljIGlzc3VlIGRlc2NyaXB0aW9uLCBJ IG1pZ2h0IGJlIGFibGUgdG8gZmluZCBzb21lb25lIGF0IFJlZA0KPiA+PiBIYXQgd2hvIGNvdWxk IGNvbW1lbnQgd2l0aCBtb3JlIGluc2lnaHQgdGhhbiBteXNlbGYuDQo+ID4+DQo+ID4+IFRoYW5r cyENCj4gPj4gTGFzemxvDQo+ID4+DQo+ID4+Pg0KPiA+Pj4gVGhhbmtzLA0KPiA+Pj4gUmF5DQo+ ID4+Pg0KPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4gRnJvbTogR2Fv LCBaaGljaGFvIDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+ID4+Pj4gU2VudDogV2VkbmVzZGF5 LCBKdW5lIDI0LCAyMDIwIDE6NTYgUE0NCj4gPj4+PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8N Cj4gPj4+PiBDYzogV3UsIEhhbyBBIDxoYW8uYS53dUBpbnRlbC5jb20+OyBOaSwgUmF5IDxyYXku bmlAaW50ZWwuY29tPjsNCj4gPj4+PiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNv bT47IEdhbywgTGltaW5nDQo+ID4+Pj4gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+Pj4+IFN1 YmplY3Q6IFtQQVRDSF0gTWRlTW9kdWxlUGtnL1BhcnRpdGlvbkR4ZTogU2VwZXJhdGUgdGhlIFVk Zg0KPiA+Pj4+IGhhbmRsZXINCj4gPj4+Pg0KPiA+Pj4+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50 aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yODIzDQo+ID4+Pj4NCj4gPj4+PiBTb21lIGxp bnV4IGlzbyBsaWtlIFJlZGhhdCB3b3VsZCBjb250YWluIGJvdGggTUJSIGluZm8gaW4gdGhlIGZp cnN0DQo+ID4+Pj4gNTEyIGJ5dGVzIGFuZCB2b2x1bWUgaW5mbyBhdCB0aGUgYmVnaW5uaW5nIG9m IDMyS0Igb2Zmc2V0Lg0KPiA+Pj4+IEJ1dCB0aGUgcGFydGl0aW9uIGRyaXZlciB3b3VsZCBvbmx5 IGNob29zZSBvbmUgb2YgdGhlIEdQVCwgTUJSLCBhbmQNCj4gPj4+PiBVREYoZWwgdG9yaXRvIGNv bXBhdGlibGUpIHRvIGluc3RhbGwgdGhlIHBhcnRpdGlvbi4gVGhhdCB3b3VsZCBsb3NlDQo+ID4+ Pj4gb25lIGluZm8gZm9yIHN1Y2ggbGludXggSVNPIGR1cmluZyBvbmUgY29ubmVjdC4gQW5kIFVE RihlbCB0b3JpdG8NCj4gPj4+PiBjb21wYXRpYmxlKSBpcyBub3QgY29uZmxpY3RlZCB3aXRoIE1C Ui9HUFQuIFNvIHBhcnRpdGlvbiBkcml2ZXINCj4gPj4+PiBzaG91bGQgY2hlY2sgVURGIGFuZCBN QlIvR1BUIHNlcGFyYXRlbHkuDQo+ID4+Pj4NCj4gPj4+PiBDYzogSGFvIEEgV3UgPGhhby5hLnd1 QGludGVsLmNvbT4NCj4gPj4+PiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+Pj4+ IENjOiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+Pj4+IENjOiBMaW1p bmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPj4+PiBTaWduZWQtb2ZmLWJ5OiBaaGlj aGFvIEdhbyA8emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+Pj4+IC0tLQ0KPiA+Pj4+ICAuLi4v VW5pdmVyc2FsL0Rpc2svUGFydGl0aW9uRHhlL1BhcnRpdGlvbi5jICAgfCA1MiArKysrKysrKysr KysrLS0tLS0tDQo+ID4+Pj4gIDEgZmlsZSBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAxNSBk ZWxldGlvbnMoLSkNCj4gPj4+Pg0KPiA+Pj4+IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvVW5p dmVyc2FsL0Rpc2svUGFydGl0aW9uRHhlL1BhcnRpdGlvbi5jDQo+ID4+Pj4gYi9NZGVNb2R1bGVQ a2cvVW5pdmVyc2FsL0Rpc2svUGFydGl0aW9uRHhlL1BhcnRpdGlvbi5jDQo+ID4+Pj4gaW5kZXgg ZDFjODc4YWQyZS4uNTYyNDkwZGI0ZiAxMDA2NDQNCj4gPj4+PiAtLS0gYS9NZGVNb2R1bGVQa2cv VW5pdmVyc2FsL0Rpc2svUGFydGl0aW9uRHhlL1BhcnRpdGlvbi5jDQo+ID4+Pj4gKysrIGIvTWRl TW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1BhcnRpdGlvbkR4ZS9QYXJ0aXRpb24uYw0KPiA+Pj4+ IEBAIC01LDcgKzUsNyBAQA0KPiA+Pj4+ICAgIE1CUiwgYW5kIEdQVCBwYXJ0aXRpb24gc2NoZW1l cyBhcmUgc3VwcG9ydGVkLg0KPiA+Pj4+DQo+ID4+Pj4gIENvcHlyaWdodCAoYykgMjAxOCBRdWFs Y29tbSBEYXRhY2VudGVyIFRlY2hub2xvZ2llcywgSW5jLg0KPiA+Pj4+IC1Db3B5cmlnaHQgKGMp IDIwMDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+Pj4+IHJlc2Vy dmVkLjxCUj4NCj4gPj4+PiArQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAyMCwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMNCj4gPj4+PiArcmVzZXJ2ZWQuPEJSPg0KPiA+Pj4+ICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+Pj4+DQo+ID4+Pj4gICoq Lw0KPiA+Pj4+IEBAIC0zOSw3ICszOSw2IEBAIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTA0K PiA+Pj4+IGdQYXJ0aXRpb25Ecml2ZXJCaW5kaW5nID0geyAgUEFSVElUSU9OX0RFVEVDVF9ST1VU SU5FDQo+IG1QYXJ0aXRpb25EZXRlY3RSb3V0aW5lVGFibGVbXSA9IHsNCj4gPj4+PiAgICBQYXJ0 aXRpb25JbnN0YWxsR3B0Q2hpbGRIYW5kbGVzLA0KPiA+Pj4+ICAgIFBhcnRpdGlvbkluc3RhbGxN YnJDaGlsZEhhbmRsZXMsDQo+ID4+Pj4gLSAgUGFydGl0aW9uSW5zdGFsbFVkZkNoaWxkSGFuZGxl cywNCj4gPj4+PiAgICBOVUxMDQo+ID4+Pj4gIH07DQo+ID4+Pj4NCj4gPj4+PiBAQCAtMTg5LDYg KzE4OCw4IEBAIFBhcnRpdGlvbkRyaXZlckJpbmRpbmdTdGFydCAoICB7DQo+ID4+Pj4gICAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4+Pj4gICAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICBPcGVuU3RhdHVzOw0KPiA+Pj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAg ICAgVWRmU3RhdHVzOw0KPiA+Pj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgR3B0TWJy U3RhdHVzOw0KPiA+Pj4+ICAgIEVGSV9CTE9DS19JT19QUk9UT0NPTCAgICAgKkJsb2NrSW87DQo+ ID4+Pj4gICAgRUZJX0JMT0NLX0lPMl9QUk9UT0NPTCAgICAqQmxvY2tJbzI7DQo+ID4+Pj4gICAg RUZJX0RJU0tfSU9fUFJPVE9DT0wgICAgICAqRGlza0lvOw0KPiA+Pj4+IEBAIC0zMDAsMjYgKzMw MSw0NyBAQCBQYXJ0aXRpb25Ecml2ZXJCaW5kaW5nU3RhcnQgKA0KPiA+Pj4+ICAgIGlmIChCbG9j a0lvLT5NZWRpYS0+TWVkaWFQcmVzZW50IHx8DQo+ID4+Pj4gICAgICAgIChCbG9ja0lvLT5NZWRp YS0+UmVtb3ZhYmxlTWVkaWEgJiYgIUJsb2NrSW8tPk1lZGlhLQ0KPiA+TG9naWNhbFBhcnRpdGlv bikpIHsNCj4gPj4+PiAgICAgIC8vDQo+ID4+Pj4gLSAgICAvLyBUcnkgZm9yIEdQVCwgdGhlbiBs ZWdhY3kgTUJSIHBhcnRpdGlvbiB0eXBlcywgYW5kIHRoZW4gVURGIGFuZCBFbA0KPiBUb3JpdG8u DQo+ID4+Pj4gLSAgICAvLyBJZiB0aGUgbWVkaWEgc3VwcG9ydHMgYSBnaXZlbiBwYXJ0aXRpb24g dHlwZSBpbnN0YWxsIGNoaWxkIGhhbmRsZXMgdG8NCj4gPj4+PiAtICAgIC8vIHJlcHJlc2VudCB0 aGUgcGFydGl0aW9ucyBkZXNjcmliZWQgYnkgdGhlIG1lZGlhLg0KPiA+Pj4+ICsgICAgLy8gVHJ5 IGZvciBVREYgKEVsIFRPcml0byBjb21wYXRpYmxlKSBhbmQgR1BUL01CUiBwYXJ0aXRpb24gdHlw ZXMuDQo+ID4+Pj4gKyAgICAvLyBJZiB0aGUgbWVkaWEgc3VwcG9ydHMgYSBnaXZlbiBwYXJ0aXRp b24gdHlwZSwgaXQgd291bGQgaW5zdGFsbCBjaGlsZA0KPiBoYW5kbGVzDQo+ID4+Pj4gKyAgICAv LyB0byByZXByZXNlbnQgdGhlIHBhcnRpdGlvbnMgZGVzY3JpYmVkIGJ5IHRoZSBtZWRpYS4NCj4g Pj4+PiArICAgIC8vIE5vdGVzOiBHUFQgaXMgY29uZmxpY3RlZCB3aXRoIE1CUi4gSXQgd291bGQg b25seSBpbnN0YWxsIG9uZSBvZiB0aGVtIHRvDQo+IGRlc2NyaWJlDQo+ID4+Pj4gKyAgICAvLyB0 aGUgcGFydGl0aW9uLiBVREYgKG9yIEVsIFRvcml0bykgY2FuIGV4aXN0IHdpdGggTUJSLCBzbyBu ZWVkIHRvIGNoZWNrDQo+IGl0IGFsb25nIHdpdGgNCj4gPj4+PiArICAgIC8vIEdQVC9NQlIuDQo+ ID4+Pj4gICAgICAvLw0KPiA+Pj4+ICsgICAgVWRmU3RhdHVzID0gUGFydGl0aW9uSW5zdGFsbFVk ZkNoaWxkSGFuZGxlcyAoDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgIFRoaXMsDQo+ID4+Pj4g KyAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4+Pj4gKyAgICAgICAgICAg ICAgICAgIERpc2tJbywNCj4gPj4+PiArICAgICAgICAgICAgICAgICAgRGlza0lvMiwNCj4gPj4+ PiArICAgICAgICAgICAgICAgICAgQmxvY2tJbywNCj4gPj4+PiArICAgICAgICAgICAgICAgICAg QmxvY2tJbzIsDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgIFBhcmVudERldmljZVBhdGgNCj4g Pj4+PiArICAgICAgICAgICAgICAgICAgKTsNCj4gPj4+PiArDQo+ID4+Pj4gICAgICBSb3V0aW5l ID0gJm1QYXJ0aXRpb25EZXRlY3RSb3V0aW5lVGFibGVbMF07DQo+ID4+Pj4gICAgICB3aGlsZSAo KlJvdXRpbmUgIT0gTlVMTCkgew0KPiA+Pj4+IC0gICAgICBTdGF0dXMgPSAoKlJvdXRpbmUpICgN Cj4gPj4+PiAtICAgICAgICAgICAgICAgICAgIFRoaXMsDQo+ID4+Pj4gLSAgICAgICAgICAgICAg ICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+Pj4+IC0gICAgICAgICAgICAgICAgICAgRGlza0lv LA0KPiA+Pj4+IC0gICAgICAgICAgICAgICAgICAgRGlza0lvMiwNCj4gPj4+PiAtICAgICAgICAg ICAgICAgICAgIEJsb2NrSW8sDQo+ID4+Pj4gLSAgICAgICAgICAgICAgICAgICBCbG9ja0lvMiwN Cj4gPj4+PiAtICAgICAgICAgICAgICAgICAgIFBhcmVudERldmljZVBhdGgNCj4gPj4+PiAtICAg ICAgICAgICAgICAgICAgICk7DQo+ID4+Pj4gLSAgICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMp IHx8IFN0YXR1cyA9PSBFRklfTUVESUFfQ0hBTkdFRCB8fCBTdGF0dXMgPT0NCj4gRUZJX05PX01F RElBKSB7DQo+ID4+Pj4gKyAgICAgIEdwdE1iclN0YXR1cyA9ICgqUm91dGluZSkgKA0KPiA+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICBUaGlzLA0KPiA+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICBEaXNrSW8sDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIERpc2tJbzIsDQo+ID4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrSW8sDQo+ID4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIEJsb2NrSW8yLA0KPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBQ YXJlbnREZXZpY2VQYXRoDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4+ Pj4gKyAgICAgIGlmICghRUZJX0VSUk9SIChHcHRNYnJTdGF0dXMpIHx8IEdwdE1iclN0YXR1cyA9 PQ0KPiA+Pj4+ICsgRUZJX01FRElBX0NIQU5HRUQgfHwgR3B0TWJyU3RhdHVzID09IEVGSV9OT19N RURJQSkgew0KPiA+Pj4+ICAgICAgICAgIGJyZWFrOw0KPiA+Pj4+ICAgICAgICB9DQo+ID4+Pj4g ICAgICAgIFJvdXRpbmUrKzsNCj4gPj4+PiAgICAgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAgICBp ZiAoIUVGSV9FUlJPUiAoVWRmU3RhdHVzKSB8fCAhRUZJX0VSUk9SIChHcHRNYnJTdGF0dXMpKSB7 DQo+ID4+Pj4gKyAgICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+Pj4+ICsgICAgfSBlbHNl IGlmIChVZGZTdGF0dXMgPT0gRUZJX01FRElBX0NIQU5HRUQgfHwgR3B0TWJyU3RhdHVzID09DQo+ IEVGSV9NRURJQV9DSEFOR0VEKSB7DQo+ID4+Pj4gKyAgICAgIFN0YXR1cyA9IEVGSV9NRURJQV9D SEFOR0VEOw0KPiA+Pj4+ICsgICAgfSBlbHNlIGlmIChVZGZTdGF0dXMgPT0gRUZJX05PX01FRElB IHx8IEdwdE1iclN0YXR1cyA9PQ0KPiBFRklfTk9fTUVESUEpIHsNCj4gPj4+PiArICAgICAgU3Rh dHVzID0gRUZJX05PX01FRElBOw0KPiA+Pj4+ICsgICAgfQ0KPiA+Pj4+ICAgIH0NCj4gPj4+PiAg ICAvLw0KPiA+Pj4+ICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgdGhlIGRyaXZlciBpcyBhbHJlYWR5 IHN0YXJ0ZWQgKE9wZW5TdGF0dXMgPT0NCj4gPj4+PiBFRklfQUxSRUFEWV9TVEFSVEVEKSwNCj4g Pj4+PiAtLQ0KPiA+Pj4+IDIuMjEuMC53aW5kb3dzLjENCj4gPj4+DQo+ID4+Pg0KPiA+Pj4gDQo+ ID4+Pg0KPiA+DQoNCg==