Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 36DB5C74A5B for ; Tue, 14 Mar 2023 03:24:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229704AbjCNDYi (ORCPT ); Mon, 13 Mar 2023 23:24:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229483AbjCNDYf (ORCPT ); Mon, 13 Mar 2023 23:24:35 -0400 Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2082.outbound.protection.outlook.com [40.107.247.82]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6FB8920065; Mon, 13 Mar 2023 20:24:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T4cXwcFHXzcc6LQwdqCoB6xWO4CvgyZXe6fas122qUH3FKe+bqTsTxkLa+64oUreMh03bZaUS2gHykekhXwAXOpMq3kvZaMMIuDccX9T+U7VW5fQD3GGTBLDJ476JT2rLLnD/5oVt453dFY8ycafAJYo8HKJXVj84L1t+HiX6O/KXWkPpUSiaE+ZjlY+SpZ3iOlDNRxDtAsBtO/M4F3d9DBVvIfSMs6XX0eQX0du8SsdXqPgKqcOGpJ85iDPfxbx4EK8Cq1QfUIFG0gwVeYt/jzYwUoZ7ZNi48XTYqZ9/6OzhdVM7JVeSWnCj3EfYlwollQ61wg6cNLgBkHC9f/NNA== 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=1ZkjP1JTrZe7eFrMPDATdYuKpLJ0LgXWX+C0eMxZUu4=; b=dbMXcxYbGLbFiR9PAfwVQk8lZu51bOJpntC0BUzngQfwLSXlZf6gmZaFLaswTkjIcTpdgoURsS+AMl2sblF15ZB6EoMctefzIrFxD61Jg/Bpv8AvKwyZLouHVC+m8zOo7CFkkRDEQLaJBdIjwT/si/crnRCDGWPT86OeirO14XzsAMP8HQXlTwqIrEXbWNbbmc0OsIAXhwUULIxIC3LcJQOCzc0gW3AbdaAiS3lUkX+19B5QrEgPYnr6hJWY1N9qHiJUvijb3dbSEm/WBV9TohkARneSldWKIuT6ttmA37pSTjV7u9+6gFM//JW+BnUD5uiBM4BRsU5BRBMlwt3AEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1ZkjP1JTrZe7eFrMPDATdYuKpLJ0LgXWX+C0eMxZUu4=; b=AwOtcvZiesMvgkhhMa9KDxx4l0KaVNRcYMTjs1JvDR0DURfBlCZiu1SI8pPCk6+NtV4KXsSZwGL3mV/1RTW0RxZHzsB4siSDs8DBJO6DDG4fDkLr1F7ZAmIVm1qkC1ix/3zKtZa13beUX+/CcjOrPf67fj9eWr9tZIbyZJVhPxo= Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by PAWPR04MB9934.eurprd04.prod.outlook.com (2603:10a6:102:380::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.26; Tue, 14 Mar 2023 03:24:28 +0000 Received: from AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::a6f5:af13:52e6:b3b]) by AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::a6f5:af13:52e6:b3b%6]) with mapi id 15.20.6178.026; Tue, 14 Mar 2023 03:24:28 +0000 From: Hongxing Zhu To: Bjorn Helgaas CC: Lorenzo Pieralisi , "l.stach@pengutronix.de" , "bhelgaas@google.com" , "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "kernel@pengutronix.de" , dl-linux-imx Subject: RE: [PATCH v2] PCI: imx6: Save and restore MSI control of RC in suspend and resume Thread-Topic: [PATCH v2] PCI: imx6: Save and restore MSI control of RC in suspend and resume Thread-Index: AQHZCs5AD2/8gpjnlEiLVRL42ArW9K6GqvQAgAVt7lCAaKgiAIADzr1AgAEC9ICAAJ0kcA== Date: Tue, 14 Mar 2023 03:24:28 +0000 Message-ID: References: <20230313174929.GA1509198@bhelgaas> In-Reply-To: <20230313174929.GA1509198@bhelgaas> Accept-Language: en-US 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=nxp.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS8PR04MB8676:EE_|PAWPR04MB9934:EE_ x-ms-office365-filtering-correlation-id: 4ca2e4bb-216c-41d0-0313-08db243b9e8f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hGGlVgG7wynlk81oVVKmbgySD2JR1myM9SxvrVHo3653HF8RLExiaE5d1hMbVHZ/5uLL8PzQRXzzBIgC/uS0EHyrwxU2vGYc4jcsLhBaNeo0K+xFx3fOS8b/tsLljd1gW8mhMECIM+6C7P4jIkVgl+/BhhUiPRVhn/wXjZ+mHhP9RC7rCAOeaAO5a9Zbk90/YEP5WeV92+xOrdojpr2hfU2JBFArGX8TFnjrvQnr9ujvMfqeJrY368EeBCu81uA+GklEATGE0+KOvqYcxz6/zHYSU+jjx4szKyz4J7MOge1bEejTAswPq92CSAT+38T5qRWjI/RBUJc14yvcIncoKXB6rwvhhi1+gDnybGENnzbCcucbClgX3GDkLgXdXALwRhEddJQuD3qFRVEgqlINs4n2q6pHz+vbfWMmn3teF3W8SMKFigfJvj7KRtKgZx4GF0TXACs9U7mbh6+yiCR5qIL1onwa2vtRYS5iV7v4DMAlQvrt5d1yxDDV9gCAIitgfxy1pI9iApaq5RipON2XH8mKFGKhb03oTV3x9hkxUFeEz44VZUd/yTqO4j6gFcH8pr6Qf0Gx4dYSwaDWmIX8Dyct3M0wm/f/2oNOCm5QfAlZels0HVAdsuNCrnOeNEoVKZaEVeT1KmlXPSe/nHCZUDp3rAM0lnBG5LopkfKZoMxzwK5GYsktjXaY2H+f80zD x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB8676.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(396003)(136003)(346002)(366004)(376002)(451199018)(86362001)(38070700005)(38100700002)(122000001)(33656002)(44832011)(2906002)(15650500001)(52536014)(30864003)(41300700001)(5660300002)(8936002)(55016003)(4326008)(6916009)(53546011)(6506007)(186003)(26005)(9686003)(83380400001)(316002)(54906003)(66946007)(66556008)(66476007)(64756008)(8676002)(66446008)(76116006)(966005)(71200400001)(478600001)(45080400002)(7696005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?aUtvOS9ERGRxT1ZJZHMwTGp3MjlRODZuWnltTitUY3V1L2RuVlVQTk8wRDk2?= =?gb2312?B?Wm8yY1p2Sml0Z3diM3lpQjBGVi9rTXpScFhLUTJoUDlNdjNKN050OUxzMERG?= =?gb2312?B?VWxjbGM5QjJjQ0RMU0xzclhRYjg1bUkwYmJWRURGZHJINWlEZy9URzJjWEJP?= =?gb2312?B?RlJ2VVp5MlNaT1ZPYkRPd05aQ0NKcm5pcmd6UVVCb1AwVWxaZUpycmR6Vnoy?= =?gb2312?B?ZDBYSHRaVzFhVndvTXJLeFpuTmpiWGxrd2lYQ09OR2VsQ3Y3Y3paTVJ0TEZo?= =?gb2312?B?TUczanF3UUJKY1VLOUZKQVRGM21wUmkySldKdjNZTzgydGZidXc1REZsN0I5?= =?gb2312?B?dDhiZXZadGszQ1Bsbk96bkIyVVp5WXVld2tUclh1aUoyaXpoM1dFbmVpQTJV?= =?gb2312?B?eU91SURLU05Cb21DV0tlbEh1ZXQ3Y2VTdHU5U1BBejMxTy9Wb3Yycnp4MmtP?= =?gb2312?B?Si9kdFZnZkllb3FLam5XNnVtSGNoZEhwNEU1Q28zTFJaUTBxYXlXdzVnWlkw?= =?gb2312?B?MnF6UExYS3ZWaXJzSHI1MzEzeUMvaXZseHk2TVlqd1Ftd1owMURjTmlZV1E1?= =?gb2312?B?N0hGUVVFb3h5NS8zaU41WHZmSWI2QjR5TzZaYTBmZ25kMkNpOXg2ZmxqQ2tx?= =?gb2312?B?RkFyT3RXc3Z2dXlNREcwK2tVVFpTY1FqL2RrMTNoemJOVFVweWNORll4VWpJ?= =?gb2312?B?TDVXSm1ZcDNKdnBKU2RxRjZYSHdkbk9TRnQ2VVpYajg5MUpZYUNubldwQWpv?= =?gb2312?B?cEJCNDhRWXA2SzBGOVN1MkZaYWU0TVgxcFI0WmdjTnZscURIc0lueTVHRS9v?= =?gb2312?B?aURWWHU4eWk1RGtQNHJDNlRGa05IUnU5Y0JiMkR5LzJCV00wNSsxdWRmNFlx?= =?gb2312?B?ZUJ6Wnk4T0Z2ZmZzOGdTekg5MTh6Q3ltaTZ0Q2J2dzJybDRDeXhMdlRLVndz?= =?gb2312?B?YnZBYjRHTk53REJuSFc2L3JUNmhiQWtIVGkxS01hTGVWVzk5RER4WGVGN0tZ?= =?gb2312?B?MzN2Z25LSG9qOFFrRGg5V2M0RlpWekhZOVdqeXFTcVFIem4vdndaVXFBOTdp?= =?gb2312?B?MjJTVzdScFpwUmx0OHhWVW1BcWFPWGwrMENNRXJSNHRQTnJ2YUIvRmJNQXlM?= =?gb2312?B?UmgxMFhPemNkMGxpTGNWaWRwT04wcVRpWlhyQWVtbmE1RHhrK3hxYlg5ZmEy?= =?gb2312?B?K0tiV1pLM29hVUZoT0Y3Q3NDNW9Bc1kyWEdneDdiaWJweWdtdHV5UWNOUWJG?= =?gb2312?B?OG9DcHVPa05qN21UK3lyeFVPZC9sNGdVOHE4VDlCYWlwMnQyZ3NNVWNHc2ln?= =?gb2312?B?YmJYMHNPeWdUTDYwMS9RZ1FhcHpNTmhudmJjUmtQazRCTWZVSGlmaEMycVFK?= =?gb2312?B?Mk1sS2hFKzJRNFR4SGY0UmhzUGhhejlWeXM3WndWWjQrOGtYMkxERVltcjM2?= =?gb2312?B?R3ppN3FRRjNUTnBKdUEzRnlFZnRKVTdacmFic3VWY3RlS09mak1lcDlMNVpJ?= =?gb2312?B?emV4ZTZRNjlTaWdzYUpmYzJnOVU4Y01uK1o1OWtYaS96bnBZRVk5U3pGT2lV?= =?gb2312?B?bFAyVUpsWjh6d2lHMVJxUEpndXNrMVorMTI2bHZSTmtPeWhhdEhTbC9tYnFy?= =?gb2312?B?dXQ2K2xuOU45WXFmeGZvSE5Dd3RnWjN2UG12SDJvNU5ndzRYcEFTSGNvenpK?= =?gb2312?B?WlZCRkxCQWtOS1U5SmVwaTZaNUN1bDhnZ2FDTGF5K3o5cUpaQmlYL1NEeFU3?= =?gb2312?B?eFZmSDBCTHZVL0lUUU1nTS9MckozUXd3dGR3MVExcTU5dThoWWlqaWRXRjFk?= =?gb2312?B?RVFrdk4vQmljNnpiVnM5cDlxai9qTWFVTlJTeEF5RG1VZ0Y0STZNdDBwbTVz?= =?gb2312?B?NzcrbzRIczlybVZTTUFvNkpsNnBmRWREMTdJbWtudnhjOGh4cWR0TzZvSDEv?= =?gb2312?B?ODJaT3RncjA0VnkvSk5PTlErNlpIb2I2Tkc5SWRpSmhVRmo0aFVkTVQ1UEhl?= =?gb2312?B?VHZIYnc4VTM1K1BzQzFlY2xQTUV6eU5nL0pSZnA1L2NnalFGVTE3eXpCbDh0?= =?gb2312?B?WmVZRTFJNlJmSkZ0Vy9hbkxMZkhuU0tCVjRqSE1JVlQyWm91cys2emhXN1Z2?= =?gb2312?Q?s96CW1MO89DGbvkR43Zutf38g?= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ca2e4bb-216c-41d0-0313-08db243b9e8f X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Mar 2023 03:24:28.4275 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: um7gUfwWc5BW8GlBX8Aw6BAcG7w89N1qBqa33wJvDVqUQJbHt+GpxcZJ0poxEdZ+9E05PioGo4vKWPC/Uf/l8Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR04MB9934 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCam9ybiBIZWxnYWFzIDxoZWxn YWFzQGtlcm5lbC5vcmc+DQo+IFNlbnQ6IDIwMjPE6jPUwjE0yNUgMTo0OQ0KPiBUbzogSG9uZ3hp bmcgWmh1IDxob25neGluZy56aHVAbnhwLmNvbT4NCj4gQ2M6IExvcmVuem8gUGllcmFsaXNpIDxs cGllcmFsaXNpQGtlcm5lbC5vcmc+OyBsLnN0YWNoQHBlbmd1dHJvbml4LmRlOw0KPiBiaGVsZ2Fh c0Bnb29nbGUuY29tOyBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnOw0KPiBsaW51eC1hcm0ta2Vy bmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7DQo+ IGtlcm5lbEBwZW5ndXRyb25peC5kZTsgZGwtbGludXgtaW14IDxsaW51eC1pbXhAbnhwLmNvbT4N Cj4gU3ViamVjdDogUmU6IFtQQVRDSCB2Ml0gUENJOiBpbXg2OiBTYXZlIGFuZCByZXN0b3JlIE1T SSBjb250cm9sIG9mIFJDIGluDQo+IHN1c3BlbmQgYW5kIHJlc3VtZQ0KPiANCj4gT24gTW9uLCBN YXIgMTMsIDIwMjMgYXQgMDI6NTA6MzFBTSArMDAwMCwgSG9uZ3hpbmcgWmh1IHdyb3RlOg0KPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IExvcmVuem8gUGllcmFs aXNpIDxscGllcmFsaXNpQGtlcm5lbC5vcmc+DQo+ID4gPiBTZW50OiAyMDIzxOoz1MIxMcjVIDA6 MTQNCj4gPiA+IFRvOiBIb25neGluZyBaaHUgPGhvbmd4aW5nLnpodUBueHAuY29tPg0KPiA+ID4g Q2M6IGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU7IGJoZWxnYWFzQGdvb2dsZS5jb207DQo+ID4gPiBs aW51eC1wY2lAdmdlci5rZXJuZWwub3JnOyBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmc7DQo+ID4gPiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBrZXJuZWxAcGVuZ3V0 cm9uaXguZGU7IGRsLWxpbnV4LWlteA0KPiA+ID4gPGxpbnV4LWlteEBueHAuY29tPg0KPiA+ID4g U3ViamVjdDogUmU6IFtQQVRDSCB2Ml0gUENJOiBpbXg2OiBTYXZlIGFuZCByZXN0b3JlIE1TSSBj b250cm9sIG9mDQo+ID4gPiBSQyBpbiBzdXNwZW5kIGFuZCByZXN1bWUNCj4gPiA+DQo+ID4gPiBP biBNb24sIEphbiAwOSwgMjAyMyBhdCAwMjowODowNkFNICswMDAwLCBIb25neGluZyBaaHUgd3Jv dGU6DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiBGcm9t OiBMb3JlbnpvIFBpZXJhbGlzaSA8bHBpZXJhbGlzaUBrZXJuZWwub3JnPg0KPiA+ID4gPiA+IFNl bnQ6IDIwMjLE6jEy1MIzMMjVIDIzOjA2DQo+ID4gPiA+ID4gVG86IEhvbmd4aW5nIFpodSA8aG9u Z3hpbmcuemh1QG54cC5jb20+OyBsLnN0YWNoQHBlbmd1dHJvbml4LmRlOw0KPiA+ID4gPiA+IGJo ZWxnYWFzQGdvb2dsZS5jb20NCj4gPiA+ID4gPiBDYzogbGludXgtcGNpQHZnZXIua2VybmVsLm9y ZzsNCj4gPiA+ID4gPiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7DQo+ID4g PiA+ID4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsga2VybmVsQHBlbmd1dHJvbml4LmRl Ow0KPiA+ID4gPiA+IGRsLWxpbnV4LWlteCA8bGludXgtaW14QG54cC5jb20+DQo+ID4gPiA+ID4g U3ViamVjdDogUmU6IFtQQVRDSCB2Ml0gUENJOiBpbXg2OiBTYXZlIGFuZCByZXN0b3JlIE1TSSBj b250cm9sDQo+ID4gPiA+ID4gb2YgUkMgaW4gc3VzcGVuZCBhbmQgcmVzdW1lDQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBPbiBUaHUsIERlYyAwOCwgMjAyMiBhdCAwMjowNTozNFBNICswODAwLCBSaWNo YXJkIFpodSB3cm90ZToNCj4gPiA+ID4gPiA+IFRoZSBNU0kgRW5hYmxlIGJpdCBjb250cm9scyBk ZWxpdmVyeSBvZiBNU0kgaW50ZXJydXB0cyBmcm9tDQo+ID4gPiA+ID4gPiBjb21wb25lbnRzIGJl bG93IHRoZSBSb290IFBvcnQuIFRoaXMgYml0IG1pZ2h0IGxvc3QgZHVyaW5nIHRoZQ0KPiA+ID4g PiA+ID4gc3VzcGVuZCwgc2hvdWxkIGJlIHJlLXN0b3JlZCBkdXJpbmcgcmVzdW1lLg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IFNhdmUgdGhlIE1TSSBjb250cm9sIGR1cmluZyBzdXNwZW5kLCBh bmQgcmVzdG9yZSBpdCBpbiByZXN1bWUuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJIGJlbGlldmUg dGhhdCB3aGF0IEx1Y2FzIGFuZCBCam9ybiBhc2tlZCBvbiB2MSBpcyBzdGlsbCBub3QgYW5zd2Vy ZWQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGUgcm9vdCBwb3J0IGlzIGEgUENJIGRldmljZSwg d2h5IGRvIHdlIG5lZWQgdG8gc2F2ZSBhbmQNCj4gPiA+ID4gPiByZXN0b3JlIHRoZSBNU0kgY2Fw IG9uIHRvcCBvZiB3aGF0IFBDSSBjb3JlIGFscmVhZHkgZG9lcyA/IFRoZQ0KPiA+ID4gPiA+IFJQ IHNob3VsZCBiZSBlbnVtZXJhdGVkIGFzIGEgUENJIGRldmljZSBhbmQgdGhlcmVmb3JlIEkgZXhw ZWN0DQo+ID4gPiA+ID4gdGhlIE1TSSBjYXAgdG8gYmUgc2F2ZWQvcmVzdG9yZWQgaW4gdGhlIHN1 c3BlbmQvcmVzdW1lIGV4ZWN1dGlvbi4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgZG9uJ3QgdGhp bmsgdGhlcmUgaXMgYW55dGhpbmcgaU1YNiBzcGVjaWZpYyBpbiB0aGlzLg0KPiA+ID4gPiBIaSBM b3JlbnpvOg0KPiA+ID4gPiBUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuDQo+ID4gPiA+IFNvcnJ5 IHRvIHJlcGx5IGxhdGUsIHNpbmNlIEkgZ290IGEgaGlnaCBmZXZlciBpbiB0aGUgcGFzdCBkYXlz Lg0KPiA+ID4gPg0KPiA+ID4gPiBCYXNlZCBvbiBpLk1YNlFQIFNBQlJFU0QgYm9hcmQgYW5kIFhI Q0kgUENJZTJVU0IzLjAgZGV2aWNlLCB0aGUNCj4gPiA+ID4gTVNJIGNhcCAgc2F2ZS9yZXN0b3Jl IG9mIFBDSSBjb3JlIGlzIG5vdCBleGVjdXRlZChkZXYtPm1zaV9lbmFibGVkDQo+ID4gPiA+IGlz DQo+ID4gPiA+IHplcm8pICBkdXJpbmcgbXkgc3VzcGVuZC9yZXN1bWUgdGVzdHMuDQo+ID4gPg0K PiA+ID4gSSBzdGlsbCBkbyBub3QgdW5kZXJzdGFuZC4gVGhlIHJlZ2lzdGVyIHlvdSBhcmUgc2F2 aW5nL3Jlc3RvcmluZyBpbg0KPiA+ID4gdGhlIFJDIGlzIG5vdCB0aGUgcm9vdCBwb3J0IE1lc3Nh Z2UgY29udHJvbCBmaWVsZCBpbiB0aGUgcm9vdCBwb3J0DQo+ID4gPiBNU0kgY2FwYWJpbGl0eSwg aXQgaXMgYSBzZXBhcmF0ZSByZWdpc3RlciB0aGF0IGNvbnRyb2xzIHRoZSByb290DQo+ID4gPiBj b21wbGV4IE1TSSBmb3J3YXJkaW5nLCBpcyB0aGF0IGNvcnJlY3QgPw0KPiA+ID4NCj4gPiA+IFRo ZSByb290IHBvcnQgTVNJIGNhcGFiaWxpdHkgZG9lcyBub3QgY29udHJvbCB0aGUgcm9vdCBjb21w bGV4DQo+ID4gPiBmb3J3YXJkaW5nIG9mIE1TSXMgVExQcy4NCj4gPiA+DQo+ID4gPiBTbyB0aGUg Yml0cyB5b3UgYXJlIHNhdmluZyBhbmQgcmVzdG9yaW5nIElJVUMgc2hvdWxkIGJlIE1NSU8gc3Bh Y2UNCj4gPiA+IGluIHRoZSByb290IGNvbXBsZXgsIGRyZXNzZWQgYXMgYW4gTVNJIGNhcGFiaWxp dHksIHRoYXQgaGFzIG5vdGhpbmcNCj4gPiA+IHRvIGRvIHdpdGggdGhlIHJvb3QgcG9ydCBNU0kg Y2FwYWJpbGl0eS4NCj4gPiA+DQo+ID4gPiBJcyB0aGF0IGNvcnJlY3QgPw0KPiA+DQo+ID4gSXQn cyBub3QgYSBzZXBhcmF0ZSByZWdpc3Rlci4NCj4gPg0KPiA+IFRoZSBiaXQgSSBtYW5pcHVsYXRl ZCBpcyB0aGUgTVNJIEVuYWJsZSBiaXQgb2YgdGhlIE1lc3NhZ2UgQ29udHJvbA0KPiA+IFJlZ2lz dGVyIGZvciBNU0kgKE9mZnNldCAwMmgpIGNvbnRhaW5lZCBpbiB0aGUgTVNJLWNhcGFiaWxpdHkg b2YgUm9vdA0KPiA+IENvbXBsZXguDQo+ID4NCj4gPiBJbiBhZGRpdGlvbiwgb24gaS5NWDYsIHRo ZSBNU0kgRW5hYmxlIGJpdCBjb250cm9scyBkZWxpdmVyeSBvZiBNU0kNCj4gPiBpbnRlcnJ1cHRz IGZyb20gY29tcG9uZW50cyBiZWxvdyB0aGUgUm9vdCBQb3J0Lg0KPiA+DQo+ID4gU28sIHNldCBN U0kgRW5hYmxlIGluIGlteDZxLXBjaWUgdG8gbGV0IHRoZSBNU0kgZnJvbSBkb3duc3RyZWFtDQo+ ID4gY29tcG9uZW50cyB3b3Jrcy4NCj4gDQo+IE15IGNvbmZ1c2lvbiBpcyBhYm91dCB0aGlzICJN U0kgQ2FwYWJpbGl0eSIgZm91bmQgYnkNCj4gImR3X3BjaWVfZmluZF9jYXBhYmlsaXR5KHBjaSwg UENJX0NBUF9JRF9NU0kpIiBpbiB5b3VyIHBhdGNoLg0KPiANCj4gVGhlIGkuTVg2IG1hbnVhbCBt aWdodCByZWZlciB0byB0aGF0IGFzIGFuICJNU0kgQ2FwYWJpbGl0eSIgYnV0IGFzIGZhciBhcyBJ DQo+IGtub3csIHRoZSBQQ0llIGJhc2Ugc3BlYyBkb2Vzbid0IGRvY3VtZW50IGEgUm9vdCBDb21w bGV4IE1TSSBDYXBhYmlsaXR5Lg0KPiANCj4gSSBkb24ndCB0aGluayBpdCdzIHRoZSBzYW1lIGFz IHRoZSBvbmUgZG9jdW1lbnRlZCBpbiBQQ0llIHI2LjAsIHNlYyA3LjcuMi4gIEkNCj4gdGhpbmsg aXQncyBkaWZmZXJlbnQgYmVjYXVzZToNCj4gDQo+ICAgKDEpIEkgKnRoaW5rKiAicGNpIiBoZXJl IHJlZmVycyB0byB0aGUgUkMsIG5vdCB0byBhIFJvb3QgUG9ydC4NCj4gDQo+ICAgKDIpIFRoZSBz ZW1hbnRpY3MgYXJlIGRpZmZlcmVudC4gIFRoZSBNU0ktWCBFbmFibGUgYml0IGluIDcuNy4yIG9u bHkNCj4gICBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIEZ1bmN0aW9uIGl0c2VsZiBpcyBwZXJtaXR0 ZWQgdG8gdXNlIE1TSS1YLg0KPiAgIEl0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggZGV2aWNlcyAq YmVsb3cqIGEgUm9vdCBQb3J0IGNhbiB1c2UgTVNJLVguDQo+ICAgSXQgYWxzbyBoYXMgbm90aGlu ZyB0byBkbyB3aXRoIHdoZXRoZXIgYSBSb290IFBvcnQgY2FuIGZvcndhcmQgTVNJDQo+ICAgdHJh bnNhY3Rpb25zIGZyb20gdGhvc2UgZG93bnN0cmVhbSBkZXZpY2VzLg0KPiANCj4gVGhpcyBwYXJ0 IG9mIG15IGNvbmZ1c2lvbiBjb3VsZCBiZSBlYXNpbHkgcmVzb2x2ZWQgdmlhIGEgY29tbWVudC4N Cj4gDQo+IEkgZG8gaGF2ZSBhIGZvbGxvdy1vbiBxdWVzdGlvbiwgdGhvdWdoOiB0aGUgcGF0Y2gg c2VlbXMgdG8gZW5hYmxlDQo+IE1TSS1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkgdXNpbmcgYSByZWdp c3RlciBpbiB0aGUgRGVzaWduV2FyZSBJUCwgbm90IHNvbWV0aGluZw0KPiBpbiB0aGUgaS5NWDYt c3BlY2lmaWMgSVAuICBJZiB0aGF0J3MgdHJ1ZSwgd2h5IGRvbid0IG90aGVyIERlc2lnbldhcmUt YmFzZWQNCj4gZHJpdmVycyBuZWVkIHNvbWV0aGluZyBzaW1pbGFyPw0KSGkgQmpvcm46DQpUaGFu a3MgYSBsb3QgZm9yIHlvdSByZXBseS4NClRoaXMgYmVoYXZpb3IgaXMgc3BlY2lmaWMgZm9yIGku TVggUENJZS4NCmkuTVggUENJZSBkZXNpZ25lciB1c2UgdGhpcyBNU0lfRU4gYml0IHRvIGNvbnRy b2wgdGhlIE1TSSB0cmlnZ2VyIHdoZW4NCiBpbnRlZ3JhdGUgRGVzaWduIFdhcmUgUENJZSBJUC4N ClNvLCB0aGUgb3RoZXIgRGVzaWduV2FyZS1iYXNlIFBDSWUgZHJpdmVyIGRvZXNuJ3QgbmVlZCB0 aGlzIGJlYWh2aW9yLg0KDQpCZXN0IFJlZ2FyZHMNClJpY2hhcmQgWmh1DQo+IA0KPiA+ID4gPiBJ dCBzZWVtcyB0aGF0IHNvbWUgZGV2aWNlIG1pZ2h0IHNodXRkb3duIG1zaSB3aGVuIGRvIHRoZSBz dXNwZW5kDQo+ID4gPiBvcGVyYXRpb25zLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gV291bGQgeW91 IG1pbmQgaW52ZXN0aWdhdGluZyBpdCBwbGVhc2UgPw0KPiA+ID4gPiBTdXJlLCBJIGRpZCBmdXJ0 aGVyIGludmVzdGlnYXRpb24gb24gaS5NWDZRUCBwbGF0Zm9ybS4NCj4gPiA+ID4gVGhlIE1TSV9F TiBiaXQgb2YgUkMgTVNJIGNhcGFiaWxpdHkgd291bGQgYmUgY2xlYXJlZCB0byB6ZXJvLCB3aGVu DQo+ID4gPiA+ICBQQ0lFX1JFU0VUKEJJVDI5IG9mIElPTVVYQ19HUFIxKSBpcyB0b2dnbGVkIChh c3NlcnRpb24gMWInMSwNCj4gPiA+ID4gdGhlbiBkZS1hc3NlcnRpb24gMWInMCkuDQo+ID4gPiA+ DQo+ID4gPiA+IFZlcmlmaWNhdGlvbiBzdGVwczoNCj4gPiA+ID4gTVNJX0VOIG9mIFJDIGlzIHNl dCB0byAxYicxIHdoZW4gc3lzdGVtIGlzIGJvb3QgdXAuDQo+ID4gPiA+ICAuL21lbXRvb2wgMWZm YzA1MCAxDQo+ID4gPiA+IDB4MDFGRkMwNTA6ICAwMTAxNzAwNQ0KPiA+ID4gPg0KPiA+ID4gPiBU b2dnbGUgUENJZSByZXNldCBvZiBpLk1YNlFQLg0KPiA+ID4gPiByb290QGlteDZxcGRsc29sb3g6 fiMgLi9tZW10b29sIDIwZTAwMDQ9Njg2OTEwMDUgV3JpdGluZyAzMi1iaXQNCj4gPiA+ID4gdmFs dWUNCj4gPiA+ID4gMHg2ODY5MTAwNSB0byBhZGRyZXNzIDB4MDIwRTAwMDQgcm9vdEBpbXg2cXBk bHNvbG94On4jIC4vbWVtdG9vbA0KPiA+ID4gPiAyMGUwMDA0PTQ4NjkxMDA1IFdyaXRpbmcgMzIt Yml0IHZhbHVlIDB4NDg2OTEwMDUgdG8gYWRkcmVzcw0KPiA+ID4gMHgwMjBFMDAwNA0KPiA+ID4g Pg0KPiA+ID4gPiBUaGUgTVNJX0VOIGJpdCBvZiBSQyBoYWQgYmVlbiBjbGVhcmVkIHRvIDFiJzAu DQo+ID4gPiA+IC4vbWVtdG9vbCAxZmZjMDUwIDENCj4gPiA+ID4gMHgwMUZGQzA1MDogIDAxODA3 MDA1DQo+ID4gPiA+DQo+ID4gPiA+IFRoaXMgaXMgd2h5IEkgdXNlZCB0byByZXBseSB0byBCam9y biB0aGUgTVNJX0VOIG9mIFJDIGlzIGNsZWFyZWQNCj4gPiA+ID4gd2hlbiBSRVNFVHMgYXJlIHRv Z2dsZWQgZHVyaW5nIHRoZSBpbXg2X3BjaWVfaG9zdF9pbml0KCkgaW4NCj4gPiA+ID4gIGlteDZf cGNpZV9yZXN1bWVfbm9pcnEoKSBjYWxsYmFjay4NCj4gPiA+ID4NCj4gPiA+ID4gQmVzdCBSZWdh cmRzDQo+ID4gPiA+IFJpY2hhcmQgWmh1DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBMb3JlbnpvDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgWmh1IDxob25neGlu Zy56aHVAbnhwLmNvbT4NCj4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4gQ2hhbmdlcyB2MS0t PnYyOg0KPiA+ID4gPiA+ID4gTmV3IGNyZWF0ZSBvbmUgc2F2ZS9yZXN0b3JlIGZ1bmN0aW9uLCB1 c2VkIHNhdmUgdGhlIHNldHRpbmcgaW4NCj4gPiA+ID4gPiA+IHN1c3BlbmQgYW5kIHJlc3RvcmUg dGhlIGNvbmZpZ3VyYXRpb24gaW4gcmVzdW1lLg0KPiA+ID4gPiA+ID4gdjENCj4gPiA+ID4gPiA+ IGh0dHBzOi8vZXVyMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRw cyUzQSUyDQo+ID4gPiA+ID4gPiBGJTJGDQo+ID4gPiA+ID4gPg0KPiA+ID4NCj4gcGF0YyUyRiZk YXRhPTA1JTdDMDElN0Nob25neGluZy56aHUlNDBueHAuY29tJTdDMjQ5NzFkOGRlOWI1NGINCj4g PiA+IDBiMTANCj4gPiA+ID4gPiA+DQo+ID4gPg0KPiBhZDA4ZGIyMTgyNzc0ZCU3QzY4NmVhMWQz YmMyYjRjNmZhOTJjZDk5YzVjMzAxNjM1JTdDMCU3QzAlN0M2DQo+ID4gPiAzODE0MA0KPiA+ID4g PiA+ID4NCj4gPiA+DQo+IDYxNjQ1NjA1MjA3OCU3Q1Vua25vd24lN0NUV0ZwYkdac2IzZDhleUpX SWpvaU1DNHdMakF3TURBaUxDSg0KPiA+ID4gUUlqb2lWDQo+ID4gPiA+ID4gPg0KPiA+ID4NCj4g Mmx1TXpJaUxDSkJUaUk2SWsxaGFXd2lMQ0pYVkNJNk1uMCUzRCU3QzMwMDAlN0MlN0MlN0Mmc2Rh dGE9dkUNCj4gPiA+IHRSeEwNCj4gPiA+ID4gPiA+IEJWaTVsWW1wd1ROWmZhZk1tczMyNjNMWlhv ZG5lTENoakVhT00lM0QmcmVzZXJ2ZWQ9MA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4N Cj4gaHdvcmsua2VybmVsLm9yZyUyRnByb2plY3QlMkZsaW51eC1wY2klMkZwYXRjaCUyRjE2Njcy ODk1OTUtMTI0NDAtMS0NCj4gPiA+ID4gPiBnDQo+ID4gPiA+ID4gaQ0KPiA+ID4gPiA+ID4NCj4g PiA+ID4gPg0KPiA+ID4NCj4gdC1zZW5kLWVtYWlsLWhvbmd4aW5nLnpodSU0MG54cC5jb20lMkYm ZGF0YT0wNSU3QzAxJTdDaG9uZ3hpbmcuemh1DQo+ID4gPiA+ID4gJTQwbg0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPg0KPiA+ID4NCj4geHAuY29tJTdDM2FlYjFkMTI4Zjg1NGRhZDFhNTYwOGRhZWE3 NzcwNmQlN0M2ODZlYTFkM2JjMmI0YzZmYTkNCj4gPiA+IDINCj4gPiA+ID4gPiBjZDk5YzVjDQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPg0KPiAzMDE2MzUlN0MwJTdDMCU3QzYzODA4MDA5 NTk1NDg4MTM3NCU3Q1Vua25vd24lN0NUV0ZwYkdac2IzDQo+ID4gPiA+ID4gZDhleUpXSWpvaU1D DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPg0KPiA0d0xqQXdNREFpTENKUUlqb2lWMmx1 TXpJaUxDSkJUaUk2SWsxaGFXd2lMQ0pYVkNJNk1uMCUzRCU3QzMwMDANCj4gPiA+ICUNCj4gPiA+ ID4gPiA3QyU3QyUNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+DQo+IDdDJnNkYXRhPVY4 eVZ2dnBUS0dvUjFVeVFQNUhEMklkbFNqSmR6bkJlRDEyYmRJNjdkRUklM0QmcmVzZXJ2ZWQNCj4g PiA+ID0NCj4gPiA+ID4gPiAwDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ ID4gPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYyB8IDIzDQo+ID4gPiA+ ID4gPiArKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiA+ID4gIDEgZmlsZSBjaGFuZ2Vk LCAyMyBpbnNlcnRpb25zKCspDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMNCj4gPiA+ID4gPiA+IGIvZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYw0KPiA+ID4gPiA+ID4gaW5kZXggMWRk ZTVjNTc5ZWRjLi5hYTMwOTY4OTBjM2IgMTAwNjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJz L3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJz L3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+ID4gPiA+ID4gPiBAQCAtNzYsNiArNzYs NyBAQCBzdHJ1Y3QgaW14Nl9wY2llIHsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IGNsawkJKnBjaWU7 DQo+ID4gPiA+ID4gPiAgCXN0cnVjdCBjbGsJCSpwY2llX2F1eDsNCj4gPiA+ID4gPiA+ICAJc3Ry dWN0IHJlZ21hcAkJKmlvbXV4Y19ncHI7DQo+ID4gPiA+ID4gPiArCXUxNgkJCW1zaV9jdHJsOw0K PiA+ID4gPiA+ID4gIAl1MzIJCQljb250cm9sbGVyX2lkOw0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3Qg cmVzZXRfY29udHJvbAkqcGNpZXBoeV9yZXNldDsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IHJlc2V0 X2NvbnRyb2wJKmFwcHNfcmVzZXQ7DQo+ID4gPiA+ID4gPiBAQCAtMTA0Miw2ICsxMDQzLDI2IEBA IHN0YXRpYyB2b2lkIGlteDZfcGNpZV9wbV90dXJub2ZmKHN0cnVjdA0KPiA+ID4gPiA+IGlteDZf cGNpZSAqaW14Nl9wY2llKQ0KPiA+ID4gPiA+ID4gIAl1c2xlZXBfcmFuZ2UoMTAwMCwgMTAwMDAp Ow0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQg aW14Nl9wY2llX21zaV9zYXZlX3Jlc3RvcmUoc3RydWN0IGlteDZfcGNpZQ0KPiA+ID4gPiA+ID4g KyppbXg2X3BjaWUsIGJvb2wgc2F2ZSkgew0KPiA+ID4gPiA+ID4gKwl1OCBvZmZzZXQ7DQo+ID4g PiA+ID4gPiArCXUxNiB2YWw7DQo+ID4gPiA+ID4gPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSBp bXg2X3BjaWUtPnBjaTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJaWYgKHBjaV9tc2lf ZW5hYmxlZCgpKSB7DQo+ID4gPiA+ID4gPiArCQlvZmZzZXQgPSBkd19wY2llX2ZpbmRfY2FwYWJp bGl0eShwY2ksIFBDSV9DQVBfSURfTVNJKTsNCj4gPiA+ID4gPiA+ICsJCWlmIChzYXZlKSB7DQo+ ID4gPiA+ID4gPiArCQkJdmFsID0gZHdfcGNpZV9yZWFkd19kYmkocGNpLCBvZmZzZXQgKw0KPiBQ Q0lfTVNJX0ZMQUdTKTsNCj4gPiA+ID4gPiA+ICsJCQlpbXg2X3BjaWUtPm1zaV9jdHJsID0gdmFs Ow0KPiA+ID4gPiA+ID4gKwkJfSBlbHNlIHsNCj4gPiA+ID4gPiA+ICsJCQlkd19wY2llX2RiaV9y b193cl9lbihwY2kpOw0KPiA+ID4gPiA+ID4gKwkJCXZhbCA9IGlteDZfcGNpZS0+bXNpX2N0cmw7 DQo+ID4gPiA+ID4gPiArCQkJZHdfcGNpZV93cml0ZXdfZGJpKHBjaSwgb2Zmc2V0ICsgUENJX01T SV9GTEFHUywNCj4gdmFsKTsNCj4gPiA+ID4gPiA+ICsJCQlkd19wY2llX2RiaV9yb193cl9kaXMo cGNpKTsNCj4gPiA+ID4gPiA+ICsJCX0NCj4gPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICBzdGF0aWMgaW50IGlteDZfcGNpZV9zdXNwZW5k X25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldikgIHsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IGlteDZf cGNpZSAqaW14Nl9wY2llID0gZGV2X2dldF9kcnZkYXRhKGRldik7IEBADQo+ID4gPiA+ID4gPiAt MTA1MCw2DQo+ID4gPiA+ID4gPiArMTA3MSw3IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX3N1c3Bl bmRfbm9pcnEoc3RydWN0IGRldmljZQ0KPiA+ID4gPiA+ID4gKypkZXYpDQo+ID4gPiA+ID4gPiAg CWlmICghKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+ZmxhZ3MgJg0KPiA+ID4gPiA+IElNWDZfUENJRV9G TEFHX1NVUFBPUlRTX1NVU1BFTkQpKQ0KPiA+ID4gPiA+ID4gIAkJcmV0dXJuIDA7DQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gKwlpbXg2X3BjaWVfbXNpX3NhdmVfcmVzdG9yZShpbXg2X3BjaWUs IHRydWUpOw0KPiA+ID4gPiA+ID4gIAlpbXg2X3BjaWVfcG1fdHVybm9mZihpbXg2X3BjaWUpOw0K PiA+ID4gPiA+ID4gIAlpbXg2X3BjaWVfc3RvcF9saW5rKGlteDZfcGNpZS0+cGNpKTsNCj4gPiA+ ID4gPiA+ICAJaW14Nl9wY2llX2hvc3RfZXhpdChwcCk7DQo+ID4gPiA+ID4gPiBAQCAtMTA2OSw2 ICsxMDkxLDcgQEAgc3RhdGljIGludCBpbXg2X3BjaWVfcmVzdW1lX25vaXJxKHN0cnVjdA0KPiA+ ID4gPiA+ID4gZGV2aWNlDQo+ID4gPiA+ID4gKmRldikNCj4gPiA+ID4gPiA+ICAJcmV0ID0gaW14 Nl9wY2llX2hvc3RfaW5pdChwcCk7DQo+ID4gPiA+ID4gPiAgCWlmIChyZXQpDQo+ID4gPiA+ID4g PiAgCQlyZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ID4gKwlpbXg2X3BjaWVfbXNpX3NhdmVfcmVzdG9y ZShpbXg2X3BjaWUsIGZhbHNlKTsNCj4gPiA+ID4gPiA+ICAJZHdfcGNpZV9zZXR1cF9yYyhwcCk7 DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gIAlpZiAoaW14Nl9wY2llLT5saW5rX2lzX3VwKQ0K PiA+ID4gPiA+ID4gLS0NCj4gPiA+ID4gPiA+IDIuMjUuMQ0K