From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web10.9251.1666799694332557018 for ; Wed, 26 Oct 2022 08:54:54 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=RVfgOD1w; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666799694; x=1698335694; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=rfYQQSqs3OPyxPSOdkES81d2Q4ADyzMrsLdDvzzjHAw=; b=RVfgOD1wtRMvFAtER+5wPLZwJbyHkuJEGG/DWNhMX4RQxbEnKge0KF3h CE6Dcz9BawyGTs/VB3ihYXfonVt9B6HbrEuXqG1AcMjmOdpD5iOHMsSwy 9y9FhKXV1AXnjPm4vgVr4ie89T3T91LRO0uDDo3hLymmSKFC0PaeMLnwP GQhR9eiSbSfaRQEMXNbAyTKbJFH5toOG+Kil5/CmGBV8OQIlB1V5Yqn0H nCR8gCDxVdIIzoKjzP8+wd35SlW/A8glL4zfnwfbkg+w+A0dYEFNepGsN gpvOKV/GOwruDcdCR2yhU2goSC7ljxr5Ujs2tZu3d3EhArhhG2wXq1X9R Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10512"; a="334604057" X-IronPort-AV: E=Sophos;i="5.95,215,1661842800"; d="scan'208";a="334604057" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Oct 2022 08:54:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10512"; a="634550706" X-IronPort-AV: E=Sophos;i="5.95,215,1661842800"; d="scan'208";a="634550706" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga007.fm.intel.com with ESMTP; 26 Oct 2022 08:54:46 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 26 Oct 2022 08:54:45 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Wed, 26 Oct 2022 08:54:45 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Wed, 26 Oct 2022 08:54:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eAmh2A/CAGNJN9ScffiPH/LUNxuJ6OiuU2LWch5hQUndEGrdcoUL02hneBsDKlaQ4lRDX4hIoLBMBIGC8eYP8iIpGr09QgPMKFW0MfaBWB2ZhhQ8ohQaMOCW6aSkkJh0c0+hYyjVGhzoeeuTYvG+5KD7yi3jFPb3TTBhAKgeK5xJU2jfYlMF9O4L/LA2lsGPa5JrTT7lcVHb7JP7dWmyNnF/ZxwIsuA19t6T4HjdabqPOyCOssPGVuikq9DnMWtQkVQSr0+vB0UOcQ+azVHHLf+PdaxmFs77K7NzV8D4lUDWow0epgno2rU9DViADcbaQ5R+tMGaWGAr/+K+8v1CbA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rfYQQSqs3OPyxPSOdkES81d2Q4ADyzMrsLdDvzzjHAw=; b=Wui6LsTiUtROW20clnsB2a3AYry0gwwTIIEAHBngF1vIGto01RTLb9PPoiBnGyWN2Dtfy2K5uo28iYc3ASCYpkZXw8qPXa8yOoWK8uI4tjwahL4uoPoI18pDZBd251fC1XIjhcdjFibWypgq8Ifir8XZfYkWCDWzgTwgwx54sVhynmJNv6wWXyw/3KjWifZnKdPO6JMYq3eM+pXWCRp28pBdr/y81pcG/ktbNWQpYIywBv3wKfHRqKBIzCB6iz/fG4gr5UwZsjM1Ld76DNx4LVupauen/vq7+OwEqfulxXO7Ub7skgX515huEUuUyyEFxP7KTFrAx3mdTvTFRp6Z+g== 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 Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by PH8PR11MB6999.namprd11.prod.outlook.com (2603:10b6:510:221::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.29; Wed, 26 Oct 2022 15:54:42 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::8bdc:54fe:ecf3:fa93]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::8bdc:54fe:ecf3:fa93%5]) with mapi id 15.20.5746.028; Wed, 26 Oct 2022 15:54:42 +0000 From: "Michael D Kinney" To: "Yao, Jiewen" , Pedro Falcato , "devel@edk2.groups.io" , "Kinney, Michael D" CC: Vitaly Cheptsov , =?utf-8?B?TWFydmluIEjDpHVzZXI=?= , "Gao, Liming" , "Liu, Zhiguang" Subject: Re: [PATCH v2 1/1] MdePkg/BaseLib: Fix out-of-bounds reads in SafeString Thread-Topic: [PATCH v2 1/1] MdePkg/BaseLib: Fix out-of-bounds reads in SafeString Thread-Index: AQHY5/oO3TatiKjwb0KzhddcPFbq3K4fS+fwgAFjiACAACcHQA== Date: Wed, 26 Oct 2022 15:54:42 +0000 Message-ID: References: <20221024224324.26540-1-pedro.falcato@gmail.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.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|PH8PR11MB6999:EE_ x-ms-office365-filtering-correlation-id: 37e542b5-0934-4691-3219-08dab76a657f x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: N9/qwYJIFCSCZPEHGEJ6rAyqJGpMnz3+ZCSNgIhJoqz0sVFfPYIaOMvkgiwSiG2Y+PupVvEvctBM8RY9vIkUZl6nK/ShRsiyVnJNQdmmyMGtNNVFXvl7bABeFy9NxPauXRY0noex90t+FB0wfQx+rJJ/hVjyLuwKG2sICAxPTmsis35m13CgEG/dA5JhNyHdGvvZhN4E1Wz3alanNXcDEJznsxBm+mMC9RlGFbKwozbNEwljJ42vf4MogK8x+pnEySWivkZfuEPRSPjzfHpV5sBWGvJZQYY1Zzvioznp/9J0I2tfnYOakhEZ8W71guJqh280ppbV5y0c5NOWZc750teVHT7AHYel+30e5OAPmWvOcGPIlr6hFn55HG01zHi35pD4X+dgoMIF4bDN0AgEBMIPt8D8pih4LJTQpTsIp4AeGujKidj9v8UUMGumKeoO84jbilsx7i5tx/pc3DbjhkOoCZNBGaJRVv1xcds0U7VunMi/xSVZTX9axvygDNrB4dYPOyA1PqH+YUUgAhdaNtVi3HtWGm1Up1HOZCt2M1AoP3uDKDCZE8XYdsEeU/PbR8JbEfhjzMik3hCQ1g9PYy5/c4Lkt5XWhABJIr2HzvbFb8s32ggIeDEUYEWqSIY2gDK5i/tukLOuD9D2ayNTbfnWo5cRKHImGmQk9UHimvHgOHf0YdBhMlFqNUxLQjNxqs9MXQpV9B+92kpsRvvO8hGIKoXPnOmPZh75cHhOOm/S0fRWjrr+Jfu6XkvP73Hxx6BXCKGm/bRhzvKbjsWHZg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(396003)(376002)(39860400002)(136003)(366004)(451199015)(4326008)(316002)(2906002)(82960400001)(7696005)(83380400001)(38070700005)(33656002)(86362001)(66556008)(186003)(122000001)(55016003)(19627235002)(478600001)(8936002)(6506007)(66476007)(54906003)(110136005)(71200400001)(41300700001)(5660300002)(53546011)(52536014)(9686003)(64756008)(107886003)(76116006)(38100700002)(8676002)(66446008)(66946007)(26005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z1N3NmZCbWRMMVJvcE94NUNlSmREdkZsRFVISnlqMXVhMUcvU2pTUzM0b1I1?= =?utf-8?B?cXhwejl0RkgxS0JLdmU1WHdRenk2dWp3clpzT0Z0eG84YVdzd0MwSVdhcnk1?= =?utf-8?B?UklLU0xCZk9KZktFQlZvUE1BTDN5bmp1dlRrM2FDcktVOFlCMTFEUFJJUE05?= =?utf-8?B?TWw3RjJuTWh4amxSZFRHb3ZielE3RTBHcHZLM212SFdnUHAxNHRWUWlIRXB0?= =?utf-8?B?c3R3cE9MTm1EZDlGN1E2a1l4cDZTajdXZVNKelE5ejMzaTM2UStJdzlSVW5J?= =?utf-8?B?bFNJNkFXZVZlMDZMa3UzNEpKZmFMVVNKbHcxRlFZUjVTTm8wVm9XT0NPS0Jt?= =?utf-8?B?NytOSkdBaGRtbU1qenhkdEZTWkVwcXZwZDkyWnhTNHIxck5qM2s5NkdSb0Fz?= =?utf-8?B?d3dMNkxYYkE1RndvaW1UckxOZXM3dFh3SzF1OWtvcVlpTEtRRDdnSHNEZVd5?= =?utf-8?B?RGkrNmJoMngzYzU4R1psWjRJNzR4ZVhzK05lSFovOGtBeE03dzdjZjk0b0tQ?= =?utf-8?B?UHFVWnZ0NnZ0L3lSaFVwczVtajJabitsTGRseXFDZ1llRi9xTDRpL3dQSUFH?= =?utf-8?B?elFlZkY2MjFuSDRiMlBENzJPSm12bDZUekhDR0hMU2QyM05TV1pScU15Z1pn?= =?utf-8?B?eDRIdXdQTENMM0JIWG1lbVlYUVZnNXErRkZXZXV5ZHo4OWYwN0ZSM3FnSGJL?= =?utf-8?B?dTJ5dnVZQmxaeStBS052d2tRbDNVNzVabGd0UjZVTTA3Y1VQZk5aUUtERDhz?= =?utf-8?B?Sy8rRVViUUIrWDhmOVhzWk56RnVrYi8zdFoyQnlMSHJYUlgzSjI1WHBTb1Br?= =?utf-8?B?eUpLU29rZU5Ld0o3MnF6WlhBS2luNkExenNaSmVXYnBrL29mRERSTXZRK2I4?= =?utf-8?B?bXRHY1ZoVmFxWmNxVkJjbFFTeFJlV1Z5RVZXRUxOTGJjOG5Xb0I1dTNkMmZE?= =?utf-8?B?ai9vL0I4RERpN2J4bGVOUFR4Vll3a2dWYnhZM0Q4dlRIRVI2MEJGUDVOYnNN?= =?utf-8?B?MU4ra00rZTVrbURsTXpPT1dsdWVvY1pTdFZFYVV0MWNSM3ZnT01qaTgyQXV3?= =?utf-8?B?V0hJeWNUUHdmL3B4R2hhWURNUnJxdUk0b3ROVkVUQWQzQkdYUllENjNVVEZ6?= =?utf-8?B?b2VEME16QnlORHJBbk9VdmJBVlNsM21kb2RKdW5tZG11aktsc0I1M0lSd21C?= =?utf-8?B?eUVhOFNrVFdQUzdhdnJnbnRBbytMTHpvUi9POVYzVVAvdHN0OGU2aWEwNEJS?= =?utf-8?B?ZEdwRlZwUG5PLzJzWDVPaldyVDMwVkRQSGZ0WDVSL1NzTTNkZGd2RzF2cGNy?= =?utf-8?B?MHdlM1VvQUoxK01VNWN1L043K2dyTWdYcWM2VWhNZHQvTHY4RGI5KzFoak1w?= =?utf-8?B?ZThiZDdoV1U3cndPRUl6eHF5SUVXVHFzRUZDQXlXczliMGdLemJTcmZpK3li?= =?utf-8?B?MDR0aVorQmV6aXBUeWhJZEpYbFpMLzlCZUVpaTJjcnB2dnZCU0dkSlNrSWRR?= =?utf-8?B?eXNNcVdoWTFGNmNWMFdkajNQcEtLR0MxZllKWXVVN3hwYjdvWXpYd2xSN0li?= =?utf-8?B?V2cvN2VTUW0rZ3REVG5Ea1B2TkhHeC9ZYTUwb3dBbTBndW9IMzZwQjcwS1lG?= =?utf-8?B?N0JvQ0ZZQisvSUJ0dkRZWkZJaWlSL3BOQm1vUXYvSWluYWJBZEx5TS90WnBZ?= =?utf-8?B?SEoybXdTZXNzSHVhdlUyU2xkSmN2SC8reEg1U0NRUlVuWUdrTkZ3eFZWdlhX?= =?utf-8?B?Wkx6MXNuRkpZR1RESG9naW1OLzNKcjJjYnN6ODN1ZjJKU2V0ZnhxZFRXRFVV?= =?utf-8?B?Q2R2b1lNZC8va3NsSGRxNG1zS1NYQm1aSWZ2RjB5S2srSjV0WlFvd3lPVjFV?= =?utf-8?B?NnBCUFp0bENOdVNuMTNBb3JLNnFGeDBPaU1tWGZ4WTNlMG9YZ2NnUzd2bzRo?= =?utf-8?B?dlowNzFiU1ZnaUtrTzlDMnZGaWdFM3d0dmxidEVnMTNid3lzdW5BRkVNcXpZ?= =?utf-8?B?VDZEODBiem9vT2JoZUM1Nm9iVGZ3aURCY01tQ3ZHZGxWMlRtTFZ5MDZNRHkr?= =?utf-8?B?TzdXcDBFYmtsWlhsK1BYMTdPUVZOT00yR1FEV0VHSHY3c0h4T05LOHNQMzIv?= =?utf-8?B?QVk5V1Q2LzFnSFhna1FQWHBzNjdvL2lKVzlwcFI5UUY0RkdCTEdWR3BsTUpi?= =?utf-8?B?dlE9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37e542b5-0934-4691-3219-08dab76a657f X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Oct 2022 15:54:42.3128 (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: 2pugdK7zFJk41wMX7HiyE+vrf212/KC1Ia1wY8iS0MlshvASdv9lI1p+SvKER4TuPprWRxRlZ4imnJPmH+ApLR/bwUJzfCro/T8wma8j0A8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB6999 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 QWNrZWQtYnk6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0K DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWWFvLCBKaWV3ZW4gPGpp ZXdlbi55YW9AaW50ZWwuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIE9jdG9iZXIgMjYsIDIwMjIg NjozNSBBTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tPjsgUGVkcm8gRmFsY2F0byA8cGVkcm8uZmFsY2F0b0BnbWFpbC5jb20+OyBkZXZlbEBlZGsy Lmdyb3Vwcy5pbw0KPiBDYzogVml0YWx5IENoZXB0c292IDx2aXQ5Njk2QHByb3Rvbm1haWwuY29t PjsgTWFydmluIEjDpHVzZXIgPG1oYWV1c2VyQHBvc3Rlby5kZT47IEdhbywgTGltaW5nIDxnYW9s aW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUsDQo+IFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50 ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW1BBVENIIHYyIDEvMV0gTWRlUGtnL0Jhc2VMaWI6IEZp eCBvdXQtb2YtYm91bmRzIHJlYWRzIGluIFNhZmVTdHJpbmcNCj4gDQo+IFRoYXQgaXMgZ29vZCBj YXRjaC4NCj4gDQo+IFJldmlld2VkLWJ5OiBKaWV3ZW4gWWFvIDxKaWV3ZW4ueWFvQEludGVsLmNv bT4NCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogS2lu bmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFdl ZG5lc2RheSwgT2N0b2JlciAyNiwgMjAyMiAxMjoyMyBBTQ0KPiA+IFRvOiBQZWRybyBGYWxjYXRv IDxwZWRyby5mYWxjYXRvQGdtYWlsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6 IFZpdGFseSBDaGVwdHNvdiA8dml0OTY5NkBwcm90b25tYWlsLmNvbT47IE1hcnZpbiBIw6R1c2Vy DQo+ID4gPG1oYWV1c2VyQHBvc3Rlby5kZT47IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29m dC5jb20uY24+OyBMaXUsDQo+ID4gWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+OyBZ YW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtQQVRD SCB2MiAxLzFdIE1kZVBrZy9CYXNlTGliOiBGaXggb3V0LW9mLWJvdW5kcyByZWFkcyBpbg0KPiA+ IFNhZmVTdHJpbmcNCj4gPg0KPiA+IEFkZGluZyBKaWV3ZW4gWWFvLg0KPiA+DQo+ID4gTWlrZQ0K PiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogUGVkcm8g RmFsY2F0byA8cGVkcm8uZmFsY2F0b0BnbWFpbC5jb20+DQo+ID4gPiBTZW50OiBNb25kYXksIE9j dG9iZXIgMjQsIDIwMjIgMzo0MyBQTQ0KPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ ID4gPiBDYzogUGVkcm8gRmFsY2F0byA8cGVkcm8uZmFsY2F0b0BnbWFpbC5jb20+OyBWaXRhbHkg Q2hlcHRzb3YNCj4gPiA8dml0OTY5NkBwcm90b25tYWlsLmNvbT47IE1hcnZpbiBIw6R1c2VyIDxt aGFldXNlckBwb3N0ZW8uZGU+Ow0KPiA+ID4gS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29t LmNuPjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gPiA+IFN1Ympl Y3Q6IFtQQVRDSCB2MiAxLzFdIE1kZVBrZy9CYXNlTGliOiBGaXggb3V0LW9mLWJvdW5kcyByZWFk cyBpbg0KPiA+IFNhZmVTdHJpbmcNCj4gPiA+DQo+ID4gPiBPcGVuQ29yZSBmb2xrcyBlc3RhYmxp c2hlZCBhbiBBU0FOLWVxdWlwcGVkIHByb2plY3QgdG8gZnV6eiBFeHQ0RHhlLA0KPiA+ID4gd2hp Y2ggd2FzIGFibGUgdG8gY2F0Y2ggdGhlc2UgKG1vc3RseSBoYXJtbGVzcykgaXNzdWVzLg0KPiA+ ID4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFBlZHJvIEZhbGNhdG8gPHBlZHJvLmZhbGNhdG9AZ21h aWwuY29tPg0KPiA+ID4gQ2M6IFZpdGFseSBDaGVwdHNvdiA8dml0OTY5NkBwcm90b25tYWlsLmNv bT4NCj4gPiA+IENjOiBNYXJ2aW4gSMOkdXNlciA8bWhhZXVzZXJAcG9zdGVvLmRlPg0KPiA+ID4g Q2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ID4g Q2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gPiA+IENjOiBaaGln dWFuZyBMaXUgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+DQo+ID4gPiAtLS0NCj4gPiA+ICBNZGVQ a2cvTGlicmFyeS9CYXNlTGliL1NhZmVTdHJpbmcuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysr LS0tLQ0KPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u cygtKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1Nh ZmVTdHJpbmcuYw0KPiA+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TYWZlU3RyaW5nLmMNCj4g PiA+IGluZGV4IGYzMzhhMzJhM2E0MS4uNzdhMjU4NWFkNTZkIDEwMDY0NA0KPiA+ID4gLS0tIGEv TWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TYWZlU3RyaW5nLmMNCj4gPiA+ICsrKyBiL01kZVBrZy9M aWJyYXJ5L0Jhc2VMaWIvU2FmZVN0cmluZy5jDQo+ID4gPiBAQCAtODYzLDYgKzg2Myw5IEBAIFN0 ckhleFRvVWludG5TICgNCj4gPiA+ICAgIE9VVCAgICAgICBVSU5UTiAgICpEYXRhDQo+ID4gPiAg ICApDQo+ID4gPiAgew0KPiA+ID4gKyAgQk9PTEVBTiAgRm91bmRMZWFkaW5nWmVybzsNCj4gPiA+ ICsNCj4gPiA+ICsgIEZvdW5kTGVhZGluZ1plcm8gPSBGQUxTRTsNCj4gPiA+ICAgIEFTU0VSVCAo KChVSU5UTilTdHJpbmcgJiBCSVQwKSA9PSAwKTsNCj4gPiA+DQo+ID4gPiAgICAvLw0KPiA+ID4g QEAgLTg5MywxMSArODk2LDEyIEBAIFN0ckhleFRvVWludG5TICgNCj4gPiA+ICAgIC8vIElnbm9y ZSBsZWFkaW5nIFplcm9zIGFmdGVyIHRoZSBzcGFjZXMNCj4gPiA+ICAgIC8vDQo+ID4gPiAgICB3 aGlsZSAoKlN0cmluZyA9PSBMJzAnKSB7DQo+ID4gPiArICAgIEZvdW5kTGVhZGluZ1plcm8gPSBU UlVFOw0KPiA+ID4gICAgICBTdHJpbmcrKzsNCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPiAgICBp ZiAoQ2hhclRvVXBwZXIgKCpTdHJpbmcpID09IEwnWCcpIHsNCj4gPiA+IC0gICAgaWYgKCooU3Ry aW5nIC0gMSkgIT0gTCcwJykgew0KPiA+ID4gKyAgICBpZiAoIUZvdW5kTGVhZGluZ1plcm8pIHsN Cj4gPiA+ICAgICAgICAqRGF0YSA9IDA7DQo+ID4gPiAgICAgICAgcmV0dXJuIFJFVFVSTl9TVUND RVNTOw0KPiA+ID4gICAgICB9DQo+ID4gPiBAQCAtOTkyLDYgKzk5Niw5IEBAIFN0ckhleFRvVWlu dDY0UyAoDQo+ID4gPiAgICBPVVQgICAgICAgVUlOVDY0ICAqRGF0YQ0KPiA+ID4gICAgKQ0KPiA+ ID4gIHsNCj4gPiA+ICsgIEJPT0xFQU4gIEZvdW5kTGVhZGluZ1plcm87DQo+ID4gPiArDQo+ID4g PiArICBGb3VuZExlYWRpbmdaZXJvID0gRkFMU0U7DQo+ID4gPiAgICBBU1NFUlQgKCgoVUlOVE4p U3RyaW5nICYgQklUMCkgPT0gMCk7DQo+ID4gPg0KPiA+ID4gICAgLy8NCj4gPiA+IEBAIC0xMDIy LDExICsxMDI5LDEyIEBAIFN0ckhleFRvVWludDY0UyAoDQo+ID4gPiAgICAvLyBJZ25vcmUgbGVh ZGluZyBaZXJvcyBhZnRlciB0aGUgc3BhY2VzDQo+ID4gPiAgICAvLw0KPiA+ID4gICAgd2hpbGUg KCpTdHJpbmcgPT0gTCcwJykgew0KPiA+ID4gKyAgICBGb3VuZExlYWRpbmdaZXJvID0gVFJVRTsN Cj4gPiA+ICAgICAgU3RyaW5nKys7DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gICAgaWYgKENo YXJUb1VwcGVyICgqU3RyaW5nKSA9PSBMJ1gnKSB7DQo+ID4gPiAtICAgIGlmICgqKFN0cmluZyAt IDEpICE9IEwnMCcpIHsNCj4gPiA+ICsgICAgaWYgKCFGb3VuZExlYWRpbmdaZXJvKSB7DQo+ID4g PiAgICAgICAgKkRhdGEgPSAwOw0KPiA+ID4gICAgICAgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsN Cj4gPiA+ICAgICAgfQ0KPiA+ID4gQEAgLTIzOTMsNiArMjQwMSw5IEBAIEFzY2lpU3RySGV4VG9V aW50blMgKA0KPiA+ID4gICAgT1VUICAgICAgIFVJTlROICAqRGF0YQ0KPiA+ID4gICAgKQ0KPiA+ ID4gIHsNCj4gPiA+ICsgIEJPT0xFQU4gIEZvdW5kTGVhZGluZ1plcm87DQo+ID4gPiArDQo+ID4g PiArICBGb3VuZExlYWRpbmdaZXJvID0gRkFMU0U7DQo+ID4gPiAgICAvLw0KPiA+ID4gICAgLy8g MS4gTmVpdGhlciBTdHJpbmcgbm9yIERhdGEgc2hhbGwgYmUgYSBudWxsIHBvaW50ZXIuDQo+ID4g PiAgICAvLw0KPiA+ID4gQEAgLTI0MjEsMTEgKzI0MzIsMTIgQEAgQXNjaWlTdHJIZXhUb1VpbnRu UyAoDQo+ID4gPiAgICAvLyBJZ25vcmUgbGVhZGluZyBaZXJvcyBhZnRlciB0aGUgc3BhY2VzDQo+ ID4gPiAgICAvLw0KPiA+ID4gICAgd2hpbGUgKCpTdHJpbmcgPT0gJzAnKSB7DQo+ID4gPiArICAg IEZvdW5kTGVhZGluZ1plcm8gPSBUUlVFOw0KPiA+ID4gICAgICBTdHJpbmcrKzsNCj4gPiA+ICAg IH0NCj4gPiA+DQo+ID4gPiAgICBpZiAoQXNjaWlDaGFyVG9VcHBlciAoKlN0cmluZykgPT0gJ1gn KSB7DQo+ID4gPiAtICAgIGlmICgqKFN0cmluZyAtIDEpICE9ICcwJykgew0KPiA+ID4gKyAgICBp ZiAoIUZvdW5kTGVhZGluZ1plcm8pIHsNCj4gPiA+ICAgICAgICAqRGF0YSA9IDA7DQo+ID4gPiAg ICAgICAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ID4gICAgICB9DQo+ID4gPiBAQCAtMjUx Nyw2ICsyNTI5LDkgQEAgQXNjaWlTdHJIZXhUb1VpbnQ2NFMgKA0KPiA+ID4gICAgT1VUICAgICAg IFVJTlQ2NCAgKkRhdGENCj4gPiA+ICAgICkNCj4gPiA+ICB7DQo+ID4gPiArICBCT09MRUFOICBG b3VuZExlYWRpbmdaZXJvOw0KPiA+ID4gKw0KPiA+ID4gKyAgRm91bmRMZWFkaW5nWmVybyA9IEZB TFNFOw0KPiA+ID4gICAgLy8NCj4gPiA+ICAgIC8vIDEuIE5laXRoZXIgU3RyaW5nIG5vciBEYXRh IHNoYWxsIGJlIGEgbnVsbCBwb2ludGVyLg0KPiA+ID4gICAgLy8NCj4gPiA+IEBAIC0yNTQ1LDEx ICsyNTYwLDEyIEBAIEFzY2lpU3RySGV4VG9VaW50NjRTICgNCj4gPiA+ICAgIC8vIElnbm9yZSBs ZWFkaW5nIFplcm9zIGFmdGVyIHRoZSBzcGFjZXMNCj4gPiA+ICAgIC8vDQo+ID4gPiAgICB3aGls ZSAoKlN0cmluZyA9PSAnMCcpIHsNCj4gPiA+ICsgICAgRm91bmRMZWFkaW5nWmVybyA9IFRSVUU7 DQo+ID4gPiAgICAgIFN0cmluZysrOw0KPiA+ID4gICAgfQ0KPiA+ID4NCj4gPiA+ICAgIGlmIChB c2NpaUNoYXJUb1VwcGVyICgqU3RyaW5nKSA9PSAnWCcpIHsNCj4gPiA+IC0gICAgaWYgKCooU3Ry aW5nIC0gMSkgIT0gJzAnKSB7DQo+ID4gPiArICAgIGlmICghRm91bmRMZWFkaW5nWmVybykgew0K PiA+ID4gICAgICAgICpEYXRhID0gMDsNCj4gPiA+ICAgICAgICByZXR1cm4gUkVUVVJOX1NVQ0NF U1M7DQo+ID4gPiAgICAgIH0NCj4gPiA+IC0tDQo+ID4gPiAyLjM4LjENCg0K