From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2061.outbound.protection.outlook.com [40.107.92.61]) by sourceware.org (Postfix) with ESMTPS id 61F86383234B for ; Tue, 15 Nov 2022 04:46:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 61F86383234B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=siemens.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=siemens.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GuSyf5jI1GmNuJE5kgMnCU4+Ejhfh/evKVdXFUxWB/ATTsymIyg9spPhsTeDi2qW5uhkmfTDD6xiASe12V3w5qUflN49Ior5rvKI9MXVcGxtj7VTMlqtWrT2DViduADToImqx+fZoMhhHWt/kzFYoFm0Zx/ITiNdleJ68YNgX3c/N1/1Sxeloybhjb+duLhByG2abGTST9KiEPy8comMctTf4FBG9DYqa9UvYj6XVUwx7b/cxJadJfHxlrCVRHGpg4g+vrieNOzVcrS6qg4gsuagN2gsAyTc4uFgt6gNcndz6toJioiXabubHTHIDu1xzD2zNhU7Z8e/NCOEkGHZrA== 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=fdfeTAYxi3XdDI8CjsqQMrEh8EGMOVaoavRMQ3ABI6U=; b=Pn6sS8A/cO0mZYnz6MZTTnAWBwCLKLq8u0j99UaXFq2bGRO0409vk0aXKhV2MEla7BY1Q0m8uJqJmMSYr9t4E+ObaejQ3UMAoUAqRA42bmsF8Ouw3xS39DyExbN0UeGr1nH6dhOAFtQCB4ro6xCRxbWzWmGf4u6D85zF+UXsGEfpdegVxpGr19qj7Nv4vQw2uVuy5HfzE0sqCGoKxYH8wy80ls6iC76jNWAnhqI0IeQUZlBjQiUOTSUZB7yd8mPEtD2f1T5R5HkgnfKjk9SdSSY2YYJvE3xaqR0mhN9Cjss+lXjNx0vit4r8GFhiR9wYA9r8bXUYTl/zML7pFjBRRA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fdfeTAYxi3XdDI8CjsqQMrEh8EGMOVaoavRMQ3ABI6U=; b=KvovYc5tjYtQUzHn4whzT0mxcmNeIzpYzJMUQjT16Q3NGyn+Cs3ggtBuyfbrdxJpx3ynaMDNZOPh2gbkfzvmipl+zq8Ikrf38YI/zPn2z6yYJSeon5PDy5x/l+rIPCnhm42AaQAokAQ7jD8RBRDmVMcccKy+nYCVNvJ12KY/SmeWp7UpQ9PqZpr/k8XZFyUtlaWu+sHW4kFozlAkYUE+A5ACk9KuMBdjDEezDRcmx9WC9gr1o99keYSjGuYh8UEU9REX53R1ibsiwv0/I6uqIVY4+IKArfL6Nj+10LINJol41L1BojtKBBb8R1JYOrEUkMyAHASDDFzQlbCZHfnKCQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siemens.com; Received: from CH2PR07MB7222.namprd07.prod.outlook.com (2603:10b6:610:ab::21) by SJ0PR07MB8584.namprd07.prod.outlook.com (2603:10b6:a03:371::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.17; Tue, 15 Nov 2022 04:46:20 +0000 Received: from CH2PR07MB7222.namprd07.prod.outlook.com ([fe80::bd66:6eab:d2d8:2643]) by CH2PR07MB7222.namprd07.prod.outlook.com ([fe80::bd66:6eab:d2d8:2643%5]) with mapi id 15.20.5813.017; Tue, 15 Nov 2022 04:46:19 +0000 Content-Type: multipart/mixed; boundary="------------ivspamYm72CnW9sCIFGK4awm" Message-ID: <927ad110-065e-9414-1312-bff5a0644e97@siemens.com> Date: Mon, 14 Nov 2022 21:46:15 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Content-Language: en-US To: "gcc-patches@gcc.gnu.org" Cc: Jakub Jelinek From: Sandra Loosemore Subject: [PATCH v4] OpenMP: Generate SIMD clones for functions with "declare target" X-ClientProxiedBy: CH2PR10CA0008.namprd10.prod.outlook.com (2603:10b6:610:4c::18) To CH2PR07MB7222.namprd07.prod.outlook.com (2603:10b6:610:ab::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR07MB7222:EE_|SJ0PR07MB8584:EE_ X-MS-Office365-Filtering-Correlation-Id: 9759da5e-b7a4-468b-21aa-08dac6c455a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: G3ovZiK5OczVxv27aBAjh+25sJ0hYXq37gKMw02bNg+QC7hoaC+MX6alZsdc3OUmVDG2BVHv72As2nqjSU0uYggHmSYQhchM9Ou9mhiH6H7fzs6+woZ4BHqAOnOcU+lPteH8QlzJjWv1BGlLBrMPIu4Kd2dGNYdweky8x+7Ne9ybOTr1uBMjdAoV2XHSdq3h8vmzTjefgpGp+aE/z2ePMq37eBFYtX67SIKHDh9rbPrFJenYoVxVN00wotngve4iDlgosGG45x/n9blUbyunlZa6Lvf1u8rQZOAytbEEc61yAfB90eLTjUdy2DtfVcx8kasFbsh3alzQWkmciWiAknPNcDrm3AiwVQPTgOBiS2JfU5O/3kotz+tBNHzOaQDA71p42cqGPBLoB3kqOBmxWR3RjSKaLCebSXyW8zYtgLSN6Jx1E3YfsjvBB/3rSjjm912hDI2WtlSOs4G/oRfP0ISFjKvHEanolIll6uSRUnvxePnXIjlxa6uQ46b4D2C8RDAYJCmOwPMbTV27WRd3o754fs0WjZPpE9UE2v+xVbOE/7q4RmXAKUMmTdcMW6b1mM9oQeXLt8hEc8H0eFOgtNdzwAfxS93ELSrlqVCmxEhgM+gt2I8kgl5d92gpQy8nVT43MCXbgftbSRyJRScTo+pb6IpM0iVWtuImPdFy+case+dzHvVxXbl2HlHLHy5TwsqY0BRxl5GXsFlgpgjyePMLXdJyRW8C8vWito6dHd9Ht8NPoLYTEs4cJ6ZLuhdUsfpNp5CflNkV20+xSQZpRjToKJ0+XiLDiVcu4vCGbS0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR07MB7222.namprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(376002)(346002)(366004)(39860400002)(136003)(451199015)(36756003)(86362001)(31696002)(33964004)(6506007)(6512007)(6666004)(2616005)(186003)(82960400001)(38100700002)(8936002)(44832011)(4326008)(66476007)(66556008)(66946007)(8676002)(235185007)(5660300002)(41300700001)(2906002)(6486002)(478600001)(316002)(6916009)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VDUzUkVKbWFZU2N6bUZUL0lkd282Z0k4QiszUmlVU3BpZnZNZEJHbjlzU29l?= =?utf-8?B?OTBCbXUxbGJZMkhSdlVaaUV2UFVYZFZGRVBtWFp5eHY1eFJ6dUw2RlJTNnlk?= =?utf-8?B?emthUW1lUk9xWDNDaEo3dDRpUGNBY0o4R3F6NTljVFk3SGhNaFdSVDRGaGtB?= =?utf-8?B?TERQZ3NHMzUzMWMrT01XUFd4cUZGU0J4bVFCT1IxNjFGN0ZLMFFaN0J6UTQz?= =?utf-8?B?ektwREprY1g5b1krRXFWSlczaHZYUmIxV0dHWEZXaExiN2hpd2JpT1g2WVZ4?= =?utf-8?B?YUJCOWhVSlNLTHRySnhjRFVZN0d0N0dUTHZsT01oT2lKdHJNTVU5TFJTL0RN?= =?utf-8?B?cUNwSnhraEcwQ0RDaDhmTTFTRTVha1E1NmlHeVF0SWorQ0h6ZURpWnVFOGQv?= =?utf-8?B?NDlUOThET3N2Szh5REh5UWY3ckdyaUpQQ1VlTzlwMmw5WXJnclptcm9naXBl?= =?utf-8?B?bksvNFVJTjZlR3hzbkYzUG9KOFhHV0JEQlRvMkc0WEJJK3E5aFphQ0IvT3lZ?= =?utf-8?B?M2xVSjZWTXFINlRBMHRZdHp2VjJoSmJHOHBkdzYzWXlIb3V3Zi9tRU1Vd3RT?= =?utf-8?B?b214bHROcEtlOU4zVmZxN1VZK0NaMURHYi9oRDdLM25YRE9pSzNqend1WVpE?= =?utf-8?B?NVprQ09iaWFWbUc1T1V3eEc5QmpCM2g2S0dtSEVHTi9rQ1BtNENzNG80RmhM?= =?utf-8?B?cFZYTnc2TjZLcWR5MXZiVGUyTy96ZVhnRVUvc0Z0c0tvTXFJZndzb1M3RGNu?= =?utf-8?B?ZkJpMkwycDV2RWkwU1R4K1hBM01NYSs0YmhLKzhxL3J3M2hmazR2ajBHY3px?= =?utf-8?B?cXltYWZIYitibmFQTldWSFEzbmdOTExFaDVXT1JmLzRSODBrS3FReXJBdGl4?= =?utf-8?B?YmE2c3dDMEtpNENpS3ZmUkJmemlpdFdJUUt2QlNod3lZalNxeUxhWlA0Yzcw?= =?utf-8?B?RXBIQkNQR0hyOGJ3K0RTTHBiWkpiSjM1emtvdlZUWjZPbUxqS3lrckRwZFFT?= =?utf-8?B?T2hYN0l0c3FmeXVNMHlCYSt3cmpSdU15emNxdmN5SkZMWFZDSGgyMURQenpz?= =?utf-8?B?czZ0TUJmUWxWL21GQ1RyZGlZNUgxVE9DUnpqTk45S3BndHJOL1hlV0RjMWtG?= =?utf-8?B?b0JwNmppUXpxRUR3enRuenRhS3M1MDZnRGhodGpwRCtpeURDYnVlTFhJbUdM?= =?utf-8?B?VUNvbjJ4c1lzQUx4a0lHcFFidkpqS0loSGRMVExPbWE2OTBiSDB4MHBPaW9U?= =?utf-8?B?eGViZ25VQUE5b3NKaFRPeE1JRStIYmpBbGpkcHJPTHl1ZnQ2YUJQQjZpbkY0?= =?utf-8?B?MmVkWXRkeWl2bE5jTXRwOGZQRnZJWlpVbXI4SENLVkhGM0p6NC9ETWViK2pP?= =?utf-8?B?MWV4Rm5YaWRRSFJUN1JKLy82K1lWbG5uZTIyMmpjMlY3WldSVmx6ZzBLcExK?= =?utf-8?B?b25lR0FMYW00QTR3S1VyNWZzR3JubU9Gb045d3hjR3Z4U09KYXp5R3IwT1pj?= =?utf-8?B?Rm9udEREdnJyako5MkpQSHZCNE5jMG9LUmUrZWF3OXhjenVVUkJCVWw0MjNp?= =?utf-8?B?VkxtREFidGpzMm56cFZnTXU0SWZyYzRzU2tUbnhhU0l6bVBJeFhMMEtsVURn?= =?utf-8?B?QUlJSkh1RkVPODkrTDByZUpWT1NSZFI5dEgyanF0ZEI5SDRmZE5RR253YjFO?= =?utf-8?B?WXduYXhUWjdBa0ZYRXlhcml2ZGpkS1J5cElrVW5vekQ0YUpQdU9ZN0o0MENY?= =?utf-8?B?WWtwbFJZOTVxVmg3Q2pwSXhFT3BiU2Jya245V2lUUWc0NEhOa1dWekZGREI4?= =?utf-8?B?MnlnRG4rVTR3QU9zZFRtYi8rZTRQeHJuR1VKRzV6eWVWZXBtb1liZFluKzR5?= =?utf-8?B?ZC9NNkJiOUQvZkZYNEhOK3c3WGw2MndMMm9qMm1mbHd0NklvYXpPMmR6TU5s?= =?utf-8?B?MWwvM2Fia1hSU1VubTh6a09xWDFhalhyOFVWVG5IVTl2ckluNlRUYWMvZVhk?= =?utf-8?B?aFd6VjVkS2FsNkx4Ym9GMXlBS1FNcTBGSGZkWExmWWNYRVVBUms0SldJbDVi?= =?utf-8?B?SmNhZmpxZ09CclBXY1ExVFp4clBneE8yOG9UMTVEclh3bjQ1L2Z1NXQ4dHcz?= =?utf-8?B?dlFNclNwU1hZVzVRb3F6UzIvRHNkNUFydVNET0NCc2ZHMHhCM21tcW5UcGNn?= =?utf-8?B?MTd0T0RtNzNLSnZQMFhuM25PM2V5S09wT0VZS1ByYnNONHR0OS8zMTE2U0Qw?= =?utf-8?B?QkYxVUdpWmJrVTdsZHIvcjVLcklRPT0=?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9759da5e-b7a4-468b-21aa-08dac6c455a6 X-MS-Exchange-CrossTenant-AuthSource: CH2PR07MB7222.namprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Nov 2022 04:46:19.7947 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ECwwPx3Am+cJbg9WCqiPmfgK4QsA7tzuTTDFEFWXN5FPpQKaIIwPGbikZkICTtagixkh+HaUgliuk6GJ1bIy9TOb977fKhZ4U9igU5Wpa8U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR07MB8584 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00,DKIMWL_WL_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP 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: --------------ivspamYm72CnW9sCIFGK4awm Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Here is yet another attempt at a patch to auto-generate SIMD clones for functions that already have the "declare target" attribute. This version v4 is derived from the previous v2 version, since v3 seemed to be a dead end. I have added conditionals to restrict the auto-generation at -O2 to the offload compiler, and extended the syntax of the -fopenmp-target-simd-clone to allow explicit control over whether it applies to host, target, or both -- this primarily to allow better test coverage. I've added infrastructure to support testing on the offload compiler, added new test cases, and reworked the existing test cases to scan for interesting things written to the dump file instead of examining the .s output. I hope it is not too late to consider this patch given that I've been trying to get this feature in for months already. Also, I kind of got caught in the Sphinx churn last week, relating to the documentation parts of this patch. :-( I understand that if this patch is accepted I am also on the hook to come up with a further patch to try to GC unused clones after vectorization; I haven't started on that piece yet. -Sandra --------------ivspamYm72CnW9sCIFGK4awm Content-Type: text/x-patch; charset=UTF-8; name="auto-declare-simd-nov14.patch" Content-Disposition: attachment; filename="auto-declare-simd-nov14.patch" Content-Transfer-Encoding: base64 RnJvbSA3NzFiZTk2ZDJkYzdiODg2OGJhMDZjZjhlYzZhZmU3YTMzMzdhYzg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW5kcmEgTG9vc2Vtb3JlIDxzYW5kcmFAY29kZXNvdXJjZXJ5 LmNvbT4KRGF0ZTogVHVlLCAxNSBOb3YgMjAyMiAwMzo0MDoxMiArMDAwMApTdWJqZWN0OiBbUEFU Q0hdIE9wZW5NUDogR2VuZXJhdGUgU0lNRCBjbG9uZXMgZm9yIGZ1bmN0aW9ucyB3aXRoICJkZWNs YXJlCiB0YXJnZXQiCgpUaGlzIHBhdGNoIGNhdXNlcyB0aGUgSVBBIHNpbWRjbG9uZSBwYXNzIHRv IGdlbmVyYXRlIGNsb25lcyBmb3IKZnVuY3Rpb25zIHdpdGggdGhlICJvbXAgZGVjbGFyZSB0YXJn ZXQiIGF0dHJpYnV0ZSBhcyBpZiB0aGV5IGhhZAoib21wIGRlY2xhcmUgc2ltZCIsIHByb3ZpZGVk IHRoZSBmdW5jdGlvbiBhcHBlYXJzIHRvIGJlIHN1aXRhYmxlIGZvcgpTSU1EIGV4ZWN1dGlvbi4g IFRoZSBmaWx0ZXIgaXMgY29uc2VydmF0aXZlLCByZWplY3RpbmcgZnVuY3Rpb25zCnRoYXQgd3Jp dGUgbWVtb3J5IG9yIHRoYXQgY2FsbCBvdGhlciBmdW5jdGlvbnMgbm90IGtub3duIHRvIGJlIHNh ZmUuCkEgbmV3IG9wdGlvbiAtZm9wZW5tcC10YXJnZXQtc2ltZC1jbG9uZSBpcyBhZGRlZCB0byBj b250cm9sIHRoaXMKdHJhbnNmb3JtYXRpb247IGl0J3MgZW5hYmxlZCBmb3Igb2ZmbG9hZCBwcm9j ZXNzaW5nIGF0IC1PMiBhbmQgaGlnaGVyLgoKZ2NjL0NoYW5nZUxvZzoKCgkqIGNvbW1vbi5vcHQg KGZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmUpOiBOZXcgb3B0aW9uLgoJKHRhcmdldF9zaW1kX2Ns b25lX2RldmljZSk6IE5ldyBlbnVtIHRvIGdvIHdpdGggaXQuCgkqIGRvYy9pbnZva2UudGV4aSAo LWZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmUpOiBEb2N1bWVudC4KCSogZmxhZy10eXBlcy5oIChl bnVtIG9tcF90YXJnZXRfc2ltZF9jbG9uZV9kZXZpY2Vfa2luZCk6IE5ldy4KCSogb21wLXNpbWQt Y2xvbmUuY2MgKGF1dG9fc2ltZF9mYWlsKTogTmV3IGZ1bmN0aW9uLgoJKGF1dG9fc2ltZF9jaGVj a19zdG10KTogTmV3IGZ1bmN0aW9uLgoJKHBsYXVzaWJsZV90eXBlX2Zvcl9zaW1kX2Nsb25lKTog TmV3IGZ1bmN0aW9uLgoJKG9rX2Zvcl9hdXRvX3NpbWRfY2xvbmUpOiBOZXcgZnVuY3Rpb24uCgko c2ltZF9jbG9uZV9jcmVhdGUpOiBBZGQgZm9yY2VfbG9jYWwgYXJndW1lbnQsIG1ha2UgdGhlIHN5 bWJvbAoJaGF2ZSBpbnRlcm5hbCBsaW5rYWdlIGlmIGl0IGlzIHRydWUuCgkoZXhwYW5kX3NpbWRf Y2xvbmVzKTogQWxzbyBjaGVjayBmb3IgY2xvbmVhYmxlIGZ1bmN0aW9ucyB3aXRoCgkib21wIGRl Y2xhcmUgdGFyZ2V0Ii4gIFBhc3MgZXhwbGljaXRfcCBhcmd1bWVudCB0bwoJc2ltZF9jbG9uZS5j b21wdXRlX3ZlY3NpemVfYW5kX3NpbWRsZW4gdGFyZ2V0IGhvb2suCgkqIG9wdHMuY2MgKGRlZmF1 bHRfb3B0aW9uc190YWJsZSk6IEFkZCAtZm9wZW5tcC10YXJnZXQtc2ltZC1jbG9uZS4KCSogdGFy Z2V0LmRlZiAoVEFSR0VUX1NJTURfQ0xPTkVfQ09NUFVURV9WRUNTSVpFX0FORF9TSU1ETEVOKToK CUFkZCBib29sIGV4cGxpY2l0X3AgYXJndW1lbnQuCgkqIGRvYy90bS50ZXhpOiBSZWdlbmVyYXRl ZC4KCSogY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYwoJKGFhcmNoNjRfc2ltZF9jbG9uZV9jb21w dXRlX3ZlY3NpemVfYW5kX3NpbWRsZW4pOiBVcGRhdGUuCgkqIGNvbmZpZy9nY24vZ2NuLmNjCgko Z2NuX3NpbWRfY2xvbmVfY29tcHV0ZV92ZWNzaXplX2FuZF9zaW1kbGVuKTogVXBkYXRlLgoJKiBj b25maWcvaTM4Ni9pMzg2LmNjCgkoaXg4Nl9zaW1kX2Nsb25lX2NvbXB1dGVfdmVjc2l6ZV9hbmRf c2ltZGxlbik6IFVwZGF0ZS4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCSogZysrLmRnL2dv bXAvdGFyZ2V0LXNpbWQtY2xvbmUtMS5DOiBOZXcuCgkqIGcrKy5kZy9nb21wL3RhcmdldC1zaW1k LWNsb25lLTIuQzogTmV3LgoJKiBnY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS0xLmM6IE5l dy4KCSogZ2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMi5jOiBOZXcuCgkqIGdjYy5kZy9n b21wL3RhcmdldC1zaW1kLWNsb25lLTMuYzogTmV3LgoJKiBnY2MuZGcvZ29tcC90YXJnZXQtc2lt ZC1jbG9uZS00LmM6IE5ldy4KCSogZ2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtNS5jOiBO ZXcuCgkqIGdjYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTYuYzogTmV3LgoJKiBnY2MuZGcv Z29tcC90YXJnZXQtc2ltZC1jbG9uZS03LmM6IE5ldy4KCSogZ2NjLmRnL2dvbXAvdGFyZ2V0LXNp bWQtY2xvbmUtOC5jOiBOZXcuCgkqIGxpYi9zY2Fub2ZmbG9hZGlwYS5leHA6IE5ldy4KCmxpYmdv bXAvQ2hhbmdlTG9nOgoKCSogdGVzdHN1aXRlL2xpYi9saWJnb21wLmV4cDogTG9hZCBzY2Fub2Zm bG9hZGlwYS5leHAgbGlicmFyeS4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtc2ltZC1j bG9uZS0xLmM6IE5ldy4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtc2ltZC1jbG9uZS0y LmM6IE5ldy4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtc2ltZC1jbG9uZS0zLmM6IE5l dy4KLS0tCiBnY2MvY29tbW9uLm9wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MjIgKysKIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjICAgICAgICAgICAgICAgICB8ICAy NCArLQogZ2NjL2NvbmZpZy9nY24vZ2NuLmNjICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEw ICstCiBnY2MvY29uZmlnL2kzODYvaTM4Ni5jYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjcg Ky0KIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMyAr LQogZ2NjL2RvYy90bS50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICst CiBnY2MvZmxhZy10eXBlcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKwog Z2NjL29tcC1zaW1kLWNsb25lLmNjICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzA5ICsrKysr KysrKysrKysrKystLQogZ2NjL29wdHMuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICsKIGdjYy90YXJnZXQuZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogLi4uL2crKy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTEuQyAgICAgICAg IHwgIDI1ICsrCiAuLi4vZysrLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMi5DICAgICAgICAg fCAgMjMgKysKIC4uLi9nY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS0xLmMgICAgICAgICB8 ICAyNSArKwogLi4uL2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTIuYyAgICAgICAgIHwg IDIyICsrCiAuLi4vZ2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMy5jICAgICAgICAgfCAg MjIgKysKIC4uLi9nY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS00LmMgICAgICAgICB8ICAy NiArKwogLi4uL2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTUuYyAgICAgICAgIHwgIDI4 ICsrCiAuLi4vZ2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtNi5jICAgICAgICAgfCAgMjcg KysKIC4uLi9nY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS03LmMgICAgICAgICB8ICAxNSAr CiAuLi4vZ2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtOC5jICAgICAgICAgfCAgMjUgKysK IGdjYy90ZXN0c3VpdGUvbGliL3NjYW5vZmZsb2FkaXBhLmV4cCAgICAgICAgICB8IDE0OCArKysr KysrKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYi9saWJnb21wLmV4cCAgICAgICAgICAgICB8ICAg MSArCiAuLi4vdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtc2ltZC1jbG9uZS0xLmMgfCAgNDMg KysrCiAuLi4vdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtc2ltZC1jbG9uZS0yLmMgfCAgMzkg KysrCiAuLi4vdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtc2ltZC1jbG9uZS0zLmMgfCAgNDAg KysrCiAyNSBmaWxlcyBjaGFuZ2VkLCA4ODcgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC90YXJnZXQtc2lt ZC1jbG9uZS0xLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9nb21w L3RhcmdldC1zaW1kLWNsb25lLTIuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Z2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS0yLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTMuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQt Y2xvbmUtNC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC90 YXJnZXQtc2ltZC1jbG9uZS01LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtNy5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS04LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2xpYi9zY2Fub2ZmbG9hZGlwYS5leHAKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LXNpbWQt Y2xvbmUtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5j L3RhcmdldC1zaW1kLWNsb25lLTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdvbXAvdGVzdHN1 aXRlL2xpYmdvbXAuYy90YXJnZXQtc2ltZC1jbG9uZS0zLmMKCmRpZmYgLS1naXQgYS9nY2MvY29t bW9uLm9wdCBiL2djYy9jb21tb24ub3B0CmluZGV4IDI2ZTlkMWNjNGU3Li5jNDU4YjcxNjgwYyAx MDA2NDQKLS0tIGEvZ2NjL2NvbW1vbi5vcHQKKysrIGIvZ2NjL2NvbW1vbi5vcHQKQEAgLTIyMTgs NiArMjIxOCwyOCBAQCBmb21pdC1mcmFtZS1wb2ludGVyCiBDb21tb24gVmFyKGZsYWdfb21pdF9m cmFtZV9wb2ludGVyKSBPcHRpbWl6YXRpb24KIFdoZW4gcG9zc2libGUgZG8gbm90IGdlbmVyYXRl IHN0YWNrIGZyYW1lcy4KIAorZm9wZW5tcC10YXJnZXQtc2ltZC1jbG9uZQorQ29tbW9uIEFsaWFz KGZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmU9LGFueSxub25lKQorCitmb3Blbm1wLXRhcmdldC1z aW1kLWNsb25lPQorQ29tbW9uIEpvaW5lZCBSZWplY3ROZWdhdGl2ZSBFbnVtKHRhcmdldF9zaW1k X2Nsb25lX2RldmljZSkgVmFyKGZsYWdfb3Blbm1wX3RhcmdldF9zaW1kX2Nsb25lKSBJbml0KE9N UF9UQVJHRVRfU0lNRF9DTE9ORV9OT05FKSBPcHRpbWl6YXRpb24KK0dlbmVyYXRlIFNJTUQgY2xv bmVzIGZvciBmdW5jdGlvbnMgd2l0aCB0aGUgT3Blbk1QIGRlY2xhcmUgdGFyZ2V0IGRpcmVjdGl2 ZS4KKworRW51bQorTmFtZSh0YXJnZXRfc2ltZF9jbG9uZV9kZXZpY2UpIFR5cGUoaW50KQorCitF bnVtVmFsdWUKK0VudW0odGFyZ2V0X3NpbWRfY2xvbmVfZGV2aWNlKSBTdHJpbmcobm9uZSkgVmFs dWUoT01QX1RBUkdFVF9TSU1EX0NMT05FX05PTkUpCisKK0VudW1WYWx1ZQorRW51bSh0YXJnZXRf c2ltZF9jbG9uZV9kZXZpY2UpIFN0cmluZyhob3N0KSBWYWx1ZShPTVBfVEFSR0VUX1NJTURfQ0xP TkVfSE9TVCkKKworRW51bVZhbHVlCitFbnVtKHRhcmdldF9zaW1kX2Nsb25lX2RldmljZSkgU3Ry aW5nKG5vaG9zdCkgVmFsdWUoT01QX1RBUkdFVF9TSU1EX0NMT05FX05PSE9TVCkKKworRW51bVZh bHVlCitFbnVtKHRhcmdldF9zaW1kX2Nsb25lX2RldmljZSkgU3RyaW5nKGFueSkgVmFsdWUoT01Q X1RBUkdFVF9TSU1EX0NMT05FX0FOWSkKKwogZm9wdC1pbmZvCiBDb21tb24gVmFyKGZsYWdfb3B0 X2luZm8pIE9wdGltaXphdGlvbgogRW5hYmxlIGFsbCBvcHRpbWl6YXRpb24gaW5mbyBkdW1wcyBv biBzdGRlcnIuCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYyBiL2dj Yy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjCmluZGV4IGM5MWRmNmY1MDA2Li41OGYzMTgzNWZl NyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MKKysrIGIvZ2NjL2Nv bmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MKQEAgLTI2ODMyLDcgKzI2ODMyLDggQEAgY3VycmVudGx5 X3N1cHBvcnRlZF9zaW1kX3R5cGUgKHRyZWUgdCwgdHJlZSBiKQogc3RhdGljIGludAogYWFyY2g2 NF9zaW1kX2Nsb25lX2NvbXB1dGVfdmVjc2l6ZV9hbmRfc2ltZGxlbiAoc3RydWN0IGNncmFwaF9u b2RlICpub2RlLAogCQkJCQlzdHJ1Y3QgY2dyYXBoX3NpbWRfY2xvbmUgKmNsb25laSwKLQkJCQkJ dHJlZSBiYXNlX3R5cGUsIGludCBudW0pCisJCQkJCXRyZWUgYmFzZV90eXBlLCBpbnQgbnVtLAor CQkJCQlib29sIGV4cGxpY2l0X3ApCiB7CiAgIHRyZWUgdCwgcmV0X3R5cGU7CiAgIHVuc2lnbmVk IGludCBlbHRfYml0cywgY291bnQ7CkBAIC0yNjg1MCw4ICsyNjg1MSw5IEBAIGFhcmNoNjRfc2lt ZF9jbG9uZV9jb21wdXRlX3ZlY3NpemVfYW5kX3NpbWRsZW4gKHN0cnVjdCBjZ3JhcGhfbm9kZSAq bm9kZSwKIAkgIHx8IGNvbnN0X3NpbWRsZW4gPiAxMDI0CiAJICB8fCAoY29uc3Rfc2ltZGxlbiAm IChjb25zdF9zaW1kbGVuIC0gMSkpICE9IDApKQogICAgIHsKLSAgICAgIHdhcm5pbmdfYXQgKERF Q0xfU09VUkNFX0xPQ0FUSU9OIChub2RlLT5kZWNsKSwgMCwKLQkJICAidW5zdXBwb3J0ZWQgc2lt ZGxlbiAld2QiLCBjb25zdF9zaW1kbGVuKTsKKyAgICAgIGlmIChleHBsaWNpdF9wKQorCXdhcm5p bmdfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChub2RlLT5kZWNsKSwgMCwKKwkJICAgICJ1bnN1 cHBvcnRlZCBzaW1kbGVuICV3ZCIsIGNvbnN0X3NpbWRsZW4pOwogICAgICAgcmV0dXJuIDA7CiAg ICAgfQogCkBAIC0yNjg1OSw3ICsyNjg2MSw5IEBAIGFhcmNoNjRfc2ltZF9jbG9uZV9jb21wdXRl X3ZlY3NpemVfYW5kX3NpbWRsZW4gKHN0cnVjdCBjZ3JhcGhfbm9kZSAqbm9kZSwKICAgaWYgKFRS RUVfQ09ERSAocmV0X3R5cGUpICE9IFZPSURfVFlQRQogICAgICAgJiYgIWN1cnJlbnRseV9zdXBw b3J0ZWRfc2ltZF90eXBlIChyZXRfdHlwZSwgYmFzZV90eXBlKSkKICAgICB7Ci0gICAgICBpZiAo VFlQRV9TSVpFIChyZXRfdHlwZSkgIT0gVFlQRV9TSVpFIChiYXNlX3R5cGUpKQorICAgICAgaWYg KCFleHBsaWNpdF9wKQorCTsKKyAgICAgIGVsc2UgaWYgKFRZUEVfU0laRSAocmV0X3R5cGUpICE9 IFRZUEVfU0laRSAoYmFzZV90eXBlKSkKIAl3YXJuaW5nX2F0IChERUNMX1NPVVJDRV9MT0NBVElP TiAobm9kZS0+ZGVjbCksIDAsCiAJCSAgICAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0 IG1peGVkIHNpemUgdHlwZXMgIgogCQkgICAgImZvciAlPHNpbWQlPiBmdW5jdGlvbnMiKTsKQEAg LTI2ODg2LDcgKzI2ODkwLDkgQEAgYWFyY2g2NF9zaW1kX2Nsb25lX2NvbXB1dGVfdmVjc2l6ZV9h bmRfc2ltZGxlbiAoc3RydWN0IGNncmFwaF9ub2RlICpub2RlLAogICAgICAgaWYgKGNsb25laS0+ YXJnc1tpXS5hcmdfdHlwZSAhPSBTSU1EX0NMT05FX0FSR19UWVBFX1VOSUZPUk0KIAkgICYmICFj dXJyZW50bHlfc3VwcG9ydGVkX3NpbWRfdHlwZSAoYXJnX3R5cGUsIGJhc2VfdHlwZSkpCiAJewot CSAgaWYgKFRZUEVfU0laRSAoYXJnX3R5cGUpICE9IFRZUEVfU0laRSAoYmFzZV90eXBlKSkKKwkg IGlmICghZXhwbGljaXRfcCkKKwkgICAgOworCSAgZWxzZSBpZiAoVFlQRV9TSVpFIChhcmdfdHlw ZSkgIT0gVFlQRV9TSVpFIChiYXNlX3R5cGUpKQogCSAgICB3YXJuaW5nX2F0IChERUNMX1NPVVJD RV9MT0NBVElPTiAobm9kZS0+ZGVjbCksIDAsCiAJCQkiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBz dXBwb3J0IG1peGVkIHNpemUgdHlwZXMgIgogCQkJImZvciAlPHNpbWQlPiBmdW5jdGlvbnMiKTsK QEAgLTI2OTE2LDkgKzI2OTIyLDExIEBAIGFhcmNoNjRfc2ltZF9jbG9uZV9jb21wdXRlX3ZlY3Np emVfYW5kX3NpbWRsZW4gKHN0cnVjdCBjZ3JhcGhfbm9kZSAqbm9kZSwKICAgICAgIGlmIChjbG9u ZWktPnNpbWRsZW4uaXNfY29uc3RhbnQgKCZjb25zdF9zaW1kbGVuKQogCSAgJiYgbWF5YmVfbmUg KHZlY19iaXRzLCA2NFUpICYmIG1heWJlX25lICh2ZWNfYml0cywgMTI4VSkpCiAJewotCSAgd2Fy bmluZ19hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKG5vZGUtPmRlY2wpLCAwLAotCQkgICAgICAi R0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IHNpbWRsZW4gJXdkIGZvciB0eXBlICVxVCIs Ci0JCSAgICAgIGNvbnN0X3NpbWRsZW4sIGJhc2VfdHlwZSk7CisJICBpZiAoZXhwbGljaXRfcCkK KwkgICAgd2FybmluZ19hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKG5vZGUtPmRlY2wpLCAwLAor CQkJIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBzaW1kbGVuICV3ZCBmb3IgIgorCQkJ InR5cGUgJXFUIiwKKwkJCWNvbnN0X3NpbWRsZW4sIGJhc2VfdHlwZSk7CiAJICByZXR1cm4gMDsK IAl9CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9nY24vZ2NuLmNjIGIvZ2NjL2NvbmZp Zy9nY24vZ2NuLmNjCmluZGV4IDVlNmYzYjhiNzRiLi40YjllZWVlYWY4NCAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9nY24vZ2NuLmNjCisrKyBiL2djYy9jb25maWcvZ2NuL2djbi5jYwpAQCAtNTA2 MSw3ICs1MDYxLDggQEAgc3RhdGljIGludAogZ2NuX3NpbWRfY2xvbmVfY29tcHV0ZV92ZWNzaXpl X2FuZF9zaW1kbGVuIChzdHJ1Y3QgY2dyYXBoX25vZGUgKkFSR19VTlVTRUQgKG5vZGUpLAogCQkJ CQkgICAgc3RydWN0IGNncmFwaF9zaW1kX2Nsb25lICpjbG9uZWksCiAJCQkJCSAgICB0cmVlIEFS R19VTlVTRUQgKGJhc2VfdHlwZSksCi0JCQkJCSAgICBpbnQgQVJHX1VOVVNFRCAobnVtKSkKKwkJ CQkJICAgIGludCBBUkdfVU5VU0VEIChudW0pLAorCQkJCQkgICAgYm9vbCBleHBsaWNpdF9wKQog ewogICBpZiAoa25vd25fZXEgKGNsb25laS0+c2ltZGxlbiwgMFUpKQogICAgIGNsb25laS0+c2lt ZGxlbiA9IDY0OwpAQCAtNTA2OSw5ICs1MDcwLDEwIEBAIGdjbl9zaW1kX2Nsb25lX2NvbXB1dGVf dmVjc2l6ZV9hbmRfc2ltZGxlbiAoc3RydWN0IGNncmFwaF9ub2RlICpBUkdfVU5VU0VEIChub2Rl CiAgICAgewogICAgICAgLyogTm90ZSB0aGF0IHg4NiBoYXMgYSBzaW1pbGFyIG1lc3NhZ2UgdGhh dCBpcyBsaWtlbHkgdG8gdHJpZ2dlciBvbgogCSBzaXplcyB0aGF0IGFyZSBPSyBmb3IgZ2NuOyB0 aGUgdXNlciBjYW4ndCB3aW4uICAqLwotICAgICAgd2FybmluZ19hdCAoREVDTF9TT1VSQ0VfTE9D QVRJT04gKG5vZGUtPmRlY2wpLCAwLAotCQkgICJ1bnN1cHBvcnRlZCBzaW1kbGVuICV3ZCAoYW1k Z2NuKSIsCi0JCSAgY2xvbmVpLT5zaW1kbGVuLnRvX2NvbnN0YW50ICgpKTsKKyAgICAgIGlmIChl eHBsaWNpdF9wKQorCXdhcm5pbmdfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChub2RlLT5kZWNs KSwgMCwKKwkJICAgICJ1bnN1cHBvcnRlZCBzaW1kbGVuICV3ZCAoYW1kZ2NuKSIsCisJCSAgICBj bG9uZWktPnNpbWRsZW4udG9fY29uc3RhbnQgKCkpOwogICAgICAgcmV0dXJuIDA7CiAgICAgfQog CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jYyBiL2djYy9jb25maWcvaTM4Ni9p Mzg2LmNjCmluZGV4IDI5MmIzMmM1ZTk5Li5hYmQxZDAwODc3NiAxMDA2NDQKLS0tIGEvZ2NjL2Nv bmZpZy9pMzg2L2kzODYuY2MKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuY2MKQEAgLTIzNjMz LDcgKzIzNjMzLDggQEAgaXg4Nl9tZW1tb2RlbF9jaGVjayAodW5zaWduZWQgSE9TVF9XSURFX0lO VCB2YWwpCiBzdGF0aWMgaW50CiBpeDg2X3NpbWRfY2xvbmVfY29tcHV0ZV92ZWNzaXplX2FuZF9z aW1kbGVuIChzdHJ1Y3QgY2dyYXBoX25vZGUgKm5vZGUsCiAJCQkJCSAgICAgc3RydWN0IGNncmFw aF9zaW1kX2Nsb25lICpjbG9uZWksCi0JCQkJCSAgICAgdHJlZSBiYXNlX3R5cGUsIGludCBudW0p CisJCQkJCSAgICAgdHJlZSBiYXNlX3R5cGUsIGludCBudW0sCisJCQkJCSAgICAgYm9vbCBleHBs aWNpdF9wKQogewogICBpbnQgcmV0ID0gMTsKIApAQCAtMjM2NDIsOCArMjM2NDMsOSBAQCBpeDg2 X3NpbWRfY2xvbmVfY29tcHV0ZV92ZWNzaXplX2FuZF9zaW1kbGVuIChzdHJ1Y3QgY2dyYXBoX25v ZGUgKm5vZGUsCiAJICB8fCBjbG9uZWktPnNpbWRsZW4gPiAxMDI0CiAJICB8fCAoY2xvbmVpLT5z aW1kbGVuICYgKGNsb25laS0+c2ltZGxlbiAtIDEpKSAhPSAwKSkKICAgICB7Ci0gICAgICB3YXJu aW5nX2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAobm9kZS0+ZGVjbCksIDAsCi0JCSAgInVuc3Vw cG9ydGVkIHNpbWRsZW4gJXdkIiwgY2xvbmVpLT5zaW1kbGVuLnRvX2NvbnN0YW50ICgpKTsKKyAg ICAgIGlmIChleHBsaWNpdF9wKQorCXdhcm5pbmdfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChu b2RlLT5kZWNsKSwgMCwKKwkJICAgICJ1bnN1cHBvcnRlZCBzaW1kbGVuICV3ZCIsIGNsb25laS0+ c2ltZGxlbi50b19jb25zdGFudCAoKSk7CiAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTIz NjYzLDggKzIzNjY1LDkgQEAgaXg4Nl9zaW1kX2Nsb25lX2NvbXB1dGVfdmVjc2l6ZV9hbmRfc2lt ZGxlbiAoc3RydWN0IGNncmFwaF9ub2RlICpub2RlLAogCSAgYnJlYWs7CiAJLyogRkFMTFRIUlUg Ki8KICAgICAgIGRlZmF1bHQ6Ci0Jd2FybmluZ19hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKG5v ZGUtPmRlY2wpLCAwLAotCQkgICAgInVuc3VwcG9ydGVkIHJldHVybiB0eXBlICVxVCBmb3Igc2lt ZCIsIHJldF90eXBlKTsKKwlpZiAoZXhwbGljaXRfcCkKKwkgIHdhcm5pbmdfYXQgKERFQ0xfU09V UkNFX0xPQ0FUSU9OIChub2RlLT5kZWNsKSwgMCwKKwkJICAgICAgInVuc3VwcG9ydGVkIHJldHVy biB0eXBlICVxVCBmb3Igc2ltZCIsIHJldF90eXBlKTsKIAlyZXR1cm4gMDsKICAgICAgIH0KIApA QCAtMjM2OTMsMTMgKzIzNjk2LDE0IEBAIGl4ODZfc2ltZF9jbG9uZV9jb21wdXRlX3ZlY3NpemVf YW5kX3NpbWRsZW4gKHN0cnVjdCBjZ3JhcGhfbm9kZSAqbm9kZSwKIAlkZWZhdWx0OgogCSAgaWYg KGNsb25laS0+YXJnc1tpXS5hcmdfdHlwZSA9PSBTSU1EX0NMT05FX0FSR19UWVBFX1VOSUZPUk0p CiAJICAgIGJyZWFrOwotCSAgd2FybmluZ19hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKG5vZGUt PmRlY2wpLCAwLAotCQkgICAgICAidW5zdXBwb3J0ZWQgYXJndW1lbnQgdHlwZSAlcVQgZm9yIHNp bWQiLCBhcmdfdHlwZSk7CisJICBpZiAoZXhwbGljaXRfcCkKKwkgICAgd2FybmluZ19hdCAoREVD TF9TT1VSQ0VfTE9DQVRJT04gKG5vZGUtPmRlY2wpLCAwLAorCQkJInVuc3VwcG9ydGVkIGFyZ3Vt ZW50IHR5cGUgJXFUIGZvciBzaW1kIiwgYXJnX3R5cGUpOwogCSAgcmV0dXJuIDA7CiAJfQogICAg IH0KIAotICBpZiAoIVRSRUVfUFVCTElDIChub2RlLT5kZWNsKSkKKyAgaWYgKCFUUkVFX1BVQkxJ QyAobm9kZS0+ZGVjbCkgfHwgIWV4cGxpY2l0X3ApCiAgICAgewogICAgICAgLyogSWYgdGhlIGZ1 bmN0aW9uIGlzbid0IGV4cG9ydGVkLCB3ZSBjYW4gcGljayB1cCBqdXN0IG9uZSBJU0EKIAkgZm9y IHRoZSBjbG9uZXMuICAqLwpAQCAtMjM3NzAsOSArMjM3NzQsMTAgQEAgaXg4Nl9zaW1kX2Nsb25l X2NvbXB1dGVfdmVjc2l6ZV9hbmRfc2ltZGxlbiAoc3RydWN0IGNncmFwaF9ub2RlICpub2RlLAog CWNudCAvPSBjbG9uZWktPnZlY3NpemVfZmxvYXQ7CiAgICAgICBpZiAoY250ID4gKFRBUkdFVF82 NEJJVCA/IDE2IDogOCkpCiAJewotCSAgd2FybmluZ19hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04g KG5vZGUtPmRlY2wpLCAwLAotCQkgICAgICAidW5zdXBwb3J0ZWQgc2ltZGxlbiAld2QiLAotCQkg ICAgICBjbG9uZWktPnNpbWRsZW4udG9fY29uc3RhbnQgKCkpOworCSAgaWYgKGV4cGxpY2l0X3Ap CisJICAgIHdhcm5pbmdfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChub2RlLT5kZWNsKSwgMCwK KwkJCSJ1bnN1cHBvcnRlZCBzaW1kbGVuICV3ZCIsCisJCQljbG9uZWktPnNpbWRsZW4udG9fY29u c3RhbnQgKCkpOwogCSAgcmV0dXJuIDA7CiAJfQogICAgICAgfQpkaWZmIC0tZ2l0IGEvZ2NjL2Rv Yy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKaW5kZXggZGMyZGE0NjRlYmIuLjdj OGE3OWVjNjM2IDEwMDY0NAotLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKyBiL2djYy9kb2Mv aW52b2tlLnRleGkKQEAgLTIwNCw3ICsyMDQsNyBAQCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25z LgogLWZsYXgtdmVjdG9yLWNvbnZlcnNpb25zICAtZm1zLWV4dGVuc2lvbnMgQGdvbAogLWZvZmZs b2FkPUB2YXJ7YXJnfSAgLWZvZmZsb2FkLW9wdGlvbnM9QHZhcnthcmd9IEBnb2wKIC1mb3BlbmFj YyAgLWZvcGVuYWNjLWRpbT1AdmFye2dlb219IEBnb2wKLS1mb3Blbm1wICAtZm9wZW5tcC1zaW1k IEBnb2wKKy1mb3Blbm1wICAtZm9wZW5tcC1zaW1kICAtZm9wZW5tcC10YXJnZXQtc2ltZC1jbG9u ZUBye1t9PUB2YXJ7ZGV2aWNlLXR5cGV9QHJ7XX0gQGdvbAogLWZwZXJtaXR0ZWQtZmx0LWV2YWwt bWV0aG9kcz1AdmFye3N0YW5kYXJkfSBAZ29sCiAtZnBsYW45LWV4dGVuc2lvbnMgIC1mc2lnbmVk LWJpdGZpZWxkcyAgLWZ1bnNpZ25lZC1iaXRmaWVsZHMgQGdvbAogLWZzaWduZWQtY2hhciAgLWZ1 bnNpZ25lZC1jaGFyIC1mc3RyaWN0LWZsZXgtYXJyYXlzWz1AdmFye259XSBAZ29sCkBAIC0yNzU4 LDYgKzI3NTgsMjcgQEAgRW5hYmxlIGhhbmRsaW5nIG9mIE9wZW5NUCdzIEBjb2Rle3NpbWR9LCBA Y29kZXtkZWNsYXJlIHNpbWR9LAogQGNvZGV7W1tvbXA6OmRpcmVjdGl2ZSguLi4pXV19IGFuZCBA Y29kZXtbW29tcDo6c2VxdWVuY2UoLi4uKV1dfSBpbiBDKysKIGFuZCBAY29kZXshJG9tcH0gaW4g Rm9ydHJhbi4gIE90aGVyIE9wZW5NUCBkaXJlY3RpdmVzIGFyZSBpZ25vcmVkLgogCitAaXRlbSAt Zm9wZW5tcC10YXJnZXQtc2ltZC1jbG9uZQorQGl0ZW0gLWZvcGVubXAtdGFyZ2V0LXNpbWQtY2xv bmU9QHZhcntkZXZpY2UtdHlwZX0KK0BvcGluZGV4IGZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmUK K0BjaW5kZXggT3Blbk1QIHRhcmdldCBTSU1EIGNsb25lCitJbiBhZGRpdGlvbiB0byBnZW5lcmF0 aW5nIFNJTUQgY2xvbmVzIGZvciBmdW5jdGlvbnMgbWFya2VkIHdpdGggdGhlCitAY29kZXtkZWNs YXJlIHNpbWR9IGRpcmVjdGl2ZSwgR0NDIGFsc28gZ2VuZXJhdGVzIGNsb25lcworZm9yIGZ1bmN0 aW9ucyBtYXJrZWQgd2l0aCB0aGUgT3Blbk1QIEBjb2Rle2RlY2xhcmUgdGFyZ2V0fSBkaXJlY3Rp dmUKK3RoYXQgYXJlIHN1aXRhYmxlIGZvciB2ZWN0b3JpemF0aW9uIHdoZW4gdGhpcyBvcHRpb24g aXMgaW4gZWZmZWN0LiAgVGhlCitAdmFye2RldmljZS10eXBlfSBtYXkgYmUgb25lIG9mIEBjb2Rl e25vbmV9LCBAY29kZXtob3N0fSwgQGNvZGV7bm9ob3N0fSwKK2FuZCBAY29kZXthbnl9LCB3aGlj aCBjb3JyZXNwb25kIHRvIGtleXdvcmRzIGZvciB0aGUgQGNvZGV7ZGV2aWNlX3R5cGV9CitjbGF1 c2Ugb2YgdGhlIEBjb2Rle2RlY2xhcmUgdGFyZ2V0fSBkaXJlY3RpdmU7IGNsb25lcyBhcmUgZ2Vu ZXJhdGVkIGZvcgordGhlIGludGVyc2VjdGlvbiBvZiBkZXZpY2VzIHNwZWNpZmllZC4KK0BvcHRp b257LWZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmV9IGlzIGVxdWl2YWxlbnQgdG8KK0BvcHRpb257 LWZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmU9YW55fSBhbmQKK0BvcHRpb257LWZuby1vcGVubXAt dGFyZ2V0LXNpbWQtY2xvbmV9IGlzIGVxdWl2YWxlbnQgdG8KK0BvcHRpb257LWZvcGVubXAtdGFy Z2V0LXNpbWQtY2xvbmU9bm9uZX0uCisKK0F0IEBvcHRpb257LU8yfSBhbmQgaGlnaGVyIChidXQg bm90IEBvcHRpb257LU9zfSBvciBAb3B0aW9uey1PZ30pIHRoaXMKK29wdGltaXphdGlvbiBkZWZh dWx0cyB0byBAb3B0aW9uey1mb3Blbm1wLXRhcmdldC1zaW1kLWNsb25lPW5vaG9zdH07IG90aGVy d2lzZQoraXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKwogQGl0ZW0gLWZwZXJtaXR0ZWQtZmx0 LWV2YWwtbWV0aG9kcz1AdmFye3N0eWxlfQogQG9waW5kZXggZnBlcm1pdHRlZC1mbHQtZXZhbC1t ZXRob2RzCiBAb3BpbmRleCBmcGVybWl0dGVkLWZsdC1ldmFsLW1ldGhvZHM9YzExCmRpZmYgLS1n aXQgYS9nY2MvZG9jL3RtLnRleGkgYi9nY2MvZG9jL3RtLnRleGkKaW5kZXggYWY3N2QxNjAzMGMu LjhmZTQ5YzJiYTNkIDEwMDY0NAotLS0gYS9nY2MvZG9jL3RtLnRleGkKKysrIGIvZ2NjL2RvYy90 bS50ZXhpCkBAIC02MjkwLDcgKzYyOTAsNyBAQCBUaGUgZGVmYXVsdCBpcyBAY29kZXtOVUxMX1RS RUV9IHdoaWNoIG1lYW5zIHRvIG5vdCB2ZWN0b3JpemUgc2NhdHRlcgogc3RvcmVzLgogQGVuZCBk ZWZ0eXBlZm4KIAotQGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IGludCBUQVJHRVRfU0lNRF9DTE9O RV9DT01QVVRFX1ZFQ1NJWkVfQU5EX1NJTURMRU4gKHN0cnVjdCBjZ3JhcGhfbm9kZSAqQHZhcnt9 LCBzdHJ1Y3QgY2dyYXBoX3NpbWRfY2xvbmUgKkB2YXJ7fSwgQHZhcnt0cmVlfSwgQHZhcntpbnR9 KQorQGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IGludCBUQVJHRVRfU0lNRF9DTE9ORV9DT01QVVRF X1ZFQ1NJWkVfQU5EX1NJTURMRU4gKHN0cnVjdCBjZ3JhcGhfbm9kZSAqQHZhcnt9LCBzdHJ1Y3Qg Y2dyYXBoX3NpbWRfY2xvbmUgKkB2YXJ7fSwgQHZhcnt0cmVlfSwgQHZhcntpbnR9LCBAdmFye2Jv b2x9KQogVGhpcyBob29rIHNob3VsZCBzZXQgQHZhcnt2ZWNzaXplX21hbmdsZX0sIEB2YXJ7dmVj c2l6ZV9pbnR9LCBAdmFye3ZlY3NpemVfZmxvYXR9CiBmaWVsZHMgaW4gQHZhcntzaW1kX2Nsb25l fSBzdHJ1Y3R1cmUgcG9pbnRlZCBieSBAdmFye2Nsb25lX2luZm99IGFyZ3VtZW50IGFuZCBhbHNv CiBAdmFye3NpbWRsZW59IGZpZWxkIGlmIGl0IHdhcyBwcmV2aW91c2x5IDAuCmRpZmYgLS1naXQg YS9nY2MvZmxhZy10eXBlcy5oIGIvZ2NjL2ZsYWctdHlwZXMuaAppbmRleCBkMmU3NTEwNjBmZi4u NjBkZmYwYTM4ZTkgMTAwNjQ0Ci0tLSBhL2djYy9mbGFnLXR5cGVzLmgKKysrIGIvZ2NjL2ZsYWct dHlwZXMuaApAQCAtNDk0LDYgKzQ5NCwxNSBAQCBlbnVtIG9wZW5hY2NfcHJpdmF0aXphdGlvbgog ICBPUEVOQUNDX1BSSVZBVElaQVRJT05fTk9JU1kKIH07CiAKKy8qIFRhcmdldHMgZm9yIC1mb3Bl bm1wLXRhcmdldC1zaW1kLWNsb25lLiAgKi8KK2VudW0gb21wX3RhcmdldF9zaW1kX2Nsb25lX2Rl dmljZV9raW5kCit7CisgIE9NUF9UQVJHRVRfU0lNRF9DTE9ORV9OT05FID0gMCwKKyAgT01QX1RB UkdFVF9TSU1EX0NMT05FX0hPU1QgPSAxLAorICBPTVBfVEFSR0VUX1NJTURfQ0xPTkVfTk9IT1NU ID0gMiwKKyAgT01QX1RBUkdFVF9TSU1EX0NMT05FX0FOWSA9IDMKK307CisKICNlbmRpZgogCiAj ZW5kaWYgLyogISBHQ0NfRkxBR19UWVBFU19IICovCmRpZmYgLS1naXQgYS9nY2Mvb21wLXNpbWQt Y2xvbmUuY2MgYi9nY2Mvb21wLXNpbWQtY2xvbmUuY2MKaW5kZXggMzRjYmVlNWFmY2QuLjIxZDY5 YWE4NzQ3IDEwMDY0NAotLS0gYS9nY2Mvb21wLXNpbWQtY2xvbmUuY2MKKysrIGIvZ2NjL29tcC1z aW1kLWNsb25lLmNjCkBAIC01MSw2ICs1MSwyMTAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUg ZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJzdHJpbmdwb29sLmgiCiAjaW5j bHVkZSAiYXR0cmlicy5oIgogI2luY2x1ZGUgIm9tcC1zaW1kLWNsb25lLmgiCisjaW5jbHVkZSAi b21wLWxvdy5oIgorI2luY2x1ZGUgIm9tcC1nZW5lcmFsLmgiCisKKy8qIFByaW50IGRlYnVnIGlu Zm8gZm9yIG9rX2Zvcl9hdXRvX3NpbWRfY2xvbmUgdG8gdGhlIGR1bXAgZmlsZSwgbG9nZ2luZwor ICAgZmFpbHVyZSByZWFzb24gRVhDVVNFIGZvciBmdW5jdGlvbiBERUNMLiAgQWx3YXlzIHJldHVy bnMgZmFsc2UuICAqLworc3RhdGljIGJvb2wKK2F1dG9fc2ltZF9mYWlsICh0cmVlIGRlY2wsIGNv bnN0IGNoYXIgKmV4Y3VzZSkKK3sKKyAgaWYgKGR1bXBfZmlsZSAmJiAoZHVtcF9mbGFncyAmIFRE Rl9ERVRBSUxTKSkKKyAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJcbk5vdCBhdXRvLWNsb25pbmcg JXMgYmVjYXVzZSAlc1xuIiwKKwkgICAgIElERU5USUZJRVJfUE9JTlRFUiAoREVDTF9BU1NFTUJM RVJfTkFNRSAoZGVjbCkpLAorCSAgICAgZXhjdXNlKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCisv KiBIZWxwZXIgZnVuY3Rpb24gZm9yIG9rX2Zvcl9hdXRvX3NpbWRfY2xvbmU7IHJldHVybiBmYWxz ZSBpZiB0aGUgc3RhdGVtZW50CisgICB2aW9sYXRlcyByZXN0cmljdGlvbnMgZm9yIGFuICJvbXAg ZGVjbGFyZSBzaW1kIiBmdW5jdGlvbi4gIFNwZWNpZmljYWxseSwKKyAgIHRoZSBmdW5jdGlvbiBt dXN0IG5vdAorICAgLSB0aHJvdyBvciBjYWxsIHNldGptcC9sb25nam1wCisgICAtIHdyaXRlIG1l bW9yeSB0aGF0IGNvdWxkIGFsaWFzIHBhcmFsbGVsIGNhbGxzCisgICAtIHJlYWQgdm9sYXRpbGUg bWVtb3J5CisgICAtIGluY2x1ZGUgb3Blbm1wIGRpcmVjdGl2ZXMgb3IgY2FsbHMKKyAgIC0gY2Fs bCBmdW5jdGlvbnMgdGhhdCBtaWdodCBkbyB0aG9zZSB0aGluZ3MgKi8KKworc3RhdGljIGJvb2wK K2F1dG9fc2ltZF9jaGVja19zdG10IChnaW1wbGUgKnN0bXQsIHRyZWUgb3V0ZXIpCit7CisgIHRy ZWUgZGVjbDsKKworICBzd2l0Y2ggKGdpbXBsZV9jb2RlIChzdG10KSkKKyAgICB7CisgICAgY2Fz ZSBHSU1QTEVfQ0FMTDoKKworICAgICAgLyogQ2FsbHMgdG8gZnVuY3Rpb25zIHRoYXQgYXJlIENP TlNUIG9yIFBVUkUgYXJlIG9rLCBldmVuIGlmIHRoZXkKKwkgYXJlIGludGVybmFsIGZ1bmN0aW9u cyB3aXRob3V0IGEgZGVjbC4gIFJlamVjdCBvdGhlciBpbnRlcm5hbAorCSBmdW5jdGlvbnMuICAq LworICAgICAgaWYgKGdpbXBsZV9jYWxsX2ZsYWdzIChzdG10KSAmIChFQ0ZfQ09OU1QgfCBFQ0Zf UFVSRSkpCisJYnJlYWs7CisgICAgICBpZiAoZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3RtdCkp CisJcmV0dXJuIGF1dG9fc2ltZF9mYWlsIChvdXRlciwKKwkJCSAgICAgICAiYm9keSBjb250YWlu cyBpbnRlcm5hbCBmdW5jdGlvbiBjYWxsIik7CisKKyAgICAgIGRlY2wgPSBnaW1wbGVfY2FsbF9m bmRlY2wgKHN0bXQpOworCisgICAgICAvKiBXZSBjYW4ndCBrbm93IHdoZXRoZXIgaW5kaXJlY3Qg Y2FsbHMgYXJlIHNhZmUuICAqLworICAgICAgaWYgKGRlY2wgPT0gTlVMTF9UUkVFKQorCXJldHVy biBhdXRvX3NpbWRfZmFpbCAob3V0ZXIsICJib2R5IGNvbnRhaW5zIGluZGlyZWN0IGNhbGwiKTsK KworICAgICAgLyogQ2FsbHMgdG8gZnVuY3Rpb25zIHRoYXQgYXJlIGFscmVhZHkgbWFya2VkICJv bXAgZGVjbGFyZSBzaW1kIiBhcmUKKwkgT0suICAqLworICAgICAgaWYgKGxvb2t1cF9hdHRyaWJ1 dGUgKCJvbXAgZGVjbGFyZSBzaW1kIiwgREVDTF9BVFRSSUJVVEVTIChkZWNsKSkpCisJYnJlYWs7 CisKKyAgICAgIC8qIExldCByZWN1cnNpdmUgY2FsbHMgdG8gdGhlIGN1cnJlbnQgZnVuY3Rpb24g dGhyb3VnaC4gICovCisgICAgICBpZiAoZGVjbCA9PSBvdXRlcikKKwlicmVhazsKKworICAgICAg LyogT3RoZXIgZnVuY3Rpb24gY2FsbHMgYXJlIG5vdCBwZXJtaXR0ZWQuICBUaGlzIGNvdmVycyBh bGwgY2FsbHMgdG8KKwkgdGhlIGxpYmdvbXAgQVBJIGFuZCBzZXRqbXAvbG9uZ2ptcCwgdG9vLCBh cyB3ZWxsIGFzIHRoaW5ncyBsaWtlCisJIF9fY3hhX3Rocm93XyByZWxhdGVkIHRvIGV4Y2VwdGlv biBoYW5kbGluZy4gICovCisgICAgICByZXR1cm4gYXV0b19zaW1kX2ZhaWwgKG91dGVyLCAiYm9k eSBjb250YWlucyB1bnNhZmUgZnVuY3Rpb24gY2FsbCIpOworCisgICAgICAvKiBSZWplY3QgRUgt cmVsYXRlZCBjb25zdHJ1Y3RzLiAgTW9zdCBvZiB0aGUgRUggZ2ltcGxlIGNvZGVzIGFyZQorCWFs cmVhZHkgbG93ZXJlZCBieSB0aGUgdGltZSB0aGlzIHBhc3MgcnVucyBkdXJpbmcgSVBBLgorCSBH SU1QTEVfRUhfRElTUEFUQ0ggYW5kIEdJTVBMRV9SRVNYIHJlbWFpbiBhbmQgYXJlIGxvd2VyZWQg YnkKKwkgcGFzc19sb3dlcl9laF9kaXNwYXRjaCBhbmQgcGFzc19sb3dlcl9yZXN4LCByZXNwZWN0 aXZlbHk7IHRob3NlCisJIHBhc3NlcyBydW4gbGF0ZXIuICAqLworICAgIGNhc2UgR0lNUExFX0VI X0RJU1BBVENIOgorICAgIGNhc2UgR0lNUExFX1JFU1g6CisgICAgICByZXR1cm4gYXV0b19zaW1k X2ZhaWwgKG91dGVyLCAiYm9keSBjb250YWlucyBFSCBjb25zdHJ1Y3RzIik7CisKKyAgICAgIC8q IEFzbXMgYXJlIG5vdCBwZXJtaXR0ZWQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHRoZXkgZG8u ICAqLworICAgIGNhc2UgR0lNUExFX0FTTToKKyAgICAgIHJldHVybiBhdXRvX3NpbWRfZmFpbCAo b3V0ZXIsICJib2R5IGNvbnRhaW5zIGlubGluZSBhc20iKTsKKworICAgIGRlZmF1bHQ6CisgICAg ICBicmVhazsKKyAgICB9CisKKyAgLyogTWVtb3J5IHdyaXRlcyBhcmUgbm90IHBlcm1pdHRlZC4K KyAgICAgRklYTUU6IHRoaXMgY291bGQgYmUgcmVsYXhlZCBhIGxpdHRsZSB0byBwZXJtaXQgd3Jp dGVzIHRvCisgICAgIGZ1bmN0aW9uLWxvY2FsIHZhcmlhYmxlcyB0aGF0IGNvdWxkIG5vdCBhbGlh cyBvdGhlciBpbnN0YW5jZXMKKyAgICAgb2YgdGhlIGZ1bmN0aW9uIHJ1bm5pbmcgaW4gcGFyYWxs ZWwuICAqLworICBpZiAoZ2ltcGxlX3N0b3JlX3AgKHN0bXQpKQorICAgIHJldHVybiBhdXRvX3Np bWRfZmFpbCAob3V0ZXIsICJib2R5IGluY2x1ZGVzIG1lbW9yeSB3cml0ZSIpOworCisgIC8qIFZv bGF0aWxlIHJlYWRzIGFyZSBub3QgcGVybWl0dGVkLiAgKi8KKyAgaWYgKGdpbXBsZV9oYXNfdm9s YXRpbGVfb3BzIChzdG10KSkKKyAgICByZXR1cm4gYXV0b19zaW1kX2ZhaWwgKG91dGVyLCAiYm9k eSBpbmNsdWRlcyB2b2xhdGlsZSBvcCIpOworCisgIC8qIE90aGVyd2lzZSBPSy4gICovCisgIHJl dHVybiB0cnVlOworfQorCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIG9rX2Zvcl9hdXRvX3NpbWRf Y2xvbmU6ICByZXR1cm4gdHJ1ZSBpZiB0eXBlIFQgaXMKKyAgIHBsYXVzaWJsZSBmb3IgYSBjbG9u ZWFibGUgZnVuY3Rpb24gYXJndW1lbnQgb3IgcmV0dXJuIHR5cGUuICAqLworc3RhdGljIGJvb2wK K3BsYXVzaWJsZV90eXBlX2Zvcl9zaW1kX2Nsb25lICh0cmVlIHQpCit7CisgIGlmIChUUkVFX0NP REUgKHQpID09IFZPSURfVFlQRSkKKyAgICByZXR1cm4gdHJ1ZTsKKyAgZWxzZSBpZiAoUkVDT1JE X09SX1VOSU9OX1RZUEVfUCAodCkgfHwgIWlzX2EgPHNjYWxhcl9tb2RlPiAoVFlQRV9NT0RFICh0 KSkpCisgICAgLyogU21hbGwgcmVjb3JkL3VuaW9uIHR5cGVzIG1heSBmaXQgaW50byBhIHNjYWxh ciBtb2RlLCBidXQgYXJlCisgICAgICAgc3RpbGwgbm90IHN1aXRhYmxlLiAgKi8KKyAgICByZXR1 cm4gZmFsc2U7CisgIGVsc2UgaWYgKFRZUEVfQVRPTUlDICh0KSkKKyAgICAvKiBBdG9taWMgdHlw ZXMgdHJpZ2dlciB3YXJuaW5ncyBpbiBzaW1kX2Nsb25lX2NsYXVzZXNfZXh0cmFjdC4gICovCisg ICAgcmV0dXJuIGZhbHNlOworICBlbHNlCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qIENoZWNr IGlmIHRoZSBmdW5jdGlvbiBOT0RFIGFwcGVhcnMgc3VpdGFibGUgZm9yIGF1dG8tYW5ub3RhdGlv bgorICAgd2l0aCAiZGVjbGFyZSBzaW1kIi4gICovCisKK3N0YXRpYyBib29sCitva19mb3JfYXV0 b19zaW1kX2Nsb25lIChzdHJ1Y3QgY2dyYXBoX25vZGUgKm5vZGUpCit7CisgIHRyZWUgZGVjbCA9 IG5vZGUtPmRlY2w7CisgIHRyZWUgdDsKKyAgYmFzaWNfYmxvY2sgYmI7CisKKyAgLyogTm90aGlu ZyB0byBkbyBpZiB0aGUgZnVuY3Rpb24gaXNuJ3QgYSBkZWZpbml0aW9uIG9yIGRvZXNuJ3QKKyAg ICAgaGF2ZSBhIGJvZHkuICAqLworICBpZiAoIW5vZGUtPmRlZmluaXRpb24gfHwgIW5vZGUtPmhh c19naW1wbGVfYm9keV9wICgpKQorICAgIHJldHVybiBhdXRvX3NpbWRfZmFpbCAoZGVjbCwgIm5v IGRlZmluaXRpb24gb3IgYm9keSIpOworCisgIC8qIE5vIHBvaW50IGluIHRyeWluZyB0byBnZW5l cmF0ZSBpbXBsaWNpdCBjbG9uZXMgaWYgdGhlIGZ1bmN0aW9uCisgICAgIGlzbid0IHVzZWQgaW4g dGhlIGNvbXBpbGF0aW9uIHVuaXQuICAqLworICBpZiAoIW5vZGUtPmNhbGxlcnMpCisgICAgcmV0 dXJuIGF1dG9fc2ltZF9mYWlsIChkZWNsLCAiZnVuY3Rpb24gaXMgbm90IHVzZWQiKTsKKworICAv KiBOb3RoaW5nIHRvIGRvIGlmIHRoZSBmdW5jdGlvbiBhbHJlYWR5IGhhcyB0aGUgIm9tcCBkZWNs YXJlIHNpbWQiCisgICAgIGF0dHJpYnV0ZSwgaXMgbWFya2VkIG5vY2xvbmUsIG9yIGlzIG5vdCAi b21wIGRlY2xhcmUgdGFyZ2V0Ii4gICovCisgIGlmIChsb29rdXBfYXR0cmlidXRlICgib21wIGRl Y2xhcmUgc2ltZCIsIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkpCisgICAgICB8fCBsb29rdXBfYXR0 cmlidXRlICgibm9jbG9uZSIsIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkpCisgICAgICB8fCAhbG9v a3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCIsIERFQ0xfQVRUUklCVVRFUyAoZGVj bCkpKQorICAgIHJldHVybiBhdXRvX3NpbWRfZmFpbCAoZGVjbCwgImluY29tcGF0aWJsZSBhdHRy aWJ1dGVzIik7CisKKyAgLyogQ2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gaXMgcmVzdHJpY3Rl ZCBob3N0L25vaG9zdCB2aWEgdGhlCisgICAgICJvbXAgZGVjbGFyZSB0YXJnZXQgZGV2aWNlX3R5 cGUiIGNsYXVzZSwgYW5kIHRoYXQgZG9lc24ndCBtYXRjaAorICAgICB3aGF0IHdlJ3JlIGNvbXBp bGluZyBmb3IuICBJbnRlcm5hbGx5LCB0aGVzZSB0cmFuc2xhdGUgaW50bworICAgICAib21wIGRl Y2xhcmUgdGFyZ2V0IFtub11ob3N0IiBhdHRyaWJ1dGVzIG9uIHRoZSBkZWNsOyAiYW55IgorICAg ICB0cmFuc2xhdGVzIGludG8gYm90aCBhdHRyaWJ1dGVzLCBidXQgdGhlIGRlZmF1bHQgKHdoaWNo IGlzIHN1cHBvc2VkCisgICAgIHRvIGJlIGVxdWl2YWxlbnQgdG8gImFueSIpIGlzIG5laXRoZXIu ICAqLworICB0cmVlIGhvc3QgPSBsb29rdXBfYXR0cmlidXRlICgib21wIGRlY2xhcmUgdGFyZ2V0 IGhvc3QiLAorCQkJCURFQ0xfQVRUUklCVVRFUyAoZGVjbCkpOworICB0cmVlIG5vaG9zdCA9IGxv b2t1cF9hdHRyaWJ1dGUgKCJvbXAgZGVjbGFyZSB0YXJnZXQgbm9ob3N0IiwKKwkJCQkgIERFQ0xf QVRUUklCVVRFUyAoZGVjbCkpOworI2lmZGVmIEFDQ0VMX0NPTVBJTEVSCisgIGlmIChob3N0ICYm ICFub2hvc3QpCisgICAgcmV0dXJuIGF1dG9fc2ltZF9mYWlsIChkZWNsLCAiZGV2aWNlIGRvZXNu J3QgbWF0Y2ggZm9yIGFjY2VsIGNvbXBpbGVyIik7CisjZWxzZQorICBpZiAobm9ob3N0ICYmICFo b3N0KQorICAgIHJldHVybiBhdXRvX3NpbWRfZmFpbCAoZGVjbCwgImRldmljZSBkb2Vzbid0IG1h dGNoIGZvciBob3N0IGNvbXBpbGVyIik7CisjZW5kaWYKKworICAvKiBCYWNrZW5kcyB3aWxsIGNo ZWNrIGZvciB2ZWN0b3JpemFibGUgYXJndW1lbnRzL3JldHVybiB0eXBlcyBpbiBhCisgICAgIHRh cmdldC1zcGVjaWZpYyB3YXksIGJ1dCB3ZSBjYW4gaW1tZWRpYXRlbHkgZmlsdGVyIG91dCBmdW5j dGlvbnMKKyAgICAgdGhhdCBoYXZlIGltcGxhdXNpYmxlIGFyZ3VtZW50L3JldHVybiB0eXBlcy4g ICovCisgIHQgPSBUUkVFX1RZUEUgKFRSRUVfVFlQRSAoZGVjbCkpOworICBpZiAoIXBsYXVzaWJs ZV90eXBlX2Zvcl9zaW1kX2Nsb25lICh0KSkKKyAgICByZXR1cm4gYXV0b19zaW1kX2ZhaWwgKGRl Y2wsICJyZXR1cm4gdHlwZSBmYWlscyBzbmlmZiB0ZXN0Iik7CisKKyAgaWYgKFRZUEVfQVJHX1RZ UEVTIChUUkVFX1RZUEUgKGRlY2wpKSkKKyAgICB7CisgICAgICBmb3IgKHRyZWUgdGVtcCA9IFRZ UEVfQVJHX1RZUEVTIChUUkVFX1RZUEUgKGRlY2wpKTsKKwkgICB0ZW1wOyB0ZW1wID0gVFJFRV9D SEFJTiAodGVtcCkpCisJeworCSAgdCA9IFRSRUVfVkFMVUUgKHRlbXApOworCSAgaWYgKCFwbGF1 c2libGVfdHlwZV9mb3Jfc2ltZF9jbG9uZSAodCkpCisJICAgIHJldHVybiBhdXRvX3NpbWRfZmFp bCAoZGVjbCwgImFyZ3VtZW50IHR5cGUgZmFpbHMgc25pZmYgdGVzdCIpOworCX0KKyAgICB9Cisg IGVsc2UgaWYgKERFQ0xfQVJHVU1FTlRTIChkZWNsKSkKKyAgICB7CisgICAgICBmb3IgKHRyZWUg dGVtcCA9IERFQ0xfQVJHVU1FTlRTIChkZWNsKTsgdGVtcDsgdGVtcCA9IERFQ0xfQ0hBSU4gKHRl bXApKQorCXsKKwkgIHQgPSBUUkVFX1RZUEUgKHRlbXApOworCSAgaWYgKCFwbGF1c2libGVfdHlw ZV9mb3Jfc2ltZF9jbG9uZSAodCkpCisJICAgIHJldHVybiBhdXRvX3NpbWRfZmFpbCAoZGVjbCwg ImFyZ3VtZW50IHR5cGUgZmFpbHMgc25pZmYgdGVzdCIpOworCX0KKyAgICB9CisgIGVsc2UKKyAg ICByZXR1cm4gYXV0b19zaW1kX2ZhaWwgKGRlY2wsICJmdW5jdGlvbiBoYXMgbm8gYXJndW1lbnRz Iik7CisKKyAgLyogU2NhbiB0aGUgZnVuY3Rpb24gYm9keSB0byBzZWUgaWYgaXQgaXMgc3VpdGFi bGUgZm9yIFNJTUQtaXphdGlvbi4gICovCisgIG5vZGUtPmdldF9ib2R5ICgpOworCisgIEZPUl9F QUNIX0JCX0ZOIChiYiwgREVDTF9TVFJVQ1RfRlVOQ1RJT04gKGRlY2wpKQorICAgIHsKKyAgICAg IGZvciAoZ2ltcGxlX3N0bXRfaXRlcmF0b3IgZ3NpID0gZ3NpX3N0YXJ0X2JiIChiYik7ICFnc2lf ZW5kX3AgKGdzaSk7CisJICAgZ3NpX25leHQgKCZnc2kpKQorCWlmICghYXV0b19zaW1kX2NoZWNr X3N0bXQgKGdzaV9zdG10IChnc2kpLCBkZWNsKSkKKwkgIHJldHVybiBmYWxzZTsKKyAgICB9CisK KyAgLyogQWxsIGlzIGdvb2QuICAqLworICBpZiAoZHVtcF9maWxlKQorICAgIGZwcmludGYgKGR1 bXBfZmlsZSwgIlxuTWFya2luZyAlcyBmb3IgYXV0by1jbG9uaW5nXG4iLAorCSAgICAgSURFTlRJ RklFUl9QT0lOVEVSIChERUNMX0FTU0VNQkxFUl9OQU1FIChkZWNsKSkpOworICByZXR1cm4gdHJ1 ZTsKK30KKwogCiAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB2ZWN0b3IgdHlw ZSBWRUNUWVBFLCB3aGljaCBpcyBhc3NvY2lhdGVkCiAgICB3aXRoIGEgU0lNRCBjbG9uZS4gIEF0 IHByZXNlbnQgdGhlc2UgYWx3YXlzIGhhdmUgYSBjb25zdGFudCBsZW5ndGguICAqLwpAQCAtNDMw LDEwICs2MzQsMTIgQEAgc2ltZF9jbG9uZV9tYW5nbGUgKHN0cnVjdCBjZ3JhcGhfbm9kZSAqbm9k ZSwKICAgcmV0dXJuIGdldF9pZGVudGlmaWVyIChzdHIpOwogfQogCi0vKiBDcmVhdGUgYSBzaW1k IGNsb25lIG9mIE9MRF9OT0RFIGFuZCByZXR1cm4gaXQuICAqLworLyogQ3JlYXRlIGEgc2ltZCBj bG9uZSBvZiBPTERfTk9ERSBhbmQgcmV0dXJuIGl0LiAgSWYgRk9SQ0VfTE9DQUwgaXMgdHJ1ZSwK KyAgIGNyZWF0ZSBpdCBhcyBhIGxvY2FsIHN5bWJvbCwgb3RoZXJ3aXNlIGNvcHkgdGhlIHN5bWJv bCBsaW5rYWdlIGFuZAorICAgdmlzaWJpbGl0eSBhdHRyaWJ1dGVzIGZyb20gT0xEX05PREUuICAq LwogCiBzdGF0aWMgc3RydWN0IGNncmFwaF9ub2RlICoKLXNpbWRfY2xvbmVfY3JlYXRlIChzdHJ1 Y3QgY2dyYXBoX25vZGUgKm9sZF9ub2RlKQorc2ltZF9jbG9uZV9jcmVhdGUgKHN0cnVjdCBjZ3Jh cGhfbm9kZSAqb2xkX25vZGUsIGJvb2wgZm9yY2VfbG9jYWwpCiB7CiAgIHN0cnVjdCBjZ3JhcGhf bm9kZSAqbmV3X25vZGU7CiAgIGlmIChvbGRfbm9kZS0+ZGVmaW5pdGlvbikKQEAgLTQ2MywyMyAr NjY5LDM4IEBAIHNpbWRfY2xvbmVfY3JlYXRlIChzdHJ1Y3QgY2dyYXBoX25vZGUgKm9sZF9ub2Rl KQogICAgIHJldHVybiBuZXdfbm9kZTsKIAogICBzZXRfZGVjbF9idWlsdF9pbl9mdW5jdGlvbiAo bmV3X25vZGUtPmRlY2wsIE5PVF9CVUlMVF9JTiwgMCk7Ci0gIFRSRUVfUFVCTElDIChuZXdfbm9k ZS0+ZGVjbCkgPSBUUkVFX1BVQkxJQyAob2xkX25vZGUtPmRlY2wpOwotICBERUNMX0NPTURBVCAo bmV3X25vZGUtPmRlY2wpID0gREVDTF9DT01EQVQgKG9sZF9ub2RlLT5kZWNsKTsKLSAgREVDTF9X RUFLIChuZXdfbm9kZS0+ZGVjbCkgPSBERUNMX1dFQUsgKG9sZF9ub2RlLT5kZWNsKTsKLSAgREVD TF9FWFRFUk5BTCAobmV3X25vZGUtPmRlY2wpID0gREVDTF9FWFRFUk5BTCAob2xkX25vZGUtPmRl Y2wpOwotICBERUNMX1ZJU0lCSUxJVFlfU1BFQ0lGSUVEIChuZXdfbm9kZS0+ZGVjbCkKLSAgICA9 IERFQ0xfVklTSUJJTElUWV9TUEVDSUZJRUQgKG9sZF9ub2RlLT5kZWNsKTsKLSAgREVDTF9WSVNJ QklMSVRZIChuZXdfbm9kZS0+ZGVjbCkgPSBERUNMX1ZJU0lCSUxJVFkgKG9sZF9ub2RlLT5kZWNs KTsKLSAgREVDTF9ETExJTVBPUlRfUCAobmV3X25vZGUtPmRlY2wpID0gREVDTF9ETExJTVBPUlRf UCAob2xkX25vZGUtPmRlY2wpOwotICBpZiAoREVDTF9PTkVfT05MWSAob2xkX25vZGUtPmRlY2wp KQotICAgIG1ha2VfZGVjbF9vbmVfb25seSAobmV3X25vZGUtPmRlY2wsIERFQ0xfQVNTRU1CTEVS X05BTUUgKG5ld19ub2RlLT5kZWNsKSk7Ci0KLSAgLyogVGhlIG1ldGhvZCBjZ3JhcGhfdmVyc2lv bl9jbG9uZV93aXRoX2JvZHkgKCkgd2lsbCBmb3JjZSB0aGUgbmV3Ci0gICAgIHN5bWJvbCBsb2Nh bC4gIFVuZG8gdGhpcywgYW5kIGluaGVyaXQgZXh0ZXJuYWwgdmlzaWJpbGl0eSBmcm9tCi0gICAg IHRoZSBvbGQgbm9kZS4gICovCi0gIG5ld19ub2RlLT5sb2NhbCA9IG9sZF9ub2RlLT5sb2NhbDsK LSAgbmV3X25vZGUtPmV4dGVybmFsbHlfdmlzaWJsZSA9IG9sZF9ub2RlLT5leHRlcm5hbGx5X3Zp c2libGU7Ci0gIG5ld19ub2RlLT5jYWxsc19kZWNsYXJlX3ZhcmlhbnRfYWx0ID0gb2xkX25vZGUt PmNhbGxzX2RlY2xhcmVfdmFyaWFudF9hbHQ7CisgIGlmIChmb3JjZV9sb2NhbCkKKyAgICB7Cisg ICAgICBUUkVFX1BVQkxJQyAobmV3X25vZGUtPmRlY2wpID0gMDsKKyAgICAgIERFQ0xfQ09NREFU IChuZXdfbm9kZS0+ZGVjbCkgPSAwOworICAgICAgREVDTF9XRUFLIChuZXdfbm9kZS0+ZGVjbCkg PSAwOworICAgICAgREVDTF9FWFRFUk5BTCAobmV3X25vZGUtPmRlY2wpID0gMDsKKyAgICAgIERF Q0xfVklTSUJJTElUWV9TUEVDSUZJRUQgKG5ld19ub2RlLT5kZWNsKSA9IDA7CisgICAgICBERUNM X1ZJU0lCSUxJVFkgKG5ld19ub2RlLT5kZWNsKSA9IFZJU0lCSUxJVFlfREVGQVVMVDsKKyAgICAg IERFQ0xfRExMSU1QT1JUX1AgKG5ld19ub2RlLT5kZWNsKSA9IDA7CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgVFJFRV9QVUJMSUMgKG5ld19ub2RlLT5kZWNsKSA9IFRSRUVfUFVCTElDIChv bGRfbm9kZS0+ZGVjbCk7CisgICAgICBERUNMX0NPTURBVCAobmV3X25vZGUtPmRlY2wpID0gREVD TF9DT01EQVQgKG9sZF9ub2RlLT5kZWNsKTsKKyAgICAgIERFQ0xfV0VBSyAobmV3X25vZGUtPmRl Y2wpID0gREVDTF9XRUFLIChvbGRfbm9kZS0+ZGVjbCk7CisgICAgICBERUNMX0VYVEVSTkFMIChu ZXdfbm9kZS0+ZGVjbCkgPSBERUNMX0VYVEVSTkFMIChvbGRfbm9kZS0+ZGVjbCk7CisgICAgICBE RUNMX1ZJU0lCSUxJVFlfU1BFQ0lGSUVEIChuZXdfbm9kZS0+ZGVjbCkKKwk9IERFQ0xfVklTSUJJ TElUWV9TUEVDSUZJRUQgKG9sZF9ub2RlLT5kZWNsKTsKKyAgICAgIERFQ0xfVklTSUJJTElUWSAo bmV3X25vZGUtPmRlY2wpID0gREVDTF9WSVNJQklMSVRZIChvbGRfbm9kZS0+ZGVjbCk7CisgICAg ICBERUNMX0RMTElNUE9SVF9QIChuZXdfbm9kZS0+ZGVjbCkgPSBERUNMX0RMTElNUE9SVF9QIChv bGRfbm9kZS0+ZGVjbCk7CisgICAgICBpZiAoREVDTF9PTkVfT05MWSAob2xkX25vZGUtPmRlY2wp KQorCW1ha2VfZGVjbF9vbmVfb25seSAobmV3X25vZGUtPmRlY2wsCisJCQkgICAgREVDTF9BU1NF TUJMRVJfTkFNRSAobmV3X25vZGUtPmRlY2wpKTsKKworICAgICAgLyogVGhlIG1ldGhvZCBjZ3Jh cGhfdmVyc2lvbl9jbG9uZV93aXRoX2JvZHkgKCkgd2lsbCBmb3JjZSB0aGUgbmV3CisJIHN5bWJv bCBsb2NhbC4gIFVuZG8gdGhpcywgYW5kIGluaGVyaXQgZXh0ZXJuYWwgdmlzaWJpbGl0eSBmcm9t CisJIHRoZSBvbGQgbm9kZS4gICovCisgICAgICBuZXdfbm9kZS0+bG9jYWwgPSBvbGRfbm9kZS0+ bG9jYWw7CisgICAgICBuZXdfbm9kZS0+ZXh0ZXJuYWxseV92aXNpYmxlID0gb2xkX25vZGUtPmV4 dGVybmFsbHlfdmlzaWJsZTsKKyAgICAgIG5ld19ub2RlLT5jYWxsc19kZWNsYXJlX3ZhcmlhbnRf YWx0CisJPSBvbGRfbm9kZS0+Y2FsbHNfZGVjbGFyZV92YXJpYW50X2FsdDsKKyAgICB9CiAKICAg cmV0dXJuIG5ld19ub2RlOwogfQpAQCAtMTY4MywxMyArMTkwNCw0MiBAQCBzaW1kX2Nsb25lX2Fk anVzdCAoc3RydWN0IGNncmFwaF9ub2RlICpub2RlKQogdm9pZAogZXhwYW5kX3NpbWRfY2xvbmVz IChzdHJ1Y3QgY2dyYXBoX25vZGUgKm5vZGUpCiB7Ci0gIHRyZWUgYXR0ciA9IGxvb2t1cF9hdHRy aWJ1dGUgKCJvbXAgZGVjbGFyZSBzaW1kIiwKLQkJCQlERUNMX0FUVFJJQlVURVMgKG5vZGUtPmRl Y2wpKTsKLSAgaWYgKGF0dHIgPT0gTlVMTF9UUkVFCi0gICAgICB8fCBub2RlLT5pbmxpbmVkX3Rv CisgIHRyZWUgYXR0cjsKKyAgYm9vbCBleHBsaWNpdF9wID0gdHJ1ZTsKKworICBpZiAobm9kZS0+ aW5saW5lZF90bwogICAgICAgfHwgbG9va3VwX2F0dHJpYnV0ZSAoIm5vY2xvbmUiLCBERUNMX0FU VFJJQlVURVMgKG5vZGUtPmRlY2wpKSkKICAgICByZXR1cm47CiAKKyAgYXR0ciA9IGxvb2t1cF9h dHRyaWJ1dGUgKCJvbXAgZGVjbGFyZSBzaW1kIiwKKwkJCSAgIERFQ0xfQVRUUklCVVRFUyAobm9k ZS0+ZGVjbCkpOworCisgIC8qIFNlZSBpZiB3ZSBjYW4gYWRkIGFuICJvbXAgZGVjbGFyZSBzaW1k IiBkaXJlY3RpdmUgaW1wbGljaXRseQorICAgICBiZWZvcmUgZ2l2aW5nIHVwLiAgKi8KKyAgLyog RklYTUU6IE9wZW5BQ0MgIiNwcmFnbWEgYWNjIHJvdXRpbmUiIHRyYW5zbGF0ZXMgaW50bworICAg ICAib21wIGRlY2xhcmUgdGFyZ2V0IiwgYnV0IGFwcGVhcnMgYWxzbyB0byBoYXZlIHNvbWUgb3Ro ZXIgZWZmZWN0cworICAgICB0aGF0IGNvbmZsaWN0IHdpdGggZ2VuZXJhdGluZyBTSU1EIGNsb25l cywgY2F1c2luZyBJQ0VzLiAgU28gZG9uJ3QKKyAgICAgZG8gdGhpcyBpZiB3ZSd2ZSBnb3QgT3Bl bkFDQyBpbnN0ZWFkIG9mIE9wZW5NUC4gICovCisgIGlmIChhdHRyID09IE5VTExfVFJFRQorI2lm ZGVmIEFDQ0VMX0NPTVBJTEVSCisgICAgICAmJiAoZmxhZ19vcGVubXBfdGFyZ2V0X3NpbWRfY2xv bmUgPT0gT01QX1RBUkdFVF9TSU1EX0NMT05FX0FOWQorCSAgfHwgZmxhZ19vcGVubXBfdGFyZ2V0 X3NpbWRfY2xvbmUgPT0gT01QX1RBUkdFVF9TSU1EX0NMT05FX05PSE9TVCkKKyNlbHNlCisgICAg ICAmJiAoZmxhZ19vcGVubXBfdGFyZ2V0X3NpbWRfY2xvbmUgPT0gT01QX1RBUkdFVF9TSU1EX0NM T05FX0FOWQorCSAgfHwgZmxhZ19vcGVubXBfdGFyZ2V0X3NpbWRfY2xvbmUgPT0gT01QX1RBUkdF VF9TSU1EX0NMT05FX0hPU1QpCisjZW5kaWYKKyAgICAgICYmICFvYWNjX2dldF9mbl9hdHRyaWIg KG5vZGUtPmRlY2wpCisgICAgICAmJiBva19mb3JfYXV0b19zaW1kX2Nsb25lIChub2RlKSkKKyAg ICB7CisgICAgICBhdHRyID0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAoIm9tcCBkZWNsYXJl IHNpbWQiKSwgTlVMTCwKKwkJCURFQ0xfQVRUUklCVVRFUyAobm9kZS0+ZGVjbCkpOworICAgICAg REVDTF9BVFRSSUJVVEVTIChub2RlLT5kZWNsKSA9IGF0dHI7CisgICAgICBleHBsaWNpdF9wID0g ZmFsc2U7CisgICAgfQorCisgIGlmIChhdHRyID09IE5VTExfVFJFRSkKKyAgICByZXR1cm47CisK ICAgLyogSWdub3JlCiAgICAgICNwcmFnbWEgb21wIGRlY2xhcmUgc2ltZAogICAgICBleHRlcm4g aW50IGZvbyAoKTsKQEAgLTE3MTQsMTMgKzE5NjQsMTUgQEAgZXhwYW5kX3NpbWRfY2xvbmVzIChz dHJ1Y3QgY2dyYXBoX25vZGUgKm5vZGUpCiAKICAgICAgIHBvbHlfdWludDY0IG9yaWdfc2ltZGxl biA9IGNsb25lX2luZm8tPnNpbWRsZW47CiAgICAgICB0cmVlIGJhc2VfdHlwZSA9IHNpbWRfY2xv bmVfY29tcHV0ZV9iYXNlX2RhdGFfdHlwZSAobm9kZSwgY2xvbmVfaW5mbyk7CisKICAgICAgIC8q IFRoZSB0YXJnZXQgY2FuIHJldHVybiAwIChubyBzaW1kIGNsb25lcyBzaG91bGQgYmUgY3JlYXRl ZCksCiAJIDEgKGp1c3Qgb25lIElTQSBvZiBzaW1kIGNsb25lcyBzaG91bGQgYmUgY3JlYXRlZCkg b3IgaGlnaGVyCiAJIGNvdW50IG9mIElTQSB2YXJpYW50cy4gIEluIHRoYXQgY2FzZSwgY2xvbmVf aW5mbyBpcyBpbml0aWFsaXplZAogCSBmb3IgdGhlIGZpcnN0IElTQSB2YXJpYW50LiAgKi8KICAg ICAgIGludCBjb3VudAogCT0gdGFyZ2V0bS5zaW1kX2Nsb25lLmNvbXB1dGVfdmVjc2l6ZV9hbmRf c2ltZGxlbiAobm9kZSwgY2xvbmVfaW5mbywKLQkJCQkJCQkgIGJhc2VfdHlwZSwgMCk7CisJCQkJ CQkJICBiYXNlX3R5cGUsIDAsCisJCQkJCQkJICBleHBsaWNpdF9wKTsKICAgICAgIGlmIChjb3Vu dCA9PSAwKQogCWNvbnRpbnVlOwogCkBAIC0xNzQ1LDcgKzE5OTcsOCBAQCBleHBhbmRfc2ltZF9j bG9uZXMgKHN0cnVjdCBjZ3JhcGhfbm9kZSAqbm9kZSkKIAkgICAgICAvKiBBbmQgY2FsbCB0aGUg dGFyZ2V0IGhvb2sgYWdhaW4gdG8gZ2V0IHRoZSByaWdodCBJU0EuICAqLwogCSAgICAgIHRhcmdl dG0uc2ltZF9jbG9uZS5jb21wdXRlX3ZlY3NpemVfYW5kX3NpbWRsZW4gKG5vZGUsIGNsb25lLAog CQkJCQkJCSAgICAgIGJhc2VfdHlwZSwKLQkJCQkJCQkgICAgICBpIC8gMik7CisJCQkJCQkJICAg ICAgaSAvIDIsCisJCQkJCQkJICAgICAgZXhwbGljaXRfcCk7CiAJICAgICAgaWYgKChpICYgMSkg IT0gMCkKIAkJY2xvbmUtPmluYnJhbmNoID0gMTsKIAkgICAgfQpAQCAtMTc2Myw3ICsyMDE2LDcg QEAgZXhwYW5kX3NpbWRfY2xvbmVzIChzdHJ1Y3QgY2dyYXBoX25vZGUgKm5vZGUpCiAJICAvKiBP bmx5IHdoZW4gd2UgYXJlIHN1cmUgd2Ugd2FudCB0byBjcmVhdGUgdGhlIGNsb25lIGFjdHVhbGx5 CiAJICAgICBjbG9uZSB0aGUgZnVuY3Rpb24gKG9yIGRlZmluaXRpb25zKSBvciBjcmVhdGUgYW5v dGhlcgogCSAgICAgZXh0ZXJuIEZVTkNUSU9OX0RFQ0wgKGZvciBwcm90b3R5cGVzIHdpdGhvdXQg ZGVmaW5pdGlvbnMpLiAgKi8KLQkgIHN0cnVjdCBjZ3JhcGhfbm9kZSAqbiA9IHNpbWRfY2xvbmVf Y3JlYXRlIChub2RlKTsKKwkgIHN0cnVjdCBjZ3JhcGhfbm9kZSAqbiA9IHNpbWRfY2xvbmVfY3Jl YXRlIChub2RlLCAhZXhwbGljaXRfcCk7CiAJICBpZiAobiA9PSBOVUxMKQogCSAgICB7CiAJICAg ICAgaWYgKGkgPT0gMCkKQEAgLTE3OTgsNiArMjA1MSwxMCBAQCBleHBhbmRfc2ltZF9jbG9uZXMg KHN0cnVjdCBjZ3JhcGhfbm9kZSAqbm9kZSkKIAkgICAgICBzaW1kX2Nsb25lX2FkanVzdF9yZXR1 cm5fdHlwZSAobik7CiAJICAgICAgc2ltZF9jbG9uZV9hZGp1c3RfYXJndW1lbnRfdHlwZXMgKG4p OwogCSAgICB9CisJICBpZiAoZHVtcF9maWxlKQorCSAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJc bkdlbmVyYXRlZCAlcyBjbG9uZSAlc1xuIiwKKwkJICAgICAoVFJFRV9QVUJMSUMgKG4tPmRlY2wp ID8gImdsb2JhbCIgOiAibG9jYWwiKSwKKwkJICAgICBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xf QVNTRU1CTEVSX05BTUUgKG4tPmRlY2wpKSk7CiAJfQogICAgIH0KICAgd2hpbGUgKChhdHRyID0g bG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHNpbWQiLCBUUkVFX0NIQUlOIChhdHRyKSkp KTsKZGlmZiAtLWdpdCBhL2djYy9vcHRzLmNjIGIvZ2NjL29wdHMuY2MKaW5kZXggMzc5Nzc4NGM4 NjUuLjczZmM5Nzc1NmU0IDEwMDY0NAotLS0gYS9nY2Mvb3B0cy5jYworKysgYi9nY2Mvb3B0cy5j YwpAQCAtNjU4LDYgKzY1OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9vcHRpb25z IGRlZmF1bHRfb3B0aW9uc190YWJsZVtdID0KICAgICAgIFJFT1JERVJfQkxPQ0tTX0FMR09SSVRI TV9TVEMgfSwKICAgICB7IE9QVF9MRVZFTFNfMl9QTFVTX1NQRUVEX09OTFksIE9QVF9mdHJlZV9s b29wX3ZlY3Rvcml6ZSwgTlVMTCwgMSB9LAogICAgIHsgT1BUX0xFVkVMU18yX1BMVVNfU1BFRURf T05MWSwgT1BUX2Z0cmVlX3NscF92ZWN0b3JpemUsIE5VTEwsIDEgfSwKKyAgICB7IE9QVF9MRVZF TFNfMl9QTFVTX1NQRUVEX09OTFksIE9QVF9mb3Blbm1wX3RhcmdldF9zaW1kX2Nsb25lXywgTlVM TCwKKyAgICAgIE9NUF9UQVJHRVRfU0lNRF9DTE9ORV9OT0hPU1QgfSwKICNpZmRlZiBJTlNOX1ND SEVEVUxJTkcKICAgLyogT25seSBydW4gdGhlIHByZS1yZWdhbGxvYyBzY2hlZHVsaW5nIHBhc3Mg aWYgb3B0aW1pemluZyBmb3Igc3BlZWQuICAqLwogICAgIHsgT1BUX0xFVkVMU18yX1BMVVNfU1BF RURfT05MWSwgT1BUX2ZzY2hlZHVsZV9pbnNucywgTlVMTCwgMSB9LApkaWZmIC0tZ2l0IGEvZ2Nj L3RhcmdldC5kZWYgYi9nY2MvdGFyZ2V0LmRlZgppbmRleCBkODI2MDZmZjVhYi4uMDgyYTdjNjJm MzQgMTAwNjQ0Ci0tLSBhL2djYy90YXJnZXQuZGVmCisrKyBiL2djYy90YXJnZXQuZGVmCkBAIC0x NjM0LDcgKzE2MzQsNyBAQCBmaWVsZHMgaW4gQHZhcntzaW1kX2Nsb25lfSBzdHJ1Y3R1cmUgcG9p bnRlZCBieSBAdmFye2Nsb25lX2luZm99IGFyZ3VtZW50IGFuZCBhbAogbm90IGRldGVybWluZWQg YnkgdGhlIGJpdHNpemUgKGluIHdoaWNoIGNhc2UgQHZhcntzaW1kbGVufSBpcyBhbHdheXMgdXNl ZCkuXG5cCiBUaGUgaG9vayBzaG91bGQgcmV0dXJuIDAgaWYgU0lNRCBjbG9uZXMgc2hvdWxkbid0 IGJlIGVtaXR0ZWQsXG5cCiBvciBudW1iZXIgb2YgQHZhcnt2ZWNzaXplX21hbmdsZX0gdmFyaWFu dHMgdGhhdCBzaG91bGQgYmUgZW1pdHRlZC4iLAotaW50LCAoc3RydWN0IGNncmFwaF9ub2RlICos IHN0cnVjdCBjZ3JhcGhfc2ltZF9jbG9uZSAqLCB0cmVlLCBpbnQpLCBOVUxMKQoraW50LCAoc3Ry dWN0IGNncmFwaF9ub2RlICosIHN0cnVjdCBjZ3JhcGhfc2ltZF9jbG9uZSAqLCB0cmVlLCBpbnQs IGJvb2wpLCBOVUxMKQogCiBERUZIT09LCiAoYWRqdXN0LApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS0xLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMTBiNWFjMzg4MTIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTEuQwpAQCAtMCwwICsxLDI1IEBACisv KiB7IGRnLW9wdGlvbnMgIi1mb3Blbm1wIC1PMiIgfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9w dGlvbnMgIi1mb3Blbm1wLXRhcmdldC1zaW1kLWNsb25lPWFueSAtZmR1bXAtaXBhLXNpbWRjbG9u ZS1kZXRhaWxzIiB9ICovCisKKy8qIFRlc3QgdGhhdCBzaW1kIGNsb25lcyBhcmUgZ2VuZXJhdGVk IGZvciBmdW5jdGlvbnMgd2l0aCAiZGVjbGFyZSB0YXJnZXQiLiAgKi8KKworI3ByYWdtYSBvbXAg ZGVjbGFyZSB0YXJnZXQKK19fYXR0cmlidXRlX18gKChfX25vaW5saW5lX18pKSBpbnQgYWRkaXQg KGludCBhLCBpbnQgYikKK3sKKyAgcmV0dXJuIGEgKyBiOworfQorI3ByYWdtYSBvbXAgZW5kIGRl Y2xhcmUgdGFyZ2V0CisKK3ZvaWQgY2FsbGl0IChpbnQgKmEsIGludCAqYiwgaW50ICpjKQorewor ICBpbnQgaTsKKyAgI3ByYWdtYSBvbXAgZm9yIHNpbWQKKyAgZm9yIChpID0gMDsgaSA8IDE2OyBp KyspCisgICAgY1tpXSA9IGFkZGl0IChhW2ldLCBiW2ldKTsKK30KKworLyogQWx0aG91Z2ggYWRk aXQgaGFzIGV4dGVybmFsIGxpbmthZ2UsIHdlIGV4cGVjdCBjbG9uZXMgdG8gYmUgZ2VuZXJhdGVk IGFzCisgICBmb3IgYSBmdW5jdGlvbiB3aXRoIGludGVybmFsIGxpbmthZ2UuICAqLworCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1pcGEtZHVtcCAiR2VuZXJhdGVkIGxvY2FsIGNsb25lIF9aR1YuKk4u Kl9fWjVhZGRpdGlpIiAic2ltZGNsb25lIiB7IHRhcmdldCB4ODZfNjQtKi0qIH0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1pcGEtZHVtcCAiR2VuZXJhdGVkIGxvY2FsIGNsb25lIF9aR1Yu Kk0uKl9fWjVhZGRpdGlpIiAic2ltZGNsb25lIiB7IHRhcmdldCB4ODZfNjQtKi0qIH0gfSB9ICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25l LTIuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMi5DCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wOGMwNTM5ZGM2MwotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUt Mi5DCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGctb3B0aW9ucyAiLWZvcGVubXAgLU8yIiB9ICov CisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmU9 YW55IC1mZHVtcC1pcGEtc2ltZGNsb25lLWRldGFpbHMiIH0gKi8KKworLyogVGVzdCB0aGF0IHNp bWQgY2xvbmVzIGFyZSBub3QgZ2VuZXJhdGVkIGZvciAiZGVjbGFyZSB0YXJnZXQiCisgICBmdW5j dGlvbnMgdGhhdCB0aHJvdy4gICovCisKKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0CitfX2F0 dHJpYnV0ZV9fICgoX19ub2lubGluZV9fKSkgaW50IGFkZGl0IChpbnQgYSwgaW50IGIpCit7Cisg IGlmIChhIDwgMCkgdGhyb3cgLTE7CisgIHJldHVybiBhICsgYjsKK30KKyNwcmFnbWEgb21wIGVu ZCBkZWNsYXJlIHRhcmdldAorCit2b2lkIGNhbGxpdCAoaW50ICphLCBpbnQgKmIsIGludCAqYykK K3sKKyAgaW50IGk7CisgICNwcmFnbWEgb21wIGZvciBzaW1kCisgIGZvciAoaSA9IDA7IGkgPCAx NjsgaSsrKQorICAgIGNbaV0gPSBhZGRpdCAoYVtpXSwgYltpXSk7Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLWlwYS1kdW1wLW5vdCAiR2VuZXJhdGVkIC4qIGNsb25lIiAic2ltZGNsb25lIiB7 IHRhcmdldCB4ODZfNjQtKi0qIH0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2dv bXAvdGFyZ2V0LXNpbWQtY2xvbmUtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4zODhkYzJhOTU2YwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMS5jCkBAIC0wLDAgKzEsMjUgQEAKKy8qIHsgZGct b3B0aW9ucyAiLWZvcGVubXAgLU8yIiB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAi LWZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmU9YW55IC1mZHVtcC1pcGEtc2ltZGNsb25lLWRldGFp bHMiIH0gKi8KKworLyogVGVzdCB0aGF0IHNpbWQgY2xvbmVzIGFyZSBnZW5lcmF0ZWQgZm9yIGZ1 bmN0aW9ucyB3aXRoICJkZWNsYXJlIHRhcmdldCIuICAqLworCisjcHJhZ21hIG9tcCBkZWNsYXJl IHRhcmdldAorX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxpbmVfXykpIGludCBhZGRpdCAoaW50IGEs IGludCBiKQoreworICByZXR1cm4gYSArIGI7Cit9CisjcHJhZ21hIG9tcCBlbmQgZGVjbGFyZSB0 YXJnZXQKKwordm9pZCBjYWxsaXQgKGludCAqYSwgaW50ICpiLCBpbnQgKmMpCit7CisgIGludCBp OworICAjcHJhZ21hIG9tcCBmb3Igc2ltZAorICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKyAg ICBjW2ldID0gYWRkaXQgKGFbaV0sIGJbaV0pOworfQorCisvKiBBbHRob3VnaCBhZGRpdCBoYXMg ZXh0ZXJuYWwgbGlua2FnZSwgd2UgZXhwZWN0IGNsb25lcyB0byBiZSBnZW5lcmF0ZWQgYXMKKyAg IGZvciBhIGZ1bmN0aW9uIHdpdGggaW50ZXJuYWwgbGlua2FnZS4gICovCisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLWlwYS1kdW1wICJHZW5lcmF0ZWQgbG9jYWwgY2xvbmUgX1pHVi4qTi4qX2FkZGl0 IiAic2ltZGNsb25lIiB7IHRhcmdldCB4ODZfNjQtKi0qIH0gfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1pcGEtZHVtcCAiR2VuZXJhdGVkIGxvY2FsIGNsb25lIF9aR1YuKk0uKl9hZGRpdCIg InNpbWRjbG9uZSIgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS0yLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uYWNkYzI0MWRiNDYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTIuYwpAQCAtMCwwICsxLDIy IEBACisvKiB7IGRnLW9wdGlvbnMgIi1mb3Blbm1wIC1PMiIgfSAqLworLyogeyBkZy1hZGRpdGlv bmFsLW9wdGlvbnMgIi1mZHVtcC1pcGEtc2ltZGNsb25lLWRldGFpbHMiIH0gKi8KKworLyogVGVz dCB0aGF0IGhvc3Qgc2ltZCBjbG9uZXMgYXJlIG5vdCBnZW5lcmF0ZWQgZm9yIGZ1bmN0aW9ucyB3 aXRoIAorICAgImRlY2xhcmUgdGFyZ2V0IiBieSBkZWZhdWx0IGF0IC1PMi4gICovCisKKyNwcmFn bWEgb21wIGRlY2xhcmUgdGFyZ2V0CitfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fKSkgaW50 IGFkZGl0IChpbnQgYSwgaW50IGIpCit7CisgIHJldHVybiBhICsgYjsKK30KKyNwcmFnbWEgb21w IGVuZCBkZWNsYXJlIHRhcmdldAorCit2b2lkIGNhbGxpdCAoaW50ICphLCBpbnQgKmIsIGludCAq YykKK3sKKyAgaW50IGk7CisgICNwcmFnbWEgb21wIGZvciBzaW1kCisgIGZvciAoaSA9IDA7IGkg PCAxNjsgaSsrKQorICAgIGNbaV0gPSBhZGRpdCAoYVtpXSwgYltpXSk7Cit9CisKKy8qIHsgZGct ZmluYWwgeyBzY2FuLWlwYS1kdW1wLW5vdCAiR2VuZXJhdGVkIC4qIGNsb25lIiAic2ltZGNsb25l IiB7IHRhcmdldCB4ODZfNjQtKi0qIH0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5lOTBkNDljZTdmMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMy5jCkBAIC0wLDAgKzEsMjIgQEAKKy8qIHsg ZGctb3B0aW9ucyAiLWZvcGVubXAgLU8yIiB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9u cyAiLWZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmU9YW55IC1mZHVtcC1pcGEtc2ltZGNsb25lLWRl dGFpbHMiIH0gKi8KKworLyogVGVzdCB0aGF0IGhvc3Qgc2ltZCBjbG9uZXMgYXJlIG5vdCBnZW5l cmF0ZWQgZm9yIGZ1bmN0aW9ucyB3aXRoIHRoZSBub2hvc3QKKyAgICJkZWNsYXJlIHRhcmdldCIg Y2xhdXNlLiAgKi8KKworX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxpbmVfXykpIGludCBhZGRpdCAo aW50IGEsIGludCBiKQoreworICByZXR1cm4gYSArIGI7Cit9CisjcHJhZ21hIG9tcCBkZWNsYXJl IHRhcmdldCB0byhhZGRpdCkgZGV2aWNlX3R5cGUobm9ob3N0KQorCit2b2lkIGNhbGxpdCAoaW50 ICphLCBpbnQgKmIsIGludCAqYykKK3sKKyAgaW50IGk7CisgICNwcmFnbWEgb21wIGZvciBzaW1k CisgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQorICAgIGNbaV0gPSBhZGRpdCAoYVtpXSwgYltp XSk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWlwYS1kdW1wICJkZXZpY2UgZG9lc24ndCBt YXRjaCIgInNpbWRjbG9uZSIgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4taXBhLWR1bXAtbm90ICJHZW5lcmF0ZWQgLiogY2xvbmUiICJzaW1kY2xvbmUi IHsgdGFyZ2V0IHg4Nl82NC0qLSogfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv Z29tcC90YXJnZXQtc2ltZC1jbG9uZS00LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjE0MTA5N2JkY2U4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS00LmMKQEAgLTAsMCArMSwyNiBAQAorLyogeyBk Zy1vcHRpb25zICItZm9wZW5tcCAtTzIiIH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25z ICItZm9wZW5tcC10YXJnZXQtc2ltZC1jbG9uZT1hbnkgLWZkdW1wLWlwYS1zaW1kY2xvbmUtZGV0 YWlscyIgfSAqLworCisvKiBUZXN0IHRoYXQgc2ltZCBjbG9uZXMgYXJlIG5vdCBnZW5lcmF0ZWQg Zm9yIGZ1bmN0aW9ucyB3aXRoIAorICAgImRlY2xhcmUgdGFyZ2V0IiBidXQgdGhhdCB3cml0ZSBt ZW1vcnkgaW4gdGhlIGJvZHkuICAqLworCitleHRlcm4gaW50IHNhdmU7CisKKyNwcmFnbWEgb21w IGRlY2xhcmUgdGFyZ2V0CitfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fKSkgaW50IGFkZGl0 KGludCBhLCBpbnQgYikKK3sKKyAgc2F2ZSA9IGE7CisgIHJldHVybiBhICsgYjsKK30KKyNwcmFn bWEgb21wIGVuZCBkZWNsYXJlIHRhcmdldAorCit2b2lkIGNhbGxpdCAoaW50ICphLCBpbnQgKmIs IGludCAqYykKK3sKKyAgaW50IGk7CisgICNwcmFnbWEgb21wIGZvciBzaW1kCisgIGZvciAoaSA9 IDA7IGkgPCAxNjsgaSsrKQorICAgIGNbaV0gPSBhZGRpdCAoYVtpXSwgYltpXSk7Cit9CisKKy8q IHsgZGctZmluYWwgeyBzY2FuLWlwYS1kdW1wICJib2R5IGluY2x1ZGVzIG1lbW9yeSB3cml0ZSIg InNpbWRjbG9uZSIgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4taXBhLWR1bXAtbm90ICJHZW5lcmF0ZWQgLiogY2xvbmUiICJzaW1kY2xvbmUiIHsgdGFy Z2V0IHg4Nl82NC0qLSogfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC90 YXJnZXQtc2ltZC1jbG9uZS01LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjkzZjk3NzRmODMxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv Z29tcC90YXJnZXQtc2ltZC1jbG9uZS01LmMKQEAgLTAsMCArMSwyOCBAQAorLyogeyBkZy1vcHRp b25zICItZm9wZW5tcCAtTzIiIH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZm9w ZW5tcC10YXJnZXQtc2ltZC1jbG9uZT1hbnkgLWZkdW1wLWlwYS1zaW1kY2xvbmUtZGV0YWlscyIg fSAqLworCisvKiBUZXN0IHRoYXQgc2ltZCBjbG9uZXMgYXJlIG5vdCBnZW5lcmF0ZWQgZm9yIGZ1 bmN0aW9ucyB3aXRoIAorICAgImRlY2xhcmUgdGFyZ2V0IiBidXQgdW5zdWl0YWJsZSBhcmd1bWVu dHMuICAqLworCitzdHJ1Y3QgcyB7CisgIGludCBhOworICBpbnQgYjsKK307CisgIAorI3ByYWdt YSBvbXAgZGVjbGFyZSB0YXJnZXQKK19fYXR0cmlidXRlX18gKChfX25vaW5saW5lX18pKSBpbnQg YWRkaXQgKHN0cnVjdCBzIHgpCit7CisgIHJldHVybiB4LmEgKyB4LmI7Cit9CisjcHJhZ21hIG9t cCBlbmQgZGVjbGFyZSB0YXJnZXQKKwordm9pZCBjYWxsaXQgKHN0cnVjdCBzICpzcywgaW50ICpj KQoreworICBpbnQgaTsKKyAgI3ByYWdtYSBvbXAgZm9yIHNpbWQKKyAgZm9yIChpID0gMDsgaSA8 IDE2OyBpKyspCisgICAgY1tpXSA9IGFkZGl0IChzc1tpXSk7Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLWlwYS1kdW1wICJhcmd1bWVudCB0eXBlIGZhaWxzIHNuaWZmIHRlc3QiICJzaW1kY2xv bmUiIHsgdGFyZ2V0IHg4Nl82NC0qLSogfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWlw YS1kdW1wLW5vdCAiR2VuZXJhdGVkIC4qIGNsb25lIiAic2ltZGNsb25lIiB7IHRhcmdldCB4ODZf NjQtKi0qIH0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL3Rh cmdldC1zaW1kLWNsb25lLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2dvbXAvdGFyZ2V0LXNp bWQtY2xvbmUtNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40YzM0 OTY3YWY5NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2dvbXAvdGFy Z2V0LXNpbWQtY2xvbmUtNi5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIHsgZGctb3B0aW9ucyAiLWZv cGVubXAgLU8yIiB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZvcGVubXAtdGFy Z2V0LXNpbWQtY2xvbmU9YW55IC1mZHVtcC1pcGEtc2ltZGNsb25lLWRldGFpbHMiIH0gKi8KKwor LyogVGVzdCB0aGF0IHNpbWQgY2xvbmVzIGFyZSBub3QgZ2VuZXJhdGVkIGZvciBmdW5jdGlvbnMg d2l0aCAKKyAgICJkZWNsYXJlIHRhcmdldCIgYnV0IHRoYXQgY2FsbCBwb3NzaWJseSBzaWRlLWVm ZmVjdGluZyBmdW5jdGlvbnMgCisgICBpbiB0aGUgYm9keS4gICovCisKK2V4dGVybiBpbnQgZiAo aW50KTsKKworI3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQKK19fYXR0cmlidXRlX18gKChfX25v aW5saW5lX18pKSBpbnQgYWRkaXQoaW50IGEsIGludCBiKQoreworICByZXR1cm4gZihhKSArIGI7 Cit9CisjcHJhZ21hIG9tcCBlbmQgZGVjbGFyZSB0YXJnZXQKKwordm9pZCBjYWxsaXQgKGludCAq YSwgaW50ICpiLCBpbnQgKmMpCit7CisgIGludCBpOworICAjcHJhZ21hIG9tcCBmb3Igc2ltZAor ICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICBjW2ldID0gYWRkaXQgKGFbaV0sIGJbaV0p OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1pcGEtZHVtcCAiYm9keSBjb250YWlucyB1bnNh ZmUgZnVuY3Rpb24gY2FsbCIgInNpbWRjbG9uZSIgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4taXBhLWR1bXAtbm90ICJHZW5lcmF0ZWQgLiogY2xvbmUi ICJzaW1kY2xvbmUiIHsgdGFyZ2V0IHg4Nl82NC0qLSogfSB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS03LmMgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTcuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzhjNjBmOWY2YmMKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTcuYwpAQCAtMCwwICsx LDE1IEBACisvKiB7IGRnLW9wdGlvbnMgIi1mb3Blbm1wIC1PMiIgfSAqLworLyogeyBkZy1hZGRp dGlvbmFsLW9wdGlvbnMgIi1mb3Blbm1wLXRhcmdldC1zaW1kLWNsb25lPWFueSAtZmR1bXAtaXBh LXNpbWRjbG9uZS1kZXRhaWxzIiB9ICovCisKKy8qIFRlc3QgdGhhdCBzaW1kIGNsb25lcyBhcmUg bm90IGdlbmVyYXRlZCBmb3IgZnVuY3Rpb25zIHdpdGggCisgICAiZGVjbGFyZSB0YXJnZXQiIHRo YXQgaGF2ZSBubyBjYWxsZXJzIGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuICAqLworCisj cHJhZ21hIG9tcCBkZWNsYXJlIHRhcmdldAorX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxpbmVfXykp IGludCBhZGRpdCAoaW50IGEsIGludCBiKQoreworICByZXR1cm4gYSArIGI7Cit9CisjcHJhZ21h IG9tcCBlbmQgZGVjbGFyZSB0YXJnZXQKKworLyogeyBkZy1maW5hbCB7IHNjYW4taXBhLWR1bXAg ImZ1bmN0aW9uIGlzIG5vdCB1c2VkIiAic2ltZGNsb25lIiB7IHRhcmdldCB4ODZfNjQtKi0qIH0g fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1pcGEtZHVtcC1ub3QgIkdlbmVyYXRlZCAuKiBj bG9uZSIgInNpbWRjbG9uZSIgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0gfSAqLwpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS04LmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTguYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTYxNzY2Y2IxMjgKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTguYwpAQCAtMCww ICsxLDI1IEBACisvKiB7IGRnLW9wdGlvbnMgIi1mb3Blbm1wIC1PMiIgfSAqLworLyogeyBkZy1h ZGRpdGlvbmFsLW9wdGlvbnMgIi1mb3Blbm1wLXRhcmdldC1zaW1kLWNsb25lPWFueSAtZmR1bXAt aXBhLXNpbWRjbG9uZS1kZXRhaWxzIiB9ICovCisKKy8qIFRlc3QgdGhhdCBzaW1kIGNsb25lcyBh cmUgbm90IGdlbmVyYXRlZCBmb3IgZnVuY3Rpb25zIHdpdGggCisgICAiZGVjbGFyZSB0YXJnZXQi IGJ1dCB0aGF0IHJlYWQgdm9sYXRpbGUgbWVtb3J5IGluIHRoZSBib2R5LiAgKi8KKworZXh0ZXJu IHZvbGF0aWxlIGludCBzYXZlOworCisjcHJhZ21hIG9tcCBkZWNsYXJlIHRhcmdldAorX19hdHRy aWJ1dGVfXyAoKF9fbm9pbmxpbmVfXykpIGludCBhZGRpdChpbnQgYSwgaW50IGIpCit7CisgIHJl dHVybiBzYXZlICsgYSArIGI7Cit9CisjcHJhZ21hIG9tcCBlbmQgZGVjbGFyZSB0YXJnZXQKKwor dm9pZCBjYWxsaXQgKGludCAqYSwgaW50ICpiLCBpbnQgKmMpCit7CisgIGludCBpOworICAjcHJh Z21hIG9tcCBmb3Igc2ltZAorICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICBjW2ldID0g YWRkaXQgKGFbaV0sIGJbaV0pOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1pcGEtZHVtcCAi Ym9keSBpbmNsdWRlcyB2b2xhdGlsZSBvcCIgInNpbWRjbG9uZSIgeyB0YXJnZXQgeDg2XzY0LSot KiB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4taXBhLWR1bXAtbm90ICJHZW5lcmF0ZWQg LiogY2xvbmUiICJzaW1kY2xvbmUiIHsgdGFyZ2V0IHg4Nl82NC0qLSogfSB9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvbGliL3NjYW5vZmZsb2FkaXBhLmV4cCBiL2djYy90ZXN0c3Vp dGUvbGliL3NjYW5vZmZsb2FkaXBhLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uNjE1Y2JmNDZlZjgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2xp Yi9zY2Fub2ZmbG9hZGlwYS5leHAKQEAgLTAsMCArMSwxNDggQEAKKyMgICBDb3B5cmlnaHQgKEMp IDIwMTgtMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorIyAKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMgCisjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25n IHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisjIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBWYXJpb3VzIHV0aWxpdGllcyBmb3Igc2Nhbm5p bmcgb2ZmbG9hZGluZyBpcGEgZHVtcCBvdXRwdXQsIHVzZWQgYnkKKyMgbGliZ29tcC5leHAuCisK K2xvYWRfbGliIHNjYW5kdW1wLmV4cAorbG9hZF9saWIgc2Nhbm9mZmxvYWQuZXhwCisKKyMgVXRp bGl0eSBmb3Igc2Nhbm5pbmcgY29tcGlsZXIgcmVzdWx0LCBpbnZva2VkIHZpYSBkZy1maW5hbC4K KyMgQ2FsbCBwYXNzIGlmIHBhdHRlcm4gaXMgcHJlc2VudCwgb3RoZXJ3aXNlIGZhaWwuCisjCisj IEFyZ3VtZW50IDAgaXMgdGhlIHJlZ2V4cCB0byBtYXRjaAorIyBBcmd1bWVudCAxIGlzIHRoZSBu YW1lIG9mIHRoZSBkdW1wZWQgaXBhIHBhc3MKKyMgQXJndW1lbnQgMiBoYW5kbGVzIGV4cGVjdGVk IGZhaWx1cmVzIGFuZCB0aGUgbGlrZQorcHJvYyBzY2FuLW9mZmxvYWQtaXBhLWR1bXAgeyBhcmdz IH0geworCisgICAgaWYgeyBbbGxlbmd0aCAkYXJnc10gPCAyIH0geworCWVycm9yICJzY2FuLW9m ZmxvYWQtaXBhLWR1bXA6IHRvbyBmZXcgYXJndW1lbnRzIgorCXJldHVybgorICAgIH0KKyAgICBp ZiB7IFtsbGVuZ3RoICRhcmdzXSA+IDMgfSB7CisJZXJyb3IgInNjYW4tb2ZmbG9hZC1pcGEtZHVt cDogdG9vIG1hbnkgYXJndW1lbnRzIgorCXJldHVybgorICAgIH0KKyAgICBpZiB7IFtsbGVuZ3Ro ICRhcmdzXSA+PSAzIH0geworCXNjb2ZmIGVuZC0xIHNjYW4tZHVtcCAib2ZmbG9hZC1pcGEiIFts aW5kZXggJGFyZ3MgMF0gXAorCSAgICAiXFswLTlcXVxbMC05XF1cWzAtOV1pLltsaW5kZXggJGFy Z3MgMV0iICIiIFwKKwkgICAgW2xpbmRleCAkYXJncyAyXQorICAgIH0gZWxzZSB7CisJc2NvZmYg ZW5kIHNjYW4tZHVtcCAib2ZmbG9hZC1pcGEiIFtsaW5kZXggJGFyZ3MgMF0gXAorCSAgICAiXFsw LTlcXVxbMC05XF1cWzAtOV1pLltsaW5kZXggJGFyZ3MgMV0iICIiCisgICAgfQorfQorCisjIENh bGwgcGFzcyBpZiBwYXR0ZXJuIGlzIHByZXNlbnQgZ2l2ZW4gbnVtYmVyIG9mIHRpbWVzLCBvdGhl cndpc2UgZmFpbC4KKyMgQXJndW1lbnQgMCBpcyB0aGUgcmVnZXhwIHRvIG1hdGNoCisjIEFyZ3Vt ZW50IDEgaXMgbnVtYmVyIG9mIHRpbWVzIHRoZSByZWdleHAgbXVzdCBiZSBmb3VuZAorIyBBcmd1 bWVudCAyIGlzIHRoZSBuYW1lIG9mIHRoZSBkdW1wZWQgaXBhIHBhc3MKKyMgQXJndW1lbnQgMyBo YW5kbGVzIGV4cGVjdGVkIGZhaWx1cmVzIGFuZCB0aGUgbGlrZQorcHJvYyBzY2FuLW9mZmxvYWQt aXBhLWR1bXAtdGltZXMgeyBhcmdzIH0geworCisgICAgaWYgeyBbbGxlbmd0aCAkYXJnc10gPCAz IH0geworCWVycm9yICJzY2FuLW9mZmxvYWQtaXBhLWR1bXAtdGltZXM6IHRvbyBmZXcgYXJndW1l bnRzIgorCXJldHVybgorICAgIH0KKyAgICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA+IDQgfSB7CisJ ZXJyb3IgInNjYW4tb2ZmbG9hZC1pcGEtZHVtcC10aW1lczogdG9vIG1hbnkgYXJndW1lbnRzIgor CXJldHVybgorICAgIH0KKyAgICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA+PSA0IH0geworCXNjb2Zm IGVuZC0xIHNjYW4tZHVtcC10aW1lcyAib2ZmbG9hZC1pcGEiIFtsaW5kZXggJGFyZ3MgMF0gXAor CSAgICBbbGluZGV4ICRhcmdzIDFdICJcWzAtOVxdXFswLTlcXVxbMC05XWkuW2xpbmRleCAkYXJn cyAyXSIgIiIgXAorCSAgICBbbGluZGV4ICRhcmdzIDNdCisgICAgfSBlbHNlIHsKKwlzY29mZiBl bmQgc2Nhbi1kdW1wLXRpbWVzICJvZmZsb2FkLWlwYSIgW2xpbmRleCAkYXJncyAwXSBcCisJICAg IFtsaW5kZXggJGFyZ3MgMV0gIlxbMC05XF1cWzAtOVxdXFswLTldaS5bbGluZGV4ICRhcmdzIDJd IiAiIgorICAgIH0KK30KKworIyBDYWxsIHBhc3MgaWYgcGF0dGVybiBpcyBub3QgcHJlc2VudCwg b3RoZXJ3aXNlIGZhaWwuCisjCisjIEFyZ3VtZW50IDAgaXMgdGhlIHJlZ2V4cCB0byBtYXRjaAor IyBBcmd1bWVudCAxIGlzIHRoZSBuYW1lIG9mIHRoZSBkdW1wZWQgaXBhIHBhc3MKKyMgQXJndW1l bnQgMiBoYW5kbGVzIGV4cGVjdGVkIGZhaWx1cmVzIGFuZCB0aGUgbGlrZQorcHJvYyBzY2FuLW9m ZmxvYWQtaXBhLWR1bXAtbm90IHsgYXJncyB9IHsKKworICAgIGlmIHsgW2xsZW5ndGggJGFyZ3Nd IDwgMiB9IHsKKwllcnJvciAic2Nhbi1vZmZsb2FkLWlwYS1kdW1wLW5vdDogdG9vIGZldyBhcmd1 bWVudHMiCisJcmV0dXJuCisgICAgfQorICAgIGlmIHsgW2xsZW5ndGggJGFyZ3NdID4gMyB9IHsK KwllcnJvciAic2Nhbi1vZmZsb2FkLWlwYS1kdW1wLW5vdDogdG9vIG1hbnkgYXJndW1lbnRzIgor CXJldHVybgorICAgIH0KKyAgICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA+PSAzIH0geworCXNjb2Zm IGVuZC0xIHNjYW4tZHVtcC1ub3QgIm9mZmxvYWQtaXBhIiBbbGluZGV4ICRhcmdzIDBdIFwKKwkg ICAgIlxbMC05XF1cWzAtOVxdXFswLTldaS5bbGluZGV4ICRhcmdzIDFdIiAiIiBcCisJICAgIFts aW5kZXggJGFyZ3MgMl0KKyAgICB9IGVsc2UgeworCXNjb2ZmIGVuZCBzY2FuLWR1bXAtbm90ICJv ZmZsb2FkLWlwYSIgW2xpbmRleCAkYXJncyAwXSBcCisJICAgICJcWzAtOVxdXFswLTlcXVxbMC05 XWkuW2xpbmRleCAkYXJncyAxXSIgIiIKKyAgICB9Cit9CisKKyMgVXRpbGl0eSBmb3Igc2Nhbm5p bmcgZGVtYW5nbGVkIGNvbXBpbGVyIHJlc3VsdCwgaW52b2tlZCB2aWEgZGctZmluYWwuCisjIENh bGwgcGFzcyBpZiBwYXR0ZXJuIGlzIHByZXNlbnQsIG90aGVyd2lzZSBmYWlsLgorIworIyBBcmd1 bWVudCAwIGlzIHRoZSByZWdleHAgdG8gbWF0Y2gKKyMgQXJndW1lbnQgMSBpcyB0aGUgbmFtZSBv ZiB0aGUgZHVtcGVkIGlwYSBwYXNzCisjIEFyZ3VtZW50IDIgaGFuZGxlcyBleHBlY3RlZCBmYWls dXJlcyBhbmQgdGhlIGxpa2UKK3Byb2Mgc2Nhbi1vZmZsb2FkLWlwYS1kdW1wLWRlbSB7IGFyZ3Mg fSB7CisKKyAgICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA8IDIgfSB7CisJZXJyb3IgInNjYW4tb2Zm bG9hZC1pcGEtZHVtcC1kZW06IHRvbyBmZXcgYXJndW1lbnRzIgorCXJldHVybgorICAgIH0KKyAg ICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA+IDMgfSB7CisJZXJyb3IgInNjYW4tb2ZmbG9hZC1pcGEt ZHVtcC1kZW06IHRvbyBtYW55IGFyZ3VtZW50cyIKKwlyZXR1cm4KKyAgICB9CisgICAgaWYgeyBb bGxlbmd0aCAkYXJnc10gPj0gMyB9IHsKKwlzY29mZiBlbmQtMSBzY2FuLWR1bXAtZGVtICJvZmZs b2FkLWlwYSIgW2xpbmRleCAkYXJncyAwXSBcCisJICAgICJcWzAtOVxdXFswLTlcXVxbMC05XWku W2xpbmRleCAkYXJncyAxXSIgIiIgXAorCSAgICBbbGluZGV4ICRhcmdzIDJdCisgICAgfSBlbHNl IHsKKwlzY29mZiBlbmQgc2Nhbi1kdW1wLWRlbSAib2ZmbG9hZC1pcGEiIFtsaW5kZXggJGFyZ3Mg MF0gXAorCSAgICAiXFswLTlcXVxbMC05XF1cWzAtOV1pLltsaW5kZXggJGFyZ3MgMV0iICIiCisg ICAgfQorfQorCisjIENhbGwgcGFzcyBpZiBkZW1hbmdsZWQgcGF0dGVybiBpcyBub3QgcHJlc2Vu dCwgb3RoZXJ3aXNlIGZhaWwuCisjCisjIEFyZ3VtZW50IDAgaXMgdGhlIHJlZ2V4cCB0byBtYXRj aAorIyBBcmd1bWVudCAxIGlzIHRoZSBuYW1lIG9mIHRoZSBkdW1wZWQgaXBhIHBhc3MKKyMgQXJn dW1lbnQgMiBoYW5kbGVzIGV4cGVjdGVkIGZhaWx1cmVzIGFuZCB0aGUgbGlrZQorcHJvYyBzY2Fu LW9mZmxvYWQtaXBhLWR1bXAtZGVtLW5vdCB7IGFyZ3MgfSB7CisKKyAgICBpZiB7IFtsbGVuZ3Ro ICRhcmdzXSA8IDIgfSB7CisJZXJyb3IgInNjYW4tb2ZmbG9hZC1pcGEtZHVtcC1kZW0tbm90OiB0 b28gZmV3IGFyZ3VtZW50cyIKKwlyZXR1cm4KKyAgICB9CisgICAgaWYgeyBbbGxlbmd0aCAkYXJn c10gPiAzIH0geworCWVycm9yICJzY2FuLW9mZmxvYWQtaXBhLWR1bXAtZGVtLW5vdDogdG9vIG1h bnkgYXJndW1lbnRzIgorCXJldHVybgorICAgIH0KKyAgICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA+ PSAzIH0geworCXNjb2ZmIGVuZC0xIHNjYW4tZHVtcC1kZW0tbm90ICJvZmZsb2FkLWlwYSIgW2xp bmRleCAkYXJncyAwXSBcCisJICAgICJcWzAtOVxdXFswLTlcXVxbMC05XWkuW2xpbmRleCAkYXJn cyAxXSIgIiIgXAorCSAgICBbbGluZGV4ICRhcmdzIDJdCisgICAgfSBlbHNlIHsKKwlzY29mZiBl bmQgc2Nhbi1kdW1wLWRlbS1ub3QgIm9mZmxvYWQtaXBhIiBbbGluZGV4ICRhcmdzIDBdIFwKKwkg ICAgIlxbMC05XF1cWzAtOVxdXFswLTldaS5bbGluZGV4ICRhcmdzIDFdIiAiIgorICAgIH0KK30K ZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYi9saWJnb21wLmV4cCBiL2xpYmdvbXAv dGVzdHN1aXRlL2xpYi9saWJnb21wLmV4cAppbmRleCAxODAxZmRjODIyNC4uZTEyMjM2ZTkwODMg MTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYi9saWJnb21wLmV4cAorKysgYi9saWJn b21wL3Rlc3RzdWl0ZS9saWIvbGliZ29tcC5leHAKQEAgLTMyLDYgKzMyLDcgQEAgbG9hZF9nY2Nf bGliIHNjYW5zYXJpZi5leHAKIGxvYWRfZ2NjX2xpYiBzY2FudHJlZS5leHAKIGxvYWRfZ2NjX2xp YiBzY2FubHRyYW5zdHJlZS5leHAKIGxvYWRfZ2NjX2xpYiBzY2Fub2ZmbG9hZC5leHAKK2xvYWRf Z2NjX2xpYiBzY2Fub2ZmbG9hZGlwYS5leHAKIGxvYWRfZ2NjX2xpYiBzY2Fub2ZmbG9hZHRyZWUu ZXhwCiBsb2FkX2djY19saWIgc2Nhbm9mZmxvYWRydGwuZXhwCiBsb2FkX2djY19saWIgc2Nhbmlw YS5leHAKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtc2lt ZC1jbG9uZS0xLmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LXNpbWQtY2xv bmUtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hOWRlZmM0Y2Rk NgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQt c2ltZC1jbG9uZS0xLmMKQEAgLTAsMCArMSw0MyBAQAorLyogeyBkZy1kbyBsaW5rIHsgdGFyZ2V0 IHsgb2ZmbG9hZF90YXJnZXRfYW1kZ2NuIH0gfSB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0 aW9ucyAiLU8yIC1mb2ZmbG9hZC1vcHRpb25zPS1mZHVtcC1pcGEtc2ltZGNsb25lLWRldGFpbHMi IH0gKi8KKworLyogVGVzdCB0aGF0IHNpbWQgY2xvbmVzIGZvciB0aGUgb2ZmbG9hZCBwcm9jZXNz b3IgYXJlIGdlbmVyYXRlZCBmb3IKKyAgIGZ1bmN0aW9ucyB3aXRoICJkZWNsYXJlIHRhcmdldCIg d2hlbiBlbmFibGVkIGJ5IGRlZmF1bHQgYXQgLU8yLiAgKi8KKworI3ByYWdtYSBvbXAgZGVjbGFy ZSB0YXJnZXQKK19fYXR0cmlidXRlX18gKChfX25vaW5saW5lX18pKSBpbnQgYWRkaXQgKGludCBh LCBpbnQgYikKK3sKKyAgcmV0dXJuIGEgKyBiOworfQorCitfX2F0dHJpYnV0ZV9fICgoX19ub2lu bGluZV9fKSkKK3ZvaWQgY2FsbGl0IChpbnQgKmEsIGludCAqYiwgaW50ICpjKQoreworICBpbnQg aTsKKyAgI3ByYWdtYSBvbXAgZm9yIHNpbWQKKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisg ICAgY1tpXSA9IGFkZGl0IChhW2ldLCBiW2ldKTsKK30KKyNwcmFnbWEgb21wIGVuZCBkZWNsYXJl IHRhcmdldAorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgaW50IGFhWzE2XSwgYmJbMTZdLCBjY1sx Nl07CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICB7CisgICAgICBh YVtpXSA9IGk7CisgICAgICBiYltpXSA9IC1pOworICAgIH0KKyAgY2FsbGl0IChhYSwgYmIsIGNj KTsKKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisgICAgaWYgKGNjW2ldICE9IDApCisgICAg ICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIEFsdGhvdWdoIGFkZGl0IGhhcyBleHRl cm5hbCBsaW5rYWdlLCB3ZSBleHBlY3QgY2xvbmVzIHRvIGJlIGdlbmVyYXRlZCBhcworICAgZm9y IGEgZnVuY3Rpb24gd2l0aCBpbnRlcm5hbCBsaW5rYWdlLiAgKi8KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tb2ZmbG9hZC1pcGEtZHVtcCAiR2VuZXJhdGVkIGxvY2FsIGNsb25lIF9aR1YuKk4uKl9h ZGRpdCIgInNpbWRjbG9uZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1vZmZsb2FkLWlw YS1kdW1wICJHZW5lcmF0ZWQgbG9jYWwgY2xvbmUgX1pHVi4qTS4qX2FkZGl0IiAic2ltZGNsb25l IiB9IH0gKi8KZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQt c2ltZC1jbG9uZS0yLmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LXNpbWQt Y2xvbmUtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNWEzOGFl MmJjNQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJn ZXQtc2ltZC1jbG9uZS0yLmMKQEAgLTAsMCArMSwzOSBAQAorLyogeyBkZy1kbyBsaW5rIHsgdGFy Z2V0IHsgb2ZmbG9hZF90YXJnZXRfYW1kZ2NuIH0gfSB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwt b3B0aW9ucyAiLWZvZmZsb2FkLW9wdGlvbnM9LWZkdW1wLWlwYS1zaW1kY2xvbmUtZGV0YWlscyAt Zm9mZmxvYWQtb3B0aW9ucz0tZm5vLW9wZW5tcC10YXJnZXQtc2ltZC1jbG9uZSIgfSAqLworCisv KiBUZXN0IHRoYXQgc2ltZCBjbG9uZXMgZm9yIHRoZSBvZmZsb2FkIHByb2Nlc3NvciBhcmUgbm90 IGdlbmVyYXRlZCBmb3IKKyAgIGZ1bmN0aW9ucyB3aXRoICJkZWNsYXJlIHRhcmdldCIgd2hlbiBl eHBsaWNpdGx5IGRpc2FibGVkLiAgKi8KKworI3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQKK19f YXR0cmlidXRlX18gKChfX25vaW5saW5lX18pKSBpbnQgYWRkaXQgKGludCBhLCBpbnQgYikKK3sK KyAgcmV0dXJuIGEgKyBiOworfQorCitfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fKSkKK3Zv aWQgY2FsbGl0IChpbnQgKmEsIGludCAqYiwgaW50ICpjKQoreworICBpbnQgaTsKKyAgI3ByYWdt YSBvbXAgZm9yIHNpbWQKKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisgICAgY1tpXSA9IGFk ZGl0IChhW2ldLCBiW2ldKTsKK30KKyNwcmFnbWEgb21wIGVuZCBkZWNsYXJlIHRhcmdldAorCitp bnQgbWFpbiAodm9pZCkKK3sKKyAgaW50IGFhWzE2XSwgYmJbMTZdLCBjY1sxNl07CisgIGludCBp OworICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICB7CisgICAgICBhYVtpXSA9IGk7Cisg ICAgICBiYltpXSA9IC1pOworICAgIH0KKyAgY2FsbGl0IChhYSwgYmIsIGNjKTsKKyAgZm9yIChp ID0gMDsgaSA8IDE2OyBpKyspCisgICAgaWYgKGNjW2ldICE9IDApCisgICAgICByZXR1cm4gMTsK KyAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLW9mZmxvYWQtaXBhLWR1bXAt bm90ICJHZW5lcmF0ZWQgLiogY2xvbmUiICJzaW1kY2xvbmUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEv bGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RhcmdldC1zaW1kLWNsb25lLTMuYyBiL2xpYmdv bXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtc2ltZC1jbG9uZS0zLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJkZTA5MWUyNGJhCi0tLSAvZGV2L251bGwKKysr IGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RhcmdldC1zaW1kLWNsb25lLTMuYwpAQCAt MCwwICsxLDQwIEBACisvKiB7IGRnLWRvIGxpbmsgeyB0YXJnZXQgeyBvZmZsb2FkX3RhcmdldF9h bWRnY24gfSB9IH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItTzIgLWZvZmZsb2Fk LW9wdGlvbnM9LWZkdW1wLWlwYS1zaW1kY2xvbmUtZGV0YWlscyIgfSAqLworCisvKiBUZXN0IHRo YXQgZGV2aWNlIHNpbWQgY2xvbmVzIGFyZSBub3QgZ2VuZXJhdGVkIGZvciBmdW5jdGlvbnMgd2l0 aCB0aGUgaG9zdAorICAgImRlY2xhcmUgdGFyZ2V0IiBjbGF1c2Ugb25seS4gICovCisKK19fYXR0 cmlidXRlX18gKChfX25vaW5saW5lX18pKSBpbnQgYWRkaXQgKGludCBhLCBpbnQgYikKK3sKKyAg cmV0dXJuIGEgKyBiOworfQorI3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQgdG8oYWRkaXQpIGRl dmljZV90eXBlKGhvc3QpCisKKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0Cit2b2lkIGNhbGxp dCAoaW50ICphLCBpbnQgKmIsIGludCAqYykKK3sKKyAgaW50IGk7CisgICNwcmFnbWEgb21wIGZv ciBzaW1kCisgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQorICAgIGNbaV0gPSBhZGRpdCAoYVtp XSwgYltpXSk7Cit9CisjcHJhZ21hIG9tcCBlbmQgZGVjbGFyZSB0YXJnZXQKKworaW50IG1haW4g KHZvaWQpCit7CisgIGludCBhYVsxNl0sIGJiWzE2XSwgY2NbMTZdOworICBpbnQgaTsKKyAgZm9y IChpID0gMDsgaSA8IDE2OyBpKyspCisgICAgeworICAgICAgYWFbaV0gPSBpOworICAgICAgYmJb aV0gPSAtaTsKKyAgICB9CisgIGNhbGxpdCAoYWEsIGJiLCBjYyk7CisgIGZvciAoaSA9IDA7IGkg PCAxNjsgaSsrKQorICAgIGlmIChjY1tpXSAhPSAwKQorICAgICAgcmV0dXJuIDE7CisgIHJldHVy biAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1vZmZsb2FkLWlwYS1kdW1wICJkZXZpY2Ug ZG9lc24ndCBtYXRjaCIgInNpbWRjbG9uZSIgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tb2ZmbG9hZC1pcGEtZHVtcC1ub3QgIkdlbmVyYXRlZCAuKiBj bG9uZSIgInNpbWRjbG9uZSIgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0gfSAqLwotLSAKMi4zMS4x Cgo= --------------ivspamYm72CnW9sCIFGK4awm--