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.web09.9538.1660035700665165376 for ; Tue, 09 Aug 2022 02:01:41 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=odWmH6gj; spf=pass (domain: arm.com, ip: 40.107.20.48, mailfrom: sami.mujawar@arm.com) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Pg+4zeTtmWCpCeA+mJntzuZBfa12V5xAvTWNz05dln/+hrI7Xi+fsmpnHQyN/4tu4nuZt2O0byE/7Wjhuq1pVAYfZyOGOkCW+Z3zt/aXCbkfOBFaaQRAJn+3oJ4E5SlsCAyTgaQFKSk+mkLxsCMHVHe0XAhuqxHEOYivtTOineVQ5IRlIABqIA1QE0X2I2Df8LLSqIxAAKymz/GMS8el/6S/SIXThjkiQIrxEeHl6zfqmXiZdLrcKR844RPZaH1d/tjLqrvaKUkzsvJkeOFAHDbMkgKVH3BsyFAsL4aCdRpMxl7Wgk5GU+HWonaQZhlOegoyX+aGsAb2ezTVfKKIQg== ARC-Message-Signature: i=2; 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=rHt9/K4Vf3s/nyrTXEDKVLQg1nE3ZtWEYcMRp1doS5g=; b=FWkEh2ImpLxy61SuOmF/HXhPMMiSmaxS29fjR7gdUgD1IIQZgQvRG7E+X2zBHC+NYCEttelaEw4EhpX9kTgOPiHgnD2xUBiH5q9mTGokAQcJ5RPWnq06iz3y9MBai9RlOZ9/ms78M0byTIyhUmECQ+YhY85/fIoGM5Z+gqM9V+9J5xiGPvpRc4scp8Cqt/SocfGQAFOmpws94RshFGKWUqfo13Gk2NzY8/FID3QmNAJsGL8dAB/3uITfI2ZAo/Ww96kQQR+tSIVCIhFGEp93CN2TsSD3ytQ1T1SMsrpks+5+95EkESfcQE1/7gRQVMoJOFBg4Cc+5yZHzAL/BYbaUA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=rHt9/K4Vf3s/nyrTXEDKVLQg1nE3ZtWEYcMRp1doS5g=; b=odWmH6gjLcTPur0efUxgMpD2BLjguGjwo/Uhb1a5HdZiRh4uFRUjNJU+x7jqFMr0TBgGB1ujchac3ul+4VuWMYyGGTojHRdlmXvKW5p5aKwTW9R/pVIeZtrbOQ1Q+Tle7e6i8rWgEDzFGEbcP/gVExSvaEx+eXYSrHm4XZFMEpw= Received: from AM7PR03CA0013.eurprd03.prod.outlook.com (2603:10a6:20b:130::23) by VI1PR08MB4319.eurprd08.prod.outlook.com (2603:10a6:803:f9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.18; Tue, 9 Aug 2022 09:01:36 +0000 Received: from AM5EUR03FT045.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:130:cafe::f5) by AM7PR03CA0013.outlook.office365.com (2603:10a6:20b:130::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.21 via Frontend Transport; Tue, 9 Aug 2022 09:01:36 +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 AM5EUR03FT045.mail.protection.outlook.com (10.152.17.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16 via Frontend Transport; Tue, 9 Aug 2022 09:01:35 +0000 Received: ("Tessian outbound 6a3290ff1310:v123"); Tue, 09 Aug 2022 09:01:35 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: de4f8f381184a2f5 X-CR-MTA-TID: 64aa7808 Received: from c9169484fdbb.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8C1A3953-CF9B-4AD6-881A-4BBCEAA850E8.1; Tue, 09 Aug 2022 09:01:23 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id c9169484fdbb.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 09 Aug 2022 09:01:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TMKQzOrnZyF1zaLr9uWIGUrKVMDAQJAiSSJ0uDDHCJgOvfw9DmTKPJRA7syQudVKWZXR2ijqUroXvmvDBqahkdctiPTIbPwODXadqyBoRdvUYPn14NNtpjJCjzwdyJ80gq1iFe3koy36B8kHB+frfvyw3qNqT+wPBuGGrZuaHAxkMifKUCUGQtBYjBztKRnDAaj/WqOdEjSt5Z59Nei0AKs+122bHWbVC0M0gs/31UtsyW8rWaHMXa/bPHHtygyqdS3FxV6L/96hsojKq8Xq+sOFS5Ps8noLEe+QNHNbEIFsIisFQcFRfa6dsaE3klnYkU73Ahf1qKsasaxbexhMcQ== 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=rHt9/K4Vf3s/nyrTXEDKVLQg1nE3ZtWEYcMRp1doS5g=; b=Uvlejwn4K4l/Rea8D/p4g6VulWcAN4WKI0jWjC4IBBNbJp8J2f14c7YXjtTvDJDlbXrcXyHjDPCFsu7jik89eonqSMgzkxNw8BcbEgFO3D8t+eTES/m+9C7YgpZ6Z4XuWM1Z3L/NjnO5r2Ya6GJlxAtaNNaHEM/s8kie8CuVgaoqAwLVlLJ2Ya0oa9dUjHuoWhm75XbRZgEcESf2Bx1xEymk+onhDlvXD6AmyZMbQPxBfYyLtt7ftttQDO/oswLF6izMld/dZTO6J/VWBGD3pq2pCfsfaKuID8YFQLf35O2cMSG2MEa7WNetPndgHhIfEGqY6i9olN0k6U8Vww2ZVQ== 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=rHt9/K4Vf3s/nyrTXEDKVLQg1nE3ZtWEYcMRp1doS5g=; b=odWmH6gjLcTPur0efUxgMpD2BLjguGjwo/Uhb1a5HdZiRh4uFRUjNJU+x7jqFMr0TBgGB1ujchac3ul+4VuWMYyGGTojHRdlmXvKW5p5aKwTW9R/pVIeZtrbOQ1Q+Tle7e6i8rWgEDzFGEbcP/gVExSvaEx+eXYSrHm4XZFMEpw= Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by AM6PR08MB3191.eurprd08.prod.outlook.com (2603:10a6:209:41::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.15; Tue, 9 Aug 2022 09:01:21 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::d562:5a52:f638:7fe9]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::d562:5a52:f638:7fe9%4]) with mapi id 15.20.5504.020; Tue, 9 Aug 2022 09:01:21 +0000 From: "Sami Mujawar" To: Kun Qin , "devel@edk2.groups.io" CC: Alexei Fedorov , Joe Lopez , Pierre Gondois , nd Subject: Re: [PATCH v3 4/6] DynamicTablesPkg: DynamicTableManagerDxe: Added check for installed tables Thread-Topic: [PATCH v3 4/6] DynamicTablesPkg: DynamicTableManagerDxe: Added check for installed tables Thread-Index: AQHYpJ+tlZOATDyShk+Xa3875ZMawa2lBd4AgAArCICAAIc7gIAArJIA Date: Tue, 9 Aug 2022 09:01:21 +0000 Message-ID: <7FC748E2-5436-450E-BC33-F9437168A88A@arm.com> References: <20220731053727.536-1-kuqin12@gmail.com> <20220731053727.536-5-kuqin12@gmail.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.63.22070801 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: d503f434-f145-4602-32e3-08da79e5c35b x-ms-traffictypediagnostic: AM6PR08MB3191:EE_|AM5EUR03FT045:EE_|VI1PR08MB4319:EE_ 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: n0f6S1fZN19Tti58DjYwiAaKxqKOSDKMQfXbRUxRUbHr6HtuAOVFtI2z09iCL84h8oSfb9jhxdpd5kRhfv8VcazZ7PsKEoc1ZR49k12P8FxoKlcxokKhmTy+FCnvnXJstzWpAxn2ReWSSlx4cDc7EU88ClOQGMGUiY5a3zmR/dQkiCbDxJreL308cuVpasDcu2breNVJYHDKnPTDHJYk5W4nakj+iL/UZjMdIcSQabSiiv1yRYwCVHd9WNYjfFCAtwbDvJRGdJ3Pk4gS+R7LCFFKlSGH/XCNF9RwvYtlGavkZ5JF8g115lu7e1YOGJmGAdFYLGdYhP3Blw5cWrhwvcYCGpz58Qv0m1RkAqIf4FPZQMdI8JuNuxktFbr+M4Na0IXU+w8ekoFvop6Of+qnAh3BmFkew3wYiueR54ybzKA6kn50LI42FpEjjcu2FOmWJGNukLg4aM6E9TIy3qu+nHRadpAU1sQGfO6VRDbmbN4yKr9IWjb7RgV3c0hZB5uZ7ITGBRFGQ72MxphCdwdYzFOrWESdjBSgs3EKh2EFrRhBRi4vKrCwCdOuL3DBgCh0v8AIAc1NY2HZ+Ssq3VnKjWJPTeN28crRuIyRicmpJ39r2ssmZ1TbGdqhrVRdICBRBQm7ZCBBcYYCwLirxDTpKqnKROqZg6/N5kkf/MBuqlmH1wZqi2L1+WF7s3H1XxcwwHqNycKnBnf+0f73S3xdLLN3L98/JEWDTlFHjc06uwtV/ucnZo5XX3Vn6MPOugjwYX+MZmX8/zoa2eoP9ntnisvmaWeoRV6R/HdA5aLxFj9QT4PaIIEMoZHpLb9PKZAdEP0QLckl1CCFrhc8pSqRLqbIiOlFvCKGDuQAd0m+mUQ= 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:(13230016)(4636009)(346002)(366004)(136003)(376002)(39860400002)(396003)(2906002)(38070700005)(86362001)(122000001)(38100700002)(66446008)(64756008)(110136005)(8676002)(66476007)(66556008)(66946007)(4326008)(91956017)(76116006)(54906003)(316002)(6506007)(30864003)(8936002)(71200400001)(2616005)(6512007)(53546011)(26005)(186003)(83380400001)(5660300002)(41300700001)(478600001)(966005)(6486002)(33656002)(36756003)(45980500001)(579004);DIR:OUT;SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3191 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: AM5EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e8a5913f-7a7f-4989-dd73-08da79e5bab0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hKIz0rFlxgHU5A16DzPjhuYlHo0VrPNC0QQwTVgD2HeHNdDSEQDZqzmrI2MSOrb6OmbRIGl/6c+FPldfhwUvr5TRsVTDP6kKvtmhbOqwcjKhgiGVN04T8T6QORAXEyH4LtQa6tXB1OdZdW3SQ789l1+OYXsU1+eLceDBDPFEF8xxM2QoD1aUn4Jp99ZHmqBU8tK9hXYU2pDJSlFbHrpy4IAwcSflcBdbxWRk5YIFwmO2zE+b/NYSQqP1buyr1bBjbA3jvfQH5BzMfaVgg6XMusviLVDPD55tyDHweILWqNdnkxy8gPmvDck4pN/4+U+KceIJu5RdFHgpAJQ1yWpPLRG6HtNN+nDkj93FypVAUFjruMqG+BstxR5YUD1xcHSfMekI4+F45Xnpr6p/Hbl8c+IrO36AjK+7TvsWTmpWZX1aNxnVJYYGqJ0nWKYb6m7ZqgoboYmgdPcyVKultmwSo3WP4o/9hIVWuiFwYFjy1clGHbY/rkYNQZiv6mryYaSs9wq39heY7TDpbTkiDJ5fgSPApRa4kG3+whj2pzUO2q38CmBamzmGDXA1BPysyCZPX1Mse78jOtTV/k45pQtwtcdZ0lXYbSCF5QhC9loo0S8JSWHDx4908GvNIVCzpYUsCBaPlbX1cO8P7+yIIXr/LY0Ps07SGAOjbWXaOacaP0R6X43dbQ9yc3PuyZ3oxeOC8oblmm2NGp5eALaPUDPhUr3cPE4MjyNytuo6wj+BlZWC5ZHGKfMKzOlWrwUK2okTfONgbwtAiJBx5AuqviWARsxyb0potc9I3csxWAV5oTXbFL0Nn9+Lyd3bAi0WqMY8vvi4cS5IwQC8IQ/60t/xAA== 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:(13230016)(4636009)(39860400002)(346002)(136003)(396003)(376002)(40470700004)(46966006)(36840700001)(5660300002)(70206006)(8676002)(70586007)(4326008)(54906003)(316002)(110136005)(40460700003)(36756003)(82310400005)(86362001)(2906002)(30864003)(8936002)(36860700001)(33656002)(40480700001)(83380400001)(47076005)(356005)(82740400003)(81166007)(6486002)(41300700001)(6512007)(6506007)(26005)(478600001)(45080400002)(2616005)(966005)(186003)(53546011)(336012);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2022 09:01:35.7570 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d503f434-f145-4602-32e3-08da79e5c35b 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: AM5EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB4319 Content-Language: en-GB Content-Type: text/plain; charset="utf-8" Content-ID: <3FC7E9D7F5D48947BD5AD6143D677F9E@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 SGkgS3VuLA0KDQpQbGVhc2UgZmluZCBteSByZXNwb25zZSBpbmxpbmUgbWFya2VkIFtTQU1JXS4N Cg0KUmVnYXJkcywNCg0KU2FtaSBNdWphd2FyDQoNCu+7v09uIDA5LzA4LzIwMjIsIDAwOjQ0LCAi S3VuIFFpbiIgPGt1cWluMTJAZ21haWwuY29tPiB3cm90ZToNCg0KICAgIEhpIFNhbWksDQoNCiAg ICBUaGFuayB5b3UgZm9yIHRha2luZyB0aW1lIHRlc3RpbmcgdGhpcyBjaGFuZ2UhDQoNCiAgICBJ IGhhdmUgYSBxdWVzdGlvbiBhYm91dCBvbmUgY29tbWVudCB5b3UgaGF2ZSBmb3IgdGhpcyBzcGVj aWZpYyBwYXRjaCANCiAgICBpbmxpbmUgKG1hcmtlZCB3aXRoIFtLUV0pLg0KICAgIENvdWxkIHlv dSBwbGVhc2UgcHJvdmlkZSBtb3JlIGRldGFpbHM/DQoNCiAgICBJIGFsc28gcmVzcG9uZGVkIHRv IHlvdXIgb3RoZXIgY29tbWVudHMsIHBsZWFzZSBsZXQgbWUga25vdyBpZiB0aGUgDQogICAgcHJv cG9zZWQgY2hhbmdlIG1ha2VzDQogICAgc2Vuc2UgdG8geW91LiBMb29raW5nIGZvcndhcmQgdG8g eW91ciByZXBseS4NCg0KICAgIFRoYW5rcywNCiAgICBLdW4NCg0KICAgIE9uIDgvOC8yMDIyIDg6 MzkgQU0sIFNhbWkgTXVqYXdhciB3cm90ZToNCiAgICA+IEhpIEt1biwNCiAgICA+DQogICAgPiBQ bGVhc2UgZmluZCBteSByZXNwb25zZSBpbmxpbmUgbWFya2VkIFtTQU1JXS4NCiAgICA+DQogICAg PiBSZWdhcmRzLA0KICAgID4NCiAgICA+IFNhbWkgTXVqYXdhcg0KICAgID4NCiAgICA+IE9uIDA4 LzA4LzIwMjIgMDI6MDUgcG0sIFNhbWkgTXVqYXdhciB3cm90ZToNCiAgICA+PiBIaSBLdW4sDQog ICAgPj4NCiAgICA+PiBUaGFuayB5b3UgZm9yIHRoaXMgcGF0Y2guDQogICAgPj4NCiAgICA+PiBQ bGVhc2UgZmluZCBteSByZXNwb25zZSBpbmxpbmUgbWFya2VkIFtTQU1JXS4NCiAgICA+Pg0KICAg ID4+IFJlZ2FyZHMsDQogICAgPj4NCiAgICA+PiBTYW1pIE11amF3YXINCiAgICA+Pg0KICAgID4+ IE9uIDMxLzA3LzIwMjIgMDY6MzcgYW0sIEt1biBRaW4gd3JvdGU6DQogICAgPj4+IFJFRjogaHR0 cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk3DQogICAgPj4+ DQogICAgPj4+IFRoaXMgY2hhbmdlIGFkZGVkIGFuIGV4dHJhIHN0ZXAgdG8gYWxsb3cgY2hlY2sg Zm9yIGluc3RhbGxlZCBBQ1BJIA0KICAgID4+PiB0YWJsZXMuDQogICAgPj4+DQogICAgPj4+IEZv ciBGQURULCBNQURULCBHVERULCBEU0RULCBEQkcyIGFuZCBTUENSIHRhYmxlcywgZWl0aGVyIA0K ICAgID4+PiBwcmUtaW5zdGFsbGVkIG9yDQogICAgPj4+IHN1cHBsaWVkIHRocm91Z2ggQWNwaVRh YmxlSW5mbyBjYW4gYmUgYWNjZXB0ZWQuDQogICAgPj4+DQogICAgPj4+IEFuIGV4dHJhIGNoZWNr IGZvciBGQURUIEFDUEkgdGFibGUgZXhpc3RlbmNlIGR1cmluZyBpbnN0YWxsYXRpb24gDQogICAg Pj4+IHN0ZXAgaXMNCiAgICA+Pj4gYWxzbyBhZGRlZC4NCiAgICA+Pj4NCiAgICA+Pj4gQ2M6IFNh bWkgTXVqYXdhciA8U2FtaS5NdWphd2FyQGFybS5jb20+DQogICAgPj4+IENjOiBBbGV4ZWkgRmVk b3JvdiA8QWxleGVpLkZlZG9yb3ZAYXJtLmNvbT4NCiAgICA+Pj4NCiAgICA+Pj4gQ28tYXV0aG9y ZWQtYnk6IEpvZSBMb3BleiA8am9lbG9wZXpAbWljcm9zb2Z0LmNvbT4NCiAgICA+Pj4gU2lnbmVk LW9mZi1ieTogS3VuIFFpbiA8a3VxaW4xMkBnbWFpbC5jb20+DQogICAgPj4+IFJldmlld2VkLWJ5 OiBQaWVycmUgR29uZG9pcyA8cGllcnJlLmdvbmRvaXNAYXJtLmNvbT4NCiAgICA+Pj4gLS0tDQog ICAgPj4+DQogICAgPj4+IE5vdGVzOg0KICAgID4+PiAgICAgIHYyOg0KICAgID4+PiAgICAgIC0g RnVuY3Rpb24gZGVzY3JpcHRpb24gdXBkYXRlcyBbU2FtaV0NCiAgICA+Pj4gICAgICAtIFJlZmFj dG9yaXplZCB0aGUgdGFibGUgdmVyaWZpY2F0aW9uIFtQaWVycmVdDQogICAgPj4+ICAgICAgICAg ICB2MzoNCiAgICA+Pj4gICAgICAtIEFkZGVkIGRlc2NyaXB0aW9ucyBmb3IgbmV3IHN0cnVjdHVy ZXMgW1BpZXJyZV0NCiAgICA+Pj4gICAgICAtIEFkZGVkIGNoZWNrIGZvciBTRFQgcHJvdG9jb2wg UENEIGJlZm9yZSB1c2luZyBpdCBbUGllcnJlXQ0KICAgID4+Pg0KICAgID4+PiBEeW5hbWljVGFi bGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS9EeW5hbWljVGFibGVNYW5hZ2Vy RHhlLmMgDQogICAgPj4+IHwgMjE0ICsrKysrKysrKysrKy0tLS0tLS0tDQogICAgPj4+IER5bmFt aWNUYWJsZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVNYW5hZ2VyRHhlL0R5bmFtaWNUYWJsZU1h bmFnZXJEeGUuaW5mIA0KICAgID4+PiB8ICAgNCArDQogICAgPj4+ICAgMiBmaWxlcyBjaGFuZ2Vk LCAxMzggaW5zZXJ0aW9ucygrKSwgODAgZGVsZXRpb25zKC0pDQogICAgPj4+DQogICAgPj4+IGRp ZmYgLS1naXQgDQogICAgPj4+IGEvRHluYW1pY1RhYmxlc1BrZy9Ecml2ZXJzL0R5bmFtaWNUYWJs ZU1hbmFnZXJEeGUvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS5jIA0KICAgID4+PiBiL0R5bmFtaWNU YWJsZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVNYW5hZ2VyRHhlL0R5bmFtaWNUYWJsZU1hbmFn ZXJEeGUuYyANCiAgICA+Pj4NCiAgICA+Pj4gaW5kZXggZWQ2MjI5OWY5YmJkLi43ZjNkZWVmMDhh NjYgMTAwNjQ0DQogICAgPj4+IC0tLSANCiAgICA+Pj4gYS9EeW5hbWljVGFibGVzUGtnL0RyaXZl cnMvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS9EeW5hbWljVGFibGVNYW5hZ2VyRHhlLmMNCiAgICA+ Pj4gKysrIA0KICAgID4+PiBiL0R5bmFtaWNUYWJsZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVN YW5hZ2VyRHhlL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUuYw0KICAgID4+PiBAQCAtMTAsNiArMTAs NyBAQA0KICAgID4+PiAgICNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQogICAgPj4+DQog ICAgPj4+ICAgI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+DQogICAgPj4+DQogICAgPj4+ICAg I2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQogICAgPj4+DQog ICAgPj4+ICsjaW5jbHVkZSA8UHJvdG9jb2wvQWNwaVN5c3RlbURlc2NyaXB0aW9uVGFibGUuaD4N CiAgICA+Pj4NCiAgICA+Pj4gICAjaW5jbHVkZSA8UHJvdG9jb2wvQWNwaVRhYmxlLmg+DQogICAg Pj4+DQogICAgPj4+DQogICAgPj4+ICAgLy8gTW9kdWxlIHNwZWNpZmljIGluY2x1ZGUgZmlsZXMu DQogICAgPj4+DQogICAgPj4+IEBAIC0yMiw2ICsyMyw1OCBAQA0KICAgID4+PiAgICNpbmNsdWRl IDxQcm90b2NvbC9EeW5hbWljVGFibGVGYWN0b3J5UHJvdG9jb2wuaD4NCiAgICA+Pj4NCiAgICA+ Pj4gICAjaW5jbHVkZSA8U21iaW9zVGFibGVHZW5lcmF0b3IuaD4NCiAgICA+Pj4NCiAgICA+Pj4N CiAgICA+Pj4gKy8vLw0KICAgID4+Pg0KICAgID4+PiArLy8vIEJpdCBkZWZpbml0aW9ucyBmb3Ig YWNjZXB0YWJsZSBBQ1BJIHRhYmxlIHByZXNlbmNlIGZvcm1hdHMuDQogICAgPj4+DQogICAgPj4+ ICsvLy8gQ3VycmVudGx5IG9ubHkgQUNQSSB0YWJsZXMgcHJlc2VudCBpbiB0aGUgQUNQSSBpbmZv IGxpc3QgYW5kDQogICAgPj4+DQogICAgPj4+ICsvLy8gYWxyZWFkeSBpbnN0YWxsZWQgd2lsbCBj b3VudCB0b3dhcmRzICJUYWJsZSBQcmVzZW50IiBkdXJpbmcNCiAgICA+Pj4NCiAgICA+Pj4gKy8v LyB2ZXJpZmljYXRpb24gcm91dGluZS4NCiAgICA+Pj4NCiAgICA+Pj4gKy8vLw0KICAgID4+Pg0K ICAgID4+PiArI2RlZmluZSBBQ1BJX1RBQkxFX1BSRVNFTlRfSU5GT19MSVNUICBCSVQwDQogICAg Pj4+DQogICAgPj4+ICsjZGVmaW5lIEFDUElfVEFCTEVfUFJFU0VOVF9JTlNUQUxMRUQgIEJJVDEN CiAgICA+Pj4NCiAgICA+Pj4gKw0KICAgID4+Pg0KICAgID4+PiArLy8vDQogICAgPj4+DQogICAg Pj4+ICsvLy8gT3JkZXIgb2YgQUNQSSB0YWJsZSBiZWluZyB2ZXJpZmllZCBkdXJpbmcgcHJlc2Vu Y2UgaW5zcGVjdGlvbi4NCiAgICA+Pj4NCiAgICA+Pj4gKy8vLw0KICAgID4+Pg0KICAgID4+PiAr I2RlZmluZSBBQ1BJX1RBQkxFX1ZFUklGWV9GQURUICAgMA0KICAgID4+Pg0KICAgID4+PiArI2Rl ZmluZSBBQ1BJX1RBQkxFX1ZFUklGWV9NQURUICAgMQ0KICAgID4+Pg0KICAgID4+PiArI2RlZmlu ZSBBQ1BJX1RBQkxFX1ZFUklGWV9HVERUICAgMg0KICAgID4+Pg0KICAgID4+PiArI2RlZmluZSBB Q1BJX1RBQkxFX1ZFUklGWV9EU0RUICAgMw0KICAgID4+Pg0KICAgID4+PiArI2RlZmluZSBBQ1BJ X1RBQkxFX1ZFUklGWV9EQkcyICAgNA0KICAgID4+Pg0KICAgID4+PiArI2RlZmluZSBBQ1BJX1RB QkxFX1ZFUklGWV9TUENSICAgNQ0KICAgID4+Pg0KICAgID4+PiArI2RlZmluZSBBQ1BJX1RBQkxF X1ZFUklGWV9DT1VOVCAgNg0KICAgID4+Pg0KICAgID4+PiArDQogICAgPj4+DQogICAgPj4+ICsv Ly8NCiAgICA+Pj4NCiAgICA+Pj4gKy8vLyBQcml2YXRlIGRhdGEgc3RydWN0dXJlIHRvIHZlcmlm eSB0aGUgcHJlc2VuY2Ugb2YgbWFuZGF0b3J5DQogICAgPj4+DQogICAgPj4+ICsvLy8gb3Igb3B0 aW9uYWwgQUNQSSB0YWJsZXMuDQogICAgPj4+DQogICAgPj4+ICsvLy8NCiAgICA+Pj4NCiAgICA+ Pj4gK3R5cGVkZWYgc3RydWN0IHsNCiAgICA+Pj4NCiAgICA+Pj4gKyAgLy8vIEVTVEQgSUQgZm9y IHRoZSBBQ1BJIHRhYmxlIG9mIGludGVyZXN0Lg0KICAgID4+Pg0KICAgID4+PiArICBFU1REX0FD UElfVEFCTEVfSUQgICAgRXN0ZFRhYmxlSWQ7DQogICAgPj4+DQogICAgPj4+ICsgIC8vLyBTdGFu ZGFyZCBVSU5UMzIgQUNQSSBzaWduYXR1cmUuDQogICAgPj4+DQogICAgPj4+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICBBY3BpVGFibGVTaWduYXR1cmU7DQogICAgPj4+DQogICAgPj4+ICsgIC8v LyA0IGNoYXJhY3RlciBBQ1BJIHRhYmxlIG5hbWUgKHRoZSA1dGggY2hhcjggaXMgZm9yIG51bGwg DQogICAgPj4+IHRlcm1pbmF0b3IpLg0KICAgID4+Pg0KICAgID4+PiArICBDSEFSOCAgICAgICAg ICAgICAgICAgQWNwaVRhYmxlTmFtZVtzaXplb2YgKFVJTlQzMikgKyAxXTsNCiAgICA+Pj4NCiAg ICA+Pj4gKyAgLy8vIEluZGljYXRvciBvbiB3aGV0aGVyIHRoZSBBQ1BJIHRhYmxlIGlzIHJlcXVp cmVkLg0KICAgID4+Pg0KICAgID4+PiArICBCT09MRUFOICAgICAgICAgICAgICAgSXNNYW5kYXRv cnk7DQogICAgPj4+DQogICAgPj4+ICsgIC8vLyBGb3JtYXRzIG9mIHZlcmlmaWVkIHByZXNlbmNl cywgYXMgZGVmaW5lZCBieSANCiAgICA+Pj4gQUNQSV9UQUJMRV9QUkVTRU5UXyoNCiAgICA+Pj4N CiAgICA+Pj4gKyAgLy8vIFRoaXMgZmllbGQgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIDAgYW5k IHdpbGwgYmUgcG9wdWxhdGVkIA0KICAgID4+PiBkdXJpbmcNCiAgICA+Pj4NCiAgICA+Pj4gKyAg Ly8vIHZlcmlmaWNhdGlvbiByb3V0aW5lLg0KICAgID4+Pg0KICAgID4+PiArICBVSU5UMTYgICAg ICAgICAgICAgICAgUHJlc2VuY2U7DQogICAgPj4+DQogICAgPj4+ICt9IEFDUElfVEFCTEVfUFJF U0VOQ0VfSU5GTzsNCiAgICA+Pj4NCiAgICA+Pj4gKw0KICAgID4+Pg0KICAgID4+PiArLy8vDQog ICAgPj4+DQogICAgPj4+ICsvLy8gV2UgcmVxdWlyZSB0aGUgRkFEVCwgTUFEVCwgR1REVCBhbmQg dGhlIERTRFQgdGFibGVzIHRvIGJvb3QuDQogICAgPj4+DQogICAgPj4+ICsvLy8gVGhpcyBsaXN0 IGFsc28gaW5jbHVkZSBvcHRpb25hbCBBQ1BJIHRhYmxlczogREJHMiwgU1BDUi4NCiAgICA+Pj4N CiAgICA+Pj4gKy8vLw0KICAgID4+Pg0KICAgID4+PiArQUNQSV9UQUJMRV9QUkVTRU5DRV9JTkZP IG1BY3BpVmVyaWZ5VGFibGVzW0FDUElfVEFCTEVfVkVSSUZZX0NPVU5UXSANCiAgICA+Pj4gPSB7 DQogICAgPj4+DQogICAgPj4+ICsgIHsgRVN0ZEFjcGlUYWJsZUlkRmFkdCwgDQogICAgPj4+IEVG SV9BQ1BJXzZfMl9GSVhFRF9BQ1BJX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwgIkZBRFQi LCBUUlVFLCAgDQogICAgPj4+IDAgfSwNCiAgICA+Pj4NCiAgICA+Pj4gKyAgeyBFU3RkQWNwaVRh YmxlSWRNYWR0LCANCiAgICA+Pj4gRUZJX0FDUElfNl8yX01VTFRJUExFX0FQSUNfREVTQ1JJUFRJ T05fVEFCTEVfU0lHTkFUVVJFLCAiTUFEVCIsIA0KICAgID4+PiBUUlVFLCAgMCB9LA0KICAgID4+ Pg0KICAgID4+PiArICB7IEVTdGRBY3BpVGFibGVJZEd0ZHQsIA0KICAgID4+PiBFRklfQUNQSV82 XzJfR0VORVJJQ19USU1FUl9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsICJHVERUIiwgDQog ICAgPj4+IFRSVUUsICAwIH0sDQogICAgPj4+DQogICAgPj4+ICsgIHsgRVN0ZEFjcGlUYWJsZUlk RHNkdCwgDQogICAgPj4+IEVGSV9BQ1BJXzZfMl9ESUZGRVJFTlRJQVRFRF9TWVNURU1fREVTQ1JJ UFRJT05fVEFCTEVfU0lHTkFUVVJFLCANCiAgICA+Pj4gIkRTRFQiLCBUUlVFLCAgMCB9LA0KICAg ID4+Pg0KICAgID4+PiArICB7IEVTdGRBY3BpVGFibGVJZERiZzIsIEVGSV9BQ1BJXzZfMl9ERUJV R19QT1JUXzJfVEFCTEVfU0lHTkFUVVJFLCANCiAgICA+Pj4gIkRCRzIiLCBGQUxTRSwgMCB9LA0K ICAgID4+Pg0KICAgID4+PiArICB7IEVTdGRBY3BpVGFibGVJZFNwY3IsIA0KICAgID4+PiBFRklf QUNQSV82XzJfU0VSSUFMX1BPUlRfQ09OU09MRV9SRURJUkVDVElPTl9UQUJMRV9TSUdOQVRVUkUs IA0KICAgID4+PiAiU1BDUiIsIEZBTFNFLCAwIH0sDQogICAgPj4+DQogICAgPj4+ICt9Ow0KICAg ID4+Pg0KICAgID4+PiArDQogICAgPj4+DQogICAgPj4+ICAgLyoqIFRoaXMgbWFjcm8gZXhwYW5k cyB0byBhIGZ1bmN0aW9uIHRoYXQgcmV0cmlldmVzIHRoZSBBQ1BJIFRhYmxlDQogICAgPj4+DQog ICAgPj4+ICAgICAgIExpc3QgZnJvbSB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyLg0KICAgID4+ Pg0KICAgID4+PiAgICovDQogICAgPj4+DQogICAgPj4+IEBAIC0zOTUsNiArNDQ4LDcgQEAgQnVp bGRBbmRJbnN0YWxsQWNwaVRhYmxlICgNCiAgICA+Pj4NCiAgICA+Pj4gICAgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nlc3MuDQogICAgPj4+DQogICAgPj4+ICAgICBAcmV0dmFs IEVGSV9OT1RfRk9VTkQgICAgICAgICBJZiBtYW5kYXRvcnkgdGFibGUgaXMgbm90IGZvdW5kLg0K ICAgID4+Pg0KICAgID4+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBJZiBtYW5k YXRvcnkgdGFibGUgZm91bmQgaW4gDQogICAgPj4+IEFjcGlUYWJsZUluZm8gaXMgYWxyZWFkeSBp bnN0YWxsZWQuDQogICAgPj4+DQogICAgPj4+ICAgKiovDQogICAgPj4+DQogICAgPj4+ICAgU1RB VElDDQogICAgPj4+DQogICAgPj4+ICAgRUZJX1NUQVRVUw0KICAgID4+Pg0KICAgID4+PiBAQCAt NDA0LDc1ICs0NTgsNzEgQEAgVmVyaWZ5TWFuZGF0b3J5VGFibGVzQXJlUHJlc2VudCAoDQogICAg Pj4+ICAgICBJTiAgICAgICBVSU5UMzIgQWNwaVRhYmxlQ291bnQNCiAgICA+Pj4NCiAgICA+Pj4g ICAgICkNCiAgICA+Pj4NCiAgICA+Pj4gICB7DQogICAgPj4+DQogICAgPj4+IC0gIEVGSV9TVEFU VVMgIFN0YXR1czsNCiAgICA+Pj4NCiAgICA+Pj4gLSAgQk9PTEVBTiAgICAgRmFkdEZvdW5kOw0K ICAgID4+Pg0KICAgID4+PiAtICBCT09MRUFOICAgICBNYWR0Rm91bmQ7DQogICAgPj4+DQogICAg Pj4+IC0gIEJPT0xFQU4gICAgIEd0ZHRGb3VuZDsNCiAgICA+Pj4NCiAgICA+Pj4gLSAgQk9PTEVB TiAgICAgRHNkdEZvdW5kOw0KICAgID4+Pg0KICAgID4+PiAtICBCT09MRUFOICAgICBEYmcyRm91 bmQ7DQogICAgPj4+DQogICAgPj4+IC0gIEJPT0xFQU4gICAgIFNwY3JGb3VuZDsNCiAgICA+Pj4N CiAgICA+Pj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICAgPj4+ DQogICAgPj4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlOw0KICAgID4+ Pg0KICAgID4+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KICAgID4+ Pg0KICAgID4+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxlZFRhYmxl SW5kZXg7DQogICAgPj4+DQogICAgPj4+ICsgIEVGSV9BQ1BJX0RFU0NSSVBUSU9OX0hFQURFUiAg KkRlc2NIZWFkZXI7DQogICAgPj4+DQogICAgPj4+ICsgIEVGSV9BQ1BJX1RBQkxFX1ZFUlNJT04g ICAgICAgVmVyc2lvbjsNCiAgICA+Pj4NCiAgICA+Pj4gKyAgRUZJX0FDUElfU0RUX1BST1RPQ09M ICAgICAgICAqQWNwaVNkdDsNCiAgICA+Pj4NCiAgICA+Pj4NCiAgICA+Pj4gLSAgU3RhdHVzICAg ID0gRUZJX1NVQ0NFU1M7DQogICAgPj4+DQogICAgPj4+IC0gIEZhZHRGb3VuZCA9IEZBTFNFOw0K ICAgID4+Pg0KICAgID4+PiAtICBNYWR0Rm91bmQgPSBGQUxTRTsNCiAgICA+Pj4NCiAgICA+Pj4g LSAgR3RkdEZvdW5kID0gRkFMU0U7DQogICAgPj4+DQogICAgPj4+IC0gIERzZHRGb3VuZCA9IEZB TFNFOw0KICAgID4+Pg0KICAgID4+PiAtICBEYmcyRm91bmQgPSBGQUxTRTsNCiAgICA+Pj4NCiAg ICA+Pj4gLSAgU3BjckZvdW5kID0gRkFMU0U7DQogICAgPj4+DQogICAgPj4+ICAgICBBU1NFUlQg KEFjcGlUYWJsZUluZm8gIT0gTlVMTCk7DQogICAgPj4+DQogICAgPj4+DQogICAgPj4+ICsgIFN0 YXR1cyA9IEVGSV9TVUNDRVNTOw0KICAgID4+Pg0KICAgID4+PiArDQogICAgPj4+DQogICAgPj4+ ICsgIC8vIENoZWNrIGFnYWluc3QgdGhlIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgQUNQSSB0YWJs ZXMgdG8gc2VlIGlmIA0KICAgID4+PiB0aGV5IGFyZSBpbiBBQ1BJIGluZm8gbGlzdA0KICAgID4+ Pg0KICAgID4+PiAgICAgd2hpbGUgKEFjcGlUYWJsZUNvdW50LS0gIT0gMCkgew0KICAgID4+Pg0K ICAgID4+PiAtICAgIHN3aXRjaCAoQWNwaVRhYmxlSW5mb1tBY3BpVGFibGVDb3VudF0uQWNwaVRh YmxlU2lnbmF0dXJlKSB7DQogICAgPj4+DQogICAgPj4+IC0gICAgICBjYXNlIEVGSV9BQ1BJXzZf Ml9GSVhFRF9BQ1BJX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRToNCiAgICA+Pj4NCiAgICA+ Pj4gLSAgICAgICAgRmFkdEZvdW5kID0gVFJVRTsNCiAgICA+Pj4NCiAgICA+Pj4gLSAgICAgICAg YnJlYWs7DQogICAgPj4+DQogICAgPj4+IC0gICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9NVUxUSVBM RV9BUElDX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRToNCiAgICA+Pj4NCiAgICA+Pj4gLSAg ICAgICAgTWFkdEZvdW5kID0gVFJVRTsNCiAgICA+Pj4NCiAgICA+Pj4gLSAgICAgICAgYnJlYWs7 DQogICAgPj4+DQogICAgPj4+IC0gICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HRU5FUklDX1RJTUVS X0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRToNCiAgICA+Pj4NCiAgICA+Pj4gLSAgICAgICAg R3RkdEZvdW5kID0gVFJVRTsNCiAgICA+Pj4NCiAgICA+Pj4gLSAgICAgICAgYnJlYWs7DQogICAg Pj4+DQogICAgPj4+IC0gICAgICBjYXNlIA0KICAgID4+PiBFRklfQUNQSV82XzJfRElGRkVSRU5U SUFURURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRToNCiAgICA+Pj4NCiAgICA+ Pj4gLSAgICAgICAgRHNkdEZvdW5kID0gVFJVRTsNCiAgICA+Pj4NCiAgICA+Pj4gLSAgICAgICAg YnJlYWs7DQogICAgPj4+DQogICAgPj4+IC0gICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9ERUJVR19Q T1JUXzJfVEFCTEVfU0lHTkFUVVJFOg0KICAgID4+Pg0KICAgID4+PiAtICAgICAgICBEYmcyRm91 bmQgPSBUUlVFOw0KICAgID4+Pg0KICAgID4+PiAtICAgICAgICBicmVhazsNCiAgICA+Pj4NCiAg ICA+Pj4gLSAgICAgIGNhc2UgDQogICAgPj4+IEVGSV9BQ1BJXzZfMl9TRVJJQUxfUE9SVF9DT05T T0xFX1JFRElSRUNUSU9OX1RBQkxFX1NJR05BVFVSRToNCiAgICA+Pj4NCiAgICA+Pj4gLSAgICAg ICAgU3BjckZvdW5kID0gVFJVRTsNCiAgICA+Pj4NCiAgICA+Pj4gLSAgICAgICAgYnJlYWs7DQog ICAgPj4+DQogICAgPj4+IC0gICAgICBkZWZhdWx0Og0KICAgID4+Pg0KICAgID4+PiArICAgIGZv ciAoSW5kZXggPSAwOyBJbmRleCA8IEFDUElfVEFCTEVfVkVSSUZZX0NPVU5UOyBJbmRleCsrKSB7 DQogICAgPj4+DQogICAgPj4+ICsgICAgICBpZiAoQWNwaVRhYmxlSW5mb1tBY3BpVGFibGVDb3Vu dF0uQWNwaVRhYmxlU2lnbmF0dXJlID09IA0KICAgID4+PiBtQWNwaVZlcmlmeVRhYmxlc1tJbmRl eF0uQWNwaVRhYmxlU2lnbmF0dXJlKSB7DQogICAgPj4+DQogICAgPj4+ICsgICAgICAgIG1BY3Bp VmVyaWZ5VGFibGVzW0luZGV4XS5QcmVzZW5jZSB8PSANCiAgICA+Pj4gQUNQSV9UQUJMRV9QUkVT RU5UX0lORk9fTElTVDsNCiAgICA+Pj4NCiAgICA+Pj4gKyAgICAgICAgLy8gRm91bmQgdGhpcyB0 YWJsZSwgc2tpcCB0aGUgcmVzdC4NCiAgICA+Pj4NCiAgICA+Pj4gICAgICAgICAgIGJyZWFrOw0K ICAgID4+Pg0KICAgID4+PiArICAgICAgfQ0KICAgID4+Pg0KICAgID4+PiAgICAgICB9DQogICAg Pj4+DQogICAgPj4+ICAgICB9DQogICAgPj4+DQogICAgPj4+DQogICAgPj4+IC0gIC8vIFdlIG5l ZWQgYXQgbGVhc3QgdGhlIEZBRFQsIE1BRFQsIEdURFQgYW5kIHRoZSBEU0RUIHRhYmxlcyB0byBi b290DQogICAgPj4+DQogICAgPj4+IC0gIGlmICghRmFkdEZvdW5kKSB7DQogICAgPj4+DQogICAg Pj4+IC0gICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBGQURUIFRhYmxlIG5vdCBmb3Vu ZFxuIikpOw0KICAgID4+Pg0KICAgID4+PiAtICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQog ICAgPj4+DQogICAgPj4+IC0gIH0NCiAgICA+Pj4NCiAgICA+Pj4gKyAgLy8gVGhleSBhbHNvIG1p Z2h0IGJlIHB1Ymxpc2hlZCBhbHJlYWR5LCBzbyB3ZSBjYW4gc2VhcmNoIGZyb20gdGhlcmUNCiAg ICA+Pj4NCiAgICA+Pj4gKyAgaWYgKEZlYXR1cmVQY2RHZXQgKFBjZEluc3RhbGxBY3BpU2R0UHJv dG9jb2wpKSB7DQogICAgPj4+DQogICAgPj4+ICsgICAgQWNwaVNkdCA9IE5VTEw7DQogICAgPj4+ DQogICAgPj4+ICsgICAgU3RhdHVzICA9IGdCUy0+TG9jYXRlUHJvdG9jb2wgKCZnRWZpQWNwaVNk dFByb3RvY29sR3VpZCwgTlVMTCwgDQogICAgPj4+IChWT0lEICoqKSZBY3BpU2R0KTsNCiAgICA+ Pj4NCiAgICA+Pj4NCiAgICA+Pj4gLSAgaWYgKCFNYWR0Rm91bmQpIHsNCiAgICA+Pj4NCiAgICA+ Pj4gLSAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRVJST1I6IE1BRFQgVGFibGUgbm90IGZvdW5k LlxuIikpOw0KICAgID4+Pg0KICAgID4+PiAtICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQog ICAgPj4+DQogICAgPj4+IC0gIH0NCiAgICA+Pj4NCiAgICA+Pj4gKyAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpIHx8IChBY3BpU2R0ID09IE5VTEwpKSB7DQogICAgPj4+DQogICAgPj4+ICsgICAg ICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRVJST1I6IEZhaWxlZCB0byBsb2NhdGUgQUNQSSBTRFQg DQogICAgPj4+IHByb3RvY29sICgweCVwKSAtICVyXG4iLCBBY3BpU2R0LCBTdGF0dXMpKTsNCiAg ICA+Pj4NCiAgICA+Pj4gKyAgICAgIHJldHVybiBTdGF0dXM7DQogICAgPj4+DQogICAgPj4+ICsg ICAgfQ0KICAgID4+Pg0KICAgID4+Pg0KICAgID4+PiAtICBpZiAoIUd0ZHRGb3VuZCkgew0KICAg ID4+Pg0KICAgID4+PiAtICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFUlJPUjogR1REVCBUYWJs ZSBub3QgZm91bmQuXG4iKSk7DQogICAgPj4+DQogICAgPj4+IC0gICAgU3RhdHVzID0gRUZJX05P VF9GT1VORDsNCiAgICA+Pj4NCiAgICA+Pj4gLSAgfQ0KICAgID4+Pg0KICAgID4+PiArICAgIGZv ciAoSW5kZXggPSAwOyBJbmRleCA8IEFDUElfVEFCTEVfVkVSSUZZX0NPVU5UOyBJbmRleCsrKSB7 DQogICAgPj4+DQogICAgPj4+ICsgICAgICBIYW5kbGUgICAgICAgICAgICAgID0gMDsNCiAgICA+ Pj4NCiAgICA+Pj4gKyAgICAgIEluc3RhbGxlZFRhYmxlSW5kZXggPSAwOw0KICAgID4+Pg0KICAg ID4+PiArICAgICAgZG8gew0KICAgID4+Pg0KICAgID4+PiArICAgICAgICBTdGF0dXMgPSBBY3Bp U2R0LT5HZXRBY3BpVGFibGUgKEluc3RhbGxlZFRhYmxlSW5kZXgsIA0KICAgID4+PiAoRUZJX0FD UElfU0RUX0hFQURFUiAqKikmRGVzY0hlYWRlciwgJlZlcnNpb24sICZIYW5kbGUpOw0KICAgID4+ Pg0KICAgID4+PiArICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQogICAgPg0KICAg ID4gW1NBTUldIFdoZW4gcnVubmluZyBLdm10b29sIGd1ZXN0IGZpcm13YXJlIEkgYnJlYWsgZnJv bSBoZXJlIHdpdGggDQogICAgPiBFRklfTk9UX0ZPVU5ELiBUaGUgcHJvYmxlbSBpcyBQY2RJbnN0 YWxsQWNwaVNkdFByb3RvY29sIGlzIHNldCB0byBUUlVFIA0KICAgID4gaW4gQXJtVmlydC5kc2Mu aW5jIGFuZCB0aGUgS3ZtdG9vbCBndWVzdCBmaXJtd2FyZSBkb2VzIG5vdCBoYXZlIGFueSANCiAg ICA+IHByZWluc3RhbGxlZCB0YWJsZXMgKGkuZS4gYWxsIHRhYmxlcyBhcmUgZ2VuZXJhdGVkIHVz aW5nIA0KICAgID4gRHluYW1pY1RhYmxlc0ZyYW1ld29yaykuDQogICAgPg0KICAgID4gVGhpcyBt ZWFucyBwbGF0Zm9ybXMgdGhhdCB1c2Ugb25seSBEeW5hbWljIFRhYmxlcyBGcmFtZXdvcmsgd291 bGQgYWxsIA0KICAgID4gbmVlZCB0byBkZWZpbmUgUGNkSW5zdGFsbEFjcGlTZHRQcm90b2NvbCB0 byBGQUxTRS4gSXMgaXQgcG9zc2libGUgdG8gDQogICAgPiByZXdvcmsgdGhpcyBsb2dpYyBzbyB0 aGF0IHRoZSBleGlzdGluZyBwbGF0Zm9ybSBjb2RlIGRvZXMgbm90IG5lZWQgDQogICAgPiB1cGRh dGluZywgcGxlYXNlPw0KICAgID4NCiAgICA+IFsvU0FNSV0NCg0KICAgIFtLUV0NCg0KICAgIFRo ZXJlIHdhcyBhIG1pc3Rha2UgdGhhdCB0aGUgU3RhdHVzIHNob3VsZCBiZSBzZXQgdG8gRUZJX1NV Q0NFU1MgYmVmb3JlIA0KICAgIGVudGVyaW5nIHRoZSBwcmVzZW5jZQ0KICAgIGNoZWNraW5nIHN0 ZXAuIE90aGVyd2lzZSBpdCB3aWxsIHJlbWFpbiB0aGUgc2FtZSB2YWx1ZSBmcm9tIEdldEFjcGlU YWJsZSANCiAgICBpZiBhbGwgdGFibGVzIGFyZSBwcmVzZW50Lg0KDQogICAgVG8geW91ciBvcmln aW5hbCBvYnNlcnZhdGlvbiwgaXQgaXMgY29ycmVjdCB0aGF0IHRoaXMgR2V0QWNwaVRhYmxlIGNh bGwgDQogICAgd2lsbCBmYWlsIHdpdGggRUZJX05PVF9GT1VORCwNCiAgICBidXQgaXQgc2hvdWxk IG9ubHkgYnJlYWsgZnJvbSB0aGUgaW50ZXJuYWwgYGRvLXdoaWxlYCBsb29wLCBhbmQgY29udGlu dWUgDQogICAgd2l0aCB0aGUgcmVzdCBvZiB0YWJsZQ0KICAgIGxvb2stdXBzLiBUaGVuIGR1cmlu ZyB0YWJsZSBpbnNwZWN0aW9uIHN0ZXAsIGVpdGhlciBpbnN0YWxsZWQgdGFibGUgb3IgDQogICAg ZnJvbSBpbmZvX2xpc3Qgd2lsbCBjb3VudCBhcyBhDQogICAgcGFzc2VkIGNoZWNrLiBUaGUgcmV0 dXJuIFN0YXR1cyBzaG91bGQgYmUgcmVzZXQgYmVmb3JlIGluc3BlY3RpbmcgdGhlIA0KICAgIGZ1 bGwgbG9vay11cCByZXN1bHRzLiBUaGFua3MNCiAgICBmb3IgY2F0Y2hpbmcgdGhpcyEgV2lsbCBh ZGQgdGhlIGBTdGF0dXMgPSBFRklfU1VDQ0VTU2Agc3RhdGVtZW50IGluIHRoZSANCiAgICBuZXh0 IHJvdW5kLg0KDQogICAgWy9LUV0NCg0KW1NBTUldIEFjay4gSSBsb29rIGZvcndhcmQgdG8gYW4g dXBkYXRlZCBwYXRjaCB3aXRoIHRoaXMgZml4ZWQuDQoNCiAgICA+DQogICAgPj4+DQogICAgPj4+ ICsgICAgICAgICAgYnJlYWs7DQogICAgPj4+DQogICAgPj4+ICsgICAgICAgIH0NCiAgICA+Pj4N CiAgICA+Pj4NCiAgICA+Pj4gLSAgaWYgKCFEc2R0Rm91bmQpIHsNCiAgICA+Pj4NCiAgICA+Pj4g LSAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRVJST1I6IERTRFQgVGFibGUgbm90IGZvdW5kLlxu IikpOw0KICAgID4+Pg0KICAgID4+PiAtICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQogICAg Pj4+DQogICAgPj4+IC0gIH0NCiAgICA+Pj4NCiAgICA+Pj4gKyAgICAgICAgSW5zdGFsbGVkVGFi bGVJbmRleCsrOw0KICAgID4+Pg0KICAgID4+PiArICAgICAgfSB3aGlsZSAoRGVzY0hlYWRlci0+ U2lnbmF0dXJlICE9IA0KICAgID4+PiBtQWNwaVZlcmlmeVRhYmxlc1tJbmRleF0uQWNwaVRhYmxl U2lnbmF0dXJlKTsNCiAgICA+Pj4NCiAgICA+Pj4NCiAgICA+Pj4gLSAgaWYgKCFEYmcyRm91bmQp IHsNCiAgICA+Pj4NCiAgICA+Pj4gLSAgICBERUJVRyAoKERFQlVHX1dBUk4sICJXQVJOSU5HOiBE QkcyIFRhYmxlIG5vdCBmb3VuZC5cbiIpKTsNCiAgICA+Pj4NCiAgICA+Pj4gKyAgICAgIGlmICgh RUZJX0VSUk9SIChTdGF0dXMpKSB7DQogICAgPj4+DQogICAgPj4+ICsgICAgICAgIG1BY3BpVmVy aWZ5VGFibGVzW0luZGV4XS5QcmVzZW5jZSB8PSANCiAgICA+Pj4gQUNQSV9UQUJMRV9QUkVTRU5U X0lOU1RBTExFRDsNCiAgICA+Pj4NCiAgICA+Pj4gKyAgICAgIH0NCiAgICA+Pj4NCiAgICA+Pj4g KyAgICB9DQogICAgPj4+DQogICAgPj4+ICAgICB9DQogICAgPj4+DQogICAgPj4+DQogICAgPj4+ IC0gIGlmICghU3BjckZvdW5kKSB7DQogICAgPj4+DQogICAgPj4+IC0gICAgREVCVUcgKChERUJV R19XQVJOLCAiV0FSTklORzogU1BDUiBUYWJsZSBub3QgZm91bmQuXG4iKSk7DQogICAgPj4+DQog ICAgPj4+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEFDUElfVEFCTEVfVkVSSUZZX0NPVU5U OyBJbmRleCsrKSB7DQogICAgPj4+DQogICAgPj4+ICsgICAgaWYgKG1BY3BpVmVyaWZ5VGFibGVz W0luZGV4XS5QcmVzZW5jZSA9PSAwKSB7DQogICAgPj4+DQogICAgPj4+ICsgICAgICBpZiAobUFj cGlWZXJpZnlUYWJsZXNbSW5kZXhdLklzTWFuZGF0b3J5KSB7DQogICAgPj4+DQogICAgPj4+ICsg ICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFUlJPUjogJWEgVGFibGUgbm90IGZvdW5kLlxu IiwgDQogICAgPj4+IG1BY3BpVmVyaWZ5VGFibGVzW0luZGV4XS5BY3BpVGFibGVOYW1lKSk7DQog ICAgPj4+DQogICAgPj4+ICsgICAgICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQogICAgPj4+ DQogICAgPj4+ICsgICAgICB9IGVsc2Ugew0KICAgID4+Pg0KICAgID4+PiArICAgICAgICBERUJV RyAoKERFQlVHX1dBUk4sICJXQVJOSU5HOiAlYSBUYWJsZSBub3QgZm91bmQuXG4iLCANCiAgICA+ Pj4gbUFjcGlWZXJpZnlUYWJsZXNbSW5kZXhdLkFjcGlUYWJsZU5hbWUpKTsNCiAgICA+Pj4NCiAg ICA+Pj4gKyAgICAgIH0NCiAgICA+Pj4NCiAgICA+Pj4gKyAgICB9IGVsc2UgaWYgKG1BY3BpVmVy aWZ5VGFibGVzW0luZGV4XS5QcmVzZW5jZSA9PQ0KICAgID4+Pg0KICAgID4+PiArICAgICAgICAg ICAgICAgKEFDUElfVEFCTEVfUFJFU0VOVF9JTkZPX0xJU1QgfCANCiAgICA+Pj4gQUNQSV9UQUJM RV9QUkVTRU5UX0lOU1RBTExFRCkpDQogICAgPj4+DQogICAgPj4+ICsgICAgew0KICAgID4+Pg0K ICAgID4+PiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiAlYSBUYWJsZSBmb3Vu ZCB3aGlsZSBhbHJlYWR5IA0KICAgID4+PiBwdWJsaXNoZWQuXG4iLCBtQWNwaVZlcmlmeVRhYmxl c1tJbmRleF0uQWNwaVRhYmxlTmFtZSkpOw0KICAgID4+Pg0KICAgID4+PiArICAgICAgU3RhdHVz ID0gRUZJX0FMUkVBRFlfU1RBUlRFRDsNCiAgICA+Pj4NCiAgICA+Pj4gKyAgICB9DQogICAgPj4+ DQogICAgPj4+ICAgICB9DQogICAgPj4+DQogICAgPj4+DQogICAgPj4+ICAgICByZXR1cm4gU3Rh dHVzOw0KICAgID4+Pg0KICAgID4+PiBAQCAtNDg5LDggKzUzOSw5IEBAIFZlcmlmeU1hbmRhdG9y eVRhYmxlc0FyZVByZXNlbnQgKA0KICAgID4+PiAgICAgQHBhcmFtIFtpbl0gIENmZ01nclByb3Rv Y29sICAgICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gDQogICAgPj4+IE1hbmFnZXIN CiAgICA+Pj4NCiAgICA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ cm90b2NvbCBJbnRlcmZhY2UuDQogICAgPj4+DQogICAgPj4+DQogICAgPj4+IC0gIEByZXR2YWwg RUZJX1NVQ0NFU1MgICBTdWNjZXNzLg0KICAgID4+Pg0KICAgID4+PiAtICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgSWYgYSBtYW5kYXRvcnkgdGFibGUgb3IgYSBnZW5lcmF0b3IgaXMgbm90IA0KICAg ID4+PiBmb3VuZC4NCiAgICA+Pj4NCiAgICA+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgU3VjY2Vzcy4NCiAgICA+Pj4NCiAgICA+Pj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5E ICAgICAgICAgSWYgYSBtYW5kYXRvcnkgdGFibGUgb3IgYSBnZW5lcmF0b3IgDQogICAgPj4+IGlz IG5vdCBmb3VuZC4NCiAgICA+Pj4NCiAgICA+Pj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFS VEVEICAgSWYgbWFuZGF0b3J5IHRhYmxlIGZvdW5kIGluIA0KICAgID4+PiBBY3BpVGFibGVJbmZv IGlzIGFscmVhZHkgaW5zdGFsbGVkLg0KICAgID4+Pg0KICAgID4+PiAgICoqLw0KICAgID4+Pg0K ICAgID4+PiAgIFNUQVRJQw0KICAgID4+Pg0KICAgID4+PiAgIEVGSV9TVEFUVVMNCiAgICA+Pj4N CiAgICA+Pj4gQEAgLTU2Miw3ICs2MTMsNyBAQCBQcm9jZXNzQWNwaVRhYmxlcyAoDQogICAgPj4+ ICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQogICAgPj4+DQogICAgPj4+ICAgICAgIERF QlVHICgoDQogICAgPj4+DQogICAgPj4+ICAgICAgICAgREVCVUdfRVJST1IsDQogICAgPj4+DQog ICAgPj4+IC0gICAgICAiRVJST1I6IEZhaWxlZCB0byBmaW5kIG1hbmRhdG9yeSBBQ1BJIFRhYmxl KHMpLiINCiAgICA+Pj4NCiAgICA+Pj4gKyAgICAgICJFUlJPUjogRmFpbGVkIHRvIHZlcmlmeSBt YW5kYXRvcnkgQUNQSSBUYWJsZShzKSBwcmVzZW5jZS4iDQogICAgPj4+DQogICAgPj4+ICAgICAg ICAgIiBTdGF0dXMgPSAlclxuIiwNCiAgICA+Pj4NCiAgICA+Pj4gICAgICAgICBTdGF0dXMNCiAg ICA+Pj4NCiAgICA+Pj4gICAgICAgICApKTsNCiAgICA+Pj4NCiAgICA+Pj4gQEAgLTU3MCwyOSAr NjIxLDMyIEBAIFByb2Nlc3NBY3BpVGFibGVzICgNCiAgICA+Pj4gICAgIH0NCiAgICA+Pj4NCiAg ICA+Pj4NCiAgICA+Pj4gICAgIC8vIEFkZCB0aGUgRkFEVCBUYWJsZSBmaXJzdC4NCiAgICA+Pj4N CiAgICA+Pj4gLSAgZm9yIChJZHggPSAwOyBJZHggPCBBY3BpVGFibGVDb3VudDsgSWR4KyspIHsN CiAgICA+Pj4NCiAgICA+Pj4gLSAgICBpZiAoQ1JFQVRFX1NURF9BQ1BJX1RBQkxFX0dFTl9JRCAo RVN0ZEFjcGlUYWJsZUlkRmFkdCkgPT0NCiAgICA+Pj4NCiAgICA+Pj4gLSAgICAgICAgQWNwaVRh YmxlSW5mb1tJZHhdLlRhYmxlR2VuZXJhdG9ySWQpDQogICAgPj4+DQogICAgPj4+IC0gICAgew0K ICAgID4+Pg0KICAgID4+PiAtICAgICAgU3RhdHVzID0gQnVpbGRBbmRJbnN0YWxsQWNwaVRhYmxl ICgNCiAgICA+Pj4NCiAgICA+Pj4gLSAgICAgICAgICAgICAgICAgVGFibGVGYWN0b3J5UHJvdG9j b2wsDQogICAgPj4+DQogICAgPj4+IC0gICAgICAgICAgICAgICAgIENmZ01nclByb3RvY29sLA0K ICAgID4+Pg0KICAgID4+PiAtICAgICAgICAgICAgICAgICBBY3BpVGFibGVQcm90b2NvbCwNCiAg ICA+Pj4NCiAgICA+Pj4gLSAgICAgICAgICAgICAgICAgJkFjcGlUYWJsZUluZm9bSWR4XQ0KICAg ID4+Pg0KICAgID4+PiAtICAgICAgICAgICAgICAgICApOw0KICAgID4+Pg0KICAgID4+PiAtICAg ICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KICAgID4+Pg0KICAgID4+PiAtICAgICAgICBE RUJVRyAoKA0KICAgID4+Pg0KICAgID4+PiAtICAgICAgICAgIERFQlVHX0VSUk9SLA0KICAgID4+ Pg0KICAgID4+PiAtICAgICAgICAgICJFUlJPUjogRmFpbGVkIHRvIGZpbmQgYnVpbGQgYW5kIGlu c3RhbGwgQUNQSSBGQURUIFRhYmxlLiIgXA0KICAgID4+Pg0KICAgID4+PiAtICAgICAgICAgICIg U3RhdHVzID0gJXJcbiIsDQogICAgPj4+DQogICAgPj4+IC0gICAgICAgICAgU3RhdHVzDQogICAg Pj4+DQogICAgPj4+IC0gICAgICAgICAgKSk7DQogICAgPj4+DQogICAgPj4+IC0gICAgICAgIHJl dHVybiBTdGF0dXM7DQogICAgPj4+DQogICAgPj4+IC0gICAgICB9DQogICAgPj4+DQogICAgPj4+ ICsgIGlmICgobUFjcGlWZXJpZnlUYWJsZXNbQUNQSV9UQUJMRV9WRVJJRllfRkFEVF0uUHJlc2Vu Y2UgJiANCiAgICA+Pj4gQUNQSV9UQUJMRV9QUkVTRU5UX0lOU1RBTExFRCkgPT0gMCkgew0KICAg ID4+DQogICAgPj4gW1NBTUldIElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIHRoZSBtQWNwaVZl cmlmeVRhYmxlc1t4XS5QcmVzZW5jZSANCiAgICA+PiBmaWxlZCBjYW5ub3QgYmUgQUNQSV9UQUJM RV9QUkVTRU5UX0lORk9fTElTVCBhbmQgDQogICAgPj4gQUNQSV9UQUJMRV9QUkVTRU5UX0lOU1RB TExFRCBhdCB0aGUgc2FtZSB0aW1lLiBPdGhlcndpc2Ugd2Ugd291bGQgDQogICAgPj4gaGF2ZSBy ZXR1cm5lZCBFRklfQUxSRUFEWV9TVEFSVEVEIGZyb20gDQogICAgPj4gVmVyaWZ5TWFuZGF0b3J5 VGFibGVzQXJlUHJlc2VudCgpLg0KICAgID4+DQogICAgPj4gU2luY2UgRkFEVCBpcyBtYW5kYXRv cnksIHRoZSBvbmx5IHZhbGlkIGNvbmRpdGlvbnMgYXJlOg0KICAgID4+DQogICAgPj4gMS4gQUNQ SV9UQUJMRV9QUkVTRU5UX0lORk9fTElTVCBhbmQgIUFDUElfVEFCTEVfUFJFU0VOVF9JTlNUQUxM RUQNCiAgICA+Pg0KICAgID4+IDIuICFBQ1BJX1RBQkxFX1BSRVNFTlRfSU5GT19MSVNUICYgQUNQ SV9UQUJMRV9QUkVTRU5UX0lOU1RBTExFRA0KICAgID4+DQogICAgPj4gVGhlcmVmb3JlLCBJIHRo aW5rIHRoZSBhYm92ZSBjaGVjayBpcyBub3QgcmVxdWlyZWQuIFdoYXQgZG8geW91IHRoaW5rPw0K ICAgID4+DQogICAgPj4gWy9TQU1JXQ0KDQogICAgW0tRXQ0KDQogICAgWW91IGFyZSBjb3JyZWN0 IHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IGFib3ZlIDIgY29uZGl0aW9ucyBmb3IgbWFuZGF0b3J5 IA0KICAgIHRhYmxlcy4NCiAgICBCdXQgdGhlIGNoZWNrIGlzIHRvIG1ha2Ugc3VyZSB0aGUgRkFE VCB3aWxsIG9ubHkgYmUgaW5zdGFsbGVkIG9uIA0KICAgIGNvbmRpdGlvbiAjMSBhYm92ZSwNCiAg ICB3aGljaCBtZWFucyBpdCB3aWxsIG9ubHkgYmUgaW5zdGFsbGVkIGlmIGl0IGhhcyBub3QgYWxy ZWFkeSBiZWVuIA0KICAgIGluc3RhbGxlZC4gUGxlYXNlIGxldA0KICAgIG1lIGtub3cgaWYgSSBt aXNzZWQgYW55dGhpbmcgaGVyZS4NCg0KICAgIFsvS1FdDQpbU0FNSV0gQWNrLiBQbGVhc2Uga2Vl cCB0aGlzIGNoZWNrLiBJZiB0aGUgdGFibGUgaXMgYWxyZWFkeSBpbnN0YWxsZWQgdGhpcyBjaGVj ayBwcmV2ZW50cyBzZWFyY2hpbmcgaW4gdGhlIEFjcGlUYWJsZUluZm8gbGlzdCBhbmQgdGhlcmVm b3JlIG9wdGltaXNlcy4NCiAgICA+Pg0KICAgID4+Pg0KICAgID4+PiArICAgIC8vIEZBRFQgaXMg bm90IHlldCBpbnN0YWxsZWQNCiAgICA+Pj4NCiAgICA+Pj4gKyAgICBmb3IgKElkeCA9IDA7IElk eCA8IEFjcGlUYWJsZUNvdW50OyBJZHgrKykgew0KICAgID4+Pg0KICAgID4+PiArICAgICAgaWYg KENSRUFURV9TVERfQUNQSV9UQUJMRV9HRU5fSUQgKEVTdGRBY3BpVGFibGVJZEZhZHQpID09DQog ICAgPj4+DQogICAgPj4+ICsgICAgICAgICAgQWNwaVRhYmxlSW5mb1tJZHhdLlRhYmxlR2VuZXJh dG9ySWQpDQogICAgPj4+DQogICAgPj4+ICsgICAgICB7DQogICAgPj4+DQogICAgPj4+ICsgICAg ICAgIFN0YXR1cyA9IEJ1aWxkQW5kSW5zdGFsbEFjcGlUYWJsZSAoDQogICAgPj4+DQogICAgPj4+ ICsgICAgICAgICAgICAgICAgICAgVGFibGVGYWN0b3J5UHJvdG9jb2wsDQogICAgPj4+DQogICAg Pj4+ICsgICAgICAgICAgICAgICAgICAgQ2ZnTWdyUHJvdG9jb2wsDQogICAgPj4+DQogICAgPj4+ ICsgICAgICAgICAgICAgICAgICAgQWNwaVRhYmxlUHJvdG9jb2wsDQogICAgPj4+DQogICAgPj4+ ICsgICAgICAgICAgICAgICAgICAgJkFjcGlUYWJsZUluZm9bSWR4XQ0KICAgID4+Pg0KICAgID4+ PiArICAgICAgICAgICAgICAgICAgICk7DQogICAgPj4+DQogICAgPj4+ICsgICAgICAgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCiAgICA+Pj4NCiAgICA+Pj4gKyAgICAgICAgICBERUJVRyAo KA0KICAgID4+Pg0KICAgID4+PiArICAgICAgICAgICAgREVCVUdfRVJST1IsDQogICAgPj4+DQog ICAgPj4+ICsgICAgICAgICAgICAiRVJST1I6IEZhaWxlZCB0byBmaW5kIGJ1aWxkIGFuZCBpbnN0 YWxsIEFDUEkgRkFEVCANCiAgICA+Pj4gVGFibGUuIiBcDQogICAgPj4+DQogICAgPj4+ICsgICAg ICAgICAgICAiIFN0YXR1cyA9ICVyXG4iLA0KICAgID4+Pg0KICAgID4+PiArICAgICAgICAgICAg U3RhdHVzDQogICAgPj4+DQogICAgPj4+ICsgICAgICAgICAgICApKTsNCiAgICA+Pj4NCiAgICA+ Pj4gKyAgICAgICAgICByZXR1cm4gU3RhdHVzOw0KICAgID4+Pg0KICAgID4+PiArICAgICAgICB9 DQogICAgPj4+DQogICAgPj4+DQogICAgPj4+IC0gICAgICBicmVhazsNCiAgICA+Pj4NCiAgICA+ Pj4gLSAgICB9DQogICAgPj4+DQogICAgPj4+IC0gIH0gLy8gZm9yDQogICAgPj4+DQogICAgPj4+ ICsgICAgICAgIGJyZWFrOw0KICAgID4+Pg0KICAgID4+PiArICAgICAgfQ0KICAgID4+Pg0KICAg ID4+PiArICAgIH0gLy8gZm9yDQogICAgPj4+DQogICAgPj4+ICsgIH0NCiAgICA+Pj4NCiAgICA+ Pj4NCiAgICA+Pj4gICAgIC8vIEFkZCByZW1haW5pbmcgQUNQSSBUYWJsZXMNCiAgICA+Pj4NCiAg ICA+Pj4gICAgIGZvciAoSWR4ID0gMDsgSWR4IDwgQWNwaVRhYmxlQ291bnQ7IElkeCsrKSB7DQog ICAgPj4+DQogICAgPj4+IGRpZmYgLS1naXQgDQogICAgPj4+IGEvRHluYW1pY1RhYmxlc1BrZy9E cml2ZXJzL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS5pbmYg DQogICAgPj4+IGIvRHluYW1pY1RhYmxlc1BrZy9Ecml2ZXJzL0R5bmFtaWNUYWJsZU1hbmFnZXJE eGUvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS5pbmYgDQogICAgPj4+DQogICAgPj4+IGluZGV4IDAy OGMzZDQxM2NmOC4uYWQ4YjNkMDM3YzE2IDEwMDY0NA0KICAgID4+PiAtLS0gDQogICAgPj4+IGEv RHluYW1pY1RhYmxlc1BrZy9Ecml2ZXJzL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUvRHluYW1pY1Rh YmxlTWFuYWdlckR4ZS5pbmYNCiAgICA+Pj4gKysrIA0KICAgID4+PiBiL0R5bmFtaWNUYWJsZXNQ a2cvRHJpdmVycy9EeW5hbWljVGFibGVNYW5hZ2VyRHhlL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUu aW5mDQogICAgPj4+IEBAIC0zNCw4ICszNCwxMiBAQCBbTGlicmFyeUNsYXNzZXNdDQogICAgPj4+ ICAgICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCiAgICA+Pj4NCiAgICA+Pj4gICAgIFVlZmlE cml2ZXJFbnRyeVBvaW50DQogICAgPj4+DQogICAgPj4+DQogICAgPj4+ICtbRmVhdHVyZVBjZF0N CiAgICA+Pj4NCiAgICA+Pj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZElu c3RhbGxBY3BpU2R0UHJvdG9jb2wgIyMgQ09OU1VNRVMNCiAgICA+Pj4NCiAgICA+Pj4gKw0KICAg ID4+Pg0KICAgID4+PiAgIFtQcm90b2NvbHNdDQogICAgPj4+DQogICAgPj4+ICAgICBnRWZpQWNw aVRhYmxlUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgIyBQUk9UT0NPTCANCiAgICA+ Pj4gQUxXQVlTX0NPTlNVTUVEDQogICAgPj4+DQogICAgPj4+ICsgIGdFZmlBY3BpU2R0UHJvdG9j b2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAjIFBST1RPQ09MIA0KICAgID4+PiBBTFdBWVNf Q09OU1VNRUQNCiAgICA+Pj4NCiAgICA+Pj4NCiAgICA+Pj4gICAgIGdFZGtpaUNvbmZpZ3VyYXRp b25NYW5hZ2VyUHJvdG9jb2xHdWlkICAgICAgICAjIFBST1RPQ09MIA0KICAgID4+PiBBTFdBWVNf Q09OU1VNRUQNCiAgICA+Pj4NCiAgICA+Pj4gICAgIGdFZGtpaUR5bmFtaWNUYWJsZUZhY3RvcnlQ cm90b2NvbEd1aWQgICAgICAgICAjIFBST1RPQ09MIA0KICAgID4+PiBBTFdBWVNfQ09OU1VNRUQN CiAgICA+Pj4NCg0K