From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (EUR04-HE1-obe.outbound.protection.outlook.com [40.107.7.79]) by mx.groups.io with SMTP id smtpd.web10.2229.1689281388072553533 for ; Thu, 13 Jul 2023 13:49:49 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=bx7Ckk5u; spf=pass (domain: arm.com, ip: 40.107.7.79, mailfrom: achin.gupta@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=o67uwAJjsQRwzmS0MiFTictMG9F+boW3jdwYILMp7ew=; b=bx7Ckk5uobjewR4bBXzRd+u58Oe8vDTRwF/9VRlpFw/vWMV48ORd12Yvqwn1rw2imbPMzxZ4vLwhosAQoMlsRSvyYiOyED3y2zlAnR0wPCUuAi97wJ9CU6aTrUgFLtRxZhVQtu6/1AylWc32x7sWYlpUx79onl27lXENbcRq4RA= Received: from AM8P190CA0012.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:219::17) by AS8PR08MB6550.eurprd08.prod.outlook.com (2603:10a6:20b:31b::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.26; Thu, 13 Jul 2023 20:49:44 +0000 Received: from AM7EUR03FT055.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:219:cafe::4d) by AM8P190CA0012.outlook.office365.com (2603:10a6:20b:219::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.24 via Frontend Transport; Thu, 13 Jul 2023 20:49:44 +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 AM7EUR03FT055.mail.protection.outlook.com (100.127.141.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.26 via Frontend Transport; Thu, 13 Jul 2023 20:49:43 +0000 Received: ("Tessian outbound e1fdbe8a48d3:v145"); Thu, 13 Jul 2023 20:49:43 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 1ac2690b1ee1aeda X-CR-MTA-TID: 64aa7808 Received: from 77bb9c6de484.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 02F3807F-945E-44A9-9DB8-358966F06CF2.1; Thu, 13 Jul 2023 20:49:37 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 77bb9c6de484.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 13 Jul 2023 20:49:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E0ikN+0BnUkFiHKdpCn40L03g/48dOmuI25Jq9zeJXhx0Jb3hh5PJ1v3NATefI8W9uqgEddTt3Z8n6i/YU3FwoJCZ6B/o3UT/4j/cpZ+FzMsDKuXFr+fikba6yH8EfGnAEcXfxmnLpQMUqMQ5MozRWl/y8whl6RvwstZ4oKnw3ojYVRetlwYRi3VYhkHFHtQXHUiD+Ysu/rtuiz1ULXp4FfSlB48sEIlp43NP1lD2UzhYShRFfr6KHPl9VAkXcFuDlWK0BECs5DCtW/lXkbHqJUA/KH+O0MlmY+1TwDNtjNHe3v5cG2CVqbhWa5UHo60g7D00W0wNB1chXdJXodq0g== 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=o67uwAJjsQRwzmS0MiFTictMG9F+boW3jdwYILMp7ew=; b=Gq7AGBy3ZfBbvdGqw05nZjcGz6lmqN3yf5PPN/POuwLxrd7Wa+ozwJnkmHoCJHRf1o+YPZb46ZfycvLvwJ+FZvxvygtcYSNX2g+SNUMGQzQmazHs+SjhLEgVtedqYeIzjUpdfo6BrDypSMlmjoxXxVOORNbBq5U8jParMbDSUXCaOyMao3XvgyDuOGaESk8IB8v3D9u5ApnmW2ngHoYTm7fw0RDFA0y1eUDfFu5ihaEJw2VGV/WPKgwwsH6Z7w7oJ2YQG9u2/8rVqyCjJZn4vBUnZsbz1c2grIfgPoKHfgThoJ3EK5vVRL5wRWA7GoXoEmlaOtKQ0pjuHlV6rtHi1g== 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=o67uwAJjsQRwzmS0MiFTictMG9F+boW3jdwYILMp7ew=; b=bx7Ckk5uobjewR4bBXzRd+u58Oe8vDTRwF/9VRlpFw/vWMV48ORd12Yvqwn1rw2imbPMzxZ4vLwhosAQoMlsRSvyYiOyED3y2zlAnR0wPCUuAi97wJ9CU6aTrUgFLtRxZhVQtu6/1AylWc32x7sWYlpUx79onl27lXENbcRq4RA= Received: from PAWPR08MB9996.eurprd08.prod.outlook.com (2603:10a6:102:35a::11) by DU0PR08MB9903.eurprd08.prod.outlook.com (2603:10a6:10:470::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.24; Thu, 13 Jul 2023 20:49:35 +0000 Received: from PAWPR08MB9996.eurprd08.prod.outlook.com ([fe80::83a1:cca5:c75e:b8e5]) by PAWPR08MB9996.eurprd08.prod.outlook.com ([fe80::83a1:cca5:c75e:b8e5%6]) with mapi id 15.20.6565.036; Thu, 13 Jul 2023 20:49:33 +0000 From: "Achin Gupta" To: Nishant Sharma , "gmahadevan@nvidia.com" , "chris.fernald@outlook.com" , "devel@edk2.groups.io" CC: Sami Mujawar , Sayanta Pattanayak , Thomas Abraham , "ardb+tianocore@kernel.org" Subject: Re: [edk2-devel] [edk2-platforms][PATCH V1 09/20] StandaloneMmPkg: parse SP manifest and populate new boot information Thread-Topic: [edk2-devel] [edk2-platforms][PATCH V1 09/20] StandaloneMmPkg: parse SP manifest and populate new boot information Thread-Index: AQHZtAU5K8Sl0OjsLUu4A5DRWvNdAa+31C8AgAAXcwCAAENXgA== Date: Thu, 13 Jul 2023 20:49:33 +0000 Message-ID: References: <20230711143658.781597-1-nishant.sharma@arm.com> <20230711143658.781597-10-nishant.sharma@arm.com> <92ce5fad-2b6d-ede2-98e8-117d974000ef@nvidia.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu1 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB9996:EE_|DU0PR08MB9903:EE_|AM7EUR03FT055:EE_|AS8PR08MB6550:EE_ X-MS-Office365-Filtering-Correlation-Id: 36490a60-308c-455b-6baa-08db83e2afe7 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: EDZNCJSVxZ6ph0vLJMdRDsDTSn9Y2vBC6Y6PTj5VLq6djv75adQ7e+cRUSdMsNjNsMiYEbejmHLxsMhxmJQVVcRakKJwaijIoShKWZ+Oe4AA+tkEyrZLEL9enKMT03doabBQAxuEkXS/AP2xDShr7ncOc6uniR9TNz0ZIJvOjL0fxj6/9gUnd2+v/Xi352P2RdBbJSxqdl+By17eaGnA2IPNjCg1ctxHXPagegn5J2yAM+04OLqhaXx7J/WZayjFupEZWO4yAV/yplFf3y9pkbo0hSr2Jgh0RqeXaYlOwvrHjwKIClehuzHRwN/7nE1NJp3tsRYwtLj/0HsDIl3vcE/yUi1E4ttcCusBrSzYYu8CjPR7L6a8lh7I2w3rwqyv69ByyK4lOa2Figx9Mxe/Z41k9D8zns6c0kA8Rw5o5nvEueqHQO++ovOpIK0GNaRBhnxr/G+RvJCuUX4QqLJWJUq4eGUscD2bnbn4gVKHH+tSR5/2pnw6J2TrFT5bPpGFXqmAfJisyc4kzH7hTnh9KQKPFplvbZNRSr7ITldF25ZT+r78CYGYiVgV79+Hq6YgAYu76zHkqw0qOSF9vYv4gSKqKgZ/dW4QUsszXlPTbjY= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAWPR08MB9996.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(6029001)(4636009)(136003)(366004)(396003)(346002)(39860400002)(376002)(451199021)(110136005)(45080400002)(316002)(54906003)(91956017)(71200400001)(186003)(66946007)(4326008)(6486002)(76116006)(66446008)(66556008)(66476007)(64756008)(66899021)(478600001)(966005)(41300700001)(6512007)(8676002)(8936002)(53546011)(6506007)(86362001)(26005)(5660300002)(83380400001)(122000001)(38070700005)(2616005)(36756003)(2906002)(30864003)(38100700002);DIR:OUT;SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9903 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Return-Path: Achin.Gupta@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 59c121cb-f1b6-451f-dd38-08db83e2a9aa X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /lWCrG2lO3Fy4SYUatAVbIIuKAJHClYfBxCHVbEfHFDUkg94DZ5pP8PUrqNbUGXCBAEBnIfaBCJ9qoAUaJAJKWaf/nX+2emHC8c9KoQL7HH4aO1N+QQ2SzvZFVp6q28VHfeBGcNZqv3KUD2pkSttm9Jn1pInLa1HkBY42Pv9A+a1in218Eh2BSyLSW85hxgjvmPsDhhWjNAt/6Aya7Ql8ltRqSteN8os77zJ/M+FvDwBIta21+Sn5toY1WAM7lCPFD8lF/FPaHaV+NbWax5/z6EaqCxIGdlCd4tS4akwHQ3wiUVmPxCZRqd9K5zEotu5YMF0w+ZiyNhV+lMqQraACSxf7XPwgAAuIIBoZOIL/No4NGGX3EIKlHPa1pKptLQC6TVgoUKBpGrg/Q7SWFc9NA3M5IGSCFhpVghwGG3vunGIi5QKCAonZTvAaB+Jtkh6Xv4P/4MiogxtrSK9QCg8HyxS2UlNDR+xPWuowIwdAXIn0LeY4f8vRmKH1RbD1vgTJd0NnBwRRXWlweCqj1uXAPP7JUm77Gxlzl2QuDwltYDnAJMeyxuTZQNJ1ZRHvN+i3xEQbGX+tHp1W3fhsE1eTQxDVcRdeEUg8HR3zQQW/aV6/yk6ryaQQaC66tu/3apzWf/T0uJdBkiq3yXyTB9HNHHJVkXiDGT646ZcRH4+xNZts9bkUyZHESOgJGQUfq9Ajb2bqufwD8WaxAp/CMdXtKHaOVWVz5Xd8hMUxKZ06Lw= 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:(13230028)(6029001)(4636009)(376002)(39860400002)(346002)(136003)(396003)(451199021)(40470700004)(46966006)(36840700001)(478600001)(107886003)(82740400003)(45080400002)(356005)(6506007)(26005)(53546011)(66899021)(966005)(6512007)(40480700001)(6486002)(40460700003)(8676002)(8936002)(83380400001)(336012)(5660300002)(47076005)(2616005)(316002)(82310400005)(41300700001)(36860700001)(86362001)(2906002)(30864003)(186003)(81166007)(36756003)(70586007)(70206006)(4326008)(110136005)(54906003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2023 20:49:43.9302 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 36490a60-308c-455b-6baa-08db83e2afe7 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: AM7EUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6550 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 SGkgQ2hyaXMsDQoNClByaW9yIHRvIEZGLUEsIGFuIGltcGRlZiBzdHJ1Y3R1cmUgcG9wdWxhdGVk IGJ5IFRGLUEgd2FzIHBhc3NlZCB0byBhDQpTUE1fTU0gYmFzZWQgU3RNTSBTUC4gVGhlIGRhdGEg c3RydWN0dXJlcyB1c2VkIGZvciB0aGlzIGFyZQ0KRUZJX1NFQ1VSRV9QQVJUSVRJT05fQk9PVF9J TkZPIGFuZCBFRklfU0VDVVJFX1BBUlRJVElPTl9DUFVfSU5GTy4NCg0KV2l0aCBGRi1BLCB3ZSBo YXZlIHJlZHVjZWQgdGhlIGFtb3VudCBvZiBpbmZvcm1hdGlvbiB0aGF0IGlzIHBhc3NlZA0KZS5n LiB0aGUgcGVyLWNwdSBpbmZvcm1hdGlvbiBpcyBub3QgcGFzc2VkLiBUaGUgcmVtYWluaW5nIGlu Zm9ybWF0aW9uDQpoYXMgYmVlbiBnZW5lcmFsaXplZCBzbyB0aGF0IGl0IGlzIG5vdCBzcGVjaWZp YyB0byBTdE1NIFNQcy4NCg0KVGhpcyBpbmZvcm1hdGlvbiBpcyBvbmx5IHVzZWQgYXQgYm9vdCB0 aW1lLiBIZW5jZSwgcGFzc2luZyBpdCBvbmNlIHZpYQ0KdGhlIEZGLUEgYm9vdCBpbmZvcm1hdGlv biBwcm90b2NvbCBtYWRlIHNlbnNlLg0KDQpUaGUgRkYtQSBzcGVjIGRvZXMgbm90IHNwZWNpZnkg dGhlIGZvcm1hdCBpbiB3aGljaCBib290IGluZm9ybWF0aW9uIGlzDQpwYXNzZWQuIEFuIFNQIG1h bmlmZXN0IGlzIHNwZWNpZmllZCBpbiBhIERUIGJ5IGRlZmF1bHQuIFNvLCB0aGlzIHdhcw0KdGhl IG5hdHVyYWwgY2hvaWNlLiBUaGUgc2FtZSBpbmZvcm1hdGlvbiBjb3VsZCBiZSBwYXNzZWQgdXNp bmcgYSBIT0INCmxpc3QgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBhZGRpdGlvbmFsIHN1cHBvcnQg aW4gVEYtQS4NCg0KSSBob3BlIHRoaXMgaGVscHMuDQoNCmNoZWVycywNCkFjaGluDQoNCg0KT24g VGh1LCAyMDIzLTA3LTEzIGF0IDA5OjQ4IC0wNzAwLCBDaHJpcyBGZXJuYWxkIHdyb3RlOg0KPiBB Y2hpbi9OaXNoYW50LCBjb3VsZCB5b3UgZXhwbGFpbiB0aGUgbW90aXZhdGlvbiBiZWhpbmQgZmFs bGluZyBiYWNrDQo+IHRvDQo+IGRldmljZSB0cmVlIGZvciBzb21lIG9mIHRoZSBzZWN1cmUgcGFy dGl0aW9uIGluZm9ybWF0aW9uPyBJdCBzZWVtcw0KPiBsaWtlDQo+IHdlIGhhdmUgdGhpcyBsYXJn ZSBhYnN0cmFjdGlvbiBmcmFtZXdvcmsgdXNpbmcgRkYtQSBhbmQgaXQgc2VlbXMgYQ0KPiBiaXQN Cj4gb2RkIHRvIGhhdmUgdGhlIHNlY3VyZSBwYXJ0aXRpb24gaGF2ZSB0byBkaXJlY3RseSByZWFk IGRldmljZSB0cmVlDQo+IGZvcg0KPiBzb21lIG9mIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBldmVy eXRoaW5nIGVsc2UgaXMgcXVlcnktYWJsZSBmcm9tIHRoZQ0KPiBmcmFtZXdvcmsgaXRzZWxmLg0K Pg0KPiBUaGFua3MsDQo+DQo+IENocmlzIEZlcm5hbGQNCj4NCj4gT24gNy8xMy8yMDIzIDg6MjQg QU0sIEdpcmlzaCBNYWhhZGV2YW4gdmlhIGdyb3Vwcy5pbyB3cm90ZToNCj4gPiBJIGhhZCBvbmUg Y29tbWVudCAsIGluLWxpbmUuDQo+ID4NCj4gPiBUaGFua3MNCj4gPiBHaXJpc2gNCj4gPg0KPiA+ IE9uIDcvMTEvMjAyMyA4OjM2IEFNLCBOaXNoYW50IFNoYXJtYSB2aWEgZ3JvdXBzLmlvIHdyb3Rl Og0KPiA+ID4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0 YWNobWVudHMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gRnJvbTogQWNoaW4gR3VwdGEgPGFjaGluLmd1 cHRhQGFybS5jb20+DQo+ID4gPg0KPiA+ID4gVGhpcyBwYXRjaCBkaXNjb3ZlcnMgdGhlIFNQIG1h bmlmZXN0IGluIERUIGZvcm1hdCBwYXNzZWQgYnkgdGhlDQo+ID4gPiBTUE1DLiBJdA0KPiA+ID4g dGhlbiBwYXJzZXMgaXQgdG8gb2J0YWluIHRoZSBib290IGluZm9ybWF0aW9uIHJlcXVpcmVkIHRv DQo+ID4gPiBpbml0aWFsaXNlIHRoZQ0KPiA+ID4gU1AuDQo+ID4gPg0KPiA+ID4gU2lnbmVkLW9m Zi1ieTogQWNoaW4gR3VwdGEgPGFjaGluLmd1cHRhQGFybS5jb20+DQo+ID4gPiBTaWduZWQtb2Zm LWJ5OiBTYXlhbnRhIFBhdHRhbmF5YWsgPHNheWFudGEucGF0dGFuYXlha0Bhcm0uY29tPg0KPiA+ ID4gU2lnbmVkLW9mZi1ieTogTmlzaGFudCBTaGFybWEgPG5pc2hhbnQuc2hhcm1hQGFybS5jb20+ DQo+ID4gPiAtLS0NCj4gPiA+IFN0YW5kYWxvbmVNbVBrZy9JbmNsdWRlL0xpYnJhcnkvQXJtL1N0 YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50LmgNCj4gPiA+IHwNCj4gPiA+IDIgKy0NCj4gPiA+IFN0 YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50L0FybS9TdGFu ZGFsb25lDQo+ID4gPiBNbUNvcmVFbnRyeVBvaW50LmMNCj4gPiA+ID4gMzg5ICsrKysrKysrKysr KysrKysrKystDQo+ID4gPiAgIDIgZmlsZXMgY2hhbmdlZCwgMzgxIGluc2VydGlvbnMoKyksIDEw IGRlbGV0aW9ucygtKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQNCj4gPiA+IGEvU3RhbmRhbG9u ZU1tUGtnL0luY2x1ZGUvTGlicmFyeS9Bcm0vU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQuDQo+ ID4gPiBoDQo+ID4gPiBiL1N0YW5kYWxvbmVNbVBrZy9JbmNsdWRlL0xpYnJhcnkvQXJtL1N0YW5k YWxvbmVNbUNvcmVFbnRyeVBvaW50Lg0KPiA+ID4gaA0KPiA+ID4gaW5kZXggYzk2NTE5MmM3MDJl Li45MGQ2N2EyZjI1YjUgMTAwNjQ0DQo+ID4gPiAtLS0NCj4gPiA+IGEvU3RhbmRhbG9uZU1tUGtn L0luY2x1ZGUvTGlicmFyeS9Bcm0vU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQuDQo+ID4gPiBo DQo+ID4gPiArKysNCj4gPiA+IGIvU3RhbmRhbG9uZU1tUGtnL0luY2x1ZGUvTGlicmFyeS9Bcm0v U3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQuDQo+ID4gPiBoDQo+ID4gPiBAQCAtMiw3ICsyLDcg QEANCj4gPiA+ICAgICBFbnRyeSBwb2ludCB0byB0aGUgU3RhbmRhbG9uZSBNTSBGb3VuZGF0aW9u IHdoZW4gaW5pdGlhbGl6ZWQNCj4gPiA+IGR1cmluZyB0aGUgU0VDDQo+ID4gPiAgICAgcGhhc2Ug b24gQVJNIHBsYXRmb3Jtcw0KPiA+ID4NCj4gPiA+IC1Db3B5cmlnaHQgKGMpIDIwMTcgLSAyMDIx LCBBcm0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICtDb3B5cmlnaHQgKGMp IDIwMTcgLSAyMDIzLCBBcm0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+DQo+ID4g PiAgICoqLw0KPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gYS9TdGFuZGFsb25lTW1Qa2cvTGlicmFy eS9TdGFuZGFsb25lTW1Db3JlRW50cnlQb2ludC9Bcm0vU3RhbmRhbG8NCj4gPiA+IG5lTW1Db3Jl RW50cnlQb2ludC5jDQo+ID4gPiBiL1N0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVN bUNvcmVFbnRyeVBvaW50L0FybS9TdGFuZGFsbw0KPiA+ID4gbmVNbUNvcmVFbnRyeVBvaW50LmMN Cj4gPiA+DQo+ID4gPiBpbmRleCA5ZjZhZjU1Yzg2YzQuLjUwNTc4NmFmZjA3YyAxMDA2NDQNCj4g PiA+IC0tLQ0KPiA+ID4gYS9TdGFuZGFsb25lTW1Qa2cvTGlicmFyeS9TdGFuZGFsb25lTW1Db3Jl RW50cnlQb2ludC9Bcm0vU3RhbmRhbG8NCj4gPiA+IG5lTW1Db3JlRW50cnlQb2ludC5jDQo+ID4g PiArKysNCj4gPiA+IGIvU3RhbmRhbG9uZU1tUGtnL0xpYnJhcnkvU3RhbmRhbG9uZU1tQ29yZUVu dHJ5UG9pbnQvQXJtL1N0YW5kYWxvDQo+ID4gPiBuZU1tQ29yZUVudHJ5UG9pbnQuYw0KPiA+ID4g QEAgLTM4LDYgKzM4LDEwIEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ID4gPg0KPiA+ID4gICAjZGVmaW5lIEJPT1RfUEFZTE9BRF9WRVJTSU9OICAxDQo+ ID4gPg0KPiA+ID4gKyNkZWZpbmUgRkZBX1BBR0VfNEsgMA0KPiA+ID4gKyNkZWZpbmUgRkZBX1BB R0VfMTZLIDENCj4gPiA+ICsjZGVmaW5lIEZGQV9QQUdFXzY0SyAyDQo+ID4gPiArDQo+ID4gPiAg IFBJX01NX0FSTV9URl9DUFVfRFJJVkVSX0VOVFJZUE9JTlQgIENwdURyaXZlckVudHJ5UG9pbnQg PSBOVUxMOw0KPiA+ID4NCj4gPiA+ICAgLyoqDQo+ID4gPiBAQCAtMTA2LDYgKzExMCw3IEBAIEdl dEFuZFByaW50Qm9vdGluZm9ybWF0aW9uICgNCj4gPiA+ICAgICB9DQo+ID4gPg0KPiA+ID4gICAg IHJldHVybiBQYXlsb2FkQm9vdEluZm87DQo+ID4gPiArfQ0KPiA+ID4NCj4gPiA+ICAgLyoqDQo+ ID4gPiAgICAgQW4gU3RNTSBTUCBpbXBsZW1lbnRzIHBhcnRpYWwgc3VwcG9ydCBmb3IgRkYtQSB2 MS4wLiBUaGUgRkYtQQ0KPiA+ID4gQUJJcyBhcmUgdXNlZCB0bw0KPiA+ID4gQEAgLTI2Niw2ICsy NzEsMzA4IEBAIERlbGVnYXRlZEV2ZW50TG9vcCAoDQo+ID4gPiAgICAgfQ0KPiA+ID4gICB9DQo+ ID4gPg0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtDaGVja0Rlc2NyaXB0 aW9uICgNCj4gPiA+ICsgICAgSU4gVk9JRCAgICogRHRiQWRkcmVzcywNCj4gPiA+ICsgICAgSU4g SU5UMzIgICAgT2Zmc2V0LA0KPiA+ID4gKyAgICBPVVQgQ0hBUjggKiBEZXNjcmlwdGlvbiwNCj4g PiA+ICsgICAgT1VUIFVJTlQzMiAgU2l6ZQ0KPiA+ID4gKyAgICApDQo+ID4gPiArew0KPiA+ID4g KyAgQ09OU1QgQ0hBUjggKiBQcm9wZXJ0eTsNCj4gPiA+ICsgIElOVDMyIExlblA7DQo+ID4gPiAr DQo+ID4gPiArICBQcm9wZXJ0eSA9IGZkdF9nZXRwcm9wIChEdGJBZGRyZXNzLCBPZmZzZXQsICJk ZXNjcmlwdGlvbiIsDQo+ID4gPiAmTGVuUCk7DQo+ID4gPiArICBpZiAoUHJvcGVydHkgPT0gTlVM TCkgew0KPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4g PiArIHJldHVybiBDb21wYXJlTWVtIChEZXNjcmlwdGlvbiwgUHJvcGVydHksIE1JTihTaXplLA0K PiA+ID4gKFVJTlQzMilMZW5QKSkNCj4gPiA+ID09IDA7DQo+ID4gPiArDQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtSZWFkUHJvcGVy dHkzMiAoDQo+ID4gPiArICAgIElOICBWT0lEICAgKiBEdGJBZGRyZXNzLA0KPiA+ID4gKyAgICBJ TiAgSU5UMzIgICAgT2Zmc2V0LA0KPiA+ID4gKyAgICBJTiAgQ0hBUjggICogUHJvcGVydHksDQo+ ID4gPiArICAgIE9VVCBVSU5UMzIgKiBWYWx1ZQ0KPiA+ID4gKyAgICApDQo+ID4gPiArew0KPiA+ ID4gKyAgQ09OU1QgVUlOVDMyICogUHJvcGVydHkzMjsNCj4gPiA+ICsNCj4gPiA+ICsgIFByb3Bl cnR5MzIgPSAgZmR0X2dldHByb3AgKER0YkFkZHJlc3MsIE9mZnNldCwgUHJvcGVydHksDQo+ID4g PiBOVUxMKTsNCj4gPiA+ICsgIGlmIChQcm9wZXJ0eTMyID09IE5VTEwpIHsNCj4gPiA+ICsgICAg REVCVUcgKCgNCj4gPiA+ICsgICAgICAgICAgREVCVUdfRVJST1IsDQo+ID4gPiArICAgICAgICAg ICIlczogTWlzc2luZyBpbiBGRi1BIGJvb3QgaW5mb3JtYXRpb24gbWFuaWZlc3RcbiIsDQo+ID4g PiArICAgICAgICAgIFByb3BlcnR5DQo+ID4gPiArICAgICAgICAgICkpOw0KPiA+ID4gKyAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4g KyAgKlZhbHVlID0gZmR0MzJfdG9fY3B1ICgqUHJvcGVydHkzMik7DQo+ID4gPiArDQo+ID4gPiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK1NUQVRJQw0K PiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtSZWFkUHJvcGVydHk2NCAoDQo+ID4gPiArICAgIElO ICBWT0lEICAgKiBEdGJBZGRyZXNzLA0KPiA+ID4gKyAgICBJTiAgSU5UMzIgICAgT2Zmc2V0LA0K PiA+ID4gKyAgICBJTiAgQ0hBUjggICogUHJvcGVydHksDQo+ID4gPiArICAgIE9VVCBVSU5UNjQg KiBWYWx1ZQ0KPiA+ID4gKyAgICApDQo+ID4gPiArew0KPiA+ID4gKyAgQ09OU1QgVUlOVDY0ICog UHJvcGVydHk2NDsNCj4gPiA+ICsNCj4gPiA+ICsgIFByb3BlcnR5NjQgPSAgZmR0X2dldHByb3Ag KER0YkFkZHJlc3MsIE9mZnNldCwgUHJvcGVydHksDQo+ID4gPiBOVUxMKTsNCj4gPiA+ICsgIGlm IChQcm9wZXJ0eTY0ID09IE5VTEwpIHsNCj4gPiA+ICsgICAgREVCVUcgKCgNCj4gPiA+ICsgICAg ICAgICAgREVCVUdfRVJST1IsDQo+ID4gPiArICAgICAgICAgICIlczogTWlzc2luZyBpbiBGRi1B IGJvb3QgaW5mb3JtYXRpb24gbWFuaWZlc3RcbiIsDQo+ID4gPiArICAgICAgICAgIFByb3BlcnR5 DQo+ID4gPiArICAgICAgICAgICkpOw0KPiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgKlZhbHVlID0gZmR0NjRfdG9f Y3B1ICgqUHJvcGVydHk2NCk7DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ ICtSZWFkUmVnaW9uSW5mbyAoDQo+ID4gPiArICAgIElOIFZPSUQgICpEdGJBZGRyZXNzLA0KPiA+ ID4gKyAgICBJTiBJTlQzMiAgTm9kZSwNCj4gPiA+ICsgICAgSU4gQ0hBUjggKlJlZ2lvbiwNCj4g PiA+ICsgICAgSU4gVUlOVE4gIFJlZ2lvblN0clNpemUsDQo+ID4gPiArICAgIElOIFVJTlQzMiBQ YWdlU2l6ZSwNCj4gPiA+ICsgICAgT1VUIFVJTlQ2NCAqQWRkcmVzcywNCj4gPiA+ICsgICAgT1VU IFVJTlQ2NCAqU2l6ZQ0KPiA+ID4gKyAgICApDQo+ID4gPiArew0KPiA+ID4gKyAgQk9PTEVBTiBG b3VuZEJ1ZmZlcjsNCj4gPiA+ICsgIElOVE4gU3RhdHVzID0gMDsNCj4gPiA+ICsNCj4gPiA+ICsg IEZvdW5kQnVmZmVyID0gQ2hlY2tEZXNjcmlwdGlvbiAoDQo+ID4gPiArICAgICAgRHRiQWRkcmVz cywNCj4gPiA+ICsgICAgICBOb2RlLA0KPiA+ID4gKyAgICAgIFJlZ2lvbiwNCj4gPiA+ICsgICAg ICBSZWdpb25TdHJTaXplDQo+ID4gPiArICAgICAgKTsNCj4gPiA+ICsgIGlmICghRm91bmRCdWZm ZXIpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiRm91bmQgTm9kZTogJWFcbiIsIFJlZ2lvbikpOw0K PiA+ID4gKyAgU3RhdHVzID0gUmVhZFByb3BlcnR5NjQgKA0KPiA+ID4gKyAgICAgIER0YkFkZHJl c3MsDQo+ID4gPiArICAgICAgTm9kZSwNCj4gPiA+ICsgICAgICAiYmFzZS1hZGRyZXNzIiwNCj4g PiA+ICsgICAgICBBZGRyZXNzDQo+ID4gPiArICAgICAgKTsNCj4gPiA+ICsgIGlmIChTdGF0dXMg IT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgImJhc2Ut YWRkcmVzcyBtaXNzaW5nIGluIERUQiIpKTsNCj4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ ID4gKyAgfQ0KPiA+ID4gKyAgREVCVUcgKCgNCj4gPiA+ICsgICAgICAgIERFQlVHX0lORk8sDQo+ ID4gPiArICAgICAgICAiYmFzZSA9IDB4JWxseFxuIiwNCj4gPiA+ICsgICAgICAgICpBZGRyZXNz DQo+ID4gPiArICAgICAgICApKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFN0YXR1cyA9IFJlYWRQcm9w ZXJ0eTMyICgNCj4gPiA+ICsgICAgICBEdGJBZGRyZXNzLA0KPiA+ID4gKyAgICAgIE5vZGUsDQo+ ID4gPiArICAgICAgInBhZ2VzLWNvdW50IiwNCj4gPiA+ICsgICAgICAoVUlOVDMyKilTaXplDQo+ ID4gPiArICAgICAgKTsNCj4gPiA+ICsgIGlmIChTdGF0dXMgIT0gRUZJX1NVQ0NFU1MpIHsNCj4g PiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgInBhZ2VzLWNvdW50IG1pc3NpbmcgaW4gRFRC IikpOw0KPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4g PiArICBERUJVRyAoKERFQlVHX0VSUk9SLCAicGFnZXMtY291bnQ6IDB4JWx4XG4iLCAqU2l6ZSkp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgKlNpemUgPSAqU2l6ZSAqIFBhZ2VTaXplOw0KPiA+ID4gKyAg REVCVUcgKCgNCj4gPiA+ICsgICAgICAgIERFQlVHX0lORk8sDQo+ID4gPiArICAgICAgICAiU2l6 ZSA9IDB4JWxseFxuIiwNCj4gPiA+ICsgICAgICAgICpTaXplDQo+ID4gPiArICAgICAgICApKTsN Cj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBUUlVFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsNCj4gPiA+ICsgIFBvcHVsYXRlcyBGRi1BIGJvb3QgaW5mb3JtYXRpb24g c3RydWN0dXJlLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiByZWNlaXZlcyB0aGUg YWRkcmVzcyBvZiBhIERUQiBmcm9tIHdoaWNoIGJvb3QNCj4gPiA+IGluZm9ybWF0aW9uIGRlZmlu ZA0KPiA+ID4gKyAgYnkgRkYtQSBhbmQgcmVxdWlyZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhbmRh bG9uZSBlbnZpcm9ubWVudA0KPiA+ID4gaXMNCj4gPiA+IGV4dHJhY3RlZC4NCj4gPiA+ICsNCj4g PiA+ICsgIEBwYXJhbSBbaW4sIG91dF0gU3RtbUJvb3RJbmZvICBQb2ludGVyIHRvIGEgcHJlLWFs bG9jYXRlZCBib290DQo+ID4gPiBpbmZvIHN0cnVjdHVyZSB0byBiZQ0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVsYXRlZC4NCj4gPiA+ICsgIEBwYXJhbSBbaW5d ICAgICAgRHRiQWRkcmVzcyAgICBBZGRyZXNzIG9mIHRoZSBEZXZpY2UgdHJlZSBmcm9tDQo+ID4g PiB3aGVyZSBib290DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5m b3JtYXRpb24gd2lsbCBiZSBmZXRjaGVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1NUQVRJQw0KPiA+ ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICtQb3B1bGF0ZUJvb3RpbmZvcm1hdGlvbiAoDQo+ID4gPiAr ICBJTiAgT1VUICBFRklfU1RNTV9CT09UX0lORk8gKlN0bW1Cb290SW5mbywNCj4gPiA+ICsgIElO ICAgICAgIFZPSUQgICAgICAgICAgICAgICpEdGJBZGRyZXNzDQo+ID4gPiArKQ0KPiA+ID4gK3sN Cj4gPiA+ICsgIElOVE4gU3RhdHVzOw0KPiA+ID4gKyAgSU5UMzIgT2Zmc2V0Ow0KPiA+ID4gKyAg SU5UMzIgTm9kZTsNCj4gPiA+ICsgIEJPT0xFQU4gRm91bmROc0NvbW1CdWZmZXIgPSBGQUxTRTsN Cj4gPiA+ICsgIEJPT0xFQU4gRm91bmRTaGFyZWRCdWZmZXIgPSBGQUxTRTsNCj4gPiA+ICsgIEJP T0xFQU4gRm91bmRIZWFwID0gRkFMU0U7DQo+ID4gPiArICBVSU5UMzIgUGFnZVNpemU7DQo+ID4g PiArDQo+ID4gPiArICBPZmZzZXQgPSBmZHRfbm9kZV9vZmZzZXRfYnlfY29tcGF0aWJsZSAoRHRi QWRkcmVzcywgLTEsDQo+ID4gPiAiYXJtLGZmYS1tYW5pZmVzdC0xLjAiKTsNCj4gPiA+ICsgIERF QlVHICgoREVCVUdfSU5GTywgIk9mZnNldCAgPSAlZCBcbiIsIE9mZnNldCkpOw0KPiA+ID4gKyAg aWYgKE9mZnNldCA8IDApIHsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIk1pc3Np bmcgRkYtQSBib290IGluZm9ybWF0aW9uIGluDQo+ID4gPiBtYW5pZmVzdFxuIikpOw0KPiA+ID4g KyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsg IFN0YXR1cyA9IFJlYWRQcm9wZXJ0eTY0ICgNCj4gPiA+ICsgICAgICBEdGJBZGRyZXNzLA0KPiA+ ID4gKyAgICAgIE9mZnNldCwNCj4gPiA+ICsgICAgICAibG9hZC1hZGRyZXNzIiwNCj4gPiA+ICsg ICAgICAmU3RtbUJvb3RJbmZvLT5TcE1lbUJhc2UNCj4gPiA+ICsgICAgICApOw0KPiA+ID4gKyAg aWYgKFN0YXR1cyAhPSBFRklfU1VDQ0VTUykgew0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAic3AgbWVtIGJhc2UgID0g MHglbGx4XG4iLA0KPiA+ID4gU3RtbUJvb3RJbmZvLT5TcE1lbUJhc2UpKTsNCj4gPiA+ICsNCj4g PiA+ICsgIFN0YXR1cyA9IFJlYWRQcm9wZXJ0eTY0ICgNCj4gPiA+ICsgICAgICBEdGJBZGRyZXNz LA0KPiA+ID4gKyAgICAgIE9mZnNldCwNCj4gPiA+ICsgICAgICAiaW1hZ2Utc2l6ZSIsDQo+ID4g PiArICAgICAgJlN0bW1Cb290SW5mby0+U3BNZW1TaXplDQo+ID4gPiArICAgICAgKTsNCj4gPiA+ ICsgIGlmIChTdGF0dXMgIT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiA+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIERFQlVHICgoREVCVUdfSU5GTywgInNwIG1lbSBzaXpl ICA9IDB4JWxseFxuIiwNCj4gPiA+IFN0bW1Cb290SW5mby0+U3BNZW1TaXplKSk7DQo+ID4gPiAr DQo+ID4gPiArICBTdGF0dXMgPSBSZWFkUHJvcGVydHkzMiAoRHRiQWRkcmVzcywgT2Zmc2V0LCAi eGxhdC1ncmFudWxlIiwNCj4gPiA+ICZQYWdlU2l6ZSk7DQo+ID4gPiArICBpZiAoU3RhdHVzICE9 IEVGSV9TVUNDRVNTKSB7DQo+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiArICB9DQo+ ID4gPiArDQo+ID4gPiArICAvKiAgRUZJX1BBR0VfU0laRSBpcyA0S0IgKi8NCj4gPiA+ICsgIHN3 aXRjaCAoUGFnZVNpemUpIHsNCj4gPiA+ICsgICAgY2FzZSBGRkFfUEFHRV80SzoNCj4gPiA+ICsg ICAgICBQYWdlU2l6ZSA9IEVGSV9QQUdFX1NJWkU7DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ID4g PiArDQo+ID4gPiArICAgIGNhc2UgRkZBX1BBR0VfMTZLOg0KPiA+ID4gKyAgICAgIFBhZ2VTaXpl ID0gNCAqIEVGSV9QQUdFX1NJWkU7DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ID4gPiArDQo+ID4g PiArICAgIGNhc2UgRkZBX1BBR0VfNjRLOg0KPiA+ID4gKyAgICAgIFBhZ2VTaXplID0gMTYgKiBF RklfUEFHRV9TSVpFOw0KPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBk ZWZhdWx0Og0KPiA+ID4gKyAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJJbnZhbGlkIHBhZ2Ug dHlwZSA9ICVsdVxuIiwNCj4gPiA+IFBhZ2VTaXplKSk7DQo+ID4gPiArICAgICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ICsgICAgICBicmVhazsNCj4gPiA+ICsgIH07DQo+ ID4gPiArDQo+ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJQYWdlIFNpemUgPSAweCVseFxu IiwgUGFnZVNpemUpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIE9mZnNldCA9IGZkdF9zdWJub2RlX29m ZnNldF9uYW1lbGVuICgNCj4gPiA+ICsgICAgICBEdGJBZGRyZXNzLA0KPiA+ID4gKyAgICAgIE9m ZnNldCwNCj4gPiA+ICsgICAgICAibWVtb3J5LXJlZ2lvbnMiLA0KPiA+ID4gKyAgICAgIHNpemVv ZigibWVtb3J5LXJlZ2lvbnMiKSAtIDENCj4gPiA+ICsgICAgICApOw0KPiA+ID4gKyAgaWYgKE9m ZnNldCA8IDEpIHsNCj4gPiA+ICsgICAgREVCVUcgKCgNCj4gPiA+ICsgICAgICAgICAgREVCVUdf RVJST1IsDQo+ID4gPiArICAgICAgICAgICIlczogTWlzc2luZyBpbiBGRi1BIGJvb3QgaW5mb3Jt YXRpb24gbWFuaWZlc3RcbiIsDQo+ID4gPiArICAgICAgICAgICJtZW1vcnktcmVnaW9ucyINCj4g PiA+ICsgICAgICAgICAgKSk7DQo+ID4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBmb3IgKA0KPiA+ID4gKyAgICAgIE5v ZGUgPSBmZHRfZmlyc3Rfc3Vibm9kZSAoRHRiQWRkcmVzcywgT2Zmc2V0KTsNCj4gPiA+ICsgICAg ICBOb2RlID4gMDsNCj4gPiA+ICsgICAgICBOb2RlID0gZmR0X25leHRfc3Vibm9kZSAoRHRiQWRk cmVzcywgTm9kZSkpIHsNCj4gPiA+ICsgICAgaWYgKCFGb3VuZE5zQ29tbUJ1ZmZlcikgew0KPiA+ ID4gKyAgICAgIEZvdW5kTnNDb21tQnVmZmVyID0gUmVhZFJlZ2lvbkluZm8gKA0KPiA+ID4gKyAg ICAgICAgICBEdGJBZGRyZXNzLA0KPiA+ID4gKyAgICAgICAgICBOb2RlLA0KPiA+ID4gKyAgICAg ICAgICAibnMtY29tbSIsDQo+ID4gPiArICAgICAgICAgIHNpemVvZiAoIm5zLWNvbW0iKSAtIDEs DQo+ID4gPiArICAgICAgICAgIFBhZ2VTaXplLA0KPiA+ID4gKyAgICAgICAgICAmU3RtbUJvb3RJ bmZvLT5TcE5zQ29tbUJ1ZkJhc2UsDQo+ID4gPiArICAgICAgICAgICZTdG1tQm9vdEluZm8tPlNw TnNDb21tQnVmU2l6ZQ0KPiA+ID4gKyAgICAgICAgICApOw0KPiA+ID4gKyAgICB9DQo+ID4gPiAr DQo+ID4gPiArICAgIGlmICghRm91bmRIZWFwKSB7DQo+ID4gPiArICAgICAgRm91bmRIZWFwID0g UmVhZFJlZ2lvbkluZm8gKA0KPiA+ID4gKyAgICAgICAgICBEdGJBZGRyZXNzLA0KPiA+ID4gKyAg ICAgICAgICBOb2RlLA0KPiA+ID4gKyAgICAgICAgICAiaGVhcCIsDQo+ID4gPiArICAgICAgICAg IHNpemVvZiAoImhlYXAiKSAtIDEsDQo+ID4gPiArICAgICAgICAgIFBhZ2VTaXplLA0KPiA+ID4g KyAgICAgICAgICAmU3RtbUJvb3RJbmZvLT5TcEhlYXBCYXNlLA0KPiA+ID4gKyAgICAgICAgICAm U3RtbUJvb3RJbmZvLT5TcEhlYXBTaXplDQo+ID4gPiArICAgICAgICAgICk7DQo+ID4gPiArICAg IH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgaWYgKCFGb3VuZFNoYXJlZEJ1ZmZlcikgew0KPiA+ID4g KyAgICAgIEZvdW5kU2hhcmVkQnVmZmVyID0gUmVhZFJlZ2lvbkluZm8gKA0KPiA+ID4gKyAgICAg ICAgICBEdGJBZGRyZXNzLA0KPiA+ID4gKyAgICAgICAgICBOb2RlLA0KPiA+ID4gKyAgICAgICAg ICAic2hhcmVkLWJ1ZmYiLA0KPiA+ID4gKyAgICAgICAgICBzaXplb2YgKCJzaGFyZWQtYnVmZiIp IC0gMSwNCj4gPiA+ICsgICAgICAgICAgUGFnZVNpemUsDQo+ID4gPiArICAgICAgICAgICZTdG1t Qm9vdEluZm8tPlNwU2hhcmVkQnVmQmFzZSwNCj4gPiA+ICsgICAgICAgICAgJlN0bW1Cb290SW5m by0+U3BTaGFyZWRCdWZTaXplDQo+ID4gPiArICAgICAgICAgICk7DQo+ID4gPiArICAgIH0NCj4g PiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmICghRm91bmROc0NvbW1CdWZmZXIpIHsNCj4g PiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZhaWxlZCB0byBmaW5kIG5zLWNvbW0gYnVm ZmVyDQo+ID4gPiBpbmZvXG4iKSk7DQo+ID4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJB TUVURVI7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBpZiAoIUZvdW5kSGVhcCkgew0K PiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRmFpbGVkIHRvIGZpbmQgaGVhcCBidWZm ZXIgaW5mb1xuIikpOw0KPiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKCFGb3VuZFNoYXJlZEJ1ZmZlcikgew0K PiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRmFpbGVkIHRvIGZpbmQgc2hhcmVkIGJ1 ZmZlcg0KPiA+ID4gaW5mb1xuIikpOw0KPiA+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8gUG9wdWxhdGUgQ1BVIGlu Zm9ybWF0aW9uIHVuZGVyIHRoZSBhc3N1bXB0aW9uIG1hZGUgaW4gdGhlDQo+ID4gPiBGRi1BDQo+ ID4gPiBzcGVjIHRoYXQNCj4gPiA+ICsgIC8vIHRoaXMgaXMgYSB1bmlwcm9jZXNzb3IgU1AgdGhh dCBpcyBjYXBhYmxlIG9mIG1pZ3JhdGlvbi4gU28sDQo+ID4gPiBpdA0KPiA+ID4gaXMgZmluZSBp Zg0KPiA+ID4gKyAgLy8gaXQgc2VlcyAwIGFzIGJvdGggaXRzIHBoeXNpY2FsIGFuZCBsaW5lYXIg Y3B1IGlkDQo+ID4gPiArICBTdG1tQm9vdEluZm8tPkNwdUluZm8uTXBpZHIgPSAwOw0KPiA+ID4g KyAgU3RtbUJvb3RJbmZvLT5DcHVJbmZvLkxpbmVhcklkID0gMDsNCj4gPiA+ICsgIFN0bW1Cb290 SW5mby0+Q3B1SW5mby5GbGFncyA9IDA7DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gRUZJX1NV Q0NFU1M7DQo+ID4gPiArfQ0KPiA+DQo+ID4gW0dNXQ0KPiA+IE91dHNpZGUgb2YgdGhlIG1hbmRh dG9yeSBwcm9wZXJ0aWVzLCBJIGV4cGVjdCB0aGF0IHRoZXJlIGNvdWxkIGJlDQo+ID4gc29tZQ0K PiA+IGN1c3RvbSBmaWVsZHMgaW4gdGhlIGR0YiBtYW5pZmVzdC4gQ2FuIHlvdSBhZGQgYSBtZWFu cyBmb3IgYSB2ZW5kb3INCj4gPiB0bw0KPiA+IGhvb2sgaW4gcGFyc2luZyBwcm9wZXJ0aWVzIHRo YXQgb25seSBhcHBseSB0byB0aGVtLiBBbiBPRU0gTGlicmFyeQ0KPiA+ID8NCj4gPiA+ICsNCj4g PiA+ICAgLyoqDQo+ID4gPiAgICAgUXVlcnkgdGhlIFNQTSB2ZXJzaW9uLCBjaGVjayBjb21wYXRp YmlsaXR5IGFuZCByZXR1cm4gc3VjY2Vzcw0KPiA+ID4gaWYNCj4gPiA+IGNvbXBhdGlibGUuDQo+ ID4gPg0KPiA+ID4gQEAgLTM0Myw2ICs2NTAsNDkgQEAgSW5pdEFybVN2Y0FyZ3MgKA0KPiA+ID4g ICAgIH0NCj4gPiA+ICAgfQ0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+ICtTVEFUSUMNCj4gPiA+ICtF RklfU1RBVFVTDQo+ID4gPiArR2V0U3BNYW5pZmVzdCAoDQo+ID4gPiArICBJTiAgT1VUICAgICBV SU5UNjQgKipTcE1hbmlmZXN0QWRkciwNCj4gPiA+ICsgIElOICAgICAgICAgIFZPSUQgICAgKkJv b3RJbmZvQWRkcg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVGSV9GRkFfQk9PVF9J TkZPX0hFQURFUiAqRmZhQm9vdEluZm87DQo+ID4gPiArICBFRklfRkZBX0JPT1RfSU5GT19ERVND ICAgKkZmYUJvb3RJbmZvRGVzYzsNCj4gPiA+ICsNCj4gPiA+ICsgIC8vIFBhcmFub2lkIGNoZWNr IHRvIGF2b2lkIGFuIGluYWR2ZXJ0ZW50IE5VTEwgcG9pbnRlcg0KPiA+ID4gZGVyZWZlcmVuY2Uu DQo+ID4gPiArICBpZiAoQm9vdEluZm9BZGRyID09IE5VTEwpIHsNCj4gPiA+ICsgICAgREVCVUcg KChERUJVR19FUlJPUiwgIkZGLUEgQm9vdCBpbmZvcm1hdGlvbiBpcyBOVUxMXG4iKSk7DQo+ID4g PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICAvLyBDaGVjayBib290IGluZm9ybWF0aW9uIG1hZ2ljIG51bWJlci4NCj4gPiA+ ICsgIEZmYUJvb3RJbmZvID0gKEVGSV9GRkFfQk9PVF9JTkZPX0hFQURFUiAqKSBCb290SW5mb0Fk ZHI7DQo+ID4gPiArICBpZiAoRmZhQm9vdEluZm8tPk1hZ2ljICE9IEZGQV9JTklUX0RFU0NfU0lH TkFUVVJFKSB7DQo+ID4gPiArICAgIERFQlVHICgoDQo+ID4gPiArICAgICAgICAgIERFQlVHX0VS Uk9SLCAiRmZhQm9vdEluZm8gTWFnaWMgbm8uIGlzIGludmFsaWQNCj4gPiA+IDB4JXV4XG4iLA0K PiA+ID4gKyAgICAgICAgICBGZmFCb290SW5mby0+TWFnaWMNCj4gPiA+ICsgICAgICAgICAgKSk7 DQo+ID4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiArICB9DQo+ ID4gPiArDQo+ID4gPiArDQo+ID4gPiArICBGZmFCb290SW5mb0Rlc2MgPQ0KPiA+ID4gKyAgICAo RUZJX0ZGQV9CT09UX0lORk9fREVTQyAqKSgoVUlOVDggKilCb290SW5mb0FkZHIgKw0KPiA+ID4g KyAgICAgICAgRmZhQm9vdEluZm8tPk9mZnNldEJvb3RJbmZvRGVzYyk7DQo+ID4gPiArDQo+ID4g PiArICBpZiAoRmZhQm9vdEluZm9EZXNjLT5UeXBlID09DQo+ID4gPiArICAgICAgKEZGQV9CT09U X0lORk9fVFlQRShGRkFfQk9PVF9JTkZPX1RZUEVfU1REKSB8DQo+ID4gPiArICAgICAgRkZBX0JP T1RfSU5GT19UWVBFX0lEKEZGQV9CT09UX0lORk9fVFlQRV9JRF9GRFQpKSkgew0KPiA+ID4gKyAg ICAqU3BNYW5pZmVzdEFkZHIgPSAoVUlOVDY0ICopIEZmYUJvb3RJbmZvRGVzYy0+Q29udGVudDsN Cj4gPiA+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ ID4gKyAgREVCVUcgKChERUJVR19FUlJPUiwgIlNQIG1hbmlmZXN0IG5vdCBmb3VuZCBcbiIpKTsN Cj4gPiA+ICsgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICAgLyoqDQo+ID4gPiAgICAgVGhlIGVudHJ5IHBvaW50IG9mIFN0YW5kYWxvbmUgTU0gRm91bmRh dGlvbi4NCj4gPiA+DQo+ID4gPiBAQCAtMzYzLDYgKzcxMyw3IEBAIE1vZHVsZUVudHJ5UG9pbnQg KA0KPiA+ID4gICB7DQo+ID4gPiAgICAgUEVfQ09GRl9MT0FERVJfSU1BR0VfQ09OVEVYVCAgICBJ bWFnZUNvbnRleHQ7DQo+ID4gPiAgICAgRUZJX1NFQ1VSRV9QQVJUSVRJT05fQk9PVF9JTkZPICAq UGF5bG9hZEJvb3RJbmZvOw0KPiA+ID4gKyAgRUZJX1NUTU1fQk9PVF9JTkZPICAgICAgICAgICAg ICBTdG1tQm9vdEluZm8gPSB7MH07DQo+ID4gPiAgICAgQVJNX1NWQ19BUkdTICAgICAgICAgICAg ICAgICAgICBJbml0TW1Gb3VuZGF0aW9uU3ZjQXJnczsNCj4gPiA+ICAgICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ICAgICBJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJldDsNCj4gPiA+IEBAIC0zNzIsNiArNzIzLDggQEAgTW9kdWxlRW50cnlQ b2ludCAoDQo+ID4gPiAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVGVEYXRh Ow0KPiA+ID4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVEYXRhU2l6ZTsN Cj4gPiA+ICAgICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgICAgIEltYWdlQmFzZTsNCj4g PiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgKkR0YkFkZHJlc3M7DQo+ID4g PiArICBFRklfRklSTVdBUkVfVk9MVU1FX0hFQURFUiAgICAgICpCZnZBZGRyZXNzOw0KPiA+ID4g ICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgVXNlT25seUZmYUFiaXMgPSBGQUxT RTsNCj4gPiA+DQo+ID4gPiAgICAgaWYgKEZpeGVkUGNkR2V0MzIgKFBjZEZmYUVuYWJsZSkgIT0g MCkgew0KPiA+ID4gQEAgLTM4NCwxOCArNzM3LDM2IEBAIE1vZHVsZUVudHJ5UG9pbnQgKA0KPiA+ ID4gICAgICAgZ290byBmaW5pc2g7DQo+ID4gPiAgICAgfQ0KPiA+ID4NCj4gPiA+IC0gIFBheWxv YWRCb290SW5mbyA9IEdldEFuZFByaW50Qm9vdGluZm9ybWF0aW9uDQo+ID4gPiAoU2hhcmVkQnVm QWRkcmVzcyk7DQo+ID4gPiAtICBpZiAoUGF5bG9hZEJvb3RJbmZvID09IE5VTEwpIHsNCj4gPiA+ IC0gICAgU3RhdHVzID0gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ID4gLSAgICBnb3RvIGZpbmlzaDsN Cj4gPiA+ICsgIC8vIElmIG9ubHkgRkYtQSBpcyB1c2VkLCB0aGUgRFRCIGFkZHJlc3MgaXMgcGFz c2VkIGluIHRoZSBCb290DQo+ID4gPiBpbmZvcm1hdGlvbg0KPiA+ID4gKyAgLy8gc3RydWN0dXJl LiBFbHNlLCB0aGUgQm9vdCBpbmZvIGlzIGNvcGllZCBmcm9tIFNoYXJlZGJ1ZmZlci4NCj4gPiA+ ICsgIGlmIChVc2VPbmx5RmZhQWJpcykgew0KPiA+ID4gKyAgICBTdGF0dXMgPSBHZXRTcE1hbmlm ZXN0ICgmRHRiQWRkcmVzcywgU2hhcmVkQnVmQWRkcmVzcyk7DQo+ID4gPiArICAgIGlmIChTdGF0 dXMgIT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiA+ICsgICAgICBnb3RvIGZpbmlzaDsNCj4gPiA+ICsg ICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgICAvLyBFeHRyYWN0IGJvb3QgaW5mb3JtYXRpb24gZnJv bSB0aGUgRFRCDQo+ID4gPiArICAgIFN0YXR1cyA9IFBvcHVsYXRlQm9vdGluZm9ybWF0aW9uICgm U3RtbUJvb3RJbmZvLCAoVk9JRCAqKQ0KPiA+ID4gRHRiQWRkcmVzcyk7DQo+ID4gPiArICAgIGlm IChTdGF0dXMgIT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiA+ICsgICAgICBnb3RvIGZpbmlzaDsNCj4g PiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgICAvLyBTdGFzaCB0aGUgYmFzZSBhZGRyZXNz IG9mIHRoZSBib290IGZpcm13YXJlIHZvbHVtZQ0KPiA+ID4gKyAgICBCZnZBZGRyZXNzID0gKEVG SV9GSVJNV0FSRV9WT0xVTUVfSEVBREVSICopDQo+ID4gPiBTdG1tQm9vdEluZm8uU3BNZW1CYXNl Ow0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsgICAgUGF5bG9hZEJvb3RJbmZvID0gR2V0QW5k UHJpbnRCb290aW5mb3JtYXRpb24NCj4gPiA+IChTaGFyZWRCdWZBZGRyZXNzKTsNCj4gPiA+ICsg ICAgaWYgKFBheWxvYWRCb290SW5mbyA9PSBOVUxMKSB7DQo+ID4gPiArICAgICAgU3RhdHVzID0g RUZJX1VOU1VQUE9SVEVEOw0KPiA+ID4gKyAgICAgIGdvdG8gZmluaXNoOw0KPiA+ID4gKyAgICB9 DQo+ID4gPiArDQo+ID4gPiArICAgIC8vIFN0YXNoIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIGJv b3QgZmlybXdhcmUgdm9sdW1lDQo+ID4gPiArICAgIEJmdkFkZHJlc3MgPSAoRUZJX0ZJUk1XQVJF X1ZPTFVNRV9IRUFERVIgKikNCj4gPiA+IFBheWxvYWRCb290SW5mby0+U3BJbWFnZUJhc2U7DQo+ ID4gPiAgICAgfQ0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+ICAgICAvLyBMb2NhdGUgUEUvQ09GRiBG aWxlIGluZm9ybWF0aW9uIGZvciB0aGUgU3RhbmRhbG9uZSBNTSBjb3JlDQo+ID4gPiBtb2R1bGUN Cj4gPiA+IC0gIFN0YXR1cyA9IExvY2F0ZVN0YW5kYWxvbmVNbUNvcmVQZUNvZmZEYXRhICgNCj4g PiA+IC0gICAgICAgICAgICAgKEVGSV9GSVJNV0FSRV9WT0xVTUVfSEVBREVSDQo+ID4gPiAqKShV SU5UTilQYXlsb2FkQm9vdEluZm8tPlNwSW1hZ2VCYXNlLA0KPiA+ID4gLSAgICAgICAgICAgICAm VGVEYXRhLA0KPiA+ID4gLSAgICAgICAgICAgICAmVGVEYXRhU2l6ZQ0KPiA+ID4gLSAgICAgICAg ICAgICApOw0KPiA+ID4gKyAgU3RhdHVzID0gTG9jYXRlU3RhbmRhbG9uZU1tQ29yZVBlQ29mZkRh dGEgKEJmdkFkZHJlc3MsDQo+ID4gPiAmVGVEYXRhLA0KPiA+ID4gJlRlRGF0YVNpemUpOw0KPiA+ ID4NCj4gPiA+ICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiAgICAgICBnb3Rv IGZpbmlzaDsNCj4gPiA+IC0tDQo+ID4gPiAyLjM0LjENCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4g PiA+IC09LT0tPS09LT0tPQ0KPiA+ID4gR3JvdXBzLmlvIExpbmtzOiBZb3UgcmVjZWl2ZSBhbGwg bWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3VwLg0KPiA+ID4gVmlldy9SZXBseSBPbmxpbmUgKCMx MDY4MDEpOg0KPiA+ID4gaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTA2 ODAxDQo+ID4gPiBNdXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210LzEwMDA3OTg4 MS82MDk4NDQ2DQo+ID4gPiBHcm91cCBPd25lcjogZGV2ZWwrb3duZXJAZWRrMi5ncm91cHMuaW8N Cj4gPiA+IFVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWIN Cj4gPiA+IFtnbWFoYWRldmFuQG52aWRpYS5jb21dDQo+ID4gPiAtPS09LT0tPS09LT0NCj4gPiA+ DQo+ID4gPg0KPiA+DQo+ID4NCj4gPiANCj4gPg0KPiA+DQoNCklNUE9SVEFOVCBOT1RJQ0U6IFRo ZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVu dGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVu ZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBk byBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBm b3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBt ZWRpdW0uIFRoYW5rIHlvdS4NCg==