Re: [PATCH v7 20/23] firmware: arm_scmi: Add System Telemetry driver

Fayssal Benmlih <[email protected]> Mon, 3 Aug 2026 22:34:20 +0000
Newsgroups org.infradead.lists.linux-arm-kernel,org.kernel.vger.arm-scmi,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
SGkgQ3Jpc3RpYW4sDQoNClRoYW5rcyBmb3IgYWRkaW5nIHRoZSBiYXRjaCBzdGF0dXMgYW5kIHdy
aXRlLW1vZGUgc3VwcG9ydC4gSSBmb3VuZCBhDQpudW1iZXIgb2YgcmVtYWluaW5nIGltcGxlbWVu
dGF0aW9uIGlzc3VlcyBpbmxpbmUuDQoNCj4gCWlmIChnZXRfdXNlcih1c2l6ZSwgKHUzMiBfX3Vz
ZXIgKilhcmcpKQ0KPiAJCXJldHVybiAtRUZBVUxUOw0KPg0KPiAJaWYgKHVzaXplIDwgb2Zmc2V0
b2ZlbmQoc3RydWN0IHNjbWlfdGxtX2FiaV9pbmZvLCByZXNlcnZlZCkpDQo+IAkJcmV0dXJuIC1F
SU5WQUw7DQo+DQo+IAlpZiAoY29weV9zdHJ1Y3RfZnJvbV91c2VyKCZiYXNlLCBzaXplb2YoYmFz
ZSksIHVwdHIsIHVzaXplKSkNCj4gCQlyZXR1cm4gLUVGQVVMVDsNCg0KdXNpemUgc3RpbGwgaGFz
IG5vIHVwcGVyIGJvdW5kLCBzbyBhIGxhcmdlIHZhbHVlIGNhbiBtYWtlIHRoZSBzdHJ1Y3QNCmhl
bHBlcnMgaW5zcGVjdCBvciBjbGVhciBhIHZlcnkgbGFyZ2UgdXNlcnNwYWNlIHJhbmdlLiBQbGVh
c2UgcmVqZWN0DQp2YWx1ZXMgYWJvdmUgYSBjb252ZW50aW9uYWwgbGltaXQgc3VjaCBhcyBQQUdF
X1NJWkUuDQoNClBsZWFzZSBhbHNvIHByb3BhZ2F0ZSB0aGUgYWN0dWFsIGNvcHlfc3RydWN0X2Zy
b21fdXNlcigpIGVycm9yIGluc3RlYWQgb2YNCmNvbnZlcnRpbmcgZXJyb3JzIHN1Y2ggYXMgLUUy
QklHIGludG8gLUVGQVVMVC4NCg0KPiAJCXJldCA9IHRzcC0+b3BzLT5zdGF0ZV9zZXQodHNwLT5w
aCwgdHJ1ZSwgY2ZnLmdycF9pZCwNCj4gCQkJCQkgICZlbmEsICZ0X2VuYSwgTlVMTCwgTlVMTCwg
TlVMTCk7DQo+IAkJaWYgKHJldCkNCj4gCQkJcmV0dXJuIHJldDsNCj4gCX0NCj4NCj4gCWFjdGl2
ZSA9IFNDTUlfVExNX0JVSUxEX1VQREFURV9JTlRFUlZBTChjZmcuYWN0aXZlLnNlY3MsDQo+IAkJ
CQkJCWNmZy5hY3RpdmUuZXhwKTsNCj4NCj4gCXJldHVybiB0c3AtPm9wcy0+Y29sbGVjdGlvbl9j
b25maWd1cmUodHNwLT5waCwgY2ZnLmdycF9pZCwNCj4gCQkJCQkgICAgICAgJmVuYSwgJmFjdGl2
ZSwgTlVMTCk7DQoNCnNlY3MgYW5kIGV4cCBhcmUgc3RpbGwgcGFja2VkIHdpdGhvdXQgY2hlY2tp
bmcgdGhhdCB0aGV5IGZpdCB0aGUgU0NNSQ0KaW50ZXJ2YWwgZW5jb2RpbmcuIE91dC1vZi1yYW5n
ZSB2YWx1ZXMgY2FuIHRoZXJlZm9yZSBiZSBzaWxlbnRseQ0KdHJ1bmNhdGVkIGludG8gYSBkaWZm
ZXJlbnQgaW50ZXJ2YWwuIFBsZWFzZSB2YWxpZGF0ZSBib3RoIGZpZWxkcyBhbmQNCnByZWZlcmFi
bHkgdmVyaWZ5IHRoYXQgdGhlIGVuY29kZWQgdmFsdWUgYmVsb25ncyB0byB0aGUgYWR2ZXJ0aXNl
ZA0KZGlzY3JldGUgb3Igc2VnbWVudGVkIGludGVydmFsIHNldC4NCg0KRm9yIGEgZ3JvdXAsIHN0
YXRlX3NldCgpIGNhbiBhbHNvIHN1Y2NlZWQgYmVmb3JlDQpjb2xsZWN0aW9uX2NvbmZpZ3VyZSgp
IGZhaWxzLCBsZWF2aW5nIHBhcnRpYWxseSBhcHBsaWVkIHN0YXRlLiBQbGVhc2UgYWRkDQpyb2xs
YmFjayBvciBkZWZpbmUgdGhlIHBhcnRpYWwtZmFpbHVyZSBiZWhhdmlvci4gQSBwZXItaW5zdGFu
Y2UgbG9jayBpcw0KYWxzbyBuZWVkZWQgaWYgdGhpcyBtdWx0aS1jb21tYW5kIG9wZXJhdGlvbiBt
dXN0IG5vdCBpbnRlcmxlYXZlIHdpdGgNCmFub3RoZXIgY2FsbGVyLg0KDQo+IAkJdGxtX2l2cyA9
IHJpbmZvLT5ncnBzW2l2cy5ncnBfaWRdLmludGVydmFsczsNCj4gCX0NCj4NCj4gCWlmIChpdnMu
bnVtX2ludGVydmFscyA8IHRsbV9pdnMtPm51bV9pbnRlcnZhbHMpDQo+IAkJcmV0dXJuIC1FTk9T
UEM7DQoNCnJpbmZvLT5ncnBzW2l2cy5ncnBfaWRdLmludGVydmFscyBjYW4gYmUgTlVMTCB3aGVu
IHBlci1ncm91cCBpbnRlcnZhbA0KY29uZmlndXJhdGlvbiBpcyB1bnN1cHBvcnRlZCBvciBlbnVt
ZXJhdGlvbiB3YXMgaW5jb21wbGV0ZS4gVGhpcyBpcw0KZGVyZWZlcmVuY2VkIGltbWVkaWF0ZWx5
IGFmdGVyd2FyZC4gUGxlYXNlIHJldHVybiAtRU9QTk9UU1VQUCBvciB0aGUNCnNhdmVkIGVudW1l
cmF0aW9uIGVycm9yIGJlZm9yZSBhY2Nlc3NpbmcgaXQuDQoNCj4gCW91dC0+ZmxhZ3MgfD0gaW4t
PmRpc2NyZXRlID8gU0NNSV9UTE1fSU5URVJWX0RJU0NSRVRFIDogMDsNCg0KVXNpbmcgfD0gZG9l
cyBub3QgZnVsbHkgZml4IHRoZSBpbnB1dC1pbmhlcml0YW5jZSBpc3N1ZS4gSWYgdXNlcnNwYWNl
DQpzdXBwbGllcyBTQ01JX1RMTV9JTlRFUlZfRElTQ1JFVEUgYW5kIGZpcm13YXJlIHJlcG9ydHMg
c2VnbWVudGVkDQppbnRlcnZhbHMsIHRoZSBiaXQgcmVtYWlucyBzZXQuDQoNClBsZWFzZSBjbGVh
ciB0aGUgb3V0cHV0LW9ubHkgYml0IGZpcnN0IGFuZCB0aGVuIHNldCBpdCBzb2xlbHkgZnJvbQ0K
aW4tPmRpc2NyZXRlLg0KDQo+IAlpdnNfaW50cnZfc3ogPSBpdnMubnVtX2ludGVydmFscyAqDQo+
IAkJCXNpemVvZihzdHJ1Y3Qgc2NtaV90bG1fdXBkYXRlX2ludGVydmFsKTsNCj4gCXN0cnVjdCBz
Y21pX3RsbV91cGRhdGVfaW50ZXJ2YWwgKml2c19pbnRydiBfX2ZyZWUoa2ZyZWUpID0NCj4gCQlr
emFsbG9jKGl2c19pbnRydl9zeiwgR0ZQX0tFUk5FTCk7DQoNClRoaXMgbXVsdGlwbGljYXRpb24g
cmVtYWlucyB1bmNoZWNrZWQgYW5kIHRoZSBhbGxvY2F0aW9uIHN0aWxsIHVzZXMgdGhlDQp1c2Vy
c3BhY2UgY2FwYWNpdHkgaW5zdGVhZCBvZiB0aGUgcmVxdWlyZWQgZmlybXdhcmUgY291bnQuIE9u
IGEgMzItYml0DQprZXJuZWwgdGhlIHNpemUgY2FuIHdyYXAgYmVmb3JlIGt6YWxsb2MoKS4NCg0K
UGxlYXNlIHVzZSBrY2FsbG9jKCkgb3Igc2l6ZV9tdWwoKSB3aXRoIHRsbV9pdnMtPm51bV9pbnRl
cnZhbHMgYW5kIGNvcHkNCm9ubHkgdGhlIG51bWJlciBvZiBlbnRyaWVzIGFjdHVhbGx5IHJldHVy
bmVkLiBUaGUgc2FtZSBwYXR0ZXJuIHJlbWFpbnMgaW4NCnRoZSBvdGhlciB2YXJpYWJsZS1sZW5n
dGggZW51bWVyYXRpb24gaGFuZGxlcnMuDQoNCj4gCWZvciAoaW50IGkgPSAwOyBpIDwgcmluZm8t
Pm51bV9kZXM7IGkrKykgew0KPiAJCXJldCA9IHRpLT50c3AtPm9wcy0+c3RhdGVfc2V0KHRpLT50
c3AtPnBoLCBmYWxzZSwNCj4gCQkJCQkgICAgICByaW5mby0+ZGVzW2ldLT5pbmZvLT5pZCwNCj4g
CQkJCQkgICAgICAmZW5hLCAmdF9lbmEsDQo+IAkJCQkJICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7
DQo+IAkJaWYgKHJldCkNCj4gCQkJcmV0dXJuIHJldDsNCj4gCX0NCg0KU0VUX0FMTF9DRkcgc3Rp
bGwgbGVhdmVzIHByZWNlZGluZyBERXMgbW9kaWZpZWQgaWYgYSBsYXRlciBzdGF0ZV9zZXQoKQ0K
ZmFpbHMuIEdFVF9BTExfQ0ZHIG9ubHkgcmV0dXJucyBjdW11bGF0aXZlIGJvb2xlYW5zLCBzbyB1
c2Vyc3BhY2UgY2Fubm90DQpkZXRlcm1pbmUgd2hhdCBjaGFuZ2VkLg0KDQpQbGVhc2UgcHJvdmlk
ZSByb2xsYmFjayBvciBkZWZpbmUvcmVwb3J0IHBhcnRpYWwgY29tcGxldGlvbiwgYW5kIHNlcmlh
bGl6ZQ0KdGhpcyBzZXF1ZW5jZSBhZ2FpbnN0IG90aGVyIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0
IGNhbGxlcnMuDQoNCj4gCWlmIChiYXRjaC5zdGF0ZXMpIHsNCj4gCQlpbnQgKnN0YXRlc19hcnIg
X19mcmVlKGtmcmVlKSA9DQo+IAkJCWtjYWxsb2MoYmF0Y2gubnVtX2l0ZW1zLCBzaXplb2YoKnN0
YXRlc19hcnIpLA0KPiAJCQkJR0ZQX0tFUk5FTCk7DQo+IFsuLi5dDQo+IAkJaWYgKGNvcHlfZnJv
bV91c2VyKHN0YXRlc19hcnIsDQo+IAkJCQkgICB1NjRfdG9fdXNlcl9wdHIoYmF0Y2guc3RhdGVz
KSwNCj4gCQkJCSAgIGJhdGNoLm51bV9pdGVtcyAqIHNpemVvZigqc3RhdGVzX2FycikpKQ0KPiAJ
CQlyZXR1cm4gLUVGQVVMVDsNCj4NCj4gCQlzdGF0ZXMgPSBub19mcmVlX3B0cihzdGF0ZXNfYXJy
KTsNCj4gCX0NCg0Kc3RhdGVzIGlzIGRvY3VtZW50ZWQgYXMgYW4gb3V0cHV0IGFycmF5LiBDb3B5
aW5nIGl0cyBpbml0aWFsIGNvbnRlbnRzIGZyb20NCnVzZXJzcGFjZSBtZWFucyBzdWNjZXNzZnVs
IGVudHJpZXMgcmV0YWluIGFyYml0cmFyeSB1c2VyLXByb3ZpZGVkIHZhbHVlcywNCmJlY2F1c2Ug
b25seSBmYWlsdXJlcyBhc3NpZ24gc3RhdGVzW2ldLg0KDQpQbGVhc2UgbGVhdmUgdGhlIGtjYWxs
b2MoKS1pbml0aWFsaXplZCB6ZXJvcyBpbiBwbGFjZSBhbmQgb25seSBzdG9yZSBhDQpuZWdhdGl2
ZSBzdGF0dXMgZm9yIGZhaWxlZCBlbnRyaWVzLiBUaGUgc2FtZSBpc3N1ZSBleGlzdHMgaW4gdGhl
IERFDQpjb25maWd1cmF0aW9uIGdldCBhbmQgYmF0Y2gtcmVhZCBoYW5kbGVycy4NCg0KVGhlcmUg
aXMgYWxzbyBhIGNsZWFudXAgaXNzdWUgYWZ0ZXIgbm9fZnJlZV9wdHIoKTogc2V2ZXJhbCBzdWJz
ZXF1ZW50DQpjb3B5X3RvX3VzZXIoKSBmYWlsdXJlcyByZXR1cm4gYmVmb3JlIHRoZSBtYW51YWwg
a2ZyZWUoc3RhdGVzKSwgbGVha2luZw0KdGhlIGFycmF5LiBQbGVhc2UgcmV0YWluIGF1dG9tYXRp
YyBjbGVhbnVwIHRocm91Z2ggZXZlcnkgY29weW91dCBwYXRoIG9yDQp1c2UgYSBjb21tb24gY2xl
YW51cCBsYWJlbC4NCg0KPiAJc3RydWN0IHNjbWlfdGVsZW1ldHJ5X2RlX3NhbXBsZSAqc2FtcGxl
cyBfX2ZyZWUoa2ZyZWUpID0NCj4gCQlrY2FsbG9jKGJhdGNoLm51bV9pdGVtcywgc2l6ZW9mKCpz
YW1wbGVzKSwgR0ZQX0tFUk5FTCk7DQoNClRoZXJlIGlzIHN0aWxsIG5vIGV4cGxpY2l0IG1heGlt
dW0gZm9yIGJhdGNoLm51bV9pdGVtcy4gUGxlYXNlIHZhbGlkYXRlIGl0DQphZ2FpbnN0IGFuIEFC
SS1kZWZpbmVkIGxpbWl0IGJlZm9yZSBhbGxvY2F0aW5nIG9yIGl0ZXJhdGluZy4NCg0KPiAJLyog
Q2hlY2sgdGhhdCB0aGUgcmVxdWVzdGVkIHNpemUgaXMgYWNjZXB0YWJsZSAqLw0KPiAJaWYgKHVk
bC5udW1fdXVpZHMgPiB0aS0+aW5mby0+bnVtX3V1aWRzKQ0KPiAJCXJldHVybiAtRU5PU1BDOw0K
DQpUaGlzIGNvbXBhcmlzb24gYXBwZWFycyByZXZlcnNlZC4gQSBjYXBhY2l0eSBsYXJnZXIgdGhh
biB0aGUgYXZhaWxhYmxlDQpVVUlEIGNvdW50IHNob3VsZCBiZSBhY2NlcHRlZCwgd2hpbGUgYSBz
bWFsbGVyIG5vbnplcm8gY2FwYWNpdHkgc2hvdWxkDQpyZXR1cm4gLUVOT1NQQyBhbmQgcmVwb3J0
IHRoZSByZXF1aXJlZCBjb3VudC4NCg0KVGhlIGN1cnJlbnQgY29kZSByZWplY3RzIG92ZXJzaXpl
ZCBidWZmZXJzIGFuZCBzaWxlbnRseSByZXR1cm5zIG9ubHkgYQ0KcHJlZml4IGZvciB1bmRlcnNp
emVkIGJ1ZmZlcnMuDQoNCj4gCWlmIChyZXEgPCBjdHgtPnNobXRpLT5sZW4pDQo+IAkJcmV0dXJu
IC1FSU5WQUw7DQo+DQo+IAliYXNlID0gY3R4LT5zaG10aS0+cGh5cyAmIFBBR0VfTUFTSzsNCj4g
CW5lZWRlZCA9IGN0eC0+c2htdGktPmxlbiArIGN0eC0+c2htdGktPm9mZnNldDsNCj4gCWV4cGVj
dCA9IERJVl9ST1VORF9VUChuZWVkZWQsIFBBR0VfU0laRSk7DQo+IAlucGFnZXMgPSByZXEgPj4g
UEFHRV9TSElGVDsNCj4gCWlmIChucGFnZXMgPiBleHBlY3QpDQo+IAkJcmV0dXJuIC1FSU5WQUw7
DQoNClRoZSByZXF1aXJlZCBtYXBwaW5nIGxlbmd0aCBpcyBQQUdFX0FMSUdOKG9mZnNldCArIGxl
biksIG5vdCBqdXN0IGxlbi4gQQ0Kb25lLXBhZ2UgcmVxdWVzdCBjYW4gc3RpbGwgYmUgYWNjZXB0
ZWQgd2hlbiBvZmZzZXQgKyBsZW4gY3Jvc3NlcyBpbnRvIGENCnNlY29uZCBwYWdlLg0KDQpQbGVh
c2UgY2FsY3VsYXRlIG5lZWRlZCB1c2luZyBjaGVja2VkIGFkZGl0aW9uIGFuZCByZXF1aXJlIHRo
ZSBWTUEgdG8NCmNvdmVyIHRoZSBwYWdlLXJvdW5kZWQgcmVzdWx0LiBQbGVhc2UgYWxzbyByZWpl
Y3Qgbm9uemVybyB2bV9wZ29mZiB1bmxlc3MNCnBhcnRpYWwgbWFwcGluZ3MgYXJlIGludGVudGlv
bmFsbHkgcGFydCBvZiB0aGUgQUJJLg0KDQpTaG91bGQgZXhlY3V0YWJsZSBhbmQgcHJpdmF0ZSBt
YXBwaW5ncyBhbHNvIGJlIHJlamVjdGVkPyBUaGUgZG9jdW1lbnRlZA0KaW50ZXJmYWNlIG9ubHkg
YXBwZWFycyB0byByZXF1aXJlIGEgcmVhZC1vbmx5IHNoYXJlZCBtYXBwaW5nLg0KDQo+IAkJZmQg
PSBhbm9uX2lub2RlX2dldGZkKFNDTUlfVExNX0RSSVZFUiwNCj4gCQkJCSAgICAgICZzY21pX3Rs
bV9zaG10aV9mb3BzLCBjdHgsDQo+IAkJCQkgICAgICBPX1JET05MWSB8IE9fQ0xPRVhFQyk7DQoN
CmFub25faW5vZGVfZ2V0ZmQoKSBpbnN0YWxscyB0aGUgZGVzY3JpcHRvciBpbW1lZGlhdGVseSwg
YnV0IGJvdGgNCnN1YnNlcXVlbnQgdXNlcnNwYWNlIGNvcGllcyBjYW4gZmFpbC4gUmV0dXJuaW5n
IC1FRkFVTFQgdGhlbiBsZWF2ZXMNCmluc3RhbGxlZCBmZHMgdGhhdCB1c2Vyc3BhY2UgZG9lcyBu
b3Qga25vdyBhYm91dC4NCg0KUGxlYXNlIHJlc2VydmUgYW5kIGJ1aWxkIHRoZSBmaWxlcyBmaXJz
dCwgcGVyZm9ybSBhbGwgY29weW91dHMsIGFuZCBvbmx5DQpjYWxsIGZkX2luc3RhbGwoKSBhZnRl
ciB0aGV5IHN1Y2NlZWQsIHdpdGggcm9sbGJhY2sgZm9yIGV2ZXJ5IGZhaWx1cmUNCnBhdGguDQoN
Cj4gc3RydWN0IHNjbWlfdGxtX3NobXRpX2N0eCB7DQo+IAlzdHJ1Y3Qgc2NtaV90ZWxlbWV0cnlf
c2htdGlfaW5mbyAqc2htdGk7DQo+IAlzdHJ1Y3Qga3JlZiBrcmVmOw0KPiB9Ow0KDQpUaGUga3Jl
ZiBvbmx5IHByb3RlY3RzIHRoaXMgY29udGV4dDsgaXQgZG9lcyBub3QgcGluIHRoZSBwcm90b2Nv
bC1vd25lZA0KU0hNVEkgZGVzY3JpcHRvciBvciB0aGUgU0NNSSBkZXZpY2UuIEhvdyBhcmUgY3R4
LT5zaG10aSBhbmQgaXRzIHBoeXNpY2FsDQptZXRhZGF0YSBrZXB0IHZhbGlkIGFjcm9zcyBkcml2
ZXIgdW5iaW5kIHdoaWxlIGFuIGFub255bW91cyBmZCBvciBWTUENCnJlbWFpbnMgb3Blbj8NCg0K
PiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBzdGxtX2ZvcHMgPSB7DQo+IAku
b3duZXIgPSBUSElTX01PRFVMRSwNCj4gCS5vcGVuID0gbm9uc2Vla2FibGVfb3BlbiwNCj4gCS51
bmxvY2tlZF9pb2N0bCA9IHNjbWlfdGxtX3VubG9ja2VkX2lvY3RsLA0KPiAJLmNvbXBhdF9pb2N0
bCA9IGNvbXBhdF9wdHJfaW9jdGwsDQo+IH07DQoNCkV4aXN0aW5nIGRldmljZSBmZHMgY2FuIG91
dGxpdmUgY2Rldl9kZWwoKSwgYnV0IGV2ZXJ5IGlvY3RsIG9idGFpbnMgdGkNCmZyb20gdGhlIGVt
YmVkZGVkIGNkZXYgYW5kIHRpIGlzIGRldm0tb3duZWQgYnkgdGhlIFNDTUkgZGV2aWNlLiBUaGlz
DQphcHBlYXJzIHRvIHBlcm1pdCB1c2UtYWZ0ZXItZnJlZSBhZnRlciB1bmJpbmQuDQoNCkNvdWxk
IG9wZW4gY3JlYXRlIGEgcGVyLWZpbGUgY29udGV4dCB0aGF0IHBpbnMgdGhlIGluc3RhbmNlL2Rl
dmljZSwgd2l0aA0KcmVsZWFzZSBkcm9wcGluZyB0aGF0IHJlZmVyZW5jZSBhbmQgcmVqZWN0aW5n
IG9wZXJhdGlvbnMgb25jZSByZW1vdmFsDQpiZWdpbnM/DQoNCj4gCXJldCA9IHhhX2FsbG9jKCZ0
aS0+ZXZlbnRzX3hhLCAmY29va2llLCBjdHgsDQo+IAkJICAgICAgIHNjbWlfZXZ0X3hhX2xpbWl0
LCBHRlBfS0VSTkVMKTsNCg0KRXZlbnQgc3Vic2NyaXB0aW9ucyBhcmUgc3RvcmVkIGluc3RhbmNl
LXdpZGUgcmF0aGVyIHRoYW4gcGVyIG9wZW4gZmlsZSwNCmFuZCBzdGxtX2ZvcHMgaGFzIG5vIHJl
bGVhc2UgY2FsbGJhY2suIENsb3NpbmcgdGhlIHRlbGVtZXRyeSBmZCB0aGVyZWZvcmUNCmxlYXZl
cyB0aGUgZXZlbnRmZCByZWZlcmVuY2UgYW5kIGZpcm13YXJlIHN1YnNjcmlwdGlvbiBhY3RpdmUg
dW50aWwNCmV4cGxpY2l0IGNhbmNlbGxhdGlvbiBvciBkZXZpY2UgcmVtb3ZhbC4NCg0KSXQgYWxz
byBhbGxvd3MgYW5vdGhlciBvcGVuZXIgdGhhdCBrbm93cyB0aGUgY29va2llIHRvIGNhbmNlbCB0
aGUNCnN1YnNjcmlwdGlvbi4gUGxlYXNlIGFzc29jaWF0ZSBzdWJzY3JpcHRpb25zIHdpdGggYW4g
b3Blbi1maWxlIGNvbnRleHQNCmFuZCBjbGVhbiB0aGVtIHVwIGF1dG9tYXRpY2FsbHkgZnJvbSBy
ZWxlYXNlLg0KDQpUaGFua3MsDQpGYXnDp2FsDQoNCg==