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, URIBL_BLOCKED,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 461C1C433DB for ; Mon, 25 Jan 2021 04:00:10 +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 D71E5225A9 for ; Mon, 25 Jan 2021 04:00:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D71E5225A9 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 0D46C89AC9; Mon, 25 Jan 2021 04:00:08 +0000 (UTC) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2043.outbound.protection.outlook.com [40.107.93.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD7E589A14; Mon, 25 Jan 2021 04:00:07 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TIeFhOo+PMDWnmWADKHrObOOLqNynecGTgLtFymp9jeNkAgEqVQdQZ5x1kCXuUC7oHFS7YoY81Py8wZyVoMv+yAoAfpanSUJBVexzM7oNVhTiza9OzPGvvdJhz+FGX+IrFsPEkE6qz7bZaspqntNhYKqH4XJst7KRKK+p/zODO9exbI8NM/Fg4pAqWojtAXXiYwqxXDGynUoSYorSRMBi7QsUBHqt4q0WlB+D+LfDgNpgUv5b6ZQK2je7OXXojQxUeyzm/HDwHYo0k+BtdQTtirup90MLCkvFhR3SiAo4xUvqHGjEnCrGUa+icG0BH/qFecibHPeb7Ey1lWq5eN3Ng== 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=OJsYoSdHlDiw0sNq+yPXg6eLraN5jwmq3lmlCE55jew=; b=hcKotl53gHpwgGdHVPCGuumDRxv547QbYzNEJAOt5ASX7cin4Vy6sYcFD5KmWwWnVuf8vkaKkLUFjMTNkfSWTAI8ukexPbcPCNERx7lyW9JWNgNJ5vvXBfyonqgugXebFMovafGkvChx7poJM9KQdZ1lhW/GCRy1B8BB+FFlSfdTUswb+4CsTHaki7clNm5hD2a2nZn4Mi7C0WfBhhdN0tJnJqGGb18Fe4hiQ4AS5SYN+EpZZtDXpI41v5tTY6uSLpXDdulkx/IJj4PF5upwR5HHn5Pp3g4q2bng6TAX646QpWjEwxza1U75rtbXNP9KLMZ1JHRH3ENRJFL/GMWmLg== 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=OJsYoSdHlDiw0sNq+yPXg6eLraN5jwmq3lmlCE55jew=; b=ahowd23rhW25tI7fJLPQp3srV5wsbh6jzGaWFUQ/Z9s4YA264CXfxaY0fn5p0FHe2gDSkqx1lzylTDV/zfuQdFSbgQg/pwJbizDyFHl/3dAGsU566Wbg6yUIDMw6qldLc02irGTwHUuBZ3aYHmnmizAITUcuZd1M1nvYJiaE56M= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Received: from BN6PR12MB1939.namprd12.prod.outlook.com (2603:10b6:404:107::12) by BN8PR12MB2980.namprd12.prod.outlook.com (2603:10b6:408:62::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.13; Mon, 25 Jan 2021 04:00:04 +0000 Received: from BN6PR12MB1939.namprd12.prod.outlook.com ([fe80::584b:493b:4126:e042]) by BN6PR12MB1939.namprd12.prod.outlook.com ([fe80::584b:493b:4126:e042%7]) with mapi id 15.20.3784.017; Mon, 25 Jan 2021 04:00:04 +0000 Subject: Re: [PATCH 3/3] drm/amd/display: Skip modeset for front porch change To: "Kazlauskas, Nicholas" , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210119155029.18943-1-aurabindo.pillai@amd.com> <20210119155029.18943-4-aurabindo.pillai@amd.com> From: Aurabindo Pillai Message-ID: <500e8330-cdab-583d-e8c8-167b445c0ec7@amd.com> Date: Sun, 24 Jan 2021 23:00:01 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 In-Reply-To: Content-Language: en-US X-Originating-IP: [165.204.84.11] X-ClientProxiedBy: BN6PR2001CA0014.namprd20.prod.outlook.com (2603:10b6:404:b4::24) To BN6PR12MB1939.namprd12.prod.outlook.com (2603:10b6:404:107::12) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [10.252.0.255] (165.204.84.11) by BN6PR2001CA0014.namprd20.prod.outlook.com (2603:10b6:404:b4::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.12 via Frontend Transport; Mon, 25 Jan 2021 04:00:03 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 89448665-92bc-4fbb-2785-08d8c0e5b25b X-MS-TrafficTypeDiagnostic: BN8PR12MB2980: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: y3i6AHye+AK0fJzYpTSn9sohn+OWj74wQ0HVsZ8AgbRQw6qCqydroZe8UkIqzTPMbRKm08UlJH3pVYGpcnMSWL42E5OzH5lOEgL9N+JtTEx81VNQ6VXoOuABUe5Jw8820Tq2SF964H9Oa6ZMt9OyS116fg5AZZgqCZm57GmeqvTHOhllrxYS4m3zvLUixPpXc2DAY4odXBTWGZcSkteK8ynDnSiO1xxdL3/8AIKM8nAhg+zer8hmvjnptl82ycUWYRtq+/oZcrgFmgYM0qM1XoGo6OJ2/aZHzYhDHj1psQAccrwff1LK7nCe850Xq/hxpjq87+y0Tns91FpcZlnyg8MDZLrV09iLk7v5NUjerNL4E0B3oj6rK6WSL6TuIS1afjgfJpZ5GJydcxcFCcB8ypI4IdSYv7w2jiRCvUpQhK2qkcY9QP6y02L1P9hGQhr/AluNEpck+hcD9jJGBbWwEm4yTuLuzkhhyLRrcEc1FFY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN6PR12MB1939.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(376002)(136003)(39860400002)(366004)(346002)(86362001)(956004)(52116002)(316002)(44832011)(31696002)(31686004)(16576012)(53546011)(30864003)(5660300002)(2616005)(450100002)(66556008)(66946007)(36756003)(8676002)(83380400001)(2906002)(6486002)(478600001)(66476007)(26005)(16526019)(186003)(4326008)(66574015)(8936002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?clBtVk05dTJrUmZQRUxKMTVXb2JGZzM4eUtxbDFiTFpHQmlFcXQ2VGpvYi9s?= =?utf-8?B?RkpiNkY5ZHIrU3pkcDdteFpzNWZrS0dqeXRBdS9XQnNzZnNWWUFBUXBBKzFM?= =?utf-8?B?a3ZxZ1BCVERZUllZUG1RYmpXcUJ5Q0NGM2h5aFowQlhnOEJqUWJsWTl0MW05?= =?utf-8?B?Q3hiZERGalU3V3g3d1NRc3Y3UHNyS0tYOWJ5U3NmaURQM3ZJTVhxRFRiR1Fv?= =?utf-8?B?MHIwNlVRdXN1cnY3WWhqM1RUUzVpYVpXaTFpU1liOVNGYnRta0ZkZGk2Mysz?= =?utf-8?B?Q0tFbTFjTlZWUzNqaElYMDdoazRoeHRQbUNtbCs2dXpGM0IzT0U1RjRxODAv?= =?utf-8?B?Vk1BZVBPMGpEWGJBYWZLRGF2ZTVPMy9KeGlYUkFFREl1KzliSGFKK25OR3R6?= =?utf-8?B?aFRyY3EvNFd0cEo4VmxYRXBUcUpGcEN0WVhqUTVxZTRXVXRleWwwWVdOaVZ0?= =?utf-8?B?TEdhcTQ4M0pSVlIrSmxPcGVoNHNZTSsvTW9zQzF6WlAraXR0ZjVFSkVHOGl3?= =?utf-8?B?NFpLNWE2L0ZvdkJ0WFFiMGhCMVlYaHk2Q0htM0hFUlZpMzlHd2RMb1NnclpE?= =?utf-8?B?WEdMMnZrK3ZaWW9kMEFhSlVaRUdPUWp1OCtEOExOcEIwYllSUkhjRWY2MkI5?= =?utf-8?B?SWJmVnhScHlncnZTYXRmMUJJZndNMTZhUWg5bEpaNVF5Qk5jWXQzWE1WRHA5?= =?utf-8?B?a0JXekhjYXNOSlprZXFmNkhhd3ZROXdkbzczNXRGSTBXVzliMktiQTZQNjlY?= =?utf-8?B?QW9GRWp5OEpUU1VleStlOThxQXVLWUNsdkFRTi9SUXhvSFloazNKVXdTSmIv?= =?utf-8?B?R09oenpmSExjeHJabytBTVJVbldCVnVRN3VKQkZzejkwMk9jT1drRkxXang3?= =?utf-8?B?b3RmbDM2YkJuZ3FWYlNjREV2Z1JUN2FlQmkrZU50bndlK01vQmNiZHQyUWRz?= =?utf-8?B?bWxxcHdOSklsS1pJdE5adWhWVjU4VDFlcFVMc2labkVLV3QzRVM0YldJejBu?= =?utf-8?B?WGFMSkZINkJnNWFQeTdYcmdtK3BoeDlRSXRiQi9oQmFXSk5NRHhaczllc1dI?= =?utf-8?B?VmloNUxkVXR4RFFmaEZvREE0V1VVd1hqdFpGTS9oQ1BNbnFkZVNoTDJ1Z1ht?= =?utf-8?B?UnFZd3ZBZUFzU0lGNGEwR3YxWVlpRnRLeW45WWJidTVYekdxc25uTk50YnVI?= =?utf-8?B?MVlYcnFhVjVCNnNMcVNSYVYxVTMrTm9SakFtZjNLMVdlYnhWOW5aZHgrNGY4?= =?utf-8?B?NHhNYkxoTEkxaENWSXhhZWN4NC9CSmQ2SzFmRGNsenIxR2pOWndmZkJUNUVO?= =?utf-8?Q?+NqnCbnQo3FoO9p61IolYFHZ5Yd7cUqrpF?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 89448665-92bc-4fbb-2785-08d8c0e5b25b X-MS-Exchange-CrossTenant-AuthSource: BN6PR12MB1939.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2021 04:00:04.8674 (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: NyxUrxEBCdFH4OiEfKUYkUcnZWNuq+d8BOu/8MljZhKjPHRF2VlW45Dq2EIFQ9Pis6YfNsZaT4eNZ1WuLCQs1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR12MB2980 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: stylon.wang@amd.com, thong.thai@amd.com, shashank.sharma@amd.com, wayne.lin@amd.com, alexander.deucher@amd.com, christian.koenig@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" CgpPbiAyMDIxLTAxLTIxIDI6MDUgcC5tLiwgS2F6bGF1c2thcywgTmljaG9sYXMgd3JvdGU6Cj4g T24gMjAyMS0wMS0xOSAxMDo1MCBhLm0uLCBBdXJhYmluZG8gUGlsbGFpIHdyb3RlOgo+PiBbV2h5 XQo+PiBBIHNlYW1sZXNzIHRyYW5zaXRpb24gYmV0d2VlbiBtb2RlcyBjYW4gYmUgcGVyZm9ybWVk IGlmIHRoZSBuZXcgaW5jb21pbmcKPj4gbW9kZSBoYXMgdGhlIHNhbWUgdGltaW5nIHBhcmFtZXRl cnMgYXMgdGhlIG9wdGltaXplZCBtb2RlIG9uIGEgZGlzcGxheSAKPj4gd2l0aCBhCj4+IHZhcmlh YmxlIHZ0b3RhbCBtaW4vbWF4Lgo+Pgo+PiBTbW9vdGggdmlkZW8gcGxheWJhY2sgdXNlY2FzZXMg Y2FuIGJlIGVuYWJsZWQgd2l0aCB0aGlzIHNlYW1sZXNzIAo+PiB0cmFuc2l0aW9uIGJ5Cj4+IHN3 aXRjaGluZyB0byBhIG5ldyBtb2RlIHdoaWNoIGhhcyBhIHJlZnJlc2ggcmF0ZSBtYXRjaGluZyB0 aGUgdmlkZW8uCj4+Cj4+IFtIb3ddCj4+IFNraXAgZnVsbCBtb2Rlc2V0IGlmIHVzZXJzcGFjZSBy ZXF1ZXN0ZWQgYSBjb21wYXRpYmxlIGZyZWVzeW5jIG1vZGUgCj4+IHdoaWNoIG9ubHkKPj4gZGlm ZmVycyBpbiB0aGUgZnJvbnQgcG9yY2ggdGltaW5nIGZyb20gdGhlIGN1cnJlbnQgbW9kZS4KPj4K Pj4gU2lnbmVkLW9mZi1ieTogQXVyYWJpbmRvIFBpbGxhaSA8YXVyYWJpbmRvLnBpbGxhaUBhbWQu Y29tPgo+PiBBY2tlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQu Y29tPgo+PiAtLS0KPj4gwqAgLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbS5jIHwgMjMzICsrKysrKysrKysrKysrKy0tLQo+PiDCoCAuLi4vZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmggfMKgwqAgMSArCj4+IMKgIDIgZmlsZXMgY2hhbmdl ZCwgMTk4IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyAKPj4gYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+IGluZGV4 IGFhZWYyZmI1MjhmZC4uZDY2NDk0Y2RkOGM4IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPj4gQEAgLTIxMyw2ICsyMTMs OSBAQCBzdGF0aWMgYm9vbCBhbWRncHVfZG1fcHNyX2Rpc2FibGVfYWxsKHN0cnVjdCAKPj4gYW1k Z3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0pOwo+PiDCoCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9m b3JtYXRfaW5mbyAqCj4+IMKgIGFtZF9nZXRfZm9ybWF0X2luZm8oY29uc3Qgc3RydWN0IGRybV9t b2RlX2ZiX2NtZDIgKmNtZCk7Cj4+ICtzdGF0aWMgYm9vbAo+PiAraXNfdGltaW5nX3VuY2hhbmdl ZF9mb3JfZnJlZXN5bmMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq bmV3X2NydGNfc3RhdGUpOwo+PiDCoCAvKgo+PiDCoMKgICogZG1fdmJsYW5rX2dldF9jb3VudGVy Cj4+IMKgwqAgKgo+PiBAQCAtNDk0MCw3ICs0OTQzLDggQEAgc3RhdGljIHZvaWQgCj4+IGZpbGxf c3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1fZGlzcGxheV9tb2RlKAo+PiDCoMKgwqDCoMKgIGNv bnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+IMKgwqDCoMKgwqAgY29uc3Qg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZSwKPj4gwqDCoMKgwqDC oCBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpvbGRfc3RyZWFtLAo+PiAtwqDCoMKgIGlu dCByZXF1ZXN0ZWRfYnBjKQo+PiArwqDCoMKgIGludCByZXF1ZXN0ZWRfYnBjLAo+PiArwqDCoMKg IGJvb2wgaXNfaW5fbW9kZXNldCkKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCBkY19jcnRj X3RpbWluZyAqdGltaW5nX291dCA9ICZzdHJlYW0tPnRpbWluZzsKPj4gwqDCoMKgwqDCoCBjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5m bzsKPj4gQEAgLTQ5OTUsMTkgKzQ5OTksMjggQEAgc3RhdGljIHZvaWQgCj4+IGZpbGxfc3RyZWFt X3Byb3BlcnRpZXNfZnJvbV9kcm1fZGlzcGxheV9tb2RlKAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg dGltaW5nX291dC0+aGRtaV92aWMgPSBodl9mcmFtZS52aWM7Cj4+IMKgwqDCoMKgwqAgfQo+PiAt wqDCoMKgIHRpbWluZ19vdXQtPmhfYWRkcmVzc2FibGUgPSBtb2RlX2luLT5jcnRjX2hkaXNwbGF5 Owo+PiAtwqDCoMKgIHRpbWluZ19vdXQtPmhfdG90YWwgPSBtb2RlX2luLT5jcnRjX2h0b3RhbDsK Pj4gLcKgwqDCoCB0aW1pbmdfb3V0LT5oX3N5bmNfd2lkdGggPQo+PiAtwqDCoMKgwqDCoMKgwqAg bW9kZV9pbi0+Y3J0Y19oc3luY19lbmQgLSBtb2RlX2luLT5jcnRjX2hzeW5jX3N0YXJ0Owo+PiAt wqDCoMKgIHRpbWluZ19vdXQtPmhfZnJvbnRfcG9yY2ggPQo+PiAtwqDCoMKgwqDCoMKgwqAgbW9k ZV9pbi0+Y3J0Y19oc3luY19zdGFydCAtIG1vZGVfaW4tPmNydGNfaGRpc3BsYXk7Cj4+IC3CoMKg wqAgdGltaW5nX291dC0+dl90b3RhbCA9IG1vZGVfaW4tPmNydGNfdnRvdGFsOwo+PiAtwqDCoMKg IHRpbWluZ19vdXQtPnZfYWRkcmVzc2FibGUgPSBtb2RlX2luLT5jcnRjX3ZkaXNwbGF5Owo+PiAt wqDCoMKgIHRpbWluZ19vdXQtPnZfZnJvbnRfcG9yY2ggPQo+PiAtwqDCoMKgwqDCoMKgwqAgbW9k ZV9pbi0+Y3J0Y192c3luY19zdGFydCAtIG1vZGVfaW4tPmNydGNfdmRpc3BsYXk7Cj4+IC3CoMKg wqAgdGltaW5nX291dC0+dl9zeW5jX3dpZHRoID0KPj4gLcKgwqDCoMKgwqDCoMKgIG1vZGVfaW4t PmNydGNfdnN5bmNfZW5kIC0gbW9kZV9pbi0+Y3J0Y192c3luY19zdGFydDsKPj4gLcKgwqDCoCB0 aW1pbmdfb3V0LT5waXhfY2xrXzEwMGh6ID0gbW9kZV9pbi0+Y3J0Y19jbG9jayAqIDEwOwo+PiAr wqDCoMKgIGlmIChpc19pbl9tb2Rlc2V0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0 LT5oX2FkZHJlc3NhYmxlID0gbW9kZV9pbi0+aGRpc3BsYXk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0 aW1pbmdfb3V0LT5oX3RvdGFsID0gbW9kZV9pbi0+aHRvdGFsOwo+PiArwqDCoMKgwqDCoMKgwqAg dGltaW5nX291dC0+aF9zeW5jX3dpZHRoID0gbW9kZV9pbi0+aHN5bmNfZW5kIC0gCj4+IG1vZGVf aW4tPmhzeW5jX3N0YXJ0Owo+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+aF9mcm9udF9w b3JjaCA9IG1vZGVfaW4tPmhzeW5jX3N0YXJ0IC0gCj4+IG1vZGVfaW4tPmhkaXNwbGF5Owo+PiAr wqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+dl90b3RhbCA9IG1vZGVfaW4tPnZ0b3RhbDsKPj4g K8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPnZfYWRkcmVzc2FibGUgPSBtb2RlX2luLT52ZGlz cGxheTsKPj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPnZfZnJvbnRfcG9yY2ggPSBtb2Rl X2luLT52c3luY19zdGFydCAtIAo+PiBtb2RlX2luLT52ZGlzcGxheTsKPj4gK8KgwqDCoMKgwqDC oMKgIHRpbWluZ19vdXQtPnZfc3luY193aWR0aCA9IG1vZGVfaW4tPnZzeW5jX2VuZCAtIAo+PiBt b2RlX2luLT52c3luY19zdGFydDsKPj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPnBpeF9j bGtfMTAwaHogPSBtb2RlX2luLT5jbG9jayAqIDEwOwo+PiArwqDCoMKgIH0gZWxzZSB7Cj4+ICvC oMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0LT5oX2FkZHJlc3NhYmxlID0gbW9kZV9pbi0+Y3J0Y19o ZGlzcGxheTsKPj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPmhfdG90YWwgPSBtb2RlX2lu LT5jcnRjX2h0b3RhbDsKPj4gK8KgwqDCoMKgwqDCoMKgIHRpbWluZ19vdXQtPmhfc3luY193aWR0 aCA9IG1vZGVfaW4tPmNydGNfaHN5bmNfZW5kIC0gCj4+IG1vZGVfaW4tPmNydGNfaHN5bmNfc3Rh cnQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0LT5oX2Zyb250X3BvcmNoID0gbW9kZV9p bi0+Y3J0Y19oc3luY19zdGFydCAtIAo+PiBtb2RlX2luLT5jcnRjX2hkaXNwbGF5Owo+PiArwqDC oMKgwqDCoMKgwqAgdGltaW5nX291dC0+dl90b3RhbCA9IG1vZGVfaW4tPmNydGNfdnRvdGFsOwo+ PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+dl9hZGRyZXNzYWJsZSA9IG1vZGVfaW4tPmNy dGNfdmRpc3BsYXk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0aW1pbmdfb3V0LT52X2Zyb250X3BvcmNo ID0gbW9kZV9pbi0+Y3J0Y192c3luY19zdGFydCAtIAo+PiBtb2RlX2luLT5jcnRjX3ZkaXNwbGF5 Owo+PiArwqDCoMKgwqDCoMKgwqAgdGltaW5nX291dC0+dl9zeW5jX3dpZHRoID0gbW9kZV9pbi0+ Y3J0Y192c3luY19lbmQgLSAKPj4gbW9kZV9pbi0+Y3J0Y192c3luY19zdGFydDsKPj4gK8KgwqDC oMKgwqDCoMKgIHRpbWluZ19vdXQtPnBpeF9jbGtfMTAwaHogPSBtb2RlX2luLT5jcnRjX2Nsb2Nr ICogMTA7Cj4+ICvCoMKgwqAgfQo+PiArCj4gCj4gTm90IHN1cmUgaWYgSSBjb21tZW50ZWQgb24g dGhpcyBsYXN0IHRpbWUgYnV0IEkgZG9uJ3QgcmVhbGx5IHVuZGVyc3RhbmQgCj4gd2hhdCB0aGlz IGlzX2luX21vZGVzZXQgbG9naWMgaXMgc3VwcG9zZWQgdG8gYmUgZG9pbmcgaGVyZS4KClRoaXMg aXMgc28gYmVjYXVzZSBjcmVhdGVfc3RyZWFtX2Zvcl9saW5rKCkgdGhhdCBlbmRzIHVwIGNhbGxp bmcgdGhpcyAKZnVuY3Rpb24gaGFzIHR3byBjYWxsZXJzLCBvbmUgd2hpY2ggaXMgZm9yIHN0cmVh bSB2YWxpZGF0aW9uIGluIHdoaWNoIAp0aGUgY3JlYXRlZCBzdHJlYW0gaXMgaW1tZWRpYXRlbHkg ZGlzY2FyZGVkLiBUaGUgb3RoZXIgaXMgZHVyaW5nIAptb2Rlc2V0LiBEZXBlbmRpbmcgb24gdGhl c2UgdHdvIGNhc2VzLCB3ZSB3YW50IHRvIGNvcHkgdGhlIHJpZ2h0IHRpbWluZyAKcGFyYW1ldGVy cy4gV2l0aCB0aGlzIG1ldGhvZCwgbWFqb3IgcmVmYWN0b3Igd2Fzbid0IG5lY2Vzc2FyeSB3aXRo IHRoZSAKdXBwZXIgbGF5ZXJzLgoKPiAKPiBXZSBzaG91bGQgYmUgbW9kaWZ5aW5nIGNydGNfdnN5 bmNfKiBmb3IgdGhlIGdlbmVyYXRlZCBtb2Rlcywgbm8/IE5vdCAKPiBqdXN0IHRoZSB2c3luY18q IHBhcmFtZXRlcnMuCgpUaGlzIGlzIGFscmVhZHkgaGFuZGxlZCB3aXRoOgoKCWlmICghZG1fc3Rh dGUpCgkJZHJtX21vZGVfc2V0X2NydGNpbmZvKCZtb2RlLCAwKTsKCglpZiAoZG1fc3RhdGUgJiYg aXNfZnNfdmlkX21vZGUpCgkJZHJtX21vZGVfc2V0X2NydGNpbmZvKCZzYXZlZF9tb2RlLCAwKTsK Cj4gCj4+IMKgwqDCoMKgwqAgdGltaW5nX291dC0+YXNwZWN0X3JhdGlvID0gZ2V0X2FzcGVjdF9y YXRpbyhtb2RlX2luKTsKPj4gwqDCoMKgwqDCoCBzdHJlYW0tPm91dHB1dF9jb2xvcl9zcGFjZSA9 IGdldF9vdXRwdXRfY29sb3Jfc3BhY2UodGltaW5nX291dCk7Cj4+IEBAIC01MjI3LDYgKzUyNDAs MzMgQEAgZ2V0X2hpZ2hlc3RfcmVmcmVzaF9yYXRlX21vZGUoc3RydWN0IAo+PiBhbWRncHVfZG1f Y29ubmVjdG9yICphY29ubmVjdG9yLAo+PiDCoMKgwqDCoMKgIHJldHVybiBtX3ByZWY7Cj4+IMKg IH0KPj4gK3N0YXRpYyBib29sIGlzX2ZyZWVzeW5jX3ZpZGVvX21vZGUoc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGFtZGdwdV9kbV9jb25uZWN0b3IgKmFjb25uZWN0b3IpCj4+ICt7Cj4+ICvCoMKgwqAg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmhpZ2hfbW9kZTsKPj4gK8KgwqDCoCBpbnQgdGltaW5n X2RpZmY7Cj4+ICsKPj4gK8KgwqDCoCBoaWdoX21vZGUgPSBnZXRfaGlnaGVzdF9yZWZyZXNoX3Jh dGVfbW9kZShhY29ubmVjdG9yLCBmYWxzZSk7Cj4+ICvCoMKgwqAgaWYgKCFoaWdoX21vZGUgfHwg IW1vZGUpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4+ICsKPj4gK8KgwqDCoCB0 aW1pbmdfZGlmZiA9IGhpZ2hfbW9kZS0+dnRvdGFsIC0gbW9kZS0+dnRvdGFsOwo+PiArCj4+ICvC oMKgwqAgaWYgKGhpZ2hfbW9kZS0+Y2xvY2sgPT0gMCB8fCBoaWdoX21vZGUtPmNsb2NrICE9IG1v ZGUtPmNsb2NrIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoCBoaWdoX21vZGUtPmhkaXNwbGF5ICE9IG1v ZGUtPmhkaXNwbGF5IHx8Cj4+ICvCoMKgwqDCoMKgwqDCoCBoaWdoX21vZGUtPnZkaXNwbGF5ICE9 IG1vZGUtPnZkaXNwbGF5IHx8Cj4+ICvCoMKgwqDCoMKgwqDCoCBoaWdoX21vZGUtPmhzeW5jX3N0 YXJ0ICE9IG1vZGUtPmhzeW5jX3N0YXJ0IHx8Cj4+ICvCoMKgwqDCoMKgwqDCoCBoaWdoX21vZGUt PmhzeW5jX2VuZCAhPSBtb2RlLT5oc3luY19lbmQgfHwKPj4gK8KgwqDCoMKgwqDCoMKgIGhpZ2hf bW9kZS0+aHRvdGFsICE9IG1vZGUtPmh0b3RhbCB8fAo+PiArwqDCoMKgwqDCoMKgwqAgaGlnaF9t b2RlLT5oc2tldyAhPSBtb2RlLT5oc2tldyB8fAo+PiArwqDCoMKgwqDCoMKgwqAgaGlnaF9tb2Rl LT52c2NhbiAhPSBtb2RlLT52c2NhbiB8fAo+PiArwqDCoMKgwqDCoMKgwqAgaGlnaF9tb2RlLT52 c3luY19zdGFydCAtIG1vZGUtPnZzeW5jX3N0YXJ0ICE9IHRpbWluZ19kaWZmIHx8Cj4+ICvCoMKg wqDCoMKgwqDCoCBoaWdoX21vZGUtPnZzeW5jX2VuZCAtIG1vZGUtPnZzeW5jX2VuZCAhPSB0aW1p bmdfZGlmZikKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4gK8KgwqDCoCBlbHNl Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsKPj4gK30KPj4gKwo+PiDCoCBzdGF0aWMg c3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqCj4+IMKgIGNyZWF0ZV9zdHJlYW1fZm9yX3Npbmsoc3Ry dWN0IGFtZGdwdV9kbV9jb25uZWN0b3IgKmFjb25uZWN0b3IsCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1fbW9kZSwK Pj4gQEAgLTUyNDAsMTUgKzUyODAsMjEgQEAgY3JlYXRlX3N0cmVhbV9mb3Jfc2luayhzdHJ1Y3Qg Cj4+IGFtZGdwdV9kbV9jb25uZWN0b3IgKmFjb25uZWN0b3IsCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBkbV9zdGF0ZSA/ICZkbV9zdGF0ZS0+YmFzZSA6IE5VTEw7Cj4+IMKgwqDCoMKgwqAgc3RydWN0 IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtID0gTlVMTDsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSBtb2RlID0gKmRybV9tb2RlOwo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlIHNhdmVkX21vZGU7Cj4+ICvCoMKgwqAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmZyZWVzeW5jX21vZGUgPSBOVUxMOwo+PiDCoMKgwqDCoMKgIGJvb2wgbmF0aXZlX21vZGVfZm91 bmQgPSBmYWxzZTsKPj4gwqDCoMKgwqDCoCBib29sIHNjYWxlID0gZG1fc3RhdGUgPyAoZG1fc3Rh dGUtPnNjYWxpbmcgIT0gUk1YX09GRikgOiBmYWxzZTsKPj4gwqDCoMKgwqDCoCBpbnQgbW9kZV9y ZWZyZXNoOwo+PiDCoMKgwqDCoMKgIGludCBwcmVmZXJyZWRfcmVmcmVzaCA9IDA7Cj4+ICvCoMKg wqAgYm9vbCBpc19mc192aWRfbW9kZSA9IGZhbHNlOwo+PiDCoCAjaWYgZGVmaW5lZChDT05GSUdf RFJNX0FNRF9EQ19EQ04pCj4+IMKgwqDCoMKgwqAgc3RydWN0IGRzY19kZWNfZHBjZF9jYXBzIGRz Y19jYXBzOwo+PiDCoMKgwqDCoMKgIHVpbnQzMl90IGxpbmtfYmFuZHdpZHRoX2ticHM7Cj4+IMKg ICNlbmRpZgo+PiDCoMKgwqDCoMKgIHN0cnVjdCBkY19zaW5rICpzaW5rID0gTlVMTDsKPj4gKwo+ PiArwqDCoMKgIG1lbXNldCgmc2F2ZWRfbW9kZSwgMCwgc2l6ZW9mKHNhdmVkX21vZGUpKTsKPj4g Kwo+PiDCoMKgwqDCoMKgIGlmIChhY29ubmVjdG9yID09IE5VTEwpIHsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIERSTV9FUlJPUigiYWNvbm5lY3RvciBpcyBOVUxMIVxuIik7Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gc3RyZWFtOwo+PiBAQCAtNTMwMSwyNSArNTM0NywzOSBAQCBjcmVhdGVf c3RyZWFtX2Zvcl9zaW5rKHN0cnVjdCAKPj4gYW1kZ3B1X2RtX2Nvbm5lY3RvciAqYWNvbm5lY3Rv ciwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9E RUJVR19EUklWRVIoIk5vIHByZWZlcnJlZCBtb2RlIGZvdW5kXG4iKTsKPj4gwqDCoMKgwqDCoCB9 IGVsc2Ugewo+PiAtwqDCoMKgwqDCoMKgwqAgZGVjaWRlX2NydGNfdGltaW5nX2Zvcl9kcm1fZGlz cGxheV9tb2RlKAo+PiArwqDCoMKgwqDCoMKgwqAgaXNfZnNfdmlkX21vZGUgPSBhbWRncHVfZnJl ZXN5bmNfdmlkX21vZGUgJiYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlz X2ZyZWVzeW5jX3ZpZGVvX21vZGUoJm1vZGUsIGFjb25uZWN0b3IpOwo+PiArwqDCoMKgwqDCoMKg wqAgaWYgKGlzX2ZzX3ZpZF9tb2RlKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyZWVz eW5jX21vZGUgPSBnZXRfaGlnaGVzdF9yZWZyZXNoX3JhdGVfbW9kZShhY29ubmVjdG9yLCAKPj4g ZmFsc2UpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzYXZlZF9tb2RlID0gbW9kZTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbW9kZSA9ICpmcmVlc3luY19tb2RlOwo+PiArwqDCoMKg wqDCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVjaWRlX2NydGNf dGltaW5nX2Zvcl9kcm1fZGlzcGxheV9tb2RlKAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICZtb2RlLCBwcmVmZXJyZWRfbW9kZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBkbV9zdGF0ZSA/IChkbV9zdGF0ZS0+c2NhbGluZyAhPSBSTVhfT0ZGKSA6 IGZhbHNlKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg cHJlZmVycmVkX3JlZnJlc2ggPSBkcm1fbW9kZV92cmVmcmVzaChwcmVmZXJyZWRfbW9kZSk7Cj4+ IMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIGlmICghZG1fc3RhdGUpCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBkcm1fbW9kZV9zZXRfY3J0Y2luZm8oJm1vZGUsIDApOwo+PiAtwqDCoMKgIC8qCj4+ ICvCoMKgwqAgaWYgKGRtX3N0YXRlICYmIGlzX2ZzX3ZpZF9tb2RlKQo+PiArwqDCoMKgwqDCoMKg wqAgZHJtX21vZGVfc2V0X2NydGNpbmZvKCZzYXZlZF9tb2RlLCAwKTsKPj4gKwo+PiArCj4gCj4g Tm90IHN1cmUgd2hhdCB0aGlzIGFib3ZlIGJpdCBpcyBkb2luZyBoZXJlOgo+IAo+ICgxKSBXZSdy ZSBpbiBhdG9taWMgY2hlY2sgYW5kICgyKSBJdCdzIGEgRlMgdmlkZW8gbW9kZQo+IAo+IC0+IHNl dCBDUlRDIG1vZGVzZXR0aW5nIHRpbWluZyBwYXJhbWV0ZXJzPwo+IAo+IFdoYXQncyB0aGlzIGZv cj8KCldpdGhvdXQgdGhpcyBjaGFuZ2UsIGtlcm5lbCB3b3VsZCB0ZWxsIHRoZSB1c2Vyc3BhY2Ug d2UncmUgc2VuZGluZyBvbmUgCm9mIHRoZSBmcmVlc3luYyBtb2RlIHRpbWluZywgYnV0IGFjdHVh bGx5IGl0IHdvdWxkIHNlbmQgdGhlIG9wdGltaXplZCAKbW9kZSB0aW1pbmcgcGFyYW1ldGVyLiBG b3IgaW5zdGFuY2UsIGlmIDE0NEh6IGlzIHRoZSBvcHRpbWl6ZWQgbW9kZSwgYW5kIAp0aGUgdXNl ciBzZXRzIDQ4SHosIHRoZSBkaXNwbGF5IHNldHRpbmdzIHdvdWxkIHJlZmxlY3QgdGhlIGNoYW5n ZSwgYnV0IAp0aGUgbW9uaXRvciB3b3VsZCBzdGlsbCBzZWUgMTQ0SHouCj4gCj4gIMKgwqDCoMKg wqDCoCAvKgo+PiDCoMKgwqDCoMKgICogSWYgc2NhbGluZyBpcyBlbmFibGVkIGFuZCByZWZyZXNo IHJhdGUgZGlkbid0IGNoYW5nZQo+PiDCoMKgwqDCoMKgICogd2UgY29weSB0aGUgdmljIGFuZCBw b2xhcml0aWVzIG9mIHRoZSBvbGQgdGltaW5ncwo+PiDCoMKgwqDCoMKgICovCj4+IC3CoMKgwqAg aWYgKCFzY2FsZSB8fCBtb2RlX3JlZnJlc2ggIT0gcHJlZmVycmVkX3JlZnJlc2gpCj4+IC3CoMKg wqDCoMKgwqDCoCBmaWxsX3N0cmVhbV9wcm9wZXJ0aWVzX2Zyb21fZHJtX2Rpc3BsYXlfbW9kZShz dHJlYW0sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZtb2RlLCAmYWNvbm5lY3Rvci0+YmFz ZSwgY29uX3N0YXRlLCBOVUxMLCByZXF1ZXN0ZWRfYnBjKTsKPj4gK8KgwqDCoCBpZiAoIShzY2Fs ZSAmJiBpc19mc192aWRfbW9kZSkgfHwgbW9kZV9yZWZyZXNoICE9IHByZWZlcnJlZF9yZWZyZXNo KQo+PiArwqDCoMKgwqDCoMKgwqAgZmlsbF9zdHJlYW1fcHJvcGVydGllc19mcm9tX2RybV9kaXNw bGF5X21vZGUoCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cmVhbSwgJm1vZGUsICZhY29u bmVjdG9yLT5iYXNlLCBjb25fc3RhdGUsIE5VTEwsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJlcXVlc3RlZF9icGMsIGRtX3N0YXRlID8gMSA6IDApOwo+PiDCoMKgwqDCoMKgIGVsc2UKPj4g LcKgwqDCoMKgwqDCoMKgIGZpbGxfc3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1fZGlzcGxheV9t b2RlKHN0cmVhbSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJm1vZGUsICZhY29ubmVjdG9y LT5iYXNlLCBjb25fc3RhdGUsIG9sZF9zdHJlYW0sIAo+PiByZXF1ZXN0ZWRfYnBjKTsKPj4gK8Kg wqDCoMKgwqDCoMKgIGZpbGxfc3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1fZGlzcGxheV9tb2Rl KAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJlYW0sICZtb2RlLCAmYWNvbm5lY3Rvci0+ YmFzZSwgY29uX3N0YXRlLCBvbGRfc3RyZWFtLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXF1ZXN0ZWRfYnBjLCBkbV9zdGF0ZSA/IDEgOiAwKTsKPiAKPiBJIGRvbid0IHNlZSBteSBmZWVk YmFjayBvbiBwcmV2aW91cyBwYXRjaGVzIGFkZHJlc3NlZCBoZXJlIC0gaXNuJ3QgaXQgCj4gY2xl YW5lciB0byBqdXN0IG1lcmdlIHRoZSBpc19zY2FsaW5nL2lzX2ZzX3ZpZF9tb2RlIGNoZWNrcyBo ZXJlPyBUaGUgCj4gaWRlYSBpcyB0aGF0IHdlJ3JlIHJlcGxhY2luZyB0aGUgbW9kZSB3aXRoIHRo ZSBwcmltYXJ5L3ByZWZlcnJlZCBpbiBib3RoIAo+IGNhc2VzLgoKU29ycnksIEkgbXVzdCBoYXZl IG1pc3NlZCBpdC4gV2lsbCBhZGRyZXNzIHRoaXMgaW4gdGhlIG5leHQgaXRlcmF0aW9uLgo+IAo+ IFVzaW5nIGRtX3N0YXRlIGFzIGEgY2hlY2sgZm9yIHZhbGlkYXRpb24gLyB2cyBhdG9taWMgY2hl Y2sgaXMgCj4gcXVlc3Rpb25hYmxlIGFzIHdlbGwuIEluIHByYWN0aWNlIHdlJ3JlIGd1YXJhbnRl ZWQgdG8gaGF2ZSBpdCB0b2RheSBidXQgCj4gaXQgbWlnaHQgbm90IGJlIGNsZWFyIGlmIHRoZXJl IGFyZSBmdXR1cmUgY2hhbmdlcyB0aGF0IGl0J3MgYmVpbmcgdXNlZCAKPiBmb3IgdGhpcyBwdXJw b3NlIGhlcmUgaWYgdGhhdCBjaGFuZ2VzLgoKVGhpcyBpcyBiZWNhdXNlIHdlJ3JlIHJldXNpbmcg dGhpcyBmdW5jdGlvbiBmb3IgdGVzdGluZyBzdHJlYW0gCnZhbGlkYXRpb24gYnkgY2FsbGluZyBp dCBkaXJlY3RseSB3aXRoIGEgTlVMTCBwYXJhbWV0ZXIgZm9yIGRtX3N0YXRlLiBJZiAKdGhpcyB1 c2FnZSBpcyBub3QgcmVjb21tZW5kZWQsIHRoZW4gYSBzZXBhcmF0ZSBmdW5jdGlvbiBjYW4gYmUg dXNlZCBmb3IgCmp1c3Qgc3RyZWFtIHZhbGlkYXRpb24gYW5kIHRoaXMgdXNhZ2Ugb2YgZG1fc3Rh dGUgY2FuIGJlIGRyb3BwZWQuCgo+IAo+PiDCoMKgwqDCoMKgIHN0cmVhbS0+dGltaW5nLmZsYWdz LkRTQyA9IDA7Cj4+IEBAIC01NDU2LDYgKzU1MTYsNyBAQCBkbV9jcnRjX2R1cGxpY2F0ZV9zdGF0 ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+IMKgwqDCoMKgwqAgc3RhdGUtPmFibV9sZXZlbCA9 IGN1ci0+YWJtX2xldmVsOwo+PiDCoMKgwqDCoMKgIHN0YXRlLT52cnJfc3VwcG9ydGVkID0gY3Vy LT52cnJfc3VwcG9ydGVkOwo+PiDCoMKgwqDCoMKgIHN0YXRlLT5mcmVlc3luY19jb25maWcgPSBj dXItPmZyZWVzeW5jX2NvbmZpZzsKPj4gK8KgwqDCoCBzdGF0ZS0+ZnJlZXN5bmNfdmlkZW9fbW9k ZSA9IGN1ci0+ZnJlZXN5bmNfdmlkZW9fbW9kZTsKPj4gwqDCoMKgwqDCoCBzdGF0ZS0+Y3JjX3Ny YyA9IGN1ci0+Y3JjX3NyYzsKPj4gwqDCoMKgwqDCoCBzdGF0ZS0+Y21faGFzX2RlZ2FtbWEgPSBj dXItPmNtX2hhc19kZWdhbW1hOwo+PiDCoMKgwqDCoMKgIHN0YXRlLT5jbV9pc19kZWdhbW1hX3Ny Z2IgPSBjdXItPmNtX2lzX2RlZ2FtbWFfc3JnYjsKPj4gQEAgLTcxNDksNyArNzIxMCw3IEBAIHN0 YXRpYyB2b2lkIAo+PiBhbWRncHVfZG1fY29ubmVjdG9yX2FkZF9mcmVlc3luY19tb2RlcyhzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdAo+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZG1f Y29ubmVjdG9yICphbWRncHVfZG1fY29ubmVjdG9yID0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHRv X2FtZGdwdV9kbV9jb25uZWN0b3IoY29ubmVjdG9yKTsKPj4gLcKgwqDCoCBpZiAoIShhbWRncHVf ZXhwX2ZyZWVzeW5jX3ZpZF9tb2RlICYmIGVkaWQpKQo+PiArwqDCoMKgIGlmICghKGFtZGdwdV9m cmVlc3luY192aWRfbW9kZSAmJiBlZGlkKSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsK Pj4gwqDCoMKgwqDCoCBpZiAoZWRpZC0+dmVyc2lvbiA9PSAxICYmIGVkaWQtPnJldmlzaW9uID4g MSkgewo+PiBAQCAtNzg0Nyw5ICs3OTA4LDI1IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9zdHJlYW1f aXJxX3BhcmFtZXRlcnMoCj4+IMKgwqDCoMKgwqAgaWYgKG5ld19jcnRjX3N0YXRlLT52cnJfc3Vw cG9ydGVkICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjb25maWcubWluX3JlZnJlc2hfaW5fdWh6 ICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjb25maWcubWF4X3JlZnJlc2hfaW5fdWh6KSB7Cj4+ IC3CoMKgwqDCoMKgwqDCoCBjb25maWcuc3RhdGUgPSBuZXdfY3J0Y19zdGF0ZS0+YmFzZS52cnJf ZW5hYmxlZCA/Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZSUl9TVEFURV9BQ1RJVkVfVkFS SUFCTEUgOgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWUlJfU1RBVEVfSU5BQ1RJVkU7Cj4+ ICvCoMKgwqDCoMKgwqDCoCAvKgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGlmIGZyZWVzeW5jIGNv bXBhdGlibGUgbW9kZSB3YXMgc2V0LCBjb25maWcuc3RhdGUgd2lsbCBiZSBzZXQKPj4gK8KgwqDC oMKgwqDCoMKgwqAgKiBpbiBhdG9taWMgY2hlY2sKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8KPj4g K8KgwqDCoMKgwqDCoMKgIGlmIChjb25maWcuc3RhdGUgPT0gVlJSX1NUQVRFX0FDVElWRV9GSVhF RCAmJgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25maWcuZml4ZWRfcmVmcmVzaF9pbl91 aHogJiYgY29uZmlnLm1heF9yZWZyZXNoX2luX3VoeiAmJgo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjb25maWcubWluX3JlZnJlc2hfaW5fdWh6ICYmCj4gCj4gVGhpcyBjb25kaXRpb24gZG9l c24ndCBuZWVkIHRvIGNoZWNrIG1heF9yZWZyZXNoL21pbl9yZWZyZXNoIGFzIGl0J3MgCj4gYWxy ZWFkeSBjaGVja2VkIGFib3ZlZC4KCldpbGwgZml4Lgo+IAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZuZXdfY3J0Y19zdGF0ZS0+YmFz ZSkgfHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXdfY3J0Y19zdGF0ZS0+ZnJlZXN5 bmNfdmlkZW9fbW9kZSkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdnJyX3BhcmFtcy5t YXhfcmVmcmVzaF9pbl91aHogPSBjb25maWcubWF4X3JlZnJlc2hfaW5fdWh6Owo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB2cnJfcGFyYW1zLm1pbl9yZWZyZXNoX2luX3VoeiA9IGNvbmZpZy5t aW5fcmVmcmVzaF9pbl91aHo7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZycl9wYXJhbXMu Zml4ZWRfcmVmcmVzaF9pbl91aHogPSAKPj4gY29uZmlnLmZpeGVkX3JlZnJlc2hfaW5fdWh6Owo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2cnJfcGFyYW1zLnN0YXRlID0gVlJSX1NUQVRFX0FD VElWRV9GSVhFRDsKPj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbmZpZy5zdGF0ZSA9IG5ld19jcnRjX3N0YXRlLT5iYXNlLnZycl9lbmFibGVk ID8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFZSUl9TVEFURV9BQ1RJVkVfVkFSSUFCTEUgOgo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVlJSX1NUQVRFX0lOQUNUSVZF Owo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+IMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGNvbmZpZy5zdGF0ZSA9IFZSUl9TVEFURV9VTlNVUFBPUlRFRDsKPj4g wqDCoMKgwqDCoCB9Cj4+IEBAIC04MTcxLDcgKzgyNDgsOCBAQCBzdGF0aWMgdm9pZCBhbWRncHVf ZG1fY29tbWl0X3BsYW5lcyhzdHJ1Y3QgCj4+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFzIHBhcnQgb2YgY29tbWl0Lgo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqLwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFtZGdwdV9kbV92cnJfYWN0aXZl KGRtX29sZF9jcnRjX3N0YXRlKSAhPQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVf ZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YW1kZ3B1X2RtX3Zycl9hY3RpdmUoYWNydGNfc3RhdGUpIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGFjcnRjX3N0YXRlLT5mcmVlc3luY192aWRlb19tb2RlKSB7Cj4gCj4gRG8gd2UgcmVh bGx5IG5lZWQgdGhpcyBjaGVjayBoZXJlPyBhbWRncHVfZG1fdnJyX2FjdGl2ZSBzaG91bGQgcGlj ayB1cCAKPiBvbiBWUlJfU1RBVEVfQUNUSVZFX0ZJWEVELCBubz8gSWYgaXQgZG9lc24ndCB0aGVu IHRoYXQgc2hvdWxkIGJlIGZpeGVkLgoKVGhpcyBzcGVjaWZpY2FsbHkgY2hlY2tzIGZvciBhIGNo YW5nZSB0aGUgY3VycmVudCBhbmQgcHJldmlvdXMgc3RhdGUuIEluIApib3RoIHRoZSBzdGF0ZXMs IGZyZWVzeW5jX3ZpZGVvX21vZGUgY2FuIGJlIGFjdGl2ZS4gVGhpcyBjb25kaXRpb24gd291bGQg CnJldHVybiBmYWxzZSBpbiB0aGUgYWJzZW5jZSBvZiBhZGRpdGlvbmFsIE9SIHdpdGggZnJlZXN5 bmNfdmlkZW9fbW9kZS4gCklmIGZyZWVzeW5jX3ZpZGVvX21vZGUgaXMgYWN0aXZlLCB3ZSB3YW50 IHRoaXMgYmxvY2sgb2YgY29kZSB0byBnZXQgCmV4ZWN1dGVkLiBJZiBmcmVlc3luY192aWRlb19t b2RlIGlzIG5vdCBhY3RpdmUsIHRoZW4gY29tcGFyaXNvbiB3aXRoIG9sZCAKYW5kIG5ldyBzdGF0 ZSBpcyBzdWZmaWNpZW50LiBJIGNhbiBhZGQgdGhpcyBsb2dpYyBpbnRvIGFub3RoZXIgZnVuY3Rp b24gCmFuZCBrZWVwIGl0IGNsZWFuZXIgaGVyZS4KCj4gCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHNwaW5fbG9ja19pcnFzYXZlKCZwY3J0Yy0+ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRjX3N0cmVhbV9hZGp1c3Rfdm1pbl92bWF4 KAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRtLT5kYywgYWNydGNfc3Rh dGUtPnN0cmVhbSwKPj4gQEAgLTg0NDIsOCArODUyMCwxMCBAQCBzdGF0aWMgdm9pZCBhbWRncHVf ZG1fYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCAKPj4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRt X29sZF9jcnRjX3N0YXRlLT5zdHJlYW0pCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChk bV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFtKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmVtb3ZlX3N0cmVhbShhZGV2LCBhY3J0YywgZG1fb2xkX2NydGNfc3RhdGUtPnN0 cmVhbSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1fb2xkX2NydGNfc3Rh dGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUgPSAwOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBtX3J1bnRpbWVfZ2V0X25vcmVzdW1lKGRl di0+ZGV2KTsKPj4gQEAgLTg0NTQsOCArODUzNCwxMCBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZG1f YXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCAKPj4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKG1vZGVyZXNldF9yZXF1aXJlZChuZXdfY3J0 Y19zdGF0ZSkpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0RFQlVHX0RSSVZF UigiQXRvbWljIGNvbW1pdDogUkVTRVQuIGNydGMgaWQgCj4+ICVkOlslcF1cbiIsIGFjcnRjLT5j cnRjX2lkLCBhY3J0Yyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGkuZS4gcmVz ZXQgbW9kZSAqLwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZG1fb2xkX2NydGNfc3Rh dGUtPnN0cmVhbSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRtX29sZF9jcnRjX3N0 YXRlLT5zdHJlYW0pIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZW1v dmVfc3RyZWFtKGFkZXYsIGFjcnRjLCBkbV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFtKTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbV9vbGRfY3J0Y19zdGF0ZS0+ZnJlZXN5bmNf dmlkZW9fbW9kZSA9IDA7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgbW9kZV9zZXRfcmVzZXRfcmVxdWlyZWQgPSB0cnVlOwo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIH0gLyogZm9yX2VhY2hfY3J0Y19pbl9zdGF0 ZSgpICovCj4+IEBAIC04ODY3LDYgKzg5NDksNyBAQCBzdGF0aWMgdm9pZCBnZXRfZnJlZXN5bmNf Y29uZmlnX2Zvcl9jcnRjKAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0b19hbWRncHVf ZG1fY29ubmVjdG9yKG5ld19jb25fc3RhdGUtPmJhc2UuY29ubmVjdG9yKTsKPj4gwqDCoMKgwqDC oCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZuZXdfY3J0Y19zdGF0ZS0+YmFzZS5t b2RlOwo+PiDCoMKgwqDCoMKgIGludCB2cmVmcmVzaCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUp Owo+PiArwqDCoMKgIGJvb2wgZnNfdmlkX21vZGUgPSBmYWxzZTsKPj4gwqDCoMKgwqDCoCBuZXdf Y3J0Y19zdGF0ZS0+dnJyX3N1cHBvcnRlZCA9IG5ld19jb25fc3RhdGUtPmZyZWVzeW5jX2NhcGFi bGUgJiYKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZyZWZy ZXNoID49IGFjb25uZWN0b3ItPm1pbl92ZnJlcSAmJgo+PiBAQCAtODg3NCwxNyArODk1NywyNSBA QCBzdGF0aWMgdm9pZCBnZXRfZnJlZXN5bmNfY29uZmlnX2Zvcl9jcnRjKAo+PiDCoMKgwqDCoMKg IGlmIChuZXdfY3J0Y19zdGF0ZS0+dnJyX3N1cHBvcnRlZCkgewo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgbmV3X2NydGNfc3RhdGUtPnN0cmVhbS0+aWdub3JlX21zYV90aW1pbmdfcGFyYW0gPSB0cnVl Owo+PiAtwqDCoMKgwqDCoMKgwqAgY29uZmlnLnN0YXRlID0gbmV3X2NydGNfc3RhdGUtPmJhc2Uu dnJyX2VuYWJsZWQgPwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZSUl9TVEFU RV9BQ1RJVkVfVkFSSUFCTEUgOgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZS Ul9TVEFURV9JTkFDVElWRTsKPj4gLcKgwqDCoMKgwqDCoMKgIGNvbmZpZy5taW5fcmVmcmVzaF9p bl91aHogPQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFjb25uZWN0b3ItPm1p bl92ZnJlcSAqIDEwMDAwMDA7Cj4+IC3CoMKgwqDCoMKgwqDCoCBjb25maWcubWF4X3JlZnJlc2hf aW5fdWh6ID0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhY29ubmVjdG9yLT5t YXhfdmZyZXEgKiAxMDAwMDAwOwo+PiArwqDCoMKgwqDCoMKgwqAgZnNfdmlkX21vZGUgPSBuZXdf Y3J0Y19zdGF0ZS0+ZnJlZXN5bmNfY29uZmlnLnN0YXRlID09IAo+PiBWUlJfU1RBVEVfQUNUSVZF X0ZJWEVEIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ld19jcnRjX3N0YXRlLT5mcmVl c3luY192aWRlb19tb2RlOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBjb25maWcubWluX3JlZnJl c2hfaW5fdWh6ID0gYWNvbm5lY3Rvci0+bWluX3ZmcmVxICogMTAwMDAwMDsKPj4gK8KgwqDCoMKg wqDCoMKgIGNvbmZpZy5tYXhfcmVmcmVzaF9pbl91aHogPSBhY29ubmVjdG9yLT5tYXhfdmZyZXEg KiAxMDAwMDAwOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZmlnLnZzaWZfc3VwcG9ydGVkID0g dHJ1ZTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNvbmZpZy5idHIgPSB0cnVlOwo+PiAtwqDCoMKg IH0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChmc192aWRfbW9kZSkgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb25maWcuc3RhdGUgPSBWUlJfU1RBVEVfQUNUSVZFX0ZJWEVEOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb25maWcuZml4ZWRfcmVmcmVzaF9pbl91aHogPSAKPj4gbmV3 X2NydGNfc3RhdGUtPmZyZWVzeW5jX2NvbmZpZy5maXhlZF9yZWZyZXNoX2luX3VoejsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2Ug aWYgKG5ld19jcnRjX3N0YXRlLT5iYXNlLnZycl9lbmFibGVkKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbmZpZy5zdGF0ZSA9IFZSUl9TVEFURV9BQ1RJVkVfVkFSSUFCTEU7Cj4+ICvC oMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25maWcu c3RhdGUgPSBWUlJfU1RBVEVfSU5BQ1RJVkU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKg wqAgfQo+PiArb3V0Ogo+PiDCoMKgwqDCoMKgIG5ld19jcnRjX3N0YXRlLT5mcmVlc3luY19jb25m aWcgPSBjb25maWc7Cj4+IMKgIH0KPj4gQEAgLTg4OTcsNiArODk4OCw1MSBAQCBzdGF0aWMgdm9p ZCByZXNldF9mcmVlc3luY19jb25maWdfZm9yX2NydGMoCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzaXplb2YobmV3X2NydGNfc3RhdGUtPnZycl9pbmZvcGFja2V0KSk7Cj4+IMKgIH0KPj4g K3N0YXRpYyBib29sCj4+ICtpc190aW1pbmdfdW5jaGFuZ2VkX2Zvcl9mcmVlc3luYyhzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPj4gK3sK Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBvbGRfbW9kZSwgbmV3X21vZGU7Cj4+ ICsKPj4gK8KgwqDCoCBpZiAoIW9sZF9jcnRjX3N0YXRlIHx8ICFuZXdfY3J0Y19zdGF0ZSkKPj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4gKwo+PiArwqDCoMKgIG9sZF9tb2RlID0g b2xkX2NydGNfc3RhdGUtPm1vZGU7Cj4+ICvCoMKgwqAgbmV3X21vZGUgPSBuZXdfY3J0Y19zdGF0 ZS0+bW9kZTsKPj4gKwo+PiArwqDCoMKgIGlmIChvbGRfbW9kZS5jbG9ja8KgwqDCoMKgwqDCoCA9 PSBuZXdfbW9kZS5jbG9jayAmJgo+PiArwqDCoMKgwqDCoMKgwqAgb2xkX21vZGUuaGRpc3BsYXnC oMKgwqAgPT0gbmV3X21vZGUuaGRpc3BsYXkgJiYKPj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2Rl LnZkaXNwbGF5wqDCoMKgID09IG5ld19tb2RlLnZkaXNwbGF5ICYmCj4+ICvCoMKgwqDCoMKgwqDC oCBvbGRfbW9kZS5odG90YWzCoMKgwqDCoMKgID09IG5ld19tb2RlLmh0b3RhbCAmJgo+PiArwqDC oMKgwqDCoMKgwqAgb2xkX21vZGUudnRvdGFswqDCoMKgwqDCoCAhPSBuZXdfbW9kZS52dG90YWwg JiYKPj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9tb2RlLmhzeW5jX3N0YXJ0ID09IG5ld19tb2RlLmhz eW5jX3N0YXJ0ICYmCj4+ICvCoMKgwqDCoMKgwqDCoCBvbGRfbW9kZS52c3luY19zdGFydCAhPSBu ZXdfbW9kZS52c3luY19zdGFydCAmJgo+PiArwqDCoMKgwqDCoMKgwqAgb2xkX21vZGUuaHN5bmNf ZW5kwqDCoCA9PSBuZXdfbW9kZS5oc3luY19lbmQgJiYKPj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9t b2RlLnZzeW5jX2VuZMKgwqAgIT0gbmV3X21vZGUudnN5bmNfZW5kICYmCj4+ICvCoMKgwqDCoMKg wqDCoCBvbGRfbW9kZS5oc2tld8KgwqDCoMKgwqDCoCA9PSBuZXdfbW9kZS5oc2tldyAmJgo+PiAr wqDCoMKgwqDCoMKgwqAgb2xkX21vZGUudnNjYW7CoMKgwqDCoMKgwqAgPT0gbmV3X21vZGUudnNj YW4gJiYKPj4gK8KgwqDCoMKgwqDCoMKgIChvbGRfbW9kZS52c3luY19lbmQgLSBvbGRfbW9kZS52 c3luY19zdGFydCkgPT0KPj4gK8KgwqDCoMKgwqDCoMKgIChuZXdfbW9kZS52c3luY19lbmQgLSBu ZXdfbW9kZS52c3luY19zdGFydCkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsKPj4g Kwo+PiArwqDCoMKgIHJldHVybiBmYWxzZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgc2V0 X2ZyZWVzeW5jX2ZpeGVkX2NvbmZpZyhzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAKPj4gKmRtX25ld19j cnRjX3N0YXRlKSB7Cj4+ICvCoMKgwqAgdWludDY0X3QgbnVtLCBkZW4sIHJlczsKPj4gK8KgwqDC oCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlID0gJmRtX25ld19jcnRjX3N0 YXRlLT5iYXNlOwo+PiArCj4+ICvCoMKgwqAgZG1fbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX2Nv bmZpZy5zdGF0ZSA9IFZSUl9TVEFURV9BQ1RJVkVfRklYRUQ7Cj4+ICsKPj4gK8KgwqDCoCBudW0g PSAodW5zaWduZWQgbG9uZyBsb25nKW5ld19jcnRjX3N0YXRlLT5tb2RlLmNsb2NrICogMTAwMCAq IAo+PiAxMDAwMDAwOwo+PiArwqDCoMKgIGRlbiA9ICh1bnNpZ25lZCBsb25nIGxvbmcpbmV3X2Ny dGNfc3RhdGUtPm1vZGUuaHRvdGFsICoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCAodW5zaWduZWQg bG9uZyBsb25nKW5ld19jcnRjX3N0YXRlLT5tb2RlLnZ0b3RhbDsKPj4gKwo+PiArwqDCoMKgIHJl cyA9IGRpdl91NjQobnVtLCBkZW4pOwo+PiArwqDCoMKgIGRtX25ld19jcnRjX3N0YXRlLT5mcmVl c3luY19jb25maWcuZml4ZWRfcmVmcmVzaF9pbl91aHogPSByZXM7Cj4+ICvCoMKgwqAgZG1fbmV3 X2NydGNfc3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUgPSB0cnVlOwo+PiArfQo+PiArCj4+IMKg IHN0YXRpYyBpbnQgZG1fdXBkYXRlX2NydGNfc3RhdGUoc3RydWN0IGFtZGdwdV9kaXNwbGF5X21h bmFnZXIgKmRtLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+IEBAIC04OTg3LDYgKzkxMjMsMTEgQEAgc3Rh dGljIGludCBkbV91cGRhdGVfY3J0Y19zdGF0ZShzdHJ1Y3QgCj4+IGFtZGdwdV9kaXNwbGF5X21h bmFnZXIgKmRtLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFRPRE86IFJlZmFjdG9yIHRoaXMg ZnVuY3Rpb24gdG8gYWxsb3cgdGhpcyBjaGVjayB0byB3b3JrCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgICogaW4gYWxsIGNvbmRpdGlvbnMuCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAoYW1kZ3B1X2ZyZWVzeW5jX3ZpZF9tb2RlICYmCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRtX25ld19jcnRjX3N0YXRlLT5zdHJlYW0gJiYKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaXNfdGltaW5nX3VuY2hhbmdlZF9mb3JfZnJlZXN5bmMobmV3X2NydGNf c3RhdGUsIAo+PiBvbGRfY3J0Y19zdGF0ZSkpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8gc2tpcF9tb2Rlc2V0Owo+PiArCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZG1fbmV3X2Ny dGNfc3RhdGUtPnN0cmVhbSAmJgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkY19pc19z dHJlYW1fdW5jaGFuZ2VkKG5ld19zdHJlYW0sIAo+PiBkbV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFt KSAmJgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkY19pc19zdHJlYW1fc2NhbGluZ191 bmNoYW5nZWQobmV3X3N0cmVhbSwgCj4+IGRtX29sZF9jcnRjX3N0YXRlLT5zdHJlYW0pKSB7Cj4+ IEBAIC05MDE4LDYgKzkxNTksMjYgQEAgc3RhdGljIGludCBkbV91cGRhdGVfY3J0Y19zdGF0ZShz dHJ1Y3QgCj4+IGFtZGdwdV9kaXNwbGF5X21hbmFnZXIgKmRtLAo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKCFkbV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFtKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBnb3RvIHNraXBfbW9kZXNldDsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChhbWRncHVf ZnJlZXN5bmNfdmlkX21vZGUgJiYgZG1fbmV3X2NydGNfc3RhdGUtPnN0cmVhbSAmJgo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpc190aW1pbmdfdW5jaGFuZ2VkX2Zvcl9mcmVlc3luYyhuZXdf Y3J0Y19zdGF0ZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIG9sZF9jcnRjX3N0YXRlKSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBuZXdfY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gZmFsc2U7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIERSTV9ERUJVR19EUklWRVIoCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgIk1vZGUgY2hhbmdlIG5vdCByZXF1aXJlZCBmb3IgZnJvbnQgcG9yY2ggY2hhbmdl LCAiCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInNldHRpbmcgbW9kZV9jaGFu Z2VkIHRvICVkIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXdfY3J0Y19z dGF0ZS0+bW9kZV9jaGFuZ2VkKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZXRf ZnJlZXN5bmNfZml4ZWRfY29uZmlnKGRtX25ld19jcnRjX3N0YXRlKTsKPj4gKwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBnb3RvIHNraXBfbW9kZXNldDsKPj4gK8KgwqDCoMKgwqDCoMKgIH0g ZWxzZSBpZiAoYW1kZ3B1X2ZyZWVzeW5jX3ZpZF9tb2RlICYmIGFjb25uZWN0b3IgJiYKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXNfZnJlZXN5bmNfdmlkZW9fbW9kZSgmbmV3X2Ny dGNfc3RhdGUtPm1vZGUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBhY29ubmVjdG9yKSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz ZXRfZnJlZXN5bmNfZml4ZWRfY29uZmlnKGRtX25ld19jcnRjX3N0YXRlKTsKPiAKPiBJIGRvbid0 IHRoaW5rIHRoaXMgZXh0cmEgY2hlY2sgaXMgbmVlZGVkIGhlcmUgYmVjYXVzZSB3ZSBoYXZlIHRo ZSBvbmUgCj4gYWJvdmUuCgpJbiB0aGUgc2Vjb25kIGJyYW5jaCwgc2luY2Ugd2UgY2FsbCBpc19m cmVlc3luY192aWRlb19tb2RlKCksIHRoZSBjaGVjayAKd2l0aCB0aGUgbW9kdWxlIHBhcmFtZXRl ciB3YXMgYWxzbyBuZWNlc3NhcnkgYXMgdGhpcyBpcyB0aGUgdHJpZ2dlcmluZyAKcG9pbnQgZm9y IHRoZSBWUlIgYXBpIGNvbmZpZ3VyYXRpb24gY2hhbmdlLiBBbHNvLCB0aGUgZmlyc3QgYnJhbmNo IHNraXBzIAp0aGUgbW9kZXNldCwgd2hpbGUgdGhlIHNlY29uZCBkb2VzbnQuIFNvIHdlIGNhbm5v dCBjbHViIHRoZW0gdG9nZXRoZXIuIApUaGUgc2Vjb25kIGJyYW5jaCBpcyBmb3IgdGhlIGNhc2Ug d2hlbiBhIGZyZWVzeW5jIG1vZGUgd2FzIHNldCAKYWNjb21wYW5pZWQgYnkgYSBtb2Rlc2V0LiBU aGlzIGhhcHBlbnMgd2hlbiB0aGUgcHJldmlvdXMgbW9kZSBoYWQgCmRpZmZlcmVudCBiYXNlIHRp bWluZ3MgYW5kIGhlbmNlIGEgbW9kZXNldCBpcyBuZWNlc3NhcnkuCgoKVGhhbmtzICYgUmVnYXJk cywKQXVyYWJpbmRvIFBpbGxhaQoKPiAKPiBSZWdhcmRzLAo+IE5pY2hvbGFzIEthemxhdXNrYXMK PiAKPj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSBpZiAoZG1fbmV3X2NydGNfc3RhdGUtPmZyZWVz eW5jX3ZpZGVvX21vZGUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1fbmV3X2NydGNf c3RhdGUtPmZyZWVzeW5jX3ZpZGVvX21vZGUgPSAwOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiAr Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBkbV9hdG9taWNfZ2V0X3N0YXRlKHN0YXRlLCAm ZG1fc3RhdGUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oCj4+IGluZGV4IDNlYTg1YmU5YzU0Ni4u ZmY0Njc1NTcyMTI1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv YW1kZ3B1X2RtL2FtZGdwdV9kbS5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgKPj4gQEAgLTQ3NCw2ICs0NzQsNyBAQCBzdHJ1Y3QgZG1f Y3J0Y19zdGF0ZSB7Cj4+IMKgwqDCoMKgwqAgYm9vbCBmcmVlc3luY190aW1pbmdfY2hhbmdlZDsK Pj4gwqDCoMKgwqDCoCBib29sIGZyZWVzeW5jX3Zycl9pbmZvX2NoYW5nZWQ7Cj4+ICvCoMKgwqAg Ym9vbCBmcmVlc3luY192aWRlb19tb2RlOwo+PiDCoMKgwqDCoMKgIGJvb2wgZHNjX2ZvcmNlX2No YW5nZWQ7Cj4+IMKgwqDCoMKgwqAgYm9vbCB2cnJfc3VwcG9ydGVkOwo+Pgo+IAoKLS0gClJlZ2Fy ZHMsCkF1cmFiaW5kbyBQaWxsYWkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4Cg==