[LyX/master] keyboard maps: replace primary/secondary with per-language selection

Udi Fogiel <[email protected]> Sun, 02 Aug 2026 11:22:19 +0000
Newsgroups gmane.editors.lyx.cvs
Message-ID <[email protected]>
Y29tbWl0IDA1NDM3NGNmNGMzYjhhOTg0ZTVmYjY0YWEwYTliNjFiZGQ5YmUzMTQKQXV0aG9yOiBV
ZGkgRm9naWVsIDx1Zm9naWVsQGx5eC5vcmc+CkRhdGU6ICAgU3VuIEF1ZyAyIDE0OjIwOjU4IDIw
MjYgKzAzMDAKCiAgICBrZXlib2FyZCBtYXBzOiByZXBsYWNlIHByaW1hcnkvc2Vjb25kYXJ5IHdp
dGggcGVyLWxhbmd1YWdlIHNlbGVjdGlvbgogICAgCiAgICBUaGUgb2xkIGNvZGUgYXV0by1zd2l0
Y2hlZCBiZXR3ZWVuIGV4YWN0bHkgdHdvIG1hcHMgYmFzZWQgb24gdGhlCiAgICB0ZXh0IGRpcmVj
dGlvbiB1bmNvbmRpdGlvbmFsbHkgb24gZXZlcnkga2V5c3Ryb2tlLAogICAgYW55IG1hbnVhbCBz
d2l0Y2ggd2FzIHNpbGVudGx5IHJldmVydGVkIG9uIHRoZSB2ZXJ5IG5leHQgY2hhcmFjdGVyIHR5
cGVkLgogICAgCiAgICBrZXltYXAtc2VsZWN0ICI8bmFtZT4iIGlzIGEgbmV3IExGVU4gdG8gc3dp
dGNoIHRvIGFueSBjb25maWd1cmVkIG1hcAogICAgYnkgbmFtZSwgb3IgYmFjayB0byB0aGUgY29u
ZmlndXJlZCBkZWZhdWx0IHdpdGggbm8gYXJndW1lbnQuCiAgICAKICAgIEZpeGVzICM0MDUxLgot
LS0KIGxpYi9SRUxFQVNFLU5PVEVTICAgICAgICAgICAgICAgICAgfCAgMjggKysrKysrKy0KIGxp
Yi9iaW5kL2RlL21lbnVzLmJpbmQgICAgICAgICAgICAgfCAgIDMgLQogbGliL2JpbmQvbWVudXMu
YmluZCAgICAgICAgICAgICAgICB8ICAgMyAtCiBsaWIvYmluZC9ydS9tZW51cy5iaW5kICAgICAg
ICAgICAgIHwgICA2IC0tCiBsaWIvY29uZmlndXJlLnB5ICAgICAgICAgICAgICAgICAgIHwgICAy
ICstCiBsaWIvZG9jL1VzZXJHdWlkZS5seXggICAgICAgICAgICAgIHwgIDYxICsrKysrKysrKysr
KysrKy0KIGxpYi9zY3JpcHRzL3ByZWZzMnByZWZzX3ByZWZzLnB5ICAgfCAgMzMgKysrKysrKyst
CiBzcmMvQnVmZmVyVmlldy5jcHAgICAgICAgICAgICAgICAgIHwgIDMyICsrKy0tLS0tLQogc3Jj
L0Z1bmNDb2RlLmggICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL0ludGwuY3BwICAg
ICAgICAgICAgICAgICAgICAgICB8IDEwOSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBz
cmMvSW50bC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYxICsrKysrKysrKy0tLS0tLS0K
IHNyYy9MeVhBY3Rpb24uY3BwICAgICAgICAgICAgICAgICAgfCAgNDEgKysrKystLS0tLS0KIHNy
Yy9MeVhSQy5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgNzAgKysrKysrKysrKysrLS0tLS0t
CiBzcmMvTHlYUkMuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrLS0KIHNyYy9UcmFu
cy5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKysrKystLS0tLS0tCiBzcmMvVHJhbnMu
aCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICsrKy0tCiBzcmMvZnJvbnRlbmRzL3F0L0d1
aVByZWZzLmNwcCAgICAgIHwgMTM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t
LQogc3JjL2Zyb250ZW5kcy9xdC9HdWlQcmVmcy5oICAgICAgICB8ICAgNyArLQogc3JjL2Zyb250
ZW5kcy9xdC91aS9QcmVmSW5wdXRVaS51aSB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKy0tLS0tLS0tCiAxOSBmaWxlcyBjaGFuZ2VkLCA1NjkgaW5zZXJ0aW9ucygrKSwgMjQ4IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9SRUxFQVNFLU5PVEVTIGIvbGliL1JFTEVBU0Ut
Tk9URVMKaW5kZXggNjcyYzAzZTUzMS4uZTRiMjU4M2U0NSAxMDA2NDQKLS0tIGEvbGliL1JFTEVB
U0UtTk9URVMKKysrIGIvbGliL1JFTEVBU0UtTk9URVMKQEAgLTEwLDggKzEwLDIyIEBACiAgIGFy
Z3VtZW50IG9mIHRoZSBidWZmZXItbG9hZC1ncmFwaGljcyBsZnVuLgogCiAKKyEhS2V5Ym9hcmQg
bWFwcworCistIFRoZSBvbGQgcHJpbWFyeS9zZWNvbmRhcnkga2V5Ym9hcmQgbWFwIHNjaGVtZSBo
YXMgYmVlbiByZXBsYWNlZCB3aXRoCisgIGV4cGxpY2l0IHBlci1sYW5ndWFnZSBrZXlib2FyZCBt
YXBzLiBJbnN0ZWFkIG9mIHRvZ2dsaW5nIGJldHdlZW4gdHdvCisgIGZpeGVkIG1hcHMsIGEga2V5
Ym9hcmQgbWFwIGNhbiBub3cgYmUgc2VsZWN0ZWQgYnkgbmFtZSAoa2V5bWFwLXNlbGVjdAorICBs
ZnVuKSBhbmQsIG9wdGlvbmFsbHksIGNob3NlbiBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byB0
aGUgbGFuZ3VhZ2UKKyAgYXQgdGhlIGN1cnNvciAoUHJlZmVyZW5jZXMgPiBMYW5ndWFnZSA+IEtl
eWJvYXJkKS4KKworCiAhISFUaGUgZm9sbG93aW5nIHByZWYgdmFyaWFibGVzIHdlcmUgYWRkZWQg
aW4gMi46CiAKKy0gXGtibWFwX2ZvbGxvd19sYW5ndWFnZTogc2VsZWN0IHRoZSBrZXlib2FyZCBt
YXAgYXV0b21hdGljYWxseSBhY2NvcmRpbmcKKyAgdG8gdGhlIGxhbmd1YWdlIGF0IHRoZSBjdXJz
b3IuCisKKy0gXGtibWFwX2xhbmc6IGFzc2lnbnMgYSBrZXlib2FyZCBtYXAgdG8gYSBnaXZlbiBs
YW5ndWFnZSwgdXNlZCB3aGVuCisgIFxrYm1hcF9mb2xsb3dfbGFuZ3VhZ2UgaXMgc2V0LgogCiAK
ICEhIVRoZSBmb2xsb3dpbmcgcHJlZiB2YXJpYWJsZXMgd2VyZSBjaGFuZ2VkIGluIDIuNjoKQEAg
LTI0LDEyICszOCwyMSBAQAogCiAhISFUaGUgZm9sbG93aW5nIHByZWYgdmFyaWFibGVzIGFyZSBv
YnNvbGV0ZWQgaW4gMi42OgogCistIFxrYm1hcF9zZWNvbmRhcnkgaGFzIGJlZW4gcmVwbGFjZWQg
YnkgXGtibWFwX2ZvbGxvd19sYW5ndWFnZSBhbmQKKyAgXGtibWFwX2xhbmcgKHNlZSAiS2V5Ym9h
cmQgbWFwcyIgYWJvdmUpLgorCiAhISFUaGUgZm9sbG93aW5nIG5ldyBMeVggZnVuY3Rpb25zIGhh
dmUgYmVlbiBpbnRyb2R1Y2VkIGluIDIuNjoKIAogLSBidWZmZXItbG9hZC1ncmFwaGljczogdHJp
Z2dlcnMgcHJldmlldyBjb252ZXJzaW9uIGZvciBldmVyeSBpbWFnZSBpbgogICB0aGUgY3VycmVu
dCBidWZmZXIgYXQgb25jZSwgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBlYWNoIGltYWdlIHRvIGJl
CiAgIHNjcm9sbGVkIGludG8gdmlldy4KIAorLSBrZXltYXAtc2VsZWN0IDxOQU1FPjogdHVybnMg
b24gYW5kIHNlbGVjdHMgYSBrZXlib2FyZCBtYXAgYnkgbmFtZQorICAodGhlIGJhc2UgbmFtZSBv
ZiBhIC5rbWFwIGZpbGUpLiBJZiBOQU1FIGlzIG9taXR0ZWQsIGFueSBtYW51YWwKKyAgc2VsZWN0
aW9uIGlzIGRyb3BwZWQgYW5kIHRoZSBjb25maWd1cmVkIGRlZmF1bHQgKG9yLCBpZgorICBca2Jt
YXBfZm9sbG93X2xhbmd1YWdlIGlzIHNldCwgdGhlIG1hcCBmb3IgdGhlIGxhbmd1YWdlIGF0IHRo
ZQorICBjdXJzb3IpIGlzIGFwcGxpZWQgYWdhaW4uCisKICEhIVRoZSBmb2xsb3dpbmcgTHlYIGZ1
bmN0aW9ucyBoYXZlIGJlZW4gY2hhbmdlZCBpbiAyLjY6CiAKIC0gVGhlIGZ1bmN0aW9uIG5ld3Bh
Z2UtaW5zZXJ0IGhhcyBiZWVuIHJlbmFtZWQgdG8gdGV4dGJyZWFrLWluc2VydApAQCAtMzcsOSAr
NjAsMTIgQEAKIAogLSBUaGUgZnVuY3Rpb24gbGFuZ3VhZ2Ugbm93IGFjY2VwdHMgYW4gYWRkaXRp
b25hbCAibG9jYWwiIGFyZ3VtZW50CiAgIHdoaWNoIGVuc3VyZXMgdGhlIGxhbmd1YWdlIHN3aXRj
aCBpcyBhbiBpbmxpbmUgb25lIChlLmcuIFxmb3JlaWdubGFuZ3VhZ2UpLgotICAKKwogISEhVGhl
IGZvbGxvd2luZyBMeVggZnVuY3Rpb25zIGhhdmUgYmVlbiByZW1vdmVkIGluIDIuNjoKIAorLSBr
ZXltYXAtcHJpbWFyeSwga2V5bWFwLXNlY29uZGFyeSBhbmQga2V5bWFwLXRvZ2dsZSBoYXZlIGJl
ZW4gcmVtb3ZlZAorICBpbiBmYXZvciBvZiBrZXltYXAtc2VsZWN0IChzZWUgYWJvdmUpLgorCiAh
ISFUaGUgZm9sbG93aW5nIEx5WCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBhbmQgdGhlbiByZW1v
dmVkIGluIDIuNiBkZXZlbG9wbWVudCBjeWNsZToKIAogISEhVGhlIGZvbGxvd2luZyBsYXlvdXQt
cmVsYXRlZCBjaGFuZ2VzIGhhcyBiZWVuIGRvbmUgaW4gMi42IGRldmVsb3BtZW50IGN5Y2xlOgpk
aWZmIC0tZ2l0IGEvbGliL2JpbmQvZGUvbWVudXMuYmluZCBiL2xpYi9iaW5kL2RlL21lbnVzLmJp
bmQKaW5kZXggYTE5NGI2NGYyNC4uZmZmNzEzM2U3ZSAxMDA2NDQKLS0tIGEvbGliL2JpbmQvZGUv
bWVudXMuYmluZAorKysgYi9saWIvYmluZC9kZS9tZW51cy5iaW5kCkBAIC0xNjIsOCArMTYyLDUg
QEAgRm9ybWF0IDUKICMKICMgTWVuw7wgVGFzdGF0dXIKICMKLVxiaW5kICJNLXQgMSIJCQkia2V5
bWFwLXByaW1hcnkiCi1cYmluZCAiTS10IDIiCQkJImtleW1hcC1zZWNvbmRhcnkiCiBcYmluZCAi
TS10IG8iCQkJImtleW1hcC1vZmYiCi1cYmluZCAiTS10IHQiCQkJImtleW1hcC10b2dnbGUiCiBc
YmluZCAiTS10IHgiCQkJImtleW1hcC1vZmYiCmRpZmYgLS1naXQgYS9saWIvYmluZC9tZW51cy5i
aW5kIGIvbGliL2JpbmQvbWVudXMuYmluZAppbmRleCBjZWQzY2Q5ZGYwLi42OTdiNTZkNWZmIDEw
MDY0NAotLS0gYS9saWIvYmluZC9tZW51cy5iaW5kCisrKyBiL2xpYi9iaW5kL21lbnVzLmJpbmQK
QEAgLTE2NSw4ICsxNjUsNSBAQCBGb3JtYXQgNQogIyBLZXlib2FyZCBtZW51CiAjCiAKLVxiaW5k
ICJNLWsgMSIJCQkia2V5bWFwLXByaW1hcnkiCi1cYmluZCAiTS1rIDIiCQkJImtleW1hcC1zZWNv
bmRhcnkiCiBcYmluZCAiTS1rIG8iCQkJImtleW1hcC1vZmYiCi1cYmluZCAiTS1rIHQiCQkJImtl
eW1hcC10b2dnbGUiCiBcYmluZCAiTS1rIHgiCQkJImtleW1hcC1vZmYiCmRpZmYgLS1naXQgYS9s
aWIvYmluZC9ydS9tZW51cy5iaW5kIGIvbGliL2JpbmQvcnUvbWVudXMuYmluZAppbmRleCBjNTM1
YWJlOGI1Li41MGIxNTY4MTY4IDEwMDY0NAotLS0gYS9saWIvYmluZC9ydS9tZW51cy5iaW5kCisr
KyBiL2xpYi9iaW5kL3J1L21lbnVzLmJpbmQKQEAgLTI1OCwxNCArMjU4LDggQEAgRm9ybWF0IDUK
ICMgS2V5Ym9hcmQgbWVudQogIwogCi1cYmluZCAiTS1rIDEiCQkJImtleW1hcC1wcmltYXJ5Igot
XGJpbmQgIk0tayAyIgkJCSJrZXltYXAtc2Vjb25kYXJ5IgogXGJpbmQgIk0tayBvIgkJCSJrZXlt
YXAtb2ZmIgotXGJpbmQgIk0tayB0IgkJCSJrZXltYXAtdG9nZ2xlIgogXGJpbmQgIk0tayB4IgkJ
CSJrZXltYXAtb2ZmIgogCi1cYmluZCAiTS3QuyAxIgkJCSJrZXltYXAtcHJpbWFyeSIKLVxiaW5k
ICJNLdC7IDIiCQkJImtleW1hcC1zZWNvbmRhcnkiCiBcYmluZCAiTS3QuyDRiSIJCQkia2V5bWFw
LW9mZiIKLVxiaW5kICJNLdC7INC1IgkJCSJrZXltYXAtdG9nZ2xlIgogXGJpbmQgIk0t0Lsg0Yci
CQkJImtleW1hcC1vZmYiCmRpZmYgLS1naXQgYS9saWIvY29uZmlndXJlLnB5IGIvbGliL2NvbmZp
Z3VyZS5weQppbmRleCBjMTY4ZDAxZWQ0Li41ZjUzZDEzNWM3IDEwMDY0NAotLS0gYS9saWIvY29u
ZmlndXJlLnB5CisrKyBiL2xpYi9jb25maWd1cmUucHkKQEAgLTIxMTEsNyArMjExMSw3IEBAIGlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgbHl4X2NoZWNrX2NvbmZpZyA9IFRydWUKICAg
ICBseXhfa3BzZXdoaWNoID0gVHJ1ZQogICAgIG91dGZpbGUgPSAnbHl4cmMuZGVmYXVsdHMnCi0g
ICAgbHl4cmNfZmlsZWZvcm1hdCA9IDQyCisgICAgbHl4cmNfZmlsZWZvcm1hdCA9IDQzCiAgICAg
cmNfZW50cmllcyA9ICcnCiAgICAgbHl4X2tlZXBfdGVtcHMgPSBGYWxzZQogICAgIHZlcnNpb25f
c3VmZml4ID0gJycKZGlmZiAtLWdpdCBhL2xpYi9kb2MvVXNlckd1aWRlLmx5eCBiL2xpYi9kb2Mv
VXNlckd1aWRlLmx5eAppbmRleCA4NjIyMTBkZGNhLi5lY2ZkNGVjNWQ1IDEwMDY0NAotLS0gYS9s
aWIvZG9jL1VzZXJHdWlkZS5seXgKKysrIGIvbGliL2RvYy9Vc2VyR3VpZGUubHl4CkBAIC0xODYs
NiArMTg2LDcgQEAgbG9naWNhbG1rdXAKIFxkb2Nib29rX21hdGhtbF9wcmVmaXggMQogXGRvY2Jv
b2tfbWF0aG1sX3ZlcnNpb24gMAogXGF1dGhvciAtNzEyNjk4MzIxICJKw7xyZ2VuIFNwaXR6bcO8
bGxlciIKK1xhdXRob3IgNjczMDg1NjQ4ICJ1Zm9naWVsIgogXGF1dGhvciAxMDY0MzEyNjA1ICJV
ZGkgRm9naWVsIgogXGVuZF9oZWFkZXIKIApAQCAtNDM3OTMsNyArNDM3OTQsMTQgQEAgUHJlZmVy
ZW5jZXNcU3BlY2lhbENoYXIgbWVudXNlcGFyYXRvcgogRWRpdGluZ1xTcGVjaWFsQ2hhciBtZW51
c2VwYXJhdG9yCiBLZXlib2FyZC9Nb3VzZQogXGZhbWlseSBkZWZhdWx0Ci0gZGlhbG9nIGFsbG93
cyB5b3UgdG8gY2hvb3NlIHVwIHRvIHR3byBrZXlib2FyZCBtYXBwaW5ncywKKyBkaWFsb2cgCitc
Y2hhbmdlX2RlbGV0ZWQgNjczMDg1NjQ4IDE3ODUxMzc4NTYKK2FsbG93cyB5b3UgdG8gY2hvb3Nl
IHVwIHRvIHR3byBrZXlib2FyZCBtYXBwaW5ncworXGNoYW5nZV9pbnNlcnRlZCA2NzMwODU2NDgg
MTc4NTE0MTkwMworbGV0cyB5b3Ugc2V0IGEgZGVmYXVsdCBrZXlib2FyZCBtYXAsCisgb3IgaGF2
ZSBMeVggc2VsZWN0IG9uZSBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUgbGFuZ3VhZ2Ug
b2YgdGhlIHRleHQgdW5kZXIgdGhlIGN1cnNvcgorXGNoYW5nZV91bmNoYW5nZWQKKywKICBzZWUg
c2VjdGlvbgogXGJlZ2luX2luc2V0IHNwYWNlIH4KIFxlbmRfaW5zZXQKQEAgLTQzODA3LDcgKzQz
ODE1LDE0IEBAIG5vbGluayAiZmFsc2UiCiBcZW5kX2luc2V0CiAKIC4KKworXGNoYW5nZV9kZWxl
dGVkIDY3MzA4NTY0OCAxNzg1MTM3ODkxCiAgWW91IGNhbiBjaG9vc2UgcHJpbWFyeSBhbmQgc2Vj
b25kYXJ5IGtleWJvYXJkIGxhbmd1YWdlcyBhbmQgdGhlbiBzZWxlY3Qgd2hpY2ggb25lIHlvdSB3
YW50IHRvIHVzZS4KKworXGNoYW5nZV9pbnNlcnRlZCA2NzMwODU2NDggMTc4NTE0MTgyOQorIAor
XGNoYW5nZV91bmNoYW5nZWQKKwogXGVuZF9sYXlvdXQKIAogXGJlZ2luX2xheW91dCBTdGFuZGFy
ZApAQCAtNTU4NzYsMTQgKzU1ODkxLDMwIEBAIGtleWJvYXJkCiAKIG1hcAogXGZhbWlseSBkZWZh
dWx0Ci0gYW5kIHNlbGVjdCB0aGUga2V5Ym9hcmQgbWFwIGZpbGUgbmFtZWQgCisgYW5kIAorXGNo
YW5nZV9kZWxldGVkIDY3MzA4NTY0OCAxNzg1MTQxMDM3CitzZWxlY3QgdGhlIGtleWJvYXJkIG1h
cCBmaWxlIG5hbWVkCitcY2hhbmdlX2luc2VydGVkIDY3MzA4NTY0OCAxNzg1MTQxMDc5CitzZXQg
dGhlIAorXGZhbWlseSBzYW5zCitEZWZhdWx0CitcZmFtaWx5IGRlZmF1bHQKKyBmaWVsZCB0byB0
aGUga2V5Ym9hcmQgbWFwIG5hbWVkCitcY2hhbmdlX3VuY2hhbmdlZAorIAogXHNoYXBlIGl0YWxp
Ywotcm9tYW5pYW4ua21hcAorcm9tYW5pYW4KK1xjaGFuZ2VfZGVsZXRlZCA2NzMwODU2NDggMTc4
NTE0MTA4OQorLmttYXAKK1xjaGFuZ2VfdW5jaGFuZ2VkCisKIFxzaGFwZSBkZWZhdWx0CiAuCiBc
ZW5kX2xheW91dAogCiBcYmVnaW5fbGF5b3V0IFN0YW5kYXJkCisKK1xjaGFuZ2VfZGVsZXRlZCA2
NzMwODU2NDggMTc4NTE0MTA5OAogWW91IGNhbiBzcGVjaWZ5IGEgCiBcZmFtaWx5IHNhbnMKIEZp
cnN0CkBAIC01NTkxNyw2ICs1NTk0OCwzMCBAQCBhcmcgICAia2V5bWFwLXRvZ2dsZSIKIFxlbmRf
aW5zZXQKIAogLgorXGNoYW5nZV9pbnNlcnRlZCA2NzMwODU2NDggMTc4NTE0MTY3MQorSWYgeW91
IHJlZ3VsYXJseSB3b3JrIHdpdGggbW9yZSB0aGFuIG9uZSBsYW5ndWFnZSwKKyB5b3UgY2FuIGlu
c3RlYWQgbGV0IFxTcGVjaWFsQ2hhciBMeVgKKyBzZWxlY3QgdGhlIGtleWJvYXJkIG1hcCBhdXRv
bWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHRleHQgdW5kZXIgdGhl
IGN1cnNvcjoKKyBlbmFibGUgU2VsZWN0IGtleWJvYXJkIG1hcCBhdXRvbWF0aWNhbGx5IGJ5IGxh
bmd1YWdlIGFuZCBhc3NpZ24gYSBrZXlib2FyZCBtYXAgdG8gZWFjaCBsYW5ndWFnZSB5b3UgdXNl
LAorIGluIGFkZGl0aW9uIHRvIHRoZSAKK1xmYW1pbHkgc2FucworRGVmYXVsdAorXGZhbWlseSBk
ZWZhdWx0CisgbWFwIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGRvbid0IGhhdmUgdGhlaXIgb3du
IGFzc2lnbm1lbnQuCisgWW91IGNhbiBhbHNvIHN3aXRjaCB0byBhbnkgY29uZmlndXJlZCBrZXli
b2FyZCBtYXAgbWFudWFsbHkgYXQgYW55IHRpbWUsCisgb3IgdHVybiBrZXkgbWFwcGluZyBvZmYs
CisgYnkgYmluZGluZyBhIGtleSBvZiB5b3VyIGNob2ljZSB0byB0aGUgCitcZmFtaWx5IHNhbnMK
K2tleW1hcC1zZWxlY3QKK1xmYW1pbHkgZGVmYXVsdAorIGFuZCAKK1xmYW1pbHkgc2Fucwora2V5
bWFwLW9mZgorXGZhbWlseSBkZWZhdWx0CisgXFNwZWNpYWxDaGFyIEx5WAorIGZ1bmN0aW9ucyBy
ZXNwZWN0aXZlbHkuCitcY2hhbmdlX3VuY2hhbmdlZAorCiBcZW5kX2xheW91dAogCiBcYmVnaW5f
bGF5b3V0IFN0YW5kYXJkCmRpZmYgLS1naXQgYS9saWIvc2NyaXB0cy9wcmVmczJwcmVmc19wcmVm
cy5weSBiL2xpYi9zY3JpcHRzL3ByZWZzMnByZWZzX3ByZWZzLnB5CmluZGV4IDZmMGJhODAwMmQu
LmM3OGZkMzRiOTAgMTAwNjQ0Ci0tLSBhL2xpYi9zY3JpcHRzL3ByZWZzMnByZWZzX3ByZWZzLnB5
CisrKyBiL2xpYi9zY3JpcHRzL3ByZWZzMnByZWZzX3ByZWZzLnB5CkBAIC0xODYsNiArMTg2LDE1
IEBACiAjICAgZGVmYXVsdCBpcyB0cnVlLCBzbyB0aGlzIGtlZXBzIGJlaGF2aW9yIHRoZSBzYW1l
IGZvciBleGlzdGluZwogIyAgIHVzZXJzKQogCisjIEluY3JlbWVudGVkIHRvIGZvcm1hdCA0Mywg
YnkgdWZvZ2llbAorIyAgIFJlcGxhY2UgXGtibWFwX3NlY29uZGFyeSAodXNlZCBmb3IgdGhlIG9s
ZCBhdXRvbWF0aWMgc3dpdGNoIGJldHdlZW4KKyMgICBhIHByaW1hcnkgYW5kIGEgc2Vjb25kYXJ5
IGtleWJvYXJkIG1hcCBkZXBlbmRpbmcgb24gdGhlIGRpcmVjdGlvbgorIyAgIG9mIHRoZSB0ZXh0
IGF0IHRoZSBjdXJzb3IpIHdpdGggXGtibWFwX2ZvbGxvd19sYW5ndWFnZSBhbmQKKyMgICBca2Jt
YXBfbGFuZyAoZXhwbGljaXQgcGVyLWxhbmd1YWdlIGtleWJvYXJkLW1hcCBhc3NpZ25tZW50KS4K
KyMgICBFeGlzdGluZyBca2JtYXBfc2Vjb25kYXJ5IHNldHRpbmdzIGFyZSBtaWdyYXRlZCB0byBh
IFxrYm1hcF9sYW5nCisjICAgYXNzaWdubWVudCBmb3IgZXZlcnkgcmlnaHQtdG8tbGVmdCBsYW5n
dWFnZSBpbiBsaWIvbGFuZ3VhZ2VzLCB3aXRoCisjICAgXGtibWFwX2ZvbGxvd19sYW5ndWFnZSB0
dXJuZWQgb24sIHRvIGFwcHJveGltYXRlIHByaW9yIGJlaGF2aW9yLgorCiAjIE5PVEU6IFRoZSBm
b3JtYXQgc2hvdWxkIGFsc28gYmUgdXBkYXRlZCBpbiBMWVhSQy5jcHAgYW5kCiAjIGluIGNvbmZp
Z3VyZS5weSAoc2VhcmNoIGZvciBseXhyY19maWxlZm9ybWF0KS4KIApAQCAtNTU4LDYgKzU2Nywy
NyBAQCBkZWYgYWRkX3Zpc3VhbF9jdXJzb3JfZGVmYXVsdChsaW5lcyk6CiAJbGluZXMuYXBwZW5k
KCJcXHZpc3VhbF9jdXJzb3IgZmFsc2UiKQogCiAKKyMgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXMg
ZGVmaW5lZCBpbiBsaWIvbGFuZ3VhZ2VzIChSVEwgdHJ1ZSkKK3J0bF9sYW5ndWFnZXMgPSAoImFy
YWJpY19hcmFidGV4IiwgImFyYWJpY19hcmFiaSIsICJmYXJzaSIsICJoZWJyZXciLAorCQkgICJu
a28iLCAic3lyaWFjIiwgInVyZHUiLCAidXlnaHVyIikKKworZGVmIG1pZ3JhdGVfa2JtYXBfc2Vj
b25kYXJ5KGxpbmVzKToKKwlzZWNvbmRhcnkgPSBOb25lCisJbmV3bGluZXMgPSBbXQorCWZvciBs
IGluIGxpbmVzOgorCQlpZiBsLnN0cmlwKCkubG93ZXIoKS5zdGFydHN3aXRoKCJcXGtibWFwX3Nl
Y29uZGFyeSIpOgorCQkJZW50cmllcyA9IGdldF9mb3JtYXQobCkKKwkJCWlmIGxlbihlbnRyaWVz
KSA+IDEgYW5kIGVudHJpZXNbMV06CisJCQkJc2Vjb25kYXJ5ID0gZW50cmllc1sxXQorCQkJY29u
dGludWUKKwkJbmV3bGluZXMuYXBwZW5kKGwpCisJaWYgc2Vjb25kYXJ5OgorCQluZXdsaW5lcy5h
cHBlbmQoIlxca2JtYXBfZm9sbG93X2xhbmd1YWdlIHRydWUiKQorCQlmb3IgbGFuZyBpbiBydGxf
bGFuZ3VhZ2VzOgorCQkJbmV3bGluZXMuYXBwZW5kKCdcXGtibWFwX2xhbmcgIiVzIiAiJXMiJyAl
IChsYW5nLCBzZWNvbmRhcnkpKQorCWxpbmVzWzpdID0gbmV3bGluZXMKKworCiAjIEVuZCBjb252
ZXJzaW9ucyBmb3IgTHlYIDIuNSB0byAyLjYKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwogCkBAIC02MTMsNSArNjQzLDYgQEAgY29udmVyc2lvbnMgPSBbCiAJWyAzOSwgW11d
LAogICAgIFsgNDAsIFtib29rbWFya3NfdmlzaWJpbGl0eV1dLAogICAgIFsgNDEsIFtyZW5hbWVf
bGFuZ3BhY2tdXSwKLQlbIDQyLCBbYWRkX3Zpc3VhbF9jdXJzb3JfZGVmYXVsdF1dCisJWyA0Miwg
W2FkZF92aXN1YWxfY3Vyc29yX2RlZmF1bHRdXSwKKwlbIDQzLCBbbWlncmF0ZV9rYm1hcF9zZWNv
bmRhcnldXQogXQpkaWZmIC0tZ2l0IGEvc3JjL0J1ZmZlclZpZXcuY3BwIGIvc3JjL0J1ZmZlclZp
ZXcuY3BwCmluZGV4IDBjZGY1ZDI0YmIuLjMwNGE5MzljNWIgMTAwNjQ0Ci0tLSBhL3NyYy9CdWZm
ZXJWaWV3LmNwcAorKysgYi9zcmMvQnVmZmVyVmlldy5jcHAKQEAgLTEwMDYsMTQgKzEwMDYsNyBA
QCBib29sIEJ1ZmZlclZpZXc6Om1vdmVUb1Bvc2l0aW9uKHBpdF90eXBlIGJvdHRvbV9waXQsIHBv
c190eXBlIGJvdHRvbV9wb3MsCiAKIHZvaWQgQnVmZmVyVmlldzo6dHJhbnNsYXRlQW5kSW5zZXJ0
KGNoYXJfdHlwZSBjLCBUZXh0ICogdCwgQ3Vyc29yICYgY3VyKQogewotCWlmIChkLT5jdXJzb3Jf
LnJlYWxfY3VycmVudF9mb250LmlzUmlnaHRUb0xlZnQoKSkgewotCQlpZiAoZC0+aW50bF8ua2V5
bWFwID09IEludGw6OlBSSU1BUlkpCi0JCQlkLT5pbnRsXy5rZXlNYXBTZWMoKTsKLQl9IGVsc2Ug
ewotCQlpZiAoZC0+aW50bF8ua2V5bWFwID09IEludGw6OlNFQ09OREFSWSkKLQkJCWQtPmludGxf
LmtleU1hcFByaW0oKTsKLQl9Ci0KKwlkLT5pbnRsXy5zeW5jQWN0aXZlTWFwKGQtPmN1cnNvcl8u
cmVhbF9jdXJyZW50X2ZvbnQubGFuZ3VhZ2UoKS0+bGFuZygpKTsKIAlkLT5pbnRsXy5nZXRUcmFu
c01hbmFnZXIoKS50cmFuc2xhdGVBbmRJbnNlcnQoYywgdCwgY3VyKTsKIH0KIApAQCAtMTMwOCw5
ICsxMzAxLDcgQEAgYm9vbCBCdWZmZXJWaWV3OjpnZXRTdGF0dXMoRnVuY1JlcXVlc3QgY29uc3Qg
JiBjbWQsIEZ1bmNTdGF0dXMgJiBmbGFnKQogCWNhc2UgTEZVTl9CSUJURVhfREFUQUJBU0VfTElT
VDoKIAljYXNlIExGVU5fU1RBVElTVElDUzoKIAljYXNlIExGVU5fS0VZTUFQX09GRjoKLQljYXNl
IExGVU5fS0VZTUFQX1BSSU1BUlk6Ci0JY2FzZSBMRlVOX0tFWU1BUF9TRUNPTkRBUlk6Ci0JY2Fz
ZSBMRlVOX0tFWU1BUF9UT0dHTEU6CisJY2FzZSBMRlVOX0tFWU1BUF9TRUxFQ1Q6CiAJY2FzZSBM
RlVOX0lOU0VUX1NFTEVDVF9BTEw6CiAJY2FzZSBMRlVOX1NFUlZFUl9HRVRfWFk6CiAJCWZsYWcu
c2V0RW5hYmxlZCh0cnVlKTsKQEAgLTI1MzksMjAgKzI1MzAsMTcgQEAgdm9pZCBCdWZmZXJWaWV3
OjpkaXNwYXRjaChGdW5jUmVxdWVzdCBjb25zdCAmIGNtZCwgRGlzcGF0Y2hSZXN1bHQgJiBkcikK
IAl9CiAKIAljYXNlIExGVU5fS0VZTUFQX09GRjoKLQkJZ2V0SW50bCgpLmtleU1hcE9uKGZhbHNl
KTsKLQkJYnJlYWs7Ci0KLQljYXNlIExGVU5fS0VZTUFQX1BSSU1BUlk6Ci0JCWdldEludGwoKS5r
ZXlNYXBQcmltKCk7CisJCWdldEludGwoKS5kZXNlbGVjdE1hcCgpOwogCQlicmVhazsKIAotCWNh
c2UgTEZVTl9LRVlNQVBfU0VDT05EQVJZOgotCQlnZXRJbnRsKCkua2V5TWFwU2VjKCk7Ci0JCWJy
ZWFrOwotCi0JY2FzZSBMRlVOX0tFWU1BUF9UT0dHTEU6Ci0JCWdldEludGwoKS50b2dnbGVLZXlN
YXAoKTsKKwljYXNlIExGVU5fS0VZTUFQX1NFTEVDVDogeworCQlzdHJpbmcgY29uc3QgbmFtZSA9
IGNtZC5nZXRBcmcoMCk7CisJCWlmIChuYW1lLmVtcHR5KCkpCisJCQlnZXRJbnRsKCkuc2VsZWN0
RGVmYXVsdChkLT5jdXJzb3JfLnJlYWxfY3VycmVudF9mb250Lmxhbmd1YWdlKCktPmxhbmcoKSk7
CisJCWVsc2UgaWYgKCFnZXRJbnRsKCkuc2VsZWN0TWFwKG5hbWUpKQorCQkJbWVzc2FnZShiZm9y
bWF0KF8oIktleWJvYXJkIG1hcCBub3QgZm91bmQ6ICUxJHMiKSwgZnJvbV91dGY4KG5hbWUpKSk7
CiAJCWJyZWFrOworCX0KIAogCWNhc2UgTEZVTl9ESUFMT0dfU0hPV19ORVdfSU5TRVQ6IHsKIAkJ
c3RyaW5nIGNvbnN0IG5hbWUgPSBjbWQuZ2V0QXJnKDApOwpkaWZmIC0tZ2l0IGEvc3JjL0Z1bmND
b2RlLmggYi9zcmMvRnVuY0NvZGUuaAppbmRleCA1YzMyNTlkZDY4Li40Zjc4NTk2YjljIDEwMDY0
NAotLS0gYS9zcmMvRnVuY0NvZGUuaAorKysgYi9zcmMvRnVuY0NvZGUuaApAQCAtMTQ3LDEwICsx
NDcsOCBAQCBlbnVtIEZ1bmNDb2RlCiAJTEZVTl9OT1RFX0lOU0VSVCwKIAlMRlVOX1VJX1RPR0dM
RSwKIAlMRlVOX0tFWU1BUF9PRkYsCi0JTEZVTl9LRVlNQVBfUFJJTUFSWSwKLQlMRlVOX0tFWU1B
UF9TRUNPTkRBUlksCisJTEZVTl9LRVlNQVBfU0VMRUNULAogCS8vIDEwMAotCUxGVU5fS0VZTUFQ
X1RPR0dMRSwKIAlMRlVOX01BVEhfSU5TRVJULAogCUxGVU5fTUFUSF9NQVRSSVgsCiAJTEZVTl9N
QVRIX0xJTUlUUywKZGlmZiAtLWdpdCBhL3NyYy9JbnRsLmNwcCBiL3NyYy9JbnRsLmNwcAppbmRl
eCBmZGFlMGIxYWJhLi44NWYxM2Y4NzljIDEwMDY0NAotLS0gYS9zcmMvSW50bC5jcHAKKysrIGIv
c3JjL0ludGwuY3BwCkBAIC0yMiw3NiArMjIsOTkgQEAgbmFtZXNwYWNlIGx5eCB7CiAKIAogSW50
bDo6SW50bCgpCi0JOiBrZXltYXAoSW50bDo6UFJJTUFSWSksIGtleW1hcG9uKGx5eHJjLnVzZV9r
Ym1hcCksCi0JcHJpbV9sYW5nKGx5eHJjLnByaW1hcnlfa2JtYXApLCBzZWNfbGFuZyhseXhyYy5z
ZWNvbmRhcnlfa2JtYXApCisJOiB1c2Vfa2JtYXBfKGx5eHJjLnVzZV9rYm1hcCksCisJICBkZWZh
dWx0X2xhbmdfKGx5eHJjLmRlZmF1bHRfa2JtYXApLAorCSAgZm9sbG93X2xhbmd1YWdlXyhseXhy
Yy5rZXltYXBfZm9sbG93X2xhbmd1YWdlKSwKKwkgIGxhbmdfa2V5bWFwc18obHl4cmMua2V5bWFw
X2J5X2xhbmd1YWdlKQogewogfQogCiAKLXZvaWQgSW50bDo6a2V5TWFwT24oYm9vbCBvbikKK2Jv
b2wgSW50bDo6c2VsZWN0TWFwKHN0ZDo6c3RyaW5nIGNvbnN0ICYgbmFtZSkKIHsKLQlrZXltYXBv
biA9IG9uOwotCi0JaWYgKG9uKSB7Ci0JCWlmIChrZXltYXAgPT0gUFJJTUFSWSkKLQkJCWtleU1h
cFByaW0oKTsKLQkJZWxzZQotCQkJa2V5TWFwU2VjKCk7Ci0JfSBlbHNlIHsKLQkJdHJhbnMuZGlz
YWJsZUtleW1hcCgpOworCWlmIChuYW1lLmVtcHR5KCkpIHsKKwkJZGVzZWxlY3RNYXAoKTsKKwkJ
cmV0dXJuIHRydWU7CiAJfQorCisJaWYgKHRyYW5zLnNldEFjdGl2ZShuYW1lKSAhPSAwKQorCQly
ZXR1cm4gZmFsc2U7CisKKwlhY3RpdmVfbWFwXyA9IG5hbWU7CisJcmV0dXJuIHRydWU7CiB9CiAK
IAotdm9pZCBJbnRsOjp0b2dnbGVLZXlNYXAoKQordm9pZCBJbnRsOjpkZXNlbGVjdE1hcCgpCiB7
Ci0JaWYgKGtleW1hcG9uICYmIChrZXltYXAgPT0gUFJJTUFSWSkpCi0JCWtleU1hcFNlYygpOwot
CWVsc2UgaWYgKGtleW1hcG9uKQotCQlrZXlNYXBPbihmYWxzZSk7Ci0JZWxzZQotCQlrZXlNYXBQ
cmltKCk7CisJdHJhbnMuZGlzYWJsZUtleW1hcCgpOworCWFjdGl2ZV9tYXBfLmVyYXNlKCk7CiB9
CiAKIAotdm9pZCBJbnRsOjprZXlNYXBQcmltKCkKK3N0ZDo6c3RyaW5nIEludGw6Om1hcEZvckxh
bmd1YWdlKHN0ZDo6c3RyaW5nIGNvbnN0ICYgbGFuZ2NvZGUpIGNvbnN0CiB7Ci0JaWYgKCF0cmFu
cy5zZXRQcmltYXJ5KHByaW1fbGFuZykpCi0JCXRyYW5zLmVuYWJsZVByaW1hcnkoKTsKLQotCWtl
eW1hcG9uID0gdHJ1ZTsKLQlrZXltYXAgPSBQUklNQVJZOworCXN0ZDo6bWFwPHN0ZDo6c3RyaW5n
LCBzdGQ6OnN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KKwkJbGFuZ19rZXltYXBzXy5maW5k
KGxhbmdjb2RlKTsKKwlyZXR1cm4gaXQgPT0gbGFuZ19rZXltYXBzXy5lbmQoKSA/IGRlZmF1bHRf
bGFuZ18gOiBpdC0+c2Vjb25kOwogfQogCiAKLXZvaWQgSW50bDo6a2V5TWFwU2VjKCkKK3ZvaWQg
SW50bDo6c3luY0FjdGl2ZU1hcChzdGQ6OnN0cmluZyBjb25zdCAmIGxhbmdjb2RlKQogewotCWlm
ICghdHJhbnMuc2V0U2Vjb25kYXJ5KHNlY19sYW5nKSkKLQkJdHJhbnMuZW5hYmxlU2Vjb25kYXJ5
KCk7CisJaWYgKCF1c2Vfa2JtYXBfKSB7CisJCWRlc2VsZWN0TWFwKCk7CisJCWxhc3Rfc3luY2Vk
Xy5lcmFzZSgpOworCQlsYXN0X2xhbmdjb2RlXy5lcmFzZSgpOworCQlyZXR1cm47CisJfQogCi0J
a2V5bWFwb24gPSB0cnVlOwotCWtleW1hcCA9IFNFQ09OREFSWTsKKwkvLyBhIGxhbmd1YWdlIGNo
YW5nZW11c3QgZm9jcmUgYSByZXN5bmMgZXZlbiBpZiBpdCByZXNvbHZlcyB0byB0aGUKKwkvLyBz
YW1lIG1hcCBuYW1lIGFzIGJlZm9yZSAoZS5nLiB0d28gbGFuZ3VhZ2VzIHNoYXJpbmcgdGhlIGRl
ZmF1bHQpCisJYm9vbCBjb25zdCBsYW5nX2NoYW5nZWQgPSBmb2xsb3dfbGFuZ3VhZ2VfICYmIGxh
bmdjb2RlICE9IGxhc3RfbGFuZ2NvZGVfOworCWxhc3RfbGFuZ2NvZGVfID0gbGFuZ2NvZGU7CisK
KwlzdGQ6OnN0cmluZyBjb25zdCB3YW50ZWQgPQorCQlmb2xsb3dfbGFuZ3VhZ2VfID8gbWFwRm9y
TGFuZ3VhZ2UobGFuZ2NvZGUpIDogZGVmYXVsdF9sYW5nXzsKKwlpZiAoIWxhbmdfY2hhbmdlZCAm
JiB3YW50ZWQgPT0gbGFzdF9zeW5jZWRfKQorCQlyZXR1cm47CisKKwlsYXN0X3N5bmNlZF8gPSB3
YW50ZWQ7CisJaWYgKHdhbnRlZC5lbXB0eSgpKQorCQlkZXNlbGVjdE1hcCgpOworCWVsc2UKKwkJ
c2VsZWN0TWFwKHdhbnRlZCk7CiB9CiAKIAotdm9pZCBJbnRsOjppbml0S2V5TWFwcGVyKGJvb2wg
b24pCit2b2lkIEludGw6OnNlbGVjdERlZmF1bHQoc3RkOjpzdHJpbmcgY29uc3QgJiBsYW5nY29k
ZSkKIHsKLQlMWVhFUlIoRGVidWc6OklOSVQsICJJbml0aWFsaXppbmcga2V5IG1hcHBpbmdzLi4u
Iik7Ci0KLQlpZiAodHJhbnMuc2V0UHJpbWFyeShwcmltX2xhbmcpID09IC0xKQotCQlwcmltX2xh
bmcuZXJhc2UoKTsKLQlpZiAodHJhbnMuc2V0U2Vjb25kYXJ5KHNlY19sYW5nKSA9PSAtMSkKLQkJ
c2VjX2xhbmcuZXJhc2UoKTsKKwlpZiAoIXVzZV9rYm1hcF8pIHsKKwkJZGVzZWxlY3RNYXAoKTsK
KwkJbGFzdF9zeW5jZWRfLmVyYXNlKCk7CisJCWxhc3RfbGFuZ2NvZGVfLmVyYXNlKCk7CisJCXJl
dHVybjsKKwl9CiAKLQlpZiAocHJpbV9sYW5nLmVtcHR5KCkgJiYgc2VjX2xhbmcuZW1wdHkoKSkK
LQkJa2V5bWFwb24gPSBmYWxzZTsKKwlzdGQ6OnN0cmluZyBjb25zdCB3YW50ZWQgPQorCQlmb2xs
b3dfbGFuZ3VhZ2VfID8gbWFwRm9yTGFuZ3VhZ2UobGFuZ2NvZGUpIDogZGVmYXVsdF9sYW5nXzsK
KwlsYXN0X3N5bmNlZF8gPSB3YW50ZWQ7CisJbGFzdF9sYW5nY29kZV8gPSBsYW5nY29kZTsKKwlp
ZiAod2FudGVkLmVtcHR5KCkpCisJCWRlc2VsZWN0TWFwKCk7CiAJZWxzZQotCQlrZXltYXBvbiA9
IG9uOworCQlzZWxlY3RNYXAod2FudGVkKTsKK30KIAotCWtleU1hcE9uKGtleW1hcG9uKTsKIAot
CWlmIChrZXltYXBvbikKLQkJa2V5TWFwUHJpbSgpOwordm9pZCBJbnRsOjppbml0S2V5TWFwcGVy
KGJvb2wgb24pCit7CisJTFlYRVJSKERlYnVnOjpJTklULCAiSW5pdGlhbGl6aW5nIGtleSBtYXBw
aW5ncy4uLiIpOworCisJaWYgKCFvbiB8fCBkZWZhdWx0X2xhbmdfLmVtcHR5KCkgfHwgIXNlbGVj
dE1hcChkZWZhdWx0X2xhbmdfKSkKKwkJZGVzZWxlY3RNYXAoKTsKKwlsYXN0X3N5bmNlZF8gPSBh
Y3RpdmVfbWFwXzsKKwlsYXN0X2xhbmdjb2RlXy5lcmFzZSgpOwogfQogCiAKZGlmZiAtLWdpdCBh
L3NyYy9JbnRsLmggYi9zcmMvSW50bC5oCmluZGV4IDIyOGVhMGQ0OGYuLjJkNTQ4N2ExMjAgMTAw
NjQ0Ci0tLSBhL3NyYy9JbnRsLmgKKysrIGIvc3JjL0ludGwuaApAQCAtMTcsNiArMTcsOSBAQAog
CiAjaW5jbHVkZSAiVHJhbnMuaCIKIAorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdHJpbmc+
CisKIAogbmFtZXNwYWNlIGx5eCB7CiAKQEAgLTI2LDQyICsyOSw1MiBAQCBuYW1lc3BhY2UgbHl4
IHsKICAqLwogY2xhc3MgSW50bCB7CiBwdWJsaWM6Ci0JLy8vIHdoaWNoIGtleW1hcCBpcyBjdXJy
ZW50bHkgdXNlZCA/Ci0JZW51bSBLZXltYXAgewotCQlQUklNQVJZLAotCQlTRUNPTkRBUlkKLQl9
OwotCiAJSW50bCgpOwogCi0JLy8vIHtlbi9kaXN9YWJsZSB0aGUga2V5bWFwCi0Jdm9pZCBrZXlN
YXBPbihib29sIG9uKTsKLQotCS8vLyBzZXQgdGhlIHByaW1hcnkgbGFuZ3VhZ2Uga2V5bWFwCi0J
dm9pZCBrZXlNYXBQcmltKCk7CisJLy8vIHNlbGVjdCBhIGtleW1hcCBieSBuYW1lIChiYXNlIG5h
bWUgb2YgYSAua21hcCBmaWxlKTsgZmFsc2UgaWYgbm90IGZvdW5kCisJYm9vbCBzZWxlY3RNYXAo
c3RkOjpzdHJpbmcgY29uc3QgJiBuYW1lKTsKIAotCS8vLyBzZXQgdGhlIHNlY29uZGFyeSBsYW5n
dWFnZSBrZXltYXAKLQl2b2lkIGtleU1hcFNlYygpOworCS8vLyBUdXJuIG9mZiBrZXkgbWFwcGlu
Zy4KKwl2b2lkIGRlc2VsZWN0TWFwKCk7CiAKLQkvLy8gdHVybiBvbi9vZmYga2V5IG1hcHBpbmdz
LCBzdGF0dXMgaW4ga2V5bWFwb24KLQl2b2lkIHRvZ2dsZUtleU1hcCgpOworCS8vLyBmb3JjZS1h
cHBseSBsaWtlIHN5bmNBY3RpdmVNYXAoKTsgdXNlZCBieSBrZXltYXAtc2VsZWN0IHdpdGggbm8g
YXJndW1lbnQKKwl2b2lkIHNlbGVjdERlZmF1bHQoc3RkOjpzdHJpbmcgY29uc3QgJiBsYW5nY29k
ZSk7CiAKIAkvLy8gaW5pdGlhbGl6ZSBrZXkgbWFwcGVyCiAJdm9pZCBpbml0S2V5TWFwcGVyKGJv
b2wgb24pOwogCisJLy8vIGlzIGtleWJvYXJkIG1hcHBpbmcgZW5hYmxlZCBhdCBhbGwgKHRoZSAi
VXNlIGtleWJvYXJkIG1hcCIgcHJlZmVyZW5jZSk/CisJYm9vbCBlbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gdXNlX2tibWFwXzsgfQorCisJLy8vIGNob29zZSB0aGUgYWN0aXZlIG1hcCBhdXRvbWF0
aWNhbGx5IGZyb20gdGhlIGxhbmd1YWdlIGF0IHRoZSBjdXJzb3I/CisJYm9vbCBmb2xsb3dMYW5n
dWFnZSgpIGNvbnN0IHsgcmV0dXJuIHVzZV9rYm1hcF8gJiYgZm9sbG93X2xhbmd1YWdlXzsgfQor
CisJLy8vIGNvbmZpZ3VyZWQga2V5bWFwIGZvciB0aGUgbGFuZ3VhZ2UsIG9yIHRoZSBkZWZhdWx0
OyBlbXB0eSBpZiBuZWl0aGVyIGlzIHNldAorCXN0ZDo6c3RyaW5nIG1hcEZvckxhbmd1YWdlKHN0
ZDo6c3RyaW5nIGNvbnN0ICYgbGFuZ2NvZGUpIGNvbnN0OworCisJLy8vIHJlYXBwbHkgdGhlIHRh
cmdldCBtYXAgb25seSBpZiBpdCBjaGFuZ2VkLCBzbyBtYW51YWwgb3ZlcnJpZGVzIHN0aWNrCisJ
dm9pZCBzeW5jQWN0aXZlTWFwKHN0ZDo6c3RyaW5nIGNvbnN0ICYgbGFuZ2NvZGUpOworCisJLy8v
IG5hbWUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBtYXAsIGVtcHR5IGlmIG5vbmUKKwlzdGQ6
OnN0cmluZyBjb25zdCAmIGFjdGl2ZU1hcCgpIGNvbnN0IHsgcmV0dXJuIGFjdGl2ZV9tYXBfOyB9
CisKIAkvLyBHZXQgdGhlIFRyYW5zbGF0aW9uIE1hbmFnZXIKIAlpbmxpbmUgVHJhbnNNYW5hZ2Vy
ICYgZ2V0VHJhbnNNYW5hZ2VyKCkgeyByZXR1cm4gdHJhbnM7IH0KIAotCS8vLyB1c2luZyBwcmlt
YXJ5IG9yIHNlY29uZGFyeSBrZXltYXAgPwotCUtleW1hcCBrZXltYXA7Ci0KIHByaXZhdGU6Ci0J
Ly8vIGlzIGtleSBtYXBwaW5nIGVuYWJsZWQgPwotCWJvb2wga2V5bWFwb247Ci0JLy8vIHRoZSBw
cmltYXJ5IGxhbmd1YWdlIGtleW1hcAotCXN0ZDo6c3RyaW5nICYgcHJpbV9sYW5nOwotCS8vLyB0
aGUgc2Vjb25kYXJ5IGxhbmd1YWdlIGtleW1hcAotCXN0ZDo6c3RyaW5nICYgc2VjX2xhbmc7CisJ
Ly8vIGN1cnJlbnRseSBzZWxlY3RlZCBtYXAsIGVtcHR5IGlmIG5vbmUKKwlzdGQ6OnN0cmluZyBh
Y3RpdmVfbWFwXzsKKwkvLy8gbGFzdCBzeW5jZWQgKG1hcCwgbGFuZ2NvZGUpOyBjYXRjaGVzIHJl
YWwgY2hhbmdlcyBldmVuIGlmIHRoZSBtYXAgcmVwZWF0cworCXN0ZDo6c3RyaW5nIGxhc3Rfc3lu
Y2VkXzsKKwlzdGQ6OnN0cmluZyBsYXN0X2xhbmdjb2RlXzsKKwkvLy8gdGhlICJVc2Uga2V5Ym9h
cmQgbWFwIiBwcmVmZXJlbmNlOiBtYXN0ZXIgb24vb2ZmIHN3aXRjaAorCWJvb2wgJiB1c2Vfa2Jt
YXBfOworCS8vLyB0aGUgZGVmYXVsdCBrZXltYXAsIGxvYWRlZCBhdCBzdGFydC11cCBpZiBlbmFi
bGVkCisJc3RkOjpzdHJpbmcgJiBkZWZhdWx0X2xhbmdfOworCS8vLyBzZWxlY3QgdGhlIGFjdGl2
ZSBtYXAgYXV0b21hdGljYWxseSBmcm9tIHRoZSBsYW5ndWFnZSBhdCB0aGUgY3Vyc29yPworCWJv
b2wgJiBmb2xsb3dfbGFuZ3VhZ2VfOworCS8vLyBwZXItbGFuZ3VhZ2UgbWFwIGFzc2lnbm1lbnRz
LCB1c2VkIHdoZW4gZm9sbG93X2xhbmd1YWdlXyBpcyBzZXQKKwlzdGQ6Om1hcDxzdGQ6OnN0cmlu
Zywgc3RkOjpzdHJpbmc+ICYgbGFuZ19rZXltYXBzXzsKIAkvLy8gdGhlIHRyYW5zbGF0aW9uIG1h
bmFnZXIKIAlUcmFuc01hbmFnZXIgdHJhbnM7CiB9OwpkaWZmIC0tZ2l0IGEvc3JjL0x5WEFjdGlv
bi5jcHAgYi9zcmMvTHlYQWN0aW9uLmNwcAppbmRleCA1Y2VhOTExNDc1Li5iZDljOWRmMDU0IDEw
MDY0NAotLS0gYS9zcmMvTHlYQWN0aW9uLmNwcAorKysgYi9zcmMvTHlYQWN0aW9uLmNwcApAQCAt
MjQyMiwzMyArMjQyMiwyNiBAQCB2b2lkIEx5WEFjdGlvbjo6aW5pdCgpCiAJCXsgTEZVTl9LRVlN
QVBfT0ZGLCAia2V5bWFwLW9mZiIsIFJlYWRPbmx5LCBFZGl0IH0sCiAKIC8qIQotICogXHZhciBs
eXg6OkZ1bmNDb2RlIGx5eDo6TEZVTl9LRVlNQVBfUFJJTUFSWQotICogXGxpIEFjdGlvbjogVHVy
biBvbiB0aGUgcHJpbWFyeSBrZXlib2FyZCBtYXAuCisgKiBcdmFyIGx5eDo6RnVuY0NvZGUgbHl4
OjpMRlVOX0tFWU1BUF9TRUxFQ1QKKyAqIFxsaSBBY3Rpb246IFR1cm4gb24gYW5kIHNlbGVjdCBh
IGtleWJvYXJkIG1hcCBieSBuYW1lLgogICogXGxpIE5vdGlvbjogTWFwcyB3ZXJlIHdpZGVseSB1
c2VkIGluIHBhc3QsIHdoZW4gWC13aW5kb3dzIGRpZG4ndCBoYXZlIG5vd2FkYXlzCiAgICAgICAg
ICAgICAgICBrZXlib2FyZCBzdXBwb3J0LiBUaGV5IGNhbiBiZSBzdGlsbCB1c2VkIHRvIG1haW50
YWluIHVuaWZvcm0ga2V5Ym9hcmQKICAgICAgICAgICAgICAgIGxheW91dCBhY3Jvc3MgdGhlIHZh
cmlvdXMgcGxhdGZvcm1zLlxuCi0gICAgICAgICAgICAgICBUaGUgbGFuZ3VhZ2UgaXMgdG8gYmUg
c2V0IGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuCi0gKiBcbGkgU3ludGF4OiBrZXltYXAtcHJp
bWFyeQotICogXGVuZHZhcgotICovCi0JCXsgTEZVTl9LRVlNQVBfUFJJTUFSWSwgImtleW1hcC1w
cmltYXJ5IiwgUmVhZE9ubHksIEVkaXQgfSwKLQotLyohCi0gKiBcdmFyIGx5eDo6RnVuY0NvZGUg
bHl4OjpMRlVOX0tFWU1BUF9TRUNPTkRBUlkKLSAqIFxsaSBBY3Rpb246IFR1cm4gb24gdGhlIHNl
Y29uZGFyeSBrZXlib2FyZCBtYXAuCi0gKiBcbGkgU3ludGF4OiBrZXltYXAtc2Vjb25kYXJ5Ci0g
KiBcZW5kdmFyCi0gKi8KLQkJeyBMRlVOX0tFWU1BUF9TRUNPTkRBUlksICJrZXltYXAtc2Vjb25k
YXJ5IiwgUmVhZE9ubHksIEVkaXQgfSwKLQotLyohCi0gKiBcdmFyIGx5eDo6RnVuY0NvZGUgbHl4
OjpMRlVOX0tFWU1BUF9UT0dHTEUKLSAqIFxsaSBBY3Rpb246IFRvZ2dsZXMga2V5Ym9hcmQgbWFw
cyAoZmlyc3Qvc2Vjb25kL29mZikuCi0gKiBcbGkgU3ludGF4OiBrZXltYXAtdG9nZ2xlCi0gKiBc
bGkgT3JpZ2luOiBsZWVtaW5nLCAzMCBNYXIgMjAwNAotICogXGVuZHZhcgotICovCi0JCXsgTEZV
Tl9LRVlNQVBfVE9HR0xFLCAia2V5bWFwLXRvZ2dsZSIsIFJlYWRPbmx5LCBFZGl0IH0sCisgICAg
ICAgICAgICAgICBUaGUgbmFtZSBpcyB0aGUgYmFzZSBuYW1lIG9mIGEgLmttYXAgZmlsZSwgYXMg
Y29uZmlndXJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgIFByZWZlcmVuY2VzIGRpYWxvZyAoZS5n
LiAiaGVicmV3IiBmb3IgaGVicmV3LmttYXApLiBLZXlib2FyZCBtYXBzCisgICAgICAgICAgICAg
ICBjYW4gYWxzbyBiZSBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUgbGFu
Z3VhZ2UgYXQKKyAgICAgICAgICAgICAgIHRoZSBjdXJzb3I7IHNlZSB0aGUgUHJlZmVyZW5jZXMg
ZGlhbG9nLiBJZiBubyBuYW1lIGlzIGdpdmVuLAorICAgICAgICAgICAgICAgYW55IG1hbnVhbCBz
ZWxlY3Rpb24gaXMgZHJvcHBlZCBhbmQgdGhlIG1hcCBjb25maWd1cmVkIGluIHRoZQorICAgICAg
ICAgICAgICAgUHJlZmVyZW5jZXMgZGlhbG9nIGlzIChyZS0pYXBwbGllZDogdGhlIGRlZmF1bHQg
bWFwLCBvciwgaWYKKyAgICAgICAgICAgICAgIGF1dG9tYXRpYyBzZWxlY3Rpb24gYnkgbGFuZ3Vh
Z2UgaXMgZW5hYmxlZCwgdGhlIG1hcCBjb25maWd1cmVkCisgICAgICAgICAgICAgICBmb3IgdGhl
IGxhbmd1YWdlIGF0IHRoZSBjdXJzb3IuCisgKiBcbGkgU3ludGF4OiBrZXltYXAtc2VsZWN0IDxO
QU1FPgorICogXGxpIFBhcmFtczogPE5BTUU+OiB0aGUgbmFtZSBvZiB0aGUga2V5Ym9hcmQgbWFw
IHRvIHNlbGVjdDsgaWYgb21pdHRlZCwKKyAgICAgICAgICAgICAgIHJldHVybiB0byB0aGUgY29u
ZmlndXJlZCBkZWZhdWx0LgorICogXGxpIE9yaWdpbjogdWZvZ2llbCwgMjcgSnVseSAyMDI2Cisg
KiBcZW5kdmFyCisgKi8KKwkJeyBMRlVOX0tFWU1BUF9TRUxFQ1QsICJrZXltYXAtc2VsZWN0Iiwg
UmVhZE9ubHksIEVkaXQgfSwKIAogCiAvKiEKZGlmZiAtLWdpdCBhL3NyYy9MeVhSQy5jcHAgYi9z
cmMvTHlYUkMuY3BwCmluZGV4IDk4ZWMxYTQwZWEuLmVhZmFjMGEzNGYgMTAwNjQ0Ci0tLSBhL3Ny
Yy9MeVhSQy5jcHAKKysrIGIvc3JjL0x5WFJDLmNwcApAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3Bh
Y2UgewogCiAvLyBUaGUgZm9ybWF0IHNob3VsZCBhbHNvIGJlIHVwZGF0ZWQgaW4gY29uZmlndXJl
LnB5LCBhbmQgY29udmVyc2lvbiBjb2RlCiAvLyBzaG91bGQgYmUgYWRkZWQgdG8gcHJlZnMycHJl
ZnNfcHJlZnMucHkuCi1zdGF0aWMgdW5zaWduZWQgaW50IGNvbnN0IExZWFJDX0ZJTEVGT1JNQVQg
PSA0MjsgLy8gQ2hhbmdlIGRlZmF1bHQgb2YgXHZpc3VhbF9jdXJzb3IgdG8gdHJ1ZQorc3RhdGlj
IHVuc2lnbmVkIGludCBjb25zdCBMWVhSQ19GSUxFRk9STUFUID0gNDM7IC8vIE1pZ3JhdGUgXGti
bWFwX3NlY29uZGFyeSB0byBca2JtYXBfZm9sbG93X2xhbmd1YWdlICsgXGtibWFwX2xhbmcKIC8v
IHdoZW4gYWRkaW5nIHNvbWV0aGluZyB0byB0aGlzIGFycmF5IGtlZXAgaXQgc29ydGVkIQogTGV4
ZXJLZXl3b3JkIGx5eHJjVGFnc1tdID0gewogCXsgIlxcYWNjZXB0X2NvbXBvdW5kIiwgTHlYUkM6
OlJDX0FDQ0VQVF9DT01QT1VORCB9LApAQCAtMTMyLDggKzEzMiw5IEBAIExleGVyS2V5d29yZCBs
eXhyY1RhZ3NbXSA9IHsKIAl7ICJcXGpiaWJ0ZXhfY29tbWFuZCIsIEx5WFJDOjpSQ19KQklCVEVY
X0NPTU1BTkQgfSwKIAl7ICJcXGppbmRleF9jb21tYW5kIiwgTHlYUkM6OlJDX0pJTkRFWF9DT01N
QU5EIH0sCiAJeyAiXFxrYm1hcCIsIEx5WFJDOjpSQ19LQk1BUCB9LAorCXsgIlxca2JtYXBfZm9s
bG93X2xhbmd1YWdlIiwgTHlYUkM6OlJDX0tCTUFQX0ZPTExPV19MQU5HVUFHRSB9LAorCXsgIlxc
a2JtYXBfbGFuZyIsIEx5WFJDOjpSQ19LQk1BUF9MQU5HIH0sCiAJeyAiXFxrYm1hcF9wcmltYXJ5
IiwgTHlYUkM6OlJDX0tCTUFQX1BSSU1BUlkgfSwKLQl7ICJcXGtibWFwX3NlY29uZGFyeSIsIEx5
WFJDOjpSQ19LQk1BUF9TRUNPTkRBUlkgfSwKIAl7ICJcXGxhbmd1YWdlX2F1dG9fYmVnaW4iLCBM
eVhSQzo6UkNfTEFOR1VBR0VfQVVUT19CRUdJTiB9LAogCXsgIlxcbGFuZ3VhZ2VfYXV0b19lbmQi
LCBMeVhSQzo6UkNfTEFOR1VBR0VfQVVUT19FTkQgfSwKIAl7ICJcXGxhbmd1YWdlX2NvbW1hbmRf
YmVnaW4iLCBMeVhSQzo6UkNfTEFOR1VBR0VfQ09NTUFORF9CRUdJTiB9LApAQCAtMzY5LDI0ICsz
NzAsMzMgQEAgTHlYUkM6OlJldHVyblZhbHVlcyBMeVhSQzo6cmVhZChMZXhlciAmIGxleHJjLCBi
b29sIGNoZWNrX2Zvcm1hdCkKIAkJCQlzdHJpbmcgY29uc3Qga21hcChvczo6aW50ZXJuYWxfcGF0
aChsZXhyYy5nZXRTdHJpbmcoKSkpOwogCQkJCWlmICghbGliRmlsZVNlYXJjaCgia2JkIiwga21h
cCwgImttYXAiKS5lbXB0eSgpCiAJCQkJICAgIHx8IGttYXAuZW1wdHkoKSkgewotCQkJCQlwcmlt
YXJ5X2tibWFwID0ga21hcDsKKwkJCQkJZGVmYXVsdF9rYm1hcCA9IGttYXA7CiAJCQkJfSBlbHNl
IHsKIAkJCQkJbGV4cmMucHJpbnRFcnJvcigiTHlYOiBLZXltYXAgYCQkVG9rZW4nIG5vdCBmb3Vu
ZCIpOwogCQkJCX0KIAkJCX0KIAkJCWJyZWFrOwogCi0JCWNhc2UgUkNfS0JNQVBfU0VDT05EQVJZ
OgotCQkJaWYgKGxleHJjLm5leHQoKSkgewotCQkJCXN0cmluZyBjb25zdCBrbWFwKG9zOjppbnRl
cm5hbF9wYXRoKGxleHJjLmdldFN0cmluZygpKSk7Ci0JCQkJaWYgKCFsaWJGaWxlU2VhcmNoKCJr
YmQiLCBrbWFwLCAia21hcCIpLmVtcHR5KCkKLQkJCQkJICB8fCBrbWFwLmVtcHR5KCkpIHsKLQkJ
CQkJc2Vjb25kYXJ5X2tibWFwID0ga21hcDsKLQkJCQl9IGVsc2UgewotCQkJCQlsZXhyYy5wcmlu
dEVycm9yKCJMeVg6IEtleW1hcCBgJCRUb2tlbicgbm90IGZvdW5kIik7Ci0JCQkJfQorCQljYXNl
IFJDX0tCTUFQX0ZPTExPV19MQU5HVUFHRToKKwkJCWxleHJjID4+IGtleW1hcF9mb2xsb3dfbGFu
Z3VhZ2U7CisJCQlicmVhazsKKworCQljYXNlIFJDX0tCTUFQX0xBTkc6IHsKKwkJCXN0cmluZyBs
YW5nOworCQkJaWYgKGxleHJjLm5leHQoKSkKKwkJCQlsYW5nID0gbGV4cmMuZ2V0U3RyaW5nKCk7
CisJCQlzdHJpbmcga21hcDsKKwkJCWlmIChsZXhyYy5uZXh0KCkpCisJCQkJa21hcCA9IG9zOjpp
bnRlcm5hbF9wYXRoKGxleHJjLmdldFN0cmluZygpKTsKKwkJCWlmIChrbWFwLmVtcHR5KCkpIHsK
KwkJCQlrZXltYXBfYnlfbGFuZ3VhZ2UuZXJhc2UobGFuZyk7CisJCQl9IGVsc2UgaWYgKCFsaWJG
aWxlU2VhcmNoKCJrYmQiLCBrbWFwLCAia21hcCIpLmVtcHR5KCkpIHsKKwkJCQlrZXltYXBfYnlf
bGFuZ3VhZ2VbbGFuZ10gPSBrbWFwOworCQkJfSBlbHNlIHsKKwkJCQlsZXhyYy5wcmludEVycm9y
KCJMeVg6IEtleW1hcCBgJCRUb2tlbicgbm90IGZvdW5kIik7CiAJCQl9CiAJCQlicmVhazsKKwkJ
fQogCiAJCWNhc2UgUkNfUFJJTlRMQU5EU0NBUEVGTEFHOgogCQkJbGV4cmMgPj4gcHJpbnRfbGFu
ZHNjYXBlX2ZsYWc7CkBAIC0xNDkyLDE4ICsxNTAyLDMwIEBAIHZvaWQgTHlYUkM6OndyaXRlKG9z
dHJlYW0gJiBvcywgYm9vbCBpZ25vcmVfc3lzdGVtX2x5eHJjLCBzdHJpbmcgY29uc3QgJiBuYW1l
KSBjCiAJCS8vIGZhbGwgdGhyb3VnaAogCWNhc2UgUkNfS0JNQVBfUFJJTUFSWToKIAkJaWYgKGln
bm9yZV9zeXN0ZW1fbHl4cmMgfHwKLQkJICAgIHByaW1hcnlfa2JtYXAgIT0gc3lzdGVtX2x5eHJj
LnByaW1hcnlfa2JtYXApIHsKLQkJCXN0cmluZyBjb25zdCBwYXRoID0gb3M6OmV4dGVybmFsX3Bh
dGgocHJpbWFyeV9rYm1hcCk7CisJCSAgICBkZWZhdWx0X2tibWFwICE9IHN5c3RlbV9seXhyYy5k
ZWZhdWx0X2tibWFwKSB7CisJCQlzdHJpbmcgY29uc3QgcGF0aCA9IG9zOjpleHRlcm5hbF9wYXRo
KGRlZmF1bHRfa2JtYXApOwogCQkJb3MgPDwgIlxca2JtYXBfcHJpbWFyeSBcIiIgPDwgcGF0aCA8
PCAiXCJcbiI7CiAJCX0KIAkJaWYgKHRhZyAhPSBSQ19MQVNUKQogCQkJYnJlYWs7CiAJCS8vIGZh
bGwgdGhyb3VnaAotCWNhc2UgUkNfS0JNQVBfU0VDT05EQVJZOgorCWNhc2UgUkNfS0JNQVBfRk9M
TE9XX0xBTkdVQUdFOgogCQlpZiAoaWdub3JlX3N5c3RlbV9seXhyYyB8fAotCQkgICAgc2Vjb25k
YXJ5X2tibWFwICE9IHN5c3RlbV9seXhyYy5zZWNvbmRhcnlfa2JtYXApIHsKLQkJCXN0cmluZyBj
b25zdCBwYXRoID0gb3M6OmV4dGVybmFsX3BhdGgoc2Vjb25kYXJ5X2tibWFwKTsKLQkJCW9zIDw8
ICJcXGtibWFwX3NlY29uZGFyeSBcIiIgPDwgcGF0aCA8PCAiXCJcbiI7CisJCSAgICBrZXltYXBf
Zm9sbG93X2xhbmd1YWdlICE9IHN5c3RlbV9seXhyYy5rZXltYXBfZm9sbG93X2xhbmd1YWdlKSB7
CisJCQlvcyA8PCAiXFxrYm1hcF9mb2xsb3dfbGFuZ3VhZ2UgIgorCQkJICAgPDwgY29udmVydDxz
dHJpbmc+KGtleW1hcF9mb2xsb3dfbGFuZ3VhZ2UpIDw8ICdcbic7CisJCX0KKwkJaWYgKHRhZyAh
PSBSQ19MQVNUKQorCQkJYnJlYWs7CisJCS8vIGZhbGwgdGhyb3VnaAorCWNhc2UgUkNfS0JNQVBf
TEFORzoKKwkJaWYgKGlnbm9yZV9zeXN0ZW1fbHl4cmMgfHwKKwkJICAgIGtleW1hcF9ieV9sYW5n
dWFnZSAhPSBzeXN0ZW1fbHl4cmMua2V5bWFwX2J5X2xhbmd1YWdlKSB7CisJCQlmb3IgKGF1dG8g
Y29uc3QgJiBsYW5nX21hcCA6IGtleW1hcF9ieV9sYW5ndWFnZSkgeworCQkJCXN0cmluZyBjb25z
dCBwYXRoID0gb3M6OmV4dGVybmFsX3BhdGgobGFuZ19tYXAuc2Vjb25kKTsKKwkJCQlvcyA8PCAi
XFxrYm1hcF9sYW5nIFwiIiA8PCBsYW5nX21hcC5maXJzdAorCQkJCSAgIDw8ICJcIiBcIiIgPDwg
cGF0aCA8PCAiXCJcbiI7CisJCQl9CiAJCX0KIAkJaWYgKHRhZyAhPSBSQ19MQVNUKQogCQkJYnJl
YWs7CkBAIC0yOTg0LDcgKzMwMDYsOCBAQCB2b2lkIGFjdE9uVXBkYXRlZFByZWZzKEx5WFJDIGNv
bnN0ICYgbHl4cmNfb3JpZywgTHlYUkMgY29uc3QgJiBseXhyY19uZXcpCiAJY2FzZSBMeVhSQzo6
UkNfSU5QVVQ6CiAJY2FzZSBMeVhSQzo6UkNfS0JNQVA6CiAJY2FzZSBMeVhSQzo6UkNfS0JNQVBf
UFJJTUFSWToKLQljYXNlIEx5WFJDOjpSQ19LQk1BUF9TRUNPTkRBUlk6CisJY2FzZSBMeVhSQzo6
UkNfS0JNQVBfRk9MTE9XX0xBTkdVQUdFOgorCWNhc2UgTHlYUkM6OlJDX0tCTUFQX0xBTkc6CiAJ
Y2FzZSBMeVhSQzo6UkNfTEFOR1VBR0VfQVVUT19CRUdJTjoKIAljYXNlIEx5WFJDOjpSQ19MQU5H
VUFHRV9BVVRPX0VORDoKIAljYXNlIEx5WFJDOjpSQ19MQU5HVUFHRV9DT01NQU5EX0JFR0lOOgpA
QCAtMzI3OCwxMCArMzMwMSwxNyBAQCBzdHJpbmcgY29uc3QgTHlYUkM6OmdldERlc2NyaXB0aW9u
KEx5WFJDVGFncyB0YWcpCiAKIAljYXNlIFJDX0tCTUFQOgogCWNhc2UgUkNfS0JNQVBfUFJJTUFS
WToKLQljYXNlIFJDX0tCTUFQX1NFQ09OREFSWToKIAkJc3RyID0gXygiVXNlIHRoaXMgdG8gc2V0
IHRoZSBjb3JyZWN0IG1hcHBpbmcgZmlsZSBmb3IgeW91ciBrZXlib2FyZC4gWW91J2xsIG5lZWQg
dGhpcyBpZiB5b3UgZm9yIGluc3RhbmNlIHdhbnQgdG8gdHlwZSBHZXJtYW4gZG9jdW1lbnRzIG9u
IGFuIEFtZXJpY2FuIGtleWJvYXJkLiIpOwogCQlicmVhazsKIAorCWNhc2UgUkNfS0JNQVBfRk9M
TE9XX0xBTkdVQUdFOgorCQlzdHIgPSBfKCJTZWxlY3QgdGhlIGtleWJvYXJkIG1hcCBhdXRvbWF0
aWNhbGx5IGFjY29yZGluZyB0byB0aGUgbGFuZ3VhZ2UgYXQgdGhlIGN1cnNvciwgZmFsbGluZyBi
YWNrIHRvIHRoZSBkZWZhdWx0IGtleWJvYXJkIG1hcCBmb3IgbGFuZ3VhZ2VzIHdpdGggbm8gYXNz
aWdubWVudCBvZiB0aGVpciBvd24uIik7CisJCWJyZWFrOworCisJY2FzZSBSQ19LQk1BUF9MQU5H
OgorCQlzdHIgPSBfKCJLZXlib2FyZCBtYXAgdG8gdXNlIGZvciBhIGdpdmVuIGxhbmd1YWdlIHdo
ZW4gdGhlIGtleWJvYXJkIG1hcCBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0
byBsYW5ndWFnZS4iKTsKKwkJYnJlYWs7CisKIAljYXNlIFJDX0xBTkdVQUdFX0FVVE9fQkVHSU46
CiAJCXN0ciA9IF8oIlNlbGVjdCBpZiBhIGxhbmd1YWdlIHN3aXRjaGluZyBjb21tYW5kIGlzIG5l
ZWRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkb2N1bWVudC4iKTsKIAkJYnJlYWs7CmRpZmYg
LS1naXQgYS9zcmMvTHlYUkMuaCBiL3NyYy9MeVhSQy5oCmluZGV4IDgyZGY5NThlNDQuLjQxNzIz
MDM1MzEgMTAwNjQ0Ci0tLSBhL3NyYy9MeVhSQy5oCisrKyBiL3NyYy9MeVhSQy5oCkBAIC0xMTEs
NyArMTExLDggQEAgcHVibGljOgogCQlSQ19KSU5ERVhfQ09NTUFORCwKIAkJUkNfS0JNQVAsCiAJ
CVJDX0tCTUFQX1BSSU1BUlksCi0JCVJDX0tCTUFQX1NFQ09OREFSWSwKKwkJUkNfS0JNQVBfRk9M
TE9XX0xBTkdVQUdFLAorCQlSQ19LQk1BUF9MQU5HLAogCQlSQ19MQU5HVUFHRV9BVVRPX0JFR0lO
LAogCQlSQ19MQU5HVUFHRV9BVVRPX0VORCwKIAkJUkNfTEFOR1VBR0VfQ09NTUFORF9CRUdJTiwK
QEAgLTM4NCwxMCArMzg1LDEyIEBAIHB1YmxpYzoKIAlib29sIHNwZWxsY2hlY2tfbm90ZXMgPSB0
cnVlOwogCS8vLwogCWJvb2wgdXNlX2tibWFwID0gZmFsc2U7Ci0JLy8vCi0Jc3RkOjpzdHJpbmcg
cHJpbWFyeV9rYm1hcDsKLQkvLy8KLQlzdGQ6OnN0cmluZyBzZWNvbmRhcnlfa2JtYXA7CisJLy8v
IHRoZSBrZXlib2FyZCBtYXAgdG8gbG9hZCBhdCBzdGFydC11cCwgaWYgdXNlX2tibWFwIGlzIHNl
dAorCXN0ZDo6c3RyaW5nIGRlZmF1bHRfa2JtYXA7CisJLy8vIHNlbGVjdCB0aGUga2V5Ym9hcmQg
bWFwIGJ5IGxhbmd1YWdlIGluc3RlYWQgb2YgZGVmYXVsdF9rYm1hcAorCWJvb2wga2V5bWFwX2Zv
bGxvd19sYW5ndWFnZSA9IGZhbHNlOworCS8vLyBrZXlib2FyZCBtYXAgcGVyIGxhbmd1YWdlIGNv
ZGUsIHVzZWQgd2hlbiBrZXltYXBfZm9sbG93X2xhbmd1YWdlIGlzIHNldAorCXN0ZDo6bWFwPHN0
ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4ga2V5bWFwX2J5X2xhbmd1YWdlOwogCS8vLwogCXN0ZDo6
c3RyaW5nIGx5eHBpcGVzOwogCS8vLwpkaWZmIC0tZ2l0IGEvc3JjL1RyYW5zLmNwcCBiL3NyYy9U
cmFucy5jcHAKaW5kZXggMTIwODY2NThiMS4uNDcwMTg2YjEwZCAxMDA2NDQKLS0tIGEvc3JjL1Ry
YW5zLmNwcAorKysgYi9zcmMvVHJhbnMuY3BwCkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSAi
c3VwcG9ydC9MZXhlci5oIgogI2luY2x1ZGUgInN1cHBvcnQvbHN0cmluZ3MuaCIKIAorI2luY2x1
ZGUgPHV0aWxpdHk+CisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgbHl4
OjpzdXBwb3J0OwogCkBAIC01NzksMzggKzU4MSwyNSBAQCBUcmFuc01hbmFnZXI6OlRyYW5zTWFu
YWdlcigpCiB7fQogCiAKLWludCBUcmFuc01hbmFnZXI6OnNldFByaW1hcnkoc3RyaW5nIGNvbnN0
ICYgbGFuZ3VhZ2UpCi17Ci0JaWYgKHQxXy5nZXROYW1lKCkgPT0gbGFuZ3VhZ2UpCi0JCXJldHVy
biAwOwotCi0JcmV0dXJuIHQxXy5sb2FkKGxhbmd1YWdlKTsKLX0KLQotCi1pbnQgVHJhbnNNYW5h
Z2VyOjpzZXRTZWNvbmRhcnkoc3RyaW5nIGNvbnN0ICYgbGFuZ3VhZ2UpCitpbnQgVHJhbnNNYW5h
Z2VyOjpzZXRBY3RpdmUoc3RyaW5nIGNvbnN0ICYgbmFtZSkKIHsKLQlpZiAodDJfLmdldE5hbWUo
KSA9PSBsYW5ndWFnZSkKKwlpZiAobmFtZS5lbXB0eSgpKSB7CisJCWRpc2FibGVLZXltYXAoKTsK
IAkJcmV0dXJuIDA7CisJfQogCi0JcmV0dXJuIHQyXy5sb2FkKGxhbmd1YWdlKTsKLX0KLQotCi12
b2lkIFRyYW5zTWFuYWdlcjo6ZW5hYmxlUHJpbWFyeSgpCi17Ci0JaWYgKHQxXy5pc0RlZmluZWQo
KSkKLQkJYWN0aXZlXyA9ICZ0MV87Ci0KLQlMWVhFUlIoRGVidWc6OktCTUFQLCAiRW5hYmxpbmcg
cHJpbWFyeSBrZXltYXAiKTsKLX0KLQorCW1hcDxzdHJpbmcsIFRyYW5zPjo6aXRlcmF0b3IgaXQg
PSBtYXBzXy5maW5kKG5hbWUpOworCWlmIChpdCA9PSBtYXBzXy5lbmQoKSkgeworCQlUcmFucyB0
OworCQlpbnQgY29uc3QgcmVzID0gdC5sb2FkKG5hbWUpOworCQlpZiAocmVzICE9IDApCisJCQly
ZXR1cm4gcmVzOworCQlpdCA9IG1hcHNfLmVtcGxhY2UobmFtZSwgc3RkOjptb3ZlKHQpKS5maXJz
dDsKKwl9CiAKLXZvaWQgVHJhbnNNYW5hZ2VyOjplbmFibGVTZWNvbmRhcnkoKQotewotCWlmICh0
Ml8uaXNEZWZpbmVkKCkpCi0JCWFjdGl2ZV8gPSAmdDJfOwotCUxZWEVSUihEZWJ1Zzo6S0JNQVAs
ICJFbmFibGluZyBzZWNvbmRhcnkga2V5bWFwIik7CisJYWN0aXZlXyA9ICZpdC0+c2Vjb25kOwor
CUxZWEVSUihEZWJ1Zzo6S0JNQVAsICJFbmFibGluZyBrZXltYXAgYCIgPDwgbmFtZSA8PCAnXCcn
KTsKKwlyZXR1cm4gMDsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvVHJhbnMuaCBiL3NyYy9UcmFu
cy5oCmluZGV4IGM4ZDgyOGU3ODUuLjdmNmJkYTQzZmUgMTAwNjQ0Ci0tLSBhL3NyYy9UcmFucy5o
CisrKyBiL3NyYy9UcmFucy5oCkBAIC0xMzUsNiArMTM1LDExIEBAIHB1YmxpYzoKIAlUcmFucygp
IHt9CiAJLy8vCiAJflRyYW5zKCkgeyBmcmVlS2V5bWFwKCk7IH0KKwkvLy8gZGVmYXVsdGVkIGV4
cGxpY2l0bHk6IHRoZSBkZXN0cnVjdG9yIGFib3ZlIHN1cHByZXNzZXMgdGhlc2UKKwkvLy8gaW1w
bGljaXRseSwgd2hpY2ggd291bGQgc2lsZW50bHkgdHVybiBtb3ZlcyBpbnRvIGNvcGllcworCVRy
YW5zKFRyYW5zICYmKSA9IGRlZmF1bHQ7CisJLy8vCisJVHJhbnMgJiBvcGVyYXRvcj0oVHJhbnMg
JiYpID0gZGVmYXVsdDsKIAogCS8vLwogCWludCBsb2FkKHN0ZDo6c3RyaW5nIGNvbnN0ICYgbGFu
Z3VhZ2UpOwpAQCAtMzEzLDkgKzMxOCw3IEBAIHByaXZhdGU6CiAJLy8vCiAJVHJhbnMgKiBhY3Rp
dmVfOwogCS8vLwotCVRyYW5zIHQxXzsKLQkvLy8KLQlUcmFucyB0Ml87CisJc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIFRyYW5zPiBtYXBzXzsKIAkvLy8KIAlzdGF0aWMgVHJhbnMgZGVmYXVsdF87CiAJ
Ly8vCkBAIC0zMjMsMTQgKzMyNiw4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAJLy8vCiAJVHJhbnNN
YW5hZ2VyKCk7Ci0JLy8vCi0JaW50IHNldFByaW1hcnkoc3RkOjpzdHJpbmcgY29uc3QgJik7Ci0J
Ly8vCi0JaW50IHNldFNlY29uZGFyeShzdGQ6OnN0cmluZyBjb25zdCAmKTsKLQkvLy8KLQl2b2lk
IGVuYWJsZVByaW1hcnkoKTsKLQkvLy8KLQl2b2lkIGVuYWJsZVNlY29uZGFyeSgpOworCS8vLyBs
b2FkIChpZiBuZWVkZWQpIGFuZCBhY3RpdmF0ZSB0aGUgbmFtZWQga2V5bWFwOyAwIG9uIHN1Y2Nl
c3MsIC0xIGlmIG5vdCBmb3VuZAorCWludCBzZXRBY3RpdmUoc3RkOjpzdHJpbmcgY29uc3QgJik7
CiAJLy8vCiAJdm9pZCBkaXNhYmxlS2V5bWFwKCk7CiAJLy8vCmRpZmYgLS1naXQgYS9zcmMvZnJv
bnRlbmRzL3F0L0d1aVByZWZzLmNwcCBiL3NyYy9mcm9udGVuZHMvcXQvR3VpUHJlZnMuY3BwCmlu
ZGV4IDY5OTg0MzA3ODAuLmRmNTBiMDg2YzAgMTAwNjQ0Ci0tLSBhL3NyYy9mcm9udGVuZHMvcXQv
R3VpUHJlZnMuY3BwCisrKyBiL3NyYy9mcm9udGVuZHMvcXQvR3VpUHJlZnMuY3BwCkBAIC0zMTgs
OCArMzE4LDYgQEAgUHJlZklucHV0OjpQcmVmSW5wdXQoR3VpUHJlZmVyZW5jZXMgKiBmb3JtKQog
CQl0aGlzLCBTSUdOQUwoY2hhbmdlZCgpKSk7CiAJY29ubmVjdChmaXJzdEtleW1hcEVELCBTSUdO
QUwodGV4dENoYW5nZWQoUVN0cmluZykpLAogCQl0aGlzLCBTSUdOQUwoY2hhbmdlZCgpKSk7Ci0J
Y29ubmVjdChzZWNvbmRLZXltYXBFRCwgU0lHTkFMKHRleHRDaGFuZ2VkKFFTdHJpbmcpKSwKLQkJ
dGhpcywgU0lHTkFMKGNoYW5nZWQoKSkpOwogCWNvbm5lY3QobW91c2VXaGVlbFNwZWVkU0IsIFNJ
R05BTCh2YWx1ZUNoYW5nZWQoZG91YmxlKSksCiAJCXRoaXMsIFNJR05BTChjaGFuZ2VkKCkpKTsK
IAljb25uZWN0KHNjcm9sbHpvb21FbmFibGVDQiwgU0lHTkFMKGNsaWNrZWQoKSksCkBAIC0zMzAs
NiArMzI4LDIxIEBAIFByZWZJbnB1dDo6UHJlZklucHV0KEd1aVByZWZlcmVuY2VzICogZm9ybSkK
IAkJdGhpcywgU0lHTkFMKGNoYW5nZWQoKSkpOwogCWNvbm5lY3QobW1QYXN0ZUNCLCBTSUdOQUwo
dG9nZ2xlZChib29sKSksCiAJCXRoaXMsIFNJR05BTChjaGFuZ2VkKCkpKTsKKwljb25uZWN0KGtl
eW1hcEZvbGxvd0xhbmdDQiwgU0lHTkFMKGNsaWNrZWQoKSksCisJCXRoaXMsIFNJR05BTChjaGFu
Z2VkKCkpKTsKKwljb25uZWN0KGtleW1hcExhbmdBZGRQQiwgU0lHTkFMKGNsaWNrZWQoKSksCisJ
CXRoaXMsIFNMT1QoYWRkS2V5bWFwTGFuZygpKSk7CisJY29ubmVjdChrZXltYXBMYW5nQWRkUEIs
IFNJR05BTChjbGlja2VkKCkpLAorCQl0aGlzLCBTSUdOQUwoY2hhbmdlZCgpKSk7CisJY29ubmVj
dChrZXltYXBMYW5nUmVtb3ZlUEIsIFNJR05BTChjbGlja2VkKCkpLAorCQl0aGlzLCBTTE9UKHJl
bW92ZUtleW1hcExhbmcoKSkpOworCWNvbm5lY3Qoa2V5bWFwTGFuZ1JlbW92ZVBCLCBTSUdOQUwo
Y2xpY2tlZCgpKSwKKwkJdGhpcywgU0lHTkFMKGNoYW5nZWQoKSkpOworCisJa2V5bWFwTGFuZ0VE
LT5zZXRWYWxpZGF0b3IobmV3IE5vTmV3TGluZVZhbGlkYXRvcihrZXltYXBMYW5nRUQpKTsKKwor
CWtleW1hcExhbmdDTy0+c2V0TW9kZWwoZ3VpQXBwLT5sYW5ndWFnZU1vZGVsKCkpOworCWtleW1h
cExhbmdDTy0+c2V0TW9kZWxDb2x1bW4oMCk7CiAKIAkvLyByZXZlYWwgY2hlY2tib3ggZm9yIHN3
aXRjaGluZyBDdHJsIGFuZCBNZXRhIG9uIE1hYzoKICNpZmRlZiBRX09TX01BQwpAQCAtMzQyLDEw
ICszNTUsOSBAQCBQcmVmSW5wdXQ6OlByZWZJbnB1dChHdWlQcmVmZXJlbmNlcyAqIGZvcm0pCiAK
IHZvaWQgUHJlZklucHV0OjphcHBseVJDKEx5WFJDICYgcmMpIGNvbnN0CiB7Ci0JLy8gRklYTUU6
IGNhbiBkZXJpdmUgQ0IgZnJvbSB0aGUgdHdvIEVEcworCS8vIEZJWE1FOiBjYW4gZGVyaXZlIENC
IGZyb20gdGhlIEVECiAJcmMudXNlX2tibWFwID0ga2V5bWFwQ0ItPmlzQ2hlY2tlZCgpOwotCXJj
LnByaW1hcnlfa2JtYXAgPSBpbnRlcm5hbF9wYXRoKGZyb21xc3RyKGZpcnN0S2V5bWFwRUQtPnRl
eHQoKSkpOwotCXJjLnNlY29uZGFyeV9rYm1hcCA9IGludGVybmFsX3BhdGgoZnJvbXFzdHIoc2Vj
b25kS2V5bWFwRUQtPnRleHQoKSkpOworCXJjLmRlZmF1bHRfa2JtYXAgPSBpbnRlcm5hbF9wYXRo
KGZyb21xc3RyKGZpcnN0S2V5bWFwRUQtPnRleHQoKSkpOwogCXJjLm1vdXNlX3doZWVsX3NwZWVk
ID0gbW91c2VXaGVlbFNwZWVkU0ItPnZhbHVlKCk7CiAJaWYgKHNjcm9sbHpvb21FbmFibGVDQi0+
aXNDaGVja2VkKCkpIHsKIAkJc3dpdGNoIChzY3JvbGx6b29tVmFsdWVDTy0+Y3VycmVudEluZGV4
KCkpIHsKQEAgLTM2NCwxNSArMzc2LDIzIEBAIHZvaWQgUHJlZklucHV0OjphcHBseVJDKEx5WFJD
ICYgcmMpIGNvbnN0CiAJfQogCXJjLm1hY19kb250c3dhcF9jdHJsX21ldGEgID0gZG9udHN3YXBD
Qi0+aXNDaGVja2VkKCk7CiAJcmMubW91c2VfbWlkZGxlYnV0dG9uX3Bhc3RlID0gbW1QYXN0ZUNC
LT5pc0NoZWNrZWQoKTsKKworCXJjLmtleW1hcF9mb2xsb3dfbGFuZ3VhZ2UgPSBrZXltYXBGb2xs
b3dMYW5nQ0ItPmlzQ2hlY2tlZCgpOworCXJjLmtleW1hcF9ieV9sYW5ndWFnZS5jbGVhcigpOwor
CWZvciAoaW50IGkgPSAwOyBpIDwga2V5bWFwTGFuZ0xXLT5jb3VudCgpOyArK2kpIHsKKwkJUUxp
c3RXaWRnZXRJdGVtIGNvbnN0ICogaXRlbSA9IGtleW1hcExhbmdMVy0+aXRlbShpKTsKKwkJc3Ry
aW5nIGNvbnN0IGxhbmdjb2RlID0gZnJvbXFzdHIoaXRlbS0+ZGF0YShRdDo6VXNlclJvbGUpLnRv
U3RyaW5nKCkpOworCQlzdHJpbmcgY29uc3Qga21hcCA9IGludGVybmFsX3BhdGgoZnJvbXFzdHIo
aXRlbS0+ZGF0YShRdDo6VXNlclJvbGUgKyAxKS50b1N0cmluZygpKSk7CisJCXJjLmtleW1hcF9i
eV9sYW5ndWFnZVtsYW5nY29kZV0gPSBrbWFwOworCX0KIH0KIAogCiB2b2lkIFByZWZJbnB1dDo6
dXBkYXRlUkMoTHlYUkMgY29uc3QgJiByYykKIHsKLQkvLyBGSVhNRTogY2FuIGRlcml2ZSBDQiBm
cm9tIHRoZSB0d28gRURzCisJLy8gRklYTUU6IGNhbiBkZXJpdmUgQ0IgZnJvbSB0aGUgRUQKIAlr
ZXltYXBDQi0+c2V0Q2hlY2tlZChyYy51c2Vfa2JtYXApOwotCWZpcnN0S2V5bWFwRUQtPnNldFRl
eHQodG9xc3RyKGV4dGVybmFsX3BhdGgocmMucHJpbWFyeV9rYm1hcCkpKTsKLQlzZWNvbmRLZXlt
YXBFRC0+c2V0VGV4dCh0b3FzdHIoZXh0ZXJuYWxfcGF0aChyYy5zZWNvbmRhcnlfa2JtYXApKSk7
CisJZmlyc3RLZXltYXBFRC0+c2V0VGV4dCh0b3FzdHIoZXh0ZXJuYWxfcGF0aChyYy5kZWZhdWx0
X2tibWFwKSkpOwogCW1vdXNlV2hlZWxTcGVlZFNCLT5zZXRWYWx1ZShyYy5tb3VzZV93aGVlbF9z
cGVlZCk7CiAJc3dpdGNoIChyYy5zY3JvbGxfd2hlZWxfem9vbSkgewogCWNhc2UgTHlYUkM6OlND
Uk9MTF9XSEVFTF9aT09NX09GRjoKQEAgLTM5Myw2ICs0MTMsMjAgQEAgdm9pZCBQcmVmSW5wdXQ6
OnVwZGF0ZVJDKEx5WFJDIGNvbnN0ICYgcmMpCiAJfQogCWRvbnRzd2FwQ0ItPnNldENoZWNrZWQo
cmMubWFjX2RvbnRzd2FwX2N0cmxfbWV0YSk7CiAJbW1QYXN0ZUNCLT5zZXRDaGVja2VkKHJjLm1v
dXNlX21pZGRsZWJ1dHRvbl9wYXN0ZSk7CisKKwlrZXltYXBGb2xsb3dMYW5nQ0ItPnNldENoZWNr
ZWQocmMua2V5bWFwX2ZvbGxvd19sYW5ndWFnZSk7CisJa2V5bWFwTGFuZ0xXLT5jbGVhcigpOwor
CWZvciAoYXV0byBjb25zdCAmIGxhbmdfbWFwIDogcmMua2V5bWFwX2J5X2xhbmd1YWdlKSB7CisJ
CUxhbmd1YWdlIGNvbnN0ICogbGFuZyA9IGxhbmd1YWdlcy5nZXRMYW5ndWFnZShsYW5nX21hcC5m
aXJzdCk7CisJCVFTdHJpbmcgY29uc3QgbGFuZ25hbWUgPSBsYW5nID8gcXRfKGxhbmctPmRpc3Bs
YXkoKSkKKwkJCTogdG9xc3RyKGxhbmdfbWFwLmZpcnN0KTsKKwkJUVN0cmluZyBjb25zdCBrbWFw
ID0gdG9xc3RyKGV4dGVybmFsX3BhdGgobGFuZ19tYXAuc2Vjb25kKSk7CisJCVFMaXN0V2lkZ2V0
SXRlbSAqIGl0ZW0gPQorCQkJbmV3IFFMaXN0V2lkZ2V0SXRlbShsYW5nbmFtZSArICI6ICIgKyBr
bWFwLCBrZXltYXBMYW5nTFcpOworCQlpdGVtLT5zZXREYXRhKFF0OjpVc2VyUm9sZSwgdG9xc3Ry
KGxhbmdfbWFwLmZpcnN0KSk7CisJCWl0ZW0tPnNldERhdGEoUXQ6OlVzZXJSb2xlICsgMSwga21h
cCk7CisJfQorCWtleW1hcExhbmdMVy0+c29ydEl0ZW1zKCk7CiB9CiAKIApAQCAtNDEwLDIyICs0
NDQsMTMgQEAgdm9pZCBQcmVmSW5wdXQ6Om9uX2ZpcnN0S2V5bWFwUEJfY2xpY2tlZChib29sKQog
fQogCiAKLXZvaWQgUHJlZklucHV0Ojpvbl9zZWNvbmRLZXltYXBQQl9jbGlja2VkKGJvb2wpCi17
Ci0JUVN0cmluZyBjb25zdCBmaWxlID0gdGVzdEtleW1hcChzZWNvbmRLZXltYXBFRC0+dGV4dCgp
KTsKLQlpZiAoIWZpbGUuaXNFbXB0eSgpKQotCQlzZWNvbmRLZXltYXBFRC0+c2V0VGV4dChmaWxl
KTsKLX0KLQotCiB2b2lkIFByZWZJbnB1dDo6b25fa2V5bWFwQ0JfdG9nZ2xlZChib29sIGtleW1h
cCkKIHsKIAlmaXJzdEtleW1hcExBLT5zZXRFbmFibGVkKGtleW1hcCk7Ci0Jc2Vjb25kS2V5bWFw
TEEtPnNldEVuYWJsZWQoa2V5bWFwKTsKIAlmaXJzdEtleW1hcEVELT5zZXRFbmFibGVkKGtleW1h
cCk7Ci0Jc2Vjb25kS2V5bWFwRUQtPnNldEVuYWJsZWQoa2V5bWFwKTsKIAlmaXJzdEtleW1hcFBC
LT5zZXRFbmFibGVkKGtleW1hcCk7Ci0Jc2Vjb25kS2V5bWFwUEItPnNldEVuYWJsZWQoa2V5bWFw
KTsKKwlrZXltYXBGb2xsb3dMYW5nQ0ItPnNldEVuYWJsZWQoa2V5bWFwKTsKKwl1cGRhdGVLZXlt
YXBMYW5nRW5hYmxlZCgpOwogfQogCiAKQEAgLTQzNSw2ICs0NjAsODAgQEAgdm9pZCBQcmVmSW5w
dXQ6Om9uX3Njcm9sbHpvb21FbmFibGVDQl90b2dnbGVkKGJvb2wgZW5hYmxlZCkKIH0KIAogCit2
b2lkIFByZWZJbnB1dDo6b25fa2V5bWFwRm9sbG93TGFuZ0NCX3RvZ2dsZWQoYm9vbCkKK3sKKwl1
cGRhdGVLZXltYXBMYW5nRW5hYmxlZCgpOworfQorCisKK3ZvaWQgUHJlZklucHV0Ojp1cGRhdGVL
ZXltYXBMYW5nRW5hYmxlZCgpCit7CisJYm9vbCBjb25zdCBlbmFibGVkID0ga2V5bWFwQ0ItPmlz
Q2hlY2tlZCgpICYmIGtleW1hcEZvbGxvd0xhbmdDQi0+aXNDaGVja2VkKCk7CisJa2V5bWFwTGFu
Z0xXLT5zZXRFbmFibGVkKGVuYWJsZWQpOworCWtleW1hcExhbmdDTy0+c2V0RW5hYmxlZChlbmFi
bGVkKTsKKwlrZXltYXBMYW5nRUQtPnNldEVuYWJsZWQoZW5hYmxlZCk7CisJa2V5bWFwTGFuZ1BC
LT5zZXRFbmFibGVkKGVuYWJsZWQpOworCWtleW1hcExhbmdBZGRQQi0+c2V0RW5hYmxlZChlbmFi
bGVkKTsKKwlrZXltYXBMYW5nUmVtb3ZlUEItPnNldEVuYWJsZWQoZW5hYmxlZCAmJiBrZXltYXBM
YW5nTFctPmN1cnJlbnRSb3coKSA+PSAwKTsKK30KKworCit2b2lkIFByZWZJbnB1dDo6b25fa2V5
bWFwTGFuZ0xXX2N1cnJlbnRSb3dDaGFuZ2VkKGludCByb3cpCit7CisJa2V5bWFwTGFuZ1JlbW92
ZVBCLT5zZXRFbmFibGVkKHJvdyA+PSAwCisJCSYmIGtleW1hcENCLT5pc0NoZWNrZWQoKSAmJiBr
ZXltYXBGb2xsb3dMYW5nQ0ItPmlzQ2hlY2tlZCgpKTsKKwlpZiAocm93IDwgMCkKKwkJcmV0dXJu
OworCVFMaXN0V2lkZ2V0SXRlbSBjb25zdCAqIGl0ZW0gPSBrZXltYXBMYW5nTFctPml0ZW0ocm93
KTsKKwlpbnQgY29uc3QgcG9zID0ga2V5bWFwTGFuZ0NPLT5maW5kRGF0YShpdGVtLT5kYXRhKFF0
OjpVc2VyUm9sZSkpOworCWlmIChwb3MgPj0gMCkKKwkJa2V5bWFwTGFuZ0NPLT5zZXRDdXJyZW50
SW5kZXgocG9zKTsKKwlrZXltYXBMYW5nRUQtPnNldFRleHQoaXRlbS0+ZGF0YShRdDo6VXNlclJv
bGUgKyAxKS50b1N0cmluZygpKTsKK30KKworCit2b2lkIFByZWZJbnB1dDo6b25fa2V5bWFwTGFu
Z1BCX2NsaWNrZWQoYm9vbCkKK3sKKwlRU3RyaW5nIGNvbnN0IGZpbGUgPSB0ZXN0S2V5bWFwKGtl
eW1hcExhbmdFRC0+dGV4dCgpKTsKKwlpZiAoIWZpbGUuaXNFbXB0eSgpKQorCQlrZXltYXBMYW5n
RUQtPnNldFRleHQoZmlsZSk7Cit9CisKKwordm9pZCBQcmVmSW5wdXQ6OmFkZEtleW1hcExhbmco
KQoreworCWludCBjb25zdCBpZHggPSBrZXltYXBMYW5nQ08tPmN1cnJlbnRJbmRleCgpOworCVFT
dHJpbmcgY29uc3Qga21hcCA9IGtleW1hcExhbmdFRC0+dGV4dCgpOworCWlmIChpZHggPCAwIHx8
IGttYXAuaXNFbXB0eSgpKQorCQlyZXR1cm47CisKKwlRU3RyaW5nIGNvbnN0IGxhbmdjb2RlID0g
a2V5bWFwTGFuZ0NPLT5pdGVtRGF0YShpZHgpLnRvU3RyaW5nKCk7CisJUVN0cmluZyBjb25zdCB0
ZXh0ID0ga2V5bWFwTGFuZ0NPLT5jdXJyZW50VGV4dCgpICsgIjogIiArIGttYXA7CisKKwkvLyBy
ZXBsYWNlIGFueSBleGlzdGluZyBlbnRyeSBmb3IgdGhpcyBsYW5ndWFnZQorCWZvciAoaW50IGkg
PSAwOyBpIDwga2V5bWFwTGFuZ0xXLT5jb3VudCgpOyArK2kpIHsKKwkJaWYgKGtleW1hcExhbmdM
Vy0+aXRlbShpKS0+ZGF0YShRdDo6VXNlclJvbGUpLnRvU3RyaW5nKCkgPT0gbGFuZ2NvZGUpIHsK
KwkJCWRlbGV0ZSBrZXltYXBMYW5nTFctPnRha2VJdGVtKGkpOworCQkJYnJlYWs7CisJCX0KKwl9
CisKKwlRTGlzdFdpZGdldEl0ZW0gKiBpdGVtID0gbmV3IFFMaXN0V2lkZ2V0SXRlbSh0ZXh0LCBr
ZXltYXBMYW5nTFcpOworCWl0ZW0tPnNldERhdGEoUXQ6OlVzZXJSb2xlLCBsYW5nY29kZSk7CisJ
aXRlbS0+c2V0RGF0YShRdDo6VXNlclJvbGUgKyAxLCBrbWFwKTsKKwlrZXltYXBMYW5nTFctPnNv
cnRJdGVtcygpOworCWtleW1hcExhbmdMVy0+c2V0Q3VycmVudEl0ZW0oaXRlbSk7Cit9CisKKwor
dm9pZCBQcmVmSW5wdXQ6OnJlbW92ZUtleW1hcExhbmcoKQoreworCWludCBjb25zdCByb3cgPSBr
ZXltYXBMYW5nTFctPmN1cnJlbnRSb3coKTsKKwlpZiAocm93ID49IDApCisJCWRlbGV0ZSBrZXlt
YXBMYW5nTFctPnRha2VJdGVtKHJvdyk7Cit9CisKKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLwogLy8gUHJl
ZkNvbXBsZXRpb24KQEAgLTQ1NzQsNiArNDY3Myw4IEBAIHZvaWQgR3VpUHJlZmVyZW5jZXM6OmRp
c3BhdGNoUGFyYW1zKCkKIAogCXRoZU1vdmVycygpID0gbW92ZXJzXzsKIAorCWx5eHJjLmtleW1h
cF9ieV9sYW5ndWFnZSA9IHJjXy5rZXltYXBfYnlfbGFuZ3VhZ2U7CisKIAlmb3IgKHN0cmluZyBj
b25zdCAmIGNvbG9yIDogY29sb3JzXykKIAkJZGlzcGF0Y2goRnVuY1JlcXVlc3QoTEZVTl9TRVRf
Q09MT1IsIGNvbG9yKSk7CiAJY29sb3JzXy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvc3JjL2Zyb250
ZW5kcy9xdC9HdWlQcmVmcy5oIGIvc3JjL2Zyb250ZW5kcy9xdC9HdWlQcmVmcy5oCmluZGV4IGNh
ZTg0ZmVhZTQuLmJhNzRiMTRmYzMgMTAwNjQ0Ci0tLSBhL3NyYy9mcm9udGVuZHMvcXQvR3VpUHJl
ZnMuaAorKysgYi9zcmMvZnJvbnRlbmRzL3F0L0d1aVByZWZzLmgKQEAgLTE4MywxMiArMTgzLDE3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZSBRX1NMT1RTOgogCXZvaWQgb25fZmlyc3RLZXltYXBQQl9j
bGlja2VkKGJvb2wpOwotCXZvaWQgb25fc2Vjb25kS2V5bWFwUEJfY2xpY2tlZChib29sKTsKIAl2
b2lkIG9uX2tleW1hcENCX3RvZ2dsZWQoYm9vbCk7CiAJdm9pZCBvbl9zY3JvbGx6b29tRW5hYmxl
Q0JfdG9nZ2xlZChib29sKTsKKwl2b2lkIG9uX2tleW1hcEZvbGxvd0xhbmdDQl90b2dnbGVkKGJv
b2wpOworCXZvaWQgb25fa2V5bWFwTGFuZ0xXX2N1cnJlbnRSb3dDaGFuZ2VkKGludCk7CisJdm9p
ZCBvbl9rZXltYXBMYW5nUEJfY2xpY2tlZChib29sKTsKKwl2b2lkIGFkZEtleW1hcExhbmcoKTsK
Kwl2b2lkIHJlbW92ZUtleW1hcExhbmcoKTsKIAogcHJpdmF0ZToKIAlRU3RyaW5nIHRlc3RLZXlt
YXAoUVN0cmluZyBjb25zdCAmIGtleW1hcCk7CisJdm9pZCB1cGRhdGVLZXltYXBMYW5nRW5hYmxl
ZCgpOwogfTsKIAogCmRpZmYgLS1naXQgYS9zcmMvZnJvbnRlbmRzL3F0L3VpL1ByZWZJbnB1dFVp
LnVpIGIvc3JjL2Zyb250ZW5kcy9xdC91aS9QcmVmSW5wdXRVaS51aQppbmRleCBhOTk2MGIyYTJh
Li5jYzc4Njc3ZjI2IDEwMDY0NAotLS0gYS9zcmMvZnJvbnRlbmRzL3F0L3VpL1ByZWZJbnB1dFVp
LnVpCisrKyBiL3NyYy9mcm9udGVuZHMvcXQvdWkvUHJlZklucHV0VWkudWkKQEAgLTQzLDU5ICs0
MywxNDIgQEAKICAgICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICA8L3dpZGdldD4KICAgICAgIDwv
aXRlbT4KLSAgICAgIDxpdGVtIHJvdz0iMiIgY29sdW1uPSIyIj4KLSAgICAgICA8d2lkZ2V0IGNs
YXNzPSJRUHVzaEJ1dHRvbiIgbmFtZT0ic2Vjb25kS2V5bWFwUEIiPgorICAgICAgPGl0ZW0gcm93
PSIxIiBjb2x1bW49IjIiPgorICAgICAgIDx3aWRnZXQgY2xhc3M9IlFQdXNoQnV0dG9uIiBuYW1l
PSJmaXJzdEtleW1hcFBCIj4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgogICAg
ICAgICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CiAgICAgICAgIDwvcHJvcGVydHk+CiAgICAgICAgIDxw
cm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KLSAgICAgICAgIDxzdHJpbmc+JmFtcDtCcm93c2UuLi48L3N0
cmluZz4KKyAgICAgICAgIDxzdHJpbmc+QnImYW1wO293c2UuLi48L3N0cmluZz4KICAgICAgICAg
PC9wcm9wZXJ0eT4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImF1dG9EZWZhdWx0Ij4KICAgICAg
ICAgIDxib29sPmZhbHNlPC9ib29sPgogICAgICAgICA8L3Byb3BlcnR5PgogICAgICAgIDwvd2lk
Z2V0PgogICAgICAgPC9pdGVtPgotICAgICAgPGl0ZW0gcm93PSIxIiBjb2x1bW49IjIiPgotICAg
ICAgIDx3aWRnZXQgY2xhc3M9IlFQdXNoQnV0dG9uIiBuYW1lPSJmaXJzdEtleW1hcFBCIj4KKyAg
ICAgIDxpdGVtIHJvdz0iMSIgY29sdW1uPSIwIj4KKyAgICAgICA8d2lkZ2V0IGNsYXNzPSJRTGFi
ZWwiIG5hbWU9ImZpcnN0S2V5bWFwTEEiPgogICAgICAgICA8cHJvcGVydHkgbmFtZT0iZW5hYmxl
ZCI+CiAgICAgICAgICA8Ym9vbD5mYWxzZTwvYm9vbD4KICAgICAgICAgPC9wcm9wZXJ0eT4KICAg
ICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgotICAgICAgICAgPHN0cmluZz5CciZhbXA7b3dz
ZS4uLjwvc3RyaW5nPgorICAgICAgICAgPHN0cmluZz4mYW1wO0RlZmF1bHQ6PC9zdHJpbmc+CiAg
ICAgICAgIDwvcHJvcGVydHk+Ci0gICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhdXRvRGVmYXVsdCI+
Ci0gICAgICAgICA8Ym9vbD5mYWxzZTwvYm9vbD4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJ1
ZGR5Ij4KKyAgICAgICAgIDxjc3RyaW5nPmZpcnN0S2V5bWFwRUQ8L2NzdHJpbmc+CiAgICAgICAg
IDwvcHJvcGVydHk+CiAgICAgICAgPC93aWRnZXQ+CiAgICAgICA8L2l0ZW0+Ci0gICAgICA8aXRl
bSByb3c9IjIiIGNvbHVtbj0iMCI+Ci0gICAgICAgPHdpZGdldCBjbGFzcz0iUUxhYmVsIiBuYW1l
PSJzZWNvbmRLZXltYXBMQSI+CisgICAgICA8aXRlbSByb3c9IjIiIGNvbHVtbj0iMCIgY29sc3Bh
bj0iMyI+CisgICAgICAgPHdpZGdldCBjbGFzcz0iUUNoZWNrQm94IiBuYW1lPSJrZXltYXBGb2xs
b3dMYW5nQ0IiPgogICAgICAgICA8cHJvcGVydHkgbmFtZT0iZW5hYmxlZCI+CiAgICAgICAgICA8
Ym9vbD5mYWxzZTwvYm9vbD4KICAgICAgICAgPC9wcm9wZXJ0eT4KLSAgICAgICAgPHByb3BlcnR5
IG5hbWU9InRleHQiPgotICAgICAgICAgPHN0cmluZz5TJmFtcDtlY29uZGFyeTo8L3N0cmluZz4K
KyAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2xUaXAiPgorICAgICAgICAgPHN0cmluZz5JZiBj
aGVja2VkLCB0aGUga2V5Ym9hcmQgbWFwIGlzIHNlbGVjdGVkIGF1dG9tYXRpY2FsbHkgYWNjb3Jk
aW5nIHRvIHRoZSBsYW5ndWFnZSBhdCB0aGUgY3Vyc29yLCB1c2luZyB0aGUgYXNzaWdubWVudHMg
YmVsb3csIGZhbGxpbmcgYmFjayB0byB0aGUgRGVmYXVsdCBtYXAgYWJvdmUgZm9yIGxhbmd1YWdl
cyB3aXRob3V0IGFuIGFzc2lnbm1lbnQ8L3N0cmluZz4KICAgICAgICAgPC9wcm9wZXJ0eT4KLSAg
ICAgICAgPHByb3BlcnR5IG5hbWU9ImJ1ZGR5Ij4KLSAgICAgICAgIDxjc3RyaW5nPnNlY29uZEtl
eW1hcEVEPC9jc3RyaW5nPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CisgICAgICAg
ICA8c3RyaW5nPiZhbXA7U2VsZWN0IGtleWJvYXJkIG1hcCBhdXRvbWF0aWNhbGx5IGJ5IGxhbmd1
YWdlPC9zdHJpbmc+CiAgICAgICAgIDwvcHJvcGVydHk+CiAgICAgICAgPC93aWRnZXQ+CiAgICAg
ICA8L2l0ZW0+Ci0gICAgICA8aXRlbSByb3c9IjEiIGNvbHVtbj0iMCI+Ci0gICAgICAgPHdpZGdl
dCBjbGFzcz0iUUxhYmVsIiBuYW1lPSJmaXJzdEtleW1hcExBIj4KKyAgICAgIDxpdGVtIHJvdz0i
MyIgY29sdW1uPSIwIiBjb2xzcGFuPSIyIj4KKyAgICAgICA8d2lkZ2V0IGNsYXNzPSJRTGlzdFdp
ZGdldCIgbmFtZT0ia2V5bWFwTGFuZ0xXIj4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVuYWJs
ZWQiPgogICAgICAgICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CiAgICAgICAgIDwvcHJvcGVydHk+Ci0g
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KLSAgICAgICAgIDxzdHJpbmc+JmFtcDtQcmlt
YXJ5Ojwvc3RyaW5nPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6ZVBvbGljeSI+CisgICAg
ICAgICA8c2l6ZXBvbGljeSBoc2l6ZXR5cGU9IkV4cGFuZGluZyIgdnNpemV0eXBlPSJFeHBhbmRp
bmciPgorICAgICAgICAgIDxob3JzdHJldGNoPjA8L2hvcnN0cmV0Y2g+CisgICAgICAgICAgPHZl
cnN0cmV0Y2g+MDwvdmVyc3RyZXRjaD4KKyAgICAgICAgIDwvc2l6ZXBvbGljeT4KICAgICAgICAg
PC9wcm9wZXJ0eT4KLSAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJ1ZGR5Ij4KLSAgICAgICAgIDxj
c3RyaW5nPmZpcnN0S2V5bWFwRUQ8L2NzdHJpbmc+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0
b29sVGlwIj4KKyAgICAgICAgIDxzdHJpbmc+S2V5Ym9hcmQgbWFwIGFzc2lnbmVkIHRvIGVhY2gg
bGFuZ3VhZ2U8L3N0cmluZz4KICAgICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICA8L3dpZGdldD4K
ICAgICAgIDwvaXRlbT4KLSAgICAgIDxpdGVtIHJvdz0iMyIgY29sdW1uPSIwIiBjb2xzcGFuPSIz
Ij4KKyAgICAgIDxpdGVtIHJvdz0iMyIgY29sdW1uPSIyIj4KKyAgICAgICA8bGF5b3V0IGNsYXNz
PSJRVkJveExheW91dCIgbmFtZT0idmVydGljYWxMYXlvdXRfa2JtYXBsYW5nIj4KKyAgICAgICAg
PGl0ZW0+CisgICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRQ29tYm9Cb3giIG5hbWU9ImtleW1hcExh
bmdDTyI+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgorICAgICAgICAgICA8
Ym9vbD5mYWxzZTwvYm9vbD4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgIDxwcm9w
ZXJ0eSBuYW1lPSJ0b29sVGlwIj4KKyAgICAgICAgICAgPHN0cmluZz5MYW5ndWFnZSB0byBhc3Np
Z24gYSBrZXlib2FyZCBtYXAgdG88L3N0cmluZz4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAg
ICAgICAgPC93aWRnZXQ+CisgICAgICAgIDwvaXRlbT4KKyAgICAgICAgPGl0ZW0+CisgICAgICAg
ICA8bGF5b3V0IGNsYXNzPSJRSEJveExheW91dCIgbmFtZT0iaG9yaXpvbnRhbExheW91dF9rYm1h
cGxhbmciPgorICAgICAgICAgIDxpdGVtPgorICAgICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRTGlu
ZUVkaXQiIG5hbWU9ImtleW1hcExhbmdFRCI+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i
ZW5hYmxlZCI+CisgICAgICAgICAgICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CisgICAgICAgICAgICA8
L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2xUaXAiPgorICAgICAg
ICAgICAgIDxzdHJpbmc+S2V5Ym9hcmQgbWFwIHRvIHVzZSBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1
YWdlPC9zdHJpbmc+CisgICAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgICA8L3dpZGdl
dD4KKyAgICAgICAgICA8L2l0ZW0+CisgICAgICAgICAgPGl0ZW0+CisgICAgICAgICAgIDx3aWRn
ZXQgY2xhc3M9IlFQdXNoQnV0dG9uIiBuYW1lPSJrZXltYXBMYW5nUEIiPgorICAgICAgICAgICAg
PHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgorICAgICAgICAgICAgIDxib29sPmZhbHNlPC9ib29s
PgorICAgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0
ZXh0Ij4KKyAgICAgICAgICAgICA8c3RyaW5nPiZhbXA7QnJvd3NlLi4uPC9zdHJpbmc+CisgICAg
ICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImF1dG9EZWZh
dWx0Ij4KKyAgICAgICAgICAgICA8Ym9vbD5mYWxzZTwvYm9vbD4KKyAgICAgICAgICAgIDwvcHJv
cGVydHk+CisgICAgICAgICAgIDwvd2lkZ2V0PgorICAgICAgICAgIDwvaXRlbT4KKyAgICAgICAg
IDwvbGF5b3V0PgorICAgICAgICA8L2l0ZW0+CisgICAgICAgIDxpdGVtPgorICAgICAgICAgPHdp
ZGdldCBjbGFzcz0iUVB1c2hCdXR0b24iIG5hbWU9ImtleW1hcExhbmdBZGRQQiI+CisgICAgICAg
ICAgPHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgorICAgICAgICAgICA8Ym9vbD5mYWxzZTwvYm9v
bD4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0
Ij4KKyAgICAgICAgICAgPHN0cmluZz5BJmFtcDtkZDwvc3RyaW5nPgorICAgICAgICAgIDwvcHJv
cGVydHk+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImF1dG9EZWZhdWx0Ij4KKyAgICAgICAg
ICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CisgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgIDwv
d2lkZ2V0PgorICAgICAgICA8L2l0ZW0+CisgICAgICAgIDxpdGVtPgorICAgICAgICAgPHdpZGdl
dCBjbGFzcz0iUVB1c2hCdXR0b24iIG5hbWU9ImtleW1hcExhbmdSZW1vdmVQQiI+CisgICAgICAg
ICAgPHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgorICAgICAgICAgICA8Ym9vbD5mYWxzZTwvYm9v
bD4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0
Ij4KKyAgICAgICAgICAgPHN0cmluZz5SZW1vJmFtcDt2ZTwvc3RyaW5nPgorICAgICAgICAgIDwv
cHJvcGVydHk+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImF1dG9EZWZhdWx0Ij4KKyAgICAg
ICAgICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CisgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAg
IDwvd2lkZ2V0PgorICAgICAgICA8L2l0ZW0+CisgICAgICAgIDxpdGVtPgorICAgICAgICAgPHNw
YWNlciBuYW1lPSJ2ZXJ0aWNhbFNwYWNlcl9rYm1hcGxhbmciPgorICAgICAgICAgIDxwcm9wZXJ0
eSBuYW1lPSJvcmllbnRhdGlvbiI+CisgICAgICAgICAgIDxlbnVtPlF0OjpWZXJ0aWNhbDwvZW51
bT4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXpl
SGludCIgc3Rkc2V0PSIwIj4KKyAgICAgICAgICAgPHNpemU+CisgICAgICAgICAgICA8d2lkdGg+
MjA8L3dpZHRoPgorICAgICAgICAgICAgPGhlaWdodD40MDwvaGVpZ2h0PgorICAgICAgICAgICA8
L3NpemU+CisgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgIDwvc3BhY2VyPgorICAgICAg
ICA8L2l0ZW0+CisgICAgICAgPC9sYXlvdXQ+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBy
b3c9IjQiIGNvbHVtbj0iMCIgY29sc3Bhbj0iMyI+CiAgICAgICAgPHdpZGdldCBjbGFzcz0iUUNo
ZWNrQm94IiBuYW1lPSJkb250c3dhcENCIj4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2xU
aXAiPgogICAgICAgICAgPHN0cmluZz5tYWNPUyBzcGVjaWZpYyBzZXR0aW5nIGZvciB1c2Ugd2l0
aCBlbWFjcyBiaW5kaW5ncy4gVGFrZXMgZWZmZWN0IG5leHQgdGltZSBMeVggaXMgbGF1bmNoZWQu
PC9zdHJpbmc+CkBAIC0xMDgsMTMgKzE5MSw2IEBACiAgICAgICAgIDwvcHJvcGVydHk+CiAgICAg
ICAgPC93aWRnZXQ+CiAgICAgICA8L2l0ZW0+Ci0gICAgICA8aXRlbSByb3c9IjIiIGNvbHVtbj0i
MSI+Ci0gICAgICAgPHdpZGdldCBjbGFzcz0iUUxpbmVFZGl0IiBuYW1lPSJzZWNvbmRLZXltYXBF
RCI+Ci0gICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJlbmFibGVkIj4KLSAgICAgICAgIDxib29sPmZh
bHNlPC9ib29sPgotICAgICAgICA8L3Byb3BlcnR5PgotICAgICAgIDwvd2lkZ2V0PgotICAgICAg
PC9pdGVtPgogICAgICA8L2xheW91dD4KICAgICA8L3dpZGdldD4KICAgIDwvaXRlbT4KQEAgLTI5
OSw4ICszNzUsMTMgQEAKICAgPHRhYnN0b3A+a2V5bWFwQ0I8L3RhYnN0b3A+CiAgIDx0YWJzdG9w
PmZpcnN0S2V5bWFwRUQ8L3RhYnN0b3A+CiAgIDx0YWJzdG9wPmZpcnN0S2V5bWFwUEI8L3RhYnN0
b3A+Ci0gIDx0YWJzdG9wPnNlY29uZEtleW1hcEVEPC90YWJzdG9wPgotICA8dGFic3RvcD5zZWNv
bmRLZXltYXBQQjwvdGFic3RvcD4KKyAgPHRhYnN0b3A+a2V5bWFwRm9sbG93TGFuZ0NCPC90YWJz
dG9wPgorICA8dGFic3RvcD5rZXltYXBMYW5nTFc8L3RhYnN0b3A+CisgIDx0YWJzdG9wPmtleW1h
cExhbmdDTzwvdGFic3RvcD4KKyAgPHRhYnN0b3A+a2V5bWFwTGFuZ0VEPC90YWJzdG9wPgorICA8
dGFic3RvcD5rZXltYXBMYW5nUEI8L3RhYnN0b3A+CisgIDx0YWJzdG9wPmtleW1hcExhbmdBZGRQ
QjwvdGFic3RvcD4KKyAgPHRhYnN0b3A+a2V5bWFwTGFuZ1JlbW92ZVBCPC90YWJzdG9wPgogICA8
dGFic3RvcD5tb3VzZVdoZWVsU3BlZWRTQjwvdGFic3RvcD4KICA8L3RhYnN0b3BzPgogIDxpbmNs
dWRlcz4KLS0gCmx5eC1jdnMgbWFpbGluZyBsaXN0Cmx5eC1jdnNAbGlzdHMubHl4Lm9yZwpodHRw
czovL2xpc3RzLmx5eC5vcmcvbWFpbG1hbi9saXN0aW5mby9seXgtY3ZzCg==