From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.0.59; helo=eur01-he1-obe.outbound.protection.outlook.com; envelope-from=evan.lloyd@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0059.outbound.protection.outlook.com [104.47.0.59]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4486122402E03 for ; Wed, 28 Feb 2018 12:21:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=9c6ZGWUuOaeicZYwg8ODCglX5MpmdkBqCEdHIhJdYCg=; b=Wq0KjUjpERZ5GFXBB68k7SM+uS5YvpHGf195FTpRSQDpBKDdINYAW/BJUOTek6+9wg2d3Ma6iiZZk31rKLERxhiurhiZawaH5yRC7wWGM21oEKrp5VZdztKW75OxfumSatc3bDGbc+nbclCrRmPhrWIsNgFYgWA06LJIEO8hmUE= Received: from HE1PR0801MB1771.eurprd08.prod.outlook.com (10.168.150.14) by HE1PR0801MB1770.eurprd08.prod.outlook.com (10.168.150.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Wed, 28 Feb 2018 20:27:20 +0000 Received: from HE1PR0801MB1771.eurprd08.prod.outlook.com ([fe80::1925:dd6f:e583:faaf]) by HE1PR0801MB1771.eurprd08.prod.outlook.com ([fe80::1925:dd6f:e583:faaf%15]) with mapi id 15.20.0506.028; Wed, 28 Feb 2018 20:27:20 +0000 From: Evan Lloyd To: Ard Biesheuvel , "leif.lindholm@linaro.org" CC: Girish Pathak , Matteo Carlini , nd , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCH edk2-platforms v2 06/18] ARM/VExpressPkg: Add and update debug ASSERTS Thread-Index: AQHTe1hOO2sr3Hscrk+bI5jbnjbR/aNQ+WgAgBMq8gCAAAgyAIAAButQgAABoICAVndnYA== Date: Wed, 28 Feb 2018 20:27:19 +0000 Message-ID: References: <20171222190821.12440-1-evan.lloyd@arm.com> <20171222190821.12440-7-evan.lloyd@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Evan.Lloyd@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0801MB1770; 7:Mj9Xjlep4nDo9VjJqW2AAq72F46v7cPruFmkOgbXNgAaKKSoVtGpY5XfOVopR2GgBgq5i2f5y7QEdQ0HJ3w3BgLne9H4mdomi2xmJwp2LoJDW4lOApuhGzIp1o0UD7Tz0UUMXY2JjrMk51iY4YVUpKM+uVZNPUkMoMFn+mdIlQQdWgMa57vcGz50AnxA3bN3DBahy+mSwYwqTGBlk9pVNnIAa39HSyj6svf27x6jF5YxfdVYA39Svrv6R/HofxaM x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 8c4c4bfd-61b7-4102-8a2b-08d57ee9aacb x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020); SRVR:HE1PR0801MB1770; x-ms-traffictypediagnostic: HE1PR0801MB1770: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(162533806227266); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3231220)(944501161)(52105095)(3002001)(6055026)(6041288)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:HE1PR0801MB1770; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB1770; x-forefront-prvs: 0597911EE1 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39380400002)(396003)(39860400002)(376002)(346002)(199004)(189003)(13464003)(81166006)(8936002)(110136005)(966005)(6306002)(9686003)(55016002)(8676002)(316002)(478600001)(81156014)(97736004)(53936002)(14454004)(3280700002)(6436002)(33656002)(106356001)(74316002)(6246003)(15650500001)(25786009)(3660700001)(7736002)(66066001)(68736007)(99286004)(305945005)(4326008)(2501003)(72206003)(5250100002)(59450400001)(2906002)(6506007)(102836004)(3846002)(86362001)(6116002)(2950100002)(575784001)(76176011)(229853002)(53546011)(186003)(93886005)(26005)(7696005)(5660300001)(54906003)(2900100001)(105586002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1770; H:HE1PR0801MB1771.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: qGHSL1nvu0zmMiqOb+5z1HkQ+fEryyMCofpkHhq11o7HKfXBfheRivAMC20jBzz87MQQfhwv4YR9Wwll3ULyzoN1FwdE9OqXxC7f7acbHZ/N7S9nOa10kGE8w/DshLeIJTOC1PlIy/rhG1iby+8oYkIqE7+AQ6yHUtnAL30cIJk= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c4c4bfd-61b7-4102-8a2b-08d57ee9aacb X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Feb 2018 20:27:19.9333 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1770 Subject: Re: [PATCH edk2-platforms v2 06/18] ARM/VExpressPkg: Add and update debug ASSERTS X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Feb 2018 20:21:18 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGVpZiwgQXJkLg0KQ2FuIEkgZ2V0IHlvdSB0d28gYXJndWUgb3V0IHRoZSBwcm9zIGFuZCBj b25zIG9mIHRoZSAiQVNTRVJUKEZBTFNFKSIgZGViYXRlLCBwbGVhc2UuDQooc2VlIGh0dHBzOi8v bGlzdHMuMDEub3JnL3BpcGVybWFpbC9lZGsyLWRldmVsLzIwMTgtSmFudWFyeS8wMTk3ODguaHRt bCkNCkZvciB3aGF0IGl0IGlzIHdvcnRoLCBvdXIgKHN1cnByaXNpbmdseSB1bmFuaW1vdXMpIG9w aW5pb24gaXMgdGhhdCwgc2luY2UgdGhlIEFTU0VSVCBpcyBvbmx5IHRoZXJlIHRvIGhlbHAgc3Bv dCBhIHByb2JsZW0sIHRoZW4gdGhlIG1vcmUgaW5mb3JtYXRpb24gcmVwb3J0ZWQgdGhlIGJldHRl ci4gIFRoZSBvbmx5IGJlbmVmaXRzIG9mIEFTU0VSVChGQUxTRSkgd291bGQgYmUgYSBzbWFsbGVy IGRlYnVnIGltYWdlIGFuZCBtaW5vciBlZmZpY2llbmN5IGltcHJvdmVtZW50IG9uIHRoZSBwYXRo IHRvIHRoZSBjcmFzaC4NCg0KUmVnYXJkcywNCkV2YW4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBBcmQgQmllc2hldXZlbCBbbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxp bmFyby5vcmddDQo+IFNlbnQ6IDA0IEphbnVhcnkgMjAxOCAxOTo1NQ0KPiBUbzogRXZhbiBMbG95 ZCA8RXZhbi5MbG95ZEBhcm0uY29tPg0KPiBDYzogR2lyaXNoIFBhdGhhayA8R2lyaXNoLlBhdGhh a0Bhcm0uY29tPjsgTWF0dGVvIENhcmxpbmkNCj4gPE1hdHRlby5DYXJsaW5pQGFybS5jb20+OyBu ZCA8bmRAYXJtLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOw0KPiBUaG9tYXMgQWJyYWhh bSA8dGhvbWFzLmFicmFoYW1AYXJtLmNvbT47IEFydmluZCBDaGF1aGFuDQo+IDxBcnZpbmQuQ2hh dWhhbkBhcm0uY29tPjsgbGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnDQo+IFN1YmplY3Q6IFJlOiBb ZWRrMl0gW1BBVENIIGVkazItcGxhdGZvcm1zIHYyIDA2LzE4XSBBUk0vVkV4cHJlc3NQa2c6DQo+ IEFkZCBhbmQgdXBkYXRlIGRlYnVnIEFTU0VSVFMNCj4gDQo+IE9uIDQgSmFudWFyeSAyMDE4IGF0 IDE5OjUxLCBFdmFuIExsb3lkIDxFdmFuLkxsb3lkQGFybS5jb20+IHdyb3RlOg0KPiA+DQo+ID4N Cj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogQXJkIEJpZXNoZXV2 ZWwgW21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiA+PiBTZW50OiAwNCBKYW51 YXJ5IDIwMTggMTk6MjQNCj4gPj4gVG86IEdpcmlzaCBQYXRoYWsgPEdpcmlzaC5QYXRoYWtAYXJt LmNvbT4NCj4gPj4gQ2M6IEV2YW4gTGxveWQgPEV2YW4uTGxveWRAYXJtLmNvbT47IE1hdHRlbyBD YXJsaW5pDQo+ID4+IDxNYXR0ZW8uQ2FybGluaUBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+OyBl ZGsyLQ0KPiBkZXZlbEBsaXN0cy4wMS5vcmc7DQo+ID4+IFRob21hcyBBYnJhaGFtIDx0aG9tYXMu YWJyYWhhbUBhcm0uY29tPjsgQXJ2aW5kIENoYXVoYW4NCj4gPj4gPEFydmluZC5DaGF1aGFuQGFy bS5jb20+OyBsZWlmLmxpbmRob2xtQGxpbmFyby5vcmcNCj4gPj4gU3ViamVjdDogUmU6IFtlZGsy XSBbUEFUQ0ggZWRrMi1wbGF0Zm9ybXMgdjIgMDYvMThdIEFSTS9WRXhwcmVzc1BrZzoNCj4gPj4g QWRkIGFuZCB1cGRhdGUgZGVidWcgQVNTRVJUUw0KPiA+Pg0KPiA+PiBPbiA0IEphbnVhcnkgMjAx OCBhdCAxODo1NSwgR2lyaXNoIFBhdGhhayA8R2lyaXNoLlBhdGhha0Bhcm0uY29tPg0KPiA+PiB3 cm90ZToNCj4gPj4gPiBIaSBBcmQsDQo+ID4+ID4NCj4gPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPj4gPj4gRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91 bmNlc0BsaXN0cy4wMS5vcmddIE9uDQo+ID4+ID4+IEJlaGFsZiBPZiBBcmQgQmllc2hldXZlbA0K PiA+PiA+PiBTZW50OiAyMyBEZWNlbWJlciAyMDE3IDE0OjEyDQo+ID4+ID4+IFRvOiBFdmFuIExs b3lkIDxFdmFuLkxsb3lkQGFybS5jb20+DQo+ID4+ID4+IENjOiAiTWF0dGVvLkNhcmxpbmlAYXJt LmNvbSJAYXJtLmNvbTsNCj4gPj4gPj4gImxlaWYubGluZGhvbG1AbGluYXJvLm9yZyJAYXJtLmNv bTsgIm5kQGFybS5jb20iQGFybS5jb207DQo+IGVkazItDQo+ID4+ID4+IGRldmVsQGxpc3RzLjAx Lm9yZzsgVGhvbWFzIEFicmFoYW0gPHRob21hcy5hYnJhaGFtQGFybS5jb20+Ow0KPiA+PiBBcnZp bmQNCj4gPj4gPj4gQ2hhdWhhbiA8QXJ2aW5kLkNoYXVoYW5AYXJtLmNvbT47DQo+ID4+ICJhcmQu Ymllc2hldXZlbEBsaW5hcm8ub3JnIkBhcm0uY29tDQo+ID4+ID4+IFN1YmplY3Q6IFJlOiBbZWRr Ml0gW1BBVENIIGVkazItcGxhdGZvcm1zIHYyIDA2LzE4XQ0KPiBBUk0vVkV4cHJlc3NQa2c6DQo+ ID4+ID4+IEFkZCBhbmQgdXBkYXRlIGRlYnVnIEFTU0VSVFMNCj4gPj4gPj4NCj4gPj4gPj4gT24g MjIgRGVjZW1iZXIgMjAxNyBhdCAxOTowOCwgIDxldmFuLmxsb3lkQGFybS5jb20+IHdyb3RlOg0K PiA+PiA+PiA+IEZyb206IEdpcmlzaCBQYXRoYWsgPGdpcmlzaC5wYXRoYWsgYXQgYXJtLmNvbT4N Cj4gPj4gPj4gPg0KPiA+PiA+PiA+IFRoaXMgY2hhbmdlIGFkZHMgc29tZSBkZWJ1ZyBhc3NlcnRp b25zIGUuZyB0byBjYXRjaCBOVUxMIHBvaW50ZXINCj4gPj4gPj4gPiBlcnJvcnMgbWlzc2luZyBp biBQTDExTGNkIGFuZCBIZExjZCBwbGF0Zm9ybSBsaWJyYXJpZXMuDQo+ID4+ID4+ID4NCj4gPj4g Pj4gPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQg MS4xDQo+ID4+ID4+ID4gU2lnbmVkLW9mZi1ieTogR2lyaXNoIFBhdGhhayA8Z2lyaXNoLnBhdGhh a0Bhcm0uY29tPg0KPiA+PiA+PiA+IFNpZ25lZC1vZmYtYnk6IEV2YW4gTGxveWQgPGV2YW4ubGxv eWRAYXJtLmNvbT4NCj4gPj4gPj4gPiAtLS0NCj4gPj4gPj4gPg0KPiA+PiA+Pg0KPiA+Pg0KPiBQ bGF0Zm9ybS9BUk0vVkV4cHJlc3NQa2cvTGlicmFyeS9IZExjZEFybVZFeHByZXNzTGliL0hkTGNk QXJtVkV4cA0KPiA+PiByDQo+ID4+ID4+IGVzcy5jICAgICAgIHwgMjIgKysrKysrKysrKysrKysr KystDQo+ID4+ID4+ID4NCj4gPj4gPj4gPg0KPiA+PiA+Pg0KPiA+Pg0KPiBQbGF0Zm9ybS9BUk0v VkV4cHJlc3NQa2cvTGlicmFyeS9QTDExMUxjZEFybVZFeHByZXNzTGliL1BMMTExTGNkQXINCj4g Pj4gbQ0KPiA+PiA+PiBWRXgNCj4gPj4gPj4gPiBwcmVzcy5jIHwgMjQgKysrKysrKysrKysrKysr KysrKy0NCj4gPj4gPj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQ0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gZGlmZiAtLWdpdA0KPiA+PiA+PiA+DQo+ ID4+ID4+DQo+ID4+DQo+IGEvUGxhdGZvcm0vQVJNL1ZFeHByZXNzUGtnL0xpYnJhcnkvSGRMY2RB cm1WRXhwcmVzc0xpYi9IZExjZEFybVZFDQo+ID4+IHgNCj4gPj4gPj4gcHJlcw0KPiA+PiA+PiA+ IHMuYw0KPiA+PiA+PiA+DQo+ID4+ID4+DQo+ID4+DQo+IGIvUGxhdGZvcm0vQVJNL1ZFeHByZXNz UGtnL0xpYnJhcnkvSGRMY2RBcm1WRXhwcmVzc0xpYi9IZExjZEFybVZFDQo+ID4+IHgNCj4gPj4g Pj4gcHJlcw0KPiA+PiA+PiA+IHMuYyBpbmRleA0KPiA+PiA+PiA+DQo+ID4+ID4+DQo+ID4+DQo+ IDZhZmQ3NjQ4OTdmNDljNjQ0OTBjZTg5MTY4MmY5OWJiMGY1ZDk5M2IuLmE4ZmU4Njk2ZGEwNjUz MDE3Y2U5ZmENCj4gPj4gNmU0YQ0KPiA+PiA+PiA4Ng0KPiA+PiA+PiA+IGNhZjI4M2JjMDRjOSAx MDA2NDQNCj4gPj4gPj4gPiAtLS0NCj4gPj4gPj4gPg0KPiA+PiA+Pg0KPiA+Pg0KPiBhL1BsYXRm b3JtL0FSTS9WRXhwcmVzc1BrZy9MaWJyYXJ5L0hkTGNkQXJtVkV4cHJlc3NMaWIvSGRMY2RBcm1W RQ0KPiA+PiB4DQo+ID4+ID4+IHByZXMNCj4gPj4gPj4gPiBzLmMNCj4gPj4gPj4gPiArKysNCj4g Pj4gPj4NCj4gPj4NCj4gYi9QbGF0Zm9ybS9BUk0vVkV4cHJlc3NQa2cvTGlicmFyeS9IZExjZEFy bVZFeHByZXNzTGliL0hkTGNkQXJtVkUNCj4gPj4geA0KPiA+PiA+PiA+ICsrKyBwcmVzcy5jDQo+ ID4+ID4+ID4gQEAgLTE1Myw2ICsxNTMsOSBAQCBMY2RQbGF0Zm9ybUdldFZyYW0gKA0KPiA+PiA+ PiA+ICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgIFN0YXR1czsNCj4gPj4gPj4gPiAgICBFRklf QUxMT0NBVEVfVFlQRSAgICAgICBBbGxvY2F0aW9uVHlwZTsNCj4gPj4gPj4gPg0KPiA+PiA+PiA+ ICsgIEFTU0VSVCAoVnJhbUJhc2VBZGRyZXNzICE9IE5VTEwpOyAgQVNTRVJUIChWcmFtU2l6ZSAh PSBOVUxMKTsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gICAgLy8gU2V0IHRoZSB2cmFtIHNpemUN Cj4gPj4gPj4gPiAgICAqVnJhbVNpemUgPSBMQ0RfVlJBTV9TSVpFOw0KPiA+PiA+PiA+DQo+ID4+ ID4+ID4gQEAgLTE3MSw2ICsxNzQsNyBAQCBMY2RQbGF0Zm9ybUdldFZyYW0gKA0KPiA+PiA+PiA+ ICAgICAgICAgICAgICAgICAgICBWcmFtQmFzZUFkZHJlc3MNCj4gPj4gPj4gPiAgICAgICAgICAg ICAgICAgICAgKTsNCj4gPj4gPj4gPiAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+ ID4+ID4gKyAgICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4gPj4gPiAgICAgIHJldHVybiBTdGF0dXM7 DQo+ID4+ID4+ID4gICAgfQ0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gQEAgLTE4MSw4ICsxODUsOCBA QCBMY2RQbGF0Zm9ybUdldFZyYW0gKA0KPiA+PiA+PiA+ICAgICAgICAgICAgICAgICAgICAqVnJh bVNpemUsDQo+ID4+ID4+ID4gICAgICAgICAgICAgICAgICAgIEVGSV9NRU1PUllfV0MNCj4gPj4g Pj4gPiAgICAgICAgICAgICAgICAgICAgKTsNCj4gPj4gPj4gPiAtICBBU1NFUlRfRUZJX0VSUk9S IChTdGF0dXMpOw0KPiA+PiA+PiA+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4g Pj4gPiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPiA+PiA+Pg0KPiA+PiA+PiBBcyBpbiB0aGUgc2li bGluZyBwYXRjaCBhZ2FpbnN0IEVESzIsIHRoaXMgcGF0Y2ggbWFrZXMgaXQgbW9yZQ0KPiA+PiA+ PiBkaWZmaWN1bHQgdG8gZmlndXJlIG91dCB3aGF0IHdlbnQgd3Jvbmcgd2hlbiB5b3UgaGl0IHRo ZSBBU1NFUlQuDQo+ID4+ID4+IEFTU0VSVF9FRklfRVJST1IgcHJpbnRzIHRoZSB2YWx1ZSBvZiBT dGF0dXMsIEFTU0VSVChGQUxTRSkgb25seQ0KPiA+PiA+PiBwcmludHMNCj4gPj4gPj4gJzAgIT0g MScNCj4gPj4gPj4NCj4gPj4gPg0KPiA+PiA+IFRoaXMgY2hhbmdlKGFuZCBvdGhlciBzaW1pbGFy IGNoYW5nZXMpIGlzIGluIHJlc3BvbnNlIHRvIHJldmlldw0KPiA+PiA+IGNvbW1lbnRzIG9uIHBh dGNoIHYxDQo+ID4+ID4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvcGlwZXJtYWlsL2VkazItZGV2ZWwv MjAxNy1PY3RvYmVyLzAxNTk5NS5odG1sDQo+ID4+ID4NCj4gPj4gPiB3aXRoIGFib3ZlIHJlZmVy ZW5jZSwgQ2FuIHlvdSBwbGVhc2UgY29uZmlybSBpZiB3ZSBzaG91bGQgcmV2ZXJ0IHRvDQo+ID4+ ID4gdGhlDQo+ID4+IHBhdGNoIHYxIHZlcnNpb24gPw0KPiA+PiA+DQo+ID4+DQo+ID4+IEkgZ3Vl c3MgTGVpZiBhbmQgSSBhcmUgaW4gZGlzYWdyZWVtZW50IGhlcmUuIEluIHBhcnRpY3VsYXIsIEkg dGhpbmsNCj4gPj4gaGlzIGNvbW1lbnQNCj4gPj4NCj4gPj4gIiIiDQo+ID4+IEFTU0VSVCAoRkFM U0UpPyAgKFlvdSBhbHJlYWR5IGtub3cgU3RhdHVzIGlzIGFuIEVGSV9FUlJPUiwgYW5kIGENCj4g Pj4gY29uc29sZSBtZXNzYWdlIHNheWluZyBBU1NFUlQgKFN0YXR1cykgaXMgbm90IGdldHRpbmcg eW91IG91dCBvZg0KPiA+PiBsb29raW5nIGF0IHRoZSBzb3VyY2UgY29kZSB0byBmaW5kIG91dCB3 aGF0IGhhcHBlbmVkLikgIiIiDQo+ID4+DQo+ID4+IGlzIG1pc2d1aWRlZCwgZ2l2ZW4gdGhhdCBB U1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpIHdpbGwgYWN0dWFsbHkNCj4gPj4gcHJpbnQgdGhlIHZh bHVlIG9mIFN0YXR1cyB0byB0aGUgZGVidWcgY29uc29sZS4NCj4gPj4NCj4gPj4gSG93ZXZlciwg dGhlIG9iamVjdGlvbnMgYWdhaW5zdCBwdXR0aW5nIGZ1bmN0aW9uIGNhbGxzIGluIEFTU0VSVCgp cw0KPiA+PiBhcmUNCj4gPj4ganVzdGlmaWVkOiBBU1NFUlQoKSBzaG91bGQgbm90IGhhdmUgc2lk ZSBlZmZlY3RzIGlmIGl0cyBjb25kaXRpb24gaXMNCj4gPj4gbWV0LCBhbmQgZnVuY3Rpb24gY2Fs bHMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLg0KPiA+Pg0KPiA+PiBJIHN1cHBvc2Ugd2Ugc2hvdWxk IHdhaXQgZm9yIExlaWYgdG8gcmV0dXJuIG9uIHRoZSAyMm5kIGJlZm9yZQ0KPiA+PiBwcm9jZWVk aW5nIHdpdGggdGhlIHJldmlldy4NCj4gPj4gQXBvbG9naWVzIGZvciB0aGUgY29uZnVzaW9uLCBh bmQgZm9yIHRoZSBkZWxheS4NCj4gPg0KPiA+ICBbW0V2YW4gTGxveWRdXSBBbiBhbHRlcm5hdGl2 ZSBtaWdodCBiZSBmb3IgR2lyaXNoIHRvIHRha2UgdGhlIG90aGVyIHJvdXRlDQo+IExlaWYgc3Vn Z2VzdGVkLCBhbmQgY2FjaGUgdGhlIGNvbmRpdGlvbiBpbiBhIHZhcmlhYmxlLg0KPiA+IFRoYXQg bWlnaHQgYmUgYSBzbGlnaHQgb3ZlcmhlYWQsIGFuZCB0aGUgKHByZXN1bWFibHkgQk9PTEVBTikg dmFyaWFibGUNCj4gbWF5IG5lZWQgY2FyZWZ1bCBuYW1pbmcsIGJ1dC4uLg0KPiA+DQo+IA0KPiBJ ZiB3ZSBhcmUgZ29pbmcgdG8gdXNlIGEgYm9vbGVhbiB0byByZWNvcmQgdGhlIHJlc3VsdCBvZiB0 aGUgY29tcGFyaXNvbiwgYW5kDQo+IEFTU0VSVCgpIG9uIGl0IGluIHRoZSBpZiAoKSBibG9jayBp ZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZSwgSSBkb24ndCBzZWUgd2hhdA0KPiB0aGUgZGlmZmVy ZW5jZSBpcyB3aXRoIGRvaW5nIEFTU0VSVCAoRkFMU0UpIGRpcmVjdGx5Lg0KPiANCj4gDQo+ID4+ DQo+ID4+DQo+ID4+DQo+ID4+ID4+ID4gICAgICBnQlMtPkZyZWVQYWdlcyAoKlZyYW1CYXNlQWRk cmVzcywgRUZJX1NJWkVfVE9fUEFHRVMNCj4gPj4gKCpWcmFtU2l6ZSkpOw0KPiA+PiA+PiA+ICAg ICAgcmV0dXJuIFN0YXR1czsNCj4gPj4gPj4gPiAgICB9DQo+ID4+ID4+ID4gQEAgLTIyMSw2ICsy MjUsNyBAQCBMY2RQbGF0Zm9ybVNldE1vZGUgKA0KPiA+PiA+PiA+ICAgIEVGSV9TVEFUVVMgICAg ICAgICAgICBTdGF0dXM7DQo+ID4+ID4+ID4NCj4gPj4gPj4gPiAgICBpZiAoTW9kZU51bWJlciA+ PSBMY2RQbGF0Zm9ybUdldE1heE1vZGUgKCkpIHsNCj4gPj4gPj4gPiArICAgIEFTU0VSVCAoRkFM U0UpOw0KPiA+PiA+Pg0KPiA+PiA+PiBUaGVzZSBhcmUgZmluZTogdGhlIGNvZGUgaXRzZWxmIGV4 cGxhaW5zIGFkZXF1YXRlbHkgd2hpY2gNCj4gPj4gPj4gY29uZGl0aW9uIHRyaWdnZXJlZCB0aGUg QVNTRVJUIHRvIGZpcmUuDQo+ID4+ID4+DQo+ID4+ID4+ID4gICAgICByZXR1cm4gRUZJX0lOVkFM SURfUEFSQU1FVEVSOw0KPiA+PiA+PiA+ICAgIH0NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IEBAIC0y NzksNyArMjg0LDEwIEBAIExjZFBsYXRmb3JtUXVlcnlNb2RlICgNCj4gPj4gPj4gPiAgICBPVVQg RUZJX0dSQVBISUNTX09VVFBVVF9NT0RFX0lORk9STUFUSU9OICogQ09OU1QNCj4gSW5mbw0KPiA+ PiA+PiA+ICAgICkNCj4gPj4gPj4gPiAgew0KPiA+PiA+PiA+ICsgIEFTU0VSVCAoSW5mbyAhPSBO VUxMKTsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gICAgaWYgKE1vZGVOdW1iZXIgPj0gTGNkUGxh dGZvcm1HZXRNYXhNb2RlICgpKSB7DQo+ID4+ID4+ID4gKyAgICBBU1NFUlQgKEZBTFNFKTsNCj4g Pj4gPj4gPiAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ID4+ID4gICAg fQ0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gQEAgLTM0Myw3ICszNTEsMTggQEAgTGNkUGxhdGZvcm1H ZXRUaW1pbmdzICgNCj4gPj4gPj4gPiAgICBPVVQgVUlOVDMyICogQ09OU1QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVkZyb250UG9yY2gNCj4gPj4gPj4gPiAgICApDQo+ID4+ID4+ID4gIHsN Cj4gPj4gPj4gPiArICAvLyBPbmUgb2YgdGhlIHBvaW50ZXJzIGlzIE5VTEwgIEFTU0VSVCAoSFJl cyAhPSBOVUxMKTsNCj4gPj4gPj4gPiArIEFTU0VSVCAoSFN5bmMgIT0gTlVMTCk7ICBBU1NFUlQg KEhCYWNrUG9yY2ggIT0gTlVMTCk7ICBBU1NFUlQNCj4gPj4gPj4gPiArIChIRnJvbnRQb3JjaCAh PSBOVUxMKTsgIEFTU0VSVCAoVlJlcyAhPSBOVUxMKTsgIEFTU0VSVCAoVlN5bmMNCj4gPj4gPj4g PiArICE9IE5VTEwpOyAgQVNTRVJUIChWQmFja1BvcmNoICE9IE5VTEwpOyAgQVNTRVJUIChWRnJv bnRQb3JjaA0KPiA+PiA+PiA+ICsgIT0gTlVMTCk7DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICAg IGlmIChNb2RlTnVtYmVyID49IExjZFBsYXRmb3JtR2V0TWF4TW9kZSAoKSkgew0KPiA+PiA+PiA+ ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+ID4+ID4+ID4gICAgICByZXR1cm4gRUZJX0lOVkFMSURf UEFSQU1FVEVSOw0KPiA+PiA+PiA+ICAgIH0NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IEBAIC0zNzYs NiArMzk1LDcgQEAgTGNkUGxhdGZvcm1HZXRCcHAgKA0KPiA+PiA+PiA+ICAgICkNCj4gPj4gPj4g PiAgew0KPiA+PiA+PiA+ICAgIGlmIChNb2RlTnVtYmVyID49IExjZFBsYXRmb3JtR2V0TWF4TW9k ZSAoKSkgew0KPiA+PiA+PiA+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+ID4+ID4+ID4gICAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+PiA+PiA+ICAgIH0NCj4gPj4gPj4gPg0K PiA+PiA+PiA+IGRpZmYgLS1naXQNCj4gPj4gPj4gPg0KPiA+PiA+Pg0KPiA+Pg0KPiBhL1BsYXRm b3JtL0FSTS9WRXhwcmVzc1BrZy9MaWJyYXJ5L1BMMTExTGNkQXJtVkV4cHJlc3NMaWIvUEwxMTFM Y2QNCj4gPj4gQXINCj4gPj4gPj4gbVYNCj4gPj4gPj4gPiBFeHByZXNzLmMNCj4gPj4gPj4gPg0K PiA+PiA+Pg0KPiA+Pg0KPiBiL1BsYXRmb3JtL0FSTS9WRXhwcmVzc1BrZy9MaWJyYXJ5L1BMMTEx TGNkQXJtVkV4cHJlc3NMaWIvUEwxMTFMY2QNCj4gPj4gQXINCj4gPj4gPj4gbVYNCj4gPj4gPj4g PiBFeHByZXNzLmMgaW5kZXgNCj4gPj4gPj4gPg0KPiA+PiA+Pg0KPiA+Pg0KPiA3OTlmYjNmYzc4 MWNlMDRiYjY0Y2IxZmEwYjg3ZjI2MmE2NzBlZDc4Li5mZDRlZWE4ZjhlMjM5N2JjN2Q0ZGRmDQo+ ID4+IDRjZmUNCj4gPj4gPj4gM2QNCj4gPj4gPj4gPiBjYzk3YTUxMDllZGIgMTAwNjQ0DQo+ID4+ ID4+ID4gLS0tDQo+ID4+ID4+ID4NCj4gPj4gPj4NCj4gPj4NCj4gYS9QbGF0Zm9ybS9BUk0vVkV4 cHJlc3NQa2cvTGlicmFyeS9QTDExMUxjZEFybVZFeHByZXNzTGliL1BMMTExTGNkDQo+ID4+IEFy DQo+ID4+ID4+IG1WDQo+ID4+ID4+ID4gRXhwcmVzcy5jDQo+ID4+ID4+ID4gKysrDQo+ID4+ID4+ DQo+ID4+DQo+IGIvUGxhdGZvcm0vQVJNL1ZFeHByZXNzUGtnL0xpYnJhcnkvUEwxMTFMY2RBcm1W RXhwcmVzc0xpYi9QTDExMUxjZA0KPiA+PiA+PiA+ICsrKyBBcm1WRXhwcmVzcy5jDQo+ID4+ID4+ ID4gQEAgLTIwNSw2ICsyMDUsOSBAQCBMY2RQbGF0Zm9ybUdldFZyYW0gKA0KPiA+PiA+PiA+DQo+ ID4+ID4+ID4gICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4+ID4+ID4NCj4gPj4gPj4gPiAr ICBBU1NFUlQgKFZyYW1CYXNlQWRkcmVzcyAhPSBOVUxMKTsgIEFTU0VSVCAoVnJhbVNpemUgIT0g TlVMTCk7DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICAgIC8vIElzIGl0IG9uIHRoZSBtb3RoZXJi b2FyZCBvciBvbiB0aGUgZGF1Z2h0ZXJib2FyZD8NCj4gPj4gPj4gPiAgICBzd2l0Y2ggKFBMMTEx X0NMQ0RfU0lURSkgew0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gQEAgLTIyNSw2ICsyMjgsNyBAQCBM Y2RQbGF0Zm9ybUdldFZyYW0gKA0KPiA+PiA+PiA+ICAgICAgICAgICAgICAgICAgICAgIFZyYW1C YXNlQWRkcmVzcw0KPiA+PiA+PiA+ICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4+ID4+ID4g ICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+ID4+ID4gKyAgICAgIEFTU0VSVCAo RkFMU0UpOw0KPiA+PiA+PiA+ICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+PiA+PiA+ICAgICAg fQ0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gQEAgLTIzNSw4ICsyMzksOCBAQCBMY2RQbGF0Zm9ybUdl dFZyYW0gKA0KPiA+PiA+PiA+ICAgICAgICAgICAgICAgICAgICAgICpWcmFtU2l6ZSwNCj4gPj4g Pj4gPiAgICAgICAgICAgICAgICAgICAgICBFRklfTUVNT1JZX1dDDQo+ID4+ID4+ID4gICAgICAg ICAgICAgICAgICAgICAgKTsNCj4gPj4gPj4gPiAtICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQo+ID4+ID4+ID4gICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+ID4+ID4g KyAgICAgIEFTU0VSVCAoRkFMU0UpOw0KPiA+PiA+PiA+ICAgICAgICBnQlMtPkZyZWVQYWdlcyAo KlZyYW1CYXNlQWRkcmVzcywgRUZJX1NJWkVfVE9fUEFHRVMNCj4gPj4gPj4gKCpWcmFtU2l6ZSkp Ow0KPiA+PiA+PiA+ICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+PiA+PiA+ICAgICAgfQ0KPiA+ PiA+PiA+IEBAIC0yOTQsNiArMjk4LDcgQEAgTGNkUGxhdGZvcm1TZXRNb2RlICgNCj4gPj4gPj4g PiAgICBVSU5UMzIgICAgICAgICAgICAgICAgU3lzSWQ7DQo+ID4+ID4+ID4NCj4gPj4gPj4gPiAg ICBpZiAoTW9kZU51bWJlciA+PSBMY2RQbGF0Zm9ybUdldE1heE1vZGUgKCkpIHsNCj4gPj4gPj4g PiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPiA+PiA+PiA+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCj4gPj4gPj4gPiAgICB9DQo+ID4+ID4+ID4NCj4gPj4gPj4gPiBAQCAtMzY5 LDcgKzM3NCwxMCBAQCBMY2RQbGF0Zm9ybVF1ZXJ5TW9kZSAoDQo+ID4+ID4+ID4gICAgT1VUIEVG SV9HUkFQSElDU19PVVRQVVRfTU9ERV9JTkZPUk1BVElPTiAqIENPTlNUIEluZm8NCj4gPj4gPj4g PiAgICApDQo+ID4+ID4+ID4gIHsNCj4gPj4gPj4gPiArICBBU1NFUlQgKEluZm8gIT0gTlVMTCk7 DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICAgIGlmIChNb2RlTnVtYmVyID49IExjZFBsYXRmb3Jt R2V0TWF4TW9kZSAoKSkgew0KPiA+PiA+PiA+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+ID4+ID4+ ID4gICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+PiA+PiA+ICAgIH0NCj4g Pj4gPj4gPg0KPiA+PiA+PiA+IEBAIC00MzMsNyArNDQxLDE4IEBAIExjZFBsYXRmb3JtR2V0VGlt aW5ncyAoDQo+ID4+ID4+ID4gICAgT1VUIFVJTlQzMiAqIENPTlNUICAgICAgICAgICAgICAgICAg ICAgIFZGcm9udFBvcmNoDQo+ID4+ID4+ID4gICAgKQ0KPiA+PiA+PiA+ICB7DQo+ID4+ID4+ID4g KyAgLy8gT25lIG9mIHRoZSBwb2ludGVycyBpcyBOVUxMICBBU1NFUlQgKEhSZXMgIT0gTlVMTCk7 DQo+ID4+ID4+ID4gKyBBU1NFUlQgKEhTeW5jICE9IE5VTEwpOyAgQVNTRVJUIChIQmFja1BvcmNo ICE9IE5VTEwpOyAgQVNTRVJUDQo+ID4+ID4+ID4gKyAoSEZyb250UG9yY2ggIT0gTlVMTCk7ICBB U1NFUlQgKFZSZXMgIT0gTlVMTCk7ICBBU1NFUlQgKFZTeW5jDQo+ID4+ID4+ID4gKyAhPSBOVUxM KTsgIEFTU0VSVCAoVkJhY2tQb3JjaCAhPSBOVUxMKTsgIEFTU0VSVCAoVkZyb250UG9yY2gNCj4g Pj4gPj4gPiArICE9IE5VTEwpOw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiAgICBpZiAoTW9kZU51 bWJlciA+PSBMY2RQbGF0Zm9ybUdldE1heE1vZGUgKCkpIHsNCj4gPj4gPj4gPiArICAgIEFTU0VS VCAoRkFMU0UpOw0KPiA+PiA+PiA+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsN Cj4gPj4gPj4gPiAgICB9DQo+ID4+ID4+ID4NCj4gPj4gPj4gPiBAQCAtNDY1LDcgKzQ4NCwxMCBA QCBMY2RQbGF0Zm9ybUdldEJwcCAoDQo+ID4+ID4+ID4gICAgT1VUIExDRF9CUFAgKiBDT05TVCAg ICAgICAgICAgICAgICAgICAgIEJwcA0KPiA+PiA+PiA+ICAgICkNCj4gPj4gPj4gPiAgew0KPiA+ PiA+PiA+ICsgIEFTU0VSVCAoQnBwICE9IE5VTEwpOw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiAg ICBpZiAoTW9kZU51bWJlciA+PSBMY2RQbGF0Zm9ybUdldE1heE1vZGUgKCkpIHsNCj4gPj4gPj4g PiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPiA+PiA+PiA+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCj4gPj4gPj4gPiAgICB9DQo+ID4+ID4+ID4NCj4gPj4gPj4gPiAtLQ0KPiA+ PiA+PiA+IEd1aWQoIkNFMTY1NjY5LTNFRjMtNDkzRi1CODVELTYxOTBFRTVCOTc1OSIpDQo+ID4+ ID4+ID4NCj4gPj4gPj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KPiA+PiA+PiA+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4+ID4+ID4gZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4gPj4gPiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWls bWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCj4gPj4gPj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18NCj4gPj4gPj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QN Cj4gPj4gPj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4gPj4gaHR0cHM6Ly9saXN0cy4w MS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=