[PATCH v9 08/12] clk: zte: Introduce a driver for zx297520v3 top clocks

Stefan Dösinger <[email protected]> Sun, 02 Aug 2026 23:33:40 +0300
Newsgroups org.infradead.lists.linux-phy,dev.linux.lists.mfd,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
VGhpcyByZWdpc3RlciBzcGFjZSBjb250cm9scyBjb3JlIGRldmljZXM6IFBMTHMsIHRoZSBBSEIg
YnVzLCBhIGxvdCBvZgp0aW1lcnMsIHRoZSBVU0IgY29udHJvbGxlciwgdGhlIENvcnRleCBNMCBw
cm9jZXNzb3IgdGhhdCBib290cyB0aGUgYm9hcmQKYW5kIGEgZmV3IG90aGVyIGRldmljZXMuIEZv
ciBzb21lIHJlYXNvbiB0aGUgTFRFIGNvcHJvY2Vzc29yIGlzIGFsc28KcGFydGlhbGx5IGNvbnRy
b2xsZWQgYnkgaXQuIFRoZSBtYWluIGFwcGxpY2F0aW9uIHByb2Nlc3NvciBhbmQgRERSCm1lbW9y
eSBhcmUgbm90IGZvdW5kIGhlcmUgdGhvdWdoLgoKVGhlIHJlZ2lzdGVyIHRvIHJlYm9vdCB0aGUg
Ym9hcmQgaXMgZm91bmQgaGVyZSwgYXMgd2VsbCBhcyBhIHJlZ2lzdGVyIHRvCmNvbnRyb2wgd2hl
dGhlciB3YXRjaGRvZyBleHBpcmllcyBjYXVzZSBhIGJvYXJkIHJlc2V0LgoKU2lnbmVkLW9mZi1i
eTogU3RlZmFuIETDtnNpbmdlciA8c3RlZmFuZG9lc2luZ2VyQGdtYWlsLmNvbT4KCi0tLQoKVmVy
c2lvbiA5OgpMaW5rIGludGVybmFsIHBhcmVudHMgYnkgYW4gKGludGVybmFsKSBjbG9jayBJRCBy
YXRoZXIgdGhhbiBuYW1lcy4KClRoZXJlIHNob3VsZCBiZSBubyBkaWZmZXJlbmNlIGluIHRoZSBi
dWlsdCBjbG9jayB0cmVlIGNvbXBhcmVkIHRvClZlcnNpb24gOC4KClZlcnNpb24gODoKUmVuYW1l
IHRoZSBleHBlY3RlZCBjbG9jayBuYW1lIG9mIHRoZSBmaXhlZCBvc2NpbGxhdG9ycyB0byBjbG9j
ay0yNm0gYW5kCmNsb2NrLTMyay4gU2FzaGlrbyBwb2ludGVkIG91dCB0aGF0ICJvc2NYWG0iIGlz
IGRlcHJlY2F0ZWQsIGFsdGhvdWdoCndpZGVzcHJlYWQgaW4gZXhpc3RpbmcgZHJpdmVycy4KCkFk
ZCBhIGRlZmluZSBpbmRpcmVjdGlvbiBmb3IgdGhlIEFYSSBjYW5kaWRhdGU9Y3JpdGljYWwgcHJv
dGVjdGlvbi4KV2hpbGUgaXQgaG9sZHMgdHJ1ZSBpbiBhIHN5c3RlbSB3aXRoIHJ1bm5pbmcgcnBy
b2NzLCBJIGZpbmQgaXQgdXNlZnVsCmZvciBzdHJlc3MgdGVzdGluZyB0aGUgY2xvY2sgdHJlZSB0
byBkaXNhYmxlIGl0LgoKRG91YmxlLWNoZWNrZWQgcGNsayBhbmQgd2NsayBiaXRzLCBmaXhlZCBp
bmNvcnJlY3QgYXNzaWdubWVudHMgaW4KcmVnaXN0ZXIgMHg1NC4KClZlcnNpb24gNzoKClRoZSBy
ZWdpc3RlciBhdCB0b3ArMHgxNDAgY29udGFpbnMgYSBzZXJpZXMgb2YgZ2F0ZXMgdGhhdCBjb250
cm9sIFBMTAppbnB1dCBpbnRvIHRoZSB0b3AgY29udHJvbGxlciBhbmQgUExMIGFuZCBvc2MyNm0g
d29yayBjbG9jayBmb3J3YXJkIGludG8KbWF0cml4LiBUaGlzIGFsbG93ZWQgZnVydGhlciBpbnNp
Z2h0IGludG8gdGhlIGNsb2NrIHRyZWUuCgpUaGUgUExMIHN1YmRpdmlzaW9uIGxpc3Qgd2FzIHJl
cGxhY2VkIHdpdGggZml4ZWQgZmFjdG9yIGNsb2NrcyB0aGF0CmRpdmlkZSBQTExzIGJlZm9yZSBh
bmQgYWZ0ZXIgdGhlIGlucHV0IGdhdGUgKGFuZCBzb21lIGZpeGVkIGZhY3RvciBkaXZzCmdvIGlu
dG8gbWF0cml4IGluIHRoZSBuZXh0IHBhdGNoKS4gVGhlIG51bWJlciBvZiBjbG9ja3MgZXhwb3J0
ZWQgdG8KTWF0cml4IGlzIGFjdHVhbGx5IHJlbGF0aXZlbHkgc21hbGwuCgpBcyBmb3IgU2FzaGlr
bydzIHN1Z2dlc3Rpb24gYWJvdXQgb3V0IG9mIGJvdW5kIHBhcmVudHMgZm9yIGRwbGwgYW5kCnVu
a25vd25wbGw6IEkgaGF2ZSBuZXZlciBzZWVuIGEgcGFyZW50ICE9IDAuIElmIHRoYXQgaGFwcGVu
cyBvbiBhIGRldmljZQpJIHdhbnQgdG8ga25vdyBhYm91dCBpdC4gQXQgdGhpcyBzdGFnZSBvZiBk
ZXZlbG9wbWVudCBJJ2QgcmF0aGVyIGhhdmUKY2xlYXJseSB2aXNpYmxlIG9ycGhhbmVkIGNsb2Nr
IHRoYW4gc2lsZW50bHkgY29udGludWluZyBhdCBhbiB1bmV4cGVjdGVkCmZyZXF1ZW5jeS4KCiJv
c2MyNm0iIC0+ICJjbG9jay0yNm0iIGFzICJvc2NYWCIsIGFsdGhvdWdoIHdpZGVzcHJlYWQsIGlz
IGRlcHJlY2F0ZWQuCkluIGRvaW5nIHNvLCBjaGFuZ2UgdW5kZXJzY29yZXMgaW4gY2xvY2sgbmFt
ZXMgdG8gZGFzaGVzIChTYXNoaWtvKS4KClZlcnNpb24gNToKCiopIE1ha2UgaXQgYSBNRkQgY2hp
bGQgZHJpdmVyIGluc3RlYWQgb2YgYmluZGluZyB0byB0aGUgbm9kZSBkaXJlY3RseQoqKSBDb3Jy
ZWN0IHBhcmVudHMgZm9yIGRwbGwKKikgQ29ycmVjdCBIU0lDIHdvcmsgY2xvY2sgcGFyZW50Ci0t
LQogZHJpdmVycy9jbGsvenRlL0tjb25maWcgICAgICAgICAgfCAgMTEgKwogZHJpdmVycy9jbGsv
enRlL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9jbGsvenRlL2Nsay16eDI5NzUy
MHYzLmMgfCA4MDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZp
bGVzIGNoYW5nZWQsIDgxNSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsv
enRlL0tjb25maWcgYi9kcml2ZXJzL2Nsay96dGUvS2NvbmZpZwppbmRleCAxNTJjMjQyM2I4ZjAu
LjBjY2M2ZWRmM2M1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvenRlL0tjb25maWcKKysrIGIv
ZHJpdmVycy9jbGsvenRlL0tjb25maWcKQEAgLTE1LDMgKzE1LDE0IEBAIGNvbmZpZyBDT01NT05f
Q0xLX1pURQogCSAgb2YgdGhpcy4KIAogCSAgRW5hYmxlIHRoaXMgaWYgeW91IGFyZSBidWlsZGlu
ZyBhIGtlcm5lbCBmb3IgYSBaVEUgZGVzaWduZWQgYm9hcmQuCisKK2NvbmZpZyBDTEtfWlRFX1pY
Mjk3NTIwVjMKKwl0cmlzdGF0ZSAiQ2xvY2sgZHJpdmVyIGZvciBaVEUgengyOTc1MjB2MyBiYXNl
ZCBTb0NzIgorCWRlcGVuZHMgb24gQ09NTU9OX0NMS19aVEUgJiYgKE1GRF9aVEVfWlgyOTc1MjBW
M19DUk0gfHwgQ09NUElMRV9URVNUKQorCWRlZmF1bHQgU09DX1pYMjk3NTIwVjMKKwloZWxwCisJ
ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBaVEUgengyOTc1MjB2MyBiYXNpYyBjbG9ja3MuCisKKwkg
IEVuYWJsZSB0aGlzIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGEga2VybmVsIHRoYXQgaXMgYWJsZSB0
byBydW4gb24KKwkgIGJvYXJkcyBiYXNlZCBvbiB0aGlzIFNvQy4gWW91IGNhbiBzYWZlbHkgZW5h
YmxlIG11bHRpcGxlIGNsb2NrCisJICBkcml2ZXJzLiBUaGUgb25lKHMpIG1hdGNoaW5nIHRoZSBk
ZXZpY2UgdHJlZSB3aWxsIGJlIHVzZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay96dGUvTWFr
ZWZpbGUgYi9kcml2ZXJzL2Nsay96dGUvTWFrZWZpbGUKaW5kZXggMjdkYjA3MjkzMTY1Li4yYzA3
MzUxMmU5MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2xrL3p0ZS9NYWtlZmlsZQorKysgYi9kcml2
ZXJzL2Nsay96dGUvTWFrZWZpbGUKQEAgLTEsNSArMSw2IEBACiAjIFNQRFgtTGljZW5zZS1JZGVu
dGlmaWVyOiBHUEwtMi4wLW9ubHkKIAogb2JqLSQoQ09ORklHX0NPTU1PTl9DTEtfWlRFKSArPSBj
bGstenRlLm8KK29iai0kKENPTkZJR19DTEtfWlRFX1pYMjk3NTIwVjMpICs9IGNsay16eDI5NzUy
MHYzLm8KIAogY2xrLXp0ZS15ICs9IGNsay16eC5vIHBsbC16eC5vIGNsay1yZWdtYXAubwpkaWZm
IC0tZ2l0IGEvZHJpdmVycy9jbGsvenRlL2Nsay16eDI5NzUyMHYzLmMgYi9kcml2ZXJzL2Nsay96
dGUvY2xrLXp4Mjk3NTIwdjMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmY5OTE1NTgyZjI2MQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvY2xrL3p0ZS9jbGst
engyOTc1MjB2My5jCkBAIC0wLDAgKzEsODAzIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll
cjogR1BMLTIuMC1vbmx5CisvKgorICogQ29weXJpZ2h0IChDKSAyMDI2IFN0ZWZhbiBEw7ZzaW5n
ZXIKKyAqCisgKiBUaGVyZSBhcmUgbm8gcHVibGljIGRhdGFzaGVldHMgZm9yIHp4Mjk3NTIwdjMu
IFRoZSBjb250cm9scyBvbiB0aGlzIGNsb2NrIGNvbnRyb2xsZXIgaGF2ZSBiZWVuCisgKiBleHRy
YWN0ZWQgZnJvbSBaVEUncyBrZXJuZWwgYW5kIFUtQm9vdCBzb3VyY2VzIGFuZCBhIExPVCBvZiBt
YW51YWwgdGVzdGluZy4gU29tZSBjbG9ja3MgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgcG93ZXIg
bWFuYWdlbWVudCAoZXZiX2NwdXJwbS5pbWcpIGFuZCBMVEUgKGNwa28ua28pIGJsb2JzIHNoaXBw
ZWQgd2l0aCB0aGUgcm91dGVycy4KKyAqCisgKiBCZWNhdXNlIFpURSdzIHNvdXJjZXMgYXJlIHdy
b25nIG9yIG1pc2xlYWRpbmcgaW4gc29tZSBwYXJ0cyBhbmQgdGVzdGluZyBjYW4gYmUgbWlzaW50
ZXJwcmV0ZWQsCisgKiB0aGlzIGZpbGUgY29udGFpbnMgYSBMT1Qgb2YgY29tbWVudHMgb24gaG93
IHBhcnRpY3VsYXIgY2xvY2tzIHdlcmUgdGVzdGVkIGFuZCBob3cgdGhlIGltcGFjdCBvZgorICog
Y2hhbmdlcyB0byB0aGVtIGNhbiBiZSBvYnNlcnZlZC4KKyAqLworCisjaW5jbHVkZSA8ZHQtYmlu
ZGluZ3MvY2xvY2svenRlLHp4Mjk3NTIwdjMtY2xrLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8u
aD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k
ZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBl
cy5oPgorCisjaW5jbHVkZSAiY2xrLXp4LmgiCisKK01PRFVMRV9JTVBPUlRfTlMoIlpURV9DTEsi
KTsKKworLyoKKyAqIEFYSSBzcGVlZCBpcyBlaXRoZXIgZGV0ZXJtaW5lZCBieSBhIGZpeGVkIHNl
bGVjdGlvbiBpbiBtYXRyaXgrMHgwLCBiaXRzIDA6MiBvciBieSBhIHZvdGluZyBzeXN0ZW0KKyAq
IHdpdGggYmFsbG90cyBpbiBtYXRyaXgrMHgxMjAsIDB4MTI0LCAweDEyOC4gVGhlIHZvdGluZyBz
eXN0ZW0gaXMgZW5hYmxlZCBieSBzZXR0aW5nIG1hdHJpeCAweDEyYworICogdG8gMS4gT3RoZXJ3
aXNlIHRoZSBzZWxlY3Rpb24gaW4gMHgwIGFwcGxpZXMuCisgKgorICogVGhlIGZhc3Rlc3Qgc2Vs
ZWN0ZWQgc3BlZWQgd2lucy4gVGhpcyBob2xkcyB0cnVlIGZvciB2YWx1ZXMgMCAoMjYgTUh6KSBh
bmQgNyAoNi41IE1IeikgdG9vLCBzbyBpdAorICogaXNuJ3QgYSBjYXNlIG9mIGxvd2VzdCBzZWxl
Y3RvciB3aW5zLiBJIGhhdmVuJ3QgdGVzdGVkIHdoYXQgaGFwcGVucyBpZiBtcGxsIGlzIGNoYW5n
ZWQgdG8gb3V0cHV0CisgKiA1eCB0aGUgbm9ybWFsIGNsb2NrLCBzbyA3IGJlYXRzIDAuIFByZXN1
bWFibHkgdmFsdWUgMCB3b3VsZCBzdGlsbCB3aW4gdGhlIGVsZWN0aW9uLgorICoKKyAqIEFYSSBz
cGVlZCA2LjUgaXMgYSBjaGlsZCBvZiBtYXRyaXgtb3NjMjZtLCBub3QgYSBQTEwuIFRoaXMgY2Fu
IGJlIHNlZW4gYnkgZ2F0aW5nIGl0IG9mZiBpbgorICogdG9wY3JtKzB4MTQwLgorICoKKyAqIFRo
ZSBzeXN0ZW0gaW5pdGlhbGl6ZXMgd2l0aCB2b3RpbmcgZGlzYWJsZWQgYW5kIGFsbCBwcmVmZXJl
bmNlcyBzZXQgdG8gdGhlIGxvd2VzdCBzZXR0aW5nLCA3LgorICogVGhlIHp4Mjk3NTIwdjNfbWF0
cml4X2luaXQgZnVuY3Rpb24gdHJhbnNmZXJzIHRoZSBnbG9iYWwgbXV4IHRvIG91ciB2b3RlIGFu
ZCBlbmFibGVzIHZvdGluZy4KKyAqCisgKiBCZWNhdXNlIHJwcm9jcyBtYXkgY2hhbmdlIHRoZWly
IHNlbGVjdGlvbiB3aXRob3V0IG5vdGljZSwgYWxsIHBvc3NpYmxlIHBhcmVudHMgb2YgdGhlIEFY
SSBtdXggYXJlCisgKiBtYXJrZWQgY3JpdGljYWwuIFRoaXMgY2FuIGhvd2V2ZXIgb2JzY3VyZSBi
dWdzIGluIHRoZSBjbG9jayB0cmVlLiBEZWZpbmUgWlgyOTc1MjBWM19BWElfQ0FORElEQVRFCisg
KiB0byAwIHRvIGRpc2FibGUgdGhpcyBwcm90ZWN0aW9uIGZvciB0ZXN0aW5nIGFuZCBlaXRoZXIg
bm90IHJ1biBhbnl0aGluZyBvbiB0aGUgcnByb2NzIG9yIG1ha2UKKyAqIHN1cmUgTGludXggdm90
ZXMgZm9yIHRoZSBmYXN0ZXN0IHJhdGUuCisgKi8KKyNkZWZpbmUgWlgyOTc1MjBWM19BWElfQ0FO
RElEQVRFIENMS19JU19DUklUSUNBTAorCisvKgorICogVG9wIGFuZCBtYXRyaXggY2xvY2tzIGFy
ZSBjaGFvdGljIC0gSSBoYXZlbid0IGZvdW5kIGEgY29uc2lzdGVudCBwYXR0ZXJuIGJlaGluZCB0
aGVpciByZWdpc3RlcgorICogYW5kIGJpdCBsb2NhdGlvbnMuIEdlbmVyYWxseSB0aGVyZSBhcmUg
dHdvIGdhdGVzIChwY2xrLCB3Y2xrKSwgb25lIG11eCwgdHdvIHJlc2V0cyBhbmQgc29tZXRpbWVz
CisgKiBvbmUgZGl2aWRlciwgYnV0IGV4Y2VwdGlvbnMgYXBwbHkuIEZvciBzb21lIGRldmljZXMg
dGhlcmUgaXMgb25seSBhIHJlc2V0IGFuZCBzb21lIGdlbmVyYWwKKyAqIChwYXJlbnQpIGNsb2Nr
cyBuZWVkIHNldHVwLiBUaGlzIHN0cnVjdHVyZSBwbHVzIG1hY3JvIGhhbmRsZXMgdGhlIHNvbWV3
aGF0IHJlZ3VsYXIgcGFydHMuCisgKgorICogVGhlcmUgYXJlIHNvbWUgcGF0dGVybnMgdGhhdCBj
YW4gYmUgb2JzZXJ2ZWQuCisgKiBtdXggMHgzYywgZGl2IDB4NDgsIGdhdGUgMHg1NAorICogbXV4
IDB4NDAsIGRpdiAweDRjLCBnYXRlIDB4NWMKKyAqIG11eCAweDQ0LCBkaXYgMHg1MCwgZ2F0ZSAw
eDYwCisgKgorICogRm9yIGEgMCAtIDB4YyAtIDB4MTggcGF0dGVybi4gTXV4ZXMgZnJvbSAweDNj
IHRvIDB4NDQsIGRpdmlkZXJzIGZyb20gMHg0OCB0byAweDUwLCBnYXRlcyAweDU0IHRvCisgKiAw
eDYwLiBUaGUgcGF0dGVybiBpcyBicm9rZW4gZm9yIHRpbWVyIHQxNyB0aG91Z2guCisgKgorICog
R2F0ZXMgaGF2ZSA0IGJpdHMgcGVyIGNsb2NrIC0gdXN1YWxseSwgYnV0IG5vdCBhbHdheXMsIGJp
dCAwIGZvciB3Y2xrLCBiaXQgMSBmb3IgcGNsaywgYml0IDIgZm9yCisgKiBzb21ldGhpbmcgdGhl
IFpURSBrZXJuZWwgY2FsbHMgImdhdGUiICh0aGUgYml0cyB3ZSB1c2UgaGVyZSBhcmUgY2FsbGVk
ICJlbiIpLCB3aGljaCBwcmVzdW1hYmx5CisgKiBlbmFibGVzIGF1dG9tYXRpYyBjbG9jayBnYXRp
bmcuIEJpdCAzLCBpZiBzZXR0YWJsZSwgc2VlbXMgdW51c2VkLiBFLmcuIG9mZnNldCAweDU0IGFj
Y2VwdHMgYWxsCisgKiBiaXRzIGluIDB4Rjc3RjdGN0YgLSBzdWdnZXN0aW5nIFJUQywgSTJDMCBo
YXZlIGFuIGV4dHJhIGdhdGUgYml0LgorICoKKyAqIFRoZSBkZWZhdWx0IG1wbGwgc2V0dGluZ3Mg
bXVsdGlwbHkgdGhlIDI2IE1IeiByZWZlcmVuY2UgY2xvY2sgdGltZXMgMjQuIEEgbXV4IHNlbGVj
dGlvbiBvZiAyNiBNSHoKKyAqIGNvdWxkIG1lYW4gdXNpbmcgdGhlIDI2IE1IeiBvc2NpbGxhdG9y
IGRpcmVjdGx5LCBvciBwYXNzaW5nIGl0IHRocm91Z2ggdGhlIFBMTCBhbmQgZGl2aWRlIGJ5IDI0
LgorICoKKyAqIElmIGEgVUFSVCBpcyBzZXQgdG8gbXBsbC1kNiAoZGVmYXVsdCAxMDQgTUh6KSwg
Y2hhbmdpbmcgdGhlIG1wbGwgbXVsdGlwbGllcnMgZG9lcyBhZmZlY3QgVUFSVAorICogdGltaW5n
IGFzIGl0IHNob3VsZC4gVGhpcyBkb2VzIG5vdCBoYXBwZW4gd2hlbiB0aGUgVUFSVCBpcyBzZXQg
dG8gMjYgTUh6IGlucHV0IG9yIHRpbWVycyB0aGF0CisgKiByZWFkIDI2IE1IeiBpbnB1dC4gVGhp
cyBzdWdnZXN0cyAyNiBNSHogY2xvY2tzIHVzZSB0aGUgcmVmZXJlbmNlIGNsb2NrIGRpcmVjdGx5
LgorICoKKyAqIFRoZSBnZW5lcmFsIGNsb2NrIGZsb3cgb24gdGhpcyBib2FyZCBnb2VzIGZyb20g
b3NjMjZtIGludG8gdGhlIFBMTHMuIFRoZSBQTEwgb3V0cHV0IGlzCisgKiBicmFuY2hlZCBpbnRv
IGEgc21hbGwgbnVtYmVyIG9mIGRpdmlkZWQgZnJlcXVlbmNpZXMgKG1wbGwsIG1wbGwtZDQsIG1w
bGwtZDUsIG1wbGwtZDYsIG1wbGwtZDgsCisgKiBncGxsLCBncGxsLWQyLCBncGxsLWQ0KSBhdCBh
IGhpZ2ggbGV2ZWwuIFRoZXNlIGRpdmlkZWQgZnJlcXVlbmNpZXMgYXMgd2VsbCBhcyBvc2MyNm0g
Z28KKyAqIHRocm91Z2ggYSBzZXJpZXMgb2YgZ2F0ZXMgYXQgb2Zmc2V0IDB4MTQwIGluIHRvcGNy
bS4gVGhlIG91dHB1dCBvZiB0aGVzZSBnYXRlcyBwcm92aWRlIHdjbGtzIGZvcgorICogZXZlcnl0
aGluZy4KKyAqCisgKiBBdCBsZWFzdCAzIG9mIHRob3NlIGdhdGUgb3V0cHV0cyAobXBsbCwgZHBs
bCwgZ3BsbC1kMikgYXJlIGZ1cnRoZXIgZGl2aWRlZCBiZWhpbmQgdGhvc2UgZ2F0ZXMsCisgKiBw
cmVzdW1hYmx5IGluIHRoZSBtYXRyaXggY29udHJvbGxlci4gVGhlcmUgYXJlIG11bHRpcGxlIHBh
dGhzIGhvdyAxMDQgYW5kIDc4IE1IeiBhcmUgZGVyaXZlZCwKKyAqIHNvbWUgc3BlY2lmaWMgdG8g
dG9wY3JtICgweDE0MCBiaXRzIDEgYW5kIDQpLCBzb21lIHNwZWNpZmljIHRvIG1hdHJpeCAoMHgx
NDAgYml0IDkpLiBUaGVyZSBhcmUKKyAqIGxpa2VseSAzICJjb3BpZXMiIG9mIHRoZSA3OCBNSHog
Y2xvY2sgYW5kIHR3byA1MCBNSHogb25lcy4KKyAqCisgKiBQY2xrIGlzIG5vdCBnYXRlZCBieSB0
aGUgMHgxNDAgZ2F0ZXMgYXQgYWxsLiBMaWtld2lzZSBvc2MzMmsgaXMgZmVkIHRvIHRoZSB0aW1l
cnMgd2l0aG91dAorICogcGFzc2luZyB0aHJvdWdoIHRoaXMgZ2F0ZSwgZXZlbiBmb3IgY29uc3Vt
ZXJzIG9uIG1hdHJpeC9MU1AuIFRvcGNybSBvc2MyNm0gd2Nsa3MgYXJlIG5vdCBnYXRlZAorICog
ZWl0aGVyLCBidXQgdG9wLWNvbnN1bWVkIFBMTCBjbG9ja3MgYXJlLgorICovCisKK2VudW0gdG9w
X2Nsb2NrX2lkcyB7CisJWlhfQ0xLX01QTEwsCisJWlhfQ0xLX1VQTEwsCisJWlhfQ0xLX0RQTEwy
LAorCVpYX0NMS19EUExMMl9EMiwKKwlaWF9DTEtfRFBMTCwKKwlaWF9DTEtfR1BMTCwKKworCVpY
X0NMS19PU0MyNk1fRDIsCisJWlhfQ0xLX1RPUF9NUExMX0QyX1BSRUdBVEUsCisJWlhfQ0xLX1RP
UF9NUExMX0Q1X1BSRUdBVEUsCisJWlhfQ0xLX1RPUF9NUExMX0Q2X1BSRUdBVEUsCisJWlhfQ0xL
X1RPUF9NUExMX0Q4X1BSRUdBVEUsCisJWlhfQ0xLX1RPUF9VUExMX0QxMl9QUkVHQVRFLAorCVpY
X0NMS19UT1BfR1BMTF9EMl9QUkVHQVRFLAorCVpYX0NMS19UT1BfR1BMTF9ENF9QUkVHQVRFLAor
CisJWlhfQ0xLX1RPUF9NUExMX0QyLAorCVpYX0NMS19UT1BfTVBMTF9EOCwKKwlaWF9DTEtfVE9Q
X01QTExfRDYsCisJWlhfQ0xLX1RPTUFUUklYX01QTExfRDUsCisJWlhfQ0xLX1RPTUFUUklYX01Q
TEwsCisJWlhfQ0xLX1RPTUFUUklYX0RQTEwsCisJWlhfQ0xLX1RPUF9VUExMX0QxMiwKKwlaWF9D
TEtfVE9QX1VQTEwsCisJWlhfQ0xLX1RPUF9HUExMX0Q0LAorCVpYX0NMS19UT01BVFJJWF9HUExM
X0QyLAorCVpYX0NMS19UT01BVFJJWF9HUExMLAorCVpYX0NMS19UT01BVFJJWF9PU0MyNk0sCisK
KwlaWF9DTEtfVE9QX01QTExfRDJfRDQsCisJWlhfQ0xLX1RPUF9NUExMX0QyX0QxMywKKwlaWF9D
TEtfVE9QX1VQTExfRDEyX0QyLAorCVpYX0NMS19UT1BfR1BMTF9ENF9EMiwKKworCVpYX0NMS19N
MF9NVVgsCisJWlhfQ0xLX0FIQl9NVVgsCisJWlhfQ0xLX1RJTUVSX1QwOF9NVVgsCisJWlhfQ0xL
X1RJTUVSX1QwOV9NVVgsCisJWlhfQ0xLX1RJTUVSX1QxMl9NVVgsCisJWlhfQ0xLX1RJTUVSX1Qx
M19NVVgsCisJWlhfQ0xLX1RJTUVSX1QxNF9NVVgsCisJWlhfQ0xLX1RJTUVSX1QxNV9NVVgsCisJ
WlhfQ0xLX1RJTUVSX1QxNl9NVVgsCisJWlhfQ0xLX1RJTUVSX1QxN19NVVgsCisJWlhfQ0xLX1dE
VF9UMThfTVVYLAorCVpYX0NMS19JMkMwX01VWCwKKwlaWF9DTEtfVUFSVDBfTVVYLAorCVpYX0NM
S19PVVQwX01VWCwKKwlaWF9DTEtfT1VUMV9NVVgsCisJWlhfQ0xLX09VVDJfTVVYLAorCVpYX0NM
S19STUlJUEhZX01VWCwKKworCVpYX0NMS19USU1FUl9UMDhfRElWLAorCVpYX0NMS19USU1FUl9U
MDlfRElWLAorCVpYX0NMS19USU1FUl9UMTJfRElWLAorCVpYX0NMS19USU1FUl9UMTNfRElWLAor
CVpYX0NMS19USU1FUl9UMTRfRElWLAorCVpYX0NMS19USU1FUl9UMTVfRElWLAorCVpYX0NMS19U
SU1FUl9UMTZfRElWLAorCVpYX0NMS19USU1FUl9UMTdfRElWLAorCVpYX0NMS19XRFRfVDE4X0RJ
ViwKKwlaWF9DTEtfVVNJTTFfRElWLAorCisJWlhfQ0xLX0FIQl9QQ0xLLAorCVpYX0NMS19BSEJf
V0NMSywKKwlaWF9DTEtfU1JBTTFfUENMSywKKwlaWF9DTEtfU1JBTTJfUENMSywKKwlaWF9DTEtf
UE1NX1dDTEssCisJWlhfQ0xLX1BNTV9QQ0xLLAorCVpYX0NMS19USU1FUl9UMDhfV0NMSywKKwla
WF9DTEtfVElNRVJfVDA4X1BDTEssCisJWlhfQ0xLX1RJTUVSX1QwOV9XQ0xLLAorCVpYX0NMS19U
SU1FUl9UMDlfUENMSywKKwlaWF9DTEtfVElNRVJfVDEyX1dDTEssCisJWlhfQ0xLX1RJTUVSX1Qx
Ml9QQ0xLLAorCVpYX0NMS19USU1FUl9UMTNfV0NMSywKKwlaWF9DTEtfVElNRVJfVDEzX1BDTEss
CisJWlhfQ0xLX1RJTUVSX1QxNF9XQ0xLLAorCVpYX0NMS19USU1FUl9UMTRfUENMSywKKwlaWF9D
TEtfVElNRVJfVDE1X1dDTEssCisJWlhfQ0xLX1RJTUVSX1QxNV9QQ0xLLAorCVpYX0NMS19USU1F
Ul9UMTZfV0NMSywKKwlaWF9DTEtfVElNRVJfVDE2X1BDTEssCisJWlhfQ0xLX1RJTUVSX1QxN19X
Q0xLLAorCVpYX0NMS19USU1FUl9UMTdfUENMSywKKwlaWF9DTEtfV0RUX1QxOF9XQ0xLLAorCVpY
X0NMS19XRFRfVDE4X1BDTEssCisJWlhfQ0xLX0kyQzBfV0NMSywKKwlaWF9DTEtfSTJDMF9QQ0xL
LAorCVpYX0NMS19VQVJUMF9XQ0xLLAorCVpYX0NMS19VQVJUMF9QQ0xLLAorCVpYX0NMS19VU0Jf
V0NMSywKKwlaWF9DTEtfVVNCX1BDTEssCisJWlhfQ0xLX0hTSUNfV0NMSywKKwlaWF9DTEtfSFNJ
Q19QQ0xLLAorCVpYX0NMS19SVENfV0NMSywKKwlaWF9DTEtfUlRDX1BDTEssCisJWlhfQ0xLX1VT
SU0xX1dDTEssCisJWlhfQ0xLX1VTSU0xX1BDTEssCisJWlhfQ0xLX0xQTV9HU01fV0NMSywKKwla
WF9DTEtfTFBNX0dTTV9QQ0xLLAorCVpYX0NMS19MUE1fTFRFX1dDTEssCisJWlhfQ0xLX0xQTV9M
VEVfUENMSywKKwlaWF9DTEtfTFBNX1REX1dDTEssCisJWlhfQ0xLX0xQTV9URF9QQ0xLLAorCVpY
X0NMS19MUE1fV19XQ0xLLAorCVpYX0NMS19MUE1fV19QQ0xLLAorCVpYX0NMS19PVVQwX1dDTEss
CisJWlhfQ0xLX09VVDFfV0NMSywKKwlaWF9DTEtfT1VUMl9XQ0xLLAorCVpYX0NMS19PVVQzMktf
V0NMSywKKwlaWF9DTEtfUk1JSVBIWV9XQ0xLLAorfTsKKworLyogVXNlZCBmb3IgZ2F0ZXMgd2hl
cmUgd2UgZG9uJ3Qga25vdyB0aGUgcGFyZW50IGlucHV0KHMpLiBBc3N1bWUgZ2VuZXJhbCBvc2Np
bGxhdG9yICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHp4X3BhcmVudF9kZXNjIGNsa191bmtub3du
ID0gUEFSRU5UX0ZXKCJvc2MyNm0iKTsKKworLyogRm9yIGNsb2NrcyB0aGF0IGFyZSBrbm93biB0
byB1c2UgdGhlIHVuZ2F0ZWQgb3NjMjZtIGlucHV0ICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHp4
X3BhcmVudF9kZXNjIGNsa19tYWluW10gPSB7CisJUEFSRU5UX0ZXKCJvc2MyNm0iKSwKK307CisK
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgenhfcGFyZW50X2Rlc2MgZHBsbF9wYXJlbnRzW10gPSB7CisJ
UEFSRU5UX0lEKFpYX0NMS19EUExMMl9EMiksCisJUEFSRU5UX0ZXKCJvc2MyNm0iKSwKK307CisK
Ky8qCisgKiBBSEI6IFRoZSBjbG9jayBtdXggd29ya3MgYW5kIGltcGFjdCBjYW4gYmUgdGVzdGVk
IGUuZy4gd2l0aCBpcGVyZiBzcGVlZCB0ZXN0aW5nIG9mIHRoZSBVU0IKKyAqIG5ldHdvcmsgY29u
bmVjdGlvbi4gVmFsdWVzIDIgYW5kIDMgZ2l2ZSB0aGUgc2FtZSBzcGVlZCBhbmQgZGVwZW5kIG9u
IHRoZSBzYW1lIGJpdCAoMykgaW4gMHgxNDAuCisgKiBUaGUgbXBsbC1kNiByYXRlIGlzIGdhdGVk
IG9mZiBieSB0aGUgc2FtZSBiaXQgaW4gMHgxNDAgYXMgbTAncyBtcGxsLWQ2LCBidXQgdGhlIGQ4
IGlzIGRpZmZlcmVudC4KKyAqIFRoaXMgbWF5IGluZGljYXRlIHRoYXQgb25lIG9mIHRoZSB0d28g
dXNlcyBhIGRpZmZlcmVudCBjbG9jayByYXRlIHRoYW4gZG9jdW1lbnRlZCBpbiBaVEUncworICog
a2VybmVsLiBUaGUgTTAgc3BlZWQgaXMgZWFzeSB0byBtZWFzdXJlLCBzbyBJIGFtIGNvbmZpZGVu
dCBpbiB0aGUgTTAncyA3OCBNSHogcmF0ZS4gQUhCIGxvb2tzCisgKiBsaWtlIDc4IHJhdGhlciB0
aGFuIDUyLCBidXQgY29uZmlkZW5jZSBpcyBsb3dlciBiZWNhdXNlIFJBTSByZWFkIHRlc3RzIGFy
ZSBpbmZsdWVuY2VkIGJ5IENQVQorICogb3ZlcmhlYWQgdG9vLgorICovCisKK3N0YXRpYyBjb25z
dCBzdHJ1Y3QgenhfcGFyZW50X2Rlc2MgYWhiX3NlbFtdID0geworCVBBUkVOVF9GVygib3NjMjZt
IiksCisJUEFSRU5UX0lEKFpYX0NMS19UT1BfTVBMTF9ENiksCS8qIDEwNCBNSHogKi8KKwlQQVJF
TlRfSUQoWlhfQ0xLX1RPUF9NUExMX0Q4KSwJLyogNzggTUh6ICovCisJUEFSRU5UX0lEKFpYX0NM
S19UT1BfTVBMTF9EOCksCS8qIDc4IE1IeiAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB6
eF9wYXJlbnRfZGVzYyB0aW1lcl90b3Bfc2VsW10gPSB7CisJUEFSRU5UX0ZXKCJvc2MzMmsiKSwK
KwlQQVJFTlRfRlcoIm9zYzI2bSIpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB6eF9wYXJl
bnRfZGVzYyB1YXJ0X3RvcF9zZWxbXSA9IHsKKwlQQVJFTlRfRlcoIm9zYzI2bSIpLAorCVBBUkVO
VF9JRChaWF9DTEtfVE9QX01QTExfRDYpLAkvKiAxMDQgTUh6LCBzaGFyaW5nIE0wJ3MgYW5kIGFo
YidzIDB4MTQwIGdhdGUgKi8KK307CisKKy8qCisgKiBUaGUgQ29ydGV4IE0wIGNvcHJvY2Vzc29y
LiBJdCBpcyByZXNwb25zaWJsZSBmb3IgYm9vdGluZyB0aGUgYm9hcmQgYW5kIHJ1bnMgc29tZSBw
b3dlciBtYW5hZ2VtZW50CisgKiBoZWxwZXIgY29kZSBvbiB0aGUgc3RvY2sgZmlybXdhcmUuIFRo
ZSBNMCBycHJvYyBpdHNlbGYgaXMgbm90IGNyaXRpY2FsLCBidXQgbW9zdCBvZiB0b3Bjcm0ncwor
ICogcmVnaXN0ZXJzIGJlY29tZSB1bnJlYWRhYmxlIGlmIHRoaXMgaXMgZ2F0ZWQgb2ZmIG9yIGJl
Y29tZSBzbG93IHdoZW4gY2xvY2tlZCBhdCAzMiBrSHosIGUuZy4gR1BJTworICogYmVjb21lcyBi
b3JkZXJsaW5lIHVudXNhYmxlIGF0IDMyIGtIei4KKyAqCisgKiBUaGVyZSBpcyBubyBkZWRpY2F0
ZWQgTTAgZ2F0ZS4gRGlzYWJsaW5nIGFoYi13Y2xrIGxvb2tzIGxpa2UgdGhlIE0wIHN0b3BzIGZy
b20gQTUzJ3MgcG9pbnQgb2YKKyAqIHZpZXcsIGJ1dCBpdCBtZXJlbHkgYnJlYWtzIHRoZSBBNTMn
cyBhYmlsaXR5IHRvIGNvbW11bmljYXRlIHdpdGggaXQsIGFuZCBNMCdzIGFiaWxpdHkgdG8KKyAq
IGNvbW11bmljYXRlIHdpdGggdGhlIHN0YW5kYXJkIFVBUlQgb24gTFNQLiBNMCBrZWVwcyBydW5u
aW5nIHdpdGggYm90aCBhaGItd2NsayBhbmQgYWhiLXBjbGsKKyAqIGdhdGVkIG9mZiBhbmQgY2Fu
IHJlLWVuYWJsZSB0aGUgZ2F0ZXMuCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgenhfcGFyZW50
X2Rlc2MgbTBfc2VsW10gPSB7CisJUEFSRU5UX0ZXKCJvc2MyNm0iKSwKKwlQQVJFTlRfSUQoWlhf
Q0xLX1RPUF9NUExMX0Q2KSwJCS8qIDEwNCBNSHogKi8KKwlQQVJFTlRfSUQoWlhfQ0xLX1RPUF9N
UExMX0QyX0Q0KSwJLyogNzggTUh6LCBidXQgZGlmZmVyZW50IGdhdGUgdGhhbiB0aGUgYWhiIDc4
IE1IeiAqLworCVBBUkVOVF9GVygib3NjMzJrIiksCQkJLyogWWVzLCB0ZXN0ZWQuIEl0IGlzIFNM
TExMT09PT09XV1cuICovCit9OworCisvKgorICogQ2xrLW91dDAvMS8yLzMyazogVGhlc2UgY2xv
Y2tzIGFyZSBleHBvc2VkIG9uIEdQSU9zIDE1LCAxNiwgMTcgYW5kIDE4IHJlc3BlY3RpdmVseS4g
VGhleSBhcmUgdXNlZAorICogaW4gWlRFJ3MgY2FtZXJhIGFuZCBzb3VuZCBjb2RlLCBieSBkaXJl
Y3RseSBwb2tpbmcgaW50byB0aGUgY2xvY2sgcmVnaXN0ZXJzIGZyb20gdGhlIGRldmljZQorICog
ZHJpdmVycy4gVW50aWwgdGhlIHJlc3BlY3RpdmUgZGV2aWNlcyBhcmUgc3VwcG9ydGVkIHRoZXkg
Y2FuIHNhZmVseSBiZSBzd2l0Y2hlZCBvZmYuCisgKgorICogRm9yIGNsay1vdXQxIFpURSdzIGNh
bWVyYSBjb2RlIHNheXMgdGhlIGZvbGxvd2luZzoKKyAqCisgKiAwIC0+IDIwIE1IegorICogMSAt
PiA0MCBNSHoKKyAqIDIgLT4gMTMgTUh6CisgKiAzIC0+IDI2IE1IegorICoKKyAqIDAgYW5kIDEg
cmVhZCBmcm9tIHVwbGwuIEkgY29uZmlybWVkIHRoZWlyIHJhdGVzICh1cGxsLWQyNCBhbmQgdXBs
bC1kMTIpIGJ5IHNldHRpbmcgdXBsbCB0byBhIHZlcnkKKyAqIGxvdyBmcmVxdWVuY3kgYW5kIHNh
bXBsaW5nIHRoZSBjbG9jayBieSBHUElPIHJlYWRzLiBUaGUgb3V0cHV0cyBvZiAyIGFuZCAzIGFy
ZSB3YXkgdG9vIGhpZ2ggdG8KKyAqIHRlc3QgdGhhdCB3YXkuIE5laXRoZXIgaXMgcmVhZGluZyBm
cm9tIGFueSBQTEwsIHRoZXkga2VlcCBvc2NpbGxhdGluZyB3aGVuIGFsbCBQTExzIGFyZSBkaXNh
YmxlZC4KKyAqIEkgYW0gZmFpcmx5IHN1cmUgdGhhdCAzIGlzIGp1c3QgZGlyZWN0IG9zYzI2bSBi
ZWNhdXNlIGl0IHBlcmZlY3RseSBtYXRjaGVzIHdoYXQgb3V0MiBpcworICogc2hvd2luZyBpbiBp
dHMgMjYgTUh6IHNldHRpbmcuCisgKgorICogQ2xrLW91dDIgaXMgc2ltaWxhciwgYnV0IGl0IGhh
cyBvbmx5IG9uZSBjb250cm9sIGJpdCBpbiB0b3AgMHgzNCBiaXQgOC4gTmVpdGhlciBzZXR0aW5n
IHNlbGVjdHMKKyAqIGEgUExMIG91dHB1dC4gV2hlbiBzZXR0aW5nICoweDM0ID0gMHgwODAsIGNs
ay1vdXQxIGFuZCBjbGstb3V0MiBhcmUgaW4gbG9ja3N0ZXAsIHByZXN1bWFibHkKKyAqIHJ1bm5p
bmcgYXQgMTMgTUh6LiAweDFjMCBhbHNvIHJ1bnMgaW4gbG9ja3N0ZXAsIHByZXN1bWFibHkgMjYg
TUh6LgorICoKKyAqIGNsay1vdXQwIGhhcyBhIG11eCBpbiBiaXQgNS4gVmFsdWUgMCBtb3N0IGxp
a2VseSBzZWxlY3RzIG9zYzI2bS4gSSBhbSBub3QgZW50aXJlbHkgc3VyZSBhYm91dAorICogdmFs
dWUgMSAod2hpY2ggaXMgdGhlIGRlZmF1bHQpLCBidXQgdGhlIG0wIG11eCBoYXMgYW4gaW1wYWN0
IG9uIGl0LiBJdCBsb29rcyBsaWtlIGEgZGVidWcgcGluCisgKiB0aGF0IGV4cG9zZXMgc29tZSBj
b3JlIGNsb2NrLgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHp4X3BhcmVudF9kZXNjIG91dDBf
c2VsW10gPSB7CisJUEFSRU5UX0ZXKCJvc2MyNm0iKSwKKwlQQVJFTlRfSUQoWlhfQ0xLX00wX01V
WCksCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHp4X3BhcmVudF9kZXNjIG91dDFfc2VsW10g
PSB7CisJUEFSRU5UX0lEKFpYX0NMS19UT1BfVVBMTF9EMTJfRDIpLAkvKiAyMCBNSHogKi8KKwlQ
QVJFTlRfSUQoWlhfQ0xLX1RPUF9VUExMX0QxMiksCQkvKiA0MCBNSHogKi8KKwlQQVJFTlRfSUQo
WlhfQ0xLX09TQzI2TV9EMiksCQkvKiAxMyBNSHogKi8KKwlQQVJFTlRfRlcoIm9zYzI2bSIpLAor
fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB6eF9wYXJlbnRfZGVzYyBvdXQyX3NlbFtdID0gewor
CVBBUkVOVF9JRChaWF9DTEtfT1NDMjZNX0QyKSwJCS8qIDEzIE1IeiAqLworCVBBUkVOVF9GVygi
b3NjMjZtIiksCit9OworCisvKgorICogQ2xrLW8gaXMgc2ltaWxhciB0byBjbGstb3V0KiwgcHJv
dmlkaW5nIGEgY2xvY2sgb24gR1BJTyAyMCwgcHJlc3VtYWJseSBmb3IgZHJpdmluZyBhIChSKU1J
SSBwaHkuCisgKiBUaGUgNTAgTUh6IHZhbHVlIGlzIGRvY3VtZW50ZWQgaW4gYSBzdHJheSBjb21t
ZW50IGluIFpURSdzIEdNQUMgZHJpdmVyLiBJIHRlc3RlZCBpdCBzaW1pbGFybHkgdG8KKyAqIHRo
ZSBhYm92ZSBwaW5zLiBNdXggc2V0dGluZyAwIGdpdmVzIGhhbGYgdGhlIGNvdW50IGFzIHNldHRp
bmcgMSBhbmQgc2V0dGluZyAxIGdpdmVzIGdwbGwgZGl2aWRlZAorICogYnkgNCAtIG1hdGNoaW5n
IHRoZSA1MCBNSHogc3VnZ2VzdGVkIGJ5IHRoZSBaVEUgY29tbWVudCBhdCB0aGUgZGVmYXVsdCBn
cGxsIHNldHRpbmdzLiBHYXRpbmcgZ3BsbAorICogc3RvcHMgdGhlIGNsb2NrIGZvciB2YWx1ZXMg
MCBhbmQgMS4KKyAqCisgKiBTZXR0aW5ncyAyIGFuZCAzIGFyZSBwb3NzaWJsZSwgYnV0IHNlZW0g
dG8gcmV0dXJuIGdhcmJhZ2UuIEl0IGlzIGdlbmVyYWxseSBwdWxzaW5nIHVwIGFuZCBkb3duLAor
ICogZXhjZXB0IGlmIGJvdGggZ3BsbCBhbmQgdXBsbCBhcmUgc3RvcHBlZC4gSSBzdXNwZWN0IGl0
IGp1c3QgcmVhZHMgcmFuZG9tIGVsZWN0cmljYWwgZmx1Y3R1YXRpb24KKyAqIGZyb20gb3RoZXIg
cGxhY2VzIGluIHRoZSBib2FyZC4gWWVzLCBJIGhhZCBhIHB1bGwtZG93biBlbmFibGVkIHdoZW4g
dGVzdGluZyB0aGlzLgorICoKKyAqIEkgYW0gbm90IGF3YXJlIG9mIGFueSBib2FyZCB0aGF0IHVz
ZXMgdGhpcyB0aG91Z2guIFRoZSBFdGhlcm5ldC1lcXVpcHBlZCBvbmVzIEkgaGF2ZSBhbGwgcnVu
IHRoZQorICogUEhZIHdpdGggaXRzIG93biBvc2NpbGxhdG9yLgorICovCitzdGF0aWMgY29uc3Qg
c3RydWN0IHp4X3BhcmVudF9kZXNjIHJtaWlfc2VsW10gPSB7CisJUEFSRU5UX0lEKFpYX0NMS19U
T1BfR1BMTF9ENF9EMiksCS8qIDI1IE1IeiAqLworCVBBUkVOVF9JRChaWF9DTEtfVE9QX0dQTExf
RDQpLAkJLyogNTAgTUh6ICovCit9OworCisjZGVmaW5lIFBMTChfbmFtZSwgX3BhcmVudHMsIF9y
YXRlLCBfcmVnLCBfZmxhZ3MpCQlcCisJewkJCQkJCQlcCisJCS50eXBlID0gWlhfQ0xPQ0tfUExM
LAkJCQlcCisJCS5wbGwgPSB7CQkJCQlcCisJCQkubmFtZSA9IF9uYW1lLAkJCQlcCisJCQkucGFy
ZW50cyA9IF9wYXJlbnRzLAkJCVwKKwkJCS5udW1fcGFyZW50cyA9IEFSUkFZX1NJWkUoX3BhcmVu
dHMpLAlcCisJCQkucmF0ZSA9IF9yYXRlLAkJCQlcCisJCQkucmVnID0gX3JlZywJCQkJXAorCQkJ
LmZsYWdzID0gX2ZsYWdzLAkJCVwKKwkJfSwJCQkJCQlcCisJfQorCisjZGVmaW5lIEZJWEVEX0RJ
VihfbmFtZSwgX3BhcmVudCwgX2RpdikJCQkJXAorCXsJCQkJCQkJXAorCQkudHlwZSA9IFpYX0NM
T0NLX0ZJWEVEX0RJViwJCQlcCisJCS5maXhlZF9kaXYgPSB7CQkJCQlcCisJCQkubmFtZSA9IF9u
YW1lLAkJCQlcCisJCQkucGFyZW50ID0gX3BhcmVudCwJCQlcCisJCQkuZGl2ID0gX2RpdiwJCQkJ
XAorCQl9LAkJCQkJCVwKKwl9CisKKyNkZWZpbmUgTVVYKF9uYW1lLCBfcGFyZW50cywgX3JlZywg
X3NoaWZ0LCBfc2l6ZSkJCVwKKwl7CQkJCQkJCVwKKwkJLnR5cGUgPSBaWF9DTE9DS19NVVgsCQkJ
CVwKKwkJLm11eCA9IHsJCQkJCVwKKwkJCS5uYW1lID0gX25hbWUsCQkJCVwKKwkJCS5wYXJlbnRz
ID0gX3BhcmVudHMsCQkJXAorCQkJLm51bV9wYXJlbnRzID0gQVJSQVlfU0laRShfcGFyZW50cyks
CVwKKwkJCS5yZWcgPSBfcmVnLAkJCQlcCisJCQkuc2hpZnQgPSBfc2hpZnQsCQkJXAorCQkJLnNp
emUgPSBfc2l6ZSwJCQkJXAorCQl9LAkJCQkJCVwKKwl9CisKKyNkZWZpbmUgRElWKF9uYW1lLCBf
cGFyZW50LCBfcmVnLCBfc2hpZnQsIF9zaXplKQkJXAorCXsJCQkJCQkJXAorCQkudHlwZSA9IFpY
X0NMT0NLX0RJViwJCQkJXAorCQkuZGl2ID0gewkJCQkJXAorCQkJLm5hbWUgPSBfbmFtZSwJCQkJ
XAorCQkJLnBhcmVudCA9IF9wYXJlbnQsCQkJXAorCQkJLnJlZyA9IF9yZWcsCQkJCVwKKwkJCS5z
aGlmdCA9IF9zaGlmdCwJCQlcCisJCQkuc2l6ZSA9IF9zaXplLAkJCQlcCisJCX0sCQkJCQkJXAor
CX0KKworI2RlZmluZSBHQVRFKF9uYW1lLCBfcGFyZW50LCBfcmVnLCBfc2hpZnQsIF9mbGFncykJ
CVwKKwl7CQkJCQkJCVwKKwkJLnR5cGUgPSBaWF9DTE9DS19HQVRFLAkJCQlcCisJCS5nYXRlID0g
ewkJCQkJXAorCQkJLm5hbWUgPSBfbmFtZSwJCQkJXAorCQkJLnBhcmVudCA9IF9wYXJlbnQsCQkJ
XAorCQkJLnJlZyA9IF9yZWcsCQkJCVwKKwkJCS5mbGFncyA9IF9mbGFncywJCQlcCisJCQkuc2hp
ZnQgPSBfc2hpZnQsCQkJXAorCQl9LAkJCQkJCVwKKwl9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg
enhfY2xvY2sgengyOTc1MjB2M190b3BfY2xvY2tzW10gPSB7CisJLyoKKwkgKiBEZWZhdWx0IHNl
dHRpbmc6IDB4NDgwNDBjMTEuIDYyNC8zMTIvMTU2LiBPbmx5IGEgc2luZ2xlIHBvc3NpYmxlIHBh
cmVudC4gVGhpcyBpcyB0aGUKKwkgKiBQTEwgZm9yIHByZXR0eSBtdWNoIGV2ZXJ5dGhpbmcsIGlu
Y2x1ZGluZyBDUFUsIFJBTSBhbmQgVVNCLgorCSAqCisJICogQ2hhbmdpbmcgdGhpcyBQTEwgbWFr
ZXMgaXQgcG9zc2libGUgdG8gb3ZlcmNsb2NrIHRoZSBDUFUgb3IgZG8gbW9yZSBmaW5lIGdyYWlu
ZWQKKwkgKiB1bmRlcmNsb2NraW5nIHRoYW4gdGhlIENQVSdzIG11eCBhbGxvd3MuIEl0IGRvZXMg
cnVuIGludG8gdHdvIHByb2JsZW1zIHRob3VnaDogVGhlIFVTQgorCSAqIGRldmljZSB1c2VzIHRo
aXMgUExMJ3Mgb3V0cHV0IGRpcmVjdGx5IGFuZCBpcyAqdmVyeSogc2Vuc2l0aXZlIHRvIGRpZmZl
cmVuY2VzLiBEUkFNCisJICogaXMgYWxzbyBmZWQgYnkgdGhpcyBjbG9jayBhbmQgbmVlZHMgdG8g
YmUgcmUtdHJhaW5lZCBvbiBsYXJnZXIgY2hhbmdlcywgd2hpY2ggbmVlZHMgdG8KKwkgKiBiZSBk
b25lIGJ5IHRoZSBzdGFnZSAxIGJvb3QgbG9hZGVyLgorCSAqLworCVtaWF9DTEtfTVBMTF0gICAg
ICAgICAgICAgID0gUExMKCJtcGxsIiwgY2xrX21haW4sIDAsIDB4OCwgMCksCisKKwkvKgorCSAq
IFpURSdzIGNvZGUgY2FsbHMgdGhpcyBQTEwgInVwbGwiLiBUaGUgb25seSBwb3NzaWJsZSBjb25z
dW1lcnMgSSBmb3VuZCBhcmUgY2xrLW91dDEsCisJICogd2hpY2ggb3V0cHV0cyB0aGlzIGNsb2Nr
IG9uIEdQSU8gMTYgYW5kIEhTSUMuIEhTSUMgZG9lc24ndCBoYXZlIGFueXRoaW5nIGNvbm5lY3Rl
ZCB0bworCSAqIGl0IG9uIHRoZSBkZXZpY2VzIEkgdGVzdGVkLiBUaGUgZGV2aWNlIHRoYXQgY29u
c3VtZXMgY2xrLW91dDEgc2VlbXMgdG8gYmUgYW4gU1BJCisJICogY2FtZXJhLCB3aGljaCBJIGhh
dmVuJ3Qgc2VlbiBpbiBhbnkgZGV2aWNlIHNvIGZhci4gWlRFIG1hbmlwdWxhdGVzIHRoaXMgUExM
IGRpcmVjdGx5IG91dAorCSAqIG9mIHRoZSBjYW1lcmEgY29kZSwgc28gaXQgaXMgdW5saWtlbHkg
dG8gaGF2ZSBhbm90aGVyIGNvbnN1bWVyLgorCSAqCisJICogTG9uZyBzdG9yeSBzaG9ydCwgc2h1
dCBpdCBvZmYuCisJICovCisJW1pYX0NMS19VUExMXSAgICAgICAgICAgICAgPSBQTEwoInVwbGwi
LCBjbGtfbWFpbiwgMCwgMHgxMCwgMCksCisKKwkvKgorCSAqIERlZmF1bHQgdmFsdWUgMHg0ODM0
OTAyZC4gRmVlZHMgZHBsbC4gNDYuMDggTUh6LiBCaXQgMjUgY2FuIGJlIHNldCwgc28gdHdvIHBh
cmVudHMgYXJlCisJICogcG9zc2libGUuIEl0IGxvb2tzIGxpa2UgYm90aCB2YWx1ZXMgc2VsZWN0
IHRoZSAyNiBNSHogb3NjaWxsYXRvciB0aG91Z2guCisJICoKKwkgKiBTaW5jZSBkcGxsJ3MgcHJl
cGFyZSBtYXkgZGVwZW5kIG9uIHRoaXMgY2xvY2sgZ2VuZXJhdGluZyBhIHVzYWJsZSBzaWduYWws
IGl0IG5lZWRzIHRvIGJlCisJICogZW5hYmxlZCB3aGVuIHByZXBhcmVkLgorCSAqCisJICogSXQg
aXNuJ3QgbmFtZWQgYW55d2hlcmUgaW4gWlRFJ3MgY29kZSwgYnV0IGNwa28ua28gaGFzIHRoZSBz
dHJpbmcgImRwbGwyIiBzb21ld2hlcmUgaW4KKwkgKiBpdHMgY2xvY2sgdGFibGVzLgorCSAqLwor
CVtaWF9DTEtfRFBMTDJdICAgICAgICAgICAgID0gUExMKCJkcGxsMiIsIGNsa19tYWluLCAwLCAw
eDEwMCwgQ0xLX1pYX1BMTF9QUkVQQVJFX0lTX0VOQUJMRSksCisJW1pYX0NMS19EUExMMl9EMl0g
ICAgICAgICAgPSBGSVhFRF9ESVYoImRwbGwyLWQyIiwgUEFSRU5UX0lEKFpYX0NMS19EUExMMiks
IDIpLAorCisJLyoKKwkgKiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIDQ5MS41MiBNSHogYW5kIG1l
YXN1cmVtZW50IHdpdGggdGhlIExTUCBURE0gZGV2aWNlIHN1cHBvcnRzIHRoaXMuCisJICogVGhl
IGRlZmF1bHQgdmFsdWUgaXMgMHg0ODBjMjAxMSwgYnV0IG5vdCBhbGwgYm9vdCBsb2FkZXJzIHNl
dCBpdCB1cC4gVG8gZ2V0IHRvIDQ5MS41MgorCSAqIHdpdGggdGhlc2Ugc2V0dGluZ3MgaXQgbmVl
ZHMgYSAyMy4wNCBNSHogcmVmZXJlbmNlIGNsb2NrLCB3aGljaCBtYXRjaGVzIGRwbGwyLWQyLiBJ
ZgorCSAqIGRwbGwyIGlzIGRpc2FibGVkLCBkcGxsIGxvc2VzIGl0cyBsb2NrLiBXZSBzZXQgdGhl
IGZyZXF1ZW5jeSBvbiB0aGlzIFBMTCBpZiB3ZSBmaW5kIGl0IGlzCisJICogbm90IHByZXBhcmVk
IGJ5IHRoZSBib290IGxvYWRlci4KKwkgKgorCSAqIFRoZSBwcm9wcmlldGFyeSBMVEUgZHJpdmVy
IGFuZC9vciBycHJvYyBwcmVwYXJlIGFuZCB1bnByZXBhcmUgaXQuIFRETSBhbmQgSTJTIGNhbiB1
c2UgaXQuCisJICoKKwkgKiBJdCBhY2NlcHRzIHBhcmVudCB2YWx1ZXMgMCwgMSwgMiBhbmQgMy4g
UGFyZW50IDAgaXMgZHBsbDItZDIuIFRoZSBvdGhlcnMgbG9vayBsaWtlCisJICogb3NjMjZtLiBX
aXRoIGEgcGFyZW50ICE9IDAgZHBsbCBuZXZlciBsb3NlcyBpdHMgbG9jayBldmVuIHdoZW4gYWxs
IG90aGVyIFBMTHMgYXJlIG9mZgorCSAqIGFuZCB0aGUgVERNIGNvdW50ZXIgcmVnaXN0ZXIgaW5j
cmVhc2VzIGF0IGEgcmF0ZSBjb25zaXN0ZW50IHdpdGggYSAyNi4wLzIzLjA0IGNsb2NrCisJICog
aW5jcmVhc2UuCisJICovCisJW1pYX0NMS19EUExMXSAgICAgICAgICAgICAgPSBQTEwoImRwbGwi
LCBkcGxsX3BhcmVudHMsIDQ5MTUyMDAwMCwgMHgxOCwgMCksCisKKwkvKgorCSAqICJnIiBpcyBl
aXRoZXIgZm9yICJnZW5lcmFsIiBvciAiZ2lnYWhlcnR6Ii4gVGhlIFZDTyBydW5zIGF0IDEgR0h6
LiBPdXRwdXQgY2xvY2tzIGFyZSAyMDAsCisJICogMTAwLCA1MCwgMjUsIC4uLiBNSHouIEl0IGlz
IHVzZWQgb3B0aW9uYWxseSBieSBTRElPIGFuZCBRU1BJIGFuZCBjYW4gZHJpdmUgYSBHUElPIGNs
b2NrCisJICogb3V0cHV0IGZvciBSTUlJLCBzbyBpdCBkb2Vzbid0IHNlZW0gdmVyeSBnZW5lcmFs
LgorCSAqLworCVtaWF9DTEtfR1BMTF0gICAgICAgICAgICAgID0gUExMKCJncGxsIiwgY2xrX21h
aW4sIDAsIDB4MTEwLCAwKSwKKworCS8qIG9zYzI2bSBkaXZpc2lvbiBmb3IgY2xrX291dFggKi8K
KwlbWlhfQ0xLX09TQzI2TV9EMl0gICAgICAgICA9IEZJWEVEX0RJVigib3NjMjZtLWQyIiwgY2xr
X21haW5bMF0sIDIpLAorCisJLyogUHJlLTB4MTQwIGRpc3RyaWJ1dGlvbiBmaXhlZCBkaXZzICov
CisJW1pYX0NMS19UT1BfTVBMTF9EMl9QUkVHQVRFXSAgPSBGSVhFRF9ESVYoIm1wbGwtZDIiLCBQ
QVJFTlRfSUQoWlhfQ0xLX01QTEwpLCAyKSwKKwlbWlhfQ0xLX1RPUF9NUExMX0Q1X1BSRUdBVEVd
ICA9IEZJWEVEX0RJVigibXBsbC1kNSIsIFBBUkVOVF9JRChaWF9DTEtfTVBMTCksIDUpLAorCVta
WF9DTEtfVE9QX01QTExfRDZfUFJFR0FURV0gID0gRklYRURfRElWKCJtcGxsLWQ2IiwgUEFSRU5U
X0lEKFpYX0NMS19NUExMKSwgNiksCisJW1pYX0NMS19UT1BfTVBMTF9EOF9QUkVHQVRFXSAgPSBG
SVhFRF9ESVYoIm1wbGwtZDgiLCBQQVJFTlRfSUQoWlhfQ0xLX01QTEwpLCA4KSwKKwlbWlhfQ0xL
X1RPUF9VUExMX0QxMl9QUkVHQVRFXSA9IEZJWEVEX0RJVigidXBsbC1kMTIiLCBQQVJFTlRfSUQo
WlhfQ0xLX1VQTEwpLCAxMiksCisJW1pYX0NMS19UT1BfR1BMTF9EMl9QUkVHQVRFXSAgPSBGSVhF
RF9ESVYoImdwbGwtZDIiLCBQQVJFTlRfSUQoWlhfQ0xLX0dQTEwpLCAyKSwKKwlbWlhfQ0xLX1RP
UF9HUExMX0Q0X1BSRUdBVEVdICA9IEZJWEVEX0RJVigiZ3BsbC1kNCIsIFBBUkVOVF9JRChaWF9D
TEtfR1BMTCksIDQpLAorCisJLyoKKwkgKiB0b3Bjcm0gZGlzdHJpYnV0aW9uIGdhdGVzLiBUaGVz
ZSBhcmUgY29tcGxpY2F0ZWQsIGJ1dCBzaGVkIGEgbG90IG9mIGxpZ2h0IG9uIHRoZSBib2FyZCdz
CisJICogY2xvY2sgZGlzdHJpYnV0aW9uLgorCSAqCisJICogU2V0dGFibGUgbWFzazogMHgwMTcz
MzNGRi4gR2VuZXJhbGx5IG9uZSBuaWJibGUgcGVyIFBMTCwgZXhjZXB0IGZvciBNUExMIHRoYXQg
aGFzIG1vcmUuCisJICogT25lIGZvciBvc2MyNm0gd29yayBjbG9jay4gcGNsayBhbmQgb3NjMzJr
IGFyZSBub3QgZ2F0ZWQgZ2xvYmFsbHkgaGVyZSBvciBhbnl3aGVyZSBlbHNlCisJICogYXMgZmFy
IGFzIEkgY2FuIHNlZS4KKwkgKgorCSAqIElmIHlvdSB3YW50IHRvIHRlc3QgeW91ciB1bmRlcnN0
YW5kaW5nIG9mIHRoaXMgYm9hcmQsIHRyeSB0byBtYW51YWxseSBjb25maWd1cmUgaXQgaW50byBh
CisJICogc2V0dXAgd2hlcmUgYml0IDI0IG9yIGJpdCA5IGFyZSBvZmYgd2l0aG91dCBjcmFzaGlu
ZyBpdC4KKwkgKi8KKworCS8qIEJpdCAwOiBObyBrbm93biBjb25zdW1lciAqLworCS8qIEJpdCAx
OiBNMCdzIDc4IE1IeiBzZWxlY3Rpb24sIGJ1dCBzb21laG93IGFsc28gaW52b2x2ZWQgaW4gVVNC
IHRvbyAqLworCVtaWF9DTEtfVE9QX01QTExfRDJdICAgICAgID0gR0FURSgidG9wLW1wbGwtZDIi
LCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9NUExMX0QyX1BSRUdBVEUpLAorCQkJCQkgIDB4MTQwLCAx
LCAwKSwKKwkvKiBCaXQgMjogTm8ga25vd24gY29uc3VtZXIsIG5hbWVkICJtcGxsXzQ4bV9jbGsi
IGluIFpURSdzIGNwa28ua28gYmxvYiAqLworCVtaWF9DTEtfVE9QX01QTExfRDhdICAgICAgID0g
R0FURSgidG9wLW1wbGwtZDgiLCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9NUExMX0Q4X1BSRUdBVEUp
LAorCQkJCQkgIDB4MTQwLCAzLCAwKSwKKwlbWlhfQ0xLX1RPUF9NUExMX0Q2XSAgICAgICA9IEdB
VEUoInRvcC1tcGxsLWQ2IiwgUEFSRU5UX0lEKFpYX0NMS19UT1BfTVBMTF9ENl9QUkVHQVRFKSwK
KwkJCQkJICAweDE0MCwgNCwgMCksCisJLyogQml0IDU6IE5vIGtub3duIGNvbnN1bWVyLiAibXBs
bF8xNTZtX2NsayIgaW4gY3Brby5rbyAqLworCVtaWF9DTEtfVE9NQVRSSVhfTVBMTF9ENV0gID0g
R0FURSgibWF0cml4LW1wbGwtZDUiLCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9NUExMX0Q1X1BSRUdB
VEUpLAorCQkJCQkgIDB4MTQwLCA2LCBaWDI5NzUyMFYzX0FYSV9DQU5ESURBVEUpLAorCS8qIEJp
dCA3OiBObyBrbm93biBjb25zdW1lciAqLworCS8qCisJICogQml0IDg6IEhhcyBhIGNvbnN1bWVy
LCBMVEUgZGVwZW5kcyBvbiBpdC4gQnV0IHVua25vd24gd2hhdCBhbmQgaG93LiBNb3N0IGxpa2Vs
eSBvbmUgb2YKKwkgKiB0aGUgZ3NtIGNsb2NrcyBpbiB0b3Bjcm0rMHg2NCBsaXN0ZWQgaW4gY3Br
by5rby4KKwkgKi8KKwkvKgorCSAqIEJpdCA5OiBCaWcgTVBMTCBwcm92aWRlciBmb3IgTWF0cml4
LiBJdCBpcyBhbiBBWEkgdm90aW5nIGNhbmRpZGF0ZSwgYnV0IGl0IGlzIHByb3RlY3RlZAorCSAq
IGluIE1hdHJpeCdzIDB4MTE4IGdhdGVzLgorCSAqLworCVtaWF9DTEtfVE9NQVRSSVhfTVBMTF0g
ICAgID0gR0FURSgibWF0cml4LW1wbGwiLCBQQVJFTlRfSUQoWlhfQ0xLX01QTEwpLCAweDE0MCwg
OSwgMCksCisJLyogQml0IDEwOiBBbHdheXMgMCAqLworCS8qIEJpdCAxMTogQWx3YXlzIDAgKi8K
KworCS8qIEJpdCAxMjogTm8ga25vd24gY29uc3VtZXIuIEV4aXN0aW5nIHBhdHRlcm5zIGluZGlj
YXRlIGEgZHBsbCBjb25zdW1lciBpbiB0b3AgaXRzZWxmICovCisJW1pYX0NMS19UT01BVFJJWF9E
UExMXSAgICAgPSBHQVRFKCJtYXRyaXgtZHBsbCIsIFBBUkVOVF9JRChaWF9DTEtfRFBMTCksIDB4
MTQwLCAxMywgMCksCisJLyogQml0IDE0OiBBbHdheXMgMCAqLworCS8qIEJpdCAxNTogQWx3YXlz
IDAgKi8KKworCVtaWF9DTEtfVE9QX1VQTExfRDEyXSAgICAgID0gR0FURSgidG9wLXVwbGwtZDEy
IiwgUEFSRU5UX0lEKFpYX0NMS19UT1BfVVBMTF9EMTJfUFJFR0FURSksCisJCQkJCSAgMHgxNDAs
IDE2LCAwKSwKKwlbWlhfQ0xLX1RPUF9VUExMXSAgICAgICAgICA9IEdBVEUoInRvcC11cGxsIiwg
UEFSRU5UX0lEKFpYX0NMS19VUExMKSwgMHgxNDAsIDE3LCAwKSwKKwkvKiBCaXQgMTg6IEFsd2F5
cyAwICovCisJLyogQml0IDE5OiBBbHdheXMgMCAqLworCisJW1pYX0NMS19UT1BfR1BMTF9ENF0g
ICAgICAgPSBHQVRFKCJ0b3AtZ3BsbC1kNCIsIFBBUkVOVF9JRChaWF9DTEtfVE9QX0dQTExfRDRf
UFJFR0FURSksCisJCQkJCSAgMHgxNDAsIDIwLCAwKSwKKwlbWlhfQ0xLX1RPTUFUUklYX0dQTExf
RDJdICA9IEdBVEUoIm1hdHJpeC1ncGxsLWQyIiwgUEFSRU5UX0lEKFpYX0NMS19UT1BfR1BMTF9E
Ml9QUkVHQVRFKSwKKwkJCQkJICAweDE0MCwgMjEsIDApLAorCVtaWF9DTEtfVE9NQVRSSVhfR1BM
TF0gICAgID0gR0FURSgibWF0cml4LWdwbGwiLCBQQVJFTlRfSUQoWlhfQ0xLX0dQTEwpLCAweDE0
MCwgMjIsIDApLAorCS8qIEJpdCAyMzogQWx3YXlzIDAgKi8KKworCS8qCisJICogQml0IDI0IGNv
dmVycyBhbGwgMjYgTUh6IG9uIG1hdHJpeCwgYnV0IG5vdCBwY2xrcy4gT3NjMjZtIGNvbnN1bWVy
cyBvbiB0b3Bjcm0gZG8gbm90CisJICogdXNlIHRoaXMsIHRoZXkgZ2V0IHRoZSB1bmdhdGVkIG9z
YzI2bS4gSXQgaXMgYW4gQVhJIHZvdGluZyBjYW5kaWRhdGUsIGJ1dCBkb2VzIG5vdAorCSAqIG5l
ZWQgcHJvdGVjdGlvbiBiZWNhdXNlIGl0IGlzIHRoZSBzbG93ZXN0IHNwZWVkLiBJdCB3aWxsIG9u
bHkgYmUgdXNlZCBpZiBldmVyeSBwcm9jZXNzb3IsCisJICogaW5jbHVkaW5nIHVzLCB2b3RlcyBm
b3IgaXQuCisJICovCisJW1pYX0NMS19UT01BVFJJWF9PU0MyNk1dICAgPSBHQVRFKCJtYXRyaXgt
b3NjMjZtIiwgY2xrX21haW5bMF0sIDB4MTQwLCAyNCwgMCksCisKKwkvKgorCSAqIFBvc3QtMTQw
IGRpdmlzaW9ucy4gVGhleSBlbnRlciB0aHJvdWdoIHRoZSBzYW1lIGJpdCBhbmQgY2FuIGJlIHNl
bGVjdGVkIGJ5IGRpZmZlcmVudCBtdXgKKwkgKiB2YWx1ZXMgb2YgdGhlaXIgY29uc3VtZXJzIG9y
IGdldCBwaXBlZCB0byBtdWx0aXBsZSBjb25zdW1lcnMgd2l0aCBkaWZmZXJlbnQgZG9jdW1lbnRl
ZAorCSAqIHJhdGVzIC0gaW4gcGFydGljdWxhciwgVVNCIHdjbGsgKDI0IE1IeiBhY2NvcmRpbmcg
dG8gWlRFKSBzaGFyZXMgYml0IDEgd2l0aCBNMCdzIDc4IE1Iei4KKwkgKi8KKwlbWlhfQ0xLX1RP
UF9NUExMX0QyX0Q0XSAgICA9IEZJWEVEX0RJVigidG9wLW1wbGwtZDItZDQiLCBQQVJFTlRfSUQo
WlhfQ0xLX1RPUF9NUExMX0QyKSwgNCksCisJW1pYX0NMS19UT1BfTVBMTF9EMl9EMTNdICAgPSBG
SVhFRF9ESVYoInRvcC1tcGxsLWQyLWQxMyIsIFBBUkVOVF9JRChaWF9DTEtfVE9QX01QTExfRDIp
LAorCQkJCQkgICAgICAgMTMpLAorCVtaWF9DTEtfVE9QX1VQTExfRDEyX0QyXSAgID0gRklYRURf
RElWKCJ0b3AtdXBsbC1kMTItZDIiLCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9VUExMX0QxMiksCisJ
CQkJCSAgICAgICAyKSwKKwlbWlhfQ0xLX1RPUF9HUExMX0Q0X0QyXSAgICA9IEZJWEVEX0RJVigi
dG9wLWdwbGwtZDQtZDIiLCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9HUExMX0Q0KSwgMiksCisKKwkv
KiBEZXZpY2Utc3BlY2lmaWMgTXV4ZXMgKi8KKwlbWlhfQ0xLX00wX01VWF0gICAgICAgICAgICA9
IE1VWCgibTAtbXV4IiwgICAgICAgIG0wX3NlbCwgICAgICAgICAgICAweDM4LCAgMCwgMiksCisJ
W1pYX0NMS19BSEJfTVVYXSAgICAgICAgICAgPSBNVVgoImFoYi1tdXgiLCAgICAgICBhaGJfc2Vs
LCAgICAgICAgICAgMHgzYywgIDQsIDIpLAorCVtaWF9DTEtfVElNRVJfVDA4X01VWF0gICAgID0g
TVVYKCJ0aW1lci10MDgtbXV4IiwgdGltZXJfdG9wX3NlbCwgICAgIDB4NDAsICAxLCAxKSwKKwlb
WlhfQ0xLX1RJTUVSX1QwOV9NVVhdICAgICA9IE1VWCgidGltZXItdDA5LW11eCIsIHRpbWVyX3Rv
cF9zZWwsICAgICAweDQwLCAgMCwgMSksCisJW1pYX0NMS19USU1FUl9UMTJfTVVYXSAgICAgPSBN
VVgoInRpbWVyLXQxMi1tdXgiLCB0aW1lcl90b3Bfc2VsLCAgICAgMHgzYywgIDAsIDEpLAorCVta
WF9DTEtfVElNRVJfVDEzX01VWF0gICAgID0gTVVYKCJ0aW1lci10MTMtbXV4IiwgdGltZXJfdG9w
X3NlbCwgICAgIDB4NDQsICAwLCAxKSwKKwlbWlhfQ0xLX1RJTUVSX1QxNF9NVVhdICAgICA9IE1V
WCgidGltZXItdDE0LW11eCIsIHRpbWVyX3RvcF9zZWwsICAgICAweDQ0LCAgMSwgMSksCisJW1pY
X0NMS19USU1FUl9UMTVfTVVYXSAgICAgPSBNVVgoInRpbWVyLXQxNS1tdXgiLCB0aW1lcl90b3Bf
c2VsLCAgICAgMHgzYywgIDMsIDEpLAorCVtaWF9DTEtfVElNRVJfVDE2X01VWF0gICAgID0gTVVY
KCJ0aW1lci10MTYtbXV4IiwgdGltZXJfdG9wX3NlbCwgICAgIDB4NDQsICAyLCAxKSwKKwlbWlhf
Q0xLX1RJTUVSX1QxN19NVVhdICAgICA9IE1VWCgidGltZXItdDE3LW11eCIsIHRpbWVyX3RvcF9z
ZWwsICAgIDB4MTIwLCAgMCwgMSksCisJW1pYX0NMS19XRFRfVDE4X01VWF0gICAgICAgPSBNVVgo
IndkdC10MTgtbXV4IiwgICB0aW1lcl90b3Bfc2VsLCAgICAgMHgzYywgIDYsIDEpLAorCVtaWF9D
TEtfSTJDMF9NVVhdICAgICAgICAgID0gTVVYKCJpMmMwLW11eCIsICAgICAgdWFydF90b3Bfc2Vs
LCAgICAgIDB4M2MsICAxLCAxKSwKKwlbWlhfQ0xLX1VBUlQwX01VWF0gICAgICAgICA9IE1VWCgi
dWFydDAtbXV4IiwgICAgIHVhcnRfdG9wX3NlbCwgICAgICAweDQwLCAgMiwgMSksCisJW1pYX0NM
S19PVVQwX01VWF0gICAgICAgICAgPSBNVVgoIm91dDAtbXV4IiwgICAgICBvdXQwX3NlbCwgICAg
ICAgICAgMHgzNCwgIDUsIDEpLAorCVtaWF9DTEtfT1VUMV9NVVhdICAgICAgICAgID0gTVVYKCJv
dXQxLW11eCIsICAgICAgb3V0MV9zZWwsICAgICAgICAgIDB4MzQsICA2LCAyKSwKKwlbWlhfQ0xL
X09VVDJfTVVYXSAgICAgICAgICA9IE1VWCgib3V0Mi1tdXgiLCAgICAgIG91dDJfc2VsLCAgICAg
ICAgICAweDM0LCAgOCwgMSksCisJW1pYX0NMS19STUlJUEhZX01VWF0gICAgICAgPSBNVVgoInJt
aWlwaHktbXV4IiwgICBybWlpX3NlbCwgICAgICAgICAweDExYywgIDAsIDIpLAorCisJLyogRGV2
aWNlLXNwZWNpZmljIGRpdmlkZXJzICovCisJW1pYX0NMS19USU1FUl9UMDhfRElWXSAgICAgPSBE
SVYoInRpbWVyLXQwOC1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QwOF9NVVgpLAorCQkJ
CQkgMHg0YywgOCwgNCksCisJW1pYX0NMS19USU1FUl9UMDlfRElWXSAgICAgPSBESVYoInRpbWVy
LXQwOS1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QwOV9NVVgpLAorCQkJCQkgMHg0Yywg
MCwgNCksCisJW1pYX0NMS19USU1FUl9UMTJfRElWXSAgICAgPSBESVYoInRpbWVyLXQxMi1kaXYi
LCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxMl9NVVgpLAorCQkJCQkgMHg0OCwgMCwgNCksCisJ
W1pYX0NMS19USU1FUl9UMTNfRElWXSAgICAgPSBESVYoInRpbWVyLXQxMy1kaXYiLCBQQVJFTlRf
SUQoWlhfQ0xLX1RJTUVSX1QxM19NVVgpLAorCQkJCQkgMHg1MCwgMCwgNCksCisJW1pYX0NMS19U
SU1FUl9UMTRfRElWXSAgICAgPSBESVYoInRpbWVyLXQxNC1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xL
X1RJTUVSX1QxNF9NVVgpLAorCQkJCQkgMHg1MCwgNCwgNCksCisJW1pYX0NMS19USU1FUl9UMTVf
RElWXSAgICAgPSBESVYoInRpbWVyLXQxNS1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1Qx
NV9NVVgpLAorCQkJCQkgMHg0OCwgNCwgNCksCisJW1pYX0NMS19USU1FUl9UMTZfRElWXSAgICAg
PSBESVYoInRpbWVyLXQxNi1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxNl9NVVgpLAor
CQkJCQkgMHg1MCwgOCwgNCksCisJW1pYX0NMS19USU1FUl9UMTdfRElWXSAgICAgPSBESVYoInRp
bWVyLXQxNy1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxN19NVVgpLAorCQkJCQkgMHgx
MjQsIDAsIDQpLAorCVtaWF9DTEtfV0RUX1QxOF9ESVZdICAgICAgID0gRElWKCJ3ZHQtdDE4LWRp
diIsIFBBUkVOVF9JRChaWF9DTEtfV0RUX1QxOF9NVVgpLAorCQkJCQkgMHg0OCwgOCwgNCksCisJ
W1pYX0NMS19VU0lNMV9ESVZdICAgICAgICAgPSBESVYoInVzaW0xLWRpdiIsIGNsa191bmtub3du
LAorCQkJCQkgMHg0OCwgMTIsIDEpLAorCisJLyogRGV2aWNlIHNwZWNpZmljIGdhdGVzICovCisK
KwkvKgorCSAqIEFIQiBjbG9jayBnYXRlczogRGlzYWJsaW5nIHRoZXNlIGN1dHMgb2ZmIHRoZSBB
NTMgZnJvbSByZWdpc3RlciBhY2Nlc3MgaW50byAweDEzMDAwMC8KKwkgKiAweDE0MDAwMCwgaW5j
bHVkaW5nIHRoZSB0b3Bjcm0gcmVnaW9uLCBzbyBpdCBjYW4ndCBiZSByZS1lbmFibGVkLiBNYXJr
IHRoZW0gY3JpdGljYWwgZm9yCisJICogdGhhdCByZWFzb24uCisJICoKKwkgKiBHYXRpbmcgdGhp
cyBvZmYgZG9lcyBub3Qgc3RvcCB0aGUgTTAgcnByb2MsIG5vciBkb2VzIGl0IHN0b3AgTTAgZnJv
bSBhY2Nlc3NpbmcgdG9wY3JtLiBJdAorCSAqIGRvZXMgaG93ZXZlciBnYXRlIG9mZiBNMCBmcm9t
IHRoZSBBWEkgaW50ZXJjb25uZWN0LCBzbyBpdCBjYW4ndCByZWFkIFJBTSwgTWF0cml4LCBldGMu
IFNvCisJICogdGhlc2UgYml0cyBoZXJlIG1lcmVseSBnYXRlIHRoZSBidXMsIG5vdCB0aGUgYWN0
dWFsIGRldmljZXMuCisJICovCisJW1pYX0NMS19BSEJfUENMS10gICAgICAgICAgPSBHQVRFKCJh
aGItcGNsayIsIFBBUkVOVF9JRChaWF9DTEtfQUhCX01VWCksIDB4NTQsIDEyLAorCQkJCQkgIENM
S19JU19DUklUSUNBTCksCisJW1pYX0NMS19BSEJfV0NMS10gICAgICAgICAgPSBHQVRFKCJhaGIt
d2NsayIsIFBBUkVOVF9JRChaWF9DTEtfTTBfTVVYKSwgMHg1NCwgMTMsCisJCQkJCSAgQ0xLX0lT
X0NSSVRJQ0FMKSwKKworCS8qIFNSQU0xIGFuZCAyIGNsb2Nrcy4gTGVhdmUgdGhlbSBvbiBmb3Ig
bm93LCBhcyB0dXJuaW5nIHRoZW0gb2ZmIGNhcmVsZXNzbHkgaGFuZ3MgdGhlIE0wICovCisJW1pY
X0NMS19TUkFNMV9QQ0xLXSAgICAgICAgPSBHQVRFKCJzcmFtMS1wY2xrIiwgY2xrX21haW5bMF0s
IDB4NTQsIDE4LCBDTEtfSVNfQ1JJVElDQUwpLAorCVtaWF9DTEtfU1JBTTJfUENMS10gICAgICAg
ID0gR0FURSgic3JhbTItcGNsayIsIGNsa19tYWluWzBdLCAweDU0LCAxNiwgQ0xLX0lTX0NSSVRJ
Q0FMKSwKKworCS8qCisJICogUGlubXV4IChBT04sIFRPUCwgSU9DRkcgYnV0IG5vdCBQRENGRyku
IENyaXRpY2FsIGFzIHdlbGwgdW50aWwgd2UgaGF2ZSBhIGRyaXZlciB0aGF0CisJICogY29uc3Vt
ZXMgaXQuIEkgZG9uJ3QgdGhpbmsgd2UnbGwgcmVhbGlzdGljYWxseSBzaHV0IHRoaXMgb2ZmIGV2
ZXIuCisJICoKKwkgKiBTZXR0aW5nIGVpdGhlciBiaXQgMCBvciAxIGluIHJlZ2lzdGVyIDB4NTgg
bWFrZXMgdGhlIGRldmljZSB3b3JrLgorCSAqLworCVtaWF9DTEtfUE1NX1dDTEtdICAgICAgICAg
ID0gR0FURSgicG1tLXdjbGsiLCBjbGtfbWFpblswXSwgMHg1OCwgMCwgQ0xLX0lTX0NSSVRJQ0FM
KSwKKwlbWlhfQ0xLX1BNTV9QQ0xLXSAgICAgICAgICA9IEdBVEUoInBtbS1wY2xrIiwgY2xrX21h
aW5bMF0sIDB4NTgsIDEsIENMS19JU19DUklUSUNBTCksCisKKwkvKgorCSAqIFRpbWVycy4gV2Ug
ZG9uJ3QgdXNlIGFueSBvZiB0aGVtLCBqdXN0IHNodXQgdGhlbSBvZmYuIFRoZSB0aW1lcnMgYXJl
IG5hbWVkIGFuZCBzb3J0ZWQKKwkgKiBieSB0aGUgSU8gYWRkcmVzcyBvZiB0aGUgbWFpbiB0aW1l
ciBjb250cm9scy4gU29tZSBvZiB0aGUgY29udHJvbHMgYXJlIGRvY3VtZW50ZWQgaW4KKwkgKiBa
VEUncyBrZXJuZWwsIHRoZSBvdGhlcnMgSSBmb3VuZCBieSB0cmlhbCBhbmQgZXJyb3IuIFRpbWVy
cyBpbiByZWdpc3RlciAweDU0IGhhdmUgdGhlCisJICogcGNsayBmaXJzdCwgdGhlIG90aGVycyBo
YXZlIHRoZSB3Y2xrIGZpcnN0LgorCSAqCisJICogVGltZXIgVDE3IGlzIHVzZWQgYnkgdGhlIFpT
UCBmaXJtd2FyZS4gVGhlIHJwcm9jIGRyaXZlciB3aWxsIGVuYWJsZSBpdCBhcyBuZWVkZWQuCisJ
ICovCisJW1pYX0NMS19USU1FUl9UMDhfV0NMS10gICAgPSBHQVRFKCJ0aW1lci10MDgtd2NsayIs
IFBBUkVOVF9JRChaWF9DTEtfVElNRVJfVDA4X0RJViksCisJCQkJCSAgMHg1YywgOCwgMCksCisJ
W1pYX0NMS19USU1FUl9UMDhfUENMS10gICAgPSBHQVRFKCJ0aW1lci10MDgtcGNsayIsIGNsa19t
YWluWzBdLCAweDVjLCA5LCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QwOV9XQ0xLXSAgICA9IEdBVEUo
InRpbWVyLXQwOS13Y2xrIiwgUEFSRU5UX0lEKFpYX0NMS19USU1FUl9UMDlfRElWKSwKKwkJCQkJ
ICAweDVjLCA0LCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QwOV9QQ0xLXSAgICA9IEdBVEUoInRpbWVy
LXQwOS1wY2xrIiwgY2xrX21haW5bMF0sIDB4NWMsIDUsIDApLAorCVtaWF9DTEtfVElNRVJfVDEy
X1dDTEtdICAgID0gR0FURSgidGltZXItdDEyLXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVS
X1QxMl9ESVYpLAorCQkJCQkgIDB4NTQsIDUsIDApLAorCVtaWF9DTEtfVElNRVJfVDEyX1BDTEtd
ICAgID0gR0FURSgidGltZXItdDEyLXBjbGsiLCBjbGtfbWFpblswXSwgMHg1NCwgNCwgMCksCisJ
W1pYX0NMS19USU1FUl9UMTNfV0NMS10gICAgPSBHQVRFKCJ0aW1lci10MTMtd2NsayIsIFBBUkVO
VF9JRChaWF9DTEtfVElNRVJfVDEzX0RJViksCisJCQkJCSAgMHg2MCwgMCwgMCksCisJW1pYX0NM
S19USU1FUl9UMTNfUENMS10gICAgPSBHQVRFKCJ0aW1lci10MTMtcGNsayIsIGNsa19tYWluWzBd
LCAweDYwLCAxLCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QxNF9XQ0xLXSAgICA9IEdBVEUoInRpbWVy
LXQxNC13Y2xrIiwgUEFSRU5UX0lEKFpYX0NMS19USU1FUl9UMTRfRElWKSwKKwkJCQkJICAweDYw
LCA0LCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QxNF9QQ0xLXSAgICA9IEdBVEUoInRpbWVyLXQxNC1w
Y2xrIiwgY2xrX21haW5bMF0sIDB4NjAsIDUsIDApLAorCVtaWF9DTEtfVElNRVJfVDE1X1dDTEtd
ICAgID0gR0FURSgidGltZXItdDE1LXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxNV9E
SVYpLAorCQkJCQkgIDB4NTQsIDIxLCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QxNV9QQ0xLXSAgICA9
IEdBVEUoInRpbWVyLXQxNS1wY2xrIiwgY2xrX21haW5bMF0sIDB4NTQsIDIwLCAwKSwKKwlbWlhf
Q0xLX1RJTUVSX1QxNl9XQ0xLXSAgICA9IEdBVEUoInRpbWVyLXQxNi13Y2xrIiwgUEFSRU5UX0lE
KFpYX0NMS19USU1FUl9UMTZfRElWKSwKKwkJCQkJICAweDYwLCA4LCAwKSwKKwlbWlhfQ0xLX1RJ
TUVSX1QxNl9QQ0xLXSAgICA9IEdBVEUoInRpbWVyLXQxNi1wY2xrIiwgY2xrX21haW5bMF0sIDB4
NjAsIDksIDApLAorCVtaWF9DTEtfVElNRVJfVDE3X1dDTEtdICAgID0gR0FURSgidGltZXItdDE3
LXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxN19ESVYpLAorCQkJCQkgIDB4MTI4LCAw
LCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QxN19QQ0xLXSAgICA9IEdBVEUoInRpbWVyLXQxNy1wY2xr
IiwgY2xrX21haW5bMF0sIDB4MTI4LCAxLCAwKSwKKworCS8qCisJICogVGhpcyB3YXRjaGRvZyBp
cyBzZXQgdXAgYnkgWlRFJ3MgYm9vdGxvYWRlciBhbmQgaW4gWlRFJ3MgT1MgdGhlIG0wIGZpcm13
YXJlIHdpbGwgZmVlZCB0aGUKKwkgKiBkb2cuIFRoZSBtMCBmaXJtd2FyZSBpbiB0dXJuIHdhbnRz
IHRvIGJlIGZlZCBpbiBpdHMgb3duIHdheS4gU2luY2Ugd2Ugbm9ybWFsbHkgZG9uJ3QgcnVuCisJ
ICogYW55IG0wIGZpcm13YXJlIHdlIHNodXQgaXQgb2ZmIGJ5IGRlZmF1bHQgYW5kIGV4cG9zZSBp
dCB0byB1c2Vyc3BhY2UgdmlhIHRoZSB3YXRjaGRvZworCSAqIGRyaXZlci4KKwkgKi8KKwlbWlhf
Q0xLX1dEVF9UMThfV0NMS10gICAgID0gR0FURSgid2R0LXQxOC13Y2xrIiwgUEFSRU5UX0lEKFpY
X0NMS19XRFRfVDE4X0RJViksCisJCQkJCSAweDU0LCAyNSwgMCksCisJW1pYX0NMS19XRFRfVDE4
X1BDTEtdICAgICA9IEdBVEUoIndkdC10MTgtcGNsayIsIGNsa19tYWluWzBdLCAweDU0LCAyNCwg
MCksCisKKwlbWlhfQ0xLX0kyQzBfV0NMS10gICAgICAgID0gR0FURSgiaTJjMC13Y2xrIiwgUEFS
RU5UX0lEKFpYX0NMS19JMkMwX01VWCksIDB4NTQsIDksIDApLAorCVtaWF9DTEtfSTJDMF9QQ0xL
XSAgICAgICAgPSBHQVRFKCJpMmMwLXBjbGsiLCBjbGtfbWFpblswXSwgMHg1NCwgOCwgMCksCisJ
W1pYX0NMS19VQVJUMF9XQ0xLXSAgICAgICA9IEdBVEUoInVhcnQwLXdjbGsiLCBQQVJFTlRfSUQo
WlhfQ0xLX1VBUlQwX01VWCksIDB4NWMsIDEyLCAwKSwKKwlbWlhfQ0xLX1VBUlQwX1BDTEtdICAg
ICAgID0gR0FURSgidWFydDAtcGNsayIsIGNsa19tYWluWzBdLCAweDVjLCAxMywgMCksCisKKwkv
KgorCSAqIFpURSBzYXlzIHRoZSBVU0IgaW5wdXQgaXMgYSAyNCBNSHogY2xvY2sgYmFzZWQgb24g
bXBsbC4gVGVzdGluZyBzaG93cyB0aGF0IHVwbGwgaXMgbm90CisJICogaW52b2x2ZWQuIFRoZSBV
U0IgcmVnaXN0ZXIgc3BhY2UgY2FuIGJlIGFjY2Vzc2VkIHdpdGggYWhiLXBjbGsgZ2F0ZWQsIGJ1
dCBub3Qgd2l0aAorCSAqIGFoYi13Y2xrIGdhdGVkLiBaVEUgYWxzbyBsaXN0cyBhaGItd2NsayBh
cyBwYXJlbnQgZm9yIHRoZSBzZWNvbmQgY2xvY2suCisJICoKKwkgKiBUaGVyZSBkb2Vzbid0IHNl
ZW0gdG8gYmUgYSBzZXBhcmF0ZSBQSFkgY2xvY2suIHVzYi13Y2xrIHN0b3BzIGNvbnRyb2xsZXIg
cmVnaXN0ZXJzIGZyb20KKwkgKiB1cGRhdGluZywgYnV0IGRvZXNuJ3QgY2F1c2UgdGhlIFVTQiBk
ZXZpY2UgdG8gZGlzY29ubmVjdCBsaWtlIGFzc2VydGluZyB0aGUgUEhZIHJlc2V0CisJICogZG9l
cy4gQml0IDAgaW4gdGhpcyByZWdpc3RlciBjYW4ndCBiZSBzZXQsIHNvIG5vIFBIWSBjbG9jayBp
cyBoaWRpbmcgdGhlcmUgZWl0aGVyLgorCSAqLworCVtaWF9DTEtfVVNCX1dDTEtdICAgICAgICAg
PSBHQVRFKCJ1c2Itd2NsayIsIFBBUkVOVF9JRChaWF9DTEtfVE9QX01QTExfRDJfRDEzKSwgMHg2
YywgMywgMCksCisJW1pYX0NMS19VU0JfUENMS10gICAgICAgICA9IEdBVEUoInVzYi1wY2xrIiwg
UEFSRU5UX0lEKFpYX0NMS19BSEJfV0NMSyksIDB4NmMsIDQsIDApLAorCS8qCisJICogVGhlIEhT
SUMgaGFyZHdhcmUgaXMgbGlzdGVkIGluIFpURSdzIGNvZGUgd2l0aCBhIHBoeXNpY2FsIGFkZHJl
c3Mgb2YgMHgwMTYwMDAwMC4gVW5saWtlCisJICogdGhlIFVTQiBjb250cm9sbGVyLCBpdCBkb2Vz
IGNvbnN1bWUgdXBsbC4gWlRFIHNheXMgMjQwIE1IeiwgYnV0IDQ4MCBpcyB0aGUgdXN1YWwgb25l
IGZvcgorCSAqIEhTSUMuCisJICovCisJW1pYX0NMS19IU0lDX1dDTEtdICAgICAgICA9IEdBVEUo
ImhzaWMtd2NsayIsIFBBUkVOVF9JRChaWF9DTEtfVE9QX1VQTEwpLCAweDZjLCAxLCAwKSwKKwlb
WlhfQ0xLX0hTSUNfUENMS10gICAgICAgID0gR0FURSgiaHNpYy1wY2xrIiwgUEFSRU5UX0lEKFpY
X0NMS19BSEJfV0NMSyksIDB4NmMsIDIsIDApLAorCisJLyoKKwkgKiBIb3cgZG9lcyB0aGlzIFJU
QyB3b3JrPyBJIGRvbid0IGtub3csIHRoZSBaVEUga2VybmVsIGRvZXMgbm90IHRhbGsgdG8gaXQu
IFRoZSBhY3R1YWwgUlRDCisJICogaXMgb24gdGhlIEkyQy1jb25uZWN0ZWQgUE1JQy4KKwkgKi8K
KwlbWlhfQ0xLX1JUQ19XQ0xLXSAgICAgICAgID0gR0FURSgicnRjLXdjbGsiLCBjbGtfdW5rbm93
biwgMHg1NCwgMSwgMCksCisJW1pYX0NMS19SVENfUENMS10gICAgICAgICA9IEdBVEUoInJ0Yy1w
Y2xrIiwgY2xrX21haW5bMF0sIDB4NTQsIDAsIDApLAorCisJW1pYX0NMS19VU0lNMV9XQ0xLXSAg
ICAgICA9IEdBVEUoInVzaW0xLXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX1VTSU0xX0RJViksIDB4
NTQsIDI5LCAwKSwKKwlbWlhfQ0xLX1VTSU0xX1BDTEtdICAgICAgID0gR0FURSgidXNpbTEtcGNs
ayIsIGNsa19tYWluWzBdLCAweDU0LCAyOCwgMCksCisKKwkvKgorCSAqIExURTogZ2F0ZSBvbmx5
IGFzIGZhciBhcyBJIGNhbiBzZWUuIEkgbG9va2VkIGZvciByZXNldHMgYW5kIGRpZCBub3QgZmlu
ZCBhbnkuIFRoZXJlIG1heQorCSAqIGJlIG11eC9kaXYsIGJ1dCB3aXRob3V0IHVuZGVyc3RhbmRp
bmcgdGhlIGJlaGF2aW9yIG9mIHRoaXMgaGFyZHdhcmUgaXQgaXMgaW1wb3NzaWJsZSB0bworCSAq
IHRlbGwuIFRoZXkgYXJlIHNvcnRlZCBieSBwaHlzaWNhbCBNTUlPIGFkZHJlc3Mgb2YgdGhlIGRl
dmljZXMsIHdoaWNoIGhhcHBlbnMgdG8gYmUgdGhlCisJICogaW52ZXJzZSBvcmRlciBvZiB0aGUg
Yml0cy4KKwkgKgorCSAqIEkgZG9uJ3Qga25vdyB3aGF0ICJMUE0iLCAiVEQiIGFuZCAiVyIgbWVh
bi4gSSBjb3BpZWQgdGhlbSBmcm9tIFpURSdzIG5hbWVzLgorCSAqCisJICogTGlrZSBQTU0gaW4g
dGhpcyByZWdpc3RlciwgZWl0aGVyIGJpdCBlbmFibGVzIHJlZ2lzdGVyIGFjY2Vzcywgd2hldGhl
ciB0aGV5IGNvbnRyb2wgcGNsaworCSAqIG9yIHdjbGsgY2Fubm90IGJlIGRpc3Rpbmd1aXNoZWQu
CisJICovCisJW1pYX0NMS19MUE1fR1NNX1dDTEtdICAgICA9IEdBVEUoImxwbS1nc20td2NsayIs
IGNsa191bmtub3duLCAweDU4LCAxMCwgMCksCisJW1pYX0NMS19MUE1fR1NNX1BDTEtdICAgICA9
IEdBVEUoImxwbS1nc20tcGNsayIsIGNsa19tYWluWzBdLCAweDU4LCAxMSwgMCksCisJW1pYX0NM
S19MUE1fTFRFX1dDTEtdICAgICA9IEdBVEUoImxwbS1sdGUtd2NsayIsIGNsa191bmtub3duLCAw
eDU4LCA4LCAwKSwKKwlbWlhfQ0xLX0xQTV9MVEVfUENMS10gICAgID0gR0FURSgibHBtLWx0ZS1w
Y2xrIiwgY2xrX21haW5bMF0sIDB4NTgsIDksIDApLAorCVtaWF9DTEtfTFBNX1REX1dDTEtdICAg
ICAgPSBHQVRFKCJscG0tdGQtd2NsayIsIGNsa191bmtub3duLCAweDU4LCA2LCAwKSwKKwlbWlhf
Q0xLX0xQTV9URF9QQ0xLXSAgICAgID0gR0FURSgibHBtLXRkLXBjbGsiLCBjbGtfbWFpblswXSwg
MHg1OCwgNywgMCksCisJW1pYX0NMS19MUE1fV19XQ0xLXSAgICAgICA9IEdBVEUoImxwbS13LXdj
bGsiLCBjbGtfdW5rbm93biwgMHg1OCwgNCwgMCksCisJW1pYX0NMS19MUE1fV19QQ0xLXSAgICAg
ICA9IEdBVEUoImxwbS13LXBjbGsiLCBjbGtfbWFpblswXSwgMHg1OCwgNSwgMCksCisKKwlbWlhf
Q0xLX09VVDBfV0NMS10gICAgICAgID0gR0FURSgib3V0MC13Y2xrIiwgUEFSRU5UX0lEKFpYX0NM
S19PVVQwX01VWCksIDB4MzQsIDAsIDApLAorCVtaWF9DTEtfT1VUMV9XQ0xLXSAgICAgICAgPSBH
QVRFKCJvdXQxLXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX09VVDFfTVVYKSwgMHg5MCwgMiwgMCks
CisJW1pYX0NMS19PVVQyX1dDTEtdICAgICAgICA9IEdBVEUoIm91dDItd2NsayIsIFBBUkVOVF9J
RChaWF9DTEtfT1VUMl9NVVgpLCAweDk0LCAyLCAwKSwKKwlbWlhfQ0xLX09VVDMyS19XQ0xLXSAg
ICAgID0gR0FURSgib3V0MzJrLXdjbGsiLCBQQVJFTlRfRlcoIm9zYzMyayIpLCAweDM0LCAxLCAw
KSwKKwlbWlhfQ0xLX1JNSUlQSFlfV0NMS10gICAgID0gR0FURSgicm1paXBoeS13Y2xrIiwgUEFS
RU5UX0lEKFpYX0NMS19STUlJUEhZX01VWCksCisJCQkJCSAweDExYywgMiwgMCksCit9OworCitz
dGF0aWMgdW5zaWduZWQgaW50IHp4Mjk3NTIwdjNfdG9wX2V4cG9ydHNbXSA9IHsKKwlbWlgyOTc1
MjBWM19NMF9XQ0xLXSA9CQlaWF9DTEtfTTBfTVVYLAorCVtaWDI5NzUyMFYzX1NSQU0xX1BDTEtd
ID0JWlhfQ0xLX1NSQU0xX1BDTEssCisJW1pYMjk3NTIwVjNfU1JBTTJfUENMS10gPQlaWF9DTEtf
U1JBTTJfUENMSywKKwlbWlgyOTc1MjBWM19VQVJUMF9XQ0xLXSA9CVpYX0NMS19VQVJUMF9XQ0xL
LAorCVtaWDI5NzUyMFYzX1VBUlQwX1BDTEtdID0JWlhfQ0xLX1VBUlQwX1BDTEssCisJW1pYMjk3
NTIwVjNfSTJDMF9XQ0xLXSA9CVpYX0NMS19JMkMwX1dDTEssCisJW1pYMjk3NTIwVjNfSTJDMF9Q
Q0xLXSA9CVpYX0NMS19JMkMwX1BDTEssCisJW1pYMjk3NTIwVjNfUlRDX1dDTEtdID0JCVpYX0NM
S19SVENfV0NMSywKKwlbWlgyOTc1MjBWM19SVENfUENMS10gPQkJWlhfQ0xLX1JUQ19QQ0xLLAor
CVtaWDI5NzUyMFYzX0xQTV9HU01fV0NMS10gPQlaWF9DTEtfTFBNX0dTTV9XQ0xLLAorCVtaWDI5
NzUyMFYzX0xQTV9HU01fUENMS10gPQlaWF9DTEtfTFBNX0dTTV9QQ0xLLAorCVtaWDI5NzUyMFYz
X0xQTV9MVEVfV0NMS10gPQlaWF9DTEtfTFBNX0xURV9XQ0xLLAorCVtaWDI5NzUyMFYzX0xQTV9M
VEVfUENMS10gPQlaWF9DTEtfTFBNX0xURV9QQ0xLLAorCVtaWDI5NzUyMFYzX0xQTV9URF9XQ0xL
XSA9CVpYX0NMS19MUE1fVERfV0NMSywKKwlbWlgyOTc1MjBWM19MUE1fVERfUENMS10gPQlaWF9D
TEtfTFBNX1REX1BDTEssCisJW1pYMjk3NTIwVjNfTFBNX1dfV0NMS10gPQlaWF9DTEtfTFBNX1df
V0NMSywKKwlbWlgyOTc1MjBWM19MUE1fV19QQ0xLXSA9CVpYX0NMS19MUE1fV19QQ0xLLAorCVta
WDI5NzUyMFYzX1RJTUVSX1QwOF9XQ0xLXSA9CVpYX0NMS19USU1FUl9UMDhfV0NMSywKKwlbWlgy
OTc1MjBWM19USU1FUl9UMDhfUENMS10gPQlaWF9DTEtfVElNRVJfVDA4X1BDTEssCisJW1pYMjk3
NTIwVjNfVElNRVJfVDA5X1dDTEtdID0JWlhfQ0xLX1RJTUVSX1QwOV9XQ0xLLAorCVtaWDI5NzUy
MFYzX1RJTUVSX1QwOV9QQ0xLXSA9CVpYX0NMS19USU1FUl9UMDlfUENMSywKKwlbWlgyOTc1MjBW
M19NUExMXSA9CQlaWF9DTEtfVE9NQVRSSVhfTVBMTCwKKwlbWlgyOTc1MjBWM19NUExMX0Q1XSA9
CQlaWF9DTEtfVE9NQVRSSVhfTVBMTF9ENSwKKwlbWlgyOTc1MjBWM19EUExMXSA9CQlaWF9DTEtf
VE9NQVRSSVhfRFBMTCwKKwlbWlgyOTc1MjBWM19HUExMXSA9CQlaWF9DTEtfVE9NQVRSSVhfR1BM
TCwKKwlbWlgyOTc1MjBWM19HUExMX0QyXSA9CQlaWF9DTEtfVE9NQVRSSVhfR1BMTF9EMiwKKwlb
WlgyOTc1MjBWM19HQVRFRF9PU0MyNk1dID0JWlhfQ0xLX1RPTUFUUklYX09TQzI2TSwKKwlbWlgy
OTc1MjBWM19QTU1fV0NMS10gPQkJWlhfQ0xLX1BNTV9XQ0xLLAorCVtaWDI5NzUyMFYzX1BNTV9Q
Q0xLXSA9CQlaWF9DTEtfUE1NX1BDTEssCisJW1pYMjk3NTIwVjNfT1VUMF9XQ0xLXSA9CVpYX0NM
S19PVVQwX1dDTEssCisJW1pYMjk3NTIwVjNfT1VUMV9XQ0xLXSA9CVpYX0NMS19PVVQxX1dDTEss
CisJW1pYMjk3NTIwVjNfT1VUMl9XQ0xLXSA9CVpYX0NMS19PVVQyX1dDTEssCisJW1pYMjk3NTIw
VjNfT1VUMzJLX1dDTEtdID0JWlhfQ0xLX09VVDMyS19XQ0xLLAorCVtaWDI5NzUyMFYzX1JNSUlQ
SFlfV0NMS10gPQlaWF9DTEtfUk1JSVBIWV9XQ0xLLAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxMl9X
Q0xLXSA9CVpYX0NMS19USU1FUl9UMTJfV0NMSywKKwlbWlgyOTc1MjBWM19USU1FUl9UMTJfUENM
S10gPQlaWF9DTEtfVElNRVJfVDEyX1BDTEssCisJW1pYMjk3NTIwVjNfVElNRVJfVDEzX1dDTEtd
ID0JWlhfQ0xLX1RJTUVSX1QxM19XQ0xLLAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxM19QQ0xLXSA9
CVpYX0NMS19USU1FUl9UMTNfUENMSywKKwlbWlgyOTc1MjBWM19USU1FUl9UMTRfV0NMS10gPQla
WF9DTEtfVElNRVJfVDE0X1dDTEssCisJW1pYMjk3NTIwVjNfVElNRVJfVDE0X1BDTEtdID0JWlhf
Q0xLX1RJTUVSX1QxNF9QQ0xLLAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxNV9XQ0xLXSA9CVpYX0NM
S19USU1FUl9UMTVfV0NMSywKKwlbWlgyOTc1MjBWM19USU1FUl9UMTVfUENMS10gPQlaWF9DTEtf
VElNRVJfVDE1X1BDTEssCisJW1pYMjk3NTIwVjNfVElNRVJfVDE2X1dDTEtdID0JWlhfQ0xLX1RJ
TUVSX1QxNl9XQ0xLLAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxNl9QQ0xLXSA9CVpYX0NMS19USU1F
Ul9UMTZfUENMSywKKwlbWlgyOTc1MjBWM19USU1FUl9UMTdfV0NMS10gPQlaWF9DTEtfVElNRVJf
VDE3X1dDTEssCisJW1pYMjk3NTIwVjNfVElNRVJfVDE3X1BDTEtdID0JWlhfQ0xLX1RJTUVSX1Qx
N19QQ0xLLAorCVtaWDI5NzUyMFYzX1dEVF9UMThfV0NMS10gPQlaWF9DTEtfV0RUX1QxOF9XQ0xL
LAorCVtaWDI5NzUyMFYzX1dEVF9UMThfUENMS10gPQlaWF9DTEtfV0RUX1QxOF9QQ0xLLAorCVta
WDI5NzUyMFYzX1VTSU0xX1dDTEtdID0JWlhfQ0xLX1VTSU0xX1dDTEssCisJW1pYMjk3NTIwVjNf
VVNJTTFfUENMS10gPQlaWF9DTEtfVVNJTTFfUENMSywKKwlbWlgyOTc1MjBWM19BSEJfV0NMS10g
PQkJWlhfQ0xLX0FIQl9XQ0xLLAorCVtaWDI5NzUyMFYzX0FIQl9QQ0xLXSA9CQlaWF9DTEtfQUhC
X1BDTEssCisJW1pYMjk3NTIwVjNfVVNCX1dDTEtdID0JCVpYX0NMS19VU0JfV0NMSywKKwlbWlgy
OTc1MjBWM19VU0JfUENMS10gPQkJWlhfQ0xLX1VTQl9QQ0xLLAorCVtaWDI5NzUyMFYzX0hTSUNf
V0NMS10gPQlaWF9DTEtfSFNJQ19XQ0xLLAorCVtaWDI5NzUyMFYzX0hTSUNfUENMS10gPQlaWF9D
TEtfSFNJQ19QQ0xLLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB6eF9jbGtfZGF0YSB6eDI5
NzUyMHYzX3RvcGNsa19kYXRhID0geworCS5jbG9ja3MgPSB6eDI5NzUyMHYzX3RvcF9jbG9ja3Ms
CisJLm51bV9jbG9ja3MgPSBBUlJBWV9TSVpFKHp4Mjk3NTIwdjNfdG9wX2Nsb2NrcyksCisJLmV4
cG9ydHMgPSB6eDI5NzUyMHYzX3RvcF9leHBvcnRzLAorCS5udW1fZXhwb3J0cyA9IEFSUkFZX1NJ
WkUoengyOTc1MjB2M190b3BfZXhwb3J0cyksCit9OworCitzdGF0aWMgaW50IGNsa196eDI5NzUy
MHYzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJY29uc3Qgc3RydWN0
IHBsYXRmb3JtX2RldmljZV9pZCAqaWQgPSBwbGF0Zm9ybV9nZXRfZGV2aWNlX2lkKHBkZXYpOwor
CisJaWYgKCFpZCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXR1cm4genhfY2xrX2NvbW1vbl9w
cm9iZSgmcGRldi0+ZGV2LCBwZGV2LT5kZXYucGFyZW50LT5vZl9ub2RlLAorCQkJCSAgIChjb25z
dCBzdHJ1Y3QgenhfY2xrX2RhdGEgKilpZC0+ZHJpdmVyX2RhdGEpOworfQorCitzdGF0aWMgY29u
c3Qgc3RydWN0IHBsYXRmb3JtX2RldmljZV9pZCBjbGtfengyOTc1MjB2M19pZHNbXSA9IHsKKwl7
CisJCS5uYW1lID0gInp4Mjk3NTIwdjMtdG9wY2xrIiwKKwkJLmRyaXZlcl9kYXRhID0gKGtlcm5l
bF91bG9uZ190KSZ6eDI5NzUyMHYzX3RvcGNsa19kYXRhLAorCX0sCisJeyB9Cit9OworTU9EVUxF
X0RFVklDRV9UQUJMRShwbGF0Zm9ybSwgY2xrX3p4Mjk3NTIwdjNfaWRzKTsKKworc3RhdGljIHN0
cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY2xrX3p4Mjk3NTIwdjMgPSB7CisJLnByb2JlID0gY2xrX3p4
Mjk3NTIwdjNfcHJvYmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAiY2xrLXp4Mjk3NTIwdjMi
LAorCX0sCisJLmlkX3RhYmxlID0gY2xrX3p4Mjk3NTIwdjNfaWRzLAorfTsKK21vZHVsZV9wbGF0
Zm9ybV9kcml2ZXIoY2xrX3p4Mjk3NTIwdjMpOworCitNT0RVTEVfQVVUSE9SKCJTdGVmYW4gRMO2
c2luZ2VyIDxzdGVmYW5kb2VzaW5nZXJAZ21haWwuY29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9O
KCJaVEUgengyOTc1MjB2MyBjbG9jayBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsK
Ci0tIAoyLjU0LjAKCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMu
aW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m
by9saW51eC1waHkK