From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 557D2A04BC;
	Fri,  9 Oct 2020 18:52:04 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 393741BDBD;
	Fri,  9 Oct 2020 18:52:03 +0200 (CEST)
Received: from mga09.intel.com (mga09.intel.com [134.134.136.24])
 by dpdk.org (Postfix) with ESMTP id E125D1BC8B
 for <dev@dpdk.org>; Fri,  9 Oct 2020 18:52:01 +0200 (CEST)
IronPort-SDR: 6bKeWIlGvvxD/yC+XuEm5z7+HqVfsBsZIQFIh6U5F4FlKiTVYuRBvxkTYjrqXlshibpeCDqTab
 DK6Nr8ZynkQQ==
X-IronPort-AV: E=McAfee;i="6000,8403,9769"; a="165623043"
X-IronPort-AV: E=Sophos;i="5.77,355,1596524400"; d="scan'208";a="165623043"
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from fmsmga005.fm.intel.com ([10.253.24.32])
 by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 09 Oct 2020 09:51:58 -0700
IronPort-SDR: bfP1Ko0M/bFn3sp6mCpEgvwAM1GQBLHOgDj8vGDyq/4mNx+r4q1VN+2i8bOl/skX2l8HNoo0kM
 cx1kvpT3mD3A==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.77,355,1596524400"; d="scan'208";a="519790709"
Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15])
 by fmsmga005.fm.intel.com with ESMTP; 09 Oct 2020 09:51:57 -0700
Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by
 ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.1713.5; Fri, 9 Oct 2020 09:51:57 -0700
Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by
 ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.1713.5; Fri, 9 Oct 2020 09:51:57 -0700
Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by
 orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5
 via Frontend Transport; Fri, 9 Oct 2020 09:51:57 -0700
Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.171)
 by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.1713.5; Fri, 9 Oct 2020 09:51:56 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=eWjHohwWFEssJAF/TfoNaNbwd4eJEtFgbpvkPYHNGtLdM4nCjOpJcO7o/VcDyznQ2Hp3UlR4pjH7tRxdQZmzGpR3UQ39H1E7fjix1y4/9/Odv7RzqMxIQPkLKho4MyX1P7FtPiHvIx39pivj6dRGBkQJopRTBy2LaYw0KOxX0YeZModkucvXi8Q1VirBN6eV0AO7RMiJkTJGrxNzQmfSLmCPTPz8KS0BF10IFUn0kl3n5gMSigNo4zOhZcorApCxeAkkc9wGlfGnkttzWWAcrALYZTCEZ3a0J112Oa0a/i+uY9fUgj8jurAoH5oUZpqp5XLLrRHmO3aLTQ4m114Ubg==
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=ANqXmTQZIQArHr+Vgd061M7n97dddt+voG7slJlYpy4=;
 b=OlQsRHdESOhgS5QQAm83mO2cyR85EXvq96BkZCnu+bcAm/1YPEAOtZ6VEAbsWppbBLLR6LI7T0UgvNuBvh54TBF6gCjeNcCGeV34yhndFk2boH+eVs5bm1OykuetlIFwxlf+WRHjcggpqO3+aIBtIE/VnjSS+VAyv9lH+A/+fnpuum9l7aH7lchhgbjZMylZbPJUmFASu81+1mbwyF1KzNlVzVcnz7Pi60nNSNOLKZKHBX8lu6t82j6RVVhKlnja9AIZYFWxY9Xtcbfb60RgtB6ds7RgJHmraed8NiEw5d3PlJ5pRSVoCQQOTp1rDpzO/4ch0CAkPaBfp8Wsfk/zsw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com;
 dkim=pass header.d=intel.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; 
 s=selector2-intel-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ANqXmTQZIQArHr+Vgd061M7n97dddt+voG7slJlYpy4=;
 b=lOydShg8cZFMTd+vOo8bU1Gp/c+E1uP1gRptEiiI69HHaQRWRdZ8WC3IqNm126/yq9pxAPvddQWQb7Y3eWjFZJ8VPhb1SrzrKNeh4D2rgsyvMeq/MTC0yGgTpwmlhpN+wFSI+xa5WTrazVrFL6vxdMYhC1gAW9CovcVFXSUYP1c=
