Re: [PATCH 3/3] arm64: cpuidle: Add arm_poll_idle

"Okanovic, Haris" <[email protected]> Fri, 5 Apr 2024 20:05:45 +0000
Newsgroups gmane.linux.assembly,gmane.linux.power-management.general,gmane.linux.kernel
Message-ID <[email protected]>
T24gVHVlLCAyMDI0LTA0LTAyIGF0IDE4OjIzICswMTAwLCBNYXJrIFJ1dGxhbmQgd3JvdGU6DQo+
IENBVVRJT046IFRoaXMgZW1haWwgb3JpZ2luYXRlZCBmcm9tIG91dHNpZGUgb2YgdGhlIG9yZ2Fu
aXphdGlvbi4gRG8NCj4gbm90IGNsaWNrIGxpbmtzIG9yIG9wZW4gYXR0YWNobWVudHMgdW5sZXNz
IHlvdSBjYW4gY29uZmlybSB0aGUgc2VuZGVyDQo+IGFuZCBrbm93IHRoZSBjb250ZW50IGlzIHNh
ZmUuDQo+IA0KPiANCj4gDQo+IE9uIE1vbiwgQXByIDAxLCAyMDI0IGF0IDA4OjQ3OjA2UE0gLTA1
MDAsIEhhcmlzIE9rYW5vdmljIHdyb3RlOg0KPiA+IEFuIGFybTY0IGNwdWlkbGUgZHJpdmVyIHdp
dGggdHdvIHN0YXRlczogKDEpIEZpcnN0IHBvbGxzIGZvciBuZXcNCj4gPiBydW5hYmxlDQo+ID4g
dGFza3MgdXAgdG8gMTAwIHVzIChieSBkZWZhdWx0KSBiZWZvcmUgKDIpIGEgd2ZpIGlkbGUgYW5k
IGF3b2tlbiBieQ0KPiA+IGludGVycnVwdCAodGhlIGN1cnJlbnQgYXJtNjQgYmVoYXZpb3IpLiBJ
dCBhbGxvd3MgQ1BVcyB0byByZXR1cm4NCj4gPiBmcm9tDQo+ID4gaWRsZSBtb3JlIHF1aWNrbHkg
YnkgYXZvaWRpbmcgdGhlIGxvbmdlciBpbnRlcnJ1cHQgd2FrZXVwIHBhdGgsDQo+ID4gd2hpY2gN
Cj4gPiBtYXkgcmVxdWlyZSBFTDEvRUwyIHRyYW5zaXRpb24gaW4gY2VydGFpbiBWTSBzY2VuYXJp
b3MuDQo+IA0KPiBQbGVhc2Ugc3RhcnQgb2ZmIHdpdGggYW4gZXhwbGFuYXRpb24gb2YgdGhlIHBy
b2JsZW0geW91J3JlIHRyeWluZyB0bw0KPiBzb2x2ZQ0KPiAod2hpY2ggSUlVQyBpcyB0byB3YWtl
IHVwIG1vcmUgcXVpY2tseSBpbiBjZXJ0YWluIGNhc2VzKSwgYmVmb3JlDQo+IGRlc2NyaWJpbmcg
dGhlDQo+IHNvbHV0aW9uLiBUaGF0IG1ha2VzIGl0ICpzaWduaWZpY2FudGx5KiBlYXNpZXIgZm9y
IHBlb3BsZSB0byByZXZpZXcNCj4gdGhpcywgc2luY2UNCj4gb25jZSB5b3UgaGF2ZSB0aGUgcHJv
YmxlbSBzdGF0ZW1lbnQgaW4gbWluZCBpdCdzIG11Y2ggZWFzaWVyIHRvDQo+IHVuZGVyc3RhbmQg
aG93DQo+IHRoZSBzb2x1dGlvbiBzcGFjZSBmb2xsb3dzIGZyb20gdGhhdC4NCg0KSGkgTWFyaywN
Cg0KSSdsbCB0cnkgdG8gY2xhcmlmeToNCg0KVGhpcyBjaGFuZ2UgaW1wcm92ZXMgcGVyZm9ybWFu
Y2Ugb2YgY2VydGFpbiBtdWx0aXRocmVhZGVkIHdvcmtsb2Fkcw0KdGhhdCByYXBpZGx5IGN5Y2xl
cyB0aHJvdWdoIGJsb2NrZWQvcnVubmluZyBzdGF0ZXMsIGJ5IGF2b2lkaW5nIGENCnJlbGF0aXZl
bHkgY29zdGx5IElQSSB3YWtldXAgcGF0aC4NCg0KT25lIGV4YW1wbGUgaXMgVGVuc29yZmxvdyBh
cyBkZW1vbnN0YXRlZCBieSB0aGUgYmVuY2htYXJrIHNoYXJlZA0KZWFybGllci4gSXQgZ2VuZXJh
dGVzIDI1MGsgcmVzY2hlZHVsZSBJUElzIHBlciBzZWMgb24gQVdTIG03Zy4xNnhsYXJnZQ0KKEdy
YXZpdG9uMyBTb0MpIGluIExpbnV4IDYuOS4wLXJjMiwgd2hpY2ggZHJvcHMgdG8gMTIway9zZWMg
d2l0aCB0aGlzDQpjaGFuZ2UgYW5kIGEgfjMlIGdhaW4gaW4gdGhyb3VnaHB1dC4NCg0KU29tZSBK
YXZhIHdvcmtsb2FkcyBoYXZlIGEgc2ltaWxhciBwYXR0ZXJuLiBGb3IgZXhhbXBsZSwgUmVuaXNz
YW5jZQ0KUmVhY3RvcnMgYmVuY2htYXJrIChSZWFjdG9ycy5JTyBmcmFtZXdvcmsgYXBwKSBkcm9w
cyBmcm9tIDM3MGsgdG8gODBrDQpJUElzIGFuZCBzZWVzIGEgfjI1JSBsYXRlbmN5IGRyb3AuDQoN
ClJlbmlzc2FuY2UgUmVhY3RvcnMgcmVwcm8gc3RlcHMgb24gVWJ1bnR1IDIyLjA0IG9uIEFXUzoN
CnN1ZG8gYXB0LWdldCBpbnN0YWxsIGphdmEtY29tbW9uDQp3Z2V0DQpodHRwczovL2NvcnJldHRv
LmF3cy9kb3dubG9hZHMvbGF0ZXN0L2FtYXpvbi1jb3JyZXR0by0xNy1hYXJjaDY0LWxpbnV4LWpk
ay5kZWINCnN1ZG8gZHBrZyAtaSBhbWF6b24tY29ycmV0dG8tMTctYWFyY2g2NC1saW51eC1qZGsu
ZGViDQp3Z2V0DQpodHRwczovL2dpdGh1Yi5jb20vcmVuYWlzc2FuY2UtYmVuY2htYXJrcy9yZW5h
aXNzYW5jZS9yZWxlYXNlcy9kb3dubG9hZC92MC4xNS4wL3JlbmFpc3NhbmNlLWdwbC0wLjE1LjAu
amFyDQpqYXZhIC1qYXIgcmVuYWlzc2FuY2UtZ3BsLTAuMTUuMC5qYXIgcmVhY3RvcnMg4oCUcmVw
ZXRpdGlvbnMgMQ0KDQo+IA0KPiA+IFBvbGwgZHVyYXRpb24gaXMgb3B0aW9uYWxseSBjb25maWd1
cmVkIGF0IGxvYWQgdGltZSB2aWEgdGhlDQo+ID4gcG9sbF9saW1pdA0KPiA+IG1vZHVsZSBwYXJh
bWV0ZXIuDQo+IA0KPiBXaHkgc2hvdWxkIHRoaXMgYmUgYSBjb25maWd1cmFibGUgcGFyYW1ldGVy
Pw0KPiANCj4gKG5vdGUsIGF0IHRoaXMgcG9pbnQgeW91IGhhdmVuJ3QgaW50cm9kdWNlZCBhbnkg
b2YgdGhlIGRhdGEgYmVsb3csIHNvDQo+IHRoZQ0KPiB0cmFkZS1vZmYgaXNuJ3QgY2xlYXIgdG8g
YW55b25lKS4NCg0KU29tZSBhcHBsaWNhdGlvbnMgY291bGQgaW1wcm92ZSB3aXRoIGhpZ2hlciBw
b2xsIHBlcmlvZHMuIEZvciBleGFtcGxlLA0KVGVuc29yZmxvdyB0aHJvdWdocHV0IGltcHJvdmVz
IH4zJSBhdCBhIDEwMHVzKyBwb2xsIGxpbWl0IGFuZCB+MSUgYXQNCjEwdXMgbGltaXQuIEEgY29u
ZmlndXJhYmxlIGtub2IgYWxsb3dzIHVzZXJzIHRvIGV4cGVyaW1lbnQgbW9yZSBlYXNpbHkuDQoN
ClRoZXJl4oCZcyBhbHNvIG5vIHBlcmZvcm1hbmNlIHBlbmF0bHkgZm9yIGhhdmluZyB0aGUgb3B0
aW9uLiBOZXcgdmFsdWVzDQphcmUgcGF0Y2hlZCBkdXJpbmcgbG9hZCBhbmQgYWxsIG90aGVyIGNv
ZGUgcGF0aHMgcmVtYWluIHRoZSBzYW1lLg0KDQo+IA0KPiA+IFRoZSBkZWZhdWx0IDEwMCB1cyBk
dXJhdGlvbiB3YXMgZXhwZXJpbWVudGFsbHkgY2hvc2VuLCBieSBtZWFzdXJpbmcNCj4gPiBRUFMN
Cj4gPiAocXVlcmllcyBwZXIgc2VjKSBvZiB0aGUgTUxQZXJmIGJlcnQgaW5mZXJlbmNlIGJlbmNo
bWFyaywgd2hpY2gNCj4gPiBzZWVtcw0KPiA+IHBhcnRpY3VsYXJseSBzdXNjZXB0aWJsZSB0byB0
aGlzIGNoYW5nZTsgc2VlIHByb2NlZHVyZSBiZWxvdy4gMTAwDQo+ID4gdXMgaXMNCj4gPiB0aGUg
aW5mbGVjdGlvbiBwb2ludCB3aGVyZSBRUFMgc3RvcHBlZCBncm93aW5nIGluIGEgcmFuZ2Ugb2Yg
dGVzdGVkDQo+ID4gdmFsdWVzLiBBbGwgcmVzdWx0cyBhcmUgZnJvbSBBV1MgbTdnLjE2eGxhcmdl
IGluc3RhbmNlcyAoR3Jhdml0b24zDQo+ID4gU29DKQ0KPiA+IHdpdGggZGVkaWNhdGVkIHRlbmFu
Y3kgKGRlZGljYXRlZCBoYXJkd2FyZSkuDQo+ID4gDQo+ID4gPiBiZWZvcmUgfCAxMHVzwqAgfCAy
NXVzIHwgNTB1cyB8IDEwMHVzIHwgMTI1dXMgfCAxNTB1cyB8IDIwMHVzIHwNCj4gPiA+IDMwMHVz
IHwNCj4gPiA+IDUuODfCoMKgIHwgNS45McKgIHwgNS45NiB8IDYuMDEgfCA2LjA2wqAgfCA2LjA3
wqAgfCA2LjA2wqAgfCA2LjA2wqAgfA0KPiA+ID4gNi4wNsKgIHwNCj4gPiANCj4gPiBQZXJmJ3Mg
c2NoZWR1bGVyIGJlbmNobWFya3MgYWxzbyBpbXByb3ZlIHdpdGggYSByYW5nZSBvZiBwb2xsX2xp
bWl0DQo+ID4gdmFsdWVzID49IDEwIHVzLiBIaWdoZXIgbGltaXRzIHByb2R1Y2UgbmVhciBpZGVu
dGljYWwgcmVzdWx0cw0KPiA+IHdpdGhpbiBhDQo+ID4gMyUgbm9pc2UgbWFyZ2luLiBUaGUgZm9s
bG93aW5nIHRhYmxlcyBhcmUgYHBlcmYgYmVuY2ggc2NoZWRgDQo+ID4gcmVzdWx0cywNCj4gPiBy
dW4gdGltZXMgaW4gc2Vjb25kcy4NCj4gPiANCj4gPiBgcGVyZiBiZW5jaCBzY2hlZCBtZXNzYWdp
bmcgLWwgODAwMDBgDQo+ID4gPiBBV1MgaW5zdGFuY2XCoCB8IFNvQ8KgwqDCoMKgwqDCoCB8IEJl
Zm9yZSB8IEFmdGVywqAgfCAlIENoYW5nZSB8DQo+ID4gPiBjNmcuMTZ4bCAoVk0pIHwgR3Jhdml0
b24yIHwgMTguOTc0IHwgMTguNDAwIHwgbm9uZcKgwqDCoMKgIHwNCj4gPiA+IGM3Zy4xNnhsIChW
TSkgfCBHcmF2aXRvbjMgfCAxMy44NTIgfCAxMy44NTkgfCBub25lwqDCoMKgwqAgfA0KPiA+ID4g
YzZnLm1ldGFswqDCoMKgwqAgfCBHcmF2aXRvbjIgfCAxNy42MjEgfCAxNi43NDQgfCBub25lwqDC
oMKgwqAgfA0KPiA+ID4gYzdnLm1ldGFswqDCoMKgwqAgfCBHcmF2aXRvbjMgfCAxMy40MzAgfCAx
My40MDQgfCBub25lwqDCoMKgwqAgfA0KPiA+IA0KPiA+IGBwZXJmIGJlbmNoIHNjaGVkIHBpcGUg
LWwgMjUwMDAwMGANCj4gPiA+IEFXUyBpbnN0YW5jZcKgIHwgU29DwqDCoMKgwqDCoMKgIHwgQmVm
b3JlIHwgQWZ0ZXLCoCB8ICUgQ2hhbmdlIHwNCj4gPiA+IGM2Zy4xNnhsIChWTSkgfCBHcmF2aXRv
bjIgfCAzMC4xNTggfCAxNS4xODEgfCAtNTAlwqDCoMKgwqAgfA0KPiA+ID4gYzdnLjE2eGwgKFZN
KSB8IEdyYXZpdG9uMyB8IDE4LjI4OSB8IDEyLjA2NyB8IC0zNCXCoMKgwqDCoCB8DQo+ID4gPiBj
NmcubWV0YWzCoMKgwqDCoCB8IEdyYXZpdG9uMiB8IDE3LjYwOSB8IDE1LjE3MCB8IC0xNCXCoMKg
wqDCoCB8DQo+ID4gPiBjN2cubWV0YWzCoMKgwqDCoCB8IEdyYXZpdG9uMyB8IDE0LjEwMyB8IDEy
LjMwNCB8IC0xMyXCoMKgwqDCoCB8DQo+ID4gDQo+ID4gYHBlcmYgYmVuY2ggc2NoZWQgc2VjY29t
cC1ub3RpZnkgLWwgMjUwMDAwMGANCj4gPiA+IEFXUyBpbnN0YW5jZcKgIHwgU29DwqDCoMKgwqDC
oMKgIHwgQmVmb3JlIHwgQWZ0ZXLCoCB8ICUgQ2hhbmdlIHwNCj4gPiA+IGM2Zy4xNnhsIChWTSkg
fCBHcmF2aXRvbjIgfCAyOC43ODQgfCAxMy43NTQgfCAtNTIlwqDCoMKgwqAgfA0KPiA+ID4gYzdn
LjE2eGwgKFZNKSB8IEdyYXZpdG9uMyB8IDE2Ljk2NCB8IDExLjQzMCB8IC0zMyXCoMKgwqDCoCB8
DQo+ID4gPiBjNmcubWV0YWzCoMKgwqDCoCB8IEdyYXZpdG9uMiB8IDE1LjcxNyB8IDEzLjUzNiB8
IC0xNCXCoMKgwqDCoCB8DQo+ID4gPiBjN2cubWV0YWzCoMKgwqDCoCB8IEdyYXZpdG9uMyB8IDEz
LjMwMSB8IDExLjQ5MSB8IC0xNCXCoMKgwqDCoCB8DQo+IA0KPiBPaywgc28gcGVyZiBudW1iZXJz
IGZvciBhIGJ1c3kgd29ya2xvYWQgZ28gdXAuDQo+IA0KPiBXaGF0IGhhcHBlbnMgZm9yIGlkbGUg
c3RhdGUgcmVzaWRlbmN5IG9uIGEgbW9zdGx5IGlkbGUgc3lzdGVtPw0KDQpJdCBkZWNyZWFzZXMg
YnkgYWJvdXQgMC4wMDUlIG9uIEFXUyBtN2cuMTZ4bGFyZ2UgKEdyYXZpdG9uMyBTb0MpLg0KDQo+
IA0KPiA+IFN0ZXBzIHRvIHJ1biBNTFBlcmYgYmVydCBpbmZlcmVuY2Ugb24gVWJ1bnR1IDIyLjA0
Og0KPiA+IMKgc3VkbyBhcHQgaW5zdGFsbCBidWlsZC1lc3NlbnRpYWwgcHl0aG9uMyBweXRob24z
LXBpcA0KPiA+IMKgcGlwIGluc3RhbGwgInB5YmluZDExW2dsb2JhbF0iIHRlbnNvcmZsb3fCoCB0
cmFuc2Zvcm1lcnMNCj4gPiDCoGV4cG9ydCBURl9FTkFCTEVfT05FRE5OX09QVFM9MQ0KPiA+IMKg
ZXhwb3J0IEROTkxfREVGQVVMVF9GUE1BVEhfTU9ERT1CRjE2DQo+ID4gwqBnaXQgY2xvbmUgaHR0
cHM6Ly9naXRodWIuY29tL21sY29tbW9ucy9pbmZlcmVuY2UuZ2l0wqAtLXJlY3Vyc2l2ZQ0KPiA+
IMKgY2QgaW5mZXJlbmNlDQo+ID4gwqBnaXQgY2hlY2tvdXQgdjIuMA0KPiA+IMKgY2QgbG9hZGdl
bg0KPiA+IMKgQ0ZMQUdTPSItc3RkPWMrKzE0IiBweXRob24zIHNldHVwLnB5IGJkaXN0X3doZWVs
DQo+ID4gwqBwaXAgaW5zdGFsbCBkaXN0Lyoud2hsDQo+ID4gwqBjZCAuLi9sYW5ndWFnZS9iZXJ0
DQo+ID4gwqBtYWtlIHNldHVwDQo+ID4gwqBweXRob24zIHJ1bi5weSAtLWJhY2tlbmQ9dGYgLS1z
Y2VuYXJpbz1TaW5nbGVTdHJlYW0NCj4gPiANCj4gPiBTdWdnZXN0ZWQtYnk6IEFsaSBTYWlkaSA8
YWxpc2FpZGlAYW1hem9uLmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogQWxpIFNhaWRpIDxhbGlzYWlk
aUBhbWF6b24uY29tPg0KPiA+IFJldmlld2VkLWJ5OiBHZW9mZiBCbGFrZSA8Ymxha2dlb2ZAYW1h
em9uLmNvbT4NCj4gPiBDYzogQnJpYW4gU2lsdmVyIDxzaWx2ZXJickBhbWF6b24uY29tPg0KPiA+
IFNpZ25lZC1vZmYtYnk6IEhhcmlzIE9rYW5vdmljIDxoYXJpc29rbkBhbWF6b24uY29tPg0KPiA+
IC0tLQ0KPiA+IMKgZHJpdmVycy9jcHVpZGxlL0tjb25maWcuYXJtwqDCoMKgwqDCoMKgwqDCoMKg
wqAgfMKgIDEzICsrDQo+ID4gwqBkcml2ZXJzL2NwdWlkbGUvTWFrZWZpbGXCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCB8wqDCoCAxICsNCj4gPiDCoGRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWFy
bS1wb2xsaW5nLmMgfCAxNzENCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+IMKg
MyBmaWxlcyBjaGFuZ2VkLCAxODUgaW5zZXJ0aW9ucygrKQ0KPiA+IMKgY3JlYXRlIG1vZGUgMTAw
NjQ0IGRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWFybS1wb2xsaW5nLmMNCj4gPiANCj4gPiBkaWZm
IC0tZ2l0IGEvZHJpdmVycy9jcHVpZGxlL0tjb25maWcuYXJtDQo+ID4gYi9kcml2ZXJzL2NwdWlk
bGUvS2NvbmZpZy5hcm0NCj4gPiBpbmRleCBhMWVlNDc1ZDE4MGQuLjQ4NDY2NmRkYTM4ZCAxMDA2
NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy5hcm0NCj4gPiArKysgYi9kcml2
ZXJzL2NwdWlkbGUvS2NvbmZpZy5hcm0NCj4gPiBAQCAtMTQsNiArMTQsMTkgQEAgY29uZmlnIEFS
TV9DUFVJRExFDQo+ID4gwqDCoMKgwqDCoMKgwqAgaW5pdGlhbGl6ZWQgYnkgY2FsbGluZyB0aGUg
Q1BVIG9wZXJhdGlvbnMgaW5pdCBpZGxlIGhvb2sNCj4gPiDCoMKgwqDCoMKgwqDCoCBwcm92aWRl
ZCBieSBhcmNoaXRlY3R1cmUgY29kZS4NCj4gPiANCj4gPiArY29uZmlnIEFSTV9QT0xMX0NQVUlE
TEUNCj4gPiArwqDCoMKgwqAgYm9vbCAiQVJNNjQgQ1BVIGlkbGUgRHJpdmVyIHdpdGggcG9sbGlu
ZyINCj4gPiArwqDCoMKgwqAgZGVwZW5kcyBvbiBBUk02NA0KPiA+ICvCoMKgwqDCoCBkZXBlbmRz
IG9uIEFSTV9BUkNIX1RJTUVSX0VWVFNUUkVBTQ0KPiA+ICvCoMKgwqDCoCBzZWxlY3QgQ1BVX0lE
TEVfTVVMVElQTEVfRFJJVkVSUw0KPiA+ICvCoMKgwqDCoCBoZWxwDQo+ID4gK8KgwqDCoMKgwqDC
oCBTZWxlY3QgdGhpcyB0byBlbmFibGUgYSBwb2xsaW5nIGNwdWlkbGUgZHJpdmVyIGZvciBBUk02
NDoNCj4gPiArwqDCoMKgwqDCoMKgIFRoZSBmaXJzdCBzdGF0ZSBwb2xscyBUSUZfTkVFRF9SRVND
SEVEIGZvciBiZXN0IGxhdGVuY3kgb24NCj4gPiBzaG9ydA0KPiA+ICvCoMKgwqDCoMKgwqAgc2xl
ZXAgaW50ZXJ2YWxzLiBUaGUgc2Vjb25kIHN0YXRlIGZhbGxzIGJhY2sgdG8NCj4gPiBhcmNoX2Nw
dV9pZGxlKCkgdG8NCj4gPiArwqDCoMKgwqDCoMKgIHdhaXQgZm9yIGludGVycnVwdC4gVGhpcyBp
cyBjYW4gYmUgaGVscGZ1bCBpbiB3b3JrbG9hZHMNCj4gPiB0aGF0DQo+ID4gK8KgwqDCoMKgwqDC
oCBmcmVxdWVudGx5IGJsb2NrL3dha2UgYXQgc2hvcnQgaW50ZXJ2YWxzIG9yIFZNcyB3aGVyZQ0K
PiA+IHdha2V1cCBJUElzDQo+ID4gK8KgwqDCoMKgwqDCoCBhcmUgbW9yZSBleHBlbnNpdmUuDQo+
IA0KPiBXaHkgaXMgdGhpcyBhIHNlcGFyYXRlIGRyaXZlciByYXRoZXIgdGhhbiBhbiBvcHRpb25h
bCBmZWF0dXJlIGluIHRoZQ0KPiBleGlzdGluZw0KPiBkcml2ZXI/DQo+IA0KPiBUaGUgZmFjdCB0
aGF0IHRoaXMgZHVwbGljYXRlcyBhIGJ1bmNoIG9mIGNvZGUgaW5kaWNhdGVzIHRvIG1lIHRoYXQN
Cj4gdGhpcyBzaG91bGQNCj4gbm90IGJlIGEgc2VwYXJhdGUgZHJpdmVyLg0KDQpJJ2xsIGV4cGxv
cmUgdXNpbmcgQW5rdXIgQXJvcmHigJlzIGhhbHRwb2xsIGNoYW5nZXMgb24gQVdTIEdyYXZpdG9u
OyBzZWUNCnJlbGF0ZWQgdGhyZWFkLg0KDQo+IA0KPiA+ICsNCj4gPiDCoGNvbmZpZyBBUk1fUFND
SV9DUFVJRExFDQo+ID4gwqDCoMKgwqDCoCBib29sICJQU0NJIENQVSBpZGxlIERyaXZlciINCj4g
PiDCoMKgwqDCoMKgIGRlcGVuZHMgb24gQVJNX1BTQ0lfRlcNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp
dmVycy9jcHVpZGxlL01ha2VmaWxlIGIvZHJpdmVycy9jcHVpZGxlL01ha2VmaWxlDQo+ID4gaW5k
ZXggZDEwMzM0MmI3Y2ZjLi4yM2MyMTQyMjc5MmQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9j
cHVpZGxlL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9jcHVpZGxlL01ha2VmaWxlDQo+ID4g
QEAgLTIyLDYgKzIyLDcgQEAgb2JqLSQoQ09ORklHX0FSTV9VODUwMF9DUFVJRExFKcKgwqDCoMKg
wqDCoMKgwqAgKz0NCj4gPiBjcHVpZGxlLXV4NTAwLm8NCj4gPiDCoG9iai0kKENPTkZJR19BUk1f
QVQ5MV9DUFVJRExFKcKgwqDCoMKgwqDCoMKgwqDCoCArPSBjcHVpZGxlLWF0OTEubw0KPiA+IMKg
b2JqLSQoQ09ORklHX0FSTV9FWFlOT1NfQ1BVSURMRSnCoMKgwqDCoMKgwqDCoCArPSBjcHVpZGxl
LWV4eW5vcy5vDQo+ID4gwqBvYmotJChDT05GSUdfQVJNX0NQVUlETEUpwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCArPSBjcHVpZGxlLWFybS5vDQo+ID4gK29iai0kKENPTkZJR19BUk1fUE9MTF9DUFVJ
RExFKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKz0gY3B1aWRsZS1hcm0tDQo+ID4gcG9s
bGluZy5vDQo+ID4gwqBvYmotJChDT05GSUdfQVJNX1BTQ0lfQ1BVSURMRSnCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgICs9IGNwdWlkbGUtcHNjaS5vDQo+ID4gwqBvYmotJChDT05GSUdfQVJN
X1BTQ0lfQ1BVSURMRV9ET01BSU4pwqDCoMKgwqDCoMKgwqAgKz0gY3B1aWRsZS1wc2NpLQ0KPiA+
IGRvbWFpbi5vDQo+ID4gwqBvYmotJChDT05GSUdfQVJNX1RFR1JBX0NQVUlETEUpwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgKz0gY3B1aWRsZS10ZWdyYS5vDQo+ID4gZGlmZiAtLWdpdCBhL2Ry
aXZlcnMvY3B1aWRsZS9jcHVpZGxlLWFybS1wb2xsaW5nLmMNCj4gPiBiL2RyaXZlcnMvY3B1aWRs
ZS9jcHVpZGxlLWFybS1wb2xsaW5nLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu
ZGV4IDAwMDAwMDAwMDAwMC4uYmNhMTI4NTY4MTE0DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr
KyBiL2RyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWFybS1wb2xsaW5nLmMNCj4gPiBAQCAtMCwwICsx
LDE3MSBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsv
Kg0KPiA+ICsgKiBBUk02NCBDUFUgaWRsZSBkcml2ZXIgdXNpbmcgd2ZlIHBvbGxpbmcNCj4gPiAr
ICoNCj4gPiArICogQ29weXJpZ2h0IDIwMjQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxp
YXRlcy4gQWxsIHJpZ2h0cw0KPiA+IHJlc2VydmVkLg0KPiA+ICsgKg0KPiA+ICsgKiBBdXRob3Jz
Og0KPiA+ICsgKsKgwqAgSGFyaXMgT2thbm92aWMgPGhhcmlzb2tuQGFtYXpvbi5jb20+DQo+ID4g
KyAqwqDCoCBCcmlhbiBTaWx2ZXIgPHNpbHZlcmJyQGFtYXpvbi5jb20+DQo+ID4gKyAqDQo+ID4g
KyAqIEJhc2VkIG9uIGNwdWlkbGUtYXJtLmMNCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE0IEFS
TSBMdGQuDQo+ID4gKyAqIEF1dGhvcjogTG9yZW56byBQaWVyYWxpc2kgPGxvcmVuem8ucGllcmFs
aXNpQGFybS5jb20+DQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2NwdS5o
Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvY3B1X2Nvb2xpbmcuaD4NCj4gPiArI2luY2x1ZGUgPGxp
bnV4L2NwdWlkbGUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NjaGVkL2Nsb2NrLmg+DQo+ID4g
Kw0KPiA+ICsjaW5jbHVkZSA8YXNtL2NwdWlkbGUuaD4NCj4gPiArI2luY2x1ZGUgPGFzbS9yZWFk
ZXguaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJkdF9pZGxlX3N0YXRlcy5oIg0KPiA+ICsNCj4g
PiArLyogTWF4IGR1cmF0aW9uIG9mIHRoZSB3ZmUoKSBwb2xsIGxvb3AgaW4gdXMsIGJlZm9yZSB0
cmFuc2l0aW9uaW5nDQo+ID4gdG8NCj4gPiArICogYXJjaF9jcHVfaWRsZSgpL3dmaSgpIHNsZWVw
Lg0KPiA+ICsgKi8NCj4gDQo+IC8qDQo+IMKgKiBDb21tZW50cyBzaG91bGQgaGF2ZSB0aGUgbGVh
ZGluZyAnLyonIG9uIGEgc2VwYXJhdGUgbGluZS4NCj4gwqAqIFNlZQ0KPiBodHRwczovL3d3dy5r
ZXJuZWwub3JnL2RvYy9odG1sL3Y2LjgvcHJvY2Vzcy9jb2Rpbmctc3R5bGUuaHRtbCNjb21tZW50
aW5nDQo+IMKgKi8NCj4gDQo+ID4gKyNkZWZpbmUgREVGQVVMVF9QT0xMX0xJTUlUX1VTIDEwMA0K
PiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IHBvbGxfbGltaXQgX19yZWFkX21vc3RseSA9DQo+ID4g
REVGQVVMVF9QT0xMX0xJTUlUX1VTOw0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogYXJtX2lkbGVf
d2ZlX3BvbGwgLSBQb2xscyBzdGF0ZSBpbiB3ZmUgbG9vcCB1bnRpbCByZXNjaGVkdWxlIGlzDQo+
ID4gKyAqIG5lZWRlZCBvciB0aW1lb3V0DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IF9fY3B1
aWRsZSBhcm1faWRsZV93ZmVfcG9sbChzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldiwNCj4gPiAr
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
c3RydWN0IGNwdWlkbGVfZHJpdmVyICpkcnYsIGludCBpZHgpDQo+ID4gK3sNCj4gPiArwqDCoMKg
wqAgdTY0IHRpbWVfc3RhcnQsIHRpbWVfbGltaXQ7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCB0aW1l
X3N0YXJ0ID0gbG9jYWxfY2xvY2soKTsNCj4gPiArwqDCoMKgwqAgZGV2LT5wb2xsX3RpbWVfbGlt
aXQgPSBmYWxzZTsNCj4gPiArDQo+ID4gK8KgwqDCoMKgIGxvY2FsX2lycV9lbmFibGUoKTsNCj4g
DQo+IFdoeSBlbmFibGUgSVJRcyBoZXJlPyBXZSBkb24ndCBkbyB0aGF0IGluIHRoZSByZWd1bGFy
IGNwdWlkbGUtYXJtDQo+IGRyaXZlciwgbm9yDQo+IHRoZSBjcHVpZGxlLXBzY2kgZHJpdmVyLCBh
bmQgdGhlcmUncyBubyBleHBsYW5hdGlvbiBoZXJlIG9yIGluIHRoZQ0KPiBjb21taXQgbWVzc2Fn
ZS4NCj4gDQo+IEhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCBSQ1U/IElzIHRoYXQgc3RpbGwg
d2F0Y2hpbmcgb3IgYXJlIHdlIGluDQo+IGFuDQo+IGV4dGVuZGVkIHF1aWVzY2VudCBzdGF0ZT8g
Rm9yIFBTQ0kgaWRsZSBzdGF0ZXMgd2UgZW50ZXIgYW4gRVFTLCBhbmQNCj4gaXQgc2VlbXMNCj4g
bGlrZSB3ZSBwcm9iYWJseSBzaG91bGQgaGVyZS4uLg0KDQpJJ2xsIGNpcmNsZSBiYWNrIHRvIHlv
dXIgY29kZSBjb21tZW50cyAoaGVyZSBhbmQgZWxzZXdoZXJlKSBpZiB3ZQ0KcHJvY2VlZGUgd2l0
aCB0aGlzIHBhdGNoIGluc3RlYWQgb2YgQW5rdXIncy4NCg0KPiANCj4gPiArDQo+ID4gK8KgwqDC
oMKgIGlmIChjdXJyZW50X3NldF9wb2xsaW5nX2FuZF90ZXN0KCkpDQo+ID4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCBnb3RvIGVuZDsNCj4gPiArDQo+ID4gK8KgwqDCoMKgIHRpbWVfbGltaXQg
PSBjcHVpZGxlX3BvbGxfdGltZShkcnYsIGRldik7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCBkbyB7
DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyBleGNsdXNpdmUgcmVhZCBhcm1zIHRo
ZSBtb25pdG9yIGZvciB3ZmUNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChfX1JF
QURfT05DRV9FWChjdXJyZW50X3RocmVhZF9pbmZvKCktPmZsYWdzKSAmDQo+ID4gX1RJRl9ORUVE
X1JFU0NIRUQpDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
Z290byBlbmQ7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gbWF5IGV4
aXQgcHJlbWF0dXJlbHksIHNlZSBBUk1fQVJDSF9USU1FUl9FVlRTVFJFQU0NCj4gPiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIHdmZSgpOw0KPiA+ICvCoMKgwqDCoCB9IHdoaWxlIChsb2NhbF9j
bG9jaygpIC0gdGltZV9zdGFydCA8IHRpbWVfbGltaXQpOw0KPiANCj4gLi4uIGFuZCBpZiB0aGUg
RVZUU1RSRUFNIGlzIGRpc2FibGVkLCB3ZSdsbCBzaXQgaW4gV0ZFIGZvcmV2ZXIgcmF0aGVyDQo+
IHRoYW4NCj4gZW50ZXJpbmcgYSBkZWVwZXIgaWRsZSBzdGF0ZSwgd2hpY2ggZG9lc24ndCBzZWVt
IGRlc2lyYWJsZS4NCg0KSSB0b29rIGEgZGVwZG5lbmN5IG9uIEFSTV9BUkNIX1RJTUVSX0VWVFNU
UkVBTSBpbiBLY29uZmlnLmFybSB0byBlbnN1cmUNCmV2ZW50IHN0cmVhbSBpcyBlbmFibGVkLg0K
DQo+IA0KPiBJdCdzIHdvcnRoIG5vdGluZyB0aGF0IG5vdyB0aGF0IHdlIGhhdmUgV0ZFVCwgd2Un
bGwgcHJvYmFibHkgd2FudCB0bw0KPiBkaXNhYmxlDQo+IHRoZSBFVlRTVFJFQU0gYnkgZGVmYXVs
dCBhdCBzb21lIHBvaW50LCBhdCBsZWFzdCBpbiBzb21lDQo+IGNvbmZpZ3VyYXRpb25zLCBzaW5j
ZQ0KPiB0aGF0J2xsIGJlIGFibGUgdG8gc2l0IGluIGEgV0ZFIHN0YXRlIGZvciBsb25nZXIgd2hp
bGUgYWxzbyByZWxpYWJseQ0KPiB3YWtpbmcgdXANCj4gd2hlbiByZXF1aXJlZC4NCj4gDQo+IEkg
c3VzcGVjdCB3ZSB3YW50IHNvbWV0aGluZyBsaWtlIGFuIHNtcF9sb2FkX2FjcXVpcmVfdGltZW91
dCgpIGhlcmUNCj4gdG8gZG8gdGhlDQo+IHdhaXQgaW4gYXJjaCBjb2RlIChhbGxvd2luZyB1cyB0
byB1c2UgV0ZFVCksIGFuZCBlbmFibGluZyB0aGlzIHN0YXRlDQo+IHdpbGwNCj4gZGVwZW5kIG9u
IGVpdGhlciBoYXZpbmcgV0ZFVCBvciBFVlRTVFJFQU0uDQo+IA0KPiA+ICsNCj4gPiArwqDCoMKg
wqAgZGV2LT5wb2xsX3RpbWVfbGltaXQgPSB0cnVlOw0KPiA+ICsNCj4gPiArZW5kOg0KPiA+ICvC
oMKgwqDCoCBjdXJyZW50X2Nscl9wb2xsaW5nKCk7DQo+ID4gK8KgwqDCoMKgIHJldHVybiBpZHg7
DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIGFybV9pZGxlX3dmaSAtIFBsYWNlcyBj
cHUgaW4gbG93ZXIgcG93ZXIgc3RhdGUgdW50aWwgaW50ZXJydXB0LA0KPiA+ICsgKiBhIGZhbGxi
YWNrIHRvIHBvbGxpbmcNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgX19jcHVpZGxlIGFybV9p
ZGxlX3dmaShzdHJ1Y3QgY3B1aWRsZV9kZXZpY2UgKmRldiwNCj4gPiArwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGNwdWlkbGVf
ZHJpdmVyICpkcnYsIGludCBpZHgpDQo+ID4gK3sNCj4gPiArwqDCoMKgwqAgaWYgKGN1cnJlbnRf
Y2xyX3BvbGxpbmdfYW5kX3Rlc3QoKSkgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
bG9jYWxfaXJxX2VuYWJsZSgpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu
IGlkeDsNCj4gPiArwqDCoMKgwqAgfQ0KPiANCj4gU2FtZSBhcyBhYm92ZSwgd2h5IGVuYWJsZSBJ
UlFzIGhlcmU/DQo+IA0KPiA+ICvCoMKgwqDCoCBhcmNoX2NwdV9pZGxlKCk7DQo+ID4gK8KgwqDC
oMKgIHJldHVybiBpZHg7DQo+IA0KPiAuLi4gYW5kIGlmIHdlIG5lZWQgdG8gZW5hYmxlIElSUXMg
aW4gdGhlIG90aGVyIGNhc2VzIGFib3ZlLCB3aHkgZG8gd2UNCj4gKm5vdCoNCj4gbmVlZCB0byBl
bmFibGUgdGhlbSBoZXJlPw0KPiANCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBj
cHVpZGxlX2RyaXZlciBhcm1fcG9sbF9pZGxlX2RyaXZlciBfX2luaXRkYXRhID0gew0KPiA+ICvC
oMKgwqDCoCAubmFtZSA9ICJhcm1fcG9sbF9pZGxlIiwNCj4gPiArwqDCoMKgwqAgLm93bmVyID0g
VEhJU19NT0RVTEUsDQo+ID4gK8KgwqDCoMKgIC5zdGF0ZXMgPSB7DQo+ID4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgLmVudGVywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IGFybV9pZGxl
X3dmZV9wb2xsLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IC5leGl0X2xhdGVuY3nCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IDAsDQo+ID4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnRhcmdldF9yZXNpZGVuY3nCoMKgwqDCoMKg
wqAgPSAwLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5l
eGl0X2xhdGVuY3lfbnPCoMKgwqDCoMKgwqDCoCA9IDAsDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnBvd2VyX3VzYWdlwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCA9IFVJTlRfTUFYLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIC5mbGFnc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPQ0KPiA+IENQVUlE
TEVfRkxBR19QT0xMSU5HLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIC5uYW1lwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gIldGRSIs
DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmRlc2PCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSAiQVJNIFdGRSIsDQo+ID4gK8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgew0K
PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5lbnRlcsKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBhcm1faWRsZV93ZmksDQo+ID4gK8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmV4aXRfbGF0ZW5jecKgwqDCoMKg
wqDCoMKgwqDCoMKgID0NCj4gPiBERUZBVUxUX1BPTExfTElNSVRfVVMsDQo+ID4gK8KgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnRhcmdldF9yZXNpZGVuY3nCoMKgwqDC
oMKgwqAgPQ0KPiA+IERFRkFVTFRfUE9MTF9MSU1JVF9VUywNCj4gPiArwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAucG93ZXJfdXNhZ2XCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgID0gVUlOVF9NQVgsDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgLm5hbWXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSAiV0ZJIiwN
Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuZGVzY8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9ICJBUk0gV0ZJIiwNCj4gPiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+ID4gK8KgwqDCoMKgIH0sDQo+ID4gK8KgwqDCoMKgIC5z
dGF0ZV9jb3VudCA9IDIsDQo+ID4gK307DQo+IA0KPiBIb3cgZG9lcyB0aGlzIGludGVyYWN0IHdp
dGggdGhlIGV4aXN0aW5nIGRyaXZlcj8NCj4gDQo+IEhvdyBkb2VzIERFRkFVTFRfUE9MTF9MSU1J
VF9VUyBjb21wYXJlIHdpdGggUFNDSSBpZGxlIHN0YXRlcz8NCj4gDQo+ID4gKw0KPiA+ICsvKg0K
PiA+ICsgKiBhcm1fcG9sbF9pbml0X2NwdSAtIEluaXRpYWxpemVzIGFybSBjcHVpZGxlIHBvbGxp
bmcgZHJpdmVyIGZvcg0KPiA+IG9uZSBjcHUNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgX19p
bml0IGFybV9wb2xsX2luaXRfY3B1KGludCBjcHUpDQo+ID4gK3sNCj4gPiArwqDCoMKgwqAgaW50
IHJldDsNCj4gPiArwqDCoMKgwqAgc3RydWN0IGNwdWlkbGVfZHJpdmVyICpkcnY7DQo+ID4gKw0K
PiA+ICvCoMKgwqDCoCBkcnYgPSBrbWVtZHVwKCZhcm1fcG9sbF9pZGxlX2RyaXZlciwgc2l6ZW9m
KCpkcnYpLA0KPiA+IEdGUF9LRVJORUwpOw0KPiA+ICvCoMKgwqDCoCBpZiAoIWRydikNCj4gPiAr
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArwqDC
oMKgwqAgZHJ2LT5jcHVtYXNrID0gKHN0cnVjdCBjcHVtYXNrICopY3B1bWFza19vZihjcHUpOw0K
PiA+ICvCoMKgwqDCoCBkcnYtPnN0YXRlc1sxXS5leGl0X2xhdGVuY3kgPSBwb2xsX2xpbWl0Ow0K
PiA+ICvCoMKgwqDCoCBkcnYtPnN0YXRlc1sxXS50YXJnZXRfcmVzaWRlbmN5ID0gcG9sbF9saW1p
dDsNCj4gPiArDQo+ID4gK8KgwqDCoMKgIHJldCA9IGNwdWlkbGVfcmVnaXN0ZXIoZHJ2LCBOVUxM
KTsNCj4gPiArwqDCoMKgwqAgaWYgKHJldCkgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgcHJfZXJyKCJmYWlsZWQgdG8gcmVnaXN0ZXIgZHJpdmVyOiAlZCwgY3B1ICVkXG4iLA0KPiA+
IHJldCwgY3B1KTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2tmcmVl
X2RydjsNCj4gPiArwqDCoMKgwqAgfQ0KPiA+ICsNCj4gPiArwqDCoMKgwqAgcHJfaW5mbygicmVn
aXN0ZXJlZCBkcml2ZXIgY3B1ICVkXG4iLCBjcHUpOw0KPiANCj4gVGhpcyBkb2VzIG5vdCBuZWVk
IHRvIGJlIHByaW50ZWQgZm9yIGVhY2ggQ1BVLg0KPiANCj4gTWFyay4NCj4gDQo+ID4gKw0KPiA+
ICvCoMKgwqDCoCBjcHVpZGxlX2Nvb2xpbmdfcmVnaXN0ZXIoZHJ2KTsNCj4gPiArDQo+ID4gK8Kg
wqDCoMKgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArb3V0X2tmcmVlX2RydjoNCj4gPiArwqDCoMKg
wqAga2ZyZWUoZHJ2KTsNCj4gPiArwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsN
Cj4gPiArLyoNCj4gPiArICogYXJtX3BvbGxfaW5pdCAtIEluaXRpYWxpemVzIGFybSBjcHVpZGxl
IHBvbGxpbmcgZHJpdmVyDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IF9faW5pdCBhcm1fcG9s
bF9pbml0KHZvaWQpDQo+ID4gK3sNCj4gPiArwqDCoMKgwqAgaW50IGNwdSwgcmV0Ow0KPiA+ICvC
oMKgwqDCoCBzdHJ1Y3QgY3B1aWRsZV9kcml2ZXIgKmRydjsNCj4gPiArwqDCoMKgwqAgc3RydWN0
IGNwdWlkbGVfZGV2aWNlICpkZXY7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCBmb3JfZWFjaF9wb3Nz
aWJsZV9jcHUoY3B1KSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBhcm1f
cG9sbF9pbml0X2NwdShjcHUpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJl
dCkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91
dF9mYWlsOw0KPiA+ICvCoMKgwqDCoCB9DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCByZXR1cm4gMDsN
Cj4gPiArDQo+ID4gK291dF9mYWlsOg0KPiA+ICvCoMKgwqDCoCBwcl9pbmZvKCJkZS1yZWdpc3Rl
ciBhbGwiKTsNCj4gPiArwqDCoMKgwqAgd2hpbGUgKC0tY3B1ID49IDApIHsNCj4gPiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIGRldiA9IHBlcl9jcHUoY3B1aWRsZV9kZXZpY2VzLCBjcHUpOw0K
PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJ2ID0gY3B1aWRsZV9nZXRfY3B1X2RyaXZl
cihkZXYpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3B1aWRsZV91bnJlZ2lzdGVy
KGRydik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrZnJlZShkcnYpOw0KPiA+ICvC
oMKgwqDCoCB9DQo+ID4gKw0KPiA+ICvCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4g
Kw0KPiA+ICttb2R1bGVfcGFyYW0ocG9sbF9saW1pdCwgdWludCwgMDQ0NCk7DQo+ID4gK2Rldmlj
ZV9pbml0Y2FsbChhcm1fcG9sbF9pbml0KTsNCj4gPiAtLQ0KPiA+IDIuMzQuMQ0KPiA+IA0KPiA+
IA0KDQpUaGFua3MsDQpIYXJpcyBPa2Fub3ZpYw0KDQo=