From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web12.738.1590005543237778512 for ; Wed, 20 May 2020 13:12:23 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=kNGefkEX; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: s2xfPX1VCa+ENwpYzi4E/TRnZcoRwmdDYUiFza9cGDrAMVefbwDrFc/Y/57oeFtMpyYJdHHVMA 8M5yL45AkTBA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 May 2020 13:12:12 -0700 IronPort-SDR: OM72Dzb6FUgWmURRRNDfq76gMwG+N+YHpNpvayDaiP4DphgLD/JRdEQouhST+hQgUl3Vt/0Epw Qt3DPPhUWyBA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,415,1583222400"; d="scan'208";a="466517161" Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by fmsmga005.fm.intel.com with ESMTP; 20 May 2020 13:12:11 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX105.amr.corp.intel.com (10.22.225.132) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 20 May 2020 13:12:11 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 20 May 2020 13:12:10 -0700 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 20 May 2020 13:12:10 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.109) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 20 May 2020 13:12:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f6UVz07U+zHa8NfxaCBKYdD2scK7LKQIvfdi9VTmUov7FNgQL5ZrdcBQJeqhbPWQHWcxWNMjoOwqc4NIzKAIPpHhOndpFDMQoDNfUdBg2kwiVhTRq9XzLQJuWqNZB6SDOmIEaTYCtZ7XyluCtBcXD/72mi4/uDEleDnIHqAKlt2Osabm3jP5DxEnnl6zMYblTUd+tapdA5IH3eUKmqckbSo5kKt5guRMfrdNz/gUUS2fcRbz0OrSIgGqOOjmXoAJkIzWK/QdsToI7KDi2+M2z8Sdw6YMCcI8ni0KR8OPXGXhyt2z1M9CW2RBbbvoHRM22yJSQaiG1ePIJ+TWXXS1Lg== 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=PQQs7/vUUre+V4AsOo2N3qBv7Nv15YE/4lYm8wcI2k4=; b=GnoKlvjNJCbZ9Z4AmtH2CS2oKa9VBDQ5V8pdsISLhDD/1nmr2bskZEwzpMkIgJdZ2GtdX2tnBJm6Mpl8HGDDcAdd1AnBThnA4tcIcY2ugV5c9jUx3MoVzAOMGMkTEhgZ72JY36OBtud0RB2qseS/VCFwjTPT4UxnKJGRMHO54jY6dZgVfWUV/khDv/RqKK94P0e0qfV/VJNRLCFqdjKdjdXIkaGKRXmZeLVVbq1ekKdSHYNdiyOW88OtKMIhSl8W7+WrLh1MnDYlZAyTKba3AVCjdOy8C0kTaMBAvYVZyvuZk4T52hOMDnS47OubYyZimxoALiJ/OXke+ucmK8duEQ== 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=PQQs7/vUUre+V4AsOo2N3qBv7Nv15YE/4lYm8wcI2k4=; b=kNGefkEXC/iOvAtN5NSyDndcSlVZj86thUfrh8AMYM/h4Tw1z2izRahvQCSlHw6XSLOsGTtrvAq/6bIqksriw9liSpDo8pcUEzDH7RI5c7C4ZwBF3W2YeyewKSpHIgjjSQJG1LXeh0GSiUazvjBTPgwKtE2xoA2g4K9y4w30NMk= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by MN2PR11MB4646.namprd11.prod.outlook.com (2603:10b6:208:264::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.23; Wed, 20 May 2020 20:11:54 +0000 Received: from MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1]) by MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1%3]) with mapi id 15.20.3000.034; Wed, 20 May 2020 20:11:54 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "spbrogan@outlook.com" , "Kinney, Michael D" CC: Andrew Fish , Ard Biesheuvel , Bret Barkelew , "Brian J . Johnson" , "Chiu, Chasel" , "Justen, Jordan L" , Laszlo Ersek , "Leif Lindholm" , "Gao, Liming" , "Marvin H?user" , "Zimmer, Vincent" , "Gao, Zhichao" , "Yao, Jiewen" , Vitaly Cheptsov Subject: Re: [edk2-devel] [Patch v8 2/2] MdePkg/Test/BaseLib: Add SAFE_STRING_CONSTRAINT_CHECK unit test Thread-Topic: [edk2-devel] [Patch v8 2/2] MdePkg/Test/BaseLib: Add SAFE_STRING_CONSTRAINT_CHECK unit test Thread-Index: AQHWLlMA5woOLWfQfUKqWMeG6mkwDKixVmGAgAASciA= Date: Wed, 20 May 2020 20:11:54 +0000 Message-ID: References: <20200520030120.21576-1-michael.d.kinney@intel.com> <20200520030120.21576-3-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [134.134.136.211] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cba9b997-2fe5-40b0-6385-08d7fcfa0aaf x-ms-traffictypediagnostic: MN2PR11MB4646: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 04097B7F7F x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ytM9/+BbvpraEU35JXFBeumZueU9W9mGEcYjxbPcw4lCs2fHDW/2B4DxGu+EReCxZklyyY26+Ala0r6EiZ+Qkho1gt4T1TKfKM4mDDZ92G2yeer3mvJGIOYFZ9t2NlakE8FnIeR+b/y+i1oAHCa3gVW19DwUUkI56e/eSS/dupS2YDK4EftCi9FoWmFWaff3D5EwQRLTumGv/UIwchyRG9szFut0FZqGtBye1WUUwAbJvke2sDsW6FWmAIwGFBGN7YfYz6+cnGvt60TZdmqlPjVHInPb6pFPeLZXLLdi3tLxQUKHa6hcNX8awr1h6Uei+0+Ama+J5XX9B9a6xtsse97bl/6wJkrgwh7tGbumD2NEqsOOwPE7iQB3zRYehzopPBWxWwTf6v/3A3HpXsMENg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4461.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(366004)(346002)(39860400002)(136003)(376002)(396003)(66476007)(110136005)(19627235002)(966005)(66556008)(7696005)(4326008)(64756008)(316002)(9686003)(55016002)(54906003)(478600001)(86362001)(5660300002)(66446008)(33656002)(7416002)(71200400001)(186003)(76116006)(8676002)(66946007)(2906002)(6506007)(8936002)(26005)(52536014)(53546011);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: pQ9cMXsmmjRz2UsPhleXqKmHQb/k0UQVKnQfmeo1buzsWw3VkiK7/pL72n49RVbpyLrwLPCoW5U4ISLYUqn9bOc45b2moB2WxdLQ2ql+9sswJ4/XnB+Xs6zXtcZJ90qWIMJhe3NJxVM1pT/POTwNgOGBIlaohHZPEE5DDOo6wDh2EVar9p8M/1sqBVmJnR2wxnzA1p+TpPk0hSPM1OU7h6F9RqvLq4IoCwRP5K+WvcSFJLHdAt8JZ8HBsiZN7nGGASZ0tBRJFrKRI2PCiKbtrhh4TrJ87/uqhOMLIX5rOgBUn0CWIbp8QJwK5VI1UM9WrIHpMlg6nU2Osg6Js8V4qV55/+Zcj4IbUGFXYdGKrBgJ9BAjMqfUMdFyVrQ7I37+h+jLQMWxHqWJDT5D3NHGMvCjAL3CKEk5HaAj0BHPC31PNeb75wDbwLuU2bYYlzH3UHJXxHzMFurF4uKTdXcLJg5WPvYQjQjDd+FD9uS98MJGa12+tUod2Crm2pYfs5ZA MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: cba9b997-2fe5-40b0-6385-08d7fcfa0aaf X-MS-Exchange-CrossTenant-originalarrivaltime: 20 May 2020 20:11:54.4935 (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: OuxuCfnss1qXgS0w//NJJNy7z+mkPCZY684y3vmy0wcmWyS3D7AN6E3/cxu8FhyEiwcmHcZaQYAh6yHIuhZEB/jN6S1jwb7fOJcPpU6Q2xY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4646 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 SGkgU2VhbiwNCg0KSSBhZ3JlZSB0aGF0IHRpcyB1bml0IHRlc3QgY2FuIGJlIHJlb3JnYW5pemVk IGEgYml0IHRvIHN1cHBvcnQNCnVuaXQgdGVzdHMgZm9yIGFsbCBBUElzIGluIEJhc2VMaWIuDQoN CkNhbiB5b3UgZW50ZXIgYSBCWiBmb3IgdGhpcyBhbmQgd2UgY2FuIHdvcmsgb24gY2xlYW5pbmcg dGhpcw0KdXAgYWZ0ZXIgdGhlIHN0YWJsZSB0YWc/DQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5n cm91cHMuaW8+IE9uDQo+IEJlaGFsZiBPZiBTZWFuDQo+IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDIw LCAyMDIwIDEyOjA1IFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lubmV5LCBNaWNo YWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzogQW5kcmV3IEZpc2gg PGFmaXNoQGFwcGxlLmNvbT47IEFyZCBCaWVzaGV1dmVsDQo+IDxhcmQuYmllc2hldXZlbEBsaW5h cm8ub3JnPjsgQnJldCBCYXJrZWxldw0KPiA8YnJldC5iYXJrZWxld0BtaWNyb3NvZnQuY29tPjsg QnJpYW4gSiAuIEpvaG5zb24NCj4gPGJyaWFuLmpvaG5zb25AaHBlLmNvbT47IENoaXUsIENoYXNl bA0KPiA8Y2hhc2VsLmNoaXVAaW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4gTA0KPiA8am9yZGFu LmwuanVzdGVuQGludGVsLmNvbT47IExhc3psbyBFcnNlaw0KPiA8bGVyc2VrQHJlZGhhdC5jb20+ OyBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT47DQo+IEdhbywgTGltaW5nIDxsaW1p bmcuZ2FvQGludGVsLmNvbT47IE1hcnZpbiBIP3VzZXINCj4gPG1oYWV1c2VyQG91dGxvb2suZGU+ OyBaaW1tZXIsIFZpbmNlbnQNCj4gPHZpbmNlbnQuemltbWVyQGludGVsLmNvbT47IEdhbywgWmhp Y2hhbw0KPiA8emhpY2hhby5nYW9AaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4NCj4gPGppZXdlbi55 YW9AaW50ZWwuY29tPjsgVml0YWx5IENoZXB0c292DQo+IDx2aXQ5Njk2QHByb3Rvbm1haWwuY29t Pg0KPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQYXRjaCB2OCAyLzJdDQo+IE1kZVBrZy9U ZXN0L0Jhc2VMaWI6IEFkZCBTQUZFX1NUUklOR19DT05TVFJBSU5UX0NIRUNLDQo+IHVuaXQgdGVz dA0KPiANCj4gTWlrZSwNCj4gDQo+IEkgd291bGQgaGF2ZSB0aG91Z2h0IHRoZSBTYWZlU3RyaW5n IHRlc3RzIHdvdWxkIGhhdmUNCj4gZ29uZSBpbiBhIGRpZmZlcmVudA0KPiBjIGZpbGUuICBCYXNl NjRVbml0VGVzdC5jIHNlZW1zIGJ5IGl0cyB0aXRsZSB0byBiZQ0KPiB0YXJnZXRlZCBhdCB0aGUN Cj4gYmFzZTY0IGVuY29kZS9kZWNvZGUgdGVzdC4NCj4gDQo+IExvb2tpbmcgYXQgdGhpcyBpIGRv IHNlZSB0aGF0IHdvdWxkIHJlcXVpcmUgc29tZQ0KPiByZXN0cnVjdHVyaW5nIGFzIHRoZXJlDQo+ IGlzIG5vIEJhc2VMaWJVbml0VGVzdC5jIGZpbGUgZm9yIHRoZSBjb21tb24gdGVzdCBwYXJ0Lg0K PiBBcyB0aGUgYXV0aG9yIG9mDQo+IHRoaXMgdGVzdCBvcmlnaW5hbGx5LCBJIGNhbiBzZWUgdGhh dCBpIGRpZG4ndCBzZXQgaXQgdXANCj4gdG8gc2NhbGUgdG8gdGhlDQo+IGVudGlyZSBiYXNlbGli IHZlcnkgd2VsbC4gIFNvcnJ5Lg0KPiANCj4gDQo+IFRoYW5rcw0KPiBTZWFuDQo+IA0KPiANCj4g DQo+IA0KPiBPbiA1LzE5LzIwMjAgODowMSBQTSwgTWljaGFlbCBEIEtpbm5leSB3cm90ZToNCj4g PiBVc2UgdGhlIHNhZmUgc3RyaW5nIGZ1bmN0aW9uIFN0ckNweVMoKSBpbiBCYXNlTGliIHRvDQo+ IHRlc3QgdGhlDQo+ID4gU0FGRV9TVFJJTkdfQ09OU1RSQUlOVF9DSEVDSygpIG1hY3JvLg0KPiA+ DQo+ID4gQ2M6IEFuZHJldyBGaXNoIDxhZmlzaEBhcHBsZS5jb20+DQo+ID4gQ2M6IEFyZCBCaWVz aGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+IENjOiBCcmV0IEJhcmtlbGV3 IDxicmV0LmJhcmtlbGV3QG1pY3Jvc29mdC5jb20+DQo+ID4gQ2M6IEJyaWFuIEouIEpvaG5zb24g PGJyaWFuLmpvaG5zb25AaHBlLmNvbT4NCj4gPiBDYzogQ2hhc2VsIENoaXUgPGNoYXNlbC5jaGl1 QGludGVsLmNvbT4NCj4gPiBDYzogSm9yZGFuIEp1c3RlbiA8am9yZGFuLmwuanVzdGVuQGludGVs LmNvbT4NCj4gPiBDYzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPiBDYzog TGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+DQo+ID4gQ2M6IExpbWluZyBHYW8gPGxp bWluZy5nYW9AaW50ZWwuY29tPg0KPiA+IENjOiBNYXJ2aW4gSD91c2VyIDxtaGFldXNlckBvdXRs b29rLmRlPg0KPiA+IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT4NCj4gPiBDYzogVmluY2VudCBaaW1tZXIgPHZpbmNlbnQuemltbWVyQGludGVsLmNvbT4N Cj4gPiBDYzogWmhpY2hhbyBHYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4gPiBDYzogSmll d2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gQ2M6IFZpdGFseSBDaGVwdHNvdiA8 dml0OTY5NkBwcm90b25tYWlsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEQgS2lu bmV5DQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgIC4uLi9V bml0VGVzdC9MaWJyYXJ5L0Jhc2VMaWIvQmFzZTY0VW5pdFRlc3QuYyB8IDg1DQo+ICsrKysrKysr KysrKysrKysrKysNCj4gPiAgIDEgZmlsZSBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspDQo+ID4N Cj4gPiBkaWZmIC0tZ2l0DQo+IGEvTWRlUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlTGli L0Jhc2U2NFVuaXRUZXN0LmMNCj4gYi9NZGVQa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VM aWIvQmFzZTY0VW5pdFRlc3QuYw0KPiA+IGluZGV4IDg5NTJmOWRhNmMuLjVhY2VkNjllMGQgMTAw NjQ0DQo+ID4gLS0tDQo+IGEvTWRlUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlTGliL0Jh c2U2NFVuaXRUZXN0LmMNCj4gPiArKysNCj4gYi9NZGVQa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5 L0Jhc2VMaWIvQmFzZTY0VW5pdFRlc3QuYw0KPiA+IEBAIC0yOTAsNiArMjkwLDc3IEBAIFJmY0Rl Y29kZVRlc3QoDQo+ID4gICAgIHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0KPiA+ICAgfQ0KPiA+ DQo+ID4gKyNkZWZpbmUgU09VUkNFX1NUUklORyAgTCJIZWxsbyINCj4gPiArDQo+ID4gK1NUQVRJ Qw0KPiA+ICtVTklUX1RFU1RfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtTYWZlU3RyaW5nQ29u dHJhaW50Q2hlY2tUZXN0ICgNCj4gPiArICBJTiBVTklUX1RFU1RfQ09OVEVYVCAgQ29udGV4dA0K PiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFJFVFVSTl9TVEFUVVMgIFN0YXR1czsNCj4gPiArICBD SEFSMTYgICAgICAgICBEZXN0aW5hdGlvblsyMF07DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAg Ly8gUG9zaXRpdmUgdGVzdCBjYXNlIGNvcHkgc291cmNlIHVuaWNvZGUgc3RyaW5nDQo+IHRvIGRl c3RpbmF0aW9uDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBTdHJDcHlTIChEZXN0aW5hdGlv biwgc2l6ZW9mDQo+IChEZXN0aW5hdGlvbikgLyBzaXplb2YgKENIQVIxNiksIFNPVVJDRV9TVFJJ TkcpOw0KPiA+ICsgIFVUX0FTU0VSVF9OT1RfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ICsgIFVU X0FTU0VSVF9NRU1fRVFVQUwgKERlc3RpbmF0aW9uLCBTT1VSQ0VfU1RSSU5HLA0KPiBzaXplb2Yg KFNPVVJDRV9TVFJJTkcpKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBQb3NpdGl2ZSB0 ZXN0IGNhc2Ugd2l0aCBEZXN0TWF4IHRoZSBzYW1lIGFzDQo+IFNvdXJjZSBzaXplDQo+ID4gKyAg Ly8NCj4gPiArICBTdGF0dXMgPSBTdHJDcHlTIChEZXN0aW5hdGlvbiwgc2l6ZW9mDQo+IChTT1VS Q0VfU1RSSU5HKSAvIHNpemVvZiAoQ0hBUjE2KSwgU09VUkNFX1NUUklORyk7DQo+ID4gKyAgVVRf QVNTRVJUX05PVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gKyAgVVRfQVNTRVJUX01FTV9FUVVB TCAoRGVzdGluYXRpb24sIFNPVVJDRV9TVFJJTkcsDQo+IHNpemVvZiAoU09VUkNFX1NUUklORykp Ow0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIE5lZ2F0aXZlIHRlc3QgY2FzZSB3aXRoIERl c3RpbmF0aW9uIE5VTEwNCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IFN0ckNweVMgKE5VTEws IHNpemVvZiAoRGVzdGluYXRpb24pIC8NCj4gc2l6ZW9mIChDSEFSMTYpLCBTT1VSQ0VfU1RSSU5H KTsNCj4gPiArICBVVF9BU1NFUlRfU1RBVFVTX0VRVUFMIChTdGF0dXMsDQo+IFJFVFVSTl9JTlZB TElEX1BBUkFNRVRFUik7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gTmVnYXRpdmUgdGVz dCBjYXNlIHdpdGggU291cmNlIE5VTEwNCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IFN0ckNw eVMgKERlc3RpbmF0aW9uLCBzaXplb2YNCj4gKERlc3RpbmF0aW9uKSAvIHNpemVvZiAoQ0hBUjE2 KSwgTlVMTCk7DQo+ID4gKyAgVVRfQVNTRVJUX1NUQVRVU19FUVVBTCAoU3RhdHVzLA0KPiBSRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIE5lZ2F0 aXZlIHRlc3QgY2FzZSB3aXRoIERlc3RNYXggdG9vIGJpZw0KPiA+ICsgIC8vDQo+ID4gKyAgU3Rh dHVzID0gU3RyQ3B5UyAoRGVzdGluYXRpb24sIE1BWF9VSU5UTiwNCj4gU09VUkNFX1NUUklORyk7 DQo+ID4gKyAgVVRfQVNTRVJUX1NUQVRVU19FUVVBTCAoU3RhdHVzLA0KPiBSRVRVUk5fSU5WQUxJ RF9QQVJBTUVURVIpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIE5lZ2F0aXZlIHRlc3Qg Y2FzZSB3aXRoIERlc3RNYXggMA0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gU3RyQ3B5UyAo RGVzdGluYXRpb24sIDAsIFNPVVJDRV9TVFJJTkcpOw0KPiA+ICsgIFVUX0FTU0VSVF9TVEFUVVNf RVFVQUwgKFN0YXR1cywNCj4gUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSKTsNCj4gPiArDQo+ID4g KyAgLy8NCj4gPiArICAvLyBOZWdhdGl2ZSB0ZXN0IGNhc2Ugd2l0aCBEZXN0TWF4IHNtYWxsZXIg dGhhbg0KPiBTb3VyY2Ugc2l6ZQ0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gU3RyQ3B5UyAo RGVzdGluYXRpb24sIDEsIFNPVVJDRV9TVFJJTkcpOw0KPiA+ICsgIFVUX0FTU0VSVF9TVEFUVVNf RVFVQUwgKFN0YXR1cywNCj4gUkVUVVJOX0JVRkZFUl9UT09fU01BTEwpOw0KPiA+ICsNCj4gPiAr ICAvLw0KPiA+ICsgIC8vIE5lZ2F0aXZlIHRlc3QgY2FzZSB3aXRoIERlc3RNYXggc21hbGxlciB0 aGFuDQo+IFNvdXJjZSBzaXplIGJ5IG9uZSBjaGFyYWN0ZXINCj4gPiArICAvLw0KPiA+ICsgIFN0 YXR1cyA9IFN0ckNweVMgKERlc3RpbmF0aW9uLCBzaXplb2YNCj4gKFNPVVJDRV9TVFJJTkcpIC8g c2l6ZW9mIChDSEFSMTYpIC0gMSwgU09VUkNFX1NUUklORyk7DQo+ID4gKyAgVVRfQVNTRVJUX1NU QVRVU19FUVVBTCAoU3RhdHVzLA0KPiBSRVRVUk5fQlVGRkVSX1RPT19TTUFMTCk7DQo+ID4gKw0K PiA+ICsgIC8vDQo+ID4gKyAgLy8gTmVnYXRpdmUgdGVzdCBjYXNlIHdpdGggRGVzdE1heCBzbWFs bGVyIHRoYW4NCj4gU291cmNlIHNpemUNCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IFN0ckNw eVMgKERlc3RpbmF0aW9uLCBzaXplb2YNCj4gKERlc3RpbmF0aW9uKSAvIHNpemVvZiAoQ0hBUjE2 KSwgRGVzdGluYXRpb24pOw0KPiA+ICsgIFVUX0FTU0VSVF9TVEFUVVNfRVFVQUwgKFN0YXR1cywN Cj4gUkVUVVJOX0FDQ0VTU19ERU5JRUQpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gVU5JVF9URVNU X1BBU1NFRDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgIC8qKg0KPiA+ICAgICBJbml0aWFsemUgdGhl IHVuaXQgdGVzdCBmcmFtZXdvcmssIHN1aXRlLCBhbmQNCj4gdW5pdCB0ZXN0cyBmb3IgdGhlDQo+ ID4gICAgIEJhc2U2NCBjb252ZXJzaW9uIEFQSXMgb2YgQmFzZUxpYiBhbmQgcnVuIHRoZQ0KPiB1 bml0IHRlc3RzLg0KPiA+IEBAIC0zMDksNiArMzgwLDcgQEAgVW5pdFRlc3RpbmdFbnRyeSAoDQo+ ID4gICAgIFVOSVRfVEVTVF9GUkFNRVdPUktfSEFORExFICBGdzsNCj4gPiAgICAgVU5JVF9URVNU X1NVSVRFX0hBTkRMRSAgICAgIGI2NEVuY29kZVRlc3RzOw0KPiA+ICAgICBVTklUX1RFU1RfU1VJ VEVfSEFORExFICAgICAgYjY0RGVjb2RlVGVzdHM7DQo+ID4gKyAgVU5JVF9URVNUX1NVSVRFX0hB TkRMRSAgICAgIFNhZmVTdHJpbmdUZXN0czsNCj4gPg0KPiA+ICAgICBGdyA9IE5VTEw7DQo+ID4N Cj4gPiBAQCAtMzY3LDYgKzQzOSwxOSBAQCBVbml0VGVzdGluZ0VudHJ5ICgNCj4gPiAgICAgQWRk VGVzdENhc2UgKGI2NERlY29kZVRlc3RzLCAiSW5jb3JyZWN0bHkgcGxhY2VkDQo+IHBhZGRpbmcg Y2hhcmFjdGVyIiwgIkVycm9yNCIsIFJmY0RlY29kZVRlc3QsIE5VTEwsDQo+IENsZWFuVXBCNjRU ZXN0Q29udGV4dCwgJm1CYXNpY0RlY29kZUVycm9yNCk7DQo+ID4gICAgIEFkZFRlc3RDYXNlIChi NjREZWNvZGVUZXN0cywgIlRvbyBzbWFsbCBvZiBvdXRwdXQNCj4gYnVmZmVyIiwgIkVycm9yNSIs IFJmY0RlY29kZVRlc3QsIE5VTEwsDQo+IENsZWFuVXBCNjRUZXN0Q29udGV4dCwgJm1CYXNpY0Rl Y29kZUVycm9yNSk7DQo+ID4NCj4gPiArICAvLw0KPiA+ICsgIC8vIFBvcHVsYXRlIHRoZSBzYWZl IHN0cmluZyBVbml0IFRlc3QgU3VpdGUuDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBDcmVh dGVVbml0VGVzdFN1aXRlICgmU2FmZVN0cmluZ1Rlc3RzLA0KPiBGdywgIlNhZmUgU3RyaW5nIiwg IkJhc2VMaWIuU2FmZVN0cmluZyIsIE5VTEwsIE5VTEwpOw0KPiA+ICsgIGlmIChFRklfRVJST1Ig KFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJGYWlsZWQgaW4NCj4g Q3JlYXRlVW5pdFRlc3RTdWl0ZSBmb3IgU2FmZVN0cmluZ1Rlc3RzXG4iKSk7DQo+ID4gKyAgICBT dGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiArICAgIGdvdG8gRVhJVDsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIC8vIC0tLS0tLS0tLS0tLS0tU3VpdGUtLS0tLS0tLS0tLURlc2Ny aXB0aW9uLS0tLS0tDQo+IC0tLS0tLS0tQ2xhc3MgTmFtZS0tLS0tLS0tLS1GdW5jdGlvbi0tLS0t LS0tUHJlLS0tUG9zdC0NCj4gLS0tLS0tLS0tLS0tLS0tLS0tQ29udGV4dC0tLS0tLS0tLS0tDQo+ ID4gKyAgQWRkVGVzdENhc2UgKFNhZmVTdHJpbmdUZXN0cywNCj4gIlNBRkVfU1RSSU5HX0NPTlNU UkFJTlRfQ0hFQ0siLA0KPiAiU2FmZVN0cmluZ0NvbnRyYWludENoZWNrVGVzdCIsDQo+IFNhZmVT dHJpbmdDb250cmFpbnRDaGVja1Rlc3QsIE5VTEwsIE5VTEwsIE5VTEwpOw0KPiA+ICsNCj4gPiAg ICAgLy8NCj4gPiAgICAgLy8gRXhlY3V0ZSB0aGUgdGVzdHMuDQo+ID4gICAgIC8vDQo+ID4NCj4g DQo+IA0KDQo=