Received: from BYAPR11MB3301.namprd11.prod.outlook.com (2603:10b6:a03:7f::26)
 by SJ0PR11MB4784.namprd11.prod.outlook.com (2603:10b6:a03:2da::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.34; Fri, 9 Oct
 2020 16:51:53 +0000
Received: from BYAPR11MB3301.namprd11.prod.outlook.com
 ([fe80::f5a4:3f6b:ade3:296b]) by BYAPR11MB3301.namprd11.prod.outlook.com
 ([fe80::f5a4:3f6b:ade3:296b%3]) with mapi id 15.20.3455.027; Fri, 9 Oct 2020
 16:51:53 +0000
From: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>
To: "Burakov, Anatoly" <anatoly.burakov@intel.com>, "Ma, Liang J"
 <liang.j.ma@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: "Hunt, David" <david.hunt@intel.com>, "stephen@networkplumber.org"
 <stephen@networkplumber.org>
Thread-Topic: [PATCH v4 04/10] power: add simple power management API and
 callback
Thread-Index: AQHWmMYQwMLlC/ugfkqtcsvaQkLoF6mPfnfAgAAHxQCAAADJoA==
Date: Fri, 9 Oct 2020 16:51:53 +0000
Message-ID: <BYAPR11MB3301E6367F1A635E036AD4EB9A080@BYAPR11MB3301.namprd11.prod.outlook.com>
References: <1599214740-3927-1-git-send-email-liang.j.ma@intel.com>
 <1601647919-25312-1-git-send-email-liang.j.ma@intel.com>
 <1601647919-25312-4-git-send-email-liang.j.ma@intel.com>
 <BYAPR11MB330194932E7A7E134F894F7B9A080@BYAPR11MB3301.namprd11.prod.outlook.com>
 <c3eb3d1e-42d2-56f2-18b2-e1b5735822f7@intel.com>
In-Reply-To: <c3eb3d1e-42d2-56f2-18b2-e1b5735822f7@intel.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
dlp-product: dlpe-windows
dlp-reaction: no-action
dlp-version: 11.5.1.3
authentication-results: intel.com; dkim=none (message not signed)
 header.d=none;intel.com; dmarc=none action=none header.from=intel.com;
x-originating-ip: [46.7.39.127]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 68e3b266-20d5-435d-e94c-08d86c739ff6
x-ms-traffictypediagnostic: SJ0PR11MB4784:
x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <SJ0PR11MB47845944CD9E9E10B899ED5E9A080@SJ0PR11MB4784.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: w6k0NAlHbQFCq2kuV3MCVEutsa1xHv+QwLu+YHBKycK6+ANM014Us+Z+Nvegilssdnk3J5dRn3YDa1jCCoBng5Y/YcPu33u9QTOd0Gkl4GOqOS9yKtlBVC9NBmE/TydnSBu/Z4WuvPWwQvN3xRvON5BRXad5SANQj09XcAtwoGU1VLZxee2WZHAi892KdZr2PCZmfm9fGwpLW4iVFwEsbl0W7p6wVPa2PauoUBDsFPT6wILSfc9bCYqtEfJ6PN4UvVtW6ZHbH1/348ANfxwq33LxWpyhcTfbJ0iRUl8wu6h4FuSXNkrMVj8R07KlK1Fa
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:BYAPR11MB3301.namprd11.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(4636009)(39860400002)(346002)(136003)(396003)(376002)(366004)(71200400001)(478600001)(55016002)(2906002)(8676002)(33656002)(5660300002)(9686003)(83380400001)(8936002)(30864003)(54906003)(26005)(6506007)(316002)(66946007)(4326008)(53546011)(66476007)(64756008)(76116006)(186003)(66556008)(66446008)(52536014)(7696005)(86362001)(110136005);
 DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata: +eeFxvguqkxCBBT28l8ev4b0MfhtFKF4C5jkE7p8LNC/WcN+aqAinunvV9/iLI4ok9tv+L/0cGv0w2yyfAd00fZ0Fu76tsc7BKY4wR3HvoieV5OxOGHQeu3WrhbSYiR+QnKR6h3Xt4jtajSUltLwgWwVwbJB0a2atOxkgL3krBQ2yYDmEWdLVyNB7wuJvkGo6PpR+1Ld83AApa8r6dFaw+HTJnac0OkLTyICSvhKcVW9zMJ5pM9GbIl99szJZJH1PyeK/R/4nJMk1XyP5rPZC+jx7yDqm/FgTW+Ql7QbJclRVYQ5MLD3Ah0cz5A4S5vELFj9dNrPeLNXj3uGgG/kNzGN+n27w6Wy4RsCO34pqjPS3B/ZgxmIRAAdCzXzJuIkY4+/6TbYhtyy6aXVs6R/hfZhifeqOJudSxD81NR+cXHTJMziQ72//1tsq/VsWezB9+pd425SbfqWth8/uJkNjXmBy9kfVGOH/19zLIs31ixRBXab1kjuenFIPfxSDgSjI3QOLSiNrUareBf2rKYzNqrGNwklUpZ4lplnQgc0Odsuf5/0kTWRa0Em13rzgboK0uVXzBqCcoNcqYdee3s3WDl2G6TyHCuR+jVpULd/RNKz7k+A7gcpgYWcBXewCYqAH/Ai2g+XF6Bje8w7H9gg8w==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3301.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 68e3b266-20d5-435d-e94c-08d86c739ff6
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2020 16:51:53.2503 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: PvmZ23ArBxVTIDf//uZUTsdYhWlAK8rLdtfhahQSWUJZZD0X2yryaOzgVeJBMP9hG2W+hKvlfjwfQRUvgupmCO4jTB9jQDk4GRFRku0OnFI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB4784
X-OriginatorOrg: intel.com
Subject: Re: [dpdk-dev] [PATCH v4 04/10] power: add simple power management
 API and callback
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

PiBPbiAwOS1PY3QtMjAgNTozOCBQTSwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4gPj4g
QWRkIGEgc2ltcGxlIG9uL29mZiBzd2l0Y2ggdGhhdCB3aWxsIGVuYWJsZSBzYXZpbmcgcG93ZXIg
d2hlbiBubw0KPiA+PiBwYWNrZXRzIGFyZSBhcnJpdmluZy4gSXQgaXMgYmFzZWQgb24gY291bnRp
bmcgdGhlIG51bWJlciBvZiBlbXB0eQ0KPiA+PiBwb2xscyBhbmQsIHdoZW4gdGhlIG51bWJlciBy
ZWFjaGVzIGEgY2VydGFpbiB0aHJlc2hvbGQsIGVudGVyaW5nIGFuDQo+ID4+IGFyY2hpdGVjdHVy
ZS1kZWZpbmVkIG9wdGltaXplZCBwb3dlciBzdGF0ZSB0aGF0IHdpbGwgZWl0aGVyIHdhaXQNCj4g
Pj4gdW50aWwgYSBUU0MgdGltZXN0YW1wIGV4cGlyZXMsIG9yIHdoZW4gcGFja2V0cyBhcnJpdmUu
DQo+ID4+DQo+ID4+IFRoaXMgQVBJIHN1cHBvcnQgMSBwb3J0IHRvIG11bHRpcGxlIGNvcmUgdXNl
IGNhc2UuDQo+ID4+DQo+ID4+IFRoaXMgZGVzaWduIGxldmVyYWdlIFJYIENhbGxiYWNrIG1lY2hu
YWlzbSB3aGljaCBhbGxvdyB0aHJlZQ0KPiA+PiBkaWZmZXJlbnQgcG93ZXIgbWFuYWdlbWVudCBt
ZXRob2RvbG9neSBjbyBleGlzdC4NCj4gPj4NCj4gPj4gMS4gdW13YWl0L3Vtb25pdG9yOg0KPiA+
Pg0KPiA+PiAgICAgVGhlIFRTQyB0aW1lc3RhbXAgaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVk
IHVzaW5nIGN1cnJlbnQNCj4gPj4gICAgIGxpbmsgc3BlZWQgYW5kIFJYIGRlc2NyaXB0b3Igcmlu
ZyBzaXplLCBzdWNoIHRoYXQgdGhlIHNsZWVwDQo+ID4+ICAgICB0aW1lIGlzIG5vdCBsb25nZXIg
dGhhbiBpdCB3b3VsZCB0YWtlIGZvciBhIE5JQyB0byBmaWxsIGl0cw0KPiA+PiAgICAgZW50aXJl
IFJYIGRlc2NyaXB0b3IgcmluZy4NCj4gPj4NCj4gPj4gMi4gUGF1c2UgaW5zdHJ1Y3Rpb24NCj4g
Pj4NCj4gPj4gICAgIEluc3RlYWQgb2YgbW92ZSB0aGUgY29yZSBpbnRvIGRlZXBlciBDIHN0YXRl
LCB0aGlzIGxpZ2h0d2VpZ2h0DQo+ID4+ICAgICBtZXRob2QgdXNlIFBhdXNlIGluc3RydWN0aW9u
IHRvIHJlbGllZiB0aGUgcHJvY2Vzc29yIGZyb20NCj4gPj4gICAgIGJ1c3kgcG9sbGluZy4NCj4g
Pj4NCj4gPj4gMy4gRnJlcXVlbmN5IFNjYWxpbmcNCj4gPj4gICAgIFJldXNlIGV4aXN0IHJ0ZSBw
b3dlciBsaWJyYXJ5IHRvIHNjYWxlIHVwL2Rvd24gY29yZSBmcmVxdWVuY3kNCj4gPj4gICAgIGRl
cGVuZCBvbiB0cmFmZmljIHZvbHVtZS4NCj4gPj4NCj4gPj4gU2lnbmVkLW9mZi1ieTogTGlhbmcg
TWEgPGxpYW5nLmoubWFAaW50ZWwuY29tPg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBBbmF0b2x5IEJ1
cmFrb3YgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+DQo+ID4+IC0tLQ0KPiA+PiAgIGxpYi9s
aWJydGVfcG93ZXIvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICA1ICstDQo+ID4+ICAgbGliL2xp
YnJ0ZV9wb3dlci9wbWRfbWdtdC5oICAgICAgICAgICAgfCAgNDkgKysrKysrDQo+ID4+ICAgbGli
L2xpYnJ0ZV9wb3dlci9ydGVfcG93ZXJfcG1kX21nbXQuYyAgfCAyMDggKysrKysrKysrKysrKysr
KysrKysrKysrKw0KPiA+PiAgIGxpYi9saWJydGVfcG93ZXIvcnRlX3Bvd2VyX3BtZF9tZ210Lmgg
IHwgIDg4ICsrKysrKysrKysrDQo+ID4+ICAgbGliL2xpYnJ0ZV9wb3dlci9ydGVfcG93ZXJfdmVy
c2lvbi5tYXAgfCAgIDQgKw0KPiA+PiAgIDUgZmlsZXMgY2hhbmdlZCwgMzUyIGluc2VydGlvbnMo
KyksIDIgZGVsZXRpb25zKC0pDQo+ID4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVf
cG93ZXIvcG1kX21nbXQuaA0KPiA+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3Bv
d2VyL3J0ZV9wb3dlcl9wbWRfbWdtdC5jDQo+ID4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9s
aWJydGVfcG93ZXIvcnRlX3Bvd2VyX3BtZF9tZ210LmgNCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBh
L2xpYi9saWJydGVfcG93ZXIvbWVzb24uYnVpbGQgYi9saWIvbGlicnRlX3Bvd2VyL21lc29uLmJ1
aWxkDQo+ID4+IGluZGV4IDc4YzAzMWM5NDMuLmNjM2M3YTg2NDYgMTAwNjQ0DQo+ID4+IC0tLSBh
L2xpYi9saWJydGVfcG93ZXIvbWVzb24uYnVpbGQNCj4gPj4gKysrIGIvbGliL2xpYnJ0ZV9wb3dl
ci9tZXNvbi5idWlsZA0KPiA+PiBAQCAtOSw2ICs5LDcgQEAgc291cmNlcyA9IGZpbGVzKCdydGVf
cG93ZXIuYycsICdwb3dlcl9hY3BpX2NwdWZyZXEuYycsDQo+ID4+ICAgJ3Bvd2VyX2t2bV92bS5j
JywgJ2d1ZXN0X2NoYW5uZWwuYycsDQo+ID4+ICAgJ3J0ZV9wb3dlcl9lbXB0eV9wb2xsLmMnLA0K
PiA+PiAgICdwb3dlcl9wc3RhdGVfY3B1ZnJlcS5jJywNCj4gPj4gKydydGVfcG93ZXJfcG1kX21n
bXQuYycsDQo+ID4+ICAgJ3Bvd2VyX2NvbW1vbi5jJykNCj4gPj4gLWhlYWRlcnMgPSBmaWxlcygn
cnRlX3Bvd2VyLmgnLCdydGVfcG93ZXJfZW1wdHlfcG9sbC5oJykNCj4gPj4gLWRlcHMgKz0gWyd0
aW1lciddDQo+ID4+ICtoZWFkZXJzID0gZmlsZXMoJ3J0ZV9wb3dlci5oJywncnRlX3Bvd2VyX2Vt
cHR5X3BvbGwuaCcsJ3J0ZV9wb3dlcl9wbWRfbWdtdC5oJykNCj4gPj4gK2RlcHMgKz0gWyd0aW1l
cicgLCdldGhkZXYnXQ0KPiA+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9wb3dlci9wbWRfbWdt
dC5oIGIvbGliL2xpYnJ0ZV9wb3dlci9wbWRfbWdtdC5oDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQo+ID4+IGluZGV4IDAwMDAwMDAwMDAuLjc1NmZiZTIwZjcNCj4gPj4gLS0tIC9kZXYvbnVs
bA0KPiA+PiArKysgYi9saWIvbGlicnRlX3Bvd2VyL3BtZF9tZ210LmgNCj4gPj4gQEAgLTAsMCAr
MSw0OSBAQA0KPiA+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0K
PiA+PiArICogQ29weXJpZ2h0KGMpIDIwMTAtMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+PiAr
ICovDQo+ID4+ICsNCj4gPj4gKyNpZm5kZWYgX1BNRF9NR01UX0gNCj4gPj4gKyNkZWZpbmUgX1BN
RF9NR01UX0gNCj4gPj4gKw0KPiA+PiArLyoqDQo+ID4+ICsgKiBAZmlsZQ0KPiA+PiArICogUG93
ZXIgTWFuYWdlbWVudA0KPiA+PiArICovDQo+ID4+ICsNCj4gPj4gKyNpZmRlZiBfX2NwbHVzcGx1
cw0KPiA+PiArZXh0ZXJuICJDIiB7DQo+ID4+ICsjZW5kaWYNCj4gPj4gKw0KPiA+PiArLyoqDQo+
ID4+ICsgKiBQb3NzaWJsZSBwb3dlciBtYW5hZ2VtZW50IHN0YXRlcyBvZiBhbiBldGhkZXYgcG9y
dC4NCj4gPj4gKyAqLw0KPiA+PiArZW51bSBwbWRfbWdtdF9zdGF0ZSB7DQo+ID4+ICsvKiogRGV2
aWNlIHBvd2VyIG1hbmFnZW1lbnQgaXMgZGlzYWJsZWQuICovDQo+ID4+ICtQTURfTUdNVF9ESVNB
QkxFRCA9IDAsDQo+ID4+ICsvKiogRGV2aWNlIHBvd2VyIG1hbmFnZW1lbnQgaXMgZW5hYmxlZC4g
Ki8NCj4gPj4gK1BNRF9NR01UX0VOQUJMRUQsDQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICtzdHJ1
Y3QgcG1kX3F1ZXVlX2NmZyB7DQo+ID4+ICtlbnVtIHBtZF9tZ210X3N0YXRlIHB3cl9tZ210X3N0
YXRlOw0KPiA+PiArLyoqPCBQb3dlciBtZ210IENhbGxiYWNrIG1vZGUgKi8NCj4gPj4gK2VudW0g
cnRlX3Bvd2VyX3BtZF9tZ210X3R5cGUgY2JfbW9kZTsNCj4gPj4gKy8qKjwgRW1wdHkgcG9sbCBu
dW1iZXIgKi8NCj4gPj4gK3VpbnQxNl90IGVtcHR5X3BvbGxfc3RhdHM7DQo+ID4+ICsvKio8IENh
bGxiYWNrIGluc3RhbmNlICAqLw0KPiA+PiArY29uc3Qgc3RydWN0IHJ0ZV9ldGhfcnh0eF9jYWxs
YmFjayAqY3VyX2NiOw0KPiA+PiArfSBfX3J0ZV9jYWNoZV9hbGlnbmVkOw0KPiA+PiArDQo+ID4+
ICtzdHJ1Y3QgcG1kX3BvcnRfY2ZnIHsNCj4gPj4gK2ludCAgcmVmX2NudDsNCj4gPj4gK3N0cnVj
dCBwbWRfcXVldWVfY2ZnICpxdWV1ZV9jZmc7DQo+ID4+ICt9IF9fcnRlX2NhY2hlX2FsaWduZWQ7
DQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArDQo+ID4+ICsNCj4gPj4gKyNpZmRlZiBfX2NwbHVzcGx1
cw0KPiA+PiArfQ0KPiA+PiArI2VuZGlmDQo+ID4+ICsNCj4gPj4gKyNlbmRpZg0KPiA+PiBkaWZm
IC0tZ2l0IGEvbGliL2xpYnJ0ZV9wb3dlci9ydGVfcG93ZXJfcG1kX21nbXQuYyBiL2xpYi9saWJy
dGVfcG93ZXIvcnRlX3Bvd2VyX3BtZF9tZ210LmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN
Cj4gPj4gaW5kZXggMDAwMDAwMDAwMC4uMzVkMmFmNDZhNA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+
ID4+ICsrKyBiL2xpYi9saWJydGVfcG93ZXIvcnRlX3Bvd2VyX3BtZF9tZ210LmMNCj4gPj4gQEAg
LTAsMCArMSwyMDggQEANCj4gPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D
bGF1c2UNCj4gPj4gKyAqIENvcHlyaWdodChjKSAyMDEwLTIwMjAgSW50ZWwgQ29ycG9yYXRpb24N
Cj4gPj4gKyAqLw0KPiA+PiArDQo+ID4+ICsjaW5jbHVkZSA8cnRlX2xjb3JlLmg+DQo+ID4+ICsj
aW5jbHVkZSA8cnRlX2N5Y2xlcy5oPg0KPiA+PiArI2luY2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCj4g
Pj4gKyNpbmNsdWRlIDxydGVfZXRoZGV2Lmg+DQo+ID4+ICsjaW5jbHVkZSA8cnRlX3Bvd2VyX2lu
dHJpbnNpY3MuaD4NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgInJ0ZV9wb3dlcl9wbWRfbWdtdC5o
Ig0KPiA+PiArI2luY2x1ZGUgInBtZF9tZ210LmgiDQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArI2Rl
ZmluZSBFTVBUWVBPTExfTUFYICA1MTINCj4gPj4gKyNkZWZpbmUgUEFVU0VfTlVNICA2NA0KPiA+
PiArDQo+ID4+ICtzdGF0aWMgc3RydWN0IHBtZF9wb3J0X2NmZyBwb3J0X2NmZ1tSVEVfTUFYX0VU
SFBPUlRTXTsNCj4gPj4gKw0KPiA+PiArc3RhdGljIHVpbnQxNl90DQo+ID4+ICtydGVfcG93ZXJf
bWdtdF91bXdhaXQodWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgcWlkeCwNCj4gPj4gK3N0cnVj
dCBydGVfbWJ1ZiAqKnBrdHMgX19ydGVfdW51c2VkLCB1aW50MTZfdCBuYl9yeCwNCj4gPj4gK3Vp
bnQxNl90IG1heF9wa3RzIF9fcnRlX3VudXNlZCwgdm9pZCAqXyAgX19ydGVfdW51c2VkKQ0KPiA+
PiArew0KPiA+PiArDQo+ID4+ICtzdHJ1Y3QgcG1kX3F1ZXVlX2NmZyAqcV9jb25mOw0KPiA+PiAr
cV9jb25mID0gJnBvcnRfY2ZnW3BvcnRfaWRdLnF1ZXVlX2NmZ1txaWR4XTsNCj4gPj4gKw0KPiA+
PiAraWYgKHVubGlrZWx5KG5iX3J4ID09IDApKSB7DQo+ID4+ICtxX2NvbmYtPmVtcHR5X3BvbGxf
c3RhdHMrKzsNCj4gPj4gK2lmICh1bmxpa2VseShxX2NvbmYtPmVtcHR5X3BvbGxfc3RhdHMgPiBF
TVBUWVBPTExfTUFYKSkgew0KPiA+DQo+ID4NCj4gPiBIZXJlIGFuZCBpbiBvdGhlciBwbGFjZXMg
LSB3b3VsZG4ndCBpdCBiZSBiZXR0ZXIgdG8gZW1wdHlfcG9sbF9tYXggYXMgY29uZmlndXJhYmxl
DQo+ID4gcGFyYW1ldGVyLCBpbnN0ZWFkIG9mIGNvbnN0YW50IHZhbHVlPw0KPiANCj4gSXQgd291
bGQgYmUgbW9yZSBmbGV4aWJsZSwgYnV0IGkgZG9uJ3QgdGhpbmsgaXQncyAiYmV0dGVyIiBpbiB0
aGUgc2Vuc2UNCj4gdGhhdCBwcm92aWRpbmcgYWRkaXRpb25hbCBvcHRpb25zIHdpbGwgb25seSBt
YWtlIHVzaW5nIHRoaXMgKGFscmVhZHkNCj4gdW5kZXItdXRpbGl6ZWQhKSBBUEkgaGFyZGVyIHRo
YW4gaXQgbmVlZHMgdG8gYmUuDQo+IA0KPiA+DQo+ID4+ICt2b2xhdGlsZSB2b2lkICp0YXJnZXRf
YWRkcjsNCj4gPj4gK3VpbnQ2NF90IGV4cGVjdGVkLCBtYXNrOw0KPiA+PiArdWludDE2X3QgcmV0
Ow0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArICogZ2V0IGFkZHJlc3Mgb2YgbmV4dCBkZXNjcmlw
dG9yIGluIHRoZSBSWA0KPiA+PiArICogcmluZyBmb3IgdGhpcyBxdWV1ZSwgYXMgd2VsbCBhcyBl
eHBlY3RlZA0KPiA+PiArICogdmFsdWUgYW5kIGEgbWFzay4NCj4gPj4gKyAqLw0KPiA+PiArcmV0
ID0gcnRlX2V0aF9nZXRfd2FrZV9hZGRyKHBvcnRfaWQsIHFpZHgsDQo+ID4+ICsgICAgJnRhcmdl
dF9hZGRyLCAmZXhwZWN0ZWQsDQo+ID4+ICsgICAgJm1hc2spOw0KPiA+PiAraWYgKHJldCA9PSAw
KQ0KPiA+PiArLyogLTFVTEwgaXMgbWF4aW11bSB2YWx1ZSBmb3IgVFNDICovDQo+ID4+ICtydGVf
cG93ZXJfbW9uaXRvcih0YXJnZXRfYWRkciwNCj4gPj4gKyAgZXhwZWN0ZWQsIG1hc2ssDQo+ID4+
ICsgIDAsIC0xVUxMKTsNCj4gPg0KPiA+DQo+ID4gV2h5IG5vdCBtYWtlIHRpbWVvdXQgYSB1c2Vy
IHNwZWNpZmllZCBwYXJhbWV0ZXI/DQo+IA0KPiBUaGlzIGlzIG1lYW50IHRvIGJlIGFuICJlYXN5
IHRvIHVzZSIgQVBJLCB3ZSB3ZXJlIHRyeWluZyB0byBrZWVwIHRoZQ0KPiBhbW91bnQgb2YgY29u
ZmlndXJhdGlvbiB0byBhbiBhYnNvbHV0ZSBtaW5pbXVtLiBJZiB0aGUgdXNlciB3YW50cyB0byB1
c2UNCj4gY3VzdG9tIHRpbWVvdXRzLCB0aGV5IGNhbiBkbyBzbyB3aXRoIHVzaW5nIHJ0ZV9wb3dl
cl9tb25pdG9yIEFQSSBleHBsaWNpdGx5Lg0KPiANCj4gPg0KPiA+PiArfQ0KPiA+PiArfSBlbHNl
DQo+ID4+ICtxX2NvbmYtPmVtcHR5X3BvbGxfc3RhdHMgPSAwOw0KPiA+PiArDQo+ID4+ICtyZXR1
cm4gbmJfcng7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK3N0YXRpYyB1aW50MTZfdA0KPiA+PiAr
cnRlX3Bvd2VyX21nbXRfcGF1c2UodWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgcWlkeCwNCj4g
Pj4gK3N0cnVjdCBydGVfbWJ1ZiAqKnBrdHMgX19ydGVfdW51c2VkLCB1aW50MTZfdCBuYl9yeCwN
Cj4gPj4gK3VpbnQxNl90IG1heF9wa3RzIF9fcnRlX3VudXNlZCwgdm9pZCAqXyAgX19ydGVfdW51
c2VkKQ0KPiA+PiArew0KPiA+PiArc3RydWN0IHBtZF9xdWV1ZV9jZmcgKnFfY29uZjsNCj4gPj4g
K2ludCBpOw0KPiA+PiArcV9jb25mID0gJnBvcnRfY2ZnW3BvcnRfaWRdLnF1ZXVlX2NmZ1txaWR4
XTsNCj4gPj4gKw0KPiA+PiAraWYgKHVubGlrZWx5KG5iX3J4ID09IDApKSB7DQo+ID4+ICtxX2Nv
bmYtPmVtcHR5X3BvbGxfc3RhdHMrKzsNCj4gPj4gK2lmICh1bmxpa2VseShxX2NvbmYtPmVtcHR5
X3BvbGxfc3RhdHMgPiBFTVBUWVBPTExfTUFYKSkgew0KPiA+PiArZm9yIChpID0gMDsgaSA8IFBB
VVNFX05VTTsgaSsrKQ0KPiA+PiArcnRlX3BhdXNlKCk7DQo+ID4NCj4gPiBKdXN0IHJ0ZV9kZWxh
eV91cyh0aW1lb3V0KSBpbnN0ZWFkIG9mIHRoaXMgbG9vcD8NCj4gDQo+IFllcywgc2VlbXMgYmV0
dGVyLCB0aGFua3MuDQo+IA0KPiA+DQo+ID4+ICt9DQo+ID4+ICt9IGVsc2UNCj4gPj4gK3FfY29u
Zi0+ZW1wdHlfcG9sbF9zdGF0cyA9IDA7DQo+ID4+ICsNCj4gPj4gK3JldHVybiBuYl9yeDsNCj4g
Pj4gK30NCj4gPj4gKw0KPiA+PiArc3RhdGljIHVpbnQxNl90DQo+ID4+ICtydGVfcG93ZXJfbWdt
dF9zY2FsZWZyZXEodWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgcWlkeCwNCj4gPj4gK3N0cnVj
dCBydGVfbWJ1ZiAqKnBrdHMgX19ydGVfdW51c2VkLCB1aW50MTZfdCBuYl9yeCwNCj4gPj4gK3Vp
bnQxNl90IG1heF9wa3RzIF9fcnRlX3VudXNlZCwgdm9pZCAqXyAgX19ydGVfdW51c2VkKQ0KPiA+
PiArew0KPiA+PiArc3RydWN0IHBtZF9xdWV1ZV9jZmcgKnFfY29uZjsNCj4gPj4gK3FfY29uZiA9
ICZwb3J0X2NmZ1twb3J0X2lkXS5xdWV1ZV9jZmdbcWlkeF07DQo+ID4+ICsNCj4gPj4gK2lmICh1
bmxpa2VseShuYl9yeCA9PSAwKSkgew0KPiA+PiArcV9jb25mLT5lbXB0eV9wb2xsX3N0YXRzKys7
DQo+ID4+ICtpZiAodW5saWtlbHkocV9jb25mLT5lbXB0eV9wb2xsX3N0YXRzID4gRU1QVFlQT0xM
X01BWCkpIHsNCj4gPj4gKy8qc2NhbGUgZG93biBmcmVxICovDQo+ID4+ICtydGVfcG93ZXJfZnJl
cV9taW4ocnRlX2xjb3JlX2lkKCkpOw0KPiA+PiArDQo+ID4+ICt9DQo+ID4+ICt9IGVsc2Ugew0K
PiA+PiArcV9jb25mLT5lbXB0eV9wb2xsX3N0YXRzID0gMDsNCj4gPj4gKy8qIHNjYWwgdXAgZnJl
cSAqLw0KPiA+PiArcnRlX3Bvd2VyX2ZyZXFfbWF4KHJ0ZV9sY29yZV9pZCgpKTsNCj4gPj4gK30N
Cj4gPj4gKw0KPiA+PiArcmV0dXJuIG5iX3J4Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4NCj4gPiBQ
cm9iYWJseSB3b3J0aCB0byBtZW50aW9uIGluIGNvbW1lbnRzIHRoYXQgdGhlc2UgZnVuY3Rpb25z
IGVuYWJsZS9kaXNhYmxlDQo+ID4gYXJlIG5vdCBNVCBzYWZlLg0KPiANCj4gV2lsbCBkbyBpbiB2
Ni4NCj4gDQo+ID4NCj4gPj4gK2ludA0KPiA+PiArcnRlX3Bvd2VyX3BtZF9tZ210X3F1ZXVlX2Vu
YWJsZSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQsDQo+ID4+ICt1aW50MTZfdCBwb3J0X2lkLA0KPiA+
PiArdWludDE2X3QgcXVldWVfaWQsDQo+ID4+ICtlbnVtIHJ0ZV9wb3dlcl9wbWRfbWdtdF90eXBl
IG1vZGUpDQo+ID4+ICt7DQo+ID4+ICtzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPj4gK3N0
cnVjdCBwbWRfcXVldWVfY2ZnICpxdWV1ZV9jZmc7DQo+ID4+ICtpbnQgcmV0ID0gMDsNCj4gPj4g
Kw0KPiA+PiArUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVChwb3J0X2lkLCAtRUlOVkFM
KTsNCj4gPj4gK2RldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4+ICsNCj4gPj4g
K2lmIChwb3J0X2NmZ1twb3J0X2lkXS5xdWV1ZV9jZmcgPT0gTlVMTCkgew0KPiA+PiArcG9ydF9j
ZmdbcG9ydF9pZF0ucmVmX2NudCA9IDA7DQo+ID4+ICsvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIGVt
cHR5IHBvbGwgc3RhdHMgKi8NCj4gPj4gK3BvcnRfY2ZnW3BvcnRfaWRdLnF1ZXVlX2NmZyAgPSBy
dGVfbWFsbG9jX3NvY2tldChOVUxMLA0KPiA+PiArc2l6ZW9mKHN0cnVjdCBwbWRfcXVldWVfY2Zn
KQ0KPiA+PiArKiBSVEVfTUFYX1FVRVVFU19QRVJfUE9SVCwNCj4gPj4gKzAsIGRldi0+ZGF0YS0+
bnVtYV9ub2RlKTsNCj4gPj4gK2lmIChwb3J0X2NmZ1twb3J0X2lkXS5xdWV1ZV9jZmcgPT0gTlVM
TCkNCj4gPj4gK3JldHVybiAtRU5PTUVNOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtxdWV1ZV9j
ZmcgPSAmcG9ydF9jZmdbcG9ydF9pZF0ucXVldWVfY2ZnW3F1ZXVlX2lkXTsNCj4gPj4gKw0KPiA+
PiAraWYgKHF1ZXVlX2NmZy0+cHdyX21nbXRfc3RhdGUgPT0gUE1EX01HTVRfRU5BQkxFRCkgew0K
PiA+PiArcmV0ID0gLUVJTlZBTDsNCj4gPj4gK2dvdG8gZmFpbHVyZV9oYW5kbGVyOw0KPiA+PiAr
fQ0KPiA+PiArDQo+ID4+ICtzd2l0Y2ggKG1vZGUpIHsNCj4gPj4gK2Nhc2UgUlRFX1BPV0VSX01H
TVRfVFlQRV9XQUlUOg0KPiA+PiAraWYgKCFydGVfY3B1X2dldF9mbGFnX2VuYWJsZWQoUlRFX0NQ
VUZMQUdfV0FJVFBLRykpIHsNCj4gPj4gK3JldCA9IC1FTk9UU1VQOw0KPiA+PiArZ290byBmYWls
dXJlX2hhbmRsZXI7DQo+ID4+ICt9DQo+ID4+ICtxdWV1ZV9jZmctPmN1cl9jYiA9IHJ0ZV9ldGhf
YWRkX3J4X2NhbGxiYWNrKHBvcnRfaWQsIHF1ZXVlX2lkLA0KPiA+PiArcnRlX3Bvd2VyX21nbXRf
dW13YWl0LCBOVUxMKTsNCj4gPj4gK2JyZWFrOw0KPiA+PiArY2FzZSBSVEVfUE9XRVJfTUdNVF9U
WVBFX1NDQUxFOg0KPiA+PiArLyogaW5pdCBzY2FsZSBmcmVxICovDQo+ID4+ICtpZiAocnRlX3Bv
d2VyX2luaXQobGNvcmVfaWQpKSB7DQo+ID4+ICtyZXQgPSAtRUlOVkFMOw0KPiA+PiArZ290byBm
YWlsdXJlX2hhbmRsZXI7DQo+ID4+ICt9DQo+ID4+ICtxdWV1ZV9jZmctPmN1cl9jYiA9IHJ0ZV9l
dGhfYWRkX3J4X2NhbGxiYWNrKHBvcnRfaWQsIHF1ZXVlX2lkLA0KPiA+PiArcnRlX3Bvd2VyX21n
bXRfc2NhbGVmcmVxLCBOVUxMKTsNCj4gPj4gK2JyZWFrOw0KPiA+PiArY2FzZSBSVEVfUE9XRVJf
TUdNVF9UWVBFX1BBVVNFOg0KPiA+PiArcXVldWVfY2ZnLT5jdXJfY2IgPSBydGVfZXRoX2FkZF9y
eF9jYWxsYmFjayhwb3J0X2lkLCBxdWV1ZV9pZCwNCj4gPj4gK3J0ZV9wb3dlcl9tZ210X3BhdXNl
LCBOVUxMKTsNCj4gPj4gK2JyZWFrOw0KPiA+DQo+ID4gZGVmYXVsdDoNCj4gPiAuLi4uDQo+IA0K
PiBXaWxsIGFkZCBpbiB2Ni4NCj4gDQo+ID4NCj4gPj4gK30NCj4gPj4gK3F1ZXVlX2NmZy0+Y2Jf
bW9kZSA9IG1vZGU7DQo+ID4+ICtwb3J0X2NmZ1twb3J0X2lkXS5yZWZfY250Kys7DQo+ID4+ICtx
dWV1ZV9jZmctPnB3cl9tZ210X3N0YXRlID0gUE1EX01HTVRfRU5BQkxFRDsNCj4gPj4gK3JldHVy
biByZXQ7DQo+ID4+ICsNCj4gPj4gK2ZhaWx1cmVfaGFuZGxlcjoNCj4gPj4gK2lmIChwb3J0X2Nm
Z1twb3J0X2lkXS5yZWZfY250ID09IDApIHsNCj4gPj4gK3J0ZV9mcmVlKHBvcnRfY2ZnW3BvcnRf
aWRdLnF1ZXVlX2NmZyk7DQo+ID4+ICtwb3J0X2NmZ1twb3J0X2lkXS5xdWV1ZV9jZmcgPSBOVUxM
Ow0KPiA+PiArfQ0KPiA+PiArcmV0dXJuIHJldDsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiAraW50
DQo+ID4+ICtydGVfcG93ZXJfcG1kX21nbXRfcXVldWVfZGlzYWJsZSh1bnNpZ25lZCBpbnQgbGNv
cmVfaWQsDQo+ID4+ICt1aW50MTZfdCBwb3J0X2lkLA0KPiA+PiArdWludDE2X3QgcXVldWVfaWQp
DQo+ID4+ICt7DQo+ID4+ICtzdHJ1Y3QgcG1kX3F1ZXVlX2NmZyAqcXVldWVfY2ZnOw0KPiA+PiAr
DQo+ID4+ICtpZiAocG9ydF9jZmdbcG9ydF9pZF0ucmVmX2NudCA8PSAwKQ0KPiA+PiArcmV0dXJu
IC1FSU5WQUw7DQo+ID4+ICsNCj4gPj4gK3F1ZXVlX2NmZyA9ICZwb3J0X2NmZ1twb3J0X2lkXS5x
dWV1ZV9jZmdbcXVldWVfaWRdOw0KPiA+PiArDQo+ID4+ICtpZiAocXVldWVfY2ZnLT5wd3JfbWdt
dF9zdGF0ZSA9PSBQTURfTUdNVF9ESVNBQkxFRCkNCj4gPj4gK3JldHVybiAtRUlOVkFMOw0KPiA+
PiArDQo+ID4+ICtzd2l0Y2ggKHF1ZXVlX2NmZy0+Y2JfbW9kZSkgew0KPiA+PiArY2FzZSBSVEVf
UE9XRVJfTUdNVF9UWVBFX1dBSVQ6DQo+ID4NCj4gPiBUaGluayB3ZSBuZWVkIHdha2V1cChsY29y
ZV9pZCkgaGVyZS4NCj4gDQo+IE5vdCBzdXJlIHdoYXQgeW91IG1lYW4/IENvdWxkIHlvdSBwbGVh
c2UgZWxhYm9yYXRlPw0KPiANCj4gPg0KPiA+PiArY2FzZSBSVEVfUE9XRVJfTUdNVF9UWVBFX1BB
VVNFOg0KPiA+PiArcnRlX2V0aF9yZW1vdmVfcnhfY2FsbGJhY2socG9ydF9pZCwgcXVldWVfaWQs
DQo+ID4+ICsgICBxdWV1ZV9jZmctPmN1cl9jYik7DQo+ID4+ICticmVhazsNCj4gPj4gK2Nhc2Ug
UlRFX1BPV0VSX01HTVRfVFlQRV9TQ0FMRToNCj4gPj4gK3J0ZV9wb3dlcl9mcmVxX21heChsY29y
ZV9pZCk7DQo+ID4+ICtydGVfZXRoX3JlbW92ZV9yeF9jYWxsYmFjayhwb3J0X2lkLCBxdWV1ZV9p
ZCwNCj4gPj4gKyAgIHF1ZXVlX2NmZy0+Y3VyX2NiKTsNCj4gPj4gK3J0ZV9wb3dlcl9leGl0KGxj
b3JlX2lkKTsNCj4gPj4gK2JyZWFrOw0KPiA+PiArfQ0KPiA+PiArLyogaXQncyBub3QgcmVjb21t
ZW5kIHRvIGZyZWUgY2FsbGJhY2sgaW5zdGFuY2UgaGVyZS4NCj4gPj4gKyAqIGl0IGNhdXNlIG1l
bW9yeSBsZWFrIHdoaWNoIGlzIGEga25vd24gaXNzdWUuDQo+ID4+ICsgKi8NCj4gPj4gK3F1ZXVl
X2NmZy0+Y3VyX2NiID0gTlVMTDsNCj4gPj4gK3F1ZXVlX2NmZy0+cHdyX21nbXRfc3RhdGUgPSBQ
TURfTUdNVF9ESVNBQkxFRDsNCj4gPj4gK3BvcnRfY2ZnW3BvcnRfaWRdLnJlZl9jbnQtLTsNCj4g
Pj4gKw0KPiA+PiAraWYgKHBvcnRfY2ZnW3BvcnRfaWRdLnJlZl9jbnQgPT0gMCkgew0KPiA+PiAr
cnRlX2ZyZWUocG9ydF9jZmdbcG9ydF9pZF0ucXVldWVfY2ZnKTsNCj4gPg0KPiA+IEl0IGlzIG5v
dCBzYWZlIHRvIGRvIHNvLCB1bmxlc3MgZGV2aWNlIGlzIGFscmVhZHkgc3RvcHBlZC4NCj4gPiBP
dGhlcndpc2UgeW91IG5lZWQgc29tZSBzeW5jIG1lY2hhbmlzbSBoZXJlIChoYW5kLW1hZGUgYXMg
YnBmIGxpYiwgb3IgcmN1IG9ubGluZS9vZmZsaW5lLCBvci4uLikNCj4gDQo+IE5vdCBzdXJlIHdo
YXQgeW91IG1lYW4uIFdlJ3JlIG5vdCBmcmVlaW5nIHRoZSBjYWxsYmFjayBzdHJ1Y3R1cmUsIHdl
J3JlDQo+IGZyZWVpbmcgdGhlIGxvY2FsIGRhdGEgc3RydWN0dXJlIGhvbGRpbmcgdGhlIHBlci1w
b3J0IHN0YXR1cy4NCg0KV2hhdCBpcyB0aGUgZGlmZmVyZW5jZT8NCllvdSBzdGlsbCB0cnlpbmcg
dG8gZnJlZSBtZW1vcnkgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IHlvdXIgRFAgdGhyZWFkDQp0aGF0
IHN0aWxsIGV4ZWN1dGVzIHRoZSBjYWxsYmFjay4NCg0KPiANCj4gPg0KPiA+PiArcG9ydF9jZmdb
cG9ydF9pZF0ucXVldWVfY2ZnID0gTlVMTDsNCj4gPj4gK30NCj4gPj4gK3JldHVybiAwOw0KPiA+
PiArfQ0KPiANCj4gDQo+IC0tDQo+IFRoYW5rcywNCj4gQW5hdG9seQ0K