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 BAF29C433F5 for ; Thu, 28 Oct 2021 15:28:38 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4F9D560D43 for ; Thu, 28 Oct 2021 15:28:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 4F9D560D43 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=epam.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.218145.378460 (Exim 4.92) (envelope-from ) id 1mg7Jx-0001hy-Vq; Thu, 28 Oct 2021 15:28:01 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 218145.378460; Thu, 28 Oct 2021 15:28:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mg7Jx-0001hr-Sg; Thu, 28 Oct 2021 15:28:01 +0000 Received: by outflank-mailman (input) for mailman id 218145; Thu, 28 Oct 2021 15:28:01 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mg7Jx-0001hj-7K for xen-devel@lists.xenproject.org; Thu, 28 Oct 2021 15:28:01 +0000 Received: from mx0a-0039f301.pphosted.com (unknown [148.163.133.242]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 5417fa08-1dd2-410e-91b8-00200485692b; Thu, 28 Oct 2021 15:27:58 +0000 (UTC) Received: from pps.filterd (m0174678.ppops.net [127.0.0.1]) by mx0a-0039f301.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 19SEdRsi020934; Thu, 28 Oct 2021 15:27:56 GMT Received: from eur05-am6-obe.outbound.protection.outlook.com (mail-am6eur05lp2109.outbound.protection.outlook.com [104.47.18.109]) by mx0a-0039f301.pphosted.com with ESMTP id 3bywtjr98n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 28 Oct 2021 15:27:56 +0000 Received: from AM0PR03MB6324.eurprd03.prod.outlook.com (2603:10a6:20b:153::17) by AM0PR03MB4884.eurprd03.prod.outlook.com (2603:10a6:208:fe::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13; Thu, 28 Oct 2021 15:27:48 +0000 Received: from AM0PR03MB6324.eurprd03.prod.outlook.com ([fe80::c038:e032:595a:651]) by AM0PR03MB6324.eurprd03.prod.outlook.com ([fe80::c038:e032:595a:651%9]) with mapi id 15.20.4649.015; Thu, 28 Oct 2021 15:27:48 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 5417fa08-1dd2-410e-91b8-00200485692b ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RFQ/93y19bRQC86/c4n59fh3FZUYpEaTyMp95F+KDbMXC7TFf1it++eepWrI27Q4aVntqqNZRv13fUfH5IwHhTwzBKfE1YLDfHYOBDECCds1BncuBFQFFQf7cMbUkt1H02cca681Bb8qC02BoiF4szsuGmId9IfHWy7s+EVBSQXy6z1KwJTXmece17mx9nu21Gbcz0kDbhy78JeAsjOO8hwOwCd+eRciFoX5yVf1z/uJ3hb9S63Jsqb/WTYw3HfJQ3VvIJvJl5Euzmck4ogq5dfBAHM8KVtxWqAo1RDSy+zebYhli/IwtVjGV4XLMlBb3nG5SD5LnWuv3DooW+DKPA== 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=UfsEAqFKfLRs1FaI0IiohxRLNl8Kxyzz5v9NUaq/fdk=; b=k+zAyXuOWUtx6m0qKfOwQwJRMZBXXu+PyLxyleD9sF9HgZ1DpY1d5qxzm96YWYDVwP7AFSlciD7ZWPcq1F+Pr2FRD7kqvlCBGI85JdeXRJ68kkN13VWTMGxysmIXAc/9+HgElFmXJ/m/MXgrL0VwPpV8F2LS2Z4VzgWBfc1PEME/AdA6vgE/KDrrnujbGetRLGhLSodyMqzxGiQXA26kar7oN5SqsJCUL2PRleWbwhjRXCJvxFLMulv3PwaGLrah389/E0u0QZLltNnERtL+hI1MCl4hQDMQmss5cGh0S1yyQ9VBROSRNMeyuMwTZKajlLdzqObPT3VMo4kUCYp0Mw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UfsEAqFKfLRs1FaI0IiohxRLNl8Kxyzz5v9NUaq/fdk=; b=RkravY377uAkWzsCBJjYoYjeze1kVdFLEYf4dniZj4bd7BnzqkkhFquPTrOmOekUj568Oj6JP5inn83wjgbPTJejWI33pwbYsEfgkTkB4Vncykf20CSe4KPNVULFPjqCCXnwNduRm/YGbQ2H3Ushxadcc3Jo29hD/3MJkyAq3XlhpPrRd42g8F3vbCCson9en/oVuyG6E+U0Pvma/rcms6bjWImFkhvfJnscdQIEwD2TsCX7JmH2FgbWaBxtiiR2EAUo2opwILsq0PnyIb6cB5Kn8NTMLeDQfGLW2n7VobHyO/4ypl/8ihL3JA/6HoRcdn5kkckRMY+GdfqmG1UV+w== From: Oleksandr Andrushchenko To: Julien Grall , "xen-devel@lists.xenproject.org" CC: "sstabellini@kernel.org" , "iwj@xenproject.org" , Bertrand Marquis , Rahul Singh Subject: Re: [PATCH] xen/arm: fix SBDF calculation for vPCI MMIO handlers Thread-Topic: [PATCH] xen/arm: fix SBDF calculation for vPCI MMIO handlers Thread-Index: AQHXyww6rKHs3LJru0q52eLUia+oNavnHBIAgAE3H4CAABSQgIAADtGAgAADkwCAABB5AA== Date: Thu, 28 Oct 2021 15:27:48 +0000 Message-ID: <38da2edd-06a2-63d0-51ad-1284272c8da5@epam.com> References: <20211027082533.1406015-1-andr2000@gmail.com> <65886734-7333-4469-fcc1-6916db708f13@xen.org> <6d8f1061-7aec-2c1a-aaf4-c30440c2797a@xen.org> In-Reply-To: <6d8f1061-7aec-2c1a-aaf4-c30440c2797a@xen.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 56899d40-50c7-42cb-dc08-08d99a277fc6 x-ms-traffictypediagnostic: AM0PR03MB4884: x-ld-processed: b41b72d0-4e9f-4c26-8a69-f949f367c91d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pTlBySfF7ZqxbsyFWhxXswnWnPzdYT+cC/ecp/csfUIMGata7ZdBYmapOuXl0xzgGVbI6SZ/3U6LXvAGr0rvYGgHzgflUVlQXGdWX1wazLo5ntEBwi57cbNs3ONzFSUyqN7B7J8vPyNGtGWOBfF9ykSgf14QLlPmKS42kMFTgQaXvmrhzn37fp9wx9xx0dFJBOHvOkCMvY2XazK7khDydasjx3irZtnX1WcCrh+4aeP0G8GarvIPz6fQzAHKuoMh8q2NWwLdIoUmTMgofA6KJ59EbGabaT6LGg824hm62unetqItq0zd6Xxv2sUhHNxtshnIAOVaDELw5KyAN/teMKVDmBd0OHtRhrv5cfyMw26/rY9Bj0jnrKwwiz30XgmN3lyeu2eueiw5nkXm094HzVwZdeMk7lrfPIal31U4NnXo04mLuSLtM23/jdSvHvV+1z8v+rWyqCSW7VKBSsF3SBkBdAl/EIu9SpdpG18Dl/SMjikP1xuKF/M1dsYM9g9cUFRYtqK+NLGtHmnoPSfWMVt+6XvS4PhVroFumgY6Vd8OW7te1Wzdpw5iyO3OUn0TjumHXjT/mKxDPJElbLpiZdaKn9gsm+KO5J8fPZPLbWKtYbIV8sBJ/s9BgivOji2zlBAjD5XuCT5l7f1TiI1/B1NJ4iZWWPSR3Am3yfGYLjpdkrFIsSbg0rhOuH5Vp/TCmlkawiQpiPWRZBbXZD5TlW52DMduvdfyp7ONVn/W6OBbONbQVv/UWqie8i2ZJ6Dj x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR03MB6324.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(71200400001)(66946007)(76116006)(316002)(31686004)(38100700002)(66476007)(122000001)(91956017)(2616005)(66556008)(110136005)(54906003)(4326008)(8676002)(64756008)(186003)(6512007)(8936002)(36756003)(2906002)(53546011)(86362001)(26005)(508600001)(6486002)(6506007)(38070700005)(66446008)(5660300002)(83380400001)(31696002)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dnlZblJEd3pxYXljRGRRMEN0dzZzVDNtZ0xIY2thQUUwelp0WHlKTjhGZml6?= =?utf-8?B?MitmK1kvYzJCNGkrZVhzUWVjd0phNDRZelAvWTFkdldRNEErY3VGeXRnZlZh?= =?utf-8?B?NFR4ODlVOHdUY1hvWmpPZ2s2bEVLbzg0YWpEVGhvV1BKVitFYWVZYWE5YjVz?= =?utf-8?B?OXMvbHU1a0RyVTdBK1E0VkpEN1pqTTNQTjA0dnY0bzRTeGlwLy9YQm1VcXVm?= =?utf-8?B?SzBYTjRndStXVG9ZbVkwOFMxd2FsS2VtazZNNUVrRW9aRDdmYjlncCsyTDNP?= =?utf-8?B?THFTTEo2TkxyQTRUcjdYYU9YbnB1RWRSd0pzVlkwVFBvZnpJeG1MZjc3U2w1?= =?utf-8?B?ZjE0dEt2VkU2VDgyNVhvalNEbGNieGVPL3kvZ1VLdlRDUjAvL3lBeUNoQkhV?= =?utf-8?B?SFBHTVZMMVV1NDlIL3NuVThnNTFNZnZmcFVKZFRDcy9yY1VicG1zZUxGeEN0?= =?utf-8?B?cUFhOUwxbUZBdTR4QXd1aFZXWm1uTlBJWFBDcWkzMEFKR0hySEJVTGdQUFM1?= =?utf-8?B?SnEvMjVrYzZTSGYxOVJEWm1KK253L1MzSHdxcko2YnNZUG94Um4rRlkyVTF4?= =?utf-8?B?WVBGMU1yZHo5NjVabUxpMUZ0R0pwMlVVcFowOGk0RjIwRmpENWxDTm02QmNm?= =?utf-8?B?WFRUdUcyei9mRDh4b2xZT2UrbzR2Y2Z3bVlpaWhPTm4vb0JLZWF5a2NFUXRn?= =?utf-8?B?TlBrRVJ4VVNUL3lJSC9rdVpyU0VlQU0rTFI2cHRjbWRKQTZCbklFeW51RkR0?= =?utf-8?B?UC9XdVUva0V2Z3BId1pIb1A2YlFmUnFzNzhIbWcyQllOUW9JSlBWNkV3L0Ji?= =?utf-8?B?dTVtZC9KL282RXcxTnRvdlVlSlFKK0E5VVljNURTVFFHVG02c0pJSEhXa3RC?= =?utf-8?B?UzJuU0EwS2NzbWR1RmswVGJpSWs4a0p2d3kraERRVGZ2NUxRcndNYlR4TkNB?= =?utf-8?B?OTdEN3AwYThFTWJScEtobm83UVhBZzdHT1g4ZUpTb01VQzI1eXJoVmZ3b1JM?= =?utf-8?B?VDgzMGs5UU40UmZOZzZzbGJQR0E0QTFxVTNsR056NStXalRWV2xpKzVsYysw?= =?utf-8?B?TDFoMS9SbzYvVUljVGNTUkxaTDM3MWpxNk5BWHhFRlppUURiUzF5NlFWSlc5?= =?utf-8?B?UFJvMi8zUFY4R3dORDFtcXNhM0JNcEZxUGxqRzFnSDhxTVZHdG9EdlNwcVY5?= =?utf-8?B?ZGxuckZ5bnRZU3NWN2RHWnA4WnArR1MyMUR1cFMwTUovbHZWcnZrQlpOTmJk?= =?utf-8?B?UGRCZTdRMTF1NTVZdisrTmVOeWJEeC9nelIvSkxJV29ja3BVOWdmRDB4S3l6?= =?utf-8?B?UmdYQ0s5M2ZFbzFIS2dlWnFGbXFxcUsrMXY1SlcrQjNXWkNLMzhuQ2RibFFW?= =?utf-8?B?OUdBMVNEYlJndldxOWU5aUlXN0RWOVBVTFE0WmZzQ1QzcnMzemRyV3haaDhU?= =?utf-8?B?VWR6ZHhGdENJSEhDcWlZZ0NLOVcvVFdxRDU2K2hWbGNndXpsNzFOVmc5VmZG?= =?utf-8?B?V3dEZldnWHpVTHUrNFFlQ0ZLZWg2SjVkVkl6aVAzWU4wdGZ1ZVpha0ZCVWRO?= =?utf-8?B?QWthUGd0TldHanVBZGZxTk9YejUyNjkraWMxRDd2OGMydWNNUzhMNTFaZ2gx?= =?utf-8?B?c3Z4WVJ3MXBYTk9acEpBZjFndGo4Rm8rWEhJVU9GamJLR25NL3p6RTFZOWhV?= =?utf-8?B?cVFDSzBDeUFxeVdwUEhJUGJSamZpWXVvdzlhaVVuN3NVNGgwVExlc0tuTXJU?= =?utf-8?B?QmR4LzJpUUp6dXpSVy9ubGJaYzJkWjdqZStNVnduZlRlbkdFUXEwYUxWRTl6?= =?utf-8?B?a3hESXBUQ2oyTitsb2pmWERNb3dXbjNvZGgzQWpaeHMxa1VPQjdkNW00Lzkr?= =?utf-8?B?UlJxMThpVTBCMjNYUFJab29SVWV0MUlFQUg1Y1dualJlbFNXTkw2dGtBeUVo?= =?utf-8?B?RDUvVXQxNkltalhuMW81U2xLU0ZvT0hLdEhtcGlrUmtNaG1JZldtQ1Zoa01i?= =?utf-8?B?Q1BVTnRDd2hiRW9sRmZVTVVQTEdOZnFjUjdnZXh5VnBsaXdYa21CK25JOElI?= =?utf-8?B?Z1FZM2tGRzZHa2lZRHdleC9qVysrQUk5RjRuNU9kYlV0REU2enhVb0FCNUFw?= =?utf-8?B?cmVZeGY4SnlWMjVmdm9HSWdZcmpZRFdiUlVZLzRSU3FEU0psL3oydGQydWM5?= =?utf-8?B?cDV0U3V5RnZLS2xqV3JiTE1kY3RiZlplU3FXQytGc0NicXBVYU9xVEY4cC9O?= =?utf-8?B?K1VoQTFSQW4vYWw0NWljZFRwNHBQM1M2WXEwdk5TVlIzNHJwcmVPanQ1aEFR?= =?utf-8?B?Z1RKT2szSnJiMlRaQ0QwUUFQaWhwZEdiTHVTSE85bDdVU2dIVXJHQT09?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM0PR03MB6324.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 56899d40-50c7-42cb-dc08-08d99a277fc6 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Oct 2021 15:27:48.6362 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: EfaNFLPkwF+t57EJ6OaeeGYSZddOSZIYrahWZ7LQ3akWqVVUmdfTavFtxsaE5lbR+ja19NyIDvs/+bVgNKHjoDM3/lNdSf/Vg7MfJJHFgVla90oaz1dKQj2C0P8NSzw5 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB4884 X-Proofpoint-GUID: PpcWGSxlOikViCuvid4O0b-HMce0f84B X-Proofpoint-ORIG-GUID: PpcWGSxlOikViCuvid4O0b-HMce0f84B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-10-28_01,2021-10-26_01,2020-04-07_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 mlxlogscore=999 suspectscore=0 mlxscore=0 adultscore=0 phishscore=0 impostorscore=0 bulkscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2110280086 DQoNCk9uIDI4LjEwLjIxIDE3OjI4LCBKdWxpZW4gR3JhbGwgd3JvdGU6DQo+IEhpLA0KPg0KPiBP biAyOC8xMC8yMDIxIDE1OjE2LCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToNCj4+IE9u IDI4LjEwLjIxIDE2OjIyLCBKdWxpZW4gR3JhbGwgd3JvdGU6DQo+Pj4gT24gMjgvMTAvMjAyMSAx MzowOSwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6DQo+Pj4+IEhpLCBKdWxpZW4hDQo+ Pj4NCj4+PiBIZWxsbywNCj4+Pg0KPj4+PiBPbiAyNy4xMC4yMSAyMDozNSwgSnVsaWVuIEdyYWxs IHdyb3RlOg0KPj4+Pj4gSGkgT2xla3NhbmRyLA0KPj4+Pj4NCj4+Pj4+IE9uIDI3LzEwLzIwMjEg MDk6MjUsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOg0KPj4+Pj4+IEZyb206IE9sZWtz YW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4NCj4+ Pj4+Pg0KPj4+Pj4+IFdoaWxlIGluIHZQQ0kgTU1JTyB0cmFwIGhhbmRsZXJzIGZvciB0aGUgZ3Vl c3QgUENJIGhvc3QgYnJpZGdlIGl0IGlzIG5vdA0KPj4+Pj4+IGVub3VnaCBmb3IgU0JERiB0cmFu c2xhdGlvbiB0byBzaW1wbHkgY2FsbCBWUENJX0VDQU1fQkRGKGluZm8tPmdwYSkgYXMNCj4+Pj4+ PiB0aGUgYmFzZSBhZGRyZXNzIG1heSBub3QgYmUgYWxpZ25lZCBpbiB0aGUgd2F5IHRoYXQgdGhl IHRyYW5zbGF0aW9uDQo+Pj4+Pj4gYWx3YXlzIHdvcmsuIElmIG5vdCBhZGp1c3RlZCB3aXRoIHJl c3BlY3QgdG8gdGhlIGJhc2UgYWRkcmVzcyBpdCBtYXkgbm90IGJlDQo+Pj4+Pj4gYWJsZSB0byBw cm9wZXJseSBjb252ZXJ0IFNCREYgYW5kIGNyYXNoZXM6DQo+Pj4+Pj4NCj4+Pj4+PiAoWEVOKSB2 cGNpX21taW9fcmVhZCAwMDAwOjY1OjFhLjAgcmVnIDhiYyBncGEgZTY1ZDA4YmMNCj4+Pj4+DQo+ Pj4+PiBJIGNhbid0IGZpbmQgYSBwcmludGsoKSB0aGF0IG1heSBvdXRwdXQgdGhpcyBtZXNzYWdl LiBXaGVyZSBkb2VzIHRoaXMgY29tZXMgZnJvbT8NCj4+Pj4gVGhhdCB3YXMgYSBkZWJ1ZyBwcmlu dC4gSSBzaG91bGRuJ3QgaGF2ZSB1c2VkIHRoYXQgaW4gdGhlIHBhdGNoIGRlc2NyaXB0aW9uLCBi dXQNCj4+Pj4gcHJvYmFibHkgYWZ0ZXIgIi0tLSIgdG8gYmV0dGVyIGV4cGxhaW4gd2hhdCdzIGhh cHBlbmluZw0KPj4+Pj4NCj4+Pj4+IEFueXdheSwgSUlVQyB0aGUgZ3Vlc3QgcGh5c2ljYWwgYWRk cmVzcyBpcyAweGU2NWQwOGJjIHdoaWNoLCBpZiBJIGFtIG5vdCBtaXN0YWtlbiwgZG9lc24ndCBi ZWxvbmcgdG8gdGhlIHJhbmdlIGFkdmVydGlzZWQgZm9yIEdVRVNUX1ZQQ0lfRUNBTS4NCj4+Pj4g VGhpcyBpcyBmcm9tIGRvbTAgSSBhbSB3b3JraW5nIG9uIG5vdy4NCj4+Pj4+DQo+Pj4+PiBJTUhP LCB0aGUgc3RhY2sgdHJhY2Ugc2hvdWxkIGNvbWUgZnJvbSB1c3B0cmVhbSBYZW4gb3IgbmVlZCBz b21lIGluZm9ybWF0aW9uIHRvIGV4cGxhaW4gaG93IHRoaXMgd2FzIHJlcHJvZHVjZWQuDQo+Pj4+ Pg0KPj4+Pj4+IChYRU4pIERhdGEgQWJvcnQgVHJhcC4gU3luZHJvbWU9MHg2DQo+Pj4+Pj4gKFhF TikgV2Fsa2luZyBIeXBlcnZpc29yIFZBIDB4NDY3YTI4YmMgb24gQ1BVMCB2aWEgVFRCUiAweDAw MDAwMDAwNDgxZDUwMDANCj4+Pj4+IEkgY2FuIHVuZGVyc3RuYWQgdGhhdCBpZiB3ZSBkb24ndCBz dWJzdHJhY3QgR1VFU1RfVlBDSV9FQ0FNLCB3ZSB3b3VsZCAoaW4gdGhlb3J5KSBub3QgZ2V0IHRo ZSBjb3JyZWN0IEJERi4gQnV0Li4uIEkgZG9uJ3QgdW5kZXJzdGFuZCBob3cgdGhpcyB3b3VsZCBy ZXN1bHQgdG8gYSBkYXRhIGFib3J0IGluIHRoZSBoeXBlcnZpc29yLg0KPj4+Pj4NCj4+Pj4+IElu IGZhY3QsIEkgdGhpbmsgdGhlIHZQQ0kgY29kZSBzaG91bGQgYmUgcmVzaWxpZW50IGVub3VnaCB0 byBub3QgY3Jhc2ggaWYgd2UgcGFzcyB0aGUgd3JvbmcgQkRGLg0KPj4+PiBXZWxsLCB0aGVyZSBp cyBubyAoPykgZWFzeSB3YXkgdG8gdmFsaWRhdGUgU0JERi4NCj4+Pg0KPj4+IEFGQUlDVCBwY2lf ZWNhbV9tYXBfYnVzKCkgaXMgYWxyZWFkeSBkb2luZyBzb21lIHZhbGlkYXRpb24gZm9yIHRoZSBi dXMgbnVtYmVyLiBTby4uLg0KPj4gd2hhdCBpdCBkb2VzIGlzIG5vdCBlbm91Z2ggYXMuLi4NCj4+ IMKgIMKgwqDCoCBpZiAoIGJ1c24gPCBjZmctPmJ1c25fc3RhcnQgfHwgYnVzbiA+IGNmZy0+YnVz bl9lbmQgKQ0KPj4gwqAgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7DQo+Pg0KPj4gwqAgwqDC oMKgIGJ1c24gLT0gY2ZnLT5idXNuX3N0YXJ0Ow0KPj4gwqAgwqDCoMKgIGJhc2UgPSBjZmctPndp biArIChidXNuIDw8IG9wcy0+YnVzX3NoaWZ0KTsNCj4+DQo+PiDCoCDCoMKgwqAgcmV0dXJuIGJh c2UgKyAoUENJX0RFVkZOMihzYmRmLmJkZikgPDwgZGV2Zm5fc2hpZnQpICsgd2hlcmU7DQo+PiB0 aGlzIGNhbiBzdGlsbCBvdmVycnVuDQo+DQo+IFRoYW5rcywgSSBndWVzc2VkIHRoaXMgd2FzIG5v dCBlbm91Z2guLi4gV2hhdCBJIGFtIHRyeWluZyB0byB1bmRlcnN0YW5kIGlzICp3aHkqIHRoaXMg aXMgbm90IGVub3VnaCAqYW5kKiB3aGV0aGVyIHdlIG5lZWQgdG8gYWRkIG1vcmUgdmFsaWRhdGlv bi4NCj4NCj4+Pg0KPj4+IMKgwqBBbmQgdGhpcyBjb3VsZCBiZSBhIHByb2JsZW0gaWYgd2UgaGF2 ZSBhIG1pc2JlaGF2aW5nDQo+Pj4+IGd1ZXN0IHdoaWNoIG1heSBmb3JjZSBYZW4gdG8gYWNjZXNz IHRoZSBtZW1vcnkgYmV5b25kIHRoYXQgb2YgUENJIGhvc3QgYnJpZGdlDQo+Pj4+Pg0KPj4+Pj4g V2hlbiB0aGVyZSBpcyBhIGRhdGEgYWJvcnQgaW4gWGVuLCB5b3Ugc2hvdWxkIGdldCBhIHN0YWNr IHRyYWNlIGZyb20gd2hlcmUgdGhpcyBjb21lcyBmcm9tLiBDYW4geW91IHBhc3RlIGl0IGhlcmU/ DQo+Pj4+IChYRU4pIERhdGEgQWJvcnQgVHJhcC4gU3luZHJvbWU9MHg2DQo+Pj4+IChYRU4pIFdh bGtpbmcgSHlwZXJ2aXNvciBWQSAweDQ2N2EyOGJjIG9uIENQVTAgdmlhIFRUQlIgMHgwMDAwMDAw MDQ4MWQ1MDAwDQo+Pj4+IChYRU4pIDBUSFsweDBdID0gMHgwMDAwMDAwMDQ4MWQ0ZjdmDQo+Pj4+ IChYRU4pIDFTVFsweDFdID0gMHgwMDAwMDAwMDQ4MWQyZjdmDQo+Pj4+IChYRU4pIDJORFsweDMz XSA9IDB4MDAwMDAwMDAwMDAwMDAwMA0KPj4+PiAoWEVOKSBDUFUwOiBVbmV4cGVjdGVkIFRyYXA6 IERhdGEgQWJvcnQNCj4+Pg0KPj4+IC4uLiBJIGFtIGdldHRpbmcgcXVpdGUgY29uZnVzZWQgd2h5 IHRoaXMgaXMgY3Jhc2hpbmcuIEFyZSB3ZSB2YWxpZGF0aW9uIGNvcnJlY3RseSB0aGUgYWNjZXNz Pw0KPj4gU2VlIGFib3ZlLiBJZiBwcm92aWRlZCB3aXRoIGJpZyBlbm91Z2ggU0JERiB3ZSBjYW4g ZW5kIHVwIGdldHRpbmcgb3V0IG9mIHRoZSB3aW5kb3cuDQo+DQo+IFNob3VsZG4ndCB3ZSB2YWxp ZGF0ZSB0aGF0IHdlIGFyZSBzdGlsbCBpbiB0aGUgd2luZG93Pw0KWWVzLCB0aGlzIHdpbGwgd29y ayBpZiBjaGVjayBpcyBpbXBsZW1lbnRlZCB0byByZXNwZWN0IGJyaWRnZSdzIGNvbmZpZyB3aW5k b3cuDQo+DQo+Pj4NCj4+Pg0KPj4+PiAoWEVOKSAtLS0tWyBYZW4tNC4xNi11bnN0YWJsZcKgIGFy bTY0IGRlYnVnPXnCoCBOb3QgdGFpbnRlZCBdLS0tLQ0KPj4+PiAoWEVOKSBDUFU6wqDCoMKgIDAN Cj4+Pj4gKFhFTikgUEM6wqDCoMKgwqAgMDAwMDAwMDAwMDI2ZDNkNCBwY2lfZ2VuZXJpY19jb25m aWdfcmVhZCsweDg4LzB4OWMNCj4+Pj4gKFhFTikgTFI6wqDCoMKgwqAgMDAwMDAwMDAwMDI2ZDM2 Yw0KPj4+PiAoWEVOKSBTUDrCoMKgwqDCoCAwMDAwODAwMDdmZjk3YzAwDQo+Pj4+IChYRU4pIENQ U1I6wqDCoCAwMDAwMDAwMDYwNDAwMjQ5IE1PREU6NjQtYml0IEVMMmggKEh5cGVydmlzb3IsIGhh bmRsZXIpDQo+Pj4+IChYRU4pwqDCoMKgwqDCoCBYMDogMDAwMDAwMDA0NjdhMjhiY8KgIFgxOiAw MDAwMDAwMDA2NWQwOGJjwqAgWDI6IDAwMDAwMDAwMDAwMDA4YmMNCj4+Pj4gKFhFTinCoMKgwqDC oMKgIFgzOiAwMDAwMDAwMDAwMDAwMDBjwqAgWDQ6IDAwMDA4MDAwN2ZmYzZmZDDCoCBYNTogMDAw MDAwMDAwMDAwMDAwMA0KPj4+PiAoWEVOKcKgwqDCoMKgwqAgWDY6IDAwMDAwMDAwMDAwMDAwMTTC oCBYNzogZmZmZjgwMDAxMWE1ODAwMMKgIFg4OiBmZmZmMDAwMDIyNWEwMzgwDQo+Pj4+IChYRU4p wqDCoMKgwqDCoCBYOTogMDAwMDAwMDAwMDAwMDAwMCBYMTA6IDAxMDEwMTAxMDEwMTAxMDEgWDEx OiAwMDAwMDAwMDAwMDAwMDI4DQo+Pj4+IChYRU4pwqDCoMKgwqAgWDEyOiAwMTAxMDEwMTAxMDEw MTAxIFgxMzogMDAwMDAwMDAwMDAwMDAyMCBYMTQ6IGZmZmZmZmZmZmZmZmZmZmYNCj4+Pj4gKFhF TinCoMKgwqDCoCBYMTU6IDAwMDAwMDAwMDAwMDAwMDEgWDE2OiBmZmZmODAwMDEwZGE2NzA4IFgx NzogMDAwMDAwMDAwMDAwMDAyMA0KPj4+PiAoWEVOKcKgwqDCoMKgIFgxODogMDAwMDAwMDAwMDAw MDAwMiBYMTk6IDAwMDAwMDAwMDAwMDAwMDQgWDIwOiAwMDAwODAwMDdmZjk3YzVjDQo+Pj4+IChY RU4pwqDCoMKgwqAgWDIxOiAwMDAwMDAwMDAwMDAwOGJjIFgyMjogMDAwMDAwMDAwMDAwMDhiYyBY MjM6IDAwMDAwMDAwMDAwMDAwMDQNCj4+Pj4gKFhFTinCoMKgwqDCoCBYMjQ6IDAwMDAwMDAwMDAw MDAwMDAgWDI1OiAwMDAwMDAwMDAwMDAwOGJjIFgyNjogMDAwMDAwMDAwMDAwNjVkMA0KPj4+PiAo WEVOKcKgwqDCoMKgIFgyNzogMDAwMDgwMDA3ZmZiOTAxMCBYMjg6IDAwMDAwMDAwMDAwMDAwMDDC oCBGUDogMDAwMDgwMDA3ZmY5N2MwMA0KPj4+PiAoWEVOKQ0KPj4+PiAoWEVOKcKgwqAgVlRDUl9F TDI6IDAwMDAwMDAwODAwYTM1NTgNCj4+Pj4gKFhFTinCoCBWVFRCUl9FTDI6IDAwMDEwMDAwYmZm YmEwMDANCj4+Pj4gKFhFTikNCj4+Pj4gKFhFTinCoCBTQ1RMUl9FTDI6IDAwMDAwMDAwMzBjZDE4 M2QNCj4+Pj4gKFhFTinCoMKgwqAgSENSX0VMMjogMDAwMDAwMDA4MDdjNjYzZg0KPj4+PiAoWEVO KcKgIFRUQlIwX0VMMjogMDAwMDAwMDA0ODFkNTAwMA0KPj4+PiAoWEVOKQ0KPj4+PiAoWEVOKcKg wqDCoCBFU1JfRUwyOiAwMDAwMDAwMDk2MDAwMDA2DQo+Pj4+IChYRU4pwqAgSFBGQVJfRUwyOiAw MDAwMDAwMDAwZTY1ZDAwDQo+Pj4+IChYRU4pwqDCoMKgIEZBUl9FTDI6IDAwMDAwMDAwNDY3YTI4 YmMNCj4+Pj4gKFhFTikNCj4+Pj4gW3NuaXBdDQo+Pj4+IChYRU4pIFhlbiBjYWxsIHRyYWNlOg0K Pj4+PiAoWEVOKcKgwqDCoCBbPDAwMDAwMDAwMDAyNmQzZDQ+XSBwY2lfZ2VuZXJpY19jb25maWdf cmVhZCsweDg4LzB4OWMgKFBDKQ0KPj4+PiAoWEVOKcKgwqDCoCBbPDAwMDAwMDAwMDAyNmQzNmM+ XSBwY2lfZ2VuZXJpY19jb25maWdfcmVhZCsweDIwLzB4OWMgKExSKQ0KPj4+PiAoWEVOKcKgwqDC oCBbPDAwMDAwMDAwMDAyNmQyYzg+XSBwY2ktYWNjZXNzLmMjcGNpX2NvbmZpZ19yZWFkKzB4NjAv MHg4NA0KPj4+PiAoWEVOKcKgwqDCoCBbPDAwMDAwMDAwMDAyNmQ0YTg+XSBwY2lfY29uZl9yZWFk MzIrMHgxMC8weDE4DQo+Pj4+IChYRU4pwqDCoMKgIFs8MDAwMDAwMDAwMDI0ZGNmOD5dIHZwY2ku YyN2cGNpX3JlYWRfaHcrMHg0OC8weGI4DQo+Pj4+IChYRU4pwqDCoMKgIFs8MDAwMDAwMDAwMDI0 ZTNlND5dIHZwY2lfcmVhZCsweGFjLzB4MjRjDQo+Pj4+IChYRU4pwqDCoMKgIFs8MDAwMDAwMDAw MDI0ZTkzND5dIHZwY2lfZWNhbV9yZWFkKzB4NzgvMHhhOA0KPj4+PiAoWEVOKcKgwqDCoCBbPDAw MDAwMDAwMDAyNmUzNjg+XSB2cGNpLmMjdnBjaV9tbWlvX3JlYWQrMHg0NC8weDdjDQo+Pj4+IChY RU4pwqDCoMKgIFs8MDAwMDAwMDAwMDI3NTA1ND5dIHRyeV9oYW5kbGVfbW1pbysweDFlYy8weDI2 NA0KPj4+PiAoWEVOKcKgwqDCoCBbPDAwMDAwMDAwMDAyN2VhNTA+XSB0cmFwcy5jI2RvX3RyYXBf c3RhZ2UyX2Fib3J0X2d1ZXN0KzB4MThjLzB4MmQ4DQo+Pj4+IChYRU4pwqDCoMKgIFs8MDAwMDAw MDAwMDI3ZjA4OD5dIGRvX3RyYXBfZ3Vlc3Rfc3luYysweGYwLzB4NjE4DQo+Pj4+IChYRU4pwqDC oMKgIFs8MDAwMDAwMDAwMDI2OWM1OD5dIGVudHJ5Lm8jZ3Vlc3Rfc3luY19zbG93cGF0aCsweGE0 LzB4ZDQNCj4+Pj4gKFhFTikNCj4+Pj4gKFhFTikNCj4+Pj4gKFhFTikgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKg0KPj4+PiAoWEVOKSBQYW5pYyBvbiBDUFUgMDoNCj4+ Pj4gKFhFTikgQ1BVMDogVW5leHBlY3RlZCBUcmFwOiBEYXRhIEFib3J0DQo+Pj4+IChYRU4pICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4+Pj4NCj4+Pj4+DQo+Pj4+ Pj4NCj4+Pj4+PiBGaXggdGhpcyBieSBhZGp1c3RpbmcgdGhlIGdwYSB3aXRoIHJlc3BlY3QgdG8g dGhlIGhvc3QgYnJpZGdlIGJhc2UgYWRkcmVzcw0KPj4+Pj4+IGluIGEgd2F5IGFzIGl0IGlzIGRv bmUgZm9yIHg4Ni4NCj4+Pj4+Pg0KPj4+Pj4+IEZpeGVzOiBkNTkxNjhkYzA1YTUgKCJ4ZW4vYXJt OiBFbmFibGUgdGhlIGV4aXN0aW5nIHg4NiB2aXJ0dWFsIFBDSSBzdXBwb3J0IGZvciBBUk0iKQ0K Pj4+Pj4+DQo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9s ZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPg0KPj4+Pj4+IC0tLQ0KPj4+Pj4+IMKgwqDC oCB4ZW4vYXJjaC9hcm0vdnBjaS5jIHwgNCArKy0tDQo+Pj4+Pj4gwqDCoMKgIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+Pj4+Pj4NCj4+Pj4+PiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gvYXJtL3ZwY2kuYyBiL3hlbi9hcmNoL2FybS92cGNpLmMNCj4+Pj4+ PiBpbmRleCA4ZjQwYTBkZWM2ZDIuLjIzZjQ1Mzg2ZjRiMyAxMDA2NDQNCj4+Pj4+PiAtLS0gYS94 ZW4vYXJjaC9hcm0vdnBjaS5jDQo+Pj4+Pj4gKysrIGIveGVuL2FyY2gvYXJtL3ZwY2kuYw0KPj4+ Pj4+IEBAIC0yNCw3ICsyNCw3IEBAIHN0YXRpYyBpbnQgdnBjaV9tbWlvX3JlYWQoc3RydWN0IHZj cHUgKnYsIG1taW9faW5mb190ICppbmZvLA0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVk IGxvbmcgZGF0YTsNCj4+Pj4+PiDCoMKgwqAgwqDCoMKgwqDCoCAvKiBXZSBpZ25vcmUgc2VnbWVu dCBwYXJ0IGFuZCBhbHdheXMgaGFuZGxlIHNlZ21lbnQgMCAqLw0KPj4+Pj4+IC3CoMKgwqAgc2Jk Zi5zYmRmID0gVlBDSV9FQ0FNX0JERihpbmZvLT5ncGEpOw0KPj4+Pj4+ICvCoMKgwqAgc2JkZi5z YmRmID0gVlBDSV9FQ0FNX0JERihpbmZvLT5ncGEgLSBHVUVTVF9WUENJX0VDQU1fQkFTRSk7DQo+ Pj4+Pg0KPj4+Pj4gTG9va2luZyBhdCB0aGUgcmVzdCBvZiB0aGUgcmVzdCwgaXQgc2VlbXMgdGhh dA0KPj4+Pj4gwqDCoMKgMSkgdGhlIGlzc3VlIGlzIGxhdGVudCBhcyB0aGUgYml0cyAwLTI3IGFy ZSBjbGVhcg0KPj4+Pj4gwqDCoMKgMikgdGhpcyB3aWxsIG5lZWQgdG8gYmUgbW9kaWZpZWQgdG8g dGFrZSBpbnRvIGFjY291bnQgZG9tMC4NCj4+Pj4+DQo+Pj4+PiBTbyBJIHdvdWxkIHByZWZlciBp ZiB0aGUgYmFzZSBhZGRyZXNzIGlzIHBhc3NlZCBkaWZmZXJlbnRseSAobWF5YmUgaW4gcHJpdj8p IGZyb20gdGhlIHN0YXJ0LiBUaGlzIHdpbGwgYXZvaWQgZXh0cmEgbW9kaWZpY2F0aW9uIHRoYXQg eW91IGFscmVhZHkgcGxhbiB0byBoYXZlIGluIGEgZm9sbG93LXVwIHNlcmllcy4NCj4+Pj4gSSB3 YXMgdGhpbmtpbmcgYWJvdXQgdGhlIHNhbWUsIGJ1dCB0aGUgZnV0dXJlIGNvZGUgd2lsbCB1c2Ug cHJpdiBmb3Igb3RoZXIgcHVycG9zZToNCj4+Pj4NCj4+Pj4gc3RhdGljIGludCB2cGNpX21taW9f cmVhZChzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8sDQo+Pj4+IMKgwqAgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVnaXN0ZXJfdCAq ciwgdm9pZCAqcCkNCj4+Pj4gew0KPj4+PiDCoMKgIMKgwqDCoCBzdHJ1Y3QgcGNpX2hvc3RfYnJp ZGdlICpicmlkZ2UgPSBwOw0KPj4+PiDCoMKgIMKgwqDCoCBwY2lfc2JkZl90IHNiZGY7DQo+Pj4+ IMKgwqAgwqDCoMKgIC8qIGRhdGEgaXMgbmVlZGVkIHRvIHByZXZlbnQgYSBwb2ludGVyIGNhc3Qg b24gMzJiaXQgKi8NCj4+Pj4gwqDCoCDCoMKgwqAgdW5zaWduZWQgbG9uZyBkYXRhOw0KPj4+Pg0K Pj4+PiDCoMKgIMKgwqDCoCBpZiAoIGJyaWRnZSApDQo+Pj4+IMKgwqAgwqDCoMKgIHsNCj4+Pj4g wqDCoCDCoMKgwqDCoMKgwqDCoCBzYmRmLnNiZGYgPSBWUENJX0VDQU1fQkRGKGluZm8tPmdwYSAt IGJyaWRnZS0+Y2ZnLT5waHlzX2FkZHIpOw0KPj4+PiDCoMKgIMKgwqDCoMKgwqDCoMKgIHNiZGYu c2VnID0gYnJpZGdlLT5zZWdtZW50Ow0KPj4+PiDCoMKgIMKgwqDCoCB9DQo+Pj4+IMKgwqAgwqDC oMKgIGVsc2UNCj4+Pj4gwqDCoCDCoMKgwqDCoMKgwqDCoCBzYmRmLnNiZGYgPSBWUENJX0VDQU1f QkRGKGluZm8tPmdwYSAtIEdVRVNUX1ZQQ0lfRUNBTV9CQVNFKTsNCj4+Pg0KPj4+IElzIGl0IHRo ZSBvbmx5IHBsYWNlIHlvdSBhcmUgZG9pbmcgdG8gdXNlIGJyaWRnZT8gSWYgc28sIHRoZW4gSSB0 aGluayB3ZSBjYW4gc2ltcGx5IGhhdmUgYSBzdHJ1Y3R1cmUgdGhhdCB3b3VsZCBjb250YWluIHBo eXNfYWRkciBhbmQgc2VnbWVudC4NCj4+Pg0KPj4+IFRoaXMgd291bGQgYmUgaW5jbHVkZSBpbiB0 aGUgYnJpZGdlIGZvciBkb20wIGFuZCBmb3IgZ3Vlc3QgdGhpcyBjb3VsZCBiZSBhIHN0YXRpYyBn bG9iYWwgdmFyaWFibGUgZm9yIG5vdy4NCj4+IEhtLiBJIGRvbid0IHRoaW5rIGEgZ2xvYmFsIGlz IGFueSBiZXR0ZXIgdGhhbiB1c2luZyBpbmZvLT5ncGEgLSBHVUVTVF9WUENJX0VDQU1fQkFTRS4N Cj4+IEJ1dCBJIGFtIGZpbmUgd2l0aCB0aGUgc3RydWN0dXJlOiBwbGVhc2UgbGV0IG1lIGtub3cg eW91ciBwcmVmZXJlbmNlLA0KPj4gc28gSSBjYW4gaGF2ZSBhbiBhY2NlcHRhYmxlIGZpeA0KPg0K PiBUaGUgZGlmZmVyZW5jZSBpcyB5b3UgZG9uJ3QgZHVwbGljYXRlIHRoZSBzYW1lIGNoZWNrIGlu IHR3byBwbGFjZXMNCj4gQWx0ZXJuYXRpdmVseSwgSSB3b3VsZCBiZSBoYXBweSBjb25zaWRlciBh biBoZWxwZXIgdGhhdCBpcyB1c2VkIGluIGJvdGggcGxhY2VzLg0KQnV0IHRoZW4gd2UgZHVwbGlj YXRlIGRhdGEgaW5zaWRlICJzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpicmlkZ2UiIGJlY2F1c2Ug d2UgbmVlZA0KdG8gYWxsb2NhdGUgKGhhdmUgaXQgZW1iZWRkZWQpIHN1Y2ggYSBzdHJ1Y3R1cmUg cGVyIGJyaWRnZSwgZS5nLiB3ZSBoYXZlDQoNCmJyaWRnZS0+c2VnbWVudA0KYnJpZGdlLT5jZmct PnBoeXNfYWRkcg0KDQphbmQgdGhlbiB3ZSBhZGQgYSBzdHJ1Y3R1cmUgd2hpY2ggY29udGFpbnMg dGhlIHNhbWU6DQoNCmJyaWRnZS0+bmV3X3N0cnVjdC5zZWdtZW50ID09IGJyaWRnZS0+c2VnbWVu dA0KYnJpZGdlLT5uZXdfc3RydWN0LnBoeXNfYWRkciA9PSBicmlkZ2UtPmNmZy0+cGh5c19hZGRy DQoNClRoaXMgaXMgc28gdGhhdCBicmlkZ2UtPm5ld19zdHJ1Y3QgY2FuIGJlIHBhc3NlZCBhcyBh IHByaXZhdGUgdG8gcmVnaXN0ZXJfbW1pb19oYW5kbGVyDQoNCkFuZCB0aGUgYWJvdmUgc2VlbXMg dG8gYmUgbm8gc28gYnJpZ2h0IGNvbXBhcmluZyB0byBqdXN0IHBhc3NpbmcNCmJyaWRnZSBhcyBw cml2YXRlIGFuZCB1c2luZyBpbmZvLT5ncGEgLSBHVUVTVF9WUENJX0VDQU1fQkFTRS4uLg0KU28s IEkgd291bGQgc3RheSB3aXRoIHNpbXBsZXINCg0KIMKgwqDCoCBpZiAoIGJyaWRnZSApDQogwqDC oCDCoMKgwqAgew0KIMKgwqAgwqDCoMKgwqDCoMKgwqAgc2JkZi5zYmRmID0gVlBDSV9FQ0FNX0JE RihpbmZvLT5ncGEgLSBicmlkZ2UtPmNmZy0+cGh5c19hZGRyKTsNCiDCoMKgIMKgwqDCoMKgwqDC oMKgIHNiZGYuc2VnID0gYnJpZGdlLT5zZWdtZW50Ow0KIMKgwqAgwqDCoMKgIH0NCiDCoMKgIMKg wqDCoCBlbHNlDQogwqDCoCDCoMKgwqDCoMKgwqDCoCBzYmRmLnNiZGYgPSBWUENJX0VDQU1fQkRG KGluZm8tPmdwYSAtIEdVRVNUX1ZQQ0lfRUNBTV9CQVNFKTsNCj4NCj4gQ2hlZXJzLA0KPg0KVGhh bmsgeW91LA0KT2xla3NhbmRy