From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2084.outbound.protection.outlook.com [40.107.241.84]) by sourceware.org (Postfix) with ESMTPS id 86C553858D32 for ; Wed, 15 Nov 2023 00:01:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 86C553858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 86C553858D32 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.241.84 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1700006484; cv=pass; b=d9L0emo0s8g4ZZuUsyfC+rpreVpHUDA/fRWCSGd6TfhFQfN1lWEqfVSvF4JBRnIwbNYgsrX83gbxdvoLklOiHznjmG6vFrKoYiKCNiwp6q+yLTtXr1pRfb6jhp8upwD02txx0Sg80ahMNBWlJ+qJk4Sx3crF4iEFCSoEGUaATrg= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1700006484; c=relaxed/simple; bh=jhlR/jNaFZ0P3nVyhs2lqhAnNRAtiwN6cZWW/Hcj/kA=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=cek6CSfAYwmRjzeJV0U7ffvybzUCABeVLrAK01Bc0DKnVmCg9xsMbMjY+J6eTv/ZO5YcMNiDVn6WvYi/nKT50sxD+XBG/AdApIKP02Vn0pikcIcDpK3/ggMBDLc5DfleD3LGZFP5qH1RPywf87d/77IO35WSduXzpJXXdZidQBw= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=LdsTuF1YBrk91d/esAuLBJFL2pGEC+70IlWqtH3NDqBj9LtruvDs2LDgGWbj9lRh87vLuatY7k9oqGp03CZg431bTjlrMIiGTIlcq+jhfYiFfYz9+JAVz/ZvqTbjjGaNjf4PMIW4aYCJYki/BAyHeGD4x+2DspNHROWDzzC7Bnbn+AI+35tmpVLRdjs7KRsu0vueK2Gcx07Vvz4fj0Fy6Dg74LLW2f2pBz7wX8bQFEjgzW3XiSfBDQU9sNYLFUzFKPmvJBodRUaEMSBgXLR3DM0NOXqPhjdjkPr6UGArxQ56zjJgyjUZjd8A4OFoBA0wqIF5FjKj/EZmDPRayMD2hA== ARC-Message-Signature: i=2; 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=sm/lKaBqIy4VITfJ18AY9ncDHgvpuPEtr5rv+1bpx7g=; b=GVnj0jz/IDi497NMC7REm9oeBm2s17cYECZw2A431alAQD4OtQIXOk7v2b20rAHS7nlGRWO6vD3FfnC5KUmrks0UetEx5SrwbuvghsZhRWy+wS0l/AW/QwVxd0JXjv6xGc+81zHsYc+E8aNRpc6VKLgHk/AWKA4+jOdOrYXacTSSBzxtdtKaGvBQsoO52658xCVfrrxb3yZVCchgLofBhHnTn3h84F/C9o5wODIvlWPcMvj9OyRDi+lJFquXAc33jimVRb94ACUraCsfOpXXGI7dYS9GhX3rewggjJ0M7ssmW11rKTU93i+2PDk1xu1r2VISX92XP8OSjo/BvUb1NQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sm/lKaBqIy4VITfJ18AY9ncDHgvpuPEtr5rv+1bpx7g=; b=Y0r5F76VxcmE4To/+tayCSgoR33N0eBIuhjxv24JqDMYrO0mglUHKJh8gkZMu02cYlZ/7MAtYQArzTCqdOpfldsCiv+zXWIAzJY86E1ndhOLqhlW5qpaY9m9XlFSGV35lKqcthLT2bTpuBD9wCjNmpBLLrPaNwcxBg6rUl2tU5M= Received: from AM0PR04CA0124.eurprd04.prod.outlook.com (2603:10a6:208:55::29) by AS8PR08MB6360.eurprd08.prod.outlook.com (2603:10a6:20b:33e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.31; Wed, 15 Nov 2023 00:01:11 +0000 Received: from AMS0EPF00000197.eurprd05.prod.outlook.com (2603:10a6:208:55:cafe::32) by AM0PR04CA0124.outlook.office365.com (2603:10a6:208:55::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.31 via Frontend Transport; Wed, 15 Nov 2023 00:01:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AMS0EPF00000197.mail.protection.outlook.com (10.167.16.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7002.19 via Frontend Transport; Wed, 15 Nov 2023 00:01:11 +0000 Received: ("Tessian outbound 7c4ecdadb9e7:v228"); Wed, 15 Nov 2023 00:01:11 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: b978c909cf722d62 X-CR-MTA-TID: 64aa7808 Received: from dcca27266b92.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F2D2AE3E-DC11-475A-AB7B-1328CEB41181.1; Wed, 15 Nov 2023 00:01:00 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id dcca27266b92.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 15 Nov 2023 00:01:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FeFyBiacePIQ/qB4tcisbV0U6V1p+cyFnNINrgsFFWYBVoBjcHNCULzYpGps4TRL33fZh9zeEseMaqJj8kUv3LF4ovp2Uoc6vu9zFK7Wlvj+9TgdkNedA4sDX619bbiSkthEqmsIAqPV4P1Ynv12TWiL1J/u/0U4Qv0dCJtdvgocTd7OChiL6HVk8P6mQjXr5SKk3gHI2XfCgGthZMNqYLkavzVIddnt6vfYNqpcJpZ/Gv8LUYuCkS97ax6wAPQRtv8UyxmdIbZLjvsGQwpqSGj2+4Tv1+eamc5unuKeP/7o+yeoVW2N1YMHAeoG1oHG5xgorVfA88ZK9gK7HNE8ag== 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=sm/lKaBqIy4VITfJ18AY9ncDHgvpuPEtr5rv+1bpx7g=; b=RkKx2zVhhg3qivWLnhVMuWW5ZlHnH0oY0s/L6+OgYJb4NPBHGgX483JFoJowbYMW3Dtrd+u6iHLQ8xfQt7u7WRbbwyyHvDGCv9GD3uSvBXogkFQsQX5D3In5KfyNhsIV2ZOgViZBq+Fg8GgXls4ECeETYWD6WRtHxzldVHKuh/VoScsea6ma/AWbIiVKWklj0OvmJH1PxeHdgQDORKlXAugXaV9PojpArieASo5mMPsvEr4FmJxrCiBJTeEur5sn7LP9+CkdD2sLdqHfxCd3I4XHblySS0GKUtquyA1/K9swL83MmECUtWS7csxXu5T0UWRlyD7pNqLqpwjncxBISg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sm/lKaBqIy4VITfJ18AY9ncDHgvpuPEtr5rv+1bpx7g=; b=Y0r5F76VxcmE4To/+tayCSgoR33N0eBIuhjxv24JqDMYrO0mglUHKJh8gkZMu02cYlZ/7MAtYQArzTCqdOpfldsCiv+zXWIAzJY86E1ndhOLqhlW5qpaY9m9XlFSGV35lKqcthLT2bTpuBD9wCjNmpBLLrPaNwcxBg6rUl2tU5M= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AS8PR08MB6360.eurprd08.prod.outlook.com (2603:10a6:20b:33e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.31; Wed, 15 Nov 2023 00:00:57 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::9679:2ab0:99c6:54a3]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::9679:2ab0:99c6:54a3%6]) with mapi id 15.20.6977.029; Wed, 15 Nov 2023 00:00:57 +0000 From: Tamar Christina To: Tamar Christina , "gcc-patches@gcc.gnu.org" CC: nd , "rguenther@suse.de" , "jlaw@ventanamicro.com" Subject: RE: [PATCH 4/21]middle-end: update loop peeling code to maintain LCSSA form for early breaks Thread-Topic: [PATCH 4/21]middle-end: update loop peeling code to maintain LCSSA form for early breaks Thread-Index: AQHaEIQzNfx0IW5sjkeDiQGlRVfnVrB6jCiA Date: Wed, 15 Nov 2023 00:00:57 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|AS8PR08MB6360:EE_|AMS0EPF00000197:EE_|AS8PR08MB6360:EE_ X-MS-Office365-Filtering-Correlation-Id: b2afd8f9-2b3f-4a73-56c1-08dbe56dfa3f x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: Jzq32uYuMmjYgo/tK9Ahmh3wpSUknjq1VB5Iqw7fQLi7bF9ux+8Qarvn/pJcho49fgV0gV/8+h6htlBRHcK4Cvh6PqKEUN4HrjPDuyH044YsUUE8ZqQZFi+v/i+gk8OJNbkwjNtxoOOnr0hzbYHCT0pDFNzrYe9j0G4EmP0KoENg8t3OfH+51Z47iFB164Ns2UtJQZQVefGHCOoB3xZEN5GQqzjaz3wZcUrmOpBe70tcpetpshRmA+j3sfOPF3n13D1TKs1ti6ZUQg6E2M5FA72Su1OS1DGLvE7EE0QdPtZ8dWhH/TYM49WwKBoTAVhym8hi8/IpQYNYHipGCD9nGmPeofEeHs3QUb/P923xNCK6X2pqt9YQsRodKCBo7oeEeV8y1Jq0Ltml8kc1C5lmH3PemT8sRp6ZF9k7XTSFy9nd6LHP+e2tQOv8HLLsbJGx2mWa1ry+2K/9xA0ovJAMt4xOpJ/kji5tHqEOx5G+K7qmptBuHrmZT+osb/BSq2P0+63k8HuY2UKl7W62D9cfjZ5Sr6WKpl/hNsXk/5SDMEtQrJSs9sUW/UQ2Q4RoZYYSGnY69T2x0Nso8C+y9NMpqgEnefM/UofYunpvU5aALw5vEkfxY7MQZou9WqsEMWgy X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(366004)(136003)(396003)(346002)(39860400002)(230922051799003)(64100799003)(1800799009)(186009)(451199024)(7696005)(6506007)(9686003)(4743002)(26005)(478600001)(86362001)(52536014)(8936002)(8676002)(41300700001)(2906002)(4326008)(33656002)(5660300002)(15650500001)(30864003)(38070700009)(76116006)(66446008)(66946007)(66476007)(66556008)(54906003)(64756008)(316002)(110136005)(71200400001)(38100700002)(55016003)(122000001)(99936003)(83380400001);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB53254CC2C5490804977E0852FFB1AVI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6360 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF00000197.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 1944fd5b-f546-421b-9a22-08dbe56df1e6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WpEqxw99gc7gzd6Uj8X4Du0RycX5PP8zQHCCjdJv+iLL2H1rp8FzSFmXICP6LT0Wy86+7kgLsCeCFlEyYqAHjLTRJz/CSUhKIMFFruun6maAznMRUhtn2jr1QmRAnyY7JhwzbnRT3Vp/L82pHUcMVkcOzCc+V6Cq0tndZBkY5bT1ZL/J+qCF6/ZGrFX2mO1zecmmFwF91rokiWIjFuMhRNqHWfbGD2Pmk6PQTNV3dfEIAJSUfZ1uJ1JJvOez1k8iKaKUOHe4lsSiaVjgz3rekHhczjRhxFhyvPJ33N+8hYLtqTMjr7l+BRAuDyPWE0Llf8AIHlj5eI7MtA7dLrCzvuRG+3hi/u1rtEfRm0h01oNehxwFZlC7Cq+awZi53QyUxdBsmZEJeIEffYJjsJdG7vC2lazUWqN/Hpj8kELGI+ni5rVmLHuX049e/Sb+S1HTUAqVA0J7a08K51Xd6UJVEYNZS0ygg0K6X71tWvrV91EMkFhXOT1daP/4Sg8map94iIJLKHhHgjMANmNyxq68alU9EBB0p8t4E34zRNYzvxhHC//AC1tDM8CWdsVDN1x6d3n4FP5V+WtP1mYd1nDlx15L4B+Z5rLG3VF+5BuMOXPC5Qg1yYnBY7ab2s9a1OtMVEjeiCrU/p/6YSugOar846tT12YDcjj0OaZwX5Ap9hpDEbnqnWVy+s5fI4svRoijrBPjfspntTi77UQnh2325NMruX+RZuH049v5RDf8nlcB9z/8D4se5bKoVnzMhWeq X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(376002)(136003)(396003)(346002)(39860400002)(230922051799003)(64100799003)(1800799009)(186009)(451199024)(82310400011)(46966006)(36840700001)(40470700004)(7696005)(6506007)(33964004)(9686003)(336012)(4743002)(40460700003)(82740400003)(107886003)(26005)(478600001)(86362001)(52536014)(8936002)(8676002)(41300700001)(235185007)(2906002)(4326008)(33656002)(5660300002)(15650500001)(30864003)(70586007)(54906003)(316002)(70206006)(110136005)(40480700001)(55016003)(356005)(47076005)(36860700001)(99936003)(81166007)(83380400001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Nov 2023 00:01:11.5083 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b2afd8f9-2b3f-4a73-56c1-08dbe56dfa3f X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000197.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6360 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_VI1PR08MB53254CC2C5490804977E0852FFB1AVI1PR08MB5325eurp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UGF0Y2ggdXBkYXRlZCB0byBsYXRlc3QgdHJ1bmssDQoNClRoaXMgc3BsaXRzIHRoZSBwYXJ0IG9m IHRoZSBmdW5jdGlvbiB0aGF0IGRvZXMgcGVlbGluZyBmb3IgbG9vcHMgYXQgZXhpdHMgdG8NCmEg ZGlmZmVyZW50IGZ1bmN0aW9uLiAgSW4gdGhpcyBuZXcgZnVuY3Rpb24gd2UgYWxzbyBwZWVsIGZv ciBlYXJseSBicmVha3MuDQoNClBlZWxpbmcgZm9yIGVhcmx5IGJyZWFrcyB3b3JrcyBieSByZWRp cmVjdGluZyBhbGwgZWFybHkgYnJlYWsgZXhpdHMgdG8gYQ0Kc2luZ2xlICJlYXJseSBicmVhayIg YmxvY2sgYW5kIGNvbWJpbmUgdGhlbSBhbmQgdGhlIG5vcm1hbCBleGl0IGVkZ2UgdG9nZXRoZXIN CmxhdGVyIGluIGEgZGlmZmVyZW50IGJsb2NrIHdoaWNoIHRoZW4gZ29lcyBpbnRvIHRoZSBlcGls b2cgcHJlaGVhZGVyLg0KDQpUaGlzIGFsbG93cyB1cyB0byByZS11c2UgYWxsIHRoZSBleGlzdGlu ZyBjb2RlIGZvciBJViB1cGRhdGVzLCBBZGRpdGlvbmFsbHkgdGhpcw0KYWxzbyBlbmFibGVzIGNv cnJlY3QgbGlua2luZyBmb3IgbXVsdGlwbGUgdmVjdG9yIGVwaWxvZ3Vlcy4NCg0KZmx1c2hfcGVu ZGluZ19zdG10cyBjYW5ub3QgYmUgdXNlZCBpbiB0aGlzIHNjZW5hcmlvIHNpbmNlIGl0IHVwZGF0 ZXMgdGhlIFBISQ0Kbm9kZXMgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBhcmUgaW4gdGhlIGV4aXQg ZGVzdGluYXRpb24gYmxvY2tzLiAgVGhpcyBtZWFucw0KdGhleSBhcmUgaW4gQ0ZHIHZpc2l0IG9y ZGVyLiAgV2l0aCBhIHNpbmdsZSBleGl0IHRoaXMgZG9lc24ndCBtYXR0ZXIgYnV0IHdpdGgNCm11 bHRpcGxlIGV4aXRzIHdpdGggZGlmZmVyZW50IGxpdmUgdmFsdWVzIHRocm91Z2ggdGhlIGRpZmZl cmVudCBleGl0cyB0aGUgb3JkZXINCnVzdWFsbHkgZG9lcyBub3QgbGluZSB1cC4NCg0KQWRkaXRp b25hbGx5IHRoZSB2ZWN0b3JpemVyIGhlbHBlciBmdW5jdGlvbnMgZXhwZWN0IHRvIGJlIGFibGUg dG8gaXRlcmF0ZSBvdmVyDQp0aGUgbm9kZXMgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBvY2N1ciBp biB0aGUgbG9vcCBoZWFkZXIgYmxvY2tzLiAgVGhpcyBpcyBhbg0KaW52YXJpYW50IHdlIG11c3Qg bWFpbnRhaW4uICBUbyBkbyB0aGlzIHdlIGp1c3QgaW5saW5lIHRoZSB3b3JrDQpmbHVzaF9wZW5k aW5nX3N0bXRzIGJ1dCBtYWludGFpbiB0aGUgb3JkZXIgYnkgdXNpbmcgdGhlIGhlYWRlciBibG9j a3MgdG8gZ3VpZGUNCnRoZSB3b3JrLg0KDQpCb290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFhcmNo NjQtbm9uZS1saW51eC1nbnUgYW5kIG5vIGlzc3Vlcy4NCg0KT2sgZm9yIG1hc3Rlcj8NCg0KVGhh bmtzLA0KVGFtYXINCg0KZ2NjL0NoYW5nZUxvZzoNCg0KCSogdHJlZS12ZWN0LWxvb3AtbWFuaXAu Y2MgKHZlY3RfaXNfbG9vcF9leGl0X2xhdGNoX3ByZWQpOiBOZXcuDQoJKHNscGVlbF90cmVlX2R1 cGxpY2F0ZV9sb29wX2Zvcl92ZWN0b3JpemF0aW9uKTogTmV3Lg0KCShzbHBlZWxfdHJlZV9kdXBs aWNhdGVfbG9vcF90b19lZGdlX2NmZyk6IHVzZSBpdC4NCgkqIHRyZWUtdmVjdG9yaXplci5oIChp c19sb29wX2hlYWRlcl9iYl9wKTogRHJvcCBhc3NlcnQuDQoJKHNscGVlbF90cmVlX2R1cGxpY2F0 ZV9sb29wX3RvX2VkZ2VfY2ZnKTogVXBkYXRlIHNpZ25hdHVyZS4NCgkodmVjdF9pc19sb29wX2V4 aXRfbGF0Y2hfcHJlZCk6IE5ldy4NCg0KLS0tIGlubGluZSBjb3B5IG9mIHBhdGNoIC0tLQ0KDQpk aWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjIGIvZ2NjL3RyZWUtdmVjdC1s b29wLW1hbmlwLmNjDQppbmRleCBiOTE2MTI3NGNlNDAxYTczMDdmM2U2MWFkMjNhYTAzNjcwMTE5 MGQ3Li5mYWZiZjkyNGU4ZGIxOGViNGVlYzdhNGExOTA2ZDEwZjZjZTk4MTJmIDEwMDY0NA0KLS0t IGEvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjDQorKysgYi9nY2MvdHJlZS12ZWN0LWxvb3At bWFuaXAuY2MNCkBAIC0xMzkyLDYgKzEzOTIsMTUzIEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9u IChjbGFzcyBsb29wICpsb29wLCBlZGdlIGxvb3BfZSwgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZv DQogCQkgICAgIChnaW1wbGUgKikgY29uZF9zdG10KTsNCiB9DQogDQorLyogRGV0ZXJtaW5lIGlm IHRoZSBleGl0IGNob29zZW4gYnkgdGhlIGxvb3AgdmVjdG9yaXplciBkaWZmZXJzIGZyb20gdGhl DQorICAgbmF0dXJhbCBsb29wIGV4aXQuICBpLmUuIGlmIHRoZSBleGl0IGxlYWRzIHRvIHRoZSBs b29wIHBhdGNoIG9yIG5vdC4NCisgICBXaGVuIHRoaXMgaGFwcGVucyB3ZSBuZWVkIHRvIGZsaXAg dGhlIHVuZGVyc3RhbmRpbmcgb2YgbWFpbiBhbmQgb3RoZXINCisgICBleGl0cyBieSBwZWVsaW5n IGFuZCBJViB1cGRhdGVzLiAgKi8NCisNCitib29sIGlubGluZQ0KK3ZlY3RfaXNfbG9vcF9leGl0 X2xhdGNoX3ByZWQgKGVkZ2UgbG9vcF9leGl0LCBjbGFzcyBsb29wICpsb29wKQ0KK3sNCisgIHJl dHVybiBzaW5nbGVfcHJlZCAobG9vcC0+bGF0Y2gpID09IGxvb3BfZXhpdC0+c3JjOw0KK30NCisN CisvKiBQZXJmb3JtIHBlZWxpbmcgZm9yIHdoZW4gdGhlIHBlZWxlZCBsb29wIGlzIHBsYWNlZCBh ZnRlciB0aGUgb3JpZ2luYWwgbG9vcC4NCisgICBUaGlzIG1haW50YWlucyBMQ1NTQSBhbmQgY3Jl YXRlcyB0aGUgYXBwcm9wcmlhdGUgYmxvY2tzIGZvciBtdWx0aXBsZSBleGl0DQorICAgdmVjdG9y aXphdGlvbi4gICAqLw0KKw0KK3ZvaWQgc3RhdGljDQorc2xwZWVsX3RyZWVfZHVwbGljYXRlX2xv b3BfZm9yX3ZlY3Rvcml6YXRpb24gKGNsYXNzIGxvb3AgKmxvb3AsIGVkZ2UgbG9vcF9leGl0LA0K KwkJCQkJICAgICAgdmVjPGVkZ2U+ICZsb29wX2V4aXRzLA0KKwkJCQkJICAgICAgY2xhc3MgbG9v cCAqbmV3X2xvb3AsDQorCQkJCQkgICAgICBib29sIGZsb3dfbG9vcHMsDQorCQkJCQkgICAgICBi YXNpY19ibG9jayBuZXdfcHJlaGVhZGVyKQ0KK3sNCisgIGJvb2wgbXVsdGlwbGVfZXhpdHNfcCA9 IGxvb3BfZXhpdHMubGVuZ3RoICgpID4gMTsNCisgIGJhc2ljX2Jsb2NrIG1haW5fbG9vcF9leGl0 X2Jsb2NrID0gbmV3X3ByZWhlYWRlcjsNCisgIGlmIChtdWx0aXBsZV9leGl0c19wKQ0KKyAgICB7 DQorICAgICAgZWRnZSBsb29wX2VudHJ5ID0gc2luZ2xlX3N1Y2NfZWRnZSAobmV3X3ByZWhlYWRl cik7DQorICAgICAgbmV3X3ByZWhlYWRlciA9IHNwbGl0X2VkZ2UgKGxvb3BfZW50cnkpOw0KKyAg ICB9DQorDQorICBhdXRvX3ZlYyA8Z2ltcGxlICo+IG5ld19waGlzOw0KKyAgaGFzaF9tYXAgPHRy ZWUsIHRyZWU+IG5ld19waGlfYXJnczsNCisgIC8qIEZpcnN0IGNyZWF0ZSB0aGUgZW1wdHkgcGhp IG5vZGVzIHNvIHRoYXQgd2hlbiB3ZSBmbHVzaCB0aGUNCisgICAgIHN0YXRlbWVudHMgdGhleSBj YW4gYmUgZmlsbGVkIGluLiAgIEhvd2V2ZXIgYmVjYXVzZSB0aGVyZSBpcyBubyBvcmRlcg0KKyAg ICAgYmV0d2VlbiB0aGUgUEhJIG5vZGVzIGluIHRoZSBleGl0cyBhbmQgdGhlIGxvb3AgaGVhZGVy cyB3ZSBuZWVkIHRvDQorICAgICBvcmRlciB0aGVtIGJhc2Ugb24gdGhlIG9yZGVyIG9mIHRoZSB0 d28gaGVhZGVycy4gIEZpcnN0IHJlY29yZCB0aGUgbmV3DQorICAgICBwaGkgbm9kZXMuIFRoZW4g cmVkaXJlY3QgdGhlIGVkZ2VzIGFuZCBmbHVzaCB0aGUgY2hhbmdlcy4gIFRoaXMgd3JpdGVzIG91 dA0KKyAgICAgdGhlIG5ldyBTU0EgbmFtZXMuICAqLw0KKyAgZm9yIChhdXRvIGdzaV9mcm9tID0g Z3NpX3N0YXJ0X3BoaXMgKGxvb3BfZXhpdC0+ZGVzdCk7DQorICAgICAgICFnc2lfZW5kX3AgKGdz aV9mcm9tKTsgZ3NpX25leHQgKCZnc2lfZnJvbSkpDQorICAgIHsNCisgICAgICBnaW1wbGUgKmZy b21fcGhpID0gZ3NpX3N0bXQgKGdzaV9mcm9tKTsNCisgICAgICB0cmVlIG5ld19yZXMgPSBjb3B5 X3NzYV9uYW1lIChnaW1wbGVfcGhpX3Jlc3VsdCAoZnJvbV9waGkpKTsNCisgICAgICBncGhpICpy ZXMgPSBjcmVhdGVfcGhpX25vZGUgKG5ld19yZXMsIG1haW5fbG9vcF9leGl0X2Jsb2NrKTsNCisg ICAgICBuZXdfcGhpcy5zYWZlX3B1c2ggKHJlcyk7DQorICAgIH0NCisNCisgIGZvciAoYXV0byBl eGl0IDogbG9vcF9leGl0cykNCisgICAgew0KKyAgICAgIGJhc2ljX2Jsb2NrIGRlc3QNCisJPSBl eGl0ID09IGxvb3BfZXhpdCA/IG1haW5fbG9vcF9leGl0X2Jsb2NrIDogbmV3X3ByZWhlYWRlcjsN CisgICAgICByZWRpcmVjdF9lZGdlX2FuZF9icmFuY2ggKGV4aXQsIGRlc3QpOw0KKyAgICB9DQor DQorICAvKiBPbmx5IGZ1c2ggdGhlIG1haW4gZXhpdCwgdGhlIHJlbWFpbmluZyBleGl0cyB3ZSBu ZWVkIHRvIG1hdGNoIHRoZSBvcmRlcg0KKyAgICAgaW4gdGhlIGxvb3AtPmhlYWRlciB3aGljaCB3 aXRoIG11bHRpcGxlIGV4aXRzIG1heSBub3QgYmUgdGhlIHNhbWUuICAqLw0KKyAgZmx1c2hfcGVu ZGluZ19zdG10cyAobG9vcF9leGl0KTsNCisNCisgIC8qIFJlY29yZCB0aGUgbmV3IFNTQSBuYW1l cyBpbiB0aGUgY2FjaGUgc28gdGhhdCB3ZSBjYW4gc2tpcCBtYXRlcmlhbGl6aW5nDQorICAgICB0 aGVtIGFnYWluIHdoZW4gd2UgZmlsbCBpbiB0aGUgcmVzdCBvZiB0aGUgTENTU0EgdmFyaWFibGVz LiAgKi8NCisgIGZvciAoYXV0byBwaGkgOiBuZXdfcGhpcykNCisgICAgew0KKyAgICAgIHRyZWUg bmV3X2FyZyA9IGdpbXBsZV9waGlfYXJnIChwaGksIDApLT5kZWY7DQorDQorICAgICAgaWYgKCFT U0FfVkFSX1AgKG5ld19hcmcpKQ0KKwljb250aW51ZTsNCisNCisgICAgICAvKiBJZiB0aGUgUEhJ IE1FTSBub2RlIGRvbWluYXRlcyB0aGUgbG9vcCB0aGVuIHdlIHNob3VsZG4ndCBjcmVhdGUNCisJ IGEgbmV3IExDLVNTU0EgUEhJIGZvciBpdCBpbiB0aGUgaW50ZXJtZWRpYXRlIGJsb2NrLiAgICov DQorICAgICAgLyogQSBNRU0gcGhpIHRoYXQgY29uc2l0dXRlcyBhIG5ldyBERUYgZm9yIHRoZSB2 VVNFIGNoYWluIGNhbiBlaXRoZXINCisJIGJlIGEgLlZERUYgb3IgYSBQSEkgdGhhdCBvcGVyYXRl cyBvbiBNRU0uIEFuZCBzYWlkIGRlZmluaXRpb24NCisJIG11c3Qgbm90IGJlIGluc2lkZSB0aGUg bWFpbiBsb29wLiAgT3Igd2UgbXVzdCBiZSBhIHBhcmFtZXRlci4NCisJIEluIHRoZSBsYXN0IHR3 byBjYXNlcyB3ZSBtYXkgcmVtb3ZlIGEgbm9uLU1FTSBQSEkgbm9kZSwgYnV0IHNpbmNlDQorCSB0 aGV5IGRvbWluYXRlIGJvdGggbG9vcHMgdGhlIHJlbW92YWwgaXMgdW5saWtlbHkgdG8gY2F1c2Ug dHJvdWJsZQ0KKwkgYXMgdGhlIGV4aXRzIG11c3QgYWxyZWFkeSBiZSB1c2luZyB0aGVtLiAgKi8N CisgICAgICBpZiAodmlydHVhbF9vcGVyYW5kX3AgKG5ld19hcmcpDQorCSAgJiYgKFNTQV9OQU1F X0lTX0RFRkFVTFRfREVGIChuZXdfYXJnKQ0KKwkgICAgICB8fCAhZmxvd19iYl9pbnNpZGVfbG9v cF9wIChsb29wLA0KKwkJCQlnaW1wbGVfYmIgKFNTQV9OQU1FX0RFRl9TVE1UIChuZXdfYXJnKSkp KSkNCisJew0KKwkgIGF1dG8gZ3NpID0gZ3NpX2Zvcl9zdG10IChwaGkpOw0KKwkgIHJlbW92ZV9w aGlfbm9kZSAoJmdzaSwgdHJ1ZSk7DQorCSAgY29udGludWU7DQorCX0NCisNCisgICAgICAvKiBJ ZiB3ZSBkZWNpZGUgdG8gcmVtb3ZlIHRoZSBQSEkgbm9kZSB3ZSBzaG91bGQgYWxzbyBub3QNCisJ IHJlbWF0ZXJpYWxpemUgaXQgbGF0ZXIgb24uICAqLw0KKyAgICAgIG5ld19waGlfYXJncy5wdXQg KG5ld19hcmcsIGdpbXBsZV9waGlfcmVzdWx0IChwaGkpKTsNCisNCisgICAgICBpZiAoVFJFRV9D T0RFIChuZXdfYXJnKSAhPSBTU0FfTkFNRSkNCisJY29udGludWU7DQorICAgIH0NCisNCisgIC8q IENvcHkgdGhlIGN1cnJlbnQgbG9vcCBMQyBQSEkgbm9kZXMgYmV0d2VlbiB0aGUgb3JpZ2luYWwg bG9vcCBleGl0DQorICAgICBibG9jayBhbmQgdGhlIG5ldyBsb29wIGhlYWRlci4gIFRoaXMgYWxs b3dzIHVzIHRvIGxhdGVyIHNwbGl0IHRoZQ0KKyAgICAgcHJlaGVhZGVyIGJsb2NrIGFuZCBzdGls bCBmaW5kIHRoZSByaWdodCBMQyBub2Rlcy4gICovDQorICBlZGdlIGxvb3BfZW50cnkgPSBzaW5n bGVfc3VjY19lZGdlIChuZXdfcHJlaGVhZGVyKTsNCisgIGlmIChmbG93X2xvb3BzKQ0KKyAgICBm b3IgKGF1dG8gZ3NpX2Zyb20gPSBnc2lfc3RhcnRfcGhpcyAobG9vcC0+aGVhZGVyKSwNCisJIGdz aV90byA9IGdzaV9zdGFydF9waGlzIChuZXdfbG9vcC0+aGVhZGVyKTsNCisJICFnc2lfZW5kX3Ag KGdzaV9mcm9tKSAmJiAhZ3NpX2VuZF9wIChnc2lfdG8pOw0KKwkgZ3NpX25leHQgKCZnc2lfZnJv bSksIGdzaV9uZXh0ICgmZ3NpX3RvKSkNCisgICAgICB7DQorCWdpbXBsZSAqZnJvbV9waGkgPSBn c2lfc3RtdCAoZ3NpX2Zyb20pOw0KKwlnaW1wbGUgKnRvX3BoaSA9IGdzaV9zdG10IChnc2lfdG8p Ow0KKwl0cmVlIG5ld19hcmcgPSBQSElfQVJHX0RFRl9GUk9NX0VER0UgKGZyb21fcGhpLCBsb29w X2xhdGNoX2VkZ2UgKGxvb3ApKTsNCisJdHJlZSAqcmVzID0gTlVMTDsNCisNCisJLyogQ2hlY2sg aWYgd2UndmUgYWxyZWFkeSBjcmVhdGVkIGEgbmV3IHBoaSBub2RlIGR1cmluZyBlZGdlDQorCSAg IHJlZGlyZWN0aW9uLiAgSWYgd2UgaGF2ZSwgb25seSBwcm9wYWdhdGUgdGhlIHZhbHVlIGRvd253 YXJkcy4gICovDQorCWlmICgocmVzID0gbmV3X3BoaV9hcmdzLmdldCAobmV3X2FyZykpKQ0KKwkg IG5ld19hcmcgPSAqcmVzOw0KKw0KKwkvKiBBbGwgb3RoZXIgZXhpdHMgdXNlIHRoZSBwcmV2aW91 cyBpdGVycy4gICovDQorCWlmIChtdWx0aXBsZV9leGl0c19wKQ0KKwkgIHsNCisJICAgIHRyZWUg YWx0X2FyZyA9IGdpbXBsZV9waGlfcmVzdWx0IChmcm9tX3BoaSk7DQorCSAgICB0cmVlIGFsdF9y ZXMgPSBjb3B5X3NzYV9uYW1lIChhbHRfYXJnKTsNCisJICAgIGdwaGkgKmFsdF9sY3NzYV9waGkg PSBjcmVhdGVfcGhpX25vZGUgKGFsdF9yZXMsIG5ld19wcmVoZWFkZXIpOw0KKwkgICAgZWRnZSBt YWluX2UgPSBzaW5nbGVfc3VjY19lZGdlIChtYWluX2xvb3BfZXhpdF9ibG9jayk7DQorCSAgICBm b3IgKGVkZ2UgZSA6IGxvb3BfZXhpdHMpDQorCSAgICAgIGlmIChlICE9IGxvb3BfZXhpdCkNCisJ CXsNCisJCSAgYWRkX3BoaV9hcmcgKGFsdF9sY3NzYV9waGksIGFsdF9hcmcsIGUsIFVOS05PV05f TE9DQVRJT04pOw0KKwkJICBTRVRfUEhJX0FSR19ERUYgKGFsdF9sY3NzYV9waGksIG1haW5fZS0+ ZGVzdF9pZHgsIG5ld19hcmcpOw0KKwkJfQ0KKwkgICAgbmV3X2FyZyA9IGFsdF9yZXM7IC8qIFB1 c2ggaXQgZG93biB0byB0aGUgbmV3X2xvb3AgaGVhZGVyLiAgKi8NCisJICB9IGVsc2UgaWYgKCFy ZXMpIHsNCisJICAgIC8qIEZvciBub24tZWFybHkgYnJlYWsgd2UgbmVlZCB0byBrZWVwIHRoZSBw b3NzaWJseSBsaXZlIHZhbHVlcyBpbg0KKwkgICAgICAgdGhlIGV4aXQgYmxvY2suICBGb3IgZWFy bHkgYnJlYWsgdGhlc2UgYXJlIGtlcHQgaW4gdGhlIG1lcmdlDQorCSAgICAgICBibG9jayBpbiB0 aGUgY29kZSBhYm92ZS4gICovDQorCSAgICB0cmVlIG5ld19yZXMgPSBjb3B5X3NzYV9uYW1lIChn aW1wbGVfcGhpX3Jlc3VsdCAoZnJvbV9waGkpKTsNCisJICAgIGdwaGkgKmxjc3NhX3BoaSA9IGNy ZWF0ZV9waGlfbm9kZSAobmV3X3JlcywgbmV3X3ByZWhlYWRlcik7DQorDQorCSAgICAvKiBNYWlu IGxvb3AgZXhpdCBzaG91bGQgdXNlIHRoZSBmaW5hbCBpdGVyIHZhbHVlLiAgKi8NCisJICAgIGFk ZF9waGlfYXJnIChsY3NzYV9waGksIG5ld19hcmcsIGxvb3BfZXhpdCwgVU5LTk9XTl9MT0NBVElP Tik7DQorCSAgICBuZXdfYXJnID0gbmV3X3JlczsNCisJICB9DQorDQorCWFkanVzdF9waGlfYW5k X2RlYnVnX3N0bXRzICh0b19waGksIGxvb3BfZW50cnksIG5ld19hcmcpOw0KKyAgICB9DQorDQor ICAvKiBOb3cgY2xlYXIgYWxsIHRoZSByZWRpcmVjdCBtYXBzLiAgKi8NCisgIGZvciAoYXV0byBl eGl0IDogbG9vcF9leGl0cykNCisgICAgcmVkaXJlY3RfZWRnZV92YXJfbWFwX2NsZWFyIChleGl0 KTsNCit9DQorDQogLyogR2l2ZW4gTE9PUCB0aGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIG5ldyBj b3B5IG9mIGl0IGFuZCBwdXRzIGl0DQogICAgb24gRSB3aGljaCBpcyBlaXRoZXIgdGhlIGVudHJ5 IG9yIGV4aXQgb2YgTE9PUC4gIElmIFNDQUxBUl9MT09QIGlzDQogICAgbm9uLU5VTEwsIGFzc3Vt ZSBMT09QIGFuZCBTQ0FMQVJfTE9PUCBhcmUgZXF1aXZhbGVudCBhbmQgY29weSB0aGUNCkBAIC0x NDAzLDEzICsxNTUwLDE2IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uIChjbGFzcyBsb29wICps b29wLCBlZGdlIGxvb3BfZSwgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvDQogICAgY29waWVzIHJl bWFpbnMgdGhlIHNhbWUuDQogDQogICAgSWYgVVBEQVRFRF9ET01TIGlzIG5vdCBOVUxMIGl0IGlz IHVwZGF0ZSB3aXRoIHRoZSBsaXN0IG9mIGJhc2ljIGJsb2NrcyB3aG9tcw0KLSAgIGRvbWluYXRv cnMgd2VyZSB1cGRhdGVkIGR1cmluZyB0aGUgcGVlbGluZy4gICovDQorICAgZG9taW5hdG9ycyB3 ZXJlIHVwZGF0ZWQgZHVyaW5nIHRoZSBwZWVsaW5nLiAgV2hlbiBkb2luZyBlYXJseSBicmVhayB2 ZWN0b3JpemF0aW9uDQorICAgdGhlbiBMT09QX1ZJTkZPIG5lZWRzIHRvIGJlIHByb3ZpZGVkIGFu ZCBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYW55IG5ld2x5IGNyZWF0ZWQNCisgICBtZW1vcnkg cmVmZXJlbmNlcyB0aGF0IG5lZWQgdG8gYmUgdXBkYXRlZCBzaG91bGQgd2UgZGVjaWRlIHRvIHZl Y3Rvcml6ZS4gICovDQogDQogY2xhc3MgbG9vcCAqDQogc2xwZWVsX3RyZWVfZHVwbGljYXRlX2xv b3BfdG9fZWRnZV9jZmcgKGNsYXNzIGxvb3AgKmxvb3AsIGVkZ2UgbG9vcF9leGl0LA0KIAkJCQkJ Y2xhc3MgbG9vcCAqc2NhbGFyX2xvb3AsDQogCQkJCQllZGdlIHNjYWxhcl9leGl0LCBlZGdlIGUs IGVkZ2UgKm5ld19lLA0KLQkJCQkJYm9vbCBmbG93X2xvb3BzKQ0KKwkJCQkJYm9vbCBmbG93X2xv b3BzLA0KKwkJCQkJdmVjPGJhc2ljX2Jsb2NrPiAqdXBkYXRlZF9kb21zKQ0KIHsNCiAgIGNsYXNz IGxvb3AgKm5ld19sb29wOw0KICAgYmFzaWNfYmxvY2sgKm5ld19iYnMsICpiYnMsICpwYmJzOw0K QEAgLTE1MjYsNyArMTY3Niw5IEBAIHNscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2VkZ2Vf Y2ZnIChjbGFzcyBsb29wICpsb29wLCBlZGdlIGxvb3BfZXhpdCwNCiAgICAgICB9DQogDQogICBh dXRvIGxvb3BfZXhpdHMgPSBnZXRfbG9vcF9leGl0X2VkZ2VzIChsb29wKTsNCisgIGJvb2wgbXVs dGlwbGVfZXhpdHNfcCA9IGxvb3BfZXhpdHMubGVuZ3RoICgpID4gMTsNCiAgIGF1dG9fdmVjPGJh c2ljX2Jsb2NrPiBkb21zOw0KKyAgY2xhc3MgbG9vcCAqdXBkYXRlX2xvb3AgPSBOVUxMOw0KIA0K ICAgaWYgKGF0X2V4aXQpIC8qIEFkZCB0aGUgbG9vcCBjb3B5IGF0IGV4aXQuICAqLw0KICAgICB7 DQpAQCAtMTUzNiw5MSArMTY4OCw5IEBAIHNscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2Vk Z2VfY2ZnIChjbGFzcyBsb29wICpsb29wLCBlZGdlIGxvb3BfZXhpdCwNCiAJICBmbHVzaF9wZW5k aW5nX3N0bXRzIChuZXdfZXhpdCk7DQogCX0NCiANCi0gICAgICBhdXRvX3ZlYyA8Z2ltcGxlICo+ IG5ld19waGlzOw0KLSAgICAgIGhhc2hfbWFwIDx0cmVlLCB0cmVlPiBuZXdfcGhpX2FyZ3M7DQot ICAgICAgLyogRmlyc3QgY3JlYXRlIHRoZSBlbXB0eSBwaGkgbm9kZXMgc28gdGhhdCB3aGVuIHdl IGZsdXNoIHRoZQ0KLQkgc3RhdGVtZW50cyB0aGV5IGNhbiBiZSBmaWxsZWQgaW4uICAgSG93ZXZl ciBiZWNhdXNlIHRoZXJlIGlzIG5vIG9yZGVyDQotCSBiZXR3ZWVuIHRoZSBQSEkgbm9kZXMgaW4g dGhlIGV4aXRzIGFuZCB0aGUgbG9vcCBoZWFkZXJzIHdlIG5lZWQgdG8NCi0JIG9yZGVyIHRoZW0g YmFzZSBvbiB0aGUgb3JkZXIgb2YgdGhlIHR3byBoZWFkZXJzLiAgRmlyc3QgcmVjb3JkIHRoZSBu ZXcNCi0JIHBoaSBub2Rlcy4gICovDQotICAgICAgZm9yIChhdXRvIGdzaV9mcm9tID0gZ3NpX3N0 YXJ0X3BoaXMgKHNjYWxhcl9leGl0LT5kZXN0KTsNCi0JICAgIWdzaV9lbmRfcCAoZ3NpX2Zyb20p OyBnc2lfbmV4dCAoJmdzaV9mcm9tKSkNCi0Jew0KLQkgIGdpbXBsZSAqZnJvbV9waGkgPSBnc2lf c3RtdCAoZ3NpX2Zyb20pOw0KLQkgIHRyZWUgbmV3X3JlcyA9IGNvcHlfc3NhX25hbWUgKGdpbXBs ZV9waGlfcmVzdWx0IChmcm9tX3BoaSkpOw0KLQkgIGdwaGkgKnJlcyA9IGNyZWF0ZV9waGlfbm9k ZSAobmV3X3JlcywgbmV3X3ByZWhlYWRlcik7DQotCSAgbmV3X3BoaXMuc2FmZV9wdXNoIChyZXMp Ow0KLQl9DQotDQotICAgICAgLyogVGhlbiByZWRpcmVjdCB0aGUgZWRnZXMgYW5kIGZsdXNoIHRo ZSBjaGFuZ2VzLiAgVGhpcyB3cml0ZXMgb3V0IHRoZSBuZXcNCi0JIFNTQSBuYW1lcy4gICovDQot ICAgICAgZm9yIChlZGdlIGV4aXQgOiBsb29wX2V4aXRzKQ0KLQl7DQotCSAgZWRnZSB0ZW1wX2Ug PSByZWRpcmVjdF9lZGdlX2FuZF9icmFuY2ggKGV4aXQsIG5ld19wcmVoZWFkZXIpOw0KLQkgIGZs dXNoX3BlbmRpbmdfc3RtdHMgKHRlbXBfZSk7DQotCX0NCi0gICAgICAvKiBSZWNvcmQgdGhlIG5l dyBTU0EgbmFtZXMgaW4gdGhlIGNhY2hlIHNvIHRoYXQgd2UgY2FuIHNraXAgbWF0ZXJpYWxpemlu Zw0KLQkgdGhlbSBhZ2FpbiB3aGVuIHdlIGZpbGwgaW4gdGhlIHJlc3Qgb2YgdGhlIExDU1NBIHZh cmlhYmxlcy4gICovDQotICAgICAgZm9yIChhdXRvIHBoaSA6IG5ld19waGlzKQ0KLQl7DQotCSAg dHJlZSBuZXdfYXJnID0gZ2ltcGxlX3BoaV9hcmcgKHBoaSwgMCktPmRlZjsNCi0NCi0JICBpZiAo IVNTQV9WQVJfUCAobmV3X2FyZykpDQotCSAgICBjb250aW51ZTsNCi0JICAvKiBJZiB0aGUgUEhJ IE1FTSBub2RlIGRvbWluYXRlcyB0aGUgbG9vcCB0aGVuIHdlIHNob3VsZG4ndCBjcmVhdGUNCi0J ICAgICAgYSBuZXcgTEMtU1NTQSBQSEkgZm9yIGl0IGluIHRoZSBpbnRlcm1lZGlhdGUgYmxvY2su ICAgKi8NCi0JICAvKiBBIE1FTSBwaGkgdGhhdCBjb25zaXR1dGVzIGEgbmV3IERFRiBmb3IgdGhl IHZVU0UgY2hhaW4gY2FuIGVpdGhlcg0KLQkgICAgIGJlIGEgLlZERUYgb3IgYSBQSEkgdGhhdCBv cGVyYXRlcyBvbiBNRU0uIEFuZCBzYWlkIGRlZmluaXRpb24NCi0JICAgICBtdXN0IG5vdCBiZSBp bnNpZGUgdGhlIG1haW4gbG9vcC4gIE9yIHdlIG11c3QgYmUgYSBwYXJhbWV0ZXIuDQotCSAgICAg SW4gdGhlIGxhc3QgdHdvIGNhc2VzIHdlIG1heSByZW1vdmUgYSBub24tTUVNIFBISSBub2RlLCBi dXQgc2luY2UNCi0JICAgICB0aGV5IGRvbWluYXRlIGJvdGggbG9vcHMgdGhlIHJlbW92YWwgaXMg dW5saWtlbHkgdG8gY2F1c2UgdHJvdWJsZQ0KLQkgICAgIGFzIHRoZSBleGl0cyBtdXN0IGFscmVh ZHkgYmUgdXNpbmcgdGhlbS4gICovDQotCSAgaWYgKHZpcnR1YWxfb3BlcmFuZF9wIChuZXdfYXJn KQ0KLQkgICAgICAmJiAoU1NBX05BTUVfSVNfREVGQVVMVF9ERUYgKG5ld19hcmcpDQotCQkgIHx8 ICFmbG93X2JiX2luc2lkZV9sb29wX3AgKGxvb3AsDQotCQkJCWdpbXBsZV9iYiAoU1NBX05BTUVf REVGX1NUTVQgKG5ld19hcmcpKSkpKQ0KLQkgICAgew0KLQkgICAgICBhdXRvIGdzaSA9IGdzaV9m b3Jfc3RtdCAocGhpKTsNCi0JICAgICAgcmVtb3ZlX3BoaV9ub2RlICgmZ3NpLCB0cnVlKTsNCi0J ICAgICAgY29udGludWU7DQotCSAgICB9DQotCSAgbmV3X3BoaV9hcmdzLnB1dCAobmV3X2FyZywg Z2ltcGxlX3BoaV9yZXN1bHQgKHBoaSkpOw0KLQ0KLQkgIGlmIChUUkVFX0NPREUgKG5ld19hcmcp ICE9IFNTQV9OQU1FKQ0KLQkgICAgY29udGludWU7DQotCX0NCi0NCi0gICAgICAvKiBDb3B5IHRo ZSBjdXJyZW50IGxvb3AgTEMgUEhJIG5vZGVzIGJldHdlZW4gdGhlIG9yaWdpbmFsIGxvb3AgZXhp dA0KLQkgYmxvY2sgYW5kIHRoZSBuZXcgbG9vcCBoZWFkZXIuICBUaGlzIGFsbG93cyB1cyB0byBs YXRlciBzcGxpdCB0aGUNCi0JIHByZWhlYWRlciBibG9jayBhbmQgc3RpbGwgZmluZCB0aGUgcmln aHQgTEMgbm9kZXMuICAqLw0KLSAgICAgIGVkZ2UgbG9vcF9lbnRyeSA9IHNpbmdsZV9zdWNjX2Vk Z2UgKG5ld19wcmVoZWFkZXIpOw0KLSAgICAgIGlmIChmbG93X2xvb3BzKQ0KLQlmb3IgKGF1dG8g Z3NpX2Zyb20gPSBnc2lfc3RhcnRfcGhpcyAobG9vcC0+aGVhZGVyKSwNCi0JICAgICBnc2lfdG8g PSBnc2lfc3RhcnRfcGhpcyAobmV3X2xvb3AtPmhlYWRlcik7DQotCSAgICAgIWdzaV9lbmRfcCAo Z3NpX2Zyb20pICYmICFnc2lfZW5kX3AgKGdzaV90byk7DQotCSAgICAgZ3NpX25leHQgKCZnc2lf ZnJvbSksIGdzaV9uZXh0ICgmZ3NpX3RvKSkNCi0JICB7DQotCSAgICBnaW1wbGUgKmZyb21fcGhp ID0gZ3NpX3N0bXQgKGdzaV9mcm9tKTsNCi0JICAgIGdpbXBsZSAqdG9fcGhpID0gZ3NpX3N0bXQg KGdzaV90byk7DQotCSAgICB0cmVlIG5ld19hcmcgPSBQSElfQVJHX0RFRl9GUk9NX0VER0UgKGZy b21fcGhpLA0KLQkJCQkJCSAgbG9vcF9sYXRjaF9lZGdlIChsb29wKSk7DQotDQotCSAgICAvKiBD aGVjayBpZiB3ZSd2ZSBhbHJlYWR5IGNyZWF0ZWQgYSBuZXcgcGhpIG5vZGUgZHVyaW5nIGVkZ2UN Ci0JICAgICAgIHJlZGlyZWN0aW9uLiAgSWYgd2UgaGF2ZSwgb25seSBwcm9wYWdhdGUgdGhlIHZh bHVlIGRvd253YXJkcy4gICovDQotCSAgICBpZiAodHJlZSAqcmVzID0gbmV3X3BoaV9hcmdzLmdl dCAobmV3X2FyZykpDQotCSAgICAgIHsNCi0JCWFkanVzdF9waGlfYW5kX2RlYnVnX3N0bXRzICh0 b19waGksIGxvb3BfZW50cnksICpyZXMpOw0KLQkJY29udGludWU7DQotCSAgICAgIH0NCi0NCi0J ICAgIHRyZWUgbmV3X3JlcyA9IGNvcHlfc3NhX25hbWUgKGdpbXBsZV9waGlfcmVzdWx0IChmcm9t X3BoaSkpOw0KLQkgICAgZ3BoaSAqbGNzc2FfcGhpID0gY3JlYXRlX3BoaV9ub2RlIChuZXdfcmVz LCBuZXdfcHJlaGVhZGVyKTsNCi0NCi0JICAgIC8qIE1haW4gbG9vcCBleGl0IHNob3VsZCB1c2Ug dGhlIGZpbmFsIGl0ZXIgdmFsdWUuICAqLw0KLQkgICAgYWRkX3BoaV9hcmcgKGxjc3NhX3BoaSwg bmV3X2FyZywgbG9vcF9leGl0LCBVTktOT1dOX0xPQ0FUSU9OKTsNCi0NCi0JICAgIGFkanVzdF9w aGlfYW5kX2RlYnVnX3N0bXRzICh0b19waGksIGxvb3BfZW50cnksIG5ld19yZXMpOw0KLQkgIH0N CisgICAgICBzbHBlZWxfdHJlZV9kdXBsaWNhdGVfbG9vcF9mb3JfdmVjdG9yaXphdGlvbiAobG9v cCwgbG9vcF9leGl0LCBsb29wX2V4aXRzLA0KKwkJCQkJCSAgICBuZXdfbG9vcCwgZmxvd19sb29w cywNCisJCQkJCQkgICAgbmV3X3ByZWhlYWRlcik7DQogDQogICAgICAgc2V0X2ltbWVkaWF0ZV9k b21pbmF0b3IgKENESV9ET01JTkFUT1JTLCBuZXdfcHJlaGVhZGVyLCBlLT5zcmMpOw0KIA0KQEAg LTE2MzQsNiArMTcwNCwyMSBAQCBzbHBlZWxfdHJlZV9kdXBsaWNhdGVfbG9vcF90b19lZGdlX2Nm ZyAoY2xhc3MgbG9vcCAqbG9vcCwgZWRnZSBsb29wX2V4aXQsDQogICAgICAgZGVsZXRlX2Jhc2lj X2Jsb2NrIChwcmVoZWFkZXIpOw0KICAgICAgIHNldF9pbW1lZGlhdGVfZG9taW5hdG9yIChDRElf RE9NSU5BVE9SUywgc2NhbGFyX2xvb3AtPmhlYWRlciwNCiAJCQkgICAgICAgbG9vcF9wcmVoZWFk ZXJfZWRnZSAoc2NhbGFyX2xvb3ApLT5zcmMpOw0KKw0KKyAgICAgIC8qIEZpbmFsbHkgYWZ0ZXIg d2lyaW5nIHRoZSBuZXcgZXBpbG9ndWUgd2UgbmVlZCB0byB1cGRhdGUgaXRzIG1haW4gZXhpdA0K KwkgdG8gdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGV4aXQgd2UgcmVjb3JkZWQuICBPdGhlciBleGl0 cyBhcmUgYWxyZWFkeQ0KKwkgY29ycmVjdC4gICovDQorICAgICAgaWYgKG11bHRpcGxlX2V4aXRz X3ApDQorCXsNCisJICB1cGRhdGVfbG9vcCA9IG5ld19sb29wOw0KKwkgIGZvciAoZWRnZSBlIDog Z2V0X2xvb3BfZXhpdF9lZGdlcyAobG9vcCkpDQorCSAgICBkb21zLnNhZmVfcHVzaCAoZS0+ZGVz dCk7DQorCSAgZG9tcy5zYWZlX3B1c2ggKGV4aXRfZGVzdCk7DQorDQorCSAgLyogTGlrZWx5IGEg ZmFsbC10aHJvdWdoIGVkZ2UsIHNvIHVwZGF0ZSBpZiBuZWVkZWQuICAqLw0KKwkgIGlmIChzaW5n bGVfc3VjY19wIChleGl0X2Rlc3QpKQ0KKwkgICAgZG9tcy5zYWZlX3B1c2ggKHNpbmdsZV9zdWNj IChleGl0X2Rlc3QpKTsNCisJfQ0KICAgICB9DQogICBlbHNlIC8qIEFkZCB0aGUgY29weSBhdCBl bnRyeS4gICovDQogICAgIHsNCkBAIC0xNjgxLDYgKzE3NjYsMzQgQEAgc2xwZWVsX3RyZWVfZHVw bGljYXRlX2xvb3BfdG9fZWRnZV9jZmcgKGNsYXNzIGxvb3AgKmxvb3AsIGVkZ2UgbG9vcF9leGl0 LA0KICAgICAgIGRlbGV0ZV9iYXNpY19ibG9jayAobmV3X3ByZWhlYWRlcik7DQogICAgICAgc2V0 X2ltbWVkaWF0ZV9kb21pbmF0b3IgKENESV9ET01JTkFUT1JTLCBuZXdfbG9vcC0+aGVhZGVyLA0K IAkJCSAgICAgICBsb29wX3ByZWhlYWRlcl9lZGdlIChuZXdfbG9vcCktPnNyYyk7DQorDQorICAg ICAgaWYgKG11bHRpcGxlX2V4aXRzX3ApDQorCXVwZGF0ZV9sb29wID0gbG9vcDsNCisgICAgfQ0K Kw0KKyAgaWYgKG11bHRpcGxlX2V4aXRzX3ApDQorICAgIHsNCisgICAgICBmb3IgKGVkZ2UgZSA6 IGdldF9sb29wX2V4aXRfZWRnZXMgKHVwZGF0ZV9sb29wKSkNCisJew0KKwkgIGVkZ2UgZXg7DQor CSAgZWRnZV9pdGVyYXRvciBlaTsNCisJICBGT1JfRUFDSF9FREdFIChleCwgZWksIGUtPmRlc3Qt PnN1Y2NzKQ0KKwkgICAgew0KKwkgICAgICAvKiBGaW5kIHRoZSBmaXJzdCBub24tZmFsbHRocm91 Z2ggYmxvY2sgYXMgZmFsbC10aHJvdWdocyBjYW4ndA0KKwkJIGRvbWluYXRlIG90aGVyIGJsb2Nr cy4gICovDQorCSAgICAgIGlmIChzaW5nbGVfc3VjY19wIChleC0+ZGVzdCkpDQorCQl7DQorCQkg IGRvbXMuc2FmZV9wdXNoIChleC0+ZGVzdCk7DQorCQkgIGV4ID0gc2luZ2xlX3N1Y2NfZWRnZSAo ZXgtPmRlc3QpOw0KKwkJfQ0KKwkgICAgICBkb21zLnNhZmVfcHVzaCAoZXgtPmRlc3QpOw0KKwkg ICAgfQ0KKwkgIGRvbXMuc2FmZV9wdXNoIChlLT5kZXN0KTsNCisJfQ0KKw0KKyAgICAgIGl0ZXJh dGVfZml4X2RvbWluYXRvcnMgKENESV9ET01JTkFUT1JTLCBkb21zLCBmYWxzZSk7DQorICAgICAg aWYgKHVwZGF0ZWRfZG9tcykNCisJdXBkYXRlZF9kb21zLT5zYWZlX3NwbGljZSAoZG9tcyk7DQog ICAgIH0NCiANCiAgIGZyZWUgKG5ld19iYnMpOw0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rv cml6ZXIuaCBiL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KaW5kZXggNzY0NTFhN2ZlZmU2ZmY5NjZj ZWNmYTJjYmM3YjExMzM2YjAzODU2NS4uYjlhNzFhMGI1ZjU0MDc0MTdlODM2NmIwZGYxMzJkZjIw YzdmNjBhYSAxMDA2NDQNCi0tLSBhL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KKysrIGIvZ2NjL3Ry ZWUtdmVjdG9yaXplci5oDQpAQCAtMTgyMSw3ICsxODIxLDcgQEAgaXNfbG9vcF9oZWFkZXJfYmJf cCAoYmFzaWNfYmxvY2sgYmIpDQogew0KICAgaWYgKGJiID09IChiYi0+bG9vcF9mYXRoZXIpLT5o ZWFkZXIpDQogICAgIHJldHVybiB0cnVlOw0KLSAgZ2NjX2NoZWNraW5nX2Fzc2VydCAoRURHRV9D T1VOVCAoYmItPnByZWRzKSA9PSAxKTsNCisNCiAgIHJldHVybiBmYWxzZTsNCiB9DQogDQpAQCAt MjIxMiw3ICsyMjEyLDggQEAgZXh0ZXJuIGJvb2wgc2xwZWVsX2Nhbl9kdXBsaWNhdGVfbG9vcF9w IChjb25zdCBjbGFzcyBsb29wICosIGNvbnN0X2VkZ2UsDQogCQkJCQkgY29uc3RfZWRnZSk7DQog Y2xhc3MgbG9vcCAqc2xwZWVsX3RyZWVfZHVwbGljYXRlX2xvb3BfdG9fZWRnZV9jZmcgKGNsYXNz IGxvb3AgKiwgZWRnZSwNCiAJCQkJCQkgICAgY2xhc3MgbG9vcCAqLCBlZGdlLA0KLQkJCQkJCSAg ICBlZGdlLCBlZGdlICosIGJvb2wgPSB0cnVlKTsNCisJCQkJCQkgICAgZWRnZSwgZWRnZSAqLCBi b29sID0gdHJ1ZSwNCisJCQkJCQkgICAgdmVjPGJhc2ljX2Jsb2NrPiAqID0gTlVMTCk7DQogY2xh c3MgbG9vcCAqdmVjdF9sb29wX3ZlcnNpb25pbmcgKGxvb3BfdmVjX2luZm8sIGdpbXBsZSAqKTsN CiBleHRlcm4gY2xhc3MgbG9vcCAqdmVjdF9kb19wZWVsaW5nIChsb29wX3ZlY19pbmZvLCB0cmVl LCB0cmVlLA0KIAkJCQkgICAgdHJlZSAqLCB0cmVlICosIHRyZWUgKiwgaW50LCBib29sLCBib29s LA0KQEAgLTIyMjMsNiArMjIyNCw3IEBAIGV4dGVybiBkdW1wX3VzZXJfbG9jYXRpb25fdCBmaW5k X2xvb3BfbG9jYXRpb24gKGNsYXNzIGxvb3AgKik7DQogZXh0ZXJuIGJvb2wgdmVjdF9jYW5fYWR2 YW5jZV9pdnNfcCAobG9vcF92ZWNfaW5mbyk7DQogZXh0ZXJuIHZvaWQgdmVjdF91cGRhdGVfaW5p dHNfb2ZfZHJzIChsb29wX3ZlY19pbmZvLCB0cmVlLCB0cmVlX2NvZGUpOw0KIGV4dGVybiBlZGdl IHZlY19pbml0X2xvb3BfZXhpdF9pbmZvIChjbGFzcyBsb29wICopOw0KK2V4dGVybiBib29sIHZl Y3RfaXNfbG9vcF9leGl0X2xhdGNoX3ByZWQgKGVkZ2UsIGNsYXNzIGxvb3AgKik7DQogDQogLyog SW4gdHJlZS12ZWN0LXN0bXRzLmNjLiAgKi8NCiBleHRlcm4gdHJlZSBnZXRfcmVsYXRlZF92ZWN0 eXBlX2Zvcl9zY2FsYXJfdHlwZSAobWFjaGluZV9tb2RlLCB0cmVlLA0K --_002_VI1PR08MB53254CC2C5490804977E0852FFB1AVI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb17964.patch" Content-Description: rb17964.patch Content-Disposition: attachment; filename="rb17964.patch"; size=14379; creation-date="Wed, 15 Nov 2023 00:00:51 GMT"; modification-date="Wed, 15 Nov 2023 00:00:57 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYyBiL2djYy90cmVlLXZlY3Qt bG9vcC1tYW5pcC5jYwppbmRleCBiOTE2MTI3NGNlNDAxYTczMDdmM2U2MWFkMjNhYTAzNjcwMTE5 MGQ3Li5mYWZiZjkyNGU4ZGIxOGViNGVlYzdhNGExOTA2ZDEwZjZjZTk4MTJmIDEwMDY0NAotLS0g YS9nY2MvdHJlZS12ZWN0LWxvb3AtbWFuaXAuY2MKKysrIGIvZ2NjL3RyZWUtdmVjdC1sb29wLW1h bmlwLmNjCkBAIC0xMzkyLDYgKzEzOTIsMTUzIEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uIChj bGFzcyBsb29wICpsb29wLCBlZGdlIGxvb3BfZSwgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvCiAJ CSAgICAgKGdpbXBsZSAqKSBjb25kX3N0bXQpOwogfQogCisvKiBEZXRlcm1pbmUgaWYgdGhlIGV4 aXQgY2hvb3NlbiBieSB0aGUgbG9vcCB2ZWN0b3JpemVyIGRpZmZlcnMgZnJvbSB0aGUKKyAgIG5h dHVyYWwgbG9vcCBleGl0LiAgaS5lLiBpZiB0aGUgZXhpdCBsZWFkcyB0byB0aGUgbG9vcCBwYXRj aCBvciBub3QuCisgICBXaGVuIHRoaXMgaGFwcGVucyB3ZSBuZWVkIHRvIGZsaXAgdGhlIHVuZGVy c3RhbmRpbmcgb2YgbWFpbiBhbmQgb3RoZXIKKyAgIGV4aXRzIGJ5IHBlZWxpbmcgYW5kIElWIHVw ZGF0ZXMuICAqLworCitib29sIGlubGluZQordmVjdF9pc19sb29wX2V4aXRfbGF0Y2hfcHJlZCAo ZWRnZSBsb29wX2V4aXQsIGNsYXNzIGxvb3AgKmxvb3ApCit7CisgIHJldHVybiBzaW5nbGVfcHJl ZCAobG9vcC0+bGF0Y2gpID09IGxvb3BfZXhpdC0+c3JjOworfQorCisvKiBQZXJmb3JtIHBlZWxp bmcgZm9yIHdoZW4gdGhlIHBlZWxlZCBsb29wIGlzIHBsYWNlZCBhZnRlciB0aGUgb3JpZ2luYWwg bG9vcC4KKyAgIFRoaXMgbWFpbnRhaW5zIExDU1NBIGFuZCBjcmVhdGVzIHRoZSBhcHByb3ByaWF0 ZSBibG9ja3MgZm9yIG11bHRpcGxlIGV4aXQKKyAgIHZlY3Rvcml6YXRpb24uICAgKi8KKwordm9p ZCBzdGF0aWMKK3NscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX2Zvcl92ZWN0b3JpemF0aW9uIChj bGFzcyBsb29wICpsb29wLCBlZGdlIGxvb3BfZXhpdCwKKwkJCQkJICAgICAgdmVjPGVkZ2U+ICZs b29wX2V4aXRzLAorCQkJCQkgICAgICBjbGFzcyBsb29wICpuZXdfbG9vcCwKKwkJCQkJICAgICAg Ym9vbCBmbG93X2xvb3BzLAorCQkJCQkgICAgICBiYXNpY19ibG9jayBuZXdfcHJlaGVhZGVyKQor eworICBib29sIG11bHRpcGxlX2V4aXRzX3AgPSBsb29wX2V4aXRzLmxlbmd0aCAoKSA+IDE7Cisg IGJhc2ljX2Jsb2NrIG1haW5fbG9vcF9leGl0X2Jsb2NrID0gbmV3X3ByZWhlYWRlcjsKKyAgaWYg KG11bHRpcGxlX2V4aXRzX3ApCisgICAgeworICAgICAgZWRnZSBsb29wX2VudHJ5ID0gc2luZ2xl X3N1Y2NfZWRnZSAobmV3X3ByZWhlYWRlcik7CisgICAgICBuZXdfcHJlaGVhZGVyID0gc3BsaXRf ZWRnZSAobG9vcF9lbnRyeSk7CisgICAgfQorCisgIGF1dG9fdmVjIDxnaW1wbGUgKj4gbmV3X3Bo aXM7CisgIGhhc2hfbWFwIDx0cmVlLCB0cmVlPiBuZXdfcGhpX2FyZ3M7CisgIC8qIEZpcnN0IGNy ZWF0ZSB0aGUgZW1wdHkgcGhpIG5vZGVzIHNvIHRoYXQgd2hlbiB3ZSBmbHVzaCB0aGUKKyAgICAg c3RhdGVtZW50cyB0aGV5IGNhbiBiZSBmaWxsZWQgaW4uICAgSG93ZXZlciBiZWNhdXNlIHRoZXJl IGlzIG5vIG9yZGVyCisgICAgIGJldHdlZW4gdGhlIFBISSBub2RlcyBpbiB0aGUgZXhpdHMgYW5k IHRoZSBsb29wIGhlYWRlcnMgd2UgbmVlZCB0bworICAgICBvcmRlciB0aGVtIGJhc2Ugb24gdGhl IG9yZGVyIG9mIHRoZSB0d28gaGVhZGVycy4gIEZpcnN0IHJlY29yZCB0aGUgbmV3CisgICAgIHBo aSBub2Rlcy4gVGhlbiByZWRpcmVjdCB0aGUgZWRnZXMgYW5kIGZsdXNoIHRoZSBjaGFuZ2VzLiAg VGhpcyB3cml0ZXMgb3V0CisgICAgIHRoZSBuZXcgU1NBIG5hbWVzLiAgKi8KKyAgZm9yIChhdXRv IGdzaV9mcm9tID0gZ3NpX3N0YXJ0X3BoaXMgKGxvb3BfZXhpdC0+ZGVzdCk7CisgICAgICAgIWdz aV9lbmRfcCAoZ3NpX2Zyb20pOyBnc2lfbmV4dCAoJmdzaV9mcm9tKSkKKyAgICB7CisgICAgICBn aW1wbGUgKmZyb21fcGhpID0gZ3NpX3N0bXQgKGdzaV9mcm9tKTsKKyAgICAgIHRyZWUgbmV3X3Jl cyA9IGNvcHlfc3NhX25hbWUgKGdpbXBsZV9waGlfcmVzdWx0IChmcm9tX3BoaSkpOworICAgICAg Z3BoaSAqcmVzID0gY3JlYXRlX3BoaV9ub2RlIChuZXdfcmVzLCBtYWluX2xvb3BfZXhpdF9ibG9j ayk7CisgICAgICBuZXdfcGhpcy5zYWZlX3B1c2ggKHJlcyk7CisgICAgfQorCisgIGZvciAoYXV0 byBleGl0IDogbG9vcF9leGl0cykKKyAgICB7CisgICAgICBiYXNpY19ibG9jayBkZXN0CisJPSBl eGl0ID09IGxvb3BfZXhpdCA/IG1haW5fbG9vcF9leGl0X2Jsb2NrIDogbmV3X3ByZWhlYWRlcjsK KyAgICAgIHJlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCAoZXhpdCwgZGVzdCk7CisgICAgfQorCisg IC8qIE9ubHkgZnVzaCB0aGUgbWFpbiBleGl0LCB0aGUgcmVtYWluaW5nIGV4aXRzIHdlIG5lZWQg dG8gbWF0Y2ggdGhlIG9yZGVyCisgICAgIGluIHRoZSBsb29wLT5oZWFkZXIgd2hpY2ggd2l0aCBt dWx0aXBsZSBleGl0cyBtYXkgbm90IGJlIHRoZSBzYW1lLiAgKi8KKyAgZmx1c2hfcGVuZGluZ19z dG10cyAobG9vcF9leGl0KTsKKworICAvKiBSZWNvcmQgdGhlIG5ldyBTU0EgbmFtZXMgaW4gdGhl IGNhY2hlIHNvIHRoYXQgd2UgY2FuIHNraXAgbWF0ZXJpYWxpemluZworICAgICB0aGVtIGFnYWlu IHdoZW4gd2UgZmlsbCBpbiB0aGUgcmVzdCBvZiB0aGUgTENTU0EgdmFyaWFibGVzLiAgKi8KKyAg Zm9yIChhdXRvIHBoaSA6IG5ld19waGlzKQorICAgIHsKKyAgICAgIHRyZWUgbmV3X2FyZyA9IGdp bXBsZV9waGlfYXJnIChwaGksIDApLT5kZWY7CisKKyAgICAgIGlmICghU1NBX1ZBUl9QIChuZXdf YXJnKSkKKwljb250aW51ZTsKKworICAgICAgLyogSWYgdGhlIFBISSBNRU0gbm9kZSBkb21pbmF0 ZXMgdGhlIGxvb3AgdGhlbiB3ZSBzaG91bGRuJ3QgY3JlYXRlCisJIGEgbmV3IExDLVNTU0EgUEhJ IGZvciBpdCBpbiB0aGUgaW50ZXJtZWRpYXRlIGJsb2NrLiAgICovCisgICAgICAvKiBBIE1FTSBw aGkgdGhhdCBjb25zaXR1dGVzIGEgbmV3IERFRiBmb3IgdGhlIHZVU0UgY2hhaW4gY2FuIGVpdGhl cgorCSBiZSBhIC5WREVGIG9yIGEgUEhJIHRoYXQgb3BlcmF0ZXMgb24gTUVNLiBBbmQgc2FpZCBk ZWZpbml0aW9uCisJIG11c3Qgbm90IGJlIGluc2lkZSB0aGUgbWFpbiBsb29wLiAgT3Igd2UgbXVz dCBiZSBhIHBhcmFtZXRlci4KKwkgSW4gdGhlIGxhc3QgdHdvIGNhc2VzIHdlIG1heSByZW1vdmUg YSBub24tTUVNIFBISSBub2RlLCBidXQgc2luY2UKKwkgdGhleSBkb21pbmF0ZSBib3RoIGxvb3Bz IHRoZSByZW1vdmFsIGlzIHVubGlrZWx5IHRvIGNhdXNlIHRyb3VibGUKKwkgYXMgdGhlIGV4aXRz IG11c3QgYWxyZWFkeSBiZSB1c2luZyB0aGVtLiAgKi8KKyAgICAgIGlmICh2aXJ0dWFsX29wZXJh bmRfcCAobmV3X2FyZykKKwkgICYmIChTU0FfTkFNRV9JU19ERUZBVUxUX0RFRiAobmV3X2FyZykK KwkgICAgICB8fCAhZmxvd19iYl9pbnNpZGVfbG9vcF9wIChsb29wLAorCQkJCWdpbXBsZV9iYiAo U1NBX05BTUVfREVGX1NUTVQgKG5ld19hcmcpKSkpKQorCXsKKwkgIGF1dG8gZ3NpID0gZ3NpX2Zv cl9zdG10IChwaGkpOworCSAgcmVtb3ZlX3BoaV9ub2RlICgmZ3NpLCB0cnVlKTsKKwkgIGNvbnRp bnVlOworCX0KKworICAgICAgLyogSWYgd2UgZGVjaWRlIHRvIHJlbW92ZSB0aGUgUEhJIG5vZGUg d2Ugc2hvdWxkIGFsc28gbm90CisJIHJlbWF0ZXJpYWxpemUgaXQgbGF0ZXIgb24uICAqLworICAg ICAgbmV3X3BoaV9hcmdzLnB1dCAobmV3X2FyZywgZ2ltcGxlX3BoaV9yZXN1bHQgKHBoaSkpOwor CisgICAgICBpZiAoVFJFRV9DT0RFIChuZXdfYXJnKSAhPSBTU0FfTkFNRSkKKwljb250aW51ZTsK KyAgICB9CisKKyAgLyogQ29weSB0aGUgY3VycmVudCBsb29wIExDIFBISSBub2RlcyBiZXR3ZWVu IHRoZSBvcmlnaW5hbCBsb29wIGV4aXQKKyAgICAgYmxvY2sgYW5kIHRoZSBuZXcgbG9vcCBoZWFk ZXIuICBUaGlzIGFsbG93cyB1cyB0byBsYXRlciBzcGxpdCB0aGUKKyAgICAgcHJlaGVhZGVyIGJs b2NrIGFuZCBzdGlsbCBmaW5kIHRoZSByaWdodCBMQyBub2Rlcy4gICovCisgIGVkZ2UgbG9vcF9l bnRyeSA9IHNpbmdsZV9zdWNjX2VkZ2UgKG5ld19wcmVoZWFkZXIpOworICBpZiAoZmxvd19sb29w cykKKyAgICBmb3IgKGF1dG8gZ3NpX2Zyb20gPSBnc2lfc3RhcnRfcGhpcyAobG9vcC0+aGVhZGVy KSwKKwkgZ3NpX3RvID0gZ3NpX3N0YXJ0X3BoaXMgKG5ld19sb29wLT5oZWFkZXIpOworCSAhZ3Np X2VuZF9wIChnc2lfZnJvbSkgJiYgIWdzaV9lbmRfcCAoZ3NpX3RvKTsKKwkgZ3NpX25leHQgKCZn c2lfZnJvbSksIGdzaV9uZXh0ICgmZ3NpX3RvKSkKKyAgICAgIHsKKwlnaW1wbGUgKmZyb21fcGhp ID0gZ3NpX3N0bXQgKGdzaV9mcm9tKTsKKwlnaW1wbGUgKnRvX3BoaSA9IGdzaV9zdG10IChnc2lf dG8pOworCXRyZWUgbmV3X2FyZyA9IFBISV9BUkdfREVGX0ZST01fRURHRSAoZnJvbV9waGksIGxv b3BfbGF0Y2hfZWRnZSAobG9vcCkpOworCXRyZWUgKnJlcyA9IE5VTEw7CisKKwkvKiBDaGVjayBp ZiB3ZSd2ZSBhbHJlYWR5IGNyZWF0ZWQgYSBuZXcgcGhpIG5vZGUgZHVyaW5nIGVkZ2UKKwkgICBy ZWRpcmVjdGlvbi4gIElmIHdlIGhhdmUsIG9ubHkgcHJvcGFnYXRlIHRoZSB2YWx1ZSBkb3dud2Fy ZHMuICAqLworCWlmICgocmVzID0gbmV3X3BoaV9hcmdzLmdldCAobmV3X2FyZykpKQorCSAgbmV3 X2FyZyA9ICpyZXM7CisKKwkvKiBBbGwgb3RoZXIgZXhpdHMgdXNlIHRoZSBwcmV2aW91cyBpdGVy cy4gICovCisJaWYgKG11bHRpcGxlX2V4aXRzX3ApCisJICB7CisJICAgIHRyZWUgYWx0X2FyZyA9 IGdpbXBsZV9waGlfcmVzdWx0IChmcm9tX3BoaSk7CisJICAgIHRyZWUgYWx0X3JlcyA9IGNvcHlf c3NhX25hbWUgKGFsdF9hcmcpOworCSAgICBncGhpICphbHRfbGNzc2FfcGhpID0gY3JlYXRlX3Bo aV9ub2RlIChhbHRfcmVzLCBuZXdfcHJlaGVhZGVyKTsKKwkgICAgZWRnZSBtYWluX2UgPSBzaW5n bGVfc3VjY19lZGdlIChtYWluX2xvb3BfZXhpdF9ibG9jayk7CisJICAgIGZvciAoZWRnZSBlIDog bG9vcF9leGl0cykKKwkgICAgICBpZiAoZSAhPSBsb29wX2V4aXQpCisJCXsKKwkJICBhZGRfcGhp X2FyZyAoYWx0X2xjc3NhX3BoaSwgYWx0X2FyZywgZSwgVU5LTk9XTl9MT0NBVElPTik7CisJCSAg U0VUX1BISV9BUkdfREVGIChhbHRfbGNzc2FfcGhpLCBtYWluX2UtPmRlc3RfaWR4LCBuZXdfYXJn KTsKKwkJfQorCSAgICBuZXdfYXJnID0gYWx0X3JlczsgLyogUHVzaCBpdCBkb3duIHRvIHRoZSBu ZXdfbG9vcCBoZWFkZXIuICAqLworCSAgfSBlbHNlIGlmICghcmVzKSB7CisJICAgIC8qIEZvciBu b24tZWFybHkgYnJlYWsgd2UgbmVlZCB0byBrZWVwIHRoZSBwb3NzaWJseSBsaXZlIHZhbHVlcyBp bgorCSAgICAgICB0aGUgZXhpdCBibG9jay4gIEZvciBlYXJseSBicmVhayB0aGVzZSBhcmUga2Vw dCBpbiB0aGUgbWVyZ2UKKwkgICAgICAgYmxvY2sgaW4gdGhlIGNvZGUgYWJvdmUuICAqLworCSAg ICB0cmVlIG5ld19yZXMgPSBjb3B5X3NzYV9uYW1lIChnaW1wbGVfcGhpX3Jlc3VsdCAoZnJvbV9w aGkpKTsKKwkgICAgZ3BoaSAqbGNzc2FfcGhpID0gY3JlYXRlX3BoaV9ub2RlIChuZXdfcmVzLCBu ZXdfcHJlaGVhZGVyKTsKKworCSAgICAvKiBNYWluIGxvb3AgZXhpdCBzaG91bGQgdXNlIHRoZSBm aW5hbCBpdGVyIHZhbHVlLiAgKi8KKwkgICAgYWRkX3BoaV9hcmcgKGxjc3NhX3BoaSwgbmV3X2Fy ZywgbG9vcF9leGl0LCBVTktOT1dOX0xPQ0FUSU9OKTsKKwkgICAgbmV3X2FyZyA9IG5ld19yZXM7 CisJICB9CisKKwlhZGp1c3RfcGhpX2FuZF9kZWJ1Z19zdG10cyAodG9fcGhpLCBsb29wX2VudHJ5 LCBuZXdfYXJnKTsKKyAgICB9CisKKyAgLyogTm93IGNsZWFyIGFsbCB0aGUgcmVkaXJlY3QgbWFw cy4gICovCisgIGZvciAoYXV0byBleGl0IDogbG9vcF9leGl0cykKKyAgICByZWRpcmVjdF9lZGdl X3Zhcl9tYXBfY2xlYXIgKGV4aXQpOworfQorCiAvKiBHaXZlbiBMT09QIHRoaXMgZnVuY3Rpb24g Z2VuZXJhdGVzIGEgbmV3IGNvcHkgb2YgaXQgYW5kIHB1dHMgaXQKICAgIG9uIEUgd2hpY2ggaXMg ZWl0aGVyIHRoZSBlbnRyeSBvciBleGl0IG9mIExPT1AuICBJZiBTQ0FMQVJfTE9PUCBpcwogICAg bm9uLU5VTEwsIGFzc3VtZSBMT09QIGFuZCBTQ0FMQVJfTE9PUCBhcmUgZXF1aXZhbGVudCBhbmQg Y29weSB0aGUKQEAgLTE0MDMsMTMgKzE1NTAsMTYgQEAgdmVjdF9zZXRfbG9vcF9jb25kaXRpb24g KGNsYXNzIGxvb3AgKmxvb3AsIGVkZ2UgbG9vcF9lLCBsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8K ICAgIGNvcGllcyByZW1haW5zIHRoZSBzYW1lLgogCiAgICBJZiBVUERBVEVEX0RPTVMgaXMgbm90 IE5VTEwgaXQgaXMgdXBkYXRlIHdpdGggdGhlIGxpc3Qgb2YgYmFzaWMgYmxvY2tzIHdob21zCi0g ICBkb21pbmF0b3JzIHdlcmUgdXBkYXRlZCBkdXJpbmcgdGhlIHBlZWxpbmcuICAqLworICAgZG9t aW5hdG9ycyB3ZXJlIHVwZGF0ZWQgZHVyaW5nIHRoZSBwZWVsaW5nLiAgV2hlbiBkb2luZyBlYXJs eSBicmVhayB2ZWN0b3JpemF0aW9uCisgICB0aGVuIExPT1BfVklORk8gbmVlZHMgdG8gYmUgcHJv dmlkZWQgYW5kIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhbnkgbmV3bHkgY3JlYXRlZAorICAg bWVtb3J5IHJlZmVyZW5jZXMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgc2hvdWxkIHdlIGRlY2lk ZSB0byB2ZWN0b3JpemUuICAqLwogCiBjbGFzcyBsb29wICoKIHNscGVlbF90cmVlX2R1cGxpY2F0 ZV9sb29wX3RvX2VkZ2VfY2ZnIChjbGFzcyBsb29wICpsb29wLCBlZGdlIGxvb3BfZXhpdCwKIAkJ CQkJY2xhc3MgbG9vcCAqc2NhbGFyX2xvb3AsCiAJCQkJCWVkZ2Ugc2NhbGFyX2V4aXQsIGVkZ2Ug ZSwgZWRnZSAqbmV3X2UsCi0JCQkJCWJvb2wgZmxvd19sb29wcykKKwkJCQkJYm9vbCBmbG93X2xv b3BzLAorCQkJCQl2ZWM8YmFzaWNfYmxvY2s+ICp1cGRhdGVkX2RvbXMpCiB7CiAgIGNsYXNzIGxv b3AgKm5ld19sb29wOwogICBiYXNpY19ibG9jayAqbmV3X2JicywgKmJicywgKnBiYnM7CkBAIC0x NTI2LDcgKzE2NzYsOSBAQCBzbHBlZWxfdHJlZV9kdXBsaWNhdGVfbG9vcF90b19lZGdlX2NmZyAo Y2xhc3MgbG9vcCAqbG9vcCwgZWRnZSBsb29wX2V4aXQsCiAgICAgICB9CiAKICAgYXV0byBsb29w X2V4aXRzID0gZ2V0X2xvb3BfZXhpdF9lZGdlcyAobG9vcCk7CisgIGJvb2wgbXVsdGlwbGVfZXhp dHNfcCA9IGxvb3BfZXhpdHMubGVuZ3RoICgpID4gMTsKICAgYXV0b192ZWM8YmFzaWNfYmxvY2s+ IGRvbXM7CisgIGNsYXNzIGxvb3AgKnVwZGF0ZV9sb29wID0gTlVMTDsKIAogICBpZiAoYXRfZXhp dCkgLyogQWRkIHRoZSBsb29wIGNvcHkgYXQgZXhpdC4gICovCiAgICAgewpAQCAtMTUzNiw5MSAr MTY4OCw5IEBAIHNscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2VkZ2VfY2ZnIChjbGFzcyBs b29wICpsb29wLCBlZGdlIGxvb3BfZXhpdCwKIAkgIGZsdXNoX3BlbmRpbmdfc3RtdHMgKG5ld19l eGl0KTsKIAl9CiAKLSAgICAgIGF1dG9fdmVjIDxnaW1wbGUgKj4gbmV3X3BoaXM7Ci0gICAgICBo YXNoX21hcCA8dHJlZSwgdHJlZT4gbmV3X3BoaV9hcmdzOwotICAgICAgLyogRmlyc3QgY3JlYXRl IHRoZSBlbXB0eSBwaGkgbm9kZXMgc28gdGhhdCB3aGVuIHdlIGZsdXNoIHRoZQotCSBzdGF0ZW1l bnRzIHRoZXkgY2FuIGJlIGZpbGxlZCBpbi4gICBIb3dldmVyIGJlY2F1c2UgdGhlcmUgaXMgbm8g b3JkZXIKLQkgYmV0d2VlbiB0aGUgUEhJIG5vZGVzIGluIHRoZSBleGl0cyBhbmQgdGhlIGxvb3Ag aGVhZGVycyB3ZSBuZWVkIHRvCi0JIG9yZGVyIHRoZW0gYmFzZSBvbiB0aGUgb3JkZXIgb2YgdGhl IHR3byBoZWFkZXJzLiAgRmlyc3QgcmVjb3JkIHRoZSBuZXcKLQkgcGhpIG5vZGVzLiAgKi8KLSAg ICAgIGZvciAoYXV0byBnc2lfZnJvbSA9IGdzaV9zdGFydF9waGlzIChzY2FsYXJfZXhpdC0+ZGVz dCk7Ci0JICAgIWdzaV9lbmRfcCAoZ3NpX2Zyb20pOyBnc2lfbmV4dCAoJmdzaV9mcm9tKSkKLQl7 Ci0JICBnaW1wbGUgKmZyb21fcGhpID0gZ3NpX3N0bXQgKGdzaV9mcm9tKTsKLQkgIHRyZWUgbmV3 X3JlcyA9IGNvcHlfc3NhX25hbWUgKGdpbXBsZV9waGlfcmVzdWx0IChmcm9tX3BoaSkpOwotCSAg Z3BoaSAqcmVzID0gY3JlYXRlX3BoaV9ub2RlIChuZXdfcmVzLCBuZXdfcHJlaGVhZGVyKTsKLQkg IG5ld19waGlzLnNhZmVfcHVzaCAocmVzKTsKLQl9Ci0KLSAgICAgIC8qIFRoZW4gcmVkaXJlY3Qg dGhlIGVkZ2VzIGFuZCBmbHVzaCB0aGUgY2hhbmdlcy4gIFRoaXMgd3JpdGVzIG91dCB0aGUgbmV3 Ci0JIFNTQSBuYW1lcy4gICovCi0gICAgICBmb3IgKGVkZ2UgZXhpdCA6IGxvb3BfZXhpdHMpCi0J ewotCSAgZWRnZSB0ZW1wX2UgPSByZWRpcmVjdF9lZGdlX2FuZF9icmFuY2ggKGV4aXQsIG5ld19w cmVoZWFkZXIpOwotCSAgZmx1c2hfcGVuZGluZ19zdG10cyAodGVtcF9lKTsKLQl9Ci0gICAgICAv KiBSZWNvcmQgdGhlIG5ldyBTU0EgbmFtZXMgaW4gdGhlIGNhY2hlIHNvIHRoYXQgd2UgY2FuIHNr aXAgbWF0ZXJpYWxpemluZwotCSB0aGVtIGFnYWluIHdoZW4gd2UgZmlsbCBpbiB0aGUgcmVzdCBv ZiB0aGUgTENTU0EgdmFyaWFibGVzLiAgKi8KLSAgICAgIGZvciAoYXV0byBwaGkgOiBuZXdfcGhp cykKLQl7Ci0JICB0cmVlIG5ld19hcmcgPSBnaW1wbGVfcGhpX2FyZyAocGhpLCAwKS0+ZGVmOwot Ci0JICBpZiAoIVNTQV9WQVJfUCAobmV3X2FyZykpCi0JICAgIGNvbnRpbnVlOwotCSAgLyogSWYg dGhlIFBISSBNRU0gbm9kZSBkb21pbmF0ZXMgdGhlIGxvb3AgdGhlbiB3ZSBzaG91bGRuJ3QgY3Jl YXRlCi0JICAgICAgYSBuZXcgTEMtU1NTQSBQSEkgZm9yIGl0IGluIHRoZSBpbnRlcm1lZGlhdGUg YmxvY2suICAgKi8KLQkgIC8qIEEgTUVNIHBoaSB0aGF0IGNvbnNpdHV0ZXMgYSBuZXcgREVGIGZv ciB0aGUgdlVTRSBjaGFpbiBjYW4gZWl0aGVyCi0JICAgICBiZSBhIC5WREVGIG9yIGEgUEhJIHRo YXQgb3BlcmF0ZXMgb24gTUVNLiBBbmQgc2FpZCBkZWZpbml0aW9uCi0JICAgICBtdXN0IG5vdCBi ZSBpbnNpZGUgdGhlIG1haW4gbG9vcC4gIE9yIHdlIG11c3QgYmUgYSBwYXJhbWV0ZXIuCi0JICAg ICBJbiB0aGUgbGFzdCB0d28gY2FzZXMgd2UgbWF5IHJlbW92ZSBhIG5vbi1NRU0gUEhJIG5vZGUs IGJ1dCBzaW5jZQotCSAgICAgdGhleSBkb21pbmF0ZSBib3RoIGxvb3BzIHRoZSByZW1vdmFsIGlz IHVubGlrZWx5IHRvIGNhdXNlIHRyb3VibGUKLQkgICAgIGFzIHRoZSBleGl0cyBtdXN0IGFscmVh ZHkgYmUgdXNpbmcgdGhlbS4gICovCi0JICBpZiAodmlydHVhbF9vcGVyYW5kX3AgKG5ld19hcmcp Ci0JICAgICAgJiYgKFNTQV9OQU1FX0lTX0RFRkFVTFRfREVGIChuZXdfYXJnKQotCQkgIHx8ICFm bG93X2JiX2luc2lkZV9sb29wX3AgKGxvb3AsCi0JCQkJZ2ltcGxlX2JiIChTU0FfTkFNRV9ERUZf U1RNVCAobmV3X2FyZykpKSkpCi0JICAgIHsKLQkgICAgICBhdXRvIGdzaSA9IGdzaV9mb3Jfc3Rt dCAocGhpKTsKLQkgICAgICByZW1vdmVfcGhpX25vZGUgKCZnc2ksIHRydWUpOwotCSAgICAgIGNv bnRpbnVlOwotCSAgICB9Ci0JICBuZXdfcGhpX2FyZ3MucHV0IChuZXdfYXJnLCBnaW1wbGVfcGhp X3Jlc3VsdCAocGhpKSk7Ci0KLQkgIGlmIChUUkVFX0NPREUgKG5ld19hcmcpICE9IFNTQV9OQU1F KQotCSAgICBjb250aW51ZTsKLQl9Ci0KLSAgICAgIC8qIENvcHkgdGhlIGN1cnJlbnQgbG9vcCBM QyBQSEkgbm9kZXMgYmV0d2VlbiB0aGUgb3JpZ2luYWwgbG9vcCBleGl0Ci0JIGJsb2NrIGFuZCB0 aGUgbmV3IGxvb3AgaGVhZGVyLiAgVGhpcyBhbGxvd3MgdXMgdG8gbGF0ZXIgc3BsaXQgdGhlCi0J IHByZWhlYWRlciBibG9jayBhbmQgc3RpbGwgZmluZCB0aGUgcmlnaHQgTEMgbm9kZXMuICAqLwot ICAgICAgZWRnZSBsb29wX2VudHJ5ID0gc2luZ2xlX3N1Y2NfZWRnZSAobmV3X3ByZWhlYWRlcik7 Ci0gICAgICBpZiAoZmxvd19sb29wcykKLQlmb3IgKGF1dG8gZ3NpX2Zyb20gPSBnc2lfc3RhcnRf cGhpcyAobG9vcC0+aGVhZGVyKSwKLQkgICAgIGdzaV90byA9IGdzaV9zdGFydF9waGlzIChuZXdf bG9vcC0+aGVhZGVyKTsKLQkgICAgICFnc2lfZW5kX3AgKGdzaV9mcm9tKSAmJiAhZ3NpX2VuZF9w IChnc2lfdG8pOwotCSAgICAgZ3NpX25leHQgKCZnc2lfZnJvbSksIGdzaV9uZXh0ICgmZ3NpX3Rv KSkKLQkgIHsKLQkgICAgZ2ltcGxlICpmcm9tX3BoaSA9IGdzaV9zdG10IChnc2lfZnJvbSk7Ci0J ICAgIGdpbXBsZSAqdG9fcGhpID0gZ3NpX3N0bXQgKGdzaV90byk7Ci0JICAgIHRyZWUgbmV3X2Fy ZyA9IFBISV9BUkdfREVGX0ZST01fRURHRSAoZnJvbV9waGksCi0JCQkJCQkgIGxvb3BfbGF0Y2hf ZWRnZSAobG9vcCkpOwotCi0JICAgIC8qIENoZWNrIGlmIHdlJ3ZlIGFscmVhZHkgY3JlYXRlZCBh IG5ldyBwaGkgbm9kZSBkdXJpbmcgZWRnZQotCSAgICAgICByZWRpcmVjdGlvbi4gIElmIHdlIGhh dmUsIG9ubHkgcHJvcGFnYXRlIHRoZSB2YWx1ZSBkb3dud2FyZHMuICAqLwotCSAgICBpZiAodHJl ZSAqcmVzID0gbmV3X3BoaV9hcmdzLmdldCAobmV3X2FyZykpCi0JICAgICAgewotCQlhZGp1c3Rf cGhpX2FuZF9kZWJ1Z19zdG10cyAodG9fcGhpLCBsb29wX2VudHJ5LCAqcmVzKTsKLQkJY29udGlu dWU7Ci0JICAgICAgfQotCi0JICAgIHRyZWUgbmV3X3JlcyA9IGNvcHlfc3NhX25hbWUgKGdpbXBs ZV9waGlfcmVzdWx0IChmcm9tX3BoaSkpOwotCSAgICBncGhpICpsY3NzYV9waGkgPSBjcmVhdGVf cGhpX25vZGUgKG5ld19yZXMsIG5ld19wcmVoZWFkZXIpOwotCi0JICAgIC8qIE1haW4gbG9vcCBl eGl0IHNob3VsZCB1c2UgdGhlIGZpbmFsIGl0ZXIgdmFsdWUuICAqLwotCSAgICBhZGRfcGhpX2Fy ZyAobGNzc2FfcGhpLCBuZXdfYXJnLCBsb29wX2V4aXQsIFVOS05PV05fTE9DQVRJT04pOwotCi0J ICAgIGFkanVzdF9waGlfYW5kX2RlYnVnX3N0bXRzICh0b19waGksIGxvb3BfZW50cnksIG5ld19y ZXMpOwotCSAgfQorICAgICAgc2xwZWVsX3RyZWVfZHVwbGljYXRlX2xvb3BfZm9yX3ZlY3Rvcml6 YXRpb24gKGxvb3AsIGxvb3BfZXhpdCwgbG9vcF9leGl0cywKKwkJCQkJCSAgICBuZXdfbG9vcCwg Zmxvd19sb29wcywKKwkJCQkJCSAgICBuZXdfcHJlaGVhZGVyKTsKIAogICAgICAgc2V0X2ltbWVk aWF0ZV9kb21pbmF0b3IgKENESV9ET01JTkFUT1JTLCBuZXdfcHJlaGVhZGVyLCBlLT5zcmMpOwog CkBAIC0xNjM0LDYgKzE3MDQsMjEgQEAgc2xwZWVsX3RyZWVfZHVwbGljYXRlX2xvb3BfdG9fZWRn ZV9jZmcgKGNsYXNzIGxvb3AgKmxvb3AsIGVkZ2UgbG9vcF9leGl0LAogICAgICAgZGVsZXRlX2Jh c2ljX2Jsb2NrIChwcmVoZWFkZXIpOwogICAgICAgc2V0X2ltbWVkaWF0ZV9kb21pbmF0b3IgKENE SV9ET01JTkFUT1JTLCBzY2FsYXJfbG9vcC0+aGVhZGVyLAogCQkJICAgICAgIGxvb3BfcHJlaGVh ZGVyX2VkZ2UgKHNjYWxhcl9sb29wKS0+c3JjKTsKKworICAgICAgLyogRmluYWxseSBhZnRlciB3 aXJpbmcgdGhlIG5ldyBlcGlsb2d1ZSB3ZSBuZWVkIHRvIHVwZGF0ZSBpdHMgbWFpbiBleGl0CisJ IHRvIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBleGl0IHdlIHJlY29yZGVkLiAgT3RoZXIgZXhpdHMg YXJlIGFscmVhZHkKKwkgY29ycmVjdC4gICovCisgICAgICBpZiAobXVsdGlwbGVfZXhpdHNfcCkK Kwl7CisJICB1cGRhdGVfbG9vcCA9IG5ld19sb29wOworCSAgZm9yIChlZGdlIGUgOiBnZXRfbG9v cF9leGl0X2VkZ2VzIChsb29wKSkKKwkgICAgZG9tcy5zYWZlX3B1c2ggKGUtPmRlc3QpOworCSAg ZG9tcy5zYWZlX3B1c2ggKGV4aXRfZGVzdCk7CisKKwkgIC8qIExpa2VseSBhIGZhbGwtdGhyb3Vn aCBlZGdlLCBzbyB1cGRhdGUgaWYgbmVlZGVkLiAgKi8KKwkgIGlmIChzaW5nbGVfc3VjY19wIChl eGl0X2Rlc3QpKQorCSAgICBkb21zLnNhZmVfcHVzaCAoc2luZ2xlX3N1Y2MgKGV4aXRfZGVzdCkp OworCX0KICAgICB9CiAgIGVsc2UgLyogQWRkIHRoZSBjb3B5IGF0IGVudHJ5LiAgKi8KICAgICB7 CkBAIC0xNjgxLDYgKzE3NjYsMzQgQEAgc2xwZWVsX3RyZWVfZHVwbGljYXRlX2xvb3BfdG9fZWRn ZV9jZmcgKGNsYXNzIGxvb3AgKmxvb3AsIGVkZ2UgbG9vcF9leGl0LAogICAgICAgZGVsZXRlX2Jh c2ljX2Jsb2NrIChuZXdfcHJlaGVhZGVyKTsKICAgICAgIHNldF9pbW1lZGlhdGVfZG9taW5hdG9y IChDRElfRE9NSU5BVE9SUywgbmV3X2xvb3AtPmhlYWRlciwKIAkJCSAgICAgICBsb29wX3ByZWhl YWRlcl9lZGdlIChuZXdfbG9vcCktPnNyYyk7CisKKyAgICAgIGlmIChtdWx0aXBsZV9leGl0c19w KQorCXVwZGF0ZV9sb29wID0gbG9vcDsKKyAgICB9CisKKyAgaWYgKG11bHRpcGxlX2V4aXRzX3Ap CisgICAgeworICAgICAgZm9yIChlZGdlIGUgOiBnZXRfbG9vcF9leGl0X2VkZ2VzICh1cGRhdGVf bG9vcCkpCisJeworCSAgZWRnZSBleDsKKwkgIGVkZ2VfaXRlcmF0b3IgZWk7CisJICBGT1JfRUFD SF9FREdFIChleCwgZWksIGUtPmRlc3QtPnN1Y2NzKQorCSAgICB7CisJICAgICAgLyogRmluZCB0 aGUgZmlyc3Qgbm9uLWZhbGx0aHJvdWdoIGJsb2NrIGFzIGZhbGwtdGhyb3VnaHMgY2FuJ3QKKwkJ IGRvbWluYXRlIG90aGVyIGJsb2Nrcy4gICovCisJICAgICAgaWYgKHNpbmdsZV9zdWNjX3AgKGV4 LT5kZXN0KSkKKwkJeworCQkgIGRvbXMuc2FmZV9wdXNoIChleC0+ZGVzdCk7CisJCSAgZXggPSBz aW5nbGVfc3VjY19lZGdlIChleC0+ZGVzdCk7CisJCX0KKwkgICAgICBkb21zLnNhZmVfcHVzaCAo ZXgtPmRlc3QpOworCSAgICB9CisJICBkb21zLnNhZmVfcHVzaCAoZS0+ZGVzdCk7CisJfQorCisg ICAgICBpdGVyYXRlX2ZpeF9kb21pbmF0b3JzIChDRElfRE9NSU5BVE9SUywgZG9tcywgZmFsc2Up OworICAgICAgaWYgKHVwZGF0ZWRfZG9tcykKKwl1cGRhdGVkX2RvbXMtPnNhZmVfc3BsaWNlIChk b21zKTsKICAgICB9CiAKICAgZnJlZSAobmV3X2Jicyk7CmRpZmYgLS1naXQgYS9nY2MvdHJlZS12 ZWN0b3JpemVyLmggYi9nY2MvdHJlZS12ZWN0b3JpemVyLmgKaW5kZXggNzY0NTFhN2ZlZmU2ZmY5 NjZjZWNmYTJjYmM3YjExMzM2YjAzODU2NS4uYjlhNzFhMGI1ZjU0MDc0MTdlODM2NmIwZGYxMzJk ZjIwYzdmNjBhYSAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtdmVjdG9yaXplci5oCisrKyBiL2djYy90 cmVlLXZlY3Rvcml6ZXIuaApAQCAtMTgyMSw3ICsxODIxLDcgQEAgaXNfbG9vcF9oZWFkZXJfYmJf cCAoYmFzaWNfYmxvY2sgYmIpCiB7CiAgIGlmIChiYiA9PSAoYmItPmxvb3BfZmF0aGVyKS0+aGVh ZGVyKQogICAgIHJldHVybiB0cnVlOwotICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChFREdFX0NPVU5U IChiYi0+cHJlZHMpID09IDEpOworCiAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjIxMiw3ICsy MjEyLDggQEAgZXh0ZXJuIGJvb2wgc2xwZWVsX2Nhbl9kdXBsaWNhdGVfbG9vcF9wIChjb25zdCBj bGFzcyBsb29wICosIGNvbnN0X2VkZ2UsCiAJCQkJCSBjb25zdF9lZGdlKTsKIGNsYXNzIGxvb3Ag KnNscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2VkZ2VfY2ZnIChjbGFzcyBsb29wICosIGVk Z2UsCiAJCQkJCQkgICAgY2xhc3MgbG9vcCAqLCBlZGdlLAotCQkJCQkJICAgIGVkZ2UsIGVkZ2Ug KiwgYm9vbCA9IHRydWUpOworCQkJCQkJICAgIGVkZ2UsIGVkZ2UgKiwgYm9vbCA9IHRydWUsCisJ CQkJCQkgICAgdmVjPGJhc2ljX2Jsb2NrPiAqID0gTlVMTCk7CiBjbGFzcyBsb29wICp2ZWN0X2xv b3BfdmVyc2lvbmluZyAobG9vcF92ZWNfaW5mbywgZ2ltcGxlICopOwogZXh0ZXJuIGNsYXNzIGxv b3AgKnZlY3RfZG9fcGVlbGluZyAobG9vcF92ZWNfaW5mbywgdHJlZSwgdHJlZSwKIAkJCQkgICAg dHJlZSAqLCB0cmVlICosIHRyZWUgKiwgaW50LCBib29sLCBib29sLApAQCAtMjIyMyw2ICsyMjI0 LDcgQEAgZXh0ZXJuIGR1bXBfdXNlcl9sb2NhdGlvbl90IGZpbmRfbG9vcF9sb2NhdGlvbiAoY2xh c3MgbG9vcCAqKTsKIGV4dGVybiBib29sIHZlY3RfY2FuX2FkdmFuY2VfaXZzX3AgKGxvb3BfdmVj X2luZm8pOwogZXh0ZXJuIHZvaWQgdmVjdF91cGRhdGVfaW5pdHNfb2ZfZHJzIChsb29wX3ZlY19p bmZvLCB0cmVlLCB0cmVlX2NvZGUpOwogZXh0ZXJuIGVkZ2UgdmVjX2luaXRfbG9vcF9leGl0X2lu Zm8gKGNsYXNzIGxvb3AgKik7CitleHRlcm4gYm9vbCB2ZWN0X2lzX2xvb3BfZXhpdF9sYXRjaF9w cmVkIChlZGdlLCBjbGFzcyBsb29wICopOwogCiAvKiBJbiB0cmVlLXZlY3Qtc3RtdHMuY2MuICAq LwogZXh0ZXJuIHRyZWUgZ2V0X3JlbGF0ZWRfdmVjdHlwZV9mb3Jfc2NhbGFyX3R5cGUgKG1hY2hp bmVfbW9kZSwgdHJlZSwK --_002_VI1PR08MB53254CC2C5490804977E0852FFB1AVI1PR08MB5325eurp_--