From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4F1A8C982C9 for ; Wed, 16 Sep 2026 20:18:34 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0352F10E705; Wed, 16 Sep 2026 20:18:34 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="k7DSpEnk"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) by gabe.freedesktop.org (Postfix) with ESMTPS id 01BDF10E3C2 for ; Wed, 16 Sep 2026 20:18:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1789589913; x=1821125913; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=Ma6AlKzNhGsYE22Xu2dG1xIT9Qp7/rWwSRll0Xb+Es4=; b=k7DSpEnkylvO2lDR0qp3dtP7YgicG4IpW1YUOVdtommmBZRvN5/obEsA GT5sNFeSBqu6AgslLAHA6f9jzfNVxY3kKtzkwUPqxXnUxcfX6XgXo9ZYJ RYQuc5V8f6MAu3KKGDbRUgBmyardIjNdociK91vzR6F5CwVxOCouYYPHl 8ulpCzqVG2qdBfOWhM4s1pLve5diHnoMcz9GcDyQV+1/BxXu1aWxLCi5W UtaFpLXiVGT87bvlNv6n5OwyGYJL6FH1f5mR/KWOr1Nas1aaNenmuB6o+ 63K1tQBJKARWz98Xm4cpHm9vwCMx6ux8XQd6PTEM6pudcbRZoMZzHvZs4 w==; X-CSE-ConnectionGUID: sU9Vs6d4TtSDDEbrNePY8w== X-CSE-MsgGUID: DIO2YlG0TsiFSfbUEJm10Q== X-IronPort-AV: E=McAfee;i="6800,10657,11905"; a="90021841" X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="90021841" Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2026 13:18:33 -0700 X-CSE-ConnectionGUID: FjqynPWSSYiQ9UqVzvXxqw== X-CSE-MsgGUID: K/gOKpxzTuqub52sBH3qfQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="275388220" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by fmviesa004.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2026 13:18:32 -0700 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Wed, 16 Sep 2026 13:18:31 -0700 Received: from fmsedg903.ED.cps.intel.com (10.1.192.145) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46 via Frontend Transport; Wed, 16 Sep 2026 13:18:31 -0700 Received: from SJ2PR03CU001.outbound.protection.outlook.com (52.101.43.48) by edgegateway.intel.com (192.55.55.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Wed, 16 Sep 2026 13:18:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hbvsVYgGLQ1O0BVflLTJ+6vEnisjsX7pWppRtNVbPNjl0h1oRPXCSWpAjR/VvIy7ouSSQkDIhlyyzVxYHhIs/ExHOf9l29HdnnxdjngviL8q263sZozs/7BP1yxaWVpTAAiR/hylXHiYi/dM90JpmCkWyhGrN+EQ+/eWn3X8G21vTTPkcsHIJYbW7a9qWKZM8jFm4EAl7ArNSollhzlJsKenMPysi1L+S7FPPz2XjMFVW3jfy4nYz0fizKz8XuwJ6LTEwpR/82qt33R2cIoIkCSPKhpei3QsLaLRf8i66LQ7lEu2LfOCGqDR4n1Ofs2E5ZPprYHgtm+laJs9pHcB5A== 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=Ma6AlKzNhGsYE22Xu2dG1xIT9Qp7/rWwSRll0Xb+Es4=; b=VFbeg3CY1BpNjBF5Jjv/J2okZRdFRZJ9oqp7qy9fvO5TwwJaKRMyJjrjw18nuY5x1l6iN+wGVzt6Q4EjzaY6NwLvc3viRMwefLi44gR10liHkeGGXZ/doKXllqOTYDsXMnAPN2boW+G3u9GXMAbTqKfk35KrI/FwtblzJvgVGrCmxp1zv2GWoLTqI79zTzgd72tLK6wKeQS/hHeMLEd6zLEFy8Puo8BJ+oYw6iXGOc2wyx8nkXFEsI8uPYpFuBrERcCwNR7rlAy81IUmT7khMo0U1wZFxu/TPkTww+nTfFUpjPzdBaxe+hnIqaeqNo313AweIOofm01B9JTmZfh23w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from LVWPR11MB9883.namprd11.prod.outlook.com (2603:10b6:408:3c0::11) by SJ1PR11MB6130.namprd11.prod.outlook.com (2603:10b6:a03:45f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Wed, 16 Sep 2026 20:18:28 +0000 Received: from LVWPR11MB9883.namprd11.prod.outlook.com ([fe80::310:e83f:69b8:e11e]) by LVWPR11MB9883.namprd11.prod.outlook.com ([fe80::310:e83f:69b8:e11e%4]) with mapi id 15.21.0428.009; Wed, 16 Sep 2026 20:18:28 +0000 From: "Teres Alexis, Alan Previn" To: "Vivi, Rodrigo" CC: "intel-xe@lists.freedesktop.org" , "Brost, Matthew" , "Dong, Zhanjun" , "Filipchuk, Julia" , "Souza, Jose" Subject: Re: [PATCH v9 2/2] drm/xe/guc: Compress GuC log and CTB dump with zstd Thread-Topic: [PATCH v9 2/2] drm/xe/guc: Compress GuC log and CTB dump with zstd Thread-Index: AQHdRTp8HSIYxZJ8eES3dnnVYS9bzLbRWHiAgABOIgA= Date: Wed, 16 Sep 2026 20:18:27 +0000 Message-ID: <4f7cb5ffbc8d6480cf59dc9df429eb0b32a18326.camel@intel.com> References: <20260915174840.531473-4-alan.previn.teres.alexis@intel.com> <20260915174840.531473-6-alan.previn.teres.alexis@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.52.3-0ubuntu1.1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LVWPR11MB9883:EE_|SJ1PR11MB6130:EE_ x-ms-office365-filtering-correlation-id: a261d7b5-67a4-4087-dd8e-08df142fab54 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|23010399003|38070700021|4143699003|3023799007|10067099003|56012099006|11063799006|6133799003|18002099003|22082099003; x-microsoft-antispam-message-info: FtYQ788CU+8dDYKjk6bZbH6YVlBqtgHYSMTshJmfARxoWgPrGXphw8uvODPZHKpOUztp+jFgfvGv/UVH/DH67WFL8wQW8jKYZymKI+qexVXrpvbehheG6HLbqR2Y/QjgznpmiI83FsP5L04mHikZUrkW/0OhuJQ6jEUDLCXwUVMQonZvKesvTvdHGD7/x1VnubRQwJfdy3FAzPNSyrQFT61s61b1PsM6XD8H04VORogA3BLKK/U1aBWb55uD3N6sb/+4hBvmsYKLqzMHxYY5IpXzvRZ/cynZaKsn7ioCzr6VBO7unIF5p0SVUC5ofB3/cZbC2c7Vd+wzKhlGshR3Bd162hs1hmdy3zR4b+cBvAzcg4ks4VakLd/o+LyFXAeaDBiOeuQsqtZ7xwI6VkhAUVc5mRt6EA6XQeoXzjCQ47jTOp4oR6adJN/NlmLz3+HLhwZTMliDXkkCLmOyiGkkCLkxcgpGv1hKgvNpMsyhrzEmY30Gn8h2iFlkP+2AvN90AJ/f6WbHCtzoSWqRJdvvmISR/FC8H9prBeJXfdbl7zAsh6qo0Aiu4VpF1mnsVoARfIZgKSfVUtTb2gu7RGCT7442KZ12tNFOfthlkwYOHOOfarEn1G6c2sS66++xs+fcHfnzs68O3W0YTZGAxklepbQlxomLcd61E9rITcyMKjqHZ1rHnInINPsOzRdBUNe0zHciCHHeBH5g4iqD7MUi6Z3FoWTO2P+INgF7qWx++Is= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:LVWPR11MB9883.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(38070700021)(4143699003)(3023799007)(10067099003)(56012099006)(11063799006)(6133799003)(18002099003)(22082099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?a1RXTGtTalhHZ2NYeUtPbmxERWRQQitVcHgrdnNXbnVFZjh6NFFoYVVzMXNq?= =?utf-8?B?L2k2VHM0Sm9JY1A0ZTRYWlpBUnNXNWp0aS9nZktZYnFaVWk5eTM0MkNFUm9h?= =?utf-8?B?MUxGVjYzdXVsQmo0ZlQyeDZvd3kyYWJBanRhVTRiRGZuNEJQcXlvejY3UHEr?= =?utf-8?B?WExvV1VwcGwrYjhsTTBMSElOUlhWZWVtbnlZT3RIR2Vidy9jMHZFVTgrWWVE?= =?utf-8?B?SVVMMUlBcVE1UlpHRHdpZitzV1dVc1NKd1RiV3BRaUZ0MG1sWmJ1czhHVGZH?= =?utf-8?B?S1EwZm53UVJ4ZzEzTVBSS1R2eFI5dUxtSW1UaFlOODBUamRRZnIrU2Z5b2xi?= =?utf-8?B?N05HN2w1ck9KQXozMHk0dmhrZElQSlpGK2w3c2kzRTVyMThzV1RVNlBoTTNW?= =?utf-8?B?ekxkaDNVNDNrRWlsaVc5R2ZrMG1naGtZVGF6dEkreVNUSFE3RURqdlpvL0VW?= =?utf-8?B?dkhyVWdTSzNxbGJBYzlCejIyZ1o5VjlDc1ErKzlyUVkwYkZ3aFAzZWxXRmJZ?= =?utf-8?B?bU44N1FxK2lQaEFHK2lUMVJ1RlhoM1JsWWtLTCtzb1M2cW5jYU5oN1dEUGkr?= =?utf-8?B?Y0FhNEpFckMvSmQ3R3dIbXUyZTBQS08vVlZsRXlqNmt1dlZzQlNQSUlnTjlo?= =?utf-8?B?T3JNYm9LNXQrK0gvZXBMYU1JTkZGZ0ovOVRnM3BmbXJFNXpFclZ3cXpOaXJn?= =?utf-8?B?WVp2WlpUa0JGMktaeVFicFI0WXVQT0FHcHVQb2o4TjFzZmhWTjJjQnNKQ2tB?= =?utf-8?B?dlk5VEZONDZRZmtDRkkvbitBbkRudVkxRy9lQmtUcHlEdVVCbGltd1c5MHoy?= =?utf-8?B?akQxdnd3dHNkMUNHMjFtazhpTStWUXg5dHBJVXJxRE03NVFnTVNFczVhcjNy?= =?utf-8?B?WGcwSUgySGsySlRTTkZVb0NlK3VNUGlyYjlITDAveHZjQ0VYWEVtb1JoTU45?= =?utf-8?B?T0YzNExmNldybFF5eFE1bEZnd2NMYzhsTUZ1NzlwUE5TTTdBUVJ2TS9wUnU0?= =?utf-8?B?NXloSS9Ba3V4dUJZaEZ4YlZFWmgrcjVWUnZ6ZFA2YitzYU5tM0xHRTBvejVS?= =?utf-8?B?dHpkYUFlMUlITDJnMzk1VktkVHZDM3Y5dUdOSlVrSi9EbEVhVTJ2QXVsNWpo?= =?utf-8?B?czRucFVZb2VxcHZrWDByMVpQNlhPWnhrdXg3azRvd1gyVEZ0TUs1QW92WG1h?= =?utf-8?B?bkRXSi9yUTZ0UWxOTW5md1VLTE5iUWUyZzBJR1VxeFVXZnlhaCtZenIrOUtD?= =?utf-8?B?Z1AxZTlZcC8rMnZwQnBZbGxCSVAxSmZxN29mRDltaVBiYXNyVldHamRVdHNR?= =?utf-8?B?MEE1MXRRVjZyc3hsdE5DVHJLUmVneVVQOXNlMHI3R3BaQXJUQm5LczNrRTNX?= =?utf-8?B?cm5jSWpzUndjTk04YURuQWVxQmZVM3djc0tjMG9hUkVpMkpmQVM4OGtPMXJa?= =?utf-8?B?NjdMamN2UFN5YjRlelZkc281SG1nT1NrMnhKRXlNQXpuenMvQzBHMWpsbUdz?= =?utf-8?B?SGRqN1lhaVpzTEJMZ1VURkMzVjZNUU50Rnh5dmp0S0E0V0hmbDVXTHhKYjFK?= =?utf-8?B?cEVCZFJ3RjF5TmtxbGFreUdCOWhPY2J1dXM0bWc2S3ZGOVB0L0hXTERaSE5W?= =?utf-8?B?OGIvSWhKMS9jS0N2TklKWFlLSFhPQ05lR0cwakZpQmZaRjR1NHV6L3o3REd3?= =?utf-8?B?Ry9VNi9lb3o4Z2M2cU1ESm54NXg4NzNacDVuSlFZVUI1RUZUeUhyY2pFSkxC?= =?utf-8?B?dlJabXdudEt5ZGtLQndkL0xnQ01WalFkWjIxcXNqSGloTEw4REVIUFVPVzZM?= =?utf-8?B?UzNlTnprYmc0WGVCb0QvU21lYjQ1RlN1U1g5ZnlnOFlZK2IwdlMxWjFIbTdR?= =?utf-8?B?ZmQzNVVkcGVEUDhmRDBNRkdsSHVEWG5TSE9YMGxMV0o3ZWJjM245N3dJWUgw?= =?utf-8?B?Z0pKWVNGUDIvd0doWVlSOWMvOWMyU3ZnM2lodS9qS1RyVGZZMWpEcXVIVlBE?= =?utf-8?B?UmJaaG1FUHBoaUNMSlNjbUZXM0svVVF1L3VOSllrUDRPZkhVZzlaZ1cwYXJ0?= =?utf-8?B?SWZjWUM0SjFjcXVOQU5yb3cyeURNcmdRQmlyZXU0ZUNyRWJpNlErMGpKZC9y?= =?utf-8?B?U0NPaVJVajQvemFqWnQrRHFTZm5JNElUNWZWN2pYaUdEOTFnL0VGaldCblVr?= =?utf-8?B?aHlYTkk5a1VGU29NVkh4ZGpGUFpnUWZsS3FmdTg3Zld5amhUV3R3T2cxMnIr?= =?utf-8?B?aW9SOTFpUG9COTZ3NVQ3d3VFTWZRNHVQZi84L28zTWRSbkdycVRpdW0yMFZR?= =?utf-8?B?QnRoQ241QmRzS2ljRzZ1T2ZUMFdWQ013alZ4VTAxekFxRWZlb0swQ0dONlBp?= =?utf-8?Q?9Oboysjxd5i4loQQTTj0rbxZYs+rFkPyNNMtC?= Content-Type: text/plain; charset="utf-8" Content-ID: <09FCF8084A81D94DB61DA17A71F4FC4E@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: wgOWRyemPP/9XhsW4vA9d4eUULHQ3lT+Ypc7vfC2+nmI150Z0dWoTGdFT9rP5umle8WOwS7XShSgGyZ9XOaQIIt4g13THzR9vMNauWJGf1/njS+nXfslqeaVmLOs6+wWNmdrs4fh87NVhCly3ZblH21WCDbwU21a3uJlltKtXGebSd0zkJ58XtRu2adi2YrglfMb/Nv7bcoZri+trA0bDAJLqvrftGkqFMcGGbTJEFT2pmZ+28rZAkGRLb77buWWLLtbefjFEiZ/OV3u9zIkb0NjXQFquKvq1XLy71uNLo+BKwbqH/2ioauhf8GwOGAAzukrx70Bg45X+hzWXMNlyQ== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LVWPR11MB9883.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a261d7b5-67a4-4087-dd8e-08df142fab54 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2026 20:18:28.0043 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8M36dY7mPW0EM0hkkEaBSSP3Dh/pD2+7LD/Fok77ZRUaPL0IGjwupx98IelrzFGIXjQlaHkiCjuDDn97DJ3Gz1Nvir/xGbG9Rd83iedyA9eXq/zqta4Xf+mPYTHXkAO9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR11MB6130 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" QWN0dWFsbHkgd2UgZGlkIGdldCBhIHJldmlldyBvbiByZXYyIGJ1dCBsb29rcyBTYXNoaWtvIGRp ZG50IGNoaW1lIGluIHVudGlsIFJldi01IC8gdjkuDQpUaGFua3MgZm9yIHRoZSByZXZpZXcgUm9k cmlnbywgSSB3aWxsIHdvcmsgb24gdGhvc2UuDQoNCi4uLmFsYW4NCg0KDQpPbiBXZWQsIDIwMjYt MDktMTYgYXQgMTE6MzggLTA0MDAsIFJvZHJpZ28gVml2aSB3cm90ZToNCj4gT24gVHVlLCBTZXAg MTUsIDIwMjYgYXQgMTA6NDg6NDBBTSAtMDcwMCwgQWxhbiBQcmV2aW4gd3JvdGU6DQo+ID4gRnJv bTogWmhhbmp1biBEb25nIDx6aGFuanVuLmRvbmdAaW50ZWwuY29tPg0KPiA+IA0KPiA+IFdpdGgg ZGVmYXVsdCBzZXR0aW5ncywgR3VDIGxvZyBpcyA4TUIgaW4gc2l6ZSBhbmQNCj4gPiBkdW1waW5n IHRoZSBsb2cgaXMgdGltZS1jb25zdW1pbmcuIEluIGRlYnVnZ2luZyBzY2VuYXJpb3MsDQo+ID4g ZHVtcC10by1kbWVzZyBzdWZmZXJzIHRydW5jYXRpb24gbG9zcyBiZWNhdXNlIENJJ3Mgc2l6ZSBs aW1pdCBpcyAyTUIuDQo+ID4gQWRkaXRpb25hbGx5LCBpZiBhbHNvIGZvcndhcmRlZCB0byBzZXJp YWwgY29uc29sZSwgaXQgdGFrZXMgc2V2ZXJhbA0KPiA+IG1pbnV0ZXMuIEluIHVzZS1jYXNlIG9m IGNvbnRpbnVvdXMgZXJyb3IrbG9nIGNvbGxlY3Rpb24gb3ZlciBleHRlbmRlZA0KPiA+IHBlcmlv ZCwgd2UgcHJlc3N1cmUgQ0kncyBhbGxvY2F0ZWQgc3RvcmFnZS4gVGh1cywgY29tcHJlc3MgdGhl DQo+ID4gR3VDIGxvZyBkYXRhIGR1bXAgdG8gYWRkcmVzcyB0aGVzZSBpc3N1ZXMgYW5kIG11bHRp cGx5IGFueSBiZW5lZml0cw0KPiA+IGZyb20gYSBmdXR1cmUgdXBncmFkZSBpbiBDSSdzIHNpemUg bGltaXRzLg0KPiA+IA0KPiA+IFJlcGxhY2UgdGhlIHJhdyBhc2NpaTg1IGR1bXBzIG9mIEd1QyBs b2cgc25hcHNob3RzIHdpdGggYQ0KPiA+IHpzdGQtY29tcHJlc3NlZCBhc2NpaTg1IHN0cmVhbSBh bmQgcmV1c2UgdGhlIHNhbWUgaGVscGVyIGZvciBDVEINCj4gPiBzbmFwc2hvdCBvdXRwdXQuDQo+ ID4gDQo+ID4gVXNlIHpzdGQgc3RyZWFtaW5nIHdpdGggdGhlIGRlZmF1bHQgY29tcHJlc3Npb24g bGV2ZWwgb2YgMyBhbmQgYW4NCj4gPiBlc3RpbWF0ZWQgc291cmNlIHNpemUgb2YgMCBzbyB0aGUg Y29tcHJlc3Npb24gd29ya3NwYWNlIHN0YXlzIGJvdW5kZWQNCj4gPiBldmVuIGZvciBtdWx0aS1t ZWdhYnl0ZSBsb2dzLg0KPiA+IA0KPiA+IEFkZCBhIG5ldyBLY29uZmlnIG9wdGlvbiBEUk1fWEVf Q09NUFJFU1NfRFVNUCB0byBjb250cm9sIHdoZXRoZXINCj4gPiBHdUMgbG9nIGFuZCBDVEIgZHVt cHMgYXJlIGNvbXByZXNzZWQgd2l0aCBaU1RELiBUaGlzIGFsbG93cyB1c2VycyB0bw0KPiA+IGNo b29zZSBiZXR3ZWVuIHJlZHVjZWQgZHVtcCBzaXplcyBhbmQgbG93ZXIgbWVtb3J5IHVzYWdlLg0K PiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFpoYW5qdW4gRG9uZyA8emhhbmp1bi5kb25nQGludGVs LmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbGFuIFByZXZpbiA8YWxhbi5wcmV2aW4udGVyZXMu YWxleGlzQGludGVsLmNvbT4NCj4gPiBBY2tlZC1ieTogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8 am9zZS5zb3V6YUBpbnRlbC5jb20+DQo+ID4gQWNrZWQtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmln by52aXZpQGludGVsLmNvbT4NCj4gDQo+IFNpbmNlIG5vIG9uZSBoYWQgdGhlIHdpbGxpZ25lc3Mg dG8gYWN0dWFsbHkgcmV2aWV3IHRoaXMgeWV0LCBJIGFza2VkIEFJIHNvbWUgaGVscA0KPiANCj4g PiAtLS0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWcgICAgICAgICAgfCAgMTUgKysr DQo+ID4gIGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZjb3JlZHVtcC5jIHwgICA0ICstDQo+ID4g IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYyAgICAgIHwgIDE5ICsrLS0NCj4gPiAgZHJp dmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5oICAgICAgfCAgIDQgKy0NCj4gPiAgZHJpdmVycy9n cHUvZHJtL3hlL3hlX2d1Y19sb2cuYyAgICAgfCAxNjEgKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2xvZy5oICAgICB8ICAgOSArLQ0K PiA+ICA2IGZpbGVzIGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkN Cj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWcgYi9kcml2 ZXJzL2dwdS9kcm0veGUvS2NvbmZpZw0KPiA+IGluZGV4IDRkN2RjYWZmMmI5MS4uMThhNjgyYTQ0 YjMxIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnDQo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWcNCj4gPiBAQCAtMzMsNiArMzMsNyBAQCBjb25m aWcgRFJNX1hFDQo+ID4gIAlzZWxlY3QgQUNQSV9XTUkgaWYgWDg2ICYmIEFDUEkNCj4gPiAgCXNl bGVjdCBTWU5DX0ZJTEUNCj4gPiAgCXNlbGVjdCBDUkMzMg0KPiA+ICsJc2VsZWN0IFpTVERfQ09N UFJFU1MgaWYgRFJNX1hFX0NPTVBSRVNTX0RVTVANCj4gDQo+IFRoZXJlJ3MgYSBjaXJjdWxhci9y ZXZlcnNlIGRlcGVuZGVuY3kgaGVyZS4NCj4gDQo+IFBsZWFzZSBtb3ZlIHRoZSBzZWxlY3QgWlNU RF9DT01QUkVTUyBpbnRvIERSTV9YRV9DT01QUkVTU19EVU1QDQo+IGxpa2UgRFJNX1hFX0dQVVNW TSBzZWxlY3RzIERSTV9HUFVTVk0uLi4NCj4gDQo+ID4gIAlzZWxlY3QgU05EX0hEQV9JOTE1IGlm IFNORF9IREFfQ09SRQ0KPiA+ICAJc2VsZWN0IENFQ19DT1JFIGlmIENFQ19OT1RJRklFUg0KPiA+ ICAJc2VsZWN0IFZNQVBfUEZODQo+ID4gQEAgLTEwMSw2ICsxMDIsMjAgQEAgY29uZmlnIERSTV9Y RV9QQUdFTUFQDQo+ID4gIA0KPiA+ICAJICBJZiBpbiBkb3VidCBzYXkgIlkiLg0KPiA+ICANCj4g PiArY29uZmlnIERSTV9YRV9DT01QUkVTU19EVU1QDQo+ID4gKwlib29sICJFbmFibGUgWlNURCBj b21wcmVzc2lvbiBmb3IgZXJyb3IgZHVtcHMiDQo+ID4gKwlkZXBlbmRzIG9uIERSTV9YRQ0KPiA+ ICsJZGVmYXVsdCB5DQo+ID4gKwloZWxwDQo+ID4gKwkgIEVuYWJsZSB0aGlzIG9wdGlvbiB0byBj b21wcmVzcyBHdUMgbG9nIGFuZCBDVEIgZHVtcHMgd2l0aCBaU1REDQo+ID4gKwkgIGNvbXByZXNz aW9uLiBUaGlzIGNhbiBzaWduaWZpY2FudGx5IHJlZHVjZSB0aGUgc2l6ZSBvZiBlcnJvciBkdW1w cw0KPiA+ICsJICBidXQgcmVxdWlyZXMgYWRkaXRpb25hbCBtZW1vcnkgZm9yIGNvbXByZXNzaW9u IHdvcmtzcGFjZS4NCj4gPiArDQo+ID4gKwkgIERpc2FibGUgdGhpcyBvcHRpb24gaWYgeW91IHdh bnQgdG8gc2F2ZSBtZW1vcnkgb3IgcHJlZmVyIHVuY29tcHJlc3NlZA0KPiA+ICsJICBlcnJvciBk dW1wcyBmb3IgZGVidWdnaW5nLg0KPiA+ICsNCj4gPiArCSAgSWYgaW4gZG91YnQgc2F5ICJZIi4N Cj4gPiArDQo+ID4gIGNvbmZpZyBEUk1fWEVfRk9SQ0VfUFJPQkUNCj4gPiAgCXN0cmluZyAiRm9y Y2UgcHJvYmUgeGUgZm9yIHNlbGVjdGVkIEludGVsIGhhcmR3YXJlIElEcyINCj4gPiAgCWRlcGVu ZHMgb24gRFJNX1hFDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZj b3JlZHVtcC5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmNvcmVkdW1wLmMNCj4gPiBpbmRl eCA1ZjJiOTBiMThmOTcuLjI3NDczYzI1YWFkMiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0veGUveGVfZGV2Y29yZWR1bXAuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94 ZV9kZXZjb3JlZHVtcC5jDQo+ID4gQEAgLTExNSw5ICsxMTUsOSBAQCBzdGF0aWMgc3NpemVfdCBf X3hlX2RldmNvcmVkdW1wX3JlYWQoY2hhciAqYnVmZmVyLCBzc2l6ZV90IGNvdW50LA0KPiA+ICAJ ZHJtX3ByaW50ZigmcCwgIlx0VGlsZTogJWRcbiIsIHNzLT5ndC0+dGlsZS0+aWQpOw0KPiA+ICAN Cj4gPiAgCWRybV9wdXRzKCZwLCAiXG4qKioqIEd1QyBMb2cgKioqKlxuIik7DQo+ID4gLQl4ZV9n dWNfbG9nX3NuYXBzaG90X3ByaW50KHNzLT5ndWMubG9nLCAmcCk7DQo+ID4gKwl4ZV9ndWNfbG9n X3NuYXBzaG90X3ByaW50KHNzLT5ndWMubG9nLCAmcCwgc3MtPmd0KTsNCj4gPiAgCWRybV9wdXRz KCZwLCAiXG4qKioqIEd1QyBDVCAqKioqXG4iKTsNCj4gPiAtCXhlX2d1Y19jdF9zbmFwc2hvdF9w cmludChzcy0+Z3VjLmN0LCAmcCk7DQo+ID4gKwl4ZV9ndWNfY3Rfc25hcHNob3RfcHJpbnQoc3Mt Pmd1Yy5jdCwgJnAsIHNzLT5ndCk7DQo+ID4gIA0KPiA+ICAJZHJtX3B1dHMoJnAsICJcbioqKiog Q29udGV4dHMgKioqKlxuIik7DQo+ID4gIAl4ZV9ndWNfZXhlY19xdWV1ZV9zbmFwc2hvdF9wcmlu dChzcy0+Z2UsICZwKTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1 Y19jdC5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jDQo+ID4gaW5kZXggNWM0NzMz ZGEzODVjLi4xMGE4Y2YzMjcwMzYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hl L3hlX2d1Y19jdC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jDQo+ ID4gQEAgLTIxODYsMTEgKzIxODYsMTIgQEAgc3RydWN0IHhlX2d1Y19jdF9zbmFwc2hvdCAqeGVf Z3VjX2N0X3NuYXBzaG90X2NhcHR1cmUoc3RydWN0IHhlX2d1Y19jdCAqY3QpDQo+ID4gICAqIHhl X2d1Y19jdF9zbmFwc2hvdF9wcmludCAtIFByaW50IG91dCBhIGdpdmVuIEd1QyBDVCBzbmFwc2hv dC4NCj4gPiAgICogQHNuYXBzaG90OiBHdUMgQ1Qgc25hcHNob3Qgb2JqZWN0Lg0KPiA+ICAgKiBA cDogZHJtX3ByaW50ZXIgd2hlcmUgaXQgd2lsbCBiZSBwcmludGVkIG91dC4NCj4gPiArICogQGd0 OiBHVCBzdHJ1Y3R1cmUgZm9yIGVycm9yIHJlcG9ydGluZw0KPiA+ICAgKg0KPiA+ICAgKiBUaGlz IGZ1bmN0aW9uIHByaW50cyBvdXQgYSBnaXZlbiBHdUMgQ1Qgc25hcHNob3Qgb2JqZWN0Lg0KPiA+ ICAgKi8NCj4gPiAgdm9pZCB4ZV9ndWNfY3Rfc25hcHNob3RfcHJpbnQoc3RydWN0IHhlX2d1Y19j dF9zbmFwc2hvdCAqc25hcHNob3QsDQo+ID4gLQkJCSAgICAgIHN0cnVjdCBkcm1fcHJpbnRlciAq cCkNCj4gPiArCQkJICAgICAgc3RydWN0IGRybV9wcmludGVyICpwLCBzdHJ1Y3QgeGVfZ3QgKmd0 KQ0KPiA+ICB7DQo+ID4gIAlpZiAoIXNuYXBzaG90KQ0KPiA+ICAJCXJldHVybjsNCj4gPiBAQCAt MjIwNCwxMSArMjIwNSwxMCBAQCB2b2lkIHhlX2d1Y19jdF9zbmFwc2hvdF9wcmludChzdHJ1Y3Qg eGVfZ3VjX2N0X3NuYXBzaG90ICpzbmFwc2hvdCwNCj4gPiAgCQlkcm1fcHJpbnRmKHAsICJcdGcy aCBvdXRzdGFuZGluZzogJWRcbiIsDQo+ID4gIAkJCSAgIHNuYXBzaG90LT5nMmhfb3V0c3RhbmRp bmcpOw0KPiA+ICANCj4gPiAtCQlpZiAoc25hcHNob3QtPmN0Yikgew0KPiA+IC0JCQlkcm1fcHJp bnRmKHAsICJbQ1RCXS5sZW5ndGg6IDB4JXp4XG4iLCBzbmFwc2hvdC0+Y3RiX3NpemUpOw0KPiA+ IC0JCQl4ZV9wcmludF9ibG9iX2FzY2lpODUocCwgIltDVEJdLmRhdGEiLCAnXG4nLA0KPiA+IC0J CQkJCSAgICAgIHNuYXBzaG90LT5jdGIsIDAsIHNuYXBzaG90LT5jdGJfc2l6ZSk7DQo+ID4gLQkJ fQ0KPiA+ICsJCWlmIChzbmFwc2hvdC0+Y3RiKQ0KPiA+ICsJCQl4ZV9ndWNfcHJpbnRfYmxvYihn dCwgcCwgIltDVEJdIiwgIltDVEJdLmRhdGEiLA0KPiA+ICsJCQkJCSAgJnNuYXBzaG90LT5jdGIs IDEsDQo+ID4gKwkJCQkJICBzbmFwc2hvdC0+Y3RiX3NpemUsIHNuYXBzaG90LT5jdGJfc2l6ZSk7 DQo+ID4gIAl9IGVsc2Ugew0KPiA+ICAJCWRybV9wdXRzKHAsICJDVCBkaXNhYmxlZFxuIik7DQo+ ID4gIAl9DQo+ID4gQEAgLTIyNDIsOSArMjI0MiwxMCBAQCB2b2lkIHhlX2d1Y19jdF9zbmFwc2hv dF9mcmVlKHN0cnVjdCB4ZV9ndWNfY3Rfc25hcHNob3QgKnNuYXBzaG90KQ0KPiA+ICB2b2lkIHhl X2d1Y19jdF9wcmludChzdHJ1Y3QgeGVfZ3VjX2N0ICpjdCwgc3RydWN0IGRybV9wcmludGVyICpw LCBib29sIHdhbnRfY3RiKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgeGVfZ3VjX2N0X3NuYXBzaG90 ICpzbmFwc2hvdDsNCj4gPiArCXN0cnVjdCB4ZV9ndCAqZ3QgPSBjdF90b19ndChjdCk7DQo+ID4g IA0KPiA+ICAJc25hcHNob3QgPSBndWNfY3Rfc25hcHNob3RfY2FwdHVyZShjdCwgZmFsc2UsIHdh bnRfY3RiKTsNCj4gPiAtCXhlX2d1Y19jdF9zbmFwc2hvdF9wcmludChzbmFwc2hvdCwgcCk7DQo+ ID4gKwl4ZV9ndWNfY3Rfc25hcHNob3RfcHJpbnQoc25hcHNob3QsIHAsIGd0KTsNCj4gPiAgCXhl X2d1Y19jdF9zbmFwc2hvdF9mcmVlKHNuYXBzaG90KTsNCj4gPiAgfQ0KPiA+ICANCj4gPiBAQCAt MjM0MiwxMCArMjM0MywxMCBAQCBzdGF0aWMgdm9pZCBjdF9kZWFkX3ByaW50KHN0cnVjdCB4ZV9k ZWFkX2N0ICpkZWFkKQ0KPiA+ICAJZHJtX3ByaW50ZigmbHAsICJcdFRpbGU6ICVkXG4iLCBndC0+ dGlsZS0+aWQpOw0KPiA+ICANCj4gPiAgCWRybV9wdXRzKCZscCwgIioqKiogR3VDIExvZyAqKioq XG4iKTsNCj4gPiAtCXhlX2d1Y19sb2dfc25hcHNob3RfcHJpbnQoZGVhZC0+c25hcHNob3RfbG9n LCAmbHApOw0KPiA+ICsJeGVfZ3VjX2xvZ19zbmFwc2hvdF9wcmludChkZWFkLT5zbmFwc2hvdF9s b2csICZscCwgZ3QpOw0KPiA+ICANCj4gPiAgCWRybV9wdXRzKCZscCwgIioqKiogR3VDIENUICoq KipcbiIpOw0KPiA+IC0JeGVfZ3VjX2N0X3NuYXBzaG90X3ByaW50KGRlYWQtPnNuYXBzaG90X2N0 LCAmbHApOw0KPiA+ICsJeGVfZ3VjX2N0X3NuYXBzaG90X3ByaW50KGRlYWQtPnNuYXBzaG90X2N0 LCAmbHAsIGd0KTsNCj4gPiAgDQo+ID4gIAlkcm1fcHV0cygmbHAsICJEb25lLlxuIik7DQo+ID4g IH0NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5oIGIvZHJp dmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5oDQo+ID4gaW5kZXggM2RkYzY2NWFiODRhLi5mOTUw ZDY4YTA2MGEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5o DQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5oDQo+ID4gQEAgLTEyLDYg KzEyLDcgQEANCj4gPiAgDQo+ID4gIHN0cnVjdCBkcm1fcHJpbnRlcjsNCj4gPiAgc3RydWN0IHhl X2RldmljZTsNCj4gPiArc3RydWN0IHhlX2d0Ow0KPiA+ICANCj4gPiAgaW50IHhlX2d1Y19jdF9p bml0X25vYWxsb2Moc3RydWN0IHhlX2d1Y19jdCAqY3QpOw0KPiA+ICBpbnQgeGVfZ3VjX2N0X2lu aXQoc3RydWN0IHhlX2d1Y19jdCAqY3QpOw0KPiA+IEBAIC0yNiw3ICsyNyw4IEBAIHZvaWQgeGVf Z3VjX2N0X2ZsdXNoX2FuZF9zdG9wKHN0cnVjdCB4ZV9ndWNfY3QgKmN0KTsNCj4gPiAgdm9pZCB4 ZV9ndWNfY3RfZmFzdF9wYXRoKHN0cnVjdCB4ZV9ndWNfY3QgKmN0KTsNCj4gPiAgDQo+ID4gIHN0 cnVjdCB4ZV9ndWNfY3Rfc25hcHNob3QgKnhlX2d1Y19jdF9zbmFwc2hvdF9jYXB0dXJlKHN0cnVj dCB4ZV9ndWNfY3QgKmN0KTsNCj4gPiAtdm9pZCB4ZV9ndWNfY3Rfc25hcHNob3RfcHJpbnQoc3Ry dWN0IHhlX2d1Y19jdF9zbmFwc2hvdCAqc25hcHNob3QsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7 DQo+ID4gK3ZvaWQgeGVfZ3VjX2N0X3NuYXBzaG90X3ByaW50KHN0cnVjdCB4ZV9ndWNfY3Rfc25h cHNob3QgKnNuYXBzaG90LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsDQo+ID4gKwkJCSAgICAgIHN0 cnVjdCB4ZV9ndCAqZ3QpOw0KPiA+ICB2b2lkIHhlX2d1Y19jdF9zbmFwc2hvdF9mcmVlKHN0cnVj dCB4ZV9ndWNfY3Rfc25hcHNob3QgKnNuYXBzaG90KTsNCj4gPiAgdm9pZCB4ZV9ndWNfY3RfcHJp bnQoc3RydWN0IHhlX2d1Y19jdCAqY3QsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgYm9vbCB3YW50 X2N0Yik7DQo+ID4gIA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3Vj X2xvZy5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19sb2cuYw0KPiA+IGluZGV4IDUzOGQ0 ZGYwZjdhYS4uYWFlYjBmNzZhZjMwIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94 ZS94ZV9ndWNfbG9nLmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2xvZy5j DQo+ID4gQEAgLTYsNiArNiw5IEBADQo+ID4gICNpbmNsdWRlICJ4ZV9ndWNfbG9nLmgiDQo+ID4g IA0KPiA+ICAjaW5jbHVkZSA8bGludXgvZmF1bHQtaW5qZWN0Lmg+DQo+ID4gKyNpZiBJU19FTkFC TEVEKENPTkZJR19EUk1fWEVfQ09NUFJFU1NfRFVNUCkNCj4gPiArI2luY2x1ZGUgPGxpbnV4L3pz dGQuaD4NCj4gPiArI2VuZGlmDQo+ID4gIA0KPiA+ICAjaW5jbHVkZSA8bGludXgvdXRzbmFtZS5o Pg0KPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9tYW5hZ2VkLmg+DQo+ID4gQEAgLTIyNSwxNiArMjI4 LDE0OCBAQCBzdHJ1Y3QgeGVfZ3VjX2xvZ19zbmFwc2hvdCAqeGVfZ3VjX2xvZ19zbmFwc2hvdF9j YXB0dXJlKHN0cnVjdCB4ZV9ndWNfbG9nICpsb2csDQo+ID4gIAlyZXR1cm4gc25hcHNob3Q7DQo+ ID4gIH0NCj4gPiAgDQo+ID4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fWEVfQ09NUFJFU1Nf RFVNUCkNCj4gPiArc3RhdGljIHZvaWQgeGVfZ3VjX3ByaW50X2Jsb2JfY29tcHJlc3NlZChzdHJ1 Y3QgeGVfZ3QgKmd0LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsDQo+ID4gKwkJCQkJIGNvbnN0IGNo YXIgKmxlbmd0aF9sYWJlbCwgY29uc3QgY2hhciAqZGF0YV9sYWJlbCwNCj4gPiArCQkJCQkgdm9p ZCAqKmNodW5rcywgaW50IG51bV9jaHVua3MsDQo+ID4gKwkJCQkJIHNpemVfdCBjaHVua19zaXpl LCBzaXplX3QgdG90YWxfc2l6ZSkNCj4gPiArew0KPiA+ICsJenN0ZF9wYXJhbWV0ZXJzIHBhcmFt czsNCj4gPiArCXpzdGRfY3N0cmVhbSAqY3N0cmVhbTsNCj4gPiArCXpzdGRfb3V0X2J1ZmZlciBv dXRidWY7DQo+ID4gKwlzaXplX3Qgd2tzcF9zaXplLCBkc3Rfc2l6ZTsNCj4gPiArCXNpemVfdCBy ZW1haW4sIHJldDsNCj4gPiArCXZvaWQgKndrc3AgPSBOVUxMOw0KPiA+ICsJY2hhciAqZHN0ID0g TlVMTDsNCj4gPiArCWludCBpOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBQYXNzIDAgYXMg ZXN0aW1hdGVkX3NyY19zaXplIHRvIHVzZSB6c3RkIGxldmVsLTMgZGVmYXVsdHMNCj4gPiArCSAq ICh3aW5kb3dMb2c9MTgsIDI1NktCIHdpbmRvdykuIFBhc3NpbmcgdGhlIGZ1bGwgdG90YWxfc2l6 ZSB3b3VsZA0KPiA+ICsJICogY2F1c2UgenN0ZCB0byBpbmZsYXRlIHdpbmRvd0xvZyBwcm9wb3J0 aW9uYWxseSAoZS5nLiB3aW5kb3dMb2c9MjQNCj4gPiArCSAqIGZvciBhIDE5TUIgbG9nKSwgbWFr aW5nIHRoZSB3b3Jrc3BhY2UgdGVucyBvZiBNQi4gIFdpdGggMCwgdGhlDQo+ID4gKwkgKiB3b3Jr c3BhY2Ugc3RheXMgfjEuNU1CLCB3ZWxsIHdpdGhpbiBrbWFsbG9jIGxpbWl0cy4NCj4gPiArCSAq Lw0KPiA+ICsJcGFyYW1zID0genN0ZF9nZXRfcGFyYW1zKDMsIDApOw0KPiA+ICsNCj4gPiArCXdr c3Bfc2l6ZSA9IHpzdGRfY3N0cmVhbV93b3Jrc3BhY2VfYm91bmQoJnBhcmFtcy5jUGFyYW1zKTsN Cj4gPiArCXdrc3AgPSBrdnphbGxvYyh3a3NwX3NpemUsIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYg KCF3a3NwKQ0KPiA+ICsJCWdvdG8gZXJyOw0KPiA+ICsNCj4gPiArCWRzdF9zaXplID0genN0ZF9j b21wcmVzc19ib3VuZCh0b3RhbF9zaXplKTsNCj4gPiArCWRzdCA9IGt2emFsbG9jKGRzdF9zaXpl LCBHRlBfS0VSTkVMKTsNCj4gPiArCWlmICghZHN0KQ0KPiA+ICsJCWdvdG8gZXJyOw0KPiA+ICsN Cj4gPiArCWNzdHJlYW0gPSB6c3RkX2luaXRfY3N0cmVhbSgmcGFyYW1zLCAwLCB3a3NwLCB3a3Nw X3NpemUpOw0KPiA+ICsJaWYgKCFjc3RyZWFtKSB7DQo+ID4gKwkJeGVfZ3RfZXJyKGd0LCAiZmFp bGVkIHRvIGluaXQgenN0ZCBjc3RyZWFtXG4iKTsNCj4gPiArCQlnb3RvIGVycjsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwlvdXRidWYuZHN0ID0gZHN0Ow0KPiA+ICsJb3V0YnVmLnNpemUgPSBkc3Rf c2l6ZTsNCj4gPiArCW91dGJ1Zi5wb3MgPSAwOw0KPiA+ICsNCj4gPiArCXJlbWFpbiA9IHRvdGFs X3NpemU7DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2NodW5rcyAmJiByZW1haW47IGkrKykg ew0KPiA+ICsJCXNpemVfdCBzaXplID0gbWluKGNodW5rX3NpemUsIHJlbWFpbik7DQo+ID4gKwkJ enN0ZF9pbl9idWZmZXIgaW5idWYgPSB7IC5zcmMgPSBjaHVua3NbaV0sIC5zaXplID0gc2l6ZSwg LnBvcyA9IDAgfTsNCj4gPiArDQo+ID4gKwkJd2hpbGUgKGluYnVmLnBvcyA8IGluYnVmLnNpemUp IHsNCj4gDQo+IExMTToNCj4gdW5ib3VuZGVkIGxvb3AgLSB0aGUgU2FzaGlrbyBmaW5kaW5nIGlz IHJlYWwNCj4gIg0KPiBpbmNsdWRlL2xpbnV4L3pzdGQuaDo1MDQgLSAiR3VhcmFudGVlZCB0byBt YWtlIHNvbWUgZm9yd2FyZCBwcm9ncmVzcyBpZiBgaW5wdXRgDQo+IGFuZCBgb3V0cHV0YCBhcmUg bm90IGVtcHR5LiIgT25jZSBvdXRidWYucG9zID09IG91dGJ1Zi5zaXplLCBmb3J3YXJkIHByb2dy ZXNzIGlzDQo+IGV4cGxpY2l0bHkgTk9UIGd1YXJhbnRlZWQgYW5kIHRoaXMgc3BpbnMgZm9yZXZl ci4genN0ZF9jb21wcmVzc19ib3VuZCgpIHNob3VsZA0KPiBwcmV2ZW50IG91dHB1dCBleGhhdXN0 aW9uIGhlcmUgKHNpbmdsZSBmcmFtZSwgbm8gaW50ZXJtZWRpYXRlIGZsdXNoZXMpLCBzbyBpdCBp cw0KPiB1bnJlYWNoYWJsZSBpbiBwcmFjdGljZSAtIGJ1dCBhIGhhcmQgbG9ja3VwIGluIGFuIGVy cm9yLWR1bXAgcGF0aCBpcyBiYWQgZW5vdWdoDQo+IHRoYXQgYSBgaWYgKG91dGJ1Zi5wb3MgPT0g b3V0YnVmLnNpemUpIGdvdG8gZXJyO2AgZ3VhcmQgaXMgd29ydGggdGhlIG9uZSBsaW5lLg0KPiAi DQo+IA0KPiA+ICsJCQlyZXQgPSB6c3RkX2NvbXByZXNzX3N0cmVhbShjc3RyZWFtLCAmb3V0YnVm LCAmaW5idWYpOw0KPiA+ICsJCQlpZiAoWlNURF9pc0Vycm9yKHJldCkpIHsNCj4gPiArCQkJCXhl X2d0X2VycihndCwgInpzdGRfY29tcHJlc3Nfc3RyZWFtIGZhaWxlZDogJXNcbiIsDQo+ID4gKwkJ CQkJICBaU1REX2dldEVycm9yTmFtZShyZXQpKTsNCj4gPiArCQkJCWdvdG8gZXJyOw0KPiA+ICsJ CQl9DQo+ID4gKwkJfQ0KPiA+ICsJCXJlbWFpbiAtPSBzaXplOw0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCWRvIHsNCj4gPiArCQlyZXQgPSB6c3RkX2VuZF9zdHJlYW0oY3N0cmVhbSwgJm91dGJ1Zik7 DQo+ID4gKwkJaWYgKFpTVERfaXNFcnJvcihyZXQpKSB7DQo+ID4gKwkJCXhlX2d0X2VycihndCwg InpzdGRfZW5kX3N0cmVhbSBmYWlsZWQ6ICVzXG4iLA0KPiA+ICsJCQkJICBaU1REX2dldEVycm9y TmFtZShyZXQpKTsNCj4gPiArCQkJZ290byBlcnI7DQo+ID4gKwkJfQ0KPiA+ICsJfSB3aGlsZSAo cmV0ID4gMCAmJiBvdXRidWYucG9zIDwgb3V0YnVmLnNpemUpOw0KPiANCj4gTExNOg0KPiAiDQo+ IGluY2x1ZGUvbGludXgvenN0ZC5oOjUzNSAtICJ6c3RkX2VuZF9zdHJlYW0oKSBtdXN0IGJlIGNh bGxlZCB1bnRpbCBpdCByZXR1cm5zDQo+IDAsIG1lYW5pbmcgYWxsIHRoZSBkYXRhIGhhcyBiZWVu IGZsdXNoZWQgYW5kIHRoZSBmcmFtZSBlcGlsb2d1ZSBoYXMgYmVlbg0KPiB3cml0dGVuLiIgVGhl IG91dGJ1Zi5wb3MgPCBvdXRidWYuc2l6ZSB0ZXJtIGxldHMgdGhlIGxvb3AgZXhpdCB3aXRoIHJl dCA+IDAsDQo+IGVtaXR0aW5nIGEgZnJhbWUgd2l0aCBubyBlcGlsb2d1ZSwgYW5kIHRoZSBjb2Rl IHRoZW4gcHJpbnRzICJBbGdvOiBaU1REIiBhcyBpZg0KPiBpdCBzdWNjZWVkZWQuIEVpdGhlciBs b29wIHVudGlsIDAsIG9yIHRyZWF0ICJvdXRwdXQgZnVsbCBiZWZvcmUgMCIgYXMgYW4gZXJyb3Iu DQo+ICINCj4gDQo+ID4gKw0KPiA+ICsJZHJtX3ByaW50ZihwLCAiJXMubGVuZ3RoOiAweCV6eCAt PiAweCV6eCBBbGdvOiBaU1REXG4iLA0KPiA+ICsJCSAgIGxlbmd0aF9sYWJlbCwgdG90YWxfc2l6 ZSwgb3V0YnVmLnBvcyk7DQo+ID4gKwl4ZV9wcmludF9ibG9iX2FzY2lpODUocCwgZGF0YV9sYWJl bCwgJ1xuJywgZHN0LCAwLA0KPiA+ICsJCQkgICAgICBESVZfUk9VTkRfVVAob3V0YnVmLnBvcywg c2l6ZW9mKHUzMikpICogc2l6ZW9mKHUzMikpOw0KPiANCj4gTExNOg0KPiAiRElWX1JPVU5EX1VQ KG91dGJ1Zi5wb3MsIHNpemVvZih1MzIpKSAqIHNpemVvZih1MzIpIGNhbiByZWFkIHVwIHRvIDMg Ynl0ZXMgcGFzdA0KPiBkc3QgaWYgb3V0YnVmLnBvcyA9PSBkc3Rfc2l6ZSBhbmQgZHN0X3NpemUg aXMgbm90IDQtYWxpZ25lZC4gSW4gcHJhY3RpY2UgaXQgaXMNCj4gdW5yZWFjaGFibGU6IHNuYXBz aG90LT5zaXplIGlzIHhlX2JvX3NpemUoKSAocGFnZS1hbGlnbmVkKSBhbmQgY3RiX3NpemUgaXMg YSBzdW0NCj4gb2YgYm8gc2l6ZXMsIHNvIGNvbXByZXNzX2JvdW5kKHNpemUpID0gc2l6ZSArIHNp emUvMjU2IHN0YXlzIDQtYWxpZ25lZC4gQnV0DQo+IGRvbid0IHJlbHkgb24gdGhhdCAtIGt2emFs bG9jKHJvdW5kX3VwKGRzdF9zaXplLCBzaXplb2YodTMyKSkpIHNldHRsZXMgaXQNCj4gcGVybWFu ZW50bHkuIg0KPiANCj4gPiArCWdvdG8gb3V0Ow0KPiA+ICsNCj4gPiArZXJyOg0KPiA+ICsJZHJt X3ByaW50ZihwLCAiJXMubGVuZ3RoOiAweCV6eCBBbGdvOiBFUlJPUiAoY29tcHJlc3Npb24gZmFp bGVkKVxuIiwNCj4gPiArCQkgICBsZW5ndGhfbGFiZWwsIHRvdGFsX3NpemUpOw0KPiANCj4gX194 ZV9kZXZjb3JlZHVtcF9yZWFkKCkgaXMgY2FsbGVkIHR3aWNlLCBvbmNlIHRvIGdldCB0aGUgc2l6 ZSBhbmQgdGhlIHNlY29uZCB0aW1lDQo+IHRvIHByaW50IHRoZSBvdXRwdXQgaW4gYSBnaXZlbiBi dWZmZXIuDQo+IElmIHRoZSBjb21wcmVzc2lvbiBmYWlscyBpbiB0aGUgZmlyc3QgcGFzcywgdGhl IHNpemUgd2lsbCBiZSBkaWZmZXJlbnQgYW5kIG5vdA0KPiBlbm91Z2guDQo+IA0KPiBBbmQgd29y c2UgcGFydCBpdCBzZWVtcyB0aGF0IGluIHRoaXMgY2FzZSBvZiBmYWlsdXJlIHdlIG5vdyBsb3Nl IHRoZSBndWMgbG9nLg0KPiBTbyBpbiB0aGUgYWN0dWFsL3JlYWwgc2Vjb25kIHBhc3Mgd2Ugd2ls bCBub3QgZ2V0IHRoZSByaWdodCBsb2cgYW55d2F5Lg0KPiANCj4gVGhlIEFJIHN1Z2dlc3Rpb24g aXMgdG8gY2FjaGUgdGhlIGNvbXByZXNzZWQgZ3VjIGxvZy4gQnV0IG9mIGNvdXJzZSwgaWYgd2UN Cj4gY2FjaGUgd2UgbmVlZCB0byBiZSBjYXJlZnVsIHRvIGVuc3VyZSBpdCBpcyBhY2N1cmF0ZS92 YWxpZC4NCj4gDQo+ID4gK291dDoNCj4gPiArCWt2ZnJlZShkc3QpOw0KPiA+ICsJa3ZmcmVlKHdr c3ApOw0KPiA+ICt9DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiAgLyoqDQo+ID4gLSAqIHhlX2d1 Y19sb2dfc25hcHNob3RfcHJpbnQgLSBkdW1wIGEgcHJldmlvdXNseSBzYXZlZCBjb3B5IG9mIHRo ZSBHdUMgbG9nIHRvIHNvbWUgdXNlZnVsIGxvY2F0aW9uDQo+ID4gLSAqIEBzbmFwc2hvdDogYSBz bmFwc2hvdCBvZiB0aGUgR3VDIGxvZw0KPiA+IC0gKiBAcDogdGhlIHByaW50ZXIgb2JqZWN0IHRv IG91dHB1dCB0bw0KPiA+ICsgKiB4ZV9ndWNfcHJpbnRfYmxvYiAtIFByaW50IGJpbmFyeSBkYXRh IChjb21wcmVzc2VkIG9yIHVuY29tcHJlc3NlZCkgYXMgYXNjaWk4NQ0KPiA+ICsgKiBAZ3Q6IEdU IHN0cnVjdHVyZSBmb3IgZXJyb3IgcmVwb3J0aW5nDQo+ID4gKyAqIEBwOiBkcm1fcHJpbnRlciBm b3Igb3V0cHV0DQo+ID4gKyAqIEBsZW5ndGhfbGFiZWw6IGxhYmVsIHByZWZpeCBmb3IgdGhlIGxl bmd0aC9tZXRhZGF0YSBsaW5lIChlLmcuICJbTE9HXSIgb3IgIltDVEJdIikNCj4gPiArICogQGRh dGFfbGFiZWw6IGxhYmVsIGZvciB0aGUgYXNjaWk4NSBibG9iIChlLmcuICJbTE9HXS5kYXRhIiBv ciAiW0NUQl0uZGF0YSIpDQo+ID4gKyAqIEBjaHVua3M6IGFycmF5IG9mIHBvaW50ZXJzIHRvIHNv dXJjZSBkYXRhIGNodW5rcw0KPiA+ICsgKiBAbnVtX2NodW5rczogbnVtYmVyIG9mIGVsZW1lbnRz IGluIEBjaHVua3MNCj4gPiArICogQGNodW5rX3NpemU6IG5vbWluYWwgc2l6ZSBvZiBlYWNoIGNo dW5rOyB0aGUgbGFzdCBjaHVuayBtYXkgaG9sZCBmZXdlciB2YWxpZCBieXRlcw0KPiA+ICsgKiBA dG90YWxfc2l6ZTogdG90YWwgdW5jb21wcmVzc2VkIGJ5dGUgY291bnQgYWNyb3NzIGFsbCBjaHVu a3MNCj4gPiArICoNCj4gPiArICogSWYgQ09ORklHX0RSTV9YRV9DT01QUkVTU19EVU1QIGlzIGVu YWJsZWQsIGNvbXByZXNzZXMgQHRvdGFsX3NpemUgYnl0ZXMgdXNpbmcNCj4gPiArICogenN0ZCBs ZXZlbC0zIHN0cmVhbWluZyBjb21wcmVzc2lvbiBhbmQgcHJpbnRzIHRoZSByZXN1bHQgdmlhIEBw IHVzaW5nIGFzY2lpODUNCj4gPiArICogZW5jb2RpbmcuIE90aGVyd2lzZSwgZGlyZWN0bHkgcHJp bnRzIHRoZSB1bmNvbXByZXNzZWQgZGF0YS4NCj4gPiArICogT24gZmFpbHVyZSB0aGUgZnVuY3Rp b24gcmV0dXJucyB3aXRob3V0IHByaW50aW5nIHRoZSBkYXRhIGJsb2IuDQo+ID4gICAqLw0KPiA+ IC12b2lkIHhlX2d1Y19sb2dfc25hcHNob3RfcHJpbnQoc3RydWN0IHhlX2d1Y19sb2dfc25hcHNo b3QgKnNuYXBzaG90LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApDQo+ID4gK3ZvaWQgeGVfZ3VjX3By aW50X2Jsb2Ioc3RydWN0IHhlX2d0ICpndCBfX21heWJlX3VudXNlZCwgc3RydWN0IGRybV9wcmlu dGVyICpwLA0KPiA+ICsJCSAgICAgICBjb25zdCBjaGFyICpsZW5ndGhfbGFiZWwsIGNvbnN0IGNo YXIgKmRhdGFfbGFiZWwsDQo+ID4gKwkJICAgICAgIHZvaWQgKipjaHVua3MsIGludCBudW1fY2h1 bmtzLA0KPiA+ICsJCSAgICAgICBzaXplX3QgY2h1bmtfc2l6ZSwgc2l6ZV90IHRvdGFsX3NpemUp DQo+ID4gIHsNCj4gPiArI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9YRV9DT01QUkVTU19EVU1Q KQ0KPiA+ICsJeGVfZ3VjX3ByaW50X2Jsb2JfY29tcHJlc3NlZChndCwgcCwgbGVuZ3RoX2xhYmVs LCBkYXRhX2xhYmVsLA0KPiA+ICsJCQkJICAgICBjaHVua3MsIG51bV9jaHVua3MsIGNodW5rX3Np emUsIHRvdGFsX3NpemUpOw0KPiA+ICsjZWxzZQ0KPiA+ICAJc2l6ZV90IHJlbWFpbjsNCj4gPiAg CWludCBpOw0KPiA+ICANCj4gPiArCWRybV9wcmludGYocCwgIiVzLmxlbmd0aDogMHglenggQWxn bzogUkFXXG4iLCBsZW5ndGhfbGFiZWwsIHRvdGFsX3NpemUpOw0KPiA+ICsNCj4gPiArCS8qDQo+ ID4gKwkgKiBQcmludCBlYWNoIGNodW5rIGRpcmVjdGx5IHdpdGhvdXQgbWVyZ2luZyBpbnRvIGEg c2luZ2xlIGJ1ZmZlci4NCj4gPiArCSAqIHhlX3ByaW50X2Jsb2JfYXNjaWk4NSgpIHN1cHBvcnRz IG11bHRpcGxlIGNhbGxzIC0gdXNlIHN1ZmZpeD0wDQo+ID4gKwkgKiBmb3IgYWxsIGJ1dCB0aGUg bGFzdCBjaHVuayB0byBvbWl0IHRoZSBuZXdsaW5lIGJldHdlZW4gY2h1bmtzLg0KPiA+ICsJICov DQo+ID4gKwlyZW1haW4gPSB0b3RhbF9zaXplOw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IG51bV9j aHVua3MgJiYgcmVtYWluOyBpKyspIHsNCj4gPiArCQlzaXplX3Qgc2l6ZSA9IG1pbihjaHVua19z aXplLCByZW1haW4pOw0KPiA+ICsJCWNvbnN0IGNoYXIgKnByZWZpeCA9IGkgPyBOVUxMIDogZGF0 YV9sYWJlbDsNCj4gPiArCQkvKiBBZGQgc3VmZml4IG9ubHkgb24gdGhlIGxhc3QgY2h1bmsgKi8N Cj4gPiArCQljaGFyIHN1ZmZpeCA9IChyZW1haW4gPT0gc2l6ZSkgPyAnXG4nIDogMDsNCj4gPiAr DQo+ID4gKwkJeGVfcHJpbnRfYmxvYl9hc2NpaTg1KHAsIHByZWZpeCwgc3VmZml4LCBjaHVua3Nb aV0sIDAsDQo+ID4gKwkJCQkgICAgICBESVZfUk9VTkRfVVAoc2l6ZSwgc2l6ZW9mKHUzMikpICog c2l6ZW9mKHUzMikpOw0KPiA+ICsJCXJlbWFpbiAtPSBzaXplOw0KPiA+ICsJfQ0KPiA+ICsjZW5k aWYNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhlX2d1Y19sb2dfc25hcHNob3Rf cHJpbnQgLSBkdW1wIGEgcHJldmlvdXNseSBzYXZlZCBjb3B5IG9mIHRoZSBHdUMgbG9nIHRvIHNv bWUgdXNlZnVsIGxvY2F0aW9uDQo+ID4gKyAqIEBzbmFwc2hvdDogYSBzbmFwc2hvdCBvZiB0aGUg R3VDIGxvZw0KPiA+ICsgKiBAcDogdGhlIHByaW50ZXIgb2JqZWN0IHRvIG91dHB1dCB0bw0KPiA+ ICsgKiBAZ3Q6IEdUIHN0cnVjdHVyZSBvZiB0aGUgR3VDIGxvZw0KPiA+ICsgKi8NCj4gPiArdm9p ZCB4ZV9ndWNfbG9nX3NuYXBzaG90X3ByaW50KHN0cnVjdCB4ZV9ndWNfbG9nX3NuYXBzaG90ICpz bmFwc2hvdCwgc3RydWN0IGRybV9wcmludGVyICpwLA0KPiA+ICsJCQkgICAgICAgc3RydWN0IHhl X2d0ICpndCkNCj4gPiArew0KPiA+ICAJaWYgKCFzbmFwc2hvdCkgew0KPiA+ICAJCWRybV9wcmlu dGYocCwgIkd1QyBsb2cgc25hcHNob3Qgbm90IGFsbG9jYXRlZCFcbiIpOw0KPiA+ICAJCXJldHVy bjsNCj4gPiBAQCAtMjQ4LDE2ICszODMsOSBAQCB2b2lkIHhlX2d1Y19sb2dfc25hcHNob3RfcHJp bnQoc3RydWN0IHhlX2d1Y19sb2dfc25hcHNob3QgKnNuYXBzaG90LCBzdHJ1Y3QgZHJtXw0KPiA+ ICAJZHJtX3ByaW50ZihwLCAiR3VDIHRpbWVzdGFtcDogMHglMDhsbFggWyVsbHVdXG4iLCBzbmFw c2hvdC0+c3RhbXAsIHNuYXBzaG90LT5zdGFtcCk7DQo+ID4gIAlkcm1fcHJpbnRmKHAsICJMb2cg bGV2ZWw6ICV1XG4iLCBzbmFwc2hvdC0+bGV2ZWwpOw0KPiA+ICANCj4gPiAtCWRybV9wcmludGYo cCwgIltMT0ddLmxlbmd0aDogMHglenhcbiIsIHNuYXBzaG90LT5zaXplKTsNCj4gPiAtCXJlbWFp biA9IHNuYXBzaG90LT5zaXplOw0KPiA+IC0JZm9yIChpID0gMDsgaSA8IHNuYXBzaG90LT5udW1f Y2h1bmtzOyBpKyspIHsNCj4gPiAtCQlzaXplX3Qgc2l6ZSA9IG1pbihHVUNfTE9HX0NIVU5LX1NJ WkUsIHJlbWFpbik7DQo+ID4gLQkJY29uc3QgY2hhciAqcHJlZml4ID0gaSA/IE5VTEwgOiAiW0xP R10uZGF0YSI7DQo+ID4gLQkJY2hhciBzdWZmaXggPSBpID09IHNuYXBzaG90LT5udW1fY2h1bmtz IC0gMSA/ICdcbicgOiAwOw0KPiA+IC0NCj4gPiAtCQl4ZV9wcmludF9ibG9iX2FzY2lpODUocCwg cHJlZml4LCBzdWZmaXgsIHNuYXBzaG90LT5jb3B5W2ldLCAwLCBzaXplKTsNCj4gPiAtCQlyZW1h aW4gLT0gc2l6ZTsNCj4gPiAtCX0NCj4gPiArCXhlX2d1Y19wcmludF9ibG9iKGd0LCBwLCAiW0xP R10iLCAiW0xPR10uZGF0YSIsDQo+ID4gKwkJCSAgc25hcHNob3QtPmNvcHksIHNuYXBzaG90LT5u dW1fY2h1bmtzLA0KPiA+ICsJCQkgIEdVQ19MT0dfQ0hVTktfU0laRSwgc25hcHNob3QtPnNpemUp Ow0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMgaW5saW5lIHZvaWQgbGZkX291dHB1dF9iaW5h cnkoc3RydWN0IGRybV9wcmludGVyICpwLCBjaGFyICpidWYsIGludCBidWZfc2l6ZSkNCj4gPiBA QCAtNTk4LDEyICs3MjYsMTMgQEAgdm9pZCB4ZV9ndWNfbG9nX3ByaW50X2RtZXNnKHN0cnVjdCB4 ZV9ndWNfbG9nICpsb2cpDQo+ID4gIHZvaWQgeGVfZ3VjX2xvZ19wcmludChzdHJ1Y3QgeGVfZ3Vj X2xvZyAqbG9nLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCB4 ZV9ndWNfbG9nX3NuYXBzaG90ICpzbmFwc2hvdDsNCj4gPiArCXN0cnVjdCB4ZV9ndCAqZ3QgPSBs b2dfdG9fZ3QobG9nKTsNCj4gPiAgDQo+ID4gIAlkcm1fcHJpbnRmKHAsICIqKioqIEd1QyBMb2cg KioqKlxuIik7DQo+ID4gIA0KPiA+ICAJc25hcHNob3QgPSB4ZV9ndWNfbG9nX3NuYXBzaG90X2Nh cHR1cmUobG9nLCBmYWxzZSk7DQo+ID4gLQlkcm1fcHJpbnRmKHAsICJDUyByZWZlcmVuY2UgY2xv Y2s6ICV1XG4iLCBsb2dfdG9fZ3QobG9nKS0+aW5mby5yZWZlcmVuY2VfY2xvY2spOw0KPiA+IC0J eGVfZ3VjX2xvZ19zbmFwc2hvdF9wcmludChzbmFwc2hvdCwgcCk7DQo+ID4gKwlkcm1fcHJpbnRm KHAsICJDUyByZWZlcmVuY2UgY2xvY2s6ICV1XG4iLCBndC0+aW5mby5yZWZlcmVuY2VfY2xvY2sp Ow0KPiA+ICsJeGVfZ3VjX2xvZ19zbmFwc2hvdF9wcmludChzbmFwc2hvdCwgcCwgZ3QpOw0KPiA+ ICAJeGVfZ3VjX2xvZ19zbmFwc2hvdF9mcmVlKHNuYXBzaG90KTsNCj4gPiAgfQ0KPiA+ICANCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19sb2cuaCBiL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9ndWNfbG9nLmgNCj4gPiBpbmRleCA0NjQ5YTI2MDc1NWUuLjNlOTc2NDdl ZThiNSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2xvZy5oDQo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19sb2cuaA0KPiA+IEBAIC0xMSw2ICsx MSw3IEBADQo+ID4gIA0KPiA+ICBzdHJ1Y3QgZHJtX3ByaW50ZXI7DQo+ID4gIHN0cnVjdCB4ZV9k ZXZpY2U7DQo+ID4gK3N0cnVjdCB4ZV9ndDsNCj4gPiAgDQo+ID4gICNpZiBJU19FTkFCTEVEKENP TkZJR19EUk1fWEVfREVCVUdfR1VDKQ0KPiA+ICAjZGVmaW5lIFhFX0dVQ19MT0dfRVZFTlRfREFU QV9CVUZGRVJfU0laRQlTWl8xNk0NCj4gPiBAQCAtNTksNyArNjAsMTMgQEAgdm9pZCB4ZV9ndWNf bG9nX3ByaW50KHN0cnVjdCB4ZV9ndWNfbG9nICpsb2csIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7 DQo+ID4gIHZvaWQgeGVfZ3VjX2xvZ19wcmludF9sZmQoc3RydWN0IHhlX2d1Y19sb2cgKmxvZywg c3RydWN0IGRybV9wcmludGVyICpwKTsNCj4gPiAgdm9pZCB4ZV9ndWNfbG9nX3ByaW50X2RtZXNn KHN0cnVjdCB4ZV9ndWNfbG9nICpsb2cpOw0KPiA+ICBzdHJ1Y3QgeGVfZ3VjX2xvZ19zbmFwc2hv dCAqeGVfZ3VjX2xvZ19zbmFwc2hvdF9jYXB0dXJlKHN0cnVjdCB4ZV9ndWNfbG9nICpsb2csIGJv b2wgYXRvbWljKTsNCj4gPiAtdm9pZCB4ZV9ndWNfbG9nX3NuYXBzaG90X3ByaW50KHN0cnVjdCB4 ZV9ndWNfbG9nX3NuYXBzaG90ICpzbmFwc2hvdCwgc3RydWN0IGRybV9wcmludGVyICpwKTsNCj4g PiArDQo+ID4gK3ZvaWQgeGVfZ3VjX3ByaW50X2Jsb2Ioc3RydWN0IHhlX2d0ICpndCwgc3RydWN0 IGRybV9wcmludGVyICpwLCBjb25zdCBjaGFyICpsZW5ndGhfbGFiZWwsDQo+ID4gKwkJICAgICAg IGNvbnN0IGNoYXIgKmRhdGFfbGFiZWwsIHZvaWQgKipjaHVua3MsIGludCBudW1fY2h1bmtzLA0K PiA+ICsJCSAgICAgICBzaXplX3QgY2h1bmtfc2l6ZSwgc2l6ZV90IHRvdGFsX3NpemUpOw0KPiA+ ICsNCj4gPiArdm9pZCB4ZV9ndWNfbG9nX3NuYXBzaG90X3ByaW50KHN0cnVjdCB4ZV9ndWNfbG9n X3NuYXBzaG90ICpzbmFwc2hvdCwgc3RydWN0IGRybV9wcmludGVyICpwLA0KPiA+ICsJCQkgICAg ICAgc3RydWN0IHhlX2d0ICpndCk7DQo+ID4gIHZvaWQgeGVfZ3VjX2xvZ19zbmFwc2hvdF9mcmVl KHN0cnVjdCB4ZV9ndWNfbG9nX3NuYXBzaG90ICpzbmFwc2hvdCk7DQo+ID4gIA0KPiA+ICBzdGF0 aWMgaW5saW5lIHUzMg0KPiA+IC0tIA0KPiA+IDIuNDMuMA0KPiA+IA0KDQo=