From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (EUR05-DB8-obe.outbound.protection.outlook.com [40.107.20.48]) by mx.groups.io with SMTP id smtpd.web12.2640.1644256784121991522 for ; Mon, 07 Feb 2022 09:59:45 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=HRxVu9D2; spf=pass (domain: arm.com, ip: 40.107.20.48, mailfrom: joseph.hemann@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=Zyx/9/qlCrNpsTfO+NNkRO0yPqjM6ifEHk35Im8/BHo=; b=HRxVu9D23oVCG+Mbna1IsZp9X8LGWMURpoC2kNEQR82TRbxazan4IdtN/F/npL/Qy1lllCqQVCbRlLGaz1S4WFBssLcMf5xg8mBQtrHKA+lZz06OHSyMO8nW75w2YnN7bcPr1yXghoZahvjOyDhl5JkeaGd9gGsvYHSO6UlyTeg= Received: from DB8PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:10:110::17) by HE1PR0801MB1692.eurprd08.prod.outlook.com (2603:10a6:3:84::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.17; Mon, 7 Feb 2022 17:59:28 +0000 Received: from DB5EUR03FT034.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:110:cafe::63) by DB8PR04CA0007.outlook.office365.com (2603:10a6:10:110::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.18 via Frontend Transport; Mon, 7 Feb 2022 17:59:27 +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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT034.mail.protection.outlook.com (10.152.20.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12 via Frontend Transport; Mon, 7 Feb 2022 17:59:27 +0000 Received: ("Tessian outbound 826a6d8e58c3:v113"); Mon, 07 Feb 2022 17:59:27 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 0ce84e7248211f43 X-CR-MTA-TID: 64aa7808 Received: from 6f59fff658f5.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9013F7D1-F39B-4166-BE07-284FDBA3CBAD.1; Mon, 07 Feb 2022 17:59:19 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 6f59fff658f5.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 07 Feb 2022 17:59:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MjPD8AVPO878eitRhVeuMP1Q3SC7DFW3dXNqwSCIax32JTlYW8M09UkjowF65B3lq8UebQSa0jvD8RFGYgQheOX09Wsr3tPDS9lFrm+iaUOn8+e9vJPcY7a5wGIVcMXKfK7OZMOV28Zof8vgFJGPQq+h1RxOigOB6cgP+oRQq7QLGx9RitWET2OZwfy2v2NKSMhRqw8R8e6y0rEBs+FukUJcnqb3CXqKAKmaJfZw0TNgBi/eINJpuRxvY82R/M7Ugsm9VCP/X3H6togN3z9E5Im/6fFUAPvT0AXIS3XVWNptzoa9GYtq8RDkP7jq1XflNywgA8CjgLJi3kVCPPIvQg== 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=Zyx/9/qlCrNpsTfO+NNkRO0yPqjM6ifEHk35Im8/BHo=; b=eeKs0Ekfa4H6GILspEcWpbHBimE1AzdF+uCO9a/WyGaW++qQ2C3crZvyngiKbDwMRL+nmSkSZQ3GGx9o5YDRbcF2MVoqbDldr9bEMS1s08Ii6VPi7SLs0foNq0aDaVxLpz+gpDpeCOdH+OhBMbWNjkvEc8c/td8Jo7UIjmfF052j0QYF7qipauIQbWaXnE3LfmHq2zX2V/HlwK6no4pNCMo038xS+irquAUEGxE4mxkjJjINCMEW2rxVeIXvvKewrPMcV8+HpTVMNEtlxOhhaYq+s73aUhVe5u8B9yPxbazSdL1QftuIRHg8Ts2qRrMb2QNjVUf+/h8tPgj8MyHSzg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=Zyx/9/qlCrNpsTfO+NNkRO0yPqjM6ifEHk35Im8/BHo=; b=HRxVu9D23oVCG+Mbna1IsZp9X8LGWMURpoC2kNEQR82TRbxazan4IdtN/F/npL/Qy1lllCqQVCbRlLGaz1S4WFBssLcMf5xg8mBQtrHKA+lZz06OHSyMO8nW75w2YnN7bcPr1yXghoZahvjOyDhl5JkeaGd9gGsvYHSO6UlyTeg= Received: from VI1PR08MB4304.eurprd08.prod.outlook.com (2603:10a6:803:f2::20) by AM4PR08MB2930.eurprd08.prod.outlook.com (2603:10a6:205:b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.17; Mon, 7 Feb 2022 17:59:14 +0000 Received: from VI1PR08MB4304.eurprd08.prod.outlook.com ([fe80::f582:fcdc:e0d4:1948]) by VI1PR08MB4304.eurprd08.prod.outlook.com ([fe80::f582:fcdc:e0d4:1948%4]) with mapi id 15.20.4951.018; Mon, 7 Feb 2022 17:59:14 +0000 From: "Joseph Hemann" To: Stuart Yoder , "devel@edk2.groups.io" CC: G Edhaya Chandran , Barton Gao , Carolyn Gjertsen , Samer El-Haj-Mahmoud , Eric Jin , Arvin Chen , Supreeth Venkatesh , Heinrich Schuchardt Subject: Re: [edk2-devel] [PATCH 2/6] uefi-sct/SctPkg: TCG2 Protocol: add GetCapability Test Thread-Topic: [edk2-devel] [PATCH 2/6] uefi-sct/SctPkg: TCG2 Protocol: add GetCapability Test Thread-Index: AQHYBZuyfQX+eDuJgECprfnSPuEEBax/KQqAgAj//YA= Date: Mon, 7 Feb 2022 17:59:14 +0000 Message-ID: <0232AA76-0DBC-45EA-8379-3A4DF2881E79@arm.com> References: <20220109205827.3608758-1-Joseph.hemann@arm.com> <20220109205827.3608758-3-Joseph.hemann@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: 07af86ec-de03-4809-95b8-08d9ea639526 x-ms-traffictypediagnostic: AM4PR08MB2930:EE_|DB5EUR03FT034:EE_|HE1PR0801MB1692:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:9508;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: kiwh20k47oc/6C2LU01gpHqNzmNVYZ7b+Li94Jr2JAPrBMQUVSmCq4C4D0nSyvIZYX9HQS+AqGwAtvOOrdMAZ0aSW0E0hZwjkpVnZCnmwU8R6RDbj8dYBd0qKBRAsSy5rDPleHCo1TFGWEijzdTSnyVWmvOLBZ+1Uff9y7PEvDuWxijz20F1FUXGqnnjvuDhiv0z4kV+KIJaI6VzhTfb44kxlgPOSKc49waKpQ9fdSPsQo7ZcGsCcY4CaiYIq6XfHMMM71PLAtdydwnYqaziK4Fi4Xz5qq2FCZWMLg+Ew8A103LjdQanGnanDWEkIlROiJthLnr5zOxSn4h4slz0QR5FmVreJrg/rZhDfoIeUG1Nz7rnecXD/BEArWWQfRtCj3luDiXNiawX3wQ5Mrxsom7CJ2VPkuNKYSo7AGfEGB/86ReREe8jKDeRiKWY5h5HAIkWmzyLsz+NmO+xyCWg7asnjyuXU5x2aOgtLGOlwtCoc0kYe1wuP8l0ZwT+eQj8C0TpDXnXzt6fbJH4YS7Z76ktFKcTjrlpbNz1wqsEhYKTC157VmHnVyWXA+lJRShM1fysXJ/ZOhwQkyB4cTqcTYmDXuVBYpFTfUyfCSl0laT5PDH1OOG8l6mR1Fhnl1tEjGNN514B/xp/1r+PKJRFsEpW8pDTkM3E/mlnYvRo9m0IwSQSrT7iwmfbMxNFOFkI2CDHNuvr7+CaqJK0vbn0YqBqmeDgyw3PFEwEa5cHM8Y= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB4304.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(110136005)(2906002)(71200400001)(36756003)(6506007)(6512007)(122000001)(316002)(33656002)(38100700002)(53546011)(38070700005)(54906003)(508600001)(86362001)(5660300002)(186003)(2616005)(66476007)(26005)(8676002)(66946007)(76116006)(66556008)(4326008)(8936002)(91956017)(83380400001)(30864003)(6486002)(66446008)(64756008)(45980500001);DIR:OUT;SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB2930 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Return-Path: Joseph.Hemann@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT034.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 95de5007-ca3c-40ee-d47d-08d9ea638d62 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0qzSuHfm+mHLTTBTp21LH71bFRhFaryM6RbdxDpew54430IatiHWj5m7tIrdVQ+XbyAanwNU6GvmlAtNY2PinbwJyL70/zyMJKEWGbpVzWicDwJb9Y1nSPgYgHOYk73K15rchjRSNtCskn//x5owFjTeiOnuwTYQ3PIK0ahZTkDw9kAtlPAGM6SJVZAMU3EpvZkT6+LSiLaT+Qo/pJCQl5APfMK6BdWLXKFcs2s/n+040HyzVeoJv0JVRji9JQVQhEGPa1olB2r8GAF7KuUfbt22E29pCh3srjj1jKLo6+V7ekoJgtHzMF/ywTqkL6MYS6dNEkE/WVAROTe/1hRBby+J2QkiAPoQmvBuq1l2RqsoXJnwjDHBiGN3f0naSjcxyvt2V5gJwxKRuxeVmteXtU8V7c5C3UmSj6wXdJ1a86Vl13rsukWy74jQ6kDIcBiwGLTuNC7y2r3jpt8V95lwVh78zLvLMn3SWfcIA845EU0KcW0QhJhZzvZlR/6Nj2nrKTcKeHXeU5P+Qs/MDZYdByJ2o4vWgqMdyFIRlyUnm6LUoaHEIrgLyblnIo6huS+PnSRv2tZJhQS+iN1XnRrYXlRD47gJ+zs9u9nLBbZbYlrF3nhlvR7p3ROmRLYjh191rWbxz9/ehP8VRCzOZeXySwpn41HAQpfxc6v83ef30zG+QC8F+w6MpXrGEMCe2GmJ 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:(13230001)(4636009)(36840700001)(40470700004)(46966006)(81166007)(110136005)(316002)(6512007)(54906003)(26005)(5660300002)(356005)(47076005)(2616005)(186003)(336012)(107886003)(508600001)(2906002)(6506007)(83380400001)(70586007)(8676002)(86362001)(53546011)(30864003)(6486002)(33656002)(70206006)(40460700003)(4326008)(36756003)(8936002)(82310400004)(36860700001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Feb 2022 17:59:27.4631 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 07af86ec-de03-4809-95b8-08d9ea639526 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: DB5EUR03FT034.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1692 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <720E61F083C9044BA3774E2B73C46D39@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 U2VlIGlubGluZSBjb21tZW50cy4uDQoNCk9uIDIvMS8yMiwgMTI6MzMgUE0sICJTdHVhcnQgWW9k ZXIiIDxzdHVhcnQueW9kZXJAYXJtLmNvbT4gd3JvdGU6DQoNCiAgICBTZWUgaW5saW5lIGNvbW1l bnRzLi4uDQoNCiAgICA+ICtFRklfU1RBVFVTDQogICAgPiArQkJUZXN0R2V0Q2FwYWJpbGl0eUNv bmZvcm1hbmNlVGVzdENoZWNrcG9pbnQyICgNCiAgICA+ICsgIElOIEVGSV9TVEFOREFSRF9URVNU X0xJQlJBUllfUFJPVE9DT0wgICAgKlN0YW5kYXJkTGliLA0KICAgID4gKyAgSU4gRUZJX1RDRzJf UFJPVE9DT0wgICAgICAgICAgICAgICAgICAgICAqVENHMg0KICAgID4gKyAgKQ0KICAgID4gK3sN CiAgICA+ICsgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9u VHlwZTsNCiAgICA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KICAgID4gKyAgY2hhciBTdHJ1Y3R1cmVWZXJzaW9uTWFqb3I7DQogICAgPiArICBjaGFy IFN0cnVjdHVyZVZlcnNpb25NaW5vcjsNCiAgICA+ICsgIGNoYXIgUHJvdG9jb2xWZXJzaW9uTWFq b3I7DQogICAgPiArICBjaGFyIFByb3RvY29sVmVyc2lvbk1pbm9yOw0KICAgID4gKw0KICAgID4g KyAgRUZJX1RDRzJfQk9PVF9TRVJWSUNFX0NBUEFCSUxJVFkgICAgICBCb290U2VydmljZUNhcDsN CiAgICA+ICsgIEJvb3RTZXJ2aWNlQ2FwLlNpemUgPSBzaXplb2YoVUlOVDgpICsgKHNpemVvZihF RklfVENHMl9WRVJTSU9OKSAqIDIpOw0KICAgID4gKw0KICAgID4gKyAgU3RhdHVzID0gVENHMi0+ R2V0Q2FwYWJpbGl0eSAoDQogICAgPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHMiwN CiAgICA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAmQm9vdFNlcnZpY2VDYXApOw0KICAg ID4gKw0KICAgID4gKyAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7 DQogICAgPiArDQogICAgPiArICAvLyBJZiB0aGUgaW5wdXQgUHJvdG9jb2xDYXBhYmlsaXR5LlNp emUgPCBzaXplb2YoRUZJX1RDRzJfQk9PVF9TRVJWSUNFX0NBUEFCSUxJVFkpIHRoZSBmdW5jdGlv biBzaG91bGQgcmV0dXJuIEVGSV9CVUZGRVJfVE9PX1NNQUxMDQogICAgPiArICBpZiAoU3RhdHVz ICE9IEVGSV9CVUZGRVJfVE9PX1NNQUxMKSB7DQogICAgPiArICAgICBTdGFuZGFyZExpYi0+UmVj b3JkTWVzc2FnZSAoDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJk TGliLA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZF TF9ERUZBVUxULA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBMIlxyXG5UQ0cy IFByb3RvY29sIEdldENhcGFibGl0eSBUZXN0OiBEaWQgbm90IHJldHVybiBTdGF0dXMgPT0gRUZJ X0JVRkZFUl9UT09fU01BTEwgd2l0aCBpbnB1dCBQcm90b2NvbENhcGFiaWxpdHkuU2l6ZSA8IHNp emVvZihFRklfVENHMl9CT09UX1NFUlZJQ0VfQ0FQQUJJTElUWSkiDQogICAgPiArICAgICAgICAg ICAgICAgICAgICAgKTsNCiAgICA+ICsNCiAgICA+ICsgICAgIEFzc2VydGlvblR5cGUgPSBFRklf VEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KICAgID4gKyAgfQ0KICAgID4gKw0KICAgID4gKyAgU3Ry dWN0dXJlVmVyc2lvbk1ham9yID0gQm9vdFNlcnZpY2VDYXAuU3RydWN0dXJlVmVyc2lvbi5NYWpv cjsNCiAgICA+ICsgIFN0cnVjdHVyZVZlcnNpb25NaW5vciA9IEJvb3RTZXJ2aWNlQ2FwLlN0cnVj dHVyZVZlcnNpb24uTWlub3I7DQogICAgPiArDQogICAgPiArICAvLyBJZiB0aGUgaW5wdXQgUHJv dG9jb2xDYXBhYmlsaXR5LlNpemUgPCBzaXplb2YoRUZJX1RDRzJfQk9PVF9TRVJWSUNFX0NBUEFC SUxJVFkpIHRoZSBmdW5jdGlvbiB3aWxsIGluaXRpYWxpemUgdGhlIGZpZWxkcyBpbmNsdWRlZCBp biBQcm90b2NvbENhcGFiaWxpdHkuU2l6ZS4NCiAgICA+ICsgIGlmICgoU3RydWN0dXJlVmVyc2lv bk1ham9yICE9IDEpIHwgKFN0cnVjdHVyZVZlcnNpb25NaW5vciAhPSAxKSkgew0KICAgID4gKyAg ICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KICAgID4NCiAgICA+ICsgICAgICAgICAg ICAgICAgICAgICBTdGFuZGFyZExpYiwNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAg ICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCiAgICA+DQogICAgPiArICAgICAgICAgICAg ICAgICAgICAgTCJcclxuVENHMiBQcm90b2NvbCBHZXRDYXBhYmxpdHkgVGVzdDogVW5leHBlY3Rl ZCBzdHJ1Y3QgdmVyc2lvbiBudW1iZXJzIHJldHVybmVkIg0KICAgID4gKyAgICAgICAgICAgICAg ICAgICAgICk7DQogICAgPiArDQogICAgPiArICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1Rf QVNTRVJUSU9OX0ZBSUxFRDsNCiAgICA+ICsgIH0NCiAgICA+ICsNCiAgICA+ICsgIFByb3RvY29s VmVyc2lvbk1ham9yID0gQm9vdFNlcnZpY2VDYXAuUHJvdG9jb2xWZXJzaW9uLk1ham9yOw0KICAg ID4gKyAgUHJvdG9jb2xWZXJzaW9uTWlub3IgPSBCb290U2VydmljZUNhcC5Qcm90b2NvbFZlcnNp b24uTWlub3I7DQogICAgPiArDQogICAgPiArICBpZiAoKFByb3RvY29sVmVyc2lvbk1ham9yICE9 IDEpIHwgKFByb3RvY29sVmVyc2lvbk1pbm9yICE9IDEpKSB7DQogICAgPiArICAgICBTdGFuZGFy ZExpYi0+UmVjb3JkTWVzc2FnZSAoDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAg IFN0YW5kYXJkTGliLA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVkVS Qk9TRV9MRVZFTF9ERUZBVUxULA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBM IlxyXG5UQ0cyIFByb3RvY29sIEdldENhcGFibGl0eSBUZXN0OiBVbmV4cGVjdGVkIHByb3RvY29s IHZlcnNpb24gbnVtYmVycyByZXR1cm5lZC4iDQogICAgPiArICAgICAgICAgICAgICAgICAgICAg KTsNCiAgICA+ICsNCiAgICA+ICsgICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJ T05fRkFJTEVEOw0KICAgID4gKyAgfQ0KICAgID4gKw0KICAgID4gKyAgU3RhbmRhcmRMaWItPlJl Y29yZEFzc2VydGlvbiAoDQogICAgPiArICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCiAg ICA+ICsgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGUsDQogICAgPiArICAgICAgICAgICAg ICAgICBnVGNnMkNvbmZvcm1hbmNlVGVzdEFzc2VydGlvbkd1aWQwMDIsDQogICAgPiArICAgICAg ICAgICAgICAgICBMIlRDRzJfUFJPVE9DT0wuR2V0Q2FwYWJpbGl0eSgpIC0gR2V0Q2FwYWJpbGl0 eSgpIHNoYWxsIHBvcHVsYXRlIHRoZSBpbmNsdWRlZCBzdHJ1Y3R1cmUgZWxlbWVudHMgYW5kIHJl dHVybiB3aXRoIGEgU3RhdHVzIG9mIEVGSV9CVUZGRVJfVE9PX1NNQUxMIHdoZW4gc3RydWN0dXJl IHNpemUgaXMgc2V0IHRvIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiBFRklfVENHX0JPT1RfU0VSVklD RV9DQVBBQklMSVRZLiIsDQogICAgPiArICAgICAgICAgICAgICAgICBMIiVhOiVkOiBTdGF0dXMg LSAlciIsDQogICAgPiArICAgICAgICAgICAgICAgICBfX0ZJTEVfXywNCiAgICA+ICsgICAgICAg ICAgICAgICAgIChVSU5UTilfX0xJTkVfXywNCiAgICA+ICsgICAgICAgICAgICAgICAgIFN0YXR1 cw0KICAgID4gKyAgICAgICAgICAgICAgICAgKTsNCg0KPiAgIEluIHRoZSBTQ1Qgc3BlYyBkcmFm dCB0aGVyZSBpcyBhIHRlc3Q6DQo+ICAgIGYuIFZlcmlmeSByZXR1cm5lZCBTaXplIGVxdWFsIHRv IHNpemUgb2YgdGhlDQo+ICAgICBFRklfVENHMl9CT09UX1NFUlZJQ0VfQ0FQQUJJTElUWSB1cCB0 byBhbmQgaW5jbHVkaW5nIHRoZSB2ZW5kb3IgSUQNCj4gICAgICBmaWVsZC4NCg0KPiAuLi5idXQg SSBkb24ndCBzZWUgdGhhdCB0ZXN0IGNvdmVyZWQgaW4gdGhlIGNvZGUuDQoNCkkgd2lsbCBhZGQg dGhpcyBjaGVjayB0byB0aGUgbmV4dCByb3VuZCBvZiBlZGl0cyBJIHNlbmQgb3V0Lg0KDQogICAg PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQogICAgPiArfQ0KICAgID4gKw0KICAgID4gK0VGSV9T VEFUVVMNCiAgICA+ICtCQlRlc3RHZXRDYXBhYmlsaXR5Q29uZm9ybWFuY2VUZXN0Q2hlY2twb2lu dDMgKA0KICAgID4gKyAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAq U3RhbmRhcmRMaWIsDQogICAgPiArICBJTiBFRklfVENHMl9QUk9UT0NPTCAgICAgICAgICAgICAg ICAgICAgICpUQ0cyDQogICAgPiArICApDQogICAgPiArew0KICAgID4gKyAgRUZJX1RFU1RfQVNT RVJUSU9OICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlOw0KICAgID4gKyAgRUZJX1NU QVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICAgPiArICBjaGFyIFN0 cnVjdHVyZVZlcnNpb25NYWpvcjsNCiAgICA+ICsgIGNoYXIgU3RydWN0dXJlVmVyc2lvbk1pbm9y Ow0KICAgID4gKyAgY2hhciBQcm90b2NvbFZlcnNpb25NYWpvcjsNCiAgICA+ICsgIGNoYXIgUHJv dG9jb2xWZXJzaW9uTWlub3I7DQogICAgPiArICBFRklfVENHMl9CT09UX1NFUlZJQ0VfQ0FQQUJJ TElUWSAgICAgIEJvb3RTZXJ2aWNlQ2FwOw0KICAgID4gKw0KICAgID4gKyAgQm9vdFNlcnZpY2VD YXAuU2l6ZSA9IHNpemVvZihFRklfVENHMl9CT09UX1NFUlZJQ0VfQ0FQQUJJTElUWSk7DQoNCiAg PiAgQm9vdFNlcnZpY2VDYXAuU2l6ZSBpcyBub3QgdXNlZCBpbiB0aGlzIHRlc3QsIHNvIHNob3Vs ZCBiZSBhYmxlIHRvDQogICAgZGVsZXRlIHRoZSBhYm92ZSBsaW5lLg0KDQogICBCb290U2Vydmlj ZUNhcC5TaXplIG5lZWRzIHRvIGJlIHNldCBzbyB0aGF0IEdldENhcGFiaWxpdHkga25vd3MgaG93 IG11Y2ggb2YgdGhlIHN0cnVjdCB0byBmaWxsIG91dC4gRXZlbiB0aG91Z2ggaXQgaXMgbm90IGNo ZWNrZWQgaXQgc3RpbGwgbmVlZHMgdG8gYmUgc2V0IGJlZm9yZSBjYWxsaW5nICBHZXRDYXBhYmls dHkuDQoNCiAgICA+ICsgIFN0YXR1cyA9IFRDRzItPkdldENhcGFiaWxpdHkgKA0KICAgID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRDRzIsDQogICAgPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgJkJvb3RTZXJ2aWNlQ2FwKTsNCiAgICA+ICsNCiAgICA+ICsgIEFzc2VydGlvblR5 cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fUEFTU0VEOw0KICAgID4gKw0KICAgID4gKyAgaWYgKFN0 YXR1cyAhPSBFRklfU1VDQ0VTUykgew0KICAgID4gKyAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVz c2FnZSAoDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0K ICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZB VUxULA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBMIlxyXG5UQ0cyIFByb3Rv Y29sIEdldENhcGFibGl0eSBUZXN0OiBHZXRDYXBhYmlsdHkgc2hvdWxkIHJldHVybiBFRklfU1VD Q0VTUyINCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICApOw0KICAgID4gKw0KICAgID4gKyAg ICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCiAgICA+ICsgIH0N CiAgICA+ICsNCiAgICA+ICsgIFN0cnVjdHVyZVZlcnNpb25NYWpvciA9IEJvb3RTZXJ2aWNlQ2Fw LlN0cnVjdHVyZVZlcnNpb24uTWFqb3I7DQogICAgPiArICBTdHJ1Y3R1cmVWZXJzaW9uTWlub3Ig PSBCb290U2VydmljZUNhcC5TdHJ1Y3R1cmVWZXJzaW9uLk1pbm9yOw0KICAgID4gKw0KICAgID4g KyAgLy8gVENHIEVGSSBQcm90b2NvbCBzcGVjIDYuNC40ICM0DQogICAgPiArICBpZiAoKFN0cnVj dHVyZVZlcnNpb25NYWpvciAhPSAxKSB8IChTdHJ1Y3R1cmVWZXJzaW9uTWlub3IgIT0gMSkpIHsN CiAgICA+ICsgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KICAgID4NCiAgICA+ICsg ICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCiAgICA+DQogICAgPiArICAgICAgICAg ICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCiAgICA+DQogICAgPiArICAg ICAgICAgICAgICAgICAgICAgTCJcclxuVENHMiBQcm90b2NvbCBHZXRDYXBhYmxpdHkgVGVzdDog R2V0Q2FwYWJpbHR5IHNob3VsZCBoYXZlIFN0cnVjdHVyZVZlcnNpb24gMS4xIg0KICAgID4gKyAg ICAgICAgICAgICAgICAgICAgICk7DQogICAgPiArDQogICAgPiArICAgIEFzc2VydGlvblR5cGUg PSBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KICAgID4gKyAgfQ0KICAgID4gKw0KICAgID4g KyAgUHJvdG9jb2xWZXJzaW9uTWFqb3IgPSBCb290U2VydmljZUNhcC5Qcm90b2NvbFZlcnNpb24u TWFqb3I7DQogICAgPiArICBQcm90b2NvbFZlcnNpb25NaW5vciA9IEJvb3RTZXJ2aWNlQ2FwLlBy b3RvY29sVmVyc2lvbi5NaW5vcjsNCiAgICA+ICsNCiAgICA+ICsgIC8vIFRDRyBFRkkgUHJvdG9j b2wgc3BlYyA2LjQuNCAjNA0KICAgID4gKyAgaWYgKChQcm90b2NvbFZlcnNpb25NYWpvciAhPSAx KSB8IChQcm90b2NvbFZlcnNpb25NaW5vciAhPSAxKSkgew0KICAgID4gKyAgICBTdGFuZGFyZExp Yi0+UmVjb3JkTWVzc2FnZSAoDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIFN0 YW5kYXJkTGliLA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9T RV9MRVZFTF9ERUZBVUxULA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBMIlxy XG5UQ0cyIFByb3RvY29sIEdldENhcGFibGl0eSBUZXN0OiBwcm90b2NvbCB2ZXJzaW9uIG11c3Qg YmUgMS4xIg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgICk7DQogICAgPiArDQogICAgPiAr ICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KICAgID4gKyAg fQ0KICAgID4gKw0KICAgID4gKyAgaWYgKCEoQm9vdFNlcnZpY2VDYXAuU3VwcG9ydGVkRXZlbnRM b2dzICYgIEVGSV9UQ0cyX0VWRU5UX0xPR19GT1JNQVRfVENHXzIpKSB7DQogICAgPiArICAgIFN0 YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAg ICAgICAgU3RhbmRhcmRMaWIsDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIEVG SV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAg ICAgIEwiXHJcblRDRzIgUHJvdG9jb2wgR2V0Q2FwYWJsaXR5IFRlc3Q6IEdldENhcGFiaWx0eSBt dXN0IHN1cHBvcnQgVENHMiBldmVudCBsb2cgZm9ybWF0Ig0KICAgID4gKyAgICAgICAgICAgICAg ICAgICAgICk7DQogICAgPiArDQogICAgPiArICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9B U1NFUlRJT05fRkFJTEVEOw0KICAgID4gKyAgfQ0KICAgID4gKw0KICAgID4gKyAgaWYgKEJvb3RT ZXJ2aWNlQ2FwLk51bWJlck9mUGNyQmFua3MgPCAxICkgew0KICAgID4gKyAgICBTdGFuZGFyZExp Yi0+UmVjb3JkTWVzc2FnZSAoDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIFN0 YW5kYXJkTGliLA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9T RV9MRVZFTF9ERUZBVUxULA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBMIlxy XG5UQ0cyIFByb3RvY29sIEdldENhcGFibGl0eSBUZXN0OiBleHBlY3QgYXQgbGVhc3QgMSBQQ1Ig YmFuayINCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICApOw0KICAgID4gKw0KICAgID4gKyAg ICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCiAgICA+ICsgIH0N CiAgICA+ICsNCiAgICA+ICsgIGlmICghKEJvb3RTZXJ2aWNlQ2FwLkhhc2hBbGdvcml0aG1CaXRt YXAgJiBFRklfVENHMl9CT09UX0hBU0hfQUxHX1NIQTI1NikpIHsNCiAgICA+ICsgICAgU3RhbmRh cmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAg ICBTdGFuZGFyZExpYiwNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1ZF UkJPU0VfTEVWRUxfREVGQVVMVCwNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAg TCJcclxuVENHMiBQcm90b2NvbCBHZXRDYXBhYmxpdHkgVGVzdDogdW5leHBlY3RlZCBoYXNoIGFs Z29yaXRobXMgcmVwb3J0ZWQgPSAleCIsDQogICAgPiArICAgICAgICAgICAgICAgICAgICAgQm9v dFNlcnZpY2VDYXAuSGFzaEFsZ29yaXRobUJpdG1hcA0KICAgID4gKyAgICAgICAgICAgICAgICAg ICAgICk7DQogICAgPiArDQogICAgPiArICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NF UlRJT05fRkFJTEVEOw0KICAgID4gKyAgfQ0KICAgID4gKw0KICAgID4gKyAgaWYgKCEofkJvb3RT ZXJ2aWNlQ2FwLkFjdGl2ZVBjckJhbmtzICYgQm9vdFNlcnZpY2VDYXAuSGFzaEFsZ29yaXRobUJp dG1hcCkgPT0gMCkgew0KDQogICA+IFRoZSBhYm92ZSB0ZXN0IGRvZXNuJ3QgbG9vayBjb3JyZWN0 IHRvIG1lLiAgTmVlZCB0byBzYW5pdHkgY2hlY2sgdGhhdC4NCg0KICAgQWZ0ZXIgbG9va2luZyBh dCBpdCBmdXJ0aGVyIEkgYWdyZWUuIFRoZSBjaGVjayBzaG91bGQgbG9vayBzb21ldGhpbmcgbGlr ZSAoKEJvb3RTZXJ2aWNlQ2FwLkFjdGl2ZVBjckJhbmtzICYgfkJvb3RTZXJ2aWNlQ2FwLkhhc2hB bGdvcml0aG1CaXRtYXApICE9IDApDQoNCiAgICA+ICsgICAgU3RhbmRhcmRMaWItPlJlY29yZE1l c3NhZ2UgKA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwN CiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVG QVVMVCwNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgTCJcclxuVENHMiBQcm90 b2NvbCBHZXRDYXBhYmxpdHkgVGVzdDogQWN0aXZlUGNyQmFua3MgaXMgbm90IGEgc3Vic2V0IG9m IEhhc2hBbGdvcml0aG1CaXRtYXAiDQogICAgPiArICAgICAgICAgICAgICAgICAgICAgKTsNCiAg ICA+ICsNCiAgICA+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlM RUQ7DQogICAgPiArICB9DQogICAgPiArDQogICAgPiArICBpZiAoIShCb290U2VydmljZUNhcC5B Y3RpdmVQY3JCYW5rcyAmIEVGSV9UQ0cyX0JPT1RfSEFTSF9BTEdfU0hBMjU2KSkgew0KDQogICA+ IEluIHRoZSBTQ1Qgc3BlYyB0aGUgdGVzdCBzYXlzIHRvIHZlcmlmeSB0aGF0IEFjdGl2ZVBjckJh bmtzIGluY2x1ZGVzDQogICAgPlNIQTI1NiwgU0hBMzg0LCBvciBTSEE1MTIuICBBcyB3cml0dGVu IHRoZSB0ZXN0IHdvdWxkIGZhaWwgaWYgYWN0aXZlIHBjcg0KICAgID5iYW5rcyB3YXMgU0hBMzg0 Lg0KDQogICBJIGhhdmUgZGVjaWRlZCB0byBjaGFuZ2UgdGhlIHNwZWMgdG8gb25seSBjaGVjayBm b3IgU0hBXzI1NiBpbiB0aGlzIGNhc2UuIDM4NCBhbmQgNTEyIHNob3VsZCBvbmx5IGJlIGltcGxl bWVudGVkIGlmIDI1NiBpcyBpbXBsZW1lbnRlZCBidXQgd2Ugd29udCBjaGVjayBmb3IgdGhhdC4N Cg0KICAgIFRoYW5rcywNCiAgICBKb3NlcGgNCg0K77u/T24gMi8xLzIyLCAxMjozMyBQTSwgIlN0 dWFydCBZb2RlciIgPHN0dWFydC55b2RlckBhcm0uY29tPiB3cm90ZToNCg0KICAgIFNlZSBpbmxp bmUgY29tbWVudHMuLi4NCg0KICAgID4gK0VGSV9TVEFUVVMNCiAgICA+ICtCQlRlc3RHZXRDYXBh YmlsaXR5Q29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDIgKA0KICAgID4gKyAgSU4gRUZJX1NUQU5E QVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAqU3RhbmRhcmRMaWIsDQogICAgPiArICBJTiBF RklfVENHMl9QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAgICpUQ0cyDQogICAgPiArICApDQog ICAgPiArew0KICAgID4gKyAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICBB c3NlcnRpb25UeXBlOw0KICAgID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQogICAgPiArICBjaGFyIFN0cnVjdHVyZVZlcnNpb25NYWpvcjsNCiAgICA+ ICsgIGNoYXIgU3RydWN0dXJlVmVyc2lvbk1pbm9yOw0KICAgID4gKyAgY2hhciBQcm90b2NvbFZl cnNpb25NYWpvcjsNCiAgICA+ICsgIGNoYXIgUHJvdG9jb2xWZXJzaW9uTWlub3I7DQogICAgPiAr DQogICAgPiArICBFRklfVENHMl9CT09UX1NFUlZJQ0VfQ0FQQUJJTElUWSAgICAgIEJvb3RTZXJ2 aWNlQ2FwOw0KICAgID4gKyAgQm9vdFNlcnZpY2VDYXAuU2l6ZSA9IHNpemVvZihVSU5UOCkgKyAo c2l6ZW9mKEVGSV9UQ0cyX1ZFUlNJT04pICogMik7DQogICAgPiArDQogICAgPiArICBTdGF0dXMg PSBUQ0cyLT5HZXRDYXBhYmlsaXR5ICgNCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBUQ0cyLA0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZCb290U2VydmljZUNh cCk7DQogICAgPiArDQogICAgPiArICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9O X1BBU1NFRDsNCiAgICA+ICsNCiAgICA+ICsgIC8vIElmIHRoZSBpbnB1dCBQcm90b2NvbENhcGFi aWxpdHkuU2l6ZSA8IHNpemVvZihFRklfVENHMl9CT09UX1NFUlZJQ0VfQ0FQQUJJTElUWSkgdGhl IGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gRUZJX0JVRkZFUl9UT09fU01BTEwNCiAgICA+ICsgIGlm IChTdGF0dXMgIT0gRUZJX0JVRkZFUl9UT09fU01BTEwpIHsNCiAgICA+ICsgICAgIFN0YW5kYXJk TGliLT5SZWNvcmRNZXNzYWdlICgNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAg U3RhbmRhcmRMaWIsDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJC T1NFX0xFVkVMX0RFRkFVTFQsDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIEwi XHJcblRDRzIgUHJvdG9jb2wgR2V0Q2FwYWJsaXR5IFRlc3Q6IERpZCBub3QgcmV0dXJuIFN0YXR1 cyA9PSBFRklfQlVGRkVSX1RPT19TTUFMTCB3aXRoIGlucHV0IFByb3RvY29sQ2FwYWJpbGl0eS5T aXplIDwgc2l6ZW9mKEVGSV9UQ0cyX0JPT1RfU0VSVklDRV9DQVBBQklMSVRZKSINCiAgICA+ICsg ICAgICAgICAgICAgICAgICAgICApOw0KICAgID4gKw0KICAgID4gKyAgICAgQXNzZXJ0aW9uVHlw ZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQogICAgPiArICB9DQogICAgPiArDQogICAg PiArICBTdHJ1Y3R1cmVWZXJzaW9uTWFqb3IgPSBCb290U2VydmljZUNhcC5TdHJ1Y3R1cmVWZXJz aW9uLk1ham9yOw0KICAgID4gKyAgU3RydWN0dXJlVmVyc2lvbk1pbm9yID0gQm9vdFNlcnZpY2VD YXAuU3RydWN0dXJlVmVyc2lvbi5NaW5vcjsNCiAgICA+ICsNCiAgICA+ICsgIC8vIElmIHRoZSBp bnB1dCBQcm90b2NvbENhcGFiaWxpdHkuU2l6ZSA8IHNpemVvZihFRklfVENHMl9CT09UX1NFUlZJ Q0VfQ0FQQUJJTElUWSkgdGhlIGZ1bmN0aW9uIHdpbGwgaW5pdGlhbGl6ZSB0aGUgZmllbGRzIGlu Y2x1ZGVkIGluIFByb3RvY29sQ2FwYWJpbGl0eS5TaXplLg0KICAgID4gKyAgaWYgKChTdHJ1Y3R1 cmVWZXJzaW9uTWFqb3IgIT0gMSkgfCAoU3RydWN0dXJlVmVyc2lvbk1pbm9yICE9IDEpKSB7DQog ICAgPiArICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQogICAgPg0KICAgID4gKyAg ICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KICAgID4NCiAgICA+ICsgICAgICAgICAg ICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KICAgID4NCiAgICA+ICsgICAg ICAgICAgICAgICAgICAgICBMIlxyXG5UQ0cyIFByb3RvY29sIEdldENhcGFibGl0eSBUZXN0OiBV bmV4cGVjdGVkIHN0cnVjdCB2ZXJzaW9uIG51bWJlcnMgcmV0dXJuZWQiDQogICAgPiArICAgICAg ICAgICAgICAgICAgICAgKTsNCiAgICA+ICsNCiAgICA+ICsgICAgIEFzc2VydGlvblR5cGUgPSBF RklfVEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KICAgID4gKyAgfQ0KICAgID4gKw0KICAgID4gKyAg UHJvdG9jb2xWZXJzaW9uTWFqb3IgPSBCb290U2VydmljZUNhcC5Qcm90b2NvbFZlcnNpb24uTWFq b3I7DQogICAgPiArICBQcm90b2NvbFZlcnNpb25NaW5vciA9IEJvb3RTZXJ2aWNlQ2FwLlByb3Rv Y29sVmVyc2lvbi5NaW5vcjsNCiAgICA+ICsNCiAgICA+ICsgIGlmICgoUHJvdG9jb2xWZXJzaW9u TWFqb3IgIT0gMSkgfCAoUHJvdG9jb2xWZXJzaW9uTWlub3IgIT0gMSkpIHsNCiAgICA+ICsgICAg IFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCiAgICA+DQogICAgPiArICAgICAgICAgICAg ICAgICAgICAgU3RhbmRhcmRMaWIsDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAg IEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAg ICAgICAgIEwiXHJcblRDRzIgUHJvdG9jb2wgR2V0Q2FwYWJsaXR5IFRlc3Q6IFVuZXhwZWN0ZWQg cHJvdG9jb2wgdmVyc2lvbiBudW1iZXJzIHJldHVybmVkLiINCiAgICA+ICsgICAgICAgICAgICAg ICAgICAgICApOw0KICAgID4gKw0KICAgID4gKyAgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNU X0FTU0VSVElPTl9GQUlMRUQ7DQogICAgPiArICB9DQogICAgPiArDQogICAgPiArICBTdGFuZGFy ZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCiAgICA+ICsgICAgICAgICAgICAgICAgIFN0YW5kYXJk TGliLA0KICAgID4gKyAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZSwNCiAgICA+ICsgICAg ICAgICAgICAgICAgIGdUY2cyQ29uZm9ybWFuY2VUZXN0QXNzZXJ0aW9uR3VpZDAwMiwNCiAgICA+ ICsgICAgICAgICAgICAgICAgIEwiVENHMl9QUk9UT0NPTC5HZXRDYXBhYmlsaXR5KCkgLSBHZXRD YXBhYmlsaXR5KCkgc2hhbGwgcG9wdWxhdGUgdGhlIGluY2x1ZGVkIHN0cnVjdHVyZSBlbGVtZW50 cyBhbmQgcmV0dXJuIHdpdGggYSBTdGF0dXMgb2YgRUZJX0JVRkZFUl9UT09fU01BTEwgd2hlbiBz dHJ1Y3R1cmUgc2l6ZSBpcyBzZXQgdG8gbGVzcyB0aGFuIHRoZSBzaXplIG9mIEVGSV9UQ0dfQk9P VF9TRVJWSUNFX0NBUEFCSUxJVFkuIiwNCiAgICA+ICsgICAgICAgICAgICAgICAgIEwiJWE6JWQ6 IFN0YXR1cyAtICVyIiwNCiAgICA+ICsgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KICAgID4g KyAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KICAgID4gKyAgICAgICAgICAgICAg ICAgU3RhdHVzDQogICAgPiArICAgICAgICAgICAgICAgICApOw0KDQogICAgSW4gdGhlIFNDVCBz cGVjIGRyYWZ0IHRoZXJlIGlzIGEgdGVzdDoNCg0KICAgICAgIGYuIFZlcmlmeSByZXR1cm5lZCBT aXplIGVxdWFsIHRvIHNpemUgb2YgdGhlDQogICAgICAgRUZJX1RDRzJfQk9PVF9TRVJWSUNFX0NB UEFCSUxJVFkgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgdmVuZG9yIElEDQogICAgICAgZmllbGQu DQoNCiAgICAuLi5idXQgSSBkb24ndCBzZWUgdGhhdCB0ZXN0IGNvdmVyZWQgaW4gdGhlIGNvZGUu DQoNCiAgICA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCiAgICA+ICt9DQogICAgPiArDQogICAg PiArRUZJX1NUQVRVUw0KICAgID4gK0JCVGVzdEdldENhcGFiaWxpdHlDb25mb3JtYW5jZVRlc3RD aGVja3BvaW50MyAoDQogICAgPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RP Q09MICAgICpTdGFuZGFyZExpYiwNCiAgICA+ICsgIElOIEVGSV9UQ0cyX1BST1RPQ09MICAgICAg ICAgICAgICAgICAgICAgKlRDRzINCiAgICA+ICsgICkNCiAgICA+ICt7DQogICAgPiArICBFRklf VEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICAgPiAr ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCiAgICA+ICsg IGNoYXIgU3RydWN0dXJlVmVyc2lvbk1ham9yOw0KICAgID4gKyAgY2hhciBTdHJ1Y3R1cmVWZXJz aW9uTWlub3I7DQogICAgPiArICBjaGFyIFByb3RvY29sVmVyc2lvbk1ham9yOw0KICAgID4gKyAg Y2hhciBQcm90b2NvbFZlcnNpb25NaW5vcjsNCiAgICA+ICsgIEVGSV9UQ0cyX0JPT1RfU0VSVklD RV9DQVBBQklMSVRZICAgICAgQm9vdFNlcnZpY2VDYXA7DQogICAgPiArDQogICAgPiArICBCb290 U2VydmljZUNhcC5TaXplID0gc2l6ZW9mKEVGSV9UQ0cyX0JPT1RfU0VSVklDRV9DQVBBQklMSVRZ KTsNCg0KICAgIEJvb3RTZXJ2aWNlQ2FwLlNpemUgaXMgbm90IHVzZWQgaW4gdGhpcyB0ZXN0LCBz byBzaG91bGQgYmUgYWJsZSB0bw0KICAgIGRlbGV0ZSB0aGUgYWJvdmUgbGluZS4NCg0KICAgID4g KyAgU3RhdHVzID0gVENHMi0+R2V0Q2FwYWJpbGl0eSAoDQogICAgPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgVENHMiwNCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAmQm9v dFNlcnZpY2VDYXApOw0KICAgID4gKw0KICAgID4gKyAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNU X0FTU0VSVElPTl9QQVNTRUQ7DQogICAgPiArDQogICAgPiArICBpZiAoU3RhdHVzICE9IEVGSV9T VUNDRVNTKSB7DQogICAgPiArICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCiAgICA+ DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQogICAgPg0KICAgID4g KyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQogICAgPg0K ICAgID4gKyAgICAgICAgICAgICAgICAgICAgIEwiXHJcblRDRzIgUHJvdG9jb2wgR2V0Q2FwYWJs aXR5IFRlc3Q6IEdldENhcGFiaWx0eSBzaG91bGQgcmV0dXJuIEVGSV9TVUNDRVNTIg0KICAgID4g KyAgICAgICAgICAgICAgICAgICAgICk7DQogICAgPiArDQogICAgPiArICAgIEFzc2VydGlvblR5 cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KICAgID4gKyAgfQ0KICAgID4gKw0KICAg ID4gKyAgU3RydWN0dXJlVmVyc2lvbk1ham9yID0gQm9vdFNlcnZpY2VDYXAuU3RydWN0dXJlVmVy c2lvbi5NYWpvcjsNCiAgICA+ICsgIFN0cnVjdHVyZVZlcnNpb25NaW5vciA9IEJvb3RTZXJ2aWNl Q2FwLlN0cnVjdHVyZVZlcnNpb24uTWlub3I7DQogICAgPiArDQogICAgPiArICAvLyBUQ0cgRUZJ IFByb3RvY29sIHNwZWMgNi40LjQgIzQNCiAgICA+ICsgIGlmICgoU3RydWN0dXJlVmVyc2lvbk1h am9yICE9IDEpIHwgKFN0cnVjdHVyZVZlcnNpb25NaW5vciAhPSAxKSkgew0KICAgID4gKyAgICBT dGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAg ICAgICAgIFN0YW5kYXJkTGliLA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBF RklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAg ICAgICBMIlxyXG5UQ0cyIFByb3RvY29sIEdldENhcGFibGl0eSBUZXN0OiBHZXRDYXBhYmlsdHkg c2hvdWxkIGhhdmUgU3RydWN0dXJlVmVyc2lvbiAxLjEiDQogICAgPiArICAgICAgICAgICAgICAg ICAgICAgKTsNCiAgICA+ICsNCiAgICA+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FT U0VSVElPTl9GQUlMRUQ7DQogICAgPiArICB9DQogICAgPiArDQogICAgPiArICBQcm90b2NvbFZl cnNpb25NYWpvciA9IEJvb3RTZXJ2aWNlQ2FwLlByb3RvY29sVmVyc2lvbi5NYWpvcjsNCiAgICA+ ICsgIFByb3RvY29sVmVyc2lvbk1pbm9yID0gQm9vdFNlcnZpY2VDYXAuUHJvdG9jb2xWZXJzaW9u Lk1pbm9yOw0KICAgID4gKw0KICAgID4gKyAgLy8gVENHIEVGSSBQcm90b2NvbCBzcGVjIDYuNC40 ICM0DQogICAgPiArICBpZiAoKFByb3RvY29sVmVyc2lvbk1ham9yICE9IDEpIHwgKFByb3RvY29s VmVyc2lvbk1pbm9yICE9IDEpKSB7DQogICAgPiArICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNz YWdlICgNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQog ICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFV TFQsDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIEwiXHJcblRDRzIgUHJvdG9j b2wgR2V0Q2FwYWJsaXR5IFRlc3Q6IHByb3RvY29sIHZlcnNpb24gbXVzdCBiZSAxLjEiDQogICAg PiArICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICA+ICsNCiAgICA+ICsgICAgQXNzZXJ0aW9u VHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQogICAgPiArICB9DQogICAgPiArDQog ICAgPiArICBpZiAoIShCb290U2VydmljZUNhcC5TdXBwb3J0ZWRFdmVudExvZ3MgJiAgRUZJX1RD RzJfRVZFTlRfTE9HX0ZPUk1BVF9UQ0dfMikpIHsNCiAgICA+ICsgICAgU3RhbmRhcmRMaWItPlJl Y29yZE1lc3NhZ2UgKA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBTdGFuZGFy ZExpYiwNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVW RUxfREVGQVVMVCwNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgTCJcclxuVENH MiBQcm90b2NvbCBHZXRDYXBhYmxpdHkgVGVzdDogR2V0Q2FwYWJpbHR5IG11c3Qgc3VwcG9ydCBU Q0cyIGV2ZW50IGxvZyBmb3JtYXQiDQogICAgPiArICAgICAgICAgICAgICAgICAgICAgKTsNCiAg ICA+ICsNCiAgICA+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlM RUQ7DQogICAgPiArICB9DQogICAgPiArDQogICAgPiArICBpZiAoQm9vdFNlcnZpY2VDYXAuTnVt YmVyT2ZQY3JCYW5rcyA8IDEgKSB7DQogICAgPiArICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNz YWdlICgNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQog ICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFV TFQsDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIEwiXHJcblRDRzIgUHJvdG9j b2wgR2V0Q2FwYWJsaXR5IFRlc3Q6IGV4cGVjdCBhdCBsZWFzdCAxIFBDUiBiYW5rIg0KICAgID4g KyAgICAgICAgICAgICAgICAgICAgICk7DQogICAgPiArDQogICAgPiArICAgIEFzc2VydGlvblR5 cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KICAgID4gKyAgfQ0KICAgID4gKw0KICAg ID4gKyAgaWYgKCEoQm9vdFNlcnZpY2VDYXAuSGFzaEFsZ29yaXRobUJpdG1hcCAmIEVGSV9UQ0cy X0JPT1RfSEFTSF9BTEdfU0hBMjU2KSkgew0KICAgID4gKyAgICBTdGFuZGFyZExpYi0+UmVjb3Jk TWVzc2FnZSAoDQogICAgPg0KICAgID4gKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGli LA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9E RUZBVUxULA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBMIlxyXG5UQ0cyIFBy b3RvY29sIEdldENhcGFibGl0eSBUZXN0OiB1bmV4cGVjdGVkIGhhc2ggYWxnb3JpdGhtcyByZXBv cnRlZCA9ICV4IiwNCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBCb290U2VydmljZUNhcC5I YXNoQWxnb3JpdGhtQml0bWFwDQogICAgPiArICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICA+ ICsNCiAgICA+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7 DQogICAgPiArICB9DQogICAgPiArDQogICAgPiArICBpZiAoISh+Qm9vdFNlcnZpY2VDYXAuQWN0 aXZlUGNyQmFua3MgJiBCb290U2VydmljZUNhcC5IYXNoQWxnb3JpdGhtQml0bWFwKSA9PSAwKSB7 DQoNCiAgICBUaGUgYWJvdmUgdGVzdCBkb2Vzbid0IGxvb2sgY29ycmVjdCB0byBtZS4gIE5lZWQg dG8gc2FuaXR5IGNoZWNrIHRoYXQuDQoNCiAgICA+ICsgICAgU3RhbmRhcmRMaWItPlJlY29yZE1l c3NhZ2UgKA0KICAgID4NCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwN CiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVG QVVMVCwNCiAgICA+DQogICAgPiArICAgICAgICAgICAgICAgICAgICAgTCJcclxuVENHMiBQcm90 b2NvbCBHZXRDYXBhYmxpdHkgVGVzdDogQWN0aXZlUGNyQmFua3MgaXMgbm90IGEgc3Vic2V0IG9m IEhhc2hBbGdvcml0aG1CaXRtYXAiDQogICAgPiArICAgICAgICAgICAgICAgICAgICAgKTsNCiAg ICA+ICsNCiAgICA+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlM RUQ7DQogICAgPiArICB9DQogICAgPiArDQogICAgPiArICBpZiAoIShCb290U2VydmljZUNhcC5B Y3RpdmVQY3JCYW5rcyAmIEVGSV9UQ0cyX0JPT1RfSEFTSF9BTEdfU0hBMjU2KSkgew0KDQogICAg SW4gdGhlIFNDVCBzcGVjIHRoZSB0ZXN0IHNheXMgdG8gdmVyaWZ5IHRoYXQgQWN0aXZlUGNyQmFu a3MgaW5jbHVkZXMNCiAgICBTSEEyNTYsIFNIQTM4NCwgb3IgU0hBNTEyLiAgQXMgd3JpdHRlbiB0 aGUgdGVzdCB3b3VsZCBmYWlsIGlmIGFjdGl2ZSBwY3INCiAgICBiYW5rcyB3YXMgU0hBMzg0Lg0K DQogICAgVGhhbmtzLA0KICAgIFN0dWFydA0KDQpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVu dHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5k IG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNp cGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRp c2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBw dXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBU aGFuayB5b3UuDQo=