From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9A116459C6; Wed, 18 Sep 2024 10:37:10 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 88F0F42F71; Wed, 18 Sep 2024 10:37:10 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2082.outbound.protection.outlook.com [40.107.220.82]) by mails.dpdk.org (Postfix) with ESMTP id 0685842ED8 for ; Wed, 18 Sep 2024 10:37:09 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R/yakZdZPNKhVVL/RP6d5ELLCyEYL/I9HIniItug37C3TZOKUM/SX5gq5hkU8hMBYhktk3xJq+IPZv3LTD5jU7FQ6Om2X+WmyQqIaxC09p/x5qJ8E5wr+zXW2pqNg5PdOi6PDGr1GOgJ9/bOAUC/QE+r6GLGb2MyGU4zc2Crmz+O+kBUVe+qF88a5Qoj+DV5xHAEJV/rNaTBa/6CA7pVDHDVyBmqoQ6YfV53qHHR+zwzG3tjleMoYyiQjBm8w/v+brVRTwy335QMTOZvH/kDhMr44P9WBljfmEgYbwnkZCUsxgTdLnV/RZQbwC/HHiKW/pBEvPz6Ax9xbJu7LEtq+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=zDIK7P3CwU3chqPaP7l/1gA89VWMKx5QKRWdc6qW+1c=; b=Whd7y5F78bBJf5zpM0QBF/xkG4MWISY+6d0aFgCYrZ/mvkaWBwhHsgfGihabq7YixKWj7Gt4R/5XEnMTHZPdFquVDzAwhQw1CF4/Q+D182ZD37kYuXNXxC9rLd1IYBrqMNGyGhBmYUUpFeT0vWymG8YzMmJlIVBAUdcNZ8b27MR9YWe2RjXTi0+ej1Wvvu/OqMW0/L7T3He+tZdoRuU/RiWu1IVOvKQUfsLF9qcs8M9mS+mNalZZkdAswv+rMhn3kvAfohx0ICcFvWdUIyZoGG48vFMQsNSSzcHfUMIRz2zB8B/KQbinDFHzP48Cug8dmvsUkXQo+xe95ZqqmWaQ9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zDIK7P3CwU3chqPaP7l/1gA89VWMKx5QKRWdc6qW+1c=; b=wmwW9uYLLxAJnuXsXRzr2bV9FCOgkgeupgh5r5vUmO9Aeoru4yizALZ9InUTvXiSp9/JsdnT82DZilg6H57E/VFIe7bxusiE/cIQLW26TZKZ1UcQ5BqjAs97kB7MzL1qvWPGBuB5Jb8ugHQszSpvzaLcpKe8r7x4jWQrUZKWON4= Received: from CH3PR12MB8233.namprd12.prod.outlook.com (2603:10b6:610:129::15) by MW5PR12MB5650.namprd12.prod.outlook.com (2603:10b6:303:19e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7962.26; Wed, 18 Sep 2024 08:37:06 +0000 Received: from CH3PR12MB8233.namprd12.prod.outlook.com ([fe80::278f:5cc5:549c:3515]) by CH3PR12MB8233.namprd12.prod.outlook.com ([fe80::278f:5cc5:549c:3515%5]) with mapi id 15.20.7982.016; Wed, 18 Sep 2024 08:37:05 +0000 From: "Tummala, Sivaprasad" To: "lihuisong (C)" CC: "dev@dpdk.org" , "david.hunt@intel.com" , "anatoly.burakov@intel.com" , "radu.nicolau@intel.com" , "cristian.dumitrescu@intel.com" , "jerinj@marvell.com" , "konstantin.ananyev@huawei.com" , "Yigit, Ferruh" , "gakhil@marvell.com" Subject: RE: [PATCH v2 1/4] power: refactor core power management library Thread-Topic: [PATCH v2 1/4] power: refactor core power management library Thread-Index: AQHa97jruE4/5FJoc0KdhklxB9GDGbI6xL2AgBlP7KCAAVqogIAH6c7g Date: Wed, 18 Sep 2024 08:37:05 +0000 Message-ID: References: <20240720165030.246294-1-sivaprasad.tummala@amd.com> <20240826130650.320130-1-sivaprasad.tummala@amd.com> <20240826130650.320130-2-sivaprasad.tummala@amd.com> <375e3ab9-bf84-1844-787d-ec89230ae739@huawei.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ActionId=8cf00e1b-0b31-48e2-85c3-2f194523778e; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ContentBits=0; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Enabled=true; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Method=Standard; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Name=AMD Internal Distribution Only; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_SetDate=2024-09-18T08:25:13Z; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR12MB8233:EE_|MW5PR12MB5650:EE_ x-ms-office365-filtering-correlation-id: 94728592-fafe-417f-8312-08dcd7bd13a2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?dFpodVFuMGs0dkpjRW0yajRHRXZFYmRXR2xjUnZhZ1YxNnpEeUY0YzdjOWpz?= =?utf-8?B?OHhEMWFnMTNoSUZyNVU2ZWtYSXIyMkNhdHk4TWZLMkMzWjlTYkhRd1Jac2dO?= =?utf-8?B?cTFDZXgrRk1VZnRiWlJwUWdUZmxvQ2hvNitsNm5uRHdSWnVjYnNBblBWenJ6?= =?utf-8?B?WU9naVBkS0s3NzkwNG9qR1Y2OEVUOGQ5RGx4V3hMcUk3akMrVWw2cHp0S2RC?= =?utf-8?B?dk0yNk5BbTYyVFRjSlh0Vjg1ZGtTdjhPb3pjSk1JOWQrZU9CdFA5ajRORkVx?= =?utf-8?B?ODRtZmVSa1JjWmtIeGtzUFZ6QUxJbFRSazRCeWQweDFPOTk0Ym43eXhDcGRI?= =?utf-8?B?dFBvbXhDbWxyYVBYblRnd2VaaFNxOFFHVVIveHlTZDZVRno0aTh0ekd6VFlv?= =?utf-8?B?bHFmNzBuWFZIMFBZb3lKYVVxZFlwNW00TFlKRUJWZEJIV1VmTXQ2VHZTSkpY?= =?utf-8?B?NjdWdmE4aHpFVUJCM3dWTmxEd01JU0hpR1RJdE9jdmI5MlBlYWJ3K3VVeFpw?= =?utf-8?B?QnNKZWt4NlQxb2ErMkEzZUd2cW1sVnZXYVJ5ZFZITXdnVFpyTGU0bW82c2I2?= =?utf-8?B?VVlCR1A0Nm04WmRVOHZOZVcrVnIzdjFLZUJ4a2thdE4weUpSam1nRUlCUnFX?= =?utf-8?B?enp5dEl1SUJrV2tRaFZobFlialFvSk1TeGVKV3pUVHptZUtqcW9xdkk0REd2?= =?utf-8?B?SlhYcis5Ykd4T2djblJyQlZHTUI4Nk5aeW0yRDNFL0hBc2xsU280N1FmOGk1?= =?utf-8?B?SHM1WERMQ2hWYmt1Q1RxR0k5WXdIcWxUS1dFVlNvUy9XMGFKUmtLcUNUWjlN?= =?utf-8?B?WmNpRUpRZThOUGJKc1VUajBwUlZlVFU3OGM1ZGozRmQ5UUx1MFVzcjhHS3Vx?= =?utf-8?B?RG4rR1MyQk4waGM3cmhzbGhTeTNzSm9Ga0h6SlYyRTRsT0dIVVVqMzI3c1pH?= =?utf-8?B?TmY1dkhOcXNTZlFyWUpScm9kcWNoMHQ0ZWFNNTJOVEg3Sy9LMTYvRVNjRU4r?= =?utf-8?B?VWQ1RGFpU25TOExIalVGdUdJWWtmWjUvU2VMcnQ0cFJHZGVreklicnRGTlNp?= =?utf-8?B?cEgvbkIwOEJyWVVFWHJkL1JSNExYNGZPOHY2VmY0Smt3cms5UDFxRnlUN29p?= =?utf-8?B?cXBrVUh5UjFOTjdCa3F4Q3lGOW51c1ZIV3Vsc0hyUkV5anl4RnNNQXZ4dEx3?= =?utf-8?B?WmFsSHptZjlDUGlIVWQvRFd1cEVDTEk3aEJna1pSWnVhZmJIWEZKcmR0NTcx?= =?utf-8?B?WjY1VDg4OU5DTFluU0VPUUg4Qk1KOEFoQW5XS04zVkdCM3cxU0ZuREhJZGdY?= =?utf-8?B?V1dudndaVTVtdk52K05XMEtLeUIrYy93ejBLZlNBZ1hUcGtiQ1dYdGFCeFhR?= =?utf-8?B?SHl1dzhOME9LdzZJL0ZRQ3RwbjQ3d3hEbVVuTCtnMFhmRUY1dnJXUFRKYXUx?= =?utf-8?B?eEtYRUxLWjdkc045RnJZKzIvbG9pZHVIVVBlRmdGQW9tMkN4VjVUQkd0T0p5?= =?utf-8?B?S0ZQQ1d2SkRJWjdjcGdvRGI0YWhOYnVjd1A1OWdHQ1plWkV3S3U5aG1lTEJ1?= =?utf-8?B?WEdnYkJDeHBEVE5DWThTNGR4ZXl0THA0dEJJQ1lvOTlTbkpVelVlc1QvZnVu?= =?utf-8?B?VzFEZkhZTVRFbkJvWTNwMC9GRVRhb2VQZTV3UkdXM09FVU4vUlVxQnR4S1F0?= =?utf-8?B?emZacDNVSHB6YlNjN1c0SlRvVXVOTHEzTU1yUk41Q3ZtN0RuWUl5aEFzMjl4?= =?utf-8?B?RS9EMXZoeFI0S2tyUlpRVzRJdU9OMzBLazNwWVpuZXZ3MUgzbGVlYXI0OHNN?= =?utf-8?B?cnV0ekEyTEtIY2d3d1FUd2tmRkR1NUhseXNsVjBMd09vRkQ2V1B6b3I2dDFz?= =?utf-8?B?RkUxOGp5dno2ZzRUZ2JqVmJRNk5zNXpNSHFGQXlTL3Z2YWc9PQ==?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH3PR12MB8233.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QnZCOUgyMnIrM3VPL2pMV1IySjFMTmd5TTFkQ2NMWUxvbzJ0VWJHeUtMZSt6?= =?utf-8?B?aFZreXQrYi9xdjNIdXZqSmN0YXJ2aGJUZ1Z6TUp0RmJza2ltdFVRZVQyN0VN?= =?utf-8?B?WmRoNnlLa2RpQWMzVnVZOFpWL0l4SXRneXl3MjN6VXh1RHhQOG5iZHhBc2xO?= =?utf-8?B?ME5nSjY0dDl1SGVPeU1zRlFQa1psbGovZlBFcVRzTjZhZEFiSW10REFXbzN1?= =?utf-8?B?QXVYOVFyUVM0eGozdEdxdWphWlA0VUZxM3RtRDVzVFBaQmFoL2FuZ1JmYm9h?= =?utf-8?B?c3ljcHNSbTV6R2EvcVZ1dmpVU05pVWlTQ0Zid01wTlNwejRzSEduVWo1RlQw?= =?utf-8?B?bXhyZDRpdUdBQVhjbWJPM2gzc1hKcEVJKzRGWUZ2aHZYK3ZkN1czck80Qk5G?= =?utf-8?B?WnlQVlJPWmFjTWhNWDFaeEVNcWhER2JDbitVUmdoK1hCbWdScXEzSms2NC9p?= =?utf-8?B?bUNIdEI0VzRqR0VxRFdaOGVMWDlWTVFPQ2JOV3RNUENpMmxHUmlHT2RDLzdy?= =?utf-8?B?YmFnd3B0MUpqM2pDWjdFZGxKb094RTA3NEhodTVNK2dmWXdIdEZrSDdBcUZ6?= =?utf-8?B?eFg0YThJbStXamx4SjBpdWtoT1o2YnY2L0ZpTFB2c0oxeU1sbzhPdlo5b1p5?= =?utf-8?B?NGZldk9qWEIrNitaT2pXbTdrWk5BSmVYVDZQTXhoeVpNWHlERGtmaFRWZ09U?= =?utf-8?B?OXo5a0ZvV0hQUWxQMHJLQkJoRkRxQkQ4N0pKNys1TGp6OW91dFRrYkZ1YlF4?= =?utf-8?B?aXQ0V01WWk82WGh0WUc3eHY2Sm9QUUY0ZHVFd0NwSENCOGhSWDFDUDRhY3hK?= =?utf-8?B?V0ZMVjJBQTU1Ty9YVWo1NmlkRW5LWmRNOGo5TUJkdUw1YjVjQjVEZHVVdDBz?= =?utf-8?B?dGhtb2owMlhEVTEzZGYrREdpS1p3RmVjZ0Iyc01VM0dvcFJYeEJJZFJURkNy?= =?utf-8?B?VmRFSkp6T3ZEdkpnSzYweUx1ekhpSUlxZjdLSzZ0WnplVXFrSzNmMFU2RmZq?= =?utf-8?B?Q1o0K0RBZXJ1NEhoM2xtRUVpMW04YmV3THNmc2c4UzV0U2tLRk1WdXl0V1hp?= =?utf-8?B?S1IvZUNLRDJGeElSOWdPR2w1bG5FU0J2RncwWXF0SXlmWWFIWDIwOEZMWktB?= =?utf-8?B?bEhtSWtRaVJucnc5ZGlWYUcxMWlXZk5lczgxbll2TWQ1cmQ4UmtGRndhdUZS?= =?utf-8?B?WnhNUXFaMkluTEFyMFdnODZwUGRUMFFzZmplK2lNbW5mVVY3aVM2MDMyWnBm?= =?utf-8?B?QytkM09CTmQzSFg3UGR1S0IwNU5ITmYvUUVHZjgrVUdlb3JBck9Gem95ZFQw?= =?utf-8?B?ZVlVM2VhN3M0em1kaC9tcC9KS2FrdGZkSFJUWkZGeTVsb2ZaWThhS0owQW1u?= =?utf-8?B?ZU9tTFlJVStZekxoMnJEZFQ1QTN5VkwrZFpzWHdrOEFtanMza1dLSXNNNTFr?= =?utf-8?B?MlRvWkRNbnRlenhHanVTU3ZQVUlNZ2VQQisyMFNGN2xGajdpcEZ4a1VHWUFL?= =?utf-8?B?VmxFRHI1R1NoRlRUWWdybU0rY3RBYmFQNDhmU0lraVVVMFZEVHhseTc2ZDJT?= =?utf-8?B?WDNCT1RyQURiUmFoT2hFTUs5cGN5U0w5Mk5Qa2grVTdMM3VFbEdad1BjMVkw?= =?utf-8?B?Ny9YWHlIZ1AyU09CNUY2ZEx1S3MrQWJCR1g2ekJWQnpqUkZZNnZqUzV2aklp?= =?utf-8?B?V0FhV0ZEZEZ4NlNhMGlTRjZuS2ZUK3NoL1d1Zm96Qkw3VnVvZnk3ZjdGM0Zk?= =?utf-8?B?SDhXMHU0RTJrd2htKzlpQTl4MFVzQXJKbDBpK3VuTnp1N1hnbnB3NXIwN0gr?= =?utf-8?B?a3hpSDFsK1RaVWtucEtDS0RUcGVodkVmUE1oVllEUkhhM2hKL01qU0owVE1q?= =?utf-8?B?UitLQnBDNFZxVTRGNWJrWG94QzhvM1hSSy83YkFDTnh0bGRWeHltTCtsVVVs?= =?utf-8?B?UjhVMWE5ejhoVGhHS1d2VnVzRE50QkthREFwdzJmeG1pS3RjTTNGNmFsSC83?= =?utf-8?B?VU9JY1VlSnRkcGx3ZEg5eWhOT3haVGNGRGh1cUIvTWptcWRhbHNwRFRlQzVW?= =?utf-8?B?c29ScTk5TGlscElBbjZ1QWdCV28xbWIxNTNScjI5TndDWFNHaFFyRWE2bFpF?= =?utf-8?Q?ir8c=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR12MB8233.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 94728592-fafe-417f-8312-08dcd7bd13a2 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2024 08:37:05.7391 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: uIMqx2yfScSktWrOuZPbBILzSKrtoDyD4DdSSZNClAsJt4SF2cKeiKkYYSEE3WVAHFiRYeAz/t+kLZHdciW1Mw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR12MB5650 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEFNRCBJbnRlcm5hbCBEaXN0cmlidXRpb24gT25seV0N Cg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBsaWh1aXNvbmcgKEMpIDxs aWh1aXNvbmdAaHVhd2VpLmNvbT4NCj4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMTMsIDIwMjQg MTowNSBQTQ0KPiBUbzogVHVtbWFsYSwgU2l2YXByYXNhZCA8U2l2YXByYXNhZC5UdW1tYWxhQGFt ZC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmc7IGRhdmlkLmh1bnRAaW50ZWwuY29tOyBhbmF0b2x5 LmJ1cmFrb3ZAaW50ZWwuY29tOw0KPiByYWR1Lm5pY29sYXVAaW50ZWwuY29tOyBjcmlzdGlhbi5k dW1pdHJlc2N1QGludGVsLmNvbTsgamVyaW5qQG1hcnZlbGwuY29tOw0KPiBrb25zdGFudGluLmFu YW55ZXZAaHVhd2VpLmNvbTsgWWlnaXQsIEZlcnJ1aCA8RmVycnVoLllpZ2l0QGFtZC5jb20+Ow0K PiBnYWtoaWxAbWFydmVsbC5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAxLzRdIHBvd2Vy OiByZWZhY3RvciBjb3JlIHBvd2VyIG1hbmFnZW1lbnQgbGlicmFyeQ0KPg0KPiBDYXV0aW9uOiBU aGlzIG1lc3NhZ2Ugb3JpZ2luYXRlZCBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZS4gVXNlIHByb3Bl ciBjYXV0aW9uDQo+IHdoZW4gb3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tpbmcgbGlua3MsIG9y IHJlc3BvbmRpbmcuDQo+DQo+DQo+IOWcqCAyMDI0LzkvMTIgMTk6MTcsIFR1bW1hbGEsIFNpdmFw cmFzYWQg5YaZ6YGTOg0KPiA+IFtBTUQgT2ZmaWNpYWwgVXNlIE9ubHkgLSBBTUQgSW50ZXJuYWwg RGlzdHJpYnV0aW9uIE9ubHldDQo+ID4NCj4gPiBIaSBIdWlzb25nLA0KPiA+DQo+ID4gUGxlYXNl IGZpbmQgbXkgcmVzcG9uc2UgaW5saW5lLg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ID4+IEZyb206IGxpaHVpc29uZyAoQykgPGxpaHVpc29uZ0BodWF3ZWkuY29tPg0K PiA+PiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMjcsIDIwMjQgMTo1MSBQTQ0KPiA+PiBUbzogVHVt bWFsYSwgU2l2YXByYXNhZCA8U2l2YXByYXNhZC5UdW1tYWxhQGFtZC5jb20+DQo+ID4+IENjOiBk ZXZAZHBkay5vcmc7IGRhdmlkLmh1bnRAaW50ZWwuY29tOyBhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwu Y29tOw0KPiA+PiByYWR1Lm5pY29sYXVAaW50ZWwuY29tOyBjcmlzdGlhbi5kdW1pdHJlc2N1QGlu dGVsLmNvbTsNCj4gPj4gamVyaW5qQG1hcnZlbGwuY29tOyBrb25zdGFudGluLmFuYW55ZXZAaHVh d2VpLmNvbTsgWWlnaXQsIEZlcnJ1aA0KPiA+PiA8RmVycnVoLllpZ2l0QGFtZC5jb20+OyBnYWto aWxAbWFydmVsbC5jb20NCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAxLzRdIHBvd2VyOiBy ZWZhY3RvciBjb3JlIHBvd2VyIG1hbmFnZW1lbnQNCj4gPj4gbGlicmFyeQ0KPiA+Pg0KPiA+PiBD YXV0aW9uOiBUaGlzIG1lc3NhZ2Ugb3JpZ2luYXRlZCBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZS4g VXNlIHByb3Blcg0KPiA+PiBjYXV0aW9uIHdoZW4gb3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tp bmcgbGlua3MsIG9yIHJlc3BvbmRpbmcuDQo+ID4+DQo+ID4+DQo+ID4+IEhpIFNpdmFwcmFzYSwN Cj4gPj4NCj4gPj4gU29tZSBjb21tZW50cyBpbmxpbmUuDQo+ID4+DQo+ID4+IC9IdWlzb25nDQo+ ID4+DQo+ID4+IOWcqCAyMDI0LzgvMjYgMjE6MDYsIFNpdmFwcmFzYWQgVHVtbWFsYSDlhpnpgZM6 DQo+ID4+PiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBjb21wcmVoZW5zaXZlIHJlZmFjdG9yIHRv IHRoZSBjb3JlIHBvd2VyDQo+ID4+PiBtYW5hZ2VtZW50IGxpYnJhcnkuIFRoZSBwcmltYXJ5IGZv Y3VzIGlzIG9uIGltcHJvdmluZyBtb2R1bGFyaXR5IGFuZA0KPiA+Pj4gb3JnYW5pemF0aW9uIGJ5 IHJlbG9jYXRpbmcgc3BlY2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBmcm9tIHRoZQ0KPiA+ Pj4gJ2xpYi9wb3dlcicgZGlyZWN0b3J5IHRvIGRlZGljYXRlZCBkaXJlY3RvcmllcyB3aXRoaW4N Cj4gPj4+ICdkcml2ZXJzL3Bvd2VyL2NvcmUvKicuIFRoZSBhZGp1c3RtZW50IG9mIG1lc29uLmJ1 aWxkIGZpbGVzIGVuYWJsZXMNCj4gPj4+IHRoZSBzZWxlY3RpdmUgYWN0aXZhdGlvbiBvZiBpbmRp dmlkdWFsIGRyaXZlcnMuDQo+ID4+PiBUaGVzZSBjaGFuZ2VzIGNvbnRyaWJ1dGUgdG8gYSBzaWdu aWZpY2FudCBlbmhhbmNlbWVudCBpbiBjb2RlDQo+ID4+PiBvcmdhbml6YXRpb24sIHByb3ZpZGlu ZyBhIGNsZWFyZXIgc3RydWN0dXJlIGZvciBkcml2ZXIgaW1wbGVtZW50YXRpb25zLg0KPiA+Pj4g VGhlIHJlZmFjdG9yIGFpbXMgdG8gaW1wcm92ZSBvdmVyYWxsIGNvZGUgY2xhcml0eSBhbmQgYm9v c3QNCj4gPj4+IG1haW50YWluYWJpbGl0eS4gQWRkaXRpb25hbGx5LCBpdCBlc3RhYmxpc2hlcyBh IGZvdW5kYXRpb24gZm9yDQo+ID4+PiBmdXR1cmUgZGV2ZWxvcG1lbnQsIGFsbG93aW5nIGZvciBt b3JlIGZvY3VzZWQgd29yayBvbiBpbmRpdmlkdWFsDQo+ID4+PiBkcml2ZXJzIGFuZCBzZWFtbGVz cyBpbnRlZ3JhdGlvbiBvZiBmb3J0aGNvbWluZyBlbmhhbmNlbWVudHMuDQo+ID4+Pg0KPiA+Pj4g djI6DQo+ID4+PiAgICAtIGFkZGVkIE5VTEwgY2hlY2sgZm9yIGdsb2JhbF9jb3JlX29wcyBpbiBy dGVfcG93ZXJfZ2V0X2NvcmVfb3BzDQo+ID4+Pg0KPiA+Pj4gU2lnbmVkLW9mZi1ieTogU2l2YXBy YXNhZCBUdW1tYWxhIDxzaXZhcHJhc2FkLnR1bW1hbGFAYW1kLmNvbT4NCj4gPj4+IC0tLQ0KPiA+ Pj4gICAgZHJpdmVycy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsNCj4gPj4+ICAgIC4uLi9wb3dlci9hY3BpL2FjcGlfY3B1ZnJlcS5jICAgICAgICAgICAgICAg ICB8ICAyMiArLQ0KPiA+Pj4gICAgLi4uL3Bvd2VyL2FjcGkvYWNwaV9jcHVmcmVxLmggICAgICAg ICAgICAgICAgIHwgICA2ICstDQo+ID4+PiAgICBkcml2ZXJzL3Bvd2VyL2FjcGkvbWVzb24uYnVp bGQgICAgICAgICAgICAgICAgfCAgMTAgKw0KPiA+Pj4gICAgLi4uL3Bvd2VyL2FtZF9wc3RhdGUv YW1kX3BzdGF0ZV9jcHVmcmVxLmMgICAgIHwgIDI0ICstDQo+ID4+PiAgICAuLi4vcG93ZXIvYW1k X3BzdGF0ZS9hbWRfcHN0YXRlX2NwdWZyZXEuaCAgICAgfCAgIDggKy0NCj4gPj4+ICAgIGRyaXZl cnMvcG93ZXIvYW1kX3BzdGF0ZS9tZXNvbi5idWlsZCAgICAgICAgICB8ICAxMCArDQo+ID4+PiAg ICAuLi4vcG93ZXIvY3BwYy9jcHBjX2NwdWZyZXEuYyAgICAgICAgICAgICAgICAgfCAgMjIgKy0N Cj4gPj4+ICAgIC4uLi9wb3dlci9jcHBjL2NwcGNfY3B1ZnJlcS5oICAgICAgICAgICAgICAgICB8 ICAgOCArLQ0KPiA+Pj4gICAgZHJpdmVycy9wb3dlci9jcHBjL21lc29uLmJ1aWxkICAgICAgICAg ICAgICAgIHwgIDEwICsNCj4gPj4+ICAgIC4uLi9wb3dlci9rdm1fdm19L2d1ZXN0X2NoYW5uZWwu YyAgICAgICAgICAgICB8ICAgMA0KPiA+Pj4gICAgLi4uL3Bvd2VyL2t2bV92bX0vZ3Vlc3RfY2hh bm5lbC5oICAgICAgICAgICAgIHwgICAwDQo+ID4+PiAgICAuLi4vcG93ZXIva3ZtX3ZtL2t2bV92 bS5jICAgICAgICAgICAgICAgICAgICAgfCAgMjIgKy0NCj4gPj4+ICAgIC4uLi9wb3dlci9rdm1f dm0va3ZtX3ZtLmggICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQ0KPiA+Pj4gICAgZHJpdmVy cy9wb3dlci9rdm1fdm0vbWVzb24uYnVpbGQgICAgICAgICAgICAgIHwgIDE2ICsNCj4gPj4+ICAg IGRyaXZlcnMvcG93ZXIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICB8ICAxMiArDQo+ ID4+PiAgICBkcml2ZXJzL3Bvd2VyL3BzdGF0ZS9tZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAg MTAgKw0KPiA+Pj4gICAgLi4uL3Bvd2VyL3BzdGF0ZS9wc3RhdGVfY3B1ZnJlcS5jICAgICAgICAg ICAgIHwgIDIyICstDQo+ID4+PiAgICAuLi4vcG93ZXIvcHN0YXRlL3BzdGF0ZV9jcHVmcmVxLmgg ICAgICAgICAgICAgfCAgIDYgKy0NCj4gPj4+ICAgIGxpYi9wb3dlci9tZXNvbi5idWlsZCAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQ0KPiA+Pj4gICAgbGliL3Bvd2VyL3Bvd2VyX2Nv bW1vbi5jICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQo+ID4+PiAgICBsaWIvcG93ZXIv cG93ZXJfY29tbW9uLmggICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKy0NCj4gPj4+ICAgIGxp Yi9wb3dlci9ydGVfcG93ZXIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDI5MSArKysrKyst LS0tLS0tLS0tLS0NCj4gPj4+ICAgIGxpYi9wb3dlci9ydGVfcG93ZXIuaCAgICAgICAgICAgICAg ICAgICAgICAgICB8IDEzOSArKysrKystLS0NCj4gPj4+ICAgIGxpYi9wb3dlci9ydGVfcG93ZXJf Y29yZV9vcHMuaCAgICAgICAgICAgICAgICB8IDIwOCArKysrKysrKysrKysrDQo+ID4+PiAgICBs aWIvcG93ZXIvdmVyc2lvbi5tYXAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKw0KPiA+ Pj4gICAgMjYgZmlsZXMgY2hhbmdlZCwgNjIxIGluc2VydGlvbnMoKyksIDI3MSBkZWxldGlvbnMo LSkNCj4gPj4+ICAgIHJlbmFtZSBsaWIvcG93ZXIvcG93ZXJfYWNwaV9jcHVmcmVxLmMgPT4NCj4g Pj4+IGRyaXZlcnMvcG93ZXIvYWNwaS9hY3BpX2NwdWZyZXEuYw0KPiA+PiAoOTUlKQ0KPiA+Pj4g ICAgcmVuYW1lIGxpYi9wb3dlci9wb3dlcl9hY3BpX2NwdWZyZXEuaCA9Pg0KPiA+Pj4gZHJpdmVy cy9wb3dlci9hY3BpL2FjcGlfY3B1ZnJlcS5oDQo+ID4+ICg5OCUpDQo+ID4+PiAgICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9wb3dlci9hY3BpL21lc29uLmJ1aWxkDQo+ID4+PiAgICByZW5h bWUgbGliL3Bvd2VyL3Bvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcS5jID0+DQo+ID4+IGRyaXZlcnMv cG93ZXIvYW1kX3BzdGF0ZS9hbWRfcHN0YXRlX2NwdWZyZXEuYyAoOTUlKQ0KPiA+Pj4gICAgcmVu YW1lIGxpYi9wb3dlci9wb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXEuaCA9Pg0KPiA+PiBkcml2ZXJz L3Bvd2VyL2FtZF9wc3RhdGUvYW1kX3BzdGF0ZV9jcHVmcmVxLmggKDk3JSkNCj4gPj4+ICAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bvd2VyL2FtZF9wc3RhdGUvbWVzb24uYnVpbGQNCj4g Pj4+ICAgIHJlbmFtZSBsaWIvcG93ZXIvcG93ZXJfY3BwY19jcHVmcmVxLmMgPT4NCj4gPj4+IGRy aXZlcnMvcG93ZXIvY3BwYy9jcHBjX2NwdWZyZXEuYw0KPiA+PiAoOTUlKQ0KPiA+Pj4gICAgcmVu YW1lIGxpYi9wb3dlci9wb3dlcl9jcHBjX2NwdWZyZXEuaCA9Pg0KPiA+Pj4gZHJpdmVycy9wb3dl ci9jcHBjL2NwcGNfY3B1ZnJlcS5oDQo+ID4+ICg5NyUpDQo+ID4+PiAgICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9wb3dlci9jcHBjL21lc29uLmJ1aWxkDQo+ID4+PiAgICByZW5hbWUge2xp Yi9wb3dlciA9PiBkcml2ZXJzL3Bvd2VyL2t2bV92bX0vZ3Vlc3RfY2hhbm5lbC5jICgxMDAlKQ0K PiA+Pj4gICAgcmVuYW1lIHtsaWIvcG93ZXIgPT4gZHJpdmVycy9wb3dlci9rdm1fdm19L2d1ZXN0 X2NoYW5uZWwuaCAoMTAwJSkNCj4gPj4+ICAgIHJlbmFtZSBsaWIvcG93ZXIvcG93ZXJfa3ZtX3Zt LmMgPT4gZHJpdmVycy9wb3dlci9rdm1fdm0va3ZtX3ZtLmMNCj4gKDgyJSkNCj4gPj4+ICAgIHJl bmFtZSBsaWIvcG93ZXIvcG93ZXJfa3ZtX3ZtLmggPT4gZHJpdmVycy9wb3dlci9rdm1fdm0va3Zt X3ZtLmgNCj4gKDk4JSkNCj4gPj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bvd2Vy L2t2bV92bS9tZXNvbi5idWlsZA0KPiA+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv cG93ZXIvbWVzb24uYnVpbGQNCj4gPj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bv d2VyL3BzdGF0ZS9tZXNvbi5idWlsZA0KPiA+Pj4gICAgcmVuYW1lIGxpYi9wb3dlci9wb3dlcl9w c3RhdGVfY3B1ZnJlcS5jID0+DQo+ID4+IGRyaXZlcnMvcG93ZXIvcHN0YXRlL3BzdGF0ZV9jcHVm cmVxLmMgKDk2JSkNCj4gPj4+ICAgIHJlbmFtZSBsaWIvcG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZy ZXEuaCA9Pg0KPiA+PiBkcml2ZXJzL3Bvd2VyL3BzdGF0ZS9wc3RhdGVfY3B1ZnJlcS5oICg5OCUp DQo+ID4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Bvd2VyL3J0ZV9wb3dlcl9jb3JlX29w cy5oDQo+ID4+IEhvdyBhYm91dCB1c2UgdGhlIGZvbGxvd2luZyBkaXJlY3Rvcnkgc3RydWN0dXJl Pw0KPiA+PiAqRm9yIHBvd2VyIGxpYnMqDQo+ID4+IGxpYi9wb3dlci9wb3dlcl9jb21tb24uKg0K PiA+PiBsaWIvcG93ZXIvcnRlX3Bvd2VyX3BtZF9tZ210LioNCj4gPj4gbGliL3Bvd2VyL3J0ZV9w b3dlcl9jcHVmcmVxX2FwaS4qIO+8iHJlcGxhY2luZyBydGVfcG93ZXIuYyBmaWxlIG1heWJlIHNp bXBsZSBmb3INCj4gdXMuDQo+ID4+IGJ1dCBJJ20gbm90IHN1cmUgaWYgd2UgY2FuIHB1dCB0aGUg aW5pdCBvZiBjb3JlLCB1bmNvcmUgYW5kIHBtZCBtZ210DQo+ID4+IHRvIHJ0ZV9wb3dlcl9pbml0 LmMgaW4gcnRlX3Bvd2VyLmMuKQ0KPiA+PiBsaWIvcG93ZXIvcnRlX3Bvd2VyX3VuY29yZV9mcmVx X2FwaS4qDQo+ID4gWWVzLCByZW5hbWluZyBydGVfcG93ZXIuYyBpcyBkZWZpbml0ZWx5IGEgcG9z c2libGUgaW5jcmVtZW50YWwgY2hhbmdlIHRoYXQgY291bGQNCj4gYmUgY29uc2lkZXJlZCBsYXRl ci4NCj4gPiBIb3dldmVyLCBmb3IgdGhlIHRpbWUgYmVpbmcsIG91ciBmb2N1cyB3aWxsIGJlIG9u IHJlZmFjdG9yaW5nIHRoZSBjcHVmcmVxIGRyaXZlcnMNCj4gb25seS4NCj4gVGhlIHJ0ZV9wb3dl ci5jIGp1c3Qgd29ya3MgZm9yIHRoZSBpbml0aWFsaXphdGlvbiBvZiBjcHVmcmVxIGRyaXZlci4g Tm93IHRoYXQgeW91IGFyZQ0KPiByZXdvcmtpbmcgY29yZSBhbmQgdW5jb3JlIHBvd2VyIGxpYnJh cnkgYW5kIHJlYXJyYW5nZSB0aGUgZGlyZWN0b3J5IHVuZGVyIHBvd2VyLg0KPiBJIHRoaW5rIHJl bmFtaW5nIHRoaXMgZmlsZSBuYW1lIHNob3VsZCBiZSBtb3JlIGFwcHJvcHJpYXRlIGluIHRoaXMg c2VyaWVzLg0KPiA+PiAqQW5kIGhhcyBkaXJlY3RvcmllcyB1bmRlciBkcml2ZXJzL3Bvd2VyOioN Cj4gPj4gMT4gRm9yIGNvcmUgZHZmcyBkcml2ZXI6DQo+ID4+IGRyaXZlcnMvcG93ZXIvY3B1ZnJl cS9hY3BpX2NwdWZyZXEuYw0KPiA+PiBkcml2ZXJzL3Bvd2VyL2NwdWZyZXEvY3BwY19jcHVmcmVx LmMNCj4gPj4gZHJpdmVycy9wb3dlci9jcHVmcmVxL2FtZF9wc3RhdGVfY3B1ZnJlcS5jDQo+ID4+ IGRyaXZlcnMvcG93ZXIvY3B1ZnJlcS9pbnRlbF9wc3RhdGVfY3B1ZnJlcS5jDQo+ID4+IGRyaXZl cnMvcG93ZXIvY3B1ZnJlcS9rdm1fY3B1ZnJlcS5jDQo+ID4+IFRoZSBjb2RlIG9mIGVhY2ggY3B1 ZnJlcSBkcml2ZXIgaXMgbm90IHRvbyBtdWNoIGFuZCBkb2Vzbid0IHByb2JhYmx5DQo+ID4+IGlu Y3JlYXNlLiBTbyBkb24ndCBuZWVkIHRvIHVzZSBhIGRpcmVjdG9yeSBmb3IgaXQuDQo+ID4+DQo+ ID4+IDI+IEZvciB1bmNvcmUgZHZmcyBkcml2ZXI6DQo+ID4+IGRyaXZlcnMvcG93ZXIvdW5jb3Jl ZnJlcS9pbnRlbF91bmNvcmUuKg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzb24uYnVp bGQgYi9kcml2ZXJzL21lc29uLmJ1aWxkIGluZGV4DQo+ID4+PiA2NjkzMWQ0MjQxLi45ZDc3ZTBk ZWFiIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZHJpdmVycy9tZXNvbi5idWlsZA0KPiA+Pj4gKysrIGIv ZHJpdmVycy9tZXNvbi5idWlsZA0KPiA+Pj4gQEAgLTI5LDYgKzI5LDcgQEAgc3ViZGlycyA9IFsN Cj4gPj4+ICAgICAgICAgICAgJ2V2ZW50JywgICAgICAgICAgIyBkZXBlbmRzIG9uIGNvbW1vbiwg YnVzLCBtZW1wb29sIGFuZCBuZXQuDQo+ID4+PiAgICAgICAgICAgICdiYXNlYmFuZCcsICAgICAg ICMgZGVwZW5kcyBvbiBjb21tb24gYW5kIGJ1cy4NCj4gPj4+ICAgICAgICAgICAgJ2dwdScsICAg ICAgICAgICAgIyBkZXBlbmRzIG9uIGNvbW1vbiBhbmQgYnVzLg0KPiA+Pj4gKyAgICAgICAgJ3Bv d2VyJywgICAgICAgICAgIyBkZXBlbmRzIG9uIGNvbW1vbiAoaW4gZnV0dXJlKS4NCj4gPj4+ICAg IF0NCj4gPj4+DQo+ID4+PiAgICBpZiBtZXNvbi5pc19jcm9zc19idWlsZCgpDQo+ID4+PiBkaWZm IC0tZ2l0IGEvbGliL3Bvd2VyL3Bvd2VyX2FjcGlfY3B1ZnJlcS5jDQo+ID4+PiBiL2RyaXZlcnMv cG93ZXIvYWNwaS9hY3BpX2NwdWZyZXEuYw0KPiA+Pj4gc2ltaWxhcml0eSBpbmRleCA5NSUNCj4g Pj4+IHJlbmFtZSBmcm9tIGxpYi9wb3dlci9wb3dlcl9hY3BpX2NwdWZyZXEuYyByZW5hbWUgdG8N Cj4gPj4+IGRyaXZlcnMvcG93ZXIvYWNwaS9hY3BpX2NwdWZyZXEuYw0KPiA+PiBkbyBub3Qgc3Vn Z2VzdCB0byBjcmVhdGUgb25lIGRpcmVjdG9yeSBmb3IgZWFjaCBjcHVmcmVxIGRyaXZlci4NCj4g Pj4gQmVjYXVzZSBwc3RhdGUgZHJpdmVycyBhbHNvIGNvbXBseSB3aXRoIEFDUEkgc3BlYywgcmln aHTvvJ8NCj4gPj4gSW4gYWRkaXRpb24sIHRoZSBjb2RlIG9mIGVhY2ggY3B1ZnJlcSBkcml2ZXJz IGFyZSBub3QgdG9vIG11Y2guDQo+ID4+IFRoZXJlIGlzIGp1c3Qgb25lIGZpbGUgdW5kZXIgb25l IGRpcmVjdG9yeSB3aGljaCBpcyBub3QgZ29vZC4NCj4gPiBPbmUgb2Ygb3VyIG9iamVjdGl2ZXMg Zm9yIHRoZSByZWZhY3RvcmluZyBpcyB0byBzZWxlY3RpdmVseSBkaXNhYmxlIG5vbi1lc3NlbnRp YWwNCj4gZHJpdmVycyB1c2luZyBNZXNvbiBidWlsZCBvcHRpb25zLg0KPiA+IEhvd2V2ZXIsIGJ5 IHJlYXJyYW5naW5nIHRoZSBkcml2ZXIgc3RydWN0dXJlLCB3ZSByaXNrIGRpc3J1cHRpbmcgdGhp cyBjYXBhYmlsaXR5Lg0KPiBJIGdldCB5b3VyIHB1cnBvc2UuDQo+IFRoZSBjcHVmcmVxIGxpYnJh cnkgaGFzIHRoZSBmZWF0dXJlIGFuZCBpbnRlcmZhY2UgdG8gZGV0ZWN0IHdoaWNoIGRyaXZlciB0 byB1c2UsIHJpZ2h0Pw0KPiBTbyBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciBjcHVmcmVxIGxpYnJh cnkgdG8gaW50cm9kdWNlIHRoZSBNZXNvbiBidWlsZCBvcHRpb25zLCB3aGljaA0KPiBwcm9iYWJs eSBtYWtlcyBpdCBjb21wbGljYXRlLg0KSW4gTWVzb24sIHlvdSBjYW4gcmVkdWNlIGNvZGUgc2l6 ZSBieSBkaXNhYmxpbmcgc3BlY2lmaWMgZHJpdmVycyBvciBjb21wb25lbnRzIHRocm91Z2ggYnVp bGQgb3B0aW9ucywNCmFsbG93aW5nIHlvdSB0byBleGNsdWRlIHVubmVjZXNzYXJ5IGZlYXR1cmVz LiBBdCBydW50aW1lLCB0aGUgbGlicmFyeSB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHRoZSBh dmFpbGFibGUgZHJpdmVyLA0KYW5kIGlmIGl0J3Mgbm90IHByZXNlbnQgaW4gdGhlIGJ1aWxkLCBp bml0aWFsaXphdGlvbiB3aWxsIGZhaWwuDQpXZSdyZSBub3QgaW50cm9kdWNpbmcgYW55IG5ldyBj b21wbGV4aXRpZXM7IHJhdGhlciwgd2UgYWltIHRvIGVuc3VyZSB0aGF0IHRoZSBkcml2ZXJzIGlu IGRyaXZlcnMvcG93ZXIvKg0KYXJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgb3RoZXIgZHJpdmVycy4N Cj4gPj4+IGluZGV4IDgxOTk2ZTFjMTMuLjg2MzdjNjk3MDMgMTAwNjQ0DQo+ID4+PiAtLS0gYS9s aWIvcG93ZXIvcG93ZXJfYWNwaV9jcHVmcmVxLmMNCj4gPj4+ICsrKyBiL2RyaXZlcnMvcG93ZXIv YWNwaS9hY3BpX2NwdWZyZXEuYw0KPiA+Pj4gQEAgLTEwLDcgKzEwLDcgQEANCj4gPj4+ICAgICNp bmNsdWRlIDxydGVfc3RkYXRvbWljLmg+DQo+ID4+PiAgICAjaW5jbHVkZSA8cnRlX3N0cmluZ19m bnMuaD4NCj4gPj4+DQo+ID4+PiAtI2luY2x1ZGUgInBvd2VyX2FjcGlfY3B1ZnJlcS5oIg0KPiA+ Pj4gKyNpbmNsdWRlICJhY3BpX2NwdWZyZXEuaCINCj4gPj4+ICAgICNpbmNsdWRlICJwb3dlcl9j b21tb24uaCINCj4gPj4+DQo+ID4+IDwuLi4+DQo+ID4+PiAraWYgbm90IGlzX2xpbnV4DQo+ID4+ PiArICAgIGJ1aWxkID0gZmFsc2UNCj4gPj4+ICsgICAgcmVhc29uID0gJ29ubHkgc3VwcG9ydGVk IG9uIExpbnV4Jw0KPiA+Pj4gK2VuZGlmDQo+ID4+PiArc291cmNlcyA9IGZpbGVzKCdwc3RhdGVf Y3B1ZnJlcS5jJykNCj4gPj4+ICsNCj4gPj4+ICtkZXBzICs9IFsncG93ZXInXQ0KPiA+Pj4gZGlm ZiAtLWdpdCBhL2xpYi9wb3dlci9wb3dlcl9wc3RhdGVfY3B1ZnJlcS5jDQo+ID4+PiBiL2RyaXZl cnMvcG93ZXIvcHN0YXRlL3BzdGF0ZV9jcHVmcmVxLmMNCj4gPj4+IHNpbWlsYXJpdHkgaW5kZXgg OTYlDQo+ID4+PiByZW5hbWUgZnJvbSBsaWIvcG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZyZXEuYyBy ZW5hbWUgdG8NCj4gPj4+IGRyaXZlcnMvcG93ZXIvcHN0YXRlL3BzdGF0ZV9jcHVmcmVxLmMNCj4g Pj4gcHN0YXRlX2NwdWZyZXEuYyBpcyBhY3R1YWxseSBpbnRlbF9wc3RhdGUgY3B1ZnJlcSBkcml2 ZXIsIHJpZ2h0Pw0KPiA+PiBTbyBob3cgYWJvdXQgbW9kaWZ5IHRoaXMgZmlsZSBuYW1lIHRvIGlu dGVsX3BzdGF0ZV9jcHVmcmVxLmM/DQo+ID4gWWVzLCB3aWxsIGZpeCB0aGlzIGluIG5leHQgdmVy c2lvbi4NCj4gPj4+IGluZGV4IDIzNDMxMjE2MjEuLmMzMmIxYWRhYmMgMTAwNjQ0DQo+ID4+PiAt LS0gYS9saWIvcG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZyZXEuYw0KPiA+Pj4gKysrIGIvZHJpdmVy cy9wb3dlci9wc3RhdGUvcHN0YXRlX2NwdWZyZXEuYw0KPiA+Pj4gQEAgLTE1LDcgKzE1LDcgQEAN Cj4gPj4+ICAgICNpbmNsdWRlIDxydGVfc3RkYXRvbWljLmg+DQo+ID4+Pg0KPiA+Pj4gICAgI2lu Y2x1ZGUgInJ0ZV9wb3dlcl9wbWRfbWdtdC5oIg0KPiA+Pj4gLSNpbmNsdWRlICJwb3dlcl9wc3Rh dGVfY3B1ZnJlcS5oIg0KPiA+Pj4gKyNpbmNsdWRlICJwc3RhdGVfY3B1ZnJlcS5oIg0KPiA+Pj4g ICAgI2luY2x1ZGUgInBvd2VyX2NvbW1vbi5oIg0KPiA+Pj4NCj4gPj4+ICAgIC8qIG1hY3JvcyB1 c2VkIGZvciByb3VuZGluZyBmcmVxdWVuY3kgdG8gbmVhcmVzdCAxMDAwMDAgKi8gQEANCj4gPj4+ IC04ODgsMw0KPiA+Pj4gKzg4OCwyMyBAQCBpbnQgcG93ZXJfcHN0YXRlX2dldF9jYXBhYmlsaXRp ZXModW5zaWduZWQgaW50IGxjb3JlX2lkLA0KPiA+Pj4NCj4gPj4+ICAgICAgICByZXR1cm4gMDsN Cj4gPj4+ICAgIH0NCj4gPj4+ICsNCj4gPj4gPC4uLj4NCj4gPj4+IGRpZmYgLS1naXQgYS9saWIv cG93ZXIvcG93ZXJfY29tbW9uLmMgYi9saWIvcG93ZXIvcG93ZXJfY29tbW9uLmMNCj4gPj4+IGlu ZGV4IDU5MDk4NmQ1ZWYuLjZjMDY0MTFlOGIgMTAwNjQ0DQo+ID4+PiAtLS0gYS9saWIvcG93ZXIv cG93ZXJfY29tbW9uLmMNCj4gPj4+ICsrKyBiL2xpYi9wb3dlci9wb3dlcl9jb21tb24uYw0KPiA+ Pj4gQEAgLTEyLDcgKzEyLDcgQEANCj4gPj4+DQo+ID4+PiAgICAjaW5jbHVkZSAicG93ZXJfY29t bW9uLmgiDQo+ID4+Pg0KPiA+Pj4gLVJURV9MT0dfUkVHSVNURVJfREVGQVVMVChwb3dlcl9sb2d0 eXBlLCBJTkZPKTsNCj4gPj4+ICtSVEVfTE9HX1JFR0lTVEVSX0RFRkFVTFQocnRlX3Bvd2VyX2xv Z3R5cGUsIElORk8pOw0KPiA+Pj4NCj4gPj4+ICAgICNkZWZpbmUgUE9XRVJfU1lTRklMRV9TQ0FM SU5HX0RSSVZFUiAgIFwNCj4gPj4+ICAgICAgICAgICAgICAgICIvc3lzL2RldmljZXMvc3lzdGVt L2NwdS9jcHUldS9jcHVmcmVxL3NjYWxpbmdfZHJpdmVyIg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2xp Yi9wb3dlci9wb3dlcl9jb21tb24uaCBiL2xpYi9wb3dlci9wb3dlcl9jb21tb24uaA0KPiA+Pj4g aW5kZXgNCj4gPj4+IDgzZjc0MmY0MmEuLjc2NzY4NmVlMTIgMTAwNjQ0DQo+ID4+PiAtLS0gYS9s aWIvcG93ZXIvcG93ZXJfY29tbW9uLmgNCj4gPj4+ICsrKyBiL2xpYi9wb3dlci9wb3dlcl9jb21t b24uaA0KPiA+Pj4gQEAgLTYsMTIgKzYsMTMgQEANCj4gPj4+ICAgICNkZWZpbmUgX1BPV0VSX0NP TU1PTl9IXw0KPiA+Pj4NCj4gPj4+ICAgICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4+PiAr I2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4NCj4gPj4+ICAgICNpbmNsdWRlIDxydGVfbG9nLmg+DQo+ ID4+Pg0KPiA+Pj4gICAgI2RlZmluZSBSVEVfUE9XRVJfSU5WQUxJRF9GUkVRX0lOREVYICh+MCkN Cj4gPj4+DQo+ID4+PiAtZXh0ZXJuIGludCBwb3dlcl9sb2d0eXBlOw0KPiA+Pj4gLSNkZWZpbmUg UlRFX0xPR1RZUEVfUE9XRVIgcG93ZXJfbG9ndHlwZQ0KPiA+Pj4gK2V4dGVybiBpbnQgcnRlX3Bv d2VyX2xvZ3R5cGU7DQo+ID4+PiArI2RlZmluZSBSVEVfTE9HVFlQRV9QT1dFUiBydGVfcG93ZXJf bG9ndHlwZQ0KPiA+Pj4gICAgI2RlZmluZSBQT1dFUl9MT0cobGV2ZWwsIC4uLikgXA0KPiA+Pj4g ICAgICAgIFJURV9MT0dfTElORShsZXZlbCwgUE9XRVIsICIiIF9fVkFfQVJHU19fKQ0KPiA+Pj4N Cj4gPj4+IEBAIC0yMywxMyArMjQsMjQgQEAgZXh0ZXJuIGludCBwb3dlcl9sb2d0eXBlOw0KPiA+ Pj4gICAgI2VuZGlmDQo+ID4+Pg0KPiA+Pj4gICAgLyogY2hlY2sgaWYgc2NhbGluZyBkcml2ZXIg bWF0Y2hlcyBvbmUgd2Ugd2FudCAqLw0KPiA+Pj4gK19fcnRlX2ludGVybmFsDQo+ID4+PiAgICBp bnQgY3B1ZnJlcV9jaGVja19zY2FsaW5nX2RyaXZlcihjb25zdCBjaGFyICpkcml2ZXIpOw0KPiA+ Pj4gKw0KPiA+Pj4gK19fcnRlX2ludGVybmFsDQo+ID4+PiAgICBpbnQgcG93ZXJfc2V0X2dvdmVy bm9yKHVuc2lnbmVkIGludCBsY29yZV9pZCwgY29uc3QgY2hhciAqbmV3X2dvdmVybm9yLA0KPiA+ Pj4gICAgICAgICAgICAgICAgY2hhciAqb3JpZ19nb3Zlcm5vciwgc2l6ZV90IG9yaWdfZ292ZXJu b3JfbGVuKTsNCj4gPj4gc3VnZ2VzdCB0aGF0IG1vdmUgY3B1ZnJlcSBpbnRlcmZhY2VzIGxpa2Ug dGhpcyB0byB0aGUNCj4gPj4gcnRlX3Bvd2VyX2NwdWZyZXFfYXBpLiogSSBwcm9wb3NlZCBhYm92 ZS4NCj4gPiBUaGlzIGlzIGFuIGludGVybmFsIEFQSSBhbmQgaXNu4oCZdCBpbnRlbmRlZCBmb3Ig ZGlyZWN0IHVzZSBieSBhcHBsaWNhdGlvbnMuDQo+ID4gQnkgbW92aW5nIGl0IHRvIHJ0ZV9wb3dl cl8qLCB3ZSByaXNrIGV4cG9zaW5nIGl0IGluYWR2ZXJ0ZW50bHkuDQo+IHdlIGRvbid0IGV4cG9z ZSB0aGVzZSB0byBhcHBsaWNhdGlvbnMuIGFwcGxpY2F0aW9uIGRvIG5vdCBpbmNsdWRlIHRoaXMg aGVhZGVyIGZpbGUuDQo+IHBvd2VyX3NldF9nb3Zlcm5vcigpIGFuZCBjcHVmcmVxX2NoZWNrX3Nj YWxpbmdfZHJpdmVyKCkgaXMganVzdCB1c2VkIGJ5IGNwdWZyZXENCj4gZHJpdmVyLiBTbyB0aGV5 IGp1c3QgY2FuIGJlIHNlZW4gYnkgY3B1ZnJlcSBsaWIgb3IgbW9kdWxlLCByaWdodD8NCj4gQnV0 IGlmIHRoZXNlIGludGVyZmFjZSBhcmUgaW4gcG93ZXJfY29tbW9uLmgsIHBtZF9tZ210IGFuZCB1 bmNvcmUgZHJpdmVyIGFsc28NCj4gaW5jbHVkZSB0aGlzIGhlYWRlciBmaWxlIGFuZCBjYW4gc2Vl IHRoZW0uIFRoaXMgaXMgbm90IGdvb2QuDQo+IEFGQUlTLCB0aGUgcG93ZXJfY29tbW9uLmggc2hv dWxkIGp1c3QgY29udGFpbiB0aGUga2luZCBvZiBpbnRlcmZhY2VzIHRoYXQgYXJlIHVzZWQNCj4g YnkgYWxsIHBvd2VyIGxpYnMgb3Igc3ViLW1vZHVsZXMsIGxpa2UgY3B1ZnJlcSwgdW5jb3JlLCBw bWRfbWdtdCBhbmQgc28gb24uDQpPSy4sIFdpbGwgbW92ZSB0aGlzIGludGVybmFsIEFQSXMgZnJv bSBwb3dlcl9jb21tb24uaCB0byBhIHNlcGFyYXRlIGhlYWRlciBmaWxlLg0KPiA+DQo+ID4+IFRo ZSBpbnRlcmZhY2VzIGluIHBvd2VyX2NvbW0uKiBjYW4gYmUgdXNlZCBieSBhbGwgcG93ZXIgbW9k dWxlcywgbGlrZQ0KPiA+PiBjb3JlL3VuY29yZS9wbWQgbWdtdC4NCj4gPj4+ICsNCj4gPj4+ICtf X3J0ZV9pbnRlcm5hbA0KPiA+Pj4gICAgaW50IG9wZW5fY29yZV9zeXNmc19maWxlKEZJTEUgKipm LCBjb25zdCBjaGFyICptb2RlLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikNCj4gPj4+ICAgICAg ICAgICAgICAgIF9fcnRlX2Zvcm1hdF9wcmludGYoMywgNCk7DQo+ID4+PiArDQo+ID4+PiArX19y dGVfaW50ZXJuYWwNCj4gPj4+ICAgIGludCByZWFkX2NvcmVfc3lzZnNfdTMyKEZJTEUgKmYsIHVp bnQzMl90ICp2YWwpOw0KPiA+Pj4gKw0KPiA+Pj4gK19fcnRlX2ludGVybmFsDQo+ID4+PiAgICBp bnQgcmVhZF9jb3JlX3N5c2ZzX3MoRklMRSAqZiwgY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgbGVu KTsNCj4gPj4+ICsNCj4gPj4+ICtfX3J0ZV9pbnRlcm5hbA0KPiA+Pj4gICAgaW50IHdyaXRlX2Nv cmVfc3lzZnNfcyhGSUxFICpmLCBjb25zdCBjaGFyICpzdHIpOw0KPiA+Pj4NCj4gPj4+ICAgICNl bmRpZiAvKiBfUE9XRVJfQ09NTU9OX0hfICovDQo+ID4+PiBkaWZmIC0tZ2l0IGEvbGliL3Bvd2Vy L3J0ZV9wb3dlci5jIGIvbGliL3Bvd2VyL3J0ZV9wb3dlci5jDQo+ID4+IFRoZSBuYW1lIG9mIHRo ZSBydGVfcG93ZXIuYyBmaWxlIGlzIGltcHJvcHJpYXRlIG5vdy4gVGhlIGNvbnRleHQgaW4NCj4g Pj4gdGhpcyBmaWxlIGlzIGp1c3QgZm9yIGNwdWZyZXEsIHJpZ2h0Pw0KPiA+PiBTbyBJIHN1Z2dl c3QgdGhhdCB3ZSBuZWVkIHRvIHJlbmFtZSB0aGlzIGZpbGUgYXMgdGhlDQo+ID4+IHJ0ZV9wb3dl cl9jcHVmcmVxX2FwaS5jDQo+ID4gWWVzLCByZW5hbWluZyBydGVfcG93ZXIuYyB0byBydGVfcG93 ZXJfY3B1ZnJlcS5jIGlzIGRlZmluaXRlbHkgYQ0KPiA+IHBvc3NpYmxlIGluY3JlbWVudGFsIGNo YW5nZSBhbmQgd2lsbCBmaXggdGhpcyBhcyBhIHNlcGFyYXRlIHBhdGNoLg0KPiA+IC4NCj4gPg0K PiA+Pj4gaW5kZXggMzZjM2YzZGE5OC4uMmJmNmQ0MDUxNyAxMDA2NDQNCj4gPj4+IC0tLSBhL2xp Yi9wb3dlci9ydGVfcG93ZXIuYw0KPiA+Pj4gKysrIGIvbGliL3Bvd2VyL3J0ZV9wb3dlci5jDQo+ ID4+PiBAQCAtOCwxNTMgKzgsODYgQEANCj4gPj4+ICAgICNpbmNsdWRlIDxydGVfc3BpbmxvY2su aD4NCj4gPj4+DQo+ID4+PiAgICAjaW5jbHVkZSAicnRlX3Bvd2VyLmgiDQo+ID4+PiAtI2luY2x1 ZGUgInBvd2VyX2FjcGlfY3B1ZnJlcS5oIg0KPiA+Pj4gLSNpbmNsdWRlICJwb3dlcl9jcHBjX2Nw dWZyZXEuaCINCj4gPj4+ICAgICNpbmNsdWRlICJwb3dlcl9jb21tb24uaCINCj4gPj4+IC0jaW5j bHVkZSAicG93ZXJfa3ZtX3ZtLmgiDQo+ID4+PiAtI2luY2x1ZGUgInBvd2VyX3BzdGF0ZV9jcHVm cmVxLmgiDQo+ID4+PiAtI2luY2x1ZGUgInBvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcS5oIg0KPiA+ Pj4NCj4gPj4+IC1lbnVtIHBvd2VyX21hbmFnZW1lbnRfZW52IGdsb2JhbF9kZWZhdWx0X2VudiA9 IFBNX0VOVl9OT1RfU0VUOw0KPiA+Pj4gK3N0YXRpYyBlbnVtIHBvd2VyX21hbmFnZW1lbnRfZW52 IGdsb2JhbF9kZWZhdWx0X2VudiA9DQo+ID4+IFBNX0VOVl9OT1RfU0VUOw0KPiA+Pj4gK3N0YXRp YyBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpnbG9iYWxfcG93ZXJfY29yZV9vcHM7DQo+ID4+ Pg0KPiA+Pj4gICAgc3RhdGljIHJ0ZV9zcGlubG9ja190IGdsb2JhbF9lbnZfY2ZnX2xvY2sgPQ0K PiA+Pj4gUlRFX1NQSU5MT0NLX0lOSVRJQUxJWkVSOw0KPiA+Pj4gK3N0YXRpYyBSVEVfVEFJTFFf SEVBRCgsIHJ0ZV9wb3dlcl9jb3JlX29wcykgY29yZV9vcHNfbGlzdCA9DQo+ID4+PiArICAgICAg ICAgICAgICAgICAgICAgVEFJTFFfSEVBRF9JTklUSUFMSVpFUihjb3JlX29wc19saXN0KTsNCj4g Pj4+DQo+ID4+PiAtLyogZnVuY3Rpb24gcG9pbnRlcnMgKi8NCj4gPj4+IC1ydGVfcG93ZXJfZnJl cXNfdCBydGVfcG93ZXJfZnJlcXMgID0gTlVMTDsgLXJ0ZV9wb3dlcl9nZXRfZnJlcV90DQo+ID4+ PiBydGVfcG93ZXJfZ2V0X2ZyZXEgPSBOVUxMOyAtcnRlX3Bvd2VyX3NldF9mcmVxX3QgcnRlX3Bv d2VyX3NldF9mcmVxDQo+ID4+PiA9IE5VTEw7IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVf cG93ZXJfZnJlcV91cCA9IE5VTEw7DQo+ID4+PiAtcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3QgcnRl X3Bvd2VyX2ZyZXFfZG93biA9IE5VTEw7DQo+ID4+PiAtcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3Qg cnRlX3Bvd2VyX2ZyZXFfbWF4ID0gTlVMTDsNCj4gPj4+IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2Vf dCBydGVfcG93ZXJfZnJlcV9taW4gPSBOVUxMOw0KPiA+Pj4gLXJ0ZV9wb3dlcl9mcmVxX2NoYW5n ZV90IHJ0ZV9wb3dlcl90dXJib19zdGF0dXM7DQo+ID4+PiAtcnRlX3Bvd2VyX2ZyZXFfY2hhbmdl X3QgcnRlX3Bvd2VyX2ZyZXFfZW5hYmxlX3R1cmJvOw0KPiA+Pj4gLXJ0ZV9wb3dlcl9mcmVxX2No YW5nZV90IHJ0ZV9wb3dlcl9mcmVxX2Rpc2FibGVfdHVyYm87DQo+ID4+PiAtcnRlX3Bvd2VyX2dl dF9jYXBhYmlsaXRpZXNfdCBydGVfcG93ZXJfZ2V0X2NhcGFiaWxpdGllczsNCj4gPj4+IC0NCj4g Pj4+IC1zdGF0aWMgdm9pZA0KPiA+Pj4gLXJlc2V0X3Bvd2VyX2Z1bmN0aW9uX3B0cnModm9pZCkN Cj4gPj4+ICsNCj4gPj4+ICtjb25zdCBjaGFyICpwb3dlcl9lbnZfc3RyW10gPSB7DQo+ID4+PiAr ICAgICAibm90IHNldCIsDQo+ID4+PiArICAgICAiYWNwaSIsDQo+ID4+PiArICAgICAia3ZtLXZt IiwNCj4gPj4+ICsgICAgICJwc3RhdGUiLA0KPiA+Pj4gKyAgICAgImNwcGMiLA0KPiA+Pj4gKyAg ICAgImFtZC1wc3RhdGUiDQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ICsvKiByZWdpc3RlciB0 aGUgb3BzIHN0cnVjdCBpbiBydGVfcG93ZXJfY29yZV9vcHMsIHJldHVybiAwIG9uDQo+ID4+PiAr c3VjY2Vzcy4gKi8gaW50IHJ0ZV9wb3dlcl9yZWdpc3Rlcl9vcHMoc3RydWN0IHJ0ZV9wb3dlcl9j b3JlX29wcw0KPiA+Pj4gKypkcml2ZXJfb3BzKQ0KPiA+Pj4gICAgew0KPiA+Pj4gLSAgICAgcnRl X3Bvd2VyX2ZyZXFzICA9IE5VTEw7DQo+ID4+PiAtICAgICBydGVfcG93ZXJfZ2V0X2ZyZXEgPSBO VUxMOw0KPiA+Pj4gLSAgICAgcnRlX3Bvd2VyX3NldF9mcmVxID0gTlVMTDsNCj4gPj4+IC0gICAg IHJ0ZV9wb3dlcl9mcmVxX3VwID0gTlVMTDsNCj4gPj4+IC0gICAgIHJ0ZV9wb3dlcl9mcmVxX2Rv d24gPSBOVUxMOw0KPiA+Pj4gLSAgICAgcnRlX3Bvd2VyX2ZyZXFfbWF4ID0gTlVMTDsNCj4gPj4+ IC0gICAgIHJ0ZV9wb3dlcl9mcmVxX21pbiA9IE5VTEw7DQo+ID4+PiAtICAgICBydGVfcG93ZXJf dHVyYm9fc3RhdHVzID0gTlVMTDsNCj4gPj4+IC0gICAgIHJ0ZV9wb3dlcl9mcmVxX2VuYWJsZV90 dXJibyA9IE5VTEw7DQo+ID4+PiAtICAgICBydGVfcG93ZXJfZnJlcV9kaXNhYmxlX3R1cmJvID0g TlVMTDsNCj4gPj4+IC0gICAgIHJ0ZV9wb3dlcl9nZXRfY2FwYWJpbGl0aWVzID0gTlVMTDsNCj4g Pj4+ICsgICAgIGlmICghZHJpdmVyX29wcy0+aW5pdCB8fCAhZHJpdmVyX29wcy0+ZXhpdCB8fA0K PiA+Pj4gKyAgICAgICAgICAgICAhZHJpdmVyX29wcy0+Y2hlY2tfZW52X3N1cHBvcnQgfHwgIWRy aXZlcl9vcHMtPmdldF9hdmFpbF9mcmVxcyB8fA0KPiA+Pj4gKyAgICAgICAgICAgICAhZHJpdmVy X29wcy0+Z2V0X2ZyZXEgfHwgIWRyaXZlcl9vcHMtPnNldF9mcmVxIHx8DQo+ID4+PiArICAgICAg ICAgICAgICFkcml2ZXJfb3BzLT5mcmVxX3VwIHx8ICFkcml2ZXJfb3BzLT5mcmVxX2Rvd24gfHwN Cj4gPj4+ICsgICAgICAgICAgICAgIWRyaXZlcl9vcHMtPmZyZXFfbWF4IHx8ICFkcml2ZXJfb3Bz LT5mcmVxX21pbiB8fA0KPiA+Pj4gKyAgICAgICAgICAgICAhZHJpdmVyX29wcy0+dHVyYm9fc3Rh dHVzIHx8ICFkcml2ZXJfb3BzLT5lbmFibGVfdHVyYm8gfHwNCj4gPj4+ICsgICAgICAgICAgICAg IWRyaXZlcl9vcHMtPmRpc2FibGVfdHVyYm8gfHwgIWRyaXZlcl9vcHMtPmdldF9jYXBzKSB7DQo+ ID4+PiArICAgICAgICAgICAgIFBPV0VSX0xPRyhFUlIsICJNaXNzaW5nIGNhbGxiYWNrcyB3aGls ZSByZWdpc3RlcmluZw0KPiA+Pj4gKyBwb3dlciBvcHMiKTsNCj4gPj4gdHVyYm9fc3RhdHVzKCks IGVuYWJsZV90dXJibygpIGFuZCBkaXNhYmxlIHR1cmJvKCkgYXJlIG5vdCBuZWNlc3NhcnksIHJp Z2h0Pw0KPiA+IE5vcGUsIHRoaXMgaXMgcmVxdWlyZWQgdG8gZ2V0IHRoZSBjdXJyZW50IHN0YXR1 cyB1bmxpa2UgdGhlIGNhcGFiaWxpdHkgQVBJDQo+IChnZXRfY2FwcygpKS4NCj4gb2sNCj4gPj4g VGhlc2UgZGVwYW5kIG9uIHRoZSBjYXBhYmlsaXRpZXMgZnJvbSBnZXRfY2FwcygpLg0KPiA+Pj4g KyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPj4+ICsgICAgIH0NCj4gPj4+ICsNCj4g Pj4+ICsgICAgIFRBSUxRX0lOU0VSVF9UQUlMKCZjb3JlX29wc19saXN0LCBkcml2ZXJfb3BzLCBu ZXh0KTsNCj4gPj4+ICsNCj4gPj4+ICsgICAgIHJldHVybiAwOw0KPiA+Pj4gICAgfQ0KPiA+Pj4N Cj4gPj4+ICAgIGludA0KPiA+Pj4gICAgcnRlX3Bvd2VyX2NoZWNrX2Vudl9zdXBwb3J0ZWQoZW51 bSBwb3dlcl9tYW5hZ2VtZW50X2VudiBlbnYpDQo+ID4+PiAgICB7DQo+ID4+PiAtICAgICBzd2l0 Y2ggKGVudikgew0KPiA+Pj4gLSAgICAgY2FzZSBQTV9FTlZfQUNQSV9DUFVGUkVROg0KPiA+Pj4g LSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfYWNwaV9jcHVmcmVxX2NoZWNrX3N1cHBvcnRlZCgp Ow0KPiA+Pj4gLSAgICAgY2FzZSBQTV9FTlZfUFNUQVRFX0NQVUZSRVE6DQo+ID4+PiAtICAgICAg ICAgICAgIHJldHVybiBwb3dlcl9wc3RhdGVfY3B1ZnJlcV9jaGVja19zdXBwb3J0ZWQoKTsNCj4g Pj4+IC0gICAgIGNhc2UgUE1fRU5WX0tWTV9WTToNCj4gPj4+IC0gICAgICAgICAgICAgcmV0dXJu IHBvd2VyX2t2bV92bV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPj4+IC0gICAgIGNhc2UgUE1fRU5W X0NQUENfQ1BVRlJFUToNCj4gPj4+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2NwcGNfY3B1 ZnJlcV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPj4+IC0gICAgIGNhc2UgUE1fRU5WX0FNRF9QU1RB VEVfQ1BVRlJFUToNCj4gPj4+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2FtZF9wc3RhdGVf Y3B1ZnJlcV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPj4+IC0gICAgIGRlZmF1bHQ6DQo+ID4+PiAt ICAgICAgICAgICAgIHJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gPj4+IC0gICAgICAgICAgICAgcmV0 dXJuIC0xOw0KPiA+Pj4gLSAgICAgfQ0KPiA+Pj4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3Jl X29wcyAqb3BzOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAgaWYgKGVudiA+PSBSVEVfRElNKHBvd2Vy X2Vudl9zdHIpKQ0KPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPj4+ICsNCj4gPj4+ ICsgICAgIFJURV9UQUlMUV9GT1JFQUNIKG9wcywgJmNvcmVfb3BzX2xpc3QsIG5leHQpDQo+ID4+ PiArICAgICAgICAgICAgIGlmIChzdHJuY21wKG9wcy0+bmFtZSwgcG93ZXJfZW52X3N0cltlbnZd LA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX1BPV0VSX0RSSVZFUl9O QU1FU1opID09IDApDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wcy0+Y2hl Y2tfZW52X3N1cHBvcnQoKTsNCj4gPj4+ICsNCj4gPj4+ICsgICAgIHJldHVybiAwOw0KPiA+Pj4g ICAgfQ0KPiA+Pj4NCj4gPj4+ICAgIGludA0KPiA+Pj4gICAgcnRlX3Bvd2VyX3NldF9lbnYoZW51 bSBwb3dlcl9tYW5hZ2VtZW50X2VudiBlbnYpDQo+ID4+PiAgICB7DQo+ID4+PiArICAgICBzdHJ1 Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpvcHM7DQo+ID4+PiArICAgICBpbnQgcmV0ID0gLTE7DQo+ ID4+PiArDQo+ID4+PiAgICAgICAgcnRlX3NwaW5sb2NrX2xvY2soJmdsb2JhbF9lbnZfY2ZnX2xv Y2spOw0KPiA+Pj4NCj4gPj4+ICAgICAgICBpZiAoZ2xvYmFsX2RlZmF1bHRfZW52ICE9IFBNX0VO Vl9OT1RfU0VUKSB7DQo+ID4+PiAgICAgICAgICAgICAgICBQT1dFUl9MT0coRVJSLCAiUG93ZXIg TWFuYWdlbWVudCBFbnZpcm9ubWVudCBhbHJlYWR5DQo+IHNldC4iKTsNCj4gPj4+IC0gICAgICAg ICAgICAgcnRlX3NwaW5sb2NrX3VubG9jaygmZ2xvYmFsX2Vudl9jZmdfbG9jayk7DQo+ID4+PiAt ICAgICAgICAgICAgIHJldHVybiAtMTsNCj4gPj4+IC0gICAgIH0NCj4gPj4+IC0NCj4gPj4gPC4u Lj4NCj4gPj4+IC0gICAgIGlmIChyZXQgPT0gMCkNCj4gPj4+IC0gICAgICAgICAgICAgZ2xvYmFs X2RlZmF1bHRfZW52ID0gZW52Ow0KPiA+Pj4gLSAgICAgZWxzZSB7DQo+ID4+PiAtICAgICAgICAg ICAgIGdsb2JhbF9kZWZhdWx0X2VudiA9IFBNX0VOVl9OT1RfU0VUOw0KPiA+Pj4gLSAgICAgICAg ICAgICByZXNldF9wb3dlcl9mdW5jdGlvbl9wdHJzKCk7DQo+ID4+PiAtICAgICB9DQo+ID4+PiAr ICAgICBSVEVfVEFJTFFfRk9SRUFDSChvcHMsICZjb3JlX29wc19saXN0LCBuZXh0KQ0KPiA+Pj4g KyAgICAgICAgICAgICBpZiAoc3RybmNtcChvcHMtPm5hbWUsIHBvd2VyX2Vudl9zdHJbZW52XSwN Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJURV9QT1dFUl9EUklWRVJfTkFN RVNaKSA9PSAwKSB7DQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsX3Bvd2VyX2Nv cmVfb3BzID0gb3BzOw0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF9kZWZhdWx0 X2VudiA9IGVudjsNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXQgPSAwOw0KPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+Pj4gKyAgICAgICAgICAgICB9DQo+ ID4+PiArICAgICBQT1dFUl9MT0coRVJSLCAiSW52YWxpZCBQb3dlciBNYW5hZ2VtZW50IEVudmly b25tZW50KCVkKSBzZXQiLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGVudik7DQo+ID4+ Pg0KPiA+Pj4gK291dDoNCj4gPj4+ICAgICAgICBydGVfc3BpbmxvY2tfdW5sb2NrKCZnbG9iYWxf ZW52X2NmZ19sb2NrKTsNCj4gPj4+ICAgICAgICByZXR1cm4gcmV0Ow0KPiA+Pj4gICAgfQ0KPiA+ Pj4gQEAgLTE2NCw5NCArOTcsNjYgQEAgcnRlX3Bvd2VyX3Vuc2V0X2Vudih2b2lkKQ0KPiA+Pj4g ICAgew0KPiA+Pj4gICAgICAgIHJ0ZV9zcGlubG9ja19sb2NrKCZnbG9iYWxfZW52X2NmZ19sb2Nr KTsNCj4gPj4+ICAgICAgICBnbG9iYWxfZGVmYXVsdF9lbnYgPSBQTV9FTlZfTk9UX1NFVDsNCj4g Pj4+IC0gICAgIHJlc2V0X3Bvd2VyX2Z1bmN0aW9uX3B0cnMoKTsNCj4gPj4+ICsgICAgIGdsb2Jh bF9wb3dlcl9jb3JlX29wcyA9IE5VTEw7DQo+ID4+PiAgICAgICAgcnRlX3NwaW5sb2NrX3VubG9j aygmZ2xvYmFsX2Vudl9jZmdfbG9jayk7DQo+ID4+PiAgICB9DQo+ID4+Pg0KPiA+Pj4gICAgZW51 bSBwb3dlcl9tYW5hZ2VtZW50X2Vudg0KPiA+Pj4gLXJ0ZV9wb3dlcl9nZXRfZW52KHZvaWQpIHsN Cj4gPj4+ICtydGVfcG93ZXJfZ2V0X2Vudih2b2lkKQ0KPiA+Pj4gK3sNCj4gPj4+ICAgICAgICBy ZXR1cm4gZ2xvYmFsX2RlZmF1bHRfZW52Ow0KPiA+Pj4gICAgfQ0KPiA+Pj4NCj4gPj4+IC1pbnQN Cj4gPj4+IC1ydGVfcG93ZXJfaW5pdCh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpDQo+ID4+PiArc3Ry dWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqDQo+ID4+PiArcnRlX3Bvd2VyX2dldF9jb3JlX29wcyh2 b2lkKQ0KPiA+Pj4gICAgew0KPiA+Pj4gLSAgICAgaW50IHJldCA9IC0xOw0KPiA+Pj4gKyAgICAg UlRFX0FTU0VSVChnbG9iYWxfcG93ZXJfY29yZV9vcHMgIT0gTlVMTCk7DQo+ID4+Pg0KPiA+Pj4g LSAgICAgc3dpdGNoIChnbG9iYWxfZGVmYXVsdF9lbnYpIHsNCj4gPj4+IC0gICAgIGNhc2UgUE1f RU5WX0FDUElfQ1BVRlJFUToNCj4gPj4+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2FjcGlf Y3B1ZnJlcV9pbml0KGxjb3JlX2lkKTsNCj4gPj4+IC0gICAgIGNhc2UgUE1fRU5WX0tWTV9WTToN Cj4gPj4+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2t2bV92bV9pbml0KGxjb3JlX2lkKTsN Cj4gPj4+IC0gICAgIGNhc2UgUE1fRU5WX1BTVEFURV9DUFVGUkVROg0KPiA+Pj4gLSAgICAgICAg ICAgICByZXR1cm4gcG93ZXJfcHN0YXRlX2NwdWZyZXFfaW5pdChsY29yZV9pZCk7DQo+ID4+PiAt ICAgICBjYXNlIFBNX0VOVl9DUFBDX0NQVUZSRVE6DQo+ID4+PiAtICAgICAgICAgICAgIHJldHVy biBwb3dlcl9jcHBjX2NwdWZyZXFfaW5pdChsY29yZV9pZCk7DQo+ID4+PiAtICAgICBjYXNlIFBN X0VOVl9BTURfUFNUQVRFX0NQVUZSRVE6DQo+ID4+PiAtICAgICAgICAgICAgIHJldHVybiBwb3dl cl9hbWRfcHN0YXRlX2NwdWZyZXFfaW5pdChsY29yZV9pZCk7DQo+ID4+PiAtICAgICBkZWZhdWx0 Og0KPiA+Pj4gLSAgICAgICAgICAgICBQT1dFUl9MT0coSU5GTywgIkVudiBpc24ndCBzZXQgeWV0 ISIpOw0KPiA+Pj4gLSAgICAgfQ0KPiA+Pj4gKyAgICAgcmV0dXJuIGdsb2JhbF9wb3dlcl9jb3Jl X29wczsNCj4gPj4+ICt9DQo+ID4+Pg0KPiA+Pj4gLSAgICAgLyogQXV0byBkZXRlY3QgRW52aXJv bm1lbnQgKi8NCj4gPj4+IC0gICAgIFBPV0VSX0xPRyhJTkZPLCAiQXR0ZW1wdGluZyB0byBpbml0 aWFsaXNlIEFDUEkgY3B1ZnJlcSBwb3dlcg0KPiA+PiBtYW5hZ2VtZW50Li4uIik7DQo+ID4+PiAt ICAgICByZXQgPSBwb3dlcl9hY3BpX2NwdWZyZXFfaW5pdChsY29yZV9pZCk7DQo+ID4+PiAtICAg ICBpZiAocmV0ID09IDApIHsNCj4gPj4+IC0gICAgICAgICAgICAgcnRlX3Bvd2VyX3NldF9lbnYo UE1fRU5WX0FDUElfQ1BVRlJFUSk7DQo+ID4+PiAtICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ Pj4gLSAgICAgfQ0KPiA+Pj4gK2ludA0KPiA+Pj4gK3J0ZV9wb3dlcl9pbml0KHVuc2lnbmVkIGlu dCBsY29yZV9pZCkgew0KPiA+Pj4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3Bz Ow0KPiA+Pj4gKyAgICAgdWludDhfdCBlbnY7DQo+ID4+Pg0KPiA+Pj4gLSAgICAgUE9XRVJfTE9H KElORk8sICJBdHRlbXB0aW5nIHRvIGluaXRpYWxpc2UgUFNUQVQgcG93ZXINCj4gbWFuYWdlbWVu dC4uLiIpOw0KPiA+Pj4gLSAgICAgcmV0ID0gcG93ZXJfcHN0YXRlX2NwdWZyZXFfaW5pdChsY29y ZV9pZCk7DQo+ID4+PiAtICAgICBpZiAocmV0ID09IDApIHsNCj4gPj4+IC0gICAgICAgICAgICAg cnRlX3Bvd2VyX3NldF9lbnYoUE1fRU5WX1BTVEFURV9DUFVGUkVRKTsNCj4gPj4+IC0gICAgICAg ICAgICAgZ290byBvdXQ7DQo+ID4+PiAtICAgICB9DQo+ID4+PiArICAgICBpZiAoZ2xvYmFsX2Rl ZmF1bHRfZW52ICE9IFBNX0VOVl9OT1RfU0VUKQ0KPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4g Z2xvYmFsX3Bvd2VyX2NvcmVfb3BzLT5pbml0KGxjb3JlX2lkKTsNCj4gPj4+DQo+ID4+PiAtICAg ICBQT1dFUl9MT0coSU5GTywgIkF0dGVtcHRpbmcgdG8gaW5pdGlhbGlzZSBBTUQgUFNUQVRFIHBv d2VyDQo+ID4+IG1hbmFnZW1lbnQuLi4iKTsNCj4gPj4+IC0gICAgIHJldCA9IHBvd2VyX2FtZF9w c3RhdGVfY3B1ZnJlcV9pbml0KGxjb3JlX2lkKTsNCj4gPj4+IC0gICAgIGlmIChyZXQgPT0gMCkg ew0KPiA+Pj4gLSAgICAgICAgICAgICBydGVfcG93ZXJfc2V0X2VudihQTV9FTlZfQU1EX1BTVEFU RV9DUFVGUkVRKTsNCj4gPj4+IC0gICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4+PiAtICAgICB9 DQo+ID4+PiArICAgICBQT1dFUl9MT0coSU5GTywgIkVudiBpc24ndCBzZXQgeWV0ISIpOw0KPiA+ PiByZW1vdmUgdGhpcyBsb2c/DQo+ID4+PiAtICAgICBQT1dFUl9MT0coSU5GTywgIkF0dGVtcHRp bmcgdG8gaW5pdGlhbGlzZSBDUFBDIHBvd2VyDQo+IG1hbmFnZW1lbnQuLi4iKTsNCj4gPj4+IC0g ICAgIHJldCA9IHBvd2VyX2NwcGNfY3B1ZnJlcV9pbml0KGxjb3JlX2lkKTsNCj4gPj4+IC0gICAg IGlmIChyZXQgPT0gMCkgew0KPiA+Pj4gLSAgICAgICAgICAgICBydGVfcG93ZXJfc2V0X2VudihQ TV9FTlZfQ1BQQ19DUFVGUkVRKTsNCj4gPj4+IC0gICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4+ PiAtICAgICB9DQo+ID4+PiArICAgICAvKiBBdXRvIGRldGVjdCBFbnZpcm9ubWVudCAqLw0KPiA+ Pj4gKyAgICAgUlRFX1RBSUxRX0ZPUkVBQ0gob3BzLCAmY29yZV9vcHNfbGlzdCwgbmV4dCkNCj4g Pj4+ICsgICAgICAgICAgICAgaWYgKG9wcykgew0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAg IFBPV0VSX0xPRyhJTkZPLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0 dGVtcHRpbmcgdG8gaW5pdGlhbGlzZSAlcyBjcHVmcmVxIHBvd2VyIG1hbmFnZW1lbnQuLi4iLA0K PiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BzLT5uYW1lKTsNCj4gPj4+ICsg ICAgICAgICAgICAgICAgICAgICBpZiAob3BzLT5pbml0KGxjb3JlX2lkKSA9PSAwKSB7DQo+ID4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGVudiA9IDA7IGVudiA8IFJURV9E SU0ocG93ZXJfZW52X3N0cik7IGVudisrKQ0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoc3RybmNtcChvcHMtPm5hbWUsIHBvd2VyX2Vudl9zdHJbZW52XSwN Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJURV9QT1dFUl9EUklWRVJfTkFNRVNaKSA9PSAwKSB7DQo+ID4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRlX3Bvd2VyX3NldF9lbnYoZW52KTsN Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gMDsNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4gPj4+ICsgICAgICAgICAgICAgfQ0KPiA+PiBD YW4gd2UgY2hhbmdlIHRoZSBsb2dpYyBvZiBydGVfcG93ZXJfc2V0X2VudigpPyBsaWtlOg0KPiA+ PiAgICAgICBSVEVfVEFJTFFfRk9SRUFDSChvcHMsICZjb3JlX29wc19saXN0LCBuZXh0KSB7DQo+ ID4+ICAgICAgICAgICBmb3IgKGVudiA9IDA7IGVudiA8IFJURV9ESU0ocG93ZXJfZW52X3N0cik7 IGVudisrKSB7DQo+ID4+ICAgICAgICAgICAgICAgICAgIGlmIChzdHJuY21wKG9wcy0+bmFtZSwg cG93ZXJfZW52X3N0cltlbnZdLA0KPiA+PiBSVEVfUE9XRVJfRFJJVkVSX05BTUVTWikgPT0gMCAm Jg0KPiA+PiAgICAgICAgICAgICAgICAgICAgICAgb3BzLT5pbml0KGxjb3JlX2lkKSA9PSAwKSB7 DQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxfcG93ZXJfY29yZV9vcHMgPSBvcHM7 DQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxfZGVmYXVsdF9lbnYgPSBlbnY7DQo+ ID4+ICAgICAgICAgICAgICAgICAgIH0NCj4gPj4gICAgICAgICAgIH0NCj4gPj4gICAgICAgfQ0K PiA+PiBUaGF0IGlzIGVhc2llciB0byBmb2xsb3cgY29kZS4NCj4gPiBZZXMsIHdpbGwgZml4IGlu IG5leHQgdmVyc2lvbi4NCj4gPg0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAgUE9XRVJfTE9HKEVSUiwN Cj4gPj4+ICsgICAgICAgICAgICAgIlVuYWJsZSB0byBzZXQgUG93ZXIgTWFuYWdlbWVudCBFbnZp cm9ubWVudCBmb3IgbGNvcmUgJXUiLA0KPiA+Pj4gKyAgICAgICAgICAgICBsY29yZV9pZCk7DQo+ ID4+Pg0KPiA+Pj4gLSAgICAgUE9XRVJfTE9HKElORk8sICJBdHRlbXB0aW5nIHRvIGluaXRpYWxp c2UgVk0gcG93ZXIgbWFuYWdlbWVudC4uLiIpOw0KPiA+Pj4gLSAgICAgcmV0ID0gcG93ZXJfa3Zt X3ZtX2luaXQobGNvcmVfaWQpOw0KPiA+Pj4gLSAgICAgaWYgKHJldCA9PSAwKSB7DQo+ID4+PiAt ICAgICAgICAgICAgIHJ0ZV9wb3dlcl9zZXRfZW52KFBNX0VOVl9LVk1fVk0pOw0KPiA+Pj4gLSAg ICAgICAgICAgICBnb3RvIG91dDsNCj4gPj4+IC0gICAgIH0NCj4gPj4+IC0gICAgIFBPV0VSX0xP RyhFUlIsICJVbmFibGUgdG8gc2V0IFBvd2VyIE1hbmFnZW1lbnQgRW52aXJvbm1lbnQgZm9yDQo+ IGxjb3JlDQo+ID4+ICINCj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAiJXUiLCBsY29yZV9p ZCk7DQo+ID4+PiAtb3V0Og0KPiA+Pj4gLSAgICAgcmV0dXJuIHJldDsNCj4gPj4+ICsgICAgIHJl dHVybiAtMTsNCj4gPj4+ICAgIH0NCj4gPj4+DQo+ID4+PiAgICBpbnQNCj4gPj4+ICAgIHJ0ZV9w b3dlcl9leGl0KHVuc2lnbmVkIGludCBsY29yZV9pZCkNCj4gPj4+ICAgIHsNCj4gPj4+IC0gICAg IHN3aXRjaCAoZ2xvYmFsX2RlZmF1bHRfZW52KSB7DQo+ID4+PiAtICAgICBjYXNlIFBNX0VOVl9B Q1BJX0NQVUZSRVE6DQo+ID4+PiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9hY3BpX2NwdWZy ZXFfZXhpdChsY29yZV9pZCk7DQo+ID4+PiAtICAgICBjYXNlIFBNX0VOVl9LVk1fVk06DQo+ID4+ PiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9rdm1fdm1fZXhpdChsY29yZV9pZCk7DQo+ID4+ PiAtICAgICBjYXNlIFBNX0VOVl9QU1RBVEVfQ1BVRlJFUToNCj4gPj4+IC0gICAgICAgICAgICAg cmV0dXJuIHBvd2VyX3BzdGF0ZV9jcHVmcmVxX2V4aXQobGNvcmVfaWQpOw0KPiA+Pj4gLSAgICAg Y2FzZSBQTV9FTlZfQ1BQQ19DUFVGUkVROg0KPiA+Pj4gLSAgICAgICAgICAgICByZXR1cm4gcG93 ZXJfY3BwY19jcHVmcmVxX2V4aXQobGNvcmVfaWQpOw0KPiA+Pj4gLSAgICAgY2FzZSBQTV9FTlZf QU1EX1BTVEFURV9DUFVGUkVROg0KPiA+Pj4gLSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfYW1k X3BzdGF0ZV9jcHVmcmVxX2V4aXQobGNvcmVfaWQpOw0KPiA+Pj4gLSAgICAgZGVmYXVsdDoNCj4g Pj4+IC0gICAgICAgICAgICAgUE9XRVJfTE9HKEVSUiwgIkVudmlyb25tZW50IGhhcyBub3QgYmVl biBzZXQsIHVuYWJsZSB0byBleGl0DQo+ID4+IGdyYWNlZnVsbHkiKTsNCj4gPj4+ICsgICAgIGlm IChnbG9iYWxfZGVmYXVsdF9lbnYgIT0gUE1fRU5WX05PVF9TRVQpDQo+ID4+PiArICAgICAgICAg ICAgIHJldHVybiBnbG9iYWxfcG93ZXJfY29yZV9vcHMtPmV4aXQobGNvcmVfaWQpOw0KPiA+Pj4N Cj4gPj4+IC0gICAgIH0NCj4gPj4+IC0gICAgIHJldHVybiAtMTsNCj4gPj4+ICsgICAgIFBPV0VS X0xPRyhFUlIsDQo+ID4+PiArICAgICAgICAgICAgICJFbnZpcm9ubWVudCBoYXMgbm90IGJlZW4g c2V0LCB1bmFibGUgdG8gZXhpdA0KPiA+Pj4gKyBncmFjZWZ1bGx5Iik7DQo+ID4+Pg0KPiA+Pj4g KyAgICAgcmV0dXJuIC0xOw0KPiA+Pj4gICAgfQ0KPiA+Pj4gZGlmZiAtLWdpdCBhL2xpYi9wb3dl ci9ydGVfcG93ZXIuaCBiL2xpYi9wb3dlci9ydGVfcG93ZXIuaCBpbmRleA0KPiA+Pj4gNGZhNGFm ZTM5OS4uNWU0YWFjZjA4YiAxMDA2NDQNCj4gPj4+IC0tLSBhL2xpYi9wb3dlci9ydGVfcG93ZXIu aA0KPiA+Pj4gKysrIGIvbGliL3Bvd2VyL3J0ZV9wb3dlci5oDQo+ID4+PiBAQCAtMSw1ICsxLDYg QEANCj4gPj4+ICAgIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4g Pj4+ICAgICAqIENvcHlyaWdodChjKSAyMDEwLTIwMTQgSW50ZWwgQ29ycG9yYXRpb24NCj4gPj4+ ICsgKiBDb3B5cmlnaHQoYykgMjAyNCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuDQo+ID4+ PiAgICAgKi8NCj4gPj4+DQo+ID4+PiAgICAjaWZuZGVmIF9SVEVfUE9XRVJfSA0KPiA+Pj4gQEAg LTE0LDE0ICsxNSwyMSBAQA0KPiA+Pj4gICAgI2luY2x1ZGUgPHJ0ZV9sb2cuaD4NCj4gPj4+ICAg ICNpbmNsdWRlIDxydGVfcG93ZXJfZ3Vlc3RfY2hhbm5lbC5oPg0KPiA+Pj4NCj4gPj4+ICsjaW5j bHVkZSAicnRlX3Bvd2VyX2NvcmVfb3BzLmgiDQo+ID4+PiArDQo+ID4+PiAgICAjaWZkZWYgX19j cGx1c3BsdXMNCj4gPj4+ICAgIGV4dGVybiAiQyIgew0KPiA+Pj4gICAgI2VuZGlmDQo+ID4+Pg0K PiA+Pj4gICAgLyogUG93ZXIgTWFuYWdlbWVudCBFbnZpcm9ubWVudCBTdGF0ZSAqLyAtZW51bQ0K PiA+Pj4gcG93ZXJfbWFuYWdlbWVudF9lbnYge1BNX0VOVl9OT1RfU0VULCBQTV9FTlZfQUNQSV9D UFVGUkVRLA0KPiBQTV9FTlZfS1ZNX1ZNLA0KPiA+Pj4gLSAgICAgICAgICAgICBQTV9FTlZfUFNU QVRFX0NQVUZSRVEsIFBNX0VOVl9DUFBDX0NQVUZSRVEsDQo+ID4+PiAtICAgICAgICAgICAgIFBN X0VOVl9BTURfUFNUQVRFX0NQVUZSRVF9Ow0KPiA+Pj4gK2VudW0gcG93ZXJfbWFuYWdlbWVudF9l bnYgew0KPiA+Pj4gKyAgICAgUE1fRU5WX05PVF9TRVQgPSAwLA0KPiA+Pj4gKyAgICAgUE1fRU5W X0FDUElfQ1BVRlJFUSwNCj4gPj4+ICsgICAgIFBNX0VOVl9LVk1fVk0sDQo+ID4+PiArICAgICBQ TV9FTlZfUFNUQVRFX0NQVUZSRVEsDQo+ID4+PiArICAgICBQTV9FTlZfQ1BQQ19DUFVGUkVRLA0K PiA+Pj4gKyAgICAgUE1fRU5WX0FNRF9QU1RBVEVfQ1BVRlJFUQ0KPiA+Pj4gK307DQo+ID4+Pg0K PiA+Pj4gICAgLyoqDQo+ID4+PiAgICAgKiBDaGVjayBpZiBhIHNwZWNpZmljIHBvd2VyIG1hbmFn ZW1lbnQgZW52aXJvbm1lbnQgdHlwZSBpcw0KPiA+Pj4gc3VwcG9ydGVkIG9uIGEgQEAgLTY2LDYg Kzc0LDE1IEBAIHZvaWQgcnRlX3Bvd2VyX3Vuc2V0X2Vudih2b2lkKTsNCj4gPj4+ICAgICAqLw0K PiA+Pj4gICAgZW51bSBwb3dlcl9tYW5hZ2VtZW50X2VudiBydGVfcG93ZXJfZ2V0X2Vudih2b2lk KTsNCj4gPj4gSSdkIGxpa2UgdG8gbGV0IHVzZXIgbm90IGtub3cgdXNlZCB3aGljaCBjcHVmcmVx IGRyaXZlciwgd2hpY2ggaXMgZnJpZW5kbHkgdG8gdXNlci4NCj4gPj4NCj4gPj4gU28gd2UgY2Fu IHJldGhpbmsgaWYgdGhpcyBBUEkgaXMgbmVjZXNzYXJ5Lg0KPiA+IEZvciBhbnkgQVBJIGNoYW5n ZXMsIGNvdWxkIHdlIGhhbmRsZSB0aGlzIGFzIGEgc2VwYXJhdGUgUkZDIGZvciBkaXNjdXNzaW9u Pw0KPiA+IEl04oCZcyBpbXBvcnRhbnQgdGhhdCB0aGVzZSBjaGFuZ2VzIGFyZSBub3QgaW5jbHVk ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoLg0KPiBBZ3JlZWQuDQo+IENhbiB5b3Ug cG9zdCBhIHNlcGFyYXRlIFJGQyB0byBkaXNzY3VzcyB0aGlzIGltcHJvdmVtZW50IGxhdGVyPw0K PiA+Pj4gKy8qKg0KPiA+Pj4gKyAqIEBpbnRlcm5hbCBHZXQgdGhlIHBvd2VyIG9wcyBzdHJ1Y3Qg ZnJvbSBpdHMgaW5kZXguDQo+ID4+PiArICoNCj4gPj4+ICsgKiBAcmV0dXJuDQo+ID4+PiArICog ICBUaGUgcG9pbnRlciB0byB0aGUgb3BzIHN0cnVjdCBpbiB0aGUgdGFibGUgaWYgcmVnaXN0ZXJl ZC4NCj4gPj4+ICsgKi8NCj4gPj4+ICtzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICoNCj4gPj4+ ICtydGVfcG93ZXJfZ2V0X2NvcmVfb3BzKHZvaWQpOw0KPiA+Pj4gKw0KPiA+Pj4gICAgLyoqDQo+ ID4+PiAgICAgKiBJbml0aWFsaXplIHBvd2VyIG1hbmFnZW1lbnQgZm9yIGEgc3BlY2lmaWMgbGNv cmUuIElmIHJ0ZV9wb3dlcl9zZXRfZW52KCkNCj4gaGFzDQo+ID4+PiAgICAgKiBub3QgYmVlbiBj YWxsZWQgdGhlbiBhbiBhdXRvLWRldGVjdCBvZiB0aGUgZW52aXJvbm1lbnQgd2lsbA0KPiA+Pj4g c3RhcnQgYW5kIEBAIC0xMDgsMTAgKzEyNSwxMyBAQCBpbnQgcnRlX3Bvd2VyX2V4aXQodW5zaWdu ZWQgaW50IGxjb3JlX2lkKTsNCj4gPj4+ICAgICAqIEByZXR1cm4NCj4gPj4+ICAgICAqICBUaGUg bnVtYmVyIG9mIGF2YWlsYWJsZSBmcmVxdWVuY2llcy4NCj4gPj4+ICAgICAqLw0KPiA+Pj4gLXR5 cGVkZWYgdWludDMyX3QgKCpydGVfcG93ZXJfZnJlcXNfdCkodW5zaWduZWQgaW50IGxjb3JlX2lk LCB1aW50MzJfdCAqZnJlcXMsDQo+ID4+PiAtICAgICAgICAgICAgIHVpbnQzMl90IG51bSk7DQo+ ID4+PiArc3RhdGljIGlubGluZSB1aW50MzJfdA0KPiA+Pj4gK3J0ZV9wb3dlcl9mcmVxcyh1bnNp Z25lZCBpbnQgbGNvcmVfaWQsIHVpbnQzMl90ICpmcmVxcywgdWludDMyX3Qgbikgew0KPiA+Pj4g KyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3Jl X29wcygpOw0KPiA+Pj4NCj4gPj4+IC1leHRlcm4gcnRlX3Bvd2VyX2ZyZXFzX3QgcnRlX3Bvd2Vy X2ZyZXFzOw0KPiA+Pj4gKyAgICAgcmV0dXJuIG9wcy0+Z2V0X2F2YWlsX2ZyZXFzKGxjb3JlX2lk LCBmcmVxcywgbik7IH0NCj4gPj4+DQo+ID4+PiAgICAvKioNCj4gPj4+ICAgICAqIFJldHVybiB0 aGUgY3VycmVudCBpbmRleCBvZiBhdmFpbGFibGUgZnJlcXVlbmNpZXMgb2YgYSBzcGVjaWZpYyBs Y29yZS4NCj4gPj4+IEBAIC0xMjQsOSArMTQ0LDEzIEBAIGV4dGVybiBydGVfcG93ZXJfZnJlcXNf dCBydGVfcG93ZXJfZnJlcXM7DQo+ID4+PiAgICAgKiBAcmV0dXJuDQo+ID4+PiAgICAgKiAgVGhl IGN1cnJlbnQgaW5kZXggb2YgYXZhaWxhYmxlIGZyZXF1ZW5jaWVzLg0KPiA+Pj4gICAgICovDQo+ ID4+PiAtdHlwZWRlZiB1aW50MzJfdCAoKnJ0ZV9wb3dlcl9nZXRfZnJlcV90KSh1bnNpZ25lZCBp bnQgbGNvcmVfaWQpOw0KPiA+Pj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gPj4+ICtydGVf cG93ZXJfZ2V0X2ZyZXEodW5zaWduZWQgaW50IGxjb3JlX2lkKSB7DQo+ID4+PiArICAgICBzdHJ1 Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpvcHMgPSBydGVfcG93ZXJfZ2V0X2NvcmVfb3BzKCk7DQo+ ID4+Pg0KPiA+Pj4gLWV4dGVybiBydGVfcG93ZXJfZ2V0X2ZyZXFfdCBydGVfcG93ZXJfZ2V0X2Zy ZXE7DQo+ID4+PiArICAgICByZXR1cm4gb3BzLT5nZXRfZnJlcShsY29yZV9pZCk7IH0NCj4gPj4+ DQo+ID4+PiAgICAvKioNCj4gPj4+ICAgICAqIFNldCB0aGUgbmV3IGZyZXF1ZW5jeSBmb3IgYSBz cGVjaWZpYyBsY29yZSBieSBpbmRpY2F0aW5nIHRoZQ0KPiA+Pj4gaW5kZXggb2YgQEAgLTE0NCw4 MiArMTY4LDEwMSBAQCBleHRlcm4gcnRlX3Bvd2VyX2dldF9mcmVxX3QNCj4gPj4gcnRlX3Bvd2Vy X2dldF9mcmVxOw0KPiA+Pj4gICAgICogIC0gMCBvbiBzdWNjZXNzIHdpdGhvdXQgZnJlcXVlbmN5 IGNoYW5nZWQuDQo+ID4+PiAgICAgKiAgLSBOZWdhdGl2ZSBvbiBlcnJvci4NCj4gPj4+ICAgICAq Lw0KPiA+Pj4gLXR5cGVkZWYgaW50ICgqcnRlX3Bvd2VyX3NldF9mcmVxX3QpKHVuc2lnbmVkIGlu dCBsY29yZV9pZCwgdWludDMyX3QNCj4gPj4+IGluZGV4KTsNCj4gPj4+IC0NCj4gPj4+IC1leHRl cm4gcnRlX3Bvd2VyX3NldF9mcmVxX3QgcnRlX3Bvd2VyX3NldF9mcmVxOw0KPiA+Pj4gK3N0YXRp YyBpbmxpbmUgdWludDMyX3QNCj4gPj4+ICtydGVfcG93ZXJfc2V0X2ZyZXEodW5zaWduZWQgaW50 IGxjb3JlX2lkLCB1aW50MzJfdCBpbmRleCkgew0KPiA+Pj4gKyAgICAgc3RydWN0IHJ0ZV9wb3dl cl9jb3JlX29wcyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+Pj4NCj4gPj4+ IC0vKioNCj4gPj4+IC0gKiBGdW5jdGlvbiBwb2ludGVyIGRlZmluaXRpb24gZm9yIGdlbmVyaWMg ZnJlcXVlbmN5IGNoYW5nZQ0KPiA+Pj4gZnVuY3Rpb25zLiBSZXZpZXcNCj4gPj4+IC0gKiBlYWNo IGVudmlyb25tZW50cyBzcGVjaWZpYyBkb2N1bWVudGF0aW9uIGZvciB1c2FnZS4NCj4gPj4+IC0g Kg0KPiA+Pj4gLSAqIEBwYXJhbSBsY29yZV9pZA0KPiA+Pj4gLSAqICBsY29yZSBpZC4NCj4gPj4+ IC0gKg0KPiA+Pj4gLSAqIEByZXR1cm4NCj4gPj4+IC0gKiAgLSAxIG9uIHN1Y2Nlc3Mgd2l0aCBm cmVxdWVuY3kgY2hhbmdlZC4NCj4gPj4+IC0gKiAgLSAwIG9uIHN1Y2Nlc3Mgd2l0aG91dCBmcmVx dWVuY3kgY2hhbmdlZC4NCj4gPj4+IC0gKiAgLSBOZWdhdGl2ZSBvbiBlcnJvci4NCj4gPj4+IC0g Ki8NCj4gPj4+IC10eXBlZGVmIGludCAoKnJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90KSh1bnNpZ25l ZCBpbnQgbGNvcmVfaWQpOw0KPiA+Pj4gKyAgICAgcmV0dXJuIG9wcy0+c2V0X2ZyZXEobGNvcmVf aWQsIGluZGV4KTsgfQ0KPiA+Pj4NCj4gPj4+ICAgIC8qKg0KPiA+Pj4gICAgICogU2NhbGUgdXAg dGhlIGZyZXF1ZW5jeSBvZiBhIHNwZWNpZmljIGxjb3JlIGFjY29yZGluZyB0byB0aGUgYXZhaWxh YmxlDQo+ID4+PiAgICAgKiBmcmVxdWVuY2llcy4NCj4gPj4+ICAgICAqIFJldmlldyBlYWNoIGVu dmlyb25tZW50cyBzcGVjaWZpYyBkb2N1bWVudGF0aW9uIGZvciB1c2FnZS4NCj4gPj4+ICAgICAq Lw0KPiA+Pj4gLWV4dGVybiBydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJfZnJlcV91 cDsNCj4gPj4+ICtzdGF0aWMgaW5saW5lIGludA0KPiA+Pj4gK3J0ZV9wb3dlcl9mcmVxX3VwKHVu c2lnbmVkIGludCBsY29yZV9pZCkgew0KPiA+Pj4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3Jl X29wcyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAg ICAgcmV0dXJuIG9wcy0+ZnJlcV91cChsY29yZV9pZCk7IH0NCj4gPj4+DQo+ID4+PiAgICAvKioN Cj4gPj4+ICAgICAqIFNjYWxlIGRvd24gdGhlIGZyZXF1ZW5jeSBvZiBhIHNwZWNpZmljIGxjb3Jl IGFjY29yZGluZyB0byB0aGUgYXZhaWxhYmxlDQo+ID4+PiAgICAgKiBmcmVxdWVuY2llcy4NCj4g Pj4+ICAgICAqIFJldmlldyBlYWNoIGVudmlyb25tZW50cyBzcGVjaWZpYyBkb2N1bWVudGF0aW9u IGZvciB1c2FnZS4NCj4gPj4+ICAgICAqLw0KPiA+Pj4gLWV4dGVybiBydGVfcG93ZXJfZnJlcV9j aGFuZ2VfdCBydGVfcG93ZXJfZnJlcV9kb3duOw0KPiA+Pj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ ID4+PiArcnRlX3Bvd2VyX2ZyZXFfZG93bih1bnNpZ25lZCBpbnQgbGNvcmVfaWQpIHsNCj4gPj4+ ICsgICAgIHN0cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKm9wcyA9IHJ0ZV9wb3dlcl9nZXRfY29y ZV9vcHMoKTsNCj4gPj4+ICsNCj4gPj4+ICsgICAgIHJldHVybiBvcHMtPmZyZXFfZG93bihsY29y ZV9pZCk7IH0NCj4gPj4+DQo+ID4+PiAgICAvKioNCj4gPj4+ICAgICAqIFNjYWxlIHVwIHRoZSBm cmVxdWVuY3kgb2YgYSBzcGVjaWZpYyBsY29yZSB0byB0aGUgaGlnaGVzdCBhY2NvcmRpbmcgdG8g dGhlDQo+ID4+PiAgICAgKiBhdmFpbGFibGUgZnJlcXVlbmNpZXMuDQo+ID4+PiAgICAgKiBSZXZp ZXcgZWFjaCBlbnZpcm9ubWVudHMgc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiBmb3IgdXNhZ2UuDQo+ ID4+PiAgICAgKi8NCj4gPj4+IC1leHRlcm4gcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3QgcnRlX3Bv d2VyX2ZyZXFfbWF4Ow0KPiA+Pj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ID4+PiArcnRlX3Bvd2Vy X2ZyZXFfbWF4KHVuc2lnbmVkIGludCBsY29yZV9pZCkgew0KPiA+Pj4gKyAgICAgc3RydWN0IHJ0 ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+Pj4g Kw0KPiA+Pj4gKyAgICAgcmV0dXJuIG9wcy0+ZnJlcV9tYXgobGNvcmVfaWQpOyB9DQo+ID4+Pg0K PiA+Pj4gICAgLyoqDQo+ID4+PiAgICAgKiBTY2FsZSBkb3duIHRoZSBmcmVxdWVuY3kgb2YgYSBz cGVjaWZpYyBsY29yZSB0byB0aGUgbG93ZXN0IGFjY29yZGluZyB0byB0aGUNCj4gPj4+ICAgICAq IGF2YWlsYWJsZSBmcmVxdWVuY2llcy4NCj4gPj4+ICAgICAqIFJldmlldyBlYWNoIGVudmlyb25t ZW50cyBzcGVjaWZpYyBkb2N1bWVudGF0aW9uIGZvciB1c2FnZS4uDQo+ID4+PiAgICAgKi8NCj4g Pj4+IC1leHRlcm4gcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3QgcnRlX3Bvd2VyX2ZyZXFfbWluOw0K PiA+Pj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ID4+PiArcnRlX3Bvd2VyX2ZyZXFfbWluKHVuc2ln bmVkIGludCBsY29yZV9pZCkgew0KPiA+Pj4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29w cyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAg cmV0dXJuIG9wcy0+ZnJlcV9taW4obGNvcmVfaWQpOyB9DQo+ID4+Pg0KPiA+Pj4gICAgLyoqDQo+ ID4+PiAgICAgKiBRdWVyeSB0aGUgVHVyYm8gQm9vc3Qgc3RhdHVzIG9mIGEgc3BlY2lmaWMgbGNv cmUuDQo+ID4+PiAgICAgKiBSZXZpZXcgZWFjaCBlbnZpcm9ubWVudHMgc3BlY2lmaWMgZG9jdW1l bnRhdGlvbiBmb3IgdXNhZ2UuLg0KPiA+Pj4gICAgICovDQo+ID4+PiAtZXh0ZXJuIHJ0ZV9wb3dl cl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dlcl90dXJib19zdGF0dXM7DQo+ID4+PiArc3RhdGljIGlu bGluZSBpbnQNCj4gPj4+ICtydGVfcG93ZXJfdHVyYm9fc3RhdHVzKHVuc2lnbmVkIGludCBsY29y ZV9pZCkgew0KPiA+Pj4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRl X3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAgcmV0dXJuIG9wcy0+ dHVyYm9fc3RhdHVzKGxjb3JlX2lkKTsgfQ0KPiA+Pj4NCj4gPj4+ICAgIC8qKg0KPiA+Pj4gICAg ICogRW5hYmxlIFR1cmJvIEJvb3N0IGZvciB0aGlzIGxjb3JlLg0KPiA+Pj4gICAgICogUmV2aWV3 IGVhY2ggZW52aXJvbm1lbnRzIHNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHVzYWdlLi4NCj4g Pj4+ICAgICAqLw0KPiA+Pj4gLWV4dGVybiBydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93 ZXJfZnJlcV9lbmFibGVfdHVyYm87DQo+ID4+PiArc3RhdGljIGlubGluZSBpbnQNCj4gPj4+ICty dGVfcG93ZXJfZnJlcV9lbmFibGVfdHVyYm8odW5zaWduZWQgaW50IGxjb3JlX2lkKSB7DQo+ID4+ PiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpvcHMgPSBydGVfcG93ZXJfZ2V0X2Nv cmVfb3BzKCk7DQo+ID4+PiArDQo+ID4+PiArICAgICByZXR1cm4gb3BzLT5lbmFibGVfdHVyYm8o bGNvcmVfaWQpOyB9DQo+ID4+Pg0KPiA+Pj4gICAgLyoqDQo+ID4+PiAgICAgKiBEaXNhYmxlIFR1 cmJvIEJvb3N0IGZvciB0aGlzIGxjb3JlLg0KPiA+Pj4gICAgICogUmV2aWV3IGVhY2ggZW52aXJv bm1lbnRzIHNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHVzYWdlLi4NCj4gPj4+ICAgICAqLw0K PiA+Pj4gLWV4dGVybiBydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJfZnJlcV9kaXNh YmxlX3R1cmJvOw0KPiA+Pj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ID4+PiArcnRlX3Bvd2VyX2Zy ZXFfZGlzYWJsZV90dXJibyh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpIHsNCj4gPj4+ICsgICAgIHN0 cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKm9wcyA9IHJ0ZV9wb3dlcl9nZXRfY29yZV9vcHMoKTsN Cj4gPj4+DQo+ID4+PiAtLyoqDQo+ID4+PiAtICogUG93ZXIgY2FwYWJpbGl0aWVzIHN1bW1hcnku DQo+ID4+PiAtICovDQo+ID4+PiAtc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX2NhcGFiaWxpdGllcyB7 DQo+ID4+PiAtICAgICB1bmlvbiB7DQo+ID4+PiAtICAgICAgICAgICAgIHVpbnQ2NF90IGNhcGFi aWxpdGllczsNCj4gPj4+IC0gICAgICAgICAgICAgc3RydWN0IHsNCj4gPj4+IC0gICAgICAgICAg ICAgICAgICAgICB1aW50NjRfdCB0dXJibzoxOyAgICAgICAvKio8IFR1cmJvIGNhbiBiZSBlbmFi bGVkLiAqLw0KPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHByaW9yaXR5OjE7 ICAgIC8qKjwgU1NULUJGIGhpZ2ggZnJlcSBjb3JlICovDQo+ID4+PiAtICAgICAgICAgICAgIH07 DQo+ID4+PiAtICAgICB9Ow0KPiA+Pj4gLX07DQo+ID4+PiArICAgICByZXR1cm4gb3BzLT5kaXNh YmxlX3R1cmJvKGxjb3JlX2lkKTsgfQ0KPiA+Pj4NCj4gPj4+ICAgIC8qKg0KPiA+Pj4gICAgICog UmV0dXJucyBwb3dlciBjYXBhYmlsaXRpZXMgZm9yIGEgc3BlY2lmaWMgbGNvcmUuDQo+ID4+PiBA QCAtMjM1LDEwICsyNzgsMTQgQEAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX2NhcGFiaWxpdGllcyB7 DQo+ID4+PiAgICAgKiAgLSAwIG9uIHN1Y2Nlc3MuDQo+ID4+PiAgICAgKiAgLSBOZWdhdGl2ZSBv biBlcnJvci4NCj4gPj4+ICAgICAqLw0KPiA+Pj4gLXR5cGVkZWYgaW50ICgqcnRlX3Bvd2VyX2dl dF9jYXBhYmlsaXRpZXNfdCkodW5zaWduZWQgaW50IGxjb3JlX2lkLA0KPiA+Pj4gLSAgICAgICAg ICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfY2FwYWJpbGl0aWVzICpjYXBzKTsNCj4gPj4+ICtz dGF0aWMgaW5saW5lIGludA0KPiA+Pj4gK3J0ZV9wb3dlcl9nZXRfY2FwYWJpbGl0aWVzKHVuc2ln bmVkIGludCBsY29yZV9pZCwNCj4gPj4+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9wb3dlcl9j b3JlX2NhcGFiaWxpdGllcyAqY2Fwcykgew0KPiA+Pj4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9j b3JlX29wcyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+Pj4NCj4gPj4+IC1l eHRlcm4gcnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXNfdCBydGVfcG93ZXJfZ2V0X2NhcGFiaWxp dGllczsNCj4gPj4+ICsgICAgIHJldHVybiBvcHMtPmdldF9jYXBzKGxjb3JlX2lkLCBjYXBzKTsg fQ0KPiA+Pj4NCj4gPj4+ICAgICNpZmRlZiBfX2NwbHVzcGx1cw0KPiA+Pj4gICAgfQ0KPiA+Pj4g ZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9ydGVfcG93ZXJfY29yZV9vcHMuaA0KPiA+Pj4gYi9saWIv cG93ZXIvcnRlX3Bvd2VyX2NvcmVfb3BzLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4g Pj4+IDAwMDAwMDAwMDAuLjM1NmE2NGRmNzkNCj4gPj4+IC0tLSAvZGV2L251bGwNCj4gPj4+ICsr KyBiL2xpYi9wb3dlci9ydGVfcG93ZXJfY29yZV9vcHMuaA0KPiA+Pj4gQEAgLTAsMCArMSwyMDgg QEANCj4gPj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4+ PiArICogQ29weXJpZ2h0KGMpIDIwMTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+Pj4gKyAq IENvcHlyaWdodChjKSAyMDI0IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4NCj4gPj4+ICsg Ki8NCj4gPj4+ICsNCj4gPj4+ICsjaWZuZGVmIF9SVEVfUE9XRVJfQ09SRV9PUFNfSA0KPiA+Pj4g KyNkZWZpbmUgX1JURV9QT1dFUl9DT1JFX09QU19IDQo+ID4+PiArDQo+ID4+IHN1Z2dlc3QgcmVu YW1lIHRoZSBmaWxlIGFzIHJ0ZV9wb3dlcl9jcHVmcmVxX2FwaS5oLg0KPiA+PiBJZiBzbywgdGhl IHJvbGUgb2YgdGhpcyBmaWxlIGlzIG1vcmUgY2xlYXJseS4NCj4gPj4+ICtfX3J0ZV9pbnRlcm5h bA0KPiA+Pj4gK2ludCBydGVfcG93ZXJfcmVnaXN0ZXJfb3BzKHN0cnVjdCBydGVfcG93ZXJfY29y ZV9vcHMgKm9wcyk7DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICogTWFjcm8gdG8gc3Rh dGljYWxseSByZWdpc3RlciB0aGUgb3BzIG9mIGEgY3B1ZnJlcSBkcml2ZXIuDQo+ID4+PiArICov DQo+ID4+PiArI2RlZmluZSBSVEVfUE9XRVJfUkVHSVNURVJfT1BTKG9wcykgICAgICAgICAgXA0K PiA+Pj4gKyAgICAgUlRFX0lOSVQocG93ZXJfaGRscl9pbml0XyMjb3BzKSAgICAgICAgIFwNCj4g Pj4+ICsgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ID4+ PiArICAgICAgICAgICAgIHJ0ZV9wb3dlcl9yZWdpc3Rlcl9vcHMoJm9wcyk7ICAgXA0KPiA+Pj4g KyAgICAgfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAqIEBpbnRlcm5hbCBHZXQgdGhl IHBvd2VyIG9wcyBzdHJ1Y3QgZnJvbSBpdHMgaW5kZXguDQo+ID4+PiArICoNCj4gPj4+ICsgKiBA cmV0dXJuDQo+ID4+PiArICogICBUaGUgcG9pbnRlciB0byB0aGUgb3BzIHN0cnVjdCBpbiB0aGUg dGFibGUgaWYgcmVnaXN0ZXJlZC4NCj4gPj4+ICsgKi8NCj4gPj4+ICtzdHJ1Y3QgcnRlX3Bvd2Vy X2NvcmVfb3BzICoNCj4gPj4+ICtydGVfcG93ZXJfZ2V0X2NvcmVfb3BzKHZvaWQpOw0KPiA+Pj4g Kw0KPiA+Pj4gKyNpZmRlZiBfX2NwbHVzcGx1cw0KPiA+Pj4gK30NCj4gPj4+ICsjZW5kaWYNCj4g Pj4+ICsNCj4gPj4+ICsjZW5kaWYNCj4gPj4+IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvdmVyc2lv bi5tYXAgYi9saWIvcG93ZXIvdmVyc2lvbi5tYXAgaW5kZXgNCj4gPj4+IGM5YTIyNjYxNGUuLmJk NjRlMDgyOGYgMTAwNjQ0DQo+ID4+PiAtLS0gYS9saWIvcG93ZXIvdmVyc2lvbi5tYXANCj4gPj4+ ICsrKyBiL2xpYi9wb3dlci92ZXJzaW9uLm1hcA0KPiA+Pj4gQEAgLTUxLDQgKzUxLDE4IEBAIEVY UEVSSU1FTlRBTCB7DQo+ID4+PiAgICAgICAgcnRlX3Bvd2VyX3NldF91bmNvcmVfZW52Ow0KPiA+ Pj4gICAgICAgIHJ0ZV9wb3dlcl91bmNvcmVfZnJlcXM7DQo+ID4+PiAgICAgICAgcnRlX3Bvd2Vy X3Vuc2V0X3VuY29yZV9lbnY7DQo+ID4+PiArICAgICAjIGFkZGVkIGluIDI0LjA3DQo+ID4+IDI0 LjA3LS0+MjQuMTE/DQo+ID4+PiArICAgICBydGVfcG93ZXJfbG9ndHlwZTsNCj4gPj4+ICt9Ow0K PiA+Pj4gKw0KPiA+Pj4gK0lOVEVSTkFMIHsNCj4gPj4+ICsgICAgIGdsb2JhbDoNCj4gPj4+ICsN Cj4gPj4+ICsgICAgIHJ0ZV9wb3dlcl9yZWdpc3Rlcl9vcHM7DQo+ID4+PiArICAgICBjcHVmcmVx X2NoZWNrX3NjYWxpbmdfZHJpdmVyOw0KPiA+Pj4gKyAgICAgcG93ZXJfc2V0X2dvdmVybm9yOw0K PiA+Pj4gKyAgICAgb3Blbl9jb3JlX3N5c2ZzX2ZpbGU7DQo+ID4+PiArICAgICByZWFkX2NvcmVf c3lzZnNfdTMyOw0KPiA+Pj4gKyAgICAgcmVhZF9jb3JlX3N5c2ZzX3M7DQo+ID4+PiArICAgICB3 cml0ZV9jb3JlX3N5c2ZzX3M7DQo+ID4+PiAgICB9Ow0K