Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp411819pxm; Fri, 25 Feb 2022 10:22:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJynvQ+UVRrzMYcl0pWFEXGG+f76fNj7ZFCDFrXn5EOHVIjwRXtSXjZqMzcoPK0ZfRecb7G0 X-Received: by 2002:a17:902:e74e:b0:14f:f1c0:aaed with SMTP id p14-20020a170902e74e00b0014ff1c0aaedmr8881168plf.19.1645813341651; Fri, 25 Feb 2022 10:22:21 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1645813341; cv=pass; d=google.com; s=arc-20160816; b=L+XOfG1rRXCsyOXUEw7mqUQ07AVRJKpggVn35m97Ct4NEUmv7bFGNH9f957rRryTYV ATI30VHLQNdMNVuY09A3Rl1BaKx5uvYt+0HnaGX2Rz+W/C5CzY2xQxF5GpVnRpZSsbmg bTx3WspRo47N0L0+DGlMpbxCit7+/MZTMSuACjL70Y1BP0gVROt3wGPaq3Ffw/osjiIC FU6nBsbfg5zRXGnuvrxw3VYTSBTW8dy54u4dKuZN4L0m+Br8JtW7mAe5PkIxkXzZF+WQ KTf+LC+kwv5uwI6KTZPexdA2aV3aRDe09m7ON79J3RsXLo5Cc3rdw/DOlDlAxxT5JOz7 Omew== 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=WW3b11rVwWUao6VhRIUXcm2U/M2g2ii832aJN6JwyzI=; b=bHmMyFlt2BUCubkMe1QlOTuA92Wy0x2bNQVTUhp/x4VDXXtKAo0Qz1KnY3TKkwrGr9 e/9WCYM2zB12HNvo+H2cLXJhzDWy2JxhvcETCSjzzWz39voQ933fa40ubgMJ++yhgzn9 HAh/YXNnOkKCLk+Wt2ENPZz/XqyTVmUPLTYKU6EG2jYbAZbekBMAntMzEXvOfBP0+Idc /NnSLPraXkYtDe4QHnDUQ2Rg9vVXubaLUf7oxQ60kpGjtD3JywJGV3JAXpNuJWpCW1Pf lSjVPAbD8N/SadZlsnI/Azo3zw+FLnia7S/DgBqUTyiM2voE7uUxWNvWDzB/fyyM5lxq SFgQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=LKZ2M6jT; 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 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v1-20020a655c41000000b003759c2baa53si2233040pgr.139.2022.02.25.10.21.32; Fri, 25 Feb 2022 10:22:20 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=LKZ2M6jT; 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 2620:137:e000::1:20 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 S240409AbiBYNKl (ORCPT + 99 others); Fri, 25 Feb 2022 08:10:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55924 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240158AbiBYNKk (ORCPT ); Fri, 25 Feb 2022 08:10:40 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on20708.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eae::708]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 42D651E7A5C for ; Fri, 25 Feb 2022 05:10:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aXygfzr8bSCa8u55PQp6RT7RNHDq9VmdiMhrcYZCuj61NcYcuA+42ac1W9HHtUZF+9+JRT5oCCe8uDjLTKQNMrlQhXE15G/mDgfyKz7ntaZ+zpc/cc0td+d5S9xs/rjMLmVmzUyhQzsB1nvRzldzKRM0u9cpDtJLO7A2IlpeJquMy9QhoHEh/QrNMLBdNsuZiEopncr5i+erji+J7ASk/L0ks5CM0QcVBumOdWFARZgqNIgw8ZLhcBygn7mHl4Rml7aYnnfhhBHS38K5M6NdMVh2RLS/NBS5tsZozzd8flIuVBb3racDBIwUg0NwN3P/oRof8vKRIQ6MZMmBP/h3wQ== 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=WW3b11rVwWUao6VhRIUXcm2U/M2g2ii832aJN6JwyzI=; b=Q22lHgB4QdXzMaIWzxEGtbkWrxt+jUiMixD2IwbHb71N8GLoyVzAnRiApdbGndscgnO3Xyp5FmoGPpGCZEbDAmpJKgTyADk4fQSRRxRki1BZaLDu9gYE76LFvzvsKc823AScXgi6zRjGZlMGvqr4NoO4OgclJ1xgGvSVUFnXhM3/RxhGmEbPGzXKAvRuGotpX/Q/yo5u65cURuTHM0gN2KncZ7BKXHlKPjdPfB3zH1lNq8GAiyImKurG1qmiC0s0lnj/a1oB29bl96gv1cLOTDpKfnvSVtI4teZpDhcRHw7+MOCDQC9+w5I30rUc+t6Yj46qH2OnW3HtQSN5dlpoeQ== 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=WW3b11rVwWUao6VhRIUXcm2U/M2g2ii832aJN6JwyzI=; b=LKZ2M6jTdlJc2CiyCysHE5xXzLuV74D5ZvwvoA0Bre4rcAqMLaMZJRycaJh4f8ucsyMNHnv1iiRYuCCGj1cYr15JiATHIvaiSLnVydElDZYjZdDjPFYyuxwFgXcKx+juSznWF4Z9ki9NKrOBLqi7CEkcHFnykKTvbNUM3T7OT2M= Received: from CH0PR13MB5084.namprd13.prod.outlook.com (2603:10b6:610:111::7) by SN6PR13MB2416.namprd13.prod.outlook.com (2603:10b6:805:63::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.9; Fri, 25 Feb 2022 13:10:04 +0000 Received: from CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::21ea:8eb5:7891:7743]) by CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::21ea:8eb5:7891:7743%7]) with mapi id 15.20.5038.010; Fri, 25 Feb 2022 13:10:03 +0000 From: Trond Myklebust To: "bcodding@redhat.com" CC: "linux-nfs@vger.kernel.org" Subject: Re: [PATCH v7 05/21] NFS: Store the change attribute in the directory page cache Thread-Topic: [PATCH v7 05/21] NFS: Store the change attribute in the directory page cache Thread-Index: AQHYKPs4DPebyPXb0kmsTNMhrdh+Eqyiyo0AgADBr4CAABeuAIAAgosAgAAZkwA= Date: Fri, 25 Feb 2022 13:10:03 +0000 Message-ID: References: <20220223211305.296816-1-trondmy@kernel.org> <20220223211305.296816-2-trondmy@kernel.org> <20220223211305.296816-3-trondmy@kernel.org> <20220223211305.296816-4-trondmy@kernel.org> <20220223211305.296816-5-trondmy@kernel.org> <20220223211305.296816-6-trondmy@kernel.org> <0DBE97BF-3A88-49FD-B078-012B5EDA5849@redhat.com> <1ca16f7e7be9588d15525e3afa4f7a80eb66b12b.camel@hammerspace.com> <9506801a7b7b6330ce2807721da5e03d77cf5c78.camel@hammerspace.com> <640B2705-35C6-4E9E-89D2-CC3D0E10EC3A@redhat.com> In-Reply-To: <640B2705-35C6-4E9E-89D2-CC3D0E10EC3A@redhat.com> 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-office365-filtering-correlation-id: bb7eeb21-cc92-47b1-5e7a-08d9f8602314 x-ms-traffictypediagnostic: SN6PR13MB2416:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: V6Vx3p4yeiJQSSruX/KYGbudSB2PAyBmE4SJSq5xV8BDL9lnwthlp/p4+UFMXgR79M/rGszcl5L22HEzhRJ3G47aiNprZEAqiXm3euq7REQlWzkBWb60MEEr7wdnG9R0z0FUI8eGc0ILk824ZKeMSpT9fiNPmQ7dUCO9c++Wpc4cMZSWkQAX2MkEe4YV769TyrzMQpzAa/WPFcyQXX8bWmZ4R3cyZ+o6p6FmJV8WkvY8TCYCqNLeu8YbaMxTZMmhLOjGZpERg0CjDUf4zPNxhOVvoZ3NKHPLiDBjNK50HC42qUSwKdZOTNvTNceMIT7VGhvVd0Dw6xtTtWphZk3q/ZYC1cUAeLoiEgUAkVaB8q//M3g39GyFCKibF5YUUKWIatlsfeN790+c2pO2yZjtdnFj9q0H+FOz29kvK+NhDp4Gy6WqVY6w51PW9MjqEwi8Hr/ujkmnhRBBsIHJty3zeetyoHefq4j9xq+0WxobRnTN0+mkeKDRgCyE/EE/a8u4tA1s2c0ztAg3o6cqd9fwwfAeYakmzZm/le5zKxBUFIhm+UaSFyGx5E2n738OyDYhWbfns6O4rKjCeqNhvz5PztX2QR6TBSxl1cPhNM4mEHuNQLD77WF+dqoE99M33ccwCxcgzANoIWERPQDmw5m5x+tXB9BAdUQkyKmBJx/tlnlEaL6nT7dpKL4i/EpssXLA6kBiwUBTW7SLjLVO7R/fztJTjI3reZOivAks8VpSGdafRbC5rDG0XQuCG/N9O7VEfPVWMww0fhph8ZbyBJUBrktLt+vlJBPHIcMnM2lGZ6w= 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:(13230001)(39840400004)(396003)(366004)(346002)(136003)(376002)(86362001)(71200400001)(8676002)(66446008)(64756008)(66476007)(66556008)(76116006)(66946007)(2906002)(4326008)(966005)(122000001)(508600001)(6486002)(316002)(53546011)(6916009)(38070700005)(38100700002)(6512007)(6506007)(83380400001)(8936002)(5660300002)(2616005)(26005)(36756003)(186003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MXkzNUZEemlDay9mQ01HZEFXTkl6YmlmeGpLOTd3eU81a0JESmJoaHVqT05T?= =?utf-8?B?bGE4ODhXOUR1YXI5OC9pZzNRK1FvRFlCZHp6ZEg1ZHEyalYrYUN2a1lKQTJE?= =?utf-8?B?Qld5cmNEVEJVNkxuL1VRbE9JWU9OQWUyZ3Q5dEJmWWJ4aEJITWwzSkJleGZC?= =?utf-8?B?UmRUZ2lHS25rNCtpRWN4MEhpSFRZQzJ5dmRxbTd5RUNmN2VKNUtoQkxEa0lv?= =?utf-8?B?V09mL292SE9wQWQyWlZEWXhmTDMrdC9qckxLcVc3OFB6NkhGRUdTVndwYTYr?= =?utf-8?B?cDUxUUxUc2Q3SDYvUVNtNjJ5Yk1YOHQ1ZmQ1QmlPbm1YRjhGYTk1b2tXNExy?= =?utf-8?B?Ky8wWVpLSjFjQm1EMkc0UTQ5UkRQUXJMYWVPbWMwWnduR3RreTc2NXI2bmUz?= =?utf-8?B?RmNWbDFCY1A1ajJNY0k3MnlOUnJlcFlnenVHYlVRTzlvaFJmblBlUmRUcXV0?= =?utf-8?B?M28xdXhxYlpqYXc2M2FwYWJEVThnZUQyMXoyb0RYV3F4QlpMZFhQWnVZS0tV?= =?utf-8?B?dXFFSkZpVDhLc3lQaWRtNDY5eVJhRWw5cnd2UzJKWVpwOFBNWGVEc3V3bWQ3?= =?utf-8?B?OC9rdWQxWnVmQ3BXQVRIcXJPeFAxWkc3NTdVUFZkQjJxYUl1RlRrTXd6SGxo?= =?utf-8?B?d2JDOUVSWjlLL3NXSDVrbks1dEpYdlYrQU03SDhieWorQU1JT3hBYzFrZ3Rh?= =?utf-8?B?anppYng2anRaeGQ4elRxTDVyVmkvZlZBV3dZbkxFeXpPd1k5UVpMWTQzZmhK?= =?utf-8?B?MTExL2M5Rk5sUndrUDdJZjJac3lFbUViY2ZEaXZDZkU2U0FURnFYUlJUZVd4?= =?utf-8?B?VWJuSTFVMnY4UGpUZHJjVzVYRVhESVdPQ3BVV3VJSG9EMno5MWxvalY3eEdx?= =?utf-8?B?eE9wUjRMZ1ZOZkhEUGJiMUZQdmgrZlZCSEV2dUhZanJRM2I0eUdkTytENGF6?= =?utf-8?B?MkQ5QTA0L09WMXdzU0EyZ3RJcE84Vzd5QW10RHBoTVp2N3ZrWDBNNERKdWRR?= =?utf-8?B?NUhQbmNVYTdNSitLeHpDUmRBZEFqaDdSV0FWZWlVcUg0d1ZHM2hXdS9NeU84?= =?utf-8?B?UllvRXRjdnNUMGluVEs2NVRPR0Q4YVlTcEhJeEVIWG91K0NIM1RrRGEwNmEy?= =?utf-8?B?bUF6QURMSXVGODcyWVV6NEtXRlREMkp4NEFPWDJnblFiaUluRlhjZUF0c0Np?= =?utf-8?B?SUxkZFBSRURhUlJSR05qZ0FIU1JyTlczampsRWc4YWxxZXlVdlNvZ0FIbnlu?= =?utf-8?B?WWhVTWxJeDFWVVZiUjh1NVJDYXNvclpPbjZzempkY2p6TldzVDFybmN0L3dG?= =?utf-8?B?ZDlkaCtoUC9GbGhKWFNBODZqampsZm14M1BIYnMyVUFQbXVLR3pTYmtYSzd4?= =?utf-8?B?MTZNLzlrL3Vsb1BvS2t6UEg5MnczN0plZFFyVmUvaWNGT1F5MEkrWFluaU1E?= =?utf-8?B?KzI1MXQ4REVZVS9oL0RTckFaL1ZRZnJOYk0vWDBjYWZFcS9ad2srTmc4VzZY?= =?utf-8?B?WWd3Y2YxOTFielVHWlJOSW1PZGtKQU5TeVo1UmNwa3I5aE5XQ2IwVG81QjVK?= =?utf-8?B?dlFJL2lGY1Z4QUpwR3VyUHpFcmdGWlU2YzY1YU04SGlLZzBSM2s2OUs5aVNO?= =?utf-8?B?TE8vUldhVXl3TG1TWmxDZmNqMzJaWUUrbnJrUlNxODZiR2l3TzFkMTAzb1cr?= =?utf-8?B?L3ErTmpEUzRiRVZaeWZmSkFTSFl4TC9IT1dxd3prdjYySFN0QVBZWnVwbkd3?= =?utf-8?B?VGV6QllEbk13YWl6MGh1akVlOFB0bDVVWlV2VWhzd0pSM25XNU1EandYSnBC?= =?utf-8?B?cVFuNHdOMW1pWGFsam5TZW1abEFLWmtveVNtTzRmSzIrOVZWaUNlaEc0TU1p?= =?utf-8?B?YWZYNWpYSVhmSThQWHEwajNNZEtuNUp0dmdTUlZ6Q3ozN2xMbXFrQ3Q2R3hD?= =?utf-8?B?TVlnTmtLN2tHNFBvWWQ4dVRueW5yd1M2TngvdlJacnJNU3N5alN2VWV1TDJh?= =?utf-8?B?a1JpMUkyV1BINndHVEFQckNHdkh1MU9qdlhkdU1DQU56VUU3U3BLSnFHc0pi?= =?utf-8?B?UkU0SS9NaUVUQ2wvb2F1S3ZDcHhZTkMzVlVicGRHTnlwVEZkR3U2SnNGZ0lE?= =?utf-8?B?RWowSkZEMEpqNDhFVGhTWXlmOFhJbXhMcjR0bDZtbUdxOGlMdSs4Zi9BZGQ0?= =?utf-8?Q?QOKWSz+bclx5+OiclJWSgU0=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: 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: bb7eeb21-cc92-47b1-5e7a-08d9f8602314 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Feb 2022 13:10:03.6690 (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: fNaKZ1ORB1TYDnrGplbdNf4XohAx3O2Yy/LtF77w6fgPkM2CpKGkzGVGubTJVkpohlEGYiXSLjvUJ11a4a7NeQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR13MB2416 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org T24gRnJpLCAyMDIyLTAyLTI1IGF0IDA2OjM4IC0wNTAwLCBCZW5qYW1pbiBDb2RkaW5ndG9uIHdy b3RlOg0KPiBPbiAyNCBGZWIgMjAyMiwgYXQgMjI6NTEsIFRyb25kIE15a2xlYnVzdCB3cm90ZToN Cj4gDQo+ID4gT24gRnJpLCAyMDIyLTAyLTI1IGF0IDAyOjI2ICswMDAwLCBUcm9uZCBNeWtsZWJ1 c3Qgd3JvdGU6DQo+ID4gPiBPbiBUaHUsIDIwMjItMDItMjQgYXQgMDk6NTMgLTA1MDAsIEJlbmph bWluIENvZGRpbmd0b24gd3JvdGU6DQo+ID4gPiA+IE9uIDIzIEZlYiAyMDIyLCBhdCAxNjoxMiwg dHJvbmRteUBrZXJuZWwub3JnwqB3cm90ZToNCj4gPiA+ID4gDQo+ID4gPiA+ID4gRnJvbTogVHJv bmQgTXlrbGVidXN0IDx0cm9uZC5teWtsZWJ1c3RAaGFtbWVyc3BhY2UuY29tPg0KPiA+ID4gPiA+ IA0KPiA+ID4gPiA+IFVzZSB0aGUgY2hhbmdlIGF0dHJpYnV0ZSBhbmQgdGhlIGZpcnN0IGNvb2tp ZSBpbiBhIGRpcmVjdG9yeQ0KPiA+ID4gPiA+IHBhZ2UNCj4gPiA+ID4gPiBjYWNoZQ0KPiA+ID4g PiA+IGVudHJ5IHRvIHZhbGlkYXRlIHRoYXQgdGhlIHBhZ2UgaXMgdXAgdG8gZGF0ZS4NCj4gPiA+ ID4gPiANCj4gPiA+ID4gPiBTdWdnZXN0ZWQtYnk6IEJlbmphbWluIENvZGRpbmd0b24gPGJjb2Rk aW5nQHJlZGhhdC5jb20+DQo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogVHJvbmQgTXlrbGVidXN0 DQo+ID4gPiA+ID4gPHRyb25kLm15a2xlYnVzdEBoYW1tZXJzcGFjZS5jb20+DQo+ID4gPiA+ID4g LS0tDQo+ID4gPiA+ID4gwqBmcy9uZnMvZGlyLmMgfCA2OA0KPiA+ID4gPiA+ICsrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gPiDCoDEg ZmlsZSBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkNCj4gPiA+ID4g PiANCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL2Rpci5jIGIvZnMvbmZzL2Rpci5jDQo+ ID4gPiA+ID4gaW5kZXggZjIyNThlOTI2ZGYyLi41ZDkzNjdkOWI2NTEgMTAwNjQ0DQo+ID4gPiA+ ID4gLS0tIGEvZnMvbmZzL2Rpci5jDQo+ID4gPiA+ID4gKysrIGIvZnMvbmZzL2Rpci5jDQo+ID4g PiA+ID4gQEAgLTEzOSw2ICsxMzksNyBAQCBzdHJ1Y3QgbmZzX2NhY2hlX2FycmF5X2VudHJ5IHsN Cj4gPiA+ID4gPiDCoH07DQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gwqBzdHJ1Y3QgbmZzX2NhY2hl X2FycmF5IHsNCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqB1NjQgY2hhbmdlX2F0dHI7DQo+ID4g PiA+ID4gwqDCoMKgwqDCoMKgwqDCoHU2NCBsYXN0X2Nvb2tpZTsNCj4gPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgdW5zaWduZWQgaW50IHNpemU7DQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHVu c2lnbmVkIGNoYXIgcGFnZV9mdWxsIDogMSwNCj4gPiA+ID4gPiBAQCAtMTc1LDcgKzE3Niw4IEBA IHN0YXRpYyB2b2lkIG5mc19yZWFkZGlyX2FycmF5X2luaXQoc3RydWN0DQo+ID4gPiA+ID4gbmZz X2NhY2hlX2FycmF5ICphcnJheSkNCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgbWVtc2V0KGFy cmF5LCAwLCBzaXplb2Yoc3RydWN0IG5mc19jYWNoZV9hcnJheSkpOw0KPiA+ID4gPiA+IMKgfQ0K PiA+ID4gPiA+IA0KPiA+ID4gPiA+IC1zdGF0aWMgdm9pZCBuZnNfcmVhZGRpcl9wYWdlX2luaXRf YXJyYXkoc3RydWN0IHBhZ2UgKnBhZ2UsDQo+ID4gPiA+ID4gdTY0DQo+ID4gPiA+ID4gbGFzdF9j b29raWUpDQo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIG5mc19yZWFkZGlyX3BhZ2VfaW5pdF9hcnJh eShzdHJ1Y3QgcGFnZSAqcGFnZSwNCj4gPiA+ID4gPiB1NjQNCj4gPiA+ID4gPiBsYXN0X2Nvb2tp ZSwNCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTY0IA0KPiA+ID4gPiA+IGNoYW5n ZV9hdHRyKQ0KPiA+ID4gPiA+IMKgew0KPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg bmZzX2NhY2hlX2FycmF5ICphcnJheTsNCj4gPiA+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiBUaGVy ZSdzIGEgaHVuayBtaXNzaW5nIGhlcmUsIHNvbWV0aGluZyBsaWtlOg0KPiA+ID4gPiANCj4gPiA+ ID4gQEAgLTE4NSw2ICsxODUsNyBAQCBzdGF0aWMgdm9pZA0KPiA+ID4gPiBuZnNfcmVhZGRpcl9w YWdlX2luaXRfYXJyYXkoc3RydWN0DQo+ID4gPiA+IHBhZ2UNCj4gPiA+ID4gKnBhZ2UsIHU2NCBs YXN0X2Nvb2tpZSwNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCBuZnNfcmVhZGRpcl9hcnJheV9p bml0KGFycmF5KTsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCBhcnJheS0+bGFzdF9jb29raWUg PSBsYXN0X2Nvb2tpZTsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCBhcnJheS0+Y29va2llc19h cmVfb3JkZXJlZCA9IDE7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqAgYXJyYXktPmNoYW5nZV9hdHRy ID0gY2hhbmdlX2F0dHI7DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqAga3VubWFwX2F0b21pYyhh cnJheSk7DQo+ID4gPiA+IMKgIH0NCj4gPiA+ID4gDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gQEAg LTIwNyw3ICsyMDksNyBAQCBuZnNfcmVhZGRpcl9wYWdlX2FycmF5X2FsbG9jKHU2NA0KPiA+ID4g PiA+IGxhc3RfY29va2llLA0KPiA+ID4gPiA+IGdmcF90IGdmcF9mbGFncykNCj4gPiA+ID4gPiDC oHsNCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHBhZ2UgKnBhZ2UgPSBhbGxvY19w YWdlKGdmcF9mbGFncyk7DQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChwYWdlKQ0KPiA+ ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZnNfcmVhZGRpcl9wYWdlX2lu aXRfYXJyYXkocGFnZSwgDQo+ID4gPiA+ID4gbGFzdF9jb29raWUpOw0KPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZnNfcmVhZGRpcl9wYWdlX2luaXRfYXJyYXkocGFn ZSwgDQo+ID4gPiA+ID4gbGFzdF9jb29raWUsDQo+ID4gPiA+ID4gMCk7DQo+ID4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiBwYWdlOw0KPiA+ID4gPiA+IMKgfQ0KPiA+ID4gPiA+IA0KPiA+ ID4gPiA+IEBAIC0zMDQsMTkgKzMwNiw0NCBAQCBpbnQgbmZzX3JlYWRkaXJfYWRkX3RvX2FycmF5 KHN0cnVjdA0KPiA+ID4gPiA+IG5mc19lbnRyeQ0KPiA+ID4gPiA+ICplbnRyeSwgc3RydWN0IHBh Z2UgKnBhZ2UpDQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7DQo+ID4gPiA+ ID4gwqB9DQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gK3N0YXRpYyBib29sIG5mc19yZWFkZGlyX3Bh Z2VfY29va2llX21hdGNoKHN0cnVjdCBwYWdlICpwYWdlLA0KPiA+ID4gPiA+IHU2NA0KPiA+ID4g PiA+IGxhc3RfY29va2llLA0KPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4g PiA+ID4gPiB1NjQgY2hhbmdlX2F0dHIpDQo+ID4gPiA+IA0KPiA+ID4gPiBIb3cgYWJvdXQgIm5m c19yZWFkZGlyX3BhZ2VfdmFsaWQoKSI/wqAgVGhlcmUncyBtb3JlIGdvaW5nIG9uDQo+ID4gPiA+ IHRoYW4gYQ0KPiA+ID4gPiBjb29raWUgbWF0Y2guDQo+ID4gPiA+IA0KPiA+ID4gPiANCj4gPiA+ ID4gPiArew0KPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBuZnNfY2FjaGVfYXJyYXkg KmFycmF5ID0ga21hcF9hdG9taWMocGFnZSk7DQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaW50 IHJldCA9IHRydWU7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChh cnJheS0+Y2hhbmdlX2F0dHIgIT0gY2hhbmdlX2F0dHIpDQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IGZhbHNlOw0KPiA+ID4gPiANCj4gPiA+ID4gQ2FuIHdl IHNraXAgdGhlIG5leHQgdGVzdCBpZiByZXQgPSBmYWxzZT8NCj4gPiA+IA0KPiA+ID4gSSdkIGV4 cGVjdCB0aGUgY29tcGlsZXIgdG8gZG8gdGhhdC4NCj4gPiA+IA0KPiA+ID4gPiANCj4gPiA+ID4g PiArwqDCoMKgwqDCoMKgwqBpZiAoYXJyYXktPnNpemUgPiAwICYmIGFycmF5LT5hcnJheVswXS5j b29raWUgIT0NCj4gPiA+ID4gPiBsYXN0X2Nvb2tpZSkNCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gZmFsc2U7DQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg a3VubWFwX2F0b21pYyhhcnJheSk7DQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHJl dDsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArc3RhdGljIHZvaWQgbmZz X3JlYWRkaXJfcGFnZV91bmxvY2tfYW5kX3B1dChzdHJ1Y3QgcGFnZQ0KPiA+ID4gPiA+ICpwYWdl KQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdW5sb2NrX3BhZ2UocGFn ZSk7DQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgcHV0X3BhZ2UocGFnZSk7DQo+ID4gPiA+ID4g K30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gwqBzdGF0aWMgc3RydWN0IHBhZ2UgKm5mc19yZWFk ZGlyX3BhZ2VfZ2V0X2xvY2tlZChzdHJ1Y3QNCj4gPiA+ID4gPiBhZGRyZXNzX3NwYWNlDQo+ID4g PiA+ID4gKm1hcHBpbmcsDQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcGdvZmZfdCANCj4gPiA+ID4gPiBpbmRleCwNCj4gPiA+ID4gPiB1NjQNCj4gPiA+ ID4gPiBsYXN0X2Nvb2tpZSkNCj4gPiA+ID4gPiDCoHsNCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHBhZ2UgKnBhZ2U7DQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTY0IGNoYW5n ZV9hdHRyOw0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBwYWdlID0gZ3Jh Yl9jYWNoZV9wYWdlKG1hcHBpbmcsIGluZGV4KTsNCj4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqBp ZiAocGFnZSAmJiAhUGFnZVVwdG9kYXRlKHBhZ2UpKSB7DQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG5mc19yZWFkZGlyX3BhZ2VfaW5pdF9hcnJheShwYWdlLCANCj4g PiA+ID4gPiBsYXN0X2Nvb2tpZSk7DQo+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIA0KPiA+ID4gPiA+IChpbnZhbGlkYXRlX2lub2RlX3BhZ2VzMl9yYW5nZShtYXBw aW5nLCBpbmRleA0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAxLCAtMSkgPCAwKQ0KPiA+ID4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmZzX3phcF9t YXBwaW5nKG1hcHBpbmctPmhvc3QsIA0KPiA+ID4gPiA+IG1hcHBpbmcpOw0KPiA+ID4gPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBTZXRQYWdlVXB0b2RhdGUocGFnZSk7DQo+ID4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFwYWdlKQ0KPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqBj aGFuZ2VfYXR0ciA9IA0KPiA+ID4gPiA+IGlub2RlX3BlZWtfaXZlcnNpb25fcmF3KG1hcHBpbmct Pmhvc3QpOw0KPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChQYWdlVXB0b2RhdGUocGFnZSkp IHsNCj4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgDQo+ID4gPiA+ ID4gKG5mc19yZWFkZGlyX3BhZ2VfY29va2llX21hdGNoKHBhZ2UsDQo+ID4gPiA+ID4gbGFzdF9j b29raWUsDQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCANCj4gPiA+ID4gPiBjaGFuZ2VfYXR0cikpDQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcGFnZTsNCj4gPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmZzX3JlYWRkaXJfY2xlYXJfYXJyYXkocGFnZSk7 DQo+ID4gPiA+IA0KPiA+ID4gPiANCj4gPiA+ID4gV2h5IHVzZSBpX3ZlcnNpb24gcmF0aGVyIHRo YW4gbmZzX3NhdmVfY2hhbmdlX2F0dHJpYnV0ZT/CoCBTZWVtcw0KPiA+ID4gPiBoYXZpbmcgYQ0K PiA+ID4gPiBjb25zaXN0ZW50IHZhbHVlIGFjcm9zcyB0aGUgcGFjaGVjYWNoZSBhbmQgZGlyX3Zl cmlmaWVycyB3b3VsZA0KPiA+ID4gPiBoZWxwDQo+ID4gPiA+IGRlYnVnZ2luZywgYW5kIHdlJ3Zl IGFscmVhZHkgaGF2ZSBhIGJ1bmNoIG9mIG1hY2hpbmVyeSBhcm91bmQNCj4gPiA+ID4gdGhlDQo+ ID4gPiA+IGNoYW5nZV9hdHRyaWJ1dGUuDQo+ID4gPiANCj4gPiA+IFRoZSBkaXJlY3RvcnkgY2Fj aGVfY2hhbmdlX2F0dHJpYnV0ZSBpcyBub3QgcmVwb3J0ZWQgaW4NCj4gPiA+IHRyYWNlcG9pbnRz DQo+ID4gPiBiZWNhdXNlIGl0IGlzIGEgZGlyZWN0b3J5LXNwZWNpZmljIGZpZWxkLCBzbyBpdCdz IG5vdCBhcyB1c2VmdWwNCj4gPiA+IGZvcg0KPiA+ID4gZGVidWdnaW5nLg0KPiA+ID4gDQo+ID4g PiBUaGUgaW5vZGUgY2hhbmdlIGF0dHJpYnV0ZSBpcyB3aGF0IHdlIGhhdmUgdHJhZGl0aW9uYWxs eSB1c2VkIGZvcg0KPiA+ID4gZGV0ZXJtaW5pbmcgY2FjaGUgY29uc2lzdGVuY3ksIGFuZCB3aGVu IHRvIGludmFsaWRhdGUgdGhlIGNhY2hlLg0KPiA+IA0KPiA+IEkgc2hvdWxkIHByb2JhYmx5IGVs YWJvcmF0ZSBhIGxpdHRsZSBmdXJ0aGVyIG9uIHRoZSBkaWZmZXJlbmNlcyANCj4gPiBiZXR3ZWVu DQo+ID4gdGhlIGlub2RlIGNoYW5nZSBhdHRyaWJ1dGUgYW5kIHRoZSBjYWNoZV9jaGFuZ2VfYXR0 cmlidXRlLg0KPiA+IA0KPiA+IE9uZSBvZiB0aGUgbWFpbiByZWFzb25zIGZvciBpbnRyb2R1Y2lu ZyB0aGUgbGF0dGVyIHdhcyB0byBoYXZlDQo+ID4gc29tZXRoaW5nIHRoYXQgYWxsb3dzIHVzIHRv IHRyYWNrIGNoYW5nZXMgdG8gdGhlIGRpcmVjdG9yeSwgYnV0IHRvDQo+ID4gYXZvaWQgZm9yY2lu ZyB1bm5lY2Vzc2FyeSByZXZhbGlkYXRpb25zIG9mIHRoZSBkY2FjaGUuDQo+ID4gDQo+ID4gV2hh dCB0aGlzIG1lYW5zIGlzIHRoYXQgd2hlbiB3ZSBjcmVhdGUgb3IgcmVtb3ZlIGEgZmlsZSwgYW5k IHRoZQ0KPiA+IHByZS9wb3N0LW9wIGF0dHJpYnV0ZXMgdGVsbCB1cyB0aGF0IHRoZXJlIHdlcmUg bm8gdGhpcmQgcGFydHkNCj4gPiBjaGFuZ2VzDQo+ID4gdG8gdGhlIGRpcmVjdG9yeSwgd2UgdXBk YXRlIHRoZSBkY2FjaGUsIGJ1dCB3ZSBkbyBfbm90XyB1cGRhdGUgdGhlDQo+ID4gY2FjaGVfY2hh bmdlX2F0dHJpYnV0ZSwgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHJlc3Qgb2YgdGhlDQo+ID4g ZGlyZWN0b3J5DQo+ID4gY29udGVudHMgYXJlIHZhbGlkLCBhbmQgc28gd2UgZG9uJ3QgaGF2ZSB0 byByZXZhbGlkYXRlIHRoZQ0KPiA+IGRlbnRyaWVzLg0KPiA+IEhvd2V2ZXIgaW4gdGhhdCBjYXNl LCB3ZSBfZG9fIHdhbnQgdG8gdXBkYXRlIHRoZSByZWFkZGlyIGNhY2hlIHRvDQo+ID4gcmVmbGVj dCB0aGUgZmFjdCB0aGF0IGFuIGVudHJ5IHdhcyBhZGRlZCBvciBkZWxldGVkLiBXaGlsZSB3ZSBj b3VsZA0KPiA+IGZpZ3VyZSBvdXQgaG93IHRvIHJlbW92ZSBhbiBlbnRyeSAoYXQgbGVhc3QgZm9y IHRoZSBjYXNlIHdoZXJlIHRoZQ0KPiA+IGZpbGVzeXN0ZW0gaXMgY2FzZS1zZW5zaXRpdmUpLCB3 ZSBkbyBub3Qga25vdyB3aGVyZSB0aGUgZmlsZXN5c3RlbQ0KPiA+IGFkZGVkIHRoZSBuZXcgZmls ZSwgb3Igd2hhdCBjb29raWVzIHdhcyBhc3NpZ25lZC4NCj4gPiANCj4gPiBUaGlzIGlzIHdoeSB0 aGUgaW5vZGUgY2hhbmdlIGF0dHJpYnV0ZSBpcyBtb3JlIGFwcHJvcHJpYXRlIGZvciANCj4gPiBp bmRleGluZw0KPiA+IHRoZSBwYWdlIGNhY2hlIHBhZ2VzLiBJdCByZWZsZWN0cyB0aGUgY2FzZXMg d2hlcmUgd2Ugd2FudCB0byANCj4gPiByZXZhbGlkYXRlDQo+ID4gdGhlIHJlYWRkaXIgY2FjaGUs IGFzIG9wcG9zZWQgdG8gdGhlIGRjYWNoZS4NCj4gDQo+IE9rLCB0aGFua3MgZm9yIGV4cGxhaW5p bmcgdGhpcy4NCj4gDQo+IEkndmUgbm90aWNlZCB0aGF0IHlvdSBoYXZlbid0IHJlc3BvbmRlZCBh Ym91dCBteSBjb25jZXJucyBhYm91dCBub3QgDQo+IGNoZWNraW5nDQo+IHRoZSBkaXJlY3Rvcnkg Zm9yIGNoYW5nZXMgd2l0aCBldmVyeSB2NCBSRUFERElSLsKgIEZvciB2Mywgd2UgaGF2ZSANCj4g cG9zdC1vcA0KPiB1cGRhdGVzIHRvIHRoZSBkaXJlY3RvcnksIGJ1dCB3aXRoIHY0IHRoZSBkaXJl Y3RvcnkgY2FuIGNoYW5nZSBhbmQNCj4gd2UnbGwNCj4gZW5kIHVwIHdpdGggZW50cmllcyBpbiB0 aGUgY2FjaGUgdGhhdCBhcmUgbWFya2VkIHdpdGggYW4gb2xkIA0KPiBjaGFuZ2VfYXR0ci4NCj4g DQoNClRoZW4gdGhleSB3aWxsIGJlIHJlamVjdGVkIGJ5IG5mc19yZWFkZGlyX3BhZ2VfY29va2ll X21hdGNoKCkgaWYgYSB1c2VyDQpsb29rcyB1cCB0aGF0IHBhZ2UgYWdhaW4gYWZ0ZXIgd2UndmUg cmV2YWxpZGF0ZWQgdGhlIGNoYW5nZSBhdHRyaWJ1dGUNCm9uIHRoZSBkaXJlY3RvcnkuDQoNCi4u LmFuZCBub3RlIHRoYXQgTkZTdjQgZG9lcyByZXR1cm5zIGEgc3RydWN0IGNoYW5nZV9pbmZvNCBm b3IgYWxsDQpvcGVyYXRpb25zIHRoYXQgY2hhbmdlIHRoZSBkaXJlY3RvcnksIHNvIHdlIHdpbGwg dXBkYXRlIHRoZSBjaGFuZ2UNCmF0dHJpYnV0ZSBpbiBhbGwgdGhvc2UgY2FzZXMuDQoNCklmIHRo ZSBjaGFuZ2UgaXMgbWFkZSBvbiB0aGUgc2VydmVyLCB3ZWxsIHRoZW4gd2Ugd2lsbCBkZXRlY3Qg aXQNCnRocm91Z2ggdGhlIHN0YW5kYXJkIHJldmFsaWRhdGlvbiBwcm9jZXNzIHRoYXQgdXN1YWxs eSBkZWNpZGVzIHdoZW4gdG8NCmludmFsaWRhdGUgdGhlIGRpcmVjdG9yeSBwYWdlIGNhY2hlLg0K DQo+IEknbSBwcmV0dHkgcG9zaXRpdmUgdGhhdCBub3QgY2hlY2tpbmcgZm9yIGNoYW5nZXMgdG8g dGhlIGRpcmVjdG9yeQ0KPiAobm90DQo+IHNlbmRpbmcgR0VUQVRUUiB3aXRoIFJFQURESVIpIGlz IGdvaW5nIHRvIGNyZWF0ZSBjYXNlcyBvZiBkb3VibGUtDQo+IGxpc3RlZCANCj4gYW5kDQo+IHRy dW5jYXRlZC1saXN0aW5ncyBmb3IgZGlyY3RvcnkgbGlzdGVycy7CoCBOb3QgaGFuZGxpbmcgdGhv c2UgY2FzZXMNCj4gbWVhbnMgDQo+IEknbQ0KPiBnb2luZyB0byBoYXZlIHNvbWUgdmVyeSB1bmhh cHB5IGN1c3RvbWVycyB0aGF0IGNvbXBsYWluIGFib3V0IHRoZWlyIA0KPiBmaWxlcw0KPiBkaXNh cHBlYXJpbmcvcmVhcHBlYXJpbmcgb24gTkZTLg0KPiANCj4gSWYgeW91IG5lZWQgbWUgdG8gcHJv dmUgdGhhdCBpdHMgYW4gaXNzdWUsIEkgY2FuIHRha2UgdGhlIHRpbWUgdG8NCj4gd3JpdGUgDQo+ IHVwDQo+IHByb2dyYW0gdGhhdCBzaG93cyB0aGlzIHByb2JsZW0uDQo+IA0KDQpJZiB5b3UgbGFi ZWwgdGhlIHBhZ2UgY29udGVudHMgd2l0aCBhbiBhdHRyaWJ1dGUgdGhhdCB3YXMgcmV0cmlldmVk DQpfYWZ0ZXJfIHRoZSBSRUFERElSIG9wLCB0aGVuIHlvdSB3aWxsIGludHJvZHVjZSB0aGlzIGFz IGEgcHJvYmxlbSBmb3INCnlvdXIgY3VzdG9tZXJzLg0KDQpUaGUgcmVhc29uIGlzIHRoYXQgdGhl cmUgaXMgbm8gYXRvbWljaXR5IGJldHdlZW4gb3BlcmF0aW9ucyBpbiBhDQpDT01QT1VORC4gV29y c2UsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiByZWFkZGlyIGluIHNjYWxhYmxlIG1vZGVybg0Kc3lz dGVtcywgaW5jbHVkaW5nIExpbnV4LCBkb2VzIG5vdCBldmVuIGd1YXJhbnRlZSBhdG9taWNpdHkg b2YgdGhlDQpyZWFkZGlyIG9wZXJhdGlvbiBpdHNlbGYuIEluc3RlYWQgZWFjaCByZWFkZGlyIGVu dHJ5IGlzIGZpbGxlZCB3aXRob3V0DQpob2xkaW5nIGFueSBsb2NrcyBvciBwcmV2ZW50aW5nIGFu eSBjaGFuZ2VzIHRvIHRoZSBkaXJlY3Rvcnkgb3IgdG8gdGhlDQpvYmplY3QgaXRzZWxmLg0KDQpQ T1NJWCBzdGF0ZXMgdmVyeSBleHBsaWNpdGx5IHRoYXQgaWYgeW91J3JlIG1ha2luZyBjaGFuZ2Vz IHRvIHRoZQ0KZGlyZWN0b3J5IGFmdGVyIHRoZSBjYWxsIHRvIG9wZW5kaXIoKSBvciByZXdpbmRk aXIoKSwgdGhlbiB0aGUNCmJlaGF2aW91ciB3LnIudC4gd2hldGhlciB0aGF0IGZpbGUgYXBwZWFy cyBpbiB0aGUgcmVhZGRpcigpIGNhbGwgaXMNCnVuc3BlY2lmaWVkLiBTZWUNCmh0dHBzOi8vcHVi cy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9mdW5jdGlvbnMvcmVhZGRpci5o dG1sDQoNClRoaXMgaXMgYWxzbyBjb25zaXN0ZW50IHdpdGggaG93IGdsaWJjIGNhY2hlcyB0aGUg cmVzdWx0cyBvZiBhDQpnZXRkZW50cygpIGNhbGwuDQoNCi0tIA0KVHJvbmQgTXlrbGVidXN0DQpM aW51eCBORlMgY2xpZW50IG1haW50YWluZXIsIEhhbW1lcnNwYWNlDQp0cm9uZC5teWtsZWJ1c3RA aGFtbWVyc3BhY2UuY29tDQoNCg0K