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 X-Spam-Level: X-Spam-Status: No, score=-15.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 45E71C433DB for ; Tue, 19 Jan 2021 15:39:51 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id C432123133 for ; Tue, 19 Jan 2021 15:39:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C432123133 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6863989CC4; Tue, 19 Jan 2021 15:39:50 +0000 (UTC) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2045.outbound.protection.outlook.com [40.107.237.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id AB59E89CC4; Tue, 19 Jan 2021 15:39:49 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LSu2krQJ22EN7bsQs3PpojHzCkG4C4s4uPqqvIfjj1HSjGVWQjcp7lr6BUZ/FQ+3lLIQ5dc5ECCm6ALLhKTJtnA5ZyVve+iZQjxf/lr3523XLNuEZy9csu3d95te2OCIkfWhwgQQdA9uqPU1Y0xDxh/TVvrfLKY1oxeMufLUd05UsGw8kLWwLe4xOCgD+9VhYJ4goRkRTQjiTrYYEmgHUujFV8XliCnzA/+XCDRH09/XqLfOl0DxBoCWVetnvmrlhxh39FB6MLpkN98/w0bwMrh26TUFOjMuW/+nSGkDPBlS1ltDtIjAT+wgMk1hGVn8kqpdTbbh27/Ioz6BcmPFvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OVCHZNezlzvolG2mpURaNyiqx6cMqM51c2w84zS7yxc=; b=dSLYK1iyMW3AI9ogywSzSI5Xxhpg24bD+vXfZtKnkSizArqeGkkxdftfMHBIzcgCQ6U2VRm3YGpX+IXYq8LatNiQ1jaCQh+lQKU3biGx99jqTHFDSpmAu5U+qKI/7DujZh3ewVRIi5HoANOwO8+KVbzhW8Lf9S8HiWiFdrUTaqFyGOTLFH5cXMAjVUfCyUwtsMGT2v7XWy5st3sijEjPwwZo4bTo5QYqr9WVTktbOa6cvvsP3rWWIc/z+7BWIPncu7wMJwugnrgUpPPfnyOXLtVsvB65SdKeWhWb5NIzhkWmYy6ofS9Siz1UqxdnX/G4hTejw1NKLISKnBPCd7heBA== 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=OVCHZNezlzvolG2mpURaNyiqx6cMqM51c2w84zS7yxc=; b=EjZH6V2MtOl7OgSXMpJv+nGUZQgiqH+aFMVMhyJhCfU9imgYdj1dr9/x9ta/J2dvqz4I1m0Me604/XAJNi2fcHqzZjLBYbvtriN5ZZjdSeCVNyiAJ5uM/lXzHrj181zwDdP84uWRho/NXZI603JbZmdp8Cc9sHfTsPW7ZM3AIVs= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Received: from BY5PR12MB3764.namprd12.prod.outlook.com (2603:10b6:a03:1ac::17) by BY5PR12MB4180.namprd12.prod.outlook.com (2603:10b6:a03:213::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3763.10; Tue, 19 Jan 2021 15:39:46 +0000 Received: from BY5PR12MB3764.namprd12.prod.outlook.com ([fe80::5927:a80d:11c4:529a]) by BY5PR12MB3764.namprd12.prod.outlook.com ([fe80::5927:a80d:11c4:529a%7]) with mapi id 15.20.3763.014; Tue, 19 Jan 2021 15:39:46 +0000 Subject: Re: [PATCH v4 11/14] drm/amdgpu: Guard against write accesses after device removal To: Andrey Grodzovsky , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@ffwll.ch, robh@kernel.org, l.stach@pengutronix.de, yuq825@gmail.com, eric@anholt.net References: <1611003683-3534-1-git-send-email-andrey.grodzovsky@amd.com> <1611003683-3534-12-git-send-email-andrey.grodzovsky@amd.com> <35ecd67f-620f-df50-3e03-d24dc12452d6@gmail.com> <8925db97-bf81-7e5e-527d-f654713b400d@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: Date: Tue, 19 Jan 2021 16:39:38 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 In-Reply-To: <8925db97-bf81-7e5e-527d-f654713b400d@amd.com> Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:be8a:bd56:1f94:86e7] X-ClientProxiedBy: AM0PR05CA0086.eurprd05.prod.outlook.com (2603:10a6:208:136::26) To BY5PR12MB3764.namprd12.prod.outlook.com (2603:10b6:a03:1ac::17) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:be8a:bd56:1f94:86e7] (2a02:908:1252:fb60:be8a:bd56:1f94:86e7) by AM0PR05CA0086.eurprd05.prod.outlook.com (2603:10a6:208:136::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3763.10 via Frontend Transport; Tue, 19 Jan 2021 15:39:42 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b014ce4e-977d-4b39-ead0-08d8bc907292 X-MS-TrafficTypeDiagnostic: BY5PR12MB4180: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7Ivtn2Pkwkyl8Z+yZfNvnbocVXa9UUMvQjfuvHX9//7Ft0KeIc+aVRO53rN4MaNM/AWRqkhAlDlHbMrpNbJb99uTGRTSBHVmB6nvA6BpdGI12CLkE8bjNLmIJ+PNwHeH+C7mZM5DeTbQRfiHaTS9EJVfvbEqrLxrtcjRp3Cc187DdJpgP+i1ekP0UPeyDtJGXQ+VFiJ2PYdiWIRLtkCjkF6OcxBDbMycry1hrdc5a3U5cZDKGRoVVei6otwH8ocE8WqnjSN2XNQDKiJGo7QAshB7W5PWPrmZnKHfY3wxsDTUq2hn6Xdk1Dn7x3yGqyQF2/BYrfxOvmmqBGhOHZnbNol8ZnLbi6D6XJQnm1IM7Aqw2ycK16gHWPdB3ZN41d9607X41QSbrBNTd2nurIWaQlR7DsteWBPXl1AYqYglQrLgDgCrBWVAe0q2yY/BeaJUDXiWkuWRdmdUyEh37CXsosWxenLgX6RskqL8QBkPZb2RYXPZzhFMULUYagOg6yD3F2WOualJMDHGXt7L35CcT+uEOeFKzUwPP3wVwTaBDNBFBtBXnEzmz3DupCJoSPSH X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR12MB3764.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(396003)(136003)(346002)(366004)(376002)(966005)(6666004)(53546011)(8676002)(83380400001)(52116002)(316002)(66556008)(86362001)(5660300002)(36756003)(31686004)(8936002)(66476007)(186003)(4326008)(66574015)(16526019)(478600001)(66946007)(2906002)(6486002)(2616005)(31696002)(30864003)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UGFqZStIWURXV2EzZ2NYV2o1aDcwUnBkSmIva2RQbUhJdi9jdDJXaHR1ZnNw?= =?utf-8?B?ejNiRlVKZDErVmNBVHRtUHc1THVOZHYzTFVlUXBuaFlDOUQvc1RkYVA0SWx5?= =?utf-8?B?MFFwd2wxY1gzTmc5Y2FoWWV5em1ZWFVLY1BSOG16dUVESlNieklXNkJTZnla?= =?utf-8?B?L3VtMG5wVHJnZjJJVEx5KzhJSFkyQVFUdDJ2S2VYVE5oRFhjeFh4SVd6NFU3?= =?utf-8?B?VlVUT0lmMmYxemhGVDkzMmdwVGVtcWc0Z2JmNXEvWWxQRTVXNEtxeThBMG91?= =?utf-8?B?UWJjVDFXNWxwM3R2Mjh4NUVDenZKOExNSmlXSXFmcW8yeEVEcEROV3pCYWtv?= =?utf-8?B?eFpPbkNmbHpaZ09YRE1DazF4RElXbW9SeFFEazJ3ODFkeFhiZENqckZGOGxv?= =?utf-8?B?Y1R6d0VYd0pMNXRsakZXN0hmMnNJdWVLdnAvQzhBem1SUnR2amtCNzYyU2x6?= =?utf-8?B?WEt3dDJFVERxbFp1bVJUWGprM2g1U2cxWlNwRFEwNUQ1cFNiL3NXQlpnVzk0?= =?utf-8?B?UlQrMXNyVWU5TUFXamxtQVlrNXJwRFVIeFFsSjdkTHZMRTIrd3JzeWNFMENk?= =?utf-8?B?NTUxd1NxSUhRVVkyT3A4M3dBQnl3RU9seDBDclczMTl4NEZiM005cDNrVnZx?= =?utf-8?B?RXZsbVV6ZjAzMzJQelpnNFV4UnpBZmFpKzZkL0dyRm9oMzlieWFrbnlaMXlo?= =?utf-8?B?RjFFSHhKd0dOTG1adzdUK1dPMFo2Y0dYdlgwbFlOenBDY2JGaEhBbmYwcEhj?= =?utf-8?B?dFVGbGFGZmw0RHBlSHpFd1VkN29NVXZOUTVMQlROT3R3UTNnRUIvZElFVGo1?= =?utf-8?B?YUx2VGZTc3JFM292ejV2TUV3UjltcSs5UXhYSHZQSzZMbFRkdC9lcTNpaWx4?= =?utf-8?B?S0dRemtEcHpaZm9MTlp3MDAxU01CWFk4eFcyb2xBajl6Z05qekRhSnRwMkFy?= =?utf-8?B?Qk5adnozSko0WnF0b0F4Nzh0SW9ka0JvdjBNcC9aQjBhbzl0R21aalJUalRr?= =?utf-8?B?a0VFKzJBakxyeUcvTWdCOGJ2bW9SSjU1STlJa0hCb3QrSFNHMlFUVllveXBJ?= =?utf-8?B?elFuYnVNdGRSdmRhdGkzUGdvUUpTYUxsYWhRUWVqaGpDT2dJTHNqVjFMSVJ1?= =?utf-8?B?cno4MFN0bTlOdkZVOUJHb0lDRjBWT0NkM0pFS21idlloNVdsYzdDVVQ3MElp?= =?utf-8?B?cCt4NDE2bVpkdURjUHdjSEdiWkRoNEpmcVlvRGZiUjg0bmZoRHNrUW9RaDFz?= =?utf-8?B?RjFJL1VGUkg2NCtmYjNMczkyTisya2gzNjVOQnhTTWkwRGRlcGlxMEFxQVZ2?= =?utf-8?B?Tmlrb29VSHRaNVhxOGRTNzVOb0lEQjBtSnhJaFhmVDBLaU12SDZyV1E5d2ps?= =?utf-8?B?VHpnK1dsMC9zaWI3dkdGUFVpZUpIaWR5RnhmbGNqUXhDVEFpVDg5bURGa3dy?= =?utf-8?Q?SUUA08hH?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: b014ce4e-977d-4b39-ead0-08d8bc907292 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB3764.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jan 2021 15:39:46.0356 (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: bsJRaPKqYWyPyl/EIkVefjsBBYhT/0y/Nww45jjCxq7dCv5ShDAxYLfjLwvEH9fA X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4180 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexander.Deucher@amd.com, gregkh@linuxfoundation.org, ppaalanen@gmail.com, Harry.Wentland@amd.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" VGhlIGlzIGFsc28gdGhlIHBvc3NpYmlsaXR5IHRvIGhhdmUgdGhlIGRybV9kZXZfZW50ZXIvZXhp dCBtdWNoIG1vcmUgCmhpZ2ggbGV2ZWwuCgpFLmcuIHdlIHNob3VsZCBpdCBoYXZlIGFueXdheSBv biBldmVyeSBJT0NUTCBhbmQgd2hhdCByZW1haW5zIGFyZSB3b3JrIAppdGVtcywgc2NoZWR1bGVy IHRocmVhZHMgYW5kIGludGVycnVwdHMuCgpDaHJpc3RpYW4uCgpBbSAxOS4wMS4yMSB1bSAxNjoz NSBzY2hyaWViIEFuZHJleSBHcm9kem92c2t5Ogo+IFRoZXJlIGlzIHJlYWxseSBubyBvdGhlciB3 YXkgYWNjb3JkaW5nIHRvIHRoaXMgYXJ0aWNsZSAKPiBodHRwczovL2x3bi5uZXQvQXJ0aWNsZXMv NzY3ODg1Lwo+Cj4gIkEgcGVyZmVjdCBzb2x1dGlvbiBzZWVtcyBuZWFybHkgaW1wb3NzaWJsZSB0 aG91Z2g7IHdlIGNhbm5vdCBhY3F1aXJlIAo+IGEgbXV0ZXggb24gdGhlIHVzZXIKPiB0byBwcmV2 ZW50IHRoZW0gZnJvbSB5YW5raW5nIGEgZGV2aWNlIGFuZCB3ZSBjYW5ub3QgY2hlY2sgZm9yIGEg Cj4gcHJlc2VuY2UgY2hhbmdlIGFmdGVyIGV2ZXJ5Cj4gZGV2aWNlIGFjY2VzcyBmb3IgcGVyZm9y bWFuY2UgcmVhc29ucy4gIgo+Cj4gQnV0IEkgYXNzdW1lZCBzcmN1X3JlYWRfbG9jayBzaG91bGQg YmUgcHJldHR5IHNlYW1sZXNzIHBlcmZvcm1hbmNlIAo+IHdpc2UsIG5vID8KPiBUaGUgb3RoZXIg c29sdXRpb24gd291bGQgYmUgYXMgSSBzdWdnZXN0ZWQgdG8ga2VlcCBhbGwgdGhlIGRldmljZSBJ TyAKPiByYW5nZXMgcmVzZXJ2ZWQgYW5kIHN5c3RlbQo+IG1lbW9yeSBwYWdlcyB1bmZyZWVkIHVu dGlsIHRoZSBkZXZpY2UgaXMgZmluYWxpemVkIGluIHRoZSBkcml2ZXIgYnV0IAo+IERhbmllbCBz YWlkIHRoaXMgd291bGQgdXBzZXQgdGhlIFBDSSBsYXllciAodGhlIE1NSU8gcmFuZ2VzIAo+IHJl c2VydmF0aW9uIHBhcnQpLgo+Cj4gQW5kcmV5Cj4KPgo+Cj4KPiBPbiAxLzE5LzIxIDM6NTUgQU0s IENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+IEFtIDE4LjAxLjIxIHVtIDIyOjAxIHNjaHJpZWIg QW5kcmV5IEdyb2R6b3Zza3k6Cj4+PiBUaGlzIHNob3VsZCBwcmV2ZW50IHdyaXRpbmcgdG8gbWVt b3J5IG9yIElPIHJhbmdlcyBwb3NzaWJseQo+Pj4gYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIG90aGVy IHVzZXMgYWZ0ZXIgb3VyIGRldmljZSBpcyByZW1vdmVkLgo+Pgo+PiBXb3csIHRoYXQgYWRkcyBx dWl0ZSBzb21lIG92ZXJoZWFkIHRvIGV2ZXJ5IHJlZ2lzdGVyIGFjY2Vzcy4gSSdtIG5vdCAKPj4g c3VyZSB3ZSBjYW4gZG8gdGhpcy4KPj4KPj4gQ2hyaXN0aWFuLgo+Pgo+Pj4KPj4+IFNpZ25lZC1v ZmYtYnk6IEFuZHJleSBHcm9kem92c2t5IDxhbmRyZXkuZ3JvZHpvdnNreUBhbWQuY29tPgo+Pj4g LS0tCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgfCA1 NyAKPj4+ICsrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2dtYy5jwqDCoMKgIHzCoCA5ICsrKysKPj4+IMKgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuY8KgwqDCoCB8IDUzIAo+Pj4gKysrKysrKysrKysr Ky0tLS0tLS0tLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5o wqDCoMKgIHzCoCAzICsrCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf cmluZy5jwqDCoCB8IDcwIAo+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+PiDC oCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5owqDCoCB8IDQ5ICsrLS0t LS0tLS0tLS0tLS0tLS0tLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3Yx MV8wLmPCoMKgwqDCoCB8IDE2ICsrLS0tLS0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3BzcF92MTJfMC5jwqDCoMKgwqAgfMKgIDggKy0tLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvcHNwX3YzXzEuY8KgwqDCoMKgwqAgfMKgIDggKy0tLQo+Pj4gwqAgOSBmaWxl cyBjaGFuZ2VkLCAxODQgaW5zZXJ0aW9ucygrKSwgODkgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyAKPj4+ IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+PiBpbmRleCBl OTlmNGYxLi4wYTlkNzNjIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2RldmljZS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZGV2aWNlLmMKPj4+IEBAIC03Miw2ICs3Miw4IEBACj4+PiDCoCDCoCAjaW5jbHVkZSA8 bGludXgvaW9tbXUuaD4KPj4+IMKgICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPj4+ICsKPj4+ IMKgIE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMF9ncHVfaW5mby5iaW4iKTsKPj4+IMKg IE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMl9ncHVfaW5mby5iaW4iKTsKPj4+IMKgIE1P RFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3JhdmVuX2dwdV9pbmZvLmJpbiIpOwo+Pj4gQEAgLTQwNCwx MyArNDA2LDIxIEBAIHVpbnQ4X3QgYW1kZ3B1X21tX3JyZWc4KHN0cnVjdCBhbWRncHVfZGV2aWNl IAo+Pj4gKmFkZXYsIHVpbnQzMl90IG9mZnNldCkKPj4+IMKgwqAgKi8KPj4+IMKgIHZvaWQgYW1k Z3B1X21tX3dyZWc4KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBvZmZzZXQs IAo+Pj4gdWludDhfdCB2YWx1ZSkKPj4+IMKgIHsKPj4+ICvCoMKgwqAgaW50IGlkeDsKPj4+ICsK Pj4+IMKgwqDCoMKgwqAgaWYgKGFkZXYtPmluX3BjaV9lcnJfcmVjb3ZlcnkpCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuOwo+Pj4gwqAgKwo+Pj4gK8KgwqDCoCBpZiAoIWRybV9kZXZfZW50 ZXIoJmFkZXYtPmRkZXYsICZpZHgpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4+ICsK Pj4+IMKgwqDCoMKgwqAgaWYgKG9mZnNldCA8IGFkZXYtPnJtbWlvX3NpemUpCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgd3JpdGViKHZhbHVlLCBhZGV2LT5ybW1pbyArIG9mZnNldCk7Cj4+PiDCoMKg wqDCoMKgIGVsc2UKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBCVUcoKTsKPj4+ICsKPj4+ICvCoMKg wqAgZHJtX2Rldl9leGl0KGlkeCk7Cj4+PiDCoCB9Cj4+PiDCoCDCoCAvKioKPj4+IEBAIC00Mjcs OSArNDM3LDE0IEBAIHZvaWQgYW1kZ3B1X2RldmljZV93cmVnKHN0cnVjdCBhbWRncHVfZGV2aWNl IAo+Pj4gKmFkZXYsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50MzJfdCByZWcs IHVpbnQzMl90IHYsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50MzJfdCBhY2Nf ZmxhZ3MpCj4+PiDCoCB7Cj4+PiArwqDCoMKgIGludCBpZHg7Cj4+PiArCj4+PiDCoMKgwqDCoMKg IGlmIChhZGV2LT5pbl9wY2lfZXJyX3JlY292ZXJ5KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybjsKPj4+IMKgICvCoMKgwqAgaWYgKCFkcm1fZGV2X2VudGVyKCZhZGV2LT5kZGV2LCAmaWR4 KSkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+PiArCj4+PiDCoMKgwqDCoMKgIGlmICgo cmVnICogNCkgPCBhZGV2LT5ybW1pb19zaXplKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KCEoYWNjX2ZsYWdzICYgQU1ER1BVX1JFR1NfTk9fS0lRKSAmJgo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYW1kZ3B1X3NyaW92X3J1bnRpbWUoYWRldikgJiYKPj4+IEBAIC00NDQsNiAr NDU5LDggQEAgdm9pZCBhbWRncHVfZGV2aWNlX3dyZWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKgIMKgwqDCoMKgwqAgdHJhY2VfYW1kZ3B1X2Rldmlj ZV93cmVnKGFkZXYtPnBkZXYtPmRldmljZSwgcmVnLCB2KTsKPj4+ICsKPj4+ICvCoMKgwqAgZHJt X2Rldl9leGl0KGlkeCk7Cj4+PiDCoCB9Cj4+PiDCoCDCoCAvKgo+Pj4gQEAgLTQ1NCw5ICs0NzEs MTQgQEAgdm9pZCBhbWRncHVfZGV2aWNlX3dyZWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgCj4+PiAq YWRldiwKPj4+IMKgIHZvaWQgYW1kZ3B1X21tX3dyZWdfbW1pb19ybGMoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2KQo+Pj4gwqAgewo+Pj4gK8KgwqDCoCBpbnQgaWR4Owo+Pj4g Kwo+Pj4gwqDCoMKgwqDCoCBpZiAoYWRldi0+aW5fcGNpX2Vycl9yZWNvdmVyeSkKPj4+IMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+PiDCoCArwqDCoMKgIGlmICghZHJtX2Rldl9lbnRlcigm YWRldi0+ZGRldiwgJmlkeCkpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+Pj4gKwo+Pj4g wqDCoMKgwqDCoCBpZiAoYW1kZ3B1X3NyaW92X2Z1bGxhY2Nlc3MoYWRldikgJiYKPj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBhZGV2LT5nZngucmxjLmZ1bmNzICYmCj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgYWRldi0+Z2Z4LnJsYy5mdW5jcy0+aXNfcmxjZ19hY2Nlc3NfcmFuZ2UpIHsKPj4+IEBAIC00 NjUsNiArNDg3LDggQEAgdm9pZCBhbWRncHVfbW1fd3JlZ19tbWlvX3JsYyhzdHJ1Y3QgCj4+PiBh bWRncHVfZGV2aWNlICphZGV2LAo+Pj4gwqDCoMKgwqDCoCB9IGVsc2Ugewo+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgIHdyaXRlbCh2LCAoKHZvaWQgX19pb21lbSAqKWFkZXYtPnJtbWlvKSArIChyZWcg KiA0KSk7Cj4+PiDCoMKgwqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKgwqAgZHJtX2Rldl9leGl0KGlk eCk7Cj4+PiDCoCB9Cj4+PiDCoCDCoCAvKioKPj4+IEBAIC00OTksMTUgKzUyMywyMiBAQCB1MzIg YW1kZ3B1X2lvX3JyZWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIAo+Pj4gdTMyIHJlZykK Pj4+IMKgwqAgKi8KPj4+IMKgIHZvaWQgYW1kZ3B1X2lvX3dyZWcoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsIHUzMiByZWcsIHUzMiB2KQo+Pj4gwqAgewo+Pj4gK8KgwqDCoCBpbnQgaWR4Owo+ Pj4gKwo+Pj4gwqDCoMKgwqDCoCBpZiAoYWRldi0+aW5fcGNpX2Vycl9yZWNvdmVyeSkKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+PiDCoCArwqDCoMKgIGlmICghZHJtX2Rldl9lbnRl cigmYWRldi0+ZGRldiwgJmlkeCkpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+Pj4gKwo+ Pj4gwqDCoMKgwqDCoCBpZiAoKHJlZyAqIDQpIDwgYWRldi0+cmlvX21lbV9zaXplKQo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIGlvd3JpdGUzMih2LCBhZGV2LT5yaW9fbWVtICsgKHJlZyAqIDQpKTsK Pj4+IMKgwqDCoMKgwqAgZWxzZSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaW93cml0ZTMyKChy ZWcgKiA0KSwgYWRldi0+cmlvX21lbSArIChtbU1NX0lOREVYICogNCkpOwo+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgIGlvd3JpdGUzMih2LCBhZGV2LT5yaW9fbWVtICsgKG1tTU1fREFUQSAqIDQpKTsK Pj4+IMKgwqDCoMKgwqAgfQo+Pj4gKwo+Pj4gK8KgwqDCoCBkcm1fZGV2X2V4aXQoaWR4KTsKPj4+ IMKgIH0KPj4+IMKgIMKgIC8qKgo+Pj4gQEAgLTU0NCwxNCArNTc1LDIxIEBAIHUzMiBhbWRncHVf bW1fcmRvb3JiZWxsKHN0cnVjdCBhbWRncHVfZGV2aWNlIAo+Pj4gKmFkZXYsIHUzMiBpbmRleCkK Pj4+IMKgwqAgKi8KPj4+IMKgIHZvaWQgYW1kZ3B1X21tX3dkb29yYmVsbChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdTMyIGluZGV4LCAKPj4+IHUzMiB2KQo+Pj4gwqAgewo+Pj4gK8KgwqDC oCBpbnQgaWR4Owo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCBpZiAoYWRldi0+aW5fcGNpX2Vycl9yZWNv dmVyeSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+PiDCoCArwqDCoMKgIGlmICgh ZHJtX2Rldl9lbnRlcigmYWRldi0+ZGRldiwgJmlkeCkpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuOwo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCBpZiAoaW5kZXggPCBhZGV2LT5kb29yYmVsbC5udW1f ZG9vcmJlbGxzKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVsKHYsIGFkZXYtPmRvb3Ji ZWxsLnB0ciArIGluZGV4KTsKPj4+IMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBEUk1fRVJST1IoIndyaXRpbmcgYmV5b25kIGRvb3JiZWxsIGFwZXJ0dXJlOiAweCUw OHghXG4iLCAKPj4+IGluZGV4KTsKPj4+IMKgwqDCoMKgwqAgfQo+Pj4gKwo+Pj4gK8KgwqDCoCBk cm1fZGV2X2V4aXQoaWR4KTsKPj4+IMKgIH0KPj4+IMKgIMKgIC8qKgo+Pj4gQEAgLTU4OCwxNCAr NjI2LDIxIEBAIHU2NCBhbWRncHVfbW1fcmRvb3JiZWxsNjQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug Cj4+PiAqYWRldiwgdTMyIGluZGV4KQo+Pj4gwqDCoCAqLwo+Pj4gwqAgdm9pZCBhbWRncHVfbW1f d2Rvb3JiZWxsNjQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHUzMiBpbmRleCwgCj4+PiB1 NjQgdikKPj4+IMKgIHsKPj4+ICvCoMKgwqAgaW50IGlkeDsKPj4+ICsKPj4+IMKgwqDCoMKgwqAg aWYgKGFkZXYtPmluX3BjaV9lcnJfcmVjb3ZlcnkpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuOwo+Pj4gwqAgK8KgwqDCoCBpZiAoIWRybV9kZXZfZW50ZXIoJmFkZXYtPmRkZXYsICZpZHgp KQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4+ICsKPj4+IMKgwqDCoMKgwqAgaWYgKGlu ZGV4IDwgYWRldi0+ZG9vcmJlbGwubnVtX2Rvb3JiZWxscykgewo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIGF0b21pYzY0X3NldCgoYXRvbWljNjRfdCAqKShhZGV2LT5kb29yYmVsbC5wdHIgKyBpbmRl eCksIHYpOwo+Pj4gwqDCoMKgwqDCoCB9IGVsc2Ugewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIERS TV9FUlJPUigid3JpdGluZyBiZXlvbmQgZG9vcmJlbGwgYXBlcnR1cmU6IDB4JTA4eCFcbiIsIAo+ Pj4gaW5kZXgpOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgIGRybV9kZXZfZXhp dChpZHgpOwo+Pj4gwqAgfQo+Pj4gwqAgwqAgLyoqCj4+PiBAQCAtNjgyLDYgKzcyNywxMCBAQCB2 b2lkIGFtZGdwdV9kZXZpY2VfaW5kaXJlY3Rfd3JlZyhzdHJ1Y3QgCj4+PiBhbWRncHVfZGV2aWNl ICphZGV2LAo+Pj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4gwqDCoMKgwqDC oCB2b2lkIF9faW9tZW0gKnBjaWVfaW5kZXhfb2Zmc2V0Owo+Pj4gwqDCoMKgwqDCoCB2b2lkIF9f aW9tZW0gKnBjaWVfZGF0YV9vZmZzZXQ7Cj4+PiArwqDCoMKgIGludCBpZHg7Cj4+PiArCj4+PiAr wqDCoMKgIGlmICghZHJtX2Rldl9lbnRlcigmYWRldi0+ZGRldiwgJmlkeCkpCj4+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuOwo+Pj4gwqAgwqDCoMKgwqDCoCBzcGluX2xvY2tfaXJxc2F2ZSgmYWRl di0+cGNpZV9pZHhfbG9jaywgZmxhZ3MpOwo+Pj4gwqDCoMKgwqDCoCBwY2llX2luZGV4X29mZnNl dCA9ICh2b2lkIF9faW9tZW0gKilhZGV2LT5ybW1pbyArIHBjaWVfaW5kZXggKiA0Owo+Pj4gQEAg LTY5Miw2ICs3NDEsOCBAQCB2b2lkIGFtZGdwdV9kZXZpY2VfaW5kaXJlY3Rfd3JlZyhzdHJ1Y3Qg Cj4+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4gwqDCoMKgwqDCoCB3cml0ZWwocmVnX2RhdGEs IHBjaWVfZGF0YV9vZmZzZXQpOwo+Pj4gwqDCoMKgwqDCoCByZWFkbChwY2llX2RhdGFfb2Zmc2V0 KTsKPj4+IMKgwqDCoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+cGNpZV9pZHhf bG9jaywgZmxhZ3MpOwo+Pj4gKwo+Pj4gK8KgwqDCoCBkcm1fZGV2X2V4aXQoaWR4KTsKPj4+IMKg IH0KPj4+IMKgIMKgIC8qKgo+Pj4gQEAgLTcxMSw2ICs3NjIsMTAgQEAgdm9pZCBhbWRncHVfZGV2 aWNlX2luZGlyZWN0X3dyZWc2NChzdHJ1Y3QgCj4+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4g wqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4gwqDCoMKgwqDCoCB2b2lkIF9faW9t ZW0gKnBjaWVfaW5kZXhfb2Zmc2V0Owo+Pj4gwqDCoMKgwqDCoCB2b2lkIF9faW9tZW0gKnBjaWVf ZGF0YV9vZmZzZXQ7Cj4+PiArwqDCoMKgIGludCBpZHg7Cj4+PiArCj4+PiArwqDCoMKgIGlmICgh ZHJtX2Rldl9lbnRlcigmYWRldi0+ZGRldiwgJmlkeCkpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuOwo+Pj4gwqAgwqDCoMKgwqDCoCBzcGluX2xvY2tfaXJxc2F2ZSgmYWRldi0+cGNpZV9pZHhf bG9jaywgZmxhZ3MpOwo+Pj4gwqDCoMKgwqDCoCBwY2llX2luZGV4X29mZnNldCA9ICh2b2lkIF9f aW9tZW0gKilhZGV2LT5ybW1pbyArIHBjaWVfaW5kZXggKiA0Owo+Pj4gQEAgLTcyNyw2ICs3ODIs OCBAQCB2b2lkIGFtZGdwdV9kZXZpY2VfaW5kaXJlY3Rfd3JlZzY0KHN0cnVjdCAKPj4+IGFtZGdw dV9kZXZpY2UgKmFkZXYsCj4+PiDCoMKgwqDCoMKgIHdyaXRlbCgodTMyKShyZWdfZGF0YSA+PiAz MiksIHBjaWVfZGF0YV9vZmZzZXQpOwo+Pj4gwqDCoMKgwqDCoCByZWFkbChwY2llX2RhdGFfb2Zm c2V0KTsKPj4+IMKgwqDCoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+cGNpZV9p ZHhfbG9jaywgZmxhZ3MpOwo+Pj4gKwo+Pj4gK8KgwqDCoCBkcm1fZGV2X2V4aXQoaWR4KTsKPj4+ IMKgIH0KPj4+IMKgIMKgIC8qKgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9nbWMuYyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2dtYy5jCj4+PiBpbmRleCBmZTFhMzlmLi4xYmViNGU2IDEwMDY0NAo+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dtYy5jCj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ21jLmMKPj4+IEBAIC0zMSw2ICszMSw4IEBACj4+PiDC oCAjaW5jbHVkZSAiYW1kZ3B1X3Jhcy5oIgo+Pj4gwqAgI2luY2x1ZGUgImFtZGdwdV94Z21pLmgi Cj4+PiDCoCArI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+Cj4+PiArCj4+PiDCoCAvKioKPj4+IMKg wqAgKiBhbWRncHVfZ21jX2dldF9wZGVfZm9yX2JvIC0gZ2V0IHRoZSBQREUgZm9yIGEgQk8KPj4+ IMKgwqAgKgo+Pj4gQEAgLTk4LDYgKzEwMCwxMCBAQCBpbnQgYW1kZ3B1X2dtY19zZXRfcHRlX3Bk ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAKPj4+ICphZGV2LCB2b2lkICpjcHVfcHRfYWRkciwKPj4+ IMKgIHsKPj4+IMKgwqDCoMKgwqAgdm9pZCBfX2lvbWVtICpwdHIgPSAodm9pZCAqKWNwdV9wdF9h ZGRyOwo+Pj4gwqDCoMKgwqDCoCB1aW50NjRfdCB2YWx1ZTsKPj4+ICvCoMKgwqAgaW50IGlkeDsK Pj4+ICsKPj4+ICvCoMKgwqAgaWYgKCFkcm1fZGV2X2VudGVyKCZhZGV2LT5kZGV2LCAmaWR4KSkK Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+IMKgIMKgwqDCoMKgwqAgLyoKPj4+IMKg wqDCoMKgwqDCoCAqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIFBURSBvbmx5LiBHQVJUIGRvZXMgbm90 IGhhdmUgUERFcy4KPj4+IEBAIC0xMDUsNiArMTExLDkgQEAgaW50IGFtZGdwdV9nbWNfc2V0X3B0 ZV9wZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgCj4+PiAqYWRldiwgdm9pZCAqY3B1X3B0X2FkZHIs Cj4+PiDCoMKgwqDCoMKgIHZhbHVlID0gYWRkciAmIDB4MDAwMEZGRkZGRkZGRjAwMFVMTDsKPj4+ IMKgwqDCoMKgwqAgdmFsdWUgfD0gZmxhZ3M7Cj4+PiDCoMKgwqDCoMKgIHdyaXRlcSh2YWx1ZSwg cHRyICsgKGdwdV9wYWdlX2lkeCAqIDgpKTsKPj4+ICsKPj4+ICvCoMKgwqAgZHJtX2Rldl9leGl0 KGlkeCk7Cj4+PiArCj4+PiDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4gwqAgfQo+Pj4gwqAgZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYyAKPj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jCj4+PiBpbmRleCA1MjNkMjJk Li44OWUyYmZlIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3BzcC5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNw LmMKPj4+IEBAIC0zNyw2ICszNyw4IEBACj4+PiDCoCDCoCAjaW5jbHVkZSAiYW1kZ3B1X3Jhcy5o Igo+Pj4gwqAgKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgo+Pj4gKwo+Pj4gwqAgc3RhdGljIGlu dCBwc3Bfc3lzZnNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7Cj4+PiDCoCBzdGF0 aWMgdm9pZCBwc3Bfc3lzZnNfZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7Cj4+PiDC oCBAQCAtMjQ4LDcgKzI1MCw3IEBAIHBzcF9jbWRfc3VibWl0X2J1ZihzdHJ1Y3QgcHNwX2NvbnRl eHQgKnBzcCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcHNwX2dmeF9jbWRf cmVzcCAqY21kLCB1aW50NjRfdCBmZW5jZV9tY19hZGRyKQo+Pj4gwqAgewo+Pj4gwqDCoMKgwqDC oCBpbnQgcmV0Owo+Pj4gLcKgwqDCoCBpbnQgaW5kZXg7Cj4+PiArwqDCoMKgIGludCBpbmRleCwg aWR4Owo+Pj4gwqDCoMKgwqDCoCBpbnQgdGltZW91dCA9IDIwMDA7Cj4+PiDCoMKgwqDCoMKgIGJv b2wgcmFzX2ludHIgPSBmYWxzZTsKPj4+IMKgwqDCoMKgwqAgYm9vbCBza2lwX3Vuc3VwcG9ydCA9 IGZhbHNlOwo+Pj4gQEAgLTI1Niw2ICsyNTgsOSBAQCBwc3BfY21kX3N1Ym1pdF9idWYoc3RydWN0 IHBzcF9jb250ZXh0ICpwc3AsCj4+PiDCoMKgwqDCoMKgIGlmIChwc3AtPmFkZXYtPmluX3BjaV9l cnJfcmVjb3ZlcnkpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+PiDCoCArwqDC oMKgIGlmICghZHJtX2Rldl9lbnRlcigmcHNwLT5hZGV2LT5kZGV2LCAmaWR4KSkKPj4+ICvCoMKg wqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+ICsKPj4+IMKgwqDCoMKgwqAgbXV0ZXhfbG9jaygmcHNw LT5tdXRleCk7Cj4+PiDCoCDCoMKgwqDCoMKgIG1lbXNldChwc3AtPmNtZF9idWZfbWVtLCAwLCBQ U1BfQ01EX0JVRkZFUl9TSVpFKTsKPj4+IEBAIC0yNjYsOCArMjcxLDcgQEAgcHNwX2NtZF9zdWJt aXRfYnVmKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwLAo+Pj4gwqDCoMKgwqDCoCByZXQgPSBwc3Bf cmluZ19jbWRfc3VibWl0KHBzcCwgcHNwLT5jbWRfYnVmX21jX2FkZHIsIAo+Pj4gZmVuY2VfbWNf YWRkciwgaW5kZXgpOwo+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KSB7Cj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgYXRvbWljX2RlYygmcHNwLT5mZW5jZV92YWx1ZSk7Cj4+PiAtwqDCoMKgwqDCoMKgwqAg bXV0ZXhfdW5sb2NrKCZwc3AtPm11dGV4KTsKPj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0 Owo+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXhpdDsKPj4+IMKgwqDCoMKgwqAgfQo+Pj4gwqAg wqDCoMKgwqDCoCBhbWRncHVfYXNpY19pbnZhbGlkYXRlX2hkcChwc3AtPmFkZXYsIE5VTEwpOwo+ Pj4gQEAgLTMwNyw4ICszMTEsOCBAQCBwc3BfY21kX3N1Ym1pdF9idWYoc3RydWN0IHBzcF9jb250 ZXh0ICpwc3AsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBzcC0+Y21kX2J1Zl9t ZW0tPmNtZF9pZCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHNwLT5jbWRfYnVm X21lbS0+cmVzcC5zdGF0dXMpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghdGltZW91dCkg ewo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZwc3AtPm11dGV4KTsK Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVJTlZBTDsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdvdG8gZXhpdDsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+PiDCoMKgwqDCoMKgIH0KPj4+ IMKgIEBAIC0zMTYsOCArMzIwLDEwIEBAIHBzcF9jbWRfc3VibWl0X2J1ZihzdHJ1Y3QgcHNwX2Nv bnRleHQgKnBzcCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB1Y29kZS0+dG1yX21jX2FkZHJfbG8g PSBwc3AtPmNtZF9idWZfbWVtLT5yZXNwLmZ3X2FkZHJfbG87Cj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgdWNvZGUtPnRtcl9tY19hZGRyX2hpID0gcHNwLT5jbWRfYnVmX21lbS0+cmVzcC5md19hZGRy X2hpOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiAtwqDCoMKgIG11dGV4X3VubG9jaygmcHNwLT5tdXRl eCk7Cj4+PiDCoCArZXhpdDoKPj4+ICvCoMKgwqAgbXV0ZXhfdW5sb2NrKCZwc3AtPm11dGV4KTsK Pj4+ICvCoMKgwqAgZHJtX2Rldl9leGl0KGlkeCk7Cj4+PiDCoMKgwqDCoMKgIHJldHVybiByZXQ7 Cj4+PiDCoCB9Cj4+PiDCoCBAQCAtMzU0LDggKzM2MCw3IEBAIHN0YXRpYyBpbnQgcHNwX2xvYWRf dG9jKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwLAo+Pj4gwqDCoMKgwqDCoCBpZiAoIWNtZCkKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4+IMKgwqDCoMKgwqAgLyogQ29w eSB0b2MgdG8gcHNwIGZpcm13YXJlIHByaXZhdGUgYnVmZmVyICovCj4+PiAtwqDCoMKgIG1lbXNl dChwc3AtPmZ3X3ByaV9idWYsIDAsIFBTUF8xX01FRyk7Cj4+PiAtwqDCoMKgIG1lbWNweShwc3At PmZ3X3ByaV9idWYsIHBzcC0+dG9jX3N0YXJ0X2FkZHIsIHBzcC0+dG9jX2Jpbl9zaXplKTsKPj4+ ICvCoMKgwqAgcHNwX2NvcHlfZncocHNwLCBwc3AtPnRvY19zdGFydF9hZGRyLCBwc3AtPnRvY19i aW5fc2l6ZSk7Cj4+PiDCoCDCoMKgwqDCoMKgIHBzcF9wcmVwX2xvYWRfdG9jX2NtZF9idWYoY21k LCBwc3AtPmZ3X3ByaV9tY19hZGRyLCAKPj4+IHBzcC0+dG9jX2Jpbl9zaXplKTsKPj4+IMKgIEBA IC01NzAsOCArNTc1LDcgQEAgc3RhdGljIGludCBwc3BfYXNkX2xvYWQoc3RydWN0IHBzcF9jb250 ZXh0ICpwc3ApCj4+PiDCoMKgwqDCoMKgIGlmICghY21kKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiAtRU5PTUVNOwo+Pj4gwqAgLcKgwqDCoCBtZW1zZXQocHNwLT5md19wcmlfYnVmLCAw LCBQU1BfMV9NRUcpOwo+Pj4gLcKgwqDCoCBtZW1jcHkocHNwLT5md19wcmlfYnVmLCBwc3AtPmFz ZF9zdGFydF9hZGRyLCBwc3AtPmFzZF91Y29kZV9zaXplKTsKPj4+ICvCoMKgwqAgcHNwX2NvcHlf ZncocHNwLCBwc3AtPmFzZF9zdGFydF9hZGRyLCBwc3AtPmFzZF91Y29kZV9zaXplKTsKPj4+IMKg IMKgwqDCoMKgwqAgcHNwX3ByZXBfYXNkX2xvYWRfY21kX2J1ZihjbWQsIHBzcC0+ZndfcHJpX21j X2FkZHIsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwc3AtPmFz ZF91Y29kZV9zaXplKTsKPj4+IEBAIC03MjYsOCArNzMwLDcgQEAgc3RhdGljIGludCBwc3BfeGdt aV9sb2FkKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwKQo+Pj4gwqDCoMKgwqDCoCBpZiAoIWNtZCkK Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4+IMKgIC3CoMKgwqAgbWVt c2V0KHBzcC0+ZndfcHJpX2J1ZiwgMCwgUFNQXzFfTUVHKTsKPj4+IC3CoMKgwqAgbWVtY3B5KHBz cC0+ZndfcHJpX2J1ZiwgcHNwLT50YV94Z21pX3N0YXJ0X2FkZHIsIAo+Pj4gcHNwLT50YV94Z21p X3Vjb2RlX3NpemUpOwo+Pj4gK8KgwqDCoCBwc3BfY29weV9mdyhwc3AsIHBzcC0+dGFfeGdtaV9z dGFydF9hZGRyLCAKPj4+IHBzcC0+dGFfeGdtaV91Y29kZV9zaXplKTsKPj4+IMKgIMKgwqDCoMKg wqAgcHNwX3ByZXBfdGFfbG9hZF9jbWRfYnVmKGNtZCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwc3AtPmZ3X3ByaV9tY19hZGRyLAo+Pj4gQEAgLTk4Miw4ICs5ODUs NyBAQCBzdGF0aWMgaW50IHBzcF9yYXNfbG9hZChzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCkKPj4+ IMKgwqDCoMKgwqAgaWYgKCFjbWQpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9N RU07Cj4+PiDCoCAtwqDCoMKgIG1lbXNldChwc3AtPmZ3X3ByaV9idWYsIDAsIFBTUF8xX01FRyk7 Cj4+PiAtwqDCoMKgIG1lbWNweShwc3AtPmZ3X3ByaV9idWYsIHBzcC0+dGFfcmFzX3N0YXJ0X2Fk ZHIsIAo+Pj4gcHNwLT50YV9yYXNfdWNvZGVfc2l6ZSk7Cj4+PiArwqDCoMKgIHBzcF9jb3B5X2Z3 KHBzcCwgcHNwLT50YV9yYXNfc3RhcnRfYWRkciwgcHNwLT50YV9yYXNfdWNvZGVfc2l6ZSk7Cj4+ PiDCoCDCoMKgwqDCoMKgIHBzcF9wcmVwX3RhX2xvYWRfY21kX2J1ZihjbWQsCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHNwLT5md19wcmlfbWNfYWRkciwKPj4+IEBA IC0xMjE5LDggKzEyMjEsNyBAQCBzdGF0aWMgaW50IHBzcF9oZGNwX2xvYWQoc3RydWN0IHBzcF9j b250ZXh0ICpwc3ApCj4+PiDCoMKgwqDCoMKgIGlmICghY21kKQo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiAtRU5PTUVNOwo+Pj4gwqAgLcKgwqDCoCBtZW1zZXQocHNwLT5md19wcmlfYnVm LCAwLCBQU1BfMV9NRUcpOwo+Pj4gLcKgwqDCoCBtZW1jcHkocHNwLT5md19wcmlfYnVmLCBwc3At PnRhX2hkY3Bfc3RhcnRfYWRkciwKPj4+ICvCoMKgwqAgcHNwX2NvcHlfZncocHNwLCBwc3AtPnRh X2hkY3Bfc3RhcnRfYWRkciwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwc3AtPnRhX2hk Y3BfdWNvZGVfc2l6ZSk7Cj4+PiDCoCDCoMKgwqDCoMKgIHBzcF9wcmVwX3RhX2xvYWRfY21kX2J1 ZihjbWQsCj4+PiBAQCAtMTM2Niw4ICsxMzY3LDcgQEAgc3RhdGljIGludCBwc3BfZHRtX2xvYWQo c3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCj4+PiDCoMKgwqDCoMKgIGlmICghY21kKQo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+Pj4gwqAgLcKgwqDCoCBtZW1zZXQocHNw LT5md19wcmlfYnVmLCAwLCBQU1BfMV9NRUcpOwo+Pj4gLcKgwqDCoCBtZW1jcHkocHNwLT5md19w cmlfYnVmLCBwc3AtPnRhX2R0bV9zdGFydF9hZGRyLCAKPj4+IHBzcC0+dGFfZHRtX3Vjb2RlX3Np emUpOwo+Pj4gK8KgwqDCoCBwc3BfY29weV9mdyhwc3AsIHBzcC0+dGFfZHRtX3N0YXJ0X2FkZHIs IHBzcC0+dGFfZHRtX3Vjb2RlX3NpemUpOwo+Pj4gwqAgwqDCoMKgwqDCoCBwc3BfcHJlcF90YV9s b2FkX2NtZF9idWYoY21kLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHBzcC0+ZndfcHJpX21jX2FkZHIsCj4+PiBAQCAtMTUwNyw4ICsxNTA3LDcgQEAgc3RhdGljIGlu dCBwc3BfcmFwX2xvYWQoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCj4+PiDCoMKgwqDCoMKgIGlm ICghY21kKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+Pj4gwqAgLcKg wqDCoCBtZW1zZXQocHNwLT5md19wcmlfYnVmLCAwLCBQU1BfMV9NRUcpOwo+Pj4gLcKgwqDCoCBt ZW1jcHkocHNwLT5md19wcmlfYnVmLCBwc3AtPnRhX3JhcF9zdGFydF9hZGRyLCAKPj4+IHBzcC0+ dGFfcmFwX3Vjb2RlX3NpemUpOwo+Pj4gK8KgwqDCoCBwc3BfY29weV9mdyhwc3AsIHBzcC0+dGFf cmFwX3N0YXJ0X2FkZHIsIHBzcC0+dGFfcmFwX3Vjb2RlX3NpemUpOwo+Pj4gwqAgwqDCoMKgwqDC oCBwc3BfcHJlcF90YV9sb2FkX2NtZF9idWYoY21kLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHBzcC0+ZndfcHJpX21jX2FkZHIsCj4+PiBAQCAtMjc3OCw2ICsyNzc3 LDIwIEBAIHN0YXRpYyBzc2l6ZV90IAo+Pj4gcHNwX3VzYmNfcGRfZndfc3lzZnNfd3JpdGUoc3Ry dWN0IGRldmljZSAqZGV2LAo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gY291bnQ7Cj4+PiDCoCB9Cj4+ PiDCoCArdm9pZCBwc3BfY29weV9mdyhzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCwgdWludDhfdCAq c3RhcnRfYWRkciwgCj4+PiB1aW50MzJfdCBiaW5fc2l6ZSkKPj4+ICt7Cj4+PiArwqDCoMKgIGlu dCBpZHg7Cj4+PiArCj4+PiArwqDCoMKgIGlmICghZHJtX2Rldl9lbnRlcigmcHNwLT5hZGV2LT5k ZGV2LCAmaWR4KSkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+PiArCj4+PiArwqDCoMKg IG1lbXNldChwc3AtPmZ3X3ByaV9idWYsIDAsIFBTUF8xX01FRyk7Cj4+PiArwqDCoMKgIG1lbWNw eShwc3AtPmZ3X3ByaV9idWYsIHN0YXJ0X2FkZHIsIGJpbl9zaXplKTsKPj4+ICsKPj4+ICvCoMKg wqAgZHJtX2Rldl9leGl0KGlkeCk7Cj4+PiArfQo+Pj4gKwo+Pj4gKwo+Pj4gwqAgc3RhdGljIERF VklDRV9BVFRSKHVzYmNfcGRfZncsIFNfSVJVR08gfCBTX0lXVVNSLAo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHBzcF91c2JjX3BkX2Z3X3N5c2ZzX3JlYWQsCj4+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcHNwX3VzYmNfcGRfZndfc3lzZnNfd3JpdGUpOwo+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuaCAKPj4+IGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5oCj4+PiBpbmRleCBkYTI1MGJjLi5hYzY5MzE0 IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5o Cj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmgKPj4+IEBA IC00MDAsNCArNDAwLDcgQEAgaW50IHBzcF9pbml0X3RhX21pY3JvY29kZShzdHJ1Y3QgcHNwX2Nv bnRleHQgKnBzcCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFy ICpjaGlwX25hbWUpOwo+Pj4gwqAgaW50IHBzcF9nZXRfZndfYXR0ZXN0YXRpb25fcmVjb3Jkc19h ZGRyKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQ2NF90ICpvdXRwdXRfcHRyKTsKPj4+ICsKPj4+ICt2b2lk IHBzcF9jb3B5X2Z3KHN0cnVjdCBwc3BfY29udGV4dCAqcHNwLCB1aW50OF90ICpzdGFydF9hZGRy LCAKPj4+IHVpbnQzMl90IGJpbl9zaXplKTsKPj4+ICsKPj4+IMKgICNlbmRpZgo+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMgCj4+PiBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKPj4+IGluZGV4IDFhNjEyZjUu LmQ2NTY0OTQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfcmluZy5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmlu Zy5jCj4+PiBAQCAtMzUsNiArMzUsOCBAQAo+Pj4gwqAgI2luY2x1ZGUgImFtZGdwdS5oIgo+Pj4g wqAgI2luY2x1ZGUgImF0b20uaCIKPj4+IMKgICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPj4+ ICsKPj4+IMKgIC8qCj4+PiDCoMKgICogUmluZ3MKPj4+IMKgwqAgKiBNb3N0IGVuZ2luZXMgb24g dGhlIEdQVSBhcmUgZmVkIHZpYSByaW5nIGJ1ZmZlcnMuwqAgUmluZwo+Pj4gQEAgLTQ2MywzICs0 NjUsNzEgQEAgaW50IGFtZGdwdV9yaW5nX3Rlc3RfaGVscGVyKHN0cnVjdCBhbWRncHVfcmluZyAK Pj4+ICpyaW5nKQo+Pj4gwqDCoMKgwqDCoCByaW5nLT5zY2hlZC5yZWFkeSA9ICFyOwo+Pj4gwqDC oMKgwqDCoCByZXR1cm4gcjsKPj4+IMKgIH0KPj4+ICsKPj4+ICt2b2lkIGFtZGdwdV9yaW5nX2Ns ZWFyX3Jpbmcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQo+Pj4gK3sKPj4+ICvCoMKgwqAgaW50 IGlkeDsKPj4+ICvCoMKgwqAgaW50IGkgPSAwOwo+Pj4gKwo+Pj4gK8KgwqDCoCBpZiAoIWRybV9k ZXZfZW50ZXIoJnJpbmctPmFkZXYtPmRkZXYsICZpZHgpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybjsKPj4+ICsKPj4+ICvCoMKgwqAgd2hpbGUgKGkgPD0gcmluZy0+YnVmX21hc2spCj4+PiAr wqDCoMKgwqDCoMKgwqAgcmluZy0+cmluZ1tpKytdID0gcmluZy0+ZnVuY3MtPm5vcDsKPj4+ICsK Pj4+ICvCoMKgwqAgZHJtX2Rldl9leGl0KGlkeCk7Cj4+PiArCj4+PiArfQo+Pj4gKwo+Pj4gK3Zv aWQgYW1kZ3B1X3Jpbmdfd3JpdGUoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCB2 KQo+Pj4gK3sKPj4+ICvCoMKgwqAgaW50IGlkeDsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKCFkcm1f ZGV2X2VudGVyKCZyaW5nLT5hZGV2LT5kZGV2LCAmaWR4KSkKPj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm47Cj4+PiArCj4+PiArwqDCoMKgIGlmIChyaW5nLT5jb3VudF9kdyA8PSAwKQo+Pj4gK8Kg wqDCoMKgwqDCoMKgIERSTV9FUlJPUigiYW1kZ3B1OiB3cml0aW5nIG1vcmUgZHdvcmRzIHRvIHRo ZSByaW5nIHRoYW4gCj4+PiBleHBlY3RlZCFcbiIpOwo+Pj4gK8KgwqDCoCByaW5nLT5yaW5nW3Jp bmctPndwdHIrKyAmIHJpbmctPmJ1Zl9tYXNrXSA9IHY7Cj4+PiArwqDCoMKgIHJpbmctPndwdHIg Jj0gcmluZy0+cHRyX21hc2s7Cj4+PiArwqDCoMKgIHJpbmctPmNvdW50X2R3LS07Cj4+PiArCj4+ PiArwqDCoMKgIGRybV9kZXZfZXhpdChpZHgpOwo+Pj4gK30KPj4+ICsKPj4+ICt2b2lkIGFtZGdw dV9yaW5nX3dyaXRlX211bHRpcGxlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICpzcmMs IGludCBjb3VudF9kdykKPj4+ICt7Cj4+PiArwqDCoMKgIHVuc2lnbmVkIG9jY3VwaWVkLCBjaHVu azEsIGNodW5rMjsKPj4+ICvCoMKgwqAgdm9pZCAqZHN0Owo+Pj4gK8KgwqDCoCBpbnQgaWR4Owo+ Pj4gKwo+Pj4gK8KgwqDCoCBpZiAoIWRybV9kZXZfZW50ZXIoJnJpbmctPmFkZXYtPmRkZXYsICZp ZHgpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKHVu bGlrZWx5KHJpbmctPmNvdW50X2R3IDwgY291bnRfZHcpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIERS TV9FUlJPUigiYW1kZ3B1OiB3cml0aW5nIG1vcmUgZHdvcmRzIHRvIHRoZSByaW5nIHRoYW4gCj4+ PiBleHBlY3RlZCFcbiIpOwo+Pj4gKwo+Pj4gK8KgwqDCoCBvY2N1cGllZCA9IHJpbmctPndwdHIg JiByaW5nLT5idWZfbWFzazsKPj4+ICvCoMKgwqAgZHN0ID0gKHZvaWQgKikmcmluZy0+cmluZ1tv Y2N1cGllZF07Cj4+PiArwqDCoMKgIGNodW5rMSA9IHJpbmctPmJ1Zl9tYXNrICsgMSAtIG9jY3Vw aWVkOwo+Pj4gK8KgwqDCoCBjaHVuazEgPSAoY2h1bmsxID49IGNvdW50X2R3KSA/IGNvdW50X2R3 OiBjaHVuazE7Cj4+PiArwqDCoMKgIGNodW5rMiA9IGNvdW50X2R3IC0gY2h1bmsxOwo+Pj4gK8Kg wqDCoCBjaHVuazEgPDw9IDI7Cj4+PiArwqDCoMKgIGNodW5rMiA8PD0gMjsKPj4+ICsKPj4+ICvC oMKgwqAgaWYgKGNodW5rMSkKPj4+ICvCoMKgwqDCoMKgwqDCoCBtZW1jcHkoZHN0LCBzcmMsIGNo dW5rMSk7Cj4+PiArCj4+PiArwqDCoMKgIGlmIChjaHVuazIpIHsKPj4+ICvCoMKgwqDCoMKgwqDC oCBzcmMgKz0gY2h1bmsxOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRzdCA9ICh2b2lkICopcmluZy0+ cmluZzsKPj4+ICvCoMKgwqDCoMKgwqDCoCBtZW1jcHkoZHN0LCBzcmMsIGNodW5rMik7Cj4+PiAr wqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKgwqAgcmluZy0+d3B0ciArPSBjb3VudF9kdzsKPj4+ICvC oMKgwqAgcmluZy0+d3B0ciAmPSByaW5nLT5wdHJfbWFzazsKPj4+ICvCoMKgwqAgcmluZy0+Y291 bnRfZHcgLT0gY291bnRfZHc7Cj4+PiArCj4+PiArwqDCoMKgIGRybV9kZXZfZXhpdChpZHgpOwo+ Pj4gK30KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf cmluZy5oIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCj4+ PiBpbmRleCBhY2NiMjQzLi5mOTBiODFmIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3JpbmcuaAo+Pj4gQEAgLTMwMCw1MyArMzAwLDEyIEBAIHN0YXRpYyBpbmxp bmUgdm9pZCAKPj4+IGFtZGdwdV9yaW5nX3NldF9wcmVlbXB0X2NvbmRfZXhlYyhzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcsCj4+PiDCoMKgwqDCoMKgICpyaW5nLT5jb25kX2V4ZV9jcHVfYWRkciA9 IGNvbmRfZXhlYzsKPj4+IMKgIH0KPj4+IMKgIC1zdGF0aWMgaW5saW5lIHZvaWQgYW1kZ3B1X3Jp bmdfY2xlYXJfcmluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCj4+PiAtewo+Pj4gLcKgwqDC oCBpbnQgaSA9IDA7Cj4+PiAtwqDCoMKgIHdoaWxlIChpIDw9IHJpbmctPmJ1Zl9tYXNrKQo+Pj4g LcKgwqDCoMKgwqDCoMKgIHJpbmctPnJpbmdbaSsrXSA9IHJpbmctPmZ1bmNzLT5ub3A7Cj4+PiAt Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfcmluZ193cml0ZShz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIAo+Pj4gdWludDMyX3QgdikKPj4+IC17Cj4+PiAtwqDC oMKgIGlmIChyaW5nLT5jb3VudF9kdyA8PSAwKQo+Pj4gLcKgwqDCoMKgwqDCoMKgIERSTV9FUlJP UigiYW1kZ3B1OiB3cml0aW5nIG1vcmUgZHdvcmRzIHRvIHRoZSByaW5nIHRoYW4gCj4+PiBleHBl Y3RlZCFcbiIpOwo+Pj4gLcKgwqDCoCByaW5nLT5yaW5nW3JpbmctPndwdHIrKyAmIHJpbmctPmJ1 Zl9tYXNrXSA9IHY7Cj4+PiAtwqDCoMKgIHJpbmctPndwdHIgJj0gcmluZy0+cHRyX21hc2s7Cj4+ PiAtwqDCoMKgIHJpbmctPmNvdW50X2R3LS07Cj4+PiAtfQo+Pj4gK3ZvaWQgYW1kZ3B1X3Jpbmdf Y2xlYXJfcmluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4gwqAgLXN0YXRpYyBpbmxp bmUgdm9pZCBhbWRncHVfcmluZ193cml0ZV9tdWx0aXBsZShzdHJ1Y3QgYW1kZ3B1X3JpbmcgCj4+ PiAqcmluZywKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB2b2lkICpzcmMsIGludCBjb3VudF9kdykKPj4+IC17Cj4+PiAtwqDCoMKgIHVuc2ln bmVkIG9jY3VwaWVkLCBjaHVuazEsIGNodW5rMjsKPj4+IC3CoMKgwqAgdm9pZCAqZHN0Owo+Pj4g LQo+Pj4gLcKgwqDCoCBpZiAodW5saWtlbHkocmluZy0+Y291bnRfZHcgPCBjb3VudF9kdykpCj4+ PiAtwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJhbWRncHU6IHdyaXRpbmcgbW9yZSBkd29yZHMg dG8gdGhlIHJpbmcgdGhhbiAKPj4+IGV4cGVjdGVkIVxuIik7Cj4+PiAtCj4+PiAtwqDCoMKgIG9j Y3VwaWVkID0gcmluZy0+d3B0ciAmIHJpbmctPmJ1Zl9tYXNrOwo+Pj4gLcKgwqDCoCBkc3QgPSAo dm9pZCAqKSZyaW5nLT5yaW5nW29jY3VwaWVkXTsKPj4+IC3CoMKgwqAgY2h1bmsxID0gcmluZy0+ YnVmX21hc2sgKyAxIC0gb2NjdXBpZWQ7Cj4+PiAtwqDCoMKgIGNodW5rMSA9IChjaHVuazEgPj0g Y291bnRfZHcpID8gY291bnRfZHc6IGNodW5rMTsKPj4+IC3CoMKgwqAgY2h1bmsyID0gY291bnRf ZHcgLSBjaHVuazE7Cj4+PiAtwqDCoMKgIGNodW5rMSA8PD0gMjsKPj4+IC3CoMKgwqAgY2h1bmsy IDw8PSAyOwo+Pj4gK3ZvaWQgYW1kZ3B1X3Jpbmdfd3JpdGUoc3RydWN0IGFtZGdwdV9yaW5nICpy aW5nLCB1aW50MzJfdCB2KTsKPj4+IMKgIC3CoMKgwqAgaWYgKGNodW5rMSkKPj4+IC3CoMKgwqDC oMKgwqDCoCBtZW1jcHkoZHN0LCBzcmMsIGNodW5rMSk7Cj4+PiAtCj4+PiAtwqDCoMKgIGlmIChj aHVuazIpIHsKPj4+IC3CoMKgwqDCoMKgwqDCoCBzcmMgKz0gY2h1bmsxOwo+Pj4gLcKgwqDCoMKg wqDCoMKgIGRzdCA9ICh2b2lkICopcmluZy0+cmluZzsKPj4+IC3CoMKgwqDCoMKgwqDCoCBtZW1j cHkoZHN0LCBzcmMsIGNodW5rMik7Cj4+PiAtwqDCoMKgIH0KPj4+IC0KPj4+IC3CoMKgwqAgcmlu Zy0+d3B0ciArPSBjb3VudF9kdzsKPj4+IC3CoMKgwqAgcmluZy0+d3B0ciAmPSByaW5nLT5wdHJf bWFzazsKPj4+IC3CoMKgwqAgcmluZy0+Y291bnRfZHcgLT0gY291bnRfZHc7Cj4+PiAtfQo+Pj4g K3ZvaWQgYW1kZ3B1X3Jpbmdfd3JpdGVfbXVsdGlwbGUoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5n LAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHZvaWQgKnNyYywgaW50IGNvdW50X2R3KTsKPj4+IMKgIMKgIGludCBhbWRncHVfcmluZ190ZXN0 X2hlbHBlcihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4gwqAgZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTFfMC5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9wc3BfdjExXzAuYwo+Pj4gaW5kZXggYmQ0MjQ4Yy4uYjNjZTViZSAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTFfMC5jCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjExXzAuYwo+Pj4gQEAgLTI2OSwx MCArMjY5LDggQEAgc3RhdGljIGludCBwc3BfdjExXzBfYm9vdGxvYWRlcl9sb2FkX2tkYihzdHJ1 Y3QgCj4+PiBwc3BfY29udGV4dCAqcHNwKQo+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+PiDCoCAtwqDCoMKgIG1lbXNldChwc3AtPmZ3 X3ByaV9idWYsIDAsIFBTUF8xX01FRyk7Cj4+PiAtCj4+PiDCoMKgwqDCoMKgIC8qIENvcHkgUFNQ IEtEQiBiaW5hcnkgdG8gbWVtb3J5ICovCj4+PiAtwqDCoMKgIG1lbWNweShwc3AtPmZ3X3ByaV9i dWYsIHBzcC0+a2RiX3N0YXJ0X2FkZHIsIHBzcC0+a2RiX2Jpbl9zaXplKTsKPj4+ICvCoMKgwqAg cHNwX2NvcHlfZncocHNwLCBwc3AtPmtkYl9zdGFydF9hZGRyLCBwc3AtPmtkYl9iaW5fc2l6ZSk7 Cj4+PiDCoCDCoMKgwqDCoMKgIC8qIFByb3ZpZGUgdGhlIFBTUCBLREIgdG8gYm9vdGxvYWRlciAq Lwo+Pj4gwqDCoMKgwqDCoCBXUkVHMzJfU09DMTUoTVAwLCAwLCBtbU1QMF9TTU5fQzJQTVNHXzM2 LAo+Pj4gQEAgLTMwMiwxMCArMzAwLDggQEAgc3RhdGljIGludCBwc3BfdjExXzBfYm9vdGxvYWRl cl9sb2FkX3NwbChzdHJ1Y3QgCj4+PiBwc3BfY29udGV4dCAqcHNwKQo+Pj4gwqDCoMKgwqDCoCBp ZiAocmV0KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+PiDCoCAtwqDCoMKg IG1lbXNldChwc3AtPmZ3X3ByaV9idWYsIDAsIFBTUF8xX01FRyk7Cj4+PiAtCj4+PiDCoMKgwqDC oMKgIC8qIENvcHkgUFNQIFNQTCBiaW5hcnkgdG8gbWVtb3J5ICovCj4+PiAtwqDCoMKgIG1lbWNw eShwc3AtPmZ3X3ByaV9idWYsIHBzcC0+c3BsX3N0YXJ0X2FkZHIsIHBzcC0+c3BsX2Jpbl9zaXpl KTsKPj4+ICvCoMKgwqAgcHNwX2NvcHlfZncocHNwLCBwc3AtPnNwbF9zdGFydF9hZGRyLCBwc3At PnNwbF9iaW5fc2l6ZSk7Cj4+PiDCoCDCoMKgwqDCoMKgIC8qIFByb3ZpZGUgdGhlIFBTUCBTUEwg dG8gYm9vdGxvYWRlciAqLwo+Pj4gwqDCoMKgwqDCoCBXUkVHMzJfU09DMTUoTVAwLCAwLCBtbU1Q MF9TTU5fQzJQTVNHXzM2LAo+Pj4gQEAgLTMzNSwxMCArMzMxLDggQEAgc3RhdGljIGludCAKPj4+ IHBzcF92MTFfMF9ib290bG9hZGVyX2xvYWRfc3lzZHJ2KHN0cnVjdCBwc3BfY29udGV4dCAqcHNw KQo+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBy ZXQ7Cj4+PiDCoCAtwqDCoMKgIG1lbXNldChwc3AtPmZ3X3ByaV9idWYsIDAsIFBTUF8xX01FRyk7 Cj4+PiAtCj4+PiDCoMKgwqDCoMKgIC8qIENvcHkgUFNQIFN5c3RlbSBEcml2ZXIgYmluYXJ5IHRv IG1lbW9yeSAqLwo+Pj4gLcKgwqDCoCBtZW1jcHkocHNwLT5md19wcmlfYnVmLCBwc3AtPnN5c19z dGFydF9hZGRyLCBwc3AtPnN5c19iaW5fc2l6ZSk7Cj4+PiArwqDCoMKgIHBzcF9jb3B5X2Z3KHBz cCwgcHNwLT5zeXNfc3RhcnRfYWRkciwgcHNwLT5zeXNfYmluX3NpemUpOwo+Pj4gwqAgwqDCoMKg wqDCoCAvKiBQcm92aWRlIHRoZSBzeXMgZHJpdmVyIHRvIGJvb3Rsb2FkZXIgKi8KPj4+IMKgwqDC oMKgwqAgV1JFRzMyX1NPQzE1KE1QMCwgMCwgbW1NUDBfU01OX0MyUE1TR18zNiwKPj4+IEBAIC0z NzEsMTAgKzM2NSw4IEBAIHN0YXRpYyBpbnQgcHNwX3YxMV8wX2Jvb3Rsb2FkZXJfbG9hZF9zb3Mo c3RydWN0IAo+Pj4gcHNwX2NvbnRleHQgKnBzcCkKPj4+IMKgwqDCoMKgwqAgaWYgKHJldCkKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4gwqAgLcKgwqDCoCBtZW1zZXQocHNw LT5md19wcmlfYnVmLCAwLCBQU1BfMV9NRUcpOwo+Pj4gLQo+Pj4gwqDCoMKgwqDCoCAvKiBDb3B5 IFNlY3VyZSBPUyBiaW5hcnkgdG8gUFNQIG1lbW9yeSAqLwo+Pj4gLcKgwqDCoCBtZW1jcHkocHNw LT5md19wcmlfYnVmLCBwc3AtPnNvc19zdGFydF9hZGRyLCBwc3AtPnNvc19iaW5fc2l6ZSk7Cj4+ PiArwqDCoMKgIHBzcF9jb3B5X2Z3KHBzcCwgcHNwLT5zb3Nfc3RhcnRfYWRkciwgcHNwLT5zb3Nf YmluX3NpemUpOwo+Pj4gwqAgwqDCoMKgwqDCoCAvKiBQcm92aWRlIHRoZSBQU1Agc2VjdXJlIE9T IHRvIGJvb3Rsb2FkZXIgKi8KPj4+IMKgwqDCoMKgwqAgV1JFRzMyX1NPQzE1KE1QMCwgMCwgbW1N UDBfU01OX0MyUE1TR18zNiwKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9wc3BfdjEyXzAuYyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3Yx Ml8wLmMKPj4+IGluZGV4IGM0ODI4YmQuLjYxOGU1YjYgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEyXzAuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvcHNwX3YxMl8wLmMKPj4+IEBAIC0xMzgsMTAgKzEzOCw4IEBAIHN0YXRpYyBp bnQgCj4+PiBwc3BfdjEyXzBfYm9vdGxvYWRlcl9sb2FkX3N5c2RydihzdHJ1Y3QgcHNwX2NvbnRl eHQgKnBzcCkKPj4+IMKgwqDCoMKgwqAgaWYgKHJldCkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gcmV0Owo+Pj4gwqAgLcKgwqDCoCBtZW1zZXQocHNwLT5md19wcmlfYnVmLCAwLCBQU1Bf MV9NRUcpOwo+Pj4gLQo+Pj4gwqDCoMKgwqDCoCAvKiBDb3B5IFBTUCBTeXN0ZW0gRHJpdmVyIGJp bmFyeSB0byBtZW1vcnkgKi8KPj4+IC3CoMKgwqAgbWVtY3B5KHBzcC0+ZndfcHJpX2J1ZiwgcHNw LT5zeXNfc3RhcnRfYWRkciwgcHNwLT5zeXNfYmluX3NpemUpOwo+Pj4gK8KgwqDCoCBwc3BfY29w eV9mdyhwc3AsIHBzcC0+c3lzX3N0YXJ0X2FkZHIsIHBzcC0+c3lzX2Jpbl9zaXplKTsKPj4+IMKg IMKgwqDCoMKgwqAgLyogUHJvdmlkZSB0aGUgc3lzIGRyaXZlciB0byBib290bG9hZGVyICovCj4+ PiDCoMKgwqDCoMKgIFdSRUczMl9TT0MxNShNUDAsIDAsIG1tTVAwX1NNTl9DMlBNU0dfMzYsCj4+ PiBAQCAtMTc5LDEwICsxNzcsOCBAQCBzdGF0aWMgaW50IHBzcF92MTJfMF9ib290bG9hZGVyX2xv YWRfc29zKHN0cnVjdCAKPj4+IHBzcF9jb250ZXh0ICpwc3ApCj4+PiDCoMKgwqDCoMKgIGlmIChy ZXQpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+IMKgIC3CoMKgwqAgbWVt c2V0KHBzcC0+ZndfcHJpX2J1ZiwgMCwgUFNQXzFfTUVHKTsKPj4+IC0KPj4+IMKgwqDCoMKgwqAg LyogQ29weSBTZWN1cmUgT1MgYmluYXJ5IHRvIFBTUCBtZW1vcnkgKi8KPj4+IC3CoMKgwqAgbWVt Y3B5KHBzcC0+ZndfcHJpX2J1ZiwgcHNwLT5zb3Nfc3RhcnRfYWRkciwgcHNwLT5zb3NfYmluX3Np emUpOwo+Pj4gK8KgwqDCoCBwc3BfY29weV9mdyhwc3AsIHBzcC0+c29zX3N0YXJ0X2FkZHIsIHBz cC0+c29zX2Jpbl9zaXplKTsKPj4+IMKgIMKgwqDCoMKgwqAgLyogUHJvdmlkZSB0aGUgUFNQIHNl Y3VyZSBPUyB0byBib290bG9hZGVyICovCj4+PiDCoMKgwqDCoMKgIFdSRUczMl9TT0MxNShNUDAs IDAsIG1tTVAwX1NNTl9DMlBNU0dfMzYsCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvcHNwX3YzXzEuYyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv cHNwX3YzXzEuYwo+Pj4gaW5kZXggZjJlNzI1Zi4uZDBhNmNjY2QgMTAwNjQ0Cj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjNfMS5jCj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9wc3BfdjNfMS5jCj4+PiBAQCAtMTAyLDEwICsxMDIsOCBAQCBzdGF0 aWMgaW50IAo+Pj4gcHNwX3YzXzFfYm9vdGxvYWRlcl9sb2FkX3N5c2RydihzdHJ1Y3QgcHNwX2Nv bnRleHQgKnBzcCkKPj4+IMKgwqDCoMKgwqAgaWYgKHJldCkKPj4+IMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gcmV0Owo+Pj4gwqAgLcKgwqDCoCBtZW1zZXQocHNwLT5md19wcmlfYnVmLCAwLCBQ U1BfMV9NRUcpOwo+Pj4gLQo+Pj4gwqDCoMKgwqDCoCAvKiBDb3B5IFBTUCBTeXN0ZW0gRHJpdmVy IGJpbmFyeSB0byBtZW1vcnkgKi8KPj4+IC3CoMKgwqAgbWVtY3B5KHBzcC0+ZndfcHJpX2J1Ziwg cHNwLT5zeXNfc3RhcnRfYWRkciwgcHNwLT5zeXNfYmluX3NpemUpOwo+Pj4gK8KgwqDCoCBwc3Bf Y29weV9mdyhwc3AsIHBzcC0+c3lzX3N0YXJ0X2FkZHIsIHBzcC0+c3lzX2Jpbl9zaXplKTsKPj4+ IMKgIMKgwqDCoMKgwqAgLyogUHJvdmlkZSB0aGUgc3lzIGRyaXZlciB0byBib290bG9hZGVyICov Cj4+PiDCoMKgwqDCoMKgIFdSRUczMl9TT0MxNShNUDAsIDAsIG1tTVAwX1NNTl9DMlBNU0dfMzYs Cj4+PiBAQCAtMTQzLDEwICsxNDEsOCBAQCBzdGF0aWMgaW50IHBzcF92M18xX2Jvb3Rsb2FkZXJf bG9hZF9zb3Moc3RydWN0IAo+Pj4gcHNwX2NvbnRleHQgKnBzcCkKPj4+IMKgwqDCoMKgwqAgaWYg KHJldCkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4gwqAgLcKgwqDCoCBt ZW1zZXQocHNwLT5md19wcmlfYnVmLCAwLCBQU1BfMV9NRUcpOwo+Pj4gLQo+Pj4gwqDCoMKgwqDC oCAvKiBDb3B5IFNlY3VyZSBPUyBiaW5hcnkgdG8gUFNQIG1lbW9yeSAqLwo+Pj4gLcKgwqDCoCBt ZW1jcHkocHNwLT5md19wcmlfYnVmLCBwc3AtPnNvc19zdGFydF9hZGRyLCBwc3AtPnNvc19iaW5f c2l6ZSk7Cj4+PiArwqDCoMKgIHBzcF9jb3B5X2Z3KHBzcCwgcHNwLT5zb3Nfc3RhcnRfYWRkciwg cHNwLT5zb3NfYmluX3NpemUpOwo+Pj4gwqAgwqDCoMKgwqDCoCAvKiBQcm92aWRlIHRoZSBQU1Ag c2VjdXJlIE9TIHRvIGJvb3Rsb2FkZXIgKi8KPj4+IMKgwqDCoMKgwqAgV1JFRzMyX1NPQzE1KE1Q MCwgMCwgbW1NUDBfU01OX0MyUE1TR18zNiwKPj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vYW1kLWdmeAo=