Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1056448ybl; Fri, 16 Aug 2019 08:12:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqy2Q2uEEPe4qnL90gOGiNbZ1fI8wUQjgtubG39ro5cvqJS+/sGe5cQrlC6jXwtLO2cOntnE X-Received: by 2002:a17:90a:240e:: with SMTP id h14mr8096050pje.9.1565968372199; Fri, 16 Aug 2019 08:12:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1565968372; cv=pass; d=google.com; s=arc-20160816; b=oivcKiDQL0Lkm1f2UyKfCrzJJ4TZGfTyHUBw8EPJ4E5/WBhzjYk1nJfs+qWg2skJxZ 8DYcCeg3vk57IigMWk3B/xTTqUo7Hty8GyfG0wZTixX/iBsgH3tjwM0AZm98n9iQOHZC XIgLb3Kz57mJehiKHk9kimWx7cg/vCVX7ov/+RZZTuozYtGjNu1IdkREo7WUojZ/Bg0J n4Shx7DYySIsn5cqdZDF/S47Ts4R+xhCjWaK4+CTC3QNznVAQ6rRysVqIKBCIvZuC+a3 T6RfkCIccuUA+E6SC8eRMOoQAiXHd3bdM9ObgAHEtWHbX8Vqn8vTh9kCD7ka89lh2hHE WBgg== 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=MVUNgmc7GigfXZrrXCmk/0ZaIO9ymQ8DoAEMZoaNOyo=; b=D/O6iyj3g3lth1Oaofke7gbvF7gYw30a+qgIdTOZkAex9G1MrDyY7q92F8lyamfpkz CZ7penpnrv/i5bkNdIy8FURE5/GKxTq8mSabZrGyUZYkUijr95TP/yFUHKq295kSZOq5 UK1Blat+3b6/dB09+YDg9N2uiNKm73kGHj4KX7R/x+dC10dkn64I5Xlz/ovDtK0qhhDK jOSh1LDaHTYjZrtsFZbjc/5SXx1LsqXpFSYLcA1FTHKSGGWd+H34JlCm9JtRI9iiXDiQ y9S0aaEBcNtmoLm6v6v0cYx9gn8tcISOznAh1L3q1mazPDPfF3l79ZJA/BGP9ppCjLlm b6lw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b="CdF/MCwy"; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.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=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a12si4040332pgn.559.2019.08.16.08.12.35; Fri, 16 Aug 2019 08:12:52 -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=@nxp.com header.s=selector2 header.b="CdF/MCwy"; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.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=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727430AbfHPPMB (ORCPT + 99 others); Fri, 16 Aug 2019 11:12:01 -0400 Received: from mail-eopbgr150088.outbound.protection.outlook.com ([40.107.15.88]:39318 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727217AbfHPPMB (ORCPT ); Fri, 16 Aug 2019 11:12:01 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I4CfD1L74v+BIPqf//EMJihZJUaHq0WgeMyaSqRtV/4GjT7VVQBA4UOxClih6Ewrqr1cDo3MQIyO4Sa1/IboAAa58pP//gqeZnKfXoi4lClDzXYMpk1Pi74bJ1D+7MZN8JI2lGIqkP798B5AM+64MFwL26Ax3dqiVlwWi4Tx0JUh6iHig7t1FyednXNsmHy173KCYP7Z6do9FvTCqO/L4ALcN8olQIQuLTatb5QKzTQgf814fu50KOUw7DiiLaLAI1FGhUIXh92k6HD3yqTeL4357NwnXodBUqLnCEzPLeAM8AcizibJIRTfM4pi6eaDbTcEGQkVPuPA4lSKRNDWdA== 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=MVUNgmc7GigfXZrrXCmk/0ZaIO9ymQ8DoAEMZoaNOyo=; b=PWubGLjMgo/KknukN9DPWwB99qT2hDbjG9bY2sG8VvMtMUjskTreR+2UcZKc6IHIyGYC209/54vtHJSGSx+0iyJU6n52rq+TCwofmdaOUDF0uhrCJjcUlSyUD9s1voVx809RWNto/Q8SEtyOhrbhHkCHaqpcC5RJdEE4VcrZHNddKvwhjj5saMT49pexmjjlu3dVKtXucTGf0bFXqDwOLa8j4v/VwB/7Eo6Y5Aavnrk4WzEFgp6qVSr1WeTxe887ijnY19VPjNxxSldsASTtry5QfvEwhLMdagZoUn/I5ttogLNwePo3Z6R4C5jVKTdBbFtBq4xEecI2V4gifDgvmQ== 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=MVUNgmc7GigfXZrrXCmk/0ZaIO9ymQ8DoAEMZoaNOyo=; b=CdF/MCwyjmWAgyGpz9hFBdbc+ME11XUmZ1ghPcTm3bjz16qpYp+Fd4fowDx7sOB9ToCGmaznlv4SJXn3koVYHJmYxyC0qVF5u19v4HPQpr3CACsV6+XI/pUzhSB4o9+AMjJR0+BGhg8zDX3hJwe/atJRvYfs5Nmv8oDS2zuNirc= Received: from AM5PR04MB3299.eurprd04.prod.outlook.com (10.173.255.158) by AM5PR04MB3057.eurprd04.prod.outlook.com (10.175.229.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2178.16; Fri, 16 Aug 2019 15:11:44 +0000 Received: from AM5PR04MB3299.eurprd04.prod.outlook.com ([fe80::5012:d47a:1f5d:9b84]) by AM5PR04MB3299.eurprd04.prod.outlook.com ([fe80::5012:d47a:1f5d:9b84%5]) with mapi id 15.20.2157.022; Fri, 16 Aug 2019 15:11:44 +0000 From: Xiaowei Bao To: Andrew Murray CC: "jingoohan1@gmail.com" , "gustavo.pimentel@synopsys.com" , "mark.rutland@arm.com" , "shawnguo@kernel.org" , Leo Li , "kishon@ti.com" , "lorenzo.pieralisi@arm.com" , "arnd@arndb.de" , "gregkh@linuxfoundation.org" , "M.h. Lian" , Roy Zang , "linux-pci@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linuxppc-dev@lists.ozlabs.org" , "Z.q. Hou" Subject: RE: [PATCH 01/10] PCI: designware-ep: Add multiple PFs support for DWC Thread-Topic: [PATCH 01/10] PCI: designware-ep: Add multiple PFs support for DWC Thread-Index: AQHVU0YbCJCqX6MUQ02ifjioyc9Igqb8E2oAgAEAdTCAAHQTAIAABJSAgAArFACAACjyIA== Date: Fri, 16 Aug 2019 15:11:44 +0000 Message-ID: References: <20190815083716.4715-1-xiaowei.bao@nxp.com> <20190815113129.GF43882@e119886-lin.cambridge.arm.com> <20190816094449.GA14111@e119886-lin.cambridge.arm.com> <20190816123524.GE14111@e119886-lin.cambridge.arm.com> In-Reply-To: <20190816123524.GE14111@e119886-lin.cambridge.arm.com> 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=xiaowei.bao@nxp.com; x-originating-ip: [119.31.174.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: efecaeab-1b57-472c-b768-08d7225c0cf1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:AM5PR04MB3057; x-ms-traffictypediagnostic: AM5PR04MB3057: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 0131D22242 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(396003)(376002)(366004)(346002)(199004)(189003)(13464003)(51914003)(64756008)(476003)(66556008)(76116006)(8936002)(14444005)(66946007)(66476007)(66446008)(256004)(9686003)(3846002)(6116002)(53946003)(71200400001)(30864003)(71190400001)(316002)(33656002)(53936002)(6246003)(6916009)(186003)(14454004)(54906003)(102836004)(26005)(2906002)(478600001)(7736002)(966005)(4326008)(11346002)(99286004)(446003)(305945005)(7696005)(486006)(76176011)(25786009)(86362001)(74316002)(44832011)(52536014)(66066001)(6436002)(8676002)(81166006)(81156014)(229853002)(5660300002)(7416002)(6506007)(6306002)(55016002)(53546011)(579004)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM5PR04MB3057;H:AM5PR04MB3299.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 1chaHIXgTBzZCYr/NzY25YKM9N3SDJg7LyuRlHADkPEwFVuUo8Kzwiq1ZVYSqUS4MWKPlI5BhrVQHkbuErOIkjS4qs+mixy9m5wl28aMs/9IjlWOLP4WtNlCpDndizz+WRMIJS1LdPsz35LH/szIiuy6OVFcqKAYgMbS4Zuq/nqda8H7LHz6w9fYjqdalBw5Ez4vQE7vaG7+IwnlrMUyLoZR4yA5rasHIv3rrI3sz6Mz3NgpThiawHZYKzpLsWfUbx0t3dTa7tDTE6e9fnVVNQTQUQGHgLMs2VZpbn1OrSMq/x9oKtxcKtZbjnUxrIXrZ7u/Y7O4EqEToar32X582rqL3e0pyZtp4JlmrUtlIl+FDtOgGeexaDHK0gt+lllNu7SxVB5X1+XJbVn2gVGbTCIHO+J7wDGps/+i4U8qlLY= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: efecaeab-1b57-472c-b768-08d7225c0cf1 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Aug 2019 15:11:44.4058 (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: KFyp4SeOlYgk+VrycNMq6YDQWphAa0st2BcyC3l0LYbvasEl4djpKtIi0TYXWoSOSMt1Rue+/+KQE8Dq9u/MSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR04MB3057 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmV3IE11cnJheSA8 YW5kcmV3Lm11cnJheUBhcm0uY29tPg0KPiBTZW50OiAyMDE55bm0OOaciDE25pelIDIwOjM1DQo+ IFRvOiBYaWFvd2VpIEJhbyA8eGlhb3dlaS5iYW9AbnhwLmNvbT4NCj4gQ2M6IGppbmdvb2hhbjFA Z21haWwuY29tOyBndXN0YXZvLnBpbWVudGVsQHN5bm9wc3lzLmNvbTsNCj4gbWFyay5ydXRsYW5k QGFybS5jb207IHNoYXduZ3VvQGtlcm5lbC5vcmc7IExlbyBMaQ0KPiA8bGVveWFuZy5saUBueHAu Y29tPjsga2lzaG9uQHRpLmNvbTsgbG9yZW56by5waWVyYWxpc2lAYXJtLmNvbTsNCj4gYXJuZEBh cm5kYi5kZTsgZ3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7IE0uaC4gTGlhbg0KPiA8bWluZ2h1 YW4ubGlhbkBueHAuY29tPjsgUm95IFphbmcgPHJveS56YW5nQG54cC5jb20+Ow0KPiBsaW51eC1w Y2lAdmdlci5rZXJuZWwub3JnOyBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZzsNCj4gbGludXgt a2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnOw0KPiBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZzsgWi5xLiBIb3UgPHpoaXFpYW5n LmhvdUBueHAuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDAxLzEwXSBQQ0k6IGRlc2lnbndh cmUtZXA6IEFkZCBtdWx0aXBsZSBQRnMgc3VwcG9ydCBmb3INCj4gRFdDDQo+IA0KPiBPbiBGcmks IEF1ZyAxNiwgMjAxOSBhdCAxMTowMDowMUFNICswMDAwLCBYaWFvd2VpIEJhbyB3cm90ZToNCj4g Pg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogQW5k cmV3IE11cnJheSA8YW5kcmV3Lm11cnJheUBhcm0uY29tPg0KPiA+ID4gU2VudDogMjAxOeW5tDjm nIgxNuaXpSAxNzo0NQ0KPiA+ID4gVG86IFhpYW93ZWkgQmFvIDx4aWFvd2VpLmJhb0BueHAuY29t Pg0KPiA+ID4gQ2M6IGppbmdvb2hhbjFAZ21haWwuY29tOyBndXN0YXZvLnBpbWVudGVsQHN5bm9w c3lzLmNvbTsNCj4gPiA+IG1hcmsucnV0bGFuZEBhcm0uY29tOyBzaGF3bmd1b0BrZXJuZWwub3Jn OyBMZW8gTGkNCj4gPiA+IDxsZW95YW5nLmxpQG54cC5jb20+OyBraXNob25AdGkuY29tOyBsb3Jl bnpvLnBpZXJhbGlzaUBhcm0uY29tOw0KPiA+ID4gYXJuZEBhcm5kYi5kZTsgZ3JlZ2toQGxpbnV4 Zm91bmRhdGlvbi5vcmc7IE0uaC4gTGlhbg0KPiA+ID4gPG1pbmdodWFuLmxpYW5AbnhwLmNvbT47 IFJveSBaYW5nIDxyb3kuemFuZ0BueHAuY29tPjsNCj4gPiA+IGxpbnV4LXBjaUB2Z2VyLmtlcm5l bC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOw0KPiA+ID4gbGludXgta2VybmVsQHZn ZXIua2VybmVsLm9yZzsgbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOw0KPiA+ ID4gbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IFoucS4gSG91IDx6aGlxaWFuZy5ob3VA bnhwLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMDEvMTBdIFBDSTogZGVzaWdud2Fy ZS1lcDogQWRkIG11bHRpcGxlIFBGcw0KPiA+ID4gc3VwcG9ydCBmb3IgRFdDDQo+ID4gPg0KPiA+ ID4gT24gRnJpLCBBdWcgMTYsIDIwMTkgYXQgMDI6NTU6NDFBTSArMDAwMCwgWGlhb3dlaSBCYW8g d3JvdGU6DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPiA+ID4gPiBGcm9tOiBBbmRyZXcgTXVycmF5IDxhbmRyZXcubXVycmF5QGFybS5j b20+DQo+ID4gPiA+ID4gU2VudDogMjAxOeW5tDjmnIgxNeaXpSAxOTozMg0KPiA+ID4gPiA+IFRv OiBYaWFvd2VpIEJhbyA8eGlhb3dlaS5iYW9AbnhwLmNvbT4NCj4gPiA+ID4gPiBDYzogamluZ29v aGFuMUBnbWFpbC5jb207IGd1c3Rhdm8ucGltZW50ZWxAc3lub3BzeXMuY29tOw0KPiA+ID4gPiA+ IGJoZWxnYWFzQGdvb2dsZS5jb207IHJvYmgrZHRAa2VybmVsLm9yZzsgbWFyay5ydXRsYW5kQGFy bS5jb207DQo+ID4gPiA+ID4gc2hhd25ndW9Aa2VybmVsLm9yZzsgTGVvIExpIDxsZW95YW5nLmxp QG54cC5jb20+OyBraXNob25AdGkuY29tOw0KPiA+ID4gPiA+IGxvcmVuem8ucGllcmFsaXNpQGFy bS5jb207IGFybmRAYXJuZGIuZGU7DQo+ID4gPiA+ID4gZ3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5v cmc7IE0uaC4gTGlhbiA8bWluZ2h1YW4ubGlhbkBueHAuY29tPjsNCj4gPiA+ID4gPiBNaW5na2Fp IEh1IDxtaW5na2FpLmh1QG54cC5jb20+OyBSb3kgWmFuZyA8cm95LnphbmdAbnhwLmNvbT47DQo+ ID4gPiA+ID4gbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsgZGV2aWNldHJlZUB2Z2VyLmtlcm5l bC5vcmc7DQo+ID4gPiA+ID4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsNCj4gPiA+ID4g PiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7DQo+ID4gPiA+ID4gbGludXhw cGMtZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIDAx LzEwXSBQQ0k6IGRlc2lnbndhcmUtZXA6IEFkZCBtdWx0aXBsZSBQRnMNCj4gPiA+ID4gPiBzdXBw b3J0IGZvciBEV0MNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE9uIFRodSwgQXVnIDE1LCAyMDE5IGF0 IDA0OjM3OjA3UE0gKzA4MDAsIFhpYW93ZWkgQmFvIHdyb3RlOg0KPiA+ID4gPiA+ID4gQWRkIG11 bHRpcGxlIFBGcyBzdXBwb3J0IGZvciBEV0MsIGRpZmZlcmVudCBQRiBoYXZlIGRpZmZlcmVudA0K PiA+ID4gPiA+ID4gY29uZmlnIHNwYWNlLCB3ZSB1c2UgcGYtb2Zmc2V0IHByb3BlcnR5IHdoaWNo IGdldCBmcm9tIHRoZSBEVFMNCj4gPiA+ID4gPiA+IHRvIGFjY2VzcyB0aGUgZGlmZmVyZW50IHBG IGNvbmZpZyBzcGFjZS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoYW5rcyBmb3IgdGhlIHBhdGNo LiBJIGhhdmVuJ3Qgc2VlbiBhIGNvdmVyIGxldHRlciBmb3IgdGhpcw0KPiA+ID4gPiA+IHNlcmll cywgaXMgdGhlcmUgb25lIG1pc3Npbmc/DQo+ID4gPiA+IE1heWJlIEkgbWlzcywgSSB3aWxsIGFk ZCB5b3UgdG8gcmV2aWV3IG5leHQgdGltZSwgdGhhbmtzIGEgbG90IGZvcg0KPiA+ID4gPiB5b3Vy DQo+ID4gPiBjb21tZW50cy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogWGlhb3dlaSBCYW8gPHhpYW93ZWkuYmFvQG54cC5jb20+ DQo+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3 Yy9wY2llLWRlc2lnbndhcmUtZXAuYyB8ICA5Nw0KPiA+ID4gPiA+ICsrKysrKysrKysrKystLS0t LS0tLS0NCj4gPiA+ID4gPiA+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2ln bndhcmUuYyAgICB8IDEwNQ0KPiA+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKystLQ0KPiA+ ID4gPiA+ID4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5oICAg IHwgIDEwICsrLQ0KPiA+ID4gPiA+ID4gIGluY2x1ZGUvbGludXgvcGNpLWVwYy5oICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsNCj4gPiA+ID4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDE2 NCBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJl LWVwLmMNCj4gPiA+ID4gPiA+IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNp Z253YXJlLWVwLmMNCj4gPiA+ID4gPiA+IGluZGV4IDJiZjVhMzUuLjc1ZTI5NTUgMTAwNjQ0DQo+ ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndh cmUtZXAuYw0KPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNp ZS1kZXNpZ253YXJlLWVwLmMNCj4gPiA+ID4gPiA+IEBAIC0xOSwxMiArMTksMTQgQEAgdm9pZCBk d19wY2llX2VwX2xpbmt1cChzdHJ1Y3QgZHdfcGNpZV9lcA0KPiA+ID4gKmVwKQ0KPiA+ID4gPiA+ ID4gIAlwY2lfZXBjX2xpbmt1cChlcGMpOw0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiAtc3RhdGljIHZvaWQgX19kd19wY2llX2VwX3Jlc2V0X2JhcihzdHJ1Y3QgZHdf cGNpZSAqcGNpLCBlbnVtDQo+ID4gPiA+ID4gPiBwY2lfYmFybm8NCj4gPiA+ID4gPiBiYXIsDQo+ ID4gPiA+ID4gPiAtCQkJCSAgIGludCBmbGFncykNCj4gPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBf X2R3X3BjaWVfZXBfcmVzZXRfYmFyKHN0cnVjdCBkd19wY2llICpwY2ksIHU4DQo+IGZ1bmNfbm8s DQo+ID4gPiA+ID4gPiArCQkJCSAgIGVudW0gcGNpX2Jhcm5vIGJhciwgaW50IGZsYWdzKQ0KPiA+ ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiA+ICAJdTMyIHJlZzsNCj4gPiA+ID4gPiA+ICsJc3RydWN0 IHBjaV9lcGMgKmVwYyA9IHBjaS0+ZXAuZXBjOw0KPiA+ID4gPiA+ID4gKwl1MzIgcGZfYmFzZSA9 IGZ1bmNfbm8gKiBlcGMtPnBmX29mZnNldDsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtCXJl ZyA9IFBDSV9CQVNFX0FERFJFU1NfMCArICg0ICogYmFyKTsNCj4gPiA+ID4gPiA+ICsJcmVnID0g cGZfYmFzZSArIFBDSV9CQVNFX0FERFJFU1NfMCArICg0ICogYmFyKTsNCj4gPiA+ID4gPg0KPiA+ ID4gPiA+IEkgdGhpbmsgSSdkIHJhdGhlciBzZWUgdGhpcyBhcml0aG1ldGljIChhbmQgdGhlIG9u ZSBmb3INCj4gPiA+ID4gPiBkZXRlcm1pbmluZw0KPiA+ID4gPiA+IHBmX2Jhc2UpIGluc2lkZSBh IG1hY3JvIG9yIGlubGluZSBoZWFkZXIgZnVuY3Rpb24uIFRoaXMgd291bGQNCj4gPiA+ID4gPiBt YWtlIHRoaXMgY29kZSBtb3JlIHJlYWRhYmxlIGFuZCByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYW4g ZXJyb3INCj4gPiA+ID4gPiBieSBhdm9pZGluZw0KPiA+ID4gZHVwbGljYXRpb24gb2YgY29kZS4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IEZvciBleGFtcGxlIGxvb2sgYXQgY2Ruc19wY2llX2VwX2Zu X3dyaXRlYiBhbmQNCj4gPiA+ID4gPiBST0NLQ0hJUF9QQ0lFX0VQX0ZVTkNfQkFTRSBmb3IgZXhh bXBsZXMgb2Ygb3RoZXIgRVAgZHJpdmVycyB0aGF0DQo+ID4gPiA+ID4gZG8gdGhpcy4NCj4gPiA+ ID4gQWdyZWUsIHRoaXMgbG9va3MgZmluZSwgdGhhbmtzIGEgbG90IGZvciB5b3VyIGNvbW1lbnRz LCBJIHdpbGwgdXNlDQo+ID4gPiA+IHRoaXMgd2F5IHRvIGFjY2VzcyB0aGUgcmVnaXN0ZXJzIGlu IG5leHQgdmVyc2lvbiBwYXRjaC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAg CWR3X3BjaWVfZGJpX3JvX3dyX2VuKHBjaSk7DQo+ID4gPiA+ID4gPiAgCWR3X3BjaWVfd3JpdGVs X2RiaTIocGNpLCByZWcsIDB4MCk7DQo+ID4gPiA+ID4gPiAgCWR3X3BjaWVfd3JpdGVsX2RiaShw Y2ksIHJlZywgMHgwKTsgQEAgLTM3LDcgKzM5LDEyIEBAIHN0YXRpYw0KPiA+ID4gPiA+ID4gdm9p ZCBfX2R3X3BjaWVfZXBfcmVzZXRfYmFyKHN0cnVjdCBkd19wY2llICpwY2ksIGVudW0NCj4gPiA+ ID4gPiA+IHBjaV9iYXJubyBiYXIsDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gIHZvaWQgZHdf cGNpZV9lcF9yZXNldF9iYXIoc3RydWN0IGR3X3BjaWUgKnBjaSwgZW51bSBwY2lfYmFybm8NCj4g PiA+ID4gPiA+IGJhcikNCj4gPiA+IHsNCj4gPiA+ID4gPiA+IC0JX19kd19wY2llX2VwX3Jlc2V0 X2JhcihwY2ksIGJhciwgMCk7DQo+ID4gPiA+ID4gPiArCXU4IGZ1bmNfbm8sIGZ1bmNzOw0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwlmdW5jcyA9IHBjaS0+ZXAuZXBjLT5tYXhfZnVuY3Rp b25zOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwlmb3IgKGZ1bmNfbm8gPSAwOyBmdW5j X25vIDwgZnVuY3M7IGZ1bmNfbm8rKykNCj4gPiA+ID4gPiA+ICsJCV9fZHdfcGNpZV9lcF9yZXNl dF9iYXIocGNpLCBmdW5jX25vLCBiYXIsIDApOw0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiAgc3RhdGljIHU4IF9fZHdfcGNpZV9lcF9maW5kX25leHRfY2FwKHN0cnVj dCBkd19wY2llICpwY2ksIHU4DQo+ID4gPiA+ID4gPiBjYXBfcHRyLCBAQCAtNzgsMjggKzg1LDI5 IEBAIHN0YXRpYyBpbnQNCj4gPiA+ID4gPiA+IGR3X3BjaWVfZXBfd3JpdGVfaGVhZGVyKHN0cnVj dCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sICB7DQo+ID4gPiA+ID4gPiAgCXN0cnVjdCBkd19w Y2llX2VwICplcCA9IGVwY19nZXRfZHJ2ZGF0YShlcGMpOw0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3Qg ZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX2VwKGVwKTsNCj4gPiA+ID4gPiA+ICsJdTMy IHBmX2Jhc2UgPSBmdW5jX25vICogZXBjLT5wZl9vZmZzZXQ7DQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gIAlkd19wY2llX2RiaV9yb193cl9lbihwY2kpOw0KPiA+ID4gPiA+ID4gLQlkd19wY2ll X3dyaXRld19kYmkocGNpLCBQQ0lfVkVORE9SX0lELCBoZHItPnZlbmRvcmlkKTsNCj4gPiA+ID4g PiA+IC0JZHdfcGNpZV93cml0ZXdfZGJpKHBjaSwgUENJX0RFVklDRV9JRCwgaGRyLT5kZXZpY2Vp ZCk7DQo+ID4gPiA+ID4gPiAtCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIFBDSV9SRVZJU0lPTl9J RCwgaGRyLT5yZXZpZCk7DQo+ID4gPiA+ID4gPiAtCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIFBD SV9DTEFTU19QUk9HLCBoZHItPnByb2dpZl9jb2RlKTsNCj4gPiA+ID4gPiA+IC0JZHdfcGNpZV93 cml0ZXdfZGJpKHBjaSwgUENJX0NMQVNTX0RFVklDRSwNCj4gPiA+ID4gPiA+ICsJZHdfcGNpZV93 cml0ZXdfZGJpKHBjaSwgcGZfYmFzZSArIFBDSV9WRU5ET1JfSUQsDQo+ID4gPiBoZHItPnZlbmRv cmlkKTsNCj4gPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZXdfZGJpKHBjaSwgcGZfYmFzZSArIFBD SV9ERVZJQ0VfSUQsDQo+IGhkci0+ZGV2aWNlaWQpOw0KPiA+ID4gPiA+ID4gKwlkd19wY2llX3dy aXRlYl9kYmkocGNpLCBwZl9iYXNlICsgUENJX1JFVklTSU9OX0lELA0KPiBoZHItPnJldmlkKTsN Cj4gPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWJfZGJpKHBjaSwgcGZfYmFzZSArIFBDSV9DTEFT U19QUk9HLA0KPiA+ID4gaGRyLT5wcm9naWZfY29kZSk7DQo+ID4gPiA+ID4gPiArCWR3X3BjaWVf d3JpdGV3X2RiaShwY2ksIHBmX2Jhc2UgKyBQQ0lfQ0xBU1NfREVWSUNFLA0KPiA+ID4gPiA+ID4g IAkJCSAgIGhkci0+c3ViY2xhc3NfY29kZSB8IGhkci0+YmFzZWNsYXNzX2NvZGUgPDwgOCk7DQo+ ID4gPiA+ID4gPiAtCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIFBDSV9DQUNIRV9MSU5FX1NJWkUs DQo+ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIHBmX2Jhc2UgKyBQQ0lfQ0FD SEVfTElORV9TSVpFLA0KPiA+ID4gPiA+ID4gIAkJCSAgIGhkci0+Y2FjaGVfbGluZV9zaXplKTsN Cj4gPiA+ID4gPiA+IC0JZHdfcGNpZV93cml0ZXdfZGJpKHBjaSwgUENJX1NVQlNZU1RFTV9WRU5E T1JfSUQsDQo+ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGV3X2RiaShwY2ksIHBmX2Jhc2UgKw0K PiBQQ0lfU1VCU1lTVEVNX1ZFTkRPUl9JRCwNCj4gPiA+ID4gPiA+ICAJCQkgICBoZHItPnN1YnN5 c192ZW5kb3JfaWQpOw0KPiA+ID4gPiA+ID4gLQlkd19wY2llX3dyaXRld19kYmkocGNpLCBQQ0lf U1VCU1lTVEVNX0lELA0KPiBoZHItPnN1YnN5c19pZCk7DQo+ID4gPiA+ID4gPiAtCWR3X3BjaWVf d3JpdGViX2RiaShwY2ksIFBDSV9JTlRFUlJVUFRfUElOLA0KPiA+ID4gPiA+ID4gKwlkd19wY2ll X3dyaXRld19kYmkocGNpLCBwZl9iYXNlICsgUENJX1NVQlNZU1RFTV9JRCwNCj4gPiA+ID4gPiBo ZHItPnN1YnN5c19pZCk7DQo+ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGViX2RiaShwY2ksIHBm X2Jhc2UgKyBQQ0lfSU5URVJSVVBUX1BJTiwNCj4gPiA+ID4gPiA+ICAJCQkgICBoZHItPmludGVy cnVwdF9waW4pOw0KPiA+ID4gPiA+ID4gIAlkd19wY2llX2RiaV9yb193cl9kaXMocGNpKTsNCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgCXJldHVybiAwOw0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiAtc3RhdGljIGludCBkd19wY2llX2VwX2luYm91bmRfYXR1KHN0 cnVjdCBkd19wY2llX2VwICplcCwgZW51bQ0KPiA+ID4gPiA+IHBjaV9iYXJubyBiYXIsDQo+ID4g PiA+ID4gPiAtCQkJCSAgZG1hX2FkZHJfdCBjcHVfYWRkciwNCj4gPiA+ID4gPiA+ICtzdGF0aWMg aW50IGR3X3BjaWVfZXBfaW5ib3VuZF9hdHUoc3RydWN0IGR3X3BjaWVfZXAgKmVwLCB1OA0KPiA+ ID4gZnVuY19ubywNCj4gPiA+ID4gPiA+ICsJCQkJICBlbnVtIHBjaV9iYXJubyBiYXIsIGRtYV9h ZGRyX3QgY3B1X2FkZHIsDQo+ID4gPiA+ID4gPiAgCQkJCSAgZW51bSBkd19wY2llX2FzX3R5cGUg YXNfdHlwZSkgIHsNCj4gPiA+ID4gPiA+ICAJaW50IHJldDsNCj4gPiA+ID4gPiA+IEBAIC0xMTIs NyArMTIwLDcgQEAgc3RhdGljIGludCBkd19wY2llX2VwX2luYm91bmRfYXR1KHN0cnVjdA0KPiA+ ID4gPiA+IGR3X3BjaWVfZXAgKmVwLCBlbnVtIHBjaV9iYXJubyBiYXIsDQo+ID4gPiA+ID4gPiAg CQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gPiA+ICAJfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IC0JcmV0ID0gZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1KHBjaSwgZnJlZV93aW4sIGJhciwg Y3B1X2FkZHIsDQo+ID4gPiA+ID4gPiArCXJldCA9IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dShw Y2ksIGZ1bmNfbm8sIGZyZWVfd2luLCBiYXIsDQo+ID4gPiA+ID4gPiArY3B1X2FkZHIsDQo+ID4g PiA+ID4gPiAgCQkJCSAgICAgICBhc190eXBlKTsNCj4gPiA+ID4gPiA+ICAJaWYgKHJldCA8IDAp IHsNCj4gPiA+ID4gPiA+ICAJCWRldl9lcnIocGNpLT5kZXYsICJGYWlsZWQgdG8gcHJvZ3JhbSBJ QiB3aW5kb3dcbiIpOyBAQA0KPiA+ID4gLTEyNSw3DQo+ID4gPiA+ID4gPiArMTMzLDggQEAgc3Rh dGljIGludCBkd19wY2llX2VwX2luYm91bmRfYXR1KHN0cnVjdCBkd19wY2llX2VwDQo+ID4gPiA+ ID4gPiArKmVwLA0KPiA+ID4gPiA+IGVudW0gcGNpX2Jhcm5vIGJhciwNCj4gPiA+ID4gPiA+ICAJ cmV0dXJuIDA7DQo+ID4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC1zdGF0 aWMgaW50IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdCBkd19wY2llX2VwICplcCwNCj4g PiA+ID4gPiA+IHBoeXNfYWRkcl90IHBoeXNfYWRkciwNCj4gPiA+ID4gPiA+ICtzdGF0aWMgaW50 IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdCBkd19wY2llX2VwICplcCwgdTgNCj4gPiA+ IGZ1bmNfbm8sDQo+ID4gPiA+ID4gPiArCQkJCSAgIHBoeXNfYWRkcl90IHBoeXNfYWRkciwNCj4g PiA+ID4gPiA+ICAJCQkJICAgdTY0IHBjaV9hZGRyLCBzaXplX3Qgc2l6ZSkgIHsNCj4gPiA+ID4g PiA+ICAJdTMyIGZyZWVfd2luOw0KPiA+ID4gPiA+ID4gQEAgLTEzNyw4ICsxNDYsOCBAQCBzdGF0 aWMgaW50IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdA0KPiA+ID4gPiA+IGR3X3BjaWVf ZXAgKmVwLCBwaHlzX2FkZHJfdCBwaHlzX2FkZHIsDQo+ID4gPiA+ID4gPiAgCQlyZXR1cm4gLUVJ TlZBTDsNCj4gPiA+ID4gPiA+ICAJfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0JZHdfcGNp ZV9wcm9nX291dGJvdW5kX2F0dShwY2ksIGZyZWVfd2luLA0KPiBQQ0lFX0FUVV9UWVBFX01FTSwN Cj4gPiA+ID4gPiA+IC0JCQkJICBwaHlzX2FkZHIsIHBjaV9hZGRyLCBzaXplKTsNCj4gPiA+ID4g PiA+ICsJZHdfcGNpZV9wcm9nX2VwX291dGJvdW5kX2F0dShwY2ksIGZ1bmNfbm8sIGZyZWVfd2lu LA0KPiA+ID4gPiA+IFBDSUVfQVRVX1RZUEVfTUVNLA0KPiA+ID4gPiA+ID4gKwkJCQkgICAgIHBo eXNfYWRkciwgcGNpX2FkZHIsIHNpemUpOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAJc2V0 X2JpdChmcmVlX3dpbiwgZXAtPm9iX3dpbmRvd19tYXApOw0KPiA+ID4gPiA+ID4gIAllcC0+b3V0 Ym91bmRfYWRkcltmcmVlX3dpbl0gPSBwaHlzX2FkZHI7IEBAIC0xNTQsNyArMTYzLDcNCj4gPiA+ IEBADQo+ID4gPiA+ID4gc3RhdGljDQo+ID4gPiA+ID4gPiB2b2lkIGR3X3BjaWVfZXBfY2xlYXJf YmFyKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sDQo+ID4gPiA+ID4gPiAgCWVudW0g cGNpX2Jhcm5vIGJhciA9IGVwZl9iYXItPmJhcm5vOw0KPiA+ID4gPiA+ID4gIAl1MzIgYXR1X2lu ZGV4ID0gZXAtPmJhcl90b19hdHVbYmFyXTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtCV9f ZHdfcGNpZV9lcF9yZXNldF9iYXIocGNpLCBiYXIsIGVwZl9iYXItPmZsYWdzKTsNCj4gPiA+ID4g PiA+ICsJX19kd19wY2llX2VwX3Jlc2V0X2JhcihwY2ksIGZ1bmNfbm8sIGJhciwgZXBmX2Jhci0+ ZmxhZ3MpOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAJZHdfcGNpZV9kaXNhYmxlX2F0dShw Y2ksIGF0dV9pbmRleCwNCj4gPiA+IERXX1BDSUVfUkVHSU9OX0lOQk9VTkQpOw0KPiA+ID4gPiA+ ID4gIAljbGVhcl9iaXQoYXR1X2luZGV4LCBlcC0+aWJfd2luZG93X21hcCk7IEBAIC0xNzAsMTQN Cj4gKzE3OSwxNg0KPiA+ID4gQEANCj4gPiA+ID4gPiA+IHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9z ZXRfYmFyKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sDQo+ID4gPiA+ID4gPiAgCXNp emVfdCBzaXplID0gZXBmX2Jhci0+c2l6ZTsNCj4gPiA+ID4gPiA+ICAJaW50IGZsYWdzID0gZXBm X2Jhci0+ZmxhZ3M7DQo+ID4gPiA+ID4gPiAgCWVudW0gZHdfcGNpZV9hc190eXBlIGFzX3R5cGU7 DQo+ID4gPiA+ID4gPiAtCXUzMiByZWcgPSBQQ0lfQkFTRV9BRERSRVNTXzAgKyAoNCAqIGJhcik7 DQo+ID4gPiA+ID4gPiArCXUzMiBwZl9iYXNlID0gZnVuY19ubyAqIGVwYy0+cGZfb2Zmc2V0Ow0K PiA+ID4gPiA+ID4gKwl1MzIgcmVnID0gUENJX0JBU0VfQUREUkVTU18wICsgKDQgKiBiYXIpICsg cGZfYmFzZTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgCWlmICghKGZsYWdzICYgUENJX0JB U0VfQUREUkVTU19TUEFDRSkpDQo+ID4gPiA+ID4gPiAgCQlhc190eXBlID0gRFdfUENJRV9BU19N RU07DQo+ID4gPiA+ID4gPiAgCWVsc2UNCj4gPiA+ID4gPiA+ICAJCWFzX3R5cGUgPSBEV19QQ0lF X0FTX0lPOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0JcmV0ID0gZHdfcGNpZV9lcF9pbmJv dW5kX2F0dShlcCwgYmFyLCBlcGZfYmFyLT5waHlzX2FkZHIsDQo+ID4gPiBhc190eXBlKTsNCj4g PiA+ID4gPiA+ICsJcmV0ID0gZHdfcGNpZV9lcF9pbmJvdW5kX2F0dShlcCwgZnVuY19ubywgYmFy LA0KPiA+ID4gPiA+ID4gKwkJCQkgICAgIGVwZl9iYXItPnBoeXNfYWRkciwgYXNfdHlwZSk7DQo+ ID4gPiA+ID4gPiAgCWlmIChyZXQpDQo+ID4gPiA+ID4gPiAgCQlyZXR1cm4gcmV0Ow0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IEBAIC0yMzUsNyArMjQ2LDcgQEAgc3RhdGljIGludCBkd19wY2ll X2VwX21hcF9hZGRyKHN0cnVjdA0KPiA+ID4gPiA+ID4gcGNpX2VwYw0KPiA+ID4gPiA+ICplcGMs IHU4IGZ1bmNfbm8sDQo+ID4gPiA+ID4gPiAgCXN0cnVjdCBkd19wY2llX2VwICplcCA9IGVwY19n ZXRfZHJ2ZGF0YShlcGMpOw0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9f ZHdfcGNpZV9mcm9tX2VwKGVwKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtCXJldCA9IGR3 X3BjaWVfZXBfb3V0Ym91bmRfYXR1KGVwLCBhZGRyLCBwY2lfYWRkciwgc2l6ZSk7DQo+ID4gPiA+ ID4gPiArCXJldCA9IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KGVwLCBmdW5jX25vLCBhZGRyLCBw Y2lfYWRkciwNCj4gPiA+ID4gPiA+ICtzaXplKTsNCj4gPiA+ID4gPiA+ICAJaWYgKHJldCkgew0K PiA+ID4gPiA+ID4gIAkJZGV2X2VycihwY2ktPmRldiwgIkZhaWxlZCB0byBlbmFibGUgYWRkcmVz c1xuIik7DQo+ID4gPiA+ID4gPiAgCQlyZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ID4gQEAgLTI0OCwx MiArMjU5LDEzIEBAIHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9nZXRfbXNpKHN0cnVjdA0KPiA+ID4g PiA+ID4gcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vKSAgew0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3Qg ZHdfcGNpZV9lcCAqZXAgPSBlcGNfZ2V0X2RydmRhdGEoZXBjKTsNCj4gPiA+ID4gPiA+ICAJc3Ry dWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9lcChlcCk7DQo+ID4gPiA+ID4gPiAr CXUzMiBwZl9iYXNlID0gZnVuY19ubyAqIGVwYy0+cGZfb2Zmc2V0Ow0KPiA+ID4gPiA+ID4gIAl1 MzIgdmFsLCByZWc7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gIAlpZiAoIWVwLT5tc2lfY2Fw KQ0KPiA+ID4gPiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gLQlyZWcgPSBlcC0+bXNpX2NhcCArIFBDSV9NU0lfRkxBR1M7DQo+ID4gPiA+ID4gPiArCXJl ZyA9IGVwLT5tc2lfY2FwICsgcGZfYmFzZSArIFBDSV9NU0lfRkxBR1M7DQo+ID4gPiA+ID4gPiAg CXZhbCA9IGR3X3BjaWVfcmVhZHdfZGJpKHBjaSwgcmVnKTsNCj4gPiA+ID4gPiA+ICAJaWYgKCEo dmFsICYgUENJX01TSV9GTEFHU19FTkFCTEUpKQ0KPiA+ID4gPiA+ID4gIAkJcmV0dXJuIC1FSU5W QUw7DQo+ID4gPiA+ID4gPiBAQCAtMjY3LDEyICsyNzksMTMgQEAgc3RhdGljIGludCBkd19wY2ll X2VwX3NldF9tc2koc3RydWN0DQo+ID4gPiA+ID4gPiBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8s IHU4IGludGVycnVwdHMpICB7DQo+ID4gPiA+ID4gPiAgCXN0cnVjdCBkd19wY2llX2VwICplcCA9 IGVwY19nZXRfZHJ2ZGF0YShlcGMpOw0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgZHdfcGNpZSAqcGNp ID0gdG9fZHdfcGNpZV9mcm9tX2VwKGVwKTsNCj4gPiA+ID4gPiA+ICsJdTMyIHBmX2Jhc2UgPSBm dW5jX25vICogZXBjLT5wZl9vZmZzZXQ7DQo+ID4gPiA+ID4gPiAgCXUzMiB2YWwsIHJlZzsNCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgCWlmICghZXAtPm1zaV9jYXApDQo+ID4gPiA+ID4gPiAg CQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtCXJlZyA9IGVwLT5t c2lfY2FwICsgUENJX01TSV9GTEFHUzsNCj4gPiA+ID4gPiA+ICsJcmVnID0gZXAtPm1zaV9jYXAg KyBwZl9iYXNlICsgUENJX01TSV9GTEFHUzsNCj4gPiA+ID4gPiA+ICAJdmFsID0gZHdfcGNpZV9y ZWFkd19kYmkocGNpLCByZWcpOw0KPiA+ID4gPiA+ID4gIAl2YWwgJj0gflBDSV9NU0lfRkxBR1Nf UU1BU0s7DQo+ID4gPiA+ID4gPiAgCXZhbCB8PSAoaW50ZXJydXB0cyA8PCAxKSAmIFBDSV9NU0lf RkxBR1NfUU1BU0s7IEBADQo+IC0yODcsMTINCj4gPiA+ID4gPiA+ICszMDAsMTMgQEAgc3RhdGlj IGludCBkd19wY2llX2VwX2dldF9tc2l4KHN0cnVjdCBwY2lfZXBjICplcGMsDQo+ID4gPiA+ID4g PiArdTgNCj4gPiA+IGZ1bmNfbm8pICB7DQo+ID4gPiA+ID4gPiAgCXN0cnVjdCBkd19wY2llX2Vw ICplcCA9IGVwY19nZXRfZHJ2ZGF0YShlcGMpOw0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgZHdfcGNp ZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX2VwKGVwKTsNCj4gPiA+ID4gPiA+ICsJdTMyIHBmX2Jh c2UgPSBmdW5jX25vICogZXBjLT5wZl9vZmZzZXQ7DQo+ID4gPiA+ID4gPiAgCXUzMiB2YWwsIHJl ZzsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgCWlmICghZXAtPm1zaXhfY2FwKQ0KPiA+ID4g PiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLQlyZWcg PSBlcC0+bXNpeF9jYXAgKyBQQ0lfTVNJWF9GTEFHUzsNCj4gPiA+ID4gPiA+ICsJcmVnID0gZXAt Pm1zaXhfY2FwICsgcGZfYmFzZSArIFBDSV9NU0lYX0ZMQUdTOw0KPiA+ID4gPiA+ID4gIAl2YWwg PSBkd19wY2llX3JlYWR3X2RiaShwY2ksIHJlZyk7DQo+ID4gPiA+ID4gPiAgCWlmICghKHZhbCAm IFBDSV9NU0lYX0ZMQUdTX0VOQUJMRSkpDQo+ID4gPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiA+ID4gPiA+IEBAIC0zMDYsMTIgKzMyMCwxMyBAQCBzdGF0aWMgaW50IGR3X3BjaWVfZXBf c2V0X21zaXgoc3RydWN0DQo+ID4gPiA+ID4gPiBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHUx NiBpbnRlcnJ1cHRzKSAgew0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAgPSBl cGNfZ2V0X2RydmRhdGEoZXBjKTsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IGR3X3BjaWUgKnBjaSA9 IHRvX2R3X3BjaWVfZnJvbV9lcChlcCk7DQo+ID4gPiA+ID4gPiArCXUzMiBwZl9iYXNlID0gZnVu Y19ubyAqIGVwYy0+cGZfb2Zmc2V0Ow0KPiA+ID4gPiA+ID4gIAl1MzIgdmFsLCByZWc7DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gIAlpZiAoIWVwLT5tc2l4X2NhcCkNCj4gPiA+ID4gPiA+ICAJ CXJldHVybiAtRUlOVkFMOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0JcmVnID0gZXAtPm1z aXhfY2FwICsgUENJX01TSVhfRkxBR1M7DQo+ID4gPiA+ID4gPiArCXJlZyA9IGVwLT5tc2l4X2Nh cCArIHBmX2Jhc2UgKyBQQ0lfTVNJWF9GTEFHUzsNCj4gPiA+ID4gPiA+ICAJdmFsID0gZHdfcGNp ZV9yZWFkd19kYmkocGNpLCByZWcpOw0KPiA+ID4gPiA+ID4gIAl2YWwgJj0gflBDSV9NU0lYX0ZM QUdTX1FTSVpFOw0KPiA+ID4gPiA+ID4gIAl2YWwgfD0gaW50ZXJydXB0czsNCj4gPiA+ID4gPiA+ IEBAIC00MDAsNiArNDE1LDcgQEAgaW50IGR3X3BjaWVfZXBfcmFpc2VfbXNpX2lycShzdHJ1Y3QN Cj4gPiA+IGR3X3BjaWVfZXANCj4gPiA+ID4gPiAqZXAsIHU4IGZ1bmNfbm8sDQo+ID4gPiA+ID4g PiAgCXVuc2lnbmVkIGludCBhbGlnbmVkX29mZnNldDsNCj4gPiA+ID4gPiA+ICAJdTE2IG1zZ19j dHJsLCBtc2dfZGF0YTsNCj4gPiA+ID4gPiA+ICAJdTMyIG1zZ19hZGRyX2xvd2VyLCBtc2dfYWRk cl91cHBlciwgcmVnOw0KPiA+ID4gPiA+ID4gKwl1MzIgcGZfYmFzZSA9IGZ1bmNfbm8gKiBlcGMt PnBmX29mZnNldDsNCj4gPiA+ID4gPiA+ICAJdTY0IG1zZ19hZGRyOw0KPiA+ID4gPiA+ID4gIAli b29sIGhhc191cHBlcjsNCj4gPiA+ID4gPiA+ICAJaW50IHJldDsNCj4gPiA+ID4gPiA+IEBAIC00 MDgsMTkgKzQyNCwxOSBAQCBpbnQgZHdfcGNpZV9lcF9yYWlzZV9tc2lfaXJxKHN0cnVjdA0KPiA+ ID4gPiA+IGR3X3BjaWVfZXAgKmVwLCB1OCBmdW5jX25vLA0KPiA+ID4gPiA+ID4gIAkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gIAkvKiBSYWlzZSBNU0kgcGVyIHRo ZSBQQ0kgTG9jYWwgQnVzIFNwZWNpZmljYXRpb24gUmV2aXNpb24gMy4wLA0KPiA2LjguMS4NCj4g PiA+ICovDQo+ID4gPiA+ID4gPiAtCXJlZyA9IGVwLT5tc2lfY2FwICsgUENJX01TSV9GTEFHUzsN Cj4gPiA+ID4gPiA+ICsJcmVnID0gZXAtPm1zaV9jYXAgKyBwZl9iYXNlICsgUENJX01TSV9GTEFH UzsNCj4gPiA+ID4gPiA+ICAJbXNnX2N0cmwgPSBkd19wY2llX3JlYWR3X2RiaShwY2ksIHJlZyk7 DQo+ID4gPiA+ID4gPiAgCWhhc191cHBlciA9ICEhKG1zZ19jdHJsICYgUENJX01TSV9GTEFHU182 NEJJVCk7DQo+ID4gPiA+ID4gPiAtCXJlZyA9IGVwLT5tc2lfY2FwICsgUENJX01TSV9BRERSRVNT X0xPOw0KPiA+ID4gPiA+ID4gKwlyZWcgPSBlcC0+bXNpX2NhcCArIHBmX2Jhc2UgKyBQQ0lfTVNJ X0FERFJFU1NfTE87DQo+ID4gPiA+ID4gPiAgCW1zZ19hZGRyX2xvd2VyID0gZHdfcGNpZV9yZWFk bF9kYmkocGNpLCByZWcpOw0KPiA+ID4gPiA+ID4gIAlpZiAoaGFzX3VwcGVyKSB7DQo+ID4gPiA+ ID4gPiAtCQlyZWcgPSBlcC0+bXNpX2NhcCArIFBDSV9NU0lfQUREUkVTU19ISTsNCj4gPiA+ID4g PiA+ICsJCXJlZyA9IGVwLT5tc2lfY2FwICsgcGZfYmFzZSArIFBDSV9NU0lfQUREUkVTU19ISTsN Cj4gPiA+ID4gPiA+ICAJCW1zZ19hZGRyX3VwcGVyID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCBy ZWcpOw0KPiA+ID4gPiA+ID4gLQkJcmVnID0gZXAtPm1zaV9jYXAgKyBQQ0lfTVNJX0RBVEFfNjQ7 DQo+ID4gPiA+ID4gPiArCQlyZWcgPSBlcC0+bXNpX2NhcCArIHBmX2Jhc2UgKyBQQ0lfTVNJX0RB VEFfNjQ7DQo+ID4gPiA+ID4gPiAgCQltc2dfZGF0YSA9IGR3X3BjaWVfcmVhZHdfZGJpKHBjaSwg cmVnKTsNCj4gPiA+ID4gPiA+ICAJfSBlbHNlIHsNCj4gPiA+ID4gPiA+ICAJCW1zZ19hZGRyX3Vw cGVyID0gMDsNCj4gPiA+ID4gPiA+IC0JCXJlZyA9IGVwLT5tc2lfY2FwICsgUENJX01TSV9EQVRB XzMyOw0KPiA+ID4gPiA+ID4gKwkJcmVnID0gZXAtPm1zaV9jYXAgKyBwZl9iYXNlICsgUENJX01T SV9EQVRBXzMyOw0KPiA+ID4gPiA+ID4gIAkJbXNnX2RhdGEgPSBkd19wY2llX3JlYWR3X2RiaShw Y2ksIHJlZyk7DQo+ID4gPiA+ID4gPiAgCX0NCj4gPiA+ID4gPiA+ICAJYWxpZ25lZF9vZmZzZXQg PSBtc2dfYWRkcl9sb3dlciAmIChlcGMtPm1lbS0+cGFnZV9zaXplIC0NCj4gMSk7DQo+ID4gPiBA QA0KPiA+ID4gPiA+ID4gLTQzOSw3ICs0NTUsNyBAQCBpbnQgZHdfcGNpZV9lcF9yYWlzZV9tc2lf aXJxKHN0cnVjdA0KPiA+ID4gPiA+ID4gZHdfcGNpZV9lcCAqZXAsDQo+ID4gPiA+ID4gPiB1OCBm dW5jX25vLCAgfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICBpbnQgZHdfcGNpZV9lcF9yYWlz ZV9tc2l4X2lycShzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAsIHU4DQo+IGZ1bmNfbm8sDQo+ID4gPiA+ ID4gPiAtCQkJICAgICB1MTYgaW50ZXJydXB0X251bSkNCj4gPiA+ID4gPiA+ICsJCQkgICAgICB1 MTYgaW50ZXJydXB0X251bSkNCj4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gPiAgCXN0cnVjdCBk d19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fZXAoZXApOw0KPiA+ID4gPiA+ID4gIAlzdHJ1 Y3QgcGNpX2VwYyAqZXBjID0gZXAtPmVwYzsgQEAgLTQ0NywxNiArNDYzLDE3IEBAIGludA0KPiA+ ID4gPiA+ID4gZHdfcGNpZV9lcF9yYWlzZV9tc2l4X2lycShzdHJ1Y3QNCj4gPiA+ID4gPiBkd19w Y2llX2VwICplcCwgdTggZnVuY19ubywNCj4gPiA+ID4gPiA+ICAJdTMyIGJhcl9hZGRyX3VwcGVy LCBiYXJfYWRkcl9sb3dlcjsNCj4gPiA+ID4gPiA+ICAJdTMyIG1zZ19hZGRyX3VwcGVyLCBtc2df YWRkcl9sb3dlcjsNCj4gPiA+ID4gPiA+ICAJdTMyIHJlZywgbXNnX2RhdGEsIHZlY19jdHJsOw0K PiA+ID4gPiA+ID4gKwl1MzIgcGZfYmFzZSA9IGZ1bmNfbm8gKiBlcGMtPnBmX29mZnNldDsNCj4g PiA+ID4gPiA+ICAJdTY0IHRibF9hZGRyLCBtc2dfYWRkciwgcmVnX3U2NDsNCj4gPiA+ID4gPiA+ ICAJdm9pZCBfX2lvbWVtICptc2l4X3RibDsNCj4gPiA+ID4gPiA+ICAJaW50IHJldDsNCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiAtCXJlZyA9IGVwLT5tc2l4X2NhcCArIFBDSV9NU0lYX1RBQkxF Ow0KPiA+ID4gPiA+ID4gKwlyZWcgPSBlcC0+bXNpeF9jYXAgKyBwZl9iYXNlICsgUENJX01TSVhf VEFCTEU7DQo+ID4gPiA+ID4gPiAgCXRibF9vZmZzZXQgPSBkd19wY2llX3JlYWRsX2RiaShwY2ks IHJlZyk7DQo+ID4gPiA+ID4gPiAgCWJpciA9ICh0Ymxfb2Zmc2V0ICYgUENJX01TSVhfVEFCTEVf QklSKTsNCj4gPiA+ID4gPiA+ICAJdGJsX29mZnNldCAmPSBQQ0lfTVNJWF9UQUJMRV9PRkZTRVQ7 DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLQlyZWcgPSBQQ0lfQkFTRV9BRERSRVNTXzAgKyAo NCAqIGJpcik7DQo+ID4gPiA+ID4gPiArCXJlZyA9IFBDSV9CQVNFX0FERFJFU1NfMCArIHBmX2Jh c2UgKyAoNCAqIGJpcik7DQo+ID4gPiA+ID4gPiAgCWJhcl9hZGRyX3VwcGVyID0gMDsNCj4gPiA+ ID4gPiA+ICAJYmFyX2FkZHJfbG93ZXIgPSBkd19wY2llX3JlYWRsX2RiaShwY2ksIHJlZyk7DQo+ ID4gPiA+ID4gPiAgCXJlZ191NjQgPSAoYmFyX2FkZHJfbG93ZXIgJg0KPiA+ID4gUENJX0JBU0Vf QUREUkVTU19NRU1fVFlQRV9NQVNLKTsNCj4gPiA+ID4gPiBAQA0KPiA+ID4gPiA+ID4gLTU5Miwx MyArNjA5LDE3IEBAIGludCBkd19wY2llX2VwX2luaXQoc3RydWN0IGR3X3BjaWVfZXAgKmVwKQ0K PiA+ID4gPiA+ID4gIAllcC0+ZXBjID0gZXBjOw0KPiA+ID4gPiA+ID4gIAllcGNfc2V0X2RydmRh dGEoZXBjLCBlcCk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLQlpZiAoZXAtPm9wcy0+ZXBf aW5pdCkNCj4gPiA+ID4gPiA+IC0JCWVwLT5vcHMtPmVwX2luaXQoZXApOw0KPiA+ID4gPiA+ID4g LQ0KPiA+ID4gPiA+ID4gIAlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3U4KG5wLCAibWF4LWZ1bmN0 aW9ucyIsDQo+ID4gPiAmZXBjLT5tYXhfZnVuY3Rpb25zKTsNCj4gPiA+ID4gPiA+ICAJaWYgKHJl dCA8IDApDQo+ID4gPiA+ID4gPiAgCQllcGMtPm1heF9mdW5jdGlvbnMgPSAxOw0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJwZi1vZmZz ZXQiLCAmZXBjLT5wZl9vZmZzZXQpOw0KPiA+ID4gPiA+ID4gKwlpZiAocmV0IDwgMCkNCj4gPiA+ ID4gPiA+ICsJCWVwYy0+cGZfb2Zmc2V0ID0gMDsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEJhZCB0 aGluZ3Mgd2lsbCBsaWtlbHkgaGFwcGVuIGlmIG1heF9mdW5jdGlvbnMgPiAxIGFuZCBwZi1vZmZz ZXQgaXNuJ3QNCj4gc2V0Lg0KPiA+ID4gPiA+IEkgdGhpbmsgdGhlIGRyaXZlciBzaG91bGQgYmFp bCBpbiB0aGlzIHNpdHVhdGlvbi4gSXQgd291bGQgYmUNCj4gPiA+ID4gPiB2ZXJ5IGVhc3kgZm9y IHNvbWVvbmUgdG8gbWlzY29uZmlndXJlIHRoaXMuDQo+ID4gPiA+IFllcywgeW91IGFyZSByaWdo dCwgYnV0IGlmIHRoZSBtYXgtZnVuY3Rpb25zIGhhdmUgZGVmaW5lZCBpbiBEVFMsDQo+ID4gPiA+ IHJlcXVpcmUgdGhlIHBmLW9mZnNldCBtdXN0IGRlZmluZSBpbiBEVFMsIEkgYW0gbm90IHN1cmUg dGhlDQo+ID4gPiA+IGNvcnJlY3QgdmFsdWUgb2YgcGYtb2Zmc2V0Zm9yIG90aGVyIHBsYXRmb3Jt cywgc28gSSB0aGluayB0aGUNCj4gPiA+ID4gbWF4LWZ1bmN0aW9ucyBhbmQNCj4gPiA+IHBmLW9m ZnNldCBzaG91bGQgbm90IGhhdmUgdGhlIGRlcGVuZGVuY2UuDQo+ID4gPg0KPiA+ID4gWWVzIHlv dSdyZSBjb3JyZWN0LiBJIGhhZG4ndCByZWFsbHkgdGhvdWdodCBhYm91dCB0aGlzIGJleW9uZA0K PiA+ID4gbGF5ZXJzY2FwZS4gSXQncyBhbHNvIHBvc3NpYmxlIHRoYXQgb3RoZXIgaGFyZHdhcmUg Y291bGQgc3VwcG9ydA0KPiA+ID4gbXVsdGlwbGUgUEZzIHdpdGhvdXQgcmVseWluZyBvbiBhbiBv ZmZzZXQgYW5kIHBlcmhhcHMgZW1wbG95IHNvbWUNCj4gPiA+IG90aGVyIG1lY2hhbmlzbSB0byBh Y2Nlc3MgZGlmZmVyZW50IGZ1bmN0aW9ucy4gU28gd2hpbHN0IHRoaXMNCj4gPiA+IHByb3BlcnR5 IGNhbiBiZSBvcHRpb25hbCBmb3IgdGhlIG1ham9yaXR5IG9mIGR3YyBjb250cm9sbGVycyAtIGl0 IG11c3QgYmUNCj4gc2V0IGFuZCBjYW5ub3QgYmUgemVybyBmb3IgbGF5ZXJzY2FwZS4NCj4gPiA+ DQo+ID4gPiBQZXJoYXBzIGluc2lkZSBsc19wY2llX2VwX2luaXQsIHlvdSBjYW4gc2V0IG1heF9m dW5jdGlvbnMgdG8gMSBpZg0KPiA+ID4gcGZfb2Zmc2V0IGlzDQo+ID4gPiAwIGFuZCBwcmludCBh IFdBUk4gdG8gZXhwbGFpbiB3aHk/IChPciBsc19wY2llX2VwX2luaXQgcmV0dXJucw0KPiA+ID4g ZmFpbHVyZSBhbmQgZHdfcGNpZV9lcF9pbml0IGNoZWNrcyBpdCBhbmQgYmFpbHMpLg0KPiA+ID4N Cj4gPiA+IFRoZSBhc3N1bXB0aW9uIGlzIGJlaW5nIG1hZGUgaGVyZSB0aGF0IGZ1dHVyZSBkdyBj b250cm9sbGVycyBtYXkNCj4gPiA+IGFsc28gdXNlIHBmX29mZnNldCAoaXMgdGhpcyBsaWtlbHk/ KSAtIG90aGVyd2lzZSB3aHkgaXMgdGhpcyBpbg0KPiA+ID4gcGNpZS1kZXNpZ253YXJlLWVwLmMg YW5kIG5vdCBwY2ktbGF5ZXJzY2FwZS1lcC5jIGFuZCB3aHkgaXMgdGhpcyB2YWx1ZQ0KPiBub3Qg anVzdCBoYXJkLWNvZGVkIGZvciBscD8NCj4gPg0KPiA+IFRoYW5rcyBhIGxvdCBmb3IgeW91ciBk ZXRhaWwgY29tbWVudHMsIHRoaXMgZ2l2ZSBtZSBhIGxvdCBvZiBoZWxwLg0KPiA+IFllcywgSSBh Z3JlZSB5b3VyIHBvaW50LCBhbmQgSSB3aWxsIHNlcmlvdXNseSBjb25zaWRlciBhIGJlc3Qgd2F5 IHRvIGZpeCB0aGlzDQo+IHBvdGVudGlhbCBpc3N1ZS4NCj4gPiBCYXNlZCBvbiB5b3VyIGV4cGVy aWVuY2UsIGhvdyBkbyBvdGhlciBwbGF0Zm9ybXMgaW1wbGVtZW50IHRoZSBtdWx0aXBsZQ0KPiBm dW5jdGlvbnM/DQo+ID4gVGhlIERXQyBjb3JlIGRpZmZlcmVuY2UgdGhlIGRpZmZlcmVudCBQRiBi eSBzaWduYWwNCj4gImNsaWVudDBfdGxwX2Z1bmNfbnVtWyhQRl9XRC0xKTowXSINCj4gDQo+IEkg ZG9uJ3Qga25vdywgdGhvdWdoIGxvb2tpbmcgYXQgdGhlIGtlcm5lbCBkcml2ZXJzIHN1Z2dlc3Rz IHRoYXQgdGhlIGV4aXN0aW5nIEVQDQo+IGNvbnRyb2xsZXJzIGhhdmUgYSBsYXJnZSBhZGRyZXNz IHNwYWNlIHdoaWNoIGNvbnRhaW5zIG11bHRpcGxlIFBGcy4gVGhleSBhcmUNCj4gYWNjZXNzZWQg dmlhIG1hY3JvcyAoUk9DS0NISVBfUENJRV9FUF9GVU5DX0JBU0UoZm4pLA0KPiBDRE5TX1BDSUVf RVBfRlVOQ19CQVNFKGZuKSkuIEl0IHdvdWxkIGJlIHBvc3NpYmxlLCBidXQgcHJvYmFibHkgbm90 DQo+IGRlc2lyYWJsZSB0byBoYXZlIGEgc21hbGxlciBhZGRyZXNzIHNwYWNlICh3aW5kb3cpIGFu ZCBhIHJlZ2lzdGVyIHRoYXQgc2VsZWN0cw0KPiB3aGljaCBmdW5jdGlvbiB0aGUgd2luZG93IHJl ZmVycyB0by4gVGhpcyBpcyB3aHkgSSdtIHNsaWdodCBuZXJ2b3VzIG9mDQo+IGFzc3VtaW5nIHRo YXQgYSBwZi1vZmZzZXQgd2lsbCBjb3ZlciBhbGwgZnV0dXJlIGR3IGRyaXZlcnMgLSBJIG1heSBi ZSB3cm9uZy4NCk9LLCB0aGFua3MsIG1heWJlIG90aGVyIHBlb3BsZSBoYXZlIGdvb2QgYWR2aWNl LiBJIHdpbGwgdXNlIHRoZSBtYWNybyB0byBpbXBsZW1lbnQNCnRoZSBtdWx0aXBsZSBmdW5jdGlv biBpbiB2MiBwYXRjaC4NCj4gDQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gZXZlbiB0aG91Z2ggSSBk aWRuJ3QgZGVmaW5lIHBmLW9mZnNldCB3aGVuIEkgZGVmaW5lZA0KPiA+ID4gPiBtYXgtZnVuY3Rp b25zLCB0aGUgcGYtb2Zmc2V0IGlzIDAsIHRoZSBEV0MgZXAgZHJpdmVyIGNhbiBjb250aW51ZQ0K PiA+ID4gPiBydW4gdGhlIHByb2dyZXNzIG9mIElOSVQgYnV0IG5vdCByZXR1cm4sIG9mIGNvdXJz ZSwgdGh1cyB0aGUgUEYxDQo+ID4gPiA+IHdpbGwgbm90IHdvcmssIEkgZG9uJ3Qga25vdyB3aGlj aA0KPiA+ID4gd2F5IGlzIGJldHRlci4NCj4gPiBIaSBBbmRyZXcsDQo+ID4gPiA+ID4NCj4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwlpZiAoZXAtPm9wcy0+ZXBfaW5pdCkN Cj4gPiA+ID4gPiA+ICsJCWVwLT5vcHMtPmVwX2luaXQoZXApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gIAlyZXQgPSBfX3BjaV9lcGNfbWVtX2luaXQoZXBjLCBlcC0+cGh5c19iYXNlLCBl cC0+YWRkcl9zaXplLA0KPiA+ID4gPiA+ID4gIAkJCQkgZXAtPnBhZ2Vfc2l6ZSk7DQo+ID4gPiA+ ID4gPiAgCWlmIChyZXQgPCAwKSB7DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmMNCj4gPiA+ID4gPiA+IGIvZHJpdmVy cy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmMNCj4gPiA+ID4gPiA+IGluZGV4 IDdkMjUxMDIuLmM5OWNlZTQgMTAwNjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3BjaS9j b250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUuYw0KPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmMNCj4gPiA+ID4gPiA+IEBAIC0x NTgsNiArMTU4LDQzIEBAIHN0YXRpYyB2b2lkDQo+ID4gPiA+ID4gPiBkd19wY2llX3dyaXRlbF9v Yl91bnJvbGwoc3RydWN0DQo+ID4gPiA+ID4gZHdfcGNpZSAqcGNpLCB1MzIgaW5kZXgsIHUzMiBy ZWcsDQo+ID4gPiA+ID4gPiAgCWR3X3BjaWVfd3JpdGVsX2F0dShwY2ksIG9mZnNldCArIHJlZywg dmFsKTsgIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQgZHdfcGNpZV9w cm9nX2VwX291dGJvdW5kX2F0dV91bnJvbGwoc3RydWN0DQo+ID4gPiA+ID4gPiArZHdfcGNpZSAq cGNpLCB1OA0KPiA+ID4gPiA+IGZ1bmNfbm8sDQo+ID4gPiA+ID4gPiArCQkJCQkJaW50IGluZGV4 LCBpbnQgdHlwZSwNCj4gPiA+ID4gPiA+ICsJCQkJCQl1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRk ciwNCj4gPiA+ID4gPiA+ICsJCQkJCQl1MzIgc2l6ZSkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ ID4gPiArCXUzMiByZXRyaWVzLCB2YWw7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCWR3 X3BjaWVfd3JpdGVsX29iX3Vucm9sbChwY2ksIGluZGV4LA0KPiA+ID4gUENJRV9BVFVfVU5SX0xP V0VSX0JBU0UsDQo+ID4gPiA+ID4gPiArCQkJCSBsb3dlcl8zMl9iaXRzKGNwdV9hZGRyKSk7DQo+ ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX29iX3Vucm9sbChwY2ksIGluZGV4LA0KPiA+ID4g UENJRV9BVFVfVU5SX1VQUEVSX0JBU0UsDQo+ID4gPiA+ID4gPiArCQkJCSB1cHBlcl8zMl9iaXRz KGNwdV9hZGRyKSk7DQo+ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX29iX3Vucm9sbChwY2ks IGluZGV4LCBQQ0lFX0FUVV9VTlJfTElNSVQsDQo+ID4gPiA+ID4gPiArCQkJCSBsb3dlcl8zMl9i aXRzKGNwdV9hZGRyICsgc2l6ZSAtIDEpKTsNCj4gPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWxf b2JfdW5yb2xsKHBjaSwgaW5kZXgsDQo+ID4gPiBQQ0lFX0FUVV9VTlJfTE9XRVJfVEFSR0VULA0K PiA+ID4gPiA+ID4gKwkJCQkgbG93ZXJfMzJfYml0cyhwY2lfYWRkcikpOw0KPiA+ID4gPiA+ID4g Kwlkd19wY2llX3dyaXRlbF9vYl91bnJvbGwocGNpLCBpbmRleCwNCj4gPiA+IFBDSUVfQVRVX1VO Ul9VUFBFUl9UQVJHRVQsDQo+ID4gPiA+ID4gPiArCQkJCSB1cHBlcl8zMl9iaXRzKHBjaV9hZGRy KSk7DQo+ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX29iX3Vucm9sbChwY2ksIGluZGV4LA0K PiA+ID4gUENJRV9BVFVfVU5SX1JFR0lPTl9DVFJMMSwNCj4gPiA+ID4gPiA+ICsJCQkJIHR5cGUg fCBQQ0lFX0FUVV9GVU5DX05VTShmdW5jX25vKSk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBXaXRo IHRoZSBleGNlcHRpb24gb2YgdGhpcyBsaW5lLCB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGlz DQo+ID4gPiA+ID4gaWRlbnRpY2FsIHRvIGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHVfdW5yb2xs Lg0KPiA+ID4gPiBZZXMsIEkgY2FuIGludGVncmF0ZSB0aGUgc2FtZSBjb2RlLCBidXQgSSB0aGlu ayB3ZSdkIGJldHRlciB1c2UNCj4gPiA+ID4gdGhlIGRpZmZlcmVudCBvdXRib3VuZCB3aW5kb3cg c2V0IGZ1bmN0aW9uIGJldHdlZW4gUkMgYW5kIEVQLA0KPiA+ID4gPiBiZWNhdXNlIHRoZSBSQw0K PiA+ID4gZG9uJ3QgbmVlZCB0aGUgZnVuY19udW0gcGFyYW1ldGVyLg0KPiA+ID4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX29iX3Vucm9sbChw Y2ksIGluZGV4LA0KPiA+ID4gUENJRV9BVFVfVU5SX1JFR0lPTl9DVFJMMiwNCj4gPiA+ID4gPiA+ ICsJCQkJIFBDSUVfQVRVX0VOQUJMRSk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCS8q DQo+ID4gPiA+ID4gPiArCSAqIE1ha2Ugc3VyZSBBVFUgZW5hYmxlIHRha2VzIGVmZmVjdCBiZWZv cmUgYW55IHN1YnNlcXVlbnQNCj4gY29uZmlnDQo+ID4gPiA+ID4gPiArCSAqIGFuZCBJL08gYWNj ZXNzZXMuDQo+ID4gPiA+ID4gPiArCSAqLw0KPiA+ID4gPiA+ID4gKwlmb3IgKHJldHJpZXMgPSAw OyByZXRyaWVzIDwgTElOS19XQUlUX01BWF9JQVRVX1JFVFJJRVM7DQo+ID4gPiA+ID4gPiArcmV0 cmllcysrKQ0KPiA+ID4gew0KPiA+ID4gPiA+ID4gKwkJdmFsID0gZHdfcGNpZV9yZWFkbF9vYl91 bnJvbGwocGNpLCBpbmRleCwNCj4gPiA+ID4gPiA+ICsJCQkJCSAgICAgIFBDSUVfQVRVX1VOUl9S RUdJT05fQ1RSTDIpOw0KPiA+ID4gPiA+ID4gKwkJaWYgKHZhbCAmIFBDSUVfQVRVX0VOQUJMRSkN Cj4gPiA+ID4gPiA+ICsJCQlyZXR1cm47DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCQlt ZGVsYXkoTElOS19XQUlUX0lBVFUpOw0KPiA+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gPiArCWRl dl9lcnIocGNpLT5kZXYsICJPdXRib3VuZCBpQVRVIGlzIG5vdCBiZWluZyBlbmFibGVkXG4iKTsg fQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIGR3X3BjaWVfcHJvZ19v dXRib3VuZF9hdHVfdW5yb2xsKHN0cnVjdCBkd19wY2llDQo+ID4gPiA+ID4gPiAqcGNpLCBpbnQN Cj4gPiA+ID4gPiBpbmRleCwNCj4gPiA+ID4gPiA+ICAJCQkJCSAgICAgaW50IHR5cGUsIHU2NCBj cHVfYWRkciwNCj4gPiA+ID4gPiA+ICAJCQkJCSAgICAgdTY0IHBjaV9hZGRyLCB1MzIgc2l6ZSkg QEAgLTE5NCw2DQo+ID4gPiArMjMxLDUxIEBAIHN0YXRpYw0KPiA+ID4gPiA+ID4gdm9pZA0KPiA+ ID4gPiA+IGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHVfdW5yb2xsKHN0cnVjdCBkd19wY2llICpw Y2ksIGludCBpbmRleCwNCj4gPiA+ID4gPiA+ICAJZGV2X2VycihwY2ktPmRldiwgIk91dGJvdW5k IGlBVFUgaXMgbm90IGJlaW5nIGVuYWJsZWRcbiIpOw0KPiA+ID4gPiA+ID4gfQ0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ICt2b2lkIGR3X3BjaWVfcHJvZ19lcF9vdXRib3VuZF9hdHUoc3RydWN0 IGR3X3BjaWUgKnBjaSwgdTgNCj4gPiA+ID4gPiA+ICtmdW5jX25vLCBpbnQNCj4gPiA+ID4gPiBp bmRleCwNCj4gPiA+ID4gPiA+ICsJCQkJICBpbnQgdHlwZSwgdTY0IGNwdV9hZGRyLCB1NjQgcGNp X2FkZHIsDQo+ID4gPiA+ID4gPiArCQkJCSAgdTMyIHNpemUpDQo+ID4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ID4gKwl1MzIgcmV0cmllcywgdmFsOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g KwlpZiAocGNpLT5vcHMtPmNwdV9hZGRyX2ZpeHVwKQ0KPiA+ID4gPiA+ID4gKwkJY3B1X2FkZHIg PSBwY2ktPm9wcy0+Y3B1X2FkZHJfZml4dXAocGNpLCBjcHVfYWRkcik7DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArCWlmIChwY2ktPmlhdHVfdW5yb2xsX2VuYWJsZWQpIHsNCj4gPiA+ID4g PiA+ICsJCWR3X3BjaWVfcHJvZ19lcF9vdXRib3VuZF9hdHVfdW5yb2xsKHBjaSwgZnVuY19ubywN Cj4gaW5kZXgsDQo+ID4gPiB0eXBlLA0KPiA+ID4gPiA+ID4gKwkJCQkJCSAgICBjcHVfYWRkciwg cGNpX2FkZHIsIHNpemUpOw0KPiA+ID4gPiA+ID4gKwkJcmV0dXJuOw0KPiA+ID4gPiA+ID4gKwl9 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBD SUVfQVRVX1ZJRVdQT1JULA0KPiA+ID4gPiA+ID4gKwkJCSAgIFBDSUVfQVRVX1JFR0lPTl9PVVRC T1VORCB8IGluZGV4KTsNCj4gPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJ RV9BVFVfTE9XRVJfQkFTRSwNCj4gPiA+ID4gPiA+ICsJCQkgICBsb3dlcl8zMl9iaXRzKGNwdV9h ZGRyKSk7DQo+ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX1VQ UEVSX0JBU0UsDQo+ID4gPiA+ID4gPiArCQkJICAgdXBwZXJfMzJfYml0cyhjcHVfYWRkcikpOw0K PiA+ID4gPiA+ID4gKwlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX0FUVV9MSU1JVCwNCj4g PiA+ID4gPiA+ICsJCQkgICBsb3dlcl8zMl9iaXRzKGNwdV9hZGRyICsgc2l6ZSAtIDEpKTsNCj4g PiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9BVFVfTE9XRVJfVEFSR0VU LA0KPiA+ID4gPiA+ID4gKwkJCSAgIGxvd2VyXzMyX2JpdHMocGNpX2FkZHIpKTsNCj4gPiA+ID4g PiA+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9BVFVfVVBQRVJfVEFSR0VULA0KPiA+ ID4gPiA+ID4gKwkJCSAgIHVwcGVyXzMyX2JpdHMocGNpX2FkZHIpKTsNCj4gPiA+ID4gPiA+ICsJ ZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9BVFVfQ1IxLCB0eXBlIHwNCj4gPiA+ID4gPiA+ ICsJCQkgICBQQ0lFX0FUVV9GVU5DX05VTShmdW5jX25vKSk7DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiBUaGUgc2FtZSBoZXJlLCB0aGlzIGlzIGlkZW50aWNhbCB0byBkd19wY2llX3Byb2dfb3V0Ym91 bmRfYXR1DQo+ID4gPiA+ID4gd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoaXMgbGluZS4NCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IElzIHRoZXJlIGEgd2F5IHlvdSBjYW4gYXZvaWQgYWxsIG9mIHRoaXMg ZHVwbGljYXRlZCBjb2RlPw0KPiA+ID4gPiBBcyBhYm92ZSwgSSBjYW4gaW50ZWdyYXRlIHRoZSBz YW1lIGNvZGUsIGJ1dCBJIGtlZXAgdG8gdGhpbmsgdGhlDQo+ID4gPiA+IGRpZmZlcmVudCBvdXRi b3VuZCBXaW5kb3cgc2V0IGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIGJldHdlZW4gUkMgYW5kDQo+ IEVQLg0KPiA+ID4NCj4gPiA+IE9yLCBpcyBpdCBwb3NzaWJsZSB0byBrZWVwIGFuZCB1c2UgdGhl IGV4aXN0aW5nIGZ1bmN0aW9ucywgYnV0IHVzZQ0KPiA+ID4gdGhlbSBkaWZmZXJlbnRseSwgZS5n Og0KPiA+ID4NCj4gPiA+DQo+ID4gPiBAQCAtMTM3LDggKzE0Niw4IEBAIHN0YXRpYyBpbnQgZHdf cGNpZV9lcF9vdXRib3VuZF9hdHUoc3RydWN0DQo+ID4gPiBkd19wY2llX2VwICplcCwgcGh5c19h ZGRyX3QgcGh5c19hZGRyLA0KPiA+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0K PiA+ID4gICAgICAgICB9DQo+ID4gPg0KPiA+ID4gLSAgICAgICBkd19wY2llX3Byb2dfb3V0Ym91 bmRfYXR1KHBjaSwgZnJlZV93aW4sDQo+IFBDSUVfQVRVX1RZUEVfTUVNLA0KPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNfYWRkciwgcGNpX2FkZHIsIHNpemUpOw0K PiA+ID4gKyAgICAgICBkd19wY2llX3Byb2dfb3V0Ym91bmRfYXR1KHBjaSwgZnJlZV93aW4sDQo+ ID4gPiBQQ0lFX0FUVV9UWVBFX01FTV9GVU5DKGZ1bmNfbm8pLA0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNfYWRkciwgcGNpX2FkZHIsIHNpemUpOw0KPiA+ ID4NCj4gPiA+ICAgICAgICAgc2V0X2JpdChmcmVlX3dpbiwgZXAtPm9iX3dpbmRvd19tYXApOw0K PiA+ID4gICAgICAgICBlcC0+b3V0Ym91bmRfYWRkcltmcmVlX3dpbl0gPSBwaHlzX2FkZHI7DQo+ ID4gPg0KPiA+ID4NCj4gPiA+IFN1cHBvcnRlZCB3aXRoOg0KPiA+ID4NCj4gPiA+ICNkZWZpbmUg UENJRV9BVFVfVFlQRV9NRU0gICAgICAgICAgICAgICAweDANCj4gPiA+ICNkZWZpbmUgUENJRV9B VFVfVFlQRV9NRU1fRlVOQyhmdW5jX25vKSAoUENJRV9BVFVfVFlQRV9NRU0gfA0KPiA+ID4gUENJ RV9BVFVfRlVOQ19OVU0oZnVuY19ubykpDQo+ID4gPg0KPiA+ID4NCj4gPiA+IFRoaXMgaXMganVz dCBhIHN1Z2dlc3Rpb24sIGJ1dCBJJ20ga2VlbiB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLg0K PiA+IFRoYW5rcywgSSBoYXZlIHRoaW5rIG9mIGEgd2F5IGFzIGZvbGxvdzoNCj4gPg0KPiA+IFRo aXMgaXMgYSBnb29kIHdheSwgYnV0IEkgdGhpbmsgUENJRV9BVFVfVFlQRV9NRU1fRlVOQyhmdW5j X25vKSB3aWxsDQo+ID4gZ2l2ZSBTb21lb25lIGNvbmZ1c2VkIG1lYW5pbmcsIGJlY2F1c2UgUENJ RV9BVFVfVFlQRV9NRU0gaW5kaWNhdGUNCj4gdGhlDQo+ID4gdHlwZSBvZiBUTFAsIGFuZCB0aGUg bG9jYXRpb24gaW4gdGhlIGJpdFswOjNdIG9mIHJlZ2lzdGVyIENSMSwgYnV0IHRoZQ0KPiA+IFBD SUVfQVRVX0ZVTkNfTlVNIGlzIGJpdFsyMDoyNF0sIEkgaGF2ZSBhbm90aGVyIHdheToNCj4gPiBA QCAtMTM3LDggKzE0Niw4IEBAIHN0YXRpYyBpbnQgZHdfcGNpZV9lcF9vdXRib3VuZF9hdHUoc3Ry dWN0DQo+ID4gZHdfcGNpZV9lcCAqZXAsIHBoeXNfYWRkcl90IHBoeXNfYWRkciwNCj4gPiAgICAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gCQlk d19wY2llX3Byb2dfb3V0Ym91bmRfYXR1KHBjaSwgZnJlZV93aW4sIFBDSUVfQVRVX1RZUEVfTUVN LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5c19hZGRyLCBwY2lfYWRk ciwgc2l6ZSk7DQo+ID4gKwkJdmFsID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCBQQ0lFX0FUVV9D UjEpOw0KPiA+ICsJCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfQVRVX0NSMSwgdmFsIHwN Cj4gPiArUENJRV9BVFVfRlVOQ19OVU0oZnVuY19ubykpOw0KPiA+IG9yDQo+ID4gK3ZvaWQgZHdf cGNpZV9wcm9nX2VwX291dGJvdW5kX2F0dShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB1OCBmdW5jX25v LCBpbnQNCj4gaW5kZXgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHR5cGUsIHU2NCBjcHVfYWRkciwgdTY0DQo+IHBjaV9hZGRyLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBzaXplKSB7DQo+ID4gKwkJZHdfcGNpZV9wcm9n X291dGJvdW5kX2F0dShwY2ksIGluZGV4LCB0eXBlLCBjcHVfYWRkciwgcGNpX2FkZHIsDQo+IHNp emUpOw0KPiA+ICsJCXZhbCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgUENJRV9BVFVfQ1IxKTsN Cj4gPiArCQlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX0FUVV9DUjEsIHZhbCB8DQo+ID4g K1BDSUVfQVRVX0ZVTkNfTlVNKGZ1bmNfbm8pKTsgfQ0KPiA+DQo+ID4gV2hpY2ggZG8geW91IHRo aW5rIGlzIGJldHRlciBvZiB0aGVzZSB0aHJlZSB3YXlzPw0KPiANCj4gQnVpbGRpbmcgdXBvbiB5 b3VyIGlkZWEsIGhvdyBhYm91dDoNCj4gDQo+IA0KPiAgQEAgLTEzNyw4ICsxNDYsOCBAQCBzdGF0 aWMgaW50IGR3X3BjaWVfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdA0KPiBkd19wY2llX2VwICplcCwg cGh5c19hZGRyX3QgcGh5c19hZGRyLA0KPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Ow0KPiAgICAgICAgICB9DQo+IA0KPiAgLSAgICAgICBkd19wY2llX3Byb2dfb3V0Ym91bmRfYXR1 KHBjaSwgZnJlZV93aW4sDQo+IFBDSUVfQVRVX1RZUEVfTUVNLA0KPiAgLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBoeXNfYWRkciwgcGNpX2FkZHIsIHNpemUpOw0KPiAgKyAgICAg ICBkd19wY2llX3Byb2dfZXBfb3V0Ym91bmRfYXR1KHBjaSwgZnVuY19ubywgZnJlZV93aW4sDQo+ IFBDSUVfQVRVX1RZUEVfTUVNDQo+ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGh5c19hZGRyLCBwY2lfYWRkciwgc2l6ZSk7DQo+IA0KPiAgICAgICAgICBzZXRfYml0KGZy ZWVfd2luLCBlcC0+b2Jfd2luZG93X21hcCk7DQo+ICAgICAgICAgIGVwLT5vdXRib3VuZF9hZGRy W2ZyZWVfd2luXSA9IHBoeXNfYWRkcjsNCj4gDQo+IA0KPiAgK3ZvaWQgZHdfcGNpZV9wcm9nX2Vw X291dGJvdW5kX2F0dShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB1OCBmdW5jX25vLCBpbnQNCj4gaW5k ZXgsDQo+ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgdTY0 IGNwdV9hZGRyLCB1NjQNCj4gcGNpX2FkZHIsDQo+ICArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1MzIgc2l6ZSkNCj4gICt7DQo+ICArCQlfX2R3X3BjaWVfcHJvZ19vdXRib3Vu ZF9hdHUocGNpLCBmdW5jX25vLCBpbmRleCwgdHlwZSwgY3B1X2FkZHIsDQo+IHBjaV9hZGRyLCBz aXplKTsNCj4gICt9DQo+ICArDQo+ICArdm9pZCBkd19wY2llX3Byb2dfb3V0Ym91bmRfYXR1KHN0 cnVjdCBkd19wY2llICpwY2ksIHU4IGZ1bmNfbm8sIGludA0KPiBpbmRleCwNCj4gICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlLCB1NjQgY3B1X2FkZHIsIHU2NA0K PiBwY2lfYWRkciwNCj4gICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBz aXplKQ0KPiAgK3sNCj4gICsJCV9fZHdfcGNpZV9wcm9nX291dGJvdW5kX2F0dShwY2ksIDAsIGlu ZGV4LCB0eXBlLCBjcHVfYWRkciwNCj4gcGNpX2FkZHIsIHNpemUpOw0KPiAgK30NCj4gDQo+IElu IG90aGVyIHdvcmRzIGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHUgaXMgdXBkYXRlZCAoYW5kIHJl bmFtZWQpIHRvDQo+IGFsd2F5cyB0YWtlIGEgZnVuY19ubyBhbmQgZm9yIGhvc3QgY29udHJvbGxl cnMgdGhpcyBpcyBhbHdheXMgc2V0IHRvIHplcm8uIE9yDQo+IHlvdSBjb3VsZCBmb2xsb3cgdGhl IGFwcHJvYWNoIHRha2VuIGluIHRoZSBjYWRlbmNlIGRyaXZlcnMgZm9yIHRoZWlyDQo+IGltcGxl bWVudGF0aW9uIG9mIGNkbnNfcGNpZV9zZXRfb3V0Ym91bmRfcmVnaW9uIC0gdGhpcyBhbHdheXMg dGFrZXMgYQ0KPiBmdW5jX25vIGFuZCBpcyB1c2VkIGJ5IGhvc3QgY29udHJvbGxlciBhbmQgZW5k cG9pbnQgZHJpdmVycyAoZXhjZXB0IHRoZXkgZG9uJ3QNCj4gaGF2ZSB0aGUgaGVscGVyIHdyYXBw ZXIgZnVuY3Rpb25zIGFib3ZlIHRodXMgZXhwb3NpbmcgZm49MCB0byBob3N0DQo+IGNvbnRyb2xs ZXJzKS4NCllvdSdyZSBjb3JyZWN0LCBJIHRoaW5rIHRoaXMgd2F5IGlzIGJldHRlciwgdGhhbmtz Lg0KPiANCj4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBBbmRyZXcgTXVycmF5DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICsJZHdfcGNpZV93 cml0ZWxfZGJpKHBjaSwgUENJRV9BVFVfQ1IyLCBQQ0lFX0FUVV9FTkFCTEUpOw0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKwkvKg0KPiA+ID4gPiA+ID4gKwkgKiBNYWtlIHN1cmUgQVRVIGVu YWJsZSB0YWtlcyBlZmZlY3QgYmVmb3JlIGFueSBzdWJzZXF1ZW50DQo+IGNvbmZpZw0KPiA+ID4g PiA+ID4gKwkgKiBhbmQgSS9PIGFjY2Vzc2VzLg0KPiA+ID4gPiA+ID4gKwkgKi8NCj4gPiA+ID4g PiA+ICsJZm9yIChyZXRyaWVzID0gMDsgcmV0cmllcyA8IExJTktfV0FJVF9NQVhfSUFUVV9SRVRS SUVTOw0KPiA+ID4gPiA+ID4gK3JldHJpZXMrKykNCj4gPiA+IHsNCj4gPiA+ID4gPiA+ICsJCXZh bCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgUENJRV9BVFVfQ1IyKTsNCj4gPiA+ID4gPiA+ICsJ CWlmICh2YWwgJiBQQ0lFX0FUVV9FTkFCTEUpDQo+ID4gPiA+ID4gPiArCQkJcmV0dXJuOw0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwkJbWRlbGF5KExJTktfV0FJVF9JQVRVKTsNCj4gPiA+ ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ID4gKwlkZXZfZXJyKHBjaS0+ZGV2LCAiT3V0Ym91bmQgaUFU VSBpcyBub3QgYmVpbmcgZW5hYmxlZFxuIik7IH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICB2b2lkIGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHUoc3RydWN0IGR3X3BjaWUgKnBjaSwgaW50 DQo+ID4gPiA+ID4gPiBpbmRleCwgaW50DQo+ID4gPiB0eXBlLA0KPiA+ID4gPiA+ID4gIAkJCSAg ICAgICB1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRkciwgdTMyIHNpemUpDQo+IHsgQEANCj4gPiA+ IC0yNTIsOA0KPiA+ID4gPiA+ICszMzQsOA0KPiA+ID4gPiA+ID4gQEAgc3RhdGljIHZvaWQgZHdf cGNpZV93cml0ZWxfaWJfdW5yb2xsKHN0cnVjdCBkd19wY2llICpwY2ksDQo+ID4gPiA+ID4gPiB1 MzIgaW5kZXgsDQo+ID4gPiA+ID4gdTMyIHJlZywNCj4gPiA+ID4gPiA+ICAJZHdfcGNpZV93cml0 ZWxfYXR1KHBjaSwgb2Zmc2V0ICsgcmVnLCB2YWwpOyAgfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IC1zdGF0aWMgaW50IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dV91bnJvbGwoc3RydWN0IGR3 X3BjaWUNCj4gPiA+ID4gPiA+ICpwY2ksIGludA0KPiA+ID4gaW5kZXgsDQo+ID4gPiA+ID4gPiAt CQkJCQkgICBpbnQgYmFyLCB1NjQgY3B1X2FkZHIsDQo+ID4gPiA+ID4gPiArc3RhdGljIGludCBk d19wY2llX3Byb2dfaW5ib3VuZF9hdHVfdW5yb2xsKHN0cnVjdCBkd19wY2llDQo+ID4gPiA+ID4g PiArKnBjaSwNCj4gPiA+ID4gPiA+ICt1OA0KPiA+ID4gPiA+IGZ1bmNfbm8sDQo+ID4gPiA+ID4g PiArCQkJCQkgICBpbnQgaW5kZXgsIGludCBiYXIsIHU2NCBjcHVfYWRkciwNCj4gPiA+ID4gPiA+ ICAJCQkJCSAgIGVudW0gZHdfcGNpZV9hc190eXBlIGFzX3R5cGUpICB7DQo+ID4gPiA+ID4gPiAg CWludCB0eXBlOw0KPiA+ID4gPiA+ID4gQEAgLTI3NSw4ICszNTcsMTAgQEAgc3RhdGljIGludA0K PiA+ID4gPiA+ID4gZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1X3Vucm9sbChzdHJ1Y3QNCj4gPiA+ ID4gPiBkd19wY2llICpwY2ksIGludCBpbmRleCwNCj4gPiA+ID4gPiA+ICAJCXJldHVybiAtRUlO VkFMOw0KPiA+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLQlkd19wY2ll X3dyaXRlbF9pYl91bnJvbGwocGNpLCBpbmRleCwNCj4gPiA+IFBDSUVfQVRVX1VOUl9SRUdJT05f Q1RSTDEsDQo+ID4gPiA+ID4gdHlwZSk7DQo+ID4gPiA+ID4gPiArCWR3X3BjaWVfd3JpdGVsX2li X3Vucm9sbChwY2ksIGluZGV4LA0KPiA+ID4gUENJRV9BVFVfVU5SX1JFR0lPTl9DVFJMMSwNCj4g PiA+ID4gPiB0eXBlIHwNCj4gPiA+ID4gPiA+ICsJCQkJIFBDSUVfQVRVX0ZVTkNfTlVNKGZ1bmNf bm8pKTsNCj4gPiA+ID4gPiA+ICAJZHdfcGNpZV93cml0ZWxfaWJfdW5yb2xsKHBjaSwgaW5kZXgs DQo+ID4gPiBQQ0lFX0FUVV9VTlJfUkVHSU9OX0NUUkwyLA0KPiA+ID4gPiA+ID4gKwkJCQkgUENJ RV9BVFVfRlVOQ19OVU1fTUFUQ0hfRU4gfA0KPiA+ID4gPiA+ID4gIAkJCQkgUENJRV9BVFVfRU5B QkxFIHwNCj4gPiA+ID4gPiA+ICAJCQkJIFBDSUVfQVRVX0JBUl9NT0RFX0VOQUJMRSB8IChiYXIg PDwgOCkpOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEBAIC0yOTcsMTQgKzM4MSwxNSBAQCBz dGF0aWMgaW50DQo+ID4gPiA+ID4gZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1X3Vucm9sbChzdHJ1 Y3QgZHdfcGNpZSAqcGNpLCBpbnQgaW5kZXgsDQo+ID4gPiA+ID4gPiAgCXJldHVybiAtRUJVU1k7 DQo+ID4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC1pbnQgZHdfcGNpZV9w cm9nX2luYm91bmRfYXR1KHN0cnVjdCBkd19wY2llICpwY2ksIGludCBpbmRleCwgaW50DQo+IGJh ciwNCj4gPiA+ID4gPiA+IC0JCQkgICAgIHU2NCBjcHVfYWRkciwgZW51bSBkd19wY2llX2FzX3R5 cGUNCj4gYXNfdHlwZSkNCj4gPiA+ID4gPiA+ICtpbnQgZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1 KHN0cnVjdCBkd19wY2llICpwY2ksIHU4IGZ1bmNfbm8sDQo+ID4gPiA+ID4gPiAraW50DQo+ID4g PiBpbmRleCwNCj4gPiA+ID4gPiA+ICsJCQkgICAgIGludCBiYXIsIHU2NCBjcHVfYWRkciwNCj4g PiA+ID4gPiA+ICsJCQkgICAgIGVudW0gZHdfcGNpZV9hc190eXBlIGFzX3R5cGUpDQo+ID4gPiA+ ID4gPiAgew0KPiA+ID4gPiA+ID4gIAlpbnQgdHlwZTsNCj4gPiA+ID4gPiA+ICAJdTMyIHJldHJp ZXMsIHZhbDsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgCWlmIChwY2ktPmlhdHVfdW5yb2xs X2VuYWJsZWQpDQo+ID4gPiA+ID4gPiAtCQlyZXR1cm4gZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1 X3Vucm9sbChwY2ksIGluZGV4LCBiYXIsDQo+ID4gPiA+ID4gPiArCQlyZXR1cm4gZHdfcGNpZV9w cm9nX2luYm91bmRfYXR1X3Vucm9sbChwY2ksIGZ1bmNfbm8sDQo+IGluZGV4LA0KPiA+ID4gPiA+ ID4gK2JhciwNCj4gPiA+ID4gPiA+ICAJCQkJCQkgICAgICAgY3B1X2FkZHIsIGFzX3R5cGUpOw0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9B VFVfVklFV1BPUlQsDQo+ID4gPiA+ID4gUENJRV9BVFVfUkVHSU9OX0lOQk9VTkQgfA0KPiA+ID4g PiA+ID4gQEAgLTMyMyw5ICs0MDgsMTEgQEAgaW50IGR3X3BjaWVfcHJvZ19pbmJvdW5kX2F0dShz dHJ1Y3QNCj4gPiA+ID4gPiA+IGR3X3BjaWUNCj4gPiA+ID4gPiAqcGNpLCBpbnQgaW5kZXgsIGlu dCBiYXIsDQo+ID4gPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gPiA+ICAJfQ0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0JZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9B VFVfQ1IxLCB0eXBlKTsNCj4gPiA+ID4gPiA+IC0JZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJ RV9BVFVfQ1IyLCBQQ0lFX0FUVV9FTkFCTEUNCj4gPiA+ID4gPiA+IC0JCQkgICB8IFBDSUVfQVRV X0JBUl9NT0RFX0VOQUJMRSB8IChiYXIgPDwgOCkpOw0KPiA+ID4gPiA+ID4gKwlkd19wY2llX3dy aXRlbF9kYmkocGNpLCBQQ0lFX0FUVV9DUjEsIHR5cGUgfA0KPiA+ID4gPiA+ID4gKwkJCSAgIFBD SUVfQVRVX0ZVTkNfTlVNKGZ1bmNfbm8pKTsNCj4gPiA+ID4gPiA+ICsJZHdfcGNpZV93cml0ZWxf ZGJpKHBjaSwgUENJRV9BVFVfQ1IyLCBQQ0lFX0FUVV9FTkFCTEUgfA0KPiA+ID4gPiA+ID4gKwkJ CSAgIFBDSUVfQVRVX0ZVTkNfTlVNX01BVENIX0VOIHwNCj4gPiA+ID4gPiA+ICsJCQkgICBQQ0lF X0FUVV9CQVJfTU9ERV9FTkFCTEUgfCAoYmFyIDw8IDgpKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiAgCS8qDQo+ID4gPiA+ID4gPiAgCSAqIE1ha2Ugc3VyZSBBVFUgZW5hYmxlIHRha2VzIGVm ZmVjdCBiZWZvcmUgYW55IHN1YnNlcXVlbnQNCj4gPiA+ID4gPiA+IGNvbmZpZyBkaWZmIC0tZ2l0 DQo+ID4gPiA+ID4gPiBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2Fy ZS5oDQo+ID4gPiA+ID4gPiBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdu d2FyZS5oDQo+ID4gPiA+ID4gPiBpbmRleCBmZmVkMDg0Li4yYjI5MWU4IDEwMDY0NA0KPiA+ID4g PiA+ID4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmgN Cj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdu d2FyZS5oDQo+ID4gPiA+ID4gPiBAQCAtNzEsOSArNzEsMTEgQEANCj4gPiA+ID4gPiA+ICAjZGVm aW5lIFBDSUVfQVRVX1RZUEVfSU8JCTB4Mg0KPiA+ID4gPiA+ID4gICNkZWZpbmUgUENJRV9BVFVf VFlQRV9DRkcwCQkweDQNCj4gPiA+ID4gPiA+ICAjZGVmaW5lIFBDSUVfQVRVX1RZUEVfQ0ZHMQkJ MHg1DQo+ID4gPiA+ID4gPiArI2RlZmluZSBQQ0lFX0FUVV9GVU5DX05VTShwZikgICAgICAgICAg IChwZiA8PCAyMCkNCj4gPiA+ID4gPiA+ICAjZGVmaW5lIFBDSUVfQVRVX0NSMgkJCTB4OTA4DQo+ ID4gPiA+ID4gPiAgI2RlZmluZSBQQ0lFX0FUVV9FTkFCTEUJCQlCSVQoMzEpDQo+ID4gPiA+ID4g PiAgI2RlZmluZSBQQ0lFX0FUVV9CQVJfTU9ERV9FTkFCTEUJQklUKDMwKQ0KPiA+ID4gPiA+ID4g KyNkZWZpbmUgUENJRV9BVFVfRlVOQ19OVU1fTUFUQ0hfRU4gICAgICBCSVQoMTkpDQo+ID4gPiA+ ID4gPiAgI2RlZmluZSBQQ0lFX0FUVV9MT1dFUl9CQVNFCQkweDkwQw0KPiA+ID4gPiA+ID4gICNk ZWZpbmUgUENJRV9BVFVfVVBQRVJfQkFTRQkJMHg5MTANCj4gPiA+ID4gPiA+ICAjZGVmaW5lIFBD SUVfQVRVX0xJTUlUCQkJMHg5MTQNCj4gPiA+ID4gPiA+IEBAIC0yNjUsOCArMjY3LDEyIEBAIGlu dCBkd19wY2llX3dhaXRfZm9yX2xpbmsoc3RydWN0IGR3X3BjaWUNCj4gPiA+ID4gPiA+ICpwY2kp OyB2b2lkIGR3X3BjaWVfcHJvZ19vdXRib3VuZF9hdHUoc3RydWN0IGR3X3BjaWUgKnBjaSwgaW50 DQo+IGluZGV4LA0KPiA+ID4gPiA+ID4gIAkJCSAgICAgICBpbnQgdHlwZSwgdTY0IGNwdV9hZGRy LCB1NjQgcGNpX2FkZHIsDQo+ID4gPiA+ID4gPiAgCQkJICAgICAgIHUzMiBzaXplKTsNCj4gPiA+ ID4gPiA+IC1pbnQgZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1KHN0cnVjdCBkd19wY2llICpwY2ks IGludCBpbmRleCwgaW50DQo+IGJhciwNCj4gPiA+ID4gPiA+IC0JCQkgICAgIHU2NCBjcHVfYWRk ciwgZW51bSBkd19wY2llX2FzX3R5cGUNCj4gYXNfdHlwZSk7DQo+ID4gPiA+ID4gPiArdm9pZCBk d19wY2llX3Byb2dfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdCBkd19wY2llICpwY2ksIHU4DQo+ID4g PiA+ID4gPiArZnVuY19ubywgaW50DQo+ID4gPiA+ID4gaW5kZXgsDQo+ID4gPiA+ID4gPiArCQkJ CSAgaW50IHR5cGUsIHU2NCBjcHVfYWRkciwgdTY0IHBjaV9hZGRyLA0KPiA+ID4gPiA+ID4gKwkJ CQkgIHUzMiBzaXplKTsNCj4gPiA+ID4gPiA+ICtpbnQgZHdfcGNpZV9wcm9nX2luYm91bmRfYXR1 KHN0cnVjdCBkd19wY2llICpwY2ksIHU4IGZ1bmNfbm8sDQo+ID4gPiA+ID4gPiAraW50DQo+ID4g PiBpbmRleCwNCj4gPiA+ID4gPiA+ICsJCQkgICAgIGludCBiYXIsIHU2NCBjcHVfYWRkciwNCj4g PiA+ID4gPiA+ICsJCQkgICAgIGVudW0gZHdfcGNpZV9hc190eXBlIGFzX3R5cGUpOw0KPiA+ID4g PiA+ID4gIHZvaWQgZHdfcGNpZV9kaXNhYmxlX2F0dShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCBpbnQg aW5kZXgsDQo+ID4gPiA+ID4gPiAgCQkJIGVudW0gZHdfcGNpZV9yZWdpb25fdHlwZSB0eXBlKTsg IHZvaWQNCj4gPiA+IGR3X3BjaWVfc2V0dXAoc3RydWN0DQo+ID4gPiA+ID4gPiBkd19wY2llICpw Y2kpOyBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2ktZXBjLmgNCj4gPiA+ID4gPiA+IGIv aW5jbHVkZS9saW51eC9wY2ktZXBjLmggaW5kZXggZjY0MWJhZC4uZmMyZmVlZSAxMDA2NDQNCj4g PiA+ID4gPiA+IC0tLSBhL2luY2x1ZGUvbGludXgvcGNpLWVwYy5oDQo+ID4gPiA+ID4gPiArKysg Yi9pbmNsdWRlL2xpbnV4L3BjaS1lcGMuaA0KPiA+ID4gPiA+ID4gQEAgLTk2LDYgKzk2LDcgQEAg c3RydWN0IHBjaV9lcGMgew0KPiA+ID4gPiA+ID4gIAljb25zdCBzdHJ1Y3QgcGNpX2VwY19vcHMJ Km9wczsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IHBjaV9lcGNfbWVtCQkqbWVtOw0KPiA+ID4gPiA+ ID4gIAl1OAkJCQltYXhfZnVuY3Rpb25zOw0KPiA+ID4gPiA+ID4gKwl1MzIJCQkJcGZfb2Zmc2V0 Ow0KPiA+ID4NCj4gPiA+IEFsc28gcGZfb2Zmc2V0IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFp bCBuZWVkZWQgb25seSBieSB0aGUgZHJpdmVyDQo+ID4gPiB0byBjYWxjdWxhdGUgd2hlcmUgdGhl IFBGIGlzIC0gaXQgZG9lc24ndCBzZWVtIHJpZ2h0IHRoYXQgd2Ugc2hhcmUNCj4gPiA+IHRoaXMg d2l0aCB0aGUgRVAgY29udHJvbGxlciBmcmFtZXdvcmsgKHdoZXJlYXMgbWF4X2Z1bmN0aW9ucyBp cyB1c2VkDQo+ID4gPiBhcyBhIGJvdW5kcyBjaGVjayBmb3IgZnVuY19ubyBpbiB0aGUgZnJhbWV3 b3JrIGNhbGxzKS4NCj4gPiA+DQo+ID4gPiBJJ2Qgc3VnZ2VzdCB0aGF0IHBmX29mZnNldCBpcyBt b3ZlZCB0byBhIGR3YyBzdHJ1Y3R1cmUsIHBlcmhhcHMNCj4gZHdfcGNpZV9lcD8NCj4gPiBJIGFk ZCB0aGUgdmFyaWFibGUgdG8gdGhpcyBzdHJ1Y3QgaXMgY29uc2lkZXIgdGhhdCBhbGwgUEYgaXMg YmVsb25nIHRvDQo+ID4gYSBQQ0llIGNvbnRyb2xsZXIsIGFuZCB0aGUgcGNpX2VwYyBpbmRpY2F0 ZSBhIFBDSWUgY29udHJvbGxlciwgc28gSQ0KPiA+IGFkZCB0aGlzIHZhcmlhYmxlIHRvIHRoaXMg c3RydWN0LCB3aGF0IGRvIHlvdSB0aGluayBhYm91dCB0aGlzPyBJIGFtIG5vdCBzdXJlDQo+IHdo ZXRoZXIgSSBzaG91bGQgYWRkIHRoaXMgdmFyaWFibGUgdG8gZHdfcGNpZV9lcC4NCj4gDQo+IFRo ZSBFUEMgZnJhbWV3b3JrIHdvbid0IHVzZSB0aGUgcGZfb2Zmc2V0IGFuZCBkb2Vzbid0IG5lZWQg aXQuIEl0IGFic3RyYWN0cw0KPiB0aGUgY29tcGxleGl0eSBvZiB3cml0aW5nIHRvIHRoZSBjb25m aWcgYWRkcmVzcyBzcGFjZSAoYW5kIHNpbWlsYXIpIHRocm91Z2ggdGhlDQo+IHBjaV9lcGNfb3Bz LiBJJ2Qgc3VnZ2VzdCB0aGF0IHRoZSBFUEMgZnJhbWV3b3JrIChhbmQgcGNpX2VwYyBzdHJ1Y3Qp IG9ubHkNCj4gbmVlZHMgdG8gY29udGFpbiB3aGF0ICppdCogbmVlZHMuIEVzcGVjaWFsbHkgZ2l2 ZW4gdGhhdCBub3QgYWxsIGVwIGRyaXZlcnMgaGF2ZQ0KPiBhIHBmX29mZnNldCBvciBzaW1pbGFy Lg0KPiANCj4gSSB1bmRlcnN0YW5kIHRoZSBsb2dpYyB0aGF0IHBjaV9lcGMgcmVwcmVzZW50cyBh IEVQIGNvbnRyb2xsZXIsIGJ1dCBJIHRoaW5rIHlvdQ0KPiBzaG91bGQgY29uc2lkZXIgdGhhdCBp dCBhY3R1YWxseSByZXByZXNlbnRzIGEgKmdlbmVyaWMqIEVQIGNvbnRyb2xsZXIgaW4gdGhlDQo+ IGNvbnRleHQgb2YgYSBmcmFtZXdvcmsgd2hpY2ggc29sZWx5IHNlcnZlcyB0aGUgcHVycG9zZSBv ZiBjb25uZWN0aW5nDQo+IGNvbnRyb2xsZXJzIHdpdGggZnVuY3Rpb25zLiBXaGVyZWFzIHRoZSBk d19wY2llX2VwIHJlcHJlc2VudHMgYSBzcGVjaWZpYw0KPiB0eXBlIG9mIGNvbnRyb2xsZXIgKERX KSAtIGFzIHRoZSBwZl9vZmZzZXQgaXMgKHNvIGZhcikgcmVsYXRpbmcgdG8gb25seSBEVw0KPiBj b250cm9sbGVycyAoYW5kIGFzIGNvbmZpcm1lZCBieSB0aGUgRFQgbWFwcGluZykgdGhlbiBpdCBt YWtlcyBzZW5zZSB0byBub3QNCj4gbW92ZSBwZl9vZmZzZXQgZnJvbSB0aGUgc3BlY2lhbGlzZWQg c3BlY2lmaWMgY29udHJvbGxlciB0byB0aGUgZ2VuZXJpYw0KPiBjb250cm9sbGVyLiAoT3IgYXQg bGVhc3QgdGhpcyBpcyBob3cgSSByYXRpb25hbGlzZSBpdCwgdGhvdWdoIHRoZSBFUEMgZnJhbWV3 b3JrIGlzDQo+IHNvbWV0aGluZyBxdWl0ZSB1bmZhbWlsaWFyIHRvIG1lKS4NCkkgdGhpbmsgdGhp cyBpcyBtb3JlIHJlYXNvbmFibGUgYnkgeW91ciBkZXRhaWwgZXhwbGFpbmluZywgSSB3aWxsIG1v dmUgcGZfb2Zmc2V0DQp0byB0aGUgc3RydWN0IGR3X3BjaWVfZXAsIHRoYW5rcyBhZ2FpbiENCj4g DQo+IFRoYW5rcywNCj4gDQo+IEFuZHJldyBNdXJyYXkNCj4gDQo+ID4gPg0KPiA+ID4gVGhhbmtz LA0KPiA+ID4NCj4gPiA+IEFuZHJldyBNdXJyYXkNCj4gPiA+DQo+ID4gPiA+ID4gPiAgCXN0cnVj dCBjb25maWdfZ3JvdXAJCSpncm91cDsNCj4gPiA+ID4gPiA+ICAJLyogc3BpbmxvY2sgdG8gcHJv dGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgYWNjZXNzIG9mIEVQDQo+IGNvbnRyb2xsZXIgKi8NCj4g PiA+ID4gPiA+ICAJc3BpbmxvY2tfdAkJCWxvY2s7DQo+ID4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+ ID4gMi45LjUNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiA+ID4gPiA+IGxpbnV4 LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0DQo+ID4gPiA+ID4gPiBsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcNCj4gPiA+ID4gPiA+IGh0dHA6Ly9saXN0cw0KPiA+ID4gPiA+ID4g LmluZnJhZGVhZC5vcmclMkZtYWlsbWFuJTJGbGlzdGluZm8lMkZsaW51eC1hcm0ta2VybmVsJmFt cDtkYXQNCj4gPiA+ID4gPiA+IGE9MA0KPiA+ID4gMg0KPiA+ID4gPiA+ID4gJQ0KPiA+ID4gPiA+ IDdDMA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4NCj4gMSU3Q3hpYW93ZWkuYmFvJTQw bnhwLmNvbSU3QzBlMzkxNjhmNmYxNDRkYjY4NDAzMDhkNzIxNzQyMDQwJTcNCj4gPiA+ID4gPiBD Njg2ZWExZA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4NCj4gM2JjMmI0YzZmYTkyY2Q5 OWM1YzMwMTYzNSU3QzAlN0MxJTdDNjM3MDE0NjU0OTk4NTI0NDUyJmFtcDtzZA0KPiA+ID4gPiA+ IGF0YT1iUDdlaA0KPiA+ID4gPiA+ID4gY2psR1hDTVZGRTJiNGYxMlE2ZkdWN2xRJTJGNWk5cUlp OUZvUGxiSSUzRCZhbXA7cmVzZXJ2ZWQ9MA0K