Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp602917pxf; Wed, 31 Mar 2021 11:06:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJycojgP9WL8O1D9hkru1rL1VA88A/mkPG44/LiLcxlegMGFnwD1QQG6WHFLJavE5nJwP9nE X-Received: by 2002:a50:ee95:: with SMTP id f21mr5363069edr.130.1617213976684; Wed, 31 Mar 2021 11:06:16 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1617213976; cv=pass; d=google.com; s=arc-20160816; b=IFJeNAOjNHgnV4b/jdyrB9CWnq9KHgY3gufKCOPYETJhrStN8SunqAYjY2wMqFMAJi LhsneKxr6qNWd3BRQ/EiGRqaU5rmp2u1doxcvHE/V6Hu60LN9iTnf+MPID8QgWFlxR36 KjX4QjIfXyuy2CMYAxrMjmM+JWiuefHWneiboG9bTP5N3Y/bj30POC+WNcG/ki74cCu4 V3/Njq7OFSsCgqKFmXoHdBxjcN36kiqtmGcl/RD15cxeEzss30k1syg8/qE/qV8AEQ7c c99i8rQl/kg3YCD35njedn4djNhFHwdQlr+mOM06uRLgGSU937KF2mm2zS6XllWrKZoF a2bg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=P5zXQrpEjn3fvqkuG47nMiCV3z2k7PCqC4RD4X3wPC4=; b=EKhUQyHirFgdTSl4mFRjzd56eeBeIoPGEa26Y0WNJcH+gk0f6c9WKwraKg15c8dSIf guNP97EEjHJyc8yXb8DXDcIXNni9ZXxA7UtGvhaxwwKHUehKwecKmajploM5bk9TayEl bPfQVdQ3zhrD789Di5MMDUbTMk4g4sTrKJSFDqf1KNe85aaqmXR4zFLUV8pY1HFycgX/ ilYicca/7/CKkqM7K7fhWVP9x2LwYHJFWDr3orLkhiA5tCy1dCN0lw+L+eGEtf/gywGT jdvGRrqiQSpIFe657YkWZpG8h15CGsX0uvzn64nwvP4X9vIJjqyHlaLH1EHDqoQ5QGy8 UkRA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=dVOM8N6r; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m26si2496091edv.514.2021.03.31.11.05.48; Wed, 31 Mar 2021 11:06:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=dVOM8N6r; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234704AbhCaSEy (ORCPT + 99 others); Wed, 31 Mar 2021 14:04:54 -0400 Received: from mail-mw2nam10on2116.outbound.protection.outlook.com ([40.107.94.116]:54994 "EHLO NAM10-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S234665AbhCaSEk (ORCPT ); Wed, 31 Mar 2021 14:04:40 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aECRxnu8QwWx0U3V0Ca0AGOujUlceYsbJutxUkNSGR62YKvZtu6RmHbPBCL2Vm7XcKjhTKMGRr2rgid50NXYKCLGVlhZnXlGEpGH0Fea910UeVL7QNgu+3cEW5Gb0e7CwZ0dAVfNWOWDsD5p9vJPRLGyB0Ud0+U47QstcnIAmpSpl2gxcplCclsC7Gj30LTVpZ54mlidnU7VE+N4WYwy0CYzyHRkH6K2Pg1r0hhndm/5qIU1Xb/Jemy5PyMiYa64q9ayUgLit4LCLh1E4cnVqHB2tyS0mSDcFejvTFWCRuK1Vcn6hKOdmcqPowCX8bliFaUDloPv0td67aVdAy6loQ== 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=P5zXQrpEjn3fvqkuG47nMiCV3z2k7PCqC4RD4X3wPC4=; b=QhPof/fmwzjU7kwx+7QMhcePAqQzBedcSLY3TjXXxTypfKjYmmNgDgVsTGPY0Nhd9YmQ3o9zdewWKXc2n6Qf+jhDBoZ9Kn2m3VYX28ewA94YmSgohWo6Zt0BjLC5O1SAJAZa2kkBNnYLlIrpsHrOHvMWBmiqpwben5DdTCR6TWLNpH6MfwLMgIInV1HS+3T9YMHrrx3z8c5ENu7uw5l/EEolT9prdGXkAKSGBVm5CJV0E4j64SI2In/6fFibW/+0PJrPvw2vZHJUraZnuJxdgmByjdJ91cq0iF3VrYXMEL4RVsA0wnBhmuR0t/G/1Ltjd3N4u18gR8gEoqWg1k8lsg== 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=P5zXQrpEjn3fvqkuG47nMiCV3z2k7PCqC4RD4X3wPC4=; b=dVOM8N6r21/HveUbBDzlZ41pWTtkMIxwMDLO3kqEUSp3q1fM0LHRfaQwFAVhc0uw3wPKPxDblB1KEghq6ttl5SlEvAnyqL5QZsml73l/bArKdnGFHNIVJaMcHhrEasJaBsizvNSLsjXAnL9rdB6KsBQBSmpjDOoLhJ4sP/Br35g= Received: from CH2PR13MB3525.namprd13.prod.outlook.com (2603:10b6:610:21::29) by CH2PR13MB3301.namprd13.prod.outlook.com (2603:10b6:610:15::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.16; Wed, 31 Mar 2021 18:04:36 +0000 Received: from CH2PR13MB3525.namprd13.prod.outlook.com ([fe80::69bf:b8e4:7fa0:ae74]) by CH2PR13MB3525.namprd13.prod.outlook.com ([fe80::69bf:b8e4:7fa0:ae74%7]) with mapi id 15.20.3999.027; Wed, 31 Mar 2021 18:04:36 +0000 From: Trond Myklebust To: "dwysocha@redhat.com" CC: "linux-nfs@vger.kernel.org" , "Anna.Schumaker@netapp.com" , "dhowells@redhat.com" Subject: Re: RFC: Approaches to resolve netfs API interface to NFS multiple completions problem Thread-Topic: RFC: Approaches to resolve netfs API interface to NFS multiple completions problem Thread-Index: AQHXJlZK3AOTzzfwiE65ZpH9xPMWkaqeY/CA Date: Wed, 31 Mar 2021 18:04:36 +0000 Message-ID: <49e123c6702cb6b27f114dfa64157d9a73463fad.camel@hammerspace.com> References: In-Reply-To: Accept-Language: en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=hammerspace.com; x-originating-ip: [68.36.133.222] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 61606177-778e-44fb-b721-08d8f46f71e3 x-ms-traffictypediagnostic: CH2PR13MB3301: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2T0Gl69wUluYikT4CgO7NE5OEEFuvP/dOb3IZHQdbrdXpe2HP0lekzwYbJj8CRW9yzmP8/R8LYOgipVKUkQFPJz8eNYlNaP4OOcpshDf3SRUMknEXfzZmzrdobjlOLyeXV8SXyv9DBlHWuwPkk5dmdXqTeR/hchnx5FY08IaL57Mx4XUusEvA84MBDLwRkm4PNReHNtR/E348CGl6L83ocsjnyY3MFYlAB+P1Z0q+hGNjZlk6ArnIK//nHeifza8tbYZXfnwIRniXzQu+JuHCpp8Ue4Bl5OlBbvcnrd7OA2uySf7H9RGaFW5Zf1hQFLLHEssp2PsXLyMAnLGw0NkssMibhW86j4AUgZC9d4fihC4wdZAkDQoOtSa8eeTZ9HKJ3mcbTlUsd2QyV9+DAYFO7nOSb3AhksWXvbZ6GREQx7SVAecyNV1drU2ypeNadC/wLE1AtVLU4CxOWeMzwNG4cgVbi3MmcA5E6s51JSAR0BBGN+EHXekHnfg1nv3KG5mBc4lDOR03+BCnzXduyG5bwZLiZDYrVV7pWBawiRKluqX8WlB7HtC585XptGxrOJwQ2374jeY4cc0I4b/2BLrJSl1fq9AHXge6Nne0h0chH8MxDh4OkndtVC5D9TeHdo9IsnSEv7B4bJqYB3SkV3AV4NKSvbnC3th80F1h6wN8lM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR13MB3525.namprd13.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(39840400004)(376002)(366004)(396003)(136003)(8936002)(186003)(6506007)(86362001)(66476007)(8676002)(83380400001)(478600001)(6486002)(26005)(76116006)(316002)(66556008)(6512007)(71200400001)(38100700001)(6916009)(4326008)(2616005)(54906003)(36756003)(64756008)(2906002)(5660300002)(66946007)(66446008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?a3FOTWdBNTFyN2tEZlA1c1Z0VTNoQWpqaFpoTHEvRDMxakdaYWFpZzBlRDVk?= =?utf-8?B?RFFNT1pWeTl0T2VJN0loMGMrZW5wRTZxcE5yYzRQMjUySGxTR1d5Rlk5TXJt?= =?utf-8?B?U2hZNTNXWHFqQ1RCMzZXQzJaZTNEbHJCeUc4cEUwNEtCUjJMcklsd1hWWWxS?= =?utf-8?B?NHl6SUxNNzN4L0t5ZXNkWWl4dm5SMEU1THJRWkZScFBTdVl5RG9jNG1iRkJB?= =?utf-8?B?Nldja3kvWnRZaFV5OUdKOFlEeGJnZVlhV1ZaZml6c09nSmFrY1ZQSThaS1FU?= =?utf-8?B?WGY1TVlMRkhMTUtRWDdaU2EzTFJndXdKS1RQNy9BbjZHVmdEZjQyRHl6NzF5?= =?utf-8?B?WkxRaDRmbnhLZ211N0tqcnBpYnYyYmZoRC8zUW1LNGkzQVQzUlpNZ1BsWVJW?= =?utf-8?B?by93RUxhcWJxWHN6TGNtK004N0RiWjkyUExJY2E2YXkralozNVBob2h5MEd5?= =?utf-8?B?SDhuY1phVk1DSFZ3QjYwNHZtZmpjdVpuRHpIRDN3QUVjZlpPd1lYVW9wMWZa?= =?utf-8?B?Zy9aNmd5cE9sSklGM21Pd25LMmtkTEZxbWN0OXZycncyNUJ4Rmp6QjVXYU9l?= =?utf-8?B?MUUzTjB1RnFOV0hvR3RIQmVIRlNZdENmb3o2RjN5eGlabnVPeGt0Q0JQeHB4?= =?utf-8?B?M2RydkFGVmpCWElHOFY5NmxpVUQzQTZVNEhJcmhuU2lldXVTWUYxS1gyaEpk?= =?utf-8?B?WHFPQkFkZ294b2pteXo2OE1GNFM3ZFcxem1naUp4azNCRWtMb0d1S1NIK0hr?= =?utf-8?B?VDU0RnpNaWIyWCtnaFpWc01RV1pVampvNnVoQlRocnBIWlRaTkhhN3JIM0hS?= =?utf-8?B?TElrU1FWWjdEWGh1cWV5RWlOTWlkaTR1M0RML3IrZEZ1MUhEd1lxWllXallk?= =?utf-8?B?YnRLUGVUdUZaN0piZFM2dTdnbm9FQnlVbG5qQTVucGFjcmIrZFlWQmNZNUlL?= =?utf-8?B?TDFseGFNV0l5SzR0UkVIcSsyNEVBckh4RVBhWWVmSWlNeUNYSDFadWF0SjlQ?= =?utf-8?B?aGZLMmNYYzltK1pCeUI2ZW9kTlB6Q0pyZFBhVXVvRXE4NGdhY1BhT1RSdXM1?= =?utf-8?B?UnFDdXpLdTJ1bzVnemdBMC9NM2hpNkc0ZksvVEVtbkVjd3N4NmEzL0RLRUMy?= =?utf-8?B?NjhEN1UzS2w3aUEwR2tKbzNuWkNtMmtQTkkzOFVieXpLMFlWL3BnQ3J6Ny8r?= =?utf-8?B?YmJFTlZTeUUxL2RpRTV1NEVJdVc0Um01Z1JZZ3NqN2dqRzFGTVV2WDlhNlh1?= =?utf-8?B?cWRJK2VvbFRxckRJUlBuSENhRklSZEpJYnRVU2E4MS9zNzZjRHdhWnhFRXYw?= =?utf-8?B?UEE0b0M0UHhDRm9sYUR3a2RoRU80WS9iQ0pNUGVGK1pHS1h3b1ErN01rVWgz?= =?utf-8?B?QVRuTnExaUkyVkFNVXM5T0syRmR6enArdUltR1I2dVBNWldzdkE5R09rM203?= =?utf-8?B?ZUNJeTVNOTdnK1BjbzJBLzVkQzh1UWtVdGpESTlZQ1o2NVFZN05uWk1WT0pH?= =?utf-8?B?YkFkQytkZlplN1A1bzlrOHBqaEVQOVZERFBFTU83dGF1bnVSRlU3NG0vRkZl?= =?utf-8?B?cUo2d2xMRTZYcy83bzJnVUZ0aTd4OXFQanJYSWgvVXRBUWptUkthZnoyZVhk?= =?utf-8?B?b2ZpaUh4bzV4bTdzZnMrYm53cEo5TFFaUHB4TXdJU0hFcWlWYkZiM1VmRTdp?= =?utf-8?B?bUFsenB1azBOUzhPcWN5dHhxVVI2cmZpZnFXRUFFc042T01JeEw0TWQxTXEv?= =?utf-8?Q?jrSS5CgeLqQ4zj7O7SC+qW3jiXrNW5HO+xlUAEm?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <6DAFF07A12E54D4FB6042CA8C4484D37@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: CH2PR13MB3525.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 61606177-778e-44fb-b721-08d8f46f71e3 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Mar 2021 18:04:36.0872 (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: WozTThQ7C1gSEB2JMWsGZQ3Wy95J60TYFXrtTEr0PYNEdWyO/xwOdfaMWvQkTlVBsCQ2OyJCFGLey/3AKK0HkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR13MB3301 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org T24gV2VkLCAyMDIxLTAzLTMxIGF0IDEzOjQ5IC0wNDAwLCBEYXZpZCBXeXNvY2hhbnNraSB3cm90 ZToNCj4gVHJvbmQsDQo+IA0KPiBJJ3ZlIGJlZW4gd29ya2luZyBvbiBnZXR0aW5nIE5GUyBjb252 ZXJ0ZWQgdG8gZGhvd2VsbHMgbmV3IGZzY2FjaGUNCj4gYW5kDQo+IG5ldGZzIEFQSXMgYW5kIHJ1 bm5pbmcgaW50byBhIHByb2JsZW0gd2l0aCBob3cgTkZTIGlzIGRlc2lnbmVkIGFuZCBpdA0KPiBp bnZvbHZlcyB0aGUgTkZTIHBhZ2VsaXN0LmMgLyBwZ2lvIEFQSS7CoCBJJ2QgYXBwcmVjaWF0ZSBp dCBpZiB5b3UNCj4gY291bGQgcmV2aWV3IGFuZCBnaXZlIHlvdXIgdGhvdWdodHMgb24gcG9zc2li bGUgYXBwcm9hY2hlcy7CoCBJJ3ZlDQo+IHRyaWVkIHRvIG91dGxpbmUgc29tZSBvZiB0aGUgcG9z c2liaWxpdGllcyBiZWxvdy7CoCBJIHRyaWVkIGNvZGluZw0KPiBvcHRpb24gIzMgYW5kIHJhbiBp bnRvIHNvbWUgcHJvYmxlbXMsIGFuZCBpdCBoYXMgYSBzZXJpYWxpemF0aW9uDQo+IGxpbWl0YXRp b24uwqAgQXQgdGhpcyBwb2ludCBJJ20gbGVhbmluZyB0b3dhcmRzIG9wdGlvbiAyLCBzbyBJJ2xs DQo+IHByb2JhYmx5IHRyeSB0aGF0IGFwcHJvYWNoIGlmIHlvdSBkb24ndCBoYXZlIHRpbWUgZm9y IHJldmlldyBvciBoYXZlDQo+IHN0cm9uZyB0aG91Z2h0cyBvbiBpdC4NCj4gDQoNCkkgYW0gbm90 IGdvaW5nIHRocm91Z2ggYW5vdGhlciByZWRlc2lnbiBvZiB0aGUgTkZTIGNvZGUgaW4gb3JkZXIg dG8NCmFjY29tbW9kYXRlIGFub3RoZXIgY2FjaGVmcyBkZXNpZ24uIElmIG5ldGZzIG5lZWRzIGEg cmVmYWN0b3Jpbmcgb3INCnJlZGVzaWduIG9mIHRoZSBJL08gY29kZSB0aGVuIGl0IHdpbGwgYmUg aW1tZWRpYXRlbHkgTkFDS2VkLg0KDQpXaHkgZG9lcyBuZXRmcyBuZWVkIHRvIGtub3cgdGhlc2Ug ZGV0YWlscyBhYm91dCB0aGUgTkZTIGNvZGUgYW55d2F5Pw0KDQo+IFRoYW5rcy4NCj4gDQo+IA0K PiBQcm9ibGVtOiBUaGUgTkZTIHBhZ2VpbyBpbnRlcmZhY2UgZG9lcyBub3QgZXhwb3NlIGEgbWF4 IHJlYWQgbGVuZ3RoDQo+IHRoYXQNCj4gd2UgY2FuIGVhc2lseSB1c2UgaW5zaWRlIG5ldGZzIGNs YW1wX2xlbmd0aCgpIGZ1bmN0aW9uLsKgIEFzIGEgcmVzdWx0LA0KPiB3aGVuDQo+IGlzc3VlX29w KCkgaXMgY2FsbGVkIGluZGljYXRpbmcgYSBzaW5nbGUgbmV0ZnMgc3VicmVxdWVzdCwgdGhpcyBj YW4NCj4gYmUNCj4gc3BsaXQgaW50bw0KPiBtdWx0aXBsZSBORlMgc3VicmVxdWVzdHMgLyBSUENz IGluc2lkZSBndXRzIG9mIE5GUyBwYWdlaW8gY29kZS7CoA0KPiBNdWx0aXBsZQ0KPiBORlMgc3Vi cmVxdWVzdHMgcmVxdWVzdHMgbGVhZHMgdG8gbXVsdGlwbGUgY29tcGxldGlvbnMsIGFuZCB0aGUg bmV0ZnMNCj4gQVBJIGV4cGVjdHMgYSAxOjEgbWFwcGluZyBiZXR3ZWVuIGlzc3VlX29wKCkgYW5k DQo+IG5ldGZzX3N1YnJlcV90ZXJtaW5hdGVkKCkgY2FsbHMuDQo+IA0KPiBEZXRhaWxzIG9mIHRo ZSBORlMgcGFnZWlvIEFQSSAoc2VlIGluY2x1ZGUvbGludXgvbmZzX3BhZ2UuaCBhbmQNCj4gZnMv bmZzL3BhZ2VsaXN0LmMpDQo+IERldGFpbHMgb2YgdGhlIG5ldGZzIEFQSSAoc2VlIGluY2x1ZGUv bGludXgvbmV0ZnMuaCBhbmQNCj4gZnMvbmV0ZnMvcmVhZF9oZWxwZXIuYykNCj4gDQo+IFRoZSBO RlMgcGFnZWlvIEFQSSAzIG1haW4gY2FsbHMgYXJlIGFzIGZvbGxvd3M6DQo+IDEuIG5mc19wYWdl aW9faW5pdCgpOiBpbml0aWFsaXplIGEgcGFnZWlvIHN0cnVjdHVyZSAoUi9XIElPIG9mIE4NCj4g cGFnZXMpDQo+IDIuIG5mc19wYWdlaW9fYWRkX3JlcXVlc3QoKTogY2FsbGVkIGZvciBlYWNoIHBh Z2UgdG8gYWRkIHRvIGFuIElPDQo+ICogQ2FsbHMgbmZzX3BhZ2Vpb19hZGRfcmVxdWVzdF9taXJy b3IgLT4gX19uZnNfcGFnZWlvX2FkZF9yZXF1ZXN0DQo+IMKgICogX19uZnNfcGFnZWlvX2FkZF9y ZXF1ZXN0IG1heSBjYWxsIG5mc19wYWdlaW9fZG9pbygpIHdoaWNoDQo+IGFjdHVhbGx5DQo+IMKg wqDCoCBzZW5kcyBhbiBSUEMgb3ZlciB0aGUgd2lyZSBpZiBwYWdlIGNhbm5vdCBiZSBhZGRlZCB0 byB0aGUgcmVxdWVzdA0KPiDCoMKgwqAgKCJjb2FsZXNjZWQiKSBkdWUgdG8gdmFyaW91cyBmYWN0 b3JzLsKgIEZvciBtb3JlIGRldGFpbHMsIHNlZQ0KPiDCoMKgwqAgbmZzX3BhZ2Vpb19kb19hZGRf cmVxdWVzdCgpIGFuZCBhbGwgdW5kZXJseWluZyBjb2RlIGl0IGNhbGxzIHN1Y2gNCj4gwqDCoMKg IGFzIG5mc19jb2FsZXNjZV9zaXplKCkgYW5kIHN1YnNlcXVlbnQgcGdpby0+cGdfb3BzLT5wZ190 ZXN0KCkNCj4gY2FsbHMNCj4gMy4gbmZzX3BhZ2Vpb19jb21wbGV0ZSgpIC0gImNvbXBsZXRlIiB0 aGUgcGFnZWlvDQo+ICogY2FsbHMgbmZzX3BhZ2Vpb19jb21wbGV0ZV9taXJyb3IgLT4gbmZzX3Bh Z2Vpb19kb2lvKCkNCj4gDQo+IFRoZSBORlMgcGFnZWlvIEFQSSB0aHVzIG1heSBnZW5lcmF0ZSBt dWx0aXBsZSBvdmVyIHRoZSB3aXJlIFJQQ3MNCj4gYW5kIHRodXMgbXVsdGlwbGUgY29tcGxldGlv bnMgZXZlbiB0aG91Z2ggYXQgdGhlIGhpZ2ggbGV2ZWwgb25seQ0KPiBvbmUgY2FsbCB0byBuZnNf cGFnZWlvX2NvbXBsZXRlKCkgaXMgbWFkZS4NCj4gDQo+IE9wdGlvbiAxOiBKdXN0IHVzZSBORlMg cGFnZWlvIEFQSSBhcyBpcywgYW5kIGRlYWwgd2l0aCBwb3NzaWJsZQ0KPiBtdWx0aXBsZQ0KPiBj b21wbGV0aW9ucy4NCj4gLSBJbmNvbnNpc3RlbnQgd2l0aCBuZXRmcyBkZXNpZ24gaW50ZW50DQo+ IC0gTmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBSUEMgY29tcGxldGlvbiBzdGF0dXMsIGFuZCBm b3IgZXhhbXBsZSwNCj4gaWYgb25lIGNvbXBsZXRlcyB3aXRoIHN1Y2Nlc3MgYW5kIG9uZSBhbiBl cnJvciwgcHJvYmFibHkgY2FsbA0KPiBuZXRmc19zdWJyZXFfdGVybWluYXRlZCgpIHdpdGggdGhl IGVycm9yLg0KPiAtIFRoZXJlJ3Mgbm8gd2F5IGZvciB0aGUgY2FsbGVyIG9mIHRoZSBORlMgcGFn ZWlvIEFQSSB0byBrbm93IGhvdw0KPiBtYW55IFJQQ3MgYW5kIHRodXMgY29tcGxldGlvbnMgbWF5 IG9jY3VyLsKgIFRodXMsIGl0J3MgdW5jbGVhciBob3cNCj4gb25lIHdvdWxkIGRpc3Rpbmd1aXNo IGJldHdlZW4gYSBSRUFEIHRoYXQgcmVzdWx0ZWQgaW4gYSBzaW5nbGUgUlBDDQo+IG92ZXIgdGhl IHdpcmUgdGhhdCBjb21wbGV0ZWQgYXMgYSBzaG9ydCByZWFkLCBhbmQgYSBSRUFEIHRoYXQNCj4g cmVzdWx0ZWQgaW4gbXVsdGlwbGUgUlBDcyB0aGF0IHdvdWxkIGVhY2ggY29tcGxldGUgc2VwYXJh dGVseSwNCj4gYnV0IHdvdWxkIGV2ZW50dWFsbHkgY29tcGxldGUNCj4gDQo+IE9wdGlvbiAyOiBD cmVhdGUgYSBtb3JlIGNvbXBsZXggJ2NsYW1wX2xlbmd0aCgpJyBmdW5jdGlvbiBmb3IgTkZTLA0K PiB0YWtpbmcgaW50byBhY2NvdW50IGFsbCB3YXlzIE5GUyAvIHBORlMgY29kZSBjYW4gc3BsaXQg YSByZWFkLg0KPiArIENvbnNpc3RlbnQgd2l0aCBuZXRmcyBkZXNpZ24gaW50ZW50DQo+ICsgTXVs dGlwbGUgInNwbGl0IiByZXF1ZXN0cyB3b3VsZCBiZSBjYWxsZWQgaW4gcGFyYWxsZWwgKHNlZSBs b29wDQo+IGluc2lkZSBuZXRmc19yZWFkYWhlYWQsIHdoaWNoIHJlcGVhdGVkbHkgY2FsbHMNCj4g bmV0ZnNfcnJlcV9zdWJtaXRfc2xpY2UpDQo+IC0gTG9va3MgaW1wb3NzaWJsZSB3aXRob3V0IHJl ZmFjdG9yaW5nIG9mIE5GUyBwZ2lvIEFQSS7CoCBXZSBuZWVkDQo+IHRvIHByZXZlbnQgbmZzX3Bh Z2Vpb19hZGRfcmVxdWVzdCgpIGZyb20gY2FsbGluZyBuZnNfcGFnaW9fZG9pbygpLA0KPiBhbmQg cmV0dXJuIHNvbWUgaW5kaWNhdGlvbiBjb2FsZXNjZSBmYWlsZWQuwqAgSW4gYWRkaXRpb24sIGl0 IG1heQ0KPiBydW4gaW50byBwcm9ibGVtcyB3aXRoIGZhbGxiYWNrIGZyb20gRFMgdG8gTURTIGZv ciBleGFtcGxlIChzZWUNCj4gY29tbWl0IGQ5MTU2ZjlmMzY0ODk3ZTkzYmRkOThiNGFkMjIxMzhk ZTE4ZjdjMjQpLg0KPiANCj4gT3B0aW9uIDM6IFV0aWxpemUgTkVURlNfU1JFUV9TSE9SVF9SRUFE IGZsYWcgYXMgbmVlZGVkLg0KPiArIENvbnNpc3RlbnQgd2l0aCBuZXRmcyBkZXNpZ24gaW50ZW50 DQo+IC0gTXVsdGlwbGUgInNwbGl0IiByZXF1ZXN0cyB3b3VsZCBiZSBzZXJpYWxpemVkIChzZWUg Y29kZQ0KPiBwYXRocyBpbnNpZGUgbmV0ZnNfc3VicmVxX3Rlcm1pbmF0ZWQgdGhhdCBjaGVjayBm b3IgdGhpcyBmbGFnKS4NCj4gLSBMb29rcyBpbXBvc3NpYmxlIHdpdGhvdXQgc29tZSByZWZhY3Rv cmluZyBvZiBORlMgcGdpbyBBUEkuDQo+ICogTm90ZXM6IFRlcm1pbmF0ZSBORlMgcGFnZWlvIHBh Z2UgYmFzZWQgbG9vcCBhdCB0aGUgZmlyc3QgY2FsbA0KPiB0byBuZnNfcGFnZWlvX2RvaW8oKS7C oCBXaGVuIGEgUkVBRCBjb21wbGV0ZXMsIE5GUyBjYWxscw0KPiBuZXRmc19zdWJyZXFfdGVybWlu YXRlZCgpIHdpdGggTkVURlNfU1JFUV9TSE9SVF9SRUFEDQo+IGFuZCBpcyBwcmVwYXJlZCB0byBo YXZlIHRoZSByZXN0IG9mIHRoZSBzdWJyZXF1ZXN0IGJlIHJlc3VibWl0dGVkLg0KPiBOZWVkIHRv IHNvbWVob3cgZmFpbCBlYXJseSBvciBhdm9pZCBlbnRpcmVseSBzdWJzZXF1ZW50IGNhbGxzIHRv DQo+IG5mc19wYWdpb19kb2lvKCkgZm9yIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHRob3VnaCwgYW5k IGhhbmRsZQ0KPiBlcnJvciBzdGF0dXMgb25seSBmcm9tIHRoZSBmaXJzdCBSUEMuDQo+IA0KPiBP cHRpb24gNDogQWRkIHNvbWUgZmluYWwgY29tcGxldGlvbiByb3V0aW5lIHRvIGJlIGNhbGxlZCBu ZWFyDQo+IGJvdHRvbSBvZiBuZnNfcGFnZWlvX2NvbXBsZXRlKCkgYW5kIHdvdWxkIHBhc3MgaW4g YXQgbGVhc3QNCj4gbmV0ZnNfcmVhZF9zdWJyZXF1ZXN0KCksIHBvc3NpYmx5IG5mc19wYWdlaW9f ZGVzY3JpcHRvci4NCj4gKyBJbmNvbnNpc3RlbnQgd2l0aCBuZXRmcyBkZXNpZ24gaW50ZW50DQo+ IC0gV291bGQgYmUgYSBuZXcgTkZTIEFQSSBvciBjYWxsIG9uIHRvcCBvZiBldmVyeXRoaW5nDQo+ IC0gTmVlZCB0byBoYW5kbGUgdGhlICJtdWx0aXBsZSBjb21wbGV0aW9uIHdpdGggZGlmZmVyZW50 DQo+IHN0YXR1cyIgcHJvYmxlbSAoc2VlICMxKS4NCj4gDQoNCi0tIA0KVHJvbmQgTXlrbGVidXN0 DQpMaW51eCBORlMgY2xpZW50IG1haW50YWluZXIsIEhhbW1lcnNwYWNlDQp0cm9uZC5teWtsZWJ1 c3RAaGFtbWVyc3BhY2UuY29tDQoNCg0K