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.web11.56536.1595859682484896836 for ; Mon, 27 Jul 2020 07:21:22 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=itV0zfZ+; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: liming.gao@intel.com) IronPort-SDR: 0FgM9+7K8QFCVLi65yriLKZmnY9/kunuXVNGjuI9Lcwjgebz5uMQZ+4C+oMrEVXl1MN/GTBlt7 VS1wbyil2YEA== X-IronPort-AV: E=McAfee;i="6000,8403,9694"; a="151001404" X-IronPort-AV: E=Sophos;i="5.75,402,1589266800"; d="scan'208";a="151001404" 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; 27 Jul 2020 07:21:21 -0700 IronPort-SDR: m7an49cwThOmxWphzXz0KHKR9g91bC6SeA1Zoc0n24WmEcG8Qk2dnThPs5BPhWAGZsdC5Fw0Lo vKtndMG1ANlg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,402,1589266800"; d="scan'208";a="285775851" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga003.jf.intel.com with ESMTP; 27 Jul 2020 07:21:21 -0700 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 27 Jul 2020 07:21:21 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 27 Jul 2020 07:21:20 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.174) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 27 Jul 2020 07:21:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TdiFrjdA1C9bAk70qiKBylkeiYcetLdeUT1BQe9d4L7xZ9DQdFrzuVHbXFxvjKYxSf8PhPl1bj8704ML7qzj/aR7WDjHV34apE/ok94b8DWVg60MjAWs6tWj/p59EsmcNQ0OckktmTKKoIDtURmEuo8tG4uT3nImylJPRIXjOjeLDOlYXXGsCSdkQ4d7vFyzhP+efSGjqgFGtzZymU9dN0GWnITuzLrvUE4HEI5vcrDd2yi5dc+aNze+Q6TjSt1q6e7Y41X46tcBw8UbXBdcDyC8+Gz6xMMLC+3bC3XAsz6JcUnHL44cjh96BIIKDmJ94ghe7Bfh+R1Sm7bpq44B1A== 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=EqCoobby+xdcGtwwab4ztpPEXmuCmCzRp6uwUgbNJDQ=; b=C0EEYw6fsldk5nNU3oblF5cJBEsz+zi1y6A2IoWAQBlJxxnyGuScvzfYrwHyxqTmwFl1R5olL46b1NmjZy+1ggsEba7ldNA8HL1j2qsAplvOaK8OC7ci6e3Tav3M8RujLd+uT6BPWv4UMf5tv6AZcoNWjZRrif2qR29XmA0T0qXdrU/L8V/W5PS4YGSxO4UzpBFNqt0VStw/I3k7vjbYMIdc+fw6/AoNnUxjjN83q3a5ACa9lO7cqKdZ7PpM5kIxYlf4GcFGDOemD6Hc3dgeOygzuPOtFZXEu6yQxJH8fH3VVRdc+zGV5yTdDMxIF6tfTVOKy1taeD686/kggz0M4g== 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=EqCoobby+xdcGtwwab4ztpPEXmuCmCzRp6uwUgbNJDQ=; b=itV0zfZ+9b0Itz5A3WMA2UWwGp5N6Sy2L9A9Jx3+lfmJQaKhKoDg2QPeIlfUW3vgJy951uuG80z1x7hDSrUPgLKfPw4IxFUJ0TucxznRZOpU3MdiyP0wBXZZQTqazGootxHsWUPx8eIbafDmxELqXB6E+RUByw+Kr3cJ4w00DSs= Received: from MWHPR11MB1630.namprd11.prod.outlook.com (2603:10b6:301:e::7) by MWHPR11MB1999.namprd11.prod.outlook.com (2603:10b6:300:20::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.24; Mon, 27 Jul 2020 14:21:19 +0000 Received: from MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e]) by MWHPR11MB1630.namprd11.prod.outlook.com ([fe80::7847:b564:1b55:b67e%6]) with mapi id 15.20.3216.033; Mon, 27 Jul 2020 14:21:19 +0000 From: "Liming Gao" To: Leif Lindholm , "devel@edk2.groups.io" , "pierre.gondois@arm.com" , Masahisa Kojima CC: "sami.mujawar@arm.com" , "tomas.pilar@arm.com" , "Feng, Bob C" , Ard Biesheuvel Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Topic: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Index: AQHWT7DSFte3sv2wdUi56uyaKgiaJqkbnJyAgAAFA5A= Date: Mon, 27 Jul 2020 14:21:19 +0000 Message-ID: References: <20200701140604.5292-1-pierre.gondois@arm.com> <20200701140604.5292-5-pierre.gondois@arm.com> <20200727135825.GZ1337@vanye> In-Reply-To: <20200727135825.GZ1337@vanye> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: nuviainc.com; dkim=none (message not signed) header.d=none;nuviainc.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bab6d3eb-4ba0-4fca-11b8-08d832385499 x-ms-traffictypediagnostic: MWHPR11MB1999: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /YH8eVGTDEdPOZQ77dOHj4MSxsnARj5fGdBmkxtzAnAYdtMYIOKAYqBdJxD2oAPHU1l0gEPL7REPnpKcgiqwUES4q/7km4asJoin4aI6XUqQJX1kO6BvNU03U2cK1TAlqTrE/Y8Um3RMLc6CX0nlk8X+/5PD4VU5coDbwO9xbYal9dIxkysBz8DswW7q1R9keyaHafQfG2bJ3XJDEC+8ENlM4EdPXVkuUzPEEXVwqcXlVCxItY6GAI+K4uPdN0dJ2F5VkWoLfOyZZbaaQ3y7AXsdvUPyjhk8X6OJ96QrWziLs8FZxt8Y8px9ICITFJsO0RhQ+Zx6EspNPdlxblh7GQUKBhB1ptdNwQj9m32YzmMTZTFBc45+8RulwyxXoKYRzes10joYexOqoIJFCvOfLzcNMk+ezWwaCafhJtRhjPeMvc3wGim0jgybSZxmpgf+Ve5I+1/zWozxIY4PUHjNIn8t09b3TALjmCUnpgAH+gk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1630.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(396003)(366004)(376002)(346002)(136003)(39860400002)(478600001)(4326008)(966005)(7696005)(53546011)(6506007)(186003)(26005)(86362001)(83380400001)(110136005)(316002)(52536014)(9686003)(55016002)(54906003)(8676002)(2906002)(5660300002)(71200400001)(30864003)(33656002)(66446008)(66556008)(66476007)(66946007)(8936002)(64756008)(76116006)(142923001)(21314003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: rgFtDiyHMYwFaFpxyNsRxBHNzn28MjJnIY8svpxrd+LmYlyviG05GSvknYwdrrGOFP3ugE/FcS3njlEs9MQSYm1fmvKKd61AZ9uJJUdH6PLS1rod9vTflcm4Xvt8/SOXTRquOkemHF1gMu4u8ZWCoLbU2NM4MoTsYEk2nmf2uJcPg1X/wgxw/pfXQcmVrJ4K+t4JVT8CDqZShDj4A2FFvw5/JbeTUOcyxvfzFjtrdSy2OHp5w7ewAQ1fa4ghyNhAD/NP7B+rw65JHPDLxEQ3HpXc6q/vsdTi3R09RR4BvrYeLUCXBMRZNwRdqIFPg9t/Q3rJIxP3Fop6ekWs0VcCdPBZPJS/07DlqJ07PXnxRQcHgo/TpOjQzRPtZV9EWOLEjQXldZheV7PZNFQyErpP2z/m64JM65zNtkBYwgX/F4dV0Jsafa7f7+D+tW6jF7kPRg0jGBYACVF500kwOUW8/O5JdAQKrAjxn3fa+1Erj3BtMPe36ibRXmlM+V7hNLKR MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1630.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bab6d3eb-4ba0-4fca-11b8-08d832385499 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jul 2020 14:21:19.0380 (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: dAHkHEXYfU70rGo8UcwIkj6pJ429irH1Ibismxi6fsp1cRphW38IX6jsfeVjQ6Sbu5QIio09nP+EWYty+5m/PQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1999 Return-Path: liming.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGVpZjoNCiAgVkZSIGZpbGUgaGFzIHRoZSBzaW1pbGFyIGNhc2UuIFZGUiBpcyBjb252ZXJ0ZWQg dG8geHh4LmMsIHRoZW4gY29tcGlsZSBpdCB0byBvYmogZmlsZS4gDQoNCkJvYjoNCiAgSGFzIEJh c2VUb29scyBzdWNoIGRldGVjdGlvbiBpZiBWRlIgYW5kIEMgc291cmNlIGZpbGUgaGF2ZSB0aGUg c2FtZSBmaWxlIG5hbWU/DQoNClRoYW5rcw0KTGltaW5nDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+IEZyb206IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPg0KPiBTZW50 OiBNb25kYXksIEp1bHkgMjcsIDIwMjAgOTo1OCBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMu aW87IHBpZXJyZS5nb25kb2lzQGFybS5jb207IE1hc2FoaXNhIEtvamltYSA8bWFzYWhpc2Eua29q aW1hQGxpbmFyby5vcmc+DQo+IENjOiBzYW1pLm11amF3YXJAYXJtLmNvbTsgdG9tYXMucGlsYXJA YXJtLmNvbTsgRmVuZywgQm9iIEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcg PGxpbWluZy5nYW9AaW50ZWwuY29tPjsgQXJkDQo+IEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVs QGFybS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY1IDQvNV0gQmFz ZVRvb2xzOiBDb21waWxlIEFNTCBieXRlY29kZSBhcnJheXMgaW50byAub2JqIGZpbGUNCj4gDQo+ IEhpIFBpZXJyZSwgKCtNYXNhaGlzYSkNCj4gDQo+IFRoaXMgY29tbWl0ICgwYTRhYTIwZThkNDQp IG1hZGUgZm9yIGFuIGV4Y2l0aW5nIHN0YXJ0IHRvIG15IHdlZWsuDQo+IA0KPiBTb2Npb25leHQn cyBEZXZlbG9wZXJib3ggZmFpbGVkIHRvIGJ1aWxkIGZvciBtZSwgd2l0aCB0aGUgc3BlY3RhY3Vs YXINCj4gZXJyb3IgbWVzc2FnZToNCj4gDQo+IC91c3IvbGliL2djYy1jcm9zcy9hYXJjaDY0LWxp bnV4LWdudS84Ly4uLy4uLy4uLy4uL2FhcmNoNjQtbGludXgtZ251L2Jpbi9sZDoNCj4gRFdBUkYg ZXJyb3I6IGNvdWxkIG5vdCBmaW5kIGFiYnJldiBudW1iZXIgNTkxMg0KPiAvdG1wL2NjS3Q0Z2FN Lmx0cmFuczAubHRyYW5zLm86IGluIGZ1bmN0aW9uIGBSZWdpc3RlckRldmljZXMnOg0KPiA8YXJ0 aWZpY2lhbD46KC50ZXh0LlJlZ2lzdGVyRGV2aWNlcysweGIwKTogdW5kZWZpbmVkIHJlZmVyZW5j ZSB0bw0KPiBgUmVnaXN0ZXJFbW1jJw0KPiANCj4gR0NDNDkgKHdpdGhvdXQgbHRvKSBhbmQgQ0xB TkczOCBwcm9maWxlcyBnaXZlIG11Y2ggdGhlIHNhbWUgcmVzdWx0LA0KPiB3aXRoIHNsaWdodGx5 IGxlc3MgZXNvdGVyaWMgbWVzc2FnZXMuDQo+IA0KPiBUaGUgcmVhc29uIGZvciB0aGlzIHR1cm5l ZCBvdXQgdG8gYmUgdGhhdCBlZGsyLXBsYXRmb3Jtcw0KPiBTaWxpY29uL1NvY2lvbmV4dC9TeW5R dWFjZXIvRHJpdmVycy9QbGF0Zm9ybUR4ZS8gaGFzIGJvdGggYW4gRW1tYy5hc2wNCj4gYW5kIGFu IEVtbWMuYyBmaWxlLCB3aGljaCBhZnRlciB0aGlzIHBhdGNoIGJvdGggZ2VuZXJhdGUgYW4gRW1t Yy5vYmoNCj4gaW4gdGhlIHNhbWUgb3V0cHV0IGRpcmVjdG9yeS4NCj4gDQo+IEkgdGhpbmsgdGhl IGNvcnJlY3QgY291cnNlIG9mIGFjdGlvbiBpcyB0byBmaXggdGhpcyBpbiB0aGUgU3luUXVhY2Vy DQo+IGRyaXZlciwgYnV0IEkgYW0gcmVwb3J0aW5nIGl0IGhlcmUgc28gd2UgZ2V0IGl0IGxvZ2dl ZCBpbiB0aGUgbGlzdA0KPiBhcmNoaXZlcy4NCj4gDQo+IEl0IHdvdWxkIG9mIGNvdXJzZSBiZSBn b29kIGlmIHRoZSBidWlsZCBzeXN0ZW0gY291bGQgZGV0ZWN0IGFuZCB3YXJuDQo+IG92ZXIgY2Fz ZXMgbGlrZSB0aGlzLCByYXRoZXIgdGhhbiBzaWxlbnRseSBvdmVyd3JpdGluZyBleGlzdGluZyBv YmplY3QNCj4gZmlsZXMuDQo+IA0KPiBNYXNhaGlzYSAtIHNpbmNlIEFyZCBpcyBzdGlsbCBvbiBo b2xpZGF5LCBjb3VsZCB5b3UgY3JlYXRlIGEgcGF0Y2ggYW5kDQo+IHNlbmQgb3V0IGZvciBtZSB0 byByZXZpZXc/IEVpdGhlciBvbmUgb2YgdGhlIGZpbGVzIG5lZWRzIHRvIGJlDQo+IHJlbmFtZWQs IG9yIHdlIG5lZWQgdG8gbW92ZSB0aGUgLmFzbCBmaWxlcyAoRW1tYy5hc2wgYW5kIE9wdGVlLmFz bCkNCj4gaW50byBhIHN1YmRpcmVjdG9yeS4NCj4gDQo+IEJlc3QgUmVnYXJkcywNCj4gDQo+IExl aWYNCj4gDQo+IE9uIFdlZCwgSnVsIDAxLCAyMDIwIGF0IDE1OjA2OjAzICswMTAwLCBQaWVycmVH b25kb2lzIHdyb3RlOg0KPiA+IEZyb206IFBpZXJyZSBHb25kb2lzIDxwaWVycmUuZ29uZG9pc0Bh cm0uY29tPg0KPiA+DQo+ID4gVGhlIEFtbFRvSGV4IHNjcmlwdCBhbmQgUG9zaXgvV2luZG93c0xp a2Ugd3JhcHBlcnMgY29udmVydA0KPiA+IGFuIEFNTCBmaWxlIHRvIGEgLmhleCBmaWxlLCBjb250 YWluaW5nIGEgQyBhcnJheSBzdG9yaW5nDQo+ID4gQU1MIGJ5dGVjb2RlLiBUaGlzICIuaGV4IiBm aWxlIGNhbiB0aGVuIGJlIGluY2x1ZGVkIGluIGENCj4gPiBDIGZpbGUsIGFsbG93aW5nIHRvIGFj Y2VzcyB0aGUgQU1MIGJ5dGVjb2RlIGZyb20gdGhpcyBDDQo+ID4gZmlsZS4NCj4gPg0KPiA+IFRo ZSBFREsyIGJ1aWxkIHN5c3RlbSBkb2Vzbid0IGFsbG93IHRvIGEgZGVwaWN0IGRlcGVuZGVuY3kN Cj4gPiBvcmRlcnMgYmV0d2VlbiBmaWxlcyBvZiBkaWZmZXJlbnQgbGFuZ3VhZ2VzLiBGb3IgaW5z dGFuY2UsDQo+ID4gaW4gYSBtb2R1bGUgY29udGFpbmluZyBhICIuYyIgZmlsZSBhbmQgYSAiLmFz bCIsIHRoZSAiLmMiDQo+ID4gZmlsZSBtYXkgb3IgbWF5IG5vdCBiZSBidWlsdCBwcmlvciB0byB0 aGUgIi5hc2wiIGZpbGUuDQo+ID4gVGhpcyBwcmV2ZW50cyBhbnkgaW5jbHVzaW9uIG9mIGEgZ2Vu ZXJhdGVkICIuaGV4IiBpbiBhDQo+ID4gIi5jIiBmaWxlIHNpbmNlIHRoaXMgbGF0ZXIgIi5oZXgi IGZpbGUgbWF5IG9yIG1heSBub3QNCj4gPiBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQuDQo+ID4NCj4g PiBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBBbWxUb0Mgc2NyaXB0IHRvIGdlbmVyYXRlIGEgQyBm aWxlDQo+ID4gaW5zdGVhZCBvZiBhICIuaGV4IiBmaWxlLg0KPiA+IEl0IGFsc28gYWRkcyB0aGUg Z2VuZXJhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgIi5hbWxpIiBmaWxlDQo+ID4gd2hlbiBjb21w aWxpbmcgYW4gQVNMIGZpbGUsIGFuZCBhZGRzIGEgcnVsZSB0byBjb252ZXJ0IHRoaXMNCj4gPiAi LmFtbGkiIHRvIGEgQyBmaWxlLg0KPiA+DQo+ID4gVGhpcyBhbGxvd3MgdG8gZ2VuZXJhdGUgYSBD IGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlDQo+ID4gZnJvbSBhbiBBU0wgZmlsZS4g VGhpcyBDIGZpbGUgd2lsbCB0aGVuIGJlIGhhbmRsZWQgYnkgdGhlIEVESzINCj4gPiBidWlsZCBz eXN0ZW0gdG8gZ2VuZXJhdGUgYW4gb2JqZWN0IGZpbGUuDQo+ID4gVGh1cywgbm8gZmlsZSBpbmNs dXNpb24gd2lsbCBiZSByZXF1aXJlZCBhbnltb3JlLiBUaGUgQyBmaWxlDQo+ID4gcmVxdWlyaW5n IHRoZSBBTUwgYnl0ZWNvZGUgYXMgYSBDIGFycmF5LCBhbmQgdGhlIEFTTCBmaWxlLA0KPiA+IHdp bGwgYmUgY29tcGlsZWQgaW5kZXBlbmRlbnRseS4gVGhlIEMgYXJyYXkgbXVzdCBiZSBkZWZpbmVk DQo+ID4gYXMgYW4gZXh0ZXJuYWwgc3ltYm9sLiBUaGUgbGlua2VyIGlzIHJlc29sdmluZyB0aGUN Cj4gPiByZWZlcmVuY2UgdG8gdGhlIEMgYXJyYXkgc3ltYm9sLg0KPiA+DQo+ID4gVG8gc3VtbWFy aXplLCB0aGUgZmxvdyBnb2VzIGFzOg0KPiA+ICAtMS4gQVNMIGZpbGUgaXMgY29tcGlsZWQgdG8g QU1MOw0KPiA+ICAtMi4gQU1MIGZpbGUgaXMgY29waWVkIHRvIGEgIi5hbWxpIiBpbnRlcm1lZGlh dGUgZmlsZTsNCj4gPiAgLTMuIEVESzIgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlIHJ1bGUgcmVs ZXZhbnQgdG8gIi5hbWxpIg0KPiA+ICAgICAgZmlsZXMuIFRoaXMgaXMsIGNhbGxpbmcgdGhlICJB bWxUb0MiIHNjcmlwdCwgZ2VuZXJhdGluZw0KPiA+ICAgICAgYSBDIGZpbGUgZnJvbSB0aGUgIi5h bWxpIiBmaWxlOw0KPiA+ICAtNC4gRURLMiBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGUgcnVsZSBy ZWxldmFudCB0byBDIGZpbGVzLg0KPiA+ICAgICAgVGhpcyBpcyBjcmVhdGluZyBhbiBvYmplY3Qg ZmlsZS4NCj4gPiAgLTUuIEVESzIgYnVpbGQgc3lzdGVtIGxpbmtzIHRoZSBvYmplY3QgZmlsZSBj b250YWluaW5nIHRoZQ0KPiA+ICAgICAgQU1MIGJ5dGVjb2RlIHdpdGggdGhlIG9iamVjdCBmaWxl IHJlcXVpcmluZyBpdC4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFBpZXJyZSBHb25kb2lzIDxQ aWVycmUuR29uZG9pc0Bhcm0uY29tPg0KPiA+IFN1Z2dlc3RlZC1ieTogVG9tYXMgUGlsYXIgPFRv bWFzLlBpbGFyQGFybS5jb20+DQo+ID4gLS0tDQo+ID4NCj4gPiBUaGUgY2hhbmdlcyBjYW4gYmUg c2VlbiBhdDogaHR0cHM6Ly9naXRodWIuY29tL1BpZXJyZUFSTS9lZGsyL2NvbW1pdHMvODAzX0Nv bXBpbGVfQU1MX2J5dGVjb2RlX2FycmF5X2ludG9fT0JKX2ZpbGVfdjUNCj4gPg0KPiA+IE5vdGVz Og0KPiA+ICAgICB2MToNCj4gPiAgICAgIC0gQWRkIGEgbmV3IHJ1bGUgdG8gdGhlIGJ1aWxkX3J1 bGUudGVtcGxhdGUgZmlsZSB0bw0KPiA+ICAgICAgICBnZW5lcmF0ZSAiLm9iaiIgZmlsZXMgZnJv bSAuYXNsIGZpbGVzLCBhbmQgbW9kaWZ5DQo+ID4gICAgICAgIHRoZSBBbWxUb0Mgc2NyaXB0IGFj Y29yZGluZ2x5LiBbUGllcnJlXQ0KPiA+ICAgICB2MjoNCj4gPiAgICAgIC0gUmVzdHJpY3QgdGhl IHJ1bGUgdG8gRFhFX0RSSVZFUi4gVGhpcyBhbGxvd3MgdG8gYnVpbGQNCj4gPiAgICAgICAgdGhl IE92bWZQa2csIHdoaWNoIHdhcyBub3QgdGhlIGNhc2UgaW4gdjEuIFtQaWVycmVdDQo+ID4gICAg IHYzOg0KPiA+ICAgICAgLSBDaGFuZ2VkICJTaWduZWQtb2ZmLWJ5IiB0byAiU3VnZ2VzdGVkLWJ5 Ii4gW0JvYl0NCj4gPiAgICAgdjQ6DQo+ID4gICAgIC0gTm8gbW9kaWZpY2F0aW9uLiBSZS1zZW5k aW5nIHRoZSBwYXRjaCB3aXRoIGJhc2U2NA0KPiA+ICAgICAgIGVuY29kaW5nIHRvIGNvbnNlcnZl IHRoZSByaWdodCBsaW5lIGVuZGluZ3MuIFtCb2JdDQo+ID4gICAgIHY1Og0KPiA+ICAgICAgLSBO byBtb2RpZmljYXRpb24uIFtQaWVycmVdDQo+ID4NCj4gPiAgQmFzZVRvb2xzL0NvbmYvYnVpbGRf cnVsZS50ZW1wbGF0ZSAgICAgICB8IDE1ICsrKy0NCj4gPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vQW1sVG9DL0FtbFRvQy5weSB8IDgyICsrKysrKysrLS0tLS0tLS0tLS0tDQo+ID4gIDIgZmls ZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBk aWZmIC0tZ2l0IGEvQmFzZVRvb2xzL0NvbmYvYnVpbGRfcnVsZS50ZW1wbGF0ZSBiL0Jhc2VUb29s cy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUNCj4gPiBpbmRleCAwODIyYjY4MWZjZDlmNjFjNjUw OGU2ZjkzZmZjMzFmYTcwZmQ3MDU5Li5jMDM0ODY5OTE1OTE0OTM2ZTI4ZjY0YTZhYWRiYTA4ZTAx NjlkYTQ0IDEwMDc1NQ0KPiA+IC0tLSBhL0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxh dGUNCj4gPiArKysgYi9CYXNlVG9vbHMvQ29uZi9idWlsZF9ydWxlLnRlbXBsYXRlDQo+ID4gQEAg LTQxOSw2ICs0MTksNyBAQA0KPiA+DQo+ID4gICAgICA8T3V0cHV0RmlsZT4NCj4gPiAgICAgICAg ICAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1sDQo+ID4gKyAgICAgICAg JChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFtbGkNCj4gPg0KPiA+ICAgICAg PEV4dHJhRGVwZW5kZW5jeT4NCj4gPiAgICAgICAgICAkKE1BS0VfRklMRSkNCj4gPiBAQCAtNDI4 LDE0ICs0MjksMjQgQEANCj4gPiAgICAgICAgICAiJChBU0xQUCkiICQoREVQU19GTEFHUykgJChB U0xQUF9GTEFHUykgJChJTkMpIC9JJHtzX3BhdGh9ICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgr KSR7c19iYXNlfS5pID4NCj4gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9Lmlp aQ0KPiA+ICAgICAgICAgIFRyaW0gLS1zb3VyY2UtY29kZSAtbCAtbyAkKE9VVFBVVF9ESVIpKCsp JHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpaSAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3Nf YmFzZX0uaWlpDQo+ID4gICAgICAgICAgIiQoQVNMKSIgJChBU0xfRkxBR1MpICQoQVNMX09VVEZM QUdTKSR7ZHN0fSAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpaQ0KPiA+ IC0gICAgICAgIC1BbWxUb0hleCAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0u YW1sDQo+ID4gKyAgICAgICAgJChDUCkgJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jh c2V9LmFtbCAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1saQ0KPiA+DQo+ ID4gICAgICA8Q29tbWFuZC5HQ0M+DQo+ID4gICAgICAgICAgVHJpbSAtLWFzbC1maWxlIC0tYXNs LWRlcHMgLW8gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmkgLWkgJChJTkNf TElTVCkgJHtzcmN9DQo+ID4gICAgICAgICAgIiQoQVNMUFApIiAkKERFUFNfRkxBR1MpICQoQVNM UFBfRkxBR1MpICQoSU5DKSAtSSR7c19wYXRofSAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykk e3NfYmFzZX0uaSA+DQo+ICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5paWkN Cj4gPiAgICAgICAgICBUcmltIC0tc291cmNlLWNvZGUgLWwgLW8gJChPVVRQVVRfRElSKSgrKSR7 c19kaXJ9KCspJHtzX2Jhc2V9LmlpaWkgJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jh c2V9LmlpaQ0KPiA+ICAgICAgICAgICIkKEFTTCkiICQoQVNMX0ZMQUdTKSAkKEFTTF9PVVRGTEFH Uykke2RzdH0gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmlpaWkNCj4gPiAt ICAgICAgICAtQW1sVG9IZXggJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFt bA0KPiA+ICsgICAgICAgICQoQ1ApICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNl fS5hbWwgJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFtbGkNCj4gPiArDQo+ ID4gK1tBY3BpLU1hY2hpbmUtTGFuZ3VhZ2UtRmlsZS10by1DLkRYRV9EUklWRVJdDQo+ID4gKyAg ICA8SW5wdXRGaWxlPg0KPiA+ICsgICAgICAgID8uYW1saQ0KPiA+ICsNCj4gPiArICAgIDxPdXRw dXRGaWxlPg0KPiA+ICsgICAgICAgICR7c19wYXRofSgrKSR7c19iYXNlfS5jDQo+ID4gKw0KPiA+ ICsgICAgPENvbW1hbmQ+DQo+ID4gKyAgICAgICAgLUFtbFRvQyAke3NyY30NCj4gPg0KPiA+ICBb Qy1Db2RlLUZpbGUuQWNwaVRhYmxlXQ0KPiA+ICAgICAgPElucHV0RmlsZT4NCj4gPiBkaWZmIC0t Z2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQW1sVG9DL0FtbFRvQy5weSBiL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL0FtbFRvQy9BbWxUb0MucHkNCj4gPiBpbmRleCA2NDNkYjI5MTBlMzdh Y2ZkZDgwYWMxOGQyODhjOTIxMzIwYTc5Y2UxLi4zNDZkZTcxNTlkZTcwMmQ4NjBiYmQ4MDlkZGJl ODE3NWYxNDkzY2ZiIDEwMDY0NA0KPiA+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0Ft bFRvQy9BbWxUb0MucHkNCj4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BbWxUb0Mv QW1sVG9DLnB5DQo+ID4gQEAgLTEsOSArMSw5IEBADQo+ID4gICMjIEBmaWxlDQo+ID4gICMNCj4g PiAtIyBDb252ZXJ0IGFuIEFNTCBmaWxlIHRvIGEgLmhleCBmaWxlIGNvbnRhaW5pbmcgdGhlIEFN TCBieXRlY29kZSBzdG9yZWQgaW4gYQ0KPiA+ICsjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAu YyBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZSBzdG9yZWQgaW4gYQ0KPiA+ICAjIEMg YXJyYXkuDQo+ID4gLSMgQnkgZGVmYXVsdCwgIlRhYmxlc1xEc2R0LmFtbCIgd2lsbCBnZW5lcmF0 ZSAiVGFibGVzXERzZHQuaGV4Ii4NCj4gPiAtIyAiVGFibGVzXERzZHQuaGV4IiB3aWxsIGNvbnRh aW4gYSBDIGFycmF5IG5hbWVkICJkc2R0X2FtbF9jb2RlIiB0aGF0IGNvbnRhaW5zDQo+ID4gKyMg QnkgZGVmYXVsdCwgIlRhYmxlc1xEc2R0LmFtbCIgd2lsbCBnZW5lcmF0ZSAiVGFibGVzXERzZHQu YyIuDQo+ID4gKyMgIlRhYmxlc1xEc2R0LmMiIHdpbGwgY29udGFpbiBhIEMgYXJyYXkgbmFtZWQg ImRzZHRfYW1sX2NvZGUiIHRoYXQgY29udGFpbnMNCj4gPiAgIyB0aGUgQU1MIGJ5dGVjb2RlLg0K PiA+ICAjDQo+ID4gICMgQ29weXJpZ2h0IChjKSAyMDIwLCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gQEAgLTE3LDMxICsxNywyNiBAQCBmcm9tIENvbW1vbi5CdWls ZFRvb2xFcnJvciBpbXBvcnQgKg0KPiA+ICBpbXBvcnQgc3lzDQo+ID4gIGltcG9ydCBvcw0KPiA+ DQo+ID4gK19fZGVzY3JpcHRpb25fXyA9ICIiIg0KPiA+ICtDb252ZXJ0IGFuIEFNTCBmaWxlIHRv IGEgLmMgZmlsZSBjb250YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUgc3RvcmVkIGluIGEgQw0KPiA+ ICthcnJheS4gQnkgZGVmYXVsdCwgVGFibGVzXERzZHQuYW1sIHdpbGwgZ2VuZXJhdGUgVGFibGVz XERzZHQuYy4NCj4gPiArVGFibGVzXERzZHQuYyB3aWxsIGNvbnRhaW4gYSBDIGFycmF5IG5hbWVk ICJkc2R0X2FtbF9jb2RlIiB0aGF0IGNvbnRhaW5zDQo+ID4gK3RoZSBBTUwgYnl0ZWNvZGUuDQo+ ID4gKyIiIg0KPiA+ICsNCj4gPiAgIyMgUGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMu DQo+ID4gICMNCj4gPiAgIyBAcmV0dmFsIEEgYXJncGFyc2UuTmFtZVNwYWNlIGluc3RhbmNlLCBj b250YWluaW5nIHBhcnNlZCB2YWx1ZXMuDQo+ID4gICMNCj4gPiAgZGVmIFBhcnNlQXJncygpOg0K PiA+ICAgICAgIyBJbml0aWFsaXplIHRoZSBwYXJzZXIuDQo+ID4gLSAgICBQYXJzZXIgPSBhcmdw YXJzZS5Bcmd1bWVudFBhcnNlcigNCj4gPiAtICAgICAgZGVzY3JpcHRpb249IkNvbnZlcnQgYW4g QU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFpbmluZyB0aGUgQU1MICIgKyBcDQo+ID4gLSAg ICAgICAgICAgICAgICAgICJieXRlY29kZSBzdG9yZWQgaW4gYSBDIGFycmF5LiBCeSBkZWZhdWx0 LCAiICsgXA0KPiA+IC0gICAgICAgICAgICAgICAgICAiXCJUYWJsZXNcXERzZHQuYW1sXCIgd2ls bCBnZW5lcmF0ZSIgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAgICJcIlRhYmxlc1xcRHNkdC5o ZXhcIi4gXCJUYWJsZXNcXERzZHQuaGV4XCIgd2lsbCAiICsgXA0KPiA+IC0gICAgICAgICAgICAg ICAgICAiY29udGFpbiBhIEMgYXJyYXkgbmFtZWQgXCJkc2R0X2FtbF9jb2RlXCIgdGhhdCAiICsg XA0KPiA+IC0gICAgICAgICAgICAgICAgICAiY29udGFpbnMgdGhlIEFNTCBieXRlY29kZS4iDQo+ ID4gLSAgICAgICkNCj4gPiArICAgIFBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRl c2NyaXB0aW9uPV9fZGVzY3JpcHRpb25fXykNCj4gPg0KPiA+ICAgICAgIyBEZWZpbmUgdGhlIHBv c3NpYmxlIGFyZ3VtZW50cy4NCj4gPiAtICAgIFBhcnNlci5hZGRfYXJndW1lbnQoDQo+ID4gLSAg ICAgIGRlc3Q9IklucHV0RmlsZSIsDQo+ID4gLSAgICAgIGhlbHA9IlBhdGggdG8gYW4gaW5wdXQg QU1MIGZpbGUgdG8gZ2VuZXJhdGUgYSAuaGV4IGZpbGUgZnJvbS4iDQo+ID4gLSAgICAgICkNCj4g PiAtICAgIFBhcnNlci5hZGRfYXJndW1lbnQoDQo+ID4gLSAgICAgICItbyIsICItLW91dC1kaXIi LCBkZXN0PSJPdXREaXIiLA0KPiA+IC0gICAgICBoZWxwPSJPdXRwdXQgZGlyZWN0b3J5IHdoZXJl IHRoZSAuaGV4IGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuICIgKyBcDQo+ID4gLSAgICAgICAgICAg IkRlZmF1bHQgaXMgdGhlIGlucHV0IGZpbGUncyBkaXJlY3RvcnkuIg0KPiA+IC0gICAgICApDQo+ ID4gKyAgICBQYXJzZXIuYWRkX2FyZ3VtZW50KGRlc3Q9IklucHV0RmlsZSIsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gYW4gaW5wdXQgQU1MIGZpbGUgdG8gZ2Vu ZXJhdGUgYSAuYyBmaWxlIGZyb20uIikNCj4gPiArICAgIFBhcnNlci5hZGRfYXJndW1lbnQoIi1v IiwgIi0tb3V0LWRpciIsIGRlc3Q9Ik91dERpciIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGhlbHA9Ik91dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5jIGZpbGUgd2lsbCBiZSBnZW5l cmF0ZWQuIERlZmF1bHQgaXMgdGhlIGlucHV0IGZpbGUncyBkaXJlY3RvcnkuIikNCj4gPg0KPiA+ ICAgICAgIyBQYXJzZSB0aGUgaW5wdXQgYXJndW1lbnRzLg0KPiA+ICAgICAgQXJncyA9IFBhcnNl ci5wYXJzZV9hcmdzKCkNCj4gPiBAQCAtNTUsOSArNTAsNyBAQCBkZWYgUGFyc2VBcmdzKCk6DQo+ ID4gICAgICAgICAgd2l0aCBvcGVuKEFyZ3MuSW5wdXRGaWxlLCAicmIiKSBhcyBmSW46DQo+ID4g ICAgICAgICAgICAgIFNpZ25hdHVyZSA9IHN0cihmSW4ucmVhZCg0KSkNCj4gPiAgICAgICAgICAg ICAgaWYgKCJEU0RUIiBub3QgaW4gU2lnbmF0dXJlKSBhbmQgKCJTU0RUIiBub3QgaW4gU2lnbmF0 dXJlKToNCj4gPiAtICAgICAgICAgICAgICAgIEVka0xvZ2dlci5pbmZvKCJJbnZhbGlkIGZpbGUg dHlwZS4gIiArIFwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlsZSBk b2VzIG5vdCBoYXZlIGEgdmFsaWQgIiArIFwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiRFNEVCBvciBTU0RUIHNpZ25hdHVyZTogJXMiICUgQXJncy5JbnB1dEZpbGUpDQo+ ID4gKyAgICAgICAgICAgICAgICBFZGtMb2dnZXIuaW5mbygiSW52YWxpZCBmaWxlIHR5cGUuIEZp bGUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIERTRFQgb3IgU1NEVCBzaWduYXR1cmU6IHt9Ii5mb3Jt YXQoQXJncy5JbnB1dEZpbGUpKQ0KPiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUNCj4g Pg0KPiA+ICAgICAgIyBHZXQgdGhlIGJhc2VuYW1lIG9mIHRoZSBpbnB1dCBmaWxlLg0KPiA+IEBA IC02Niw0MiArNTksMzkgQEAgZGVmIFBhcnNlQXJncygpOg0KPiA+DQo+ID4gICAgICAjIElmIG5v IG91dHB1dCBkaXJlY3RvcnkgaXMgc3BlY2lmaWVkLCBvdXRwdXQgdG8gdGhlIGlucHV0IGRpcmVj dG9yeS4NCj4gPiAgICAgIGlmIG5vdCBBcmdzLk91dERpcjoNCj4gPiAtICAgICAgICBBcmdzLk91 dHB1dEZpbGUgPSBvcy5wYXRoLmpvaW4oDQo+ID4gLSAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUo QXJncy5JbnB1dEZpbGUpLA0KPiA+IC0gICAgICAgICAgQmFzZU5hbWUgKyAiLmhleCINCj4gPiAt ICAgICAgICAgICkNCj4gPiArICAgICAgICBBcmdzLk91dHB1dEZpbGUgPSBvcy5wYXRoLmpvaW4o b3MucGF0aC5kaXJuYW1lKEFyZ3MuSW5wdXRGaWxlKSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQmFzZU5hbWUgKyAiLmMiKQ0KPiA+ICAgICAgZWxzZToNCj4g PiAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoQXJncy5PdXREaXIpOg0KPiA+ICAgICAg ICAgICAgICBvcy5ta2RpcihBcmdzLk91dERpcikNCj4gPiAtICAgICAgICBBcmdzLk91dHB1dEZp bGUgPSBvcy5wYXRoLmpvaW4oQXJncy5PdXREaXIsIEJhc2VOYW1lICsgIi5oZXgiKQ0KPiA+ICsg ICAgICAgIEFyZ3MuT3V0cHV0RmlsZSA9IG9zLnBhdGguam9pbihBcmdzLk91dERpciwgQmFzZU5h bWUgKyAiLmMiKQ0KPiA+DQo+ID4gICAgICBBcmdzLkJhc2VOYW1lID0gQmFzZU5hbWUNCj4gPg0K PiA+ICAgICAgcmV0dXJuIEFyZ3MNCj4gPg0KPiA+IC0jIyBDb252ZXJ0IGFuIEFNTCBmaWxlIHRv IGEgLmhleCBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZSBzdG9yZWQNCj4gPiArIyMg Q29udmVydCBhbiBBTUwgZmlsZSB0byBhIC5jIGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVj b2RlIHN0b3JlZA0KPiA+ICAjICBpbiBhIEMgYXJyYXkuDQo+ID4gICMNCj4gPiAgIyBAcGFyYW0g IElucHV0RmlsZSAgICAgUGF0aCB0byB0aGUgaW5wdXQgQU1MIGZpbGUuDQo+ID4gLSMgQHBhcmFt ICBPdXRwdXRGaWxlICAgIFBhdGggdG8gdGhlIG91dHB1dCAuaGV4IGZpbGUgdG8gZ2VuZXJhdGUu DQo+ID4gKyMgQHBhcmFtICBPdXRwdXRGaWxlICAgIFBhdGggdG8gdGhlIG91dHB1dCAuYyBmaWxl IHRvIGdlbmVyYXRlLg0KPiA+ICAjIEBwYXJhbSAgQmFzZU5hbWUgICAgICBCYXNlIG5hbWUgb2Yg dGhlIGlucHV0IGZpbGUuDQo+ID4gLSMgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYWxz byB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIC5oZXggZmlsZS4NCj4gPiArIyAgICAgICAgICAg ICAgICAgICAgICAgVGhpcyBpcyBhbHNvIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgLmMgZmls ZS4NCj4gPiAgIw0KPiA+IC1kZWYgQW1sVG9IZXgoSW5wdXRGaWxlLCBPdXRwdXRGaWxlLCBCYXNl TmFtZSk6DQo+ID4gK2RlZiBBbWxUb0MoSW5wdXRGaWxlLCBPdXRwdXRGaWxlLCBCYXNlTmFtZSk6 DQo+ID4NCj4gPiAtICAgIE1hY3JvTmFtZSA9ICJfX3t9X0hFWF9fIi5mb3JtYXQoQmFzZU5hbWUu dXBwZXIoKSkNCj4gPiAgICAgIEFycmF5TmFtZSA9IEJhc2VOYW1lLmxvd2VyKCkgKyAiX2FtbF9j b2RlIg0KPiA+ICsgICAgRmlsZUhlYWRlciA9XA0KPiA+ICsiIiINCj4gPiArLy8gVGhpcyBmaWxl IGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tOg0KPiA+ICsvLyAgIC1QeXRob24gc2NyaXB0OiB7fQ0K PiA+ICsvLyAgIC1JbnB1dCBBTUwgZmlsZToge30NCj4gPiArDQo+ID4gKyIiIg0KPiA+DQo+ID4g ICAgICB3aXRoIG9wZW4oSW5wdXRGaWxlLCAicmIiKSBhcyBmSW4sIG9wZW4oT3V0cHV0RmlsZSwg InciKSBhcyBmT3V0Og0KPiA+ICAgICAgICAgICMgV3JpdGUgaGVhZGVyLg0KPiA+IC0gICAgICAg IGZPdXQud3JpdGUoIi8vIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbTpcbiIgKyBc DQo+ID4gLSAgICAgICAgICAgICAgICAgICAiLy8gXHRQeXRob24gc2NyaXB0OiAiICsgXA0KPiA+ IC0gICAgICAgICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSArICJcbiIgKyBc DQo+ID4gLSAgICAgICAgICAgICAgICAgICAiLy8gXHRJbnB1dCBBTUwgZmlsZTogIiArIFwNCj4g PiAtICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aChJbnB1dEZpbGUpICsgIlxuXG4i ICsgXA0KPiA+IC0gICAgICAgICAgICAgICAgICAgIiNpZm5kZWYge31cbiIuZm9ybWF0KE1hY3Jv TmFtZSkgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAgICAiI2RlZmluZSB7fVxuXG4iLmZvcm1h dChNYWNyb05hbWUpDQo+ID4gLSAgICAgICAgICAgICAgICAgICApDQo+ID4gKyAgICAgICAgZk91 dC53cml0ZShGaWxlSGVhZGVyLmZvcm1hdChvcy5wYXRoLmFic3BhdGgoSW5wdXRGaWxlKSwgb3Mu cGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpDQo+ID4NCj4gPiAgICAgICAgICAjIFdyaXRlIHRoZSBh cnJheSBhbmQgaXRzIGNvbnRlbnQuDQo+ID4gICAgICAgICAgZk91dC53cml0ZSgidW5zaWduZWQg Y2hhciB7fVtdID0ge3tcbiAgIi5mb3JtYXQoQXJyYXlOYW1lKSkNCj4gPiBAQCAtMTE1LDE1ICsx MDUsMTIgQEAgZGVmIEFtbFRvSGV4KElucHV0RmlsZSwgT3V0cHV0RmlsZSwgQmFzZU5hbWUpOg0K PiA+ICAgICAgICAgICAgICBieXRlID0gZkluLnJlYWQoMSkNCj4gPiAgICAgICAgICBmT3V0Lndy aXRlKCJcbn07XG4iKQ0KPiA+DQo+ID4gLSAgICAgICAgIyBXcml0ZSBmb290ZXIuDQo+ID4gLSAg ICAgICAgZk91dC53cml0ZSgiI2VuZGlmIC8vIHt9XG4iLmZvcm1hdChNYWNyb05hbWUpKQ0KPiA+ IC0NCj4gPiAgIyMgTWFpbiBtZXRob2QNCj4gPiAgIw0KPiA+ICAjIFRoaXMgbWV0aG9kOg0KPiA+ ICAjICAgMS0gIEluaXRpYWxpemUgYW4gRWRrTG9nZ2VyIGluc3RhbmNlLg0KPiA+ICAjICAgMi0g IFBhcnNlcyB0aGUgaW5wdXQgYXJndW1lbnRzLg0KPiA+IC0jICAgMy0gIENvbnZlcnRzIGFuIEFN TCBmaWxlIHRvIGEgLmhleCBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZSBzdG9yZWQN Cj4gPiArIyAgIDMtICBDb252ZXJ0cyBhbiBBTUwgZmlsZSB0byBhIC5jIGZpbGUgY29udGFpbmlu ZyB0aGUgQU1MIGJ5dGVjb2RlIHN0b3JlZA0KPiA+ICAjICAgICAgIGluIGEgQyBhcnJheS4NCj4g PiAgIw0KPiA+ICAjIEByZXR2YWwgMCAgICAgU3VjY2Vzcy4NCj4gPiBAQCAtMTM5LDEwICsxMjYs OSBAQCBkZWYgTWFpbigpOg0KPiA+ICAgICAgICAgIGlmIG5vdCBDb21tYW5kQXJndW1lbnRzOg0K PiA+ICAgICAgICAgICAgICByZXR1cm4gMQ0KPiA+DQo+ID4gLSAgICAgICAgIyBDb252ZXJ0IGFu IEFNTCBmaWxlIHRvIGEgLmhleCBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZSBzdG9y ZWQNCj4gPiArICAgICAgICAjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuYyBmaWxlIGNvbnRh aW5pbmcgdGhlIEFNTCBieXRlY29kZSBzdG9yZWQNCj4gPiAgICAgICAgICAjIGluIGEgQyBhcnJh eS4NCj4gPiAtICAgICAgICBBbWxUb0hleChDb21tYW5kQXJndW1lbnRzLklucHV0RmlsZSwgQ29t bWFuZEFyZ3VtZW50cy5PdXRwdXRGaWxlLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg IENvbW1hbmRBcmd1bWVudHMuQmFzZU5hbWUpDQo+ID4gKyAgICAgICAgQW1sVG9DKENvbW1hbmRB cmd1bWVudHMuSW5wdXRGaWxlLCBDb21tYW5kQXJndW1lbnRzLk91dHB1dEZpbGUsIENvbW1hbmRB cmd1bWVudHMuQmFzZU5hbWUpDQo+ID4gICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6DQo+ID4g ICAgICAgICAgcHJpbnQoZSkNCj4gPiAgICAgICAgICByZXR1cm4gMQ0KPiA+IC0tDQo+ID4gJ0d1 aWQoQ0UxNjU2NjktM0VGMy00OTNGLUI4NUQtNjE5MEVFNUI5NzU5KScNCj4gPg0KPiA+IO+/vQ0K