From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 7AD83740034 for ; Fri, 10 Nov 2023 00:40:03 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=M0coVF9wIo8qpRhzKac+u8Z4Jla8rsO9OibI+F/gD7U=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1699576802; v=1; b=BXXZcGVtBvyhP4lQhT+TCbhhIXEYhJKUESDmFdsoJayIi97f35Bt+3p0psguwUtDoNsZdCxG d7/59+nf2o/aJaIXrlwM5HjIxTldr04RsqOJNFq6ktqFQtDC9zQoqg8k7a7BzH6Eex9xPFsV14F 3hkXhL89i0VKgPwfBfFfbUV0= X-Received: by 127.0.0.2 with SMTP id FGHtYY7687511xEsQQT6JRZ9; Thu, 09 Nov 2023 16:40:02 -0800 X-Received: from NAM02-SN1-obe.outbound.protection.outlook.com (NAM02-SN1-obe.outbound.protection.outlook.com [40.107.96.87]) by mx.groups.io with SMTP id smtpd.web10.17834.1699576801104465869 for ; Thu, 09 Nov 2023 16:40:01 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mss/Z7wFtZJkrRZVz8ALeNX9JDwCtyCFHlpJVEEDO7WBYrk/8givY61zzeVAhuC0fp2EKqZXvzDQvP85fx6imHKlRSxgbMpuxW7blZ7svP6f2o6AJSl6iIQlOnvtTxO49Jlh6U9PNOtDN4jc7ztqleW/7p++s1IQmqTF0ITdTlYMUtv1ZGOk/gQHO6qeZQA+FYR8yBtXfQNNNiX51Iku21dQejVsGF6cakMC48Y8BZEC2Sza7r9ODv2y+NiPrUn17uvknfckD1p/ouwsh8lnJjQyB3B2Umz70gyZnSXsHJ7y12wnfKFCpx7gIYhPge2C07XDm3uq8foAJPzEfhuzaQ== 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=VGB77QRGHG0Wcvcmc44FHOS/TY+KGynMi58fPjpbq0Y=; b=CNzHlYd4tt4wFBoEQ4rYzNI/3AJ/dNq7m5oticuGZN0jVT2q43XWevQ4VbBltUtL+jOzR4UTYGEenFCnbbjkkbAEOZM9u6GQsfO5gm+hCCjKf+X6QcIW9t4UVxlmrZI5qohApNhSYgbIgPdCvBMfa7SaZ3B1W9TuX3Jra4XftYqTOtlRLZPkxa0WHohlJHdpFpjCCxrgHuxc17PRB67foEnr0QNbPfnuGcAkIpTaCuoUKRWF9cAVrcB9JtgPwzgSwqnj7bIVK35uoyw9RGqvr0Ia7SJsjWirK0j7FmGPcCeUDNfNxFhBv7xzmDJZKqTFLJWSLVmrHx4P8eiEYerkZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none X-Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by SA0PR12MB4496.namprd12.prod.outlook.com (2603:10b6:806:9b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.28; Fri, 10 Nov 2023 00:39:54 +0000 X-Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::f3b0:4a8d:2c74:f066]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::f3b0:4a8d:2c74:f066%4]) with mapi id 15.20.6977.019; Fri, 10 Nov 2023 00:39:53 +0000 From: "Chang, Abner via groups.io" To: Leif Lindholm , "devel@edk2.groups.io" , "igork@ami.com" CC: Nickle Wang , "gaoliming@byosoft.com.cn" Subject: Re: [edk2-devel] [PATCH v3] RedfishPkg: RedfishDiscoverDxe: Fix issue if IPv4 installed after RestEx Thread-Topic: [edk2-devel] [PATCH v3] RedfishPkg: RedfishDiscoverDxe: Fix issue if IPv4 installed after RestEx Thread-Index: AQHaEXLNd1r6tWwQW0meqWJLTeUNI7ByG2KAgACXOxA= Date: Fri, 10 Nov 2023 00:39:53 +0000 Message-ID: References: <20231107120605.2035-1-igork@ami.com> <1371cdaf-9a6a-4e63-8265-2ad0d6e62fb2@quicinc.com> In-Reply-To: <1371cdaf-9a6a-4e63-8265-2ad0d6e62fb2@quicinc.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=a39a5251-4630-4c87-bd07-62d93dfadc64;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=0;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-11-10T00:13:39Z;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|SA0PR12MB4496:EE_ x-ms-office365-filtering-correlation-id: dc7a651e-5d08-4a77-5cb0-08dbe1858e47 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: aBrWgNwNpiXUPt/L24/Uc01nnUseX8gJbnsLtYWcamYmPrpZt0UH9witqulnAq6MHEZpFRipikPSkAbCm8LukcUR9EQSdbB8wfIqEsMWQVJCurzPcX/Gawgfnn1okMLFCcBlzDJktZHOuP5T1bb83b4+8yDohr/G/WM/SeKb/DBJ55txptRevLieXyBYtzJD4WxuutlrjFlnVImdwlXEtmRyohuYoq3dbA8XM2YrYwc/WZxHg0CJd6wNUe5i2X128B5SMQZ1YvGseSgoXEdgIzsGRgqWRCeCE2ZcgLMJqMRW8KEsxTb/Zjw1UxRHMbMxr7hIGp4tP8aEWRP9f/xdMSFBmaUgUptxDJfUN3k87g6W+7YwRhkN+3+2Hh6rcqBW87HmDfbgdqgQ+Lb4fJJLSC+jCiq9JvDkiaGz+kYPNo5BR/ljZYjooZe5rUXAA/hCly7WiYmVaxQ9Lnu1e563iQ3LuRjJKJ9gx2eTstm/uVabf/I4/JPnArmwflIbqY+ZBJjhfVr7Uj5gmSmRnXbOTZvlZp69KSockPzxbD6MdnmVu/lYVeyAX0unNg6wlDRAB7qYoCF6uQPWf1ayIfhbQKONbCWPqftZvYFaNXfKjotbJR5PukZmP2UflMcdwvjg36xa7RbUX9NPmUB27pfMxwBupTOB0kpRCYxG9MTR2nlYlBBojhwBjzAXVbE6DhkXKSHL0vWsOzvOnpkVlVfyRQ== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NVV3cWdjNW9jUXZ5VWJTRks1T2JpdnkwT1JzejNZZ2ZPZE1ta0t3dGRVRmRF?= =?utf-8?B?UGZpNUhIeUtwWGpiY0lNRlhrbmp4cmdYMmN0L3A2RVcxV053c3ZLaEdRQTNk?= =?utf-8?B?SXpSaDR5VWhXbEVicEhoTjdVb1NzREhnd0NobzNkOWQ5eXhZSEpsNmxiQWl2?= =?utf-8?B?aU8rYUJCcnl4UXVrVldzSE9wMXJhLzR6SWFKSGYzSXZYY2xVV2JuNHc3QjJK?= =?utf-8?B?SytwSmRVMmF6QWRmZWQrUC91cUNaTlZmQ3MvSEt3cURKTHRpNk80MDM1d0Vt?= =?utf-8?B?dlk1aGJNZW9HYnFMV0M3TmhuZVVDMVA3VmF3Ris5VFJnYjE5RVk4VXFySlRm?= =?utf-8?B?YTlGT2hyajhYTWNoTUlKWFNtYy9nSUpBSkpEZDBMRUJzOUpVektQZExUdnhv?= =?utf-8?B?ODF5UElXK2J5aUJ5eVc4Y0lUZ2hHMUVsZCtCbnpGYi9rMkVvT09OL2FNSHpz?= =?utf-8?B?bVVuZGlRSllSR1NFTzE5Y2h4Tyt2eEo5K3hFMGRnblQycXZ2dWtrcVQ1cVNO?= =?utf-8?B?MXRkV0ZuNHdJSjZnZ1djZnllS0lsRlgyV0tXTTJZRXpwVTZnYVN1QS9BaG5F?= =?utf-8?B?azlpY3FJSVVvb1A0WERubllqb2dHV0UzYjZBZVREMW5mbFdmWWViTWM0ckkx?= =?utf-8?B?c3ltVFhmMVFiN1paeldpMW9kc21BRkdLMUR6OEU4b3dVVVFoVm9ZNFAybCtp?= =?utf-8?B?V1FyV1lkNS9CNHhMazNjZ1dwS1Bya1pnc2tGaVJ4b0tEN3NhNUtobTJYcXp6?= =?utf-8?B?bGg4OGQ1M1pocEVCNnFMRlhua0hHSUZ5SzBCMmthNmdNUDlOdVdtL3lOQjhD?= =?utf-8?B?czJlblZTaHZIbzh2V1JRZTh0dTBTZU1xZlY5N1pCLytlUTQ3Q3V0SkFBNXF4?= =?utf-8?B?WWVuZm9FbEFqWXRBQlJxRE9WWXJiMU9mYWFmdnExN0taTHhweEttMFdsbVo2?= =?utf-8?B?aEJRek9IM2dXZ1hHT1BMTzNtZy96U2hidjIrQ1Jlc1FiNHJzNnQwMzYyZWls?= =?utf-8?B?cEkxYkVBNzdLMTJkUVlzZFIvaVMzbXR3ODhvMFRVYS82ZlR0cnlraVNJek0x?= =?utf-8?B?a1M3TVE1OEM1TkV2aTBMUVVnM2NYVWhRNXgydy9WSTVCSDRISjRkQ29Ea084?= =?utf-8?B?RVZPdnJ1ZTRnRldyS1FtdEM5K1JqZ09OSktucWhMVzlLQnBpVjNmSDdJMm84?= =?utf-8?B?Vk9CQS94bWRueitWSWFybnU0ZEFTem5Kejc2cllwQjhxaWtBRlpjeEd0dHg0?= =?utf-8?B?em81MElya1BYOEFyUldpM3A2ZUxoR1VBNVAxeUo4Nm0xT2t1bmRzK3VGRkE4?= =?utf-8?B?NXJpU2N2Y2x6bEtYNzdnZ1ZnRG40L3c4M2hyOGliNllONlFoNTA5SGI4Tlcy?= =?utf-8?B?VkpBeTFZdGNJbEgwdmlJL3l5OWVzTHArN3Y2SUthY2FROTBYYTlpRmFEcnJE?= =?utf-8?B?bTdOd21Dck9salc2dHh4MG9XVzEyeXJzbDBSWTZONFJnT0VVUFk2NW00MVZB?= =?utf-8?B?aWZRMlpGbS93b0ViNW9ZZjlWT1E1WWIvUzNVeWhsWUlIV29IbDFWMGQrNytW?= =?utf-8?B?cEZVTTh2NExGU21mbDU4U2YzcHREODFqRCtZb0pQMzVVKy9BWU5tcGxRZXN0?= =?utf-8?B?ZWRwQk9LdituampBZmd1YWRSUmVoZnRia01HNlVkNXBOQjNZaHRpQW9DTzYy?= =?utf-8?B?QWNDbjJQNEVnUjQ2ZWVFbWM1SVdpeUNkcWtVc2IvR1hwdkU3b1dIZllibVVv?= =?utf-8?B?VGNQR0d3MVJLYitqSlVlYWNqLy9Md21ENVdSb1M2dm01NU1WQVNkYzRnVWRN?= =?utf-8?B?Mnl4bC8ydENVc01LWW1BYmJnbG1wZDVzTEVVMHorTU16MGR4dWJaTC9xaEc2?= =?utf-8?B?dlVLeFFUWjN5YkhxcGtCRWV6UGZsZm0xWDZqdzlXTWNvRVN5SlZuY29JVGF3?= =?utf-8?B?RkdxbjRuQlcvSjZzR1grUGlvam12ZlRCOVZObGFZZGs4V0M2Tm0wcCtnNHl2?= =?utf-8?B?eWZodGROeEVpTzFPSTc0ZjJrTkJDQWovd2VaUXJiV3JIT1VIaWFiNGpEZHMv?= =?utf-8?B?NUZzeUhrd1FvUS9qSlNsMnBPdWJ3Q1AyV3FHYkZvZ0JHNFZRUnRlZ2Faekh3?= =?utf-8?Q?d/DU=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dc7a651e-5d08-4a77-5cb0-08dbe1858e47 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Nov 2023 00:39:53.6508 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fjDQ4azWO0M5vSdh0yGw6qagbHkCoVmpZ2jPfVAfb/RmRS6NJ2xOyRPXBlk9qvWA1nGmrht2PZIkQjkpawyTjA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4496 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,abner.chang@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: O6Mu5g4gBH2UQFcklSy6X9C1x7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=BXXZcGVt; dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNClRoYW5rcyBMZWlmLCBzb21lIHJl c3BvbnNlcyBhcmUgZ2l2ZW4gaW4gbGluZS4NCkFzIHdlIHdvdWxkIGxpa2UgdG8gaGF2ZSB0aGlz IGJlIHBhcnQgb2YgZWRrMi1zdGFibGUyMDIzMTIsICB3ZSBwcmVmZXIgbGV0dGluZyB0aGlzIGNo YW5nZSBnZXRzIGluIHN0YWJsZSByZWxlYXNlIGZpcnN0IGFuZCBhZGRyZXNzIHRoZSBjb21tZW50 IGluIGFub3RoZXIgcGF0Y2ggYWZ0ZXJ3YXJkLg0KDQpIaSBJZ29yLA0KQ291bGQgeW91IHBsZWFz ZSBjaGVjayBteSBjb21tZW50IGFuZCBoZWxwIHRvIHNlbmQgYW5vdGhlciBwYXRjaCBhZnRlciBl ZGsyLXN0YWJsZTIwMjMxMj8NCg0KVGhhbmtzDQpBYm5lcg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogTGVpZiBMaW5kaG9sbSA8cXVpY19sbGluZGhvbEBxdWljaW5j LmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE5vdmVtYmVyIDksIDIwMjMgMTE6MTIgUE0NCj4gVG86 IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBpZ29ya0BhbWkuY29tDQo+IENjOiBDaGFuZywgQWJuZXIg PEFibmVyLkNoYW5nQGFtZC5jb20+OyBOaWNrbGUgV2FuZw0KPiA8bmlja2xld0BudmlkaWEuY29t PjsgZ2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuDQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0g W1BBVENIIHYzXSBSZWRmaXNoUGtnOiBSZWRmaXNoRGlzY292ZXJEeGU6IEZpeA0KPiBpc3N1ZSBp ZiBJUHY0IGluc3RhbGxlZCBhZnRlciBSZXN0RXgNCj4NCj4gQ2F1dGlvbjogVGhpcyBtZXNzYWdl IG9yaWdpbmF0ZWQgZnJvbSBhbiBFeHRlcm5hbCBTb3VyY2UuIFVzZSBwcm9wZXIgY2F1dGlvbg0K PiB3aGVuIG9wZW5pbmcgYXR0YWNobWVudHMsIGNsaWNraW5nIGxpbmtzLCBvciByZXNwb25kaW5n Lg0KPg0KPg0KPiBPbiAyMDIzLTExLTA3IDEyOjA2LCBJZ29yIEt1bGNoeXRza3l5IHZpYSBncm91 cHMuaW8gd3JvdGU6DQo+ID4gU3VwcG9ydGVkIGZ1bmN0aW9uIG9mIHRoZSBkcml2ZXIgY2hhbmdl ZCB0byB3YWl0IGZvciBhbGwgbmV3dHdvcmsNCj4NCj4gVHlwbzoNCj4gbmV3dHdvcmsgLT4NCj4g bmV0d29yaw0KPg0KPiA+IGludGVyZmFjZSB0byBiZSBpbnN0YWxsZWQuDQo+ID4gRmlsZXIgb3V0 IHRoZSBuZXR3b3JrIGludGVyZmFjZXMgd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgYnkNCj4NCj4g RmlsZXIgLT4NCj4gRmlsdGVyDQo+DQo+ID4gUmVkZmlzaCBIb3N0IEludGVyZmFjZS4NCj4NCj4g VGhlc2Ugc291bmQgbGlrZSB0d28gc2VwYXJhdGUgY2hhbmdlcz8NClRoaXMgaXMgZm9yIHRoZSBz YW1lIGlzc3VlLg0KDQo+DQo+ID4gQ2M6IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0BhbWQuY29t Pg0KPiA+IENjOiBOaWNrbGUgV2FuZyA8bmlja2xld0BudmlkaWEuY29tPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IElnb3IgS3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+ID4gLS0tDQo+ID4gICBS ZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9SZWRmaXNoRGlzY292ZXJEeGUuYyB8IDE2NQ0K PiArKysrKysrKysrKysrKy0tLS0tLQ0KPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDExNyBpbnNlcnRp b25zKCspLCA0OCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtn L1JlZGZpc2hEaXNjb3ZlckR4ZS9SZWRmaXNoRGlzY292ZXJEeGUuYw0KPiBiL1JlZGZpc2hQa2cv UmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+ID4gaW5kZXggMjNkYTNi OTY4Zi4uODVlNDc4NDNlNCAxMDA2NDQNCj4gPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hEaXNj b3ZlckR4ZS9SZWRmaXNoRGlzY292ZXJEeGUuYw0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlz aERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+ID4gQEAgLTMyMiw5ICszMjIsMTYg QEAgR2V0VGFyZ2V0TmV0d29ya0ludGVyZmFjZUludGVybmFsICgNCj4gPiAgIHsNCj4gPiAgICAg RUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUwNCj4gKlRoaXNO ZXR3b3JrSW50ZXJmYWNlOw0KPiA+DQo+ID4gKyAgaWYgKElzTGlzdEVtcHR5ICgmbUVmaVJlZGZp c2hEaXNjb3Zlck5ldHdvcmtJbnRlcmZhY2UpKSB7DQo+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICAgICBUaGlzTmV0d29ya0ludGVyZmFjZSA9DQo+IChFRklfUkVE RklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRV9JTlRFUk5BTCAqKUdldEZpcnN0Tm9kZQ0K PiAoJm1FZmlSZWRmaXNoRGlzY292ZXJOZXR3b3JrSW50ZXJmYWNlKTsNCj4gPiAgICAgd2hpbGUg KFRSVUUpIHsNCj4gPiAtICAgIGlmIChDb21wYXJlTWVtICgoVk9JRCAqKSZUaGlzTmV0d29ya0lu dGVyZmFjZS0+TWFjQWRkcmVzcywNCj4gJlRhcmdldE5ldHdvcmtJbnRlcmZhY2UtPk1hY0FkZHJl c3MsIFRoaXNOZXR3b3JrSW50ZXJmYWNlLQ0KPiA+SHdBZGRyZXNzU2l6ZSkgPT0gMCkgew0KPiA+ ICsgICAgaWYgKChDb21wYXJlTWVtICgoVk9JRCAqKSZUaGlzTmV0d29ya0ludGVyZmFjZS0+TWFj QWRkcmVzcywNCj4gJlRhcmdldE5ldHdvcmtJbnRlcmZhY2UtPk1hY0FkZHJlc3MsIFRoaXNOZXR3 b3JrSW50ZXJmYWNlLQ0KPiA+SHdBZGRyZXNzU2l6ZSkgPT0gMCkgJiYNCj4gPiArICAgICAgICAo KFRhcmdldE5ldHdvcmtJbnRlcmZhY2UtPklzSXB2NiAmJiAoVGhpc05ldHdvcmtJbnRlcmZhY2Ut DQo+ID5OZXR3b3JrUHJvdG9jb2xUeXBlID09IFByb3RvY29sVHlwZVRjcDYpKSB8fA0KPiA+ICsg ICAgICAgICAoIVRhcmdldE5ldHdvcmtJbnRlcmZhY2UtPklzSXB2NiAmJiAoVGhpc05ldHdvcmtJ bnRlcmZhY2UtDQo+ID5OZXR3b3JrUHJvdG9jb2xUeXBlID09IFByb3RvY29sVHlwZVRjcDQpKSkp DQo+ID4gKyAgICB7DQo+DQo+IFRoaXMgY291bGQgcmVhbGx5IGJlbmVmaXQgZnJvbSBzb21lIGhl bHBlciBtYWNyb3MuDQo+IGUuZy4gaWYgdGhlIHRlc3QgY291bGQgbG9vayBsaWtlDQoNCkhpIEln b3IsDQpDb3VsZCB3ZSBjb25zaWRlciB0aGlzIHN1Z2dlc3Rpb24gYWZ0ZXIgc3RhYmxlIHJlbGVh c2U/DQoNCj4NCj4gaWYgKChNQUNfQ09NUEFSRSAoVGhpc05ldHdvcmtJbnRlcmZhY2UsIFRhcmdl dE5ldHdvcmtJbnRlcmZhY2UpID09IDApICYmDQo+ICAgICAgKFZBTElEX1RDUDYgKFRhcmdldE5l dHdvcmtJbnRlcmZhY2UsIFRoaXNOZXR3b3JrSW50ZXJmYWNlKSB8fA0KPiAgICAgICBWQUxJRF9U Q1A0IChUYXJnZXROZXR3b3JrSW50ZXJmYWNlLCBUaGlzTmV0d29ya0ludGVyZmFjZSkpKSB7DQo+ DQo+ID4gICAgICAgICByZXR1cm4gVGhpc05ldHdvcmtJbnRlcmZhY2U7DQo+ID4gICAgICAgfQ0K PiA+DQo+ID4gQEAgLTM1NCw2ICszNjEsMTAgQEAgR2V0VGFyZ2V0TmV0d29ya0ludGVyZmFjZUlu dGVybmFsQnlDb250cm9sbGVyICgNCj4gPiAgIHsNCj4gPiAgICAgRUZJX1JFREZJU0hfRElTQ09W RVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUwNCj4gKlRoaXNOZXR3b3JrSW50ZXJmYWNlOw0K PiA+DQo+ID4gKyAgaWYgKElzTGlzdEVtcHR5ICgmbUVmaVJlZGZpc2hEaXNjb3Zlck5ldHdvcmtJ bnRlcmZhY2UpKSB7DQo+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICAgICBUaGlzTmV0d29ya0ludGVyZmFjZSA9DQo+IChFRklfUkVERklTSF9ESVNDT1ZFUl9ORVRX T1JLX0lOVEVSRkFDRV9JTlRFUk5BTCAqKUdldEZpcnN0Tm9kZQ0KPiAoJm1FZmlSZWRmaXNoRGlz Y292ZXJOZXR3b3JrSW50ZXJmYWNlKTsNCj4gPiAgICAgd2hpbGUgKFRSVUUpIHsNCj4gPiAgICAg ICBpZiAoVGhpc05ldHdvcmtJbnRlcmZhY2UtPk9wZW5Ecml2ZXJDb250cm9sbGVySGFuZGxlID09 DQo+IENvbnRyb2xsZXJIYW5kbGUpIHsNCj4gPiBAQCAtNDc2LDYgKzQ4Nyw0MiBAQCBDaGVja0lz SXBWZXJzaW9uNiAoDQo+ID4gICAgIHJldHVybiBGQUxTRTsNCj4gPiAgIH0NCj4gPg0KPiA+ICsv KioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlICBJUCB0eXBlIHN1cHBvcnRlZCBi eSB0aGUgSG9zdCBJbnRlcmZhY2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgMDBoIGlzIFVua25v d24NCj4gPiArICAgICAgICAgIDAxaCBpcyBJcHY0DQo+ID4gKyAgICAgICAgICAwMmggaXMgSXB2 Ng0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQ4DQo+DQo+IElmIHRoaXMgaXMganVzdCBhIGxv Y2FsIGhlbHBlciBmdW5jdGlvbiwgd2UgcHJvYmFibHkgd2FudCBpdCBTVEFUSUMuDQpIb3dldmVy LCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IG5vdCB1c2luZyBTVEFUSUMgZm9yIGxvY2FsIGZ1bmN0 aW9uIGZvciB0aGUgc291cmNlIGxldmVsIGRlYnVnIHB1cnBvc2UgaW4gNS40LjIuMi4yIGluIGVk azIgQyBjb2Rpbmcgc3RhbmRhcmQgc3BlYy4NCg0KPg0KPiA+ICtHZXRIaUlwUHJvdG9jb2xUeXBl ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBSRURGSVNIX09WRVJfSVBfUFJPVE9DT0xf REFUQSAgKkRhdGE7DQo+ID4gKyAgUkVERklTSF9JTlRFUkZBQ0VfREFUQSAgICAgICAgICpEZXZp Y2VEZXNjcmlwdG9yOw0KPiA+ICsNCj4gPiArICBEYXRhICAgICAgICAgICAgID0gTlVMTDsNCj4g PiArICBEZXZpY2VEZXNjcmlwdG9yID0gTlVMTDsNCj4gPiArICBpZiAobVNtYmlvcyA9PSBOVUxM KSB7DQo+ID4gKyAgICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgmZ0VmaVNtYmlvc1By b3RvY29sR3VpZCwgTlVMTCwgKFZPSUQNCj4gKiopJm1TbWJpb3MpOw0KPiA+ICsgICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICByZXR1cm4NCj4gUkVERklTSF9IT1NUX0lO VEVSRkFDRV9IT1NUX0lQX0FERFJFU1NfRk9STUFUX1VOS05PV047DQo+ID4gKyAgICB9DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBSZWRmaXNoR2V0SG9zdEludGVyZmFjZVByb3Rv Y29sRGF0YSAobVNtYmlvcywNCj4gJkRldmljZURlc2NyaXB0b3IsICZEYXRhKTsgLy8gU2VhcmNo IGZvciBTTUJJT1MgdHlwZSA0MmgNCj4gPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSAmJiAo RGF0YSAhPSBOVUxMKSAmJg0KPiA+ICsgICAgICAoRGF0YS0+SG9zdElwQXNzaWdubWVudFR5cGUg PT0gUmVkZmlzaEhvc3RJcEFzc2lnbm1lbnRTdGF0aWMpKQ0KPiA+ICsgIHsNCj4gPiArICAgIHJl dHVybiBEYXRhLT5Ib3N0SXBBZGRyZXNzRm9ybWF0Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg cmV0dXJuDQo+IFJFREZJU0hfSE9TVF9JTlRFUkZBQ0VfSE9TVF9JUF9BRERSRVNTX0ZPUk1BVF9V TktOT1dOOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyoqDQo+ID4gICAgIFRoaXMgZnVuY3Rpb24g ZGlzY292ZXIgUmVkZmlzaCBzZXJ2aWNlIHRocm91Z2ggU01CSU9TIGhvc3QgaW50ZXJmYWNlLg0K PiA+DQo+ID4gQEAgLTUxMiw2ICs1NTksMTggQEAgRGlzY292ZXJSZWRmaXNoSG9zdEludGVyZmFj ZSAoDQo+ID4NCj4gPiAgICAgU3RhdHVzID0gUmVkZmlzaEdldEhvc3RJbnRlcmZhY2VQcm90b2Nv bERhdGEgKG1TbWJpb3MsDQo+ICZEZXZpY2VEZXNjcmlwdG9yLCAmRGF0YSk7IC8vIFNlYXJjaCBm b3IgU01CSU9TIHR5cGUgNDJoDQo+ID4gICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpICYmIChE YXRhICE9IE5VTEwpICYmIChEZXZpY2VEZXNjcmlwdG9yICE9IE5VTEwpKQ0KPiB7DQo+ID4gKyAg ICBpZiAoKEluc3RhbmNlLT5OZXR3b3JrSW50ZXJmYWNlLT5OZXR3b3JrUHJvdG9jb2xUeXBlID09 DQo+IFByb3RvY29sVHlwZVRjcDQpICYmDQo+ID4gKyAgICAgICAgKERhdGEtPkhvc3RJcEFkZHJl c3NGb3JtYXQgIT0NCj4gUkVERklTSF9IT1NUX0lOVEVSRkFDRV9IT1NUX0lQX0FERFJFU1NfRk9S TUFUX0lQNCkpIC8vIElQdjQgY2FzZQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICBERUJVRyAoKERF QlVHX0VSUk9SLCAiJWE6IE5ldHdvcmsgSW50ZXJmYWNlIGlzIElQdjQsIGJ1dCBIb3N0DQo+IElu dGVyZmFjZSByZXF1aXJlcyBJcHY2XG4iLCBfX2Z1bmNfXykpOw0KPiA+ICsgICAgICByZXR1cm4g RUZJX1VOU1VQUE9SVEVEOw0KPiA+ICsgICAgfSBlbHNlIGlmICgoSW5zdGFuY2UtPk5ldHdvcmtJ bnRlcmZhY2UtPk5ldHdvcmtQcm90b2NvbFR5cGUgPT0NCj4gUHJvdG9jb2xUeXBlVGNwNikgJiYN Cj4gPiArICAgICAgICAgICAgICAgKERhdGEtPkhvc3RJcEFkZHJlc3NGb3JtYXQgIT0NCj4gUkVE RklTSF9IT1NUX0lOVEVSRkFDRV9IT1NUX0lQX0FERFJFU1NfRk9STUFUX0lQNikpIC8vIElQdjYg Y2FzZQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE5l dHdvcmsgSW50ZXJmYWNlIGlzIElQdjYsIGJ1dCBIb3N0DQo+IEludGVyZmFjZSByZXF1aXJlcyBJ UHY0XG4iLCBfX2Z1bmNfXykpOw0KPiA+ICsgICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0K PiA+ICsgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAvLw0KPiA+ICAgICAgIC8vIENoZWNrIGlmIHdl IGNhbiByZWFjaCBvdXQgUmVkZmlzaCBzZXJ2aWNlIHVzaW5nIHRoaXMgbmV0d29yayBpbnRlcmZh Y2UuDQo+ID4gICAgICAgLy8gQ2hlY2sgd2l0aCBNQUMgYWRkcmVzcyB1c2luZyBEZXZpY2UgRGVz Y3JpcHRvciBEYXRhIERldmljZSBUeXBlIDA0DQo+IGFuZCBUeXBlIDA1Lg0KPiA+IEBAIC0xMTAy LDYgKzExNjEsNyBAQCBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJbnRlcmZhY2UgKA0KPiA+ICAg ICBPVVQgRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0UNCj4gKipOZXR3b3Jr SW50Zkluc3RhbmNlcw0KPiA+ICAgICApDQo+ID4gICB7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiAgICAgRUZJX1JF REZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUwNCj4gKlRoaXNOZXR3b3Jr SW50ZXJmYWNlSW50bjsNCj4gPiAgICAgRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRF UkZBQ0UNCj4gKlRoaXNOZXR3b3JrSW50ZXJmYWNlOw0KPiA+ICAgICBFRklfUkVERklTSF9ESVND T1ZFUl9SRVNUX0VYX0lOU1RBTkNFX0lOVEVSTkFMDQo+ICpSZXN0RXhJbnN0YW5jZTsNCj4gPiBA QCAtMTE0MSwxMyArMTIwMSwyMyBAQCBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJbnRlcmZhY2Ug KA0KPiA+DQo+ID4gICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNlSW50biA9DQo+IChFRklfUkVERklT SF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRV9JTlRFUk5BTCAqKUdldEZpcnN0Tm9kZQ0KPiAo Jm1FZmlSZWRmaXNoRGlzY292ZXJOZXR3b3JrSW50ZXJmYWNlKTsNCj4gPiAgICAgd2hpbGUgKFRS VUUpIHsNCj4gPiArICAgIC8vIElmIEdldCBTdWJuZXQgSW5mbyBmYWlsZWQgdGhlbiBza2lwIHRo aXMgaW50ZXJmYWNlDQo+ID4gKyAgICBTdGF0dXMgPSBOZXR3b3JrSW50ZXJmYWNlR2V0U3VibmV0 SW5mbyAoVGhpc05ldHdvcmtJbnRlcmZhY2VJbnRuLA0KPiBJbWFnZUhhbmRsZSk7IC8vIEdldCBz dWJuZXQgaW5mbw0KPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg ICBpZiAoSXNOb2RlQXRFbmQgKCZtRWZpUmVkZmlzaERpc2NvdmVyTmV0d29ya0ludGVyZmFjZSwN Cj4gJlRoaXNOZXR3b3JrSW50ZXJmYWNlSW50bi0+RW50cnkpKSB7DQo+ID4gKyAgICAgICAgYnJl YWs7DQo+ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNl SW50biA9DQo+IChFRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRV9JTlRFUk5B TCAqKUdldE5leHROb2RlDQo+ICgmbUVmaVJlZGZpc2hEaXNjb3Zlck5ldHdvcmtJbnRlcmZhY2Us ICZUaGlzTmV0d29ya0ludGVyZmFjZUludG4tPkVudHJ5KTsNCj4gPiArICAgICAgY29udGludWU7 DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICAgICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNlLT5Jc0lw djYgPSBGQUxTRTsNCj4gPiAgICAgICBpZiAoQ2hlY2tJc0lwVmVyc2lvbjYgKFRoaXNOZXR3b3Jr SW50ZXJmYWNlSW50bikpIHsNCj4gPiAgICAgICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNlLT5Jc0lw djYgPSBUUlVFOw0KPiA+ICAgICAgIH0NCj4gPg0KPiA+ICAgICAgIENvcHlNZW0gKChWT0lEICop JlRoaXNOZXR3b3JrSW50ZXJmYWNlLT5NYWNBZGRyZXNzLA0KPiAmVGhpc05ldHdvcmtJbnRlcmZh Y2VJbnRuLT5NYWNBZGRyZXNzLCBUaGlzTmV0d29ya0ludGVyZmFjZUludG4tDQo+ID5Id0FkZHJl c3NTaXplKTsNCj4gPiAtICAgIE5ldHdvcmtJbnRlcmZhY2VHZXRTdWJuZXRJbmZvIChUaGlzTmV0 d29ya0ludGVyZmFjZUludG4sDQo+IEltYWdlSGFuZGxlKTsgLy8gR2V0IHN1Ym5ldCBpbmZvLg0K PiA+ICAgICAgIGlmICghVGhpc05ldHdvcmtJbnRlcmZhY2UtPklzSXB2Nikgew0KPiA+ICAgICAg ICAgSVA0X0NPUFlfQUREUkVTUyAoJlRoaXNOZXR3b3JrSW50ZXJmYWNlLT5TdWJuZXRJZC52NCwN Cj4gJlRoaXNOZXR3b3JrSW50ZXJmYWNlSW50bi0+U3VibmV0QWRkci52NCk7IC8vIElQdjQgc3Vi bmV0IGluZm9ybWF0aW9uLg0KPiA+ICAgICAgIH0gZWxzZSB7DQo+ID4gQEAgLTEyMzAsNyArMTMw MCwxMiBAQCBSZWRmaXNoU2VydmljZUFjcXVpcmVTZXJ2aWNlICgNCj4gPg0KPiA+ICAgICBpZiAo VGFyZ2V0TmV0d29ya0ludGVyZmFjZSAhPSBOVUxMKSB7DQo+ID4gICAgICAgVGFyZ2V0TmV0d29y a0ludGVyZmFjZUludGVybmFsID0gR2V0VGFyZ2V0TmV0d29ya0ludGVyZmFjZUludGVybmFsDQo+ IChUYXJnZXROZXR3b3JrSW50ZXJmYWNlKTsNCj4gPiAtICAgIE51bU5ldHdvcmtJbnRlcmZhY2Vz ICAgICAgICAgICA9IDE7DQo+ID4gKyAgICBpZiAoVGFyZ2V0TmV0d29ya0ludGVyZmFjZUludGVy bmFsID09IE5VTEwpIHsNCj4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOk5vIG5l dHdvcmsgaW50ZXJmYWNlIG9uIHBsYXRmb3JtLlxuIiwNCj4gX19mdW5jX18pKTsNCj4gPiArICAg ICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBO dW1OZXR3b3JrSW50ZXJmYWNlcyA9IDE7DQo+ID4gICAgIH0gZWxzZSB7DQo+ID4gICAgICAgVGFy Z2V0TmV0d29ya0ludGVyZmFjZUludGVybmFsID0NCj4gKEVGSV9SRURGSVNIX0RJU0NPVkVSX05F VFdPUktfSU5URVJGQUNFX0lOVEVSTkFMICopR2V0Rmlyc3ROb2RlDQo+ICgmbUVmaVJlZGZpc2hE aXNjb3Zlck5ldHdvcmtJbnRlcmZhY2UpOw0KPiA+ICAgICAgIE51bU5ldHdvcmtJbnRlcmZhY2Vz ICAgICAgICAgICA9IE51bWJlck9mTmV0d29ya0ludGVyZmFjZSAoKTsNCj4gPiBAQCAtMTI2MCw3 ICsxMzM1LDEzIEBAIFJlZGZpc2hTZXJ2aWNlQWNxdWlyZVNlcnZpY2UgKA0KPiA+ICAgICAgICAg Ly8gR2V0IHN1Ym5ldCBpbmZvcm1hdGlvbiBpbiBjYXNlIHN1Ym5ldCBpbmZvcm1hdGlvbiBpcyBu b3Qgc2V0IGJlY2F1c2UNCj4gPiAgICAgICAgIC8vIFJlZGZpc2hTZXJ2aWNlR2V0TmV0d29ya0lu dGVyZmFjZXMgaGFzbid0IGJlZW4gY2FsbGVkIHlldC4NCj4gPiAgICAgICAgIC8vDQo+ID4gLSAg ICAgIE5ldHdvcmtJbnRlcmZhY2VHZXRTdWJuZXRJbmZvIChUYXJnZXROZXR3b3JrSW50ZXJmYWNl SW50ZXJuYWwsDQo+IEltYWdlSGFuZGxlKTsNCj4gPiArICAgICAgU3RhdHVzMSA9IE5ldHdvcmtJ bnRlcmZhY2VHZXRTdWJuZXRJbmZvDQo+IChUYXJnZXROZXR3b3JrSW50ZXJmYWNlSW50ZXJuYWws IEltYWdlSGFuZGxlKTsNCj4gPiArICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzMSkpIHsNCj4g PiArICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEdldCBzdWJuZXQgaW5mb3JtYXRp b24gZmFpbC5cbiIsDQo+IF9fZnVuY19fKSk7DQo+ID4gKyAgICAgICAgRnJlZVBvb2wgKEluc3Rh bmNlKTsNCj4gPiArICAgICAgICBjb250aW51ZTsNCj4gPiArICAgICAgfQ0KPiA+ICsNCj4gPiAg ICAgICAgIE5ld0luc3RhbmNlID0gVFJVRTsNCj4gPiAgICAgICB9DQo+ID4NCj4gPiBAQCAtMTU0 NywyNSArMTYyOCwyNiBAQCBUZXN0Rm9yUmVxdWlyZWRQcm90b2NvbHMgKA0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICBFRklfT1BFTl9QUk9UT0NPTF9URVNUX1BST1RPQ09MDQo+ID4gICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgIHJl dHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgU3RhdHVz ID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIENvbnRyb2xs ZXJIYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZ1JlcXVpcmVkUHJvdG9jb2xbSW5k ZXhdLkRpc2NvdmVyZWRQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKFZP SUQgKiopJklkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdI YW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCj4gPiAr ICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICAgICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ID4gLSAgICAgIFN0YXR1cyA9IGdCUy0+T3BlblByb3RvY29sICgNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICBnUmVxdWlyZWRQcm90b2NvbFtJbmRleF0uRGlzY292ZXJlZFByb3RvY29sR3VpZCwNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgIChWT0lEICoqKSZJZCwNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgRUZJ X09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09MDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiA+IC0gICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gLSAgICAgICAgaWYg KEluZGV4ID09IExpc3RDb3VudCAtIDEpIHsNCj4gPiAtICAgICAgICAgIERFQlVHICgoREVCVUdf SU5GTywgIiVhOiBhbGwgcmVxdWlyZWQgcHJvdG9jb2xzIGFyZSBmb3VuZCBvbiB0aGlzDQo+IGNv bnRyb2xsZXIgaGFuZGxlOiAlcC5cbiIsIF9fZnVuY19fLCBDb250cm9sbGVySGFuZGxlKSk7DQo+ ID4gLSAgICAgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gLSAgICAgICAgfQ0KPiA+IC0g ICAgICB9DQo+ID4gKyAgICAgIC8vIEFscmVhZHkgaW5zdGFsbGVkDQo+ID4gKyAgICAgIHJldHVy biBFRklfVU5TVVBQT1JURUQ7DQo+ID4gICAgICAgfQ0KPiA+ICAgICB9DQo+ID4NCj4gPiAtICBy ZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ICsgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElU WSwgIiVhOiBhbGwgcmVxdWlyZWQgcHJvdG9jb2xzIGFyZSBmb3VuZA0KPiBvbiB0aGlzIGNvbnRy b2xsZXIgaGFuZGxlOiAlcC5cbiIsIF9fZnVuY19fLCBDb250cm9sbGVySGFuZGxlKSk7DQo+ID4g KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICAvKioNCj4gPiBAQCAt MTYwMCwxMCArMTY4MiwyNCBAQCBCdWlsZHVwTmV0d29ya0ludGVyZmFjZSAoDQo+ID4gICAgIEVG SV9SRURGSVNIX0RJU0NPVkVSX1JFU1RfRVhfSU5TVEFOQ0VfSU5URVJOQUwNCj4gKlJlc3RFeElu c3RhbmNlOw0KPiA+ICAgICBFRklfVFBMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT2xkVHBsOw0KPiA+ICAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTmV3TmV0d29ya0ludGVyZmFjZUluc3RhbGxlZDsNCj4gPiArICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXBUeXBlOw0K PiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0Q291bnQ7DQo+ID4NCj4gPiArICBMaXN0Q291bnQgICAgICAgICAgICAgICAgICAgID0gKHNp emVvZiAoZ1JlcXVpcmVkUHJvdG9jb2wpIC8gc2l6ZW9mDQo+IChSRURGSVNIX0RJU0NPVkVSX1JF UVVJUkVEX1BST1RPQ09MKSk7DQo+ID4gICAgIE5ld05ldHdvcmtJbnRlcmZhY2VJbnN0YWxsZWQg PSBGQUxTRTsNCj4gPiAgICAgSW5kZXggICAgICAgICAgICAgICAgICAgICAgICA9IDA7DQo+ID4g LSAgZG8gew0KPiA+ICsNCj4gPiArICAvLyBHZXQgSVAgVHlwZSB0byBmaWx0ZXIgb3V0IHVubmVj ZXNzYXJ5IG5ldHdvcmsgcHJvdG9jb2wgaWYgcG9zc2libGUNCj4gPiArICBJcFR5cGUgPSBHZXRI aUlwUHJvdG9jb2xUeXBlICgpOw0KPiA+ICsNCj4gPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg PCBMaXN0Q291bnQ7IEluZGV4KyspIHsNCj4gPiArICAgIC8vIENoZWNrIElQIFR5cGUgYW5kIHNr aXAgYW4gdW5uZWNlc3NhcnkgbmV0d29yayBwcm90b2NvbCBpZiBkb2VzIG5vdA0KPiBtYXRjaA0K PiA+ICsgICAgaWYgKCgoZ1JlcXVpcmVkUHJvdG9jb2xbSW5kZXhdLlByb3RvY29sVHlwZSA9PSBQ cm90b2NvbFR5cGVUY3A0KSAmJg0KPiAoSXBUeXBlID09IFJFREZJU0hfSE9TVF9JTlRFUkZBQ0Vf SE9TVF9JUF9BRERSRVNTX0ZPUk1BVF9JUDYpKSB8fA0KPiA+ICsgICAgICAgICgoZ1JlcXVpcmVk UHJvdG9jb2xbSW5kZXhdLlByb3RvY29sVHlwZSA9PSBQcm90b2NvbFR5cGVUY3A2KSAmJg0KPiAo SXBUeXBlID09IFJFREZJU0hfSE9TVF9JTlRFUkZBQ0VfSE9TVF9JUF9BRERSRVNTX0ZPUk1BVF9J UDQpKSkNCj4NCj4gU2ltaWxhcmx5LCB0aGlzIGJlY29tZXMgYSBiaXQgb2YgYSBoYW5kZnVsLg0K SWdvciwgY291bGQgd2UgY29uc2lkZXIgdXNpbmcgTUFDUk8gZm9yIHRoaXMgYXMgd2VsbD8NCg0K Pg0KPiBCdXQgaXQgYWxzbyBmZWVscyBsaWtlIHRoZSBsb2dpYyBpcyBpbmNvcnJlY3Q/DQo+IEku ZS4gaXQgd29uJ3QgZmlsdGVyIG91dCBlbnRyaWVzIHdoZXJlIElwVHlwZSA9PQ0KPiBSRURGSVNI X0hPU1RfSU5URVJGQUNFX0hPU1RfSVBfQUREUkVTU19GT1JNQVRfVU5LTk9XTiwgb3INCj4gaW52 YWxpZD8NCj4NCj4gU2hvdWxkbid0IHRoZSB0ZXN0IGJlDQo+DQo+ICgoZ1JlcXVpcmVkUHJvdG9j b2xbSW5kZXhdLlByb3RvY29sVHlwZSA9PSBQcm90b2NvbFR5cGVUY3A0KSAmJg0KPiAgIChJcFR5 cGUgIT0gUkVERklTSF9IT1NUX0lOVEVSRkFDRV9IT1NUX0lQX0FERFJFU1NfRk9STUFUX0lQNCkp DQo+DQo+IGFuZA0KPg0KPiAoKGdSZXF1aXJlZFByb3RvY29sW0luZGV4XS5Qcm90b2NvbFR5cGUg PT0gUHJvdG9jb2xUeXBlVGNwNikgJiYNCj4gICAoSXBUeXBlICE9IFJFREZJU0hfSE9TVF9JTlRF UkZBQ0VfSE9TVF9JUF9BRERSRVNTX0ZPUk1BVF9JUDYpKSkNCkkgdGhpbmsgYWJvdmUgaXMgdGhl IGVycm9yIGNvbmRpdGlvbiwgdGh1cyB0aGVyZSBpcyBhICJjb250aW51ZSIgdG8gc2tpcCB0aGlz IGVudHJ5Lg0KDQpUaGFua3MNCkFibmVyDQoNCj4NCj4gRWl0aGVyIHdheSwgdGhvc2UgdGVzdHMg Y291bGQgcHJvYmFibHkgYWxzbyBkbyB3aXRoIGJlaW5nIHR1cm5lZCBpbnRvDQo+IG1hY3JvcyB0 byBpbXByb3ZlIHJlYWRhYmlsaXR5Lg0KPg0KPiAvDQo+ICAgICAgTGVpZg0KPg0KPiA+ICsgICAg ew0KPiA+ICsgICAgICBjb250aW51ZTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gICAgICAgU3Rh dHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAvLyBB bHJlYWR5IGluIGxpc3Q/DQo+ID4gICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5k bGUsDQo+ID4gQEAgLTE2MTQsMTEgKzE3MTAsNiBAQCBCdWlsZHVwTmV0d29ya0ludGVyZmFjZSAo DQo+ID4gICAgICAgICAgICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0dFVF9QUk9UT0NP TA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICAgICAgIGlmICghRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gLSAgICAgIEluZGV4Kys7DQo+ID4gLSAgICAgIGlmIChJbmRleCA9 PSAoc2l6ZW9mIChnUmVxdWlyZWRQcm90b2NvbCkgLyBzaXplb2YNCj4gKFJFREZJU0hfRElTQ09W RVJfUkVRVUlSRURfUFJPVE9DT0wpKSkgew0KPiA+IC0gICAgICAgIGJyZWFrOw0KPiA+IC0gICAg ICB9DQo+ID4gLQ0KPiA+ICAgICAgICAgY29udGludWU7DQo+ID4gICAgICAgfQ0KPiA+DQo+ID4g QEAgLTE2MzEsMTEgKzE3MjIsNiBAQCBCdWlsZHVwTmV0d29ya0ludGVyZmFjZSAoDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0dFVF9QUk9UT0NPTA0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiAtICAgICAgSW5kZXgrKzsNCj4gPiAtICAgICAgaWYgKEluZGV4ID09IChzaXplb2Yg KGdSZXF1aXJlZFByb3RvY29sKSAvIHNpemVvZg0KPiAoUkVERklTSF9ESVNDT1ZFUl9SRVFVSVJF RF9QUk9UT0NPTCkpKSB7DQo+ID4gLSAgICAgICAgYnJlYWs7DQo+ID4gLSAgICAgIH0NCj4gPiAt DQo+ID4gICAgICAgICBjb250aW51ZTsNCj4gPiAgICAgICB9DQo+ID4NCj4gPiBAQCAtMTY5NCwx MSArMTc4MCw2IEBAIEJ1aWxkdXBOZXR3b3JrSW50ZXJmYWNlICgNCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgUHJvdG9jb2xEaXNjb3ZlcklkUHRyDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICk7DQo+ID4gICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+IC0gICAgICBJbmRl eCsrOw0KPiA+IC0gICAgICBpZiAoSW5kZXggPT0gKHNpemVvZiAoZ1JlcXVpcmVkUHJvdG9jb2wp IC8gc2l6ZW9mDQo+IChSRURGSVNIX0RJU0NPVkVSX1JFUVVJUkVEX1BST1RPQ09MKSkpIHsNCj4g PiAtICAgICAgICBicmVhazsNCj4gPiAtICAgICAgfQ0KPiA+IC0NCj4gPiAgICAgICAgIGNvbnRp bnVlOw0KPiA+ICAgICAgIH0NCj4gPg0KPiA+IEBAIC0xNzU1LDI1ICsxODM2LDEzIEBAIEJ1aWxk dXBOZXR3b3JrSW50ZXJmYWNlICgNCj4gPiAgICAgICAgICAgICB9DQo+ID4gICAgICAgICAgIH0g ZWxzZSB7DQo+ID4gICAgICAgICAgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZLCAiJWE6 IE5vdCBSRVNUIEVYLCBjb250aW51ZSB3aXRoDQo+IG5leHRcbiIsIF9fZnVuY19fKSk7DQo+ID4g LSAgICAgICAgICBJbmRleCsrOw0KPiA+IC0gICAgICAgICAgaWYgKEluZGV4ID09IChzaXplb2Yg KGdSZXF1aXJlZFByb3RvY29sKSAvIHNpemVvZg0KPiAoUkVERklTSF9ESVNDT1ZFUl9SRVFVSVJF RF9QUk9UT0NPTCkpKSB7DQo+ID4gLSAgICAgICAgICAgIGJyZWFrOw0KPiA+IC0gICAgICAgICAg fQ0KPiA+IC0NCj4gPiAgICAgICAgICAgICBjb250aW51ZTsNCj4gPiAgICAgICAgICAgfQ0KPiA+ ICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+IC0gICAgfSBl bHNlIHsNCj4gPiAtICAgICAgSW5kZXgrKzsNCj4gPiAtICAgICAgaWYgKEluZGV4ID09IChzaXpl b2YgKGdSZXF1aXJlZFByb3RvY29sKSAvIHNpemVvZg0KPiAoUkVERklTSF9ESVNDT1ZFUl9SRVFV SVJFRF9QUk9UT0NPTCkpKSB7DQo+ID4gLSAgICAgICAgYnJlYWs7DQo+ID4gLSAgICAgIH0NCj4g PiAtDQo+ID4gLSAgICAgIGNvbnRpbnVlOw0KPiA+ICAgICAgIH0NCj4gPiAtICB9IHdoaWxlIChJ bmRleCA8IChzaXplb2YgKGdSZXF1aXJlZFByb3RvY29sKSAvIHNpemVvZg0KPiAoUkVERklTSF9E SVNDT1ZFUl9SRVFVSVJFRF9QUk9UT0NPTCkpKTsNCj4gPiArICB9DQo+ID4NCj4gPiAgICAgcmV0 dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ID4gICB9DQo+ID4gLS0NCj4gPiAyLjM3LjEud2luZG93 cy4xDQo+ID4gLVRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhpcyBtZXNzYWdlIG1heSBi ZSBjb25maWRlbnRpYWwgYW5kDQo+IHByb3ByaWV0YXJ5IHRvIEFtZXJpY2FuIE1lZ2F0cmVuZHMg KEFNSSkuIFRoaXMgY29tbXVuaWNhdGlvbiBpcyBpbnRlbmRlZA0KPiB0byBiZSByZWFkIG9ubHkg YnkgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IHRvIHdob20gaXQgaXMgYWRkcmVzc2VkIG9yIGJ5 IHRoZWlyDQo+IGRlc2lnbmVlLiBJZiB0aGUgcmVhZGVyIG9mIHRoaXMgbWVzc2FnZSBpcyBub3Qg dGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IGFyZQ0KPiBvbiBub3RpY2UgdGhhdCBhbnkgZGlz dHJpYnV0aW9uIG9mIHRoaXMgbWVzc2FnZSwgaW4gYW55IGZvcm0sIGlzIHN0cmljdGx5DQo+IHBy b2hpYml0ZWQuIFBsZWFzZSBwcm9tcHRseSBub3RpZnkgdGhlIHNlbmRlciBieSByZXBseSBlLW1h aWwgb3IgYnkgdGVsZXBob25lDQo+IGF0IDc3MC0yNDYtODYwMCwgYW5kIHRoZW4gZGVsZXRlIG9y IGRlc3Ryb3kgYWxsIGNvcGllcyBvZiB0aGUgdHJhbnNtaXNzaW9uLg0KPiA+DQo+ID4NCj4gPiAN Cj4gPg0KPiA+DQoNCg0KCi09LT0tPS09LT0tPS09LT0tPS09LT0tCkdyb3Vwcy5pbyBMaW5rczog WW91IHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBncm91cC4KVmlldy9SZXBseSBP bmxpbmUgKCMxMTEwMDMpOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS8x MTEwMDMKTXV0ZSBUaGlzIFRvcGljOiBodHRwczovL2dyb3Vwcy5pby9tdC8xMDI0NDEwMDMvNzY4 NjE3NgpHcm91cCBPd25lcjogZGV2ZWwrb3duZXJAZWRrMi5ncm91cHMuaW8KVW5zdWJzY3JpYmU6 IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC91bnN1YiBbcmViZWNjYUBvcGVuZncuaW9d Ci09LT0tPS09LT0tPS09LT0tPS09LT0tCgoNCg==