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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 61F60CA0EC3 for ; Tue, 12 Sep 2023 01:15:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234240AbjILBPw (ORCPT ); Mon, 11 Sep 2023 21:15:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234434AbjILBP1 (ORCPT ); Mon, 11 Sep 2023 21:15:27 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on20730.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e89::730]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7BBE3160A79 for ; Mon, 11 Sep 2023 18:01:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MdbuHGfF9Z68kVhlBCm+KHWEIqztsMGrlHRwvO0yYr9nQSqG18jruedGRO+0tpq1VQv5bPhRTcFSIeKC48uLeKEolI8/wTnivfsOkTacQWGAg67AAv87wJybfTCUdxt0RgPbI7V75d6M3c1e13l+DiZlPGjdkgPqg3750NiYAgskjpP3LaJb04uipGANfGOtq5dhO1gmVK65jsqaUgeZwHcELgYe1AF7X+G5VHZ4LZRZmiS6vwv6oDDalC8kj9SKjIjXLAUUzs/zITjpJ97tIwxqwBcisd02D8984lBoc25pvQxE7tTCaOvuiufsKVH8AF+qo/ZUXFX3DT7xqj3ksA== 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=EySkjZDED6rZDCitZvL/cicbKqmnyCBW6IbLBUE89X8=; b=Z838WgdliEZ6AxIcM4uZbOvzSndjl0N5cYlsq0K894X52VqlG6OZrzbTBHCAhyXwt7RMsPK421teNr4Hgpu8CKSIyDzGIix0HNKdJ7P6V/Ncd4Rlm1lOLaCSnutlJWHyu3MzSy3BltGtEKiv8fEm2lHeG78HdLsY5ennAnUycAqS4eBXcNYI82elAs35uCbFjcBF5xBuHPakNzuv1RtYH3Tl0Tlv/2gAipLQXP9daRJZp4L/IHSS7m82DH7JRuuRm7lB0A/y4kFFaCZdYoWgJ374rh9bsq5pEhxzTnRr/2z26shMiuM/HhDCo1MRhMklTjfRlrs0GMqqZzLYtrwY7g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hammerspace.com; dmarc=pass action=none header.from=hammerspace.com; dkim=pass header.d=hammerspace.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hammerspace.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EySkjZDED6rZDCitZvL/cicbKqmnyCBW6IbLBUE89X8=; b=OBNEqb4NtMn0gDWIkH4giedPn0P58p3JlXmPijcOgYZKdzO4eS63//HFj9XCe+b1pkWrXmJJfF7Mxs99ogqCLOhsdFrSiJ/c+1kMJNaUPUZMyXmo9eedKFrveZNdaG4/M+ympxsFg3yjX5ZMixkFZysi95DNb4+eiOtJojTrruI= Received: from CH0PR13MB5084.namprd13.prod.outlook.com (2603:10b6:610:111::7) by MN2PR13MB4056.namprd13.prod.outlook.com (2603:10b6:208:264::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.30; Tue, 12 Sep 2023 00:58:12 +0000 Received: from CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::6f5a:139d:2430:b061]) by CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::6f5a:139d:2430:b061%4]) with mapi id 15.20.6768.036; Tue, 12 Sep 2023 00:58:12 +0000 From: Trond Myklebust To: "chuck.lever@oracle.com" CC: "linux-nfs@vger.kernel.org" Subject: Re: [PATCH] nfsd: Handle EOPENSTALE correctly in the filecache Thread-Topic: [PATCH] nfsd: Handle EOPENSTALE correctly in the filecache Thread-Index: AQHZ5QlGn1JoEaIXBEGx/BClj8AYO7AWNAeAgAAqTAA= Date: Tue, 12 Sep 2023 00:58:11 +0000 Message-ID: References: <20230911183027.11372-1-trond.myklebust@hammerspace.com> In-Reply-To: Accept-Language: en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=hammerspace.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH0PR13MB5084:EE_|MN2PR13MB4056:EE_ x-ms-office365-filtering-correlation-id: 0b87bb6c-0cdd-4f0c-9646-08dbb32b5689 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gVjxSrFLWx+KfamIMWVVL9zl1iBIcrHWq8M5Q0+e7K2wb/r7YtRyXJBm0h1XjogdDAUtqAjJtftAw4WZz7Q0sN5CAAa/nWIzMWY38mecSCfn99Z2/LK6TkIA37d9nvYBA97Hz1sZPYYh1qd5ZH+6ZouktcPoT3yBDlbSAa13xy8MYHRyhJlVWzlUxu3Wg35iayPrezgASHGULb0u5jrWXQgLQx9WTLtyIlFK7k4fh2uQxDFrHWX2HkaoLm24ft9dcO5dx3OjOX1s7CGBC8yc31O8lpF4Af4B684KIGglTBTDWlgY6vve9ALFWQJ8cGGEh30A1vNVE3dt+t/esvWzLufxoTPdhhYP/mD4r54r9TZM/yNyNMXPVQD7p/BQ/3zP+ydx6IHspLVvxaqIJcL/urRexsqokkJOI7pDYbSF8AkngsESTqnEb4fEbhqTg0oHjQgrFElUAg4SpdWCchGHXsSYokjY8h4UBDRbWifEAgI6ieF4b4Biyzoseaz5YVVzf2hq+F1JWLVo5Avb2embqsGXaT4SsMImr2WBq9gxuhM1X4sm9fMfIGOu/bbsnj6lzKerblFEiCi2JAZ3rGLxAn9UGGPDZ4pqeMzvGWRhzSUoVYGcQLfxhWhMnI9A/h6wkXJS39VmcXv96L7dLo9n1SG7aJQVTZ5hPp8p51X0UGM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR13MB5084.namprd13.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(396003)(136003)(39850400004)(346002)(376002)(451199024)(1800799009)(186009)(2616005)(5660300002)(6506007)(66946007)(8936002)(6486002)(8676002)(6916009)(76116006)(66476007)(64756008)(316002)(41300700001)(66446008)(2906002)(478600001)(4326008)(71200400001)(6512007)(66556008)(83380400001)(122000001)(38070700005)(38100700002)(36756003)(86362001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RkpiTFdWcEpGTGNvd015cWdXd3VNdStvUHBLYUNtY3g1MFo5bndTQzZCL3pu?= =?utf-8?B?d3AxOXRlTjlNdU9rRllHaDAyRWtwc0MwWkhVS3RUeklPK3FSY1RrNUZjMG5P?= =?utf-8?B?TWZtaWdNM3VwYWExL2NOQlVLd3doVGNQZHhQOG9RL3Y1dXZJREV0MllTNzNE?= =?utf-8?B?bG00VjhqWW4wejF2VXg4citVdjZnTFVDSnF6dzk3K1RMWWMra3dVMDRiOU9j?= =?utf-8?B?NUVMeGVQZnBFRnBoZmxMTEhxNVN5aVRsQ050ZUdxeDdEQ1ZHZVJQQ0lIVDVn?= =?utf-8?B?Ty82NVFYU1Z2VzlMZVZvS2F1dXlOMXVYZHg2STU0T3k2L0lDMmdvL2tFdHdQ?= =?utf-8?B?c3cwTXZhenJYeUJsanIxanFadThFYTROLzBXWDE5K1hiMys1SndReUdFak5R?= =?utf-8?B?ckd2K2sxZ2dqVC96cjlsQ3JHbS9VTXpiTW1YYlI0ZExHWnVtZkE2UlZOVHhX?= =?utf-8?B?SnR3NVBMbTVhTEdvSktpTXpzdzJsamx2SVhrYVlYdEFRWXZKbWpwMFNPaVdk?= =?utf-8?B?dEdwV0pFV0JqUUl0Y3ZKRVg1Rk9CN0FxQkExVXIxVHRQYkh5ZmZ5VzJzV1R0?= =?utf-8?B?aFFsdUcvNk1GaUZZY1NITzcyOGVCQ0x3L0ZyeEw2aUx5N3ZkVWpta0taN1p4?= =?utf-8?B?ZTY4MkZEY3lyWnQrM1FPZTJvQ3gwNTd2MGFxUXE3NWNQL3lsOHhtTVZXRXFU?= =?utf-8?B?Y2VHa3VDVk9MWktnNktPOWlwTzcyZEFDZk8yUWdLcGhXMFA0YUxBM0I3U3Y4?= =?utf-8?B?Q1RDMUJiVmRUL3cyYXRscmtCZ0Q1SVR0RWg1VjlIc0pYV2J4SnVlb3R3Uzcw?= =?utf-8?B?TlJHalNnTEJGS0tMcHZkTXBoNXdpRnZISk9jdktUektrc0dtcWZDdC9FODlz?= =?utf-8?B?dWd2c1pGc0o1V2ZlUTZVUVREUmxUa3RXQTFkekdiaFhVYWdPcmxCeFdiNGRQ?= =?utf-8?B?Vm91SHBNclJPaTFTQ05KbHVNQU93Wlp3Yk5Xek5QZ0V5cEJIZDAwYWJhQjRp?= =?utf-8?B?YU5RYmJRUlI5NHJKMjBwYkJWTUN4ejltRHljckpWOW54NFBiYzZXRW4zWkJM?= =?utf-8?B?NG1PQ0UzQ0dFR00yUHN0bXViVTFlejJaZzR2V1dWd05QMWNFZkowdkI5OG9U?= =?utf-8?B?SDlKblFiV0hra3JWeXRDZFNCSnh3RlYxY2Q4VWVWbHRRTHI3SEtCUk5halB1?= =?utf-8?B?TUE5QzNPbGJLeWozVHU5YVdZMkJHTkZ2Uk9YVGdwZVdPcWlUWERzR2lLZVRl?= =?utf-8?B?YkQ2Y1Vqb0NNcDcxRmxXclRQWjU3YlhKcjVpdnhvSnNpVlBxcDVFeDcwaEVV?= =?utf-8?B?U1pUcHZUbGZ1N2tiZDcrRFNQZUorWE51NzhxbXdvRzRZbURGVDVHVDB1VHF1?= =?utf-8?B?NzM0b24xN2UreWRtRjA4NXpuTDg5M0lLaVE1Q3JvWEtOWkVzNFQ5NG8yUjYr?= =?utf-8?B?YldlalJtNHU2bGphUmNWZ2UzTlZiZlYzZUFnNy9WQzdOWjdER01zakY4MWsx?= =?utf-8?B?YW94QjdOVFVFcytHTERsZTJJU0kxOThxdnRJdWROS0RPbk83ai9zcVF4ckll?= =?utf-8?B?M0hDR3RSRUtCK3ozNTRhVkpDY2hjU3BoRndUa3Jlb2Z2cHVkblNpazJDTXpO?= =?utf-8?B?YjdLRjlzOElKRkVzTVNVZ1dvUUtxK2I1R1FMSEF0UW13aGVBKy82aGVxT2U2?= =?utf-8?B?TkdmQ2VGQkJGdVNTSUxIUE9ISEFMV0hVMXVBekV3aVZQUDBzT0ROc2VGSlBv?= =?utf-8?B?eEs1aUQxOURnWEVyMTFobktCd0pDYTBYRnRQSWNuRlkvbEtOaktZMUprRHg1?= =?utf-8?B?NzZPMlMzejJZZzRtNnNVdlQrRFFLUFdOUDZOTE5KbXA0NGNJZmJSaHBRcHVi?= =?utf-8?B?VklqZCtGRytiNDZLWTNRSW1jeG9jQ3l3WjZGdUhNU1Zrd1o0WHpxM0pCZU15?= =?utf-8?B?ZmE0OFhXRExrVHBqbXR5Y3BCMjJpa0ZrZklXZThrZmxhdlVoQVV1aHA4eExj?= =?utf-8?B?RWt1OHcycktWU1ZENUY4eWthQmNhWTlCeVgweGFtS0hzM3lGcld0OU5Pa0tV?= =?utf-8?B?V0t5SUJFNEZzc0hEM0RVUlJudkNmb2dKMVJVckF0TkZTQmJpZHAvS0xwK09K?= =?utf-8?B?ME5lSG5TdG95Y1ZjTDIzZE5lUWdwR2NhaE9tSGRUaklaT1IyS2tWeU10bFNO?= =?utf-8?B?QW5XKzlObG1zUEk0ZXUxU2wwcFo2bWRBOVhMa0U3L2JpMW5tTFdPcGZOeXpL?= =?utf-8?B?aEx1WjBWSm50YytNT1pQTHVOSGh3PT0=?= Content-Type: text/plain; charset="utf-8" Content-ID: <0A7AC435485FB84FA37C834C6CCDE656@namprd13.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: hammerspace.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH0PR13MB5084.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b87bb6c-0cdd-4f0c-9646-08dbb32b5689 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2023 00:58:11.9785 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0d4fed5c-3a70-46fe-9430-ece41741f59e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vX60W/FAQpkYZIeSJJKUOHPYq6TK3uf8Xw5mW0OsUMW7zx6X8TniBWA8oJQLfkbtSIuLhidI7zmdm6q1CU+LKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB4056 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org T24gTW9uLCAyMDIzLTA5LTExIGF0IDE4OjI2IC0wNDAwLCBDaHVjayBMZXZlciB3cm90ZToKPiBP biBNb24sIFNlcCAxMSwgMjAyMyBhdCAwMjozMDoyN1BNIC0wNDAwLCB0cm9uZG15QGdtYWlsLmNv bcKgd3JvdGU6Cj4gPiBGcm9tOiBUcm9uZCBNeWtsZWJ1c3QgPHRyb25kLm15a2xlYnVzdEBoYW1t ZXJzcGFjZS5jb20+Cj4gPiAKPiA+IFRoZSBuZnNkX29wZW4gY29kZSBoYW5kbGVzIEVPUEVOU1RB TEUgY29ycmVjdGx5LCBieSByZXRyeWluZyB0aGUKPiA+IGNhbGwgdG8KPiA+IGZoX3ZlcmlmeSgp IGFuZCBfX25mc2Rfb3BlbigpLiBIb3dldmVyIHRoZSBmaWxlY2FjaGUganVzdCBkcm9wcyB0aGUK PiA+IGVycm9yIG9uIHRoZSBmbG9vciwgYW5kIGltbWVkaWF0ZWx5IHJldHVybnMgbmZzZXJyX3N0 YWxlIHRvIHRoZQo+ID4gY2FsbGVyLgo+ID4gCj4gPiBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB3 ZSBwcm9wYWdhdGUgdGhlIEVPUEVOU1RBTEUgY29kZSBiYWNrIHRvCj4gPiBuZnNkX2ZpbGVfZG9f YWNxdWlyZSwgYW5kIHRoYXQgd2UgaGFuZGxlIGl0IGNvcnJlY3RseS4KPiA+IAo+ID4gRml4ZXM6 IDY1Mjk0YzFmMmM1ZSAoIm5mc2Q6IGFkZCBhIG5ldyBzdHJ1Y3QgZmlsZSBjYWNoaW5nIGZhY2ls aXR5Cj4gPiB0byBuZnNkIikKPiA+IFNpZ25lZC1vZmYtYnk6IFRyb25kIE15a2xlYnVzdCA8dHJv bmQubXlrbGVidXN0QGhhbW1lcnNwYWNlLmNvbT4KPiA+IC0tLQo+ID4gwqBmcy9uZnNkL2ZpbGVj YWNoZS5jIHwgMjcgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gPiDCoGZzL25mc2QvdmZz LmPCoMKgwqDCoMKgwqAgfCAyOCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gPiDCoGZz L25mc2QvdmZzLmjCoMKgwqDCoMKgwqAgfMKgIDIgKy0KPiA+IMKgMyBmaWxlcyBjaGFuZ2VkLCAz MyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2Zz L25mc2QvZmlsZWNhY2hlLmMgYi9mcy9uZnNkL2ZpbGVjYWNoZS5jCj4gPiBpbmRleCBlZTljOTIz MTkyZTAuLjA3YmYyMTlmOWFlNCAxMDA2NDQKPiA+IC0tLSBhL2ZzL25mc2QvZmlsZWNhY2hlLmMK PiA+ICsrKyBiL2ZzL25mc2QvZmlsZWNhY2hlLmMKPiA+IEBAIC05ODksMjIgKzk4OSwyMSBAQCBu ZnNkX2ZpbGVfZG9fYWNxdWlyZShzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLAo+ID4gc3RydWN0IHN2 Y19maCAqZmhwLAo+ID4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGNoYXIgbmVlZCA9IG1heV9m bGFncyAmIE5GU0RfRklMRV9NQVlfTUFTSzsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbmV0 ICpuZXQgPSBTVkNfTkVUKHJxc3RwKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbmZzZF9m aWxlICpuZXcsICpuZjsKPiA+IC3CoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBjcmVkICpjcmVk Owo+ID4gK8KgwqDCoMKgwqDCoMKgYm9vbCBzdGFsZV9yZXRyeSA9IHRydWU7Cj4gPiDCoMKgwqDC oMKgwqDCoMKgYm9vbCBvcGVuX3JldHJ5ID0gdHJ1ZTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgaW5vZGUgKmlub2RlOwo+ID4gwqDCoMKgwqDCoMKgwqDCoF9fYmUzMiBzdGF0dXM7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgaW50IHJldDsKPiA+IMKgCj4gPiArcmV0cnk6Cj4gPiDCoMKgwqDCoMKg wqDCoMKgc3RhdHVzID0gZmhfdmVyaWZ5KHJxc3RwLCBmaHAsIFNfSUZSRUcsCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bWF5X2ZsYWdzfE5GU0RfTUFZX09XTkVSX09WRVJSSURFKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBp ZiAoc3RhdHVzICE9IG5mc19vaykKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHN0YXR1czsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbm9kZSA9IGRfaW5vZGUoZmhwLT5m aF9kZW50cnkpOwo+ID4gLcKgwqDCoMKgwqDCoMKgY3JlZCA9IGdldF9jdXJyZW50X2NyZWQoKTsK PiAKPiBJZiBtZW1vcnkgc2VydmVzLCB3ZSBoYXZlIHRvIGhvbGQgYSByZWZlcmVuY2UgdG8gdGhl IGN1cnJlbnQgY3JlZAo+IHRocm91Z2ggdGhlIGFjcXVpcmUgcHJvY2Vzcy4gT3RoZXJ3aXNlLCB0 aGUgY3JlZCBjYW4gYmUgcmVsZWFzZWQKPiB3aGlsZSBuZnNkX2ZpbGVfZG9fYWNxdWlyZSgpIGlz IHN0aWxsIHJ1bm5pbmcsIHdoaWNoIHJlc3VsdHMgaW4gYW4KPiBvb3BzLgo+IAo+IFdoYXQncyB0 aGUgcmVhc29uIHRvIHJlcGxhY2UgZ2V0X2N1cnJlbnRfY3JlZCgpIHdpdGggY3VycmVudF9jcmVk KCk/CgpJbiBib3RoIGNhc2VzLCB5b3UncmUgaG9sZGluZyB0aGUgcmN1X3JlYWRfbG9jaygpIGFj cm9zcyB0aGUgZW50aXJlCmNhbGwsIHNvIGl0IGlzIHF1aXRlIHNhZmUgdG8gdXNlIGN1cnJlbnRf Y3JlZCgpLgoKPiAKPiAKPiA+IC1yZXRyeToKPiA+IMKgwqDCoMKgwqDCoMKgwqByY3VfcmVhZF9s b2NrKCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBuZiA9IG5mc2RfZmlsZV9sb29rdXBfbG9ja2VkKG5l dCwgY3JlZCwgaW5vZGUsIG5lZWQsCj4gPiB3YW50X2djKTsKPiA+ICvCoMKgwqDCoMKgwqDCoG5m ID0gbmZzZF9maWxlX2xvb2t1cF9sb2NrZWQobmV0LCBjdXJyZW50X2NyZWQoKSwgaW5vZGUsCj4g PiBuZWVkLCB3YW50X2djKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqByY3VfcmVhZF91bmxvY2soKTsK PiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKG5mKSB7Cj4gPiBAQCAtMTAyNiw3ICsxMDI1 LDcgQEAgbmZzZF9maWxlX2RvX2FjcXVpcmUoc3RydWN0IHN2Y19ycXN0ICpycXN0cCwKPiA+IHN0 cnVjdCBzdmNfZmggKmZocCwKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmN1X3JlYWRfbG9j aygpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHNwaW5fbG9jaygmaW5vZGUtPmlfbG9jayk7Cj4gPiAt wqDCoMKgwqDCoMKgwqBuZiA9IG5mc2RfZmlsZV9sb29rdXBfbG9ja2VkKG5ldCwgY3JlZCwgaW5v ZGUsIG5lZWQsCj4gPiB3YW50X2djKTsKPiA+ICvCoMKgwqDCoMKgwqDCoG5mID0gbmZzZF9maWxl X2xvb2t1cF9sb2NrZWQobmV0LCBjdXJyZW50X2NyZWQoKSwgaW5vZGUsCj4gPiBuZWVkLCB3YW50 X2djKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAodW5saWtlbHkobmYpKSB7Cj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwaW5fdW5sb2NrKCZpbm9kZS0+aV9sb2NrKTsKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmN1X3JlYWRfdW5sb2NrKCk7Cj4gPiBA QCAtMTA1OCw2ICsxMDU3LDcgQEAgbmZzZF9maWxlX2RvX2FjcXVpcmUoc3RydWN0IHN2Y19ycXN0 ICpycXN0cCwKPiA+IHN0cnVjdCBzdmNfZmggKmZocCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gY29uc3RydWN0aW9uX2VycjsKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBvcGVuX3JldHJ5ID0gZmFsc2U7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZmhfcHV0KGZocCk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdvdG8gcmV0cnk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gwqDCoMKgwqDCoMKgwqDCoHRo aXNfY3B1X2luYyhuZnNkX2ZpbGVfY2FjaGVfaGl0cyk7Cj4gPiBAQCAtMTA3NCw3ICsxMDc0LDYg QEAgbmZzZF9maWxlX2RvX2FjcXVpcmUoc3RydWN0IHN2Y19ycXN0ICpycXN0cCwKPiA+IHN0cnVj dCBzdmNfZmggKmZocCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmZzZF9m aWxlX2NoZWNrX3dyaXRlX2Vycm9yKG5mKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgKnBuZiA9IG5mOwo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IC3CoMKgwqDCoMKgwqDC oHB1dF9jcmVkKGNyZWQpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHRyYWNlX25mc2RfZmlsZV9hY3F1 aXJlKHJxc3RwLCBpbm9kZSwgbWF5X2ZsYWdzLCBuZiwKPiA+IHN0YXR1cyk7Cj4gPiDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIHN0YXR1czsKPiA+IMKgCj4gPiBAQCAtMTA4OCw4ICsxMDg3LDIwIEBA IG5mc2RfZmlsZV9kb19hY3F1aXJlKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsCj4gPiBzdHJ1Y3Qg c3ZjX2ZoICpmaHAsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzdGF0dXMgPSBuZnNfb2s7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB0cmFjZV9uZnNkX2ZpbGVfb3BlbmVkKG5mLCBzdGF0dXMpOwo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdGF0dXMgPSBuZnNkX29wZW5f dmVyaWZpZWQocnFzdHAsIGZocCwKPiA+IG1heV9mbGFncywKPiA+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZuZi0+bmZfZmlsZSk7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IG5mc2Rfb3Blbl92ZXJp ZmllZChycXN0cCwgZmhwLAo+ID4gbWF5X2ZsYWdzLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgJm5mLT5uZl9maWxlKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCA9PSAtRU9QRU5TVEFMRSAmJiBzdGFs ZV9yZXRyeSkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RhbGVfcmV0cnkgPSBmYWxzZTsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5mc2Rf ZmlsZV91bmhhc2gobmYpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xlYXJfYW5kX3dha2VfdXBfYml0KE5GU0RfRklM RV9QRU4KPiA+IERJTkcsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgJm5mLQo+ID4gPm5mX2ZsYWdzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZWZjb3VudF9k ZWNfYW5kX3Rlc3QoJm5mLQo+ID4gPm5mX3JlZikpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bmZzZF9maWxlX2ZyZWUobmYpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmYgPSBOVUxMOwo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmhfcHV0 KGZocCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnb3RvIHJldHJ5Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHN0YXR1cyA9IG5mc2Vycm5vKHJldCk7Cj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0cmFjZV9uZnNkX2ZpbGVfb3Bl bihuZiwgc3RhdHVzKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4g wqDCoMKgwqDCoMKgwqDCoH0gZWxzZQo+ID4gZGlmZiAtLWdpdCBhL2ZzL25mc2QvdmZzLmMgYi9m cy9uZnNkL3Zmcy5jCj4gPiBpbmRleCAyYzkwNzRhYjIzMTUuLjk4ZmE0ZmQwNTU2ZCAxMDA2NDQK PiA+IC0tLSBhL2ZzL25mc2QvdmZzLmMKPiA+ICsrKyBiL2ZzL25mc2QvdmZzLmMKPiA+IEBAIC04 MjMsNyArODIzLDcgQEAgaW50IG5mc2Rfb3Blbl9icmVha19sZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLAo+ID4gaW50IGFjY2VzcykKPiA+IMKgICogYW5kIGFkZGl0aW9uYWwgZmxhZ3MuCj4gPiDC oCAqIE4uQi4gQWZ0ZXIgdGhpcyBjYWxsIGZocCBuZWVkcyBhbiBmaF9wdXQKPiA+IMKgICovCj4g PiAtc3RhdGljIF9fYmUzMgo+ID4gK3N0YXRpYyBpbnQKPiA+IMKgX19uZnNkX29wZW4oc3RydWN0 IHN2Y19ycXN0ICpycXN0cCwgc3RydWN0IHN2Y19maCAqZmhwLCB1bW9kZV90Cj4gPiB0eXBlLAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50IG1h eV9mbGFncywgc3RydWN0IGZpbGUgKipmaWxwKQo+ID4gwqB7Cj4gPiBAQCAtODMxLDE0ICs4MzEs MTIgQEAgX19uZnNkX29wZW4oc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3RydWN0Cj4gPiBzdmNf ZmggKmZocCwgdW1vZGVfdCB0eXBlLAo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbm9kZcKg wqDCoMKgKmlub2RlOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBmaWxlwqDCoMKgwqDCoCpm aWxlOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmxh Z3MgPSBPX1JET05MWXxPX0xBUkdFRklMRTsKPiA+IC3CoMKgwqDCoMKgwqDCoF9fYmUzMsKgwqDC oMKgwqDCoMKgwqDCoMKgZXJyOwo+ID4gLcKgwqDCoMKgwqDCoMKgaW50wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBob3N0X2VyciA9IDA7Cj4gPiArwqDCoMKgwqDCoMKgwqBpbnTCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGhvc3RfZXJyID0gLUVQRVJNOwo+ID4gwqAKPiA+IMKgwqDCoMKgwqDC oMKgwqBwYXRoLm1udCA9IGZocC0+ZmhfZXhwb3J0LT5leF9wYXRoLm1udDsKPiA+IMKgwqDCoMKg wqDCoMKgwqBwYXRoLmRlbnRyeSA9IGZocC0+ZmhfZGVudHJ5Owo+ID4gwqDCoMKgwqDCoMKgwqDC oGlub2RlID0gZF9pbm9kZShwYXRoLmRlbnRyeSk7Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKg ZXJyID0gbmZzZXJyX3Blcm07Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKElTX0FQUEVORChpbm9k ZSkgJiYgKG1heV9mbGFncyAmIE5GU0RfTUFZX1dSSVRFKSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZ290byBvdXQ7Cj4gPiDCoAo+ID4gQEAgLTg0Nyw3ICs4NDUsNyBAQCBf X25mc2Rfb3BlbihzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1Y3QKPiA+IHN2Y19maCAqZmhw LCB1bW9kZV90IHR5cGUsCj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGhvc3RfZXJyID0gbmZz ZF9vcGVuX2JyZWFrX2xlYXNlKGlub2RlLCBtYXlfZmxhZ3MpOwo+ID4gwqDCoMKgwqDCoMKgwqDC oGlmIChob3N0X2VycikgLyogTk9NRU0gb3IgV09VTERCTE9DSyAqLwo+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X25mc2VycjsKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBnb3RvIG91dDsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKG1h eV9mbGFncyAmIE5GU0RfTUFZX1dSSVRFKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChtYXlfZmxhZ3MgJiBORlNEX01BWV9SRUFEKQo+ID4gQEAgLTg1OSwxMyArODU3 LDEzIEBAIF9fbmZzZF9vcGVuKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdAo+ID4gc3Zj X2ZoICpmaHAsIHVtb2RlX3QgdHlwZSwKPiA+IMKgwqDCoMKgwqDCoMKgwqBmaWxlID0gZGVudHJ5 X29wZW4oJnBhdGgsIGZsYWdzLCBjdXJyZW50X2NyZWQoKSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKg aWYgKElTX0VSUihmaWxlKSkgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBo b3N0X2VyciA9IFBUUl9FUlIoZmlsZSk7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZ290byBvdXRfbmZzZXJyOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdv dG8gb3V0Owo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKg aG9zdF9lcnIgPSBpbWFfZmlsZV9jaGVjayhmaWxlLCBtYXlfZmxhZ3MpOwo+ID4gwqDCoMKgwqDC oMKgwqDCoGlmIChob3N0X2Vycikgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBmcHV0KGZpbGUpOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0 X25mc2VycjsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dDsKPiA+ IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChtYXlfZmxh Z3MgJiBORlNEX01BWV82NEJJVF9DT09LSUUpCj4gPiBAQCAtODc0LDEwICs4NzIsOCBAQCBfX25m c2Rfb3BlbihzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1Y3QKPiA+IHN2Y19maCAqZmhwLCB1 bW9kZV90IHR5cGUsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZpbGUtPmZf bW9kZSB8PSBGTU9ERV8zMkJJVEhBU0g7Cj4gPiDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoCpmaWxw ID0gZmlsZTsKPiA+IC1vdXRfbmZzZXJyOgo+ID4gLcKgwqDCoMKgwqDCoMKgZXJyID0gbmZzZXJy bm8oaG9zdF9lcnIpOwo+ID4gwqBvdXQ6Cj4gPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+ ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGhvc3RfZXJyOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBf X2JlMzIKPiA+IEBAIC04ODUsNiArODgxLDcgQEAgbmZzZF9vcGVuKHN0cnVjdCBzdmNfcnFzdCAq cnFzdHAsIHN0cnVjdCBzdmNfZmgKPiA+ICpmaHAsIHVtb2RlX3QgdHlwZSwKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50IG1heV9mbGFncywgc3RydWN0IGZpbGUgKipmaWxw KQo+ID4gwqB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgX19iZTMyIGVycjsKPiA+ICvCoMKgwqDCoMKg wqDCoGludCBob3N0X2VycjsKPiA+IMKgwqDCoMKgwqDCoMKgwqBib29sIHJldHJpZWQgPSBmYWxz ZTsKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgdmFsaWRhdGVfcHJvY2Vzc19jcmVkcygpOwo+ ID4gQEAgLTkwNCwxMiArOTAxLDEzIEBAIG5mc2Rfb3BlbihzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3Rw LCBzdHJ1Y3QKPiA+IHN2Y19maCAqZmhwLCB1bW9kZV90IHR5cGUsCj4gPiDCoHJldHJ5Ogo+ID4g wqDCoMKgwqDCoMKgwqDCoGVyciA9IGZoX3ZlcmlmeShycXN0cCwgZmhwLCB0eXBlLCBtYXlfZmxh Z3MpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICghZXJyKSB7Cj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZXJyID0gX19uZnNkX29wZW4ocnFzdHAsIGZocCwgdHlwZSwgbWF5X2Zs YWdzLAo+ID4gZmlscCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVy ciA9PSBuZnNlcnJfc3RhbGUgJiYgIXJldHJpZWQpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBob3N0X2VyciA9IF9fbmZzZF9vcGVuKHJxc3RwLCBmaHAsIHR5cGUsIG1heV9m bGFncywKPiA+IGZpbHApOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICho b3N0X2VyciA9PSAtRU9QRU5TVEFMRSAmJiAhcmV0cmllZCkgewo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0cmllZCA9IHRydWU7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmaF9wdXQoZmhwKTsK PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8g cmV0cnk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSBuZnNlcnJubyhob3N0X2Vycik7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgfQo+ID4gwqDCoMKgwqDCoMKgwqDCoHZhbGlkYXRlX3Byb2Nlc3NfY3JlZHMo KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+ID4gQEAgLTkyMiwxMyArOTIwLDEz IEBAIG5mc2Rfb3BlbihzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1Y3QKPiA+IHN2Y19maCAq ZmhwLCB1bW9kZV90IHR5cGUsCj4gPiDCoCAqIEBtYXlfZmxhZ3M6IGludGVybmFsIHBlcm1pc3Np b24gZmxhZ3MKPiA+IMKgICogQGZpbHA6IE9VVDogb3BlbiAic3RydWN0IGZpbGUgKiIKPiA+IMKg ICoKPiA+IC0gKiBSZXR1cm5zIGFuIG5mc3N0YXQgdmFsdWUgaW4gbmV0d29yayBieXRlIG9yZGVy Lgo+ID4gKyAqIFJldHVybnMgYSBwb3NpeCBlcnJvci4KPiA+IMKgICovCj4gPiAtX19iZTMyCj4g PiAraW50Cj4gPiDCoG5mc2Rfb3Blbl92ZXJpZmllZChzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBz dHJ1Y3Qgc3ZjX2ZoICpmaHAsIGludAo+ID4gbWF5X2ZsYWdzLAo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBmaWxlICoqZmlscCkKPiA+IMKgewo+ID4gLcKg wqDCoMKgwqDCoMKgX19iZTMyIGVycjsKPiA+ICvCoMKgwqDCoMKgwqDCoGludCBlcnI7Cj4gPiDC oAo+ID4gwqDCoMKgwqDCoMKgwqDCoHZhbGlkYXRlX3Byb2Nlc3NfY3JlZHMoKTsKPiA+IMKgwqDC oMKgwqDCoMKgwqBlcnIgPSBfX25mc2Rfb3BlbihycXN0cCwgZmhwLCBTX0lGUkVHLCBtYXlfZmxh Z3MsIGZpbHApOwo+ID4gZGlmZiAtLWdpdCBhL2ZzL25mc2QvdmZzLmggYi9mcy9uZnNkL3Zmcy5o Cj4gPiBpbmRleCBhNjg5MGVhN2I3NjUuLmU0YjcyMDdlZjJlMCAxMDA2NDQKPiA+IC0tLSBhL2Zz L25mc2QvdmZzLmgKPiA+ICsrKyBiL2ZzL25mc2QvdmZzLmgKPiA+IEBAIC0xMDQsNyArMTA0LDcg QEAgX19iZTMywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5mc2Rfc2V0eGF0dHIoc3RydWN0 Cj4gPiBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBzdmNfZmggKmZocCwKPiA+IMKgaW50wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbmZzZF9vcGVuX2JyZWFrX2xlYXNlKHN0cnVjdCBpbm9kZSAqLCBp bnQpOwo+ID4gwqBfX2JlMzLCoMKgwqDCoMKgwqDCoMKgwqBuZnNkX29wZW4oc3RydWN0IHN2Y19y cXN0ICosIHN0cnVjdCBzdmNfZmggKiwKPiA+IHVtb2RlX3QsCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50LCBzdHJ1 Y3QgZmlsZSAqKik7Cj4gPiAtX19iZTMywqDCoMKgwqDCoMKgwqDCoMKgbmZzZF9vcGVuX3Zlcmlm aWVkKHN0cnVjdCBzdmNfcnFzdCAqLCBzdHJ1Y3Qgc3ZjX2ZoCj4gPiAqLAo+ID4gK2ludMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG5mc2Rfb3Blbl92ZXJpZmllZChzdHJ1Y3Qgc3ZjX3Jxc3QgKiwg c3RydWN0IHN2Y19maAo+ID4gKiwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQsIHN0cnVjdCBmaWxlICoqKTsKPiA+ IMKgX19iZTMywqDCoMKgwqDCoMKgwqDCoMKgbmZzZF9zcGxpY2VfcmVhZChzdHJ1Y3Qgc3ZjX3Jx c3QgKnJxc3RwLCBzdHJ1Y3QKPiA+IHN2Y19maCAqZmhwLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBmaWxl ICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAo+ID4gLS0gCj4gPiAyLjQxLjAKPiA+IAo+IAoKLS0gClRy b25kIE15a2xlYnVzdApMaW51eCBORlMgY2xpZW50IG1haW50YWluZXIsIEhhbW1lcnNwYWNlCnRy b25kLm15a2xlYnVzdEBoYW1tZXJzcGFjZS5jb20KCgo=