From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR03-VI1-obe.outbound.protection.outlook.com (EUR03-VI1-obe.outbound.protection.outlook.com [40.107.103.63]) by mx.groups.io with SMTP id smtpd.web10.10250.1678358506300004288 for ; Thu, 09 Mar 2023 02:41:47 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=Sj+CaaT0; spf=pass (domain: arm.com, ip: 40.107.103.63, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ek+pmX8eDRo2WKGdaOpMZC+M/PcOe0kZDcmp1tKqw/Q=; b=Sj+CaaT0oX5lqm0XaTDwxGtTB3NeCZfLGcLayROaNy0suWdwgHzvcL8Q8/VmtJzPU2bmkKoQ3WUa/lfOzdMudrlIDr5lFVPOoR4JdemrnXM/EYcnMKxzTjn7+EBGwWVj4TOW0ELdfN76wXwKRwrh2d9b7INsOfE7Qbd40IaeJHo= Received: from DB6P18901CA0009.EURP189.PROD.OUTLOOK.COM (2603:10a6:4:16::19) by AS1PR08MB7587.eurprd08.prod.outlook.com (2603:10a6:20b:473::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.28; Thu, 9 Mar 2023 10:41:28 +0000 Received: from DBAEUR03FT060.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:16:cafe::89) by DB6P18901CA0009.outlook.office365.com (2603:10a6:4:16::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:41:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT060.mail.protection.outlook.com (100.127.142.238) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.31 via Frontend Transport; Thu, 9 Mar 2023 10:41:26 +0000 Received: ("Tessian outbound cfb430c87a1e:v135"); Thu, 09 Mar 2023 10:41:26 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 988c400dbd0afda6 X-CR-MTA-TID: 64aa7808 Received: from 41aa2e87bd4b.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 5D421C34-8A98-44A4-8162-BF398896AC98.1; Thu, 09 Mar 2023 10:41:24 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 41aa2e87bd4b.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 09 Mar 2023 10:41:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mSBrPJYDfD7v+Yo60aD9uLhCSGtDieJOjyVC8tnEOAwjOloatD+FYXF++T6JBiqFZL0AGKOXCkhzFutd1CkD8kWHHDygNRINOy7IgvnO2MQxMjjwDStM4mguFQdqYwGWQUujyxLEoQ0OjGh+jBYEt/qdrCQCEr2lDsmm6aPb7rGWF0xkEQmlppB1W7FqNx2ew30vuXfrfd7oE89UM41rgy1it8U1qL8ZLIXe0ACGosDNt0AhRfHz8ZzlpjzzFgEAi17Xkv6yAPekSfdj6g864BioFDqBDZJrmHtXUe5hcyhx4wlkS9j2QxoUOndWzA+H7OdKXF74oHpHyDk0nJMb5w== 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=Ek+pmX8eDRo2WKGdaOpMZC+M/PcOe0kZDcmp1tKqw/Q=; b=gljBbZdC1lFMHAREqBNoLI2mQTws1ddeWnGbLtfx5fZ25/2WYWIjZijpbIiq0vo9EjDbeGnBZqiQP1XAPigFQTi0aIeyiHWMAKziIoBJrRe0060AZ9fTI/Y5z7NcnPo8jM69Wa1LcH2iHOgX1dDboUWybz6wEhl1U2zseYX1clrk3QPeCNsHjT2Q/teKAP8NNVMqBzvY6DZJzjPKxu/Cy29c7DXEMotD4uUFhhBBS9fg1dZr+SuZBW5Nm0k1EioPYmpH7wndVmU0vudWr1/DVEx6nlmT/KykdDZeWr/RarGWtcO7DSNetmlzTbTnqhjVyhtD6G/t6KsDlPWkYFUR7w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ek+pmX8eDRo2WKGdaOpMZC+M/PcOe0kZDcmp1tKqw/Q=; b=Sj+CaaT0oX5lqm0XaTDwxGtTB3NeCZfLGcLayROaNy0suWdwgHzvcL8Q8/VmtJzPU2bmkKoQ3WUa/lfOzdMudrlIDr5lFVPOoR4JdemrnXM/EYcnMKxzTjn7+EBGwWVj4TOW0ELdfN76wXwKRwrh2d9b7INsOfE7Qbd40IaeJHo= Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by DB9PR08MB7421.eurprd08.prod.outlook.com (2603:10a6:10:372::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.28; Thu, 9 Mar 2023 10:41:09 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::c224:ef61:cd4c:7727]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::c224:ef61:cd4c:7727%3]) with mapi id 15.20.6178.016; Thu, 9 Mar 2023 10:41:08 +0000 From: "Sami Mujawar" To: Girish Mahadevan , "devel@edk2.groups.io" CC: Alexei Fedorov , Pierre Gondois , "abner.chang@amd.com" , "Jeff Brasen (jbrasen@nvidia.com)" , "ashishsingha@nvidia.com" , "nramirez@nvidia.com" , "wwatson@nvidia.com" , Matteo Carlini , Akanksha Jain , Ben Adderson , Samer El-Haj-Mahmoud , Jose Marinho , nd Subject: Re: [PATCH v2 2/4] DynamicTablesPkg: Add SMBIOS table dispatcher Thread-Topic: [PATCH v2 2/4] DynamicTablesPkg: Add SMBIOS table dispatcher Thread-Index: AQHZUZZXEirKFeedm0SoiFTc1VErJa7xJ0qAgAEc1oA= Date: Thu, 9 Mar 2023 10:41:06 +0000 Message-ID: <8FC92511-1E75-4C4B-91C7-9D252728C69E@arm.com> References: <20230308081626.33124-1-sami.mujawar@arm.com> <20230308081626.33124-3-sami.mujawar@arm.com> <1bf32de1-2aa2-c680-4760-bffa0da59adc@nvidia.com> In-Reply-To: <1bf32de1-2aa2-c680-4760-bffa0da59adc@nvidia.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.70.23021201 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: AS8PR08MB6806:EE_|DB9PR08MB7421:EE_|DBAEUR03FT060:EE_|AS1PR08MB7587:EE_ X-MS-Office365-Filtering-Correlation-Id: d5270548-4969-4a7c-5305-08db208ad57e x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: GI1FaC1pZmmKhHkt0N6c/98c4oBs7e4yHMY0b1CL0BVli2W10ZEfomOZpdpR8ER2yLjNKP2MN1wVfbdq4TkyQzJABRetNb57vm8GWJYVoHOHRs0p4iZgtlpg8Tmjj4D+PM3dh+17SiQr5R1i9mxU1Sivfw5sPCPIiRgN18dmqeWFO+UKPvmqjEoiW7e+t39qSUHdVmPHGcEAOby3nXD6EeMybyTZFOb2PM06kfDCeIWwo75XkjwB08ia2qCtVTObkHDKToVUN5CuL0sRvUkS05IXyN1/RhtSAGtjRTyx/c8lko2S965gf7Ie8SjZ21TZMaxb3Yg4si6O/HN38VdqfXOgW55B81rtZIHmNY5M+3mFt9qghK9LPqD281AgRv4JNsNzKEG6vwuusYgd4pNje8ovKv+fPsNrp3DX9s4IlLGgnf5QGUA+I5cExex4nIBFtpW1WrdIlOK43tKguTF6y6aLc1SqxLIwRJ8uLl2gyfWPBKtzyuZ+dMzB96OkVj+koCQtrSh0B8iua7D9FH9H5lA+onFf7Fpv/cJRBUtRTQeTczxKARrMZOOD8BnmTPDWWARguVaI4hXiNqfcfHK13N599gop1nQPioT999Eunfh/WTtDctPVq7vtC1QTRln4MRWKLI3eosmesv7+XjztA5/SE6ikasWbAN4v8t0sMbUv7sc1AcqnTloTWZEXI5EUzd7Rz2v6RB1szOeySQN9WberK+8VgGwFVKDEvB1+f+U= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6806.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(346002)(376002)(396003)(136003)(366004)(451199018)(86362001)(38070700005)(38100700002)(5660300002)(64756008)(66476007)(36756003)(122000001)(4326008)(41300700001)(33656002)(76116006)(66946007)(30864003)(8676002)(66556008)(66446008)(2906002)(8936002)(186003)(2616005)(26005)(6506007)(53546011)(83380400001)(6512007)(54906003)(478600001)(316002)(966005)(91956017)(6486002)(71200400001)(110136005)(45980500001)(579004)(559001);DIR:OUT;SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7421 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT060.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 62b58f30-da2b-4938-d521-08db208ac991 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nly41y8p22RTY/rK5M7xyIRXrjX8tIXS4An13jOAl5RWloiwYZUr2FoHLJ5tdmWeg3wW8JdCnpQwRZM5vdy+y+RQrp9KM9cJyAt9jyRzULmo/roOOd2staK04/qzkVkBZB07X8hGpQJtT6IRHsUPDDJdG9nPKvByU+e6qwqo0+jUC+NZK/JasNQ+dcTujG6N5TQ4KkruyhHUdPG69SQo2M/cpCqvlDpk+GeDrGwufJCqguXklCaXwNEKVQxBtWZwVhsW38ljfhoW48YHVijp41+nCaoDLZzi8F1yS5XRge2rjKc5Q43EHXI0FxocIFobS/pE0jkGXqYlL/yO2BJtJcaBqSU8Lsp+U0r6yzzsVIMBm774yIrAu4YWD8MQmtJB0nRhceaIyFFu0L9E5vvq7UPFjd1IaO9lcSzZWyx/pLCTSJ1+bwJ9jpnYHaWXr+XaOyKfz/ySOhhHMi3ip4x5LSatmQdr31mh+tkVjVhN+6jgwkvUKMbFNZvDr6oa+J9bO9DANadIKLmaLZ5cYjr1oc4JVeIlRX3MlTywRahKweof8RB/+DCYtfy8It05840ZGMvG9WncmviyL9TT3CqZfdq7yqZauLk7MYsOjevEslTlnsospi5k5Mst0aeKn5S/1LQFnOzei5N6dq3yDIWyi2ivrykTvwsQrLb9tB2wwiWxHj4DPsFguAB3xol4iDur X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230025)(4636009)(136003)(396003)(376002)(346002)(39860400002)(451199018)(36840700001)(46966006)(40470700004)(33656002)(26005)(36756003)(83380400001)(82740400003)(36860700001)(47076005)(40460700003)(2616005)(186003)(966005)(6486002)(41300700001)(110136005)(53546011)(5660300002)(6512007)(8936002)(2906002)(8676002)(40480700001)(4326008)(70586007)(86362001)(70206006)(30864003)(336012)(316002)(54906003)(356005)(6506007)(478600001)(81166007)(82310400005);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:41:26.2458 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d5270548-4969-4a7c-5305-08db208ad57e X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT060.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7587 Content-Language: en-GB Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 SGkgR2lyaXNoLA0KDQpUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suDQoNClBsZWFzZSBmaW5k IG15IHJlc3BvbnNlIGlubGluZSBtYXJrZWQgW1NBTUldLg0KDQpSZWdhcmRzLA0KDQpTYW1pIE11 amF3YXINCg0K77u/T24gMDgvMDMvMjAyMywgMTc6NDEsICJHaXJpc2ggTWFoYWRldmFuIiA8Z21h aGFkZXZhbkBudmlkaWEuY29tIDxtYWlsdG86Z21haGFkZXZhbkBudmlkaWEuY29tPj4gd3JvdGU6 DQoNCg0KSGkgU2FtaQ0KDQoNClRoYW5rcyBmb3IgdjIsIEkgd2lsbCBhcHBseSB0aGVzZSB0byBt eSB0cmVlIGFuZCB0ZXN0IGl0IG91dC4NCk9uZSBzbWFsbCBjb21tZW50IGJlZm9yZSBJIHJldmll dy90ZXN0IHRoZSBwYXRjaCB0cmFpbiBpbmxpbmUgKHByZWZpeGVkIA0KYnkgW0dNXSkNCg0KDQpC ZXN0IFJlZ2FyZHMNCkdpcmlzaA0KDQoNCk9uIDMvOC8yMDIzIDE6MTYgQU0sIFNhbWkgTXVqYXdh ciB3cm90ZToNCj4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3Ig YXR0YWNobWVudHMNCj4gDQo+IA0KPiBTb21lIFNNQklPUyBzdHJ1Y3R1cmUvdGFibGUgZmllbGRz IGhhdmUgZGVwZW5kZW5jeSBvbiBvdGhlciBTTUJJT1MNCj4gc3RydWN0dXJlcy90YWJsZXMuIFRo ZXNlIGRlcGVuZGVuY2llcyBhcmUgZXN0YWJsaXNoZWQgdXNpbmcgaGFuZGxlcw0KPiBwb2ludGlu ZyB0byB0aGUgZGVwZW5kZW50IHRhYmxlcy4NCj4gDQo+IEEgU01CSU9TIHRhYmxlIGhhbmRsZSBj YW4gYmUgb2J0YWluZWQgYnkgZWl0aGVyIGluc3RhbGxpbmcgYSBTTUJJT1MNCj4gdGFibGUgb3Ig YnkgYWxsb2NhdGluZyBhIGhhbmRsZSwgd2hpY2ggcmVxdWlyZXMgY29tcGxleCBtYW5hZ2VtZW50 DQo+IHRvIGF2b2lkIGFueSBjbGFzaGVzLg0KPiANCj4gT2J0YWluaW5nIGEgU01CSU9TIGhhbmRs ZSBieSBpbnN0YWxsYXRpb24gcmVxdWlyZXMgdGhhdCB0aGUgZGVwZW5kZW50DQo+IHRhYmxlIGlz IGluc3RhbGxlZCBiZWZvcmUgdGhlIHBhcmVudCBTTUJJT1MgdGFibGUgY2FuIGJlIGluc3RhbGxl ZC4NCj4gVGhlcmVmb3JlLCBpbnRyb2R1Y2UgYSBTTUJJT1MgdGFibGUgZGlzcGF0Y2hlciB0aGF0 IHdhbGtzIHRoZSBTTUJJT1MNCj4gZGVwZW5kZW5jeSBsaXN0IGFuZCBzY2hlZHVsZXMgdGhlIGRl cGVuZGVudCB0YWJsZXMgdG8gYmUgaW5zdGFsbGVkDQo+IGJlZm9yZSB0aGUgcGFyZW50IHRhYmxl IGlzIGluc3RhbGxlZC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFNhbWkgTXVqYXdhciA8c2FtaS5t dWphd2FyQGFybS5jb20gPG1haWx0bzpzYW1pLm11amF3YXJAYXJtLmNvbT4+DQo+IENjOiBBbGV4 ZWkgRmVkb3JvdiA8QWxleGVpLkZlZG9yb3ZAYXJtLmNvbSA8bWFpbHRvOkFsZXhlaS5GZWRvcm92 QGFybS5jb20+Pg0KPiBDYzogUGllcnJlIEdvbmRvaXMgPHBpZXJyZS5nb25kb2lzQGFybS5jb20g PG1haWx0bzpwaWVycmUuZ29uZG9pc0Bhcm0uY29tPj4NCj4gQ2M6IEdpcmlzaCBNYWhhZGV2YW4g PGdtYWhhZGV2YW5AbnZpZGlhLmNvbSA8bWFpbHRvOmdtYWhhZGV2YW5AbnZpZGlhLmNvbT4+DQo+ IENjOiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tIDxtYWlsdG86amJyYXNlbkBudmlk aWEuY29tPj4NCj4gQ2M6IEFzaGlzaCBTaW5naGFsIDxhc2hpc2hzaW5naGFAbnZpZGlhLmNvbSA8 bWFpbHRvOmFzaGlzaHNpbmdoYUBudmlkaWEuY29tPj4NCj4gQ2M6IE5pY2sgUmFtaXJleiA8bnJh bWlyZXpAbnZpZGlhLmNvbSA8bWFpbHRvOm5yYW1pcmV6QG52aWRpYS5jb20+Pg0KPiBDYzogV2ls bGlhbSBXYXRzb24gPHd3YXRzb25AbnZpZGlhLmNvbSA8bWFpbHRvOnd3YXRzb25AbnZpZGlhLmNv bT4+DQo+IENjOiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAYW1kLmNvbSA8bWFpbHRvOmFibmVy LmNoYW5nQGFtZC5jb20+Pg0KPiBDYzogU2FtZXIgRWwtSGFqLU1haG1vdWQgPFNhbWVyLkVsLUhh ai1NYWhtb3VkQGFybS5jb20gPG1haWx0bzpTYW1lci5FbC1IYWotTWFobW91ZEBhcm0uY29tPj4N Cj4gQ2M6IEpvc2UgTWFyaW5obyA8Sm9zZS5NYXJpbmhvQGFybS5jb20gPG1haWx0bzpKb3NlLk1h cmluaG9AYXJtLmNvbT4+DQo+IC0tLQ0KPiANCj4gTm90ZXM6DQo+IHYyOg0KPiAtIFVwZGF0ZSBk aXNwYXRjaGVyIHN0YXRlIG1hY2hpbmUgdG8gcmVtb3ZlIFN0VW5rbm93bi4gW1NBTUldDQo+IC0g TW92ZSBleHRlcm4gZnVuY3Rpb24gdG8gaGVhZGVyIGZpbGUgYW5kIG1vdmUgZGVidWcgW0FCTkVS XQ0KPiBjb2RlIHRvZ2V0aGVyLg0KPiAtIFVwZGF0ZWQgY29kZSBiYXNlZCBvbiByZXZpZXcgZmVl ZGJhY2sgdG8gbW92ZSBleHRlcm4gW1NBTUldDQo+IGZ1bmN0aW9uIHRvIGhlYWRlciBmaWxlIGFu ZCBhbHNvIG1vdmVkIHRoZSBkZWJ1ZyBjb2RlDQo+IHRvZ2V0aGVyLg0KPiBSZWY6IGh0dHBzOi8v ZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzk1MzQxIDxodHRwczovL2VkazIuZ3JvdXBz LmlvL2cvZGV2ZWwvbWVzc2FnZS85NTM0MT4NCj4gDQo+IER5bmFtaWNUYWJsZXNQa2cvRHJpdmVy cy9EeW5hbWljVGFibGVNYW5hZ2VyRHhlL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUuaW5mIHwgNCAr LQ0KPiBEeW5hbWljVGFibGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS9TbWJp b3NUYWJsZURpc3BhdGNoZXIuYyB8IDI4MiArKysrKysrKysrKysrKysrKysrKw0KPiBEeW5hbWlj VGFibGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS9TbWJpb3NUYWJsZURpc3Bh dGNoZXIuaCB8IDE1OSArKysrKysrKysrKw0KPiAzIGZpbGVzIGNoYW5nZWQsIDQ0NCBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvRHluYW1pY1RhYmxlc1Br Zy9Ecml2ZXJzL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS5p bmYgYi9EeW5hbWljVGFibGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS9EeW5h bWljVGFibGVNYW5hZ2VyRHhlLmluZg0KPiBpbmRleCBhZDhiM2QwMzdjMTY5Y2E4NDhiNWVhODRm ZDEwODZiODNmMzc4NzZmLi5iMDkyNzJkODgzYzZmNGYwNWViMDNkY2RhYjNlZmVkYTkyYjJmYmI2 IDEwMDY0NA0KPiAtLS0gYS9EeW5hbWljVGFibGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlTWFu YWdlckR4ZS9EeW5hbWljVGFibGVNYW5hZ2VyRHhlLmluZg0KPiArKysgYi9EeW5hbWljVGFibGVz UGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS9EeW5hbWljVGFibGVNYW5hZ2VyRHhl LmluZg0KPiBAQCAtMSw3ICsxLDcgQEANCj4gIyMgQGZpbGUNCj4gIyBNb2R1bGUgdGhhdCBkcml2 ZXMgdGhlIHRhYmxlIGdlbmVyYXRpb24gYW5kIGluc3RhbGxhdGlvbiBwcm9jZXNzLg0KPiAjDQo+ IC0jIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTksIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDIyLCBBcm0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gIw0KPiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ICMjDQo+IEBAIC0yMiw2ICsyMiw4IEBAIFtEZWZpbmVzXQ0KPiAN Cj4gW1NvdXJjZXNdDQo+IER5bmFtaWNUYWJsZU1hbmFnZXJEeGUuYw0KPiArIFNtYmlvc1RhYmxl RGlzcGF0Y2hlci5jDQo+ICsgU21iaW9zVGFibGVEaXNwYXRjaGVyLmgNCj4gDQo+IFtQYWNrYWdl c10NCj4gTWRlUGtnL01kZVBrZy5kZWMNCj4gZGlmZiAtLWdpdCBhL0R5bmFtaWNUYWJsZXNQa2cv RHJpdmVycy9EeW5hbWljVGFibGVNYW5hZ2VyRHhlL1NtYmlvc1RhYmxlRGlzcGF0Y2hlci5jIGIv RHluYW1pY1RhYmxlc1BrZy9Ecml2ZXJzL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUvU21iaW9zVGFi bGVEaXNwYXRjaGVyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU3Mjg1MzhkOWY2ZWIwYjE2NGZlYTNh MTYwZDMyMzNkYjgzM2Y4ZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0R5bmFtaWNUYWJsZXNQ a2cvRHJpdmVycy9EeW5hbWljVGFibGVNYW5hZ2VyRHhlL1NtYmlvc1RhYmxlRGlzcGF0Y2hlci5j DQo+IEBAIC0wLDAgKzEsMjgyIEBADQo+ICsvKiogQGZpbGUNCj4gKyBEeW5hbWljIFNtYmlvcyBU YWJsZSBEaXNwYXRjaGVyDQo+ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMjIgLSAyMDIzLCBBcm0g TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKw0KPiArIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2luY2x1ZGUgPExp YnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9TbWJpb3MuaD4NCj4gKw0K PiArI2luY2x1ZGUgPEluY2x1ZGUvU3RhbmRhcmROYW1lU3BhY2VPYmplY3RzLmg+DQo+ICsjaW5j bHVkZSA8U21iaW9zVGFibGVEaXNwYXRjaGVyLmg+DQo+ICsNCj4gKy8qKg0KPiArIFRoZSBTTUJJ T1MgZGlzcGF0Y2hlciBzdGF0ZSB0YWJsZS4NCj4gKw0KPiArIFRoZSBTTUJJT1MgZGlzcGF0Y2hl ciBzdGF0ZSB0YWJsZSBpcyB1c2VkIHRvIGVzdGFibGlzaCB0aGUgZGVwZW5kZW5jeQ0KPiArIG9y ZGVyIGluIHdoaWNoIHRoZSBTTUJJT1MgdGFibGVzIGFyZSBpbnN0YWxsZWQuIFRoaXMgYWxsb3dz IHRoZSBTTUJJT1MNCj4gKyBkaXNwYXRjaGVyIHRvIGRpc3BhdGNoIHRoZSBkZXBlbmRlbnQgdGFi bGVzIGZvciBpbnN0YWxsYXRpb24gYmVmb3JlIHRoZQ0KPiArIHBhcmVudCB0YWJsZSBpcyBpbnN0 YWxsZWQuDQo+ICsgVGhlIFNNQklPU19UQUJMRV9ESVNQQVRDSEVSLkRlcGVuZGVuY3lbXSBmaWVs ZCBpcyB1c2VkIHRvIGVzdGFibGlzaCB0aGUNCj4gKyBkZXBlbmRlbmN5IGxpc3QuDQo+ICsgRWxl bWVudHMgaW4gdGhlIERlcGVuZGVuY3kgbGlzdCBhcmUgcmVzb2x2ZWQgYnkgaW5jcmVhc2luZyBp bmRleC4gSG93ZXZlciwNCj4gKyBhbGwgb3JkZXJzIGFyZSBlcXVpdmFsZW50IGFzOg0KPiArIC0g dGhlIFBhcmVudCBTTUJJT1MgdGFibGUgd2lsbCBvbmx5IGJlIGluc3RhbGxlZCBvbmNlIGFsbCBk ZXBlbmRlbmNpZXMNCj4gKyBoYXZlIGJlZW4gc2F0aXNmaWVkLg0KPiArIC0gbm8gY3ljbGljIGRl cGVuZGVuY3kgaXMgYWxsb3dlZC4NCj4gKyBUaGUgZGVwZW5kZW5jeSBsaXN0IGlzIHRlcm1pbmF0 ZWQgYnkgU01UVF9OVUxMLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArU01CSU9TX1RBQkxFX0RJU1BB VENIRVIgbVNtQmlvc0Rpc3BhdGNoZXJbTUFYX1NNQklPU19UQUJMRVNdID0gew0KPiArIFNNQklP U19UQUJMRV9ERVAgKFNNQklPU19UWVBFX0JJT1NfSU5GT1JNQVRJT04sIFNNVFRfTlVMTCwgU01U VF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFC TEVfREVQIChTTUJJT1NfVFlQRV9TWVNURU1fSU5GT1JNQVRJT04sIFNNVFRfTlVMTCwgU01UVF9O VUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVf REVQIChTTUJJT1NfVFlQRV9CQVNFQk9BUkRfSU5GT1JNQVRJT04sIFNNVFRfTlVMTCwgU01UVF9O VUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVf REVQIChTTUJJT1NfVFlQRV9TWVNURU1fRU5DTE9TVVJFLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwg U01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ICsgU01CSU9TX1RBQkxFX0RFUCAo U01CSU9TX1RZUEVfUFJPQ0VTU09SX0lORk9STUFUSU9OLCBTTUJJT1NfVFlQRV9DQUNIRV9JTkZP Uk1BVElPTiwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4g KyBTTUJJT1NfVEFCTEVfREVQIChTTUJJT1NfVFlQRV9NRU1PUllfQ09OVFJPTExFUl9JTkZPUk1B VElPTiwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05V TEwpLA0KPiArIFNNQklPU19UQUJMRV9ERVAgKFNNQklPU19UWVBFX01FTU9SWV9NT0RVTEVfSU5G T1JNQVRPTiwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRU X05VTEwpLA0KPiArIFNNQklPU19UQUJMRV9ERVAgKFNNQklPU19UWVBFX0NBQ0hFX0lORk9STUFU SU9OLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVM TCksDQo+ICsgU01CSU9TX1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfUE9SVF9DT05ORUNUT1JfSU5G T1JNQVRJT04sIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01U VF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVfREVQIChTTUJJT1NfVFlQRV9TWVNURU1fU0xPVFMs IFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwN Cj4gKyBTTUJJT1NfVEFCTEVfREVQIChTTUJJT1NfVFlQRV9PTkJPQVJEX0RFVklDRV9JTkZPUk1B VElPTiwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05V TEwpLA0KPiArIFNNQklPU19UQUJMRV9ERVAgKFNNQklPU19UWVBFX09FTV9TVFJJTkdTLCBTTVRU X05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ICsg U01CSU9TX1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfU1lTVEVNX0NPTkZJR1VSQVRJT05fT1BUSU9O UywgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwp LA0KPiArIFNNQklPU19UQUJMRV9ERVAgKFNNQklPU19UWVBFX0JJT1NfTEFOR1VBR0VfSU5GT1JN QVRJT04sIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9O VUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVfREVQIChTTUJJT1NfVFlQRV9HUk9VUF9BU1NPQ0lBVElP TlMsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxM KSwNCj4gKyBTTUJJT1NfVEFCTEVfREVQIChTTUJJT1NfVFlQRV9TWVNURU1fRVZFTlRfTE9HLCBT TVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ ICsgU01CSU9TX1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfUEhZU0lDQUxfTUVNT1JZX0FSUkFZLCBT TUJJT1NfVFlQRV8zMkJJVF9NRU1PUllfRVJST1JfSU5GT1JNQVRJT04sIFNNQklPU19UWVBFXzY0 QklUX01FTU9SWV9FUlJPUl9JTkZPUk1BVElPTiwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRf TlVMTCksDQo+ICsgU01CSU9TX1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfTUVNT1JZX0RFVklDRSwg U01CSU9TX1RZUEVfUEhZU0lDQUxfTUVNT1JZX0FSUkFZLCBTTUJJT1NfVFlQRV8zMkJJVF9NRU1P UllfRVJST1JfSU5GT1JNQVRJT04sIFNNQklPU19UWVBFXzY0QklUX01FTU9SWV9FUlJPUl9JTkZP Uk1BVElPTiwgU01UVF9OVUxMLCBTTVRUX05VTEwpLA0KPiArIFNNQklPU19UQUJMRV9ERVAgKFNN QklPU19UWVBFXzMyQklUX01FTU9SWV9FUlJPUl9JTkZPUk1BVElPTiwgU01UVF9OVUxMLCBTTVRU X05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwpLA0KPiArIFNNQklPU19UQUJM RV9ERVAgKFNNQklPU19UWVBFX01FTU9SWV9BUlJBWV9NQVBQRURfQUREUkVTUywgU01UVF9OVUxM LCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwpLA0KPiArIFNNQklP U19UQUJMRV9ERVAgKFNNQklPU19UWVBFX01FTU9SWV9ERVZJQ0VfTUFQUEVEX0FERFJFU1MsIFNN VFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4g KyBTTUJJT1NfVEFCTEVfREVQIChTTUJJT1NfVFlQRV9CVUlMVF9JTl9QT0lOVElOR19ERVZJQ0Us IFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwN Cj4gKyBTTUJJT1NfVEFCTEVfREVQIChTTUJJT1NfVFlQRV9QT1JUQUJMRV9CQVRURVJZLCBTTVRU X05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ICsg U01CSU9TX1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfU1lTVEVNX1JFU0VULCBTTVRUX05VTEwsIFNN VFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ICsgU01CSU9TX1RB QkxFX0RFUCAoU01CSU9TX1RZUEVfSEFSRFdBUkVfU0VDVVJJVFksIFNNVFRfTlVMTCwgU01UVF9O VUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVf REVQIChTTUJJT1NfVFlQRV9TWVNURU1fUE9XRVJfQ09OVFJPTFMsIFNNVFRfTlVMTCwgU01UVF9O VUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVf REVQIChTTUJJT1NfVFlQRV9WT0xUQUdFX1BST0JFLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01U VF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ICsgU01CSU9TX1RBQkxFX0RFUCAoU01C SU9TX1RZUEVfQ09PTElOR19ERVZJQ0UsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEws IFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVfREVQIChTTUJJT1NfVFlQ RV9URU1QRVJBVFVSRV9QUk9CRSwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01U VF9OVUxMLCBTTVRUX05VTEwpLA0KPiArIFNNQklPU19UQUJMRV9ERVAgKFNNQklPU19UWVBFX0VM RUNUUklDQUxfQ1VSUkVOVF9QUk9CRSwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwg U01UVF9OVUxMLCBTTVRUX05VTEwpLA0KPiArIFNNQklPU19UQUJMRV9ERVAgKFNNQklPU19UWVBF X09VVF9PRl9CQU5EX1JFTU9URV9BQ0NFU1MsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05V TEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVfREVQIChTTUJJT1Nf VFlQRV9CT09UX0lOVEVHUklUWV9TRVJWSUNFLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9O VUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ICsgU01CSU9TX1RBQkxFX0RFUCAoU01CSU9T X1RZUEVfU1lTVEVNX0JPT1RfSU5GT1JNQVRJT04sIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRU X05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVfREVQIChTTUJJ T1NfVFlQRV82NEJJVF9NRU1PUllfRVJST1JfSU5GT1JNQVRJT04sIFNNVFRfTlVMTCwgU01UVF9O VUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1NfVEFCTEVf REVQIChTTUJJT1NfVFlQRV9NQU5BR0VNRU5UX0RFVklDRSwgU01UVF9OVUxMLCBTTVRUX05VTEws IFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwpLA0KPiArIFNNQklPU19UQUJMRV9ERVAg KFNNQklPU19UWVBFX01BTkFHRU1FTlRfREVWSUNFX0NPTVBPTkVOVCwgU01UVF9OVUxMLCBTTVRU X05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwpLA0KPiArIFNNQklPU19UQUJM RV9ERVAgKFNNQklPU19UWVBFX01BTkFHRU1FTlRfREVWSUNFX1RIUkVTSE9MRF9EQVRBLCBTTVRU X05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ICsg U01CSU9TX1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfTUVNT1JZX0NIQU5ORUwsIFNNVFRfTlVMTCwg U01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1Nf VEFCTEVfREVQIChTTUJJT1NfVFlQRV9JUE1JX0RFVklDRV9JTkZPUk1BVElPTiwgU01UVF9OVUxM LCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwpLA0KPiArIFNNQklP U19UQUJMRV9ERVAgKFNNQklPU19UWVBFX1NZU1RFTV9QT1dFUl9TVVBQTFksIFNNVFRfTlVMTCwg U01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMKSwNCj4gKyBTTUJJT1Nf VEFCTEVfREVQIChTTUJJT1NfVFlQRV9BRERJVElPTkFMX0lORk9STUFUSU9OLCBTTVRUX05VTEws IFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ICsgU01CSU9T X1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfT05CT0FSRF9ERVZJQ0VTX0VYVEVOREVEX0lORk9STUFU SU9OLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVM TCksDQo+ICsgU01CSU9TX1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfTUFOQUdFTUVOVF9DT05UUk9M TEVSX0hPU1RfSU5URVJGQUNFLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRU X05VTEwsIFNNVFRfTlVMTCksDQo+ICsgU01CSU9TX1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfVFBN X0RFVklDRSwgU01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRU X05VTEwpLA0KPiArIFNNQklPU19UQUJMRV9ERVAgKFNNQklPU19UWVBFX1BST0NFU1NPUl9BRERJ VElPTkFMX0lORk9STUFUSU9OLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9OVUxMLCBTTVRU X05VTEwsIFNNVFRfTlVMTCksDQo+ICsgU01CSU9TX1RBQkxFX0RFUCAoU01CSU9TX1RZUEVfRklS TVdBUkVfSU5WRU5UT1JZX0lORk9STUFUSU9OLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwgU01UVF9O VUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCksDQo+ICsgU01CSU9TX1RBQkxFX0RFUCAoU01CSU9T X1RZUEVfU1RSSU5HX1BST1BFUlRZX0lORk9STUFUSU9OLCBTTVRUX05VTEwsIFNNVFRfTlVMTCwg U01UVF9OVUxMLCBTTVRUX05VTEwsIFNNVFRfTlVMTCkNCj4gK307DQo+ICsNCj4gKyNpZiAhZGVm aW5lZCAoTURFUEtHX05ERUJVRykNCj4gKw0KPiArLyoqDQo+ICsgQSBzdHJpbmcgdGFibGUgZGVz Y3JpYmluZyB0aGUgU01CSU9TIGRpc3BhdGNoZXIgc3RhdGVzLg0KPiArKi8NCj4gK1NUQVRJQw0K PiArQ09OU1QgQ0hBUjggKlNtYmlvc1RhYmxlU3RhdGVUeHRbXSA9IHsNCj4gKyAiU3ROb3RQcmVz ZW50IiwNCj4gKyAiU3RQcmVzZW50IiwNCj4gKyAiU3REaXNwYXRjaGVkIg0KPiArfTsNCj4gKw0K PiArLyoqDQo+ICsgUHJpbnQgdGhlIFNNQklPUyBUYWJsZSBEaXNwYXRjaGVyIHN0YXRlIGluZm9y bWF0aW9uLg0KPiArDQo+ICsgQHBhcmFtIFZlcmJvc2UgUHJpbnQgZGV0YWlsZWQgcmVwb3J0DQo+ ICsqKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQcmludERpc3BhdGNoZXJT dGF0dXMgKA0KPiArIElOIEJPT0xFQU4gVmVyYm9zZQ0KPiArICkNCj4gK3sNCj4gKyBVSU5UTiBJ bmRleDsNCj4gKw0KPiArIERFQlVHICgoREVCVUdfVkVSQk9TRSwgIkRpc3BhdGNoZXIgU3RhdHVz OlxuIikpOw0KPiArIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEFSUkFZX1NJWkUgKG1TbUJpb3NE aXNwYXRjaGVyKTsgSW5kZXgrKykgew0KPiArIGlmICgoIVZlcmJvc2UpICYmIChtU21CaW9zRGlz cGF0Y2hlcltJbmRleF0uU3RhdGUgPT0gU3ROb3RQcmVzZW50KSkgew0KPiArIGNvbnRpbnVlOw0K PiArIH0NCj4gKw0KPiArIERFQlVHICgoDQo+ICsgREVCVUdfVkVSQk9TRSwNCj4gKyAiJTAyZDog JTEwYSBbJTAyZCwgJTAyZCwgJTAyZCwgJTAyZCwgJTAyZF1cbiIsDQo+ICsgbVNtQmlvc0Rpc3Bh dGNoZXJbSW5kZXhdLlRhYmxlVHlwZSwNCj4gKyBTbWJpb3NUYWJsZVN0YXRlVHh0W21TbUJpb3NE aXNwYXRjaGVyW0luZGV4XS5TdGF0ZV0sDQo+ICsgbVNtQmlvc0Rpc3BhdGNoZXJbSW5kZXhdLkRl cGVuZGVuY3lbMF0sDQo+ICsgbVNtQmlvc0Rpc3BhdGNoZXJbSW5kZXhdLkRlcGVuZGVuY3lbMV0s DQo+ICsgbVNtQmlvc0Rpc3BhdGNoZXJbSW5kZXhdLkRlcGVuZGVuY3lbMl0sDQo+ICsgbVNtQmlv c0Rpc3BhdGNoZXJbSW5kZXhdLkRlcGVuZGVuY3lbM10sDQo+ICsgbVNtQmlvc0Rpc3BhdGNoZXJb SW5kZXhdLkRlcGVuZGVuY3lbNF0NCj4gKyApKTsNCj4gKyB9IC8vIGZvcg0KPiArDQo+ICsgREVC VUcgKChERUJVR19WRVJCT1NFLCAiXG4iKSk7DQo+ICt9DQo+ICsNCj4gKyNkZWZpbmUgREVCVUdf UFJJTlRfRElTUEFUQ0hFUl9TVEFUVVMoVmVyYm9zZSkgUHJpbnREaXNwYXRjaGVyU3RhdHVzIChW ZXJib3NlKQ0KPiArI2Vsc2UNCj4gKyNkZWZpbmUgREVCVUdfUFJJTlRfRElTUEFUQ0hFUl9TVEFU VVMoeCkNCj4gKyNlbmRpZg0KPiArDQo+ICsvKioNCj4gKyBJbml0aWFsaXNlIHRoZSBTTUJJT1Mg dGFibGUgZGlzcGF0Y2hlci4NCj4gKw0KPiArIEBwYXJhbSBTbWJpb3NUYWJsZUluZm8gUG9pbnRl ciB0byB0aGUgbGlzdCBvZiBTTUJJT1MgdGFibGVzIHRvIGJlIGluc3RhbGxlZC4NCj4gKyBAcGFy YW0gU21iaW9zVGFibGVDb3VudCBDb3VudCBvZiBTTUJJT1MgdGFibGVzIHRvIGJlIGluc3RhbGxl ZC4NCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtJbml0U21iaW9zVGFibGVEaXNwYXRj aGVyICgNCj4gKyBJTiBDTV9TVERfT0JKX1NNQklPU19UQUJMRV9JTkZPICpTbWJpb3NUYWJsZUlu Zm8sDQo+ICsgSU4gVUlOVDMyIFNtYmlvc1RhYmxlQ291bnQNCj4gKyApDQo+ICt7DQo+ICsgVUlO VE4gSW5kZXg7DQo+ICsgU01CSU9TX1RBQkxFX1RZUEUgVGFibGVUeXBlOw0KPiArDQo+ICsgLy8g U2VhcmNoIGZvciB0aGUgbGlzdCBvZiBTTUJJT1MgdGFibGVzIHByZXNlbnRlZA0KPiArIC8vIGZv ciBpbnN0YWxsYXRpb24gYW5kIHVwZGF0ZSB0aGUgZGlzcGF0Y2hlciBzdGF0dXMuDQo+ICsgZm9y IChJbmRleCA9IDA7IEluZGV4IDwgU21iaW9zVGFibGVDb3VudDsgSW5kZXgrKykgew0KPiArIFRh YmxlVHlwZSA9IFNtYmlvc1RhYmxlSW5mb1tJbmRleF0uVGFibGVUeXBlOw0KPiArIEFTU0VSVCAo bVNtQmlvc0Rpc3BhdGNoZXJbVGFibGVUeXBlXS5TdGF0ZSAhPSBTdFByZXNlbnQpOw0KDQoNCltH TV0NClRoaXMgQVNTRVJUIHdpbGwgYmUgaGl0IGV2ZW4gaWYgd2UgaGF2ZSBtdWx0aXBsZSBTTUJJ T1MgQ00gb2JqZWN0cyBvZiANCnRoZSBzYW1lIHR5cGUgd2hpY2ggaXMgbGVnYWwgKGZvciBlLmcg dGhlcmUgYXJlIG11bHRpcGxlIHRhYmxlcyBmb3IgDQp0eXBlMTcvMTkgKQ0KDQpbU0FNSV0gVGhl IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBTbWJpb3NUYWJsZUluZm9bXSB3aWxsIG9ubHkgY29udGFp biBvbmUgZW50cnkgZm9yIGEgZ2l2ZW4gVGFibGVUeXBlIGFzIGl0IGlzIHVzZWQgdG8gaW5kaWNh dGUgd2hpY2ggZ2VuZXJhdG9ycyBhcmUgdG8gYmUgaW5zdGFudGlhdGVkLiANCg0KRm9sbG93aW5n IGlzIHRoZSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zOg0KLSBUaGUgZGlzcGF0Y2hlciBpcyBpbml0 aWFsaXNlZCBpbiBJbml0U21iaW9zVGFibGVEaXNwYXRjaGVyKCksIHdoaWNoIHdpbGwgc2V0IHRo ZSBtU21CaW9zRGlzcGF0Y2hlcls8VGFibGVfVHlwZT5dLlN0YXRlIHRvIFN0UHJlc2VudCBpZiBT bWJpb3NUYWJsZUluZm9bXSBjb250YWlucyBhIHRhYmxlIG9mIFRhYmxlX1R5cGUuDQotIFNtYmlv c1RhYmxlSW5mb1tdIHdpbGwgb25seSBjb250YWluIG9uZSBlbnRyeSBmb3IgZWFjaCB0YWJsZSB0 eXBlLCBlLmcuIGV2ZW4gaWYgdGhlcmUgYXJlIG11bHRpcGxlIFR5cGUxNy9UeXBlMTkgdGFibGVz IHRvIGJlIGluc3RhbGxlZC4gVGhpcyBlbnRyeSBpbmRpY2F0ZXMgdGhhdCB0YWJsZShzKSBvZiBU eXBlMTcvVHlwZTE5IGlzL2FyZSByZXF1ZXN0ZWQgdG8gYmUgaW5zdGFsbGVkIGFuZCB0aGF0IHRo ZSBjb3JyZXNwb25kaW5nIGdlbmVyYXRvciBtdXN0IGJlIGluc3RhbnRpYXRlZC4NCi0gT25jZSB0 aGUgU01CSU9TIHRhYmxlIGdlbmVyYXRvciBpcyBpbnN0YW50aWF0ZWQsIGl0IHdpbGwgdGhlbiBy ZXF1ZXN0IGZvciB0aGUgb2JqZWN0KHMpIG9mIHRoZSByZXF1aXJlZCB0eXBlIGZyb20gdGhlIENv bmZpZ3VyYXRpb24gTWFuYWdlciB0aGF0IGFyZSByZXF1aXJlZCB0byBjb25zdHJ1Y3QgdGhlIHRh YmxlLg0KLSBUaGUgZ2VuZXJhdG9yIGNhbiB0aGVuIGRlY2lkZSBpZiBtdWx0aXBsZSBTTUJJT1Mg dGFibGVzIGFyZSB0byBiZSBjb25zdHJ1Y3RlZCBiYXNlZCBvbiB0aGUgb2JqZWN0cyByZXR1cm5l ZCBieSB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyLiBlLmcuIGlmIG11bHRpcGxlIENtX1R5cGUx N19vYmplY3RzIGFyZSByZXR1cm5lZCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIG51bWJlciBvZiBU eXBlMTcgdGFibGVzIHdpbGwgYmUgYnVpbHQgYnkgdGhlIGdlbmVyYXRvci4NCg0KVGhlcmVmb3Jl LCBJIHRoaW5rIHdlIHNob3VsZCBub3QgaGl0IHRoZSBhYm92ZSBhc3NlcnQuIA0KDQpIb3dldmVy LCB0aGUgY29kZSB0aGF0IG1heSBuZWVkIHRvIGNoYW5nZS9leHRlbmQgaXMgdGhlIGNhbGwgdG8g QnVpbGRBbmRJbnN0YWxsU21iaW9zVGFibGUoKS4gSSBhbSBub3Qgc3VyZSBpZiB3ZSBuZWVkIHRv IGluZGljYXRlIHRoYXQgdGhlcmUgY291bGQgYmUgbXVsdGlwbGUgU01CSU9TIHRhYmxlcyB0aGF0 IG1heSBiZSBpbnN0YWxsZWQuIEZvciBub3csIEJ1aWxkQW5kSW5zdGFsbFNtYmlvc1RhYmxlKCkg aW1wbGllcyB0aGF0IGEgZ2VuZXJhdG9yIG9mIHRoZSBzcGVjaWZpZWQgdHlwZSBpcyB0byBiZSBp bnN0YW50aWF0ZWQgZm9yIGJ1aWxkaW5nIHRoZSBTTUJJT1MgdGFibGUgb2YgdGhlIHNwZWNpZmll ZCB0eXBlLg0KDQpIb3BlIHRoaXMgY2xhcmlmaWVzIHRoZSBzY2VuYXJpbyBhbmQgcGxlYXNlIGRv IGxldCBtZSBrbm93IGlmIEkgYW0gbWlzc2luZyBzb21ldGhpbmcuDQoNCkFsc28sIEkgaGF2ZSBv bmx5IHRlc3RlZCB0aGlzIHBhdGNoIHdpdGggc2ltdWxhdGVkIGRhdGEgYW5kIHRoZXJlIG1heSBi ZSBzb21lIGlzc3VlcyB0aGF0IHdlIG1heSBmaW5kIHdoZW4gdGhlIGZ1bGwgc3RhY2sgaXMgaW50 ZWdyYXRlZC4NClNvLCB0aGFuayB5b3UgZm9yIGdvaW5nIHRocm91Z2ggdGhlIHBhdGNoIGluIGRl dGFpbC4NCg0KW1NBTUldDQoNCkJlc3QgUmVnYXJkcw0KR2lyaXNoDQoNCg0KPiArIG1TbUJpb3NE aXNwYXRjaGVyW1RhYmxlVHlwZV0uU3RhdGUgPSBTdFByZXNlbnQ7DQo+ICsgfQ0KPiArDQo+ICsg REVCVUdfUFJJTlRfRElTUEFUQ0hFUl9TVEFUVVMgKEZBTFNFKTsNCj4gK30NCj4gKw0KPiArLyoq IFNjaGVkdWxlIHRoZSBkaXNwYXRjaCBvZiBhIFNNQklPUyB0YWJsZS4NCj4gKw0KPiArIFRoZSBT TUJJT1MgZGlzcGF0Y2hlciBzdGF0ZSB0YWJsZSBpcyB1c2VkIHRvIGVzdGFibGlzaCB0aGUgZGVw ZW5kZW5jeQ0KPiArIG9yZGVyIGluIHdoaWNoIHRoZSBTTUJJT1MgdGFibGVzIGFyZSBpbnN0YWxs ZWQuIFRoaXMgYWxsb3dzIHRoZSBTTUJJT1MNCj4gKyBkaXNwYXRjaGVyIHRvIGRpc3BhdGNoIHRo ZSBkZXBlbmRlbnQgdGFibGVzIGZvciBpbnN0YWxsYXRpb24gYmVmb3JlIHRoZQ0KPiArIHBhcmVu dCB0YWJsZSBpcyBpbnN0YWxsZWQuDQo+ICsgVGhlIFNNQklPU19UQUJMRV9ESVNQQVRDSEVSLkRl cGVuZGVuY3lbXSBmaWVsZCBpcyB1c2VkIHRvIGVzdGFibGlzaCB0aGUNCj4gKyBkZXBlbmRlbmN5 IGxpc3QuDQo+ICsgRWxlbWVudHMgaW4gdGhlIERlcGVuZGVuY3kgbGlzdCBhcmUgcmVzb2x2ZWQg YnkgaW5jcmVhc2luZyBpbmRleC4gSG93ZXZlciwNCj4gKyBhbGwgb3JkZXJzIGFyZSBlcXVpdmFs ZW50IGFzOg0KPiArIC0gdGhlIFBhcmVudCBTTUJJT1MgdGFibGUgd2lsbCBvbmx5IGJlIGluc3Rh bGxlZCBvbmNlIGFsbCBkZXBlbmRlbmNpZXMNCj4gKyBoYXZlIGJlZW4gc2F0aXNmaWVkLg0KPiAr IC0gbm8gY3ljbGljIGRlcGVuZGVuY3kgaXMgYWxsb3dlZC4NCj4gKyBUaGUgZGVwZW5kZW5jeSBs aXN0IGlzIHRlcm1pbmF0ZWQgYnkgU01UVF9OVUxMLg0KPiArDQo+ICsgQHBhcmFtIFtpbl0gVGFi bGVUeXBlIFRoZSBTTUJJT1MgdGFibGUgdHlwZSB0byBzY2hlZHVsZSBmb3INCj4gKyBkaXNwYXRj aC4NCj4gKyBAcGFyYW0gW2luXSBUYWJsZUZhY3RvcnlQcm90b2NvbCBQb2ludGVyIHRvIHRoZSBU YWJsZSBGYWN0b3J5IFByb3RvY29sDQo+ICsgaW50ZXJmYWNlLg0KPiArIEBwYXJhbSBbaW5dIENm Z01nclByb3RvY29sIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlcg0KPiArIFBy b3RvY29sIEludGVyZmFjZS4NCj4gKyBAcGFyYW0gW2luXSBTbWJpb3NQcm90b2NvbCBQb2ludGVy IHRvIHRoZSBTTUJJT1MgcHJvdG9jb2wuDQo+ICsgQHBhcmFtIFtpbl0gU21iaW9zVGFibGVJbmZv IFBvaW50ZXIgdG8gdGhlIFNNQklPUyB0YWJsZSBJbmZvLg0KPiArIEBwYXJhbSBbaW5dIFNtYmlv c1RhYmxlQ291bnQgQ291bnQgb2YgU01CSU9TIHRhYmxlIGluZm8gb2JqZWN0cy4NCj4gKw0KPiAr IEByZXR2YWwgRUZJX1NVQ0NFU1MgU3VjY2Vzcy4NCj4gKyBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArIEByZXR2YWwgRUZJX05PVF9GT1VO RCBSZXF1aXJlZCBvYmplY3QgaXMgbm90IGZvdW5kLg0KPiArIEByZXR2YWwgRUZJX0JBRF9CVUZG RVJfU0laRSBTaXplIHJldHVybmVkIGJ5IHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXINCj4gKyBp cyBsZXNzIHRoYW4gdGhlIE9iamVjdCBzaXplIGZvciB0aGUNCj4gKyByZXF1ZXN0ZWQgb2JqZWN0 Lg0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0Rpc3BhdGNoU21iaW9zVGFi bGUgKA0KPiArIElOIENPTlNUIFNNQklPU19UQUJMRV9UWVBFIFRhYmxlVHlwZSwNCj4gKyBJTiBD T05TVCBFREtJSV9EWU5BTUlDX1RBQkxFX0ZBQ1RPUllfUFJPVE9DT0wgKkNPTlNUIFRhYmxlRmFj dG9yeVByb3RvY29sLA0KPiArIElOIENPTlNUIEVES0lJX0NPTkZJR1VSQVRJT05fTUFOQUdFUl9Q Uk9UT0NPTCAqQ09OU1QgQ2ZnTWdyUHJvdG9jb2wsDQo+ICsgSU4gRUZJX1NNQklPU19QUk9UT0NP TCAqU21iaW9zUHJvdG9jb2wsDQo+ICsgSU4gQ01fU1REX09CSl9TTUJJT1NfVEFCTEVfSU5GTyAq Q09OU1QgU21iaW9zVGFibGVJbmZvLA0KPiArIElOIENPTlNUIFVJTlQzMiBTbWJpb3NUYWJsZUNv dW50DQo+ICsgKQ0KPiArew0KPiArIEVGSV9TVEFUVVMgU3RhdHVzOw0KPiArIFVJTlROIEluZGV4 Ow0KPiArIFNNQklPU19UQUJMRV9ESVNQQVRDSEVSICpEaXNwOw0KPiArDQo+ICsgREVCVUcgKChE RUJVR19WRVJCT1NFLCAiLT5EUCAlMDJkXG4iLCBUYWJsZVR5cGUpKTsNCj4gKyBEaXNwID0gJm1T bUJpb3NEaXNwYXRjaGVyW1RhYmxlVHlwZV07DQo+ICsgaWYgKERpc3AtPlN0YXRlID09IFN0Tm90 UHJlc2VudCkgew0KPiArIERFQlVHICgoREVCVUdfVkVSQk9TRSwgIjwtRFAgJTAyZCA6IEVGSV9O T1RfRk9VTkRcbiIsIFRhYmxlVHlwZSkpOw0KPiArIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiAr IH0NCj4gKw0KPiArIGlmIChEaXNwLT5TdGF0ZSA9PSBTdERpc3BhdGNoZWQpIHsNCj4gKyBERUJV RyAoKERFQlVHX1ZFUkJPU0UsICI8LURQICUwMmQgOiBFRklfQUxSRUFEWV9TVEFSVEVEXG4iLCBU YWJsZVR5cGUpKTsNCj4gKyByZXR1cm4gRUZJX0FMUkVBRFlfU1RBUlRFRDsNCj4gKyB9DQo+ICsN Cj4gKyAvLyBUYWJsZSBpcyBwcmVzZW50IHNvIGNoZWNrIHRoZSBkZXBlbmRlbmN5Lg0KPiArIGZv ciAoSW5kZXggPSAwOyBJbmRleCA8IE1BWF9TTUJJT1NfREVQRU5ERU5DWTsgSW5kZXgrKykgew0K PiArIC8vIENoZWNrIGlmIHRoZSBkZXBlbmRlbmN5IGxpc3QgaXMgdGVybWluYXRlZCBieSBTTVRU X05VTEwuDQo+ICsgaWYgKERpc3AtPkRlcGVuZGVuY3lbSW5kZXhdID09IFNNVFRfTlVMTCkgew0K PiArIGJyZWFrOw0KPiArIH0NCj4gKw0KPiArIFN0YXR1cyA9IERpc3BhdGNoU21iaW9zVGFibGUg KA0KPiArIERpc3AtPkRlcGVuZGVuY3lbSW5kZXhdLA0KPiArIFRhYmxlRmFjdG9yeVByb3RvY29s LA0KPiArIENmZ01nclByb3RvY29sLA0KPiArIFNtYmlvc1Byb3RvY29sLA0KPiArIFNtYmlvc1Rh YmxlSW5mbywNCj4gKyBTbWJpb3NUYWJsZUNvdW50DQo+ICsgKTsNCj4gKyBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ICsgaWYgKChTdGF0dXMgPT0gRUZJX0FMUkVBRFlfU1RBUlRFRCkgfHwg KFN0YXR1cyA9PSBFRklfTk9UX0ZPVU5EKSkgew0KPiArIC8vIFNvbWUgZGVwZW5kZW5jaWVzIG1h eSBhbHJlYWR5IGJlIHNhdGlzZmllZA0KPiArIC8vIGFzIG90aGVyIHRhYmxlcyBtYXkgYWxzbyBo YXZlIHNpbWlsYXINCj4gKyAvLyBkZXBlbmRlbmNpZXMgaS5lLiBFRklfQUxSRUFEWV9TVEFSVEVE DQo+ICsgLy8gT3INCj4gKyAvLyB0aGUgZGVwZW5kZW50IHRhYmxlIG1heSBiZSBvcHRpb25hbA0K PiArIC8vIGFuZCBub3QgcHJvdmlkZWQgaS5lLiBFRklfTk9UX0ZPVU5ELg0KPiArIGNvbnRpbnVl Ow0KPiArIH0NCj4gKw0KPiArIERFQlVHICgoREVCVUdfVkVSQk9TRSwgIjwtRFAgJTAyZCA6IFN0 YXR1cyA9ICVkXG4iLCBUYWJsZVR5cGUsIFN0YXR1cykpOw0KPiArIHJldHVybiBTdGF0dXM7DQo+ ICsgfQ0KPiArIH0NCj4gKw0KPiArIERFQlVHICgoREVCVUdfVkVSQk9TRSwgIkRQICUwMmQgOiBT dGF0dXMgPSAlZFxuIiwgVGFibGVUeXBlLCBTdGF0dXMpKTsNCj4gKw0KPiArIC8vIEFsbCBkZXBl bmRlbmNpZXMgc2F0aXNmaWVkIC0gSW5zdGFsbCBTTUJJT1MgdGFibGUNCj4gKyBEaXNwLT5TdGF0 ZSA9IFN0RGlzcGF0Y2hlZDsNCj4gKyAvLyBGaW5kIHRoZSBTTUJJT1MgdGFibGUgaW5mbyBtYXRj aGluZyB0aGUgVGFibGVUeXBlDQo+ICsgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgU21iaW9zVGFi bGVDb3VudDsgSW5kZXgrKykgew0KPiArIGlmIChTbWJpb3NUYWJsZUluZm9bSW5kZXhdLlRhYmxl VHlwZSA9PSBUYWJsZVR5cGUpIHsNCj4gKyBicmVhazsNCj4gKyB9DQo+ICsgfQ0KPiArDQo+ICsg U3RhdHVzID0gQnVpbGRBbmRJbnN0YWxsU21iaW9zVGFibGUgKA0KPiArIFRhYmxlRmFjdG9yeVBy b3RvY29sLA0KPiArIENmZ01nclByb3RvY29sLA0KPiArIFNtYmlvc1Byb3RvY29sLA0KPiArICZT bWJpb3NUYWJsZUluZm9bSW5kZXhdDQo+ICsgKTsNCj4gKyBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgREVCVUcgKCgNCj4gKyBERUJVR19FUlJPUiwNCj4gKyAiRVJST1I6IEZhaWxlZCB0 byBpbnN0YWxsIFNNQklPUyBUYWJsZS4iIFwNCj4gKyAiIElkID0gJXUgU3RhdHVzID0gJXJcbiIs DQo+ICsgU21iaW9zVGFibGVJbmZvW0luZGV4XS5UYWJsZUdlbmVyYXRvcklkLA0KPiArIFN0YXR1 cw0KPiArICkpOw0KPiArIH0NCj4gKw0KPiArIERFQlVHX1BSSU5UX0RJU1BBVENIRVJfU1RBVFVT IChGQUxTRSk7DQo+ICsgREVCVUcgKChERUJVR19WRVJCT1NFLCAiPC1EUCAlMGRcbiIsIFRhYmxl VHlwZSkpOw0KPiArIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9EeW5hbWlj VGFibGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS9TbWJpb3NUYWJsZURpc3Bh dGNoZXIuaCBiL0R5bmFtaWNUYWJsZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVNYW5hZ2VyRHhl L1NtYmlvc1RhYmxlRGlzcGF0Y2hlci5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1OWVhYjQyMjNjMTQy MjkzYmRhZjQ5MDU1ODhmMDhlN2E0YTQ2N2YNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9EeW5h bWljVGFibGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS9TbWJpb3NUYWJsZURp c3BhdGNoZXIuaA0KPiBAQCAtMCwwICsxLDE1OSBAQA0KPiArLyoqIEBmaWxlDQo+ICsNCj4gKyBD b3B5cmlnaHQgKGMpIDIwMjIgLSAyMDIzLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKw0KPiArIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIFNNQklPU19UQUJMRV9ESVNQQVRDSEVSX0hf DQo+ICsjZGVmaW5lIFNNQklPU19UQUJMRV9ESVNQQVRDSEVSX0hfDQo+ICsNCj4gKyNpbmNsdWRl IDxQcm90b2NvbC9Db25maWd1cmF0aW9uTWFuYWdlclByb3RvY29sLmg+DQo+ICsjaW5jbHVkZSA8 UHJvdG9jb2wvRHluYW1pY1RhYmxlRmFjdG9yeVByb3RvY29sLmg+DQo+ICsNCj4gKy8qKg0KPiAr IEEgU01CSU9TIFRhYmxlIFR5cGUgZnJvbSB0aGUgT0VNIHJhbmdlIHJlc2VydmVkIGZvciB0ZXJt aW5hdGluZw0KPiArIHRoZSBTTUJJT1MgdGFibGUgZGlzcGF0Y2ggZGVwZW5kZW5jeS4NCj4gKw0K PiArIE5vdGU6IEFjY29yZGluZyB0byB0aGUgU01CSU9TIHNwZWNpZmljYXRpb24sIFRhYmxlIFR5 cGVzIDANCj4gKyB0aHJvdWdoIDEyNyAoN0ZoKSBhcmUgcmVzZXJ2ZWQgZm9yIGFuZCBkZWZpbmVk IGJ5IHRoZQ0KPiArIFNNQklPUyBzcGVjaWZpY2F0aW9uLg0KPiArIFR5cGVzIDEyOCB0aHJvdWdo IDI1NiAoODBoIHRvIEZGaCkgYXJlIGF2YWlsYWJsZSBmb3Igc3lzdGVtIGFuZA0KPiArIE9FTS1z cGVjaWZpYyBpbmZvcm1hdGlvbi4NCj4gKw0KPiArIFRoaXMgRHluYW1pYyBTTUJJT1MgdGFibGUg Z2VuZXJhdGlvbiBpbXBsZW1lbnRhdGlvbiBkZWZpbmVzDQo+ICsgVGFibGVUeXBlIEZGaCBhcyBh IE5VTEwgdGFibGUgd2hpY2ggaXMgdXNlZCBieSB0aGUgRHluYW1pYw0KPiArIFNNQklPUyB0YWJs ZSBkaXNwYXRjaGVyIHRvIHRlcm1pbmF0ZSB0aGUgZGVwZW5kZW5jeSBsaXN0Lg0KPiArKi8NCj4g KyNkZWZpbmUgU01UVF9OVUxMIDB4RkYNCj4gKw0KPiArLyoqDQo+ICsgQSBtYWNybyBkZWZpbmlu ZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGVwZW5kZW5kYW50IFNNQklPUyB0YWJsZXMNCj4gKyBy ZXByZXNlbnRlZCBieSB0aGUgU01CSU9TIHRhYmxlIGRpc3BhdGNoZXIuDQo+ICsqLw0KPiArI2Rl ZmluZSBNQVhfU01CSU9TX0RFUEVOREVOQ1kgNQ0KPiArDQo+ICsvKioNCj4gKyBBIG1hY3JvIGRl ZmluaW5nIHRoZSBtYXhpbXVtIHRhYmxlIHR5cGVzIGhhbmRsZWQgYnkgdGhlIFNNQklPUw0KPiAr IHRhYmxlIGRpc3BhdGNoZXIuDQo+ICsqLw0KPiArI2RlZmluZSBNQVhfU01CSU9TX1RBQkxFUyAo U01CSU9TX1RZUEVfU1RSSU5HX1BST1BFUlRZX0lORk9STUFUSU9OICsgMSkNCj4gKw0KPiArLyoq DQo+ICsgQSBoZWxwZXIgbWFjcm8gdG8gcG9wdWxhdGUgdGhlIFNNQklPUyB0YWJsZSBkaXNwYXRj aGVyIHRhYmxlDQo+ICsqLw0KPiArI2RlZmluZSBTTUJJT1NfVEFCTEVfREVQKFRhYmxlSWQsIERl cDEsIERlcDIsIERlcDMsIERlcDQsIERlcDUpIFwNCj4gKyB7IFwNCj4gKyBUYWJsZUlkLCBcDQo+ ICsgU3ROb3RQcmVzZW50LCBcDQo+ICsgeyBEZXAxLCBEZXAyLCBEZXAzLCBEZXA0LCBEZXA1IH0g XA0KPiArIH0NCj4gKw0KPiArLyoqDQo+ICsgQW4gZW51bSBkZXNjcmliaW5nIHRoZSBzdGF0ZXMg b2YgdGhlIFNNQklPUyB0YWJsZSBkaXNwYXRjaGVyLg0KPiArKi8NCj4gK3R5cGVkZWYgZW51bSBT bWJpb3NUYWJsZVN0YXRlIHsNCj4gKyBTdE5vdFByZXNlbnQsIC8vLzwgU01CSU9TIHRhYmxlIGlz IG5vdCBwcmVzZW50IGZvciBpbnN0YWxsYXRpb24uDQo+ICsgU3RQcmVzZW50LCAvLy88IFNNQklP UyB0YWJsZSBpcyBwcmVzZW50IGZvciBpbnN0YWxsYXRpb24uDQo+ICsgU3REaXNwYXRjaGVkIC8v LzwgU01CSU9TIHRhYmxlIGdlbmVyYXRvcnMgaGF2ZSBiZWVuIGRpc3BhdGNoZWQuDQo+ICt9IFNN QklPU19UQUJMRV9TVEFURTsNCj4gKw0KPiArLyoqDQo+ICsgQSBzdHJ1Y3R1cmUgZGVzY3JpYmlu ZyB0aGUgZGVwZW5kZW5jaWVzIGZvciBhIFNNQklPUyB0YWJsZSBhbmQNCj4gKyB0aGUgZGlzcGF0 Y2hlciBzdGF0ZSBpbmZvcm1hdGlvbi4NCj4gKyovDQo+ICt0eXBlZGVmIHN0cnVjdCBTbUJpb3NU YWJsZURpc3BhdGNoZXIgew0KPiArIC8vLyBTTUJJT1MgU3RydWN0dXJlL1RhYmxlIFR5cGUNCj4g KyBTTUJJT1NfVEFCTEVfVFlQRSBUYWJsZVR5cGU7DQo+ICsgLy8vIFNNQklPUyBkaXNwYXRjaGVy IHN0YXRlDQo+ICsgU01CSU9TX1RBQkxFX1NUQVRFIFN0YXRlOw0KPiArIC8vLyBTTUJJT1MgU3Ry dWN0dXJlL1RhYmxlIGRlcGVuZGVuY3kgbGlzdA0KPiArIC8vLyBUaGUgbGlzdCBpcyB0ZXJtaW5h dGVkIHVzaW5nIFNNVFRfTlVMTC4NCj4gKyBTTUJJT1NfVEFCTEVfVFlQRSBEZXBlbmRlbmN5W01B WF9TTUJJT1NfREVQRU5ERU5DWV07DQo+ICt9IFNNQklPU19UQUJMRV9ESVNQQVRDSEVSOw0KPiAr DQo+ICsvKioNCj4gKyBBIGhlbHBlciBmdW5jdGlvbiB0byBidWlsZCBhbmQgaW5zdGFsbCBhIFNN QklPUyB0YWJsZS4NCj4gKw0KPiArIEBwYXJhbSBbaW5dIFRhYmxlRmFjdG9yeVByb3RvY29sIFBv aW50ZXIgdG8gdGhlIFRhYmxlIEZhY3RvcnkgUHJvdG9jb2wNCj4gKyBpbnRlcmZhY2UuDQo+ICsg QHBhcmFtIFtpbl0gQ2ZnTWdyUHJvdG9jb2wgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBN YW5hZ2VyDQo+ICsgUHJvdG9jb2wgSW50ZXJmYWNlLg0KPiArIEBwYXJhbSBbaW5dIFNtYmlvc1By b3RvY29sIFBvaW50ZXIgdG8gdGhlIFNNQklPUyBwcm90b2NvbC4NCj4gKyBAcGFyYW0gW2luXSBT bWJpb3NUYWJsZUluZm8gUG9pbnRlciB0byB0aGUgU01CSU9TIHRhYmxlIEluZm8uDQo+ICsNCj4g KyBAcmV0dmFsIEVGSV9TVUNDRVNTIFN1Y2Nlc3MuDQo+ICsgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gKyBAcmV0dmFsIEVGSV9OT1RfRk9V TkQgUmVxdWlyZWQgb2JqZWN0IGlzIG5vdCBmb3VuZC4NCj4gKyBAcmV0dmFsIEVGSV9CQURfQlVG RkVSX1NJWkUgU2l6ZSByZXR1cm5lZCBieSB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyDQo+ICsg aXMgbGVzcyB0aGFuIHRoZSBPYmplY3Qgc2l6ZSBmb3IgdGhlDQo+ICsgcmVxdWVzdGVkIG9iamVj dC4NCj4gKyoqLw0KPiArZXh0ZXJuDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0J1aWxk QW5kSW5zdGFsbFNtYmlvc1RhYmxlICgNCj4gKyBJTiBDT05TVCBFREtJSV9EWU5BTUlDX1RBQkxF X0ZBQ1RPUllfUFJPVE9DT0wgKkNPTlNUIFRhYmxlRmFjdG9yeVByb3RvY29sLA0KPiArIElOIENP TlNUIEVES0lJX0NPTkZJR1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCAqQ09OU1QgQ2ZnTWdyUHJv dG9jb2wsDQo+ICsgSU4gRUZJX1NNQklPU19QUk9UT0NPTCAqU21iaW9zUHJvdG9jb2wsDQo+ICsg SU4gQ01fU1REX09CSl9TTUJJT1NfVEFCTEVfSU5GTyAqQ09OU1QgU21iaW9zVGFibGVJbmZvDQo+ ICsgKTsNCj4gKw0KPiArLyoqDQo+ICsgSW5pdGlhbGlzZSB0aGUgU01CSU9TIHRhYmxlIGRpc3Bh dGNoZXIuDQo+ICsNCj4gKyBAcGFyYW0gU21iaW9zVGFibGVJbmZvIFBvaW50ZXIgdG8gdGhlIGxp c3Qgb2YgU01CSU9TIHRhYmxlcyB0byBiZSBpbnN0YWxsZWQuDQo+ICsgQHBhcmFtIFNtYmlvc1Rh YmxlQ291bnQgQ291bnQgb2YgU01CSU9TIHRhYmxlcyB0byBiZSBpbnN0YWxsZWQuDQo+ICsqKi8N Cj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArSW5pdFNtYmlvc1RhYmxlRGlzcGF0Y2hlciAoDQo+ICsg SU4gQ01fU1REX09CSl9TTUJJT1NfVEFCTEVfSU5GTyAqU21iaW9zVGFibGVJbmZvLA0KPiArIElO IFVJTlQzMiBTbWJpb3NUYWJsZUNvdW50DQo+ICsgKTsNCj4gKw0KPiArLyoqIFNjaGVkdWxlIHRo ZSBkaXNwYXRjaCBvZiBhIFNNQklPUyB0YWJsZS4NCj4gKw0KPiArIFRoZSBTTUJJT1MgZGlzcGF0 Y2hlciBzdGF0ZSB0YWJsZSBpcyB1c2VkIHRvIGVzdGFibGlzaCB0aGUgZGVwZW5kZW5jeQ0KPiAr IG9yZGVyIGluIHdoaWNoIHRoZSBTTUJJT1MgdGFibGVzIGFyZSBpbnN0YWxsZWQuIFRoaXMgYWxs b3dzIHRoZSBTTUJJT1MNCj4gKyBkaXNwYXRjaGVyIHRvIGRpc3BhdGNoIHRoZSBkZXBlbmRlbnQg dGFibGVzIGZvciBpbnN0YWxsYXRpb24gYmVmb3JlIHRoZQ0KPiArIHBhcmVudCB0YWJsZSBpcyBp bnN0YWxsZWQuDQo+ICsgVGhlIFNNQklPU19UQUJMRV9ESVNQQVRDSEVSLkRlcGVuZGVuY3lbXSBm aWVsZCBpcyB1c2VkIHRvIGVzdGFibGlzaCB0aGUNCj4gKyBkZXBlbmRlbmN5IGxpc3QuDQo+ICsg RWxlbWVudHMgaW4gdGhlIERlcGVuZGVuY3kgbGlzdCBhcmUgcmVzb2x2ZWQgYnkgaW5jcmVhc2lu ZyBpbmRleC4gSG93ZXZlciwNCj4gKyBhbGwgb3JkZXJzIGFyZSBlcXVpdmFsZW50IGFzOg0KPiAr IC0gdGhlIFBhcmVudCBTTUJJT1MgdGFibGUgd2lsbCBvbmx5IGJlIGluc3RhbGxlZCBvbmNlIGFs bCBkZXBlbmRlbmNpZXMNCj4gKyBoYXZlIGJlZW4gc2F0aXNmaWVkLg0KPiArIC0gbm8gY3ljbGlj IGRlcGVuZGVuY3kgaXMgYWxsb3dlZC4NCj4gKyBUaGUgZGVwZW5kZW5jeSBsaXN0IGlzIHRlcm1p bmF0ZWQgYnkgU01UVF9OVUxMLg0KPiArDQo+ICsgQHBhcmFtIFtpbl0gVGFibGVUeXBlIFRoZSBT TUJJT1MgdGFibGUgdHlwZSB0byBzY2hlZHVsZSBmb3INCj4gKyBkaXNwYXRjaC4NCj4gKyBAcGFy YW0gW2luXSBUYWJsZUZhY3RvcnlQcm90b2NvbCBQb2ludGVyIHRvIHRoZSBUYWJsZSBGYWN0b3J5 IFByb3RvY29sDQo+ICsgaW50ZXJmYWNlLg0KPiArIEBwYXJhbSBbaW5dIENmZ01nclByb3RvY29s IFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlcg0KPiArIFByb3RvY29sIEludGVy ZmFjZS4NCj4gKyBAcGFyYW0gW2luXSBTbWJpb3NQcm90b2NvbCBQb2ludGVyIHRvIHRoZSBTTUJJ T1MgcHJvdG9jb2wuDQo+ICsgQHBhcmFtIFtpbl0gU21iaW9zVGFibGVJbmZvIFBvaW50ZXIgdG8g dGhlIFNNQklPUyB0YWJsZSBJbmZvLg0KPiArIEBwYXJhbSBbaW5dIFNtYmlvc1RhYmxlQ291bnQg Q291bnQgb2YgU01CSU9TIHRhYmxlIGluZm8gb2JqZWN0cy4NCj4gKw0KPiArIEByZXR2YWwgRUZJ X1NVQ0NFU1MgU3VjY2Vzcy4NCj4gKyBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBh cmFtZXRlciBpcyBpbnZhbGlkLg0KPiArIEByZXR2YWwgRUZJX05PVF9GT1VORCBSZXF1aXJlZCBv YmplY3QgaXMgbm90IGZvdW5kLg0KPiArIEByZXR2YWwgRUZJX0JBRF9CVUZGRVJfU0laRSBTaXpl IHJldHVybmVkIGJ5IHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXINCj4gKyBpcyBsZXNzIHRoYW4g dGhlIE9iamVjdCBzaXplIGZvciB0aGUNCj4gKyByZXF1ZXN0ZWQgb2JqZWN0Lg0KPiArKiovDQo+ ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0Rpc3BhdGNoU21iaW9zVGFibGUgKA0KPiArIElO IENPTlNUIFNNQklPU19UQUJMRV9UWVBFIFRhYmxlVHlwZSwNCj4gKyBJTiBDT05TVCBFREtJSV9E WU5BTUlDX1RBQkxFX0ZBQ1RPUllfUFJPVE9DT0wgKkNPTlNUIFRhYmxlRmFjdG9yeVByb3RvY29s LA0KPiArIElOIENPTlNUIEVES0lJX0NPTkZJR1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCAqQ09O U1QgQ2ZnTWdyUHJvdG9jb2wsDQo+ICsgSU4gRUZJX1NNQklPU19QUk9UT0NPTCAqU21iaW9zUHJv dG9jb2wsDQo+ICsgSU4gQ01fU1REX09CSl9TTUJJT1NfVEFCTEVfSU5GTyAqQ09OU1QgU21iaW9z VGFibGVJbmZvLA0KPiArIElOIENPTlNUIFVJTlQzMiBTbWJpb3NUYWJsZUNvdW50DQo+ICsgKTsN Cj4gKw0KPiArI2VuZGlmIC8vIFNNQklPU19UQUJMRV9ESVNQQVRDSEVSX0hfDQo+IC0tDQo+ICdH dWlkKENFMTY1NjY5LTNFRjMtNDkzRi1CODVELTYxOTBFRTVCOTc1OSknDQo+IA0KDQoNCg0K