From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from na01-obe.outbound.protection.outlook.com (mail-centralusazon11021023.outbound.protection.outlook.com [52.101.62.23]) by sourceware.org (Postfix) with ESMTPS id 3840C3858011 for ; Thu, 4 Aug 2022 00:25:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3840C3858011 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TzLj5qwrXiO1S+skpXFPQldcV47rsl6Sw0GwvlghPysS/TK8CSzpCrmUys0XdmMy/IaRwGoDSIQeSLDh2FnTY7F9XC8SUQDRvwN1svyv/VFSW04/RhfsgP5vxftcG3a05kEbTutUvTZ5/nzcb7RGqpbS3RtucM1YuySVvp7kqYxbDJwtz4sP7LD227vLRG9FnrnTPDYOLdGekodgzKgkq38ikfky5mSo3Xf22MBMuwGRNjy50LgVk36mKlGUvhKHcyKoQuzTVzb3+bDkRdXbYTEOSYIxtbNAjE4RauojZ72mKgBWUggByTFy2K695NOfN3lI7gKYXTRz501PWQR3hA== 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=DbUHdkoseJiZY0IeWImvVQlyGOcQ4YweSVdKU2YEL3g=; b=nuZ9zeSAcKAnMiyBoDMK1RJsSmjAColDV4W/x2oLrzSGv/wmAMS+s7h1vLhiWIAXZWu7GTuNrRd5+K/5Kvzib462Z0jzBo9Z2JUm5vEvgOpM57YmUQB2fzIa9mfUizWzfQZPRK450AJr75Cil4yWXB9Qf86M+NxvM2lMwFRXqcMnjaafhVucFUQ10rO1k3Zdhk5EJeVz9yLCh/bt7gw9ouRCc5uGS6QvnLXtI52U+O2Or9zwYsUnNaJYaeOUiFou76ZvX1zUr36qvjgOtDwbm9JwAVKj1aQ7xxoeT0D3jux3QokhDUAdZ8Juqf7gemTg9SCRMInZL6wgRzM8excPUQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none Received: from MW2PR2101MB1770.namprd21.prod.outlook.com (2603:10b6:302:8::14) by SJ0PR21MB1949.namprd21.prod.outlook.com (2603:10b6:a03:29d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.3; Thu, 4 Aug 2022 00:25:03 +0000 Received: from MW2PR2101MB1770.namprd21.prod.outlook.com ([fe80::bc20:e24c:cbbf:e9da]) by MW2PR2101MB1770.namprd21.prod.outlook.com ([fe80::bc20:e24c:cbbf:e9da%5]) with mapi id 15.20.5525.003; Thu, 4 Aug 2022 00:25:03 +0000 From: Eugene Rozenfeld To: "gcc-patches@gcc.gnu.org" CC: Andi Kleen , Jan Hubicka , Jason Merrill Subject: RE: [PING][PATCH] Add instruction level discriminator support. Thread-Topic: [PING][PATCH] Add instruction level discriminator support. Thread-Index: Adh8/GsLGopuj0OBTK2TA9TaqhlGjANYT+5wB06iNLA= Date: Thu, 4 Aug 2022 00:25:03 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=5674bbf9-4e6b-44bc-bb5e-cef413f54884; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2022-06-02T01:48:48Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b63cc21e-e31e-47ae-d34b-08da75afc671 x-ms-traffictypediagnostic: SJ0PR21MB1949:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Uxv3paf5j8neVwr6mYZsgehW3/UQhWBEecyMGdUiarTUv4sD4MoWdMgw/N8yvBZSZg6irlGtKs5mlzqXiITpTGDYB9EoattMQXKEOYslz50YjsDgiFRZ1H0VublGi+ACbhdBhl92pCf9ONoNZMx1EbazjLrTdS6+5gWuEZPDin+KupvWM9uLtHDTP52619oc7D0bHw1q0aXNFJS8yJ6qjjL0rIvFNojAWs8VGSlgfaPC9g8+pMbd32bq4CAqVaTeC5RnCuaiLU3P7IRCyPQHoA1FbeQyq2V1Q1aNQiFz1kwiLy7459oZ+8LiwenLcNS5RyB61k9DsZP5QHEjZhzvPWAYhj35pziNzGWD0VbPYD3X5/v0fomu+nzQ1PVD6plFktnmqMZ2EIQmyFCgKXwgl1qo3Xr7zLxvLaXNqntCIIfC8ERV3x0lUcRuVaGKarIdSY7z7gQMfPdglfRb+g2rzB2ngbzhGP0NzOI7EwnZgb2iUXVyGi9TUJ42Z78hFSFdwMzycvvUFKblRCNIaRlzJI6cTvYTtweJQzrKPPIa2IiXIhAoo7Pa8Vnbf0+xrZCrR1mPDaIKmKeRqe1KFSBaK6StLyQxSgKikSZil4YVZhJaa2wKBwgeAuLb0NSD5PeYCirrZFdetULOELNkXduH66xkv5KOzFy63HvjTC4X3DdTK/X6C+7KfSONmZm/FulI12T0hoplT9YeAcGDGVHDVIkiv5iICs9G4NyjyBgfHGId+tdduAd0lfKWipR83JyYTORz1Pr9dFmvInjcSGdXYtQTcBju3aAAxxSW059+jpT8/tQA7y6zTgcknm9+R1kx6mBhyP93F26n41c/GX+9ilEUQH5xY3I5NSVDa7PIDFaZwzZmAxrvpCkSxtwAVpLS x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR2101MB1770.namprd21.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(346002)(396003)(136003)(376002)(39860400002)(366004)(451199009)(316002)(54906003)(38070700005)(966005)(82960400001)(10290500003)(82950400001)(55016003)(2906002)(6916009)(99936003)(86362001)(478600001)(122000001)(71200400001)(5660300002)(4326008)(76116006)(8676002)(8936002)(9686003)(38100700002)(64756008)(66476007)(66556008)(66446008)(41300700001)(66946007)(83380400001)(6506007)(186003)(7696005)(52536014)(8990500004)(53546011)(33656002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?1rh/fma4vmSY4iTP3bJKZD2gses4zRjE0fxKRr59Ff/y34TQTHKsnHH7FbqX?= =?us-ascii?Q?zwlAv8mjdlCy4uqyyNlY4sSSGqzdZAKK508bakDeQOcm/eCHRwXqYRMD9JIt?= =?us-ascii?Q?o3Q9PawNP8hDETtTMCnkvuheJiKtv7OYFhdACW6IBSoNtPTLzev5QKLumqbn?= =?us-ascii?Q?YBN4Tk/RIE/TVP+kUm3daT8TtpulS+8soAYz+s7Tz3Cf8oUFaKypIs/Is1qm?= =?us-ascii?Q?gtEaVaGWbptaNdMaV9xAgTbPSsCXsrYKAZsEn0bXQ38m3uHyzN9mkUCW+scB?= =?us-ascii?Q?ocqpsBmRlAUs0i3npubuzeud8rCcEhn2Qj9JHh7qG9TrrRQbf7uaBmGMypdX?= =?us-ascii?Q?HkDHEgdSAGXUPB8hupOpxWVEGqk9P+wnQKdkoafemDZs6nIV22j7vlME0nZi?= =?us-ascii?Q?zRLiDXmL95lSZZzFCatAYnrMptHzAOgNB4CTkZooXLWwPQxvUIk3hr3EYVUh?= =?us-ascii?Q?DfNwlWDx4YdllmuWZLzywucuz64V4kUHNrX5W7ZQA+huiq/8xiDOGalhI2Bk?= =?us-ascii?Q?C+bW9kHeSvQZYAmshj/ku3aT4hvCTKcJRQzwCw3E6REJ5KnEhLzGkVKDwcSt?= =?us-ascii?Q?R9gITOxb+I+9qEfBiFnI0CLqOxavMuNPk292zSTuRsHnEac32tvgIP/KGkgl?= =?us-ascii?Q?FwAiTKZKUABl83VHqlJMH2NJWrI7A3+8rs8rq/G9m7h5KYVD2pfKjBsr+oVh?= =?us-ascii?Q?LA4x6aE3RPK8UZ3HCNSr6j3Jv/3L0J5YylTiWYA3SN/+fVvtAuPLWr3GPtWi?= =?us-ascii?Q?6epENPezD/9+8z9ju9JCFegddukGW77sZUonW9BlGBMunnXrUe6YnPW/HaqU?= =?us-ascii?Q?ADv/Qq1iZGBEY1DBvc3+CZsAteUFm7UwLLZmV4TzGtsuOlr5EpYlL1ypBd7t?= =?us-ascii?Q?h4fYOAjqk9yLym1zM/2Ni9/r4XHWXw+H/NMyVZsbskrSftcpbGZK5W60fZuw?= =?us-ascii?Q?cznJ6ksJcCQ/FNrJujUcH/dbD5YlgpievV5j5W8BMLDRHLImBmHDWJdNL8Ps?= =?us-ascii?Q?StSqg/52Q74aQ11WZAApJMYDPPZOPdAYCWdMH0yr44XM702OdAVPjli8ItEv?= =?us-ascii?Q?Mk8/PMPFqsUrwIyEp/vZ5HIMyfw9YKr0wbkVXLQvlxywTVi86T3C1DNpM0Ma?= =?us-ascii?Q?oPgaVscgFoSKHkfxu260i/rxyFJWWWTcRtERxpTFP1SHbrIh4deSDYJ9/WTw?= =?us-ascii?Q?BD9ZB7l1MRapITvt2+NhzRghh/7+fvuXWeSDvEw8jOEPK676phGk9B2aTB7F?= =?us-ascii?Q?NTsPQ3VwAdgH1WN7CaLAnSwtJwiBT8z+Z7dFTURlpBTN69wIqWkCJZhvcmYR?= =?us-ascii?Q?qfrQmDM5Qc3fOgYeDrRRxNJqMCs+NkuaQdPtB9D1DVAbUijxQTj0lQPd0XU1?= =?us-ascii?Q?NTBCgEBds/V8uWAYaFDc9BDkiozIYNGK47shRrznhvNmAlzb5RGN4M6svLXp?= =?us-ascii?Q?XEZLPOUDBL9/eflLQvCCy87lYcUAayKiAJbSIa8ItQHJV0klTpmKfMoN7GNF?= =?us-ascii?Q?yw/GMvJBln3tGLdDy05yR2aLFqr9yEGbPL4Mlmkf6WvV4EiPobY5/w6+g5Bk?= =?us-ascii?Q?MVjNFnpqSLUylfFJUnzT1mDCjVB2/HqUjGRrCkhSXGxl1DGq47QLU4MCqeUX?= =?us-ascii?Q?5GL8vIrUj4R5qCTrdz51tM7h7x/HZMZQkNyRaEGWphHW?= Content-Type: multipart/mixed; boundary="_002_MW2PR2101MB1770D383827C3C1EF831128E919F9MW2PR2101MB1770_" MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR21MB1949 X-Spam-Status: No, score=-3.6 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Aug 2022 00:25:08 -0000 --_002_MW2PR2101MB1770D383827C3C1EF831128E919F9MW2PR2101MB1770_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable One more ping for this patch https://gcc.gnu.org/pipermail/gcc-patches/2022= -June/596065.html CC Jason since this changes discriminators emitted in dwarf. Thanks, Eugene -----Original Message----- From: Eugene Rozenfeld=20 Sent: Monday, June 27, 2022 12:45 PM To: gcc-patches@gcc.gnu.org; Andi Kleen ; Jan Hubicka <= hubicka@ucw.cz> Subject: RE: [PING][PATCH] Add instruction level discriminator support. Another ping for https://gcc.gnu.org/pipermail/gcc-patches/2022-June/596065= .html . I got a review from Andi (https://gcc.gnu.org/pipermail/gcc-patches/2022-Ju= ne/596549.html) but I also need a review from someone who can approve the c= hanges. Thanks, Eugene -----Original Message----- From: Eugene Rozenfeld=20 Sent: Friday, June 10, 2022 12:03 PM To: gcc-patches@gcc.gnu.org; Andi Kleen ; Jan Hubicka <= hubicka@ucw.cz> Subject: [PING][PATCH] Add instruction level discriminator support. Hello, I'd like to ping this patch: https://gcc.gnu.org/pipermail/gcc-patches/2022= -June/596065.html Thanks, Eugene -----Original Message----- From: Gcc-patches = On Behalf Of Eugene Rozenfeld via Gcc-patches Sent: Thursday, June 02, 2022 12:22 AM To: gcc-patches@gcc.gnu.org; Andi Kleen ; Jan Hubicka <= hubicka@ucw.cz> Subject: [EXTERNAL] [PATCH] Add instruction level discriminator support. This is the first in a series of patches to enable discriminator support in= AutoFDO. This patch switches to tracking discriminators per statement/instruction in= stead of per basic block. Tracking per basic block was problematic since no= t all statements in a basic block needed a discriminator and, also, later o= ptimizations could move statements between basic blocks making correlation = during AutoFDO compilation unreliable. Tracking per statement also allows u= s to assign different discriminators to multiple function calls in the same= basic block. A subsequent patch will add that support. The idea of this patch is based on commit 4c311d95cf6d9519c3c20f641cc77af7d= f491fdf by Dehao Chen in vendors/google/heads/gcc-4_8 but uses a slightly different= approach. In Dehao's work special (normally unused) location ids and side = tables were used to keep track of locations with discriminators. Things hav= e changed since then and I don't think we have unused location ids anymore.= Instead, I made discriminators a part of ad-hoc locations. The difference from Dehao's work also includes support for discriminator re= ading/writing in lto streaming and in modules. Tested on x86_64-pc-linux-gnu. --_002_MW2PR2101MB1770D383827C3C1EF831128E919F9MW2PR2101MB1770_ Content-Type: application/octet-stream; name="0001-Add-instruction-level-discriminator-support.patch" Content-Description: 0001-Add-instruction-level-discriminator-support.patch Content-Disposition: attachment; filename="0001-Add-instruction-level-discriminator-support.patch"; size=31949; creation-date="Thu, 04 Aug 2022 00:23:00 GMT"; modification-date="Thu, 04 Aug 2022 00:25:03 GMT" Content-Transfer-Encoding: base64 RnJvbSA3ZDQzZjJiM2I2OTQyMGYxYjU3NjE4ZGM4Y2NkMjI1YzI2NjQyM2EzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFdWdlbmUgUm96ZW5mZWxkIDxlcm96ZW5AbWljcm9zb2Z0LmNv bT4KRGF0ZTogVGh1LCAyMSBBcHIgMjAyMiAxNTo0MjoxNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd IEFkZCBpbnN0cnVjdGlvbiBsZXZlbCBkaXNjcmltaW5hdG9yIHN1cHBvcnQuCgpUaGlzIGlzIHRo ZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBwYXRjaGVzIHRvIGVuYWJsZSBkaXNjcmltaW5hdG9yIHN1 cHBvcnQKaW4gQXV0b0ZETy4KClRoaXMgcGF0Y2ggc3dpdGNoZXMgdG8gdHJhY2tpbmcgZGlzY3Jp bWluYXRvcnMgcGVyIHN0YXRlbWVudC9pbnN0cnVjdGlvbgppbnN0ZWFkIG9mIHBlciBiYXNpYyBi bG9jay4gVHJhY2tpbmcgcGVyIGJhc2ljIGJsb2NrIHdhcyBwcm9ibGVtYXRpYyBzaW5jZQpub3Qg YWxsIHN0YXRlbWVudHMgaW4gYSBiYXNpYyBibG9jayBuZWVkZWQgYSBkaXNjcmltaW5hdG9yIGFu ZCwgYWxzbywgbGF0ZXIKb3B0aW1pemF0aW9ucyBjb3VsZCBtb3ZlIHN0YXRlbWVudHMgYmV0d2Vl biBiYXNpYyBibG9ja3MgbWFraW5nIGNvcnJlbGF0aW9uCmR1cmluZyBBdXRvRkRPIGNvbXBpbGF0 aW9uIHVucmVsaWFibGUuIFRyYWNraW5nIHBlciBzdGF0ZW1lbnQgYWxzbyBhbGxvd3MKdXMgdG8g YXNzaWduIGRpZmZlcmVudCBkaXNjcmltaW5hdG9ycyB0byBtdWx0aXBsZSBmdW5jdGlvbiBjYWxs cyBpbiB0aGUgc2FtZQpiYXNpYyBibG9jay4gQSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgYWRkIHRo YXQgc3VwcG9ydC4KClRoZSBpZGVhIG9mIHRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gY29tbWl0IDRj MzExZDk1Y2Y2ZDk1MTljM2MyMGY2NDFjYzc3YWY3ZGY0OTFmZGYKYnkgRGVoYW8gQ2hlbiBpbiB2 ZW5kb3JzL2dvb2dsZS9oZWFkcy9nY2MtNF84IGJ1dCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50 CmFwcHJvYWNoLiBJbiBEZWhhbydzIHdvcmsgc3BlY2lhbCAobm9ybWFsbHkgdW51c2VkKSBsb2Nh dGlvbiBpZHMgYW5kIHNpZGUgdGFibGVzCndlcmUgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGxvY2F0 aW9ucyB3aXRoIGRpc2NyaW1pbmF0b3JzLiBUaGluZ3MgaGF2ZSBjaGFuZ2VkCnNpbmNlIHRoZW4g YW5kIEkgZG9uJ3QgdGhpbmsgd2UgaGF2ZSB1bnVzZWQgbG9jYXRpb24gaWRzIGFueW1vcmUuIElu c3RlYWQsCkkgbWFkZSBkaXNjcmltaW5hdG9ycyBhIHBhcnQgb2YgYWQtaG9jIGxvY2F0aW9ucy4K ClRoZSBkaWZmZXJlbmNlIGZyb20gRGVoYW8ncyB3b3JrIGFsc28gaW5jbHVkZXMgc3VwcG9ydCBm b3IgZGlzY3JpbWluYXRvcgpyZWFkaW5nL3dyaXRpbmcgaW4gbHRvIHN0cmVhbWluZyBhbmQgaW4g bW9kdWxlcy4KClRlc3RlZCBvbiB4ODZfNjQtcGMtbGludXgtZ251LgoKZ2NjL0NoYW5nZUxvZzoK CgkqIGJhc2ljLWJsb2NrLmg6IFJlbW92ZSBkaXNjcmltaW5hdG9yIGZyb20gYmFzaWMgYmxvY2tz LgoJKiBjZmdob29rcy5jYyAoc3BsaXRfYmxvY2tfMSk6IFJlbW92ZSBkaXNjcmltaW5hdG9yIGZy b20gYmFzaWMgYmxvY2tzLgoJKiBjcC9tb2R1bGUuY2MgKHdyaXRlX2xvY2F0aW9uKTogV3JpdGUg ZGlzY3JpbWluYXRvci4KCShyZWFkX2xvY2F0aW9uKTogUmVhZCBkaXNjcmltaW5hdG9yLgoJKiBm aW5hbC5jYyAoZmluYWxfc3RhcnRfZnVuY3Rpb25fMSk6IFN3aXRjaCBmcm9tIHBlci1iYiB0byBw ZXIgc3RhdGVtZW50CglkaXNjcmltaW5hdG9yLgoJKGZpbmFsX3NjYW5faW5zbl8xKTogRG9uJ3Qg a2VlcCB0cmFjayBvZiBiYXNpYyBibG9jayBkaXNjcmltaW5hdG9ycy4KCShjb21wdXRlX2Rpc2Ny aW1pbmF0b3IpOiBTd2l0Y2ggZnJvbSBiYXNpYyBibG9jayBkaXNjcmltaW5hdG9ycyB0bwoJaW5z dHJ1Y3Rpb24gZGlzY3JpbWluYXRvcnMuCgkoaW5zbl9kaXNjcmltaW5hdG9yKTogTmV3IGZ1bmN0 aW9uIHRvIHJldHVybiBpbnN0cnVjdGlvbiBkaXNjcmltaW5hdG9yLgoJKG5vdGljZV9zb3VyY2Vf bGluZSk6IFVzZSBpbnNuX2Rpc2NyaW1pbmF0b3IuCgkqIGdpbXBsZS1wcmV0dHktcHJpbnQuY2Mg KGR1bXBfZ2ltcGxlX2JiX2hlYWRlcik6IFJlbW92ZSBkdW1waW5nIG9mCgliYXNpYyBibG9jayBk aXNjcmltaW5hdG9ycy4KCSogZ2ltcGxlLXN0cmVhbWVyLWluLmNjIChpbnB1dF9iYik6IFJlbW92 ZSByZWFkaW5nIG9mIGJhc2ljIGJsb2NrCglkaXNjcmltaW5hdG9ycy4KCSogZ2ltcGxlLXN0cmVh bWVyLW91dC5jYyAob3V0cHV0X2JiKTogUmVtb3ZlIHdyaXRpbmcgb2YgYmFzaWMgYmxvY2sKCWRp c2NyaW1pbmF0b3JzLgoJKiBpbnB1dC5jYyAobWFrZV9sb2NhdGlvbik6IFBhc3MgMCBkaXNjcmlt aW5hdG9yIHRvIENPTUJJTkVfTE9DQVRJT05fREFUQS4KCShsb2NhdGlvbl93aXRoX2Rpc2NyaW1p bmF0b3IpOiBOZXcgZnVuY3Rpb24gdG8gY29tYmluZSBsb2N1cyB3aXRoCglhIGRpc2NyaW1pbmF0 b3IuCgkoaGFzX2Rpc2NyaW1pbmF0b3IpOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSBsb2Nh dGlvbiBoYXMgYSBkaXNjcmltaW5hdG9yLgoJKGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jdXMp OiBOZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBkaXNjcmltaW5hdG9yCglmcm9tIGEgbG9jYXRpb24u CgkqIGlucHV0Lmg6IERlY2xhcmF0aW9ucyBvZiBuZXcgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9u IG9mCglMT0NBVElPTl9ESVNDUklNSU5BVE9SLgoJKiBsdG8tc3RyZWFtZXItaW4uY2MgKGNtcF9s b2MpOiBVc2UgZGlzY3JpbWluYXRvcnMgaW4gbG9jYXRpb24gY29tcGFyaXNvbi4KCShhcHBseV9s b2NhdGlvbl9jYWNoZSk6IEtlZXAgdHJhY2sgb2YgY3VycmVudCBkaXNjcmltaW5hdG9yLgoJKGlu cHV0X2xvY2F0aW9uX2FuZF9ibG9jayk6IFJlYWQgZGlzY3JpbWluYXRvciBmcm9tIHN0cmVhbS4K CSogbHRvLXN0cmVhbWVyLW91dC5jYyAoY2xlYXJfbGluZV9pbmZvKTogU2V0IGN1cnJlbnQgZGlz Y3JpbWluYXRvciB0bwoJVUlOVF9NQVguCgkobHRvX291dHB1dF9sb2NhdGlvbl8xKTogV3JpdGUg ZGlzY3JpbWluYXRvciB0byBzdHJlYW0uCgkqIGx0by1zdHJlYW1lci5oOiBBZGQgZGlzY3JpbWlu YXRvciB0byBjYWNoZWRfbG9jYXRpb24uCglBZGQgY3VycmVudF9kaXNjciB0byBsdG9fbG9jYXRp b25fY2FjaGUuCglBZGQgY3VycmVudF9kaXNjciB0byBvdXRwdXRfYmxvY2suCgkqIHByaW50LXJ0 bC5jYyAocHJpbnRfcnR4X29wZXJhbmRfY29kZV9pKTogUHJpbnQgZGlzY3JpbWluYXRvci4KCSog cnRsLmg6IEFkZCBleHRlcm4gZGVjbGFyYXRpb24gb2YgaW5zbl9kaXNjcmltaW5hdG9yLgoJKiB0 cmVlLWNmZy5jYyAoYXNzaWduX2Rpc2NyaW1pbmF0b3IpOiBOZXcgZnVuY3Rpb24gdG8gYXNzaWdu IGEgdW5pcXVlCglkaXNjcmltaW5hdG9yIHZhbHVlIHRvIGFsbCBzdGF0ZW1lbnRzIGluIGEgYmFz aWMgYmxvY2sgdGhhdCBoYXZlIHRoZSBnaXZlbgoJbGluZSBudW1iZXIuCgkoYXNzaWduX2Rpc2Ny aW1pbmF0b3JzKTogQXNzaWduIGRpc2NyaW1pbmF0b3JzIHRvIHN0YXRlbWVudCBsb2NhdGlvbnMu CgkqIHRyZWUtcHJldHR5LXByaW50LmNjIChkdW1wX2xvY2F0aW9uKTogRHVtcCBkaXNjcmltaW5h dG9ycy4KCSogdHJlZS5jYyAoc2V0X2Jsb2NrKTogUHJlc2VydmUgZGlzY3JpbWluYXRvciB3aGVu IHNldHRpbmcgYmxvY2suCgkoc2V0X3NvdXJjZV9yYW5nZSk6IFByZXNlcnZlIGRpc2NyaW1pbmF0 b3Igd2hlbiBzZXR0aW5nIHNvdXJjZSByYW5nZS4KCmxpYmNwcC9DaGFuZ2VMb2c6CgoJKiBpbmNs dWRlL2xpbmUtbWFwLmg6IEFkZCBkaXNjcmltaW5hdG9yIHRvIGxvY2F0aW9uX2FkaG9jX2RhdGEu CgkoZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyk6IEFkZCBkaXNjcmltaW5hdG9yIHBhcmFtZXRlci4K CShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyk6IEFkZCBleHRlcm5hbCBkZWNsYXJh dGlvbi4KCShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvYyk6IEFkZCBleHRlcm5hbCBkZWNsYXJh dGlvbi4KCShDT01CSU5FX0xPQ0FUSU9OX0RBVEEpOiBBZGQgZGlzY3JpbWluYXRvciBwYXJhbWV0 ZXIuCgkqIGxleC5jYyAoZ2V0X2xvY2F0aW9uX2Zvcl9ieXRlX3JhbmdlX2luX2N1cl9saW5lKSBQ YXNzIDAgZGlzY3JpbWluYXRvcgoJaW4gYSBjYWxsIHRvIENPTUJJTkVfTE9DQVRJT05fREFUQS4K CSh3YXJuX2Fib3V0X25vcm1hbGl6YXRpb24pOiBQYXNzIDAgZGlzY3JpbWluYXRvciBpbiBhIGNh bGwgdG8KCUNPTUJJTkVfTE9DQVRJT05fREFUQS4KCShfY3BwX2xleF9kaXJlY3QpOiBQYXNzIDAg ZGlzY3JpbWluYXRvciBpbiBhIGNhbGwgdG8KCUNPTUJJTkVfTE9DQVRJT05fREFUQS4KCSogbGlu ZS1tYXAuY2MgKGxvY2F0aW9uX2FkaG9jX2RhdGFfaGFzaCk6IFVzZSBkaXNjcmltaW5hdG9yIGNv bXB1dGUKCWxvY2F0aW9uX2FkaG9jX2RhdGEgaGFzaC4KCShsb2NhdGlvbl9hZGhvY19kYXRhX2Vx KTogVXNlIGRpc2NyaW1pbmF0b3Igd2hlbiBjb21wYXJpbmcKCWxvY2F0aW9uX2FkaG9jX2RhdGEu CgkoY2FuX2JlX3N0b3JlZF9jb21wYWN0bHlfcCk6IENoZWNrIGRpc2NyaW1pbmF0b3IgdG8gZGV0 ZXJtaW5lCgljb21wYWN0IHN0b3JhZ2UuCgkoZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyk6IEFkZCBk aXNjcmltaW5hdG9yIHBhcmFtZXRlci4KCShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xv Yyk6IE5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIGRpc2NyaW1pbmF0b3IKCWZyb20gYW4gYWQtaG9j IGxvY2F0aW9uLgoJKGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jKTogTmV3IGZ1bmN0aW9uIHRv IGdldCB0aGUgZGlzY3JpbWluYXRvcgoJZnJvbSBhIGxvY2F0aW9uLgoKZ2NjL3Rlc3RzdWl0ZS9D aGFuZ2VMb2c6CgoJKiBjLWMrKy1jb21tb24vdWJzYW4vcHI4NTIxMy5jOiBQYXNzIC1nbm8tc3Rh dGVtZW50LWZyb250aWVycy4KLS0tCiBnY2MvYmFzaWMtYmxvY2suaCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNSAtLS0KIGdjYy9jZmdob29rcy5jYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAxIC0KIGdjYy9jcC9tb2R1bGUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA1ICsrLQogZ2NjL2ZpbmFsLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjYg KysrKysrKy0tLS0tLS0tCiBnY2MvZ2ltcGxlLXByZXR0eS1wcmludC5jYyAgICAgICAgICAgICAg ICAgfCAgMiAtLQogZ2NjL2dpbXBsZS1zdHJlYW1lci1pbi5jYyAgICAgICAgICAgICAgICAgIHwg IDEgLQogZ2NjL2dpbXBsZS1zdHJlYW1lci1vdXQuY2MgICAgICAgICAgICAgICAgIHwgIDEgLQog Z2NjL2lucHV0LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzYgKysrKysrKysr KysrKysrKysrLS0KIGdjYy9pbnB1dC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA3ICsrKysKIGdjYy9sdG8tc3RyZWFtZXItaW4uY2MgICAgICAgICAgICAgICAgICAgICB8IDIx ICsrKysrKysrKystLQogZ2NjL2x0by1zdHJlYW1lci1vdXQuY2MgICAgICAgICAgICAgICAgICAg IHwgIDcgKysrKwogZ2NjL2x0by1zdHJlYW1lci5oICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDMgKysKIGdjYy9wcmludC1ydGwuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsr KwogZ2NjL3J0bC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vcHI4NTIxMy5jIHwgIDcgKysrLQogZ2NjL3Ry ZWUtY2ZnLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzkgKysrKysrKysrKysrKysr KysrLS0tLQogZ2NjL3RyZWUtcHJldHR5LXByaW50LmNjICAgICAgICAgICAgICAgICAgIHwgIDYg KysrKwogZ2NjL3RyZWUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysr Ky0tCiBsaWJjcHAvaW5jbHVkZS9saW5lLW1hcC5oICAgICAgICAgICAgICAgICAgfCAxMCArKysr LS0KIGxpYmNwcC9sZXguY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrLS0K IGxpYmNwcC9saW5lLW1hcC5jYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDM4ICsrKysrKysr KysrKysrKysrLS0tLQogMjEgZmlsZXMgY2hhbmdlZCwgMTg1IGluc2VydGlvbnMoKyksIDUyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9iYXNpYy1ibG9jay5oIGIvZ2NjL2Jhc2ljLWJs b2NrLmgKaW5kZXggYzlkMWZjOTFiYmIuLjFlYWUwM2QxYWNhIDEwMDY0NAotLS0gYS9nY2MvYmFz aWMtYmxvY2suaAorKysgYi9nY2MvYmFzaWMtYmxvY2suaApAQCAtMTQ4LDExICsxNDgsNiBAQCBz dHJ1Y3QgR1RZKChjaGFpbl9uZXh0ICgiJWgubmV4dF9iYiIpLCBjaGFpbl9wcmV2ICgiJWgucHJl dl9iYiIpKSkgYmFzaWNfYmxvY2tfZAogCiAgIC8qIEV4cGVjdGVkIG51bWJlciBvZiBleGVjdXRp b25zOiBjYWxjdWxhdGVkIGluIHByb2ZpbGUuY2MuICAqLwogICBwcm9maWxlX2NvdW50IGNvdW50 OwotCi0gIC8qIFRoZSBkaXNjcmltaW5hdG9yIGZvciB0aGlzIGJsb2NrLiAgVGhlIGRpc2NyaW1p bmF0b3IgZGlzdGluZ3Vpc2hlcwotICAgICBhbW9uZyBzZXZlcmFsIGJhc2ljIGJsb2NrcyB0aGF0 IHNoYXJlIGEgY29tbW9uIGxvY3VzLCBhbGxvd2luZyBmb3IKLSAgICAgbW9yZSBhY2N1cmF0ZSBz YW1wbGUtYmFzZWQgcHJvZmlsaW5nLiAgKi8KLSAgaW50IGRpc2NyaW1pbmF0b3I7CiB9OwogCiAv KiBUaGlzIGVuc3VyZXMgdGhhdCBzdHJ1Y3QgZ2ltcGxlX2JiX2luZm8gaXMgc21hbGxlciB0aGFu CmRpZmYgLS1naXQgYS9nY2MvY2ZnaG9va3MuY2MgYi9nY2MvY2ZnaG9va3MuY2MKaW5kZXggZTQz NTg5MWZhYzYuLjdhMGM1Zjc3ZWY5IDEwMDY0NAotLS0gYS9nY2MvY2ZnaG9va3MuY2MKKysrIGIv Z2NjL2NmZ2hvb2tzLmNjCkBAIC01NDEsNyArNTQxLDYgQEAgc3BsaXRfYmxvY2tfMSAoYmFzaWNf YmxvY2sgYmIsIHZvaWQgKmkpCiAgICAgcmV0dXJuIE5VTEw7CiAKICAgbmV3X2JiLT5jb3VudCA9 IGJiLT5jb3VudDsKLSAgbmV3X2JiLT5kaXNjcmltaW5hdG9yID0gYmItPmRpc2NyaW1pbmF0b3I7 CiAKICAgaWYgKGRvbV9pbmZvX2F2YWlsYWJsZV9wIChDRElfRE9NSU5BVE9SUykpCiAgICAgewpk aWZmIC0tZ2l0IGEvZ2NjL2NwL21vZHVsZS5jYyBiL2djYy9jcC9tb2R1bGUuY2MKaW5kZXggZDFk YzczNzI0ZDEuLjVlZDZiN2IwZjk0IDEwMDY0NAotLS0gYS9nY2MvY3AvbW9kdWxlLmNjCisrKyBi L2djYy9jcC9tb2R1bGUuY2MKQEAgLTE1NTg3LDYgKzE1NTg3LDggQEAgbW9kdWxlX3N0YXRlOjp3 cml0ZV9sb2NhdGlvbiAoYnl0ZXNfb3V0ICZzZWMsIGxvY2F0aW9uX3QgbG9jKQogCXJhbmdlLm1f c3RhcnQgPSBVTktOT1dOX0xPQ0FUSU9OOwogICAgICAgd3JpdGVfbG9jYXRpb24gKHNlYywgcmFu Z2UubV9zdGFydCk7CiAgICAgICB3cml0ZV9sb2NhdGlvbiAoc2VjLCByYW5nZS5tX2ZpbmlzaCk7 CisgICAgICB1bnNpZ25lZCBkaXNjcmltaW5hdG9yID0gZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9h ZGhvY19sb2MgKGxpbmVfdGFibGUsIGxvYyk7CisgICAgICBzZWMudSAoZGlzY3JpbWluYXRvcik7 CiAgICAgfQogICBlbHNlIGlmIChsb2MgPj0gTElORU1BUFNfTUFDUk9fTE9XRVNUX0xPQ0FUSU9O IChsaW5lX3RhYmxlKSkKICAgICB7CkBAIC0xNTY3MSw4ICsxNTY3Myw5IEBAIG1vZHVsZV9zdGF0 ZTo6cmVhZF9sb2NhdGlvbiAoYnl0ZXNfaW4gJnNlYykgY29uc3QKIAlpZiAocmFuZ2UubV9zdGFy dCA9PSBVTktOT1dOX0xPQ0FUSU9OKQogCSAgcmFuZ2UubV9zdGFydCA9IGxvY3VzOwogCXJhbmdl Lm1fZmluaXNoID0gcmVhZF9sb2NhdGlvbiAoc2VjKTsKKwl1bnNpZ25lZCBkaXNjcmltaW5hdG9y ID0gc2VjLnUgKCk7CiAJaWYgKGxvY3VzICE9IGxvYyAmJiByYW5nZS5tX3N0YXJ0ICE9IGxvYyAm JiByYW5nZS5tX2ZpbmlzaCAhPSBsb2MpCi0JICBsb2N1cyA9IGdldF9jb21iaW5lZF9hZGhvY19s b2MgKGxpbmVfdGFibGUsIGxvY3VzLCByYW5nZSwgTlVMTCk7CisJICBsb2N1cyA9IGdldF9jb21i aW5lZF9hZGhvY19sb2MgKGxpbmVfdGFibGUsIGxvY3VzLCByYW5nZSwgTlVMTCwgZGlzY3JpbWlu YXRvcik7CiAgICAgICB9CiAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvZ2NjL2ZpbmFsLmNj IGIvZ2NjL2ZpbmFsLmNjCmluZGV4IGE5ODY4ODYxYmQyLi4wZDhjMjFiMDY4MSAxMDA2NDQKLS0t IGEvZ2NjL2ZpbmFsLmNjCisrKyBiL2djYy9maW5hbC5jYwpAQCAtMTI2LDE4ICsxMjYsMTAgQEAg c3RhdGljIGludCBsYXN0X2NvbHVtbm51bTsKIC8qIERpc2NyaW1pbmF0b3Igd3JpdHRlbiB0byBh c3NlbWJseS4gICovCiBzdGF0aWMgaW50IGxhc3RfZGlzY3JpbWluYXRvcjsKIAotLyogRGlzY3Jp bWluYXRvciB0byBiZSB3cml0dGVuIHRvIGFzc2VtYmx5IGZvciBjdXJyZW50IGluc3RydWN0aW9u LgorLyogQ29tcHV0ZSBkaXNjcmltaW5hdG9yIHRvIGJlIHdyaXR0ZW4gdG8gYXNzZW1ibHkgZm9y IGN1cnJlbnQgaW5zdHJ1Y3Rpb24uCiAgICBOb3RlOiBhY3R1YWwgdXNhZ2UgZGVwZW5kcyBvbiBs b2NfZGlzY3JpbWluYXRvcl9raW5kIHNldHRpbmcuICAqLwotc3RhdGljIGludCBkaXNjcmltaW5h dG9yOwogc3RhdGljIGlubGluZSBpbnQgY29tcHV0ZV9kaXNjcmltaW5hdG9yIChsb2NhdGlvbl90 IGxvYyk7CiAKLS8qIERpc2NyaW1pbmF0b3IgaWRlbnRpZnlpbmcgY3VycmVudCBiYXNpYyBibG9j ayBhbW9uZyBvdGhlcnMgc2hhcmluZwotICAgdGhlIHNhbWUgbG9jdXMuICAqLwotc3RhdGljIGlu dCBiYl9kaXNjcmltaW5hdG9yOwotCi0vKiBCYXNpYyBibG9jayBkaXNjcmltaW5hdG9yIGZvciBw cmV2aW91cyBpbnN0cnVjdGlvbi4gICovCi1zdGF0aWMgaW50IGxhc3RfYmJfZGlzY3JpbWluYXRv cjsKLQogLyogSGlnaGVzdCBsaW5lIG51bWJlciBpbiBjdXJyZW50IGJsb2NrLiAgKi8KIHN0YXRp YyBpbnQgaGlnaF9ibG9ja19saW5lbnVtOwogCkBAIC0xNjk3LDggKzE2ODksNyBAQCBmaW5hbF9z dGFydF9mdW5jdGlvbl8xIChydHhfaW5zbiAqKmZpcnN0cCwgRklMRSAqZmlsZSwgaW50ICpzZWVu LAogICBsYXN0X2ZpbGVuYW1lID0gTE9DQVRJT05fRklMRSAocHJvbG9ndWVfbG9jYXRpb24pOwog ICBsYXN0X2xpbmVudW0gPSBMT0NBVElPTl9MSU5FIChwcm9sb2d1ZV9sb2NhdGlvbik7CiAgIGxh c3RfY29sdW1ubnVtID0gTE9DQVRJT05fQ09MVU1OIChwcm9sb2d1ZV9sb2NhdGlvbik7Ci0gIGxh c3RfZGlzY3JpbWluYXRvciA9IGRpc2NyaW1pbmF0b3IgPSAwOwotICBsYXN0X2JiX2Rpc2NyaW1p bmF0b3IgPSBiYl9kaXNjcmltaW5hdG9yID0gMDsKKyAgbGFzdF9kaXNjcmltaW5hdG9yID0gMDsK ICAgZm9yY2Vfc291cmNlX2xpbmUgPSBmYWxzZTsKIAogICBoaWdoX2Jsb2NrX2xpbmVudW0gPSBo aWdoX2Z1bmN0aW9uX2xpbmVudW0gPSBsYXN0X2xpbmVudW07CkBAIC0yMjQzLDcgKzIyMzQsNiBA QCBmaW5hbF9zY2FuX2luc25fMSAocnR4X2luc24gKmluc24sIEZJTEUgKmZpbGUsIGludCBvcHRp bWl6ZV9wIEFUVFJJQlVURV9VTlVTRUQsCiAJICBpZiAodGFyZ2V0bS5hc21fb3V0LnVud2luZF9l bWl0KQogCSAgICB0YXJnZXRtLmFzbV9vdXQudW53aW5kX2VtaXQgKGFzbV9vdXRfZmlsZSwgaW5z bik7CiAKLQkgIGJiX2Rpc2NyaW1pbmF0b3IgPSBOT1RFX0JBU0lDX0JMT0NLIChpbnNuKS0+ZGlz Y3JpbWluYXRvcjsKIAkgIGJyZWFrOwogCiAJY2FzZSBOT1RFX0lOU05fRUhfUkVHSU9OX0JFRzoK QEAgLTI5ODIsNyArMjk3Miw3IEBAIGNvbXB1dGVfZGlzY3JpbWluYXRvciAobG9jYXRpb25fdCBs b2MpCiAgIGludCBkaXNjcmltaW5hdG9yOwogCiAgIGlmICghZGVjbF90b19pbnN0YW5jZV9tYXAp Ci0gICAgZGlzY3JpbWluYXRvciA9IGJiX2Rpc2NyaW1pbmF0b3I7CisgICAgZGlzY3JpbWluYXRv ciA9IGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jdXMgKGxvYyk7CiAgIGVsc2UKICAgICB7CiAg ICAgICB0cmVlIGJsb2NrID0gTE9DQVRJT05fQkxPQ0sgKGxvYyk7CkBAIC0zMDA2LDYgKzI5OTYs MTMgQEAgY29tcHV0ZV9kaXNjcmltaW5hdG9yIChsb2NhdGlvbl90IGxvYykKICAgcmV0dXJuIGRp c2NyaW1pbmF0b3I7CiB9CiAKKy8qIFJldHVybiBkaXNjcmltaW5hdG9yIG9mIHRoZSBzdGF0ZW1l bnQgdGhhdCBwcm9kdWNlZCB0aGlzIGluc24uICAqLworaW50CitpbnNuX2Rpc2NyaW1pbmF0b3Ig KGNvbnN0IHJ0eF9pbnNuICppbnNuKQoreworICByZXR1cm4gY29tcHV0ZV9kaXNjcmltaW5hdG9y IChJTlNOX0xPQ0FUSU9OIChpbnNuKSk7Cit9CisKIC8qIFJldHVybiB3aGV0aGVyIGEgc291cmNl IGxpbmUgbm90ZSBuZWVkcyB0byBiZSBlbWl0dGVkIGJlZm9yZSBJTlNOLgogICAgU2V0cyBJU19T VE1UIHRvIFRSVUUgaWYgdGhlIGxpbmUgc2hvdWxkIGJlIG1hcmtlZCBhcyBhIHBvc3NpYmxlCiAg ICBicmVha3BvaW50IGxvY2F0aW9uLiAgKi8KQEAgLTMwMTUsNiArMzAxMiw3IEBAIG5vdGljZV9z b3VyY2VfbGluZSAocnR4X2luc24gKmluc24sIGJvb2wgKmlzX3N0bXQpCiB7CiAgIGNvbnN0IGNo YXIgKmZpbGVuYW1lOwogICBpbnQgbGluZW51bSwgY29sdW1ubnVtOworICBpbnQgZGlzY3JpbWlu YXRvcjsKIAogICBpZiAoTk9URV9NQVJLRVJfUCAoaW5zbikpCiAgICAgewpAQCAtMzA0NCw3ICsz MDQyLDcgQEAgbm90aWNlX3NvdXJjZV9saW5lIChydHhfaW5zbiAqaW5zbiwgYm9vbCAqaXNfc3Rt dCkKICAgICAgIGZpbGVuYW1lID0geGxvYy5maWxlOwogICAgICAgbGluZW51bSA9IHhsb2MubGlu ZTsKICAgICAgIGNvbHVtbm51bSA9IHhsb2MuY29sdW1uOwotICAgICAgZGlzY3JpbWluYXRvciA9 IGNvbXB1dGVfZGlzY3JpbWluYXRvciAoSU5TTl9MT0NBVElPTiAoaW5zbikpOworICAgICAgZGlz Y3JpbWluYXRvciA9IGluc25fZGlzY3JpbWluYXRvciAoaW5zbik7CiAgICAgfQogICBlbHNlCiAg ICAgewpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1wcmV0dHktcHJpbnQuY2MgYi9nY2MvZ2ltcGxl LXByZXR0eS1wcmludC5jYwppbmRleCBlYmQ4N2IyMGEwYS4uNWU3MDM5ZGJmNjYgMTAwNjQ0Ci0t LSBhL2djYy9naW1wbGUtcHJldHR5LXByaW50LmNjCisrKyBiL2djYy9naW1wbGUtcHJldHR5LXBy aW50LmNjCkBAIC0yODk5LDggKzI4OTksNiBAQCBkdW1wX2dpbXBsZV9iYl9oZWFkZXIgKEZJTEUg Km91dGYsIGJhc2ljX2Jsb2NrIGJiLCBpbnQgaW5kZW50LAogCQkJIGluZGVudCwgIiIsIGdldF9s aW5lbm8gKGdzaV9zdG10IChnc2kpKSk7CiAJCWJyZWFrOwogCSAgICAgIH0KLQkgIGlmIChiYi0+ ZGlzY3JpbWluYXRvcikKLQkgICAgZnByaW50ZiAob3V0ZiwgIiwgZGlzY3JpbWluYXRvciAlaSIs IGJiLT5kaXNjcmltaW5hdG9yKTsKIAkgIGZwdXRjICgnXG4nLCBvdXRmKTsKIAl9CiAgICAgfQpk aWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1zdHJlYW1lci1pbi5jYyBiL2djYy9naW1wbGUtc3RyZWFt ZXItaW4uY2MKaW5kZXggZTdmMzI1NjMwMmYuLmVhODg5MWU4ZTkyIDEwMDY0NAotLS0gYS9nY2Mv Z2ltcGxlLXN0cmVhbWVyLWluLmNjCisrKyBiL2djYy9naW1wbGUtc3RyZWFtZXItaW4uY2MKQEAg LTI2Nyw3ICsyNjcsNiBAQCBpbnB1dF9iYiAoY2xhc3MgbHRvX2lucHV0X2Jsb2NrICppYiwgZW51 bSBMVE9fdGFncyB0YWcsCiAgICAgYmItPmNvdW50CiAgICAgICA9IGJiLT5jb3VudC5hcHBseV9z Y2FsZSAoY291bnRfbWF0ZXJpYWxpemF0aW9uX3NjYWxlLCBSRUdfQlJfUFJPQl9CQVNFKTsKICAg YmItPmZsYWdzID0gc3RyZWFtZXJfcmVhZF9od2kgKGliKTsKLSAgYmItPmRpc2NyaW1pbmF0b3Ig PSBzdHJlYW1lcl9yZWFkX2h3aSAoaWIpOwogCiAgIC8qIExUT19iYjEgaGFzIHN0YXRlbWVudHMu ICBMVE9fYmIwIGRvZXMgbm90LiAgKi8KICAgaWYgKHRhZyA9PSBMVE9fYmIwKQpkaWZmIC0tZ2l0 IGEvZ2NjL2dpbXBsZS1zdHJlYW1lci1vdXQuY2MgYi9nY2MvZ2ltcGxlLXN0cmVhbWVyLW91dC5j YwppbmRleCAzMzM2NTI1MTI5NS4uNDU4MzI1NDdiZjUgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUt c3RyZWFtZXItb3V0LmNjCisrKyBiL2djYy9naW1wbGUtc3RyZWFtZXItb3V0LmNjCkBAIC0yMDgs NyArMjA4LDYgQEAgb3V0cHV0X2JiIChzdHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwgYmFzaWNfYmxv Y2sgYmIsIHN0cnVjdCBmdW5jdGlvbiAqZm4pCiAgIHN0cmVhbWVyX3dyaXRlX3Vod2kgKG9iLCBi Yi0+aW5kZXgpOwogICBiYi0+Y291bnQuc3RyZWFtX291dCAob2IpOwogICBzdHJlYW1lcl93cml0 ZV9od2kgKG9iLCBiYi0+ZmxhZ3MpOwotICBzdHJlYW1lcl93cml0ZV9od2kgKG9iLCBiYi0+ZGlz Y3JpbWluYXRvcik7CiAKICAgaWYgKCFnc2lfZW5kX3AgKGJzaSkgfHwgcGhpX25vZGVzIChiYikp CiAgICAgewpkaWZmIC0tZ2l0IGEvZ2NjL2lucHV0LmNjIGIvZ2NjL2lucHV0LmNjCmluZGV4IDJh Y2JmZGVhNGY4Li5lZjRiYWNmMGRhNiAxMDA2NDQKLS0tIGEvZ2NjL2lucHV0LmNjCisrKyBiL2dj Yy9pbnB1dC5jYwpAQCAtMTA0NSw3ICsxMDQ1LDggQEAgbWFrZV9sb2NhdGlvbiAobG9jYXRpb25f dCBjYXJldCwgbG9jYXRpb25fdCBzdGFydCwgbG9jYXRpb25fdCBmaW5pc2gpCiAgIGxvY2F0aW9u X3QgY29tYmluZWRfbG9jID0gQ09NQklORV9MT0NBVElPTl9EQVRBIChsaW5lX3RhYmxlLAogCQkJ CQkJICAgcHVyZV9sb2MsCiAJCQkJCQkgICBzcmNfcmFuZ2UsCi0JCQkJCQkgICBOVUxMKTsKKwkJ CQkJCSAgIE5VTEwsCisJCQkJCQkgICAwKTsKICAgcmV0dXJuIGNvbWJpbmVkX2xvYzsKIH0KIApA QCAtMTA1NSw3ICsxMDU2LDcgQEAgbG9jYXRpb25fdAogbWFrZV9sb2NhdGlvbiAobG9jYXRpb25f dCBjYXJldCwgc291cmNlX3JhbmdlIHNyY19yYW5nZSkKIHsKICAgbG9jYXRpb25fdCBwdXJlX2xv YyA9IGdldF9wdXJlX2xvY2F0aW9uIChjYXJldCk7Ci0gIHJldHVybiBDT01CSU5FX0xPQ0FUSU9O X0RBVEEgKGxpbmVfdGFibGUsIHB1cmVfbG9jLCBzcmNfcmFuZ2UsIE5VTEwpOworICByZXR1cm4g Q09NQklORV9MT0NBVElPTl9EQVRBIChsaW5lX3RhYmxlLCBwdXJlX2xvYywgc3JjX3JhbmdlLCBO VUxMLCAwKTsKIH0KIAogLyogQW4gZXhwYW5kZWRfbG9jYXRpb24gc3RvcmVzIHRoZSBjb2x1bW4g aW4gYnl0ZSB1bml0cy4gIFRoaXMgZnVuY3Rpb24KQEAgLTE3MjksNiArMTczMCwzNyBAQCBnZXRf bG9jYXRpb25fd2l0aGluX3N0cmluZyAoY3BwX3JlYWRlciAqcGZpbGUsCiAgIHJldHVybiBOVUxM OwogfQogCisvKiBBc3NvY2lhdGUgdGhlIERJU0NSSU1JTkFUT1Igd2l0aCBMT0NVUywgYW5kIHJl dHVybiBhIG5ldyBsb2N1cy4gKi8KKworbG9jYXRpb25fdAorbG9jYXRpb25fd2l0aF9kaXNjcmlt aW5hdG9yIChsb2NhdGlvbl90IGxvY3VzLCBpbnQgZGlzY3JpbWluYXRvcikKK3sKKyAgdHJlZSBi bG9jayA9IExPQ0FUSU9OX0JMT0NLIChsb2N1cyk7CisgIHNvdXJjZV9yYW5nZSBzcmNfcmFuZ2Ug PSBnZXRfcmFuZ2VfZnJvbV9sb2MgKGxpbmVfdGFibGUsIGxvY3VzKTsKKyAgbG9jdXMgPSBnZXRf cHVyZV9sb2NhdGlvbiAobG9jdXMpOworCisgIGlmIChsb2N1cyA9PSBVTktOT1dOX0xPQ0FUSU9O KQorICAgIHJldHVybiBsb2N1czsKKworICByZXR1cm4gQ09NQklORV9MT0NBVElPTl9EQVRBIChs aW5lX3RhYmxlLCBsb2N1cywgc3JjX3JhbmdlLCBibG9jaywgZGlzY3JpbWluYXRvcik7Cit9CisK Ky8qIFJldHVybiBUUlVFIGlmIExPQ1VTIHJlcHJlc2VudHMgYSBsb2NhdGlvbiB3aXRoIGEgZGlz Y3JpbWluYXRvci4gICovCisKK2Jvb2wKK2hhc19kaXNjcmltaW5hdG9yIChsb2NhdGlvbl90IGxv Y3VzKQoreworICByZXR1cm4gTE9DQVRJT05fRElTQ1JJTUlOQVRPUihsb2N1cykgIT0gMDsKK30K KworLyogUmV0dXJuIHRoZSBkaXNjcmltaW5hdG9yIGZvciBMT0NVUy4gICovCisKK2ludAorZ2V0 X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2N1cyAobG9jYXRpb25fdCBsb2N1cykKK3sKKyAgcmV0dXJu IExPQ0FUSU9OX0RJU0NSSU1JTkFUT1IobG9jdXMpOworfQorCiAjaWYgQ0hFQ0tJTkdfUAogCiBu YW1lc3BhY2Ugc2VsZnRlc3QgewpkaWZmIC0tZ2l0IGEvZ2NjL2lucHV0LmggYi9nY2MvaW5wdXQu aAppbmRleCBmMWFlM2FlYzk1Yy4uNTY0ZWJkODkzZTkgMTAwNjQ0Ci0tLSBhL2djYy9pbnB1dC5o CisrKyBiL2djYy9pbnB1dC5oCkBAIC0xNjUsNiArMTY1LDEwIEBAIGV4dGVybiBsb2NhdGlvbl90 IGV4cGFuc2lvbl9wb2ludF9sb2NhdGlvbiAobG9jYXRpb25fdCk7CiAKIGV4dGVybiBsb2NhdGlv bl90IGlucHV0X2xvY2F0aW9uOwogCitleHRlcm4gbG9jYXRpb25fdCBsb2NhdGlvbl93aXRoX2Rp c2NyaW1pbmF0b3IgKGxvY2F0aW9uX3QsIGludCk7CitleHRlcm4gYm9vbCBoYXNfZGlzY3JpbWlu YXRvciAobG9jYXRpb25fdCk7CitleHRlcm4gaW50IGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9j dXMgKGxvY2F0aW9uX3QpOworCiAjZGVmaW5lIExPQ0FUSU9OX0ZJTEUoTE9DKSAoKGV4cGFuZF9s b2NhdGlvbiAoTE9DKSkuZmlsZSkKICNkZWZpbmUgTE9DQVRJT05fTElORShMT0MpICgoZXhwYW5k X2xvY2F0aW9uIChMT0MpKS5saW5lKQogI2RlZmluZSBMT0NBVElPTl9DT0xVTU4oTE9DKSgoZXhw YW5kX2xvY2F0aW9uIChMT0MpKS5jb2x1bW4pCkBAIC0xNzQsNiArMTc4LDkgQEAgZXh0ZXJuIGxv Y2F0aW9uX3QgaW5wdXRfbG9jYXRpb247CiAjZGVmaW5lIExPQ0FUSU9OX0JMT0NLKExPQykgXAog ICAoKHRyZWUpICgoSVNfQURIT0NfTE9DIChMT0MpKSA/IGdldF9kYXRhX2Zyb21fYWRob2NfbG9j IChsaW5lX3RhYmxlLCAoTE9DKSkgXAogICAgOiBOVUxMKSkKKyNkZWZpbmUgTE9DQVRJT05fRElT Q1JJTUlOQVRPUihMT0MpIFwKKyAgKChJU19BREhPQ19MT0MgKExPQykpID8gZ2V0X2Rpc2NyaW1p bmF0b3JfZnJvbV9hZGhvY19sb2MgKGxpbmVfdGFibGUsIChMT0MpKSBcCisgICA6IDApCiAjZGVm aW5lIFJFU0VSVkVEX0xPQ0FUSU9OX1AoTE9DKSBcCiAgIChMT0NBVElPTl9MT0NVUyAoTE9DKSA8 IFJFU0VSVkVEX0xPQ0FUSU9OX0NPVU5UKQogCmRpZmYgLS1naXQgYS9nY2MvbHRvLXN0cmVhbWVy LWluLmNjIGIvZ2NjL2x0by1zdHJlYW1lci1pbi5jYwppbmRleCBmZTVhNGU3ZmUxZC4uMjcxYjgw MDZhYzAgMTAwNjQ0Ci0tLSBhL2djYy9sdG8tc3RyZWFtZXItaW4uY2MKKysrIGIvZ2NjL2x0by1z dHJlYW1lci1pbi5jYwpAQCAtNDA5LDYgKzQwOSw4IEBAIGx0b19sb2NhdGlvbl9jYWNoZTo6Y21w X2xvYyAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiKQogICAgIHJldHVybiBhLT5saW5l IC0gYi0+bGluZTsKICAgaWYgKGEtPmNvbCAhPSBiLT5jb2wpCiAgICAgcmV0dXJuIGEtPmNvbCAt IGItPmNvbDsKKyAgaWYgKGEtPmRpc2NyICE9IGItPmRpc2NyKQorICAgIHJldHVybiBhLT5kaXNj ciAtIGItPmRpc2NyOwogICBpZiAoKGEtPmJsb2NrID09IE5VTExfVFJFRSkgIT0gKGItPmJsb2Nr ID09IE5VTExfVFJFRSkpCiAgICAgcmV0dXJuIGEtPmJsb2NrID8gMSA6IC0xOwogICBpZiAoYS0+ YmxvY2spCkBAIC00NjAsNiArNDYyLDggQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjphcHBseV9sb2Nh dGlvbl9jYWNoZSAoKQogCSAgY3VycmVudF9sb2MgPSBsaW5lbWFwX3Bvc2l0aW9uX2Zvcl9jb2x1 bW4gKGxpbmVfdGFibGUsIGxvYy5jb2wpOwogCSAgaWYgKGxvYy5ibG9jaykKIAkgICAgY3VycmVu dF9sb2MgPSBzZXRfYmxvY2sgKGN1cnJlbnRfbG9jLCBsb2MuYmxvY2spOworCSAgaWYgKGxvYy5k aXNjcikKKwkgICAgY3VycmVudF9sb2MgPSBsb2NhdGlvbl93aXRoX2Rpc2NyaW1pbmF0b3IgKGN1 cnJlbnRfbG9jLCBsb2MuZGlzY3IpOwogCX0KICAgICAgIGVsc2UgaWYgKGN1cnJlbnRfYmxvY2sg IT0gbG9jLmJsb2NrKQogCXsKQEAgLTQ2NywxMiArNDcxLDE5IEBAIGx0b19sb2NhdGlvbl9jYWNo ZTo6YXBwbHlfbG9jYXRpb25fY2FjaGUgKCkKIAkgICAgY3VycmVudF9sb2MgPSBzZXRfYmxvY2sg KGN1cnJlbnRfbG9jLCBsb2MuYmxvY2spOwogCSAgZWxzZQogCSAgICBjdXJyZW50X2xvYyA9IExP Q0FUSU9OX0xPQ1VTIChjdXJyZW50X2xvYyk7CisJICBpZiAobG9jLmRpc2NyKQorCSAgICBjdXJy ZW50X2xvYyA9IGxvY2F0aW9uX3dpdGhfZGlzY3JpbWluYXRvciAoY3VycmVudF9sb2MsIGxvYy5k aXNjcik7CisJfQorICAgICAgZWxzZSBpZiAoY3VycmVudF9kaXNjciAhPSBsb2MuZGlzY3IpCisJ eworCSAgICBjdXJyZW50X2xvYyA9IGxvY2F0aW9uX3dpdGhfZGlzY3JpbWluYXRvciAoY3VycmVu dF9sb2MsIGxvYy5kaXNjcik7CiAJfQogICAgICAgKmxvYy5sb2MgPSBjdXJyZW50X2xvYzsKICAg ICAgIGN1cnJlbnRfbGluZSA9IGxvYy5saW5lOwogICAgICAgcHJldl9maWxlID0gY3VycmVudF9m aWxlID0gbG9jLmZpbGU7CiAgICAgICBjdXJyZW50X2NvbCA9IGxvYy5jb2w7CiAgICAgICBjdXJy ZW50X2Jsb2NrID0gbG9jLmJsb2NrOworICAgICAgY3VycmVudF9kaXNjciA9IGxvYy5kaXNjcjsK ICAgICB9CiAgIGxvY19jYWNoZS50cnVuY2F0ZSAoMCk7CiAgIGFjY2VwdGVkX2xlbmd0aCA9IDA7 CkBAIC01MTIsNiArNTIzLDcgQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjppbnB1dF9sb2NhdGlvbl9h bmRfYmxvY2sgKGxvY2F0aW9uX3QgKmxvYywKICAgc3RhdGljIGludCBzdHJlYW1fY29sOwogICBz dGF0aWMgYm9vbCBzdHJlYW1fc3lzcDsKICAgc3RhdGljIHRyZWUgc3RyZWFtX2Jsb2NrOworICBz dGF0aWMgdW5zaWduZWQgc3RyZWFtX2Rpc2NyOwogICBzdGF0aWMgY29uc3QgY2hhciAqc3RyZWFt X3JlbGF0aXZlX3BhdGhfcHJlZml4OwogCiAgIGdjY19hc3NlcnQgKGN1cnJlbnRfY2FjaGUgPT0g dGhpcyk7CkBAIC01MzgsNiArNTUwLDcgQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjppbnB1dF9sb2Nh dGlvbl9hbmRfYmxvY2sgKGxvY2F0aW9uX3QgKmxvYywKICAgKmxvYyA9IFJFU0VSVkVEX0xPQ0FU SU9OX0NPVU5UOwogICBib29sIGxpbmVfY2hhbmdlID0gYnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7 CiAgIGJvb2wgY29sdW1uX2NoYW5nZSA9IGJwX3VucGFja192YWx1ZSAoYnAsIDEpOworICBib29s IGRpc2NyX2NoYW5nZSA9IGJwX3VucGFja192YWx1ZSAoYnAsIDEpOwogCiAgIGlmIChmaWxlX2No YW5nZSkKICAgICB7CkBAIC01NjMsNiArNTc2LDkgQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjppbnB1 dF9sb2NhdGlvbl9hbmRfYmxvY2sgKGxvY2F0aW9uX3QgKmxvYywKICAgaWYgKGNvbHVtbl9jaGFu Z2UpCiAgICAgc3RyZWFtX2NvbCA9IGJwX3VucGFja192YXJfbGVuX3Vuc2lnbmVkIChicCk7CiAK KyAgaWYgKGRpc2NyX2NoYW5nZSkKKyAgICBzdHJlYW1fZGlzY3IgPSBicF91bnBhY2tfdmFyX2xl bl91bnNpZ25lZCAoYnApOworCiAgIHRyZWUgYmxvY2sgPSBOVUxMX1RSRUU7CiAgIGlmIChpYikK ICAgICB7CkBAIC01NzgsNyArNTk0LDggQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjppbnB1dF9sb2Nh dGlvbl9hbmRfYmxvY2sgKGxvY2F0aW9uX3QgKmxvYywKICAgaWYgKGN1cnJlbnRfZmlsZSA9PSBz dHJlYW1fZmlsZQogICAgICAgJiYgY3VycmVudF9saW5lID09IHN0cmVhbV9saW5lCiAgICAgICAm JiBjdXJyZW50X2NvbCA9PSBzdHJlYW1fY29sCi0gICAgICAmJiBjdXJyZW50X3N5c3AgPT0gc3Ry ZWFtX3N5c3ApCisgICAgICAmJiBjdXJyZW50X3N5c3AgPT0gc3RyZWFtX3N5c3AKKyAgICAgICYm IGN1cnJlbnRfZGlzY3IgPT0gc3RyZWFtX2Rpc2NyKQogICAgIHsKICAgICAgIGlmIChjdXJyZW50 X2Jsb2NrID09IGJsb2NrKQogCSpsb2MgPSBjdXJyZW50X2xvYzsKQEAgLTU5MCw3ICs2MDcsNyBA QCBsdG9fbG9jYXRpb25fY2FjaGU6OmlucHV0X2xvY2F0aW9uX2FuZF9ibG9jayAobG9jYXRpb25f dCAqbG9jLAogICAgIH0KIAogICBzdHJ1Y3QgY2FjaGVkX2xvY2F0aW9uIGVudHJ5Ci0gICAgPSB7 c3RyZWFtX2ZpbGUsIGxvYywgc3RyZWFtX2xpbmUsIHN0cmVhbV9jb2wsIHN0cmVhbV9zeXNwLCBi bG9ja307CisgICAgPSB7c3RyZWFtX2ZpbGUsIGxvYywgc3RyZWFtX2xpbmUsIHN0cmVhbV9jb2ws IHN0cmVhbV9zeXNwLCBibG9jaywgc3RyZWFtX2Rpc2NyfTsKICAgbG9jX2NhY2hlLnNhZmVfcHVz aCAoZW50cnkpOwogfQogCmRpZmYgLS1naXQgYS9nY2MvbHRvLXN0cmVhbWVyLW91dC5jYyBiL2dj Yy9sdG8tc3RyZWFtZXItb3V0LmNjCmluZGV4IDQ3MWYzNWMzMTVmLi5kMmI2YzY5MzE1ZiAxMDA2 NDQKLS0tIGEvZ2NjL2x0by1zdHJlYW1lci1vdXQuY2MKKysrIGIvZ2NjL2x0by1zdHJlYW1lci1v dXQuY2MKQEAgLTY3LDYgKzY3LDcgQEAgY2xlYXJfbGluZV9pbmZvIChzdHJ1Y3Qgb3V0cHV0X2Js b2NrICpvYikKICAgICAgc28gdGhhdCB0aGUgZmlyc3QgbG9jYXRpb24gd2l0aCBibG9jayBpbiBh IGZ1bmN0aW9uIGV0Yy4KICAgICAgYWx3YXlzIHN0cmVhbXMgYSBjaGFuZ2VfYmxvY2sgYml0IGFu ZCB0aGUgZmlyc3QgYmxvY2suICAqLwogICBvYi0+Y3VycmVudF9ibG9jayA9IHZvaWRfbm9kZTsK KyAgb2ItPmN1cnJlbnRfZGlzY3IgPSBVSU5UX01BWDsKIH0KIAogCkBAIC0xOTQsNiArMTk1LDcg QEAgbHRvX291dHB1dF9sb2NhdGlvbl8xIChzdHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwgc3RydWN0 IGJpdHBhY2tfZCAqYnAsCiAgIGlmIChsb2MgPj0gUkVTRVJWRURfTE9DQVRJT05fQ09VTlQpCiAg ICAgewogICAgICAgZXhwYW5kZWRfbG9jYXRpb24geGxvYyA9IGV4cGFuZF9sb2NhdGlvbiAobG9j KTsKKyAgICAgIHVuc2lnbmVkIGRpc2NyID0gTE9DQVRJT05fRElTQ1JJTUlOQVRPUiAob3JpZ19s b2MpOwogCiAgICAgICBpZiAob2ItPnJlc2V0X2xvY3VzKQogCXsKQEAgLTIxNiw2ICsyMTgsNyBA QCBsdG9fb3V0cHV0X2xvY2F0aW9uXzEgKHN0cnVjdCBvdXRwdXRfYmxvY2sgKm9iLCBzdHJ1Y3Qg Yml0cGFja19kICpicCwKIAogICAgICAgYnBfcGFja192YWx1ZSAoYnAsIG9iLT5jdXJyZW50X2xp bmUgIT0geGxvYy5saW5lLCAxKTsKICAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBvYi0+Y3VycmVu dF9jb2wgIT0geGxvYy5jb2x1bW4sIDEpOworICAgICAgYnBfcGFja192YWx1ZSAoYnAsIG9iLT5j dXJyZW50X2Rpc2NyICE9IGRpc2NyLCAxKTsKIAogICAgICAgaWYgKG9iLT5jdXJyZW50X2ZpbGUg IT0geGxvYy5maWxlKQogCXsKQEAgLTI0Miw2ICsyNDUsMTAgQEAgbHRvX291dHB1dF9sb2NhdGlv bl8xIChzdHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwgc3RydWN0IGJpdHBhY2tfZCAqYnAsCiAgICAg ICBpZiAob2ItPmN1cnJlbnRfY29sICE9IHhsb2MuY29sdW1uKQogCWJwX3BhY2tfdmFyX2xlbl91 bnNpZ25lZCAoYnAsIHhsb2MuY29sdW1uKTsKICAgICAgIG9iLT5jdXJyZW50X2NvbCA9IHhsb2Mu Y29sdW1uOworCisgICAgICBpZiAob2ItPmN1cnJlbnRfZGlzY3IgIT0gZGlzY3IpCisJYnBfcGFj a192YXJfbGVuX3Vuc2lnbmVkIChicCwgZGlzY3IpOworICAgICAgb2ItPmN1cnJlbnRfZGlzY3Ig PSBkaXNjcjsKICAgICB9CiAgIGVsc2UKICAgICBicF9wYWNrX2ludF9pbl9yYW5nZSAoYnAsIDAs IFJFU0VSVkVEX0xPQ0FUSU9OX0NPVU5UICsgMSwgbG9jKTsKZGlmZiAtLWdpdCBhL2djYy9sdG8t c3RyZWFtZXIuaCBiL2djYy9sdG8tc3RyZWFtZXIuaAppbmRleCA1OTdlOWU0MDVlYy4uMmUzYWJk OTc5NTkgMTAwNjQ0Ci0tLSBhL2djYy9sdG8tc3RyZWFtZXIuaAorKysgYi9nY2MvbHRvLXN0cmVh bWVyLmgKQEAgLTMxMSw2ICszMTEsNyBAQCBwcml2YXRlOgogICAgIGludCBsaW5lLCBjb2w7CiAg ICAgYm9vbCBzeXNwOwogICAgIHRyZWUgYmxvY2s7CisgICAgdW5zaWduZWQgZGlzY3I7CiAgIH07 CiAKICAgLyogVGhlIGxvY2F0aW9uIGNhY2hlLiAgKi8KQEAgLTMzMyw2ICszMzQsNyBAQCBwcml2 YXRlOgogICBib29sIGN1cnJlbnRfc3lzcDsKICAgbG9jYXRpb25fdCBjdXJyZW50X2xvYzsKICAg dHJlZSBjdXJyZW50X2Jsb2NrOworICB1bnNpZ25lZCBjdXJyZW50X2Rpc2NyOwogfTsKIAogLyog U3RydWN0dXJlIHVzZWQgYXMgYnVmZmVyIGZvciByZWFkaW5nIGFuIExUTyBmaWxlLiAgKi8KQEAg LTcyMyw2ICs3MjUsNyBAQCBzdHJ1Y3Qgb3V0cHV0X2Jsb2NrCiAgIGJvb2wgcmVzZXRfbG9jdXM7 CiAgIGJvb2wgZW1pdF9wd2Q7CiAgIHRyZWUgY3VycmVudF9ibG9jazsKKyAgdW5zaWduZWQgY3Vy cmVudF9kaXNjcjsKIAogICAvKiBDYWNoZSBvZiBub2RlcyB3cml0dGVuIGluIHRoaXMgc2VjdGlv bi4gICovCiAgIHN0cnVjdCBzdHJlYW1lcl90cmVlX2NhY2hlX2QgKndyaXRlcl9jYWNoZTsKZGlm ZiAtLWdpdCBhL2djYy9wcmludC1ydGwuY2MgYi9nY2MvcHJpbnQtcnRsLmNjCmluZGV4IDYwYzg0 NTQ4NWJjLi5lMTE1Zjk4NzE3MyAxMDA2NDQKLS0tIGEvZ2NjL3ByaW50LXJ0bC5jYworKysgYi9n Y2MvcHJpbnQtcnRsLmNjCkBAIC00NTMsNiArNDUzLDEwIEBAIHJ0eF93cml0ZXI6OnByaW50X3J0 eF9vcGVyYW5kX2NvZGVfaSAoY29uc3RfcnR4IGluX3J0eCwgaW50IGlkeCkKIAkgIGV4cGFuZGVk X2xvY2F0aW9uIHhsb2MgPSBpbnNuX2xvY2F0aW9uIChpbl9pbnNuKTsKIAkgIGZwcmludGYgKG1f b3V0ZmlsZSwgIiBcIiVzXCI6JWk6JWkiLCB4bG9jLmZpbGUsIHhsb2MubGluZSwKIAkJICAgeGxv Yy5jb2x1bW4pOworCSAgaW50IGRpc2NyaW1pbmF0b3IgPSBpbnNuX2Rpc2NyaW1pbmF0b3IgKGlu X2luc24pOworCSAgICBpZiAoZGlzY3JpbWluYXRvcikKKwkgICAgICBmcHJpbnRmIChtX291dGZp bGUsICIgZGlzY3JpbSAlZCIsIGRpc2NyaW1pbmF0b3IpOworCiAJfQogI2VuZGlmCiAgICAgfQpk aWZmIC0tZ2l0IGEvZ2NjL3J0bC5oIGIvZ2NjL3J0bC5oCmluZGV4IDQ4ODAxNmJiNDJhLi5iMDUy ODIzNWVmOCAxMDA2NDQKLS0tIGEvZ2NjL3J0bC5oCisrKyBiL2djYy9ydGwuaApAQCAtMzM2OSw2 ICszMzY5LDcgQEAgZXh0ZXJuIGludCBpbnNuX2xpbmUgKGNvbnN0IHJ0eF9pbnNuICopOwogZXh0 ZXJuIGNvbnN0IGNoYXIgKiBpbnNuX2ZpbGUgKGNvbnN0IHJ0eF9pbnNuICopOwogZXh0ZXJuIHRy ZWUgaW5zbl9zY29wZSAoY29uc3QgcnR4X2luc24gKik7CiBleHRlcm4gZXhwYW5kZWRfbG9jYXRp b24gaW5zbl9sb2NhdGlvbiAoY29uc3QgcnR4X2luc24gKik7CitleHRlcm4gaW50IGluc25fZGlz Y3JpbWluYXRvciAoY29uc3QgcnR4X2luc24gKik7CiBleHRlcm4gbG9jYXRpb25fdCBwcm9sb2d1 ZV9sb2NhdGlvbiwgZXBpbG9ndWVfbG9jYXRpb247CiAKIC8qIEluIGp1bXAuY2MgKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL3ByODUyMTMuYyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL3ByODUyMTMuYwppbmRleCA4YTZiZTgxZDIwZi4u ZTkwM2U5NzZmMmMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2Fu L3ByODUyMTMuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9wcjg1MjEz LmMKQEAgLTEsNiArMSwxMSBAQAogLyogUFIgc2FuaXRpemVyLzg1MjEzICovCiAvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLwotLyogeyBkZy1vcHRpb25zICItTzEgLWZzYW5pdGl6ZT11bmRlZmluZWQg LWZjb21wYXJlLWRlYnVnIiB9ICovCisvKiBQYXNzIC1nbm8tc3RhdGVtZW50LWZyb250aWVycyB0 byB3b3JrIGFyb3VuZAorICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5j Z2k/aWQ9MTAwNzMzIDoKKyAgIHdpdGhvdXQgaXQgdGhlIElSIGNvbWluZyBmcm9tIHRoZSBmcm9u dCBlbmQgbWF5IGJlIGRpZmZlcmVudCB3aXRoIGFuZCB3aXRob3V0CisgICBkZWJ1ZyBpbmZvcm1h dGlvbiB0dXJuZWQgb24uIFRoYXQgbWF5IGNhdXNlIGUuZy4sIGRpZmZlcmVudCBkaXNjcmltaW5h dG9yIHZhbHVlcworICAgYW5kIC1mY29tcGFyZS1kZWJ1ZyBmYWlsdXJlcy4gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8xIC1mc2FuaXRpemU9dW5kZWZpbmVkIC1mY29tcGFyZS1kZWJ1ZyAtZ25vLXN0 YXRlbWVudC1mcm9udGllcnMiIH0gKi8KIAogaW50CiBmb28gKGludCB4KQpkaWZmIC0tZ2l0IGEv Z2NjL3RyZWUtY2ZnLmNjIGIvZ2NjL3RyZWUtY2ZnLmNjCmluZGV4IDhkZTFiMTQ0YTQyLi4zYjQw NjNmMThmZCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtY2ZnLmNjCisrKyBiL2djYy90cmVlLWNmZy5j YwpAQCAtMTE2Miw3ICsxMTYyLDMzIEBAIHNhbWVfbGluZV9wIChsb2NhdGlvbl90IGxvY3VzMSwg ZXhwYW5kZWRfbG9jYXRpb24gKmZyb20sIGxvY2F0aW9uX3QgbG9jdXMyKQogICAgICAgICAgICYm IGZpbGVuYW1lX2NtcCAoZnJvbS0+ZmlsZSwgdG8uZmlsZSkgPT0gMCk7CiB9CiAKLS8qIEFzc2ln biBkaXNjcmltaW5hdG9ycyB0byBlYWNoIGJhc2ljIGJsb2NrLiAgKi8KKy8qIEFzc2lnbiBhIHVu aXF1ZSBkaXNjcmltaW5hdG9yIHZhbHVlIHRvIGFsbCBzdGF0ZW1lbnRzIGluIGJsb2NrIGJiIHRo YXQKKyAgIGhhdmUgdGhlIHNhbWUgbGluZSBudW1iZXIgYXMgbG9jdXMuICovCisKK3N0YXRpYyB2 b2lkCithc3NpZ25fZGlzY3JpbWluYXRvciAobG9jYXRpb25fdCBsb2N1cywgYmFzaWNfYmxvY2sg YmIpCit7CisgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIGdzaTsKKyAgaW50IGRpc2NyaW1pbmF0b3I7 CisKKyAgaWYgKGxvY3VzID09IFVOS05PV05fTE9DQVRJT04pCisgICAgcmV0dXJuOworCisgIGV4 cGFuZGVkX2xvY2F0aW9uIGxvY3VzX2UgPSBleHBhbmRfbG9jYXRpb24gKGxvY3VzKTsKKworICBk aXNjcmltaW5hdG9yID0gbmV4dF9kaXNjcmltaW5hdG9yX2Zvcl9sb2N1cyAobG9jdXNfZS5saW5l KTsKKworICBmb3IgKGdzaSA9IGdzaV9zdGFydF9iYiAoYmIpOyAhZ3NpX2VuZF9wIChnc2kpOyBn c2lfbmV4dCAoJmdzaSkpCisgICAgeworICAgICAgZ2ltcGxlICpzdG10ID0gZ3NpX3N0bXQgKGdz aSk7CisgICAgICBsb2NhdGlvbl90IHN0bXRfbG9jdXMgPSBnaW1wbGVfbG9jYXRpb24gKHN0bXQp OworICAgICAgaWYgKHNhbWVfbGluZV9wIChsb2N1cywgJmxvY3VzX2UsIHN0bXRfbG9jdXMpKQor CWdpbXBsZV9zZXRfbG9jYXRpb24gKHN0bXQsCisJICAgIGxvY2F0aW9uX3dpdGhfZGlzY3JpbWlu YXRvciAoc3RtdF9sb2N1cywgZGlzY3JpbWluYXRvcikpOworICAgIH0KK30KKworLyogQXNzaWdu IGRpc2NyaW1pbmF0b3JzIHRvIHN0YXRlbWVudCBsb2NhdGlvbnMuICAqLwogCiBzdGF0aWMgdm9p ZAogYXNzaWduX2Rpc2NyaW1pbmF0b3JzICh2b2lkKQpAQCAtMTE3Nyw2ICsxMjAzLDcgQEAgYXNz aWduX2Rpc2NyaW1pbmF0b3JzICh2b2lkKQogICAgICAgbG9jYXRpb25fdCBsb2N1cyA9IGxhc3Qg PyBnaW1wbGVfbG9jYXRpb24gKGxhc3QpIDogVU5LTk9XTl9MT0NBVElPTjsKIAogICAgICAgaWYg KGxvY3VzID09IFVOS05PV05fTE9DQVRJT04pCisKIAljb250aW51ZTsKIAogICAgICAgZXhwYW5k ZWRfbG9jYXRpb24gbG9jdXNfZSA9IGV4cGFuZF9sb2NhdGlvbiAobG9jdXMpOwpAQCAtMTE5MCwx MiArMTIxNywxMiBAQCBhc3NpZ25fZGlzY3JpbWluYXRvcnMgKHZvaWQpCiAJICAgICAgfHwgKGxh c3QgJiYgc2FtZV9saW5lX3AgKGxvY3VzLCAmbG9jdXNfZSwKIAkJCQkgICAgICAgZ2ltcGxlX2xv Y2F0aW9uIChsYXN0KSkpKQogCSAgICB7Ci0JICAgICAgaWYgKGUtPmRlc3QtPmRpc2NyaW1pbmF0 b3IgIT0gMCAmJiBiYi0+ZGlzY3JpbWluYXRvciA9PSAwKQotCQliYi0+ZGlzY3JpbWluYXRvcgot CQkgID0gbmV4dF9kaXNjcmltaW5hdG9yX2Zvcl9sb2N1cyAobG9jdXNfZS5saW5lKTsKKwkgICAg ICBpZiAoKChmaXJzdCAmJiBoYXNfZGlzY3JpbWluYXRvciAoZ2ltcGxlX2xvY2F0aW9uIChmaXJz dCkpKQorCQkgICB8fCAobGFzdCAmJiBoYXNfZGlzY3JpbWluYXRvciAoZ2ltcGxlX2xvY2F0aW9u IChsYXN0KSkpKQorCQkgICYmICFoYXNfZGlzY3JpbWluYXRvciAobG9jdXMpKQorCQlhc3NpZ25f ZGlzY3JpbWluYXRvciAobG9jdXMsIGJiKTsKIAkgICAgICBlbHNlCi0JCWUtPmRlc3QtPmRpc2Ny aW1pbmF0b3IKLQkJICA9IG5leHRfZGlzY3JpbWluYXRvcl9mb3JfbG9jdXMgKGxvY3VzX2UubGlu ZSk7CisJCWFzc2lnbl9kaXNjcmltaW5hdG9yIChsb2N1cywgZS0+ZGVzdCk7CiAJICAgIH0KIAl9 CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtcHJldHR5LXByaW50LmNjIGIvZ2NjL3RyZWUt cHJldHR5LXByaW50LmNjCmluZGV4IDZhY2QzOTRhMDc5Li5lZDljMzY4NzQyZSAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUtcHJldHR5LXByaW50LmNjCisrKyBiL2djYy90cmVlLXByZXR0eS1wcmludC5j YwpAQCAtMTQxNiw2ICsxNDE2LDcgQEAgdm9pZAogZHVtcF9sb2NhdGlvbiAocHJldHR5X3ByaW50 ZXIgKnBwLCBsb2NhdGlvbl90IGxvYykKIHsKICAgZXhwYW5kZWRfbG9jYXRpb24geGxvYyA9IGV4 cGFuZF9sb2NhdGlvbiAobG9jKTsKKyAgaW50IGRpc2NyaW1pbmF0b3IgPSBnZXRfZGlzY3JpbWlu YXRvcl9mcm9tX2xvY3VzIChsb2MpOwogCiAgIHBwX2xlZnRfYnJhY2tldCAocHApOwogICBpZiAo eGxvYy5maWxlKQpAQCAtMTQyNiw2ICsxNDI3LDExIEBAIGR1bXBfbG9jYXRpb24gKHByZXR0eV9w cmludGVyICpwcCwgbG9jYXRpb25fdCBsb2MpCiAgIHBwX2RlY2ltYWxfaW50IChwcCwgeGxvYy5s aW5lKTsKICAgcHBfY29sb24gKHBwKTsKICAgcHBfZGVjaW1hbF9pbnQgKHBwLCB4bG9jLmNvbHVt bik7CisgIGlmIChkaXNjcmltaW5hdG9yKQorICB7CisgICAgcHBfc3RyaW5nIChwcCwgIiBkaXNj cmltICIpOworICAgIHBwX2RlY2ltYWxfaW50IChwcCwgZGlzY3JpbWluYXRvcik7CisgIH0KICAg cHBfc3RyaW5nIChwcCwgIl0gIik7CiB9CiAKZGlmZiAtLWdpdCBhL2djYy90cmVlLmNjIGIvZ2Nj L3RyZWUuY2MKaW5kZXggMmJmYjY3NDg5YzYuLmEzNWExZTgyNGQwIDEwMDY0NAotLS0gYS9nY2Mv dHJlZS5jYworKysgYi9nY2MvdHJlZS5jYwpAQCAtMTQxMjQsNyArMTQxMjQsOCBAQCBzZXRfYmxv Y2sgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGJsb2NrKQogewogICBsb2NhdGlvbl90IHB1cmVfbG9j ID0gZ2V0X3B1cmVfbG9jYXRpb24gKGxvYyk7CiAgIHNvdXJjZV9yYW5nZSBzcmNfcmFuZ2UgPSBn ZXRfcmFuZ2VfZnJvbV9sb2MgKGxpbmVfdGFibGUsIGxvYyk7Ci0gIHJldHVybiBDT01CSU5FX0xP Q0FUSU9OX0RBVEEgKGxpbmVfdGFibGUsIHB1cmVfbG9jLCBzcmNfcmFuZ2UsIGJsb2NrKTsKKyAg dW5zaWduZWQgZGlzY3JpbWluYXRvciA9IGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jIChsaW5l X3RhYmxlLCBsb2MpOworICByZXR1cm4gQ09NQklORV9MT0NBVElPTl9EQVRBIChsaW5lX3RhYmxl LCBwdXJlX2xvYywgc3JjX3JhbmdlLCBibG9jaywgZGlzY3JpbWluYXRvcik7CiB9CiAKIGxvY2F0 aW9uX3QKQEAgLTE0MTQyLDExICsxNDE0MywxNCBAQCBzZXRfc291cmNlX3JhbmdlICh0cmVlIGV4 cHIsIHNvdXJjZV9yYW5nZSBzcmNfcmFuZ2UpCiAgIGlmICghRVhQUl9QIChleHByKSkKICAgICBy ZXR1cm4gVU5LTk9XTl9MT0NBVElPTjsKIAotICBsb2NhdGlvbl90IHB1cmVfbG9jID0gZ2V0X3B1 cmVfbG9jYXRpb24gKEVYUFJfTE9DQVRJT04gKGV4cHIpKTsKKyAgbG9jYXRpb25fdCBleHByX2xv Y2F0aW9uID0gRVhQUl9MT0NBVElPTiAoZXhwcik7CisgIGxvY2F0aW9uX3QgcHVyZV9sb2MgPSBn ZXRfcHVyZV9sb2NhdGlvbiAoZXhwcl9sb2NhdGlvbik7CisgIHVuc2lnbmVkIGRpc2NyaW1pbmF0 b3IgPSBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvY3VzIChleHByX2xvY2F0aW9uKTsKICAgbG9j YXRpb25fdCBhZGhvYyA9IENPTUJJTkVfTE9DQVRJT05fREFUQSAobGluZV90YWJsZSwKIAkJCQkJ ICAgIHB1cmVfbG9jLAogCQkJCQkgICAgc3JjX3JhbmdlLAotCQkJCQkgICAgTlVMTCk7CisJCQkJ CSAgICBOVUxMLAorCQkJCQkgICAgZGlzY3JpbWluYXRvcik7CiAgIFNFVF9FWFBSX0xPQ0FUSU9O IChleHByLCBhZGhvYyk7CiAgIHJldHVybiBhZGhvYzsKIH0KZGlmZiAtLWdpdCBhL2xpYmNwcC9p bmNsdWRlL2xpbmUtbWFwLmggYi9saWJjcHAvaW5jbHVkZS9saW5lLW1hcC5oCmluZGV4IDgwMzM1 NzIxZTAzLi5mMmQ5ZTNjZmJiNyAxMDA2NDQKLS0tIGEvbGliY3BwL2luY2x1ZGUvbGluZS1tYXAu aAorKysgYi9saWJjcHAvaW5jbHVkZS9saW5lLW1hcC5oCkBAIC03NTUsNiArNzU1LDcgQEAgc3Ry dWN0IEdUWSgoKSkgbG9jYXRpb25fYWRob2NfZGF0YSB7CiAgIGxvY2F0aW9uX3QgbG9jdXM7CiAg IHNvdXJjZV9yYW5nZSBzcmNfcmFuZ2U7CiAgIHZvaWQgKiBHVFkoKHNraXApKSBkYXRhOworICB1 bnNpZ25lZCBkaXNjcmltaW5hdG9yOwogfTsKIAogc3RydWN0IGh0YWI7CkBAIC0xMDMyLDEyICsx MDMzLDE0IEBAIExJTkVNQVBTX0xBU1RfQUxMT0NBVEVEX01BQ1JPX01BUCAoY29uc3QgbGluZV9t YXBzICpzZXQpCiB9CiAKIGV4dGVybiBsb2NhdGlvbl90IGdldF9jb21iaW5lZF9hZGhvY19sb2Mg KGxpbmVfbWFwcyAqLCBsb2NhdGlvbl90LAotCQkJCQkgIHNvdXJjZV9yYW5nZSwgdm9pZCAqKTsK KwkJCQkJICBzb3VyY2VfcmFuZ2UsIHZvaWQgKiwgdW5zaWduZWQpOwogZXh0ZXJuIHZvaWQgKmdl dF9kYXRhX2Zyb21fYWRob2NfbG9jIChjb25zdCBsaW5lX21hcHMgKiwgbG9jYXRpb25fdCk7Citl eHRlcm4gdW5zaWduZWQgZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9hZGhvY19sb2MgKGNvbnN0IGxp bmVfbWFwcyAqLCBsb2NhdGlvbl90KTsKIGV4dGVybiBsb2NhdGlvbl90IGdldF9sb2NhdGlvbl9m cm9tX2FkaG9jX2xvYyAoY29uc3QgbGluZV9tYXBzICosCiAJCQkJCSAgICAgICBsb2NhdGlvbl90 KTsKIAogZXh0ZXJuIHNvdXJjZV9yYW5nZSBnZXRfcmFuZ2VfZnJvbV9sb2MgKGxpbmVfbWFwcyAq c2V0LCBsb2NhdGlvbl90IGxvYyk7CitleHRlcm4gdW5zaWduZWQgZ2V0X2Rpc2NyaW1pbmF0b3Jf ZnJvbV9sb2MgKGxpbmVfbWFwcyAqc2V0LCBsb2NhdGlvbl90IGxvYyk7CiAKIC8qIEdldCB3aGV0 aGVyIGxvY2F0aW9uIExPQyBpcyBhICJwdXJlIiBsb2NhdGlvbiwgb3IKICAgIHdoZXRoZXIgaXQg aXMgYW4gYWQtaG9jIGxvY2F0aW9uLCBvciBlbWJlZHMgcmFuZ2UgaW5mb3JtYXRpb24uICAqLwpA QCAtMTA1Niw5ICsxMDU5LDEwIEBAIGlubGluZSBsb2NhdGlvbl90CiBDT01CSU5FX0xPQ0FUSU9O X0RBVEEgKGNsYXNzIGxpbmVfbWFwcyAqc2V0LAogCQkgICAgICAgbG9jYXRpb25fdCBsb2MsCiAJ CSAgICAgICBzb3VyY2VfcmFuZ2Ugc3JjX3JhbmdlLAotCQkgICAgICAgdm9pZCAqYmxvY2spCisJ CSAgICAgICB2b2lkICpibG9jaywKKwkJICAgICAgIHVuc2lnbmVkIGRpc2NyaW1pbmF0b3IpCiB7 Ci0gIHJldHVybiBnZXRfY29tYmluZWRfYWRob2NfbG9jIChzZXQsIGxvYywgc3JjX3JhbmdlLCBi bG9jayk7CisgIHJldHVybiBnZXRfY29tYmluZWRfYWRob2NfbG9jIChzZXQsIGxvYywgc3JjX3Jh bmdlLCBibG9jaywgZGlzY3JpbWluYXRvcik7CiB9CiAKIGV4dGVybiB2b2lkIHJlYnVpbGRfbG9j YXRpb25fYWRob2NfaHRhYiAoY2xhc3MgbGluZV9tYXBzICopOwpkaWZmIC0tZ2l0IGEvbGliY3Bw L2xleC5jYyBiL2xpYmNwcC9sZXguY2MKaW5kZXggZjg5MWQzZTE3ZGYuLjdiYmQ4YzBmOGUxIDEw MDY0NAotLS0gYS9saWJjcHAvbGV4LmNjCisrKyBiL2xpYmNwcC9sZXguY2MKQEAgLTEzNTksNyAr MTM1OSw4IEBAIGdldF9sb2NhdGlvbl9mb3JfYnl0ZV9yYW5nZV9pbl9jdXJfbGluZSAoY3BwX3Jl YWRlciAqcGZpbGUsCiAgIGxvY2F0aW9uX3QgY29tYmluZWRfbG9jID0gQ09NQklORV9MT0NBVElP Tl9EQVRBIChwZmlsZS0+bGluZV90YWJsZSwKIAkJCQkJCSAgIHN0YXJ0X2xvYywKIAkJCQkJCSAg IHNyY19yYW5nZSwKLQkJCQkJCSAgIE5VTEwpOworCQkJCQkJICAgTlVMTCwKKwkJCQkJCSAgIDAp OwogICByZXR1cm4gY29tYmluZWRfbG9jOwogfQogCkBAIC0xODI4LDcgKzE4MjksNyBAQCB3YXJu X2Fib3V0X25vcm1hbGl6YXRpb24gKGNwcF9yZWFkZXIgKnBmaWxlLAogCQkJCQkgICBDUFBfQlVG X0NPTFVNTiAocGZpbGUtPmJ1ZmZlciwKIAkJCQkJCQkgICBwZmlsZS0+YnVmZmVyLT5jdXIpKTsK IAkgIGxvYyA9IENPTUJJTkVfTE9DQVRJT05fREFUQSAocGZpbGUtPmxpbmVfdGFibGUsCi0JCQkJ ICAgICAgIGxvYywgdG9rX3JhbmdlLCBOVUxMKTsKKwkJCQkgICAgICAgbG9jLCB0b2tfcmFuZ2Us IE5VTEwsIDApOwogCX0KIAogICAgICAgZW5jb2RpbmdfcmljaF9sb2NhdGlvbiByaWNoX2xvYyAo cGZpbGUsIGxvYyk7CkBAIC00MDI1LDcgKzQwMjYsNyBAQCBfY3BwX2xleF9kaXJlY3QgKGNwcF9y ZWFkZXIgKnBmaWxlKQogCiAgICAgICByZXN1bHQtPnNyY19sb2MgPSBDT01CSU5FX0xPQ0FUSU9O X0RBVEEgKHBmaWxlLT5saW5lX3RhYmxlLAogCQkJCQkgICAgICAgcmVzdWx0LT5zcmNfbG9jLAot CQkJCQkgICAgICAgdG9rX3JhbmdlLCBOVUxMKTsKKwkJCQkJICAgICAgIHRva19yYW5nZSwgTlVM TCwgMCk7CiAgICAgfQogCiAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9saWJjcHAvbGlu ZS1tYXAuY2MgYi9saWJjcHAvbGluZS1tYXAuY2MKaW5kZXggNjIwNzdjMzg1N2MuLmUxN2QxMDlk OWYxIDEwMDY0NAotLS0gYS9saWJjcHAvbGluZS1tYXAuY2MKKysrIGIvbGliY3BwL2xpbmUtbWFw LmNjCkBAIC02Nyw3ICs2Nyw4IEBAIGxvY2F0aW9uX2FkaG9jX2RhdGFfaGFzaCAoY29uc3Qgdm9p ZCAqbCkKICAgcmV0dXJuICgoaGFzaHZhbF90KSBsYi0+bG9jdXMKIAkgICsgKGhhc2h2YWxfdCkg bGItPnNyY19yYW5nZS5tX3N0YXJ0CiAJICArIChoYXNodmFsX3QpIGxiLT5zcmNfcmFuZ2UubV9m aW5pc2gKLQkgICsgKHNpemVfdCkgbGItPmRhdGEpOworCSAgKyAoc2l6ZV90KSBsYi0+ZGF0YQor CSAgKyBsYi0+ZGlzY3JpbWluYXRvcik7CiB9CiAKIC8qIENvbXBhcmUgZnVuY3Rpb24gZm9yIGxv Y2F0aW9uX2FkaG9jX2RhdGEgaGFzaHRhYmxlLiAgKi8KQEAgLTgyLDcgKzgzLDggQEAgbG9jYXRp b25fYWRob2NfZGF0YV9lcSAoY29uc3Qgdm9pZCAqbDEsIGNvbnN0IHZvaWQgKmwyKQogICByZXR1 cm4gKGxiMS0+bG9jdXMgPT0gbGIyLT5sb2N1cwogCSAgJiYgbGIxLT5zcmNfcmFuZ2UubV9zdGFy dCA9PSBsYjItPnNyY19yYW5nZS5tX3N0YXJ0CiAJICAmJiBsYjEtPnNyY19yYW5nZS5tX2Zpbmlz aCA9PSBsYjItPnNyY19yYW5nZS5tX2ZpbmlzaAotCSAgJiYgbGIxLT5kYXRhID09IGxiMi0+ZGF0 YSk7CisJICAmJiBsYjEtPmRhdGEgPT0gbGIyLT5kYXRhCisJICAmJiBsYjEtPmRpc2NyaW1pbmF0 b3IgPT0gbGIyLT5kaXNjcmltaW5hdG9yKTsKIH0KIAogLyogVXBkYXRlIHRoZSBoYXNodGFibGUg d2hlbiBsb2NhdGlvbl9hZGhvY19kYXRhIGlzIHJlYWxsb2NhdGVkLiAgKi8KQEAgLTExNiwxMyAr MTE4LDE3IEBAIHN0YXRpYyBib29sCiBjYW5fYmVfc3RvcmVkX2NvbXBhY3RseV9wIChsaW5lX21h cHMgKnNldCwKIAkJCSAgIGxvY2F0aW9uX3QgbG9jdXMsCiAJCQkgICBzb3VyY2VfcmFuZ2Ugc3Jj X3JhbmdlLAotCQkJICAgdm9pZCAqZGF0YSkKKwkJCSAgIHZvaWQgKmRhdGEsCisJCQkgICB1bnNp Z25lZCBkaXNjcmltaW5hdG9yKQogewogICAvKiBJZiB0aGVyZSdzIGFuIGFkLWhvYyBwb2ludGVy LCB3ZSBjYW4ndCBzdG9yZSBpdCBkaXJlY3RseSBpbiB0aGUKICAgICAgbG9jYXRpb25fdCwgd2Ug bmVlZCB0aGUgbG9va2FzaWRlLiAgKi8KICAgaWYgKGRhdGEpCiAgICAgcmV0dXJuIGZhbHNlOwog CisgIGlmIChkaXNjcmltaW5hdG9yICE9IDApCisgICAgcmV0dXJuIGZhbHNlOworCiAgIC8qIFdl IG9ubHkgc3RvcmUgcmFuZ2VzIHRoYXQgYmVnaW4gYXQgdGhlIGxvY3VzIGFuZCB0aGF0IGFyZSBz dWZmaWNpZW50bHkKICAgICAgInNhbmUiLiAgKi8KICAgaWYgKHNyY19yYW5nZS5tX3N0YXJ0ICE9 IGxvY3VzKQpAQCAtMTU3LDcgKzE2Myw4IEBAIGxvY2F0aW9uX3QKIGdldF9jb21iaW5lZF9hZGhv Y19sb2MgKGxpbmVfbWFwcyAqc2V0LAogCQkJbG9jYXRpb25fdCBsb2N1cywKIAkJCXNvdXJjZV9y YW5nZSBzcmNfcmFuZ2UsCi0JCQl2b2lkICpkYXRhKQorCQkJdm9pZCAqZGF0YSwKKwkJCXVuc2ln bmVkIGRpc2NyaW1pbmF0b3IpCiB7CiAgIHN0cnVjdCBsb2NhdGlvbl9hZGhvY19kYXRhIGxiOwog ICBzdHJ1Y3QgbG9jYXRpb25fYWRob2NfZGF0YSAqKnNsb3Q7CkBAIC0xNzUsNyArMTgyLDcgQEAg Z2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAobGluZV9tYXBzICpzZXQsCiAJCSAgfHwgcHVyZV9sb2Nh dGlvbl9wIChzZXQsIGxvY3VzKSk7CiAKICAgLyogQ29uc2lkZXIgc2hvcnQtcmFuZ2Ugb3B0aW1p emF0aW9uLiAgKi8KLSAgaWYgKGNhbl9iZV9zdG9yZWRfY29tcGFjdGx5X3AgKHNldCwgbG9jdXMs IHNyY19yYW5nZSwgZGF0YSkpCisgIGlmIChjYW5fYmVfc3RvcmVkX2NvbXBhY3RseV9wIChzZXQs IGxvY3VzLCBzcmNfcmFuZ2UsIGRhdGEsIGRpc2NyaW1pbmF0b3IpKQogICAgIHsKICAgICAgIC8q IFRoZSBsb3cgYml0cyBvdWdodCB0byBiZSBjbGVhci4gICovCiAgICAgICBsaW5lbWFwX2Fzc2Vy dCAocHVyZV9sb2NhdGlvbl9wIChzZXQsIGxvY3VzKSk7CkBAIC0xOTUsMTUgKzIwMiwxNiBAQCBn ZXRfY29tYmluZWRfYWRob2NfbG9jIChsaW5lX21hcHMgKnNldCwKICAgICAgd2hlbiBsb2N1cyA9 PSBzdGFydCA9PSBmaW5pc2ggKGFuZCBkYXRhIGlzIE5VTEwpLiAgKi8KICAgaWYgKGxvY3VzID09 IHNyY19yYW5nZS5tX3N0YXJ0CiAgICAgICAmJiBsb2N1cyA9PSBzcmNfcmFuZ2UubV9maW5pc2gK LSAgICAgICYmICFkYXRhKQorICAgICAgJiYgIWRhdGEgJiYgZGlzY3JpbWluYXRvciA9PSAwKQog ICAgIHJldHVybiBsb2N1czsKIAotICBpZiAoIWRhdGEpCisgIGlmICghZGF0YSAmJiBkaXNjcmlt aW5hdG9yID09IDApCiAgICAgc2V0LT5udW1fdW5vcHRpbWl6ZWRfcmFuZ2VzKys7CiAKICAgbGIu bG9jdXMgPSBsb2N1czsKICAgbGIuc3JjX3JhbmdlID0gc3JjX3JhbmdlOwogICBsYi5kYXRhID0g ZGF0YTsKKyAgbGIuZGlzY3JpbWluYXRvciA9IGRpc2NyaW1pbmF0b3I7CiAgIHNsb3QgPSAoc3Ry dWN0IGxvY2F0aW9uX2FkaG9jX2RhdGEgKiopCiAgICAgICBodGFiX2ZpbmRfc2xvdCAoc2V0LT5s b2NhdGlvbl9hZGhvY19kYXRhX21hcC5odGFiLCAmbGIsIElOU0VSVCk7CiAgIGlmICgqc2xvdCA9 PSBOVUxMKQpAQCAtMjQ4LDYgKzI1NiwxMyBAQCBnZXRfZGF0YV9mcm9tX2FkaG9jX2xvYyAoY29u c3QgY2xhc3MgbGluZV9tYXBzICpzZXQsIGxvY2F0aW9uX3QgbG9jKQogICByZXR1cm4gc2V0LT5s b2NhdGlvbl9hZGhvY19kYXRhX21hcC5kYXRhW2xvYyAmIE1BWF9MT0NBVElPTl9UXS5kYXRhOwog fQogCit1bnNpZ25lZAorZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9hZGhvY19sb2MgKGNvbnN0IGNs YXNzIGxpbmVfbWFwcyAqc2V0LCBsb2NhdGlvbl90IGxvYykKK3sKKyAgbGluZW1hcF9hc3NlcnQg KElTX0FESE9DX0xPQyAobG9jKSk7CisgIHJldHVybiBzZXQtPmxvY2F0aW9uX2FkaG9jX2RhdGFf bWFwLmRhdGFbbG9jICYgTUFYX0xPQ0FUSU9OX1RdLmRpc2NyaW1pbmF0b3I7Cit9CisKIC8qIFJl dHVybiB0aGUgbG9jYXRpb24gZm9yIHRoZSBhZGhvYyBsb2MuICAqLwogCiBsb2NhdGlvbl90CkBA IC0yOTMsNiArMzA4LDE1IEBAIGdldF9yYW5nZV9mcm9tX2xvYyAobGluZV9tYXBzICpzZXQsCiAg IHJldHVybiBzb3VyY2VfcmFuZ2U6OmZyb21fbG9jYXRpb24gKGxvYyk7CiB9CiAKK3Vuc2lnbmVk CitnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvYyAobGluZV9tYXBzICpzZXQsCisJCQkgICAgbG9j YXRpb25fdCBsb2MpCit7CisgIGlmIChJU19BREhPQ19MT0MgKGxvYykpCisgICAgcmV0dXJuIGdl dF9kaXNjcmltaW5hdG9yX2Zyb21fYWRob2NfbG9jIChzZXQsIGxvYyk7CisgIHJldHVybiAwOwor fQorCiAvKiBHZXQgd2hldGhlciBsb2NhdGlvbiBMT0MgaXMgYSAicHVyZSIgbG9jYXRpb24sIG9y CiAgICB3aGV0aGVyIGl0IGlzIGFuIGFkLWhvYyBsb2NhdGlvbiwgb3IgZW1iZWRzIHJhbmdlIGlu Zm9ybWF0aW9uLiAgKi8KIAotLSAKMi4yNS4xCgo= --_002_MW2PR2101MB1770D383827C3C1EF831128E919F9MW2PR2101MB1770_--