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 X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A9E1C433B4 for ; Tue, 20 Apr 2021 07:30:08 +0000 (UTC) Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by mail.kernel.org (Postfix) with ESMTP id A750F60238 for ; Tue, 20 Apr 2021 07:30:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A750F60238 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 93144415BE; Tue, 20 Apr 2021 09:30:04 +0200 (CEST) Received: from FRA01-PR2-obe.outbound.protection.outlook.com (mail-eopbgr120084.outbound.protection.outlook.com [40.107.12.84]) by mails.dpdk.org (Postfix) with ESMTP id 31CB94140E; Tue, 20 Apr 2021 09:30:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7VWxxVaUFXPqEqBe09+frrH3lG4SmUlnm/HnR04rHJ0=; b=aFluCoZ+OvK2V9uzUSGfyMzZuVJIgfY9rlnyr0/fCYyLVIlA6hq0JcD0exwB+BpqLrvKgsJk9NHUReIKlah/k/tUCdP4kRYwCK3M5LV6G4F26J/Dz32DdvB21/2s2sNJv1zsYnzhhEl43uQIDZLqexxCmQvf5HHNPmECFp/6WvQ= Received: from AM5PR1001CA0022.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:2::35) by PR2PR08MB4907.eurprd08.prod.outlook.com (2603:10a6:101:17::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.18; Tue, 20 Apr 2021 07:30:01 +0000 Received: from AM5EUR03FT045.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:2:cafe::12) by AM5PR1001CA0022.outlook.office365.com (2603:10a6:206:2::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Tue, 20 Apr 2021 07:30:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT045.mail.protection.outlook.com (10.152.17.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Tue, 20 Apr 2021 07:30:00 +0000 Received: ("Tessian outbound 81a4524e9a48:v90"); Tue, 20 Apr 2021 07:29:59 +0000 X-CR-MTA-TID: 64aa7808 Received: from 7b1bc3c4de7d.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 0D114964-2D3A-43C4-B4A1-44929E8CE9C7.1; Tue, 20 Apr 2021 07:29:53 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 7b1bc3c4de7d.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 20 Apr 2021 07:29:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z9oUs1GbYoLXBCqxS744rS+1KXAxloAeEk6Gs7adhpAE1LObgC6QJ/VVn47nslULji4NPZqYiUB0+wDEPQq4mxFB9/aMVjJ2wuOkHI0jcIaVjtpPc7kS0pVHnfk2SsZ3dNNTJFJxOOGDzS7Oi5043fR1v7bR2Fm3Yc74Hhtl2NnTm5s13kpPnUpLoDbrGxtJx0IKnAQgx4on+7QJ8lMLhr1+fa4M/UFok2+6nweq0cKyBj/uJa/jDiHBd4i2ZXaUICwTdjyKNA8MmUY7v33e0tXvyQEQtV/LqKCh/uoxBR9Ya6YEtM8qauTNAEQ5Gtwj8WGYU3CbxG83rXG8EHXj/w== 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-SenderADCheck; bh=7VWxxVaUFXPqEqBe09+frrH3lG4SmUlnm/HnR04rHJ0=; b=PoQvsfvEMwGi8VbmeGY1TJiVKdmK0ngoH0ma+lRiFwGR66q61ihKO7msmt6Om1GxMO7ZW2D2gLMvzIXiOTdVYMjaNRraEo7oRbNgkDkdLj91YEERnWgTR8/v722oUtelZm1Cap7WAWYmCbkF2O3bGc2T2KI0olAH+bHOnb5xSeP3DrTdec3FZ37vBC9zIwFNxheWN3ce+jqTBRjMYS4QrBHqnuWJGdSWKSZSNRXWJGADqprPuoH7Z0vpzGgW0GgmYm9bn1o3muJUk+25kTwakoCfPsWxXv7uu+PYXpag10IQlzJFZeelz/RADqYps0AWStfLzRjs37z766EZs73/TQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7VWxxVaUFXPqEqBe09+frrH3lG4SmUlnm/HnR04rHJ0=; b=aFluCoZ+OvK2V9uzUSGfyMzZuVJIgfY9rlnyr0/fCYyLVIlA6hq0JcD0exwB+BpqLrvKgsJk9NHUReIKlah/k/tUCdP4kRYwCK3M5LV6G4F26J/Dz32DdvB21/2s2sNJv1zsYnzhhEl43uQIDZLqexxCmQvf5HHNPmECFp/6WvQ= Received: from DBBPR08MB4411.eurprd08.prod.outlook.com (2603:10a6:10:cb::17) by DBBPR08MB5929.eurprd08.prod.outlook.com (2603:10a6:10:208::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.18; Tue, 20 Apr 2021 07:29:53 +0000 Received: from DBBPR08MB4411.eurprd08.prod.outlook.com ([fe80::a127:d91b:c644:74dc]) by DBBPR08MB4411.eurprd08.prod.outlook.com ([fe80::a127:d91b:c644:74dc%7]) with mapi id 15.20.4042.016; Tue, 20 Apr 2021 07:29:52 +0000 From: Feifei Wang To: Slava Ovsiienko , Matan Azrad , Shahaf Shuler CC: "dev@dpdk.org" , nd , "stable@dpdk.org" , Ruifeng Wang , nd , nd , nd Thread-Topic: [PATCH v1 3/4] net/mlx5: fix rebuild bug for Memory Region cache Thread-Index: AQHXG8b7HnA5AJfI/UGBdB2hbGP3xaqws80AgAEoGSCACoZUgIAAtmJQgAAa2oA= Date: Tue, 20 Apr 2021 07:29:52 +0000 Message-ID: References: <20210318071840.359957-1-feifei.wang2@arm.com> <20210318071840.359957-4-feifei.wang2@arm.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 9F4E2CD76AD17843A3AFA88FA8763E36.0 x-checkrecipientchecked: true Authentication-Results-Original: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [203.126.0.112] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: bdfbf58a-848a-46e6-a07c-08d903ce1b3e x-ms-traffictypediagnostic: DBBPR08MB5929:|PR2PR08MB4907: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: eMM4HxyVsLG1L3xFhXnkbrbQGvFvRMTZ8ONFuuHHeXvH6uyUVxYcv/8kjk2ioeblutDGxGBg6Aa6aQZBnqm4fblwdiZpMsVJGd6CfHio6vjXZmBHpd/1DdFVKXaFJIB+HiYVIMjXlXxo/vHvYSt0ILQBL38/wifGD/oB89hMf1eQQrvgkwf6MXTyN+uxfVOWANiti9UbEEImTtn3MG+UG4vZcZIDqE4LNh4y/JSLGHcozMazBQkyy8wlc6rqAclikDmcTrZSYG6TQ/AGUh9QTlj8NKQB50Neif+Le9v7C+c3pjm7GOHkv56r34dBuUdZeBsQGYIwhVlZqExgZk48hsw4B9kr/6hAg+ZaBid8ksmaE3pDNItAyitzczD3VEMfqWPN5T0QGzpuTU1DO9amXULNmIBwLL+NvCGCntXyrn0em6jkfuv4ABIZJgoz+LKLfRrNfni8LTqINYw6kZggXrCiKwMhl4u28phbRqnrGBObkYZfT5WBmoFAYjjxlNd180fDlMLAsjgrJLua1mzbrhDUOp69mK5fr6xERTlj6ccsqWa/IWWv6Y9vMKaC3EslMSrbLDRxP8Q2LW7XjVbi0cxSD4RAk4qm3nBISp3oz3E= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBBPR08MB4411.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(136003)(376002)(39860400002)(396003)(366004)(224303003)(478600001)(71200400001)(55016002)(9686003)(66476007)(83380400001)(6506007)(26005)(86362001)(2906002)(66946007)(66556008)(52536014)(5660300002)(76116006)(4326008)(66446008)(30864003)(53546011)(7696005)(64756008)(8936002)(33656002)(38100700002)(186003)(316002)(122000001)(2940100002)(54906003)(110136005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?dWVWU0hUazYwT2J0ai91VlB0WjN6dEJWNlhtMzhvaUo0cXhqaFNMLzBRLys1?= =?utf-8?B?QWtjUlNRZCtKWjV5TFJVNVZSa0xTSzZrSnJqMWtrcmRWZlA5cTlIYnpWRDF4?= =?utf-8?B?MkRwMUI5eVFGNWV1MG1sRThkQVVIYlllQUc2ZGgvYXdvdVhyWExtMzBmZmR1?= =?utf-8?B?aVZQeGlKU0kvNUxxa1lMdG9KQk1oWkErRjJiUEw1Yms4WEhVS2drbVNVNmE3?= =?utf-8?B?RWFsbUs4Tm1vSWQ2ZUJDbGIxanpUK21teVZ3MlNFbG81WVdENmpEMm5NQmw4?= =?utf-8?B?T1BiQTRnekwwSTdmZWdiTHFOUzVIWVBWd3Job1JRLzd2TjBIUXVzaUFGVUpP?= =?utf-8?B?SGthbEp5YzdIbkJVRkFNVlNMNzJUTStmUXIzOEZYYU5Vdk9uSytKOGZVVzdn?= =?utf-8?B?K1lrdnZoemxYdWFYbng5ZkI4NWlaM1l1UDBEVnQ1cmdGTlpyZzNaVVQvQ08v?= =?utf-8?B?MW1zcWQvUDYweldlQkNJOFJIZlV1MC9Ta3VvQnYvVkR1eU41MnRkdGc3VzRD?= =?utf-8?B?ZUxNWjZOTEQwdjBIdjllaHB1NEtNSHNmZUM1MStWckVDSnBsOVJVYVZDRWh2?= =?utf-8?B?OVU0MERsdWdud2hzcmozSGdhZnRDMHhvby95Mzg5eDk4Vk8vbjJlK2JDL0Ez?= =?utf-8?B?MjZQWjQ5WVkxL1pxSWM5R2dRWnFWbUpXWnQweHRtSXlFcjZFTXNHdDlpcWhi?= =?utf-8?B?dnlKc3lkWnpZVGNGcVhFdzVIYjlGV2ZsRk9KQmU0aU4vWWsvRVQ4bFQrdGMv?= =?utf-8?B?dmd6VWx6NjdhclhiZWE4bGFjMFdYVUdQQWttSGs4dVpIWlhzWGc3M1dNOXM4?= =?utf-8?B?eEtkVVI3bitiVmE1UEpsenVqSWQ0U3NFK1R1TzBUQy8yN2JsMnBHdWJiN0Jw?= =?utf-8?B?VTZ6L1hHYkRDTW94dWgzRENBUjJ5MnZuR29pbGJMRUxXZ0U5Vm5kdWhNOTJi?= =?utf-8?B?dC9JdnRkZlZRWHhYYzhYSVd1Nlk0VTVMcUZnTytyOXZYMW5adEY1TFBuK0gw?= =?utf-8?B?K2xwUlhOUktjaEF3UFl0WjhORkJmRytubk8wNGlzY21ZTTRZN1RkWGREUHpZ?= =?utf-8?B?aDdrMmVZQmwxbm05UVl3TzhKYThaVEIrbUhHbmIxN1FtbGFIMm0wam1VMDVl?= =?utf-8?B?MStMN2JaNUdhdHZjaG1PN01pamJYbTRIb3JOL1JrM3JIWjdnM0dKcmMwNFlt?= =?utf-8?B?aGl5V0llek1YYzlnNjRSMDlpZTN4WE5GN3p0S3BkMm5JaFV2ZHRUcVRwc21R?= =?utf-8?B?NXB0VExCbkhESC9rSDNjNDRjNUIzRUl6RFFnMC9JeGNPNEZSUEZJQTd1dVVW?= =?utf-8?B?WFA4REFDTDNKcFFjdzd3TVNCYTRPMVBmR3Z5RmZjWHYyWVBWcEJQNXFvWnRP?= =?utf-8?B?WHlUYm5wQStkang5L1E2bTRPdHRmNVBmVXdXRXloWC95UGJUeTdsc3lXYnl5?= =?utf-8?B?bnJONU03b2tibVRMb2FkTlgvd2ZQSWNQUHJyd1dvL0RBSnQ4enNQbXU0eExp?= =?utf-8?B?OG9SYU9jSWYwTVZiUlRWajJwYkU2Wm03cW5OTzZ5d0dwN05UVHNlTlV1VWJU?= =?utf-8?B?VjBpQytYdS9Zazc2SHNobnJ4RWdFa25GaFJSRE9wbGdrQ0FXNHpOU0hOQlhC?= =?utf-8?B?cXN2QWFtNTVsKytSK3ZQQzZIeGtnWGFvb09pV0FhYU8zUGhjR3BlNnl2dlk1?= =?utf-8?B?cmNBWCtyZUNPR1RlbU9KS1pFaXhnSG11WG9MVmliUERDb1NvSU56eXM4eGNk?= =?utf-8?Q?04R4dbtaO9tv7chxQYw7f8Q4GYifxo+rH9UPgnB?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB5929 Original-Authentication-Results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 53a844d0-ce1d-49dd-fd68-08d903ce16c2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4I1zrPd/eowsm75ZOhZy2UrVP+YmFWXjJAIyO79zTMZEnMK2pv9vhyYXShXstY5LocTuN/zCAnb7UAIhjMAxDZDqMY+FreIq8pf6APsqVMrOTrUrVTZU1+LxA7mrPlJP7aSO0gPb7VtBQ2hBUtJcelTpof+2fz41qAJd+oAaceDuV8natskJxaQFq5YUG2C49X372oBlIq3/m2preEHkPmrc5laLEEc3ti3aZzTFPJuWjSqec4s7igW2OZGIAZS7LS2wifesEJ6BAWQzdSgqbT5eYQKzloEG3NDDZHegFZ5UR99yacebymcJ+vEwNmeotlgToKHQ6R1mYmzssUNVy6wqO1dCHEJpk/3Kw2PyLkIswFoWBcsKF6bFjk1W4U8dl6MhG99MycRWFh+Fg9vJT8JKB0KpZdveLd8o+S6DWratiPvGSJvdcRdfyObPyD7CDuVyYd7+2LxF6SHr7RUqUsl5np9/Cd2b/EFZK87QCbzRTMjCnF++0GxFwEtyVQyclHe9HeeXXsRpa6Dk5YVEmK/AqiO/SlLD4F25SzJLe12bXRHoDUO7UG+10qjuGr2DurVGBdprQ/z9+GRmzr8TYlhjZzfIXVxZaOhOjHIbFmTrTZtNhzuG9+ETzHkTaLgqdt3ZkkYpKrDHkZT/QFGEXA2M0OtJlSg7i+IeVottxEc= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(39860400002)(136003)(346002)(396003)(376002)(36840700001)(46966006)(82740400003)(83380400001)(86362001)(47076005)(5660300002)(33656002)(55016002)(30864003)(82310400003)(81166007)(478600001)(356005)(54906003)(4326008)(36860700001)(26005)(186003)(316002)(224303003)(53546011)(52536014)(70586007)(110136005)(336012)(450100002)(70206006)(2940100002)(8936002)(6506007)(9686003)(2906002)(7696005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2021 07:30:00.4091 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bdfbf58a-848a-46e6-a07c-08d903ce1b3e X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4907 Subject: [dpdk-dev] =?utf-8?b?5Zue5aSNOiBbUEFUQ0ggdjEgMy80XSBuZXQvbWx4?= =?utf-8?q?5=3A_fix_rebuild_bug_for_Memory_Region_cache?= X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGksIFNsYXZhDQoNCkFub3RoZXIgcXVlc3Rpb24gc3VkZGVubHkgb2NjdXJyZWQgdG8gbWUsIGlu IG9yZGVyIHRvIGtlZXAgdGhlIG9yZGVyIHRoYXQgcmVidWlsZGluZyBnbG9iYWwgY2FjaGUNCmJl Zm9yZSB1cGRhdGluZyDigJ1kZXZfZ2Vu4oCcLCB0aGUgd21iIHNob3VsZCBiZSBiZWZvcmUgdXBk YXRpbmcgImRldl9nZW4iIHJhdGhlciB0aGFuIGFmdGVyIGl0Lg0KT3RoZXJ3aXNlLCBpbiB0aGUg b3V0LW9mLW9yZGVyIHBsYXRmb3JtcywgY3VycmVudCBvcmRlciBjYW5ub3QgYmUga2VwdC4NCg0K VGh1cywgd2Ugc2hvdWxkIGNoYW5nZSB0aGUgY29kZSBhczoNCmEpIHJlYnVpbGQgZ2xvYmFsIGNh Y2hlOw0KYikgcnRlX3NtcF93bWIoKTsNCmMpIHVwZGF0aW5nIGRldl9nZW4NCg0KQmVzdCBSZWdh cmRzDQpGZWlmZWkNCj4gLS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hku7bkuro6IEZlaWZl aSBXYW5nDQo+IOWPkemAgeaXtumXtDogMjAyMeW5tDTmnIgyMOaXpSAxMzo1NA0KPiDmlLbku7bk uro6IFNsYXZhIE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbnZpZGlhLmNvbT47IE1hdGFuIEF6cmFk DQo+IDxtYXRhbkBudmlkaWEuY29tPjsgU2hhaGFmIFNodWxlciA8c2hhaGFmc0BudmlkaWEuY29t Pg0KPiDmioTpgIE6IGRldkBkcGRrLm9yZzsgbmQgPG5kQGFybS5jb20+OyBzdGFibGVAZHBkay5v cmc7IFJ1aWZlbmcgV2FuZw0KPiA8UnVpZmVuZy5XYW5nQGFybS5jb20+OyBuZCA8bmRAYXJtLmNv bT47IG5kIDxuZEBhcm0uY29tPg0KPiDkuLvpopg6IOWbnuWkjTogW1BBVENIIHYxIDMvNF0gbmV0 L21seDU6IGZpeCByZWJ1aWxkIGJ1ZyBmb3IgTWVtb3J5IFJlZ2lvbg0KPiBjYWNoZQ0KPiANCj4g SGksIFNsYXZhDQo+IA0KPiBUaGFua3MgdmVyeSBtdWNoIGZvciB5b3VyIGV4cGxhbmF0aW9uLg0K PiANCj4gSSBjYW4gdW5kZXJzdGFuZCB0aGUgYXBwIGNhbiB3YWl0IGFsbCBtYnVmcyBhcmUgcmV0 dXJuZWQgdG8gdGhlIG1lbW9yeSBwb29sLA0KPiBhbmQgdGhlbiBpdCBjYW4gZnJlZSB0aGlzIG1i dWZzLCBJIGFncmVlIHdpdGggdGhpcy4NCj4gDQo+IEFzIGEgcmVzdWx0LCBJIHdpbGwgcmVtb3Zl IHRoZSBidWcgZml4IHBhdGNoIGZyb20gdGhpcyBzZXJpZXMgYW5kIGp1c3QgcmVwbGFjZQ0KPiB0 aGUgc21wIGJhcnJpZXIgd2l0aCBDMTEgdGhyZWFkIGZlbmNlLiBUaGFua3MgdmVyeSBtdWNoIGZv ciB5b3VyIHBhdGllbnQNCj4gZXhwbGFuYXRpb24gYWdhaW4uDQo+IA0KPiBCZXN0IFJlZ2FyZHMN Cj4gRmVpZmVpDQo+IA0KPiA+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4gPiDlj5Hku7bkuro6 IFNsYXZhIE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbnZpZGlhLmNvbT4NCj4gPiDlj5HpgIHml7bp l7Q6IDIwMjHlubQ05pyIMjDml6UgMjo1MQ0KPiA+IOaUtuS7tuS6ujogRmVpZmVpIFdhbmcgPEZl aWZlaS5XYW5nMkBhcm0uY29tPjsgTWF0YW4gQXpyYWQNCj4gPiA8bWF0YW5AbnZpZGlhLmNvbT47 IFNoYWhhZiBTaHVsZXIgPHNoYWhhZnNAbnZpZGlhLmNvbT4NCj4gPiDmioTpgIE6IGRldkBkcGRr Lm9yZzsgbmQgPG5kQGFybS5jb20+OyBzdGFibGVAZHBkay5vcmc7IFJ1aWZlbmcgV2FuZw0KPiA+ IDxSdWlmZW5nLldhbmdAYXJtLmNvbT47IG5kIDxuZEBhcm0uY29tPg0KPiA+IOS4u+mimDogUkU6 IFtQQVRDSCB2MSAzLzRdIG5ldC9tbHg1OiBmaXggcmVidWlsZCBidWcgZm9yIE1lbW9yeSBSZWdp b24NCj4gPiBjYWNoZQ0KPiA+DQo+ID4gSGksIEZlaWZlaQ0KPiA+DQo+ID4gUGxlYXNlLCBzZWUg YmVsb3cNCj4gPg0KPiA+IC4uLi4NCj4gPg0KPiA+ID4gPiBIaSwgRmVpZmVpDQo+ID4gPiA+DQo+ ID4gPiA+IFNvcnJ5LCBJIGRvIG5vdCBmb2xsb3cgd2hhdCB0aGlzIHBhdGNoIGZpeGVzLiBEbyB3 ZSBoYXZlIHNvbWUNCj4gPiA+ID4gaXNzdWUvYnVnIHdpdGggTVIgY2FjaGUgaW4gcHJhY3RpY2U/ DQo+ID4gPg0KPiA+ID4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgYnVnIHdoaWNoIGlzIGJhc2VkIG9u IGxvZ2ljYWwgZGVkdWN0aW9uLCBhbmQgaXQNCj4gPiA+IGRvZXNuJ3QgYWN0dWFsbHkgaGFwcGVu Lg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gRWFjaCBUeCBxdWV1ZSBoYXMgaXRzIG93biBkZWRp Y2F0ZWQgImxvY2FsIiBjYWNoZSBmb3IgTVJzIHRvDQo+ID4gPiA+IGNvbnZlcnQgYnVmZmVyIGFk ZHJlc3MgaW4gbWJ1ZnMgYmVpbmcgdHJhbnNtaXR0ZWQgdG8gTEtleXMNCj4gPiA+ID4gKEhXLXJl bGF0ZWQgZW50aXR5DQo+ID4gPiA+IGhhbmRsZSkgYW5kIHRoZSAiZ2xvYmFsIiBjYWNoZSBmb3Ig YWxsIE1SIHJlZ2lzdGVyZWQgb24gdGhlIGRldmljZS4NCj4gPiA+ID4NCj4gPiA+ID4gQUZBSUss IGhvdyBjb252ZXJzaW9uIGhhcHBlbnMgaW4gZGF0YXBhdGg6DQo+ID4gPiA+IC0gY2hlY2sgdGhl IGxvY2FsIHF1ZXVlIGNhY2hlIGZsdXNoIHJlcXVlc3QNCj4gPiA+ID4gLSBsb29rdXAgaW4gbG9j YWwgY2FjaGUNCj4gPiA+ID4gLSBpZiBub3QgZm91bmQ6DQo+ID4gPiA+IC0gYWNxdWlyZSBsb2Nr IGZvciBnbG9iYWwgY2FjaGUgcmVhZCBhY2Nlc3MNCj4gPiA+ID4gLSBsb29rdXAgaW4gZ2xvYmFs IGNhY2hlDQo+ID4gPiA+IC0gcmVsZWFzZSBsb2NrIGZvciBnbG9iYWwgY2FjaGUNCj4gPiA+ID4N Cj4gPiA+ID4gSG93IGNhY2hlIHVwZGF0ZSBvbiBtZW1vcnkgZnJlZWluZy91bnJlZ2lzdGVyaW5n IGhhcHBlbnM6DQo+ID4gPiA+IC0gYWNxdWlyZSBsb2NrIGZvciBnbG9iYWwgY2FjaGUgd3JpdGUg YWNjZXNzDQo+ID4gPiA+IC0gW2FdIHJlbW92ZSByZWxldmFudCBNUnMgZnJvbSB0aGUgZ2xvYmFs IGNhY2hlDQo+ID4gPiA+IC0gW2JdIHNldCBsb2NhbCBjYWNoZXMgZmx1c2ggcmVxdWVzdA0KPiA+ ID4gPiAtIGZyZWUgZ2xvYmFsIGNhY2hlIGxvY2sNCj4gPiA+ID4NCj4gPiA+ID4gSWYgSSB1bmRl cnN0YW5kIGNvcnJlY3RseSwgeW91ciBwYXRjaCBzd2FwcyBbYV0gYW5kIFtiXSwgYW5kIGxvY2Fs DQo+ID4gPiA+IGNhY2hlcyBmbHVzaCBpcyByZXF1ZXN0ZWQgZWFybGllci4gV2hhdCBwcm9ibGVt IGRvZXMgaXQgc29sdmU/DQo+ID4gPiA+IEl0IGlzIG5vdCBzdXBwb3NlZCB0aGVyZSBhcmUgaW4g ZGF0YXBhdGggc29tZSBtYnVmcyByZWZlcmVuY2luZyB0bw0KPiA+ID4gPiB0aGUgbWVtb3J5IGJl aW5nIGZyZWVkLiBBcHBsaWNhdGlvbiBtdXN0IGVuc3VyZSB0aGlzIGFuZCBtdXN0IG5vdA0KPiA+ ID4gPiBhbGxvY2F0ZSBuZXcgbWJ1ZnMgZnJvbSB0aGlzIG1lbW9yeSByZWdpb25zIGJlaW5nIGZy ZWVkLiBIZW5jZSwNCj4gPiA+ID4gdGhlIGxvb2t1cHMgZm9yIHRoZXNlIE1ScyBpbiBjYWNoZXMg c2hvdWxkIG5vdCBvY2N1ci4NCj4gPiA+DQo+ID4gPiBGb3IgeW91ciBmaXJzdCBwb2ludCB0aGF0 LCBhcHBsaWNhdGlvbiBjYW4gdGFrZSBjaGFyZ2Ugb2YgcHJldmVudGluZw0KPiA+ID4gTVIgZnJl ZWQgbWVtb3J5IGJlaW5nIGFsbG9jYXRlZCB0byBkYXRhIHBhdGguDQo+ID4gPg0KPiA+ID4gRG9l cyBpdCBtZWFucyB0aGF0IElmIHRoZXJlIGlzIGFuIGVtZXJnZW5jeSBvZiBNUiBmcmFnbWVudCwg c3VjaCBhcw0KPiA+ID4gaG90cGx1ZywgdGhlIGFwcGxpY2F0aW9uIG11c3QgaW5mb3JtIHRoZWRh dGEgcGF0aCBpbiBhZHZhbmNlLCBhbmQNCj4gPiA+IHRoaXMgbWVtb3J5IHdpbGwgbm90IGJlIGFs bG9jYXRlZCwgYW5kIHRoZW4gdGhlIGNvbnRyb2wgcGF0aCB3aWxsDQo+ID4gPiBmcmVlIHRoaXMg bWVtb3J5PyBJZiBhcHBsaWNhdGlvbiAgY2FuIGRvIGxpa2UgdGhpcywgSSBhZ3JlZSB0aGF0IHRo aXMgYnVnDQo+IGNhbm5vdCBoYXBwZW4uDQo+ID4NCj4gPiBBY3R1YWxseSwgIHRoaXMgaXMgdGhl IG9ubHkgY29ycmVjdCB3YXkgZm9yIGFwcGxpY2F0aW9uIHRvIG9wZXJhdGUuDQo+ID4gTGV0J3Mg c3VwcG9zZSB3ZSBoYXZlIHNvbWUgbWVtb3J5IGFyZWEgdGhhdCBhcHBsaWNhdGlvbiB3YW50cyB0 byBmcmVlLg0KPiA+IEFMTCByZWZlcmVuY2VzIHRvIHRoaXMgYXJlYSBtdXN0IGJlIHJlbW92ZWQu IElmIHdlIGhhdmUgc29tZSBtYnVmcw0KPiA+IGFsbG9jYXRlZCBmcm9tIHRoaXMgYXJlYSwgaXQg bWVhbnMgdGhhdCB3ZSBoYXZlIG1lbW9yeSBwb29sIGNyZWF0ZWQgdGhlcmUuDQo+ID4NCj4gPiBX aGF0IGFwcGxpY2F0aW9uIHNob3VsZCBkbzoNCj4gPiAtIG5vdGlmeSBhbGwgaXRzIGNvbXBvbmVu dHMvYWdlbnRzIHRoZSBtZW1vcnkgYXJlYSBpcyBnb2luZyB0byBiZQ0KPiA+IGZyZWVkDQo+ID4g LSBhbGwgY29tcG9uZW50cy9hZ2VudHMgZnJlZSB0aGUgbWJ1ZnMgdGhleSBtaWdodCBvd24NCj4g PiAtIFBNRCBtaWdodCBub3Qgc3VwcG9ydCBmcmVlaW5nIGZvciBzb21lIG1idWZzIChmb3IgZXhh bXBsZSBiZWluZyBzZW50DQo+ID4gYW5kIGF3YWl0aW5nIGZvciBjb21wbGV0aW9uKSwgc28gYXBw IHNob3VsZCBqdXN0IHdhaXQNCj4gPiAtIHdhaXQgdGlsbCBhbGwgbWJ1ZnMgYXJlIHJldHVybmVk IHRvIHRoZSBtZW1vcnkgcG9vbCAoYnkgbW9uaXRvcmluZw0KPiA+IGF2YWlsYWJsZSBvYmogPT0g cG9vbCBzaXplKQ0KPiA+DQo+ID4gT3RoZXJ3aXNlIC0gaXQgaXMgZGFuZ2Vyb3VzIHRvIGZyZWUg dGhlIG1lbW9yeS4gVGhlcmUgYXJlIGp1c3Qgc29tZQ0KPiA+IG1idWZzIHN0aWxsIGFsbG9jYXRl ZCwgaXQgaXMgcmVnYXJkbGVzcyB0byBidWYgYWRkcmVzcyB0byBNUg0KPiA+IHRyYW5zbGF0aW9u LiBXZSBqdXN0IGNhbid0IGZyZWUgdGhlIG1lbW9yeSAtIHRoZSBtYXBwaW5nIHdpbGwgYmUNCj4g PiBkZXN0cm95ZWQgYW5kIG1pZ2h0IGNhdXNlIHRoZSBzZWdtZW50YXRpb24gZmF1bHQgYnkgU1cg b3Igc29tZSBIVw0KPiA+IGlzc3VlcyBvbiBETUEgYWNjZXNzIHRvIHVubWFwcGVkIG1lbW9yeS4g IEl0IGlzIHZlcnkgZ2VuZXJpYyBzYWZldHkNCj4gPiBhcHByb2FjaCAtIGRvIG5vdCBmcmVlIHRo ZSBtZW1vcnkgdGhhdCBpcyBzdGlsbCBpbiB1c2UuIEhlbmNlLCBhdCB0aGUNCj4gPiBtb21lbnQg b2YgZnJlZWluZyBhbmQgdW5yZWdpc3RlcmluZyB0aGUgTVIsIHRoZXJlIE1VU1QgQkUgTk8gYW55 DQo+IG1idWZzIGluIGZsaWdodCByZWZlcmVuY2luZyB0byB0aGUgYWRkcmVzc2VzIGJlaW5nIGZy ZWVkLg0KPiA+IE5vIHRyYW5zbGF0aW9uIHRvIE1SIGJlaW5nIGludmFsaWRhdGVkIGNhbiBoYXBw ZW4uDQo+ID4NCj4gPiA+DQo+ID4gPiA+IEZvciBvdGhlciBzaWRlLCB0aGUgY2FjaGUgZmx1c2gg aGFzIG5lZ2F0aXZlIGVmZmVjdCAtIHRoZSBsb2NhbA0KPiA+ID4gPiBjYWNoZSBpcyBnZXR0aW5n IGVtcHR5IGFuZCBjYW4ndCBwcm92aWRlIHRyYW5zbGF0aW9uIGZvciBvdGhlcg0KPiA+ID4gPiB2 YWxpZCAobm90IGJlaW5nIHJlbW92ZWQpIE1ScywgYW5kIHRoZSB0cmFuc2xhdGlvbiBoYXMgdG8g bG9vayB1cA0KPiA+ID4gPiBpbiB0aGUgZ2xvYmFsIGNhY2hlLCB0aGF0IGlzIGxvY2tlZCBub3cg Zm9yIHJlYnVpbGRpbmcsIHRoaXMNCj4gPiA+ID4gY2F1c2VzIHRoZSBkZWxheXMgaW4gZGF0YXBh dGNoDQo+ID4gPiBvbiBhY3F1aXJpbmcgZ2xvYmFsIGNhY2hlIGxvY2suDQo+ID4gPiA+IFNvLCBJ IHNlZSBzb21lIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBhY3QuDQo+ID4gPg0KPiA+ID4gSWYg YWJvdmUgYXNzdW1wdGlvbiBpcyB0cnVlLCB3ZSBjYW4gZ28gdG8geW91ciBzZWNvbmQgcG9pbnQu IEkgdGhpbmsNCj4gPiA+IHRoaXMgaXMgYSBwcm9ibGVtIG9mIHRoZSB0cmFkZW9mZiBiZXR3ZWVu IGNhY2hlIGNvaGVyZW5jZSBhbmQNCj4gPiBwZXJmb3JtYW5jZS4NCj4gPiA+DQo+ID4gPiBJIGNh biB1bmRlcnN0YW5kIHlvdXIgbWVhbmluZyB0aGF0IHRob3VnaCBnbG9iYWwgY2FjaGUgaGFzIGJl ZW4NCj4gPiA+IGNoYW5nZWQsIHdlIHNob3VsZCBrZWVwIHRoZSB2YWxpZCBNUiBpbiBsb2NhbCBj YWNoZSBhcyBsb25nIGFzDQo+ID4gPiBwb3NzaWJsZSB0byBlbnN1cmUgdGhlIGZhc3Qgc2VhcmNo aW5nIHNwZWVkLg0KPiA+ID4gSW4gdGhlIG1lYW53aGlsZSwgdGhlIGxvY2FsIGNhY2hlIGNhbiBi ZSByZWJ1aWx0IGxhdGVyIHRvIHJlZHVjZSBpdHMNCj4gPiA+IHdhaXRpbmcgdGltZSBmb3IgYWNx dWlyaW5nIHRoZSBnbG9iYWwgY2FjaGUgbG9jay4NCj4gPiA+DQo+ID4gPiBIb3dldmVyLCAgdGhp cyBtZWNoYW5pc20ganVzdCBlbnN1cmVzIHRoZSBwZXJmb3JtYW5jZSB1bmNoYW5nZWQgZm9yDQo+ ID4gPiB0aGUgZmlyc3QgZmV3IG1idWZzLg0KPiA+ID4gRHVyaW5nIHRoZSBuZXh0IG1idWZzIGxr ZXkgc2VhcmNoaW5nIGFmdGVyICdkZXZfZ2VuJyB1cGRhdGVkLCBpdCBpcw0KPiA+ID4gc3RpbGwg bmVjZXNzYXJ5IHRvIHVwZGF0ZSB0aGUgbG9jYWwgY2FjaGUuIEFuZCB0aGUgcGVyZm9ybWFuY2Ug Y2FuDQo+ID4gPiBmaXJzdGx5IHJlZHVjZSBhbmQgdGhlbiByZXR1cm5zLiBUaHVzLCBubyBtYXR0 ZXIgd2hldGhlciB0aGVyZSBpcw0KPiA+ID4gdGhpcyBwYXRjaCBvciBub3QsICB0aGUgcGVyZm9y bWFuY2Ugd2lsbCBqaXR0ZXIgaW4gYSBjZXJ0YWluIHBlcmlvZCBvZiB0aW1lLg0KPiA+DQo+ID4g TG9jYWwgY2FjaGUgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gcmVtb3ZlIE1ScyBubyBsb25nZXIgdmFs aWQuIEJ1dCB3ZQ0KPiA+IGp1c3QgZmx1c2ggdGhlIGVudGlyZSBjYWNoZS4NCj4gPiBMZXQncyBz dXBwb3NlIHdlIGhhdmUgdmFsaWQgTVIwLCBNUjEsIGFuZCBub3QgdmFsaWQgTVJYIGluIGxvY2Fs IGNhY2hlLg0KPiA+IEFuZCB0aGVyZSBhcmUgdHJhZmZpYyBpbiB0aGUgZGF0YXBhdGggZm9yIE1S MCBhbmQgTVIxLCBhbmQgbm8gdHJhZmZpYw0KPiA+IGZvciBNUlggYW55bW9yZS4NCj4gPg0KPiA+ IDEpIElmIHdlIGRvIGFzIHlvdSBwcm9wb3NlOg0KPiA+IGEpIHRha2UgYSBsb2NrDQo+ID4gYikg cmVxdWVzdCBmbHVzaCBsb2NhbCBjYWNoZSBmaXJzdCAtIGFsbCBNUjAsIE1SMSwgTVJYIHdpbGwg YmUgcmVtb3ZlZA0KPiA+IG9uIHRyYW5zbGF0aW9uIGluIGRhdGFwYXRoDQo+ID4gYykgdXBkYXRl IGdsb2JhbCBjYWNoZSwNCj4gPiBkKSBmcmVlIGxvY2sNCj4gPiBBbGwgdGhlIHRyYWZmaWMgZm9y IHZhbGlkIE1SMCwgTVIxIEFMV0FZUyB3aWxsIGJlIGJsb2NrZWQgb24gbG9jaw0KPiA+IHRha2Vu IGZvciBjYWNoZSB1cGRhdGUgc2luY2UgcG9pbnQgYikgdGlsbCBwb2ludCBkKS4NCj4gPg0KPiA+ IDIpIElmIHdlIGRvIGFzIGl0IGlzIGltcGxlbWVudGVkIG5vdzoNCj4gPiBhKSB0YWtlIGEgbG9j aw0KPiA+IGIpIHVwZGF0ZSBnbG9iYWwgY2FjaGUNCj4gPiBjKSByZXF1ZXN0IGZsdXNoIGxvY2Fs IGNhY2hlDQo+ID4gZCkgZnJlZSBsb2NrDQo+ID4gVGhlIHRyYWZmaWMgTUlHSFQgYmUgbG9ja2Vk IE9OTFkgZm9yIE1ScyBub24tZXhpc3RpbmcgaW4gbG9jYWwgY2FjaGUNCj4gPiAobm90IGhhcHBl bnMgZm9yIE1SMCBhbmQgTVIxLCBtdXN0IG5vdCBoYXBwZW4gZm9yIE1SWCksICBhbmQNCj4gPiBw cm9iYWJpbGl0eSBzaG91bGQgYmUgbWlub3IuIEFuZCBsb2NrIG1pZ2h0IGhhcHBlbiBzaW5jZSBj KSB0aWxsIGQpIC0NCj4gPiBxdWl0ZSBzaG9ydCBwZXJpb2Qgb2YgdGltZQ0KPiA+DQo+ID4gU3Vt bWFyeSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAxKSBhbmQgMikNCj4gPg0KPiA+IExvY2sgcHJv YmFiaWxpdHk6DQo+ID4gLSAxKSBsb2NrIEFMV0FZUyBoYXBwZW4gZm9yIEFOWSBNUiB0cmFuc2xh dGlvbiBhZnRlciBiKSwNCj4gPiAgIDIpIGxvY2sgTUlHSFQgaGFwcGVuLCBmb3IgY2FjaGUgbWlz cyBPTkxZLCBhZnRlciBjKQ0KPiA+DQo+ID4gTG9jayBkdXJhdGlvbjoNCj4gPiAtIDEpIGxvY2sg c2luY2UgYikgdGlsbCBkKSwNCj4gPiAgIDIpIGxvY2sgc2luY2UgYykgdGlsbCBkKSwgdGhhdCBz ZWVtcyB0byBiZSAgbXVjaCBzaG9ydGVyLg0KPiA+DQo+ID4gPg0KPiA+ID4gRmluYWxseSwgaW4g Y29uY2x1c2lvbiwgSSB0ZW5kIHRvIHRoaW5rIHRoYXQgdGhlIGJvdHRvbSBsYXllciBjYW4gZG8N Cj4gPiA+IG1vcmUgdGhpbmdzIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBleGVjdXRpb24gb2YgdGhl IHByb2dyYW0sIHdoaWNoDQo+ID4gPiBtYXkgaGF2ZSBhIG5lZ2F0aXZlIGltcGFjdCBvbiB0aGUg cGVyZm9ybWFuY2UgaW4gYSBzaG9ydCB0aW1lLCBidXQNCj4gPiA+IGluIHRoZSBsb25nIHJ1biwg dGhlIHBlcmZvcm1hbmNlIHdpbGwgZXZlbnR1YWxseSBjb21lIGJhY2suDQo+ID4gPiBGdXJ0aGVy bW9yZSwgbWF5YmUgd2Ugc2hvdWxkIHBheSBhdHRlbnRpb24gdG8gdGhlIHBlcmZvcm1hbmNlIGlu IHRoZQ0KPiA+ID4gc3RhYmxlIHBlcmlvZCwgYW5kIHRyeSBvdXIgYmVzdCB0byBlbnN1cmUgdGhl IGNvcnJlY3RuZXNzIG9mIHRoZQ0KPiA+ID4gcHJvZ3JhbSBpbiBjYXNlIG9mDQo+ID4gZW1lcmdl bmNpZXMuDQo+ID4NCj4gPiBJZiB3ZSBoYXZlIHNvbWUgbWJ1ZnMgc3RpbGwgYWxsb2NhdGVkIGlu IG1lbW9yeSBiZWluZyBmcmVlZCAtIHRoZXJlIGlzDQo+ID4gbm90aGluZyB0byBzYXkgYWJvdXQg Y29ycmVjdG5lc3MsIGl0IGlzIHRvdGFsbHkgaW5jb3JyZWN0LiBJbiBteQ0KPiA+IG9waW5pb24s IHdlIHNob3VsZCBub3QgdGhpbmsgaG93IHRvIG1pdGlnYXRlIHRoaXMgaW5jb3JyZWN0IGJlaGF2 aW9yLA0KPiA+IHdlIHNob3VsZCBub3QgZW5jb3VyYWdlIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMg dG8gZm9sbG93IHRoZSB3cm9uZw0KPiBhcHByb2FjaGVzLg0KPiA+DQo+ID4gV2l0aCBiZXN0IHJl Z2FyZHMsDQo+ID4gU2xhdmENCj4gPg0KPiA+ID4NCj4gPiA+IEJlc3QgUmVnYXJkcw0KPiA+ID4g RmVpZmVpDQo+ID4gPg0KPiA+ID4gPiBXaXRoIGJlc3QgcmVnYXJkcywNCj4gPiA+ID4gU2xhdmEN Cj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ IEZyb206IEZlaWZlaSBXYW5nIDxmZWlmZWkud2FuZzJAYXJtLmNvbT4NCj4gPiA+ID4gPiBTZW50 OiBUaHVyc2RheSwgTWFyY2ggMTgsIDIwMjEgOToxOQ0KPiA+ID4gPiA+IFRvOiBNYXRhbiBBenJh ZCA8bWF0YW5AbnZpZGlhLmNvbT47IFNoYWhhZiBTaHVsZXINCj4gPiA+ID4gPiA8c2hhaGFmc0Bu dmlkaWEuY29tPjsgU2xhdmEgT3ZzaWllbmtvIDx2aWFjaGVzbGF2b0BudmlkaWEuY29tPjsNCj4g PiA+ID4gPiBZb25nc2VvayBLb2ggPHlza29oQG1lbGxhbm94LmNvbT4NCj4gPiA+ID4gPiBDYzog ZGV2QGRwZGsub3JnOyBuZEBhcm0uY29tOyBGZWlmZWkgV2FuZw0KPiA+IDxmZWlmZWkud2FuZzJA YXJtLmNvbT47DQo+ID4gPiA+ID4gc3RhYmxlQGRwZGsub3JnOyBSdWlmZW5nIFdhbmcgPHJ1aWZl bmcud2FuZ0Bhcm0uY29tPg0KPiA+ID4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2MSAzLzRdIG5ldC9t bHg1OiBmaXggcmVidWlsZCBidWcgZm9yIE1lbW9yeQ0KPiA+ID4gPiA+IFJlZ2lvbiBjYWNoZQ0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gJ2Rldl9nZW4nIGlzIGEgdmFyaWFibGUgdG8gaW5mb3JtIG90 aGVyIGNvcmVzIHRvIGZsdXNoIHRoZWlyDQo+ID4gPiA+ID4gbG9jYWwgY2FjaGUgd2hlbiBnbG9i YWwgY2FjaGUgaXMgcmVidWlsdC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEhvd2V2ZXIsIGlmICdk ZXZfZ2VuJyBpcyB1cGRhdGVkIGFmdGVyIGdsb2JhbCBjYWNoZSBpcyByZWJ1aWx0LA0KPiA+ID4g PiA+IG90aGVyIGNvcmVzIG1heSBsb2FkIGEgd3JvbmcgbWVtb3J5IHJlZ2lvbiBsa2V5IHZhbHVl IGZyb20gb2xkDQo+ID4gPiA+ID4gbG9jYWwNCj4gPiA+IGNhY2hlLg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gVGltZXNsb3QgICAgICAgIG1haW4gY29yZSAgICAgICAgICAgICAgIHdvcmtlciBjb3Jl DQo+ID4gPiA+ID4gICAxICAgICAgICAgcmVidWlsZCBnbG9iYWwgY2FjaGUNCj4gPiA+ID4gPiAg IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZCB1bmNoYW5nZWQgZGV2X2dl bg0KPiA+ID4gPiA+ICAgMyAgICAgICAgICAgIHVwZGF0ZSBkZXZfZ2VuDQo+ID4gPiA+ID4gICA0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2sgdXAgb2xkIGxvY2FsIGNhY2hl DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBGcm9tIHRoZSBleGFtcGxlIGFib3ZlLCB3ZSBjYW4gc2Vl IHRoYXQgdGhvdWdoIGdsb2JhbCBjYWNoZSBpcw0KPiA+ID4gPiA+IHJlYnVpbHQsIGR1ZSB0byB0 aGF0IGRldl9nZW4gaXMgbm90IHVwZGF0ZWQsIHRoZSB3b3JrZXIgY29yZSBtYXkNCj4gPiA+ID4g PiBsb29rIHVwIG9sZCBjYWNoZSB0YWJsZSBhbmQgcmVjZWl2ZSBhIHdyb25nIG1lbW9yeSByZWdp b24gbGtleSB2YWx1ZS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRvIGZpeCB0aGlzLCB1cGRhdGlu ZyAnZGV2X2dlbicgc2hvdWxkIGJlIG1vdmVkIGJlZm9yZQ0KPiA+ID4gPiA+IHJlYnVpbGRpbmcg Z2xvYmFsIGNhY2hlIHRvIGluZm9ybSB3b3JrZXIgY29yZXMgdG8gZmx1c2ggdGhlaXINCj4gPiA+ ID4gPiBsb2NhbCBjYWNoZSB3aGVuIGdsb2JhbCBjYWNoZSBzdGFydCByZWJ1aWxkaW5nLiBBbmQg d21iIGNhbg0KPiA+ID4gPiA+IGVuc3VyZSB0aGUgc2VxdWVuY2Ugb2YgdGhpcw0KPiA+ID4gPiBw cm9jZXNzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gRml4ZXM6IDk3NGYxZTdlZjE0NiAoIm5ldC9t bHg1OiBhZGQgbmV3IG1lbW9yeSByZWdpb24gc3VwcG9ydCIpDQo+ID4gPiA+ID4gQ2M6IHN0YWJs ZUBkcGRrLm9yZw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gU3VnZ2VzdGVkLWJ5OiBSdWlmZW5nIFdh bmcgPHJ1aWZlbmcud2FuZ0Bhcm0uY29tPg0KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEZlaWZl aSBXYW5nIDxmZWlmZWkud2FuZzJAYXJtLmNvbT4NCj4gPiA+ID4gPiBSZXZpZXdlZC1ieTogUnVp ZmVuZyBXYW5nIDxydWlmZW5nLndhbmdAYXJtLmNvbT4NCj4gPiA+ID4gPiAtLS0NCj4gPiA+ID4g PiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1X21yLmMgfCAzNw0KPiA+ID4gPiA+ICsrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDE3 IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9tci5jDQo+ID4gPiA+ID4gYi9kcml2ZXJz L25ldC9tbHg1L21seDVfbXIuYyBpbmRleA0KPiA+ID4gPiA+IGRhNGU5MWZjMi4uN2NlMWQzZTY0 IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9tci5jDQo+ID4g PiA+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X21yLmMNCj4gPiA+ID4gPiBAQCAtMTAz LDIwICsxMDMsMTggQEAgbWx4NV9tcl9tZW1fZXZlbnRfZnJlZV9jYihzdHJ1Y3QNCj4gPiA+ID4g PiBtbHg1X2Rldl9jdHhfc2hhcmVkICpzaCwNCj4gPiA+ID4gPiAgCQlyZWJ1aWxkID0gMTsNCj4g PiA+ID4gPiAgCX0NCj4gPiA+ID4gPiAgCWlmIChyZWJ1aWxkKSB7DQo+ID4gPiA+ID4gLQkJbWx4 NV9tcl9yZWJ1aWxkX2NhY2hlKCZzaC0+c2hhcmVfY2FjaGUpOw0KPiA+ID4gPiA+ICsJCSsrc2gt PnNoYXJlX2NhY2hlLmRldl9nZW47DQo+ID4gPiA+ID4gKwkJREVCVUcoImJyb2FkY2FzdGluZyBs b2NhbCBjYWNoZSBmbHVzaCwgZ2VuPSVkIiwNCj4gPiA+ID4gPiArCQkJc2gtPnNoYXJlX2NhY2hl LmRldl9nZW4pOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAgCQkvKg0KPiA+ID4gPiA+ICAJCSAq IEZsdXNoIGxvY2FsIGNhY2hlcyBieSBwcm9wYWdhdGluZyBpbnZhbGlkYXRpb24NCj4gYWNyb3Nz IGNvcmVzLg0KPiA+ID4gPiA+IC0JCSAqIHJ0ZV9zbXBfd21iKCkgaXMgZW5vdWdoIHRvIHN5bmNo cm9uaXplIHRoaXMNCj4gZXZlbnQuIElmDQo+ID4gPiA+ID4gb25lIG9mDQo+ID4gPiA+ID4gLQkJ ICogZnJlZWQgbWVtc2VncyBpcyBzZWVuIGJ5IG90aGVyIGNvcmUsIHRoYXQgbWVhbnMNCj4gdGhl DQo+ID4gPiA+ID4gbWVtc2VnDQo+ID4gPiA+ID4gLQkJICogaGFzIGJlZW4gYWxsb2NhdGVkIGJ5 IGFsbG9jYXRvciwgd2hpY2ggd2lsbCBjb21lDQo+IGFmdGVyIHRoaXMNCj4gPiA+ID4gPiAtCQkg KiBmcmVlIGNhbGwuIFRoZXJlZm9yZSwgdGhpcyBzdG9yZSBpbnN0cnVjdGlvbg0KPiAoaW5jcmVt ZW50aW5nDQo+ID4gPiA+ID4gLQkJICogZ2VuZXJhdGlvbiBiZWxvdykgd2lsbCBiZSBndWFyYW50 ZWVkIHRvIGJlIHNlZW4NCj4gYnkgb3RoZXINCj4gPiA+ID4gPiBjb3JlDQo+ID4gPiA+ID4gLQkJ ICogYmVmb3JlIHRoZSBjb3JlIHNlZXMgdGhlIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkuDQo+ID4g PiA+ID4gKwkJICogcnRlX3NtcF93bWIoKSBpcyB0byBrZWVwIHRoZSBvcmRlciB0aGF0IGRldl9n ZW4NCj4gPiA+ID4gPiB1cGRhdGVkIGJlZm9yZQ0KPiA+ID4gPiA+ICsJCSAqIHJlYnVpbGRpbmcg Z2xvYmFsIGNhY2hlLiBUaGVyZWZvcmUsIG90aGVyIGNvcmUgY2FuDQo+IGZsdXNoDQo+ID4gPiA+ ID4gdGhlaXINCj4gPiA+ID4gPiArCQkgKiBsb2NhbCBjYWNoZSBvbiB0aW1lLg0KPiA+ID4gPiA+ ICAJCSAqLw0KPiA+ID4gPiA+IC0JCSsrc2gtPnNoYXJlX2NhY2hlLmRldl9nZW47DQo+ID4gPiA+ ID4gLQkJREVCVUcoImJyb2FkY2FzdGluZyBsb2NhbCBjYWNoZSBmbHVzaCwgZ2VuPSVkIiwNCj4g PiA+ID4gPiAtCQkgICAgICBzaC0+c2hhcmVfY2FjaGUuZGV2X2dlbik7DQo+ID4gPiA+ID4gIAkJ cnRlX3NtcF93bWIoKTsNCj4gPiA+ID4gPiArCQltbHg1X21yX3JlYnVpbGRfY2FjaGUoJnNoLT5z aGFyZV9jYWNoZSk7DQo+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4gIAlydGVfcndsb2NrX3dyaXRl X3VubG9jaygmc2gtPnNoYXJlX2NhY2hlLnJ3bG9jayk7DQo+ID4gPiA+ID4gIH0NCj4gPiA+ID4g PiBAQCAtNDA3LDIwICs0MDUsMTkgQEAgbWx4NV9kbWFfdW5tYXAoc3RydWN0IHJ0ZV9wY2lfZGV2 aWNlDQo+ID4gPiAqcGRldiwNCj4gPiA+ID4gdm9pZA0KPiA+ID4gPiA+ICphZGRyLA0KPiA+ID4g PiA+ICAJbWx4NV9tcl9mcmVlKG1yLCBzaC0+c2hhcmVfY2FjaGUuZGVyZWdfbXJfY2IpOw0KPiA+ ID4gPiA+ICAJREVCVUcoInBvcnQgJXUgcmVtb3ZlIE1SKCVwKSBmcm9tIGxpc3QiLCBkZXYtPmRh dGEtDQo+ID5wb3J0X2lkLA0KPiA+ID4gPiA+ICAJICAgICAgKHZvaWQgKiltcik7DQo+ID4gPiA+ ID4gLQltbHg1X21yX3JlYnVpbGRfY2FjaGUoJnNoLT5zaGFyZV9jYWNoZSk7DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsJKytzaC0+c2hhcmVfY2FjaGUuZGV2X2dlbjsNCj4gPiA+ID4gPiArCURF QlVHKCJicm9hZGNhc3RpbmcgbG9jYWwgY2FjaGUgZmx1c2gsIGdlbj0lZCIsDQo+ID4gPiA+ID4g KwkJc2gtPnNoYXJlX2NhY2hlLmRldl9nZW4pOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAgCS8q DQo+ID4gPiA+ID4gIAkgKiBGbHVzaCBsb2NhbCBjYWNoZXMgYnkgcHJvcGFnYXRpbmcgaW52YWxp ZGF0aW9uIGFjcm9zcyBjb3Jlcy4NCj4gPiA+ID4gPiAtCSAqIHJ0ZV9zbXBfd21iKCkgaXMgZW5v dWdoIHRvIHN5bmNocm9uaXplIHRoaXMgZXZlbnQuIElmDQo+IG9uZSBvZg0KPiA+ID4gPiA+IC0J ICogZnJlZWQgbWVtc2VncyBpcyBzZWVuIGJ5IG90aGVyIGNvcmUsIHRoYXQgbWVhbnMgdGhlDQo+ IG1lbXNlZw0KPiA+ID4gPiA+IC0JICogaGFzIGJlZW4gYWxsb2NhdGVkIGJ5IGFsbG9jYXRvciwg d2hpY2ggd2lsbCBjb21lIGFmdGVyIHRoaXMNCj4gPiA+ID4gPiAtCSAqIGZyZWUgY2FsbC4gVGhl cmVmb3JlLCB0aGlzIHN0b3JlIGluc3RydWN0aW9uIChpbmNyZW1lbnRpbmcNCj4gPiA+ID4gPiAt CSAqIGdlbmVyYXRpb24gYmVsb3cpIHdpbGwgYmUgZ3VhcmFudGVlZCB0byBiZSBzZWVuIGJ5IG90 aGVyDQo+IGNvcmUNCj4gPiA+ID4gPiAtCSAqIGJlZm9yZSB0aGUgY29yZSBzZWVzIHRoZSBuZXds eSBhbGxvY2F0ZWQgbWVtb3J5Lg0KPiA+ID4gPiA+ICsJICogcnRlX3NtcF93bWIoKSBpcyB0byBr ZWVwIHRoZSBvcmRlciB0aGF0IGRldl9nZW4NCj4gdXBkYXRlZA0KPiA+ID4gPiA+IGJlZm9yZQ0K PiA+ID4gPiA+ICsJICogcmVidWlsZGluZyBnbG9iYWwgY2FjaGUuIFRoZXJlZm9yZSwgb3RoZXIg Y29yZSBjYW4gZmx1c2gNCj4gdGhlaXINCj4gPiA+ID4gPiArCSAqIGxvY2FsIGNhY2hlIG9uIHRp bWUuDQo+ID4gPiA+ID4gIAkgKi8NCj4gPiA+ID4gPiAtCSsrc2gtPnNoYXJlX2NhY2hlLmRldl9n ZW47DQo+ID4gPiA+ID4gLQlERUJVRygiYnJvYWRjYXN0aW5nIGxvY2FsIGNhY2hlIGZsdXNoLCBn ZW49JWQiLA0KPiA+ID4gPiA+IC0JICAgICAgc2gtPnNoYXJlX2NhY2hlLmRldl9nZW4pOw0KPiA+ ID4gPiA+ICAJcnRlX3NtcF93bWIoKTsNCj4gPiA+ID4gPiArCW1seDVfbXJfcmVidWlsZF9jYWNo ZSgmc2gtPnNoYXJlX2NhY2hlKTsNCj4gPiA+ID4gPiAgCXJ0ZV9yd2xvY2tfcmVhZF91bmxvY2so JnNoLT5zaGFyZV9jYWNoZS5yd2xvY2spOw0KPiA+ID4gPiA+ICAJcmV0dXJuIDA7DQo+ID4gPiA+ ID4gIH0NCj4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+IDIuMjUuMQ0KDQo=