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.51]) by mx.groups.io with SMTP id smtpd.web11.3363.1622097599019737969 for ; Wed, 26 May 2021 23:39:59 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=ayI164pT; spf=pass (domain: arm.com, ip: 40.107.7.51, mailfrom: jianyong.wu@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=Sv6ssjGli5zeOUzp1uovGxABYDfzmdMjoZeSdKDd0P8=; b=ayI164pT0m658+hvN6PfiUrXXqDzoD5RuceNw2gA3nQ9I52zhdPjxNrdVhp6xa1vWesJhC6KHxWqjzxZ5D7e6CwekyCG20npaWLGgXN+TnFTectmR0Q4UeaKeF8O9FIlvSoBmn3ZiUarxQqk5tzbPNEellbBJ1LxEJvX/MWvHio= Received: from AM6P192CA0094.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:8d::35) by AM0PR08MB3569.eurprd08.prod.outlook.com (2603:10a6:208:dc::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.20; Thu, 27 May 2021 06:39:51 +0000 Received: from VE1EUR03FT003.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:8d:cafe::43) by AM6P192CA0094.outlook.office365.com (2603:10a6:209:8d::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21 via Frontend Transport; Thu, 27 May 2021 06:39:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; 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 VE1EUR03FT003.mail.protection.outlook.com (10.152.18.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.30 via Frontend Transport; Thu, 27 May 2021 06:39:50 +0000 Received: ("Tessian outbound 2cd7db0b285f:v92"); Thu, 27 May 2021 06:39:50 +0000 X-CR-MTA-TID: 64aa7808 Received: from ad81197dfb44.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8CFA5E3D-9351-4215-B85E-AAF49C307383.1; Thu, 27 May 2021 06:39:40 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ad81197dfb44.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 27 May 2021 06:39:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ascGDhZ4ZpODVgtwlQpwMvurtjdpFIUyQELpoPrV2NUNOnreesgbpMIkbCq+C7i2tn1w8fm/PpcxITy3dMuQ0wChphYxV9nKPbifSdIuJRWB0CgG6N4YSR9K74S+6F7IfgS1cIy9mJpT+QDux5oY5YtbFicKRwEKaEmBgSnHl7vMQDN1s07TBhEpJWwL793alb//1LtNOySAyLGkLrODQ/66YfmcyYjNV26DNf3KXZT23GqwgEFxKaNSp6X4WcKMAsWLYTWxvFniCavLEA9P1OPxsIre8lAwMkMNdjXO63hpVYcFMsS1+1CBNldB+mMMw3dAT+IKBO+dND7kXfVoVg== 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-SenderADCheck; bh=Sv6ssjGli5zeOUzp1uovGxABYDfzmdMjoZeSdKDd0P8=; b=en9n4ZGIwxyx3YOdl5l6e/z1P3mxtiwg8MX1o75rOfCV15DKsVMQyCP6NqJm3yyZicVWVL6KVyLUA2k8EMuQe3QsCnsReyeciKLCJptBctvjG8+U0zWC/hxMiLAtm9afVwiq7BHjEkdo9GeKvmRbEkL/PIMgb9ZgwbzhqM+4KLeYkHA8UwLCmF0pT1z13893IiryJ6NvPYDYp208E4lo5E4K46V2nhfTQAiw5YelM+e7O4CExUdW/oNHNGiQv5g2QzSsLp6wIGjg56hpfPBXFUid9DVOHrnhUgDp/C7WaS8z8sJ7x44UYGrwImCoA1huE7j46TPzSB7/sYihV8727w== 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=Sv6ssjGli5zeOUzp1uovGxABYDfzmdMjoZeSdKDd0P8=; b=ayI164pT0m658+hvN6PfiUrXXqDzoD5RuceNw2gA3nQ9I52zhdPjxNrdVhp6xa1vWesJhC6KHxWqjzxZ5D7e6CwekyCG20npaWLGgXN+TnFTectmR0Q4UeaKeF8O9FIlvSoBmn3ZiUarxQqk5tzbPNEellbBJ1LxEJvX/MWvHio= Received: from AM9PR08MB7055.eurprd08.prod.outlook.com (2603:10a6:20b:412::16) by AM9PR08MB7184.eurprd08.prod.outlook.com (2603:10a6:20b:3df::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21; Thu, 27 May 2021 06:39:38 +0000 Received: from AM9PR08MB7055.eurprd08.prod.outlook.com ([fe80::593d:6e97:777c:a586]) by AM9PR08MB7055.eurprd08.prod.outlook.com ([fe80::593d:6e97:777c:a586%5]) with mapi id 15.20.4173.022; Thu, 27 May 2021 06:39:38 +0000 From: "Jianyong Wu" To: Laszlo Ersek , "devel@edk2.groups.io" , "ardb+tianocore@kernel.org" , Sami Mujawar CC: "hao.a.wu@intel.com" , Justin He , Leif Lindholm Subject: Re: [edk2-devel] [PATCH v2 1/5] ArmVirtPkg: Library: Memory initialization for Cloud Hypervisor Thread-Topic: [edk2-devel] [PATCH v2 1/5] ArmVirtPkg: Library: Memory initialization for Cloud Hypervisor Thread-Index: AQHXSuj+TL7t5CWK5kGAPeBz3jIDJ6rqVLAAgAABJICADFGmYA== Date: Thu, 27 May 2021 06:39:38 +0000 Message-ID: References: <20210517065032.82423-1-jianyong.wu@arm.com> <20210517065032.82423-2-jianyong.wu@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 636B7848FF4AE14EB80067A2E639773F.0 x-checkrecipientchecked: true Authentication-Results-Original: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [203.126.0.111] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 5a2d4fab-3631-417c-5218-08d920da3ab1 x-ms-traffictypediagnostic: AM9PR08MB7184:|AM0PR08MB3569: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:6108;OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: eQF66ERirYSe76ar7E9F7JVqd+lAntENUSS5NI908AXJ/pHfhOuYX+DwTHWSpJyNxfHpi0gESxjltvkeAoU86JiPneEa1weenD7WYxWWhN+/2m5HE8asCLEso52+eYuMBh9v7t+awOha/KzV+4grltvcBseccbWPxk4382xKLs1tMWRFn8evVjRhCAfjYgSni6nQ55qoV0STHR7THxdY+SN0+iuxuWi5XsoO/usod6OmW+sWawmn/M6HHyMDQUWV7xoxlAUoUvx46mb5izYYsZRR52kfUpWHzw2BxoobxILE6nayxQXHsz9aUGHjMRTmSlmpgu7riJrx7MpR61zUgPP+KyYk3tyYBiIPAnJJZOJGpq/cIlFcEkbhFKQ8TqTwZLE+/IRUveXoOz7pMFdZf32Sni68+bF2OZqe5q5J2J9H8FhfAN7K7vyPQSEUOMO19mr/PegvCgYwd6oUZbOOQX2vvGU1tnmmLLp7SmssAsRk5SO9+iKiXjowDcn9av8je+4KiHzSfM2Drkh8ZvrRBvtmsq6tzv+p7QYDJlpQ///t2FyDIWJckTt3AEILa5t/kb+2rOSP9S1b8UXQcnoHC5kdlJvQ/SYe4pjwVJ1d7wY= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB7055.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(376002)(136003)(346002)(39830400003)(396003)(186003)(6506007)(8936002)(4326008)(478600001)(53546011)(26005)(8676002)(6636002)(7696005)(122000001)(38100700002)(54906003)(55016002)(110136005)(316002)(66946007)(66476007)(71200400001)(2906002)(66556008)(5660300002)(52536014)(64756008)(76116006)(66446008)(33656002)(86362001)(83380400001)(30864003)(9686003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?WmYvSnJORFh5TmthWGt0MXdmcDZMS0J0VXpGbzdKTklqTUpDV2xJeHFLR1pQ?= =?utf-8?B?Wk9ndGJsLytPL0ttciszanRrOHN4ZFI0Z1FoWUFqQ3VDQUdhdFRPaGUyY3ZH?= =?utf-8?B?ZHlEUDJTcXBmNXlmZyt6Wi9aUUozTVFCWEo3cDYrYjdsaW96VlpENm9RaFVx?= =?utf-8?B?cDlDVTdXWXlia05PWERCQjZvS2tWZk9YUEhaN21UTE9YdExGMkhuTzR1VGhs?= =?utf-8?B?M2NORVY0aVp2YUtKRXZ1alc0T2V1ODBQd1pvK1ZLd3pYcXpwQkdnYU4xMlVG?= =?utf-8?B?WHZyOXRFRWgvQlVWUjZZaXZPQ0J4RnIwZThTR2VJMDZ0d1RCSVZZWlJmWi81?= =?utf-8?B?L1E2aE5ueGUvcHZ4Qm1aNmJtTm1IWkk1cDIwTmc2TVpYNEdMRTU2WE5ObkFP?= =?utf-8?B?ZHphVjc3VWFCa1pqdkoxTXBXOXEzM1pka3Vhd0J1NSt6aVNmV2lWbndVZjN1?= =?utf-8?B?MWh3UHhWLzl4ZUNpbi9Dd0RJQzlpY3dnN0dUUVpPZEtBVmw2TlBjZG82NHVa?= =?utf-8?B?ajJDeHFCRWxDT0tIYzQyaUR0c1ZKS0NlYzg1MU8xckxoOURWU3NyZmpmUysy?= =?utf-8?B?NXdWV29FZW5HYWs5blZvQk5WWlJSRjdSa25zQW8yRytjRDZNZEtOR3IvbzVr?= =?utf-8?B?WEs1NFdOU0FIaWdzTG9VeUo1eGJxTmRiNGRjQTlEVmVDMm5zTHU1NzNzTVNn?= =?utf-8?B?MEl5U2J2b21PSk5CUFBlRnM5NmVrV21OcCtZMDlXWHh4dU1ZUjRYdWpuUFE1?= =?utf-8?B?TkptRWMyNndMaWZVc2NBdDhNUTgvSFlmWkdTM1BBK25ZUkNLTDhicHFib0Fl?= =?utf-8?B?NllPcXB2TGRMa1pldVN6VklBWU0rSFh0K3JaVUp2QUhUMGxoK1pEQkY1cTJ6?= =?utf-8?B?ZlovUThhUmc2QzJkdWFxM1RMRGlmV1lqYWtjYjNoVGNhTjVXaWdnWHEzblZx?= =?utf-8?B?eExVenB1WDZmSktZNE9FOFVYek9FRTN4L2pXNTFtUzVpaFlHeFZxbWxKNUt0?= =?utf-8?B?TmxualNvVzE4bGw4bnpUdUI5bkIrQ2djbWRZM3BGTHdhY0wxaE56dFNqT3p5?= =?utf-8?B?MFkrcERUVVhpVmlSc0lVRVBpVjlTN3Y3RnlPSVJrRUljaGgwWERHbFgvWmY3?= =?utf-8?B?YjRZV25GSkplTnFKYzZ1a0RzTWRlUXFIbXhxd0VGYW5US0ZDZkx5SnZvVVBE?= =?utf-8?B?bnhmSEEvQ1VzSUpNL3pQRm5nQU9kUGozRE5JKzF4ZjBBV21peFpwTCtYaFFy?= =?utf-8?B?Y3ozYjl2ZzJlVjlMVEdIZkd0a3hIcVg0YjgvUjBkRVhEb0kvR0FTRmpsdHg4?= =?utf-8?B?aDVjZ09FL3hqSzNzSGNvaEs4TzY4MEM3b01UZzBYTUh4VUhHWm81QTk0V0xB?= =?utf-8?B?MGZ5Ym9GRG9VWG4zTFF1b3VnVlRRZDRkTENwcStHcXJ4Nyt3YzUxUG1lMTAr?= =?utf-8?B?WlI2Q1FUSXZuNE9qMG5WZWtxNzlRTExyVGg3WXl3NnJ0b3RUSFdzMDl1UFZP?= =?utf-8?B?T3pKMjRmS3FNbGRNRlF6dnIvTWJTL0dFS1NHM21XL0RvUnJzZ0dHYzZqVXJr?= =?utf-8?B?aUVoSUEvT3l2aTBtOS85Sm1relJWMUV1MjZpd2dRWUJYQVFWSmlvdzRaVk82?= =?utf-8?B?QUUxMVQ3OVdQN2tJdVdqcnNVcW4rSTRXa1Z3MjlPK0d2ZDNTYjEvOTRsYVlC?= =?utf-8?B?cUdoWkUvdTYydmFQTEF3M0g5VEQ2dHlZdmh6WFQ4d1RlaVRzZFAzbjdLUHM2?= =?utf-8?Q?WsOA6TH71vesakokpx2bZIXkuoaoOWHJtmZfekw?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB7184 Original-Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com; Return-Path: Jianyong.Wu@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: dace8b33-52e3-4282-d8ab-08d920da3314 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fcJ2lNM14T+uwpf9meEbkZ4XxfBHClZiGlxEVa2g7hQk+e4CgrRZqt7PFWx3qbe2mMFuIowx1HWsJql2+E7rn8LqVRbR+qHD17X1qCtl4j4szy555idn0OcQU7FWzmAreEXlFYHgRXHzCnyWPuI6tBcgx/bl/RkrGo96SNnY2Qa4OBAWaoBNwtrC8XSRWALU6sx2QsWGffjQGU3hBqMSKK5MrKTzqUkBj0hXQ10ptYvr6e7dBO+8eWodLF2Zw1FOamEr2xEZoKeBmdBD8GFUcMxQEh8L5ck2KsFpPkCWFBc04p8gpRAdqkRvOK5Q9zUr493GE6iD+YAOCLHVkCz5ltvGvjIXp17ZYmG/xQaGMvsyCd6aclpcoCQlGdlbQiU88QRQVq0mCOQSJy5gwcCTfOq2mnOBdsVjt6TMbMCFWeuPd1HcEpCpEvnWFlFgoxYqpXkVCiw296RKyM0UqwTwhWdFuXGRAyff9M6flIRFQ4IObvl6/jZ3OFpYCs3M3NdOgMIKbvbcJS5Tic8CMRg9vF0q3obYC8QGCxBkThi9pwN0212hLHLmuwritrYdl+P43a1+EBcSECcLyTy3cks8z2jjdYxy3j+cXbeibD2Q7U1DmoIBzN0OB5+GJUCNAtm8DDOADICt0EKEmNRPYuVgdwiB7h/z+jML/bRjr+h0qQc= 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:(4636009)(376002)(39840400004)(136003)(346002)(396003)(36840700001)(46966006)(107886003)(70586007)(70206006)(33656002)(478600001)(6636002)(4326008)(5660300002)(52536014)(47076005)(336012)(2906002)(30864003)(316002)(53546011)(36860700001)(7696005)(26005)(55016002)(83380400001)(82310400003)(9686003)(110136005)(6506007)(356005)(8676002)(186003)(86362001)(54906003)(8936002)(81166007);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2021 06:39:50.7605 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5a2d4fab-3631-417c-5218-08d920da3ab1 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: VE1EUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3569 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvLA0KDQpCYXNlZCBvbiBjb21tZW50cyBmcm9tIFNhbWksIG1heWJlIEkgbmVlZCBy ZW1vdmUgdGhpcyBwYXRjaCBhbmQgcmV1c2UgdGhlIHFlbXUgbWVtb3J5IGluaXRpYWxpemF0aW9u IGxpYiBjb2RlLiBUaGFuayBmb3IgeW91ciBjb21tZW50cy4NCg0KVGhhbmtzDQpKaWFueW9uZw0K DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExhc3psbyBFcnNlayA8bGVy c2VrQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDE5LCAyMDIxIDI6MTIgUE0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBKaWFueW9uZyBXdSA8SmlhbnlvbmcuV3VAYXJt LmNvbT47DQo+IGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmc7IFNhbWkgTXVqYXdhciA8U2FtaS5N dWphd2FyQGFybS5jb20+DQo+IENjOiBoYW8uYS53dUBpbnRlbC5jb207IEp1c3RpbiBIZSA8SnVz dGluLkhlQGFybS5jb20+OyBMZWlmIExpbmRob2xtDQo+IDxsZWlmQG51dmlhaW5jLmNvbT4NCj4g U3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjIgMS81XSBBcm1WaXJ0UGtnOiBMaWJy YXJ5OiBNZW1vcnkNCj4gaW5pdGlhbGl6YXRpb24gZm9yIENsb3VkIEh5cGVydmlzb3INCj4NCj4g U29ycnksIGp1c3Qgbm90aWNlZDoNCj4NCj4gT24gMDUvMTkvMjEgMDg6MDcsIExhc3psbyBFcnNl ayB3cm90ZToNCj4gPiBPbiAwNS8xNy8yMSAwODo1MCwgSmlhbnlvbmcgV3Ugd3JvdGU6DQo+ID4+ IENsb3VkIEh5cGVydmlzb3IgaXMga3ZtIGJhc2VkIFZNTSBpbXBsZW1lbnRlZCBpbiBydXN0Lg0K PiA+Pg0KPiA+PiBUaGlzIGxpYnJhcnkgcG9wdWxhdGVzIHRoZSBzeXN0ZW0gbWVtb3J5IG1hcCBm b3IgdGhlIENsb3VkIEh5cGVydmlzb3INCj4gPj4gdmlydHVhbCBwbGF0Zm9ybS4NCj4gPj4NCj4g Pj4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4+IENjOiBBcmQgQmll c2hldXZlbCA8YXJkYit0aWFub2NvcmVAa2VybmVsLm9yZz4NCj4gPj4gQ2M6IExlaWYgTGluZGhv bG0gPGxlaWZAbnV2aWFpbmMuY29tPg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBKaWFueW9uZyBXdSA8 amlhbnlvbmcud3VAYXJtLmNvbT4NCj4gPj4gLS0tDQo+ID4+ICAuLi4vQ2xvdWRIdlZpcnRNZW1J bmZvUGVpTGliLmluZiAgICAgICAgICAgICAgfCAgNDcgKysrKysrKysNCj4gPj4gIC4uLi9DbG91 ZEh2VmlydE1lbUluZm9MaWIuYyAgICAgICAgICAgICAgICAgICB8ICA5NCArKysrKysrKysrKysr KysrDQo+ID4+ICAuLi4vQ2xvdWRIdlZpcnRNZW1JbmZvUGVpTGliQ29uc3RydWN0b3IuYyAgICAg fCAxMDANCj4gKysrKysrKysrKysrKysrKysrDQo+ID4+ICAzIGZpbGVzIGNoYW5nZWQsIDI0MSBp bnNlcnRpb25zKCspDQo+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPj4NCj4gQXJtVmlydFBr Zy9MaWJyYXJ5L0Nsb3VkSHZWaXJ0TWVtSW5mb0xpYi9DbG91ZEh2VmlydE1lbUluZm9QZWlMaWIu aW5mDQo+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPj4gQXJtVmlydFBrZy9MaWJyYXJ5L0Ns b3VkSHZWaXJ0TWVtSW5mb0xpYi9DbG91ZEh2VmlydE1lbUluZm9MaWIuYw0KPiA+PiAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+ID4+DQo+IEFybVZpcnRQa2cvTGlicmFyeS9DbG91ZEh2VmlydE1lbUlu Zm9MaWIvQ2xvdWRIdlZpcnRNZW1JbmZvUGVpTGliQ29uDQo+IHMNCj4gPj4gdHJ1Y3Rvci5jDQo+ ID4+DQo+ID4+IGRpZmYgLS1naXQNCj4gPj4NCj4gYS9Bcm1WaXJ0UGtnL0xpYnJhcnkvQ2xvdWRI dlZpcnRNZW1JbmZvTGliL0Nsb3VkSHZWaXJ0TWVtSW5mb1BlaUxpYi5pDQo+ID4+IG5mDQo+ID4+ DQo+IGIvQXJtVmlydFBrZy9MaWJyYXJ5L0Nsb3VkSHZWaXJ0TWVtSW5mb0xpYi9DbG91ZEh2Vmly dE1lbUluZm9QZWlMaWIuaQ0KPiA+PiBuZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ PiBpbmRleCAwMDAwMDAwMDAwMDAuLjcxZGJmOWMwNmNjYw0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ ID4+ICsrKw0KPiBiL0FybVZpcnRQa2cvTGlicmFyeS9DbG91ZEh2VmlydE1lbUluZm9MaWIvQ2xv dWRIdlZpcnRNZW1JbmZvUGVpTA0KPiA+PiArKysgaWIuaW5mDQo+ID4+IEBAIC0wLDAgKzEsNDcg QEANCj4gPj4gKyMvKiBAZmlsZQ0KPiA+PiArIw0KPiA+PiArIyAgQ29weXJpZ2h0IChjKSAyMDEx LTIwMTUsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+DQo+ID4gKDEpIE5l dyBmaWxlLCBwbGVhc2UgcmVmcmVzaCB0aGUgZW5kIHllYXIgaW4gdGhlIChDKSBub3RpY2UuDQoN Cj4gPg0KPiA+PiArIyAgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcsIExpbmFybyBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgIyAjKi8NCj4gPj4gKw0KPiA+PiArW0RlZmluZXNd DQo+ID4+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMUENCj4g Pj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gQ2xoVmlydE1lbUluZm9QZWlM aWINCj4NCj4gKDQpIHMvQ2xoL0Nsb3VkSHYvDQo+DQo+IFRoYW5rcw0KPiBMYXN6bG8NCj4NCj4g Pj4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gM0UyOUQ5NDAtMDU5MS1FRTZB LUNBRDQtMjIzQTlDRjU1RTc1DQo+ID4+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAg ICA9IEJBU0UNCj4gPj4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ ID4+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IEFybVZpcnRNZW1JbmZvTGli fFBFSU0NCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgICAgICAgICAgICAgICAgID0gQ2xvdWRIdlZp cnRNZW1JbmZvUGVpTGliQ29uc3RydWN0b3INCj4gPj4gKw0KPiA+PiArW1NvdXJjZXNdDQo+ID4+ ICsgIENsb3VkSHZWaXJ0TWVtSW5mb0xpYi5jDQo+ID4+ICsgIENsb3VkSHZWaXJ0TWVtSW5mb1Bl aUxpYkNvbnN0cnVjdG9yLmMNCj4gPj4gKw0KPiA+PiArW1BhY2thZ2VzXQ0KPiA+PiArICBBcm1Q a2cvQXJtUGtnLmRlYw0KPiA+PiArICBBcm1WaXJ0UGtnL0FybVZpcnRQa2cuZGVjDQo+ID4+ICsg IEVtYmVkZGVkUGtnL0VtYmVkZGVkUGtnLmRlYw0KPiA+PiArICBNZGVNb2R1bGVQa2cvTWRlTW9k dWxlUGtnLmRlYw0KPiA+PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+PiArDQo+ID4+ICtbTGli cmFyeUNsYXNzZXNdDQo+ID4+ICsgIEFybUxpYg0KPiA+PiArICBCYXNlTWVtb3J5TGliDQo+ID4+ ICsgIERlYnVnTGliDQo+ID4+ICsgIEZkdExpYg0KPiA+PiArICBQY2RMaWINCj4gPj4gKyAgTWVt b3J5QWxsb2NhdGlvbkxpYg0KPiA+PiArDQo+ID4+ICtbUGNkXQ0KPiA+PiArICBnQXJtVG9rZW5T cGFjZUd1aWQuUGNkRmRCYXNlQWRkcmVzcw0KPiA+PiArICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNk RnZCYXNlQWRkcmVzcw0KPiA+PiArICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkU3lzdGVtTWVtb3J5 QmFzZQ0KPiA+PiArICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkU3lzdGVtTWVtb3J5U2l6ZQ0KPiA+ PiArDQo+ID4+ICtbRml4ZWRQY2RdDQo+ID4+ICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RGZFNp emUNCj4gPj4gKyAgZ0FybVRva2VuU3BhY2VHdWlkLlBjZEZ2U2l6ZQ0KPiA+PiArICBnQXJtVmly dFRva2VuU3BhY2VHdWlkLlBjZERldmljZVRyZWVJbml0aWFsQmFzZUFkZHJlc3MNCj4gPj4gZGlm ZiAtLWdpdA0KPiA+PiBhL0FybVZpcnRQa2cvTGlicmFyeS9DbG91ZEh2VmlydE1lbUluZm9MaWIv Q2xvdWRIdlZpcnRNZW1JbmZvTGliLmMNCj4gPj4gYi9Bcm1WaXJ0UGtnL0xpYnJhcnkvQ2xvdWRI dlZpcnRNZW1JbmZvTGliL0Nsb3VkSHZWaXJ0TWVtSW5mb0xpYi5jDQo+ID4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNjlmNGU2YWI2Y2M0DQo+ID4+IC0t LSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvQXJtVmlydFBrZy9MaWJyYXJ5L0Nsb3VkSHZWaXJ0 TWVtSW5mb0xpYi9DbG91ZEh2VmlydE1lbUluZm9MaWIuDQo+ID4+ICsrKyBjDQo+ID4+IEBAIC0w LDAgKzEsOTQgQEANCj4gPj4gKy8qKiBAZmlsZQ0KPiA+PiArDQo+ID4+ICsgIENvcHlyaWdodCAo YykgMjAxNC0yMDE3LCBMaW5hcm8gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPg0K PiA+ICgyKSBOZXcgZmlsZSwgQVJNIChDKSBtaXNzaW5nLg0KPiA+DQo+ID4+ICsNCj4gPj4gKyAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4gKw0KPiA+ PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxCYXNlLmg+DQo+ID4+ICsjaW5jbHVkZSA8 TGlicmFyeS9Bcm1MaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIu aD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8 TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ID4+ICsNCj4gPj4gKy8vIE51bWJlciBv ZiBWaXJ0dWFsIE1lbW9yeSBNYXAgRGVzY3JpcHRvcnMNCj4gPj4gKyNkZWZpbmUgTUFYX1ZJUlRV QUxfTUVNT1JZX01BUF9ERVNDUklQVE9SUyAgICAgICAgICA1DQo+ID4+ICsNCj4gPj4gKy8vDQo+ ID4+ICsvLyBtYWNoLXZpcnQncyBjb3JlIHBlcmlwaGVyYWxzIHN1Y2ggYXMgdGhlIFVBUlQsIHRo ZSBHSUMgYW5kIHRoZQ0KPiA+PiArUlRDIGFyZSAvLyBhbGwgbWFwcGVkIGluIHRoZSAnbWlzY2Vs bGFuZW91cyBkZXZpY2UgSS9PJyByZWdpb24sDQo+ID4+ICt3aGljaCB3ZSBqdXN0IG1hcCAvLyBp biBpdHMgZW50aXJldHkgcmF0aGVyIHRoYW4gZGV2aWNlIGJ5IGRldmljZS4NCj4gPj4gK05vdGUg dGhhdCBpdCBkb2VzIG5vdCAvLyBjb3ZlciBhbnkgb2YgdGhlIE5PUiBmbGFzaCBiYW5rcyBvciBQ Q0kgcmVzb3VyY2UNCj4gd2luZG93cy4NCj4gPj4gKy8vDQo+ID4+ICsjZGVmaW5lIE1BQ0hfVklS VF9QRVJJUEhfQkFTRSAgICAgICAweDA4MDAwMDAwDQo+ID4+ICsjZGVmaW5lIE1BQ0hfVklSVF9Q RVJJUEhfU0laRSAgICAgICBTSVpFXzEyOE1CDQo+ID4+ICsNCj4gPj4gKy8vDQo+ID4+ICsvLyBp biBjbG91ZC1oeXBlcnZpc29yLCAweDAgfiAweDgwMDAwMDAgaXMgcmVzZXJ2ZWQgYXMgbm9ybWFs IG1lbW9yeQ0KPiA+PiArZm9yIFVFRkkgLy8NCj4gPj4gKyNkZWZpbmUgQ0xPVURIVl9VRUZJX01F TV9CQVNFICAgICAgIDB4MA0KPiA+PiArI2RlZmluZSBDTE9VREhWX1VFRklfTUVNX1NJWkUgICAg ICAgMHgwODAwMDAwMA0KPiA+PiArDQo+ID4+ICsvKioNCj4gPj4gKyAgUmV0dXJuIHRoZSBWaXJ0 dWFsIE1lbW9yeSBNYXAgb2YgeW91ciBwbGF0Zm9ybQ0KPiA+PiArDQo+ID4+ICsgIFRoaXMgVmly dHVhbCBNZW1vcnkgTWFwIGlzIHVzZWQgYnkgTWVtb3J5SW5pdFBlaSBNb2R1bGUgdG8NCj4gPj4g KyBpbml0aWFsaXplIHRoZSBNTVUgIG9uIHlvdXIgcGxhdGZvcm0uDQo+ID4+ICsNCj4gPj4gKyAg QHBhcmFtW291dF0gICBWaXJ0dWFsTWVtb3J5TWFwICAgIEFycmF5IG9mDQo+IEFSTV9NRU1PUllf UkVHSU9OX0RFU0NSSVBUT1INCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRlc2NyaWJpbmcgYSBQaHlzaWNhbC10by1WaXJ0dWFsIE1lbW9yeQ0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy4gVGhpcyBhcnJheSBtdXN0IGJl IGVuZGVkIGJ5IGENCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpl cm8tZmlsbGVkIGVudHJ5LiBUaGUgYWxsb2NhdGVkIG1lbW9yeQ0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBub3QgYmUgZnJlZWQuDQo+ID4+ICsNCj4gPj4g KyoqLw0KPiA+PiArVk9JRA0KPiA+PiArQXJtVmlydEdldE1lbW9yeU1hcCAoDQo+ID4+ICsgIE9V VCBBUk1fTUVNT1JZX1JFR0lPTl9ERVNDUklQVE9SICAgKipWaXJ0dWFsTWVtb3J5TWFwDQo+ID4+ ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgQVJNX01FTU9SWV9SRUdJT05fREVTQ1JJUFRPUiAgKlZp cnR1YWxNZW1vcnlUYWJsZTsNCj4gPj4gKw0KPiA+PiArICBBU1NFUlQgKFZpcnR1YWxNZW1vcnlN YXAgIT0gTlVMTCk7DQo+ID4+ICsNCj4gPj4gKyAgVmlydHVhbE1lbW9yeVRhYmxlID0gQWxsb2Nh dGVQb29sIChzaXplb2YNCj4gKEFSTV9NRU1PUllfUkVHSU9OX0RFU0NSSVBUT1IpICoNCj4gPj4g Kw0KPiA+PiArIE1BWF9WSVJUVUFMX01FTU9SWV9NQVBfREVTQ1JJUFRPUlMpOw0KPiA+PiArDQo+ ID4+ICsgIGlmIChWaXJ0dWFsTWVtb3J5VGFibGUgPT0gTlVMTCkgew0KPiA+PiArICAgIERFQlVH ICgoREVCVUdfRVJST1IsICIlYTogRXJyb3I6IEZhaWxlZCBBbGxvY2F0ZVBvb2woKVxuIiwNCj4g X19GVU5DVElPTl9fKSk7DQo+ID4+ICsgICAgcmV0dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4g Pj4gKyAgLy8gU3lzdGVtIERSQU0NCj4gPj4gKyAgVmlydHVhbE1lbW9yeVRhYmxlWzBdLlBoeXNp Y2FsQmFzZSA9IFBjZEdldDY0DQo+ID4+ICsgKFBjZFN5c3RlbU1lbW9yeUJhc2UpOyAgVmlydHVh bE1lbW9yeVRhYmxlWzBdLlZpcnR1YWxCYXNlICA9DQo+IFZpcnR1YWxNZW1vcnlUYWJsZVswXS5Q aHlzaWNhbEJhc2U7DQo+ID4+ICsgIFZpcnR1YWxNZW1vcnlUYWJsZVswXS5MZW5ndGggICAgICAg PSBQY2RHZXQ2NCAoUGNkU3lzdGVtTWVtb3J5U2l6ZSk7DQo+ID4+ICsgIFZpcnR1YWxNZW1vcnlU YWJsZVswXS5BdHRyaWJ1dGVzICAgPQ0KPiBBUk1fTUVNT1JZX1JFR0lPTl9BVFRSSUJVVEVfV1JJ VEVfQkFDSzsNCj4gPj4gKw0KPiA+PiArICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogRHVtcGlu ZyBTeXN0ZW0gRFJBTSBNZW1vcnkgTWFwOlxuIg0KPiA+PiArICAgICAgIlx0UGh5c2ljYWxCYXNl OiAweCVsWFxuIg0KPiA+PiArICAgICAgIlx0VmlydHVhbEJhc2U6IDB4JWxYXG4iDQo+ID4+ICsg ICAgICAiXHRMZW5ndGg6IDB4JWxYXG4iLA0KPiA+PiArICAgICAgX19GVU5DVElPTl9fLA0KPiA+ PiArICAgICAgVmlydHVhbE1lbW9yeVRhYmxlWzBdLlBoeXNpY2FsQmFzZSwNCj4gPj4gKyAgICAg IFZpcnR1YWxNZW1vcnlUYWJsZVswXS5WaXJ0dWFsQmFzZSwNCj4gPj4gKyAgICAgIFZpcnR1YWxN ZW1vcnlUYWJsZVswXS5MZW5ndGgpKTsNCj4gPj4gKw0KPiA+PiArICAvLyBNZW1vcnkgbWFwcGVk IHBlcmlwaGVyYWxzIChVQVJULCBSVEMsIEdJQywgdmlydGlvLW1taW8sIGV0YykNCj4gPj4gKyBW aXJ0dWFsTWVtb3J5VGFibGVbMV0uUGh5c2ljYWxCYXNlID0gTUFDSF9WSVJUX1BFUklQSF9CQVNF Ow0KPiA+PiArIFZpcnR1YWxNZW1vcnlUYWJsZVsxXS5WaXJ0dWFsQmFzZSAgPSBNQUNIX1ZJUlRf UEVSSVBIX0JBU0U7DQo+ID4+ICsgIFZpcnR1YWxNZW1vcnlUYWJsZVsxXS5MZW5ndGggICAgICAg PSBNQUNIX1ZJUlRfUEVSSVBIX1NJWkU7DQo+ID4+ICsgIFZpcnR1YWxNZW1vcnlUYWJsZVsxXS5B dHRyaWJ1dGVzICAgPQ0KPiBBUk1fTUVNT1JZX1JFR0lPTl9BVFRSSUJVVEVfREVWSUNFOw0KPiA+ PiArDQo+ID4+ICsgIC8vIE1hcCB0aGUgRlYgcmVnaW9uIGFzIG5vcm1hbCBleGVjdXRhYmxlIG1l bW9yeQ0KPiA+PiArIFZpcnR1YWxNZW1vcnlUYWJsZVsyXS5QaHlzaWNhbEJhc2UgPSBQY2RHZXQ2 NCAoUGNkRnZCYXNlQWRkcmVzcyk7DQo+ID4+ICsgVmlydHVhbE1lbW9yeVRhYmxlWzJdLlZpcnR1 YWxCYXNlICA9DQo+IFZpcnR1YWxNZW1vcnlUYWJsZVsyXS5QaHlzaWNhbEJhc2U7DQo+ID4+ICsg IFZpcnR1YWxNZW1vcnlUYWJsZVsyXS5MZW5ndGggICAgICAgPSBGaXhlZFBjZEdldDMyIChQY2RG dlNpemUpOw0KPiA+PiArICBWaXJ0dWFsTWVtb3J5VGFibGVbMl0uQXR0cmlidXRlcyAgID0NCj4g QVJNX01FTU9SWV9SRUdJT05fQVRUUklCVVRFX1dSSVRFX0JBQ0s7DQo+ID4+ICsNCj4gPj4gKyAg Ly8gRW5kIG9mIFRhYmxlDQo+ID4+ICsgIFplcm9NZW0gKCZWaXJ0dWFsTWVtb3J5VGFibGVbM10s IHNpemVvZg0KPiA+PiArIChBUk1fTUVNT1JZX1JFR0lPTl9ERVNDUklQVE9SKSk7DQo+ID4+ICsN Cj4gPj4gKyAgKlZpcnR1YWxNZW1vcnlNYXAgPSBWaXJ0dWFsTWVtb3J5VGFibGU7IH0NCj4gPj4g ZGlmZiAtLWdpdA0KPiA+Pg0KPiBhL0FybVZpcnRQa2cvTGlicmFyeS9DbG91ZEh2VmlydE1lbUlu Zm9MaWIvQ2xvdWRIdlZpcnRNZW1JbmZvUGVpTGliQw0KPiBvDQo+ID4+IG5zdHJ1Y3Rvci5jDQo+ ID4+DQo+IGIvQXJtVmlydFBrZy9MaWJyYXJ5L0Nsb3VkSHZWaXJ0TWVtSW5mb0xpYi9DbG91ZEh2 VmlydE1lbUluZm9QZWlMaWJDDQo+IG8NCj4gPj4gbnN0cnVjdG9yLmMNCj4gPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wNjJkZmNlZTFkNjYNCj4gPj4g LS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4gYi9Bcm1WaXJ0UGtnL0xpYnJhcnkvQ2xvdWRIdlZp cnRNZW1JbmZvTGliL0Nsb3VkSHZWaXJ0TWVtSW5mb1BlaUwNCj4gPj4gKysrIGliQ29uc3RydWN0 b3IuYw0KPiA+PiBAQCAtMCwwICsxLDEwMCBAQA0KPiA+PiArLyoqIEBmaWxlDQo+ID4+ICsNCj4g Pj4gKyAgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcsIExpbmFybyBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiA+DQo+ID4gKDMpIE5ldyBmaWxlLCBBUk0gKEMpIG1pc3NpbmcuDQo+ID4N Cj4gPiBXaXRoIHRob3NlIHVwZGF0ZXM6DQo+ID4NCj4gPiBBY2tlZC1ieTogTGFzemxvIEVyc2Vr IDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPg0KPiA+IChCVFcgSSdkIGxpa2UgYXQgbGVhc3Qgb25l IG9mIEFyZCwgTGVpZiwgYW5kIFNhbWkgdG8gZ2l2ZSBhbiBSLWIgZm9yDQo+ID4gdGhpcyBwYXRj aCBzZXQuKQ0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IExhc3psbw0KPiA+DQo+ID4+ICsNCj4gPj4g KyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4gKw0K PiA+PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxCYXNlLmg+DQo+ID4+ICsjaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+ DQo+ID4+ICsjaW5jbHVkZSA8bGliZmR0Lmg+DQo+ID4+ICsNCj4gPj4gK1JFVFVSTl9TVEFUVVMN Cj4gPj4gK0VGSUFQSQ0KPiA+PiArQ2xvdWRIdlZpcnRNZW1JbmZvUGVpTGliQ29uc3RydWN0b3Ig KA0KPiA+PiArICBWT0lEDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVk9JRCAgICAgICAg ICAqRGV2aWNlVHJlZUJhc2U7DQo+ID4+ICsgIElOVDMyICAgICAgICAgTm9kZSwgUHJldjsNCj4g Pj4gKyAgVUlOVDY0ICAgICAgICBOZXdCYXNlLCBDdXJCYXNlOw0KPiA+PiArICBVSU5UNjQgICAg ICAgIE5ld1NpemUsIEN1clNpemU7DQo+ID4+ICsgIENPTlNUIENIQVI4ICAgKlR5cGU7DQo+ID4+ ICsgIElOVDMyICAgICAgICAgTGVuOw0KPiA+PiArICBDT05TVCBVSU5UNjQgICpSZWdQcm9wOw0K PiA+PiArICBSRVRVUk5fU1RBVFVTIFBjZFN0YXR1czsNCj4gPj4gKw0KPiA+PiArICBOZXdCYXNl ID0gMDsNCj4gPj4gKyAgTmV3U2l6ZSA9IDA7DQo+ID4+ICsNCj4gPj4gKyAgRGV2aWNlVHJlZUJh c2UgPSAoVk9JRCAqKShVSU5UTilQY2RHZXQ2NA0KPiA+PiArIChQY2REZXZpY2VUcmVlSW5pdGlh bEJhc2VBZGRyZXNzKTsNCj4gPj4gKyAgQVNTRVJUIChEZXZpY2VUcmVlQmFzZSAhPSBOVUxMKTsN Cj4gPj4gKw0KPiA+PiArICAvLw0KPiA+PiArICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhIHZhbGlk IGRldmljZSB0cmVlIGJsb2IgIC8vICBBU1NFUlQNCj4gPj4gKyAoZmR0X2NoZWNrX2hlYWRlciAo RGV2aWNlVHJlZUJhc2UpID09IDApOw0KPiA+PiArDQo+ID4+ICsgIC8vDQo+ID4+ICsgIC8vIExv b2sgZm9yIHRoZSBsb3dlc3QgbWVtb3J5IG5vZGUgIC8vICBmb3IgKFByZXYgPSAwOzsgUHJldiA9 DQo+ID4+ICsgTm9kZSkgew0KPiA+PiArICAgIE5vZGUgPSBmZHRfbmV4dF9ub2RlIChEZXZpY2VU cmVlQmFzZSwgUHJldiwgTlVMTCk7DQo+ID4+ICsgICAgaWYgKE5vZGUgPCAwKSB7DQo+ID4+ICsg ICAgICBicmVhazsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICAvLw0KPiA+PiArICAg IC8vIENoZWNrIGZvciBtZW1vcnkgbm9kZQ0KPiA+PiArICAgIC8vDQo+ID4+ICsgICAgVHlwZSA9 IGZkdF9nZXRwcm9wIChEZXZpY2VUcmVlQmFzZSwgTm9kZSwgImRldmljZV90eXBlIiwgJkxlbik7 DQo+ID4+ICsgICAgaWYgKFR5cGUgJiYgQXNjaWlTdHJuQ21wIChUeXBlLCAibWVtb3J5IiwgTGVu KSA9PSAwKSB7DQo+ID4+ICsgICAgICAvLw0KPiA+PiArICAgICAgLy8gR2V0IHRoZSAncmVnJyBw cm9wZXJ0eSBvZiB0aGlzIG5vZGUuIEZvciBub3csIHdlIHdpbGwgYXNzdW1lDQo+ID4+ICsgICAg ICAvLyB0d28gOCBieXRlIHF1YW50aXRpZXMgZm9yIGJhc2UgYW5kIHNpemUsIHJlc3BlY3RpdmVs eS4NCj4gPj4gKyAgICAgIC8vDQo+ID4+ICsgICAgICBSZWdQcm9wID0gZmR0X2dldHByb3AgKERl dmljZVRyZWVCYXNlLCBOb2RlLCAicmVnIiwgJkxlbik7DQo+ID4+ICsgICAgICBpZiAoUmVnUHJv cCAhPSAwICYmIExlbiA9PSAoMiAqIHNpemVvZiAoVUlOVDY0KSkpIHsNCj4gPj4gKw0KPiA+PiAr ICAgICAgICBDdXJCYXNlID0gZmR0NjRfdG9fY3B1IChSZWFkVW5hbGlnbmVkNjQgKFJlZ1Byb3Ap KTsNCj4gPj4gKyAgICAgICAgQ3VyU2l6ZSA9IGZkdDY0X3RvX2NwdSAoUmVhZFVuYWxpZ25lZDY0 IChSZWdQcm9wICsgMSkpOw0KPiA+PiArDQo+ID4+ICsgICAgICAgIERFQlVHICgoREVCVUdfSU5G TywgIiVhOiBTeXN0ZW0gUkFNIEAgMHglbHggLSAweCVseFxuIiwNCj4gPj4gKyAgICAgICAgICBf X0ZVTkNUSU9OX18sIEN1ckJhc2UsIEN1ckJhc2UgKyBDdXJTaXplIC0gMSkpOw0KPiA+PiArDQo+ ID4+ICsgICAgICAgIGlmIChOZXdCYXNlID4gQ3VyQmFzZSB8fCBOZXdCYXNlID09IDApIHsNCj4g Pj4gKyAgICAgICAgICBOZXdCYXNlID0gQ3VyQmFzZTsNCj4gPj4gKyAgICAgICAgICBOZXdTaXpl ID0gQ3VyU2l6ZTsNCj4gPj4gKyAgICAgICAgfQ0KPiA+PiArICAgICAgfSBlbHNlIHsNCj4gPj4g KyAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gcGFyc2UgRkRUIG1l bW9yeSBub2RlXG4iLA0KPiA+PiArICAgICAgICAgIF9fRlVOQ1RJT05fXykpOw0KPiA+PiArICAg ICAgfQ0KPiA+PiArICAgIH0NCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8vDQo+ID4+ICsg IC8vIE1ha2Ugc3VyZSB0aGUgc3RhcnQgb2YgRFJBTSBtYXRjaGVzIG91ciBleHBlY3RhdGlvbiAg Ly8gIEFTU0VSVA0KPiA+PiArIChGaXhlZFBjZEdldDY0IChQY2RTeXN0ZW1NZW1vcnlCYXNlKSA9 PSBOZXdCYXNlKTsgIFBjZFN0YXR1cyA9DQo+ID4+ICsgUGNkU2V0NjRTIChQY2RTeXN0ZW1NZW1v cnlTaXplLCBOZXdTaXplKTsNCj4gQVNTRVJUX1JFVFVSTl9FUlJPUg0KPiA+PiArIChQY2RTdGF0 dXMpOw0KPiA+PiArDQo+ID4+ICsgIC8vDQo+ID4+ICsgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJl IHRoYXQgdGhlIG1hY2hpbmUgd2UgYXJlIHJ1bm5pbmcgb24gaGFzIGF0DQo+ID4+ICsgbGVhc3Qg IC8vIDEyOCBNQiBvZiBtZW1vcnkgY29uZmlndXJlZCwgYW5kIGlzIGN1cnJlbnRseSBleGVjdXRp bmcNCj4gPj4gKyB0aGlzIGJpbmFyeSBmcm9tICAvLyBOT1IgZmxhc2guIFRoaXMgcHJldmVudHMg YSBkZXZpY2UgdHJlZSBpbWFnZQ0KPiA+PiArIGluIERSQU0gZnJvbSBnZXR0aW5nICAvLyBjbG9i YmVyZWQgd2hlbiBvdXIgY2FsbGVyIGluc3RhbGxzDQo+ID4+ICsgcGVybWFuZW50IFBFSSBSQU0s IGJlZm9yZSB3ZSBoYXZlIGEgIC8vIGNoYW5jZSBvZiBtYXJraW5nIGl0cw0KPiA+PiArIGxvY2F0 aW9uIGFzIHJlc2VydmVkIG9yIGNvcHkgaXQgdG8gYSBmcmVzaGx5ICAvLyBhbGxvY2F0ZWQgYmxv Y2sgaW4gdGhlDQo+IHBlcm1hbmVudCBQRUkgUkFNIGluIHRoZSBwbGF0Zm9ybSBQRUlNLg0KPiA+ PiArICAvLw0KPiA+PiArICBBU1NFUlQgKE5ld1NpemUgPj0gU0laRV8xMjhNQik7DQo+ID4+ICsg IEFTU0VSVCAoDQo+ID4+ICsgICAgKCgoVUlOVDY0KVBjZEdldDY0IChQY2RGZEJhc2VBZGRyZXNz KSArDQo+ID4+ICsgICAgICAoVUlOVDY0KVBjZEdldDMyIChQY2RGZFNpemUpKSA8PSBOZXdCYXNl KSB8fA0KPiA+PiArICAgICgoVUlOVDY0KVBjZEdldDY0IChQY2RGZEJhc2VBZGRyZXNzKSA+PSAo TmV3QmFzZSArIE5ld1NpemUpKSk7DQo+ID4+ICsNCj4gPj4gKyAgcmV0dXJuIFJFVFVSTl9TVUND RVNTOw0KPiA+PiArfQ0KPiA+Pg0KPiA+DQoNCklNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50 cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQg bWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lw aWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlz Y2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1 cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRo YW5rIHlvdS4NCg==