Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp1801585rwi; Thu, 27 Oct 2022 22:16:52 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6PvjdMdv9DXJeYY8bGs77L3QXzYzq9yjV04VxPCC9pdQ9Oi77h2nwufflxCg2w3lxD8KHy X-Received: by 2002:a05:6402:5507:b0:452:183f:16d1 with SMTP id fi7-20020a056402550700b00452183f16d1mr50014035edb.96.1666934212118; Thu, 27 Oct 2022 22:16:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1666934212; cv=pass; d=google.com; s=arc-20160816; b=QW+pS9i2276H4qE3e30p2sCfqo59KYwE4gtxrDLJKTI0DxmuTVYPZTUr1yuYFL29he cJnK7BNYMtJt/2xquihurcMqzTq+vMLsWLxTJgFg5FlnlyJJ5ibp9uh4N57yZbxFTg+3 P/yMROByqujGB5w3Z+HACpcjRTCN62Jx3zju1qFQLtA3HjcwE9CB2MEVgVyGHAxn3yOr b1AvLCb7RxcOjx5W+7rt8Dp54L6dRi8jc3k9Z4frjqJl0LUBzUsH6UOjf8pHaO+yzrbW Kz8GDZo2Wt/J1zZ/b1S8kCRQO/Wo6pQvClYonNRzhbBRMU1vypAyS1v+2ZG/Gx6tF2xh JKhw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature:dkim-signature; bh=iG3YS/dkDPwhaa8mKpX5G09i5eQsrdOZ9i/WgRWgpII=; b=AkBJjVukXpB+uylE+j2q16Hn2EFaEYb4jgSwHW91cVOUnMfbhqE9pxuXmWLhtXiyUX 32BsU7QFShHGyBpVC9+ARSQCngxVtqUxDDuhskJ7WbHDU6M70kjzzIk/cW53qHOOwEr+ NUJ4PdcxEKUDs2dyV5t20g9U4LzzTBI9JwA8UH0Zj9nJDF5M8Wr3OdQWcmwM6h7/5ROr QUxVqAOdtTe/JAN4EEuamr5pp/AjIOrpswWt5jw+8XwGtuYWK2d0DMsbqeJUYcMDYMWS ThjH3p0v+qYOZX0Ml9b+XalkPV3QCVdle3hB04hSzmxDmzsrYXiK/mQAao4weVzqdJbq C6WA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=im00hiqW; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=fy7yjC24; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y10-20020a50eb0a000000b00461e685ce72si3426772edp.116.2022.10.27.22.16.26; Thu, 27 Oct 2022 22:16:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=im00hiqW; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=fy7yjC24; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229744AbiJ1ElX (ORCPT + 99 others); Fri, 28 Oct 2022 00:41:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229543AbiJ1ElV (ORCPT ); Fri, 28 Oct 2022 00:41:21 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2BB21A3E30; Thu, 27 Oct 2022 21:41:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1666932079; x=1698468079; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=iG3YS/dkDPwhaa8mKpX5G09i5eQsrdOZ9i/WgRWgpII=; b=im00hiqW5nDcMy1dBpVyBrmCvE1XqWQvidlAxvVLMZ1wFCg7MIuuUB7p +xqweF7Iga/GN/pdmTPu7X8tvkOibbd24guZnhTSoFCkfI36NhWNAgyv7 4qLcoMOB791Hnnz/mP0jSMXV24R9WA0+hEyr6/i7a+ukMxy2O7OvvN6BF I1z7ZXSkYR2i/QpKc/ugdmiiG0+0qAv5YtpKKYemR3MDRRDbJ6PZL/RSY 8Q6m4MWNO7kOnCUUeFGFefI3m4UR7GfEBoqu1IooOqMrjqes3ALsK02Rl JuqPcA8IUTKMzOzhTraquZuR+P0WOrk7KEXQqLBWc4mJaRha0Aa21BzkC w==; X-IronPort-AV: E=Sophos;i="5.95,219,1661842800"; d="scan'208";a="180897285" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 27 Oct 2022 21:41:18 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Thu, 27 Oct 2022 21:41:17 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12 via Frontend Transport; Thu, 27 Oct 2022 21:41:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MXZBB+gs8Su8yRyUbO1adonCFpYMHNIQo2FsD2jwoHtNlmL84WVB2jjqR5nG26h0MwxPUVD0rJvUr9ZK4LyQ2/P6zPK5GVPFiZAUTCOcHmvZ96WZe1jKZgFhobwMg/11PqNlqpsjV/NMdMbHqt0MR9ejt25soMUpFz+lD6YA0GWGfH0xJ5J8OO60CClmmoQqEwxKhNnroIOD+u3gI8Nq0BrsriXYqI3sjGH0l9bjqG3DOLKDYlaDFF11ZxSrdLI0ybJ/ko0qTlV8/xELCM8VemigvsumALRnBdglcx5fvlKPDHlcMJTxQ6f1MSyVrDyYA73XI08MvHdQwvvGKMOOpA== 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=iG3YS/dkDPwhaa8mKpX5G09i5eQsrdOZ9i/WgRWgpII=; b=lmmu6NwcBc+tdHfcMM5RnET9JNhhwrOClzCJ5/RSIjDqOCzbwtQpWL4nqelYu9WVVdljTWd/nmro3b1d3vRfKLKlSQ3jPD8EUS3Z9hRwwj1uwDWi02PyjXH3qRb6zoNvOAEPay2uqpsDgbGr/l3UNlLMdBZFnpVx9u8iYt+PR/vXhwr4SkcrBEZ3SY9LsaoED5PLHjaxry8cRTZXnh/NNz/fqgcNNIRQCp/jXNv5wJ0inXOjP5DhS3detY7qs+4JeNgxX4rjRFmiHNKkiX0YoNerbLgaZIExop5DQvpjx/eMYSns8/mOqgKzccm/SBC3ahDZVloCwcSzByjtDqN2qA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iG3YS/dkDPwhaa8mKpX5G09i5eQsrdOZ9i/WgRWgpII=; b=fy7yjC24gVT++srF4uKhwTyKxgMC0zpu7CwpiYhHMuscPAwkPhJQCXnyF3grr5+stCgaJDIecYzLu27+JeBiY4kQjc3a4pBdO/7LWAUInOhIKQPZG7XfViwmsvrJyb/ieBifMzqjTZBBaoYRPOkO8fMXRcn0fGGVE8hkHyMTbvg= Received: from DM5PR11MB0076.namprd11.prod.outlook.com (2603:10b6:4:6b::28) by DM4PR11MB6237.namprd11.prod.outlook.com (2603:10b6:8:a9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.15; Fri, 28 Oct 2022 04:41:06 +0000 Received: from DM5PR11MB0076.namprd11.prod.outlook.com ([fe80::faca:fe8a:e6fa:2d7]) by DM5PR11MB0076.namprd11.prod.outlook.com ([fe80::faca:fe8a:e6fa:2d7%3]) with mapi id 15.20.5746.021; Fri, 28 Oct 2022 04:41:06 +0000 From: To: , , , , , , , , , , , CC: , , , , Subject: Re: [RFC net-next 2/2] net: dsa: Add driver for Maxlinear GSW1XX switch Thread-Topic: [RFC net-next 2/2] net: dsa: Add driver for Maxlinear GSW1XX switch Thread-Index: AQHY6oOXl9CFtmBV6kia/8GHlxm4p64jOfIA Date: Fri, 28 Oct 2022 04:41:06 +0000 Message-ID: <504a68c869595524279d0866f893045f8c8229f0.camel@microchip.com> References: <20221025135243.4038706-1-camel.guo@axis.com> <20221025135243.4038706-3-camel.guo@axis.com> In-Reply-To: <20221025135243.4038706-3-camel.guo@axis.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM5PR11MB0076:EE_|DM4PR11MB6237:EE_ x-ms-office365-filtering-correlation-id: 9f9cfd46-da5e-4d18-082d-08dab89ea0ae x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ikpOC0K+H9sauGrPILkqPOipGEUzknXml6nP+Qv+P3OlEm9VMThAbyvSa3PLuhaCPlYDc45umbTXOc4JoCLKulQnoivrW9OnVVX6hSfVv96l/cX/bhthbcqT8gZOJlrlT6ohmwlWON3uEg/ylCIGbWwv4rnNunfV7Yx6LqxAYwnE3U2eKrXZVfYb6miJtLgwwPrnKWLJanI6evAvcd242yimC/3hULoXs+FyRFUF2TZYuhLKgF/vkV178TBT8ZHpuoywoh9VU/dwHsVjU74hl1m5JnExeIKbU9BuM7Wz5STawtXySVh/nCB6I+heFO/u1L5CdkrtMRYTewF8kz8mbWcuNGVEjaph3uRzbOpEvuu59pwUm8LQBUS9ziUNHbkSZdFugzMl4noHinzhGnxurKRS27G+vLK/2NbE6bEKy4beTCFEZoDFMr6dezK3rvMrMOeaMZu/Opyfw+CCczRZLIhVkOdhQcMwgqJlxk6y7SYkdI91VX23FbR8g4PEAf+g6pbLQ8ConkACDWGvBFr5NXuOhIuyN0NjQlMzTLZ/dW/5o1TDFLSvINZG4VJNop/KntOl3+lAM8CIDAYNPFmyVkJYOmpkk4Z0Y2B4tkR7RM0RB+NmDYP9kUPLso3GEKu+SqHUnhtwm0LRRGrtoH9VfbeODVndJLIEgvAqmFuHW4ZBMCvMQo9Bjz19Zhqr6t17+G9L0RqoQLCM7HfmuZvT+VjHFGW+DIgEOMqRqzty2pHWCWbGFUq+85YI60CqXoweJNlzGXyv01xjf3NT8nLbcMqYKvWt4prYLqzNFAJSRWbsV3NR6Dl/4BLaiIyqCtMs76lUcDeC+QH2GjEKfprFwg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR11MB0076.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(136003)(396003)(376002)(39860400002)(366004)(451199015)(478600001)(71200400001)(54906003)(110136005)(122000001)(6486002)(316002)(30864003)(7416002)(5660300002)(2616005)(6506007)(64756008)(76116006)(4326008)(66446008)(66476007)(66556008)(8676002)(66946007)(91956017)(6512007)(8936002)(26005)(2906002)(38100700002)(86362001)(4001150100001)(83380400001)(36756003)(38070700005)(186003)(41300700001)(921005)(99106002)(32563001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?V1pkYzhuRlBKSERwUGJtTjJRQkNraEZSRDhyelU3UTFUbVJaYXcydTNPNHBM?= =?utf-8?B?NTliTFN0Ky9vMjJUSWM3WjZTd0FLbmVMU0t2U1R3SGYrWFAvdnZ4V0s1Y1Jl?= =?utf-8?B?a3ArNGtEaFZ1R0tYNW0wbldiTjRHclNjMUFhRThLM1dGeWMwdTFkNSt1Z1dQ?= =?utf-8?B?anI0MjJXb0x1cFovQ1R1NGxtL1IvS2RwalRONzZoQ0VhV0l2SlJZY3pTcEky?= =?utf-8?B?ZWdMaXJtQ1I2MmdOUjV1R2JxdUZWL3IrQnorZ3dYZnZvb3NzbmVYQVBoSEdo?= =?utf-8?B?UlpqQTFuMHA1ZUpJaVRVSk9pd21TTXFxK2lpU1Y3TW5QWlRPcUFFM1VLWXVJ?= =?utf-8?B?RGM4cWo5bmVhaWNXVGZFdU5iRlZhdnVzWCtNYloyOGJDU0RpS1FWRG1yVmQx?= =?utf-8?B?V1Rqc2hrRUQ4NjBBd0Rjb1JVdTFJeHpaWFdqNTlPZ2NMdHJLSG9ZbkhjeXVM?= =?utf-8?B?TjNPQU5zV2Z4YnpIS0RnV2t6UmJGdWlXTTVrOSttckpKMDFWQS9EVTlDZFNl?= =?utf-8?B?dnlqZ3R5VUF6VWZaZGNNZWRFVjY5T0E5MTlIYXg2eFkvOFJzK3lhOGZEbDh2?= =?utf-8?B?WS9pRGxBdktZeDNKL2RZOW8wS1pQWXNEYlR1UitUS05oQU4vVmE5UXNOczlw?= =?utf-8?B?SE1HR0pkMHlpZzhpd2IybGpUWVBUSGd2UkVzZkF1WVBYUGp0TUhxM3JxRkRi?= =?utf-8?B?QzQ4SWV5aU11TktacExJdXFhV0hyUkVxK3BWalExczFsTlFrRWtrckczRXhn?= =?utf-8?B?QWpnb1RqSktVekQwdlFIMUsvaDhNZkdFTEJKRVhUVWlhZXFNNnZDZDhEZFdj?= =?utf-8?B?WHpPTFJLR1BxeUlvKy80Q1NibVBHem96em5JYjAzV1krdkx5dTREYnpJVGtz?= =?utf-8?B?bWVOQ2pSb09MMG5kbU1IMGRIMnVnZWhMNDZ5dWhiTFVydko2WkIzOFAwSk1u?= =?utf-8?B?ZVhPaXRVbm5ORlQ1UlRmZVNtblBlT09XTmxJcTNpcGJHRmFUWDk3R0NFMDlW?= =?utf-8?B?bXA3NmtvTVlxczRSeUpSY2RldGdVdENWNUFBRkxVekQ4eE4wajIwSkt2SWlp?= =?utf-8?B?M3ZLM3YrQnhqSnIwdld1TFR6U1dDWDlrUElSWU5FYVZLbTBHWnVGbllKcXFq?= =?utf-8?B?RjhoeUJ6Tk1RM0tKQzJQY3lRK0lUM3QwWkV5NWRMa3lseGRzZ1lRQnhuTDly?= =?utf-8?B?TXAzaG8wb0hFUFR6blE3Y0E3b3hGbzM3QnAvZWh1N1RSWlF5U0lxdFhhY2g1?= =?utf-8?B?VC9jUGg2azZFYTljaEZjVVA1SG5Rd2dTVlFmVWxweVAvQkJEaGNVUGxuRk9w?= =?utf-8?B?eVdlRGYzbGx2MUxxaVY1VnkyNXRZWTRhaXNFTk14WjEyMGovYyszNE5vaFVQ?= =?utf-8?B?ckovdXdXSzI3dkZWc3RRTHc3Mjk0UEhqVjFyOENnK25QRUl4dm1QRXMyeUR5?= =?utf-8?B?Q2Y3cjZBKzd6azU1b3JIUVQ5WlRkMDlERFNRenNUcnNYby9hWmZUQkFPcEdZ?= =?utf-8?B?YWlpRjFOb2Z2N283YWI2OEZBdUF6c2plbWhKUy91WHVxak1ZZGZWYkpaTU5L?= =?utf-8?B?a1lGTFBzdmlla0xNQXI1VTZaTjFXY016Yk5DK2xVMzBPdTFyb3lHSU5oajFN?= =?utf-8?B?QXUvamI5WW9GVUorUmpINGJkNXdmWTQveEtKdFh5WFFXWDlweldOamwxQnJJ?= =?utf-8?B?c0Q1VUFQMVlNbit1Z2o0ek5naThPYkg1dTFocFVxZzRUYVZYeDdXeFI1S2kv?= =?utf-8?B?aTJZSzZ6dHRFbG02U2JJemxFL0hGMGFqUXpjOUlZd3dPUEZHcnV6alJCTlQz?= =?utf-8?B?VElKcnQwbEk3WmpBWkZ5T2xiWERQUEZaNWRUTFNhNjRZay9ONStPamJWNWor?= =?utf-8?B?R29PUk1RYTVlWlhPNGR2U3NkQTh3dlArOG1kWFFDbHFpUGtYZ3hLOUI4eWFx?= =?utf-8?B?NGt5MTZsRDloMncwVXZ0VFREempOT2NwaUo3YmptQktKYmczaFh1MWg2S0gy?= =?utf-8?B?RnFpUGhtWkVwZGI2R3NkcUt1bU1xbStScVlEcnBwR3dLemN2eTF6SFg4SjdG?= =?utf-8?B?b3k0YUlCN09mOVpuYjhza2VHR2wvZTJDTW9VTXNkclBLWTZ0djVCbHhhQzg4?= =?utf-8?B?RFFLeFU1U3JzQWIreCsyaHZzTzdDV0RXR25udlhMa0ExVXZGTXNKWlRQc0h2?= =?utf-8?Q?QT6KGs8g5ZIEK4ItYyEB/EE=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM5PR11MB0076.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f9cfd46-da5e-4d18-082d-08dab89ea0ae X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Oct 2022 04:41:06.6137 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 4xbdLjoGdVAHYrrqR+QST+P14OS/CljtCbdWdrycTO7KnByqOkOOi/R8/fiCcvp81NM1bWf7Evi1829Hi9MuLZZVZBuNBTIHtriQlo/M4vM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6237 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQ2FtZWwsDQpPbiBUdWUsIDIwMjItMTAtMjUgYXQgMTU6NTIgKzAyMDAsIENhbWVsIEd1byB3 cm90ZToNCj4gQWRkIGluaXRpYWwgZnJhbWV3b3JrIGZvciBNYXhsaW5lYXIncyBHU1cxeHggc3dp dGNoIGFuZA0KPiBjdXJyZW50bHkgb25seSBHU1cxNDUgaW4gTURJTyBtYW5hZ2VkIG1vZGUgaXMg c3VwcG9ydGVkLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQ2FtZWwgR3VvIDxjYW1lbC5ndW9AYXhp cy5jb20+DQo+IC0tLQ0KPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgfCAgIDMgKw0K PiAgZHJpdmVycy9uZXQvZHNhL0tjb25maWcgICAgICAgfCAgMTYgKw0KPiAgZHJpdmVycy9uZXQv ZHNhL01ha2VmaWxlICAgICAgfCAgIDIgKw0KPiAgZHJpdmVycy9uZXQvZHNhL2dzdzF4eC5oICAg ICAgfCAgMjcgKysNCj4gIGRyaXZlcnMvbmV0L2RzYS9nc3cxeHhfY29yZS5jIHwgODIzDQo+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIGRyaXZlcnMvbmV0L2RzYS9nc3cx eHhfbWRpby5jIHwgMTI4ICsrKysrKw0KPiAgNiBmaWxlcyBjaGFuZ2VkLCA5OTkgaW5zZXJ0aW9u cygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2RzYS9nc3cxeHguaA0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2RzYS9nc3cxeHhfY29yZS5jDQo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZHNhL2dzdzF4eF9tZGlvLmMNCj4gDQo+IA0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2dzdzF4eC5oIGIvZHJpdmVycy9uZXQvZHNhL2dz dzF4eC5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDhi Mjk3NWUxMjY3DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9uZXQvZHNhL2dzdzF4 eC5oDQo+IEBAIC0wLDAgKzEsMjcgQEANCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wICovDQo+ICsjaWZuZGVmIEdTVzFYWF9IDQo+ICsjZGVmaW5lIEdTVzFYWF9IDQo+ICsN Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2Uu aD4NCg0KaW5jbHVkZSBoZWFkZXJzIGluIHNvcnRlZCBtYW5uZXIuDQoNCj4gKyNpbmNsdWRlIDxu ZXQvZHNhLmg+DQo+ICsNCj4gK3N0cnVjdCBnc3cxeHhfaHdfaW5mbyB7DQo+ICsJaW50IG1heF9w b3J0czsNCj4gKwlpbnQgY3B1X3BvcnQ7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZ3N3MXh4X3By aXYgew0KPiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7 DQo+ICsJc3RydWN0IGRzYV9zd2l0Y2ggKmRzOw0KPiArCWNvbnN0IHN0cnVjdCBnc3cxeHhfaHdf aW5mbyAqaHdfaW5mbzsNCj4gK307DQo+ICsNCj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgcmVnbWFw X2FjY2Vzc190YWJsZSBnc3cxeHhfcmVnaXN0ZXJfc2V0Ow0KPiArDQo+ICtpbnQgZ3N3MXh4X3By b2JlKHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZSAqZGV2KTsNCj4gK3Zv aWQgZ3N3MXh4X3JlbW92ZShzdHJ1Y3QgZ3N3MXh4X3ByaXYgKnByaXYpOw0KPiArdm9pZCBnc3cx eHhfc2h1dGRvd24oc3RydWN0IGdzdzF4eF9wcml2ICpwcml2KTsNCj4gKw0KPiArI2VuZGlmIC8q IEdTVzFYWF9IICovDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvZ3N3MXh4X2NvcmUu Yw0KPiBiL2RyaXZlcnMvbmV0L2RzYS9nc3cxeHhfY29yZS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWIzY2JlZTRhZGRjDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvZHJpdmVycy9uZXQvZHNhL2dzdzF4eF9jb3JlLmMNCj4gQEAgLTAsMCArMSw4MjMg QEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lmX3ZsYW4uaD4N Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9vZl9tZGlv Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvb2ZfbmV0Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvb2Zf cGxhdGZvcm0uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9waHkuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9waHlsaW5rLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQo+ICsjaW5jbHVkZSA8 bmV0L2RzYS5oPg0KPiArDQo+ICsjaW5jbHVkZSAiZ3N3MXh4LmgiDQo+ICsNCj4gKy8qIEdTVzFY WCBNRElPIFJlZ2lzdGVycyAqLw0KPiArI2RlZmluZSBHU1cxWFhfTURJT19CQVNFX0FERFIJCTB4 RjQwMA0KPiArI2RlZmluZSBHU1cxWFhfTURJT19SRUdfTEVOCQkweDA0MjINCj4gKyNkZWZpbmUg R1NXMVhYX01ESU9fR0xPQgkJMHgwMA0KPiArI2RlZmluZSAgR1NXMVhYX01ESU9fR0xPQl9FTkFC TEUJQklUKDE1KQ0KPiArI2RlZmluZSBHU1cxWFhfTURJT19DVFJMCQkweDA4DQo+ICsjZGVmaW5l ICBHU1cxWFhfTURJT19DVFJMX0JVU1kJCUJJVCgxMikNCj4gKyNkZWZpbmUgIEdTVzFYWF9NRElP X0NUUkxfUkQJCUJJVCgxMSkNCj4gKyNkZWZpbmUgIEdTVzFYWF9NRElPX0NUUkxfV1IJCUJJVCgx MCkNCj4gKyNkZWZpbmUgIEdTVzFYWF9NRElPX0NUUkxfUEhZQURfTUFTSwkweDFGDQo+ICsjZGVm aW5lICBHU1cxWFhfTURJT19DVFJMX1BIWUFEX1NISUZUCTUNCj4gKyNkZWZpbmUgIEdTVzFYWF9N RElPX0NUUkxfUkVHQURfTUFTSwkweDFGDQo+ICsjZGVmaW5lIEdTVzFYWF9NRElPX1JFQUQJCTB4 MDkNCj4gKyNkZWZpbmUgR1NXMVhYX01ESU9fV1JJVEUJCTB4MEENCj4gKyNkZWZpbmUgR1NXMVhY X01ESU9fTURDX0NGRzAJCTB4MEINCj4gKyNkZWZpbmUgR1NXMVhYX01ESU9fUEhZcChwKQkJKDB4 MTUgLSAocCkpDQoNCkFsbCBDYXBpdGFsIGxldHRlcnMgaW4gTWFjcm8gd2lsbCBiZSBnb29kLg0K DQo+ICsjZGVmaW5lICBHU1cxWFhfTURJT19QSFlfTElOS19NQVNLCTB4NjAwMA0KPiArI2RlZmlu ZSAgR1NXMVhYX01ESU9fUEhZX0xJTktfQVVUTwkweDAwMDANCj4gKyNkZWZpbmUgIEdTVzFYWF9N RElPX1BIWV9MSU5LX0RPV04JMHg0MDAwDQo+ICsjZGVmaW5lICBHU1cxWFhfTURJT19QSFlfTElO S19VUAkweDIwMDANCj4gKyNkZWZpbmUgIEdTVzFYWF9NRElPX1BIWV9TUEVFRF9NQVNLCTB4MTgw MA0KPiArI2RlZmluZSAgR1NXMVhYX01ESU9fUEhZX1NQRUVEX0FVVE8JMHgxODAwDQo+ICsjZGVm aW5lICBHU1cxWFhfTURJT19QSFlfU1BFRURfTTEwCTB4MDAwMA0KPiArI2RlZmluZSAgR1NXMVhY X01ESU9fUEhZX1NQRUVEX00xMDAJMHgwODAwDQo+ICsjZGVmaW5lICBHU1cxWFhfTURJT19QSFlf U1BFRURfRzEJMHgxMDAwDQo+ICsjZGVmaW5lICBHU1cxWFhfTURJT19QSFlfRkRVUF9NQVNLCTB4 MDYwMA0KPiArI2RlZmluZSAgR1NXMVhYX01ESU9fUEhZX0ZEVVBfQVVUTwkweDAwMDANCj4gKyNk ZWZpbmUgIEdTVzFYWF9NRElPX1BIWV9GRFVQX0VOCTB4MDIwMA0KPiArI2RlZmluZSAgR1NXMVhY X01ESU9fUEhZX0ZEVVBfRElTCTB4MDYwMA0KPiArI2RlZmluZSAgR1NXMVhYX01ESU9fUEhZX0ZD T05UWF9NQVNLCTB4MDE4MA0KPiArI2RlZmluZSAgR1NXMVhYX01ESU9fUEhZX0ZDT05UWF9BVVRP CTB4MDAwMA0KPiArI2RlZmluZSAgR1NXMVhYX01ESU9fUEhZX0ZDT05UWF9FTgkweDAxMDANCj4g KyNkZWZpbmUgIEdTVzFYWF9NRElPX1BIWV9GQ09OVFhfRElTCTB4MDE4MA0KPiArI2RlZmluZSAg R1NXMVhYX01ESU9fUEhZX0ZDT05SWF9NQVNLCTB4MDA2MA0KPiArI2RlZmluZSAgR1NXMVhYX01E SU9fUEhZX0ZDT05SWF9BVVRPCTB4MDAwMA0KPiArI2RlZmluZSAgR1NXMVhYX01ESU9fUEhZX0ZD T05SWF9FTgkweDAwMjANCj4gKyNkZWZpbmUgIEdTVzFYWF9NRElPX1BIWV9GQ09OUlhfRElTCTB4 MDA2MA0KPiArI2RlZmluZSAgR1NXMVhYX01ESU9fUEhZX0FERFJfTUFTSwkweDAwMUYNCj4gKyNk ZWZpbmUgIEdTVzFYWF9NRElPX1BIWV9NQVNLCQkoR1NXMVhYX01ESU9fUEhZX0FERFJfTQ0KPiBB U0sgfCBcDQo+ICsJCQkJCSBHU1cxWFhfTURJT19QSFlfRkNPTlJYX01BU0sgfA0KPiBcDQo+ICsJ CQkJCSBHU1cxWFhfTURJT19QSFlfRkNPTlRYX01BU0sgfA0KPiBcDQo+ICsJCQkJCSBHU1cxWFhf TURJT19QSFlfTElOS19NQVNLIHwgXA0KPiArCQkJCQkgR1NXMVhYX01ESU9fUEhZX1NQRUVEX01B U0sgfCBcDQo+ICsJCQkJCSBHU1cxWFhfTURJT19QSFlfRkRVUF9NQVNLKQ0KPiArDQo+IA0KPiAr c3RydWN0IGdzdzF4eF9ybW9uX2NudF9kZXNjIHsNCj4gKwl1bnNpZ25lZCBpbnQgc2l6ZTsNCj4g Kwl1bnNpZ25lZCBpbnQgb2Zmc2V0Ow0KPiArCWNvbnN0IGNoYXIgKm5hbWU7DQo+ICt9Ow0KPiAr DQo+ICsjZGVmaW5lIE1JQl9ERVNDKF9zaXplLCBfb2Zmc2V0LA0KPiBfbmFtZSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArCXsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KPiAgICAgICAgIFwN Cj4gKwkJLnNpemUgPSBfc2l6ZSwgLm9mZnNldCA9IF9vZmZzZXQsIC5uYW1lID0NCj4gX25hbWUg ICAgICAgICAgICAgICAgXA0KPiArCX0NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBnc3cx eHhfcm1vbl9jbnRfZGVzYyBnc3cxeHhfcm1vbl9jbnRbXSA9IHsNCj4gKwkvKiogUmVjZWl2ZSBQ YWNrZXQgQ291bnQgKG9ubHkgcGFja2V0cyB0aGF0IGFyZSBhY2NlcHRlZCBhbmQNCj4gbm90IGRp c2NhcmRlZCkuICovDQo+ICsJTUlCX0RFU0MoMSwgMHgxRiwgIlJ4R29vZFBrdHMiKSwNCj4gKwlN SUJfREVTQygxLCAweDIzLCAiUnhVbmljYXN0UGt0cyIpLA0KPiArCU1JQl9ERVNDKDEsIDB4MjIs ICJSeE11bHRpY2FzdFBrdHMiKSwNCj4gKwlNSUJfREVTQygxLCAweDIxLCAiUnhGQ1NFcnJvclBr dHMiKSwNCj4gKwlNSUJfREVTQygxLCAweDFELCAiUnhVbmRlclNpemVHb29kUGt0cyIpLA0KPiAr CU1JQl9ERVNDKDEsIDB4MUUsICJSeFVuZGVyU2l6ZUVycm9yUGt0cyIpLA0KPiArCU1JQl9ERVND KDEsIDB4MUIsICJSeE92ZXJzaXplR29vZFBrdHMiKSwNCj4gKwlNSUJfREVTQygxLCAweDFDLCAi UnhPdmVyc2l6ZUVycm9yUGt0cyIpLA0KPiArCU1JQl9ERVNDKDEsIDB4MjAsICJSeEdvb2RQYXVz ZVBrdHMiKSwNCj4gKwlNSUJfREVTQygxLCAweDFBLCAiUnhBbGlnbkVycm9yUGt0cyIpLA0KPiAr CU1JQl9ERVNDKDEsIDB4MTIsICJSeDY0Qnl0ZVBrdHMiKSwNCj4gKwlNSUJfREVTQygxLCAweDEz LCAiUngxMjdCeXRlUGt0cyIpLA0KPiArCU1JQl9ERVNDKDEsIDB4MTQsICJSeDI1NUJ5dGVQa3Rz IiksDQo+ICsJTUlCX0RFU0MoMSwgMHgxNSwgIlJ4NTExQnl0ZVBrdHMiKSwNCj4gKwlNSUJfREVT QygxLCAweDE2LCAiUngxMDIzQnl0ZVBrdHMiKSwNCj4gKwkvKiogUmVjZWl2ZSBTaXplIDEwMjQt MTUyMiAob3IgbW9yZSwgaWYgY29uZmlndXJlZCkgUGFja2V0DQo+IENvdW50LiAqLw0KPiArCU1J Ql9ERVNDKDEsIDB4MTcsICJSeE1heEJ5dGVQa3RzIiksDQo+ICsJTUlCX0RFU0MoMSwgMHgxOCwg IlJ4RHJvcHBlZFBrdHMiKSwNCj4gKwlNSUJfREVTQygxLCAweDE5LCAiUnhGaWx0ZXJlZFBrdHMi KSwNCj4gKwlNSUJfREVTQygyLCAweDI0LCAiUnhHb29kQnl0ZXMiKSwNCj4gKwlNSUJfREVTQygy LCAweDI2LCAiUnhCYWRCeXRlcyIpLA0KPiArCU1JQl9ERVNDKDEsIDB4MTEsICJUeEFjbURyb3Bw ZWRQa3RzIiksDQo+ICsJTUlCX0RFU0MoMSwgMHgwQywgIlR4R29vZFBrdHMiKSwNCj4gKwlNSUJf REVTQygxLCAweDA2LCAiVHhVbmljYXN0UGt0cyIpLA0KPiArCU1JQl9ERVNDKDEsIDB4MDcsICJU eE11bHRpY2FzdFBrdHMiKSwNCj4gKwlNSUJfREVTQygxLCAweDAwLCAiVHg2NEJ5dGVQa3RzIiks DQo+ICsJTUlCX0RFU0MoMSwgMHgwMSwgIlR4MTI3Qnl0ZVBrdHMiKSwNCj4gKwlNSUJfREVTQygx LCAweDAyLCAiVHgyNTVCeXRlUGt0cyIpLA0KPiArCU1JQl9ERVNDKDEsIDB4MDMsICJUeDUxMUJ5 dGVQa3RzIiksDQo+ICsJTUlCX0RFU0MoMSwgMHgwNCwgIlR4MTAyM0J5dGVQa3RzIiksDQo+ICsJ LyoqIFRyYW5zbWl0IFNpemUgMTAyNC0xNTIyIChvciBtb3JlLCBpZiBjb25maWd1cmVkKSBQYWNr ZXQNCj4gQ291bnQuICovDQo+ICsJTUlCX0RFU0MoMSwgMHgwNSwgIlR4TWF4Qnl0ZVBrdHMiKSwN Cj4gKwlNSUJfREVTQygxLCAweDA4LCAiVHhTaW5nbGVDb2xsQ291bnQiKSwNCj4gKwlNSUJfREVT QygxLCAweDA5LCAiVHhNdWx0Q29sbENvdW50IiksDQo+ICsJTUlCX0RFU0MoMSwgMHgwQSwgIlR4 TGF0ZUNvbGxDb3VudCIpLA0KPiArCU1JQl9ERVNDKDEsIDB4MEIsICJUeEV4Y2Vzc0NvbGxDb3Vu dCIpLA0KPiArCU1JQl9ERVNDKDEsIDB4MEQsICJUeFBhdXNlQ291bnQiKSwNCj4gKwlNSUJfREVT QygxLCAweDEwLCAiVHhEcm9wcGVkUGt0cyIpLA0KPiArCU1JQl9ERVNDKDIsIDB4MEUsICJUeEdv b2RCeXRlcyIpLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHUzMiBnc3cxeHhfc3dpdGNoX3Ioc3Ry dWN0IGdzdzF4eF9wcml2ICpwcml2LCB1MzIgb2Zmc2V0KQ0KPiArew0KPiArCWludCByZXQgPSAw Ow0KDQpJbiB0aGUgYmVsb3cgYXBpcyB5b3UgaGF2ZSB1c2VkICplcnIqIHZhcmlhYmxlIGZvciBz dG9yaW5nIHRoZSByZXR1cm4NCnZhbHVlcy4gSGVyZSAqcmV0KiBpcyB1c2VkLiBJdCB3aWxsIGJl IGdvb2QgdG8gaGF2ZSBlaXRoZXIgcmV0IG9yIGVycg0KaW4gYWxsIHRoZSBhcGlzLg0KQW5kIERv IHdlIG5lZWQgdG8gZXhwbGljaXRseSBhc3NpZ24gcmV0ICB0byB6ZXJvLiBzaW5jZSBpdCBpcyBh c3NpZ25lZA0KcmV0dXJuIHZhbHVlIG9mIHJlZ21hcF9yZWFkIGluIHRoZSBuZXh0IHN0YXRlbWVu dCBpdHNlbGYuDQoNCj4gKwl1MzIgdmFsID0gMDsNCj4gKw0KPiArCXJldCA9IHJlZ21hcF9yZWFk KHByaXYtPnJlZ21hcCwgR1NXMVhYX0lQX0JBU0VfQUREUiArIG9mZnNldCwNCj4gJnZhbCk7DQo+ ICsNCj4gKwlyZXR1cm4gcmV0IDwgMCA/ICh1MzIpcmV0IDogdmFsOw0KPiArfQ0KPiArDQo+IA0K PiArDQo+IA0KPiArc3RhdGljIHUzMiBnc3cxeHhfc3dpdGNoX3JfdGltZW91dChzdHJ1Y3QgZ3N3 MXh4X3ByaXYgKnByaXYsIHUzMg0KPiBvZmZzZXQsDQo+ICsJCQkJICAgdTMyIGNsZWFyZWQpDQo+ ICt7DQo+ICsJdTMyIHZhbDsNCj4gKw0KPiArCXJldHVybiByZWFkX3BvbGxfdGltZW91dChnc3cx eHhfc3dpdGNoX3IsIHZhbCwgKHZhbCAmIGNsZWFyZWQpDQo+ID09IDAsIDIwLA0KPiArCQkJCSA1 MDAwMCwgdHJ1ZSwgcHJpdiwgb2Zmc2V0KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBnc3cx eHhfbWRpb19wb2xsKHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdikNCj4gK3sNCj4gKwlpbnQgY250 ID0gMTAwOw0KDQpJcyBpdCBwb3NzaWJsZSB0byB1c2UgdTggaW5zdGVhZCBvZiBpbnQgc2luY2Ug dGhlIHZhbHVlIGlzIGxlc3MgdGhhbg0KMjU1Lg0KDQo+ICsNCj4gKwl3aGlsZSAobGlrZWx5KGNu dC0tKSkgew0KPiArCQl1MzIgY3RybCA9IGdzdzF4eF9tZGlvX3IocHJpdiwgR1NXMVhYX01ESU9f Q1RSTCk7DQo+ICsNCj4gKwkJaWYgKChjdHJsICYgR1NXMVhYX01ESU9fQ1RSTF9CVVNZKSA9PSAw KQ0KPiArCQkJcmV0dXJuIDA7DQo+ICsJCXVzbGVlcF9yYW5nZSgyMCwgNDApOw0KPiArCX0NCj4g Kw0KPiArCXJldHVybiAtRVRJTUVET1VUOw0KPiArfQ0KPiArDQo+IA0KPiANCj4gK3N0YXRpYyBp bnQgZ3N3MXh4X21kaW8oc3RydWN0IGdzdzF4eF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25v ZGUNCj4gKm1kaW9fbnApDQo+ICt7DQo+ICsJc3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gcHJpdi0+ ZHM7DQo+ICsJaW50IGVycjsNCj4gKw0KPiArCWRzLT5zbGF2ZV9taWlfYnVzID0gbWRpb2J1c19h bGxvYygpOw0KPiArCWlmICghZHMtPnNsYXZlX21paV9idXMpDQo+ICsJCXJldHVybiAtRU5PTUVN Ow0KDQpJcyBpdCBwb3NzaWJsZSB0byB1c2UgZGV2bV9tZGlvYnVzX2FsbG9jIGFwaSBmb3IgbWVt b3J5IGFsbG9jYXRpb24NCndoaWNoIGRvZXNuJ3QgcmVxdWlyZSBtZGlvYnVzX2ZyZWUuDQoNCj4g Kw0KPiArCWRzLT5zbGF2ZV9taWlfYnVzLT5wcml2ID0gcHJpdjsNCj4gKwlkcy0+c2xhdmVfbWlp X2J1cy0+cmVhZCA9IGdzdzF4eF9tZGlvX3JkOw0KPiArCWRzLT5zbGF2ZV9taWlfYnVzLT53cml0 ZSA9IGdzdzF4eF9tZGlvX3dyOw0KPiArCWRzLT5zbGF2ZV9taWlfYnVzLT5uYW1lID0gIm14bCxn c3cxeHgtbWRpbyI7DQo+ICsJc25wcmludGYoZHMtPnNsYXZlX21paV9idXMtPmlkLCBNSUlfQlVT X0lEX1NJWkUsICIlcy1taWkiLA0KPiArCQkgZGV2X25hbWUocHJpdi0+ZGV2KSk7DQoNCklmIHlv dSBoYXZlIHN0cnVjdCBtaWlfYnVzICpidXMgYW5kIGFzc2lnbiBkcy0+c2xhdmVfbWlpX2J1cyA9 IGJ1cywNCnRoZW4gYWxsIHRoZSBhYm92ZSBzdGF0ZW1lbnQgY2FuIGZpdCBpbiBzaW5nbGUgbGlu ZS4NCnNucHJpbnRmKGJ1cy0+aWQsIE1JSV9CVVNfSURfU0laRSwgIiVzLW1paSIsIGRldl9uYW1l KHByaXYtPmRldikpOw0KDQo+ICsJZHMtPnNsYXZlX21paV9idXMtPnBhcmVudCA9IHByaXYtPmRl djsNCj4gKwlkcy0+c2xhdmVfbWlpX2J1cy0+cGh5X21hc2sgPSB+ZHMtPnBoeXNfbWlpX21hc2s7 DQo+ICsNCj4gKwllcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLT5zbGF2ZV9taWlfYnVzLCBt ZGlvX25wKTsNCg0KU2ltaWxsYXJseSBoZXJlIGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcg0KDQo+ ICsJaWYgKGVycikNCj4gKwkJbWRpb2J1c19mcmVlKGRzLT5zbGF2ZV9taWlfYnVzKTsNCj4gKw0K PiArCXJldHVybiBlcnI7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZ3N3MXh4X3NldHVwKHN0 cnVjdCBkc2Ffc3dpdGNoICpkcykNCj4gK3sNCj4gKwlzdHJ1Y3QgZ3N3MXh4X3ByaXYgKnByaXYg PSBkcy0+cHJpdjsNCj4gKwl1bnNpZ25lZCBpbnQgY3B1X3BvcnQgPSBwcml2LT5od19pbmZvLT5j cHVfcG9ydDsNCg0KSXMgaXQgcG9zc2libGUgdG8gdXNlIHU4IGluc3RlYWQgb2YgdW5zaW5nZWQg aW50Lg0KDQo+ICsJaW50IGk7DQo+ICsJaW50IGVycjsNCj4gKw0KPiArCWdzdzF4eF9zd2l0Y2hf dyhwcml2LCBHU1cxWFhfSVBfU1dSRVNfUjAsIEdTVzFYWF9JUF9TV1JFUyk7DQo+ICsJdXNsZWVw X3JhbmdlKDUwMDAsIDEwMDAwKTsNCj4gKwlnc3cxeHhfc3dpdGNoX3cocHJpdiwgMCwgR1NXMVhY X0lQX1NXUkVTKTsNCj4gKw0KPiArCS8qIGRpc2FibGUgcG9ydCBmZXRjaC9zdG9yZSBkbWEgb24g YWxsIHBvcnRzICovDQo+ICsJZm9yIChpID0gMDsgaSA8IHByaXYtPmh3X2luZm8tPm1heF9wb3J0 czsgaSsrKQ0KPiArCQlnc3cxeHhfcG9ydF9kaXNhYmxlKGRzLCBpKTsNCj4gKw0KPiArCS8qIGVu YWJsZSBTd2l0Y2ggKi8NCj4gKwlnc3cxeHhfbWRpb19tYXNrKHByaXYsIDAsIEdTVzFYWF9NRElP X0dMT0JfRU5BQkxFLA0KPiBHU1cxWFhfTURJT19HTE9CKTsNCj4gKw0KPiArCWdzdzF4eF9zd2l0 Y2hfdyhwcml2LCAweDdGLCBHU1cxWFhfSVBfUENFX1BNQVAyKTsNCj4gKwlnc3cxeHhfc3dpdGNo X3cocHJpdiwgMHg3RiwgR1NXMVhYX0lQX1BDRV9QTUFQMyk7DQo+ICsNCj4gKwkvKiBEZWFjdGl2 YXRlIE1ESU8gUEhZIGF1dG8gcG9sbGluZyBzaW5jZSBpdCBhZmZlY3RzIG1tZA0KPiByZWFkL3dy aXRlLg0KPiArCSAqLw0KPiArCWdzdzF4eF9tZGlvX3cocHJpdiwgMHgwLCBHU1cxWFhfTURJT19N RENfQ0ZHMCk7DQo+ICsNCj4gKwlnc3cxeHhfc3dpdGNoX21hc2socHJpdiwgMSwgR1NXMVhYX0lQ X01BQ19DVFJMXzJfTUxFTiwNCj4gKwkJCSAgIEdTVzFYWF9JUF9NQUNfQ1RSTF8ycChjcHVfcG9y dCkpOw0KPiArCWdzdzF4eF9zd2l0Y2hfbWFzayhwcml2LCAwLCBHU1cxWFhfSVBfQk1fUVVFVUVf R0NUUkxfR0xfTU9ELA0KPiArCQkJICAgR1NXMVhYX0lQX0JNX1FVRVVFX0dDVFJMKTsNCj4gKw0K PiArCS8qIEZsdXNoIE1BQyBUYWJsZSAqLw0KPiArCWdzdzF4eF9zd2l0Y2hfbWFzayhwcml2LCAw LCBHU1cxWFhfSVBfUENFX0dDVFJMXzBfTVRGTCwNCj4gKwkJCSAgIEdTVzFYWF9JUF9QQ0VfR0NU UkxfMCk7DQo+ICsJZXJyID0gZ3N3MXh4X3N3aXRjaF9yX3RpbWVvdXQocHJpdiwgR1NXMVhYX0lQ X1BDRV9HQ1RSTF8wLA0KPiArCQkJCSAgICAgIEdTVzFYWF9JUF9QQ0VfR0NUUkxfMF9NVEZMKTsN Cj4gKwlpZiAoZXJyKSB7DQo+ICsJCWRldl9lcnIocHJpdi0+ZGV2LCAiTUFDIGZsdXNoaW5nIGRp ZG4ndCBmaW5pc2hcbiIpOw0KPiArCQlyZXR1cm4gZXJyOw0KPiArCX0NCj4gKw0KPiArCWdzdzF4 eF9wb3J0X2VuYWJsZShkcywgY3B1X3BvcnQsIE5VTEwpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGdzdzF4eF9wb3J0X3NldF9saW5rKHN0cnVjdCBnc3cx eHhfcHJpdiAqcHJpdiwgaW50IHBvcnQsDQo+IGJvb2wgbGluaykNCj4gK3sNCj4gKwl1MzIgbWRp b19waHk7DQo+ICsNCj4gKwlpZiAobGluaykNCj4gKwkJbWRpb19waHkgPSBHU1cxWFhfTURJT19Q SFlfTElOS19VUDsNCj4gKwllbHNlDQo+ICsJCW1kaW9fcGh5ID0gR1NXMVhYX01ESU9fUEhZX0xJ TktfRE9XTjsNCj4gKw0KPiArCWdzdzF4eF9tZGlvX21hc2socHJpdiwgR1NXMVhYX01ESU9fUEhZ X0xJTktfTUFTSywgbWRpb19waHksDQo+ICsJCQkgR1NXMVhYX01ESU9fUEhZcChwb3J0KSk7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGdzdzF4eF9wb3J0X3NldF9zcGVlZChzdHJ1Y3QgZ3N3 MXh4X3ByaXYgKnByaXYsIGludA0KPiBwb3J0LCBpbnQgc3BlZWQsDQo+ICsJCQkJICBwaHlfaW50 ZXJmYWNlX3QgaW50ZXJmYWNlKQ0KPiArew0KPiArCXUzMiBtZGlvX3BoeSA9IDAsIG1hY19jdHJs XzAgPSAwOw0KDQpJbml0aWFsaXplIHZhcmlhYmxlIGluIGRpZmZlcmVudCBsaW5lIHRvIHVuaWZv cm1pdHkgaW4gdGhlIGZpbGUuDQoNCj4gKw0KPiArCXN3aXRjaCAoc3BlZWQpIHsNCj4gKwljYXNl IFNQRUVEXzEwOg0KPiArCQltZGlvX3BoeSA9IEdTVzFYWF9NRElPX1BIWV9TUEVFRF9NMTA7DQo+ ICsJCW1hY19jdHJsXzAgPSBHU1cxWFhfSVBfTUFDX0NUUkxfMF9HTUlJX01JSTsNCj4gKwkJYnJl YWs7DQo+ICsNCj4gKwljYXNlIFNQRUVEXzEwMDoNCj4gKwkJbWRpb19waHkgPSBHU1cxWFhfTURJ T19QSFlfU1BFRURfTTEwMDsNCj4gKwkJbWFjX2N0cmxfMCA9IEdTVzFYWF9JUF9NQUNfQ1RSTF8w X0dNSUlfTUlJOw0KPiArCQlicmVhazsNCj4gKw0KPiArCWNhc2UgU1BFRURfMTAwMDoNCj4gKwkJ bWRpb19waHkgPSBHU1cxWFhfTURJT19QSFlfU1BFRURfRzE7DQo+ICsJCW1hY19jdHJsXzAgPSBH U1cxWFhfSVBfTUFDX0NUUkxfMF9HTUlJX1JHTUlJOw0KPiArCQlicmVhazsNCj4gKwl9DQo+ICsN Cj4gKwlnc3cxeHhfbWRpb19tYXNrKHByaXYsIEdTVzFYWF9NRElPX1BIWV9TUEVFRF9NQVNLLCBt ZGlvX3BoeSwNCj4gKwkJCSBHU1cxWFhfTURJT19QSFlwKHBvcnQpKTsNCj4gKwlnc3cxeHhfc3dp dGNoX21hc2socHJpdiwgR1NXMVhYX0lQX01BQ19DVFJMXzBfR01JSV9NQVNLLA0KPiBtYWNfY3Ry bF8wLA0KPiArCQkJICAgR1NXMVhYX0lQX01BQ19DVFJMXzBwKHBvcnQpKTsNCj4gK30NCj4gKw0K PiArc3RhdGljIHZvaWQgZ3N3MXh4X3BvcnRfc2V0X2R1cGxleChzdHJ1Y3QgZ3N3MXh4X3ByaXYg KnByaXYsIGludA0KPiBwb3J0LA0KPiArCQkJCSAgIGludCBkdXBsZXgpDQo+ICt7DQo+ICsJdTMy IG1hY19jdHJsXzAsIG1kaW9fcGh5Ow0KDQpTaW1pbGxhcmx5IGhlcmUuIEluIHRoZSBhYm92ZSBm dW5jdGlvbiwgeW91IGhhdmUgaW5pdGlhbGl6ZWQgdGhlIHZhbHVlcw0KdG8gemVyby4gQnV0IG5v dCBoZXJlLg0KDQo+ICsNCj4gKwlpZiAoZHVwbGV4ID09IERVUExFWF9GVUxMKSB7DQo+ICsJCW1h Y19jdHJsXzAgPSBHU1cxWFhfSVBfTUFDX0NUUkxfMF9GRFVQX0VOOw0KPiArCQltZGlvX3BoeSA9 IEdTVzFYWF9NRElPX1BIWV9GRFVQX0VOOw0KPiArCX0gZWxzZSB7DQo+ICsJCW1hY19jdHJsXzAg PSBHU1cxWFhfSVBfTUFDX0NUUkxfMF9GRFVQX0RJUzsNCj4gKwkJbWRpb19waHkgPSBHU1cxWFhf TURJT19QSFlfRkRVUF9ESVM7DQo+ICsJfQ0KPiArDQo+ICsJZ3N3MXh4X3N3aXRjaF9tYXNrKHBy aXYsIEdTVzFYWF9JUF9NQUNfQ1RSTF8wX0ZEVVBfTUFTSywNCj4gbWFjX2N0cmxfMCwNCj4gKwkJ CSAgIEdTVzFYWF9JUF9NQUNfQ1RSTF8wcChwb3J0KSk7DQo+ICsJZ3N3MXh4X21kaW9fbWFzayhw cml2LCBHU1cxWFhfTURJT19QSFlfRkRVUF9NQVNLLCBtZGlvX3BoeSwNCj4gKwkJCSBHU1cxWFhf TURJT19QSFlwKHBvcnQpKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZ3N3MXh4X3BvcnRf c2V0X3BhdXNlKHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiwgaW50DQo+IHBvcnQsDQo+ICsJCQkJ ICBib29sIHR4X3BhdXNlLCBib29sIHJ4X3BhdXNlKQ0KPiArew0KPiArCXUzMiBtYWNfY3RybF8w LCBtZGlvX3BoeTsNCg0KU2ltaWxsYXJseSBoZXJlLg0KDQo+ICsNCj4gKwlpZiAodHhfcGF1c2Ug JiYgcnhfcGF1c2UpIHsNCj4gKwkJbWFjX2N0cmxfMCA9IEdTVzFYWF9JUF9NQUNfQ1RSTF8wX0ZD T05fUlhUWDsNCj4gKwkJbWRpb19waHkgPQ0KPiArCQkJR1NXMVhYX01ESU9fUEhZX0ZDT05UWF9F TiB8DQo+IEdTVzFYWF9NRElPX1BIWV9GQ09OUlhfRU47DQo+ICsJfSBlbHNlIGlmICh0eF9wYXVz ZSkgew0KPiArCQltYWNfY3RybF8wID0gR1NXMVhYX0lQX01BQ19DVFJMXzBfRkNPTl9UWDsNCj4g KwkJbWRpb19waHkgPQ0KPiArCQkJR1NXMVhYX01ESU9fUEhZX0ZDT05UWF9FTiB8DQo+IEdTVzFY WF9NRElPX1BIWV9GQ09OUlhfRElTOw0KPiArCX0gZWxzZSBpZiAocnhfcGF1c2UpIHsNCj4gKwkJ bWFjX2N0cmxfMCA9IEdTVzFYWF9JUF9NQUNfQ1RSTF8wX0ZDT05fUlg7DQo+ICsJCW1kaW9fcGh5 ID0NCj4gKwkJCUdTVzFYWF9NRElPX1BIWV9GQ09OVFhfRElTIHwNCj4gR1NXMVhYX01ESU9fUEhZ X0ZDT05SWF9FTjsNCj4gKwl9IGVsc2Ugew0KPiArCQltYWNfY3RybF8wID0gR1NXMVhYX0lQX01B Q19DVFJMXzBfRkNPTl9OT05FOw0KPiArCQltZGlvX3BoeSA9DQo+ICsJCQlHU1cxWFhfTURJT19Q SFlfRkNPTlRYX0RJUyB8DQo+IEdTVzFYWF9NRElPX1BIWV9GQ09OUlhfRElTOw0KPiArCX0NCj4g Kw0KPiArCWdzdzF4eF9zd2l0Y2hfbWFzayhwcml2LCBHU1cxWFhfSVBfTUFDX0NUUkxfMF9GQ09O X01BU0ssDQo+IG1hY19jdHJsXzAsDQo+ICsJCQkgICBHU1cxWFhfSVBfTUFDX0NUUkxfMHAocG9y dCkpOw0KPiArCWdzdzF4eF9tZGlvX21hc2socHJpdiwNCj4gKwkJCSBHU1cxWFhfTURJT19QSFlf RkNPTlRYX01BU0sgfA0KPiBHU1cxWFhfTURJT19QSFlfRkNPTlJYX01BU0ssDQo+ICsJCQkgbWRp b19waHksIEdTVzFYWF9NRElPX1BIWXAocG9ydCkpOw0KPiArfQ0KPiArDQo+IA0KPiANCj4gDQo+ ICsNCj4gK3N0YXRpYyB2b2lkIGdzdzF4eF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3 aXRjaCAqZHMsIGludA0KPiBwb3J0LA0KPiArCQkJCSAgICAgdWludDY0X3QgKmRhdGEpDQo+ICt7 DQo+ICsJc3RydWN0IGdzdzF4eF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQo+ICsJY29uc3Qgc3Ry dWN0IGdzdzF4eF9ybW9uX2NudF9kZXNjICpybW9uX2NudDsNCj4gKwlpbnQgaTsNCj4gKwl1NjQg aGlnaDsNCg0KUmV2ZXJzZSBjaHJpc3RtYXMgdHJlZQ0KDQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShnc3cxeHhfcm1vbl9jbnQpOyBpKyspIHsNCj4gKwkJcm1vbl9jbnQgPSAm Z3N3MXh4X3Jtb25fY250W2ldOw0KPiArDQo+ICsJCWRhdGFbaV0gPQ0KPiArCQkJZ3N3MXh4X2Jj bV9yYW1fZW50cnlfcmVhZChwcml2LCBwb3J0LCBybW9uX2NudC0NCj4gPm9mZnNldCk7DQo+ICsJ CWlmIChybW9uX2NudC0+c2l6ZSA9PSAyKSB7DQo+ICsJCQloaWdoID0gZ3N3MXh4X2JjbV9yYW1f ZW50cnlfcmVhZChwcml2LCBwb3J0LA0KPiArCQkJCQkJCSBybW9uX2NudC0NCj4gPm9mZnNldCAr IDEpOw0KPiArCQkJZGF0YVtpXSB8PSBoaWdoIDw8IDMyOw0KPiArCQl9DQo+ICsJfQ0KPiArfQ0K PiArDQo+IA0KPiArc3RhdGljIGludCBnc3cxeHhfZ2V0X21hY19lZWUoc3RydWN0IGRzYV9zd2l0 Y2ggKmRzLCBpbnQgcG9ydCwNCj4gKwkJCSAgICAgIHN0cnVjdCBldGh0b29sX2VlZSAqZSkNCj4g K3sNCj4gKwlzdHJ1Y3QgZ3N3MXh4X3ByaXYgKnByaXYgPSAoc3RydWN0IGdzdzF4eF9wcml2ICop ZHMtPnByaXY7DQo+ICsJdTMyIHZhbCA9IDA7DQoNClZhbCBpbml0aWFsaXplZCB0byB6ZXJvLg0K DQo+ICsNCj4gKwl2YWwgPSBnc3cxeHhfc3dpdGNoX3IocHJpdiwgR1NXMVhYX0lQX01BQ19DVFJM XzRwKHBvcnQpKTsNCj4gKwllLT50eF9scGlfZW5hYmxlZCA9ICEhKHZhbCAmIEdTVzFYWF9JUF9N QUNfQ1RSTF80X0xQSUVOKTsNCj4gKw0KPiArCWUtPnR4X2xwaV90aW1lciA9IDIwOw0KPiArDQo+ ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gDQo+IA0KPiAraW50IGdzdzF4eF9wcm9iZShzdHJ1 Y3QgZ3N3MXh4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5wLCAqbWRpb19ucDsNCj4gKwlpbnQgZXJyOw0KPiArCXUzMiB2ZXJz aW9uOw0KPiArDQo+ICsJaWYgKCFwcml2LT5yZWdtYXAgfHwgSVNfRVJSKHByaXYtPnJlZ21hcCkp DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJcHJpdi0+aHdfaW5mbyA9IG9mX2Rldmlj ZV9nZXRfbWF0Y2hfZGF0YShkZXYpOw0KPiArCWlmICghcHJpdi0+aHdfaW5mbykNCj4gKwkJcmV0 dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlwcml2LT5kcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVv ZigqcHJpdi0+ZHMpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIXByaXYtPmRzKQ0KPiArCQlyZXR1 cm4gLUVOT01FTTsNCj4gKw0KPiArCXByaXYtPmRzLT5kZXYgPSBkZXY7DQo+ICsJcHJpdi0+ZHMt Pm51bV9wb3J0cyA9IHByaXYtPmh3X2luZm8tPm1heF9wb3J0czsNCj4gKwlwcml2LT5kcy0+cHJp diA9IHByaXY7DQo+ICsJcHJpdi0+ZHMtPm9wcyA9ICZnc3cxeHhfc3dpdGNoX29wczsNCj4gKwlw cml2LT5kZXYgPSBkZXY7DQo+ICsJdmVyc2lvbiA9IGdzdzF4eF9zd2l0Y2hfcihwcml2LCBHU1cx WFhfSVBfVkVSU0lPTik7DQo+ICsNCj4gKwlucCA9IGRldi0+b2Zfbm9kZTsNCj4gKwlzd2l0Y2gg KHZlcnNpb24pIHsNCj4gKwljYXNlIEdTVzFYWF9JUF9WRVJTSU9OXzJfMzoNCj4gKwkJaWYgKCFv Zl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgIm14bCxnc3cxNDUtbWRpbyIpKQ0KPiArCQkJcmV0 dXJuIC1FSU5WQUw7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCWRldl9lcnIoZGV2 LCAidW5rbm93biBHU1cxWFhfSVAgdmVyc2lvbjogMHgleCIsDQo+IHZlcnNpb24pOw0KPiArCQly ZXR1cm4gLUVOT0VOVDsNCj4gKwl9DQo+ICsNCj4gKwkvKiBicmluZyB1cCB0aGUgbWRpbyBidXMg Ki8NCj4gKwltZGlvX25wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsICJtZGlvIik7DQo+ICsJ aWYgKCFtZGlvX25wKSB7DQo+ICsJCWRldl9lcnIoZGV2LCAibWlzc2luZyBjaGlsZCBtZGlvIG5v ZGVcbiIpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwllcnIgPSBnc3cx eHhfbWRpbyhwcml2LCBtZGlvX25wKTsNCj4gKwlpZiAoZXJyKSB7DQo+ICsJCWRldl9lcnIoZGV2 LCAibWRpbyBwcm9iZSBmYWlsZWRcbiIpOw0KPiArCQlnb3RvIHB1dF9tZGlvX25vZGU7DQo+ICsJ fQ0KPiArDQo+ICsJZXJyID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LT5kcyk7DQo+ICsJaWYg KGVycikgew0KPiArCQlkZXZfZXJyKGRldiwgImRzYSBzd2l0Y2ggcmVnaXN0ZXIgZmFpbGVkOiAl aVxuIiwgZXJyKTsNCj4gKwkJZ290byBtZGlvX2J1czsNCg0KVG8gaGF2ZSByZWFkYWJpbGl0eSwg Y2FuIGJlIHJlbmFtZWQgdG8gbWRpb19idXNfdW5yZWdpc3Rlci4NCg0KPiArCX0NCj4gKwlpZiAo IWRzYV9pc19jcHVfcG9ydChwcml2LT5kcywgcHJpdi0+aHdfaW5mby0+Y3B1X3BvcnQpKSB7DQo+ ICsJCWRldl9lcnIoZGV2LA0KPiArCQkJIndyb25nIENQVSBwb3J0IGRlZmluZWQsIEhXIG9ubHkg c3VwcG9ydHMgcG9ydDoNCj4gJWkiLA0KPiArCQkJcHJpdi0+aHdfaW5mby0+Y3B1X3BvcnQpOw0K PiArCQllcnIgPSAtRUlOVkFMOw0KPiArCQlnb3RvIGRpc2FibGVfc3dpdGNoOw0KPiArCX0NCj4g Kw0KPiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIHByaXYpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICsNCj4gK2Rpc2FibGVfc3dpdGNoOg0KPiArCWdzdzF4eF9tZGlvX21hc2socHJpdiwgR1NXMVhY X01ESU9fR0xPQl9FTkFCTEUsIDAsDQo+IEdTVzFYWF9NRElPX0dMT0IpOw0KPiArCWRzYV91bnJl Z2lzdGVyX3N3aXRjaChwcml2LT5kcyk7DQo+ICttZGlvX2J1czoNCj4gKwlpZiAobWRpb19ucCkg ew0KPiArCQltZGlvYnVzX3VucmVnaXN0ZXIocHJpdi0+ZHMtPnNsYXZlX21paV9idXMpOw0KPiAr CQltZGlvYnVzX2ZyZWUocHJpdi0+ZHMtPnNsYXZlX21paV9idXMpOw0KPiArCX0NCj4gK3B1dF9t ZGlvX25vZGU6DQo+ICsJb2Zfbm9kZV9wdXQobWRpb19ucCk7DQo+ICsJcmV0dXJuIGVycjsNCj4g K30NCj4gK0VYUE9SVF9TWU1CT0woZ3N3MXh4X3Byb2JlKTsNCj4gKw0KPiANCj4gDQo+IA0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2dzdzF4eF9tZGlvLmMNCj4gYi9kcml2ZXJzL25l dC9kc2EvZ3N3MXh4X21kaW8uYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwMDAuLjgzMjgwMDEwNDFlZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMv bmV0L2RzYS9nc3cxeHhfbWRpby5jDQo+IEBAIC0wLDAgKzEsMTI4IEBADQo+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyoNCj4gKyAqIE1heExpbmVhciBzd2l0Y2gg ZHJpdmVyIGZvciBHU1cxWFggaW4gTURJTyBtYW5hZ2VkIG1vZGUNCj4gKyAqLw0KPiArI2luY2x1 ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L21kaW8uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9waHkuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9vZi5oPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIA0KSGVhZGVyIGZpbGUgaW4gc29ydGVkIG9yZGVyLg0KDQo+ICsN Cj4gKyNpbmNsdWRlICJnc3cxeHguaCINCj4gKw0KPiArI2RlZmluZSBHU1cxWFhfU01ESU9fVEFS R0VUX0JBU0VfQUREUl9SRUcJMHgxRg0KPiArDQo+IA0K