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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 96A9FC6FD19 for ; Tue, 14 Mar 2023 02:57:04 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pbupA-0000UI-Kf; Mon, 13 Mar 2023 22:55:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pbup8-0000Tx-U8; Mon, 13 Mar 2023 22:55:38 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pbup5-0007JC-0w; Mon, 13 Mar 2023 22:55:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1678762534; x=1710298534; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=SSKmop2Z1XWRJmNc1ZmaNwQDuOtkXUvBgF+AgsFLyvc=; b=mPcB5SbLZCqrSNVE+B4v+WMUBF/6g8IBQOa9+zv0yDb5QiYpKk5TiXNM JYn0gCEmGjkY0s6BDKyVZG9QMXC5c+fVDc2EANiH/9EVVh3MpLCExMbU+ 4zaOqXfiojpg9nK7OGZgmZyWgh+1ed6VwY8giW3HFKByr8Z+izkqwCoKr gapJvt4ocIZmHHl/lurZJD8iJ9c4M2nVYXwBX+p2kz6e9cXZVSb+aUsyL R7DsYU+LhEZeevxAFcbWmyUDLv+iZZpiuf53/2DSodLznTueymslC48oX FF9zZE/9w+8n8bFHkOLkAjdl/4cJSPXoY6VbyjVXk/NphfEdmYRpmpj/u g==; X-IronPort-AV: E=Sophos;i="5.98,258,1673884800"; d="scan'208";a="329938099" Received: from mail-bn8nam12lp2168.outbound.protection.outlook.com (HELO NAM12-BN8-obe.outbound.protection.outlook.com) ([104.47.55.168]) by ob1.hgst.iphmx.com with ESMTP; 14 Mar 2023 10:55:28 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ElB0MrNaajTGJfX0n2UUCmYPWuVFe0E40LqodZ8x6p+CdeLBgGz28Ux6+rywKKu9Cw95xJu9UOF/aZmEZ+JbLG6sx0QbpRfGEFJ6TmI3sXv/7+t4X/ACa9iohuWKGljDP1kct/Fq/zcbC9Jmek6cJd9EnUP/BXLwIVmI1hDXaakFjOEY9NMffDrbGAQSNaaG0h/GqInJ0Cq9ZF2zcUttlrOvB1RCiREbhhgq5RDrKUo38vleBLYU24O5WS3/ApqQcGUw1Wyg+bcbVJS76INYcDIa5Aiu/D+hBn9KXFpCJPhE2mbnod65Ok3mJ/74YD1GnxxhAHXUYntBTzskUGNXBA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SSKmop2Z1XWRJmNc1ZmaNwQDuOtkXUvBgF+AgsFLyvc=; b=Hn+gOrPYs2ogFaxfRviydhSC3tTeDTPhGK+4HS2wU2hGCmmWIvdRLgodN8kMOQTdnhqZZg/FQtUkeU3jG7LpUyWD0cPxr7HyT4uGqHpavW35NUp76Zb+6kuAS0Ipxtpxg/Q/+MjmNLn/rXNE7uhw2l9CG4+D4GwbRQdzdlcXmaLg4ukufvXXxjpTu5vcPZWKd7jJGvlXdmiEixHvHKgSr63MKwREuxMNNxrlzRXFFiPDtoCQm1FPqxITwxYrYwPxXnL+G88lzq3GcFp/3gOQ+4vaXuQ0lrm+TBwqOqxAOol1M+0poLTvAvvGGYge41BX5vjLSpu/NWt+dkGXyGkn5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SSKmop2Z1XWRJmNc1ZmaNwQDuOtkXUvBgF+AgsFLyvc=; b=DHn7Lhtizbmvqn5CmEMo31iuE5JPouz8ZBno+L08wctpi9uXBQPj/ZsfK3aLgWHShEaQ+ERJWdG7UaWtZjctEY5a6zyQ1boQSaXJfV8fr22XeVLGC+jt+OrQV2APOIynJNOspDgwsV/68Avw/4is02ET3rwiS12oX2SFqQmDWMY= Received: from MN2PR04MB5951.namprd04.prod.outlook.com (2603:10b6:208:3f::13) by MN2PR04MB5808.namprd04.prod.outlook.com (2603:10b6:208:a3::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.24; Tue, 14 Mar 2023 02:55:26 +0000 Received: from MN2PR04MB5951.namprd04.prod.outlook.com ([fe80::9171:c66e:ce90:6c24]) by MN2PR04MB5951.namprd04.prod.outlook.com ([fe80::9171:c66e:ce90:6c24%7]) with mapi id 15.20.6178.024; Tue, 14 Mar 2023 02:55:25 +0000 From: Dmitry Fomichev To: "faithilikerun@gmail.com" , "qemu-devel@nongnu.org" CC: "hreitz@redhat.com" , "hare@suse.de" , "sgarzare@redhat.com" , "mehta.aaru20@gmail.com" , "stefanha@redhat.com" , "fam@euphon.net" , "qemu-block@nongnu.org" , "kwolf@redhat.com" , "jusual@redhat.com" , "damien.lemoal@opensource.wdc.com" Subject: Re: [PATCH v6 2/4] block: introduce zone append write for zoned devices Thread-Topic: [PATCH v6 2/4] block: introduce zone append write for zoned devices Thread-Index: AQHZUzt6nAdbqvB3k0uH0qoHAEhjIq75mmKA Date: Tue, 14 Mar 2023 02:55:25 +0000 Message-ID: <14354d8bf5725e96b891eb21dde3482a167ddc30.camel@wdc.com> References: <20230310103106.62124-1-faithilikerun@gmail.com> <20230310103106.62124-3-faithilikerun@gmail.com> In-Reply-To: <20230310103106.62124-3-faithilikerun@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=wdc.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR04MB5951:EE_|MN2PR04MB5808:EE_ x-ms-office365-filtering-correlation-id: 978a4692-4678-4697-0126-08db24378fd2 wdcipoutbound: EOP-TRUE x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SqSh6Cz16qhphfrni/zgcpLogJKsGncPl9rLBSuhNATsay43KMzfXXihdDVlvJje12Ds5EaX6E2rd+rVMFN8pqqBNaaEB6n95VaqNg4RnUAS0CP1tHlrX9x900R9q33ANT9bOE/KGPV7/352pQJ3eLxu0xdGYqBpuhvLJKvFduqQDLh+sOjnXmlTh8vBrRIjVQOgZftQ8RuTFRhGk/jl8waPqQpH6hPgBinhpXQzmFEwDWjafp8LB7aBCCHXaQxQvySfyODSGmC3+J7Su+7UrD70zhT+IYOpUO/kFWE5IrgJ9saGWzcnG8NpWWTu+AskZWHArioUSBFpUkUcQatjDy7bQrnT47do12AVMwj6iyHzvKD9tFnjR6HV9G4IE3Js7mnpvxlt+/m0flLzbLAwlDu6GzqVtxaaNl9SVRgCrWdCABJmlA/PCkuxUHkJqfHDoTMisr6XK0IO70TXxSkdKU1yX+Aqg8Q8UFwtyjK7PEsCTpAQ2RIzNJrgq9r5eIvQqKHcLm92cHQkWWvEyZ58yg9A1GPkn6vyyPqAI+jIqwhiqTFRLaEra05OkNf69d92koD9RQsV/pRqsQMMjx//Zp0lmahL15wOGvuXtAVi22ayDrD62Ys+ZGYkr+aECv/ngSF6X+uCwcz3m9qA98mJYPqXfZnKILJx1khb3Mz094EE6Wv/42L4dD4XZhQbo1mn3SchbpZVmRj7RKlfI0x3qA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR04MB5951.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(396003)(39860400002)(346002)(136003)(366004)(376002)(451199018)(36756003)(54906003)(110136005)(316002)(478600001)(6486002)(71200400001)(5660300002)(7416002)(2906002)(8936002)(30864003)(66476007)(66446008)(64756008)(76116006)(8676002)(4326008)(66556008)(66946007)(41300700001)(82960400001)(122000001)(38070700005)(86362001)(38100700002)(186003)(2616005)(6512007)(6506007)(26005)(83380400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NWl1VHRFYndUTEpYK3R4WUx0a2Voem5ERmlwYU1DNVFER0w2ZVIvT0p1QjFo?= =?utf-8?B?TjNkZGExN3lkL1dQamlyMlRqNGZJVE1DbkZDVHhpMXBNLzVLaGJVRVdMMVpa?= =?utf-8?B?bU9QUHNEQkEzU0gyR2VXV0NKcVlocjA0Vjh2bHBsZCtFWTE1VGJ3WUhPdFM0?= =?utf-8?B?SGQxSUNqN1lrdUFlZ1NRdzIvZ3BUM1oxdUg4bEVpOTYvTXFueVRCenNMOHVh?= =?utf-8?B?K2VDOU9LYnRzTXIvRU0wdlBQMTl0YXhVdVMyaTlwNThvNGtrU2dHVTF5dnNT?= =?utf-8?B?Yk5SOHBxVTZCaHo0WmppamtXd1RPMmYzMVRzcXZsZUkzWU9EVEVQUGo2MjRT?= =?utf-8?B?TGg5VURKb0hzZTdsRjZuRkE0angvTXIwanUzM096TWU4MEZ2N0VyYjJpM1hI?= =?utf-8?B?cnYwNGg4dFhDM0JrV0Rud1g4dWpoMWhtNDEzVVJ0ZUFIRlRKWFVVOHJkZlJh?= =?utf-8?B?bmpZQy9nWjM1RzJGcW9NbExwVUlYb2YwMzdnTmxCOWJhMm1ORzRGMUo2SUVF?= =?utf-8?B?cVBSc0xjSFh6NnowS3BZMEQ3d3A1bzdBSFpDb3pUSnRVSUF5WlAvSmhaRTJN?= =?utf-8?B?MGRUbVBEQzZDaGMvM1lpZ29QNEZ3SCtSWkEzS2RmUkxJeUtDVnVJQnREUUdv?= =?utf-8?B?Ry9Ea3RMWENIb0FmcUwwMzlPZy80STYzdmNUYWJLK2pBYU52QzZVdG5DVkpI?= =?utf-8?B?THRwYU5BRmdSamFZcXhYMm13dmhjd1NEWlZzQVZYWXBBaFZqbGdDa3RVREIv?= =?utf-8?B?SkE2cWJuYVNYSGdDSWpNRVJEY0hMS2tBU1dLdHNaZU5kQ0Jib1hsSURPQngw?= =?utf-8?B?Z1VJK25YWG9CdnBxUEVtY1YweCtwME51ZVladDJVdnd5NEpzdWgvcEFvd3JQ?= =?utf-8?B?TWVQTTN6RGU4STVhUWJSa3ZUcUlkTHE0RGVGME85eFB1OEtoZUl3ZG1Hbjh2?= =?utf-8?B?VzFsVVNRVCtKdlhia091eWpZQ0k1eitZU2x1TjNHK2h2OXF1TkZMS3dnN29a?= =?utf-8?B?dHdRazVBV0NwZUlvK28vdGYzUDRzbit0QUgrdEo4SEJKa2F0TUdMOTBWQVFD?= =?utf-8?B?emNzT0doZFhDeHN2M3YrQ0xxbjJ1cjhnc25WZFlYTThpanYzcXNiajBPbmww?= =?utf-8?B?cSthTjZ0RExYMFI5ZUk3QjdWbUIxWmZWaDYzb0k2eGg0UUErUElsbUJlWThq?= =?utf-8?B?cVpyaUdvVmprNGxsSmJrQWlXalN5RUpWNjBiNFMrcWh1dm8vQU1rbGR5TWJX?= =?utf-8?B?OGtzUDR5cHZUQlduK0pZUWFuM2dSUDJXOVByb0tOSkxodE1hSHRXTUVFTldv?= =?utf-8?B?WEc2VW94eE13RmRWUk1PT2NjYjcvZjdkV3hXU21XUTg5SU5vVWVybVZsN3Zv?= =?utf-8?B?d0lLMUYrUDBrbFFUU213TThVNHFsb2trckY5QlRyTkpiSW1McTl0eW9mNUM5?= =?utf-8?B?UG1qZkxsTVdYQnA2enNTUE5nNlVXMzl1dGxFWDRGVnlXMUJVUFBFbW5aaEFu?= =?utf-8?B?VlhYQ1JjaUVFOThDclZ4V0JyVm95S1Ryd2hrSDJ0cnpGdEl1cldGQUVHdTlW?= =?utf-8?B?NldrTEhFWjBlNEV1TUhVeGtTUElYcEptdUJaeEMxUndnc055aE04NGNYbTVp?= =?utf-8?B?RGVwYTZtWEdvSm4rU1BGUkt0Ym83MlF4eXo1R0ZicEdsdUZkMFZzUGMzQmhI?= =?utf-8?B?NFdZYXFzLzd4aDR5ejR4K2dSY2dGOTlObkVZY1VXcHQzR0s0MFNkZFJPMkRK?= =?utf-8?B?eXdNOWNlT1JEeFkyMm9XNDVwa2RRbnYvSTlLM2hibEh4V0ljWjI4dXE3d3ZK?= =?utf-8?B?U2NhYU4vRXl1czRvNmVuY3UvZ2NWald1ZWM4OVVkeE5FQ2crbTc2bitWejB2?= =?utf-8?B?ZmsrWmZraHhTeW1rRS9uOFMvSTNwTnFEbTA4V29YRUU0Q093cjJudi9NaEJa?= =?utf-8?B?d2w1YlFxbzBPT0FIUlhkaWNLOFAwTzEzWXo1MzVnRFkwNkdVbFpzeTdMdXgz?= =?utf-8?B?eE12SGwxUGE4a3hsU1Jaemd6QTlZbkNWWFowY1NMblZoeTJoVXlRdy9wa1R5?= =?utf-8?B?TGpZYzJFQ01vVEJXYWM2akozTkdxZGNybWlCQ2FMRERnRnR4TXF5bXVPZlR0?= =?utf-8?B?V0x1U2pXQzdtT3lwank3d2F5dGRxUUdYb2h1REJ4Vk13eW9VZERwS1pndEU1?= =?utf-8?B?T2c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: uYUUCm/aGA1SuBAayQhwwsiiRJd1kyBiKnnEINwxx7aoquamqx67Ykit3fZ8WxK91pnM90eAl+87fQ4cuzhpa/iLoJns+tciIqWliiUnPMCJhsugqW7OcSe+xX5dJQPgLrlKkyw1Gn4E2f3zq6nqQ0vWhmU648Nu0KPxIeZUtzs9vLQIzsvi6YL7hJ7bEqYeeWl/BQQyaAhb+rK2pc00Ged0zmfhLxSvRz/ePiSTjsbM5n/W6ahhuAkVyeeUtEYyWmXlS/zcsOjUQydRVTkI9rZvlZzgysbBqB0zpGt4bnzl5s1jp9DLZMU2LkNdVbfIGg8sIIyVa6JR/nL13sxEKyV1m51nxDKunp1MK3LjfOf8kE8M3np0LKxR4L8fFsJQht0v8NCx0eiZdOZciBWfniCMqto0p2ImW2y44UIG+TxKLagcLrntMRGsVeT9zAfWLClkZro4DdBRYZctMjQCtUCBK+OJaQcvV0UVapYsj4Az6AoGIRz02k84NhqMNvvP3LI4vAS8cGXT4HqyKKnlXtfnjcMCJ9AaUO05UDRHVCHaamxqLeDpM3i3b9mu7OXKm4gIVXFNLNGKIMNYcBegwiaVRX3kJ6CzOjosGiMNN1RObrUm6zGEmWqvSkm7umt3ph1WWCOqm38vMi8WjORcXCqNDahKxa4Inkb2SC8WqOByFo+gef1Y32OoV2tyg9eu01rDrDS/ElGCN5733ydaf6XMbD3sSJIrh/yXjawrOuZAfmvBQ3Xf2BrVg0I3u/HWZMBAes/zzanN97aK7dNhi8phF7xGPkuNvo9FFNoWHXwuiovGngvQYwdbqjcrEHdALHsi1L5FEdQm4Pda3FyiIlHciwWOdpAHLh1C7tZQXgjGd7deHlsoYYtJeUq+CKgB X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR04MB5951.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 978a4692-4678-4697-0126-08db24378fd2 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Mar 2023 02:55:25.7606 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ngOBUY/M2gP1uIFfsvECrDAJy+2OW7AVial5KwajU8XjXz91/eftsR+updZ/NhMFnPouWpAnWt6jOQsb4jM8qA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR04MB5808 Received-SPF: pass client-ip=68.232.143.124; envelope-from=prvs=430b82a1d=Dmitry.Fomichev@wdc.com; helo=esa2.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org T24gRnJpLCAyMDIzLTAzLTEwIGF0IDE4OjMxICswODAwLCBTYW0gTGkgd3JvdGU6Cj4gQSB6b25l IGFwcGVuZCBjb21tYW5kIGlzIGEgd3JpdGUgb3BlcmF0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZSBm aXJzdAo+IGxvZ2ljYWwgYmxvY2sgb2YgYSB6b25lIGFzIHRoZSB3cml0ZSBwb3NpdGlvbi4gV2hl biB3cml0aW5nIHRvIGEgem9uZWQKPiBibG9jayBkZXZpY2UgdXNpbmcgem9uZSBhcHBlbmQsIHRo ZSBieXRlIG9mZnNldCBvZiB3cml0ZXMgaXMgcG9pbnRpbmcKPiB0byB0aGUgd3JpdGUgcG9pbnRl ciBvZiB0aGF0IHpvbmUuCgpzL3dyaXRlcyBpcyBwb2ludGluZyB0byB0aGUgd3JpdGUgcG9pbnRl ciBvZiB0aGF0IHpvbmUvdGhlIGNhbGwgbWF5IHBvaW50IGF0IGFueQpwb3NpdGlvbiB3aXRoaW4g dGhlIHpvbmUgdG8gd2hpY2ggdGhlIGRhdGEgaXMgYmVpbmcgYXBwZW5kZWQvCgo+ICBVcG9uIGNv bXBsZXRpb24gdGhlIGRldmljZSB3aWxsCj4gcmVzcG9uZCB3aXRoIHRoZSBwb3NpdGlvbiB0aGUg ZGF0YQoKcy9wb3NpdGlvbiB0aGUgZGF0YS9wb3NpdGlvbiB3aGVyZSB0aGUgZGF0YS8KCj4gIGhh cyBiZWVuIHdyaXR0ZW4gaW4gdGhlIHpvbmUuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2FtIExpIDxm YWl0aGlsaWtlcnVuQGdtYWlsLmNvbT4KCldpdGggbml0cyBhYm92ZSwKClJldmlld2VkLWJ5OiBE bWl0cnkgRm9taWNoZXYgPGRtaXRyeS5mb21pY2hldkB3ZGMuY29tPgoKPiAtLS0KPiDCoGJsb2Nr L2Jsb2NrLWJhY2tlbmQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiDCoGJsb2NrL2ZpbGUtcG9zaXguY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiDCoGJs b2NrL2lvLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg MjEgKysrKysrKysrKysKPiDCoGJsb2NrL2lvX3VyaW5nLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoCA0ICsrKwo+IMKgYmxvY2svbGludXgtYWlvLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMyArKwo+IMKgYmxvY2svcmF3LWZvcm1hdC5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA4ICsrKysrCj4gwqBpbmNsdWRlL2Jsb2NrL2Js b2NrLWlvLmjCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgKysrCj4gwqBpbmNsdWRlL2Jsb2NrL2Js b2NrX2ludC1jb21tb24uaMKgIHzCoCA1ICsrKwo+IMKgaW5jbHVkZS9ibG9jay9yYXctYWlvLmjC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNCArKy0KPiDCoGluY2x1ZGUvc3lzZW11L2Jsb2NrLWJh Y2tlbmQtaW8uaCB8wqAgOSArKysrKwo+IMKgMTAgZmlsZXMgY2hhbmdlZCwgMTY2IGluc2VydGlv bnMoKyksIDYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsb2NrLWJhY2tl bmQuYyBiL2Jsb2NrL2Jsb2NrLWJhY2tlbmQuYwo+IGluZGV4IGY3MGIwOGUzZjYuLjI4ZThmNWQ3 NzggMTAwNjQ0Cj4gLS0tIGEvYmxvY2svYmxvY2stYmFja2VuZC5jCj4gKysrIGIvYmxvY2svYmxv Y2stYmFja2VuZC5jCj4gQEAgLTE4ODgsNiArMTg4OCw0NSBAQCBCbG9ja0FJT0NCICpibGtfYWlv X3pvbmVfbWdtdChCbG9ja0JhY2tlbmQgKmJsaywKPiBCbG9ja1pvbmVPcCBvcCwKPiDCoMKgwqDC oCByZXR1cm4gJmFjYi0+Y29tbW9uOwo+IMKgfQo+IMKgCj4gK3N0YXRpYyB2b2lkIGNvcm91dGlu ZV9mbiBibGtfYWlvX3pvbmVfYXBwZW5kX2VudHJ5KHZvaWQgKm9wYXF1ZSkKPiArewo+ICvCoMKg wqAgQmxrQWlvRW1BSU9DQiAqYWNiID0gb3BhcXVlOwo+ICvCoMKgwqAgQmxrUndDbyAqcndjbyA9 ICZhY2ItPnJ3Y287Cj4gKwo+ICvCoMKgwqAgcndjby0+cmV0ID0gYmxrX2NvX3pvbmVfYXBwZW5k KHJ3Y28tPmJsaywgJmFjYi0+Ynl0ZXMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ3Y28tPmlvYnVmLCByd2Nv LT5mbGFncyk7Cj4gK8KgwqDCoCBibGtfYWlvX2NvbXBsZXRlKGFjYik7Cj4gK30KPiArCj4gK0Js b2NrQUlPQ0IgKmJsa19haW9fem9uZV9hcHBlbmQoQmxvY2tCYWNrZW5kICpibGssIGludDY0X3Qg Km9mZnNldCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgUUVNVUlPVmVjdG9yICpxaW92LCBCZHJ2UmVxdWVzdEZsYWdzIGZs YWdzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBCbG9ja0NvbXBsZXRpb25GdW5jICpjYiwgdm9pZCAqb3BhcXVlKSB7Cj4g K8KgwqDCoCBCbGtBaW9FbUFJT0NCICphY2I7Cj4gK8KgwqDCoCBDb3JvdXRpbmUgKmNvOwo+ICvC oMKgwqAgSU9fQ09ERSgpOwo+ICsKPiArwqDCoMKgIGJsa19pbmNfaW5fZmxpZ2h0KGJsayk7Cj4g K8KgwqDCoCBhY2IgPSBibGtfYWlvX2dldCgmYmxrX2Fpb19lbV9haW9jYl9pbmZvLCBibGssIGNi LCBvcGFxdWUpOwo+ICvCoMKgwqAgYWNiLT5yd2NvID0gKEJsa1J3Q28pIHsKPiArwqDCoMKgwqDC oMKgwqAgLmJsa8KgwqDCoCA9IGJsaywKPiArwqDCoMKgwqDCoMKgwqAgLnJldMKgwqDCoCA9IE5P VF9ET05FLAo+ICvCoMKgwqDCoMKgwqDCoCAuZmxhZ3PCoCA9IGZsYWdzLAo+ICvCoMKgwqDCoMKg wqDCoCAuaW9idWbCoCA9IHFpb3YsCj4gK8KgwqDCoCB9Owo+ICvCoMKgwqAgYWNiLT5ieXRlcyA9 ICpvZmZzZXQ7Cj4gK8KgwqDCoCBhY2ItPmhhc19yZXR1cm5lZCA9IGZhbHNlOwo+ICsKPiArwqDC oMKgIGNvID0gcWVtdV9jb3JvdXRpbmVfY3JlYXRlKGJsa19haW9fem9uZV9hcHBlbmRfZW50cnks IGFjYik7Cj4gK8KgwqDCoCBhaW9fY29fZW50ZXIoYmxrX2dldF9haW9fY29udGV4dChibGspLCBj byk7Cj4gK8KgwqDCoCBhY2ItPmhhc19yZXR1cm5lZCA9IHRydWU7Cj4gK8KgwqDCoCBpZiAoYWNi LT5yd2NvLnJldCAhPSBOT1RfRE9ORSkgewo+ICvCoMKgwqDCoMKgwqDCoCByZXBsYXlfYmhfc2No ZWR1bGVfb25lc2hvdF9ldmVudChibGtfZ2V0X2Fpb19jb250ZXh0KGJsayksCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJsa19haW9fY29tcGxldGVfYmgsIGFjYik7Cj4gK8KgwqDCoCB9Cj4g Kwo+ICvCoMKgwqAgcmV0dXJuICZhY2ItPmNvbW1vbjsKPiArfQo+ICsKPiDCoC8qCj4gwqAgKiBT ZW5kIGEgem9uZV9yZXBvcnQgY29tbWFuZC4KPiDCoCAqIG9mZnNldCBpcyBhIGJ5dGUgb2Zmc2V0 IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBkZXZpY2UuIE5vIGFsaWdubWVudAo+IEBAIC0xOTM5LDYg KzE5NzgsMjcgQEAgaW50IGNvcm91dGluZV9mbiBibGtfY29fem9uZV9tZ210KEJsb2NrQmFja2Vu ZCAqYmxrLAo+IEJsb2NrWm9uZU9wIG9wLAo+IMKgwqDCoMKgIHJldHVybiByZXQ7Cj4gwqB9Cj4g wqAKPiArLyoKPiArICogU2VuZCBhIHpvbmVfYXBwZW5kIGNvbW1hbmQuCj4gKyAqLwo+ICtpbnQg Y29yb3V0aW5lX2ZuIGJsa19jb196b25lX2FwcGVuZChCbG9ja0JhY2tlbmQgKmJsaywgaW50NjRf dCAqb2Zmc2V0LAo+ICvCoMKgwqDCoMKgwqDCoCBRRU1VSU9WZWN0b3IgKnFpb3YsIEJkcnZSZXF1 ZXN0RmxhZ3MgZmxhZ3MpCj4gK3sKPiArwqDCoMKgIGludCByZXQ7Cj4gK8KgwqDCoCBJT19DT0RF KCk7Cj4gKwo+ICvCoMKgwqAgYmxrX2luY19pbl9mbGlnaHQoYmxrKTsKPiArwqDCoMKgIGJsa193 YWl0X3doaWxlX2RyYWluZWQoYmxrKTsKPiArwqDCoMKgIGlmICghYmxrX2lzX2F2YWlsYWJsZShi bGspKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGJsa19kZWNfaW5fZmxpZ2h0KGJsayk7Cj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiAtRU5PTUVESVVNOwo+ICvCoMKgwqAgfQo+ICsKPiArwqDCoMKgIHJl dCA9IGJkcnZfY29fem9uZV9hcHBlbmQoYmxrX2JzKGJsayksIG9mZnNldCwgcWlvdiwgZmxhZ3Mp Owo+ICvCoMKgwqAgYmxrX2RlY19pbl9mbGlnaHQoYmxrKTsKPiArwqDCoMKgIHJldHVybiByZXQ7 Cj4gK30KPiArCj4gwqB2b2lkIGJsa19kcmFpbihCbG9ja0JhY2tlbmQgKmJsaykKPiDCoHsKPiDC oMKgwqDCoCBCbG9ja0RyaXZlclN0YXRlICpicyA9IGJsa19icyhibGspOwo+IGRpZmYgLS1naXQg YS9ibG9jay9maWxlLXBvc2l4LmMgYi9ibG9jay9maWxlLXBvc2l4LmMKPiBpbmRleCA2MWVkNzY5 YWM4Li4yYmE5MTc0Nzc4IDEwMDY0NAo+IC0tLSBhL2Jsb2NrL2ZpbGUtcG9zaXguYwo+ICsrKyBi L2Jsb2NrL2ZpbGUtcG9zaXguYwo+IEBAIC0xNjAsNiArMTYwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg QkRSVlJhd1N0YXRlIHsKPiDCoMKgwqDCoCBib29sIGhhc193cml0ZV96ZXJvZXM6MTsKPiDCoMKg wqDCoCBib29sIHVzZV9saW51eF9haW86MTsKPiDCoMKgwqDCoCBib29sIHVzZV9saW51eF9pb191 cmluZzoxOwo+ICvCoMKgwqAgaW50NjRfdCAqb2Zmc2V0OyAvKiBvZmZzZXQgb2Ygem9uZSBhcHBl bmQgb3BlcmF0aW9uICovCj4gwqDCoMKgwqAgaW50IHBhZ2VfY2FjaGVfaW5jb25zaXN0ZW50OyAv KiBlcnJubyBmcm9tIGZkYXRhc3luYyBmYWlsdXJlICovCj4gwqDCoMKgwqAgYm9vbCBoYXNfZmFs bG9jYXRlOwo+IMKgwqDCoMKgIGJvb2wgbmVlZHNfYWxpZ25tZW50Owo+IEBAIC0xNjcyLDcgKzE2 NzMsNyBAQCBzdGF0aWMgc3NpemVfdCBoYW5kbGVfYWlvY2JfcndfdmVjdG9yKFJhd1Bvc2l4QUlP RGF0YQo+ICphaW9jYikKPiDCoMKgwqDCoCBzc2l6ZV90IGxlbjsKPiDCoAo+IMKgwqDCoMKgIGxl biA9IFJFVFJZX09OX0VJTlRSKAo+IC3CoMKgwqDCoMKgwqDCoCAoYWlvY2ItPmFpb190eXBlICYg UUVNVV9BSU9fV1JJVEUpID8KPiArwqDCoMKgwqDCoMKgwqAgKGFpb2NiLT5haW9fdHlwZSAmIChR RU1VX0FJT19XUklURSB8IFFFTVVfQUlPX1pPTkVfQVBQRU5EKSkgPwo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBxZW11X3B3cml0ZXYoYWlvY2ItPmFpb19maWxkZXMsCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFpb2NiLT5pby5pb3Ys Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGFpb2NiLT5pby5uaW92LAo+IEBAIC0xNzAxLDcgKzE3MDIsNyBAQCBzdGF0aWMgc3NpemVfdCBo YW5kbGVfYWlvY2JfcndfbGluZWFyKFJhd1Bvc2l4QUlPRGF0YQo+ICphaW9jYiwgY2hhciAqYnVm KQo+IMKgwqDCoMKgIHNzaXplX3QgbGVuOwo+IMKgCj4gwqDCoMKgwqAgd2hpbGUgKG9mZnNldCA8 IGFpb2NiLT5haW9fbmJ5dGVzKSB7Cj4gLcKgwqDCoMKgwqDCoMKgIGlmIChhaW9jYi0+YWlvX3R5 cGUgJiBRRU1VX0FJT19XUklURSkgewo+ICvCoMKgwqDCoMKgwqDCoCBpZiAoYWlvY2ItPmFpb190 eXBlICYgKFFFTVVfQUlPX1dSSVRFIHwgUUVNVV9BSU9fWk9ORV9BUFBFTkQpKSB7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGxlbiA9IHB3cml0ZShhaW9jYi0+YWlvX2ZpbGRlcywKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoY29uc3QgY2hh ciAqKWJ1ZiArIG9mZnNldCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBhaW9jYi0+YWlvX25ieXRlcyAtIG9mZnNldCwKPiBAQCAtMTc5NCw3ICsx Nzk1LDcgQEAgc3RhdGljIGludCBoYW5kbGVfYWlvY2Jfcncodm9pZCAqb3BhcXVlKQo+IMKgwqDC oMKgIH0KPiDCoAo+IMKgwqDCoMKgIG5ieXRlcyA9IGhhbmRsZV9haW9jYl9yd19saW5lYXIoYWlv Y2IsIGJ1Zik7Cj4gLcKgwqDCoCBpZiAoIShhaW9jYi0+YWlvX3R5cGUgJiBRRU1VX0FJT19XUklU RSkpIHsKPiArwqDCoMKgIGlmICghKGFpb2NiLT5haW9fdHlwZSAmIChRRU1VX0FJT19XUklURSB8 IFFFTVVfQUlPX1pPTkVfQVBQRU5EKSkpIHsKPiDCoMKgwqDCoMKgwqDCoMKgIGNoYXIgKnAgPSBi dWY7Cj4gwqDCoMKgwqDCoMKgwqDCoCBzaXplX3QgY291bnQgPSBhaW9jYi0+YWlvX25ieXRlcywg Y29weTsKPiDCoMKgwqDCoMKgwqDCoMKgIGludCBpOwo+IEBAIC0yNDMxLDYgKzI0MzIsMTAgQEAg c3RhdGljIGludCBjb3JvdXRpbmVfZm4gcmF3X2NvX3BydyhCbG9ja0RyaXZlclN0YXRlICpicywK PiB1aW50NjRfdCBvZmZzZXQsCj4gwqAjaWYgZGVmaW5lZChDT05GSUdfQkxLWk9ORUQpCj4gwqDC oMKgwqAgaWYgKGJzLT5ibC53cHMpIHsKPiDCoMKgwqDCoMKgwqDCoMKgIHFlbXVfY29fbXV0ZXhf bG9jaygmYnMtPmJsLndwcy0+Y29sb2NrKTsKPiArwqDCoMKgwqDCoMKgwqAgaWYgKHR5cGUgJiBR RU1VX0FJT19aT05FX0FQUEVORCAmJiBicy0+Ymwuem9uZV9zaXplKSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaW50IGluZGV4ID0gb2Zmc2V0IC8gYnMtPmJsLnpvbmVfc2l6ZTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBvZmZzZXQgPSBicy0+Ymwud3BzLT53cFtpbmRleF07Cj4gK8Kg wqDCoMKgwqDCoMKgIH0KPiDCoMKgwqDCoCB9Cj4gwqAjZW5kaWYKPiDCoAo+IEBAIC0yNDc4LDkg KzI0ODMsMTMgQEAgb3V0Ogo+IMKgI2lmIGRlZmluZWQoQ09ORklHX0JMS1pPTkVEKQo+IMKgwqDC oMKgIEJsb2NrWm9uZVdwcyAqd3BzID0gYnMtPmJsLndwczsKPiDCoMKgwqDCoCBpZiAocmV0ID09 IDApIHsKPiAtwqDCoMKgwqDCoMKgwqAgaWYgKHR5cGUgJiBRRU1VX0FJT19XUklURSAmJiB3cHMg JiYgYnMtPmJsLnpvbmVfc2l6ZSkgewo+ICvCoMKgwqDCoMKgwqDCoCBpZiAoKHR5cGUgJiAoUUVN VV9BSU9fV1JJVEUgfCBRRU1VX0FJT19aT05FX0FQUEVORCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgJiYgd3BzICYmIGJzLT5ibC56b25lX3NpemUpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW50IGluZGV4ID0gb2Zmc2V0IC8gYnMtPmJsLnpvbmVfc2l6ZTsKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKCFCRFJWX1pUX0lTX0NPTlYod3BzLT53cFtpbmRleF0pKSB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodHlwZSAmIFFFTVVfQUlPX1pPTkVf QVBQRU5EKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpzLT5v ZmZzZXQgPSB3cHMtPndwW2luZGV4XTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBBZHZhbmNlIHRoZSB3cCBp ZiBuZWVkZWQgKi8KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAob2Zmc2V0 ICsgYnl0ZXMgPiB3cHMtPndwW2luZGV4XSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgd3BzLT53cFtpbmRleF0gPSBvZmZzZXQgKyBieXRlczsKPiBAQCAtMjQ4 OCw3ICsyNDk3LDcgQEAgb3V0Ogo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4gwqDCoMKg wqDCoMKgwqDCoCB9Cj4gwqDCoMKgwqAgfSBlbHNlIHsKPiAtwqDCoMKgwqDCoMKgwqAgaWYgKHR5 cGUgJiBRRU1VX0FJT19XUklURSkgewo+ICvCoMKgwqDCoMKgwqDCoCBpZiAodHlwZSAmIChRRU1V X0FJT19XUklURSB8IFFFTVVfQUlPX1pPTkVfQVBQRU5EKSkgewo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1cGRhdGVfem9uZXNfd3Aocy0+ZmQsIGJzLT5ibC53cHMsIDAsIDEpOwo+IMKgwqDC oMKgwqDCoMKgwqAgfQo+IMKgwqDCoMKgIH0KPiBAQCAtMzQ5OCw2ICszNTA3LDQwIEBAIG91dDoK PiDCoH0KPiDCoCNlbmRpZgo+IMKgCj4gKyNpZiBkZWZpbmVkKENPTkZJR19CTEtaT05FRCkKPiAr c3RhdGljIGludCBjb3JvdXRpbmVfZm4gcmF3X2NvX3pvbmVfYXBwZW5kKEJsb2NrRHJpdmVyU3Rh dGUgKmJzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50NjRfdCAqb2Zmc2V0LAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUUVNVUlPVmVjdG9yICpxaW92LAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmRydlJlcXVlc3RGbGFncyBmbGFncykgewo+ICvCoMKg wqAgYXNzZXJ0KGZsYWdzID09IDApOwo+ICvCoMKgwqAgaW50NjRfdCB6b25lX3NpemVfbWFzayA9 IGJzLT5ibC56b25lX3NpemUgLSAxOwo+ICvCoMKgwqAgaW50NjRfdCBpb3ZfbGVuID0gMDsKPiAr wqDCoMKgIGludDY0X3QgbGVuID0gMDsKPiArwqDCoMKgIEJEUlZSYXdTdGF0ZSAqcyA9IGJzLT5v cGFxdWU7Cj4gK8KgwqDCoCBzLT5vZmZzZXQgPSBvZmZzZXQ7Cj4gKwo+ICvCoMKgwqAgaWYgKCpv ZmZzZXQgJiB6b25lX3NpemVfbWFzaykgewo+ICvCoMKgwqDCoMKgwqDCoCBlcnJvcl9yZXBvcnQo InNlY3RvciBvZmZzZXQgJSIgUFJJZDY0ICIgaXMgbm90IGFsaWduZWQgdG8gem9uZSBzaXplICIK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiJSIgUFJJZDMyICIi LCAqb2Zmc2V0IC8gNTEyLCBicy0+Ymwuem9uZV9zaXplIC8gNTEyKTsKPiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIC1FSU5WQUw7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgaW50NjRfdCB3ZyA9 IGJzLT5ibC53cml0ZV9ncmFudWxhcml0eTsKPiArwqDCoMKgIGludDY0X3Qgd2dfbWFzayA9IHdn IC0gMTsKPiArwqDCoMKgIGZvciAoaW50IGkgPSAwOyBpIDwgcWlvdi0+bmlvdjsgaSsrKSB7Cj4g K8KgwqDCoMKgwqDCoMKgIGlvdl9sZW4gPSBxaW92LT5pb3ZbaV0uaW92X2xlbjsKPiArwqDCoMKg wqDCoMKgwqAgaWYgKGlvdl9sZW4gJiB3Z19tYXNrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZXJyb3JfcmVwb3J0KCJsZW4gb2YgSU9WZWN0b3JbJWRdICUiIFBSSWQ2NCAiIGlzIG5vdCBh bGlnbmVkIHRvICIKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICJibG9jayBzaXplICUiIFBSSWQ2NCAiIiwgaSwgaW92X2xlbiwgd2cpOwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+ICvCoMKgwqDCoMKgwqDCoCB9Cj4g K8KgwqDCoMKgwqDCoMKgIGxlbiArPSBpb3ZfbGVuOwo+ICvCoMKgwqAgfQo+ICsKPiArwqDCoMKg IHJldHVybiByYXdfY29fcHJ3KGJzLCAqb2Zmc2V0LCBsZW4sIHFpb3YsIFFFTVVfQUlPX1pPTkVf QVBQRU5EKTsKPiArfQo+ICsjZW5kaWYKPiArCj4gwqBzdGF0aWMgY29yb3V0aW5lX2ZuIGludAo+ IMKgcmF3X2RvX3BkaXNjYXJkKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IG9mZnNldCwg aW50NjRfdCBieXRlcywKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGJs a2RldikKPiBAQCAtNDI1OSw2ICs0MzAyLDcgQEAgc3RhdGljIEJsb2NrRHJpdmVyIGJkcnZfaG9z dF9kZXZpY2UgPSB7Cj4gwqDCoMKgwqAgLyogem9uZSBtYW5hZ2VtZW50IG9wZXJhdGlvbnMgKi8K PiDCoMKgwqDCoCAuYmRydl9jb196b25lX3JlcG9ydCA9IHJhd19jb196b25lX3JlcG9ydCwKPiDC oMKgwqDCoCAuYmRydl9jb196b25lX21nbXQgPSByYXdfY29fem9uZV9tZ210LAo+ICvCoMKgwqAg LmJkcnZfY29fem9uZV9hcHBlbmQgPSByYXdfY29fem9uZV9hcHBlbmQsCj4gwqAjZW5kaWYKPiDC oH07Cj4gwqAKPiBkaWZmIC0tZ2l0IGEvYmxvY2svaW8uYyBiL2Jsb2NrL2lvLmMKPiBpbmRleCA1 ZGJmMWU1MGYyLi5mZTljYWJhYWY2IDEwMDY0NAo+IC0tLSBhL2Jsb2NrL2lvLmMKPiArKysgYi9i bG9jay9pby5jCj4gQEAgLTMxNTIsNiArMzE1MiwyNyBAQCBvdXQ6Cj4gwqDCoMKgwqAgcmV0dXJu IGNvLnJldDsKPiDCoH0KPiDCoAo+ICtpbnQgY29yb3V0aW5lX2ZuIGJkcnZfY29fem9uZV9hcHBl bmQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3QgKm9mZnNldCwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBRRU1VSU9WZWN0b3IgKnFpb3YsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmRydlJlcXVl c3RGbGFncyBmbGFncykKPiArewo+ICvCoMKgwqAgQmxvY2tEcml2ZXIgKmRydiA9IGJzLT5kcnY7 Cj4gK8KgwqDCoCBDb3JvdXRpbmVJT0NvbXBsZXRpb24gY28gPSB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLmNvcm91dGluZSA9IHFlbXVfY29yb3V0aW5lX3NlbGYoKSwKPiArwqDCoMKgIH07 Cj4gK8KgwqDCoCBJT19DT0RFKCk7Cj4gKwo+ICvCoMKgwqAgYmRydl9pbmNfaW5fZmxpZ2h0KGJz KTsKPiArwqDCoMKgIGlmICghZHJ2IHx8ICFkcnYtPmJkcnZfY29fem9uZV9hcHBlbmQgfHwgYnMt PmJsLnpvbmVkID09IEJMS19aX05PTkUpIHsKPiArwqDCoMKgwqDCoMKgwqAgY28ucmV0ID0gLUVO T1RTVVA7Cj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+ICvCoMKgwqAgfQo+ICvCoMKgwqAg Y28ucmV0ID0gZHJ2LT5iZHJ2X2NvX3pvbmVfYXBwZW5kKGJzLCBvZmZzZXQsIHFpb3YsIGZsYWdz KTsKPiArb3V0Ogo+ICvCoMKgwqAgYmRydl9kZWNfaW5fZmxpZ2h0KGJzKTsKPiArwqDCoMKgIHJl dHVybiBjby5yZXQ7Cj4gK30KPiArCj4gwqB2b2lkICpxZW11X2Jsb2NrYWxpZ24oQmxvY2tEcml2 ZXJTdGF0ZSAqYnMsIHNpemVfdCBzaXplKQo+IMKgewo+IMKgwqDCoMKgIElPX0NPREUoKTsKPiBk aWZmIC0tZ2l0IGEvYmxvY2svaW9fdXJpbmcuYyBiL2Jsb2NrL2lvX3VyaW5nLmMKPiBpbmRleCA5 NzNlMTVkODc2Li5mNzQ4OGMyNDFhIDEwMDY0NAo+IC0tLSBhL2Jsb2NrL2lvX3VyaW5nLmMKPiAr KysgYi9ibG9jay9pb191cmluZy5jCj4gQEAgLTM0NSw2ICszNDUsMTAgQEAgc3RhdGljIGludCBs dXJpbmdfZG9fc3VibWl0KGludCBmZCwgTHVyaW5nQUlPQ0IgKmx1cmluZ2NiLAo+IEx1cmluZ1N0 YXRlICpzLAo+IMKgwqDCoMKgwqDCoMKgwqAgaW9fdXJpbmdfcHJlcF93cml0ZXYoc3FlcywgZmQs IGx1cmluZ2NiLT5xaW92LT5pb3YsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsdXJpbmdjYi0+cWlvdi0+bmlvdiwgb2Zmc2V0KTsK PiDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ICvCoMKgwqAgY2FzZSBRRU1VX0FJT19aT05FX0FQ UEVORDoKPiArwqDCoMKgwqDCoMKgwqAgaW9fdXJpbmdfcHJlcF93cml0ZXYoc3FlcywgZmQsIGx1 cmluZ2NiLT5xaW92LT5pb3YsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGx1cmluZ2NiLT5xaW92LT5uaW92LCBvZmZzZXQpOwo+ICvC oMKgwqDCoMKgwqDCoCBicmVhazsKPiDCoMKgwqDCoCBjYXNlIFFFTVVfQUlPX1JFQUQ6Cj4gwqDC oMKgwqDCoMKgwqDCoCBpb191cmluZ19wcmVwX3JlYWR2KHNxZXMsIGZkLCBsdXJpbmdjYi0+cWlv di0+aW92LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGx1cmluZ2NiLT5xaW92LT5uaW92LCBvZmZzZXQpOwo+IGRpZmYgLS1naXQgYS9i bG9jay9saW51eC1haW8uYyBiL2Jsb2NrL2xpbnV4LWFpby5jCj4gaW5kZXggZDJjZmI3ZjUyMy4u MTk1OTgzNDE1NiAxMDA2NDQKPiAtLS0gYS9ibG9jay9saW51eC1haW8uYwo+ICsrKyBiL2Jsb2Nr L2xpbnV4LWFpby5jCj4gQEAgLTM4OSw2ICszODksOSBAQCBzdGF0aWMgaW50IGxhaW9fZG9fc3Vi bWl0KGludCBmZCwgc3RydWN0IHFlbXVfbGFpb2NiCj4gKmxhaW9jYiwgb2ZmX3Qgb2Zmc2V0LAo+ IMKgwqDCoMKgIGNhc2UgUUVNVV9BSU9fV1JJVEU6Cj4gwqDCoMKgwqDCoMKgwqDCoCBpb19wcmVw X3B3cml0ZXYoaW9jYnMsIGZkLCBxaW92LT5pb3YsIHFpb3YtPm5pb3YsIG9mZnNldCk7Cj4gwqDC oMKgwqDCoMKgwqDCoCBicmVhazsKPiArwqDCoMKgIGNhc2UgUUVNVV9BSU9fWk9ORV9BUFBFTkQ6 Cj4gK8KgwqDCoMKgwqDCoMKgIGlvX3ByZXBfcHdyaXRldihpb2NicywgZmQsIHFpb3YtPmlvdiwg cWlvdi0+bmlvdiwgb2Zmc2V0KTsKPiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4gwqDCoMKgwqAg Y2FzZSBRRU1VX0FJT19SRUFEOgo+IMKgwqDCoMKgwqDCoMKgwqAgaW9fcHJlcF9wcmVhZHYoaW9j YnMsIGZkLCBxaW92LT5pb3YsIHFpb3YtPm5pb3YsIG9mZnNldCk7Cj4gwqDCoMKgwqDCoMKgwqDC oCBicmVhazsKPiBkaWZmIC0tZ2l0IGEvYmxvY2svcmF3LWZvcm1hdC5jIGIvYmxvY2svcmF3LWZv cm1hdC5jCj4gaW5kZXggNzJlMjNlN2I1NS4uNjRlN2Q0OGQwNCAxMDA2NDQKPiAtLS0gYS9ibG9j ay9yYXctZm9ybWF0LmMKPiArKysgYi9ibG9jay9yYXctZm9ybWF0LmMKPiBAQCAtMzMyLDYgKzMz MiwxMyBAQCByYXdfY29fem9uZV9tZ210KEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBCbG9ja1pvbmVP cCBvcCwKPiDCoMKgwqDCoCByZXR1cm4gYmRydl9jb196b25lX21nbXQoYnMtPmZpbGUtPmJzLCBv cCwgb2Zmc2V0LCBsZW4pOwo+IMKgfQo+IMKgCj4gK3N0YXRpYyBpbnQgY29yb3V0aW5lX2ZuIEdS QVBIX1JETE9DSwo+ICtyYXdfY29fem9uZV9hcHBlbmQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsaW50 NjRfdCAqb2Zmc2V0LCBRRU1VSU9WZWN0b3IgKnFpb3YsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBCZHJ2UmVxdWVzdEZsYWdzIGZsYWdzKQo+ICt7Cj4gK8KgwqDCoCBy ZXR1cm4gYmRydl9jb196b25lX2FwcGVuZChicy0+ZmlsZS0+YnMsIG9mZnNldCwgcWlvdiwgZmxh Z3MpOwo+ICt9Cj4gKwo+IMKgc3RhdGljIGludDY0X3QgY29yb3V0aW5lX2ZuIEdSQVBIX1JETE9D Swo+IMKgcmF3X2NvX2dldGxlbmd0aChCbG9ja0RyaXZlclN0YXRlICpicykKPiDCoHsKPiBAQCAt NjM1LDYgKzY0Miw3IEBAIEJsb2NrRHJpdmVyIGJkcnZfcmF3ID0gewo+IMKgwqDCoMKgIC5iZHJ2 X2NvX3BkaXNjYXJkwqDCoMKgwqAgPSAmcmF3X2NvX3BkaXNjYXJkLAo+IMKgwqDCoMKgIC5iZHJ2 X2NvX3pvbmVfcmVwb3J0wqAgPSAmcmF3X2NvX3pvbmVfcmVwb3J0LAo+IMKgwqDCoMKgIC5iZHJ2 X2NvX3pvbmVfbWdtdMKgID0gJnJhd19jb196b25lX21nbXQsCj4gK8KgwqDCoCAuYmRydl9jb196 b25lX2FwcGVuZCA9ICZyYXdfY29fem9uZV9hcHBlbmQsCj4gwqDCoMKgwqAgLmJkcnZfY29fYmxv Y2tfc3RhdHVzID0gJnJhd19jb19ibG9ja19zdGF0dXMsCj4gwqDCoMKgwqAgLmJkcnZfY29fY29w eV9yYW5nZV9mcm9tID0gJnJhd19jb19jb3B5X3JhbmdlX2Zyb20sCj4gwqDCoMKgwqAgLmJkcnZf Y29fY29weV9yYW5nZV90b8KgID0gJnJhd19jb19jb3B5X3JhbmdlX3RvLAo+IGRpZmYgLS1naXQg YS9pbmNsdWRlL2Jsb2NrL2Jsb2NrLWlvLmggYi9pbmNsdWRlL2Jsb2NrL2Jsb2NrLWlvLmgKPiBp bmRleCAxOWQxZmFkOWNmLi41NWZjYTAyOTkxIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvYmxvY2sv YmxvY2staW8uaAo+ICsrKyBiL2luY2x1ZGUvYmxvY2svYmxvY2staW8uaAo+IEBAIC0xMjAsNiAr MTIwLDEwIEBAIGludCBjb3JvdXRpbmVfZm4gR1JBUEhfUkRMT0NLCj4gYmRydl9jb196b25lX3Jl cG9ydChCbG9ja0RyaXZlclN0YXRlICpicywKPiDCoGludCBjb3JvdXRpbmVfZm4gR1JBUEhfUkRM T0NLIGJkcnZfY29fem9uZV9tZ210KEJsb2NrRHJpdmVyU3RhdGUgKmJzLAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCbG9ja1pvbmVPcCBvcCwKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVu KTsKPiAraW50IGNvcm91dGluZV9mbiBHUkFQSF9SRExPQ0sgYmRydl9jb196b25lX2FwcGVuZChC bG9ja0RyaXZlclN0YXRlICpicywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaW50NjRfdCAqb2Zmc2V0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBRRU1VSU9WZWN0b3IgKnFpb3YsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJkcnZSZXF1ZXN0RmxhZ3MgZmxhZ3MpOwo+IMKgCj4gwqBi b29sIGJkcnZfY2FuX3dyaXRlX3plcm9lc193aXRoX3VubWFwKEJsb2NrRHJpdmVyU3RhdGUgKmJz KTsKPiDCoGludCBiZHJ2X2Jsb2NrX3N0YXR1cyhCbG9ja0RyaXZlclN0YXRlICpicywgaW50NjRf dCBvZmZzZXQsCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvYmxvY2svYmxvY2tfaW50LWNvbW1vbi5o IGIvaW5jbHVkZS9ibG9jay9ibG9ja19pbnQtCj4gY29tbW9uLmgKPiBpbmRleCAxOTkxNWIzNGFm Li5jY2Q4ODExOTE5IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvYmxvY2svYmxvY2tfaW50LWNvbW1v bi5oCj4gKysrIGIvaW5jbHVkZS9ibG9jay9ibG9ja19pbnQtY29tbW9uLmgKPiBAQCAtNzI0LDYg KzcyNCw5IEBAIHN0cnVjdCBCbG9ja0RyaXZlciB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEJsb2NrWm9uZURlc2NyaXB0b3IgKnpvbmVzKTsKPiDCoMKgwqDCoCBpbnQgY29yb3V0aW5lX2Zu ICgqYmRydl9jb196b25lX21nbXQpKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBCbG9ja1pvbmVPcAo+ IG9wLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBs ZW4pOwo+ICvCoMKgwqAgaW50IGNvcm91dGluZV9mbiAoKmJkcnZfY29fem9uZV9hcHBlbmQpKEJs b2NrRHJpdmVyU3RhdGUgKmJzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludDY0X3QgKm9m ZnNldCwgUUVNVUlPVmVjdG9yICpxaW92LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJkcnZS ZXF1ZXN0RmxhZ3MgZmxhZ3MpOwo+IMKgCj4gwqDCoMKgwqAgLyogcmVtb3ZhYmxlIGRldmljZSBz cGVjaWZpYyAqLwo+IMKgwqDCoMKgIGJvb2wgY29yb3V0aW5lX2ZuIEdSQVBIX1JETE9DS19QVFIg KCpiZHJ2X2NvX2lzX2luc2VydGVkKSgKPiBAQCAtODg3LDYgKzg5MCw4IEBAIHR5cGVkZWYgc3Ry dWN0IEJsb2NrTGltaXRzIHsKPiDCoAo+IMKgwqDCoMKgIC8qIGFycmF5IG9mIHdyaXRlIHBvaW50 ZXJzJyBsb2NhdGlvbiBvZiBlYWNoIHpvbmUgaW4gdGhlIHpvbmVkIGRldmljZS4gKi8KPiDCoMKg wqDCoCBCbG9ja1pvbmVXcHMgKndwczsKPiArCj4gK8KgwqDCoCBpbnQ2NF90IHdyaXRlX2dyYW51 bGFyaXR5Owo+IMKgfSBCbG9ja0xpbWl0czsKPiDCoAo+IMKgdHlwZWRlZiBzdHJ1Y3QgQmRydk9w QmxvY2tlciBCZHJ2T3BCbG9ja2VyOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Jsb2NrL3Jhdy1h aW8uaCBiL2luY2x1ZGUvYmxvY2svcmF3LWFpby5oCj4gaW5kZXggZWRhNmE3YTI1My4uZmI5Yzlm NWEwMSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2Jsb2NrL3Jhdy1haW8uaAo+ICsrKyBiL2luY2x1 ZGUvYmxvY2svcmF3LWFpby5oCj4gQEAgLTMwLDYgKzMwLDcgQEAKPiDCoCNkZWZpbmUgUUVNVV9B SU9fVFJVTkNBVEXCoMKgwqDCoCAweDAwODAKPiDCoCNkZWZpbmUgUUVNVV9BSU9fWk9ORV9SRVBP UlTCoCAweDAxMDAKPiDCoCNkZWZpbmUgUUVNVV9BSU9fWk9ORV9NR01UwqDCoMKgIDB4MDIwMAo+ ICsjZGVmaW5lIFFFTVVfQUlPX1pPTkVfQVBQRU5EwqAgMHgwNDAwCj4gwqAjZGVmaW5lIFFFTVVf QUlPX1RZUEVfTUFTSyBcCj4gwqDCoMKgwqDCoMKgwqDCoCAoUUVNVV9BSU9fUkVBRCB8IFwKPiDC oMKgwqDCoMKgwqDCoMKgwqAgUUVNVV9BSU9fV1JJVEUgfCBcCj4gQEAgLTQwLDcgKzQxLDggQEAK PiDCoMKgwqDCoMKgwqDCoMKgwqAgUUVNVV9BSU9fQ09QWV9SQU5HRSB8IFwKPiDCoMKgwqDCoMKg wqDCoMKgwqAgUUVNVV9BSU9fVFJVTkNBVEUgfCBcCj4gwqDCoMKgwqDCoMKgwqDCoMKgIFFFTVVf QUlPX1pPTkVfUkVQT1JUIHwgXAo+IC3CoMKgwqDCoMKgwqDCoMKgIFFFTVVfQUlPX1pPTkVfTUdN VCkKPiArwqDCoMKgwqDCoMKgwqDCoCBRRU1VX0FJT19aT05FX01HTVQgfCBcCj4gK8KgwqDCoMKg wqDCoMKgwqAgUUVNVV9BSU9fWk9ORV9BUFBFTkQpCj4gwqAKPiDCoC8qIEFJTyBmbGFncyAqLwo+ IMKgI2RlZmluZSBRRU1VX0FJT19NSVNBTElHTkVEwqDCoCAweDEwMDAKPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9zeXNlbXUvYmxvY2stYmFja2VuZC1pby5oIGIvaW5jbHVkZS9zeXNlbXUvYmxvY2st YmFja2VuZC0KPiBpby5oCj4gaW5kZXggZjU3NWFiNWI2Yi4uZTcxNjU5MWExYSAxMDA2NDQKPiAt LS0gYS9pbmNsdWRlL3N5c2VtdS9ibG9jay1iYWNrZW5kLWlvLmgKPiArKysgYi9pbmNsdWRlL3N5 c2VtdS9ibG9jay1iYWNrZW5kLWlvLmgKPiBAQCAtNTMsNiArNTMsOSBAQCBCbG9ja0FJT0NCICpi bGtfYWlvX3pvbmVfcmVwb3J0KEJsb2NrQmFja2VuZCAqYmxrLCBpbnQ2NF90Cj4gb2Zmc2V0LAo+ IMKgQmxvY2tBSU9DQiAqYmxrX2Fpb196b25lX21nbXQoQmxvY2tCYWNrZW5kICpibGssIEJsb2Nr Wm9uZU9wIG9wLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW4sCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJsb2Nr Q29tcGxldGlvbkZ1bmMgKmNiLCB2b2lkICpvcGFxdWUpOwo+ICtCbG9ja0FJT0NCICpibGtfYWlv X3pvbmVfYXBwZW5kKEJsb2NrQmFja2VuZCAqYmxrLCBpbnQ2NF90ICpvZmZzZXQsCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFFFTVVJT1ZlY3RvciAqcWlvdiwgQmRydlJlcXVlc3RGbGFncyBmbGFncywKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmxv Y2tDb21wbGV0aW9uRnVuYyAqY2IsIHZvaWQgKm9wYXF1ZSk7Cj4gwqBCbG9ja0FJT0NCICpibGtf YWlvX3BkaXNjYXJkKEJsb2NrQmFja2VuZCAqYmxrLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBi eXRlcywKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEJsb2NrQ29tcGxldGlvbkZ1bmMgKmNiLCB2b2lkICpvcGFxdWUpOwo+IMKgdm9p ZCBibGtfYWlvX2NhbmNlbF9hc3luYyhCbG9ja0FJT0NCICphY2IpOwo+IEBAIC0yMDEsNiArMjA0 LDEyIEBAIGludCBjb3JvdXRpbmVfZm4gYmxrX2NvX3pvbmVfbWdtdChCbG9ja0JhY2tlbmQgKmJs aywKPiBCbG9ja1pvbmVPcCBvcCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQ2NF90IG9mZnNldCwgaW50NjRf dCBsZW4pOwo+IMKgaW50IGNvX3dyYXBwZXJfbWl4ZWQgYmxrX3pvbmVfbWdtdChCbG9ja0JhY2tl bmQgKmJsaywgQmxvY2tab25lT3Agb3AsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludDY0X3Qg b2Zmc2V0LCBpbnQ2NF90IGxlbik7Cj4gK2ludCBjb3JvdXRpbmVfZm4gYmxrX2NvX3pvbmVfYXBw ZW5kKEJsb2NrQmFja2VuZCAqYmxrLCBpbnQ2NF90ICpvZmZzZXQsCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg UUVNVUlPVmVjdG9yICpxaW92LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJkcnZSZXF1ZXN0RmxhZ3MgZmxh Z3MpOwo+ICtpbnQgY29fd3JhcHBlcl9taXhlZCBibGtfem9uZV9hcHBlbmQoQmxvY2tCYWNrZW5k ICpibGssIGludDY0X3QgKm9mZnNldCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUUVNVUlP VmVjdG9yICpxaW92LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCZHJ2UmVxdWVzdEZsYWdz IGZsYWdzKTsKPiDCoAo+IMKgaW50IGNvX3dyYXBwZXJfbWl4ZWQgYmxrX3BkaXNjYXJkKEJsb2Nr QmFja2VuZCAqYmxrLCBpbnQ2NF90IG9mZnNldCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQ2NF90IGJ5dGVz KTsKCg==