Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2156531ybb; Thu, 2 Apr 2020 14:21:51 -0700 (PDT) X-Google-Smtp-Source: APiQypKF60XiZehgGoDujALWvcNL2vdcJXgZy0lV2vy3MZnZWmPqMajoWOuMVp06qihSJRIMqV/R X-Received: by 2002:aca:57d6:: with SMTP id l205mr800132oib.20.1585862511012; Thu, 02 Apr 2020 14:21:51 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1585862511; cv=pass; d=google.com; s=arc-20160816; b=zRiABPkBDuJTnuZzvznPGXhD3zjPRjAFEqiDyrZ7sGfWUjM78RnNeMFHvb2Dp8FWPh e6hdNBml1JtDE4wwQAoysaTHdwDvxBHOSHVcp4JPNCpXD1OT2iiR38lARwIbnxWx8pro 8Bi8PIFVJb20HkWaLgNYSqTVqncNYHpp+1u7KkFaosCSl1CaH1DOOi+3Czk/YovgUe5x m+xInmZpQxF/vb5AXCUMVUYfiXj1MQ2dqSsuh7/gdDwAa5uIz24M5qykArA9pb6pORpr tmxcq8FtelXYOYpZVovVTUa615e2UYgy9XZTLQs0/c0ZJ67uvsQGFjcCQc/ZAhwItP4F 49HQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=gsJKC161BtScacKzhmHKwFeCEnHUrCzcJe5aa280oOE=; b=GZIK3OOZ5SuVlnlC6AqZ9izMY49K472vHs88M85mRvrK0buc5O2HlxbtsuoC475S3J m68QJ+ToUKZA6ofbB0ei2OJkGAeuXWKYhGkOE+4TDxIFJOGFfExrG5mbcPmkEqvzool0 sBWe+/NZEooxQoopltg63YN8EUNhjYN2/85lwcNDx3jiQWM1+27VXrStxDspw5zpLFoe aYRUZBpMdwYOEKDI0L4O40zCQiRKrqBh59EKES0OugSLZRPwsi40XFbHrM1Z7ZyPoD8m bj9bAti9WEPhVY268TDeD6GiCPwUmj43BdojnrH27saSUOYjC87ag8O5NrzjZD6R/Thf ZdaQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@microsoft.com header.s=selector2 header.b=L5u8TmNi; arc=pass (i=1 spf=pass spfdomain=microsoft.com dkim=pass dkdomain=microsoft.com dmarc=pass fromdomain=microsoft.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h27si2966811oos.21.2020.04.02.14.21.37; Thu, 02 Apr 2020 14:21:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@microsoft.com header.s=selector2 header.b=L5u8TmNi; arc=pass (i=1 spf=pass spfdomain=microsoft.com dkim=pass dkdomain=microsoft.com dmarc=pass fromdomain=microsoft.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388630AbgDBVOJ (ORCPT + 99 others); Thu, 2 Apr 2020 17:14:09 -0400 Received: from mail-bn8nam11on2116.outbound.protection.outlook.com ([40.107.236.116]:12096 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729549AbgDBVOI (ORCPT ); Thu, 2 Apr 2020 17:14:08 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EucwxOTmU/Criq7yD7DsHTc3lYhaqO+ndrIijeqPSFkEbwsL2X1KqmrfSGCQGQeoEepZdO/cG/2+V6XMPJo33UGfr3ZaSOcMq8tuRS/qZZZSK5irNQ/kucJOyXAW4PGWaj90YySDc5tunZU2XX5+rmomnj6qFt9NPowA1yr966SR+YOVZXRsKC+l3/F0XKlv2RDCfiEFzm4vCNTIQb/ca7UgWx5wRLBloVkJZLCfPXeClyHOYd4+8a8w2h0CFbvts7CJLZTry3d9oqTQTuQjEJQ2UWFGiWX+NU9IkK3dAJnXi1P/9HA5qE64lfYvN89RxhF6jOa3rVODeuynP1lr/g== 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=gsJKC161BtScacKzhmHKwFeCEnHUrCzcJe5aa280oOE=; b=I/7XTQiPcfOX8i8FQcF/zqXXB0RIyaEdLxvO18V/QEnVrebJyfCxfVzQmsx2PbwjqbxtU+8XJzLZ+EKbd7LKsso32hju8VLJYOEBLBg8lwqvOYiAoVlstjDaCxtvqnJFMMH1RnOf01HAWvv3aSGk5EoDlXc9vqst0pKZwY5Jy1arMrl7eS2Bvq1b9caJDThH7Dg82w1So4VZWpXSuHFi4S16SvWpQDDu7n1gnm6/5nC16M9FUF4Qx43IcXq9yUQ9y9kbrjklEIFtFOXj7spsMb8wIbN6AWwTYIEwMZjlvvmtrqtjQDh6ngSkLAQy1/vhQoMXK7aYiVPUusLHAvB4Rg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gsJKC161BtScacKzhmHKwFeCEnHUrCzcJe5aa280oOE=; b=L5u8TmNimpq7viIK7kUR9Rey2k37bSEvVUTWTPcEXnOqycRi7TVWjZl0RZ/WhwGl+5IQvbJQZnq27NMCRtk40jOiTogavPZ01eSOc/SeCIO9UapYnVcfLo18VPNnTMEsw2ijdr+4uOvlwfSNCgjvm7YVz3YwG6Vti2tuv8naqD4= Received: from BN8PR21MB1155.namprd21.prod.outlook.com (2603:10b6:408:73::10) by BN8PR21MB1154.namprd21.prod.outlook.com (2603:10b6:408:72::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.3; Thu, 2 Apr 2020 21:13:28 +0000 Received: from BN8PR21MB1155.namprd21.prod.outlook.com ([fe80::d11:18b7:289c:ea17]) by BN8PR21MB1155.namprd21.prod.outlook.com ([fe80::d11:18b7:289c:ea17%6]) with mapi id 15.20.2900.002; Thu, 2 Apr 2020 21:13:28 +0000 From: Long Li To: kbuild test robot , "longli@linuxonhyperv.com" CC: "kbuild-all@lists.01.org" , Steve French , "linux-cifs@vger.kernel.org" , "samba-technical@lists.samba.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH] cifs: smbd: Update receive credits before sending and deal with credits roll back on failure before sending Thread-Topic: [PATCH] cifs: smbd: Update receive credits before sending and deal with credits roll back on failure before sending Thread-Index: AQHWByyS0wS8MJh3r0CTCLUsT+rDaahlB6eAgAFQ3NA= Date: Thu, 2 Apr 2020 21:13:27 +0000 Message-ID: References: <1585639101-117035-1-git-send-email-longli@linuxonhyperv.com> <20200402010655.GA8179@shao2-debian> In-Reply-To: <20200402010655.GA8179@shao2-debian> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=longli@microsoft.com; x-originating-ip: [2001:4898:80e8:f:eddf:db5c:c6fe:798] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 4dfbdfe9-fe2f-4f7b-755e-08d7d74ab043 x-ms-traffictypediagnostic: BN8PR21MB1154: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0361212EA8 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR21MB1155.namprd21.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10019020)(4636009)(396003)(376002)(136003)(366004)(39860400002)(346002)(76116006)(7696005)(30864003)(186003)(86362001)(52536014)(5660300002)(6506007)(66946007)(33656002)(15650500001)(8990500004)(8936002)(2906002)(4326008)(10290500003)(8676002)(54906003)(110136005)(478600001)(66446008)(316002)(71200400001)(64756008)(81156014)(66476007)(9686003)(82960400001)(55016002)(81166006)(66556008)(82950400001);DIR:OUT;SFP:1102; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: z0JG6UnAQkSIF/ZPYY2xhe/SitrFRyIbTccWnKX8DAqq2JJ1R6RLwK7tUXvN2QOS0XCW3noA7zeA6Vg0fnoGPqabuk1zmBI/kir3IuZZXtrPX/0PTH4r5pWeosCuSZYX99VVBXxR5vtl8gSJThgVjJhwlicKZICm/4JV/vOUoO+Gv4ckm59IrP/q71R/s1j9/HRWh9UPdabhuZpXrTy1s/8zydWvlb99Amb72Lma3/uC+PRuDJAC/Hk41MxNsEMcoummEWXpTzkfqywpmY4ihtFvpS9GqMdEXJJV+rPqbB25GPR2xpD1mCwD1wXlE2ByrHmcfxK1FA8POa05IQzwACO51fzb3rATzurAv16bHxdk5T80b3lGlNN4F/u9RuZCSvYaX7xuWjZdZwvKtWn2AYq5ZDyEO7amVv85Kn/G8/kecbpkVCf4thyYb2iL6Rdpt13nS4OaPJcoicqWCl53ejGlxbmYF3dRwn9PAQeKc35BUTH98lgv7oso1a9dn5IF4z+9jVohhUCLmd4/KCUpGw== x-ms-exchange-antispam-messagedata: F+bc9GSW/xFR+xoCw9VFhMqA308Lmgr6mvwpnFYviN4MsMnOeqocjxMHkkydjcb82xK+kIe3kggeKQcO4DzYfG9faCdi+QCnr20/uDT+uG6QBkqkPXyyN6Ic0gMRfzx2p+bDwBC2il2LfB7fL22cDuOB3QjekpDgXbDSL1hZtpD9iarNX3I3w160WTISzwETxA83J9Ljf7GaUNXZnetygw== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4dfbdfe9-fe2f-4f7b-755e-08d7d74ab043 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2020 21:13:27.9827 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: iNzIwzDomkC53L2fnaPahbQRZ1GFfb7BfK7T5GHxr4SyDL8FBE8z/mXxS11zU1ulouWQz7uI8Vz09VAqWDqyKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR21MB1154 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PlN1YmplY3Q6IFJlOiBbUEFUQ0hdIGNpZnM6IHNtYmQ6IFVwZGF0ZSByZWNlaXZlIGNyZWRpdHMg YmVmb3JlIHNlbmRpbmcgYW5kDQo+ZGVhbCB3aXRoIGNyZWRpdHMgcm9sbCBiYWNrIG9uIGZhaWx1 cmUgYmVmb3JlIHNlbmRpbmcNCj4NCj5IaSwNCj4NCj5UaGFuayB5b3UgZm9yIHRoZSBwYXRjaCEg UGVyaGFwcyBzb21ldGhpbmcgdG8gaW1wcm92ZToNCj4NCj5bYXV0byBidWlsZCB0ZXN0IFdBUk5J Tkcgb24gY2lmcy9mb3ItbmV4dF0gW2Fsc28gYnVpbGQgdGVzdCBXQVJOSU5HIG9uIHY1LjYNCj5u ZXh0LTIwMjAwMzMxXSBbaWYgeW91ciBwYXRjaCBpcyBhcHBsaWVkIHRvIHRoZSB3cm9uZyBnaXQg dHJlZSwgcGxlYXNlIGRyb3AgdXMgYQ0KPm5vdGUgdG8gaGVscCBpbXByb3ZlIHRoZSBzeXN0ZW0u IEJUVywgd2UgYWxzbyBzdWdnZXN0IHRvIHVzZSAnLS1iYXNlJyBvcHRpb24NCj50byBzcGVjaWZ5 IHRoZSBiYXNlIHRyZWUgaW4gZ2l0IGZvcm1hdC1wYXRjaCwgcGxlYXNlIHNlZQ0KPmh0dHBzOi8v bmFtMDYuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUy RnN0YWNrDQo+b3ZlcmZsb3cuY29tJTJGYSUyRjM3NDA2OTgyJmFtcDtkYXRhPTAyJTdDMDElN0Ns b25nbGklNDBtaWNyb3NvZnQuDQo+Y29tJTdDZmQzMjM2NDU3YjEzNGNhYjVhYTcwOGQ3ZDZhMjMx MjQlN0M3MmY5ODhiZjg2ZjE0MWFmOTFhYjJkN2NkDQo+MDExZGI0NyU3QzElN0MwJTdDNjM3MjEz ODY0NDA0OTEzMzc1JmFtcDtzZGF0YT1jTVd2JTJGOU9GR1piZQ0KPndQZDFRU2UyY2V2c0NpNEx1 JTJCVThOVG1LdG40VWJVcyUzRCZhbXA7cmVzZXJ2ZWQ9MF0NCj4NCj51cmw6DQo+aHR0cHM6Ly9u YW0wNi5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJG Z2l0aHUNCj5iLmNvbSUyRjBkYXktY2klMkZsaW51eCUyRmNvbW1pdHMlMkZsb25nbGktbGludXhv bmh5cGVydi1jb20lMkZjaWZzLQ0KPnNtYmQtVXBkYXRlLXJlY2VpdmUtY3JlZGl0cy1iZWZvcmUt c2VuZGluZy1hbmQtZGVhbC13aXRoLWNyZWRpdHMtcm9sbC0NCj5iYWNrLW9uLWZhaWx1cmUtYmVm b3JlLXNlbmRpbmclMkYyMDIwMDMzMS0NCj4xNTIxMDQmYW1wO2RhdGE9MDIlN0MwMSU3Q2xvbmds aSU0MG1pY3Jvc29mdC5jb20lN0NmZDMyMzY0NTdiMTM0Y2ENCj5iNWFhNzA4ZDdkNmEyMzEyNCU3 QzcyZjk4OGJmODZmMTQxYWY5MWFiMmQ3Y2QwMTFkYjQ3JTdDMSU3QzAlN0M2Mw0KPjcyMTM4NjQ0 MDQ5MTMzNzUmYW1wO3NkYXRhPUI3Tkpjb1I1QVhQMEI1U1MzR0ozNkdUJTJCNzhzVnNmWEdSYQ0K Pk1xYU1aM3I3YyUzRCZhbXA7cmVzZXJ2ZWQ9MA0KPmJhc2U6ICAgZ2l0Oi8vZ2l0LnNhbWJhLm9y Zy9zZnJlbmNoL2NpZnMtMi42LmdpdCBmb3ItbmV4dA0KPnJlcHJvZHVjZToNCj4gICAgICAgICMg YXB0LWdldCBpbnN0YWxsIHNwYXJzZQ0KPiAgICAgICAgIyBzcGFyc2UgdmVyc2lvbjogdjAuNi4x LTE4Ny1nYmZmOWIxMDYtZGlydHkNCj4gICAgICAgIG1ha2UgQVJDSD14ODZfNjQgYWxsbW9kY29u ZmlnDQo+ICAgICAgICBtYWtlIEM9MSBDRj0nLWZkaWFnbm9zdGljLXByZWZpeCAtRF9fQ0hFQ0tf RU5ESUFOX18nDQo+Ojo6Ojo6IGJyYW5jaCBkYXRlOiAxMCBob3VycyBhZ28NCj46Ojo6OjogY29t bWl0IGRhdGU6IDEwIGhvdXJzIGFnbw0KPg0KPklmIHlvdSBmaXggdGhlIGlzc3VlLCBraW5kbHkg YWRkIGZvbGxvd2luZyB0YWcNCj5SZXBvcnRlZC1ieToga2J1aWxkIHRlc3Qgcm9ib3QgPGxrcEBp bnRlbC5jb20+DQoNClNlbnQgdjIgdG8gZml4IHRoaXMuDQoNClRoYW5rcywNCkxvbmcNCg0KPg0K Pj4+IGZzL2NpZnMvc21iZGlyZWN0LmM6ODU2OjI2OiBzcGFyc2U6IHNwYXJzZTogaW5jb3JyZWN0 IHR5cGUgaW4gYXJndW1lbnQgMQ0KPihkaWZmZXJlbnQgYmFzZSB0eXBlcykgQEAgICAgZXhwZWN0 ZWQgaW50IGkgQEAgICAgZ290IHJlc3RyaWN0ZWQgX19sZTE2DQo+W3VzZXJ0eWludCBpIEBADQo+ Pj4gZnMvY2lmcy9zbWJkaXJlY3QuYzo4NTY6MjY6IHNwYXJzZTogICAgZXhwZWN0ZWQgaW50IGkN Cj4+PiBmcy9jaWZzL3NtYmRpcmVjdC5jOjg1NjoyNjogc3BhcnNlOiAgICBnb3QgcmVzdHJpY3Rl ZCBfX2xlMTYgW3VzZXJ0eXBlXQ0KPmNyZWRpdHNfZ3JhbnRlZA0KPj4+IGZzL2NpZnMvc21iZGly ZWN0LmM6OTA1OjM1OiBzcGFyc2U6IHNwYXJzZTogaW52YWxpZCBhc3NpZ25tZW50OiArPQ0KPj4+ IGZzL2NpZnMvc21iZGlyZWN0LmM6OTA1OjM1OiBzcGFyc2U6ICAgIGxlZnQgc2lkZSBoYXMgdHlw ZSBpbnQNCj4+PiBmcy9jaWZzL3NtYmRpcmVjdC5jOjkwNTozNTogc3BhcnNlOiAgICByaWdodCBz aWRlIGhhcyB0eXBlIHJlc3RyaWN0ZWQgX19sZTE2DQo+ICAgZnMvY2lmcy9zbWJkaXJlY3QuYzo5 MDc6MjY6IHNwYXJzZTogc3BhcnNlOiBpbmNvcnJlY3QgdHlwZSBpbiBhcmd1bWVudCAxDQo+KGRp ZmZlcmVudCBiYXNlIHR5cGVzKSBAQCAgICBleHBlY3RlZCBpbnQgaSBAQCAgICBnb3QgcmVzdHJp Y3RlZCBfX2xlMTYNCj5bdXNlcnR5aW50IGkgQEANCj4gICBmcy9jaWZzL3NtYmRpcmVjdC5jOjkw NzoyNjogc3BhcnNlOiAgICBleHBlY3RlZCBpbnQgaQ0KPiAgIGZzL2NpZnMvc21iZGlyZWN0LmM6 OTA3OjI2OiBzcGFyc2U6ICAgIGdvdCByZXN0cmljdGVkIF9fbGUxNiBbdXNlcnR5cGVdDQo+Y3Jl ZGl0c19ncmFudGVkDQo+DQo+Iw0KPmh0dHBzOi8vbmFtMDYuc2FmZWxpbmtzLnByb3RlY3Rpb24u b3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmdpdGh1DQo+Yi5jb20lMkYwZGF5LQ0KPmNp JTJGbGludXglMkZjb21taXQlMkZlNWIyYzEyOWRkN2NiOWRiNTFjZDAyNWY5ODhmZjViYzJiMDk5 MGE5JmFtcA0KPjtkYXRhPTAyJTdDMDElN0Nsb25nbGklNDBtaWNyb3NvZnQuY29tJTdDZmQzMjM2 NDU3YjEzNGNhYjVhYTcwOGQ3ZDYNCj5hMjMxMjQlN0M3MmY5ODhiZjg2ZjE0MWFmOTFhYjJkN2Nk MDExZGI0NyU3QzElN0MwJTdDNjM3MjEzODY0NDA0OQ0KPjEzMzc1JmFtcDtzZGF0YT1KODZKUEJq NE9VRHJkdmh3QSUyRlViU285bVJvWklRSTM5aHd3MUgybk15c3MNCj4lM0QmYW1wO3Jlc2VydmVk PTANCj5naXQgcmVtb3RlIGFkZCBsaW51eC1yZXZpZXcNCj5odHRwczovL25hbTA2LnNhZmVsaW5r cy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cHMlM0ElMkYlMkZnaXRodQ0KPmIuY29t JTJGMGRheS0NCj5jaSUyRmxpbnV4JmFtcDtkYXRhPTAyJTdDMDElN0Nsb25nbGklNDBtaWNyb3Nv ZnQuY29tJTdDZmQzMjM2NDU3YjEzDQo+NGNhYjVhYTcwOGQ3ZDZhMjMxMjQlN0M3MmY5ODhiZjg2 ZjE0MWFmOTFhYjJkN2NkMDExZGI0NyU3QzElN0MwJTcNCj5DNjM3MjEzODY0NDA0OTEzMzc1JmFt cDtzZGF0YT1BeSUyRnZxRmN4cE10Z3N4Qk5KdWZpeHFQOXdMc0R5UmxNDQo+NTR4aWd1RDNZZnMl M0QmYW1wO3Jlc2VydmVkPTANCj5naXQgcmVtb3RlIHVwZGF0ZSBsaW51eC1yZXZpZXcNCj5naXQg Y2hlY2tvdXQgZTViMmMxMjlkZDdjYjlkYjUxY2QwMjVmOTg4ZmY1YmMyYjA5OTBhOQ0KPnZpbSAr ODU2IGZzL2NpZnMvc21iZGlyZWN0LmMNCj4NCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTct MTEtMDQgIDgwNg0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODA3ICAvKg0K PmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODA4ICAgKiBCdWlsZCBhbmQgcHJl cGFyZSB0aGUgU01CRCBwYWNrZXQNCj5oZWFkZXINCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIw MTctMTEtMDQgIDgwOSAgICogVGhpcyBmdW5jdGlvbiB3YWl0cyBmb3IgYXZhaWFsYmUNCj5zZW5k IGNyZWRpdHMgYW5kIGJ1aWxkIGEgU01CRCBwYWNrZXQNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExp IDIwMTctMTEtMDQgIDgxMCAgICogaGVhZGVyLiBUaGUgY2FsbGVyIHRoZW4gb3B0aW9uYWwNCj5h cHBlbmQgcGF5bG9hZCB0byB0aGUgcGFja2V0IGFmdGVyDQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBM aSAyMDE3LTExLTA0ICA4MTEgICAqIHRoZSBoZWFkZXINCj5mMTk4MTg2YWE5YmJkNiBMb25nIExp IDIwMTctMTEtMDQgIDgxMiAgICogaW50cHV0IHZhbHVlcw0KPmYxOTgxODZhYTliYmQ2IExvbmcg TGkgMjAxNy0xMS0wNCAgODEzICAgKiBzaXplOiB0aGUgc2l6ZSBvZiB0aGUgcGF5bG9hZA0KPmYx OTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODE0ICAgKiByZW1haW5pbmdfZGF0YV9s ZW5ndGg6IHJlbWFpbmluZw0KPmRhdGEgdG8gc2VuZCBpZiB0aGlzIGlzIHBhcnQgb2YgYQ0KPmYx OTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODE1ICAgKiBmcmFnbWVudGVkIHBhY2tl dA0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODE2ICAgKiBvdXRwdXQgdmFs dWVzDQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4MTcgICAqIHJlcXVlc3Rf b3V0OiB0aGUgcmVxdWVzdCBhbGxvY2F0ZWQNCj5mcm9tIHRoaXMgZnVuY3Rpb24NCj5mMTk4MTg2 YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDgxOCAgICogcmV0dXJuIHZhbHVlczogMCBvbiBz dWNjZXNzLA0KPm90aGVyd2lzZSBhY3R1YWwgZXJyb3IgY29kZSByZXR1cm5lZA0KPmYxOTgxODZh YTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODE5ICAgKi8NCj5mMTk4MTg2YWE5YmJkNiBMb25n IExpIDIwMTctMTEtMDQgIDgyMCAgc3RhdGljIGludCBzbWJkX2NyZWF0ZV9oZWFkZXIoc3RydWN0 DQo+c21iZF9jb25uZWN0aW9uICppbmZvLA0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0x MS0wNCAgODIxICAJCWludCBzaXplLCBpbnQNCj5yZW1haW5pbmdfZGF0YV9sZW5ndGgsDQo+ZjE5 ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4MjIgIAkJc3RydWN0IHNtYmRfcmVxdWVz dA0KPioqcmVxdWVzdF9vdXQpDQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4 MjMgIHsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDgyNCAgCXN0cnVjdCBz bWJkX3JlcXVlc3QgKnJlcXVlc3Q7DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0 ICA4MjUgIAlzdHJ1Y3Qgc21iZF9kYXRhX3RyYW5zZmVyDQo+KnBhY2tldDsNCj5mMTk4MTg2YWE5 YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDgyNiAgCWludCBoZWFkZXJfbGVuZ3RoOw0KPmYxOTgx ODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODI3ICAJaW50IHJjOw0KPmYxOTgxODZhYTli YmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODI4DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3 LTExLTA0ICA4MjkgIAkvKiBXYWl0IGZvciBzZW5kIGNyZWRpdHMuIEENCj5TTUJEIHBhY2tldCBu ZWVkcyBvbmUgY3JlZGl0ICovDQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4 MzAgIAlyYyA9DQo+d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGluZm8tPndhaXRfc2VuZF9xdWV1 ZSwNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDgzMSAgCQlhdG9taWNfcmVh ZCgmaW5mby0NCj4+c2VuZF9jcmVkaXRzKSA+IDAgfHwNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExp IDIwMTctMTEtMDQgIDgzMiAgCQlpbmZvLQ0KPj50cmFuc3BvcnRfc3RhdHVzICE9IFNNQkRfQ09O TkVDVEVEKTsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDgzMyAgCWlmIChy YykNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDgzNCAgCQlyZXR1cm4gcmM7 DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4MzUNCj5mMTk4MTg2YWE5YmJk NiBMb25nIExpIDIwMTctMTEtMDQgIDgzNiAgCWlmIChpbmZvLT50cmFuc3BvcnRfc3RhdHVzICE9 DQo+U01CRF9DT05ORUNURUQpIHsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQg IDgzNyAgCQlsb2dfb3V0Z29pbmcoRVJSLA0KPiJkaXNjb25uZWN0ZWQgbm90IHNlbmRpbmdcbiIp Ow0KPjYyZmRmNjcwN2ViZDQ2IExvbmcgTGkgMjAxOS0wNC0wNSAgODM4ICAJCXJldHVybiAtRUFH QUlOOw0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODM5ICAJfQ0KPmYxOTgx ODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODQwICAJYXRvbWljX2RlYygmaW5mby0NCj4+ c2VuZF9jcmVkaXRzKTsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg0MQ0K PmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODQyICAJcmVxdWVzdCA9DQo+bWVt cG9vbF9hbGxvYyhpbmZvLT5yZXF1ZXN0X21lbXBvb2wsIEdGUF9LRVJORUwpOw0KPmYxOTgxODZh YTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODQzICAJaWYgKCFyZXF1ZXN0KSB7DQo+ZjE5ODE4 NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4NDQgIAkJcmMgPSAtRU5PTUVNOw0KPmU1YjJj MTI5ZGQ3Y2I5IExvbmcgTGkgMjAyMC0wMy0zMSAgODQ1ICAJCWdvdG8gZXJyX2FsbG9jOw0KPmYx OTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODQ2ICAJfQ0KPmYxOTgxODZhYTliYmQ2 IExvbmcgTGkgMjAxNy0xMS0wNCAgODQ3DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTEx LTA0ICA4NDggIAlyZXF1ZXN0LT5pbmZvID0gaW5mbzsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExp IDIwMTctMTEtMDQgIDg0OQ0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODUw ICAJLyogRmlsbCBpbiB0aGUgcGFja2V0IGhlYWRlciAqLw0KPmYxOTgxODZhYTliYmQ2IExvbmcg TGkgMjAxNy0xMS0wNCAgODUxICAJcGFja2V0ID0NCj5zbWJkX3JlcXVlc3RfcGF5bG9hZChyZXF1 ZXN0KTsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg1MiAgCXBhY2tldC0+ Y3JlZGl0c19yZXF1ZXN0ZWQgPQ0KPmNwdV90b19sZTE2KGluZm8tPnNlbmRfY3JlZGl0X3Rhcmdl dCk7DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4NTMgIAlwYWNrZXQtPmNy ZWRpdHNfZ3JhbnRlZCA9DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4NTQN Cj4JY3B1X3RvX2xlMTYobWFuYWdlX2NyZWRpdHNfcHJpb3Jfc2VuZGluZyhpbmZvKSk7DQo+ZjE5 ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4NTUgIAlpbmZvLT5zZW5kX2ltbWVkaWF0 ZSA9IGZhbHNlOw0KPmU1YjJjMTI5ZGQ3Y2I5IExvbmcgTGkgMjAyMC0wMy0zMSBAODU2ICAJYXRv bWljX2FkZChwYWNrZXQtDQo+PmNyZWRpdHNfZ3JhbnRlZCwgJmluZm8tPnJlY2VpdmVfY3JlZGl0 cyk7DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4NTcNCj5mMTk4MTg2YWE5 YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg1OCAgCXBhY2tldC0+ZmxhZ3MgPSAwOw0KPmYxOTgx ODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODU5ICAJaWYNCj4obWFuYWdlX2tlZXBfYWxp dmVfYmVmb3JlX3NlbmRpbmcoaW5mbykpDQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTEx LTA0ICA4NjAgIAkJcGFja2V0LT5mbGFncyB8PQ0KPmNwdV90b19sZTE2KFNNQl9ESVJFQ1RfUkVT UE9OU0VfUkVRVUVTVEVEKTsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg2 MQ0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODYyICAJcGFja2V0LT5yZXNl cnZlZCA9IDA7DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4NjMgIAlpZiAo IXNpemUpDQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4NjQgIAkJcGFja2V0 LT5kYXRhX29mZnNldCA9DQo+MDsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQg IDg2NSAgCWVsc2UNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg2NiAgCQlw YWNrZXQtPmRhdGFfb2Zmc2V0ID0NCj5jcHVfdG9fbGUzMigyNCk7DQo+ZjE5ODE4NmFhOWJiZDYg TG9uZyBMaSAyMDE3LTExLTA0ICA4NjcgIAlwYWNrZXQtPmRhdGFfbGVuZ3RoID0NCj5jcHVfdG9f bGUzMihzaXplKTsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg2OCAgCXBh Y2tldC0NCj4+cmVtYWluaW5nX2RhdGFfbGVuZ3RoID0gY3B1X3RvX2xlMzIocmVtYWluaW5nX2Rh dGFfbGVuZ3RoKTsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg2OSAgCXBh Y2tldC0+cGFkZGluZyA9IDA7DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4 NzANCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg3MSAgCWxvZ19vdXRnb2lu ZyhJTkZPLA0KPiJjcmVkaXRzX3JlcXVlc3RlZD0lZCBjcmVkaXRzX2dyYW50ZWQ9JWQgIg0KPmYx OTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODcyICAJCSJkYXRhX29mZnNldD0lZA0K PmRhdGFfbGVuZ3RoPSVkIHJlbWFpbmluZ19kYXRhX2xlbmd0aD0lZFxuIiwNCj5mMTk4MTg2YWE5 YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg3MyAgCQlsZTE2X3RvX2NwdShwYWNrZXQtDQo+PmNy ZWRpdHNfcmVxdWVzdGVkKSwNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg3 NCAgCQlsZTE2X3RvX2NwdShwYWNrZXQtDQo+PmNyZWRpdHNfZ3JhbnRlZCksDQo+ZjE5ODE4NmFh OWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4NzUgIAkJbGUzMl90b19jcHUocGFja2V0LQ0KPj5k YXRhX29mZnNldCksDQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4NzYgIAkJ bGUzMl90b19jcHUocGFja2V0LQ0KPj5kYXRhX2xlbmd0aCksDQo+ZjE5ODE4NmFhOWJiZDYgTG9u ZyBMaSAyMDE3LTExLTA0ICA4NzcgIAkJbGUzMl90b19jcHUocGFja2V0LQ0KPj5yZW1haW5pbmdf ZGF0YV9sZW5ndGgpKTsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg3OA0K PmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODc5ICAJLyogTWFwIHRoZSBwYWNr ZXQgdG8gRE1BICovDQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4ODAgIAlo ZWFkZXJfbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdA0KPnNtYmRfZGF0YV90cmFuc2Zlcik7DQo+ZjE5 ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4ODEgIAkvKiBJZiB0aGlzIGlzIGEgcGFj a2V0IHdpdGhvdXQNCj5wYXlsb2FkLCBkb24ndCBzZW5kIHBhZGRpbmcgKi8NCj5mMTk4MTg2YWE5 YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg4MiAgCWlmICghc2l6ZSkNCj5mMTk4MTg2YWE5YmJk NiBMb25nIExpIDIwMTctMTEtMDQgIDg4MyAgCQloZWFkZXJfbGVuZ3RoID0NCj5vZmZzZXRvZihz dHJ1Y3Qgc21iZF9kYXRhX3RyYW5zZmVyLCBwYWRkaW5nKTsNCj5mMTk4MTg2YWE5YmJkNiBMb25n IExpIDIwMTctMTEtMDQgIDg4NA0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAg ODg1ICAJcmVxdWVzdC0+bnVtX3NnZSA9IDE7DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3 LTExLTA0ICA4ODYgIAlyZXF1ZXN0LT5zZ2VbMF0uYWRkciA9DQo+aWJfZG1hX21hcF9zaW5nbGUo aW5mby0+aWQtPmRldmljZSwNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg4 Nw0KPgkJICh2b2lkICopcGFja2V0LA0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0w NCAgODg4DQo+CQkgaGVhZGVyX2xlbmd0aCwNCj43ZjQ2ZDIzZTFiMTRmMCBMb25nIExpIDIwMTkt MDUtMTMgIDg4OQ0KPgkJIERNQV9UT19ERVZJQ0UpOw0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkg MjAxNy0xMS0wNCAgODkwICAJaWYNCj4oaWJfZG1hX21hcHBpbmdfZXJyb3IoaW5mby0+aWQtPmRl dmljZSwgcmVxdWVzdC0+c2dlWzBdLmFkZHIpKSB7DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAy MDE3LTExLTA0ICA4OTENCj4JbWVtcG9vbF9mcmVlKHJlcXVlc3QsIGluZm8tPnJlcXVlc3RfbWVt cG9vbCk7DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA4OTIgIAkJcmMgPSAt RUlPOw0KPmU1YjJjMTI5ZGQ3Y2I5IExvbmcgTGkgMjAyMC0wMy0zMSAgODkzICAJCWdvdG8gZXJy X2RtYTsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg5NCAgCX0NCj5mMTk4 MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg5NQ0KPmYxOTgxODZhYTliYmQ2IExvbmcg TGkgMjAxNy0xMS0wNCAgODk2ICAJcmVxdWVzdC0+c2dlWzBdLmxlbmd0aCA9DQo+aGVhZGVyX2xl bmd0aDsNCj5mMTk4MTg2YWE5YmJkNiBMb25nIExpIDIwMTctMTEtMDQgIDg5NyAgCXJlcXVlc3Qt PnNnZVswXS5sa2V5ID0gaW5mby0NCj4+cGQtPmxvY2FsX2RtYV9sa2V5Ow0KPmYxOTgxODZhYTli YmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgODk4DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3 LTExLTA0ICA4OTkgIAkqcmVxdWVzdF9vdXQgPSByZXF1ZXN0Ow0KPmYxOTgxODZhYTliYmQ2IExv bmcgTGkgMjAxNy0xMS0wNCAgOTAwICAJcmV0dXJuIDA7DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBM aSAyMDE3LTExLTA0ICA5MDENCj5lNWIyYzEyOWRkN2NiOSBMb25nIExpIDIwMjAtMDMtMzEgIDkw MiAgZXJyX2RtYToNCj5lNWIyYzEyOWRkN2NiOSBMb25nIExpIDIwMjAtMDMtMzEgIDkwMyAgCS8q IHJvbGwgYmFjayByZWNlaXZlIGNyZWRpdHMgKi8NCj5lNWIyYzEyOWRkN2NiOSBMb25nIExpIDIw MjAtMDMtMzEgIDkwNCAgCXNwaW5fbG9jaygmaW5mby0NCj4+bG9ja19uZXdfY3JlZGl0c19vZmZl cmVkKTsNCj5lNWIyYzEyOWRkN2NiOSBMb25nIExpIDIwMjAtMDMtMzEgQDkwNSAgCWluZm8tPm5l d19jcmVkaXRzX29mZmVyZWQgKz0NCj5wYWNrZXQtPmNyZWRpdHNfZ3JhbnRlZDsNCj5lNWIyYzEy OWRkN2NiOSBMb25nIExpIDIwMjAtMDMtMzEgIDkwNiAgCXNwaW5fdW5sb2NrKCZpbmZvLQ0KPj5s b2NrX25ld19jcmVkaXRzX29mZmVyZWQpOw0KPmU1YjJjMTI5ZGQ3Y2I5IExvbmcgTGkgMjAyMC0w My0zMSAgOTA3ICAJYXRvbWljX3N1YihwYWNrZXQtDQo+PmNyZWRpdHNfZ3JhbnRlZCwgJmluZm8t PnJlY2VpdmVfY3JlZGl0cyk7DQo+ZTViMmMxMjlkZDdjYjkgTG9uZyBMaSAyMDIwLTAzLTMxICA5 MDgNCj5lNWIyYzEyOWRkN2NiOSBMb25nIExpIDIwMjAtMDMtMzEgIDkwOSAgZXJyX2FsbG9jOg0K PmU1YjJjMTI5ZGQ3Y2I5IExvbmcgTGkgMjAyMC0wMy0zMSAgOTEwICAJLyogcm9sbCBiYWNrIHNl bmQgY3JlZGl0cyAqLw0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgOTExICAJ YXRvbWljX2luYygmaW5mby0NCj4+c2VuZF9jcmVkaXRzKTsNCj5lNWIyYzEyOWRkN2NiOSBMb25n IExpIDIwMjAtMDMtMzEgIDkxMg0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAg OTEzICAJcmV0dXJuIHJjOw0KPmYxOTgxODZhYTliYmQ2IExvbmcgTGkgMjAxNy0xMS0wNCAgOTE0 ICB9DQo+ZjE5ODE4NmFhOWJiZDYgTG9uZyBMaSAyMDE3LTExLTA0ICA5MTUNCj4NCj4tLS0NCj4w LURBWSBDSSBLZXJuZWwgVGVzdCBTZXJ2aWNlLCBJbnRlbCBDb3Jwb3JhdGlvbg0KPmh0dHBzOi8v bmFtMDYuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUy Rmxpc3RzLjANCj4xLm9yZyUyRmh5cGVya2l0dHklMkZsaXN0JTJGa2J1aWxkLQ0KPmFsbCU0MGxp c3RzLjAxLm9yZyZhbXA7ZGF0YT0wMiU3QzAxJTdDbG9uZ2xpJTQwbWljcm9zb2Z0LmNvbSU3Q2Zk MzIzNg0KPjQ1N2IxMzRjYWI1YWE3MDhkN2Q2YTIzMTI0JTdDNzJmOTg4YmY4NmYxNDFhZjkxYWIy ZDdjZDAxMWRiNDclN0MxJQ0KPjdDMCU3QzYzNzIxMzg2NDQwNDkxMzM3NSZhbXA7c2RhdGE9b2pI STRVYiUyQjBNYVoySTdSTTltU21xb3BlDQo+R2ZVYnRMdVA4bFRHYVI3UW1vJTNEJmFtcDtyZXNl cnZlZD0wDQo=