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 X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D684C64E7D for ; Sat, 28 Nov 2020 22:03:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0639724073 for ; Sat, 28 Nov 2020 22:03:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="I+1VuhoF"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="EFT6GKdA" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387522AbgK1Vur (ORCPT ); Sat, 28 Nov 2020 16:50:47 -0500 Received: from esa4.microchip.iphmx.com ([68.232.154.123]:62953 "EHLO esa4.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725616AbgK1SWQ (ORCPT ); Sat, 28 Nov 2020 13:22:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1606587734; x=1638123734; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=zUK7lKqm1/HIcwQxDs8ov1pg/U7VYtZjxlpEvvshpSw=; b=I+1VuhoFX3VyHjjdRPEHqd1ZU5Zj3GXr9cMPdSC0CNcc4cSW9xdQCldZ B+8PQuWowPpyelb4HxGSZebFwyigyNdzcy78Q0vJ1p9DgoChG5eKAbWCF 4XLY+Dn/9WH6Z4eUV04ZH2CoqcCQoMAGHeea6O+aUUYrkG2FLj7RZUCNg Z46KIoOTWvMpZ23N/futCc+KO2AshttmXF2oFrPOdI48I+KSFXlJxTkoK Zi0WQ+mxqcC33/+MT29kwUu6aEwFTFQ6MiCvPhyy5vA62BjWIkpiN5mdb u7bnjZEMMMKmQJjQrFIZ08sqVU9FM4LhznOM7k6FBHCkJs6EHJxYzffcp w==; IronPort-SDR: v+7HzRm6ZU3GkPV64kRGD16/7scyvd2vYdqcHz0ty8cK1vNbtM2HF6uxhNLg4g1GQc3su7FKMi QtntPtKQiTji9A9sGVVlUJKzSa/P4fp+hSBTxOSbJIlZVmRM0VAIsC3YFPAUgiJ9Mnxjp8GB+Y 2w16EzQfeV4aeLyypeGU3GOwUuC2RUorQDPSN05VwYaklmrFmdkaQZGWbsI3MNvgSxDNDdPxrG /GDBxxasFqefzcEk7u8xb39h/VRt6Z9CclwDdN3Ncv2A4bObmUcUpear76MugJejgEXlp/I2ue Y+A= X-IronPort-AV: E=Sophos;i="5.78,377,1599548400"; d="scan'208";a="95101537" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 28 Nov 2020 03:17:24 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Sat, 28 Nov 2020 03:17:24 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Sat, 28 Nov 2020 03:17:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hj0+pwuggbpCsjwcUV2fbzscL7dk/s2lprGJ2nhjgOWZy9O6ZQ1Cu7txrgrhqUbCbaiOyDzS/dQb47Jc09g2/eTwXLSA3h0ynQzCBTrcXyyLhfmAtqY6orpgyw4iG1FbfaesT8aO7Lp47dTN0AwVXOxyQ1xCS/NPvdKJcf/aH2vgyTV//F/u4dQM4hIu+vDszQR7Emq3N8Su5464H8vd0FlZOX2LAM3299k8O+m2ED/NjhIoMRs9Cieri0TSnxYFDYf2MAghk+1Ox53VzypnCEEFWBEEr+QdCDDG+un8piz0A0dRR9/3tdiqYc/m+vCCingQXfTOaVZg0Yfru8aWFw== 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=zUK7lKqm1/HIcwQxDs8ov1pg/U7VYtZjxlpEvvshpSw=; b=jytvcUz6+8g6xs2cBq9s5LJhl+HpvS2QgTG3J7cvaBU0toZkj115qbWzhe4dgzM13Tc2Jf4cFEDjvEImLRWIpfB2JdJPrfMTtFdWNFLBea9xgZtjc8L4bzrWcdDJczBdVTXkuDIBBvXFQLNSOBayRmFpLUBDuJkjQUanDo8FJwd7DRCC09Q8uXEGncA+ywsYccBJFDsYRLgDZb9rRvWSy5cwPzeLKQcs9a7vuHUB+ralQ1AmHCKf/OXuvIyjWplqUvYJ8Uf6oJv9DuDcUm+5KUxIHkMTVkRaLJUPzwA6k1LXLRtFN3ZmD/erQcXnyHc9oFdzfpDZPabWz/hW6kqypg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zUK7lKqm1/HIcwQxDs8ov1pg/U7VYtZjxlpEvvshpSw=; b=EFT6GKdAiC/RwrrVFOWpALIQWFffmgP7BnFgn/ojBkLykBxMpS927ITpHRfJeek4ST/X73gnNZokcYprNhKwlbZmu9ZI8iPM7dy8zWWDVtKl8dhNHCCtbYehGLrRNH9ZiwJafJ0KAQPMeReBIKDji4F6+k9iY+mlFw2RqYMpZ8Y= Received: from SA2PR11MB4874.namprd11.prod.outlook.com (2603:10b6:806:f9::23) by SA2PR11MB5100.namprd11.prod.outlook.com (2603:10b6:806:119::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.20; Sat, 28 Nov 2020 10:17:21 +0000 Received: from SA2PR11MB4874.namprd11.prod.outlook.com ([fe80::6903:3212:cc9e:761]) by SA2PR11MB4874.namprd11.prod.outlook.com ([fe80::6903:3212:cc9e:761%7]) with mapi id 15.20.3611.026; Sat, 28 Nov 2020 10:17:20 +0000 From: To: , , CC: , , , Subject: Re: [PATCH v6 5/5] mtd: spi-nor: keep lock bits if they are non-volatile Thread-Topic: [PATCH v6 5/5] mtd: spi-nor: keep lock bits if they are non-volatile Thread-Index: AQHWxW+nmejBYVo+OESi/M9WLE7bHw== Date: Sat, 28 Nov 2020 10:17:20 +0000 Message-ID: <432b31a7-2560-3b83-44d2-aa82c2e322ae@microchip.com> References: <20201126202614.5710-1-michael@walle.cc> <20201126202614.5710-6-michael@walle.cc> In-Reply-To: <20201126202614.5710-6-michael@walle.cc> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 authentication-results: walle.cc; dkim=none (message not signed) header.d=none;walle.cc; dmarc=none action=none header.from=microchip.com; x-originating-ip: [79.115.63.172] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cc047ac6-9203-4686-8071-08d89386caca x-ms-traffictypediagnostic: SA2PR11MB5100: x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cL/rzWhFxHSxl90neM+tOM1ZsQbHV21TBsWggBOhDQ+5yzGVyugXpniTnzQh0u/fYjpc04pMBxPt0RtYxQLecufnFnvmCfqCk7+KUNn8hz8zr8H/iUYCrk+Oe0iwsZBlE0Mwh6L2AIIjttNLnWoSi5n8yOAJaGyPwFMma7XIvzfWn+zze9DhmG6wCcGQZAZb2q+KbZIeE3/D22JTp+1OZD5wescYNHctSUUcP73USaT0Ru8RP5cQBeRSHNquI04P26abbUI64OSsy26D4Einn6EY7zPXe5qh0TOASyNBJqeg1pWY1SjMF7pLaqydQPNY4wTe1r8WU63C9OrwsjA6cmF9eFUP248opZhT7BBrHFf6dE+wz5qptv2gBqXGiX0z x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR11MB4874.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(346002)(366004)(39850400004)(376002)(396003)(6486002)(110136005)(54906003)(316002)(83380400001)(71200400001)(478600001)(6512007)(2906002)(8936002)(2616005)(30864003)(8676002)(5660300002)(66946007)(186003)(66476007)(53546011)(31696002)(64756008)(6506007)(26005)(66556008)(36756003)(66446008)(31686004)(86362001)(4326008)(76116006)(43740500002)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?Q1dZUk4rN2JKbFJxckEycW1FeUVaQTdmRkZuY28xSzNVUXhTNkZsTk9rTTk5?= =?utf-8?B?bzdwTjRhdzF0bXB0R0pPV2VxMjBlVzB1b0wwN0ZaSWdYTkpyRHA0ZXdNQXJD?= =?utf-8?B?bUl3eWpPd2hndXV0NGRhd3UvY0tBczFtTm1wMWRQN2VxZWNFMjVqbGk4d0Ex?= =?utf-8?B?ZHRUQURPYXRFK05MV1VNbUZHOXhiVUFvV3NKbk1WVWtsbmswa3F0KzBzRVhP?= =?utf-8?B?YzBNOEpheXFqTWwyUkl2czZsYTk1dUhqdkVkeGlvZ3h3REhyVStMVTBScXRv?= =?utf-8?B?dFk1Mk8wZFNuU25TOEFjZkdWM2t4bzI3YXM3cG9TSnZGbEZPZUZFOG9KNk4x?= =?utf-8?B?cWp0dm5icUh0Tk5TNDVHQVFpNHdKVFZySzAxV3EvK2ZSakRaZGM5RGdXZkJx?= =?utf-8?B?SjYrc1dINXRiVm1zWXZKUUk1d3c3MEZZTTdMZmdoNytCR3dYN212OENBNFNa?= =?utf-8?B?N29aMWRoK0t6SHhaVG5CYmkxdkU4NUVtVlpKNHh1MjI4WWNXU0J6ejFlS1N0?= =?utf-8?B?c3FxYmNZV0ovdktuTkgyV3Y2ZEZxMEc2cjk5T0s1UERreUhrVlZGUGFQNE1D?= =?utf-8?B?ZURyQ3dsYXJFcGl0Unh3K2Q4eDFyVDRoaWlZYkhKK1lXd25INjhpYytxWTVo?= =?utf-8?B?NnZyUjZma3ZVQnNoVU9CY3o0MkM5aE91WlVXVC9yMTJRZ0lpUGQ4SldEZWgx?= =?utf-8?B?Q01mMVZ6Y3QvdjRiYVBhWG9NVzhhK0dhNy9zb0hSOVhTRzM1a2NYcE5lcm53?= =?utf-8?B?eTNiKzBWSFMxM05oaEZwL2Q2UEQwamtINmx6ME1QdTB1TldSeHEwMTE3cHlF?= =?utf-8?B?YzJHR0tKTUErTk1pYXRWWkRnVnRDY0JpUUJURm8xR3h5b2RkNjg5bkErMmI2?= =?utf-8?B?Z0ZBVmdGMUVlbGtPMk9hd1crbE5rMk0zVlZRSldIOCtacHZtZ0ZMeElIRS9U?= =?utf-8?B?bno1VXgrNnk3OThvVnVncW9UVW9hdGFsV2JNMkxLSlozYldqdFg3S2FKUHZu?= =?utf-8?B?V250WXBuMmRPNDNhSVljNjA5ZVJhTXJDelBqQVRNRXE2cWc1SE5udkdkNUJv?= =?utf-8?B?b3p3eCtndWJuZEpFSjdtRHRUZGNKUnFFNXd5Sjd5UXRNUHFMZ3pwSy9OUWxp?= =?utf-8?B?RzBEcGphUXpueWhXeXQ4a3BlWWFNcWZxN3l5SW1EVmN1ZlY3bHNKZFg2Y21z?= =?utf-8?B?TGt5YUwyTFl1bE1PcXJaU0tFNWNnMVo1V292N05PVVlhK3M4ZmNvN2tNYlVZ?= =?utf-8?B?a3dZdU1RYk9DdnRTak9HRlIrS094dmc2MUxucHFDMDdPTzNReWJHdTJyeWph?= =?utf-8?Q?ONh5ZFAEDv0gQ=3D?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA2PR11MB4874.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc047ac6-9203-4686-8071-08d89386caca X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Nov 2020 10:17:20.7874 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BLu+ipo/aZHZMRhDnv9YUKWXVa+iocKYm6jMcHZKxMQtms5GhsibhcjWPdjO4BchDVNIc9gophv8Bh4c2wJcM2lbzB1gZc/u3F43nW7pnOY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5100 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTEvMjYvMjAgMTA6MjYgUE0sIE1pY2hhZWwgV2FsbGUgd3JvdGU6DQo+IEVYVEVSTkFMIEVN QUlMOiBEbyBub3QgY2xpY2sgbGlua3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91IGtu b3cgdGhlIGNvbnRlbnQgaXMgc2FmZQ0KPiANCj4gVHJhZGl0aW9uYWxseSwgbGludXggdW5sb2Nr cyB0aGUgd2hvbGUgZmxhc2ggYmVjYXVzZSB0aGVyZSBhcmUgbGVnYWN5DQo+IGRldmljZXMgd2hp Y2ggaGFzIHRoZSB3cml0ZSBwcm90ZWN0aW9ucyBiaXRzIHNldCBieSBkZWZhdWx0IGF0IHN0YXJ0 dXAuDQo+IElmIHlvdSBhY3R1YWxseSB3YW50IHRvIHVzZSB0aGUgZmxhc2ggcHJvdGVjdGlvbiBi aXRzLCBlZy4gYmVjYXVzZSB0aGVyZQ0KPiBpcyBhIHJlYWQtb25seSBwYXJ0IGZvciBhIGJvb3Rs b2FkZXIsIHRoaXMgYXV0b21hdGljIHVubG9ja2luZyBpcw0KPiBoYXJtZnVsLiBJZiB0aGVyZSBp cyBubyBoYXJkd2FyZSB3cml0ZSBwcm90ZWN0aW9uIGluIHBsYWNlICh1c3VhbGx5DQo+IGNhbGxl ZCBXUCMpLCBhIHN0YXJ0dXAgb2YgdGhlIGtlcm5lbCBqdXN0IGRpc2NhcmRzIHRoaXMgcHJvdGVj dGlvbi4NCj4gDQo+IEkndmUgZ29uZSB0aHJvdWdoIHRoZSBkYXRhc2hlZXRzIG9mIGFsbCB0aGUg Zmxhc2hlcyAoZXhjZXB0IHRoZSBJbnRlbA0KPiBvbmVzIHdoZXJlIEkgY291bGQgbm90IGZpbmQg YW55IGRhdGFzaGVldCBub3IgcmVmZXJlbmNlKSB3aGljaCBzdXBwb3J0cw0KPiB0aGUgdW5sb2Nr aW5nIGZlYXR1cmUgYW5kIGxvb2tlZCBob3cgdGhlIHNlY3RvciBwcm90ZWN0aW9uIHdhcw0KPiBp bXBsZW1lbnRlZC4gVGhlIGN1cnJlbnRseSBzdXBwb3J0ZWQgZmxhc2hlcyBjYW4gYmUgZGl2aWRl ZCBpbnRvIHRoZQ0KPiBmb2xsb3dpbmcgdHdvIGNhdGVnb3JpZXM6DQo+ICAoMSkgYmxvY2sgcHJv dGVjdGlvbiBiaXRzIGFyZSBub24tdm9sYXRpbGUuIFRodXMgdGhleSBrZWVwIHRoZWlyIHZhbHVl cw0KPiAgICAgIGF0IHJlc2V0IGFuZCBwb3dlci1jeWNsZQ0KPiAgKDIpIGZsYXNoZXMgd2hlcmUg dGhlc2UgYml0cyBhcmUgdm9sYXRpbGUuIEFmdGVyIHJlc2V0IG9yIHBvd2VyLWN5Y2xlLA0KPiAg ICAgIHRoZSB3aG9sZSBtZW1vcnkgYXJyYXkgaXMgcHJvdGVjdGVkLg0KPiAgICAgIChhKSBzb21l IGRldmljZXMgbmVlZHMgYSBzcGVjaWFsICJHbG9iYWwgVW5wcm90ZWN0IiBjb21tYW5kLCBlZy4N Cj4gICAgICAgICAgdGhlIEF0bWVsIEFUMjVERjA0MUEuDQo+ICAgICAgKGIpIHNvbWUgZGV2aWNl cyByZXF1aXJlIHRvIGNsZWFyIHRoZSBCUG4gYml0cyBpbiB0aGUgc3RhdHVzDQo+ICAgICAgICAg IHJlZ2lzdGVyLg0KPiANCj4gRHVlIHRvIHRoZSByZWFzb25zIGFib3ZlLCB3ZSBkbyBub3Qgd2Fu dCB0byBjbGVhciB0aGUgYml0cyBmb3IgZmxhc2hlcw0KPiB3aGljaCBiZWxvbmcgdG8gY2F0ZWdv cnkgKDEpLiBGb3J0dW5hdGVseSBmb3IgdXMsIG9ubHkgQXRtZWwgZmxhc2hlcw0KPiBmYWxsIGlu dG8gY2F0ZWdvcnkgKDJhKS4gSW1wbGVtZW50IHRoZSAiR2xvYmFsIFByb3RlY3QiIGFuZCAiR2xv YmFsDQo+IFVucHJvdGVjdCIgY29tbWFuZHMgZm9yIHRoZXNlLiBGb3IgKDJiKSB3ZSBjYW4gdXNl IG5vcm1hbCBibG9jaw0KPiBwcm90ZWN0aW9uIGxvY2tpbmcgc2NoZW1lLg0KPiANCj4gVGhpcyBw YXRjaCBhZGRzIGEgbmV3IGZsYWcgdG8gaW5kaWNhdGUgdGhlIGNhc2UgKDIpLiBPbmx5IGlmIHdl IGhhdmUNCj4gc3VjaCBhIGZsYXNoIHdlIHVubG9jayB0aGUgd2hvbGUgZmxhc2ggYXJyYXkuIFRv IGJlIGJhY2t3YXJkcyBjb21wYXRpYmxlDQo+IGl0IGFsc28gaW50cm9kdWNlcyBhIGtlcm5lbCBj b25maWd1cmF0aW9uIG9wdGlvbiB3aGljaCByZXN0b3JlcyB0aGUNCj4gY29tcGxldGUgbGVnYWN5 IGJlaGF2aW9yICgiRGlzYWJsZSB3cml0ZSBwcm90ZWN0aW9uIG9uIGFueSBmbGFzaGVzIikuDQo+ IEhvcGVmdWxseSwgdGhpcyB3aWxsIGNsZWFuIHVwICJ1bmxvY2sgdGhlIGVudGlyZSBmbGFzaCBm b3IgbGVnYWN5DQo+IGRldmljZXMiIG9uY2UgYW5kIGZvciBhbGwuDQo+IA0KPiBGb3IgcmVmZXJl bmNlIGhlcmUgYXJlIHRoZSBhY3R1YWxseSBjb21taXRzIHdoaWNoIGludHJvZHVjZWQgdGhlIGxl Z2FjeQ0KPiBiZWhhdmlvdXIgKGFuZCBleHRlbmRlZCB0aGUgYmVoYXZpb3VyIHRvIG90aGVyIGNo aXAgbWFudWZhY3R1cmVycyk6DQoNCnR5cG86IGJlaGF2aW9yDQoNCj4gDQo+IGNvbW1pdCBmODBl NTIxYzkxNmNiICgibXRkOiBtMjVwODA6IGFkZCBzdXBwb3J0IGZvciB0aGUgSW50ZWwvTnVtb255 eCB7MTYsMzIsNjR9MFMzM0IgU1BJIGZsYXNoIGNoaXBzIikNCj4gY29tbWl0IGVhNjA2NThhMDhm OGYgKCJtdGQ6IG0yNXA4MDogZGlzYWJsZSBTU1Qgc29mdHdhcmUgcHJvdGVjdGlvbiBiaXRzIGJ5 IGRlZmF1bHQiKQ0KPiBjb21taXQgNzIyODk4MjQ0MjM2NSAoIltNVERdIG0yNXA4MDogZml4IGJ1 ZyAtIEFUbWVsIHNwaSBmbGFzaCBmYWlscyB0byBiZSBjb3BpZWQgdG8iKQ0KPiANCj4gQWN0dWFs bHksIHRoaXMgbWlnaHQgYWxzbyBmaXggaGFuZGxpbmcgb2YgdGhlIEF0bWVsIEFUMjVERiBmbGFz aGVzLA0KPiBiZWNhdXNlIHRoZSBvcmlnaW5hbCBjb21taXQgNzIyODk4MjQ0MjM2NSAoIltNVERd IG0yNXA4MDogZml4IGJ1ZyAtDQo+IEFUbWVsIHNwaSBmbGFzaCBmYWlscyB0byBiZSBjb3BpZWQg dG8iKSB3YXMgd3JpdGluZyBhIDAgdG8gdGhlIHN0YXR1cw0KPiByZWdpc3Rlciwgd2hpY2ggaXMg YSAiR2xvYmFsIFVucHJvdGVjdCIuIFRoaXMgbWlnaHQgbm90IGJlIHRoZSBjYXNlIGluDQo+IHRo ZSBjdXJyZW50IGNvZGUgd2hpY2ggb25seSBoYW5kbGVzIHRoZSBibG9jayBwcm90ZWN0aW9uIGJp dHMgQlAyLCBCUDENCj4gYW5kIEJQMC4gVGh1cywgaXQgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBj b250ZW50cyBvZiB0aGUgc3RhdHVzIHJlZ2lzdGVyDQo+IGlmIHRoaXMgdW5sb2NrIGFjdHVhbGx5 IGNvcnJlc3BvbmRzIHRvIGEgIkdsb2JhbCBVbnByb3RlY3QiIGNvbW1hbmQuIEluDQo+IHRoZSB3 b3JzdCBjYXNlLCB0aGUgY3VycmVudCBjb2RlIG1pZ2h0IGxlYXZlIHRoZSBBVDI1REYgZmxhc2hl cyBpbiBhDQo+IHdyaXRlIHByb3RlY3RlZCBzdGF0ZS4NCj4gDQo+IFRoZSBjb21taXQgMTkxZjVj MmVkNGI2ZiAoIm10ZDogc3BpLW5vcjogdXNlIDE2LWJpdCBXUlIgY29tbWFuZCB3aGVuIFFFDQo+ IGlzIHNldCBvbiBzcGFuc2lvbiBmbGFzaGVzIikgY2hhbmdlZCB0aGF0IGJlaGF2aW91ciBieSBq dXN0IGNsZWFyaW5nIEJQMg0KPiB0byBCUDAgaW5zdGVhZCBvZiB3cml0aW5nIGEgMCB0byB0aGUg c3RhdHVzIHJlZ2lzdGVyLg0KPiANCj4gRnVydGhlciwgdGhlIGNvbW1pdCAzZTA5MzBmMTA5ZTc2 ICgibXRkOiBzcGktbm9yOiBSZXdvcmsgdGhlIGRpc2FibGluZw0KPiBvZiBibG9jayB3cml0ZSBw cm90ZWN0aW9uIikgZXhwYW5kZWQgdGhlIHVubG9ja19hbGwoKSBmZWF0dXJlIHRvIEFOWQ0KPiBm bGFzaCB3aGljaCBzdXBwb3J0cyBsb2NraW5nLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWljaGFl bCBXYWxsZSA8bWljaGFlbEB3YWxsZS5jYz4NCj4gLS0tDQo+IGNoYW5nZXMgc2luY2UgdjU6DQo+ ICAtIGFsc28gc2V0IFNSV0QgYml0IGZvciB0aGUgIkdsb2JhbCBQcm90ZWN0IiBjb21tYW5kDQo+ ICAtIHVzZSBzcGlfbm9yX3dyaXRlX3NyKCkgaW5zdGVhZCBvZiBzcGlfbm9yX3dyaXRlX3NyX2Fu ZF9jaGVjaygpIHRvIHNlbmQNCj4gICAgdGhlICJHbG9iYWwgUHJvdGVjdCIgb3IgIkdsb2JhbCBV bnByb3RlY3QiIGNvbW1hbmQNCj4gIC0gbWFyayBFU01UIEYyNUwzMlFBIGFzIG5vbi12b2xhdGls ZSBhcyBpbmRpY2F0ZWQgaW4gYSBuZXdlciBkYXRhc2hlZXQNCj4gICAgcmV2aXNpb24NCj4gIC0g cmViYXNlZCB0byBsYXRlc3QgdHJlZQ0KPiANCj4gY2hhbmdlcyBzaW5jZSB2NDoNCj4gIC0gbWFk ZSBhdG1lbF9nbG9iYWxfcHJvdGVjdGlvbl9kZWZhdWx0X2luaXQoKSBzdGF0aWMsIHNwb3R0ZWQg YnkNCj4gICAgbGtwQGludGVsLmNvbQ0KPiANCj4gY2hhbmdlcyBzaW5jZSB2MzoNCj4gIC0gbm93 IGRlZmF1bHRpbmcgdG8gTVREX1NQSV9OT1JfV1BfRElTQUJMRV9PTl9WT0xBVElMRSwgc3VnZ2Vz dGVkIGJ5IFZpZ25lc2gNCj4gIC0gcmVzdG9yZWQgdGhlIG9yaWdpbmFsIHNwaV9ub3JfdW5sb2Nr X2FsbCgpLCBpbnN0ZWFkIGFkZCBpbmRpdmlkdWFsDQo+ICAgIGxvY2tpbmcgb3BzIGZvciB0aGUg Ikdsb2JhbCBQcm90ZWN0IiBzY2hlbWUgaW4gYXRtZWwuYy4gVGhpcyB3YXMgdGVzdGVkDQo+ICAg IHBhcnRseSB3aXRoIHRoZSBBVDI1U0wzMjEgKGZvciB0aGUgdGVzdCBJIGFkZGVkIHRoZSBmaXh1 cHMgdG8gdGhpcw0KPiAgICBmbGFzaCkuDQo+ICAtIHJlbmFtZWQgU1BJX05PUl9VTlBST1RFQ1Qg dG8gU1BJX05PUl9XUF9JU19WT0xBVElMRS4gU3VnZ2VzdGVkIGJ5DQo+ICAgIFZpbmdlc2gsIGFs dGhvdWdoIEkndmUgcmVuYW1lZCBpdCB0byBhIG1vcmUgZ2VuZXJhbCAiV1BfSVNfVk9MQVRJTEUi DQo+ICAgIGJlY2F1c2UgZWl0aGVyIHRoZSBCUCBiaXRzIG9yIHRoZSBpbmRpdmlkdWFsIHNlY3Rv ciBsb2NrcyBtaWdodCBiZQ0KPiAgICB2b2xhdGlsZS4NCj4gIC0gYWRkIG1lbnRpb24gb2YgYm90 aCBibG9jayBwcm90ZWN0aW9uIGJpdHMgYW5kICJHbG9iYWwgVW5wcm90ZWN0IiBjb21tYW5kDQo+ ICAgIGluIHRoZSBLY29uZmlnIGhlbHAgdGV4dC4NCj4gDQo+IGNoYW5nZXMgc2luY2UgdjI6DQo+ ICAtIGFkZCBLY29uZmlnIG9wdGlvbiB0byBiZSBhYmxlIHRvIHJldGFpbiBsZWdhY3kgYmVoYXZp b3VyDQo+ICAtIHJlYmFzZWQgdGhlIHBhdGNoIGR1ZSB0byB0aGUgc3BpLW5vciByZXdyaXRlDQo+ ICAtIGRyb3BwZWQgdGhlIEZpeGVzOiB0YWcsIGl0IGRvZW5zJ3QgbWFrZSBzZW5zZSBhZnRlciB0 aGUgc3BpLW5vciByZXdyaXRlDQo+ICAtIG1lbnRpb24gY29tbWl0IDNlMDkzMGYxMDllNzYgd2hp Y2ggZnVydGhlciBtb2RpZmllZCB0aGUgdW5sb2NrDQo+ICAgIGJlaGF2aW91ci4NCj4gDQo+IGNo YW5nZXMgc2luY2UgdjE6DQo+ICAtIGNvbXBsZXRlbHkgcmV3cm90ZSBwYXRjaCwgdGhlIGZpcnN0 IHZlcnNpb24gdXNlZCBhIGRldmljZSB0cmVlIGZsYWcNCj4gDQo+ICBkcml2ZXJzL210ZC9zcGkt bm9yL0tjb25maWcgfCAgNDIgKysrKysrKysrKysrDQo+ICBkcml2ZXJzL210ZC9zcGktbm9yL2F0 bWVsLmMgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tDQo+ICBkcml2 ZXJzL210ZC9zcGktbm9yL2NvcmUuYyAgfCAgMzYgKysrKysrLS0tLQ0KPiAgZHJpdmVycy9tdGQv c3BpLW5vci9jb3JlLmggIHwgICA4ICsrKw0KPiAgZHJpdmVycy9tdGQvc3BpLW5vci9lc210LmMg IHwgICAyICstDQo+ICBkcml2ZXJzL210ZC9zcGktbm9yL2ludGVsLmMgfCAgIDkgKystDQo+ICBk cml2ZXJzL210ZC9zcGktbm9yL3NzdC5jICAgfCAgMjEgKysrLS0tDQo+ICA3IGZpbGVzIGNoYW5n ZWQsIDIxMyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL210ZC9zcGktbm9yL0tjb25maWcgYi9kcml2ZXJzL210ZC9zcGktbm9yL0tjb25m aWcNCj4gaW5kZXggZmZjNGIzODBmMmIxLi4xMWU2NjU4ZWU4NWQgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvbXRkL3NwaS1ub3IvS2NvbmZpZw0KPiArKysgYi9kcml2ZXJzL210ZC9zcGktbm9yL0tj b25maWcNCj4gQEAgLTI0LDYgKzI0LDQ4IEBAIGNvbmZpZyBNVERfU1BJX05PUl9VU0VfNEtfU0VD VE9SUw0KPiAgICAgICAgICAgUGxlYXNlIG5vdGUgdGhhdCBzb21lIHRvb2xzL2RyaXZlcnMvZmls ZXN5c3RlbXMgbWF5IG5vdCB3b3JrIHdpdGgNCj4gICAgICAgICAgIDQwOTYgQiBlcmFzZSBzaXpl IChlLmcuIFVCSUZTIHJlcXVpcmVzIDE1IEtpQiBhcyBhIG1pbmltdW0pLg0KPiANCj4gK2Nob2lj ZQ0KPiArICAgICAgIHByb21wdCAiV3JpdGUgcHJvdGVjdGlvbiBhdCBib290Ig0KPiArICAgICAg IGRlZmF1bHQgTVREX1NQSV9OT1JfV1BfRElTQUJMRV9PTl9WT0xBVElMRQ0KPiArDQo+ICtjb25m aWcgTVREX1NQSV9OT1JfV1BfRElTQUJMRQ0KDQpNYXliZSBpdCdzIGp1c3QgbWUsIGJ1dCB3aGVu IEkgc2VlIFdQLCBJIHRoaW5rIGFib3V0IHRoZSBXUCMgc2lnbmFsLCB3aGljaCBpcw0Kc29tZWhv dyByZWxhdGVkLiBJIHRoaW5rIEkgd291bGQgcHJlZmVyIHRvIHVzZSAgU1dQIGluc3RlYWQsIHdo aWNoIGNvbWVzIGZyb20NClNvZnR3YXJlIFdyaXRlIFByb3RlY3Rpb24sIHdoaWNoIHNob3VsZCBi ZSBnb29kIGZvciBib3RoIHRoZSBCUG4gcHJvdGVjdGlvbg0KYW5kIGZvciB0aGUgSW5kaXZpZHVh bCBTZWN0b3IgUHJvdGVjdGlvbiB3aXRoIGl0cyBHbG9iYWwgTG9jayBhbmQgVW5sb2NrLg0KDQpJ IHdvbid0IHN0YWxsIHRoZSBzZXJpZXMganVzdCBmb3IgdGhpcywgc28gZG8gYXMgeW91IHByZWZl ci4NCg0KPiArICAgICAgIGJvb2wgIkRpc2FibGUgV1Agb24gYW55IGZsYXNoZXMgKGxlZ2FjeSBi ZWhhdmlvdXIpIg0KDQp0eXBvOiBiZWhhdmlvcg0KDQo+ICsgICAgICAgaGVscA0KPiArICAgICAg ICAgVGhpcyBvcHRpb24gZGlzYWJsZXMgdGhlIHdyaXRlIHByb3RlY3Rpb24gb24gYW55IFNQSSBm bGFzaGVzIGF0DQoNCklmIHlvdSdsbCBjaG9vc2UgU1dQLCB5b3UgaGF2ZSB0byB1cGRhdGUgZGVz Y3JpcHRpb24gaGVyZSBhbmQgdGhlcmUuIEZvcg0KZXhhbXBsZSBzL3dyaXRlIHByb3RlY3Rpb24v c29mdHdhcmUgd3JpdGUgcHJvdGVjdGlvbi4NCg0KPiArICAgICAgICAgYm9vdC11cC4NCj4gKw0K PiArICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBmbGFzaCBjaGlwIHRoaXMgZWl0aGVyIGNsZWFy cyB0aGUgYmxvY2sgcHJvdGVjdGlvbg0KPiArICAgICAgICAgYml0cyBvciBkb2VzIGEgIkdsb2Jh bCBVbnByb3RlY3QiIGNvbW1hbmQuDQo+ICsNCj4gKyAgICAgICAgIERvbid0IHVzZSB0aGlzIGlm IHlvdSBpbnRlbnQgdG8gdXNlIHRoZSB3cml0ZSBwcm90ZWN0aW9uIG9mIHlvdXINCj4gKyAgICAg ICAgIFNQSSBmbGFzaC4gVGhpcyBpcyBvbmx5IHRvIGtlZXAgYmFja3dhcmRzIGNvbXBhdGliaWxp dHkuDQo+ICsNCj4gK2NvbmZpZyBNVERfU1BJX05PUl9XUF9ESVNBQkxFX09OX1ZPTEFUSUxFDQo+ ICsgICAgICAgYm9vbCAiRGlzYWJsZSBXUCBvbiBmbGFzaGVzIHcvIHZvbGF0aWxlIHByb3RlY3Rp b24gYml0cyINCj4gKyAgICAgICBoZWxwDQo+ICsgICAgICAgICBTb21lIFNQSSBmbGFzaGVzIGhh dmUgdm9sYXRpbGUgYmxvY2sgcHJvdGVjdGlvbiBiaXRzLCBpZS4gYWZ0ZXIgYQ0KPiArICAgICAg ICAgcG93ZXItdXAgb3IgYSByZXNldCB0aGUgZmxhc2ggaXMgd3JpdGUgcHJvdGVjdGVkIGJ5IGRl ZmF1bHQuDQo+ICsNCj4gKyAgICAgICAgIFRoaXMgb3B0aW9uIGRpc2FibGVzIHRoZSB3cml0ZSBw cm90ZWN0aW9uIGZvciB0aGVzZSBraW5kIG9mIGZsYXNoZXMNCj4gKyAgICAgICAgIHdoaWxlIGtl ZXBpbmcgaXQgZW5hYmxlZCBmb3IgYW55IG90aGVyIFNQSSBmbGFzaGVzIHdoaWNoIGhhdmUNCj4g KyAgICAgICAgIG5vbi12b2xhdGlsZSB3cml0ZSBwcm90ZWN0aW9uIGJpdHMuDQo+ICsNCj4gKyAg ICAgICAgIElmIHRoZSB3cml0ZSBwcm90ZWN0aW9uIHdpbGwgYmUgZGlzYWJsZWQgZGVwZW5kaW5n IG9uIHRoZSBmbGFzaA0KPiArICAgICAgICAgZWl0aGVyIHRoZSBibG9jayBwcm90ZWN0aW9uIGJp dHMgYXJlIGNsZWFyZWQgb3IgYSAiR2xvYmFsIFVucHJvdGVjdCINCj4gKyAgICAgICAgIGNvbW1h bmQgaXMgaXNzdWVkLg0KPiArDQo+ICsgICAgICAgICBJZiB5b3UgYXJlIHVuc3VyZSwgc2VsZWN0 IHRoaXMgb3B0aW9uLg0KPiArDQo+ICtjb25maWcgTVREX1NQSV9OT1JfV1BfS0VFUA0KPiArICAg ICAgIGJvb2wgIktlZXAgd3JpdGUgcHJvdGVjdGlvbiBhcyBpcyINCj4gKyAgICAgICBoZWxwDQo+ ICsgICAgICAgICBJZiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uIHRoZSB3cml0ZSBwcm90ZWN0aW9u IG9mIGFueSBTUEkgZmxhc2hlcw0KPiArICAgICAgICAgd2lsbCBub3QgYmUgY2hhbmdlZC4gSWYg eW91ciBmbGFzaCBpcyB3cml0ZSBwcm90ZWN0ZWQgb3Igd2lsbCBiZQ0KPiArICAgICAgICAgYXV0 b21hdGljYWxseSB3cml0ZSBwcm90ZWN0ZWQgYWZ0ZXIgcG93ZXItdXAgeW91IGhhdmUgdG8gbWFu dWFsbHkNCj4gKyAgICAgICAgIHVubG9jayBpdCBiZWZvcmUgeW91IGFyZSBhYmxlIHRvIHdyaXRl IHRvIGl0Lg0KPiArDQo+ICtlbmRjaG9pY2UNCj4gKw0KPiAgc291cmNlICJkcml2ZXJzL210ZC9z cGktbm9yL2NvbnRyb2xsZXJzL0tjb25maWciDQo+IA0KPiAgZW5kaWYgIyBNVERfU1BJX05PUg0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvc3BpLW5vci9hdG1lbC5jIGIvZHJpdmVycy9tdGQv c3BpLW5vci9hdG1lbC5jDQo+IGluZGV4IGZlNmE0NjUzODIzZC4uMjE1ZGY3YzQyNzJiIDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL210ZC9zcGktbm9yL2F0bWVsLmMNCj4gKysrIGIvZHJpdmVycy9t dGQvc3BpLW5vci9hdG1lbC5jDQo+IEBAIC04LDYgKzgsOCBAQA0KPiANCj4gICNpbmNsdWRlICJj b3JlLmgiDQo+IA0KPiArI2RlZmluZSBBVE1FTF9TUl9HTE9CQUxfUFJPVEVDVF9NQVNLIEdFTk1B U0soNSwgMikNCj4gKw0KPiAgLyoNCj4gICAqIFRoZSBBdG1lbCBBVDI1RlMwMTAvQVQyNUZTMDQw IHBhcnRzIGhhdmUgc29tZSB3ZWlyZCBjb25maWd1cmF0aW9uIGZvciB0aGUNCj4gICAqIGJsb2Nr IHByb3RlY3Rpb24gYml0cy4gV2UgZG9uJ3Qgc3VwcG9ydCB0aGVtLiBCdXQgbGVnYWN5IGJlaGF2 aW91ciBpbiBsaW51eA0KPiBAQCAtNTUsNiArNTcsMTAzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c3BpX25vcl9maXh1cHMgYXRtZWxfYXQyNWZzX2ZpeHVwcyA9IHsNCj4gICAgICAgICAuZGVmYXVs dF9pbml0ID0gYXRtZWxfYXQyNWZzX2RlZmF1bHRfaW5pdCwNCj4gIH07DQo+IA0KPiArLyoqDQo+ ICsgKiBhdG1lbF9zZXRfZ2xvYmFsX3Byb3RlY3Rpb24gLSBEbyBhIEdsb2JhbCBQcm90ZWN0IG9y IFVucHJvdGVjdCBjb21tYW5kDQo+ICsgKiBAbm9yOiAgICAgICBwb2ludGVyIHRvICdzdHJ1Y3Qg c3BpX25vcicNCj4gKyAqIEBvZnM6ICAgICAgIG9mZnNldCBpbiBieXRlcw0KPiArICogQGxlbjog ICAgICAgbGVuIGluIGJ5dGVzDQo+ICsgKiBAaXNfcHJvdGVjdDogICAgICAgIGlmIHRydWUgZG8g YSBHbG9iYWwgUHJvdGVjdCBvdGhlcndpc2UgaXQgaXMgYSBHbG9iYWwgVW5wcm90ZWN0DQo+ICsg Kg0KPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1lcnJvciBvdGhlcndpc2UuDQo+ICsgKi8N Cj4gK3N0YXRpYyBpbnQgYXRtZWxfc2V0X2dsb2JhbF9wcm90ZWN0aW9uKHN0cnVjdCBzcGlfbm9y ICpub3IsIGxvZmZfdCBvZnMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IGxlbiwgYm9vbCBpc19wcm90ZWN0KQ0KPiArew0KPiArICAgICAgIGludCBy ZXQ7DQo+ICsgICAgICAgdTggc3I7DQo+ICsNCj4gKyAgICAgICAvKiBXZSBvbmx5IHN1cHBvcnQg bG9ja2luZyB0aGUgd2hvbGUgZmxhc2ggYXJyYXkgKi8NCj4gKyAgICAgICBpZiAob2ZzIHx8IGxl biAhPSBub3ItPnBhcmFtcy0+c2l6ZSkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Ow0KPiArDQo+ICsgICAgICAgcmV0ID0gc3BpX25vcl9yZWFkX3NyKG5vciwgbm9yLT5ib3VuY2Vi dWYpOw0KPiArICAgICAgIGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0K DQptYXliZSBhIG5ldyBsaW5lIGluIGJldHdlZW4uDQoNCj4gKyAgICAgICBzciA9IG5vci0+Ym91 bmNlYnVmWzBdOw0KPiArDQo+ICsgICAgICAgLyogU1JXRCBiaXQgbmVlZHMgdG8gYmUgY2xlYXJl ZCwgb3RoZXJ3aXNlIHRoZSBwcm90ZWN0aW9uIGRvZXNuJ3QgY2hhbmdlICovDQo+ICsgICAgICAg aWYgKHNyICYgU1JfU1JXRCkgew0KPiArICAgICAgICAgICAgICAgc3IgJj0gflNSX1NSV0Q7DQo+ ICsgICAgICAgICAgICAgICByZXQgPSBzcGlfbm9yX3dyaXRlX3NyX2FuZF9jaGVjayhub3IsIHNy KTsNCj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgZGV2X2Vycihub3ItPmRldiwgInVuYWJsZSB0byBjbGVhciBTUldEIGJpdCwgV1AjIGFzc2Vy dGVkP1xuIik7DQoNCnNwaV9ub3Jfd3JpdGVfc3JfYW5kX2NoZWNrKCkgYWxyZWFkeSBwcmludHMg YSBkZXZfZGJnKCkuIElmIHlvdSBmaW5kIGEgc2Vjb25kIG1lc3NhZ2UNCnVzZWZ1bCwgeW91IHNo b3VsZCB1c2UgZGV2X2RiZyBmb3IgbG93IGxldmVsIGluZm8uDQoNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICB9DQo+ ICsNCj4gKyAgICAgICBpZiAoaXNfcHJvdGVjdCkgew0KPiArICAgICAgICAgICAgICAgc3IgfD0g QVRNRUxfU1JfR0xPQkFMX1BST1RFQ1RfTUFTSzsNCj4gKyAgICAgICAgICAgICAgIC8qDQo+ICsg ICAgICAgICAgICAgICAgKiBTZXQgdGhlIFNSV0QgYml0IGFnYWluIGFzIHNvb24gYXMgd2UgYXJl IHByb3RlY3RpbmcNCj4gKyAgICAgICAgICAgICAgICAqIGFueXRoaW5nLiBUaGlzIHdpbGwgZW5z dXJlIHRoYXQgdGhlIFdQIyBwaW4gaXMgd29ya2luZw0KPiArICAgICAgICAgICAgICAgICogY29y cmVjdGx5LiBCeSBkb2luZyB0aGlzIHdlIGFsc28gYmVoYXZlIHRoZSBzYW1lIGFzDQo+ICsgICAg ICAgICAgICAgICAgKiBzcGlfbm9yX3NyX2xvY2soKSwgd2hpY2ggc2V0cyBTUldEIGlmIGFueSBi bG9jayBwcm90ZWN0aW9uDQo+ICsgICAgICAgICAgICAgICAgKiBpcyBhY3RpdmUuDQo+ICsgICAg ICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgIHNyIHw9IFNSX1NSV0Q7DQo+ICsgICAg ICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgIHNyICY9IH5BVE1FTF9TUl9HTE9CQUxfUFJP VEVDVF9NQVNLOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIG5vci0+Ym91bmNlYnVmWzBd ID0gc3I7DQo+ICsNCj4gKyAgICAgICAvKg0KPiArICAgICAgICAqIFdlIGNhbm5vdCB1c2UgdGhl IHNwaV9ub3Jfd3JpdGVfc3JfYW5kX2NoZWNrKCkgYmVjYXVzZSB0aGlzIGNvbW1hbmQNCj4gKyAg ICAgICAgKiBpc24ndCByZWFsbHkgc2V0dGluZyBhbnkgYml0cywgaW5zdGVhZCBpdCBpcyBhbiBw c2V1ZG8gY29tbWFuZCBmb3INCj4gKyAgICAgICAgKiAiR2xvYmFsIFVucHJvdGVjdCIgb3IgIkds b2JhbCBQcm90ZWN0Ig0KPiArICAgICAgICAqLw0KPiArICAgICAgIHJldHVybiBzcGlfbm9yX3dy aXRlX3NyKG5vciwgbm9yLT5ib3VuY2VidWYsIDEpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50 IGF0bWVsX2dsb2JhbF9wcm90ZWN0KHN0cnVjdCBzcGlfbm9yICpub3IsIGxvZmZfdCBvZnMsIHVp bnQ2NF90IGxlbikNCj4gK3sNCj4gKyAgICAgICByZXR1cm4gYXRtZWxfc2V0X2dsb2JhbF9wcm90 ZWN0aW9uKG5vciwgb2ZzLCBsZW4sIHRydWUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGF0 bWVsX2dsb2JhbF91bnByb3RlY3Qoc3RydWN0IHNwaV9ub3IgKm5vciwgbG9mZl90IG9mcywgdWlu dDY0X3QgbGVuKQ0KPiArew0KPiArICAgICAgIHJldHVybiBhdG1lbF9zZXRfZ2xvYmFsX3Byb3Rl Y3Rpb24obm9yLCBvZnMsIGxlbiwgZmFsc2UpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGF0 bWVsX2lzX2dsb2JhbF9wcm90ZWN0ZWQoc3RydWN0IHNwaV9ub3IgKm5vciwgbG9mZl90IG9mcywg dWludDY0X3QgbGVuKQ0KPiArew0KPiArICAgICAgIGludCByZXQ7DQo+ICsNCj4gKyAgICAgICBp ZiAob2ZzID49IG5vci0+cGFyYW1zLT5zaXplIHx8IChvZnMgKyBsZW4pID4gbm9yLT5wYXJhbXMt PnNpemUpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArICAgICAg IHJldCA9IHNwaV9ub3JfcmVhZF9zcihub3IsIG5vci0+Ym91bmNlYnVmKTsNCj4gKyAgICAgICBp ZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKw0KPiArICAgICAgIHJl dHVybiAoKG5vci0+Ym91bmNlYnVmWzBdICYgQVRNRUxfU1JfR0xPQkFMX1BST1RFQ1RfTUFTSykg PT0gQVRNRUxfU1JfR0xPQkFMX1BST1RFQ1RfTUFTSyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc3BpX25vcl9sb2NraW5nX29wcyBhdG1lbF9nbG9iYWxfcHJvdGVjdGlvbl9v cHMgPSB7DQo+ICsgICAgICAgLmxvY2sgPSBhdG1lbF9nbG9iYWxfcHJvdGVjdCwNCj4gKyAgICAg ICAudW5sb2NrID0gYXRtZWxfZ2xvYmFsX3VucHJvdGVjdCwNCj4gKyAgICAgICAuaXNfbG9ja2Vk ID0gYXRtZWxfaXNfZ2xvYmFsX3Byb3RlY3RlZCwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyB2b2lk IGF0bWVsX2dsb2JhbF9wcm90ZWN0aW9uX2RlZmF1bHRfaW5pdChzdHJ1Y3Qgc3BpX25vciAqbm9y KQ0KPiArew0KPiArICAgICAgIG5vci0+cGFyYW1zLT5sb2NraW5nX29wcyA9ICZhdG1lbF9nbG9i YWxfcHJvdGVjdGlvbl9vcHM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3Bp X25vcl9maXh1cHMgYXRtZWxfZ2xvYmFsX3Byb3RlY3Rpb25fZml4dXBzID0gew0KPiArICAgICAg IC5kZWZhdWx0X2luaXQgPSBhdG1lbF9nbG9iYWxfcHJvdGVjdGlvbl9kZWZhdWx0X2luaXQsDQo+ ICt9Ow0KPiArDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGZsYXNoX2luZm8gYXRtZWxfcGFydHNb XSA9IHsNCj4gICAgICAgICAvKiBBdG1lbCAtLSBzb21lIGFyZSAoY29uZnVzaW5nbHkpIG1hcmtl dGVkIGFzICJEYXRhRmxhc2giICovDQo+ICAgICAgICAgeyAiYXQyNWZzMDEwIiwgIElORk8oMHgx ZjY2MDEsIDAsIDMyICogMTAyNCwgICA0LCBTRUNUXzRLIHwgU1BJX05PUl9IQVNfTE9DSykNCj4g QEAgLTYyLDE4ICsxNjEsMzIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmbGFzaF9pbmZvIGF0bWVs X3BhcnRzW10gPSB7DQo+ICAgICAgICAgeyAiYXQyNWZzMDQwIiwgIElORk8oMHgxZjY2MDQsIDAs IDY0ICogMTAyNCwgICA4LCBTRUNUXzRLIHwgU1BJX05PUl9IQVNfTE9DSykNCj4gICAgICAgICAg ICAgICAgIC5maXh1cHMgPSAmYXRtZWxfYXQyNWZzX2ZpeHVwcyB9LA0KPiANCj4gLSAgICAgICB7 ICJhdDI1ZGYwNDFhIiwgSU5GTygweDFmNDQwMSwgMCwgNjQgKiAxMDI0LCAgIDgsIFNFQ1RfNEsg fCBTUElfTk9SX0hBU19MT0NLKSB9LA0KPiAtICAgICAgIHsgImF0MjVkZjMyMSIsICBJTkZPKDB4 MWY0NzAwLCAwLCA2NCAqIDEwMjQsICA2NCwgU0VDVF80SyB8IFNQSV9OT1JfSEFTX0xPQ0spIH0s DQo+IC0gICAgICAgeyAiYXQyNWRmMzIxYSIsIElORk8oMHgxZjQ3MDEsIDAsIDY0ICogMTAyNCwg IDY0LCBTRUNUXzRLIHwgU1BJX05PUl9IQVNfTE9DSykgfSwNCj4gLSAgICAgICB7ICJhdDI1ZGY2 NDEiLCAgSU5GTygweDFmNDgwMCwgMCwgNjQgKiAxMDI0LCAxMjgsIFNFQ1RfNEsgfCBTUElfTk9S X0hBU19MT0NLKSB9LA0KPiArICAgICAgIHsgImF0MjVkZjA0MWEiLCBJTkZPKDB4MWY0NDAxLCAw LCA2NCAqIDEwMjQsICAgOCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUXzRL IHwgU1BJX05PUl9IQVNfTE9DSyB8IFNQSV9OT1JfV1BfSVNfVk9MQVRJTEUpDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIC5maXh1cHMgPSAmYXRtZWxfZ2xvYmFsX3Byb3RlY3Rpb25fZml4dXBz IH0sDQo+ICsgICAgICAgeyAiYXQyNWRmMzIxIiwgIElORk8oMHgxZjQ3MDAsIDAsIDY0ICogMTAy NCwgIDY0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RfNEsgfCBTUElfTk9S X0hBU19MT0NLIHwgU1BJX05PUl9XUF9JU19WT0xBVElMRSkNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgLmZpeHVwcyA9ICZhdG1lbF9nbG9iYWxfcHJvdGVjdGlvbl9maXh1cHMgfSwNCj4gKyAg ICAgICB7ICJhdDI1ZGYzMjFhIiwgSU5GTygweDFmNDcwMSwgMCwgNjQgKiAxMDI0LCAgNjQsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDVF80SyB8IFNQSV9OT1JfSEFTX0xPQ0sg fCBTUElfTk9SX1dQX0lTX1ZPTEFUSUxFKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAuZml4 dXBzID0gJmF0bWVsX2dsb2JhbF9wcm90ZWN0aW9uX2ZpeHVwcyB9LA0KPiArICAgICAgIHsgImF0 MjVkZjY0MSIsICBJTkZPKDB4MWY0ODAwLCAwLCA2NCAqIDEwMjQsIDEyOCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTRUNUXzRLIHwgU1BJX05PUl9IQVNfTE9DSyB8IFNQSV9OT1Jf V1BfSVNfVk9MQVRJTEUpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIC5maXh1cHMgPSAmYXRt ZWxfZ2xvYmFsX3Byb3RlY3Rpb25fZml4dXBzIH0sDQo+IA0KPiAgICAgICAgIHsgImF0MjVzbDMy MSIsICBJTkZPKDB4MWY0MjE2LCAwLCA2NCAqIDEwMjQsIDY0LA0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNFQ1RfNEsgfCBTUElfTk9SX0RVQUxfUkVBRCB8IFNQSV9OT1JfUVVBRF9S RUFEKSB9LA0KPiANCj4gICAgICAgICB7ICJhdDI2ZjAwNCIsICAgSU5GTygweDFmMDQwMCwgMCwg NjQgKiAxMDI0LCAgOCwgU0VDVF80SykgfSwNCj4gLSAgICAgICB7ICJhdDI2ZGYwODFhIiwgSU5G TygweDFmNDUwMSwgMCwgNjQgKiAxMDI0LCAxNiwgU0VDVF80SyB8IFNQSV9OT1JfSEFTX0xPQ0sp IH0sDQo+IC0gICAgICAgeyAiYXQyNmRmMTYxYSIsIElORk8oMHgxZjQ2MDEsIDAsIDY0ICogMTAy NCwgMzIsIFNFQ1RfNEsgfCBTUElfTk9SX0hBU19MT0NLKSB9LA0KPiAtICAgICAgIHsgImF0MjZk ZjMyMSIsICBJTkZPKDB4MWY0NzAwLCAwLCA2NCAqIDEwMjQsIDY0LCBTRUNUXzRLIHwgU1BJX05P Ul9IQVNfTE9DSykgfSwNCj4gKyAgICAgICB7ICJhdDI2ZGYwODFhIiwgSU5GTygweDFmNDUwMSwg MCwgNjQgKiAxMDI0LCAxNiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUXzRL IHwgU1BJX05PUl9IQVNfTE9DSyB8IFNQSV9OT1JfV1BfSVNfVk9MQVRJTEUpDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIC5maXh1cHMgPSAmYXRtZWxfZ2xvYmFsX3Byb3RlY3Rpb25fZml4dXBz IH0sDQo+ICsgICAgICAgeyAiYXQyNmRmMTYxYSIsIElORk8oMHgxZjQ2MDEsIDAsIDY0ICogMTAy NCwgMzIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDVF80SyB8IFNQSV9OT1Jf SEFTX0xPQ0sgfCBTUElfTk9SX1dQX0lTX1ZPTEFUSUxFKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAuZml4dXBzID0gJmF0bWVsX2dsb2JhbF9wcm90ZWN0aW9uX2ZpeHVwcyB9LA0KPiArICAg ICAgIHsgImF0MjZkZjMyMSIsICBJTkZPKDB4MWY0NzAwLCAwLCA2NCAqIDEwMjQsIDY0LA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RfNEsgfCBTUElfTk9SX0hBU19MT0NLIHwg U1BJX05PUl9XUF9JU19WT0xBVElMRSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLmZpeHVw cyA9ICZhdG1lbF9nbG9iYWxfcHJvdGVjdGlvbl9maXh1cHMgfSwNCj4gDQo+ICAgICAgICAgeyAi YXQ0NWRiMDgxZCIsIElORk8oMHgxZjI1MDAsIDAsIDY0ICogMTAyNCwgMTYsIFNFQ1RfNEspIH0s DQo+ICB9Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvc3BpLW5vci9jb3JlLmMgYi9kcml2 ZXJzL210ZC9zcGktbm9yL2NvcmUuYw0KPiBpbmRleCA4YzA2YTI4YTkwZGUuLjgzNTRjZTBjODgx MCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9tdGQvc3BpLW5vci9jb3JlLmMNCj4gKysrIGIvZHJp dmVycy9tdGQvc3BpLW5vci9jb3JlLmMNCj4gQEAgLTM3Nyw3ICszNzcsNyBAQCBpbnQgc3BpX25v cl93cml0ZV9kaXNhYmxlKHN0cnVjdCBzcGlfbm9yICpub3IpDQo+ICAgKg0KPiAgICogUmV0dXJu OiAwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvdGhlcndpc2UuDQo+ICAgKi8NCj4gLXN0YXRpYyBpbnQg c3BpX25vcl9yZWFkX3NyKHN0cnVjdCBzcGlfbm9yICpub3IsIHU4ICpzcikNCj4gK2ludCBzcGlf bm9yX3JlYWRfc3Ioc3RydWN0IHNwaV9ub3IgKm5vciwgdTggKnNyKQ0KPiAgew0KPiAgICAgICAg IGludCByZXQ7DQo+IA0KPiBAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgc3RhdGljIGludCBzcGlfbm9y X3dyaXRlXzE2Yml0X2NyX2FuZF9jaGVjayhzdHJ1Y3Qgc3BpX25vciAqbm9yLCB1OCBjcikNCj4g ICAqDQo+ICAgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLWVycm5vIG90aGVyd2lzZS4NCj4gICAq Lw0KPiAtc3RhdGljIGludCBzcGlfbm9yX3dyaXRlX3NyX2FuZF9jaGVjayhzdHJ1Y3Qgc3BpX25v ciAqbm9yLCB1OCBzcjEpDQo+ICtpbnQgc3BpX25vcl93cml0ZV9zcl9hbmRfY2hlY2soc3RydWN0 IHNwaV9ub3IgKm5vciwgdTggc3IxKQ0KPiAgew0KPiAgICAgICAgIGlmIChub3ItPmZsYWdzICYg U05PUl9GX0hBU18xNkJJVF9TUikNCj4gICAgICAgICAgICAgICAgIHJldHVybiBzcGlfbm9yX3dy aXRlXzE2Yml0X3NyX2FuZF9jaGVjayhub3IsIHNyMSk7DQo+IEBAIC0zMTI0LDE1ICszMTI0LDE0 IEBAIHN0YXRpYyBpbnQgc3BpX25vcl9xdWFkX2VuYWJsZShzdHJ1Y3Qgc3BpX25vciAqbm9yKQ0K PiAgICogc3BpX25vcl91bmxvY2tfYWxsKCkgLSBVbmxvY2tzIHRoZSBlbnRpcmUgZmxhc2ggbWVt b3J5IGFycmF5Lg0KPiAgICogQG5vcjogICAgICAgcG9pbnRlciB0byBhICdzdHJ1Y3Qgc3BpX25v cicuDQo+ICAgKg0KPiAtICogU29tZSBTUEkgTk9SIGZsYXNoZXMgYXJlIHdyaXRlIHByb3RlY3Rl ZCBieSBkZWZhdWx0IGFmdGVyIGEgcG93ZXItb24gcmVzZXQNCj4gLSAqIGN5Y2xlLCBpbiBvcmRl ciB0byBhdm9pZCBpbmFkdmVydGVudCB3cml0ZXMgZHVyaW5nIHBvd2VyLXVwLiBCYWNrd2FyZA0K PiAtICogY29tcGF0aWJpbGl0eSBpbXBvc2VzIHRvIHVubG9jayB0aGUgZW50aXJlIGZsYXNoIG1l bW9yeSBhcnJheSBhdCBwb3dlci11cA0KPiAtICogYnkgZGVmYXVsdC4NCj4gKyAqIFJldHVybjog MCBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlLg0KPiAgICovDQo+ICBzdGF0aWMgaW50IHNw aV9ub3JfdW5sb2NrX2FsbChzdHJ1Y3Qgc3BpX25vciAqbm9yKQ0KPiAgew0KPiAtICAgICAgIGlm IChub3ItPmZsYWdzICYgU05PUl9GX0hBU19MT0NLKQ0KPiArICAgICAgIGlmIChub3ItPmZsYWdz ICYgU05PUl9GX0hBU19MT0NLKSB7DQo+ICsgICAgICAgICAgICAgICBkZXZfZGJnKG5vci0+ZGV2 LCAidW5wcm90ZWN0aW5nIGVudGlyZSBmbGFzaFxuIik7DQo+ICAgICAgICAgICAgICAgICByZXR1 cm4gc3BpX25vcl91bmxvY2soJm5vci0+bXRkLCAwLCBub3ItPnBhcmFtcy0+c2l6ZSk7DQo+ICsg ICAgICAgfQ0KPiANCj4gICAgICAgICByZXR1cm4gMDsNCj4gIH0NCj4gQEAgLTMxNTMsMTAgKzMx NTIsMjMgQEAgc3RhdGljIGludCBzcGlfbm9yX2luaXQoc3RydWN0IHNwaV9ub3IgKm5vcikNCj4g ICAgICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+ICAgICAgICAgfQ0KPiANCj4gLSAgICAgICBl cnIgPSBzcGlfbm9yX3VubG9ja19hbGwobm9yKTsNCj4gLSAgICAgICBpZiAoZXJyKSB7DQo+IC0g ICAgICAgICAgICAgICBkZXZfZGJnKG5vci0+ZGV2LCAiRmFpbGVkIHRvIHVubG9jayB0aGUgZW50 aXJlIGZsYXNoIG1lbW9yeSBhcnJheVxuIik7DQo+IC0gICAgICAgICAgICAgICByZXR1cm4gZXJy Ow0KPiArICAgICAgIC8qDQo+ICsgICAgICAgICogU29tZSBTUEkgTk9SIGZsYXNoZXMgYXJlIHdy aXRlIHByb3RlY3RlZCBieSBkZWZhdWx0IGFmdGVyIGEgcG93ZXItb24NCj4gKyAgICAgICAgKiBy ZXNldCBjeWNsZSwgaW4gb3JkZXIgdG8gYXZvaWQgaW5hZHZlcnRlbnQgd3JpdGVzIGR1cmluZyBw b3dlci11cC4NCj4gKyAgICAgICAgKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGltcG9zZXMgdG8g dW5sb2NrIHRoZSBlbnRpcmUgZmxhc2ggbWVtb3J5DQo+ICsgICAgICAgICogYXJyYXkgYXQgcG93 ZXItdXAgYnkgZGVmYXVsdC4gRGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbg0K PiArICAgICAgICAqICgxKSB3ZSBkbyBub3RoaW5nLCAoMikgd2UgdW5sb2NrIHRoZSBlbnRpcmUg Zmxhc2ggaW4gYW55IGNhc2Ugb3IgKDMpDQo+ICsgICAgICAgICoganVzdCBkbyBpdCBhY3R1YWxs eSBwb3dlcnMgdXAgd3JpdGUtcHJvdGVjdGVkLiBUaGUgbGF0dGVyIGlzDQoNCmRvIGl0IGlmIGl0 IGFjdHVhbGx5IHBvd2VycyB1cA0KDQpIb3cgYWJvdXQ6ICgxKSBkbyBub3RoaW5nLCAoMikgYWx3 YXlzIHVubG9jayB0aGUgZW50aXJlIGZsYXNoIGFycmF5LCAoMykgdW5sb2NrDQp0aGUgZW50aXJl IGZsYXNoIGFycmF5IG9ubHkgd2hlbiB0aGUgc29mdHdhcmUgcHJvdGVjdGlvbiBiaXRzIGFyZSB2 b2xhdGlsZS4NCg0KPiArICAgICAgICAqIGluZGljYXRlZCBieSBTTk9SX0ZfV1BfSVNfVk9MQVRJ TEUuDQo+ICsgICAgICAgICovDQo+ICsgICAgICAgaWYgKElTX0VOQUJMRUQoQ09ORklHX01URF9T UElfTk9SX1dQX0RJU0FCTEUpIHx8DQo+ICsgICAgICAgICAgIChJU19FTkFCTEVEKENPTkZJR19N VERfU1BJX05PUl9XUF9ESVNBQkxFX09OX1ZPTEFUSUxFKSAmJg0KPiArICAgICAgICAgICAgbm9y LT5mbGFncyAmIFNOT1JfRl9XUF9JU19WT0xBVElMRSkpIHsNCj4gKyAgICAgICAgICAgICAgIGVy ciA9IHNwaV9ub3JfdW5sb2NrX2FsbChub3IpOw0KPiArICAgICAgICAgICAgICAgaWYgKGVycikg ew0KPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKG5vci0+ZGV2LCAiRmFpbGVkIHRv IHVubG9jayB0aGUgZW50aXJlIGZsYXNoIG1lbW9yeSBhcnJheVxuIik7DQoNCmRldl9kYmcgZm9y IGxvdyBsZXZlbCBpbmZvDQoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsN Cj4gKyAgICAgICAgICAgICAgIH0NCj4gICAgICAgICB9DQo+IA0KPiAgICAgICAgIGlmIChub3It PmFkZHJfd2lkdGggPT0gNCAmJg0KPiBAQCAtMzQ1Niw2ICszNDY4LDggQEAgaW50IHNwaV9ub3Jf c2NhbihzdHJ1Y3Qgc3BpX25vciAqbm9yLCBjb25zdCBjaGFyICpuYW1lLA0KPiAgICAgICAgICAg ICAgICAgbm9yLT5mbGFncyB8PSBTTk9SX0ZfTk9fT1BfQ0hJUF9FUkFTRTsNCj4gICAgICAgICBp ZiAoaW5mby0+ZmxhZ3MgJiBVU0VfQ0xTUikNCj4gICAgICAgICAgICAgICAgIG5vci0+ZmxhZ3Mg fD0gU05PUl9GX1VTRV9DTFNSOw0KPiArICAgICAgIGlmIChpbmZvLT5mbGFncyAmIFNQSV9OT1Jf V1BfSVNfVk9MQVRJTEUpDQo+ICsgICAgICAgICAgICAgICBub3ItPmZsYWdzIHw9IFNOT1JfRl9X UF9JU19WT0xBVElMRTsNCj4gDQo+ICAgICAgICAgaWYgKGluZm8tPmZsYWdzICYgU1BJX05PUl80 QklUX0JQKSB7DQo+ICAgICAgICAgICAgICAgICBub3ItPmZsYWdzIHw9IFNOT1JfRl9IQVNfNEJJ VF9CUDsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3NwaS1ub3IvY29yZS5oIGIvZHJpdmVy cy9tdGQvc3BpLW5vci9jb3JlLmgNCj4gaW5kZXggMTZiMzUwZTFkODY1Li42YmY4NmMyOTk0Yzgg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbXRkL3NwaS1ub3IvY29yZS5oDQo+ICsrKyBiL2RyaXZl cnMvbXRkL3NwaS1ub3IvY29yZS5oDQo+IEBAIC0yOCw2ICsyOCw3IEBAIGVudW0gc3BpX25vcl9v cHRpb25fZmxhZ3Mgew0KPiAgICAgICAgIFNOT1JfRl9IQVNfU1JfQlAzX0JJVDYgID0gQklUKDEz KSwNCj4gICAgICAgICBTTk9SX0ZfSU9fTU9ERV9FTl9WT0xBVElMRSA9IEJJVCgxNCksDQo+ICAg ICAgICAgU05PUl9GX1NPRlRfUkVTRVQgICAgICAgPSBCSVQoMTUpLA0KPiArICAgICAgIFNOT1Jf Rl9XUF9JU19WT0xBVElMRSAgID0gQklUKDE2KSwNCj4gIH07DQo+IA0KPiAgc3RydWN0IHNwaV9u b3JfcmVhZF9jb21tYW5kIHsNCj4gQEAgLTMyOSw2ICszMzAsMTEgQEAgc3RydWN0IGZsYXNoX2lu Zm8gew0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KiBhdmFpbGFibGUgSS9PIG1vZGUgdmlhIGENCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICogdm9sYXRpbGUgYml0Lg0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gKyNkZWZpbmUgU1BJX05PUl9X UF9JU19WT0xBVElMRSBCSVQoMjIpIC8qDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKiBGbGFzaCBoYXMgdm9sYXRpbGUgd3JpdGUgcHJvdGVjdGlvbg0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYml0cy4gVXN1YWxseSB0aGVz ZSB3aWxsIHBvd2VyLXVwIGluDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKiBhIHdyaXRlLXByb3RlY3RlZCBzdGF0ZS4NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqLw0KPiANCj4gICAgICAgICAvKiBQYXJ0IHNwZWNpZmljIGZp eHVwIGhvb2tzLiAqLw0KPiAgICAgICAgIGNvbnN0IHN0cnVjdCBzcGlfbm9yX2ZpeHVwcyAqZml4 dXBzOw0KPiBAQCAtNDMwLDcgKzQzNiw5IEBAIHZvaWQgc3BpX25vcl91bmxvY2tfYW5kX3VucHJl cChzdHJ1Y3Qgc3BpX25vciAqbm9yKTsNCj4gIGludCBzcGlfbm9yX3NyMV9iaXQ2X3F1YWRfZW5h YmxlKHN0cnVjdCBzcGlfbm9yICpub3IpOw0KPiAgaW50IHNwaV9ub3Jfc3IyX2JpdDFfcXVhZF9l bmFibGUoc3RydWN0IHNwaV9ub3IgKm5vcik7DQo+ICBpbnQgc3BpX25vcl9zcjJfYml0N19xdWFk X2VuYWJsZShzdHJ1Y3Qgc3BpX25vciAqbm9yKTsNCj4gK2ludCBzcGlfbm9yX3JlYWRfc3Ioc3Ry dWN0IHNwaV9ub3IgKm5vciwgdTggKnNyKTsNCj4gIGludCBzcGlfbm9yX3dyaXRlX3NyKHN0cnVj dCBzcGlfbm9yICpub3IsIGNvbnN0IHU4ICpzciwgc2l6ZV90IGxlbik7DQo+ICtpbnQgc3BpX25v cl93cml0ZV9zcl9hbmRfY2hlY2soc3RydWN0IHNwaV9ub3IgKm5vciwgdTggc3IxKTsNCj4gDQo+ ICBpbnQgc3BpX25vcl94cmVhZF9zcihzdHJ1Y3Qgc3BpX25vciAqbm9yLCB1OCAqc3IpOw0KPiAg c3NpemVfdCBzcGlfbm9yX3JlYWRfZGF0YShzdHJ1Y3Qgc3BpX25vciAqbm9yLCBsb2ZmX3QgZnJv bSwgc2l6ZV90IGxlbiwNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3NwaS1ub3IvZXNtdC5j IGIvZHJpdmVycy9tdGQvc3BpLW5vci9lc210LmMNCj4gaW5kZXggYzkzMTcwMDA4MTE4Li5kOTcw ZjZkYTI3YzIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbXRkL3NwaS1ub3IvZXNtdC5jDQo+ICsr KyBiL2RyaXZlcnMvbXRkL3NwaS1ub3IvZXNtdC5jDQo+IEBAIC0xMSw3ICsxMSw3IEBADQo+ICBz dGF0aWMgY29uc3Qgc3RydWN0IGZsYXNoX2luZm8gZXNtdF9wYXJ0c1tdID0gew0KPiAgICAgICAg IC8qIEVTTVQgKi8NCj4gICAgICAgICB7ICJmMjVsMzJwYSIsIElORk8oMHg4YzIwMTYsIDAsIDY0 ICogMTAyNCwgNjQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RfNEsgfCBTUElf Tk9SX0hBU19MT0NLKSB9LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUXzRLIHwg U1BJX05PUl9IQVNfTE9DSyB8IFNQSV9OT1JfV1BfSVNfVk9MQVRJTEUpIH0sDQo+ICAgICAgICAg eyAiZjI1bDMycWEiLCBJTkZPKDB4OGM0MTE2LCAwLCA2NCAqIDEwMjQsIDY0LA0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTRUNUXzRLIHwgU1BJX05PUl9IQVNfTE9DSykgfSwNCj4gICAg ICAgICB7ICJmMjVsNjRxYSIsIElORk8oMHg4YzQxMTcsIDAsIDY0ICogMTAyNCwgMTI4LA0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvc3BpLW5vci9pbnRlbC5jIGIvZHJpdmVycy9tdGQvc3Bp LW5vci9pbnRlbC5jDQo+IGluZGV4IDZjMzFiZWYzZmM2MC4uMGJiMWUzZmQ5NzAyIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL210ZC9zcGktbm9yL2ludGVsLmMNCj4gKysrIGIvZHJpdmVycy9tdGQv c3BpLW5vci9pbnRlbC5jDQo+IEBAIC0xMCw5ICsxMCwxMiBAQA0KPiANCj4gIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZmxhc2hfaW5mbyBpbnRlbF9wYXJ0c1tdID0gew0KPiAgICAgICAgIC8qIEludGVs L051bW9ueXggLS0geHh4czMzYiAqLw0KPiAtICAgICAgIHsgIjE2MHMzM2IiLCAgSU5GTygweDg5 ODkxMSwgMCwgNjQgKiAxMDI0LCAgMzIsIFNQSV9OT1JfSEFTX0xPQ0spIH0sDQo+IC0gICAgICAg eyAiMzIwczMzYiIsICBJTkZPKDB4ODk4OTEyLCAwLCA2NCAqIDEwMjQsICA2NCwgU1BJX05PUl9I QVNfTE9DSykgfSwNCj4gLSAgICAgICB7ICI2NDBzMzNiIiwgIElORk8oMHg4OTg5MTMsIDAsIDY0 ICogMTAyNCwgMTI4LCBTUElfTk9SX0hBU19MT0NLKSB9LA0KPiArICAgICAgIHsgIjE2MHMzM2Ii LCAgSU5GTygweDg5ODkxMSwgMCwgNjQgKiAxMDI0LCAgMzIsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgIFNQSV9OT1JfSEFTX0xPQ0sgfCBTUElfTk9SX1dQX0lTX1ZPTEFUSUxFKSB9LA0K PiArICAgICAgIHsgIjMyMHMzM2IiLCAgSU5GTygweDg5ODkxMiwgMCwgNjQgKiAxMDI0LCAgNjQs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFNQSV9OT1JfSEFTX0xPQ0sgfCBTUElfTk9S X1dQX0lTX1ZPTEFUSUxFKSB9LA0KPiArICAgICAgIHsgIjY0MHMzM2IiLCAgSU5GTygweDg5ODkx MywgMCwgNjQgKiAxMDI0LCAxMjgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFNQSV9O T1JfSEFTX0xPQ0sgfCBTUElfTk9SX1dQX0lTX1ZPTEFUSUxFKSB9LA0KPiAgfTsNCj4gDQo+ICBj b25zdCBzdHJ1Y3Qgc3BpX25vcl9tYW51ZmFjdHVyZXIgc3BpX25vcl9pbnRlbCA9IHsNCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3NwaS1ub3Ivc3N0LmMgYi9kcml2ZXJzL210ZC9zcGktbm9y L3NzdC5jDQo+IGluZGV4IDhiMTY5ZmE0MTAyYS4uNWU0NDUwODc3ZDY2IDEwMDY0NA0KPiAtLS0g YS9kcml2ZXJzL210ZC9zcGktbm9yL3NzdC5jDQo+ICsrKyBiL2RyaXZlcnMvbXRkL3NwaS1ub3Iv c3N0LmMNCj4gQEAgLTExLDI2ICsxMSwyNyBAQA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBmbGFz aF9pbmZvIHNzdF9wYXJ0c1tdID0gew0KPiAgICAgICAgIC8qIFNTVCAtLSBsYXJnZSBlcmFzZSBz aXplcyBhcmUgIm92ZXJsYXlzIiwgInNlY3RvcnMiIGFyZSA0SyAqLw0KPiAgICAgICAgIHsgInNz dDI1dmYwNDBiIiwgSU5GTygweGJmMjU4ZCwgMCwgNjQgKiAxMDI0LCAgOCwNCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU0VDVF80SyB8IFNTVF9XUklURSB8IFNQSV9OT1JfSEFTX0xP Q0spIH0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RfNEsgfCBTU1RfV1JJ VEUgfCBTUElfTk9SX0hBU19MT0NLIHwgU1BJX05PUl9XUF9JU19WT0xBVElMRSkgfSwNCj4gICAg ICAgICB7ICJzc3QyNXZmMDgwYiIsIElORk8oMHhiZjI1OGUsIDAsIDY0ICogMTAyNCwgMTYsDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RfNEsgfCBTU1RfV1JJVEUgfCBTUElf Tk9SX0hBU19MT0NLKSB9LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUXzRL IHwgU1NUX1dSSVRFIHwgU1BJX05PUl9IQVNfTE9DSyB8IFNQSV9OT1JfV1BfSVNfVk9MQVRJTEUp IH0sDQo+ICAgICAgICAgeyAic3N0MjV2ZjAxNmIiLCBJTkZPKDB4YmYyNTQxLCAwLCA2NCAqIDEw MjQsIDMyLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUXzRLIHwgU1NUX1dS SVRFIHwgU1BJX05PUl9IQVNfTE9DSykgfSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU0VDVF80SyB8IFNTVF9XUklURSB8IFNQSV9OT1JfSEFTX0xPQ0sgfCBTUElfTk9SX1dQX0lT X1ZPTEFUSUxFKSB9LA0KPiAgICAgICAgIHsgInNzdDI1dmYwMzJiIiwgSU5GTygweGJmMjU0YSwg MCwgNjQgKiAxMDI0LCA2NCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDVF80 SyB8IFNTVF9XUklURSB8IFNQSV9OT1JfSEFTX0xPQ0spIH0sDQo+IC0gICAgICAgeyAic3N0MjV2 ZjA2NGMiLCBJTkZPKDB4YmYyNTRiLCAwLCA2NCAqIDEwMjQsIDEyOCwgU0VDVF80SyB8IFNQSV9O T1JfSEFTX0xPQ0spIH0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RfNEsg fCBTU1RfV1JJVEUgfCBTUElfTk9SX0hBU19MT0NLIHwgU1BJX05PUl9XUF9JU19WT0xBVElMRSkg fSwNCj4gKyAgICAgICB7ICJzc3QyNXZmMDY0YyIsIElORk8oMHhiZjI1NGIsIDAsIDY0ICogMTAy NCwgMTI4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUXzRLIHwgU1BJX05P Ul9IQVNfTE9DSyB8IFNQSV9OT1JfV1BfSVNfVk9MQVRJTEUpIH0sDQo+ICAgICAgICAgeyAic3N0 MjV3ZjUxMiIsICBJTkZPKDB4YmYyNTAxLCAwLCA2NCAqIDEwMjQsICAxLA0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTRUNUXzRLIHwgU1NUX1dSSVRFIHwgU1BJX05PUl9IQVNfTE9D SykgfSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDVF80SyB8IFNTVF9XUklU RSB8IFNQSV9OT1JfSEFTX0xPQ0sgfCBTUElfTk9SX1dQX0lTX1ZPTEFUSUxFKSB9LA0KPiAgICAg ICAgIHsgInNzdDI1d2YwMTAiLCAgSU5GTygweGJmMjUwMiwgMCwgNjQgKiAxMDI0LCAgMiwNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDVF80SyB8IFNTVF9XUklURSB8IFNQSV9O T1JfSEFTX0xPQ0spIH0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RfNEsg fCBTU1RfV1JJVEUgfCBTUElfTk9SX0hBU19MT0NLIHwgU1BJX05PUl9XUF9JU19WT0xBVElMRSkg fSwNCj4gICAgICAgICB7ICJzc3QyNXdmMDIwIiwgIElORk8oMHhiZjI1MDMsIDAsIDY0ICogMTAy NCwgIDQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RfNEsgfCBTU1RfV1JJ VEUgfCBTUElfTk9SX0hBU19MT0NLKSB9LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTRUNUXzRLIHwgU1NUX1dSSVRFIHwgU1BJX05PUl9IQVNfTE9DSyB8IFNQSV9OT1JfV1BfSVNf Vk9MQVRJTEUpIH0sDQo+ICAgICAgICAgeyAic3N0MjV3ZjAyMGEiLCBJTkZPKDB4NjIxNjEyLCAw LCA2NCAqIDEwMjQsICA0LCBTRUNUXzRLIHwgU1BJX05PUl9IQVNfTE9DSykgfSwNCj4gICAgICAg ICB7ICJzc3QyNXdmMDQwYiIsIElORk8oMHg2MjE2MTMsIDAsIDY0ICogMTAyNCwgIDgsIFNFQ1Rf NEsgfCBTUElfTk9SX0hBU19MT0NLKSB9LA0KPiAgICAgICAgIHsgInNzdDI1d2YwNDAiLCAgSU5G TygweGJmMjUwNCwgMCwgNjQgKiAxMDI0LCAgOCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU0VDVF80SyB8IFNTVF9XUklURSB8IFNQSV9OT1JfSEFTX0xPQ0spIH0sDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RfNEsgfCBTU1RfV1JJVEUgfCBTUElfTk9SX0hB U19MT0NLIHwgU1BJX05PUl9XUF9JU19WT0xBVElMRSkgfSwNCj4gICAgICAgICB7ICJzc3QyNXdm MDgwIiwgIElORk8oMHhiZjI1MDUsIDAsIDY0ICogMTAyNCwgMTYsDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNFQ1RfNEsgfCBTU1RfV1JJVEUgfCBTUElfTk9SX0hBU19MT0NLKSB9 LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUXzRLIHwgU1NUX1dSSVRFIHwg U1BJX05PUl9IQVNfTE9DSyB8IFNQSV9OT1JfV1BfSVNfVk9MQVRJTEUpIH0sDQo+ICAgICAgICAg eyAic3N0MjZ3ZjAxNmIiLCBJTkZPKDB4YmYyNjUxLCAwLCA2NCAqIDEwMjQsIDMyLA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUXzRLIHwgU1BJX05PUl9EVUFMX1JFQUQgfA0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUElfTk9SX1FVQURfUkVBRCkgfSwNCj4g LS0NCj4gMi4yMC4xDQo+IA0KDQpUaGFua3MsDQp0YQ0K