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.web12.1808.1605063814928616770 for ; Tue, 10 Nov 2020 19:03:35 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=zYOhbM60; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: NQlPqdYbMe6UCEIxiUQhvMNdc89vfv3zJBQ/pIUjd9JvhqLoSfN/K854zvWnIec460SiuEPSwx GTWgQp0tnRyA== X-IronPort-AV: E=McAfee;i="6000,8403,9801"; a="170195165" X-IronPort-AV: E=Sophos;i="5.77,468,1596524400"; d="scan'208";a="170195165" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2020 19:03:33 -0800 IronPort-SDR: pWDodnXZYnrsDapVUlgkGwad0qYwfXnVVKVUyO2CPOJ5Yx2PiRNa85EFfIUlJm3H+c+U9J7iZ+ +bgb9NViXFfQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,468,1596524400"; d="scan'208";a="323125762" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga003.jf.intel.com with ESMTP; 10 Nov 2020 19:03:33 -0800 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 10 Nov 2020 19:03:33 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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.1713.5 via Frontend Transport; Tue, 10 Nov 2020 19:03:33 -0800 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (104.47.46.58) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 10 Nov 2020 19:03:26 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a0K/yJqcgLO5ImUDE/RrhoXYycsV0aGnvd8NK8vTtNfuqo2LsEn0Qmlp0oANe6saY30CmN4RleXd8uS9qCuWrvi+9yO/H6AkYAogSqC7yJAZP38HDqQZmEYAkaDpIb2bfy/uIBvVsG093YpESXpTozQ1Sr6wBRpEfufYrxLDDQVjGRUr/3oHKCyxETVSIPVDAwYFh6UGKi9AnzHh4zNaotnRdYah54MwH4zLkKInuB/QRgX6I6Cxvx+8cmelF3VVplHrJDSykUr5OcAwxngGs2DKcTf0VFNhgtH7abxiPBvUNoYvwx3v8yIggY5cR29fKgNCS0517ghMbp4Vi4d4IA== 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=/k802SeD+T4iCpVQABJWX0Coyy7UCz2/3Rdlh4uSJoU=; b=Kw8ejtLUvjdaNH2vor0+gze7dfG/oZxmxF/lr5UL6k4vOxWKLE55kM80Yzcph+eUpIQNiIYPO73257RUf9NvKNIzEbPQMcQeWUiglvoWhcamfuPeiNtcqlpdbljuLp/9BXjXPB802biz0jOVNvBzXHTD8rWdPpKFR+QefSddOhEC8Ynd5g6uoC1An60V60K6GbbUta95yDWB/HcxdHP9w+/d63EIrDKYkNyAzx9liN+U4xatmM7G4HxzRw4FtGVwvtMFgjcVIl3dyOBxyRsN68hPn7g2+cH0yrrS6B+omEnezlh2cfRJPTEbFlF01uN6cRW2uk3pFxgC/YrBymzvAg== 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=/k802SeD+T4iCpVQABJWX0Coyy7UCz2/3Rdlh4uSJoU=; b=zYOhbM60kWyImDpf1QoeVQkMFoyY+Ai4jY+RcjuFcFvb8bCtUtmRBHy+tbCJ9O5xYO3V90565EXfzmUk/bynzL4yOJtO1FrPu6dkhaH9HZXuQY18vt460ZGpp7NZwpmASkxGB1wIJQNgwWNovK8aek8iNuBge0W8syhB9a5ae6A= Received: from BL0PR11MB3236.namprd11.prod.outlook.com (2603:10b6:208:60::18) by MN2PR11MB4582.namprd11.prod.outlook.com (2603:10b6:208:265::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.19; Wed, 11 Nov 2020 03:03:24 +0000 Received: from BL0PR11MB3236.namprd11.prod.outlook.com ([fe80::4555:4e1:458c:b39a]) by BL0PR11MB3236.namprd11.prod.outlook.com ([fe80::4555:4e1:458c:b39a%3]) with mapi id 15.20.3541.025; Wed, 11 Nov 2020 03:03:24 +0000 From: "Michael D Kinney" To: Michael Kubacki , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Qian, Yi" , "Sun, Zailiang" Subject: Re: [edk2-platforms][PATCH v1 1/1] Vlv2TbltDevicePkg/FmpDeviceLib: Add LastAttemptStatus compatibility Thread-Topic: [edk2-platforms][PATCH v1 1/1] Vlv2TbltDevicePkg/FmpDeviceLib: Add LastAttemptStatus compatibility Thread-Index: AQHWmD4kh6Ei0ua3Q06xjbCxf/Gtp6mt7jWAgAxH64CACEewYA== Date: Wed, 11 Nov 2020 03:03:23 +0000 Message-ID: References: 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.5.1.3 authentication-results: outlook.com; dkim=none (message not signed) header.d=none;outlook.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d05ce08f-bba9-42f7-487e-08d885ee5a81 x-ms-traffictypediagnostic: MN2PR11MB4582: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: q9d2FroCDObgyi2ieiFKg8Dq7l+cq8T5At1j61n/poKpGF7uVcsn8IJCNv0V22nlYxACrwH5aZxlqCHcjXXzHOYEtik9MK/o787VF+IwTyq6VSghA0C7rABJmgGGj5C8aeTvDJw44Wq8cqiUozR7QnMMsZlZySPfhbGKuJf8GEev1sg4zmoeuptbLxPeWOC91NsE+OL9g7kx9fqZG9LGTagEk2Qu/4yTq7DrblJpk/QH/QBJ0fEzgumnrM9+nE/QIJDZ/n2yOKmCGktNhzQN5KqwGLP1Itx2RVlUDv67ieN4o2unt9bUxvTh4iyf0WYQ x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR11MB3236.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(396003)(376002)(346002)(136003)(366004)(76116006)(478600001)(7696005)(316002)(64756008)(66476007)(66946007)(54906003)(110136005)(52536014)(26005)(66556008)(53546011)(186003)(6506007)(66446008)(45080400002)(55016002)(4326008)(2906002)(8676002)(9686003)(8936002)(5660300002)(30864003)(107886003)(86362001)(33656002)(83380400001)(71200400001)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: wBgSRL1q9gXnpmzWi/SqA7Um2rh5beDxhCetsPxjW9PGLnwaGchQgabElsxf+4mawBY4jVrFpyGZm0fo6FAVwcorcjq8/f+W9i9//1LntKsp7OxVIo1dd11Nt4MDdpM6Xt5Zx/n3bjpQFFuubjYQSxzIv0mWi6klHhvSl2cwzTXB6RZaceU+I20MXgfOJJdo/ZJElc4YR+j5TmPZbHDf9tGBiEuOmPooaDrUx/GfLq0CuW4HtbuyMZKYXxo49gszJHtZvfmi0/jZlnXxko9VPBXwK+DHfaqLDRVFbGTkND4MKdHrPLt2ZKMakHPoKcrF/TsmGx1/WXXc8vTKgp8uGVcc8mbGs9/14an/+Da76yMSp2Lzt8adtMNBZeSRcdriRsg7LtOTd9eQGOjZiBPjlrNjo3Gumuu61S7H8sOhuXVEJ05H7gYZl64YhwAzML00cC6KhTdBReCaUGMDuCVHsNwcPvSNkkxKlJOxalF/YermS6gNF+1Wot9ScdH9D1bjN5dTsHB8NQc4aAsMPUgSP9ShzKT/rRROg1F5LhPylNs2r2YXehUXW5dx7YsniraQxfRi/oPDlMWSR40LkWw/e0G3NmcakTy+r2Nr/N399edB70rlZ7NYYfCf+1hnTn8sZBPNzbaFayLxrLQlpFNQdg== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL0PR11MB3236.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d05ce08f-bba9-42f7-487e-08d885ee5a81 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2020 03:03:23.9098 (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: 9v2DVxlOwlyzn1UP4QOnDV4FHJr+mSFlBF9LbeGLQgGA6DUwgoCqP4Htwo6bHeKwHVJCdgts6Z9fCt/OpokE9w3gJARP3sN2w1ktkikzqLw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4582 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 SGkgTWljaGFlbCwNCg0KVGhpcyBwYXRjaCBoYXMgYmVlbiBtZXJnZWQuDQoNClRoYW5rcywNCg0K TWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1pY2hhZWwgS3Vi YWNraSA8bWljaGFlbC5rdWJhY2tpQG91dGxvb2suY29tPg0KPiBTZW50OiBUaHVyc2RheSwgTm92 ZW1iZXIgNSwgMjAyMCAxMjozNiBQTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFFpYW4sIFlp IDx5aS5xaWFuQGludGVsLmNvbT47IFN1biwgWmFpbGlhbmcgPHphaWxpYW5nLnN1bkBpbnRlbC5j b20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1wbGF0Zm9ybXNdW1BBVENIIHYxIDEvMV0gVmx2MlRi bHREZXZpY2VQa2cvRm1wRGV2aWNlTGliOiBBZGQgTGFzdEF0dGVtcHRTdGF0dXMgY29tcGF0aWJp bGl0eQ0KPiANCj4gSGkgTWlrZSwNCj4gDQo+IEkgc2F3IG90aGVyIFZsdjJUYmx0RGV2aWNlUGtn IHBhdGNoZXMgd2VyZSBtZXJnZWQgeWVzdGVyZGF5LiBEbyB5b3Uga25vdw0KPiB3aGVuIHRoaXMg cGF0Y2ggd2lsbCBiZSBtZXJnZWQ/DQo+IA0KPiBUaGFua3MsDQo+IE1pY2hhZWwNCj4gDQo+IE9u IDEwLzI4LzIwMjAgNjoxMiBQTSwgS2lubmV5LCBNaWNoYWVsIEQgd3JvdGU6DQo+ID4gUmV2aWV3 ZWQtYnk6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ DQo+ID4gSSBhbHNvIHZlcmlmaWVkIGJ1aWxkIGFuZCBib290IGFuZCBGTVAgYmFzZWQgY2Fwc3Vs ZSB1cGRhdGVzIHdvcmsgYXMgZXhwZWN0ZWQuDQo+ID4NCj4gPiBUZXN0ZWQtYnk6IE1pY2hhZWwg RCBLaW5uZXkgPE1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+DQo+ID4gVGhhbmtzLA0K PiA+DQo+ID4gTWlrZQ0KPiA+DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPj4gRnJvbTogbWljaGFlbC5rdWJhY2tpQG91dGxvb2suY29tIDxtaWNoYWVsLmt1YmFja2lA b3V0bG9vay5jb20+DQo+ID4+IFNlbnQ6IFRodXJzZGF5LCBPY3RvYmVyIDEsIDIwMjAgMjo1OSBQ TQ0KPiA+PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPj4gQ2M6IEtpbm5leSwgTWljaGFl bCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IFFpYW4sIFlpIDx5aS5xaWFuQGludGVs LmNvbT47IFN1biwgWmFpbGlhbmcNCj4gPHphaWxpYW5nLnN1bkBpbnRlbC5jb20+DQo+ID4+IFN1 YmplY3Q6IFtlZGsyLXBsYXRmb3Jtc11bUEFUQ0ggdjEgMS8xXSBWbHYyVGJsdERldmljZVBrZy9G bXBEZXZpY2VMaWI6IEFkZCBMYXN0QXR0ZW1wdFN0YXR1cyBjb21wYXRpYmlsaXR5DQo+ID4+DQo+ ID4+IEZyb206IE1pY2hhZWwgS3ViYWNraSA8bWljaGFlbC5rdWJhY2tpQG1pY3Jvc29mdC5jb20+ DQo+ID4+DQo+ID4+IE1ha2VzIHRoZSBjaGFuZ2VzIG5lY2Vzc2FyeSBmb3IgdGhlc2UgbGlicmFy eSBpbnN0YW5jZXMgb2YNCj4gPj4gRm1wRGV2aWNlTGliIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBu ZXcgZnVuY3Rpb25zIGFkZGVkIHJlY2VudGx5DQo+ID4+IHRvIEZtcERldmljZUxpYi4NCj4gPj4N Cj4gPj4gVHdvIG5ldyBmdW5jdGlvbnMgd2VyZSBpbnRyb2R1Y2VkIGluIEZtcERldmljZUxpYiB0 byBhbGxvdyBhDQo+ID4+IGxpYnJhcnkgaW5zdGFuY2UgdG8gcmV0dXJuIGEgTGFzdCBBdHRlbXB0 IFN0YXR1cyBjb2RlIGR1cmluZw0KPiA+PiBjaGVjayBpbWFnZSBhbmQgc2V0IGltYWdlIG9wZXJh dGlvbnM6DQo+ID4+ICAgIDEuIEZtcERldmljZUNoZWNrSW1hZ2VXaXRoU3RhdHVzICggKQ0KPiA+ PiAgICAyLiBGbXBEZXZpY2VTZXRJbWFnZVdpdGhTdGF0dXMgKCApDQo+ID4+DQo+ID4+IEZtcER4 ZSAoaW4gRm1wRGV2aWNlUGtnKSB3aWxsIGJlZ2luIGNhbGxpbmcgdGhlc2UgbmV3IGZ1bmN0aW9u cw0KPiA+PiBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91cyBmdW5jdGlvbnMuIFRoZXJlZm9yZSwgdGhp cyBjaGFuZ2U6DQo+ID4+ICAgIDEuIEFkZHMgdGhlc2UgZnVuY3Rpb25zIHRvIFZsdjJUYmx0RGV2 aWNlUGtnIGltcGxlbWVudGF0aW9ucw0KPiA+PiAgICAyLiBNb3ZlcyB0aGUgbWFpbiBmdW5jdGlv bmFsaXR5IHRvIHRoZXNlIG5ldyBmdW5jdGlvbnMNCj4gPj4gICAgMy4gVXBkYXRlcyB0aGUgb2xk IGZ1bmN0aW9ucyB0byBjYWxsIHRoZSBuZXcgZnVuY3Rpb25zDQo+ID4+ICAgICAgIChmb3IgYmFj a3dhcmQgY29tcGF0aWJpbGl0eSkNCj4gPj4NCj4gPj4gTm90ZTogQXMgb2YgdGhpcyBjb21taXQs IHRoZSBWbHYyVGJsdERldmljZVBrZyBidWlsZCBpcyBicm9rZW4NCj4gPj4gZHVlIHRvOg0KPiA+ PiAgICAxLiBBIHJlcXVpcmVkIFJuZ0xpYiBsaWJyYXJ5IGluc3RhbmNlIG5vdCBkZWZpbmVkIGJ5 IHRoZSBwbGF0Zm9ybQ0KPiA+PiAgICAyLiBPdGhlciBGTVAgbGlicmFyaWVzIG5vdCBiZWluZyBk ZWZpbmVkIGJ5IHRoZSBwbGF0Zm9ybQ0KPiA+PiAgICAgICAoZS5nLiBGbXBEZXBlbmRlbmN5TGli LCBGbXBEZXBlbmRlbmN5Q2hlY2tMaWIsIGV0Yy4pDQo+ID4+DQo+ID4+IFRob3NlIGNoYW5nZXMg d2VyZSBmaXhlZCBsb2NhbGx5IHRvIHRlc3QgdGhlIGNoYW5nZXMgaW4gdGhpcyBjb21taXQNCj4g Pj4gYnV0IG1haW50YWluZXJzIHNob3VsZCBtYWtlIHRoZSBwcm9wZXIgY2hhbmdlcyBmb3IgdGhv c2UgaXNzdWVzLg0KPiA+Pg0KPiA+PiBDYzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+DQo+ID4+IENjOiBZaSBRaWFuIDx5aS5xaWFuQGludGVsLmNvbT4NCj4g Pj4gQ2M6IFphaWxpYW5nIFN1biA8emFpbGlhbmcuc3VuQGludGVsLmNvbT4NCj4gPj4gU2lnbmVk LW9mZi1ieTogTWljaGFlbCBLdWJhY2tpIDxtaWNoYWVsLmt1YmFja2lAbWljcm9zb2Z0LmNvbT4N Cj4gPj4gLS0tDQo+ID4+DQo+ID4+IE5vdGVzOg0KPiA+PiAgICAgIE9ubHkgYnVpbGQgd2FzIGNo ZWNrZWQsIEkgZG8gbm90IGhhdmUgYWNjZXNzIHRvIGENCj4gPj4gICAgICBWTFYyIGRldmljZSBm b3IgdGVzdGluZy4NCj4gPj4NCj4gPj4gICBQbGF0Zm9ybS9JbnRlbC9WbHYyVGJsdERldmljZVBr Zy9GZWF0dXJlL0NhcHN1bGUvTGlicmFyeS9GbXBEZXZpY2VMaWIvRm1wRGV2aWNlTGliLmMgICAg ICAgfCAyOTkgKysrKysrKysrKysrKysrLS0tLS0NCj4gPj4gICBQbGF0Zm9ybS9JbnRlbC9WbHYy VGJsdERldmljZVBrZy9GZWF0dXJlL0NhcHN1bGUvTGlicmFyeS9GbXBEZXZpY2VMaWJTYW1wbGUv Rm1wRGV2aWNlTGliLmMgfCAyODQgKysrKysrKysrKysrKystLS0tLQ0KPiA+PiAgIDIgZmlsZXMg Y2hhbmdlZCwgNDQ2IGluc2VydGlvbnMoKyksIDEzNyBkZWxldGlvbnMoLSkNCj4gPj4NCj4gPj4g ZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1ZsdjJUYmx0RGV2aWNlUGtnL0ZlYXR1cmUvQ2Fw c3VsZS9MaWJyYXJ5L0ZtcERldmljZUxpYi9GbXBEZXZpY2VMaWIuYw0KPiA+PiBiL1BsYXRmb3Jt L0ludGVsL1ZsdjJUYmx0RGV2aWNlUGtnL0ZlYXR1cmUvQ2Fwc3VsZS9MaWJyYXJ5L0ZtcERldmlj ZUxpYi9GbXBEZXZpY2VMaWIuYw0KPiA+PiBpbmRleCBkOGM5MDM2MDEyYWQuLmRmOGEzNmQ5ODU0 YyAxMDA2NDQNCj4gPj4gLS0tIGEvUGxhdGZvcm0vSW50ZWwvVmx2MlRibHREZXZpY2VQa2cvRmVh dHVyZS9DYXBzdWxlL0xpYnJhcnkvRm1wRGV2aWNlTGliL0ZtcERldmljZUxpYi5jDQo+ID4+ICsr KyBiL1BsYXRmb3JtL0ludGVsL1ZsdjJUYmx0RGV2aWNlUGtnL0ZlYXR1cmUvQ2Fwc3VsZS9MaWJy YXJ5L0ZtcERldmljZUxpYi9GbXBEZXZpY2VMaWIuYw0KPiA+PiBAQCAtMSw2ICsxLDYgQEANCj4g Pj4gICAvKioNCj4gPj4NCj4gPj4gLUNvcHlyaWdodCAoYykgMjAxNiwgTWljcm9zb2Z0IENvcnBv cmF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gK0NvcHlyaWdodCAoYykgTWljcm9z b2Z0IENvcnBvcmF0aW9uLjxCUj4NCj4gPj4gICBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENv cnBvcmF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4NCj4gPj4gICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+PiBAQCAtOCw3ICs4LDggQEAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4gICAqKi8N Cj4gPj4NCj4gPj4gICAjaW5jbHVkZSA8UGlEeGUuaD4NCj4gPj4gLQ0KPiA+PiArI2luY2x1ZGUg PExhc3RBdHRlbXB0U3RhdHVzLmg+DQo+ID4+ICsjaW5jbHVkZSA8R3VpZC9TeXN0ZW1SZXNvdXJj ZVRhYmxlLmg+DQo+ID4+ICAgI2luY2x1ZGUgPExpYnJhcnkvRm1wRGV2aWNlTGliLmg+DQo+ID4+ DQo+ID4+ICAgI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPj4gQEAgLTQ0NCwyMCAr NDQ1LDE3IEBAIEZtcERldmljZUdldEltYWdlICgNCj4gPj4gICB9DQo+ID4+DQo+ID4+ICAgLyoq DQo+ID4+IC0gIFVwZGF0ZXMgdGhlIGZpcm13YXJlIGltYWdlIG9mIHRoZSBkZXZpY2UuDQo+ID4+ IC0NCj4gPj4gLSAgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBoYXJkd2FyZSB3aXRoIHRoZSBu ZXcgZmlybXdhcmUgaW1hZ2UuICBUaGlzIGZ1bmN0aW9uDQo+ID4+IC0gIHJldHVybnMgRUZJX1VO U1VQUE9SVEVEIGlmIHRoZSBmaXJtd2FyZSBpbWFnZSBpcyBub3QgdXBkYXRhYmxlLiAgSWYgdGhl DQo+ID4+IC0gIGZpcm13YXJlIGltYWdlIGlzIHVwZGF0YWJsZSwgdGhlIGZ1bmN0aW9uIHNob3Vs ZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgbWluaW1hbA0KPiA+PiAtICB2YWxpZGF0aW9ucyBiZWZv cmUgcHJvY2VlZGluZyB0byBkbyB0aGUgZmlybXdhcmUgaW1hZ2UgdXBkYXRlLg0KPiA+PiAtICAg IC0gVmFsaWRhdGUgdGhlIGltYWdlIGlzIGEgc3VwcG9ydGVkIGltYWdlIGZvciB0aGlzIGRldmlj ZS4gIFRoZSBmdW5jdGlvbg0KPiA+PiAtICAgICAgcmV0dXJucyBFRklfQUJPUlRFRCBpZiB0aGUg aW1hZ2UgaXMgdW5zdXBwb3J0ZWQuICBUaGUgZnVuY3Rpb24gY2FuDQo+ID4+IC0gICAgICBvcHRp b25hbGx5IHByb3ZpZGUgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB3aHkgdGhlIGltYWdl IGlzIG5vdCBhDQo+ID4+IC0gICAgICBzdXBwb3J0ZWQgaW1hZ2UuDQo+ID4+IC0gICAgLSBWYWxp ZGF0ZSB0aGUgZGF0YSBmcm9tIFZlbmRvckNvZGUgaWYgbm90IG51bGwuICBJbWFnZSB2YWxpZGF0 aW9uIG11c3QgYmUNCj4gPj4gLSAgICAgIHBlcmZvcm1lZCBiZWZvcmUgVmVuZG9yQ29kZSBkYXRh IHZhbGlkYXRpb24uICBWZW5kb3JDb2RlIGRhdGEgaXMgaWdub3JlZA0KPiA+PiAtICAgICAgb3Ig Y29uc2lkZXJlZCBpbnZhbGlkIGlmIGltYWdlIHZhbGlkYXRpb24gZmFpbGVkLiAgVGhlIGZ1bmN0 aW9uIHJldHVybnMNCj4gPj4gLSAgICAgIEVGSV9BQk9SVEVEIGlmIHRoZSBkYXRhIGlzIGludmFs aWQuDQo+ID4+ICsgIFVwZGF0ZXMgYSBmaXJtd2FyZSBkZXZpY2Ugd2l0aCBhIG5ldyBmaXJtd2Fy ZSBpbWFnZS4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucw0KPiA+PiArICBFRklfVU5TVVBQT1JURUQg aWYgdGhlIGZpcm13YXJlIGltYWdlIGlzIG5vdCB1cGRhdGFibGUuICBJZiB0aGUgZmlybXdhcmUg aW1hZ2UNCj4gPj4gKyAgaXMgdXBkYXRhYmxlLCB0aGUgZnVuY3Rpb24gc2hvdWxkIHBlcmZvcm0g dGhlIGZvbGxvd2luZyBtaW5pbWFsIHZhbGlkYXRpb25zDQo+ID4+ICsgIGJlZm9yZSBwcm9jZWVk aW5nIHRvIGRvIHRoZSBmaXJtd2FyZSBpbWFnZSB1cGRhdGUuDQo+ID4+ICsgICAgLSBWYWxpZGF0 ZSB0aGF0IHRoZSBpbWFnZSBpcyBhIHN1cHBvcnRlZCBpbWFnZSBmb3IgdGhpcyBmaXJtd2FyZSBk ZXZpY2UuDQo+ID4+ICsgICAgICBSZXR1cm4gRUZJX0FCT1JURUQgaWYgdGhlIGltYWdlIGlzIG5v dCBzdXBwb3J0ZWQuICBBZGRpdGlvbmFsIGRldGFpbHMNCj4gPj4gKyAgICAgIG9uIHdoeSB0aGUg aW1hZ2UgaXMgbm90IGEgc3VwcG9ydGVkIGltYWdlIG1heSBiZSByZXR1cm5lZCBpbiBBYm9ydFJl YXNvbi4NCj4gPj4gKyAgICAtIFZhbGlkYXRlIHRoZSBkYXRhIGZyb20gVmVuZG9yQ29kZSBpZiBp cyBub3QgTlVMTC4gIEZpcm13YXJlIGltYWdlDQo+ID4+ICsgICAgICB2YWxpZGF0aW9uIG11c3Qg YmUgcGVyZm9ybWVkIGJlZm9yZSBWZW5kb3JDb2RlIGRhdGEgdmFsaWRhdGlvbi4NCj4gPj4gKyAg ICAgIFZlbmRvckNvZGUgZGF0YSBpcyBpZ25vcmVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZCBpZiBp bWFnZSB2YWxpZGF0aW9uDQo+ID4+ICsgICAgICBmYWlscy4gIFJldHVybiBFRklfQUJPUlRFRCBp ZiB0aGUgVmVuZG9yQ29kZSBkYXRhIGlzIGludmFsaWQuDQo+ID4+DQo+ID4+ICAgICBWZW5kb3JD b2RlIGVuYWJsZXMgdmVuZG9yIHRvIGltcGxlbWVudCB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUg aW1hZ2UgdXBkYXRlDQo+ID4+ICAgICBwb2xpY3kuICBOdWxsIGlmIHRoZSBjYWxsZXIgZGlkIG5v dCBzcGVjaWZ5IHRoZSBwb2xpY3kgb3IgdXNlIHRoZSBkZWZhdWx0DQo+ID4+IEBAIC00NzAsMzgg KzQ2OCw1NiBAQCBGbXBEZXZpY2VHZXRJbWFnZSAoDQo+ID4+ICAgICBoYXZlIHRoZSBvcHRpb24g dG8gcHJvdmlkZSBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGFib3J0IHJlYXNv biB0bw0KPiA+PiAgICAgdGhlIGNhbGxlci4NCj4gPj4NCj4gPj4gLSAgQHBhcmFtW2luXSAgSW1h Z2UgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBuZXcgaW1hZ2UuDQo+ID4+IC0gIEBwYXJhbVtp bl0gIEltYWdlU2l6ZSAgICAgICAgIFNpemUgb2YgdGhlIG5ldyBpbWFnZSBpbiBieXRlcy4NCj4g Pj4gKyAgQHBhcmFtW2luXSAgSW1hZ2UgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBuZXcgZmly bXdhcmUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbVtpbl0gIEltYWdlU2l6ZSAgICAgICAgIFNpemUs IGluIGJ5dGVzLCBvZiB0aGUgbmV3IGZpcm13YXJlIGltYWdlLg0KPiA+PiAgICAgQHBhcmFtW2lu XSAgVmVuZG9yQ29kZSAgICAgICAgVGhpcyBlbmFibGVzIHZlbmRvciB0byBpbXBsZW1lbnQgdmVu ZG9yLXNwZWNpZmljDQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcm13 YXJlIGltYWdlIHVwZGF0ZSBwb2xpY3kuIE51bGwgaW5kaWNhdGVzIHRoZQ0KPiA+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXIgZGlkIG5vdCBzcGVjaWZ5IHRoZSBwb2xp Y3kgb3IgdXNlIHRoZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJt d2FyZSBpbWFnZSB1cGRhdGUgcG9saWN5LiAgTlVMTCBpbmRpY2F0ZXMNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNhbGxlciBkaWQgbm90IHNwZWNpZnkgdGhlIHBv bGljeSBvciB1c2UgdGhlDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZWZhdWx0IHBvbGljeS4NCj4gPj4gLSAgQHBhcmFtW2luXSAgUHJvZ3Jlc3MgICAgICAgICAgQSBm dW5jdGlvbiB1c2VkIGJ5IHRoZSBkcml2ZXIgdG8gcmVwb3J0IHRoZQ0KPiA+PiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyBvZiB0aGUgZmlybXdhcmUgdXBkYXRlLg0K PiA+PiAtICBAcGFyYW1baW5dICBDYXBzdWxlRndWZXJzaW9uICBGTVAgUGF5bG9hZCBIZWFkZXIg dmVyc2lvbiBvZiB0aGUgaW1hZ2UuDQo+ID4+IC0gIEBwYXJhbVtvdXRdIEFib3J0UmVhc29uICAg ICAgIEEgcG9pbnRlciB0byBhIHBvaW50ZXIgdG8gYSBudWxsLXRlcm1pbmF0ZWQNCj4gPj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHByb3ZpZGluZyBtb3JlIGRldGFp bHMgZm9yIHRoZSBhYm9ydGVkDQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9wZXJhdGlvbi4gVGhlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgYnkgdGhpcw0KPiA+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIEFsbG9jYXRlUG9vbCgpLCBh bmQgaXQgaXMgdGhlDQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxl cidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgaXQgd2l0aCBhIGNhbGwNCj4gPj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG8gRnJlZVBvb2woKS4NCj4gPj4gKyAgQHBhcmFtW2lu XSAgUHJvZ3Jlc3MgICAgICAgICAgQSBmdW5jdGlvbiB1c2VkIHRvIHJlcG9ydCB0aGUgcHJvZ3Jl c3Mgb2YNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRpbmcgdGhl IGZpcm13YXJlIGRldmljZSB3aXRoIHRoZSBuZXcNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmlybXdhcmUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbVtpbl0gIENhcHN1bGVG d1ZlcnNpb24gIFRoZSB2ZXJzaW9uIG9mIHRoZSBuZXcgZmlybXdhcmUgaW1hZ2UgZnJvbSB0aGUN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIGNhcHN1bGUgdGhh dCBwcm92aWRlZCB0aGUgbmV3IGZpcm13YXJlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGltYWdlLg0KPiA+PiArICBAcGFyYW1bb3V0XSBBYm9ydFJlYXNvbiAgICAgICBB IHBvaW50ZXIgdG8gYSBwb2ludGVyIHRvIGEgTnVsbC10ZXJtaW5hdGVkDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGUgc3RyaW5nIHByb3ZpZGluZyBtb3JlIGRl dGFpbHMgb24gYW4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRl ZCBvcGVyYXRpb24uIFRoZSBidWZmZXIgaXMgYWxsb2NhdGVkIGJ5DQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZnVuY3Rpb24gd2l0aA0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFRklfQk9PVF9TRVJWSUNFUy5BbGxvY2F0ZVBvb2woKS4g IEl0IGlzIHRoZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXIn cyByZXNwb25zaWJpbGl0eSB0byBmcmVlIHRoaXMgYnVmZmVyIHdpdGgNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0JPT1RfU0VSVklDRVMuRnJlZVBvb2woKS4NCj4g Pj4gKyAgQHBhcmFtW291dF0gTGFzdEF0dGVtcHRTdGF0dXMgQSBwb2ludGVyIHRvIGEgVUlOVDMy IHRoYXQgaG9sZHMgdGhlIGxhc3QgYXR0ZW1wdA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdGF0dXMgdG8gcmVwb3J0IGJhY2sgdG8gdGhlIEVTUlQgdGFibGUgaW4gY2Fz ZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBlcnJvci4gVGhpcyB2 YWx1ZSB3aWxsIG9ubHkgYmUgY2hlY2tlZCB3aGVuIHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvci4NCj4gPj4NCj4gPj4g LSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBkZXZpY2Ugd2FzIHN1Y2Nlc3Nm dWxseSB1cGRhdGVkIHdpdGggdGhlDQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuZXcgaW1hZ2UuDQo+ID4+IC0gIEByZXR2YWwgRUZJX0FCT1JURUQgICAgICAgICAgICBU aGUgb3BlcmF0aW9uIGlzIGFib3J0ZWQuDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRoZSByZXR1cm4gc3RhdHVzIGNvZGUgbXVzdCBmYWxsIGluIHRoZSByYW5nZSBvZg0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQVNUX0FUVEVNUFRfU1RBVFVT X0RFVklDRV9MSUJSQVJZX01JTl9FUlJPUl9DT0RFX1ZBTFVFIHRvDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExBU1RfQVRURU1QVF9TVEFUVVNfREVWSUNFX0xJQlJBUllf TUFYX0VSUk9SX0NPREVfVkFMVUUuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSWYgdGhlIHZhbHVlIGZhbGxzIG91dHNpZGUgdGhpcyByYW5nZSwgaXQgd2ls bCBiZSBjb252ZXJ0ZWQNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8g TEFTVF9BVFRFTVBUX1NUQVRVU19FUlJPUl9VTlNVQ0NFU1NGVUwuDQo+ID4+ICsNCj4gPj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBmaXJtd2FyZSBkZXZpY2Ugd2FzIHN1 Y2Nlc3NmdWxseSB1cGRhdGVkDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3aXRoIHRoZSBuZXcgZmlybXdhcmUgaW1hZ2UuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0FCT1JU RUQgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGFib3J0ZWQuICBBZGRpdGlvbmFsIGRldGFp bHMNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBwcm92aWRlZCBp biBBYm9ydFJlYXNvbi4NCj4gPj4gICAgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBU aGUgSW1hZ2Ugd2FzIE5VTEwuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS ICBMYXN0QXR0ZW1wdFN0YXR1cyB3YXMgTlVMTC4NCj4gPj4gICAgIEByZXR2YWwgRUZJX1VOU1VQ UE9SVEVEICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+DQo+ID4+ ICAgKiovDQo+ID4+ICAgRUZJX1NUQVRVUw0KPiA+PiAgIEVGSUFQSQ0KPiA+PiAtRm1wRGV2aWNl U2V0SW1hZ2UgKA0KPiA+PiArRm1wRGV2aWNlU2V0SW1hZ2VXaXRoU3RhdHVzICgNCj4gPj4gICAg IElOICBDT05TVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpJbWFn ZSwNCj4gPj4gICAgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEltYWdlU2l6ZSwNCj4gPj4gLSAgSU4gIENPTlNUIFZPSUQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKlZlbmRvckNvZGUsDQo+ID4+IC0gIElOICBFRklfRklSTVdB UkVfTUFOQUdFTUVOVF9VUERBVEVfSU1BR0VfUFJPR1JFU1MgIFByb2dyZXNzLA0KPiA+PiArICBJ TiAgQ09OU1QgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVmVuZG9y Q29kZSwgICAgICAgT1BUSU9OQUwNCj4gPj4gKyAgSU4gIEVGSV9GSVJNV0FSRV9NQU5BR0VNRU5U X1VQREFURV9JTUFHRV9QUk9HUkVTUyAgUHJvZ3Jlc3MsICAgICAgICAgIE9QVElPTkFMDQo+ID4+ ICAgICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD YXBzdWxlRndWZXJzaW9uLA0KPiA+PiAtICBPVVQgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqKkFib3J0UmVhc29uDQo+ID4+ICsgIE9VVCBDSEFSMTYgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqQWJvcnRSZWFzb24sDQo+ID4+ ICsgIE9VVCBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpM YXN0QXR0ZW1wdFN0YXR1cw0KPiA+PiAgICAgKQ0KPiA+PiAgIHsNCj4gPj4gICAgIEVGSV9TVEFU VVMgICAgICAgICAgU3RhdHVzOw0KPiA+PiBAQCAtNTEzLDI1ICs1MjksMjcgQEAgRm1wRGV2aWNl U2V0SW1hZ2UgKA0KPiA+PiAgICAgVUlOVE4gICAgICAgICAgICAgICBCeXRlc1dyaXR0ZW47DQo+ ID4+DQo+ID4+ICAgICBVcGRhdGVhYmxlID0gMDsNCj4gPj4gLSAgU3RhdHVzID0gRm1wRGV2aWNl Q2hlY2tJbWFnZSAoSW1hZ2UsIEltYWdlU2l6ZSwgJlVwZGF0ZWFibGUpOw0KPiA+PiArICBTdGF0 dXMgPSBGbXBEZXZpY2VDaGVja0ltYWdlV2l0aFN0YXR1cyAoSW1hZ2UsIEltYWdlU2l6ZSwgJlVw ZGF0ZWFibGUsIExhc3RBdHRlbXB0U3RhdHVzKTsNCj4gPj4gICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPj4gLSAgICBERUJVRygoREVCVUdfRVJST1IsICJGbXBEZXZpY2VTZXRJbWFn ZSAtIENoZWNrIEltYWdlIGZhaWxlZCB3aXRoICVyLlxuIiwgU3RhdHVzKSk7DQo+ID4+ICsgICAg REVCVUcoKERFQlVHX0VSUk9SLCAiRm1wRGV2aWNlU2V0SW1hZ2VXaXRoU3RhdHVzIC0gQ2hlY2sg SW1hZ2UgZmFpbGVkIHdpdGggJXIuXG4iLCBTdGF0dXMpKTsNCj4gPj4gICAgICAgcmV0dXJuIFN0 YXR1czsNCj4gPj4gICAgIH0NCj4gPj4NCj4gPj4gICAgIGlmIChVcGRhdGVhYmxlICE9IElNQUdF X1VQREFUQUJMRV9WQUxJRCkgew0KPiA+PiAtICAgIERFQlVHKChERUJVR19FUlJPUiwgIkZtcERl dmljZVNldEltYWdlIC0gQ2hlY2sgSW1hZ2UgcmV0dXJuZWQgdGhhdCB0aGUgSW1hZ2Ugd2FzIG5v dCB2YWxpZCBmb3IgdXBkYXRlLiAgVXBkYXRhYmxlDQo+ID4+IHZhbHVlID0gMHglWC5cbiIsIFVw ZGF0ZWFibGUpKTsNCj4gPj4gKyAgICBERUJVRygoREVCVUdfRVJST1IsICJGbXBEZXZpY2VTZXRJ bWFnZVdpdGhTdGF0dXMgLSBDaGVjayBJbWFnZSByZXR1cm5lZCB0aGF0IHRoZSBJbWFnZSB3YXMg bm90IHZhbGlkIGZvciB1cGRhdGUuDQo+ID4+IFVwZGF0YWJsZSB2YWx1ZSA9IDB4JVguXG4iLCBV cGRhdGVhYmxlKSk7DQo+ID4+ICsgICAgKkxhc3RBdHRlbXB0U3RhdHVzID0gTEFTVF9BVFRFTVBU X1NUQVRVU19ERVZJQ0VfTElCUkFSWV9NSU5fRVJST1JfQ09ERV9WQUxVRTsNCj4gPj4gICAgICAg cmV0dXJuIEVGSV9BQk9SVEVEOw0KPiA+PiAgICAgfQ0KPiA+Pg0KPiA+PiAgICAgaWYgKFByb2dy ZXNzID09IE5VTEwpIHsNCj4gPj4gLSAgICBERUJVRygoREVCVUdfRVJST1IsICJGbXBEZXZpY2VT ZXRJbWFnZSAtIEludmFsaWQgcHJvZ3Jlc3MgY2FsbGJhY2tcbiIpKTsNCj4gPj4gKyAgICBERUJV RygoREVCVUdfRVJST1IsICJGbXBEZXZpY2VTZXRJbWFnZVdpdGhTdGF0dXMgLSBJbnZhbGlkIHBy b2dyZXNzIGNhbGxiYWNrXG4iKSk7DQo+ID4+ICsgICAgKkxhc3RBdHRlbXB0U3RhdHVzID0gTEFT VF9BVFRFTVBUX1NUQVRVU19ERVZJQ0VfTElCUkFSWV9NSU5fRVJST1JfQ09ERV9WQUxVRTsNCj4g Pj4gICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4gICAgIH0NCj4gPj4N Cj4gPj4gICAgIFN0YXR1cyA9IFByb2dyZXNzICgxNSk7DQo+ID4+ICAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4+IC0gICAgREVCVUcoKERFQlVHX0VSUk9SLCAiRm1wRGV2aWNlU2V0 SW1hZ2UgLSBQcm9ncmVzcyBDYWxsYmFjayBmYWlsZWQgd2l0aCBTdGF0dXMgJXIuXG4iLCBTdGF0 dXMpKTsNCj4gPj4gKyAgICBERUJVRygoREVCVUdfRVJST1IsICJGbXBEZXZpY2VTZXRJbWFnZVdp dGhTdGF0dXMgLSBQcm9ncmVzcyBDYWxsYmFjayBmYWlsZWQgd2l0aCBTdGF0dXMgJXIuXG4iLCBT dGF0dXMpKTsNCj4gPj4gICAgIH0NCj4gPj4NCj4gPj4gICAgIC8vDQo+ID4+IEBAIC01MzksNyAr NTU3LDcgQEAgRm1wRGV2aWNlU2V0SW1hZ2UgKA0KPiA+PiAgICAgLy8NCj4gPj4gICAgIFByb2dy ZXNzICgyMCk7DQo+ID4+ICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+IC0gICAg REVCVUcoKERFQlVHX0VSUk9SLCAiRm1wRGV2aWNlU2V0SW1hZ2UgLSBQcm9ncmVzcyBDYWxsYmFj ayBmYWlsZWQgd2l0aCBTdGF0dXMgJXIuXG4iLCBTdGF0dXMpKTsNCj4gPj4gKyAgICBERUJVRygo REVCVUdfRVJST1IsICJGbXBEZXZpY2VTZXRJbWFnZVdpdGhTdGF0dXMgLSBQcm9ncmVzcyBDYWxs YmFjayBmYWlsZWQgd2l0aCBTdGF0dXMgJXIuXG4iLCBTdGF0dXMpKTsNCj4gPj4gICAgIH0NCj4g Pj4NCj4gPj4gICAgIC8vDQo+ID4+IEBAIC01NTMsMTEgKzU3MSwxMSBAQCBGbXBEZXZpY2VTZXRJ bWFnZSAoDQo+ID4+DQo+ID4+ICAgLy8gICAgUHJvZ3Jlc3MgKFBlcmNlbnRhZ2UpOw0KPiA+PiAg IC8vICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gLS8vICAgICAgREVCVUcoKERF QlVHX0VSUk9SLCAiRm1wRGV2aWNlU2V0SW1hZ2UgLSBQcm9ncmVzcyBDYWxsYmFjayBmYWlsZWQg d2l0aCBTdGF0dXMgJXIuXG4iLCBTdGF0dXMpKTsNCj4gPj4gKy8vICAgICAgREVCVUcoKERFQlVH X0VSUk9SLCAiRm1wRGV2aWNlU2V0SW1hZ2VXaXRoU3RhdHVzIC0gUHJvZ3Jlc3MgQ2FsbGJhY2sg ZmFpbGVkIHdpdGggU3RhdHVzICVyLlxuIiwgU3RhdHVzKSk7DQo+ID4+ICAgLy8gICAgfQ0KPiA+ PiAgICAgfQ0KPiA+Pg0KPiA+PiAtICBERUJVRyAoKERFQlVHX0lORk8sICJGbXBEZXZpY2VTZXRJ bWFnZSAtICVkIEltYWdlcyAuLi5cbiIsIEFSUkFZX1NJWkUgKG1VcGRhdGVDb25maWdEYXRhKSkp Ow0KPiA+PiArICBERUJVRyAoKERFQlVHX0lORk8sICJGbXBEZXZpY2VTZXRJbWFnZVdpdGhTdGF0 dXMgLSAlZCBJbWFnZXMgLi4uXG4iLCBBUlJBWV9TSVpFIChtVXBkYXRlQ29uZmlnRGF0YSkpKTsN Cj4gPj4NCj4gPj4gICAgIGlmIChBUlJBWV9TSVpFIChtVXBkYXRlQ29uZmlnRGF0YSkgPT0gMCkg ew0KPiA+PiAgICAgICBERUJVRygoREVCVUdfSU5GTywgIlBsYXRmb3JtVXBkYXRlOiBCYXNlQWRk cmVzcyAtIDB4JWx4IEltYWdlT2Zmc2V0IC0gMHgleCBMZW5ndGggLSAweCV4XG4iLCAwLCAwLCBJ bWFnZVNpemUpKTsNCj4gPj4gQEAgLTYwNSwxMSArNjIzLDE3MyBAQCBGbXBEZXZpY2VTZXRJbWFn ZSAoDQo+ID4+ICAgICAgIEJ5dGVzV3JpdHRlbiArPSBDb25maWdEYXRhLT5MZW5ndGg7DQo+ID4+ ICAgICB9DQo+ID4+DQo+ID4+IC0gIERFQlVHICgoREVCVUdfSU5GTywgIkZtcERldmljZVNldElt YWdlIC0gJXJcbiIsIFN0YXR1cykpOw0KPiA+PiArICBERUJVRyAoKERFQlVHX0lORk8sICJGbXBE ZXZpY2VTZXRJbWFnZVdpdGhTdGF0dXMgLSAlclxuIiwgU3RhdHVzKSk7DQo+ID4+ICsNCj4gPj4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+PiArICAgICpMYXN0QXR0ZW1wdFN0YXR1 cyA9IExBU1RfQVRURU1QVF9TVEFUVVNfREVWSUNFX0xJQlJBUllfTUlOX0VSUk9SX0NPREVfVkFM VUU7DQo+ID4+ICsgIH0NCj4gPj4NCj4gPj4gICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ICAgfQ0K PiA+Pg0KPiA+PiArLyoqDQo+ID4+ICsgIFVwZGF0ZXMgdGhlIGZpcm13YXJlIGltYWdlIG9mIHRo ZSBkZXZpY2UuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBoYXJk d2FyZSB3aXRoIHRoZSBuZXcgZmlybXdhcmUgaW1hZ2UuICBUaGlzIGZ1bmN0aW9uDQo+ID4+ICsg IHJldHVybnMgRUZJX1VOU1VQUE9SVEVEIGlmIHRoZSBmaXJtd2FyZSBpbWFnZSBpcyBub3QgdXBk YXRhYmxlLiAgSWYgdGhlDQo+ID4+ICsgIGZpcm13YXJlIGltYWdlIGlzIHVwZGF0YWJsZSwgdGhl IGZ1bmN0aW9uIHNob3VsZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgbWluaW1hbA0KPiA+PiArICB2 YWxpZGF0aW9ucyBiZWZvcmUgcHJvY2VlZGluZyB0byBkbyB0aGUgZmlybXdhcmUgaW1hZ2UgdXBk YXRlLg0KPiA+PiArICAgIC0gVmFsaWRhdGUgdGhlIGltYWdlIGlzIGEgc3VwcG9ydGVkIGltYWdl IGZvciB0aGlzIGRldmljZS4gIFRoZSBmdW5jdGlvbg0KPiA+PiArICAgICAgcmV0dXJucyBFRklf QUJPUlRFRCBpZiB0aGUgaW1hZ2UgaXMgdW5zdXBwb3J0ZWQuICBUaGUgZnVuY3Rpb24gY2FuDQo+ ID4+ICsgICAgICBvcHRpb25hbGx5IHByb3ZpZGUgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBv biB3aHkgdGhlIGltYWdlIGlzIG5vdCBhDQo+ID4+ICsgICAgICBzdXBwb3J0ZWQgaW1hZ2UuDQo+ ID4+ICsgICAgLSBWYWxpZGF0ZSB0aGUgZGF0YSBmcm9tIFZlbmRvckNvZGUgaWYgbm90IG51bGwu ICBJbWFnZSB2YWxpZGF0aW9uIG11c3QgYmUNCj4gPj4gKyAgICAgIHBlcmZvcm1lZCBiZWZvcmUg VmVuZG9yQ29kZSBkYXRhIHZhbGlkYXRpb24uICBWZW5kb3JDb2RlIGRhdGEgaXMgaWdub3JlZA0K PiA+PiArICAgICAgb3IgY29uc2lkZXJlZCBpbnZhbGlkIGlmIGltYWdlIHZhbGlkYXRpb24gZmFp bGVkLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMNCj4gPj4gKyAgICAgIEVGSV9BQk9SVEVEIGlmIHRo ZSBkYXRhIGlzIGludmFsaWQuDQo+ID4+ICsNCj4gPj4gKyAgVmVuZG9yQ29kZSBlbmFibGVzIHZl bmRvciB0byBpbXBsZW1lbnQgdmVuZG9yLXNwZWNpZmljIGZpcm13YXJlIGltYWdlIHVwZGF0ZQ0K PiA+PiArICBwb2xpY3kuICBOdWxsIGlmIHRoZSBjYWxsZXIgZGlkIG5vdCBzcGVjaWZ5IHRoZSBw b2xpY3kgb3IgdXNlIHRoZSBkZWZhdWx0DQo+ID4+ICsgIHBvbGljeS4gIEFzIGFuIGV4YW1wbGUs IHZlbmRvciBjYW4gaW1wbGVtZW50IGEgcG9saWN5IHRvIGFsbG93IGFuIG9wdGlvbiB0bw0KPiA+ PiArICBmb3JjZSBhIGZpcm13YXJlIGltYWdlIHVwZGF0ZSB3aGVuIHRoZSBhYm9ydCByZWFzb24g aXMgZHVlIHRvIHRoZSBuZXcgZmlybXdhcmUNCj4gPj4gKyAgaW1hZ2UgdmVyc2lvbiBpcyBvbGRl ciB0aGFuIHRoZSBjdXJyZW50IGZpcm13YXJlIGltYWdlIHZlcnNpb24gb3IgYmFkIGltYWdlDQo+ ID4+ICsgIGNoZWNrc3VtLiAgU2Vuc2l0aXZlIG9wZXJhdGlvbnMgc3VjaCBhcyB0aG9zZSB3aXBp bmcgdGhlIGVudGlyZSBmaXJtd2FyZSBpbWFnZQ0KPiA+PiArICBhbmQgcmVuZGVyIHRoZSBkZXZp Y2UgdG8gYmUgbm9uLWZ1bmN0aW9uYWwgc2hvdWxkIGJlIGVuY29kZWQgaW4gdGhlIGltYWdlDQo+ ID4+ICsgIGl0c2VsZiByYXRoZXIgdGhhbiBwYXNzZWQgd2l0aCB0aGUgVmVuZG9yQ29kZS4gIEFi b3J0UmVhc29uIGVuYWJsZXMgdmVuZG9yIHRvDQo+ID4+ICsgIGhhdmUgdGhlIG9wdGlvbiB0byBw cm92aWRlIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgYWJvcnQgcmVhc29uIHRv DQo+ID4+ICsgIHRoZSBjYWxsZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtW2luXSAgSW1hZ2Ug ICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBuZXcgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbVtpbl0g IEltYWdlU2l6ZSAgICAgICAgIFNpemUgb2YgdGhlIG5ldyBpbWFnZSBpbiBieXRlcy4NCj4gPj4g KyAgQHBhcmFtW2luXSAgVmVuZG9yQ29kZSAgICAgICAgVGhpcyBlbmFibGVzIHZlbmRvciB0byBp bXBsZW1lbnQgdmVuZG9yLXNwZWNpZmljDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZpcm13YXJlIGltYWdlIHVwZGF0ZSBwb2xpY3kuIE51bGwgaW5kaWNhdGVzIHRoZQ0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXIgZGlkIG5vdCBzcGVj aWZ5IHRoZSBwb2xpY3kgb3IgdXNlIHRoZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWZhdWx0IHBvbGljeS4NCj4gPj4gKyAgQHBhcmFtW2luXSAgUHJvZ3Jlc3MgICAg ICAgICAgQSBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBkcml2ZXIgdG8gcmVwb3J0IHRoZQ0KPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyBvZiB0aGUgZmlybXdhcmUg dXBkYXRlLg0KPiA+PiArICBAcGFyYW1baW5dICBDYXBzdWxlRndWZXJzaW9uICBGTVAgUGF5bG9h ZCBIZWFkZXIgdmVyc2lvbiBvZiB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbVtvdXRdIEFib3J0 UmVhc29uICAgICAgIEEgcG9pbnRlciB0byBhIHBvaW50ZXIgdG8gYSBudWxsLXRlcm1pbmF0ZWQN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHByb3ZpZGluZyBt b3JlIGRldGFpbHMgZm9yIHRoZSBhYm9ydGVkDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9wZXJhdGlvbi4gVGhlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgYnkgdGhpcw0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIEFsbG9jYXRl UG9vbCgpLCBhbmQgaXQgaXMgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgaXQgd2l0aCBhIGNhbGwNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gRnJlZVBvb2woKS4NCj4gPj4gKw0K PiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIGRldmljZSB3YXMgc3Vj Y2Vzc2Z1bGx5IHVwZGF0ZWQgd2l0aCB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5ldyBpbWFnZS4NCj4gPj4gKyAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAg ICAgIFRoZSBvcGVyYXRpb24gaXMgYWJvcnRlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3YXMgTlVMTC4NCj4gPj4gKyAgQHJldHZhbCBFRklfVU5T VVBQT1JURUQgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4NCj4gPj4gKw0K PiA+PiArKiovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK0ZtcERldmlj ZVNldEltYWdlICgNCj4gPj4gKyAgSU4gIENPTlNUIFZPSUQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKkltYWdlLA0KPiA+PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZVNpemUsDQo+ID4+ICsgIElOICBDT05TVCBW T0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpWZW5kb3JDb2RlLA0KPiA+ PiArICBJTiAgRUZJX0ZJUk1XQVJFX01BTkFHRU1FTlRfVVBEQVRFX0lNQUdFX1BST0dSRVNTICBQ cm9ncmVzcywNCj4gPj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ2Fwc3VsZUZ3VmVyc2lvbiwNCj4gPj4gKyAgT1VUIENIQVIxNiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipBYm9ydFJlYXNvbg0KPiA+PiArICAp DQo+ID4+ICt7DQo+ID4+ICsgIFVJTlQzMiAgTGFzdEF0dGVtcHRTdGF0dXM7DQo+ID4+ICsNCj4g Pj4gKyAgcmV0dXJuICBGbXBEZXZpY2VTZXRJbWFnZVdpdGhTdGF0dXMgKA0KPiA+PiArICAgICAg ICAgICAgSW1hZ2UsDQo+ID4+ICsgICAgICAgICAgICBJbWFnZVNpemUsDQo+ID4+ICsgICAgICAg ICAgICBWZW5kb3JDb2RlLA0KPiA+PiArICAgICAgICAgICAgUHJvZ3Jlc3MsDQo+ID4+ICsgICAg ICAgICAgICBDYXBzdWxlRndWZXJzaW9uLA0KPiA+PiArICAgICAgICAgICAgQWJvcnRSZWFzb24s DQo+ID4+ICsgICAgICAgICAgICAmTGFzdEF0dGVtcHRTdGF0dXMNCj4gPj4gKyAgICAgICAgICAg ICk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+PiArICBDaGVja3MgaWYgYSBuZXcg ZmlybXdhcmUgaW1hZ2UgaXMgdmFsaWQgZm9yIHRoZSBmaXJtd2FyZSBkZXZpY2UuICBUaGlzDQo+ ID4+ICsgIGZ1bmN0aW9uIGFsbG93cyBmaXJtd2FyZSB1cGRhdGUgb3BlcmF0aW9uIHRvIHZhbGlk YXRlIHRoZSBmaXJtd2FyZSBpbWFnZQ0KPiA+PiArICBiZWZvcmUgRm1wRGV2aWNlU2V0SW1hZ2Uo KSBpcyBjYWxsZWQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtW2luXSAgSW1hZ2UgICAgICAgICAg ICAgICBQb2ludHMgdG8gYSBuZXcgZmlybXdhcmUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbVtpbl0g IEltYWdlU2l6ZSAgICAgICAgICAgU2l6ZSwgaW4gYnl0ZXMsIG9mIGEgbmV3IGZpcm13YXJlIGlt YWdlLg0KPiA+PiArICBAcGFyYW1bb3V0XSBJbWFnZVVwZGF0YWJsZSAgICAgIEluZGljYXRlcyBp ZiBhIG5ldyBmaXJtd2FyZSBpbWFnZSBpcyB2YWxpZCBmb3INCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhIGZpcm13YXJlIHVwZGF0ZSB0byB0aGUgZmlybXdhcmUgZGV2 aWNlLiAgVGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93 aW5nIHZhbHVlcyBmcm9tIHRoZSBGaXJtd2FyZSBNYW5hZ2VtZW50DQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2wgYXJlIHN1cHBvcnRlZDoNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1VQREFUQUJMRV9WQUxJRA0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1BR0VfVVBEQVRBQkxF X0lOVkFMSUQNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdF X1VQREFUQUJMRV9JTlZBTElEX1RZUEUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElNQUdFX1VQREFUQUJMRV9JTlZBTElEX09MRA0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSU1BR0VfVVBEQVRBQkxFX1ZBTElEX1dJVEhfVkVORE9S X0NPREUNCj4gPj4gKyAgQHBhcmFtW291dF0gTGFzdEF0dGVtcHRTdGF0dXMgICBBIHBvaW50ZXIg dG8gYSBVSU5UMzIgdGhhdCBob2xkcyB0aGUgbGFzdCBhdHRlbXB0DQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzIHRvIHJlcG9ydCBiYWNrIHRvIHRoZSBFU1JU IHRhYmxlIGluIGNhc2UNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv ZiBlcnJvci4gVGhpcyB2YWx1ZSB3aWxsIG9ubHkgYmUgY2hlY2tlZCB3aGVuIHRoaXMNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByZXR1cm5zIGFuIGVy cm9yLg0KPiA+PiArDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhl IHJldHVybiBzdGF0dXMgY29kZSBtdXN0IGZhbGwgaW4gdGhlIHJhbmdlIG9mDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEFTVF9BVFRFTVBUX1NUQVRVU19ERVZJQ0Vf TElCUkFSWV9NSU5fRVJST1JfQ09ERV9WQUxVRSB0bw0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExBU1RfQVRURU1QVF9TVEFUVVNfREVWSUNFX0xJQlJBUllfTUFYX0VS Uk9SX0NPREVfVkFMVUUuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJZiB0aGUgdmFsdWUgZmFsbHMgb3V0c2lkZSB0aGlzIHJhbmdlLCBpdCB3aWxsIGJl IGNvbnZlcnRlZA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIExB U1RfQVRURU1QVF9TVEFUVVNfRVJST1JfVU5TVUNDRVNTRlVMLg0KPiA+PiArDQo+ID4+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgaW1hZ2Ugd2FzIHN1Y2Nlc3NmdWxseSBj aGVja2VkLiAgQWRkaXRpb25hbA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RhdHVzIGluZm9ybWF0aW9uIGlzIHJldHVybmVkIGluDQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbWFnZVVwZGF0YWJsZS4NCj4gPj4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgIEltYWdlIGlzIE5VTEwuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSICBJbWFnZVVwZGF0YWJsZSBpcyBOVUxMLg0KPiA+PiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgTGFzdEF0dGVtcHRTdGF0dXMgaXMgTlVMTC4NCj4gPj4g Kw0KPiA+PiArKiovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK0ZtcERl dmljZUNoZWNrSW1hZ2VXaXRoU3RhdHVzICgNCj4gPj4gKyAgSU4gIENPTlNUIFZPSUQgICpJbWFn ZSwNCj4gPj4gKyAgSU4gIFVJTlROICAgICAgIEltYWdlU2l6ZSwNCj4gPj4gKyAgT1VUIFVJTlQz MiAgICAgICpJbWFnZVVwZGF0YWJsZSwNCj4gPj4gKyAgT1VUIFVJTlQzMiAgICAgICpMYXN0QXR0 ZW1wdFN0YXR1cw0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIGlmIChMYXN0QXR0ZW1wdFN0 YXR1cyA9PSBOVUxMKSB7DQo+ID4+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkNoZWNrSW1h Z2VXaXRoU3RhdHVzIC0gTGFzdEF0dGVtcHRTdGF0dXMgUG9pbnRlciBQYXJhbWV0ZXIgaXMgTlVM TC5cbiIpKTsNCj4gPj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+PiAr ICB9DQo+ID4+ICsgICpMYXN0QXR0ZW1wdFN0YXR1cyA9IExBU1RfQVRURU1QVF9TVEFUVVNfU1VD Q0VTUzsNCj4gPj4gKw0KPiA+PiArICBpZiAoSW1hZ2VVcGRhdGFibGUgPT0gTlVMTCkgew0KPiA+ PiArICAgIERFQlVHKChERUJVR19FUlJPUiwgIkNoZWNrSW1hZ2VXaXRoU3RhdHVzIC0gSW1hZ2VV cGRhdGFibGUgUG9pbnRlciBQYXJhbWV0ZXIgaXMgTlVMTC5cbiIpKTsNCj4gPj4gKyAgICAqTGFz dEF0dGVtcHRTdGF0dXMgPSBMQVNUX0FUVEVNUFRfU1RBVFVTX0RFVklDRV9MSUJSQVJZX01JTl9F UlJPUl9DT0RFX1ZBTFVFOw0KPiA+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7 DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICAvLw0KPiA+PiArICAvL1NldCB0byB2YWxpZCBh bmQgdGhlbiBpZiBhbnkgdGVzdHMgZmFpbCBpdCB3aWxsIHVwZGF0ZSB0aGlzIGZsYWcuDQo+ID4+ ICsgIC8vDQo+ID4+ICsgICpJbWFnZVVwZGF0YWJsZSA9IElNQUdFX1VQREFUQUJMRV9WQUxJRDsN Cj4gPj4gKw0KPiA+PiArICBpZiAoSW1hZ2UgPT0gTlVMTCkgew0KPiA+PiArICAgIERFQlVHKChE RUJVR19FUlJPUiwgIkNoZWNrSW1hZ2VXaXRoU3RhdHVzIC0gSW1hZ2UgUG9pbnRlciBQYXJhbWV0 ZXIgaXMgTlVMTC5cbiIpKTsNCj4gPj4gKyAgICAvLw0KPiA+PiArICAgIC8vIE5vdCBzdXJlIGlm IHRoaXMgaXMgbmVlZGVkDQo+ID4+ICsgICAgLy8NCj4gPj4gKyAgICAqSW1hZ2VVcGRhdGFibGUg PSBJTUFHRV9VUERBVEFCTEVfSU5WQUxJRDsNCj4gPj4gKyAgICAqTGFzdEF0dGVtcHRTdGF0dXMg PSBMQVNUX0FUVEVNUFRfU1RBVFVTX0RFVklDRV9MSUJSQVJZX01JTl9FUlJPUl9DT0RFX1ZBTFVF Ow0KPiA+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsgIH0NCj4g Pj4gKw0KPiA+PiArICAvLw0KPiA+PiArICAvLyBNYWtlIHN1cmUgdGhlIGltYWdlIHNpemUgaXMg Y29ycmVjdA0KPiA+PiArICAvLw0KPiA+PiArICBpZiAoSW1hZ2VTaXplICE9IFBjZEdldDMyIChQ Y2RCaW9zUm9tU2l6ZSkpIHsNCj4gPj4gKyAgICAqSW1hZ2VVcGRhdGFibGUgPSBJTUFHRV9VUERB VEFCTEVfSU5WQUxJRDsNCj4gPj4gKyAgICAqTGFzdEF0dGVtcHRTdGF0dXMgPSBMQVNUX0FUVEVN UFRfU1RBVFVTX0RFVklDRV9MSUJSQVJZX01JTl9FUlJPUl9DT0RFX1ZBTFVFOw0KPiA+PiArICAg IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gICAvKioNCj4gPj4g ICBDaGVja3MgaWYgdGhlIGZpcm13YXJlIGltYWdlIGlzIHZhbGlkIGZvciB0aGUgZGV2aWNlLg0K PiA+Pg0KPiA+PiBAQCAtNjMzLDM0ICs4MTMsOSBAQCBGbXBEZXZpY2VDaGVja0ltYWdlICgNCj4g Pj4gICAgIE9VVCBVSU5UMzIgICAgICAqSW1hZ2VVcGRhdGVhYmxlDQo+ID4+ICAgICApDQo+ID4+ ICAgew0KPiA+PiAtICBpZiAoSW1hZ2VVcGRhdGVhYmxlID09IE5VTEwpIHsNCj4gPj4gLSAgICBE RUJVRygoREVCVUdfRVJST1IsICJDaGVja0ltYWdlIC0gSW1hZ2VVcGRhdGVhYmxlIFBvaW50ZXIg UGFyYW1ldGVyIGlzIE5VTEwuXG4iKSk7DQo+ID4+IC0gICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPj4gLSAgfQ0KPiA+PiArICBVSU5UMzIgIExhc3RBdHRlbXB0U3RhdHVzOw0K PiA+Pg0KPiA+PiAtICAvLw0KPiA+PiAtICAvL1NldCB0byB2YWxpZCBhbmQgdGhlbiBpZiBhbnkg dGVzdHMgZmFpbCBpdCB3aWxsIHVwZGF0ZSB0aGlzIGZsYWcuDQo+ID4+IC0gIC8vDQo+ID4+IC0g ICpJbWFnZVVwZGF0ZWFibGUgPSBJTUFHRV9VUERBVEFCTEVfVkFMSUQ7DQo+ID4+IC0NCj4gPj4g LSAgaWYgKEltYWdlID09IE5VTEwpIHsNCj4gPj4gLSAgICBERUJVRygoREVCVUdfRVJST1IsICJD aGVja0ltYWdlIC0gSW1hZ2UgUG9pbnRlciBQYXJhbWV0ZXIgaXMgTlVMTC5cbiIpKTsNCj4gPj4g LSAgICAvLw0KPiA+PiAtICAgIC8vIE5vdCBzdXJlIGlmIHRoaXMgaXMgbmVlZGVkDQo+ID4+IC0g ICAgLy8NCj4gPj4gLSAgICAqSW1hZ2VVcGRhdGVhYmxlID0gSU1BR0VfVVBEQVRBQkxFX0lOVkFM SUQ7DQo+ID4+IC0gICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4gLSAgfQ0K PiA+PiAtDQo+ID4+IC0gIC8vDQo+ID4+IC0gIC8vIE1ha2Ugc3VyZSB0aGUgaW1hZ2Ugc2l6ZSBp cyBjb3JyZWN0DQo+ID4+IC0gIC8vDQo+ID4+IC0gIGlmIChJbWFnZVNpemUgIT0gUGNkR2V0MzIg KFBjZEJpb3NSb21TaXplKSkgew0KPiA+PiAtICAgICpJbWFnZVVwZGF0ZWFibGUgPSBJTUFHRV9V UERBVEFCTEVfSU5WQUxJRDsNCj4gPj4gLSAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVS Ow0KPiA+PiAtICB9DQo+ID4+IC0NCj4gPj4gLSAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+PiAr ICByZXR1cm4gRm1wRGV2aWNlQ2hlY2tJbWFnZVdpdGhTdGF0dXMgKEltYWdlLCBJbWFnZVNpemUs IEltYWdlVXBkYXRlYWJsZSwgJkxhc3RBdHRlbXB0U3RhdHVzKTsNCj4gPj4gICB9DQo+ID4+DQo+ ID4+ICAgLyoqDQo+ID4+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9WbHYyVGJsdERldmlj ZVBrZy9GZWF0dXJlL0NhcHN1bGUvTGlicmFyeS9GbXBEZXZpY2VMaWJTYW1wbGUvRm1wRGV2aWNl TGliLmMNCj4gPj4gYi9QbGF0Zm9ybS9JbnRlbC9WbHYyVGJsdERldmljZVBrZy9GZWF0dXJlL0Nh cHN1bGUvTGlicmFyeS9GbXBEZXZpY2VMaWJTYW1wbGUvRm1wRGV2aWNlTGliLmMNCj4gPj4gaW5k ZXggZGIwZjIzOGVhNTM0Li4xMzJiNjA4NDRhZDQgMTAwNjQ0DQo+ID4+IC0tLSBhL1BsYXRmb3Jt L0ludGVsL1ZsdjJUYmx0RGV2aWNlUGtnL0ZlYXR1cmUvQ2Fwc3VsZS9MaWJyYXJ5L0ZtcERldmlj ZUxpYlNhbXBsZS9GbXBEZXZpY2VMaWIuYw0KPiA+PiArKysgYi9QbGF0Zm9ybS9JbnRlbC9WbHYy VGJsdERldmljZVBrZy9GZWF0dXJlL0NhcHN1bGUvTGlicmFyeS9GbXBEZXZpY2VMaWJTYW1wbGUv Rm1wRGV2aWNlTGliLmMNCj4gPj4gQEAgLTEsNiArMSw2IEBADQo+ID4+ICAgLyoqDQo+ID4+DQo+ ID4+IC1Db3B5cmlnaHQgKGMpIDIwMTYsIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4+ICtDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlv bi48QlI+DQo+ID4+ICAgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4+DQo+ID4+ICAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4gQEAgLTksNiArOSw4IEBAIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+DQo+ID4+DQo+ID4+ICAgI2lu Y2x1ZGUgPFBpRHhlLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGFzdEF0dGVtcHRTdGF0dXMuaD4NCj4g Pj4gKyNpbmNsdWRlIDxHdWlkL1N5c3RlbVJlc291cmNlVGFibGUuaD4NCj4gPj4gICAjaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+PiAgICNpbmNsdWRlIDxQcm90b2NvbC9GaXJtd2Fy ZU1hbmFnZW1lbnQuaD4NCj4gPj4gICAjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4+ IEBAIC0zNDUsNiArMzQ3LDEzMSBAQCBSZXR1cm4gVmFsdWU6DQo+ID4+ICAgfS8vR2V0SW1hZ2Uo KQ0KPiA+Pg0KPiA+Pg0KPiA+PiArLyoqDQo+ID4+ICsgIFVwZGF0ZXMgYSBmaXJtd2FyZSBkZXZp Y2Ugd2l0aCBhIG5ldyBmaXJtd2FyZSBpbWFnZS4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucw0KPiA+ PiArICBFRklfVU5TVVBQT1JURUQgaWYgdGhlIGZpcm13YXJlIGltYWdlIGlzIG5vdCB1cGRhdGFi bGUuICBJZiB0aGUgZmlybXdhcmUgaW1hZ2UNCj4gPj4gKyAgaXMgdXBkYXRhYmxlLCB0aGUgZnVu Y3Rpb24gc2hvdWxkIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBtaW5pbWFsIHZhbGlkYXRpb25zDQo+ ID4+ICsgIGJlZm9yZSBwcm9jZWVkaW5nIHRvIGRvIHRoZSBmaXJtd2FyZSBpbWFnZSB1cGRhdGUu DQo+ID4+ICsgICAgLSBWYWxpZGF0ZSB0aGF0IHRoZSBpbWFnZSBpcyBhIHN1cHBvcnRlZCBpbWFn ZSBmb3IgdGhpcyBmaXJtd2FyZSBkZXZpY2UuDQo+ID4+ICsgICAgICBSZXR1cm4gRUZJX0FCT1JU RUQgaWYgdGhlIGltYWdlIGlzIG5vdCBzdXBwb3J0ZWQuICBBZGRpdGlvbmFsIGRldGFpbHMNCj4g Pj4gKyAgICAgIG9uIHdoeSB0aGUgaW1hZ2UgaXMgbm90IGEgc3VwcG9ydGVkIGltYWdlIG1heSBi ZSByZXR1cm5lZCBpbiBBYm9ydFJlYXNvbi4NCj4gPj4gKyAgICAtIFZhbGlkYXRlIHRoZSBkYXRh IGZyb20gVmVuZG9yQ29kZSBpZiBpcyBub3QgTlVMTC4gIEZpcm13YXJlIGltYWdlDQo+ID4+ICsg ICAgICB2YWxpZGF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSBWZW5kb3JDb2RlIGRhdGEg dmFsaWRhdGlvbi4NCj4gPj4gKyAgICAgIFZlbmRvckNvZGUgZGF0YSBpcyBpZ25vcmVkIG9yIGNv bnNpZGVyZWQgaW52YWxpZCBpZiBpbWFnZSB2YWxpZGF0aW9uDQo+ID4+ICsgICAgICBmYWlscy4g IFJldHVybiBFRklfQUJPUlRFRCBpZiB0aGUgVmVuZG9yQ29kZSBkYXRhIGlzIGludmFsaWQuDQo+ ID4+ICsNCj4gPj4gKyAgVmVuZG9yQ29kZSBlbmFibGVzIHZlbmRvciB0byBpbXBsZW1lbnQgdmVu ZG9yLXNwZWNpZmljIGZpcm13YXJlIGltYWdlIHVwZGF0ZQ0KPiA+PiArICBwb2xpY3kuICBOdWxs IGlmIHRoZSBjYWxsZXIgZGlkIG5vdCBzcGVjaWZ5IHRoZSBwb2xpY3kgb3IgdXNlIHRoZSBkZWZh dWx0DQo+ID4+ICsgIHBvbGljeS4gIEFzIGFuIGV4YW1wbGUsIHZlbmRvciBjYW4gaW1wbGVtZW50 IGEgcG9saWN5IHRvIGFsbG93IGFuIG9wdGlvbiB0bw0KPiA+PiArICBmb3JjZSBhIGZpcm13YXJl IGltYWdlIHVwZGF0ZSB3aGVuIHRoZSBhYm9ydCByZWFzb24gaXMgZHVlIHRvIHRoZSBuZXcgZmly bXdhcmUNCj4gPj4gKyAgaW1hZ2UgdmVyc2lvbiBpcyBvbGRlciB0aGFuIHRoZSBjdXJyZW50IGZp cm13YXJlIGltYWdlIHZlcnNpb24gb3IgYmFkIGltYWdlDQo+ID4+ICsgIGNoZWNrc3VtLiAgU2Vu c2l0aXZlIG9wZXJhdGlvbnMgc3VjaCBhcyB0aG9zZSB3aXBpbmcgdGhlIGVudGlyZSBmaXJtd2Fy ZSBpbWFnZQ0KPiA+PiArICBhbmQgcmVuZGVyIHRoZSBkZXZpY2UgdG8gYmUgbm9uLWZ1bmN0aW9u YWwgc2hvdWxkIGJlIGVuY29kZWQgaW4gdGhlIGltYWdlDQo+ID4+ICsgIGl0c2VsZiByYXRoZXIg dGhhbiBwYXNzZWQgd2l0aCB0aGUgVmVuZG9yQ29kZS4gIEFib3J0UmVhc29uIGVuYWJsZXMgdmVu ZG9yIHRvDQo+ID4+ICsgIGhhdmUgdGhlIG9wdGlvbiB0byBwcm92aWRlIGEgbW9yZSBkZXRhaWxl ZCBkZXNjcmlwdGlvbiBvZiB0aGUgYWJvcnQgcmVhc29uIHRvDQo+ID4+ICsgIHRoZSBjYWxsZXIu DQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtW2luXSAgSW1hZ2UgICAgICAgICAgICAgUG9pbnRzIHRv IHRoZSBuZXcgZmlybXdhcmUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbVtpbl0gIEltYWdlU2l6ZSAg ICAgICAgIFNpemUsIGluIGJ5dGVzLCBvZiB0aGUgbmV3IGZpcm13YXJlIGltYWdlLg0KPiA+PiAr ICBAcGFyYW1baW5dICBWZW5kb3JDb2RlICAgICAgICBUaGlzIGVuYWJsZXMgdmVuZG9yIHRvIGlt cGxlbWVudCB2ZW5kb3Itc3BlY2lmaWMNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmlybXdhcmUgaW1hZ2UgdXBkYXRlIHBvbGljeS4gIE5VTEwgaW5kaWNhdGVzDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjYWxsZXIgZGlkIG5vdCBzcGVj aWZ5IHRoZSBwb2xpY3kgb3IgdXNlIHRoZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWZhdWx0IHBvbGljeS4NCj4gPj4gKyAgQHBhcmFtW2luXSAgUHJvZ3Jlc3MgICAg ICAgICAgQSBmdW5jdGlvbiB1c2VkIHRvIHJlcG9ydCB0aGUgcHJvZ3Jlc3Mgb2YNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRpbmcgdGhlIGZpcm13YXJlIGRldmlj ZSB3aXRoIHRoZSBuZXcNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmly bXdhcmUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbVtpbl0gIENhcHN1bGVGd1ZlcnNpb24gIFRoZSB2 ZXJzaW9uIG9mIHRoZSBuZXcgZmlybXdhcmUgaW1hZ2UgZnJvbSB0aGUNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIGNhcHN1bGUgdGhhdCBwcm92aWRlZCB0aGUg bmV3IGZpcm13YXJlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdl Lg0KPiA+PiArICBAcGFyYW1bb3V0XSBBYm9ydFJlYXNvbiAgICAgICBBIHBvaW50ZXIgdG8gYSBw b2ludGVyIHRvIGEgTnVsbC10ZXJtaW5hdGVkDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFVuaWNvZGUgc3RyaW5nIHByb3ZpZGluZyBtb3JlIGRldGFpbHMgb24gYW4NCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRlZCBvcGVyYXRpb24uIFRo ZSBidWZmZXIgaXMgYWxsb2NhdGVkIGJ5DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoaXMgZnVuY3Rpb24gd2l0aA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfQk9PVF9TRVJWSUNFUy5BbGxvY2F0ZVBvb2woKS4gIEl0IGlzIHRoZQ0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXIncyByZXNwb25zaWJpbGl0 eSB0byBmcmVlIHRoaXMgYnVmZmVyIHdpdGgNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZJX0JPT1RfU0VSVklDRVMuRnJlZVBvb2woKS4NCj4gPj4gKyAgQHBhcmFtW291 dF0gTGFzdEF0dGVtcHRTdGF0dXMgQSBwb2ludGVyIHRvIGEgVUlOVDMyIHRoYXQgaG9sZHMgdGhl IGxhc3QgYXR0ZW1wdA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXMgdG8gcmVwb3J0IGJhY2sgdG8gdGhlIEVTUlQgdGFibGUgaW4gY2FzZQ0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBlcnJvci4gVGhpcyB2YWx1ZSB3aWxsIG9ubHkg YmUgY2hlY2tlZCB3aGVuIHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvci4NCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUaGUgcmV0dXJuIHN0YXR1cyBjb2RlIG11c3QgZmFsbCBpbiB0 aGUgcmFuZ2Ugb2YNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEFTVF9B VFRFTVBUX1NUQVRVU19ERVZJQ0VfTElCUkFSWV9NSU5fRVJST1JfQ09ERV9WQUxVRSB0bw0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQVNUX0FUVEVNUFRfU1RBVFVTX0RF VklDRV9MSUJSQVJZX01BWF9FUlJPUl9DT0RFX1ZBTFVFLg0KPiA+PiArDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBmYWxscyBvdXRzaWRlIHRoaXMg cmFuZ2UsIGl0IHdpbGwgYmUgY29udmVydGVkDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRvIExBU1RfQVRURU1QVF9TVEFUVVNfRVJST1JfVU5TVUNDRVNTRlVMLg0KPiA+ PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgZmlybXdhcmUg ZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZA0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2l0aCB0aGUgbmV3IGZpcm13YXJlIGltYWdlLg0KPiA+PiArICBAcmV0 dmFsIEVGSV9BQk9SVEVEICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBhYm9ydGVkLiAgQWRk aXRpb25hbCBkZXRhaWxzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh cmUgcHJvdmlkZWQgaW4gQWJvcnRSZWFzb24uDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSICBUaGUgSW1hZ2Ugd2FzIE5VTEwuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFM SURfUEFSQU1FVEVSICBMYXN0QXR0ZW1wdFN0YXR1cyB3YXMgTlVMTC4NCj4gPj4gKyAgQHJldHZh bCBFRklfVU5TVVBQT1JURUQgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4N Cj4gPj4gKw0KPiA+PiArKiovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4g K0ZtcERldmljZVNldEltYWdlV2l0aFN0YXR1cyAoDQo+ID4+ICsgIElOICBDT05TVCBWT0lEICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpJbWFnZSwNCj4gPj4gKyAgSU4gIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VTaXplLA0K PiA+PiArICBJTiAgQ09OU1QgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqVmVuZG9yQ29kZSwgICAgICAgT1BUSU9OQUwNCj4gPj4gKyAgSU4gIEVGSV9GSVJNV0FSRV9N QU5BR0VNRU5UX1VQREFURV9JTUFHRV9QUk9HUkVTUyAgUHJvZ3Jlc3MsICAgICAgICAgIE9QVElP TkFMDQo+ID4+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENhcHN1bGVGd1ZlcnNpb24sDQo+ID4+ICsgIE9VVCBDSEFSMTYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqQWJvcnRSZWFzb24sDQo+ID4+ICsgIE9VVCBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpMYXN0QXR0ZW1w dFN0YXR1cw0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgICAgRUZJX1NUQVRVUyBTdGF0dXMg ICAgICAgICAgICAgICAgICAgICAgICAgPSBFRklfU1VDQ0VTUzsNCj4gPj4gKyAgICBVSU5UMzIg VXBkYXRlYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7DQo+ID4+ICsNCj4gPj4gKyAg ICBTdGF0dXMgPSBGbXBEZXZpY2VDaGVja0ltYWdlV2l0aFN0YXR1cyAoSW1hZ2UsIEltYWdlU2l6 ZSwgJlVwZGF0ZWFibGUsIExhc3RBdHRlbXB0U3RhdHVzKTsNCj4gPj4gKyAgICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpDQo+ID4+ICsgICAgew0KPiA+PiArICAgICAgICBERUJVRygoREVCVUdfRVJS T1IsICJTZXRJbWFnZVdpdGhTdGF0dXMgIC0gQ2hlY2sgSW1hZ2UgZmFpbGVkIHdpdGggJXIuXG4i LCBTdGF0dXMpKTsNCj4gPj4gKyAgICAgICAgZ290byBjbGVhbnVwOw0KPiA+PiArICAgIH0NCj4g Pj4gKw0KPiA+PiArICAgIGlmIChVcGRhdGVhYmxlICE9IElNQUdFX1VQREFUQUJMRV9WQUxJRCkN Cj4gPj4gKyAgICB7DQo+ID4+ICsgICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlNldEltYWdl V2l0aFN0YXR1cyAgLSBDaGVjayBJbWFnZSByZXR1cm5lZCB0aGF0IHRoZSBJbWFnZSB3YXMgbm90 IHZhbGlkIGZvciB1cGRhdGUuDQo+ID4+IFVwZGF0YWJsZSB2YWx1ZSA9IDB4JVguXG4iLCBVcGRh dGVhYmxlKSk7DQo+ID4+ICsgICAgICAgIFN0YXR1cyA9IEVGSV9BQk9SVEVEOw0KPiA+PiArICAg ICAgICBnb3RvIGNsZWFudXA7DQo+ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgaWYgKFBy b2dyZXNzID09IE5VTEwpDQo+ID4+ICsgICAgew0KPiA+PiArICAgICAgICBERUJVRygoREVCVUdf RVJST1IsICJTZXRJbWFnZVdpdGhTdGF0dXMgIC0gSW52YWxpZCBwcm9ncmVzcyBjYWxsYmFja1xu IikpOw0KPiA+PiArICAgICAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ ICsgICAgICAgIGdvdG8gY2xlYW51cDsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICBT dGF0dXMgPSBQcm9ncmVzcygxNSk7DQo+ID4+ICsgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0K PiA+PiArICAgIHsNCj4gPj4gKyAgICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiU2V0SW1hZ2VX aXRoU3RhdHVzICAtIFByb2dyZXNzIENhbGxiYWNrIGZhaWxlZCB3aXRoIFN0YXR1cyAlci5cbiIs IFN0YXR1cykpOw0KPiA+PiArICAgIH0NCj4gPj4gKw0KPiA+PiArICAgIHsNCj4gPj4gKyAgICAg IFVJTlROICBwOw0KPiA+PiArDQo+ID4+ICsgICAgICBmb3IgKHAgPSAyMDsgcCA8IDEwMDsgcCsr KSB7DQo+ID4+ICsgICAgICAgIGdCUy0+U3RhbGwgKDEwMDAwMCk7ICAvL3VzICA9IDAuMSBzZWNv bmRzDQo+ID4+ICsgICAgICAgIFByb2dyZXNzIChwKTsNCj4gPj4gKyAgICAgIH0NCj4gPj4gKyAg ICB9DQo+ID4+ICsNCj4gPj4gKyAgICAvL1RPRE86IGFkZCBzdXBwb3J0IGZvciBWZW5kb3JDb2Rl LCBhbmQgQWJvcnRSZWFzb24NCj4gPj4gK2NsZWFudXA6DQo+ID4+ICsgICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+PiArICAgICAgKkxhc3RBdHRlbXB0U3RhdHVzID0gTEFTVF9BVFRF TVBUX1NUQVRVU19ERVZJQ0VfTElCUkFSWV9NSU5fRVJST1JfQ09ERV9WQUxVRTsNCj4gPj4gKyAg ICB9DQo+ID4+ICsNCj4gPj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+PiArfS8vIFNldEltYWdl V2l0aFN0YXR1cygpDQo+ID4+ICsNCj4gPj4gKw0KPiA+PiAgIC8qKg0KPiA+PiAgIFVwZGF0ZXMg dGhlIGZpcm13YXJlIGltYWdlIG9mIHRoZSBkZXZpY2UuDQo+ID4+DQo+ID4+IEBAIC0zOTYsNTEg KzUyMyw5OCBAQCBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENhcHN1bGVGd1ZlcnNpb24sDQo+ID4+ICAgT1VUIENIQVIxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKkFib3J0UmVhc29uDQo+ID4+ICAgKQ0KPiA+ PiAgIHsNCj4gPj4gLSAgICBFRklfU1RBVFVTIFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAg ICA9IEVGSV9TVUNDRVNTOw0KPiA+PiAtICAgIFVJTlQzMiBVcGRhdGVhYmxlICAgICAgICAgICAg ICAgICAgICAgICAgID0gMDsNCj4gPj4gLQ0KPiA+PiAtICAgIFN0YXR1cyA9IEZtcERldmljZUNo ZWNrSW1hZ2UoSW1hZ2UsIEltYWdlU2l6ZSwgJlVwZGF0ZWFibGUpOw0KPiA+PiAtICAgIGlmIChF RklfRVJST1IoU3RhdHVzKSkNCj4gPj4gLSAgICB7DQo+ID4+IC0gICAgICAgIERFQlVHKChERUJV R19FUlJPUiwgIlNldEltYWdlIC0gQ2hlY2sgSW1hZ2UgZmFpbGVkIHdpdGggJXIuXG4iLCBTdGF0 dXMpKTsNCj4gPj4gLSAgICAgICAgZ290byBjbGVhbnVwOw0KPiA+PiAtICAgIH0NCj4gPj4gLQ0K PiA+PiAtICAgIGlmIChVcGRhdGVhYmxlICE9IElNQUdFX1VQREFUQUJMRV9WQUxJRCkNCj4gPj4g LSAgICB7DQo+ID4+IC0gICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlNldEltYWdlIC0gQ2hl Y2sgSW1hZ2UgcmV0dXJuZWQgdGhhdCB0aGUgSW1hZ2Ugd2FzIG5vdCB2YWxpZCBmb3IgdXBkYXRl LiAgVXBkYXRhYmxlIHZhbHVlDQo+ID0NCj4gPj4gMHglWC5cbiIsIFVwZGF0ZWFibGUpKTsNCj4g Pj4gLSAgICAgICAgU3RhdHVzID0gRUZJX0FCT1JURUQ7DQo+ID4+IC0gICAgICAgIGdvdG8gY2xl YW51cDsNCj4gPj4gLSAgICB9DQo+ID4+IC0NCj4gPj4gLSAgICBpZiAoUHJvZ3Jlc3MgPT0gTlVM TCkNCj4gPj4gLSAgICB7DQo+ID4+IC0gICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlNldElt YWdlIC0gSW52YWxpZCBwcm9ncmVzcyBjYWxsYmFja1xuIikpOw0KPiA+PiAtICAgICAgICBTdGF0 dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+IC0gICAgICAgIGdvdG8gY2xlYW51cDsN Cj4gPj4gLSAgICB9DQo+ID4+IC0NCj4gPj4gLSAgICBTdGF0dXMgPSBQcm9ncmVzcygxNSk7DQo+ ID4+IC0gICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KPiA+PiAtICAgIHsNCj4gPj4gLSAgICAg ICAgREVCVUcoKERFQlVHX0VSUk9SLCAiU2V0SW1hZ2UgLSBQcm9ncmVzcyBDYWxsYmFjayBmYWls ZWQgd2l0aCBTdGF0dXMgJXIuXG4iLCBTdGF0dXMpKTsNCj4gPj4gLSAgICB9DQo+ID4+IC0NCj4g Pj4gLSAgICB7DQo+ID4+IC0gICAgICBVSU5UTiAgcDsNCj4gPj4gLQ0KPiA+PiAtICAgICAgZm9y IChwID0gMjA7IHAgPCAxMDA7IHArKykgew0KPiA+PiAtICAgICAgICBnQlMtPlN0YWxsICgxMDAw MDApOyAgLy91cyAgPSAwLjEgc2Vjb25kcw0KPiA+PiAtICAgICAgICBQcm9ncmVzcyAocCk7DQo+ ID4+IC0gICAgICB9DQo+ID4+IC0gICAgfQ0KPiA+PiAtDQo+ID4+IC0gICAgLy9UT0RPOiBhZGQg c3VwcG9ydCBmb3IgVmVuZG9yQ29kZSwgYW5kIEFib3J0UmVhc29uDQo+ID4+IC1jbGVhbnVwOg0K PiA+PiAtICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ICsgIFVJTlQzMiAgTGFzdEF0dGVtcHRTdGF0 dXM7DQo+ID4+ICsNCj4gPj4gKyAgcmV0dXJuICBGbXBEZXZpY2VTZXRJbWFnZVdpdGhTdGF0dXMg KA0KPiA+PiArICAgICAgICAgICAgSW1hZ2UsDQo+ID4+ICsgICAgICAgICAgICBJbWFnZVNpemUs DQo+ID4+ICsgICAgICAgICAgICBWZW5kb3JDb2RlLA0KPiA+PiArICAgICAgICAgICAgUHJvZ3Jl c3MsDQo+ID4+ICsgICAgICAgICAgICBDYXBzdWxlRndWZXJzaW9uLA0KPiA+PiArICAgICAgICAg ICAgQWJvcnRSZWFzb24sDQo+ID4+ICsgICAgICAgICAgICAmTGFzdEF0dGVtcHRTdGF0dXMNCj4g Pj4gKyAgICAgICAgICAgICk7DQo+ID4+ICAgfS8vIFNldEltYWdlKCkNCj4gPj4NCj4gPj4NCj4g Pj4gKy8qKg0KPiA+PiArICBDaGVja3MgaWYgYSBuZXcgZmlybXdhcmUgaW1hZ2UgaXMgdmFsaWQg Zm9yIHRoZSBmaXJtd2FyZSBkZXZpY2UuICBUaGlzDQo+ID4+ICsgIGZ1bmN0aW9uIGFsbG93cyBm aXJtd2FyZSB1cGRhdGUgb3BlcmF0aW9uIHRvIHZhbGlkYXRlIHRoZSBmaXJtd2FyZSBpbWFnZQ0K PiA+PiArICBiZWZvcmUgRm1wRGV2aWNlU2V0SW1hZ2UoKSBpcyBjYWxsZWQuDQo+ID4+ICsNCj4g Pj4gKyAgQHBhcmFtW2luXSAgSW1hZ2UgICAgICAgICAgICAgICBQb2ludHMgdG8gYSBuZXcgZmly bXdhcmUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbVtpbl0gIEltYWdlU2l6ZSAgICAgICAgICAgU2l6 ZSwgaW4gYnl0ZXMsIG9mIGEgbmV3IGZpcm13YXJlIGltYWdlLg0KPiA+PiArICBAcGFyYW1bb3V0 XSBJbWFnZVVwZGF0YWJsZSAgICAgIEluZGljYXRlcyBpZiBhIG5ldyBmaXJtd2FyZSBpbWFnZSBp cyB2YWxpZCBmb3INCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGZp cm13YXJlIHVwZGF0ZSB0byB0aGUgZmlybXdhcmUgZGV2aWNlLiAgVGhlDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHZhbHVlcyBmcm9tIHRoZSBGaXJt d2FyZSBNYW5hZ2VtZW50DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHJvdG9jb2wgYXJlIHN1cHBvcnRlZDoNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElNQUdFX1VQREFUQUJMRV9WQUxJRA0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSU1BR0VfVVBEQVRBQkxFX0lOVkFMSUQNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1VQREFUQUJMRV9JTlZBTElEX1RZUEUN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1VQREFUQUJM RV9JTlZBTElEX09MRA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SU1BR0VfVVBEQVRBQkxFX1ZBTElEX1dJVEhfVkVORE9SX0NPREUNCj4gPj4gKyAgQHBhcmFtW291 dF0gTGFzdEF0dGVtcHRTdGF0dXMgICBBIHBvaW50ZXIgdG8gYSBVSU5UMzIgdGhhdCBob2xkcyB0 aGUgbGFzdCBhdHRlbXB0DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RhdHVzIHRvIHJlcG9ydCBiYWNrIHRvIHRoZSBFU1JUIHRhYmxlIGluIGNhc2UNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBlcnJvci4gVGhpcyB2YWx1ZSB3aWxs IG9ubHkgYmUgY2hlY2tlZCB3aGVuIHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLg0KPiA+PiArDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJldHVybiBzdGF0dXMgY29kZSBtdXN0 IGZhbGwgaW4gdGhlIHJhbmdlIG9mDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTEFTVF9BVFRFTVBUX1NUQVRVU19ERVZJQ0VfTElCUkFSWV9NSU5fRVJST1JfQ09ERV9W QUxVRSB0bw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExBU1RfQVRU RU1QVF9TVEFUVVNfREVWSUNFX0xJQlJBUllfTUFYX0VSUk9SX0NPREVfVkFMVUUuDQo+ID4+ICsN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgdmFsdWUgZmFs bHMgb3V0c2lkZSB0aGlzIHJhbmdlLCBpdCB3aWxsIGJlIGNvbnZlcnRlZA0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIExBU1RfQVRURU1QVF9TVEFUVVNfRVJST1Jf VU5TVUNDRVNTRlVMLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgICBUaGUgaW1hZ2Ugd2FzIHN1Y2Nlc3NmdWxseSBjaGVja2VkLiAgQWRkaXRpb25hbA0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzIGluZm9ybWF0aW9uIGlz IHJldHVybmVkIGluDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFn ZVVwZGF0YWJsZS4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEltYWdl IGlzIE5VTEwuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBJbWFnZVVw ZGF0YWJsZSBpcyBOVUxMLg0KPiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAg TGFzdEF0dGVtcHRTdGF0dXMgaXMgTlVMTC4NCj4gPj4gKw0KPiA+PiArKiovDQo+ID4+ICtFRklf U1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK0ZtcERldmljZUNoZWNrSW1hZ2VXaXRoU3RhdHVz ICgNCj4gPj4gKyAgSU4gIENPTlNUIFZPSUQgICpJbWFnZSwNCj4gPj4gKyAgSU4gIFVJTlROICAg ICAgIEltYWdlU2l6ZSwNCj4gPj4gKyAgT1VUIFVJTlQzMiAgICAgICpJbWFnZVVwZGF0YWJsZSwN Cj4gPj4gKyAgT1VUIFVJTlQzMiAgICAgICpMYXN0QXR0ZW1wdFN0YXR1cw0KPiA+PiArICApDQo+ ID4+ICt7DQo+ID4+ICsgICAgRUZJX1NUQVRVUyBzdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPj4g Kw0KPiA+PiArICAgIGlmIChMYXN0QXR0ZW1wdFN0YXR1cyA9PSBOVUxMKSB7DQo+ID4+ICsgICAg ICBERUJVRyAoKERFQlVHX0VSUk9SLCAiQ2hlY2tJbWFnZVdpdGhTdGF0dXMgLSBMYXN0QXR0ZW1w dFN0YXR1cyBQb2ludGVyIFBhcmFtZXRlciBpcyBOVUxMLlxuIikpOw0KPiA+PiArICAgICAgcmV0 dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4gKyAgICB9DQo+ID4+ICsgICAgKkxhc3RB dHRlbXB0U3RhdHVzID0gTEFTVF9BVFRFTVBUX1NUQVRVU19TVUNDRVNTOw0KPiA+PiArDQo+ID4+ ICsgICAgaWYgKEltYWdlVXBkYXRhYmxlID09IE5VTEwpDQo+ID4+ICsgICAgew0KPiA+PiArICAg ICAgICBERUJVRygoREVCVUdfRVJST1IsICJDaGVja0ltYWdlV2l0aFN0YXR1cyAtIEltYWdlVXBk YXRhYmxlIFBvaW50ZXIgUGFyYW1ldGVyIGlzIE5VTEwuXG4iKSk7DQo+ID4+ICsgICAgICAgICpM YXN0QXR0ZW1wdFN0YXR1cyA9IExBU1RfQVRURU1QVF9TVEFUVVNfREVWSUNFX0xJQlJBUllfTUlO X0VSUk9SX0NPREVfVkFMVUU7DQo+ID4+ICsgICAgICAgIHN0YXR1cyA9IEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPj4gKyAgICAgICAgZ290byBjbGVhbnVwOw0KPiA+PiArICAgIH0NCj4gPj4g Kw0KPiA+PiArICAgIC8vDQo+ID4+ICsgICAgLy9TZXQgdG8gdmFsaWQgYW5kIHRoZW4gaWYgYW55 IHRlc3RzIGZhaWwgaXQgd2lsbCB1cGRhdGUgdGhpcyBmbGFnLg0KPiA+PiArICAgIC8vDQo+ID4+ ICsgICAgKkltYWdlVXBkYXRhYmxlID0gSU1BR0VfVVBEQVRBQkxFX1ZBTElEOw0KPiA+PiArDQo+ ID4+ICsgICAgaWYgKEltYWdlID09IE5VTEwpDQo+ID4+ICsgICAgew0KPiA+PiArICAgICAgICBE RUJVRygoREVCVUdfRVJST1IsICJDaGVja0ltYWdlV2l0aFN0YXR1cyAtIEltYWdlIFBvaW50ZXIg UGFyYW1ldGVyIGlzIE5VTEwuXG4iKSk7DQo+ID4+ICsgICAgICAgICpJbWFnZVVwZGF0YWJsZSA9 IElNQUdFX1VQREFUQUJMRV9JTlZBTElEOyAvL25vdCBzdXJlIGlmIHRoaXMgaXMgbmVlZGVkDQo+ ID4+ICsgICAgICAgICpMYXN0QXR0ZW1wdFN0YXR1cyA9IExBU1RfQVRURU1QVF9TVEFUVVNfREVW SUNFX0xJQlJBUllfTUlOX0VSUk9SX0NPREVfVkFMVUU7DQo+ID4+ICsgICAgICAgIHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICtjbGVhbnVw Og0KPiA+PiArICAgIHJldHVybiBzdGF0dXM7DQo+ID4+ICt9Ly8gQ2hlY2tJbWFnZVdpdGhTdGF0 dXMoKQ0KPiA+PiArDQo+ID4+DQo+ID4+ICAgLyoqDQo+ID4+ICAgQ2hlY2tzIGlmIHRoZSBmaXJt d2FyZSBpbWFnZSBpcyB2YWxpZCBmb3IgdGhlIGRldmljZS4NCj4gPj4gQEAgLTQ2NSwyOSArNjM5 LDkgQEAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZVNpemUsDQo+ ID4+ICAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqSW1hZ2VVcGRhdGVh YmxlDQo+ID4+ICAgKQ0KPiA+PiAgIHsNCj4gPj4gLSAgICBFRklfU1RBVFVTIHN0YXR1cyA9IEVG SV9TVUNDRVNTOw0KPiA+PiArICBVSU5UMzIgIExhc3RBdHRlbXB0U3RhdHVzOw0KPiA+Pg0KPiA+ PiAtICAgIGlmIChJbWFnZVVwZGF0ZWFibGUgPT0gTlVMTCkNCj4gPj4gLSAgICB7DQo+ID4+IC0g ICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIkNoZWNrSW1hZ2UgLSBJbWFnZVVwZGF0ZWFibGUg UG9pbnRlciBQYXJhbWV0ZXIgaXMgTlVMTC5cbiIpKTsNCj4gPj4gLSAgICAgICAgc3RhdHVzID0g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+PiAtICAgICAgICBnb3RvIGNsZWFudXA7DQo+ID4+ IC0gICAgfQ0KPiA+PiAtDQo+ID4+IC0gICAgLy8NCj4gPj4gLSAgICAvL1NldCB0byB2YWxpZCBh bmQgdGhlbiBpZiBhbnkgdGVzdHMgZmFpbCBpdCB3aWxsIHVwZGF0ZSB0aGlzIGZsYWcuDQo+ID4+ IC0gICAgLy8NCj4gPj4gLSAgICAqSW1hZ2VVcGRhdGVhYmxlID0gSU1BR0VfVVBEQVRBQkxFX1ZB TElEOw0KPiA+PiAtDQo+ID4+IC0gICAgaWYgKEltYWdlID09IE5VTEwpDQo+ID4+IC0gICAgew0K PiA+PiAtICAgICAgICBERUJVRygoREVCVUdfRVJST1IsICJDaGVja0ltYWdlIC0gSW1hZ2UgUG9p bnRlciBQYXJhbWV0ZXIgaXMgTlVMTC5cbiIpKTsNCj4gPj4gLSAgICAgICAgKkltYWdlVXBkYXRl YWJsZSA9IElNQUdFX1VQREFUQUJMRV9JTlZBTElEOyAvL25vdCBzdXJlIGlmIHRoaXMgaXMgbmVl ZGVkDQo+ID4+IC0gICAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+IC0g ICAgfQ0KPiA+PiAtDQo+ID4+IC1jbGVhbnVwOg0KPiA+PiAtICAgIHJldHVybiBzdGF0dXM7DQo+ ID4+ICsgIHJldHVybiBGbXBEZXZpY2VDaGVja0ltYWdlV2l0aFN0YXR1cyAoSW1hZ2UsIEltYWdl U2l6ZSwgSW1hZ2VVcGRhdGVhYmxlLCAmTGFzdEF0dGVtcHRTdGF0dXMpOw0KPiA+PiAgIH0vLyBD aGVja0ltYWdlKCkNCj4gPj4NCj4gPj4gICAvKioNCj4gPj4gLS0NCj4gPj4gMi4yOC4wLndpbmRv d3MuMQ0KPiA+DQo=