From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E2F51C433EF for ; Tue, 5 Oct 2021 13:56:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C605861A6E for ; Tue, 5 Oct 2021 13:56:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236221AbhJEN6E (ORCPT ); Tue, 5 Oct 2021 09:58:04 -0400 Received: from mail-co1nam11on2088.outbound.protection.outlook.com ([40.107.220.88]:52640 "EHLO NAM11-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S235907AbhJEN5C (ORCPT ); Tue, 5 Oct 2021 09:57:02 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KnEeFLchu+6AJHYgjyBTyytxc3z5nYEfpjJb3vEFT2/9478NUIqW0F0CmT//Tm0Eo3bqp7mRKrXhcRNy6QA2cwRFDhcsEq9CKasyM0aDwGexcgI9hxdpUKGlBZLC4EhvpGo1Ksx/o4bxdFCoO8FuI+OKadXqVumAuRhzNkZWm3KOmScAaIew5B+aizJKzIrATt/0EylNW9sx6VPov8tKAa+WYihkzb1tfZQN9J6Vyqp8SPzZ+Mc98CABMfUGNOVyNhwNp6oqh6Y23SX8pMrT7eWPzPwKqjcZ6GbPo5L7Phaf2NKx1Fv6ph8apYBvxq+YKk4yWZs8heucf+jyXdaT5A== 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=7/fBfOU2UiQCjFuNO0r9E7IGgZZoE6r40Ai/Mnaar+s=; b=F1STTPtDKZ9YeGZBMGgGmVywbzY813ShCkjEKFfjcUrdCbWsLDV3PJP63r/IrqsgKeRExpeWsTYtFQgARFIRgbq6fZIvWiYdkqQVUzT0GvCAIWL/7bqYZXg3+1boakkH4wxESVSkaR0DgtMZtdJlkA7ag/x3FPJGicpLdpoj9DYt8CTqt1Tq7PtbtRgQAwHDZuARVUaVjz/40/ySy5J7+IsBjAe5wRWioIDD2JkYiWKvpkKHLmiRpblKHN5d0yCqwOC+Rsk0ezlj8NqbArUZ/QCdeacQoM+p6H9sRKHHTpq9ehf5I2nFEyJ/npDO+HCVSDZwthrP/Pz4C/Xm1iKdcQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7/fBfOU2UiQCjFuNO0r9E7IGgZZoE6r40Ai/Mnaar+s=; b=GSc0O0ou+FAhJMa0N+rJ6RBWBVLVOvpHDjzGBxuEwBZ7aZeciCNpTCSQSMr0tbhLvE0JzVyLx24TfwXEzOjDjPgBS2r4/Gz5QFKtwg9WkrElqXw+xl1o9qWwX6NujPO/EcDHG3N+hJwaBR5SZhC3OXRDbORIPBS6HIUia9JMUE8= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=silabs.com; Received: from PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) by PH0PR11MB5642.namprd11.prod.outlook.com (2603:10b6:510:e5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14; Tue, 5 Oct 2021 13:55:10 +0000 Received: from PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::31cb:3b13:b0e8:d8f4]) by PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::31cb:3b13:b0e8:d8f4%9]) with mapi id 15.20.4566.022; Tue, 5 Oct 2021 13:55:10 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org, Kalle Valo Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , "David S . Miller" , devicetree@vger.kernel.org, Rob Herring , linux-mmc@vger.kernel.org, =?UTF-8?q?Pali=20Roh=C3=A1r?= , Ulf Hansson , =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= Subject: [PATCH v8 17/24] wfx: add queue.c/queue.h Date: Tue, 5 Oct 2021 15:53:53 +0200 Message-Id: <20211005135400.788058-18-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211005135400.788058-1-Jerome.Pouiller@silabs.com> References: <20211005135400.788058-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-ClientProxiedBy: PR3P189CA0084.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::29) To PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) MIME-Version: 1.0 Received: from pc-42.silabs.com (37.71.187.125) by PR3P189CA0084.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14 via Frontend Transport; Tue, 5 Oct 2021 13:55:08 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 15dc3733-f8d6-4da1-514a-08d98807bf47 X-MS-TrafficTypeDiagnostic: PH0PR11MB5642: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4714; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fZ9BzO06ucleR0eqsKmt0y2xEr5JoyZ27yfN5VcrOfVNHW9qq5iDOiFU2+8FHh38g3S/SO5t4/2lXi7V6yPMkyQgQRoTPC/pXW26IRUI2zu4mV+cXIyG9GNa6K3Le9xAsfqARdlV3XOLCVnLiBE23WnBCLuRC2VVmbYaUpt04xc8v1TYCi9rw8yNfJItC5OpKPgoj/VmGY6SXNmjTjc+PMx3+bklmBZEluP8OCLO07wBPlLBOzXMZQwcFnhAMnaaABR6S6niHftudWrcdwyc/RPXZzDtNy36DfV5sXAu5qX194alZGtGmMfFh3nFjjkvXHalenA72R5gMN7fr2voC4/2lNukCfvV7ScmNxazYyTyd3k0osZHODZ6SDdIac7vrM9z9vAaI3QzTnx+JLL9uV0f12Kv5DyDm/ugwXIv7oQV7K06AKSxltvcdyZkJyysM9qNTQZHhqeVSIHAV8mNwtnUxAwHwg4PvoN0j4dgoORiwygW++QmlNRD8GIQG5W0AoLsFgpfNod3ArCRKoS08WFh7HswL0fFNR6p6X3PCinPAFy0C1keCqBF+QfWs24fg/+ypqomtQS7dQuiNaPI8YwIMLQrpbubHQJETnWJURqgURidDHidQmNFsv4PBdwIplozB4FuX02asJzIuBqlYNnHSueAcxx+rSlU3VikhwXatgST8V9OIKd3SRt/RkXGts1IArzlt28+sbB+4RIQxA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5657.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(86362001)(5660300002)(26005)(30864003)(52116002)(7696005)(956004)(8676002)(2616005)(38100700002)(8936002)(38350700002)(4326008)(6666004)(186003)(7416002)(6916009)(66574015)(107886003)(83380400001)(36756003)(66476007)(66556008)(508600001)(2906002)(316002)(6486002)(1076003)(66946007)(54906003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eER0RkxtYmpSTGRrUnRkMFpyeEJ6cnlSNWZRbVRaN281ODhUZnFldWQ3eVJO?= =?utf-8?B?bTBFb0xtSForMUU4eGFUci9VM2FKSG1WNyt0Ynh6ODlCbHBxYm41b2RVNHp6?= =?utf-8?B?RktmSFczK2JoQkZNYlhTc1FJM2J0a0oxcU13WW8xa0RySFBOYUo1ZGZ3UTJr?= =?utf-8?B?WGNMVWluQko1VUdSdGFyY0p5MFp4VjdMNTZLYjVENFpPcTdzSENyczlITGFP?= =?utf-8?B?S1Rmay9NdDdITlBLcVdRbTFvZ2JSbGxxV2IrVlVJbVZwa2RFQ01GS0tEdDFV?= =?utf-8?B?QTBHd083SFJ5dDVmSWdmd0ZTMklwa1FnKy83Zmg1dm9FMlBUeEMxUU55UENR?= =?utf-8?B?blRUckttVldiVVpXKzZYTi9hczh0cTdOS3VpVzhrUmFWUmsyV0lIV0NCL3Vt?= =?utf-8?B?TmkrVGtReWRWcVQ0anVVTENodXlTZ0tIcWRBekMwSlBnMzlydmZKQnRqQTdy?= =?utf-8?B?TFFKT0RRUGkxWjVLSUtUWG52YU1qU2x2c3IxSzJiRitMZ0JYdUpkbCswL0NX?= =?utf-8?B?aVd3TjJ5T0U5cEN2TGppUlBJK2t6akFPSk1HRVBQM3VCa0ViYUhaTW45c2NN?= =?utf-8?B?V0JybWhtc2Q1WDBXbE1ONkRKcnhoV3R3NHZOTEZlT09nc2IwSDV3bEhZZkdX?= =?utf-8?B?Snd1MGJCNThXTjZTZnRtOHZvQVZOY1ZZaVhuVmVOZ1hES2h3dFczcXJFenB1?= =?utf-8?B?d0dmYVJDTVo4Z3dSenZaYjlxZlNtc0J3aWlHZFc3R2JuK3ZXSzJ5TytHaE1k?= =?utf-8?B?a2Jrd0s5QlJsQThpTnZOQWFGSlc0Z0hQVFY1djl0WWVJMkx1ajd0UkxlTTll?= =?utf-8?B?NVZOSkNVSm1TNXRlRzFZcUNwTzEzUTI2SW1yUWNxTnRqRXlqSGx6QlFPTGsy?= =?utf-8?B?R1BHNDJzbHdKN0czRGYxOHNDU3FmS0ZFZG5EOFBQLyt6TUVJb2N1dWpnWXhp?= =?utf-8?B?VmZKUkRIZ0tHa3NjT2g5WHRGWmUvUUZqZ3hyUlZoWnlnWUEyYjFWeVdqeEhY?= =?utf-8?B?d1lNS1VUL1VjWUg2ZVJFVGthS09SUjZiTkNabG03alJaWm5XMzU0aHNTZVRK?= =?utf-8?B?cU1Yall3Rk1qRjJOVnVacWtaMnlVc01GRlkyUU1sRWN1VFoxeGh5MkQ1d1Uy?= =?utf-8?B?OS9DWTY2MENrS1FyOHkwbUpGMkZGaUhQSStBMnRFeUdwbGlEd2FSbGVxUFdy?= =?utf-8?B?WndESGgrWllWOVNnUU9zT3h6MlUrODJUVGEvNXpFTTN0NjRrbGk0b1JNNkZW?= =?utf-8?B?anVkOHkrNWRCaHpvREZlUXVmUFQ4dG5iRERiYW9pOEo5RXU2TE41amI0K1dZ?= =?utf-8?B?RVRwNWRoWEIyWjRKc1ZodndCOUJoMEt5WUw5ZmFaL3A5THFzeThySS9TU0Y2?= =?utf-8?B?R1hnclV3bGEycTlaTWFhWHhyQXlwYmtxRWovWm1aOXFUUFIyVHNURXJ4VUhr?= =?utf-8?B?TFVUTHFrVDhwUVRLMFI5a2hWZFp6K0RaR1FhVzJ6ckVxRGt4T1dHVDRuUkRj?= =?utf-8?B?dmN0U0g2WmcrcnhiTnpLWWlCdDFad1dWbFFNbVduaVJFcUdtd3V6VmZVUERY?= =?utf-8?B?dFN1enhiTGZjYW05U1c4UkVhMjFsNzk0UGc2UThkVFRGZFN1QTIxM3kxTXIx?= =?utf-8?B?alFUMXZ6Sko2eUtZY2NUL0dvNGxzYmFNVHpVTUJaZXJkUkw2cHBqb1JRS0Z4?= =?utf-8?B?TExEMXBiQllJWGtUUld0N1JDUjlzZlFXY2lsT2Q0TlplbTJIUHo0eGFaaERR?= =?utf-8?Q?O9lTEAT7EQ1jkSn7yRj+Wdmc1wc7uOQlMAyOtZL?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15dc3733-f8d6-4da1-514a-08d98807bf47 X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5657.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2021 13:55:10.7425 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HB7TLLfaHThgTPRpbJK6Ym7hzxwAQXrJqcjKGKndRF+HYXR0qXugeUXhJG+fvfMx/8FJ0jOKwVDqniNU8pN3CQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5642 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVldWUuYyB8IDMwNyArKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVl dWUuaCB8ICA0NSArKysrCiAyIGZpbGVzIGNoYW5nZWQsIDM1MiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5o CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzFjNmVmOTRhOTA0Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jCkBAIC0wLDAgKzEsMzA3IEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogUXVldWUg YmV0d2VlbiB0aGUgdHggb3BlcmF0aW9uIGFuZCB0aGUgYmggd29ya3F1ZXVlLgorICoKKyAqIENv cHlyaWdodCAoYykgMjAxNy0yMDIwLCBTaWxpY29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29w eXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmljc3NvbgorICovCisjaW5jbHVkZSA8bGludXgvc2NoZWQu aD4KKyNpbmNsdWRlIDxuZXQvbWFjODAyMTEuaD4KKworI2luY2x1ZGUgInF1ZXVlLmgiCisjaW5j bHVkZSAid2Z4LmgiCisjaW5jbHVkZSAic3RhLmgiCisjaW5jbHVkZSAiZGF0YV90eC5oIgorI2lu Y2x1ZGUgInRyYWNlcy5oIgorCit2b2lkIHdmeF90eF9sb2NrKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 KQoreworCWF0b21pY19pbmMoJndkZXYtPnR4X2xvY2spOworfQorCit2b2lkIHdmeF90eF91bmxv Y2soc3RydWN0IHdmeF9kZXYgKndkZXYpCit7CisJaW50IHR4X2xvY2sgPSBhdG9taWNfZGVjX3Jl dHVybigmd2Rldi0+dHhfbG9jayk7CisKKwlXQVJOKHR4X2xvY2sgPCAwLCAiaW5jb25zaXN0ZW50 IHR4X2xvY2sgdmFsdWUiKTsKKwlpZiAoIXR4X2xvY2spCisJCXdmeF9iaF9yZXF1ZXN0X3R4KHdk ZXYpOworfQorCit2b2lkIHdmeF90eF9mbHVzaChzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwlp bnQgcmV0OworCisJLyogRG8gbm90IHdhaXQgZm9yIGFueSByZXBseSBpZiBjaGlwIGlzIGZyb3pl biAqLworCWlmICh3ZGV2LT5jaGlwX2Zyb3plbikKKwkJcmV0dXJuOworCisJd2Z4X3R4X2xvY2so d2Rldik7CisJbXV0ZXhfbG9jaygmd2Rldi0+aGlmX2NtZC5sb2NrKTsKKwlyZXQgPSB3YWl0X2V2 ZW50X3RpbWVvdXQod2Rldi0+aGlmLnR4X2J1ZmZlcnNfZW1wdHksCisJCQkJICF3ZGV2LT5oaWYu dHhfYnVmZmVyc191c2VkLAorCQkJCSBtc2Vjc190b19qaWZmaWVzKDMwMDApKTsKKwlpZiAoIXJl dCkgeworCQlkZXZfd2Fybih3ZGV2LT5kZXYsICJjYW5ub3QgZmx1c2ggdHggYnVmZmVycyAoJWQg c3RpbGwgYnVzeSlcbiIsCisJCQkgd2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNlZCk7CisJCXdmeF9w ZW5kaW5nX2R1bXBfb2xkX2ZyYW1lcyh3ZGV2LCAzMDAwKTsKKwkJLyogRklYTUU6IGRyb3AgcGVu ZGluZyBmcmFtZXMgaGVyZSAqLworCQl3ZGV2LT5jaGlwX2Zyb3plbiA9IHRydWU7CisJfQorCW11 dGV4X3VubG9jaygmd2Rldi0+aGlmX2NtZC5sb2NrKTsKKwl3ZnhfdHhfdW5sb2NrKHdkZXYpOwor fQorCit2b2lkIHdmeF90eF9sb2NrX2ZsdXNoKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQoreworCXdm eF90eF9sb2NrKHdkZXYpOworCXdmeF90eF9mbHVzaCh3ZGV2KTsKK30KKwordm9pZCB3ZnhfdHhf cXVldWVzX2luaXQoc3RydWN0IHdmeF92aWYgKnd2aWYpCit7CisJLyogVGhlIGRldmljZSBpcyBp biBjaGFyZ2UgdG8gcmVzcGVjdCB0aGUgZGV0YWlscyBvZiB0aGUgUW9TIHBhcmFtZXRlcnMuCisJ ICogVGhlIGRyaXZlciBqdXN0IGVuc3VyZSB0aGF0IGl0IHJvdWdodGx5IHJlc3BlY3QgdGhlIHBy aW9yaXRpZXMgdG8KKwkgKiBhdm9pZCBhbnkgc2hvcnRhZ2UuCisJICovCisJY29uc3QgaW50IHBy aW9yaXRpZXNbSUVFRTgwMjExX05VTV9BQ1NdID0geyAxLCAyLCA2NCwgMTI4IH07CisJaW50IGk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgSUVFRTgwMjExX05VTV9BQ1M7ICsraSkgeworCQlza2JfcXVl dWVfaGVhZF9pbml0KCZ3dmlmLT50eF9xdWV1ZVtpXS5ub3JtYWwpOworCQlza2JfcXVldWVfaGVh ZF9pbml0KCZ3dmlmLT50eF9xdWV1ZVtpXS5jYWIpOworCQl3dmlmLT50eF9xdWV1ZVtpXS5wcmlv cml0eSA9IHByaW9yaXRpZXNbaV07CisJfQorfQorCitib29sIHdmeF90eF9xdWV1ZV9lbXB0eShz dHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgc3RydWN0IHdmeF9xdWV1ZSAqcXVldWUpCit7CisJcmV0dXJu IHNrYl9xdWV1ZV9lbXB0eV9sb2NrbGVzcygmcXVldWUtPm5vcm1hbCkgJiYKKwkgICAgICAgc2ti X3F1ZXVlX2VtcHR5X2xvY2tsZXNzKCZxdWV1ZS0+Y2FiKTsKK30KKwordm9pZCB3ZnhfdHhfcXVl dWVzX2NoZWNrX2VtcHR5KHN0cnVjdCB3ZnhfdmlmICp3dmlmKQoreworCWludCBpOworCisJZm9y IChpID0gMDsgaSA8IElFRUU4MDIxMV9OVU1fQUNTOyArK2kpIHsKKwkJV0FSTl9PTihhdG9taWNf cmVhZCgmd3ZpZi0+dHhfcXVldWVbaV0ucGVuZGluZ19mcmFtZXMpKTsKKwkJV0FSTl9PTighd2Z4 X3R4X3F1ZXVlX2VtcHR5KHd2aWYsICZ3dmlmLT50eF9xdWV1ZVtpXSkpOworCX0KK30KKworc3Rh dGljIHZvaWQgX193ZnhfdHhfcXVldWVfZHJvcChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwKKwkJCQlz dHJ1Y3Qgc2tfYnVmZl9oZWFkICpza2JfcXVldWUsCisJCQkJc3RydWN0IHNrX2J1ZmZfaGVhZCAq ZHJvcHBlZCkKK3sKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqdG1wOworCisJc3Bpbl9sb2NrX2Jo KCZza2JfcXVldWUtPmxvY2spOworCXNrYl9xdWV1ZV93YWxrX3NhZmUoc2tiX3F1ZXVlLCBza2Is IHRtcCkgeworCQlfX3NrYl91bmxpbmsoc2tiLCBza2JfcXVldWUpOworCQlza2JfcXVldWVfaGVh ZChkcm9wcGVkLCBza2IpOworCX0KKwlzcGluX3VubG9ja19iaCgmc2tiX3F1ZXVlLT5sb2NrKTsK K30KKwordm9pZCB3ZnhfdHhfcXVldWVfZHJvcChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgc3RydWN0 IHdmeF9xdWV1ZSAqcXVldWUsCisJCSAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpkcm9wcGVk KQoreworCV9fd2Z4X3R4X3F1ZXVlX2Ryb3Aod3ZpZiwgJnF1ZXVlLT5jYWIsIGRyb3BwZWQpOwor CV9fd2Z4X3R4X3F1ZXVlX2Ryb3Aod3ZpZiwgJnF1ZXVlLT5ub3JtYWwsIGRyb3BwZWQpOworCXdh a2VfdXAoJnd2aWYtPndkZXYtPnR4X2RlcXVldWUpOworfQorCit2b2lkIHdmeF90eF9xdWV1ZXNf cHV0KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXN0cnVj dCB3ZnhfcXVldWUgKnF1ZXVlID0gJnd2aWYtPnR4X3F1ZXVlW3NrYl9nZXRfcXVldWVfbWFwcGlu Zyhza2IpXTsKKwlzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8gPSBJRUVFODAyMTFf U0tCX0NCKHNrYik7CisKKwlpZiAodHhfaW5mby0+ZmxhZ3MgJiBJRUVFODAyMTFfVFhfQ1RMX1NF TkRfQUZURVJfRFRJTSkKKwkJc2tiX3F1ZXVlX3RhaWwoJnF1ZXVlLT5jYWIsIHNrYik7CisJZWxz ZQorCQlza2JfcXVldWVfdGFpbCgmcXVldWUtPm5vcm1hbCwgc2tiKTsKK30KKwordm9pZCB3Znhf cGVuZGluZ19kcm9wKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpk cm9wcGVkKQoreworCXN0cnVjdCB3ZnhfcXVldWUgKnF1ZXVlOworCXN0cnVjdCB3ZnhfdmlmICp3 dmlmOworCXN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmOworCXN0cnVjdCBza19idWZmICpza2I7CisK KwlXQVJOKCF3ZGV2LT5jaGlwX2Zyb3plbiwgIiVzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gcmVj b3ZlciBhIGZyb3plbiBkZXZpY2UiLAorCSAgICAgX19mdW5jX18pOworCXdoaWxlICgoc2tiID0g c2tiX2RlcXVldWUoJndkZXYtPnR4X3BlbmRpbmcpKSAhPSBOVUxMKSB7CisJCWhpZiA9IChzdHJ1 Y3Qgd2Z4X2hpZl9tc2cgKilza2ItPmRhdGE7CisJCXd2aWYgPSB3ZGV2X3RvX3d2aWYod2Rldiwg aGlmLT5pbnRlcmZhY2UpOworCQlpZiAod3ZpZikgeworCQkJcXVldWUgPSAmd3ZpZi0+dHhfcXVl dWVbc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYildOworCQkJV0FSTl9PTihza2JfZ2V0X3F1ZXVl X21hcHBpbmcoc2tiKSA+IDMpOworCQkJV0FSTl9PTighYXRvbWljX3JlYWQoJnF1ZXVlLT5wZW5k aW5nX2ZyYW1lcykpOworCQkJYXRvbWljX2RlYygmcXVldWUtPnBlbmRpbmdfZnJhbWVzKTsKKwkJ fQorCQlza2JfcXVldWVfaGVhZChkcm9wcGVkLCBza2IpOworCX0KK30KKworc3RydWN0IHNrX2J1 ZmYgKndmeF9wZW5kaW5nX2dldChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIHBhY2tldF9pZCkK K3sKKwlzdHJ1Y3Qgd2Z4X3F1ZXVlICpxdWV1ZTsKKwlzdHJ1Y3Qgd2Z4X2hpZl9yZXFfdHggKnJl cTsKKwlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZjsKKwlzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZjsKKwlz dHJ1Y3Qgc2tfYnVmZiAqc2tiOworCisJc3Bpbl9sb2NrX2JoKCZ3ZGV2LT50eF9wZW5kaW5nLmxv Y2spOworCXNrYl9xdWV1ZV93YWxrKCZ3ZGV2LT50eF9wZW5kaW5nLCBza2IpIHsKKwkJaGlmID0g KHN0cnVjdCB3ZnhfaGlmX21zZyAqKXNrYi0+ZGF0YTsKKwkJcmVxID0gKHN0cnVjdCB3ZnhfaGlm X3JlcV90eCAqKWhpZi0+Ym9keTsKKwkJaWYgKHJlcS0+cGFja2V0X2lkICE9IHBhY2tldF9pZCkK KwkJCWNvbnRpbnVlOworCQlzcGluX3VubG9ja19iaCgmd2Rldi0+dHhfcGVuZGluZy5sb2NrKTsK KwkJd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFjZSk7CisJCWlmICh3dmlm KSB7CisJCQlxdWV1ZSA9ICZ3dmlmLT50eF9xdWV1ZVtza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2ti KV07CisJCQlXQVJOX09OKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpID4gMyk7CisJCQlXQVJO X09OKCFhdG9taWNfcmVhZCgmcXVldWUtPnBlbmRpbmdfZnJhbWVzKSk7CisJCQlhdG9taWNfZGVj KCZxdWV1ZS0+cGVuZGluZ19mcmFtZXMpOworCQl9CisJCXNrYl91bmxpbmsoc2tiLCAmd2Rldi0+ dHhfcGVuZGluZyk7CisJCXJldHVybiBza2I7CisJfQorCXNwaW5fdW5sb2NrX2JoKCZ3ZGV2LT50 eF9wZW5kaW5nLmxvY2spOworCVdBUk4oMSwgImNhbm5vdCBmaW5kIHBhY2tldCBpbiBwZW5kaW5n IHF1ZXVlIik7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgd2Z4X3BlbmRpbmdfZHVtcF9vbGRf ZnJhbWVzKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1bnNpZ25lZCBpbnQgbGltaXRfbXMpCit7CisJ a3RpbWVfdCBub3cgPSBrdGltZV9nZXQoKTsKKwlzdHJ1Y3Qgd2Z4X3R4X3ByaXYgKnR4X3ByaXY7 CisJc3RydWN0IHdmeF9oaWZfcmVxX3R4ICpyZXE7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwli b29sIGZpcnN0ID0gdHJ1ZTsKKworCXNwaW5fbG9ja19iaCgmd2Rldi0+dHhfcGVuZGluZy5sb2Nr KTsKKwlza2JfcXVldWVfd2Fsaygmd2Rldi0+dHhfcGVuZGluZywgc2tiKSB7CisJCXR4X3ByaXYg PSB3Znhfc2tiX3R4X3ByaXYoc2tiKTsKKwkJcmVxID0gd2Z4X3NrYl90eHJlcShza2IpOworCQlp ZiAoa3RpbWVfYWZ0ZXIobm93LCBrdGltZV9hZGRfbXModHhfcHJpdi0+eG1pdF90aW1lc3RhbXAs CisJCQkJCQkgIGxpbWl0X21zKSkpIHsKKwkJCWlmIChmaXJzdCkgeworCQkJCWRldl9pbmZvKHdk ZXYtPmRldiwgImZyYW1lcyBzdHVjayBpbiBmaXJtd2FyZSBzaW5jZSAlZG1zIG9yIG1vcmU6XG4i LAorCQkJCQkgbGltaXRfbXMpOworCQkJCWZpcnN0ID0gZmFsc2U7CisJCQl9CisJCQlkZXZfaW5m byh3ZGV2LT5kZXYsICIgICBpZCAlMDh4IHNlbnQgJWxsZG1zIGFnb1xuIiwKKwkJCQkgcmVxLT5w YWNrZXRfaWQsCisJCQkJIGt0aW1lX21zX2RlbHRhKG5vdywgdHhfcHJpdi0+eG1pdF90aW1lc3Rh bXApKTsKKwkJfQorCX0KKwlzcGluX3VubG9ja19iaCgmd2Rldi0+dHhfcGVuZGluZy5sb2NrKTsK K30KKwordW5zaWduZWQgaW50IHdmeF9wZW5kaW5nX2dldF9wa3RfdXNfZGVsYXkoc3RydWN0IHdm eF9kZXYgKndkZXYsCisJCQkJCSAgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlrdGltZV90IG5v dyA9IGt0aW1lX2dldCgpOworCXN0cnVjdCB3ZnhfdHhfcHJpdiAqdHhfcHJpdiA9IHdmeF9za2Jf dHhfcHJpdihza2IpOworCisJcmV0dXJuIGt0aW1lX3VzX2RlbHRhKG5vdywgdHhfcHJpdi0+eG1p dF90aW1lc3RhbXApOworfQorCitib29sIHdmeF90eF9xdWV1ZXNfaGFzX2NhYihzdHJ1Y3Qgd2Z4 X3ZpZiAqd3ZpZikKK3sKKwlpbnQgaTsKKworCWlmICh3dmlmLT52aWYtPnR5cGUgIT0gTkw4MDIx MV9JRlRZUEVfQVApCisJCXJldHVybiBmYWxzZTsKKwlmb3IgKGkgPSAwOyBpIDwgSUVFRTgwMjEx X05VTV9BQ1M7ICsraSkKKwkJLyogTm90ZTogc2luY2Ugb25seSBBUCBjYW4gaGF2ZSBtY2FzdCBm cmFtZXMgaW4gcXVldWUgYW5kIG9ubHkKKwkJICogb25lIHZpZiBjYW4gYmUgQVAsIGFsbCBxdWV1 ZWQgZnJhbWVzIGhhcyBzYW1lIGludGVyZmFjZSBpZAorCQkgKi8KKwkJaWYgKCFza2JfcXVldWVf ZW1wdHlfbG9ja2xlc3MoJnd2aWYtPnR4X3F1ZXVlW2ldLmNhYikpCisJCQlyZXR1cm4gdHJ1ZTsK KwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X3R4X3F1ZXVlX2dldF93ZWlnaHQo c3RydWN0IHdmeF9xdWV1ZSAqcXVldWUpCit7CisJcmV0dXJuIGF0b21pY19yZWFkKCZxdWV1ZS0+ cGVuZGluZ19mcmFtZXMpICogcXVldWUtPnByaW9yaXR5OworfQorCitzdGF0aWMgc3RydWN0IHNr X2J1ZmYgKndmeF90eF9xdWV1ZXNfZ2V0X3NrYihzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwlz dHJ1Y3Qgd2Z4X3F1ZXVlICpxdWV1ZXNbSUVFRTgwMjExX05VTV9BQ1MgKiBBUlJBWV9TSVpFKHdk ZXYtPnZpZildOworCWludCBpLCBqLCBudW1fcXVldWVzID0gMDsKKwlzdHJ1Y3Qgd2Z4X3ZpZiAq d3ZpZjsKKwlzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZjsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwor CisJLyogc29ydCB0aGUgcXVldWVzICovCisJd3ZpZiA9IE5VTEw7CisJd2hpbGUgKCh3dmlmID0g d3ZpZl9pdGVyYXRlKHdkZXYsIHd2aWYpKSAhPSBOVUxMKSB7CisJCWZvciAoaSA9IDA7IGkgPCBJ RUVFODAyMTFfTlVNX0FDUzsgaSsrKSB7CisJCQlXQVJOX09OKG51bV9xdWV1ZXMgPj0gQVJSQVlf U0laRShxdWV1ZXMpKTsKKwkJCXF1ZXVlc1tudW1fcXVldWVzXSA9ICZ3dmlmLT50eF9xdWV1ZVtp XTsKKwkJCWZvciAoaiA9IG51bV9xdWV1ZXM7IGogPiAwOyBqLS0pCisJCQkJaWYgKHdmeF90eF9x dWV1ZV9nZXRfd2VpZ2h0KHF1ZXVlc1tqXSkgPAorCQkJCSAgICB3ZnhfdHhfcXVldWVfZ2V0X3dl aWdodChxdWV1ZXNbaiAtIDFdKSkKKwkJCQkJc3dhcChxdWV1ZXNbaiAtIDFdLCBxdWV1ZXNbal0p OworCQkJbnVtX3F1ZXVlcysrOworCQl9CisJfQorCisJd3ZpZiA9IE5VTEw7CisJd2hpbGUgKCh3 dmlmID0gd3ZpZl9pdGVyYXRlKHdkZXYsIHd2aWYpKSAhPSBOVUxMKSB7CisJCWlmICghd3ZpZi0+ YWZ0ZXJfZHRpbV90eF9hbGxvd2VkKQorCQkJY29udGludWU7CisJCWZvciAoaSA9IDA7IGkgPCBu dW1fcXVldWVzOyBpKyspIHsKKwkJCXNrYiA9IHNrYl9kZXF1ZXVlKCZxdWV1ZXNbaV0tPmNhYik7 CisJCQlpZiAoIXNrYikKKwkJCQljb250aW51ZTsKKwkJCS8qIE5vdGU6IHNpbmNlIG9ubHkgQVAg Y2FuIGhhdmUgbWNhc3QgZnJhbWVzIGluIHF1ZXVlCisJCQkgKiBhbmQgb25seSBvbmUgdmlmIGNh biBiZSBBUCwgYWxsIHF1ZXVlZCBmcmFtZXMgaGFzCisJCQkgKiBzYW1lIGludGVyZmFjZSBpZAor CQkJICovCisJCQloaWYgPSAoc3RydWN0IHdmeF9oaWZfbXNnICopc2tiLT5kYXRhOworCQkJV0FS Tl9PTihoaWYtPmludGVyZmFjZSAhPSB3dmlmLT5pZCk7CisJCQlXQVJOX09OKHF1ZXVlc1tpXSAh PQorCQkJCSZ3dmlmLT50eF9xdWV1ZVtza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKV0pOworCQkJ YXRvbWljX2luYygmcXVldWVzW2ldLT5wZW5kaW5nX2ZyYW1lcyk7CisJCQl0cmFjZV9xdWV1ZXNf c3RhdHMod2RldiwgcXVldWVzW2ldKTsKKwkJCXJldHVybiBza2I7CisJCX0KKwkJLyogTm8gbW9y ZSBtdWx0aWNhc3QgdG8gc2VudCAqLworCQl3dmlmLT5hZnRlcl9kdGltX3R4X2FsbG93ZWQgPSBm YWxzZTsKKwkJc2NoZWR1bGVfd29yaygmd3ZpZi0+dXBkYXRlX3RpbV93b3JrKTsKKwl9CisKKwlm b3IgKGkgPSAwOyBpIDwgbnVtX3F1ZXVlczsgaSsrKSB7CisJCXNrYiA9IHNrYl9kZXF1ZXVlKCZx dWV1ZXNbaV0tPm5vcm1hbCk7CisJCWlmIChza2IpIHsKKwkJCWF0b21pY19pbmMoJnF1ZXVlc1tp XS0+cGVuZGluZ19mcmFtZXMpOworCQkJdHJhY2VfcXVldWVzX3N0YXRzKHdkZXYsIHF1ZXVlc1tp XSk7CisJCQlyZXR1cm4gc2tiOworCQl9CisJfQorCXJldHVybiBOVUxMOworfQorCitzdHJ1Y3Qg d2Z4X2hpZl9tc2cgKndmeF90eF9xdWV1ZXNfZ2V0KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQorewor CXN0cnVjdCB3ZnhfdHhfcHJpdiAqdHhfcHJpdjsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCisJ aWYgKGF0b21pY19yZWFkKCZ3ZGV2LT50eF9sb2NrKSkKKwkJcmV0dXJuIE5VTEw7CisJc2tiID0g d2Z4X3R4X3F1ZXVlc19nZXRfc2tiKHdkZXYpOworCWlmICghc2tiKQorCQlyZXR1cm4gTlVMTDsK Kwlza2JfcXVldWVfdGFpbCgmd2Rldi0+dHhfcGVuZGluZywgc2tiKTsKKwl3YWtlX3VwKCZ3ZGV2 LT50eF9kZXF1ZXVlKTsKKwl0eF9wcml2ID0gd2Z4X3NrYl90eF9wcml2KHNrYik7CisJdHhfcHJp di0+eG1pdF90aW1lc3RhbXAgPSBrdGltZV9nZXQoKTsKKwlyZXR1cm4gKHN0cnVjdCB3ZnhfaGlm X21zZyAqKXNrYi0+ZGF0YTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3Np bGFicy93ZngvcXVldWUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVldWUu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY2NTk2YTlhYmUzMAot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVldWUu aApAQCAtMCwwICsxLDQ1IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v bmx5ICovCisvKgorICogUXVldWUgYmV0d2VlbiB0aGUgdHggb3BlcmF0aW9uIGFuZCB0aGUgYmgg d29ya3F1ZXVlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDIwLCBTaWxpY29uIExhYm9y YXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmljc3NvbgorICovCisj aWZuZGVmIFdGWF9RVUVVRV9ICisjZGVmaW5lIFdGWF9RVUVVRV9ICisKKyNpbmNsdWRlIDxsaW51 eC9za2J1ZmYuaD4KKyNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KKworc3RydWN0IHdmeF9kZXY7 CitzdHJ1Y3Qgd2Z4X3ZpZjsKKworc3RydWN0IHdmeF9xdWV1ZSB7CisJc3RydWN0IHNrX2J1ZmZf aGVhZAlub3JtYWw7CisJc3RydWN0IHNrX2J1ZmZfaGVhZAljYWI7IC8qIENvbnRlbnQgQWZ0ZXIg KERUSU0pIEJlYWNvbiAqLworCWF0b21pY190CQlwZW5kaW5nX2ZyYW1lczsKKwlpbnQJCQlwcmlv cml0eTsKK307CisKK3ZvaWQgd2Z4X3R4X2xvY2soc3RydWN0IHdmeF9kZXYgKndkZXYpOwordm9p ZCB3ZnhfdHhfdW5sb2NrKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KTsKK3ZvaWQgd2Z4X3R4X2ZsdXNo KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KTsKK3ZvaWQgd2Z4X3R4X2xvY2tfZmx1c2goc3RydWN0IHdm eF9kZXYgKndkZXYpOworCit2b2lkIHdmeF90eF9xdWV1ZXNfaW5pdChzdHJ1Y3Qgd2Z4X3ZpZiAq d3ZpZik7Cit2b2lkIHdmeF90eF9xdWV1ZXNfY2hlY2tfZW1wdHkoc3RydWN0IHdmeF92aWYgKnd2 aWYpOworYm9vbCB3ZnhfdHhfcXVldWVzX2hhc19jYWIoc3RydWN0IHdmeF92aWYgKnd2aWYpOwor dm9pZCB3ZnhfdHhfcXVldWVzX3B1dChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgc3RydWN0IHNrX2J1 ZmYgKnNrYik7CitzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKndmeF90eF9xdWV1ZXNfZ2V0KHN0cnVjdCB3 ZnhfZGV2ICp3ZGV2KTsKKworYm9vbCB3ZnhfdHhfcXVldWVfZW1wdHkoc3RydWN0IHdmeF92aWYg Knd2aWYsIHN0cnVjdCB3ZnhfcXVldWUgKnF1ZXVlKTsKK3ZvaWQgd2Z4X3R4X3F1ZXVlX2Ryb3Ao c3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCB3ZnhfcXVldWUgKnF1ZXVlLAorCQkgICAgICAg c3RydWN0IHNrX2J1ZmZfaGVhZCAqZHJvcHBlZCk7CisKK3N0cnVjdCBza19idWZmICp3ZnhfcGVu ZGluZ19nZXQoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBwYWNrZXRfaWQpOwordm9pZCB3Znhf cGVuZGluZ19kcm9wKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpk cm9wcGVkKTsKK3Vuc2lnbmVkIGludCB3ZnhfcGVuZGluZ19nZXRfcGt0X3VzX2RlbGF5KHN0cnVj dCB3ZnhfZGV2ICp3ZGV2LAorCQkJCQkgIHN0cnVjdCBza19idWZmICpza2IpOwordm9pZCB3Znhf cGVuZGluZ19kdW1wX29sZF9mcmFtZXMoc3RydWN0IHdmeF9kZXYgKndkZXYsIHVuc2lnbmVkIGlu dCBsaW1pdF9tcyk7CisKKyNlbmRpZgotLSAKMi4zMy4wCgo=