[LyX/master] Support for front/main/backmatter (#12424)

Juergen Spitzmueller <[email protected]> Mon, 03 Aug 2026 09:30:41 +0000
Newsgroups gmane.editors.lyx.cvs
Message-ID <[email protected]>
Y29tbWl0IGU1Njk0MjZiMTU4M2RmM2I3ZGQ2YzYwNmNjMGZlYWRjMzdlNTcyM2IKQXV0aG9yOiBK
dWVyZ2VuIFNwaXR6bXVlbGxlciA8c3BpdHpAbHl4Lm9yZz4KRGF0ZTogICBNb24gQXVnIDMgMTE6
Mjk6MTIgMjAyNiArMDIwMAoKICAgIFN1cHBvcnQgZm9yIGZyb250L21haW4vYmFja21hdHRlciAo
IzEyNDI0KQogICAgCiAgICBCYXNlZCBvbiBhIHBhdGNoIGJ5IERhbmllbCBSYW3DtmxsZXIKICAg
IAogICAgRmlsZSBhbmQgbGF5b3V0IGZvcm1hdCBjaGFuZ2UKLS0tCiBkZXZlbG9wbWVudC9GT1JN
QVQgICAgICAgICAgICB8ICAgNSArKwogbGliL2RvYy9DdXN0b21pemF0aW9uLmx5eCAgICAgfCAx
MjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvZG9jL1Vz
ZXJHdWlkZS5seXggICAgICAgICB8ICA3MiArKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIv
ZG9jL2RlL0N1c3RvbWl6YXRpb24ubHl4ICB8ICA3NiArKysrKysrKysrKysrKysrKysrKysrKysr
KwogbGliL2RvYy9kZS9Vc2VyR3VpZGUubHl4ICAgICAgfCAgNzYgKysrKysrKysrKysrKysrKysr
KysrKysrKysKIGxpYi9sYXlvdXRzL2Ftc2Jvb2subGF5b3V0ICAgIHwgICAxICsKIGxpYi9sYXlv
dXRzL2Jvb2subGF5b3V0ICAgICAgIHwgICA0ICstCiBsaWIvbGF5b3V0cy9tZW1vaXIubGF5b3V0
ICAgICB8ICAgMSArCiBsaWIvbGF5b3V0cy9yZWNpcGVib29rLmxheW91dCB8ICAgMSArCiBsaWIv
bGF5b3V0cy9zY3Jib29rLmxheW91dCAgICB8ICAgMSArCiBsaWIvbGF5b3V0cy90dWZ0ZS1ib29r
LmxheW91dCB8ICAgMSArCiBsaWIvbHl4Mmx5eC9seXhfMl82LnB5ICAgICAgICB8ICAzMyArKysr
KysrKysrKy0KIGxpYi9seXgybHl4L3BhcnNlcl90b29scy5weSAgIHwgICAxICsKIGxpYi9zY3Jp
cHRzL2xheW91dDJsYXlvdXQucHkgIHwgICA3ICsrLQogbGliL3VpL3N0ZG1lbnVzLmluYyAgICAg
ICAgICAgfCAgIDcgKysrCiBzcmMvQnVmZmVyLmNwcCAgICAgICAgICAgICAgICB8ICAxMSArKyst
CiBzcmMvQ291bnRlcnMuY3BwICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL0NvdW50ZXJzLmgg
ICAgICAgICAgICAgICAgfCAgIDkgKysrKwogc3JjL0Z1bmNDb2RlLmggICAgICAgICAgICAgICAg
fCAgIDEgKwogc3JjL0xheW91dEVudW1zLmggICAgICAgICAgICAgfCAgMTIgKysrKysKIHNyYy9M
eVhBY3Rpb24uY3BwICAgICAgICAgICAgIHwgIDEwICsrKysKIHNyYy9QYXJhZ3JhcGhQYXJhbWV0
ZXJzLmNwcCAgIHwgIDQ2ICsrKysrKysrKysrKysrKysKIHNyYy9QYXJhZ3JhcGhQYXJhbWV0ZXJz
LmggICAgIHwgIDEyICsrKysrCiBzcmMvUm93UGFpbnRlci5jcHAgICAgICAgICAgICB8ICA0NyAr
KysrKysrKysrKystLS0tCiBzcmMvUm93UGFpbnRlci5oICAgICAgICAgICAgICB8ICAgMiArLQog
c3JjL1RleHQuY3BwICAgICAgICAgICAgICAgICAgfCAgNDQgKysrKysrKysrKysrKysrCiBzcmMv
VGV4dENsYXNzLmNwcCAgICAgICAgICAgICB8ICAxMSArKystCiBzcmMvVGV4dENsYXNzLmggICAg
ICAgICAgICAgICB8ICAgNCArKwogc3JjL1RleHRNZXRyaWNzLmNwcCAgICAgICAgICAgfCAgIDcg
Ky0tCiBzcmMvb3V0cHV0X2xhdGV4LmNwcCAgICAgICAgICB8ICAxNSArKysrKysKIHNyYy90ZXgy
bHl4L3RleHQuY3BwICAgICAgICAgIHwgIDcyICsrKysrKysrKysrKysrKysrKysrKysrKysKIHNy
Yy92ZXJzaW9uLmggICAgICAgICAgICAgICAgIHwgICA0ICstCiAzMiBmaWxlcyBjaGFuZ2VkLCA2
OTIgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZGV2ZWxvcG1l
bnQvRk9STUFUIGIvZGV2ZWxvcG1lbnQvRk9STUFUCmluZGV4IDIxYmFkNTc5ZWQuLmZhZTk2OGM3
NjEgMTAwNjQ0Ci0tLSBhL2RldmVsb3BtZW50L0ZPUk1BVAorKysgYi9kZXZlbG9wbWVudC9GT1JN
QVQKQEAgLTcsNiArNywxMSBAQCBjaGFuZ2VzIGhhcHBlbmVkIGluIHBhcnRpY3VsYXIgaWYgcG9z
c2libGUuIEEgZ29vZCBleGFtcGxlIHdvdWxkIGJlCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKKzIwMjYtMDgtMDMgSsO8cmdlbiBTcGl0em3DvGxsZXIgPHNwaXR6QGx5eC5vcmc+CisJKiBG
b3JtYXQgaW5jcmVtZW50ZWQgdG8gNjU3OiBTdXBwb3J0IGZvciBcZnJvbm1hdHRlciwgXG1haW5t
YXR0ZXIsCisJICBhbmQgXGJhY2ttYXR0ZXIgdmlhIHBhcmFncmFwaCBwYXJhbWV0ZXIKKwkgIFxz
dGFydF9vZl9tYXR0ZXIge2Zyb250LG1haW4sYmFja30KKwogMjAyNi0wOC0wMiBKw7xyZ2VuIFNw
aXR6bcO8bGxlciA8c3BpdHpAbHl4Lm9yZz4KIAkqIEZvcm1hdCBpbmNyZW1lbnRlZCB0byA2NTY6
IFN1cHBvcnQgZm9yIHBhcmZpbGxza2lwCiAJICBOZXcgYnVmZmVyIHBhcmFtIFxwYXJmaWxsc2tp
cCAiPHR5cGU+IiAiPGdsdWUgbGVuZ3RoPiIKZGlmZiAtLWdpdCBhL2xpYi9kb2MvQ3VzdG9taXph
dGlvbi5seXggYi9saWIvZG9jL0N1c3RvbWl6YXRpb24ubHl4CmluZGV4IGM0ZTM5NmIzOGYuLmZh
ZDM3NDMyNWQgMTAwNjQ0Ci0tLSBhL2xpYi9kb2MvQ3VzdG9taXphdGlvbi5seXgKKysrIGIvbGli
L2RvYy9DdXN0b21pemF0aW9uLmx5eApAQCAtMTE1MjQsNiArMTE1MjQsMTA3IEBAIG5vbGluayAi
ZmFsc2UiCiBcZW5kX2luc2V0CiAKICBmb3IgdGhlIGxpc3Qgb2YgZmVhdHVyZXMuCitcY2hhbmdl
X2luc2VydGVkIC03MTI2OTgzMjEgMTc4NTc0NzE3MAorCitcZW5kX2xheW91dAorCitcYmVnaW5f
bGF5b3V0IERlc2NyaXB0aW9uCisKK1xjaGFuZ2VfaW5zZXJ0ZWQgLTcxMjY5ODMyMSAxNzg1NzQ3
MjMxCitcYmVnaW5faW5zZXQgRmxleCBDb2RlCitzdGF0dXMgY29sbGFwc2VkCisKK1xiZWdpbl9s
YXlvdXQgUGxhaW4gTGF5b3V0CisKK1xjaGFuZ2VfaW5zZXJ0ZWQgLTcxMjY5ODMyMSAxNzg1NzQ3
MTc4CitQcm92aWRlc01hdHRlcnMKK1xlbmRfbGF5b3V0CisKK1xlbmRfaW5zZXQKKworIFsKK1xi
ZWdpbl9pbnNldCBGbGV4IENvZGUKK3N0YXR1cyBjb2xsYXBzZWQKKworXGJlZ2luX2xheW91dCBQ
bGFpbiBMYXlvdXQKKworXGNoYW5nZV9pbnNlcnRlZCAtNzEyNjk4MzIxIDE3ODU3NDcxNzEKKwor
XGVtcGggb24KKzAKK1xlbmRfbGF5b3V0CisKK1xlbmRfaW5zZXQKKworCitcYmVnaW5faW5zZXQg
c3BhY2UgXHRoaW5zcGFjZXt9CitcZW5kX2luc2V0CisKKworXGJlZ2luX2luc2V0IEZsZXggQ29k
ZQorc3RhdHVzIGNvbGxhcHNlZAorCitcYmVnaW5fbGF5b3V0IFBsYWluIExheW91dAorCitcY2hh
bmdlX2luc2VydGVkIC03MTI2OTgzMjEgMTc4NTc0NzE3MQorMQorXGVuZF9sYXlvdXQKKworXGVu
ZF9pbnNldAorCitdIGluZGljYXRlcyB3aGV0aGVyIHRoZSB0ZXh0IGNsYXNzIHByb3ZpZGVzIGZv
ciAKK1xiZWdpbl9pbnNldCBGbGV4IENvZGUKK3N0YXR1cyBjb2xsYXBzZWQKKworXGJlZ2luX2xh
eW91dCBQbGFpbiBMYXlvdXQKKworXGNoYW5nZV9pbnNlcnRlZCAtNzEyNjk4MzIxIDE3ODU3NDcy
MTcKKworXGJhY2tzbGFzaAorZnJvbnRtYXR0ZXIKK1xjaGFuZ2VfdW5jaGFuZ2VkCisKK1xlbmRf
bGF5b3V0CisKK1xlbmRfaW5zZXQKKworLAorIAorXGJlZ2luX2luc2V0IEZsZXggQ29kZQorc3Rh
dHVzIGNvbGxhcHNlZAorCitcYmVnaW5fbGF5b3V0IFBsYWluIExheW91dAorCitcY2hhbmdlX2lu
c2VydGVkIC03MTI2OTgzMjEgMTc4NTc0NzIyNAorCitcYmFja3NsYXNoCittYWlubWF0dGVyCitc
Y2hhbmdlX3VuY2hhbmdlZAorCitcZW5kX2xheW91dAorCitcZW5kX2luc2V0CisKKywKKyBhbmQg
CitcYmVnaW5faW5zZXQgRmxleCBDb2RlCitzdGF0dXMgY29sbGFwc2VkCisKK1xiZWdpbl9sYXlv
dXQgUGxhaW4gTGF5b3V0CisKK1xjaGFuZ2VfaW5zZXJ0ZWQgLTcxMjY5ODMyMSAxNzg1NzQ3MjMx
CisKK1xiYWNrc2xhc2gKK2JhY2ttYXR0ZXIKK1xjaGFuZ2VfdW5jaGFuZ2VkCisKK1xlbmRfbGF5
b3V0CisKK1xlbmRfaW5zZXQKKworIGRvY3VtZW50IGRpdmlzaW9uLgorXGNoYW5nZV91bmNoYW5n
ZWQKKwogXGVuZF9sYXlvdXQKIAogXGJlZ2luX2xheW91dCBEZXNjcmlwdGlvbgpAQCAtMTI2MDcs
NiArMTI3MDgsOCBAQCBzdGF0dXMgY29sbGFwc2VkCiAKIFxjaGFuZ2VfaW5zZXJ0ZWQgLTcxMjY5
ODMyMSAxNzg1NjY0MzE3CiBQYXJmaWxsc2tpcE5vbmUKK1xjaGFuZ2VfdW5jaGFuZ2VkCisKIFxl
bmRfbGF5b3V0CiAKIFxlbmRfaW5zZXQKQEAgLTEyNjE5LDYgKzEyNzIyLDggQEAgc3RhdHVzIGNv
bGxhcHNlZAogCiBcY2hhbmdlX2luc2VydGVkIC03MTI2OTgzMjEgMTc4NTY2NDI5Nwogc3RyaW5n
CitcY2hhbmdlX3VuY2hhbmdlZAorCiBcZW5kX2xheW91dAogCiBcZW5kX2luc2V0CkBAIC0xMjY0
Nyw2ICsxMjc1Miw4IEBAIHN0YXR1cyBjb2xsYXBzZWQKIAogXGNoYW5nZV9pbnNlcnRlZCAtNzEy
Njk4MzIxIDE3ODU2NjQzODcKIHBhcmZ1bGxza2lwPW5vbmUKK1xjaGFuZ2VfdW5jaGFuZ2VkCisK
IFxlbmRfbGF5b3V0CiAKIFxlbmRfaW5zZXQKQEAgLTEyNzA5LDYgKzEyODE2LDggQEAgc3RhdHVz
IGNvbGxhcHNlZAogCiBcY2hhbmdlX2luc2VydGVkIC03MTI2OTgzMjEgMTc4NTY2NDUwNwogUGFy
c2tpcEZ1bGwgcGFyc2tpcD1mdWxsCitcY2hhbmdlX3VuY2hhbmdlZAorCiBcZW5kX2xheW91dAog
CiBcZW5kX2luc2V0CkBAIC0xMjcyOCw2ICsxMjgzNyw4IEBAIHN0YXR1cyBjb2xsYXBzZWQKIAog
XGNoYW5nZV9pbnNlcnRlZCAtNzEyNjk4MzIxIDE3ODU2NjQzMjYKIFBhcmZpbGxza2lwUXVhcnRl
cgorXGNoYW5nZV91bmNoYW5nZWQKKwogXGVuZF9sYXlvdXQKIAogXGVuZF9pbnNldApAQCAtMTI3
NDAsNiArMTI4NTEsOCBAQCBzdGF0dXMgY29sbGFwc2VkCiAKIFxjaGFuZ2VfaW5zZXJ0ZWQgLTcx
MjY5ODMyMSAxNzg1NjY0Mjk3CiBzdHJpbmcKK1xjaGFuZ2VfdW5jaGFuZ2VkCisKIFxlbmRfbGF5
b3V0CiAKIFxlbmRfaW5zZXQKQEAgLTEyNzUyLDYgKzEyODY1LDggQEAgc3RhdHVzIGNvbGxhcHNl
ZAogCiBcY2hhbmdlX2luc2VydGVkIC03MTI2OTgzMjEgMTc4NTY2NDU3NAogUGFyZmlsbHNraXBO
b25lCitcY2hhbmdlX3VuY2hhbmdlZAorCiBcZW5kX2xheW91dAogCiBcZW5kX2luc2V0CkBAIC0x
Mjc4NCw2ICsxMjg5OSw4IEBAIHN0YXR1cyBjb2xsYXBzZWQKIAogXGNoYW5nZV9pbnNlcnRlZCAt
NzEyNjk4MzIxIDE3ODU2NjQzMzcKIFBhcmZpbGxza2lwVGhpcmQKK1xjaGFuZ2VfdW5jaGFuZ2Vk
CisKIFxlbmRfbGF5b3V0CiAKIFxlbmRfaW5zZXQKQEAgLTEyNzk2LDYgKzEyOTEzLDggQEAgc3Rh
dHVzIGNvbGxhcHNlZAogCiBcY2hhbmdlX2luc2VydGVkIC03MTI2OTgzMjEgMTc4NTY2NDMzMQog
c3RyaW5nCitcY2hhbmdlX3VuY2hhbmdlZAorCiBcZW5kX2xheW91dAogCiBcZW5kX2luc2V0CkBA
IC0xMjgwOCw2ICsxMjkyNyw4IEBAIHN0YXR1cyBjb2xsYXBzZWQKIAogXGNoYW5nZV9pbnNlcnRl
ZCAtNzEyNjk4MzIxIDE3ODU2NjQ2MDIKIFBhcmZpbGxza2lwTm9uZQorXGNoYW5nZV91bmNoYW5n
ZWQKKwogXGVuZF9sYXlvdXQKIAogXGVuZF9pbnNldApkaWZmIC0tZ2l0IGEvbGliL2RvYy9Vc2Vy
R3VpZGUubHl4IGIvbGliL2RvYy9Vc2VyR3VpZGUubHl4CmluZGV4IDIyN2JjMDRiNzguLjNmOTZh
MjYwNjggMTAwNjQ0Ci0tLSBhL2xpYi9kb2MvVXNlckd1aWRlLmx5eAorKysgYi9saWIvZG9jL1Vz
ZXJHdWlkZS5seXgKQEAgLTMzNjY0LDYgKzMzNjY0LDc4IEBAIFJlc3RvcmUgdmFsdWUgb2YgY291
bnRlcjoKIFRoZSBkaWFsb2cgYWxsb3dzIHlvdSB0byBjaG9vc2Ugd2hpY2ggY291bnRlciB5b3Ug
d2lzaCB0byBtb2RpZnkgZnJvbSBhbGwgdGhvc2UgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRoZSBj
dXJyZW50IGRvY3VtZW50IGNsYXNzLgogXGVuZF9sYXlvdXQKIAorXGJlZ2luX2xheW91dCBTZWN0
aW9uCisKK1xjaGFuZ2VfaW5zZXJ0ZWQgLTcxMjY5ODMyMSAxNzg1NzQ3Njk0CitTdHJ1Y3R1cmFs
IFVuaXRzCitcZW5kX2xheW91dAorCitcYmVnaW5fbGF5b3V0IFN0YW5kYXJkCisKK1xjaGFuZ2Vf
aW5zZXJ0ZWQgLTcxMjY5ODMyMSAxNzg1NzQ3OTM3CitTb21lIGRvY3VtZW50IGNsYXNzZXMsCisg
cGFydGljdWxhcmx5IGJvb2sgY2xhc3NlcywKKyBzdXBwb3J0IHRoZSBkaXZpc2lvbiBvZiBkb2N1
bWVudHMgaW4gc3RydWN0dXJhbCB1bml0cywKKyBuYW1lZCAKK1xiZWdpbl9pbnNldCBRdW90ZXMg
ZWxkCitcZW5kX2luc2V0CisKK2Zyb250IG1hdHRlcgorXGJlZ2luX2luc2V0IFF1b3RlcyBlcmQK
K1xlbmRfaW5zZXQKKworIChmb3IgdGhlIHByZWxpbWluYXJ5IHBhcnRzIG9mIHRoZSBib29rIHN1
Y2ggYXMgdGl0bGluZywKKyB0YWJsZSBvZiBjb250ZW50cywKKyBwcmVmYWNlKSwKKyAKK1xiZWdp
bl9pbnNldCBRdW90ZXMgZWxkCitcZW5kX2luc2V0CisKK21haW4gbWF0dGVyCitcYmVnaW5faW5z
ZXQgUXVvdGVzIGVyZAorXGVuZF9pbnNldAorCisgKGZvciB0aGUgbWFpbiBwYXJ0KSwKKyBhbmQg
CitcYmVnaW5faW5zZXQgUXVvdGVzIGVsZAorXGVuZF9pbnNldAorCitiYWNrIG1hdHRlcgorXGJl
Z2luX2luc2V0IFF1b3RlcyBlcmQKK1xlbmRfaW5zZXQKKworIChmb3IgYXBwZW5kaWNlcyBhbmQg
dGhlIGxpa2UpLgorIFVzdWFsbHksCisgZnJvbnQgbWF0dGVycyBhcmUgZGlmZmVyZW50bHkgcGFn
aW5hdGVkIChlLmcuLAorIHVzaW5nIHJvbWFuIG51bWJlcmluZyksCisgd2hlcmVhcyBtYWluIG1h
dHRlcnMgc3RhcnQgd2l0aCBwYWdlIDEuCisgQmFjayBtYXR0ZXJzIG9mdGVuIGRvIG5vdCB1c2Ug
c2VjdGlvbiBudW1iZXJpbmcuCisgVGhlIGRldGFpbHMgaG93IHRoZSB0aHJlZSB1bml0cyBhcmUg
c3VwcG9zZWQgdG8gbG9vayBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MuCitcZW5kX2xheW91dAor
CitcYmVnaW5fbGF5b3V0IFN0YW5kYXJkCisKK1xjaGFuZ2VfaW5zZXJ0ZWQgLTcxMjY5ODMyMSAx
Nzg1NzQ4MDA3CitJbiBcU3BlY2lhbENoYXIgTHlYCissCisgeW91IGNhbiBzdGFydCB0aGVzZSB1
bml0cyB2aWEgCitcZmFtaWx5IHNhbnMKK0RvY3VtZW50XFNwZWNpYWxDaGFyIG1lbnVzZXBhcmF0
b3IKK1N0YXJ0CitcYmVnaW5faW5zZXQgc3BhY2UgfgorXGVuZF9pbnNldAorCitTdHJ1Y3R1cmFs
IFVuaXQKK1xiZWdpbl9pbnNldCBzcGFjZSB+CitcZW5kX2luc2V0CisKK0hlcmUKK1xmYW1pbHkg
ZGVmYXVsdAorIHdpdGggdGhlIGNsYXNzZXMgdGhhdCBzdXBwb3J0IHRoZXNlIGRpdmlzaW9ucy4K
K1xjaGFuZ2VfdW5jaGFuZ2VkCisKK1xlbmRfbGF5b3V0CisKIFxiZWdpbl9sYXlvdXQgU2VjdGlv
bgogQXBwZW5kaWNlcwogXGJlZ2luX2luc2V0IEluZGV4IGlkeApkaWZmIC0tZ2l0IGEvbGliL2Rv
Yy9kZS9DdXN0b21pemF0aW9uLmx5eCBiL2xpYi9kb2MvZGUvQ3VzdG9taXphdGlvbi5seXgKaW5k
ZXggNWVmZWQyZjIwZS4uNGVjMDAwMDMzNiAxMDA2NDQKLS0tIGEvbGliL2RvYy9kZS9DdXN0b21p
emF0aW9uLmx5eAorKysgYi9saWIvZG9jL2RlL0N1c3RvbWl6YXRpb24ubHl4CkBAIC05OTY2LDYg
Kzk5NjYsODIgQEAgbm9saW5rICJmYWxzZSIKIFxiZWdpbl9pbnNldCBGbGV4IENvZGUKIHN0YXR1
cyBjb2xsYXBzZWQKIAorXGJlZ2luX2xheW91dCBQbGFpbiBMYXlvdXQKK1Byb3ZpZGVzTWF0dGVy
cworXGVuZF9sYXlvdXQKKworXGVuZF9pbnNldAorCisgWworXGJlZ2luX2luc2V0IEZsZXggQ29k
ZQorc3RhdHVzIGNvbGxhcHNlZAorCitcYmVnaW5fbGF5b3V0IFBsYWluIExheW91dAorCitcZW1w
aCBvbgorMAorXGVuZF9sYXlvdXQKKworXGVuZF9pbnNldAorCisKK1xiZWdpbl9pbnNldCBzcGFj
ZSBcdGhpbnNwYWNle30KK1xlbmRfaW5zZXQKKworCitcYmVnaW5faW5zZXQgRmxleCBDb2RlCitz
dGF0dXMgY29sbGFwc2VkCisKK1xiZWdpbl9sYXlvdXQgUGxhaW4gTGF5b3V0CisxCitcZW5kX2xh
eW91dAorCitcZW5kX2luc2V0CisKK10gemVpZ3QgYW4gb2IgZGllIEtsYXNzZSBkaWUgU3RydWt0
dXJpZXJ1bmcgZGVzIERva3VtZW50cyBtaXR0ZWxzIAorXGJlZ2luX2luc2V0IEZsZXggQ29kZQor
c3RhdHVzIGNvbGxhcHNlZAorCitcYmVnaW5fbGF5b3V0IFBsYWluIExheW91dAorCitcYmFja3Ns
YXNoCitmcm9udG1hdHRlcgorXGVuZF9sYXlvdXQKKworXGVuZF9pbnNldAorCissCisgCitcYmVn
aW5faW5zZXQgRmxleCBDb2RlCitzdGF0dXMgY29sbGFwc2VkCisKK1xiZWdpbl9sYXlvdXQgUGxh
aW4gTGF5b3V0CisKK1xiYWNrc2xhc2gKK21haW5tYXR0ZXIKK1xlbmRfbGF5b3V0CisKK1xlbmRf
aW5zZXQKKworIHVuZCAKK1xiZWdpbl9pbnNldCBGbGV4IENvZGUKK3N0YXR1cyBjb2xsYXBzZWQK
KworXGJlZ2luX2xheW91dCBQbGFpbiBMYXlvdXQKKworXGJhY2tzbGFzaAorYmFja21hdHRlcgor
XGVuZF9sYXlvdXQKKworXGVuZF9pbnNldAorCisgdW50ZXJzdMO8dHp0LgorXGVuZF9sYXlvdXQK
KworXGJlZ2luX2xheW91dCBEZXNjcmlwdGlvbgorXGJlZ2luX2luc2V0IEZsZXggQ29kZQorc3Rh
dHVzIGNvbGxhcHNlZAorCiBcYmVnaW5fbGF5b3V0IFBsYWluIExheW91dAogUHJvdmlkZXNNb2R1
bGUKIFxlbmRfbGF5b3V0CmRpZmYgLS1naXQgYS9saWIvZG9jL2RlL1VzZXJHdWlkZS5seXggYi9s
aWIvZG9jL2RlL1VzZXJHdWlkZS5seXgKaW5kZXggZTVhYjM1NmM5Mi4uNjBlMGE5ZWUwYSAxMDA2
NDQKLS0tIGEvbGliL2RvYy9kZS9Vc2VyR3VpZGUubHl4CisrKyBiL2xpYi9kb2MvZGUvVXNlckd1
aWRlLmx5eApAQCAtMzI4NTAsNiArMzI4NTAsODIgQEAgSW4gZGllc2VtIERpYWxvZyBrw7ZubmVu
IFNpZSBhdXMgYWxsZW4gWsOkaGxlcm4sCiAgZGVuIFNpZSDDpG5kZXJuIG3DtmNodGVuLgogXGVu
ZF9sYXlvdXQKIAorXGJlZ2luX2xheW91dCBTZWN0aW9uCitTdHJ1a3R1cmVsbGUgRWluaGVpdGVu
CitcZW5kX2xheW91dAorCitcYmVnaW5fbGF5b3V0IFN0YW5kYXJkCitNYW5jaGUgRG9rdW1lbnRr
bGFzc2VuLAorIGJlc29uZGVycyBkaWUgZsO8ciBCw7xjaGVyLAorIHVudGVyc3TDvHR6ZW4gZGll
IEVpbnRlaWx1bmcgdm9uIERva3VtZW50ZW4gaW4gc3RydWt0dXJlbGxlIEVpbmhlaXRlbiwKKyBu
w6RtbGljaCBWb3JzcGFubiAoZW5nbC4KKyAKK1xiZWdpbl9pbnNldCBRdW90ZXMgZ2xkCitcZW5k
X2luc2V0CisKKworXGxhbmcgZW5nbGlzaAorZnJvbnQgbWF0dGVyCitcbGFuZyBuZ2VybWFuCisK
K1xiZWdpbl9pbnNldCBRdW90ZXMgZ3JkCitcZW5kX2luc2V0CisKKywKKyBmw7xyIGRpZSBUaXRl
bGVpLAorIGRhcyBJbmhhbHRzdmVyemVpY2huaXMsCisgVm9yd29ydGUgdXN3LiksCisgSGF1cHR0
ZWlsIChlbmdsLgorIAorXGJlZ2luX2luc2V0IFF1b3RlcyBnbGQKK1xlbmRfaW5zZXQKKworCitc
bGFuZyBlbmdsaXNoCittYWluIG1hdHRlcgorXGxhbmcgbmdlcm1hbgorCitcYmVnaW5faW5zZXQg
UXVvdGVzIGdyZAorXGVuZF9pbnNldAorCispIHVuZCBOYWNoc3Bhbm4gKGVuZ2wuCisgCitcYmVn
aW5faW5zZXQgUXVvdGVzIGdsZAorXGVuZF9pbnNldAorCisKK1xsYW5nIGVuZ2xpc2gKK2JhY2sg
bWF0dGVyCitcbGFuZyBuZ2VybWFuCisKK1xiZWdpbl9pbnNldCBRdW90ZXMgZ3JkCitcZW5kX2lu
c2V0CisKKywKKyBmw7xyIEFuaMOkbmdlIHVuZCDDhGhubGljaGVzKS4KKyBNZWlzdGVucyBpc3Qg
ZGVyIFZvcnNwYW5uIGFuZGVycyBwYWdpbmllcnQgKGJzcHcuCisgbWl0IHLDtm1pc2NoZW4gU2Vp
dGVuemFobGVuKSwKKyB3b2JlaSBkZXIgSGF1cHR0ZWlsIGRhbm4gbWl0IFNlaXRlCitcYmVnaW5f
aW5zZXQgc3BhY2UgfgorXGVuZF9pbnNldAorCisxIGJlZ2lubnQuCisgRGVyIE5hY2hzcGFubiB2
ZXJ3ZW5kZXQgb2Z0IGtlaW5lIEFic2Nobml0dHNudW1tZXJpZXJ1bmcuCisgV2llIGVzIGdlbmF1
IGF1c3NjaGF1dCBkZWZpbmllcnQgYWJlciBkaWUgamV3ZWlsaWdlIEtsYXNzZS4KK1xlbmRfbGF5
b3V0CisKK1xiZWdpbl9sYXlvdXQgU3RhbmRhcmQKK0luIFxTcGVjaWFsQ2hhciBMeVgKKyBrw7Zu
bmVuIFNpZSBkaWVzZSBFaW5oZWl0ZW4gw7xiZXIgCitcZmFtaWx5IHNhbnMKK0Rva3VtZW50XFNw
ZWNpYWxDaGFyIG1lbnVzZXBhcmF0b3IKK1N0cnVrdHVyZWxsZSBFaW5oZWl0IGhpZXIgYmVnaW5u
ZW4gCitcZmFtaWx5IGRlZmF1bHQKK2ltIEZhbGwgZGVyIEtsYXNzZW4sCisgZGllIHNvbGNoZSBV
bnRlcnRlaWx1bmdlbiB1bnRlcnN0w7x0emVuLAorIG1hcmtpZXJlbi4KK1xlbmRfbGF5b3V0CisK
IFxiZWdpbl9sYXlvdXQgU2VjdGlvbgogQW5ow6RuZ2UKIFxiZWdpbl9pbnNldCBDb21tYW5kSW5z
ZXQgbGFiZWwKZGlmZiAtLWdpdCBhL2xpYi9sYXlvdXRzL2Ftc2Jvb2subGF5b3V0IGIvbGliL2xh
eW91dHMvYW1zYm9vay5sYXlvdXQKaW5kZXggNTU0NmM5ZGMzYi4uYzgyYzM3MjUyOCAxMDA2NDQK
LS0tIGEvbGliL2xheW91dHMvYW1zYm9vay5sYXlvdXQKKysrIGIvbGliL2xheW91dHMvYW1zYm9v
ay5sYXlvdXQKQEAgLTE3LDYgKzE3LDcgQEAgRm9ybWF0IDExOQogQ29sdW1ucyAgICAgICAgICAg
ICAgICAgMQogU2lkZXMgICAgICAgICAgICAgICAgICAgMgogUGFnZVN0eWxlICAgICAgICAgICAg
ICAgSGVhZGVycworUHJvdmlkZXNNYXR0ZXJzICAgICAgICAgMQogRG9jQm9va1Jvb3QgICAgICAg
ICAgICAgYm9vawogCiBQcm92aWRlcyBhbXNtYXRoICAgICAgICAgMQpkaWZmIC0tZ2l0IGEvbGli
L2xheW91dHMvYm9vay5sYXlvdXQgYi9saWIvbGF5b3V0cy9ib29rLmxheW91dAppbmRleCAzZTU2
YTZjZGMyLi5lMTM4OTRkNmJlIDEwMDY0NAotLS0gYS9saWIvbGF5b3V0cy9ib29rLmxheW91dAor
KysgYi9saWIvbGF5b3V0cy9ib29rLmxheW91dApAQCAtMTEsMTAgKzExLDEwIEBAIEZvcm1hdCAx
MTkKIElucHV0IHN0ZGNsYXNzLmluYwogSW5wdXQgbnVtcmVwb3J0LmluYwogCi0KIFNpZGVzICAg
ICAgICAgICAgICAgICAyCiBQYWdlU3R5bGUgICAgICAgICAgICAgSGVhZGluZ3MKLURvY0Jvb2tS
b290CQkgICAgICBib29rCitQcm92aWRlc01hdHRlcnMgICAgICAgMQorRG9jQm9va1Jvb3QJICAg
ICAgYm9vawogRG9jQm9va0ZvcmNlQWJzdHJhY3QgIHRydWUKIAogCmRpZmYgLS1naXQgYS9saWIv
bGF5b3V0cy9tZW1vaXIubGF5b3V0IGIvbGliL2xheW91dHMvbWVtb2lyLmxheW91dAppbmRleCA4
ZDUyYTAzZTU5Li45ZjM1MDJjYmUwIDEwMDY0NAotLS0gYS9saWIvbGF5b3V0cy9tZW1vaXIubGF5
b3V0CisrKyBiL2xpYi9sYXlvdXRzL21lbW9pci5sYXlvdXQKQEAgLTEyLDYgKzEyLDcgQEAgQ29s
dW1ucyAgICAgICAgICAgIDEKIFNpZGVzICAgICAgICAgICAgICAyCiBTZWNOdW1EZXB0aCAgICAg
ICAgMQogVG9jRGVwdGggICAgICAgICAgIDEKK1Byb3ZpZGVzTWF0dGVycyAgICAxCiBEZWZhdWx0
U3R5bGUgICAgICAgU3RhbmRhcmQKIFBhZ2VTdHlsZSAgICAgICAgICBIZWFkaW5ncwogUGFnZVNp
emUgICAgICAgICAgIGxldHRlcgpkaWZmIC0tZ2l0IGEvbGliL2xheW91dHMvcmVjaXBlYm9vay5s
YXlvdXQgYi9saWIvbGF5b3V0cy9yZWNpcGVib29rLmxheW91dAppbmRleCAwOGNlZDI1ZThlLi44
Mjk1OTk0YzUxIDEwMDY0NAotLS0gYS9saWIvbGF5b3V0cy9yZWNpcGVib29rLmxheW91dAorKysg
Yi9saWIvbGF5b3V0cy9yZWNpcGVib29rLmxheW91dApAQCAtMzUsNiArMzUsNyBAQCBJbnB1dCBu
dW1yZXBvcnQuaW5jCiBTZWNOdW1EZXB0aAkJMgogVG9jRGVwdGgJCTMKIFBhZ2VTdHlsZQkJSGVh
ZGluZ3MKK1Byb3ZpZGVzTWF0dGVycyAgICAgICAgIDEKIERvY0Jvb2tSb290CQlib29rCiAKICMg
VGhlcmUgaXMgbm8gYWJzdHJhY3QgZW52aXJvbm1lbnQgaW4gc2NyYm9vay5jbHMKZGlmZiAtLWdp
dCBhL2xpYi9sYXlvdXRzL3NjcmJvb2subGF5b3V0IGIvbGliL2xheW91dHMvc2NyYm9vay5sYXlv
dXQKaW5kZXggNGU1ODYwYzQwOS4uNmJhMDM2ZmE3MCAxMDA2NDQKLS0tIGEvbGliL2xheW91dHMv
c2NyYm9vay5sYXlvdXQKKysrIGIvbGliL2xheW91dHMvc2NyYm9vay5sYXlvdXQKQEAgLTEwLDYg
KzEwLDcgQEAgSW5wdXQgbnVtcmVwb3J0LmluYwogCiBTaWRlcwkJCTIKIFBhZ2VTdHlsZQkJSGVh
ZGluZ3MKK1Byb3ZpZGVzTWF0dGVycyAgICAgICAgIDEKIERvY0Jvb2tSb290CQlib29rCiAKIE5v
U3R5bGUgQWJzdHJhY3QKZGlmZiAtLWdpdCBhL2xpYi9sYXlvdXRzL3R1ZnRlLWJvb2subGF5b3V0
IGIvbGliL2xheW91dHMvdHVmdGUtYm9vay5sYXlvdXQKaW5kZXggZmI2ODNlNGZmNC4uYzkxMTky
ZjA0YyAxMDA2NDQKLS0tIGEvbGliL2xheW91dHMvdHVmdGUtYm9vay5sYXlvdXQKKysrIGIvbGli
L2xheW91dHMvdHVmdGUtYm9vay5sYXlvdXQKQEAgLTEyLDYgKzEyLDcgQEAgUHJvdmlkZXMgbmF0
YmliLWludGVybmFsIDEKIAogU2lkZXMJCTIKIFBhZ2VTdHlsZQlIZWFkaW5ncworUHJvdmlkZXNN
YXR0ZXJzIDEKIERvY0Jvb2tSb290CWJvb2sKIAogQ2xhc3NPcHRpb25zCmRpZmYgLS1naXQgYS9s
aWIvbHl4Mmx5eC9seXhfMl82LnB5IGIvbGliL2x5eDJseXgvbHl4XzJfNi5weQppbmRleCA1ZWVk
NWNiZTA1Li5jMTIzZDFmYjY0IDEwMDY0NAotLS0gYS9saWIvbHl4Mmx5eC9seXhfMl82LnB5Cisr
KyBiL2xpYi9seXgybHl4L2x5eF8yXzYucHkKQEAgLTE2MDAsNiArMTYwMCwzNSBAQCBkZWYgcmV2
ZXJ0X3BhcmZpbGxza2lwKGRvY3VtZW50KToKICAgICBpZiBwcmVhbWJsZSAhPSAiIjoKICAgICAg
ICAgYWRkX3RvX3ByZWFtYmxlKGRvY3VtZW50LCBwcmVhbWJsZSkKIAorCitkZWYgcmV2ZXJ0X21h
dHRlcnMoZG9jdW1lbnQpOgorICAgICIiIlJldmVydCBcXGZyb250bWF0dGVyLCBcXG1haW5tYXR0
ZXIgYW5kIFxcYmFja21hdHRlciB0byBFUlQiIiIKKworICAgIGZvciBtYXR0ZXIgaW4gWyJmcm9u
dCIsICJtYWluIiwgImJhY2siXToKKyAgICAgICAgaSA9IDAKKyAgICAgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgICAgIGkgPSBmaW5kX3Rva2VuKGRvY3VtZW50LmJvZHksICJcXHN0YXJ0X29mX21h
dHRlciAiICsgbWF0dGVyLCBpKQorICAgICAgICAgICAgaWYgaSA9PSAtMToKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgCisgICAgICAgICAgICAjIEFkZCBFUlQKKyAgICAgICAg
ICAgIGxheSA9IGdldF9jb250YWluaW5nX2xheW91dChkb2N1bWVudC5ib2R5LCBpKQorICAgICAg
ICAgICAgaWYgbGF5ID09IEZhbHNlOgorICAgICAgICAgICAgICAgIGRvY3VtZW50Lndhcm5pbmco
Ik1hdHRlciBoYXMgbm8gbGF5b3V0ISIpCisgICAgICAgICAgICAgICAgaSArPSAxCisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGJlZ2xheSA9IGxheVsxXQorICAgICAgICAg
ICAgZW5kbGF5ID0gZmluZF9lbmRfb2ZfbGF5b3V0KGRvY3VtZW50LmJvZHksIGJlZ2xheSkKKyAg
ICAgICAgICAgIGlmIGVuZGxheSA9PSBGYWxzZToKKyAgICAgICAgICAgICAgICBkb2N1bWVudC53
YXJuaW5nKCJNYXR0ZXIgaGFzIG5vIGVuZGxheW91dCEiKQorICAgICAgICAgICAgICAgIGkgKz0g
MQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxh
eWIgPSBkb2N1bWVudC5ib2R5W2JlZ2xheV0KKyAgICAgICAgICAgIGxheWUgPSBkb2N1bWVudC5i
b2R5W2VuZGxheV0KKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHlbaSA6IGkgKyAxXSA9IHB1dF9j
bWRfaW5fZXJ0KFsiXFwiICsgbWF0dGVyICsgIm1hdHRlciJdKSArIFsiIiwgbGF5ZSwgIiIsIGxh
eWJdCisgICAgICAgICAgICBpICs9IDEKKwogIyMKICMgQ29udmVyc2lvbiBodWIKICMKQEAgLTE2
MTgsMTEgKzE2NDcsMTMgQEAgY29udmVydCA9IFsKICAgICBbNjUzLCBbXV0sCiAgICAgWzY1NCwg
W11dLAogICAgIFs2NTUsIFtdXSwKLSAgICBbNjU2LCBbXV0KKyAgICBbNjU2LCBbXV0sCisgICAg
WzY1NywgW11dCiBdCiAKIAogcmV2ZXJ0ID0gWworICAgIFs2NTYsIFtyZXZlcnRfbWF0dGVyc11d
LAogICAgIFs2NTUsIFtyZXZlcnRfcGFyZmlsbHNraXBdXSwKICAgICBbNjU0LCBbcmV2ZXJ0X2hl
eDMyY29sb3JzXV0sCiAgICAgWzY1MywgW3JldmVydF9taW50ZWRsYW5nc11dLApkaWZmIC0tZ2l0
IGEvbGliL2x5eDJseXgvcGFyc2VyX3Rvb2xzLnB5IGIvbGliL2x5eDJseXgvcGFyc2VyX3Rvb2xz
LnB5CmluZGV4IDgzOWI5MjIyNzguLjNlM2RlOTkxMjUgMTAwNjQ0Ci0tLSBhL2xpYi9seXgybHl4
L3BhcnNlcl90b29scy5weQorKysgYi9saWIvbHl4Mmx5eC9wYXJzZXJfdG9vbHMucHkKQEAgLTY4
NCw2ICs2ODQsNyBAQCBkZWYgZ2V0X2NvbnRhaW5pbmdfbGF5b3V0KGxpbmVzLCBpKToKICAgICAg
ICAgIlxcaW5kZW50LXRvZ2dsZSIsCiAgICAgICAgICJcXGxlZnRpbmRlbnQiLAogICAgICAgICAi
XFxzdGFydF9vZl9hcHBlbmRpeCIsCisgICAgICAgICJcXHN0YXJ0X29mX21hdHRlciIsCiAgICAg
ICAgICJcXHBhcmFncmFwaF9zcGFjaW5nIiwKICAgICAgICAgIlxcYWxpZ24iLAogICAgICAgICAi
XFxsYWJlbHdpZHRoc3RyaW5nIiwKZGlmZiAtLWdpdCBhL2xpYi9zY3JpcHRzL2xheW91dDJsYXlv
dXQucHkgYi9saWIvc2NyaXB0cy9sYXlvdXQybGF5b3V0LnB5CmluZGV4IGY1MDZiNWRlYjUuLmNi
YWEwODkwNGIgMTAwNjQ0Ci0tLSBhL2xpYi9zY3JpcHRzL2xheW91dDJsYXlvdXQucHkKKysrIGIv
bGliL3NjcmlwdHMvbGF5b3V0MmxheW91dC5weQpAQCAtOSw3ICs5LDcgQEAKICMgVGhpcyBzY3Jp
cHQgd2lsbCB1cGRhdGUgYSAubGF5b3V0IGZpbGUgdG8gY3VycmVudCBmb3JtYXQKIAogIyBUaGUg
bGF0ZXN0IGxheW91dCBmb3JtYXQgaXMgYWxzbyBkZWZpbmVkIGluIHNyYy9UZXh0Q2xhc3MuY3Bw
Ci1jdXJyZW50Rm9ybWF0ID0gMTE5CitjdXJyZW50Rm9ybWF0ID0gMTIwCiAKIAogIyBJbmNyZW1l
bnRlZCB0byBmb3JtYXQgNCwgNiBBcHJpbCAyMDA3LCBsYXNnb3V0dGVzCkBAIC00MDQsNiArNDA0
LDkgQEAgY3VycmVudEZvcm1hdCA9IDExOQogIyBOZXcgY2xhc3MgdGFncyBQYXJmaWxsc2tpcE5v
bmUsIFBhcmZpbGxza2lwUXVhcnRlcgogIyBhbmQgUGFyZmlsbHNraXBUaGlyZAogCisjIEluY3Jl
bWVudGVkIHRvIGZvcm1hdCAxMjAsIDMgQXVndXN0IDIwMjYgYnkgc3BpdHoKKyMgTmV3IGNsYXNz
IHRhZyBQcm92aWRlc01hdHRlcnMKKwogIyBEbyBub3QgZm9yZ2V0IHRvIGRvY3VtZW50IGZvcm1h
dCBjaGFuZ2UgaW4gQ3VzdG9taXphdGlvbgogIyBNYW51YWwgKHNlY3Rpb24gIkRlY2xhcmluZyBh
IG5ldyB0ZXh0IGNsYXNzIikuCiAKQEAgLTc0Myw3ICs3NDYsNyBAQCBkZWYgY29udmVydChsaW5l
cywgZW5kX2Zvcm1hdCk6CiAgICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICBjb250
aW51ZQogCi0gICAgICAgIGlmIDEwMSA8PSBmb3JtYXQgPD0gMTE5OgorICAgICAgICBpZiAxMDEg
PD0gZm9ybWF0IDw9IDEyMDoKICAgICAgICAgICAgICMgbm90aGluZyB0byBkby4KICAgICAgICAg
ICAgIGkgKz0gMQogICAgICAgICAgICAgY29udGludWUKZGlmZiAtLWdpdCBhL2xpYi91aS9zdGRt
ZW51cy5pbmMgYi9saWIvdWkvc3RkbWVudXMuaW5jCmluZGV4IGNlY2Y0NjE2YzMuLmVkYzczNmE2
MmEgMTAwNjQ0Ci0tLSBhL2xpYi91aS9zdGRtZW51cy5pbmMKKysrIGIvbGliL3VpL3N0ZG1lbnVz
LmluYwpAQCAtNTY5LDYgKzU2OSw3IEBAIE1lbnVzZXQKIAkJSXRlbSAiTGFUZVggTG9nfEwiICJk
aWFsb2ctc2hvdyBsYXRleGxvZyIKIAkJSXRlbSAiUHJvY2Vzc2luZyBFcnJvcnN8ciIgImVycm9y
cy1zaG93IgogCQlJdGVtICJTdGFydCBBcHBlbmRpeCBIZXJlfHgiICJhcHBlbmRpeCIKKwkJT3B0
U3VibWVudSAiU3RhcnQgU3RydWN0dXJhbCBVbml0IEhlcmUiICJtYXR0ZXIiCiAJCVNlcGFyYXRv
cgogCQlWaWV3Rm9ybWF0cwogCQlVcGRhdGVGb3JtYXRzCkBAIC01OTIsNiArNTkzLDEyIEBAIE1l
bnVzZXQKIAkJSXRlbSAiU2hvdyBDaGFuZ2VzIGluIE91dHB1dHxTIiAiY2hhbmdlcy1vdXRwdXQi
CiAJRW5kCiAKKwlNZW51ICJtYXR0ZXIiCisJCU9wdEl0ZW0gIkZyb250IE1hdHRlciIgIm1hdHRl
ciBmcm9udCIKKwkJT3B0SXRlbSAiTWFpbiBNYXR0ZXIiICJtYXR0ZXIgbWFpbiIKKwkJT3B0SXRl
bSAiQmFjayBNYXR0ZXIiICJtYXR0ZXIgYmFjayIKKwlFbmQKKwogIwogIyBOQVZJR0FURSBNRU5V
CiAjCmRpZmYgLS1naXQgYS9zcmMvQnVmZmVyLmNwcCBiL3NyYy9CdWZmZXIuY3BwCmluZGV4IDg1
MTI0ZDBmMWYuLmUwZGJiMDY1OWIgMTAwNjQ0Ci0tLSBhL3NyYy9CdWZmZXIuY3BwCisrKyBiL3Ny
Yy9CdWZmZXIuY3BwCkBAIC01NDA1LDYgKzU0MDUsMTEgQEAgdm9pZCBCdWZmZXI6OkltcGw6OnNl
dExhYmVsKFBhckl0ZXJhdG9yICYgaXQsIFVwZGF0ZVR5cGUgdXR5cGUpIGNvbnN0CiAJfQogCXBh
ci5wYXJhbXMoKS5hcHBlbmRpeChjb3VudGVycy5hcHBlbmRpeCgpKTsKIAorCWlmIChwYXIucGFy
YW1zKCkuc3RhcnRPZk1hdHRlcigpICE9IE1BVFRFUl9OT05FKSB7CisJCWNvdW50ZXJzLm1haW5N
YXR0ZXIocGFyLnBhcmFtcygpLnN0YXJ0T2ZNYXR0ZXIoKSA9PSBNQVRURVJfTUFJTik7CisJfQor
CXBhci5wYXJhbXMoKS5tYWluTWF0dGVyKGNvdW50ZXJzLm1haW5NYXR0ZXIoKSk7CisKIAkvLyBD
b21wdXRlIHRoZSBpdGVtIGRlcHRoIG9mIHRoZSBwYXJhZ3JhcGgKIAlwYXIuaXRlbWRlcHRoID0g
Z2V0SXRlbURlcHRoKGl0KTsKIApAQCAtNTQ5NCw4ICs1NDk5LDEwIEBAIHZvaWQgQnVmZmVyOjpJ
bXBsOjpzZXRMYWJlbChQYXJJdGVyYXRvciAmIGl0LCBVcGRhdGVUeXBlIHV0eXBlKSBjb25zdAog
CQlkb2NzdHJpbmcgY29uc3QgJiBsY291bnRlciA9IGxheW91dC5jb3VudGVyOwogCQlpZiAoIWxj
b3VudGVyLmVtcHR5KCkpIHsKIAkJCWlmIChsYXlvdXQudG9jbGV2ZWwgPD0gYnAuc2VjbnVtZGVw
dGgKLQkJCQkJCSYmIChsYXlvdXQubGF0ZXh0eXBlICE9IExBVEVYX0VOVklST05NRU5UCi0JCQkJ
CXx8IGl0LnRleHQoKS0+aXNGaXJzdEluU2VxdWVuY2UoaXQucGl0KCkpKSkgeworCQkJCQkmJiAo
bGF5b3V0LmxhdGV4dHlwZSAhPSBMQVRFWF9FTlZJUk9OTUVOVAorCQkJCQkJfHwgaXQudGV4dCgp
LT5pc0ZpcnN0SW5TZXF1ZW5jZShpdC5waXQoKSkpCisJCQkJCS8vIE5vIG51bWJlcmluZyBmb3Ig
Y2hhcHRlcnMgb3V0c2lkZSBvZiBtYWluIG1hdHRlci4KKwkJCQkJJiYgKGxheW91dC50b2NsZXZl
bCAhPSAwIHx8IHBhci5wYXJhbXMoKS5tYWluTWF0dGVyKCkpKSB7CiAJCQkJaWYgKGNvdW50ZXJz
Lmhhc0NvdW50ZXIobGNvdW50ZXIpKQogCQkJCQljb3VudGVycy5zdGVwKGxjb3VudGVyLCB1dHlw
ZSk7CiAJCQkJcGFyLnBhcmFtcygpLmxhYmVsU3RyaW5nKHBhci5leHBhbmRMYWJlbChsYXlvdXQs
IGJwKSk7CmRpZmYgLS1naXQgYS9zcmMvQ291bnRlcnMuY3BwIGIvc3JjL0NvdW50ZXJzLmNwcApp
bmRleCBhOTMyNzQ1NThhLi4xMmU2ODY3MTg3IDEwMDY0NAotLS0gYS9zcmMvQ291bnRlcnMuY3Bw
CisrKyBiL3NyYy9Db3VudGVycy5jcHAKQEAgLTI1MCw3ICsyNTAsOCBAQCBDb3VudGVyOjpTdHJp
bmdNYXAgJiBDb3VudGVyOjpmbGF0TGFiZWxTdHJpbmdzKGJvb2wgaW5fYXBwZW5kaXgpIGNvbnN0
CiB9CiAKIAotQ291bnRlcnM6OkNvdW50ZXJzKCkgOiBhcHBlbmRpeF8oZmFsc2UpLCBzdWJmbG9h
dF8oZmFsc2UpLCBsb25ndGFibGVfKGZhbHNlKQorQ291bnRlcnM6OkNvdW50ZXJzKCkgOiBhcHBl
bmRpeF8oZmFsc2UpLCBtYWluX21hdHRlcl8odHJ1ZSksIHN1YmZsb2F0XyhmYWxzZSksCisJbG9u
Z3RhYmxlXyhmYWxzZSkKIHsKIAlsYXlvdXRfc3RhY2tfLnB1c2hfYmFjayhudWxscHRyKTsKIAlj
b3VudGVyX3N0YWNrXy5wdXNoX2JhY2soZnJvbV9hc2NpaSgiIikpOwpAQCAtNDQ0LDYgKzQ0NSw3
IEBAIGRvY3N0cmluZyBjb25zdCAmIENvdW50ZXJzOjpsYXRleE5hbWUoZG9jc3RyaW5nIGNvbnN0
ICYgY250cikgY29uc3QKIHZvaWQgQ291bnRlcnM6OnJlc2V0KCkKIHsKIAlhcHBlbmRpeF8gPSBm
YWxzZTsKKwltYWluX21hdHRlcl8gPSB0cnVlOwogCXN1YmZsb2F0XyA9IGZhbHNlOwogCWN1cnJl
bnRfZmxvYXRfLmVyYXNlKCk7CiAJZm9yIChhdXRvICYgY3RyIDogY291bnRlckxpc3RfKQpkaWZm
IC0tZ2l0IGEvc3JjL0NvdW50ZXJzLmggYi9zcmMvQ291bnRlcnMuaAppbmRleCBkNTIyYTdiNzU3
Li5lMTI2NWI4Y2NiIDEwMDY0NAotLS0gYS9zcmMvQ291bnRlcnMuaAorKysgYi9zcmMvQ291bnRl
cnMuaApAQCAtMTYsNiArMTYsNyBAQAogI2RlZmluZSBDT1VOVEVSU19ICiAKICNpbmNsdWRlICJP
dXRwdXRFbnVtcy5oIgorI2luY2x1ZGUgIkxheW91dEVudW1zLmgiCiAKICNpbmNsdWRlICJzdXBw
b3J0L2RvY3N0cmluZy5oIgogCkBAIC0xNDksNiArMTUwLDggQEAgcHVibGljOgogCS8vLyBccmV0
dXJuIHRydWUgb24gc3VjY2VzcwogCWJvb2wgcmVhZChzdXBwb3J0OjpMZXhlciAmIGxleCwgZG9j
c3RyaW5nIGNvbnN0ICYgbmFtZSwgYm9vbCBtYWtlbmV3KTsKIAkvLy8KKwl2b2lkIHNldEVuYWJs
ZWQoZG9jc3RyaW5nIGNvbnN0ICYgY3RyLCBib29sIGNvbnN0IGVuYWJsZWQpOworCS8vLwogCXZv
aWQgc2V0KGRvY3N0cmluZyBjb25zdCAmIGN0ciwgaW50IHZhbCk7CiAJLy8vCiAJdm9pZCBhZGR0
byhkb2NzdHJpbmcgY29uc3QgJiBjdHIsIGludCB2YWwpOwpAQCAtMjEwLDYgKzIxMywxMCBAQCBw
dWJsaWM6CiAJYm9vbCBhcHBlbmRpeCgpIGNvbnN0IHsgcmV0dXJuIGFwcGVuZGl4XzsgfQogCS8v
LyBTZXQgdGhlIHN0YXRlIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciB3ZSBhcmUgaW4gYXBw
ZW5kaXguCiAJdm9pZCBhcHBlbmRpeChib29sIGEpIHsgYXBwZW5kaXhfID0gYTsgfQorCS8vLyBB
cmUgd2UgaW4gbWFpbiBtYXR0ZXI/CisJYm9vbCBtYWluTWF0dGVyKCkgY29uc3QgeyByZXR1cm4g
bWFpbl9tYXR0ZXJfOyB9CisJLy8vIFNldCB0aGUgc3RhdGUgdmFyaWFibGUgaW5kaWNhdGluZyB3
aGV0aGVyIHdoaWNoIG1hdHRlciB3ZSBhcmUgaW4uCisJdm9pZCBtYWluTWF0dGVyKGJvb2wgbSkg
eyBtYWluX21hdHRlcl8gPSBtOyB9CiAJLy8vIFJldHVybnMgdGhlIGN1cnJlbnQgZW5jbG9zaW5n
IGZsb2F0LgogCXN0ZDo6c3RyaW5nIGNvbnN0ICYgY3VycmVudF9mbG9hdCgpIGNvbnN0IHsgcmV0
dXJuIGN1cnJlbnRfZmxvYXRfOyB9CiAJLy8vIFNldHMgdGhlIGN1cnJlbnQgZW5jbG9zaW5nIGZs
b2F0LgpAQCAtMjc1LDYgKzI4Miw4IEBAIHByaXZhdGU6CiAJQ291bnRlckxpc3QgY291bnRlckxp
c3RfOwogCS8vLyBBcmUgd2UgaW4gYW4gYXBwZW5kaXg/CiAJYm9vbCBhcHBlbmRpeF87CisJLy8v
IEFyZSB3ZSBpbiB0aGUgbWFpbiBtYXR0ZXI/CisJYm9vbCBtYWluX21hdHRlcl87CiAJLy8vIFRo
ZSBjdXJyZW50IGVuY2xvc2luZyBmbG9hdC4KIAlzdGQ6OnN0cmluZyBjdXJyZW50X2Zsb2F0XzsK
IAkvLy8gQXJlIHdlIGluIGEgc3ViZmxvYXQ/CmRpZmYgLS1naXQgYS9zcmMvRnVuY0NvZGUuaCBi
L3NyYy9GdW5jQ29kZS5oCmluZGV4IDRmNzg1OTZiOWMuLmQ4YWQ2OWU2N2IgMTAwNjQ0Ci0tLSBh
L3NyYy9GdW5jQ29kZS5oCisrKyBiL3NyYy9GdW5jQ29kZS5oCkBAIC01MTYsNiArNTE2LDcgQEAg
ZW51bSBGdW5jQ29kZQogCUxGVU5fRVJST1JfTkVYVCwgICAgICAgICAgICAgICAgLy8gc3BpdHog
MjAyMDAxMDEsCiAJLy8vIDQwNQogCUxGVU5fQlVGRkVSX1VQREFURV9FWFRFUk5BTCwgICAgLy8g
c3BpdHogMjAyNTA0MDYsCisJTEZVTl9NQVRURVIsICAgICAgICAgICAgICAgICAgICAvLyBzcGl0
ei9kYW5pZWwsIDIwMjYwODA1CiAJTEZVTl9MQVNUQUNUSU9OICAgICAgICAgICAgICAgICAvLyBl
bmQgb2YgdGhlIHRhYmxlCiB9OwogCmRpZmYgLS1naXQgYS9zcmMvTGF5b3V0RW51bXMuaCBiL3Ny
Yy9MYXlvdXRFbnVtcy5oCmluZGV4IDQ4ZTg0OWYxYTQuLjMyMTUzMTE4MDYgMTAwNjQ0Ci0tLSBh
L3NyYy9MYXlvdXRFbnVtcy5oCisrKyBiL3NyYy9MYXlvdXRFbnVtcy5oCkBAIC0xNTgsNiArMTU4
LDE4IEBAIGVudW0gQXJnUGFzc1RocnUgewogCVBUX1RSVUUKIH07CiAKKy8vLworZW51bSBNYXR0
ZXIgeworCS8vLworCU1BVFRFUl9OT05FLAorCS8vLworCU1BVFRFUl9GUk9OVCwKKwkvLy8KKwlN
QVRURVJfTUFJTiwKKwkvLy8KKwlNQVRURVJfQkFDSworfTsKKwogfSAvLyBuYW1lc3BhY2UgbHl4
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL0x5WEFjdGlvbi5jcHAgYi9zcmMvTHlYQWN0aW9u
LmNwcAppbmRleCBiZDljOWRmMDU0Li5mN2UxNzRlMWJmIDEwMDY0NAotLS0gYS9zcmMvTHlYQWN0
aW9uLmNwcAorKysgYi9zcmMvTHlYQWN0aW9uLmNwcApAQCAtMjk4LDYgKzI5OCwxNiBAQCB2b2lk
IEx5WEFjdGlvbjo6aW5pdCgpCiAgKi8KIAkJeyBMRlVOX0FQUEVORElYLCAiYXBwZW5kaXgiLCBO
b29wLCBFZGl0IH0sCiAKKy8qIQorICogXHZhciBseXg6OkZ1bmNDb2RlIGx5eDo6TEZVTl9NQVRU
RVIKKyAqIFxsaSBBY3Rpb246IFN0YXJ0IChvciB1bnN0YXJ0KSBtYXR0ZXIgb24gdGhlIGdpdmVu
IGN1cnNvciBwb3NpdGlvbi4KKyAqIFxsaSBTeW50YXg6IG1hdHRlciA8dHlwZT4KKyAqIFxsaSBQ
YXJhbXM6IDx0eXBlPjogZnJvbnQsIG1haW4sIGJhY2suCisgKiBcbGkgT3JpZ2luOiBkYW5pZWwv
c3BpdHosIDMgQXVnIDIwMjYKKyAqIFxlbmR2YXIKKyAqLworCQl7IExGVU5fTUFUVEVSLCAibWF0
dGVyIiwgTm9vcCwgRWRpdCB9LAorCiAKIC8qIQogICogXHZhciBseXg6OkZ1bmNDb2RlIGx5eDo6
TEZVTl9BUkdVTUVOVF9JTlNFUlQKZGlmZiAtLWdpdCBhL3NyYy9QYXJhZ3JhcGhQYXJhbWV0ZXJz
LmNwcCBiL3NyYy9QYXJhZ3JhcGhQYXJhbWV0ZXJzLmNwcAppbmRleCAzMmRjNDQ5MDBiLi5lYzUw
ZmFhZmRmIDEwMDY0NAotLS0gYS9zcmMvUGFyYWdyYXBoUGFyYW1ldGVycy5jcHAKKysrIGIvc3Jj
L1BhcmFncmFwaFBhcmFtZXRlcnMuY3BwCkBAIC00MSw2ICs0MSw3IEBAIHN0YXRpYyBjaGFyIGNv
bnN0ICogY29uc3Qgc3RyaW5nX2FsaWduW10gPSB7CiBQYXJhZ3JhcGhQYXJhbWV0ZXJzOjpQYXJh
Z3JhcGhQYXJhbWV0ZXJzKCkKIAk6IG5vaW5kZW50XyhmYWxzZSksCiAJCXN0YXJ0X29mX2FwcGVu
ZGl4XyhmYWxzZSksIGFwcGVuZGl4XyhmYWxzZSksCisJCXN0YXJ0X29mX21hdHRlcl8oTUFUVEVS
X05PTkUpLCBtYWluX21hdHRlcl8odHJ1ZSksCiAJICBhbGlnbl8oTFlYX0FMSUdOX0xBWU9VVCks
IGRlcHRoXygwKQoge30KIApAQCAtMTMyLDYgKzEzMywzMCBAQCB2b2lkIFBhcmFncmFwaFBhcmFt
ZXRlcnM6OmFwcGVuZGl4KGJvb2wgYSkKIH0KIAogCitNYXR0ZXIgUGFyYWdyYXBoUGFyYW1ldGVy
czo6c3RhcnRPZk1hdHRlcigpIGNvbnN0Cit7CisJcmV0dXJuIHN0YXJ0X29mX21hdHRlcl87Cit9
CisKKwordm9pZCBQYXJhZ3JhcGhQYXJhbWV0ZXJzOjpzdGFydE9mTWF0dGVyKE1hdHRlciBzb20p
Cit7CisJc3RhcnRfb2ZfbWF0dGVyXyA9IHNvbTsKK30KKworCitib29sIFBhcmFncmFwaFBhcmFt
ZXRlcnM6Om1haW5NYXR0ZXIoKSBjb25zdAoreworCXJldHVybiBtYWluX21hdHRlcl87Cit9CisK
Kwordm9pZCBQYXJhZ3JhcGhQYXJhbWV0ZXJzOjptYWluTWF0dGVyKGJvb2wgbSkKK3sKKwltYWlu
X21hdHRlcl8gPSBtOworfQorCisKIGRvY3N0cmluZyBjb25zdCAmIFBhcmFncmFwaFBhcmFtZXRl
cnM6OmxhYmVsU3RyaW5nKCkgY29uc3QKIHsKIAlyZXR1cm4gbGFiZWxzdHJpbmdfOwpAQCAtMjA3
LDYgKzIzMiwxNSBAQCB2b2lkIFBhcmFncmFwaFBhcmFtZXRlcnM6OnJlYWQoTGV4ZXIgJiBsZXgs
IGJvb2wgbWVyZ2UpCiAJCQlsZWZ0SW5kZW50KHZhbHVlKTsKIAkJfSBlbHNlIGlmICh0b2tlbiA9
PSAiXFxzdGFydF9vZl9hcHBlbmRpeCIpIHsKIAkJCXN0YXJ0T2ZBcHBlbmRpeCh0cnVlKTsKKwkJ
fSBlbHNlIGlmICh0b2tlbiA9PSAiXFxzdGFydF9vZl9tYXR0ZXIiKSB7CisJCQlsZXgubmV4dCgp
OworCQkJc3RyaW5nIGNvbnN0IHRtcCA9IHJ0cmltKGxleC5nZXRTdHJpbmcoKSk7CisJCQlpZiAo
dG1wID09ICJmcm9udCIpCisJCQkJc3RhcnRPZk1hdHRlcihNQVRURVJfRlJPTlQpOworCQkJZWxz
ZSBpZiAodG1wID09ICJtYWluIikKKwkJCQlzdGFydE9mTWF0dGVyKE1BVFRFUl9NQUlOKTsKKwkJ
CWVsc2UgaWYgKHRtcCA9PSAiYmFjayIpCisJCQkJc3RhcnRPZk1hdHRlcihNQVRURVJfQkFDSyk7
CiAJCX0gZWxzZSBpZiAodG9rZW4gPT0gIlxccGFyYWdyYXBoX3NwYWNpbmciKSB7CiAJCQlsZXgu
bmV4dCgpOwogCQkJc3RyaW5nIGNvbnN0IHRtcCA9IHJ0cmltKGxleC5nZXRTdHJpbmcoKSk7CkBA
IC0yNjksNiArMzAzLDE4IEBAIHZvaWQgUGFyYWdyYXBoUGFyYW1ldGVyczo6d3JpdGUob3N0cmVh
bSAmIG9zKSBjb25zdAogCWlmIChzdGFydE9mQXBwZW5kaXgoKSkKIAkJb3MgPDwgIlxcc3RhcnRf
b2ZfYXBwZW5kaXhcbiI7CiAKKwkvLyBTdGFydCBvZiBmcm9udCBtYXR0ZXI/CisJaWYgKHN0YXJ0
T2ZNYXR0ZXIoKSAhPSBNQVRURVJfTk9ORSkgeworCQlzdHJpbmcgdG1wOworCQlpZiAoc3RhcnRP
Zk1hdHRlcigpID09IE1BVFRFUl9GUk9OVCkKKwkJCXRtcCA9ICJmcm9udCI7CisJCWVsc2UgaWYg
KHN0YXJ0T2ZNYXR0ZXIoKSA9PSBNQVRURVJfTUFJTikKKwkJCXRtcCA9ICJtYWluIjsKKwkJZWxz
ZSBpZiAoc3RhcnRPZk1hdHRlcigpID09IE1BVFRFUl9CQUNLKQorCQkJdG1wID0gImJhY2siOwor
CQlvcyA8PCAiXFxzdGFydF9vZl9tYXR0ZXIgIiA8PCB0bXAgPDwgIlxuIjsKKwl9CisKIAkvLyBO
b2luZGVudD8KIAlpZiAobm9pbmRlbnQoKSkKIAkJb3MgPDwgIlxcbm9pbmRlbnRcbiI7CmRpZmYg
LS1naXQgYS9zcmMvUGFyYWdyYXBoUGFyYW1ldGVycy5oIGIvc3JjL1BhcmFncmFwaFBhcmFtZXRl
cnMuaAppbmRleCA1NDBlYTk1Njc5Li45ZmY0MmIwY2YyIDEwMDY0NAotLS0gYS9zcmMvUGFyYWdy
YXBoUGFyYW1ldGVycy5oCisrKyBiL3NyYy9QYXJhZ3JhcGhQYXJhbWV0ZXJzLmgKQEAgLTYzLDYg
KzYzLDE0IEBAIHB1YmxpYzoKIAkvLy8KIAl2b2lkIGFwcGVuZGl4KGJvb2wpOwogCS8vLworCU1h
dHRlciBzdGFydE9mTWF0dGVyKCkgY29uc3Q7CisJLy8vCisJdm9pZCBzdGFydE9mTWF0dGVyKE1h
dHRlcik7CisJLy8vCisJYm9vbCBtYWluTWF0dGVyKCkgY29uc3Q7CisJLy8vCisJdm9pZCBtYWlu
TWF0dGVyKGJvb2wpOworCS8vLwogCWRvY3N0cmluZyBjb25zdCAmIGxhYmVsU3RyaW5nKCkgY29u
c3Q7CiAJLy8vCiAJdm9pZCBsYWJlbFN0cmluZyhkb2NzdHJpbmcgY29uc3QgJik7CkBAIC0xMDIs
NiArMTEwLDEwIEBAIHByaXZhdGU6CiAJLy8vCiAJYm9vbCBhcHBlbmRpeF87CiAJLy8vCisJTWF0
dGVyIHN0YXJ0X29mX21hdHRlcl87CisJLy8vCisJYm9vbCBtYWluX21hdHRlcl87CisJLy8vCiAJ
THlYQWxpZ25tZW50IGFsaWduXzsKIAkvLy8KIAlkZXB0aF90eXBlIGRlcHRoXzsKZGlmZiAtLWdp
dCBhL3NyYy9Sb3dQYWludGVyLmNwcCBiL3NyYy9Sb3dQYWludGVyLmNwcAppbmRleCA2ZDJkZDVl
YzY1Li44YTZhNWE2ODAwIDEwMDY0NAotLS0gYS9zcmMvUm93UGFpbnRlci5jcHAKKysrIGIvc3Jj
L1Jvd1BhaW50ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUGFyYWdyYXBoTGlz
dC5oIgogI2luY2x1ZGUgIlBhcmFncmFwaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CisjaW5jbHVkZSAiVGV4dENsYXNzLmgiCiAjaW5jbHVkZSAiVGV4dE1ldHJpY3MuaCIKIAogI2lu
Y2x1ZGUgImZyb250ZW5kcy9Gb250TWV0cmljcy5oIgpAQCAtMzI0LDEyICszMjUsMTQgQEAgdm9p
ZCBSb3dQYWludGVyOjpwYWludENoYW5nZUJhcigpIGNvbnN0CiB2b2lkIFJvd1BhaW50ZXI6OnBh
aW50QXBwZW5kaXgoKSBjb25zdAogewogCS8vIG9ubHkgZHJhdyB0aGUgYXBwZW5kaXggZnJhbWUg
b25jZSAoZm9yIHRoZSBtYWluIHRleHQpCi0JaWYgKCFwYXJfLnBhcmFtcygpLmFwcGVuZGl4KCkg
fHwgIXRleHRfLmlzTWFpblRleHQoKSkKKwlpZiAoKCFwYXJfLnBhcmFtcygpLmFwcGVuZGl4KCkg
JiYgcGFyXy5wYXJhbXMoKS5tYWluTWF0dGVyKCkpCisJICAgIHx8ICF0ZXh0Xy5pc01haW5UZXh0
KCkpCiAJCXJldHVybjsKIAogCWludCB5ID0geW9fIC0gcm93Xy5hc2NlbnQoKTsKIAotCWlmIChw
YXJfLnBhcmFtcygpLnN0YXJ0T2ZBcHBlbmRpeCgpKQorCWlmIChwYXJfLnBhcmFtcygpLnN0YXJ0
T2ZBcHBlbmRpeCgpCisJICAgIHx8IHBhcl8ucGFyYW1zKCkuc3RhcnRPZk1hdHRlcigpICE9IE1B
VFRFUl9OT05FKQogCQl5ICs9IDIgKiBkZWZhdWx0Um93SGVpZ2h0KCk7CiAKIAlwaV8ucGFpbi5s
aW5lKDEsIHksIDEsIHlvXyArIHJvd18uZGVzY2VudCgpLCBDb2xvcl9hcHBlbmRpeCk7CkBAIC0z
ODEsNyArMzg0LDcgQEAgdm9pZCBSb3dQYWludGVyOjpwYWludERlcHRoQmFyKCkgY29uc3QKIH0K
IAogCi12b2lkIFJvd1BhaW50ZXI6OnBhaW50QXBwZW5kaXhTdGFydChpbnQgeSkgY29uc3QKK3Zv
aWQgUm93UGFpbnRlcjo6cGFpbnRNYXR0ZXJTdGFydChpbnQgeSwgZG9jc3RyaW5nIGNvbnN0ICYg
bGFiZWwpIGNvbnN0CiB7CiAJRm9udEluZm8gcGJfZm9udCA9IHNhbmVfZm9udDsKIAlwYl9mb250
LnNldENvbG9yKENvbG9yX2FwcGVuZGl4KTsKQEAgLTM5MSw3ICszOTQsNiBAQCB2b2lkIFJvd1Bh
aW50ZXI6OnBhaW50QXBwZW5kaXhTdGFydChpbnQgeSkgY29uc3QKIAlpbnQgYSA9IDA7CiAJaW50
IGQgPSAwOwogCi0JZG9jc3RyaW5nIGNvbnN0IGxhYmVsID0gXygiQXBwZW5kaXgiKTsKIAl0aGVG
b250TWV0cmljcyhwYl9mb250KS5yZWN0VGV4dChsYWJlbCwgdywgYSwgZCk7CiAKIAlpbnQgY29u
c3QgdGV4dF9zdGFydCA9IGludCh4b18gKyAodG1fLndpZHRoKCkgLSB3KSAvIDIpOwpAQCAtNDIz
LDIxICs0MjUsNDYgQEAgdm9pZCBSb3dQYWludGVyOjpwYWludFRvb0xhcmdlTWFya3MoYm9vbCBj
b25zdCBsZWZ0LCBib29sIGNvbnN0IHJpZ2h0KSBjb25zdAogCiB2b2lkIFJvd1BhaW50ZXI6OnBh
aW50Rmlyc3QoKSBjb25zdAogeworCUxheW91dCBjb25zdCAmIFRPQ0xheW91dCA9IHBpXy5iYXNl
LmJ2LT5idWZmZXIoKS5wYXJhbXMoKS5kb2N1bWVudENsYXNzKCkuZ2V0VE9DTGF5b3V0KCk7CiAJ
TGF5b3V0IGNvbnN0ICYgbGF5b3V0ID0gcGFyXy5sYXlvdXQoKTsKIAorCWRvY3N0cmluZyBsYWJl
bDsKIAkvLyBzdGFydCBvZiBhcHBlbmRpeD8KIAlpZiAocGFyXy5wYXJhbXMoKS5zdGFydE9mQXBw
ZW5kaXgoKSkKLQkgICAgcGFpbnRBcHBlbmRpeFN0YXJ0KHlvXyAtIHJvd18uYXNjZW50KCkgKyAy
ICogZGVmYXVsdFJvd0hlaWdodCgpKTsKKwkJbGFiZWwgPSBfKCJBcHBlbmRpeCIpOworCS8vIHN0
YXJ0IG9mIG1hdHRlcj8KKwlpZiAocGFyXy5wYXJhbXMoKS5zdGFydE9mTWF0dGVyKCkgIT0gTUFU
VEVSX05PTkUpIHsKKwkJaWYgKCFsYWJlbC5lbXB0eSgpKQorCQkJbGFiZWwgKz0gIiAmICI7CisJ
CXN3aXRjaCAocGFyXy5wYXJhbXMoKS5zdGFydE9mTWF0dGVyKCkpIHsKKwkJCWNhc2UgTUFUVEVS
X0ZST05UOgorCQkJCWxhYmVsICs9IF8oIkZyb250IE1hdHRlciIpOworCQkJCWJyZWFrOworCQkJ
Y2FzZSBNQVRURVJfTUFJTjoKKwkJCQlsYWJlbCArPSBfKCJNYWluIE1hdHRlciIpOworCQkJCWJy
ZWFrOworCQkJY2FzZSBNQVRURVJfQkFDSzoKKwkJCQlsYWJlbCArPSBfKCJCYWNrIE1hdHRlciIp
OworCQkJCWJyZWFrOworCQl9CisJCS8vIE1hdHRlcnMgYXJlIHN1cHBvcnRlZCBvbmx5IGJ5IGJv
b2sgKHNlY3Rpb25pbmcgdG9wbGV2ZWwgMCkKKwkJaWYgKFRPQ0xheW91dC50b2NsZXZlbCAhPSAw
KQorCQkJbGFiZWwgKz0gXygiIChTZW5zZWxlc3MhISEpIik7CisJfQorCWlmICghbGFiZWwuZW1w
dHkoKSkKKwkJcGFpbnRNYXR0ZXJTdGFydCh5b18gLSByb3dfLmFzY2VudCgpICsgMiAqIGRlZmF1
bHRSb3dIZWlnaHQoKSwgbGFiZWwpOwogCiAJYm9vbCBjb25zdCBpc19maXJzdCA9CiAJCXRleHRf
LmlzRmlyc3RJblNlcXVlbmNlKHJvd18ucGl0KCkpIHx8ICFsYXlvdXQuaXNQYXJhZ3JhcGhHcm91
cCgpOwogCS8vbHl4ZXJyIDw8ICJwYWludEZpcnN0OiAiIDw8IHBhcl8uaWQoKSA8PCAiIGlzX3Nl
cTogIiA8PCBpc19zZXEgPDwgZW5kbDsKIAotCWlmIChsYXlvdXQubGFiZWxJc0lubGluZSgpCi0J
ICAgICYmIChsYXlvdXQubGFiZWx0eXBlICE9IExBQkVMX1NUQVRJQyB8fCBpc19maXJzdCkpCi0J
CXBhaW50TGFiZWwoKTsKLQllbHNlIGlmIChpc19maXJzdCAmJiBsYXlvdXQubGFiZWxJc0Fib3Zl
KCkpCi0JCXBhaW50VG9wTGV2ZWxMYWJlbCgpOworCWlmIChwYXJfLmxheW91dCgpLnRvY2xldmVs
ICE9IDAgfHwgcGFyXy5wYXJhbXMoKS5tYWluTWF0dGVyKCkpIHsKKwkJaWYgKGxheW91dC5sYWJl
bElzSW5saW5lKCkKKwkJCSYmIChsYXlvdXQubGFiZWx0eXBlICE9IExBQkVMX1NUQVRJQyB8fCBp
c19maXJzdCkpCisJCQlwYWludExhYmVsKCk7CisJCWVsc2UgaWYgKGlzX2ZpcnN0ICYmIGxheW91
dC5sYWJlbElzQWJvdmUoKSkKKwkJCXBhaW50VG9wTGV2ZWxMYWJlbCgpOworCX0KIH0KIAogCmRp
ZmYgLS1naXQgYS9zcmMvUm93UGFpbnRlci5oIGIvc3JjL1Jvd1BhaW50ZXIuaAppbmRleCA5MThm
YzlmOTg5Li5jZTc3NTU0YWM1IDEwMDY0NAotLS0gYS9zcmMvUm93UGFpbnRlci5oCisrKyBiL3Ny
Yy9Sb3dQYWludGVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAl2b2lkIHBhaW50VGV4
dERlY29yYXRpb24oUm93OjpFbGVtZW50IGNvbnN0ICYgZSkgY29uc3Q7CiAJdm9pZCBwYWludE1p
c3NwZWxsZWRNYXJrKFJvdzo6RWxlbWVudCBjb25zdCAmIGUpIGNvbnN0OwogCXZvaWQgcGFpbnRD
aGFuZ2UoUm93OjpFbGVtZW50IGNvbnN0ICYgZSkgY29uc3Q7Ci0Jdm9pZCBwYWludEFwcGVuZGl4
U3RhcnQoaW50IHkpIGNvbnN0OworCXZvaWQgcGFpbnRNYXR0ZXJTdGFydChpbnQgeSwgZG9jc3Ry
aW5nIGNvbnN0ICYgbGFiZWwpIGNvbnN0OwogCXZvaWQgcGFpbnRJbnNldChSb3c6OkVsZW1lbnQg
Y29uc3QgJiBlKSBjb25zdDsKIAogCS8vLyByZXR1cm4gdGhlIGxhYmVsIGZvbnQgZm9yIHRoaXMg
cm93IChlbmQgbGFiZWwgd2hlbiBcYyBlbmQgaXMgdHJ1ZSkKZGlmZiAtLWdpdCBhL3NyYy9UZXh0
LmNwcCBiL3NyYy9UZXh0LmNwcAppbmRleCAyMmUxYzJjODdiLi4wYThiZTgzNGZlIDEwMDY0NAot
LS0gYS9zcmMvVGV4dC5jcHAKKysrIGIvc3JjL1RleHQuY3BwCkBAIC03OTgsOSArNzk4LDExIEBA
IHN0YXRpYyB2b2lkIGJyZWFrUGFyYWdyYXBoKFRleHQgJiB0ZXh0LCBwaXRfdHlwZSBwYXJfb2Zm
c2V0LCBwb3NfdHlwZSBwb3MsCiAKIAlpZiAoIWlzZW1wdHkpIHsKIAkJYm9vbCBjb25zdCBzb2Eg
PSBwYXIucGFyYW1zKCkuc3RhcnRPZkFwcGVuZGl4KCk7CisJCU1hdHRlciBjb25zdCBzb20gPSBw
YXIucGFyYW1zKCkuc3RhcnRPZk1hdHRlcigpOwogCQlwYXIucGFyYW1zKCkuY2xlYXIoKTsKIAkJ
Ly8gZG8gbm90IGxvc2Ugc3RhcnQgb2YgYXBwZW5kaXggbWFya2VyIChidWcgNDIxMikKIAkJcGFy
LnBhcmFtcygpLnN0YXJ0T2ZBcHBlbmRpeChzb2EpOworCQlwYXIucGFyYW1zKCkuc3RhcnRPZk1h
dHRlcihzb20pOwogCQlwYXIuc2V0UGxhaW5PckRlZmF1bHRMYXlvdXQoYnBhcmFtcy5kb2N1bWVu
dENsYXNzKCkpOwogCX0KIApAQCAtMzI5NCwxMCArMzI5NiwxMyBAQCBib29sIFRleHQ6OmRlbGV0
ZUVtcHR5UGFyYWdyYXBoTWVjaGFuaXNtKEN1cnNvciAmIGN1ciwKIAkgICAgICAgICAgICAgICBt
aW4ob2xkLnBpdCgpICsgMSwgb2xkLmxhc3RwaXQoKSkpOwogCVBhcmFncmFwaExpc3QgJiBwbGlz
dCA9IG9sZC50ZXh0KCktPnBhcmFncmFwaHMoKTsKIAlib29sIGNvbnN0IHNvYSA9IG9sZHBhci5w
YXJhbXMoKS5zdGFydE9mQXBwZW5kaXgoKTsKKwlNYXR0ZXIgY29uc3Qgc29tID0gb2xkcGFyLnBh
cmFtcygpLnN0YXJ0T2ZNYXR0ZXIoKTsKIAlwbGlzdC5lcmFzZShwbGlzdC5pdGVyYXRvcl9hdChv
bGQucGl0KCkpKTsKIAkvLyBkbyBub3QgbG9zZSBzdGFydCBvZiBhcHBlbmRpeCBtYXJrZXIgKGJ1
ZyA0MjEyKQogCWlmIChzb2EgJiYgb2xkLnBpdCgpIDwgcGl0X3R5cGUocGxpc3Quc2l6ZSgpKSkK
IAkJcGxpc3Rbb2xkLnBpdCgpXS5wYXJhbXMoKS5zdGFydE9mQXBwZW5kaXgodHJ1ZSk7CisJaWYg
KHNvbSAhPSBNQVRURVJfTk9ORSAmJiBvbGQucGl0KCkgPCBwaXRfdHlwZShwbGlzdC5zaXplKCkp
KQorCQlwbGlzdFtvbGQucGl0KCldLnBhcmFtcygpLnN0YXJ0T2ZNYXR0ZXIoc29tKTsKIAogCS8v
IHNlZSAjd2FybmluZyAoRklYTUU/KSBhYm92ZQogCWlmIChjdXIuZGVwdGgoKSA+PSBvbGQuZGVw
dGgoKSkgewpAQCAtNDEzNSw2ICs0MTQwLDI3IEBAIHZvaWQgVGV4dDo6ZGlzcGF0Y2goQ3Vyc29y
ICYgY3VyLCBGdW5jUmVxdWVzdCAmIGNtZCkKIAkJYnJlYWs7CiAJfQogCisJY2FzZSBMRlVOX01B
VFRFUjogeworCQlQYXJhZ3JhcGggJiBwYXIgPSBjdXIucGFyYWdyYXBoKCk7CisJCWRvY3N0cmlu
ZyBjb25zdCAmIGFyZyA9IGNtZC5hcmd1bWVudCgpOworCQlNYXR0ZXIgc3RhcnQgPSBNQVRURVJf
Tk9ORTsKKwkJaWYgKGFyZyA9PSAiZnJvbnQiKSB7CisJCQlzdGFydCA9IHBhci5wYXJhbXMoKS5z
dGFydE9mTWF0dGVyKCkgPT0gTUFUVEVSX0ZST05UCisJCQkJCQkgICA/IE1BVFRFUl9OT05FIDog
TUFUVEVSX0ZST05UOworCQl9IGVsc2UgaWYgKGFyZyA9PSAibWFpbiIpIHsKKwkJCXN0YXJ0ID0g
cGFyLnBhcmFtcygpLnN0YXJ0T2ZNYXR0ZXIoKSA9PSBNQVRURVJfTUFJTgorCQkJCQkJICAgPyBN
QVRURVJfTk9ORSA6IE1BVFRFUl9NQUlOOworCQl9IGVsc2UgaWYgKGFyZyA9PSAiYmFjayIpIHsK
KwkJCXN0YXJ0ID0gcGFyLnBhcmFtcygpLnN0YXJ0T2ZNYXR0ZXIoKSA9PSBNQVRURVJfQkFDSwor
CQkJCQkJICAgPyBNQVRURVJfTk9ORSA6IE1BVFRFUl9CQUNLOworCQl9CisJCWN1ci5yZWNvcmRV
bmRvKCk7CisJCXBhci5wYXJhbXMoKS5zdGFydE9mTWF0dGVyKHN0YXJ0KTsKKwkJLy8gd2UgY2Fu
IHNldCB0aGUgcmVmcmVzaGluZyBwYXJhbWV0ZXJzIG5vdworCQljdXIuZm9yY2VCdWZmZXJVcGRh
dGUoKTsKKwkJYnJlYWs7CisJfQorCiAJY2FzZSBMRlVOX1dPUkRfREVMRVRFX0ZPUldBUkQ6CiAJ
CWlmIChjdXIuc2VsZWN0aW9uKCkpCiAJCQljdXRTZWxlY3Rpb24oY3VyLCBmYWxzZSk7CkBAIC02
Mzk2LDYgKzY0MjIsMjQgQEAgYm9vbCBUZXh0OjpnZXRTdGF0dXMoQ3Vyc29yICYgY3VyLCBGdW5j
UmVxdWVzdCBjb25zdCAmIGNtZCwKIAkJc3RhdHVzLnNldE9uT2ZmKGN1ci5wYXJhZ3JhcGgoKS5w
YXJhbXMoKS5zdGFydE9mQXBwZW5kaXgoKSk7CiAJCWJyZWFrOwogCisJY2FzZSBMRlVOX01BVFRF
UjoKKwkJaWYgKCFjdXIuYnVmZmVyKCktPnBhcmFtcygpLmRvY3VtZW50Q2xhc3MoKS5oYXNNYXR0
ZXJzKCkpIHsKKwkJCWVuYWJsZSA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKwkJLy8gRklYTUUg
V2UgcmVhbGx5IHNob3VsZCBub3QgYWxsb3cgdGhpcyB0byBiZSBwdXQsIGUuZy4sCisJCS8vIGlu
IGEgZm9vdG5vdGUsIG9yIGluIEVSVC4gQnV0IGl0IHdvdWxkIG1ha2Ugc2Vuc2UgaW4gYQorCQkv
LyBicmFuY2gsIHNvIEknbSBub3Qgc3VyZSB3aGF0IHRvIGRvLgorCQlpZiAoY21kLmFyZ3VtZW50
KCkgPT0gImZyb250IikKKwkJCXN0YXR1cy5zZXRPbk9mZihjdXIucGFyYWdyYXBoKCkucGFyYW1z
KCkuc3RhcnRPZk1hdHRlcigpID09IE1BVFRFUl9GUk9OVCk7CisJCWVsc2UgaWYgKGNtZC5hcmd1
bWVudCgpID09ICJtYWluIikKKwkJCXN0YXR1cy5zZXRPbk9mZihjdXIucGFyYWdyYXBoKCkucGFy
YW1zKCkuc3RhcnRPZk1hdHRlcigpID09IE1BVFRFUl9NQUlOKTsKKwkJZWxzZSBpZiAoY21kLmFy
Z3VtZW50KCkgPT0gImJhY2siKQorCQkJc3RhdHVzLnNldE9uT2ZmKGN1ci5wYXJhZ3JhcGgoKS5w
YXJhbXMoKS5zdGFydE9mTWF0dGVyKCkgPT0gTUFUVEVSX0JBQ0spOworCQllbHNlCisJCQllbmFi
bGUgPSBmYWxzZTsKKwkJYnJlYWs7CisKIAljYXNlIExGVU5fRElBTE9HX1NIT1dfTkVXX0lOU0VU
OgogCQlpZiAoY21kLmFyZ3VtZW50KCkgPT0gImJpYml0ZW0iKQogCQkJY29kZSA9IEJJQklURU1f
Q09ERTsKZGlmZiAtLWdpdCBhL3NyYy9UZXh0Q2xhc3MuY3BwIGIvc3JjL1RleHRDbGFzcy5jcHAK
aW5kZXggZDkwODQ3M2FmZi4uYzA0Nzc1MzNlMyAxMDA2NDQKLS0tIGEvc3JjL1RleHRDbGFzcy5j
cHAKKysrIGIvc3JjL1RleHRDbGFzcy5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgbmFtZXNwYWNlIGx5
eCB7CiAvLyBZb3Ugc2hvdWxkIGFsc28gcnVuIHRoZSBkZXZlbG9wbWVudC90b29scy91cGRhdGVs
YXlvdXRzLnB5IHNjcmlwdCwKIC8vIHRvIHVwZGF0ZSB0aGUgZm9ybWF0IG9mIGFsbCBvZiBvdXIg
bGF5b3V0IGZpbGVzLgogLy8KLWludCBjb25zdCBMQVlPVVRfRk9STUFUID0gMTE5OyAvLyBzcGl0
ejogUGFyZmlsbFNraXAKK2ludCBjb25zdCBMQVlPVVRfRk9STUFUID0gMTIwOyAvLyBzcGl0ejog
UHJvdmlkZXNNYXR0ZXJzCiAKIAogLy8gTGF5b3V0IGZvcm1hdCBmb3IgdGhlIGN1cnJlbnQgbHl4
IGZpbGUgZm9ybWF0LiBDb250cm9scyB3aGljaCBmb3JtYXQgaXMKQEAgLTE0Miw3ICsxNDIsNyBA
QCBUZXh0Q2xhc3M6OlRleHRDbGFzcygpCiAJICBjb2x1bW5zXygxKSwgc2lkZXNfKE9uZVNpZGUp
LCBzZWNudW1kZXB0aF8oMyksIHRvY2RlcHRoXygzKSwgb3V0cHV0VHlwZV8oTEFURVgpLAogCSAg
b3V0cHV0Rm9ybWF0XygibGF0ZXgiKSwgaGFzX291dHB1dF9mb3JtYXRfKGZhbHNlKSwgZGVmYXVs
dGZvbnRfKHNhbmVfZm9udCksIAogCSAgdGl0bGV0eXBlXyhUSVRMRV9DT01NQU5EX0FGVEVSKSwg
dGl0bGVuYW1lXygibWFrZXRpdGxlIiksCi0JICBtaW5fdG9jbGV2ZWxfKDApLCBtYXhfdG9jbGV2
ZWxfKDApLCBtYXhjaXRlbmFtZXNfKDIpLAorCSAgbWluX3RvY2xldmVsXygwKSwgbWF4X3RvY2xl
dmVsXygwKSwgaGFzX21hdHRlcnNfKGZhbHNlKSwgbWF4Y2l0ZW5hbWVzXygyKSwKIAkgIGNpdGVf
ZnVsbF9hdXRob3JfbGlzdF8odHJ1ZSksIGJpYmludG9jXyhmYWxzZSkKIHt9CiAKQEAgLTE4NSw2
ICsxODUsNyBAQCBlbnVtIFRleHRDbGFzc1RhZ3MgewogCVRDX0RFRkFVTFRGT05ULAogCVRDX1NF
Q05VTURFUFRILAogCVRDX1RPQ0RFUFRILAorCVRDX1BST1ZJREVTTUFUVEVSUywKIAlUQ19DTEFT
U09QVElPTlMsCiAJVENfU1BFQ0lBTENIQVJTLAogCVRDX1BSRUFNQkxFLApAQCAtMjc4LDYgKzI3
OSw3IEBAIExleGVyS2V5d29yZCB0ZXh0Q2xhc3NUYWdzW10gPSB7CiAJeyAicHJlYW1ibGUiLCAg
ICAgICAgICBUQ19QUkVBTUJMRSB9LAogCXsgInByb3ZpZGVpbnNldGxheW91dCIsIFRDX1BST1ZJ
REVJTlNFVExBWU9VVCB9LAogCXsgInByb3ZpZGVzIiwgICAgICAgICAgVENfUFJPVklERVMgfSwK
Kwl7ICJwcm92aWRlc21hdHRlcnMiLCAgIFRDX1BST1ZJREVTTUFUVEVSUyB9LAogCXsgInByb3Zp
ZGVzbW9kdWxlIiwgICAgVENfUFJPVklERVNNT0RVTEUgfSwKIAl7ICJwcm92aWRlc3R5bGUiLCAg
ICAgIFRDX1BST1ZJREVTVFlMRSB9LAogCXsgInJlcXVpcmVzIiwgICAgICAgICAgVENfUkVRVUlS
RVMgfSwKQEAgLTY2MSw2ICs2NjMsMTEgQEAgVGV4dENsYXNzOjpSZXR1cm5WYWx1ZXMgVGV4dENs
YXNzOjpyZWFkKExleGVyICYgbGV4cmMsIFJlYWRUeXBlIHJ0KQogCQkJdG9jZGVwdGhfID0gbGV4
cmMuZ2V0SW50ZWdlcigpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUQ19QUk9WSURFU01BVFRFUlM6
CisJCQlpZiAobGV4cmMubmV4dCgpKQorCQkJCWhhc19tYXR0ZXJzXyA9IGxleHJjLmdldEJvb2wo
KTsKKwkJCWJyZWFrOworCiAJCS8vIEZpcnN0IHN0ZXAgdG8gc3VwcG9ydCBvcHRpb25zCiAJCWNh
c2UgVENfQ0xBU1NPUFRJT05TOgogCQkJcmVhZENsYXNzT3B0aW9ucyhsZXhyYyk7CmRpZmYgLS1n
aXQgYS9zcmMvVGV4dENsYXNzLmggYi9zcmMvVGV4dENsYXNzLmgKaW5kZXggZjc2NzNiMTBkOC4u
ZThiZjBkNzY4ZSAxMDA2NDQKLS0tIGEvc3JjL1RleHRDbGFzcy5oCisrKyBiL3NyYy9UZXh0Q2xh
c3MuaApAQCAtMjA5LDYgKzIwOSw4IEBAIHB1YmxpYzoKIAlzdGQ6OnN0cmluZyBjb25zdCAmIG91
dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG91dHB1dEZvcm1hdF87IH0KIAkvLy8gRG9lcyB0
aGlzIGNsYXNzIHJlZGVmaW5lIHRoZSBvdXRwdXQgZm9ybWF0PwogCWJvb2wgaGFzT3V0cHV0Rm9y
bWF0KCkgY29uc3QgeyByZXR1cm4gaGFzX291dHB1dF9mb3JtYXRfOyB9CisJLy8vIERvZXMgdGhp
cyBjbGFzcyBwcm92aWRlIFxmb3JudG1hdHRlciwgXG1haW5tYXR0ZXIsIGFuZCBcYmFja21hdHRl
cj8KKwlib29sIGhhc01hdHRlcnMoKSBjb25zdCB7IHJldHVybiBoYXNfbWF0dGVyc187IH0KIAkv
Ly8gUmV0dXJuIHRoZSBub24tbG9jYWxpc2VkIG5hbWVzIGZvciB0aGUgdG9jIHR5cGVzLgogCXN0
ZDo6bWFwPHN0ZDo6c3RyaW5nLCBkb2NzdHJpbmc+IGNvbnN0ICYKIAkJb3V0bGluZXJOYW1lcygp
IGNvbnN0IHsgcmV0dXJuIG91dGxpbmVyX25hbWVzXzsgfQpAQCAtMzY4LDYgKzM3MCw4IEBAIHBy
b3RlY3RlZDoKIAlpbnQgbWluX3RvY2xldmVsXzsKIAkvLy8gVGhlIG1heGltYWwgVG9jTGV2ZWwg
b2Ygc2VjdGlvbmluZyBsYXlvdXRzCiAJaW50IG1heF90b2NsZXZlbF87CisJLy8vIERvZXMgdGhp
cyBjbGFzcyBwcm92aWRlIFxmcm9udG1hdHRlciwgXG1haW5tYXR0ZXIsIGFuZCBcYmFja21hdHRl
cj8KKwlib29sIGhhc19tYXR0ZXJzXzsKIAkvLy8gQ2l0YXRpb24gZm9ybWF0dGluZyBpbmZvcm1h
dGlvbgogCXN0ZDo6bWFwPENpdGVFbmdpbmVUeXBlLCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3Rk
OjpzdHJpbmc+ID4gY2l0ZV9mb3JtYXRzXzsKIAkvLy8gQ2l0YXRpb24gbWFjcm9zCmRpZmYgLS1n
aXQgYS9zcmMvVGV4dE1ldHJpY3MuY3BwIGIvc3JjL1RleHRNZXRyaWNzLmNwcAppbmRleCBmZTRm
Nzc1ODA5Li4wNmUzZmNlMmRiIDEwMDY0NAotLS0gYS9zcmMvVGV4dE1ldHJpY3MuY3BwCisrKyBi
L3NyYy9UZXh0TWV0cmljcy5jcHAKQEAgLTEzMDksMTQgKzEzMDksMTUgQEAgaW50IFRleHRNZXRy
aWNzOjpwYXJUb3BTcGFjaW5nKHBpdF90eXBlIGNvbnN0IHBpdCkgY29uc3QKIAkJICAgICAgICAm
JiBwYXJzW3BpdCAtIDFdLmdldERlcHRoKCkgPT0gMCkpKSB7CiAJCWFzYyArPSBicGFyYW1zLmdl
dERlZlNraXAoKS5pblBpeGVscygqYnZfKTsKIAl9Ci0KLQlpZiAocGFyLnBhcmFtcygpLnN0YXJ0
T2ZBcHBlbmRpeCgpKQorCS8vIGV4dHJhIHJvdyBoZWlnaHQgZm9yIHN0YXJ0IG9mIGFwcGVuZGl4
IGFuZCBtYXR0ZXJzCisJaWYgKHBhci5wYXJhbXMoKS5zdGFydE9mQXBwZW5kaXgoKSB8fCBwYXIu
cGFyYW1zKCkuc3RhcnRPZk1hdHRlcigpICE9IE1BVFRFUl9OT05FKQogCQlhc2MgKz0gaW50KDMg
KiBkaCk7CiAKIAkvLyBzcGVjaWFsIGNvZGUgZm9yIHRoZSB0b3AgbGFiZWwKIAlpZiAobGF5b3V0
LmxhYmVsSXNBYm92ZSgpCiAJICAgICYmICghbGF5b3V0LmlzUGFyYWdyYXBoR3JvdXAoKSB8fCB0
ZXh0Xy0+aXNGaXJzdEluU2VxdWVuY2UocGl0KSkKLQkgICAgJiYgIXBhci5sYWJlbFN0cmluZygp
LmVtcHR5KCkpIHsKKwkgICAgJiYgIXBhci5sYWJlbFN0cmluZygpLmVtcHR5KCkKKwkJJiYgKGxh
eW91dC50b2NsZXZlbCAhPSAwIHx8IHBhci5wYXJhbXMoKS5tYWluTWF0dGVyKCkpKSB7CiAJCUZv
bnRJbmZvIGxhYmVsZm9udCA9IHRleHRfLT5sYWJlbEZvbnQocGFyKTsKIAkJRm9udE1ldHJpY3Mg
Y29uc3QgJiBsZm0gPSB0aGVGb250TWV0cmljcyhsYWJlbGZvbnQpOwogCQlhc2MgKz0gaW50KGxm
bS5tYXhIZWlnaHQoKSAqIGxheW91dC5zcGFjaW5nLmdldFZhbHVlKCkKZGlmZiAtLWdpdCBhL3Ny
Yy9vdXRwdXRfbGF0ZXguY3BwIGIvc3JjL291dHB1dF9sYXRleC5jcHAKaW5kZXggOTRlZDM2YjNm
My4uOGFlZjhjNzVkMCAxMDA2NDQKLS0tIGEvc3JjL291dHB1dF9sYXRleC5jcHAKKysrIGIvc3Jj
L291dHB1dF9sYXRleC5jcHAKQEAgLTEyMzcsNiArMTIzNywyMSBAQCB2b2lkIFRlWE9uZVBhcihC
dWZmZXIgY29uc3QgJiBidWYsCiAJCWlmIChwYXIucGFyYW1zKCkuc3RhcnRPZkFwcGVuZGl4KCkp
IHsKIAkJCW9zIDw8ICJcblxcYXBwZW5kaXhcbiI7CiAJCX0KKwkJaWYgKGJwYXJhbXMuZG9jdW1l
bnRDbGFzcygpLmhhc01hdHRlcnMoKSkgeworCQkJc3dpdGNoIChwYXIucGFyYW1zKCkuc3RhcnRP
Zk1hdHRlcigpKSB7CisJCQkJY2FzZSBNQVRURVJfRlJPTlQ6CisJCQkJCW9zIDw8ICJcblxcZnJv
bnRtYXR0ZXJcbiI7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgTUFUVEVSX01BSU46CisJCQkJCW9z
IDw8ICJcblxcbWFpbm1hdHRlclxuIjsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBNQVRURVJfQkFD
SzoKKwkJCQkJb3MgPDwgIlxuXFxiYWNrbWF0dGVyXG4iOworCQkJCQlicmVhazsKKwkJCQlkZWZh
dWx0OgorCQkJCQlicmVhazsKKwkJCX0KKwkJfQogCiAJCS8vIEluVGl0bGUgY29tbWFuZHMgbXVz
dCB1c2Ugc3dpdGNoZXMgKG5vdCBlbnZpcm9ubWVudHMpCiAJCS8vIGluc2lkZSB0aGUgY29tbWFu
ZHMgKHNlZSAjOTMzMikKZGlmZiAtLWdpdCBhL3NyYy90ZXgybHl4L3RleHQuY3BwIGIvc3JjL3Rl
eDJseXgvdGV4dC5jcHAKaW5kZXggYThlYmJmOTM2NC4uMzFiNTA5ZmZjYyAxMDA2NDQKLS0tIGEv
c3JjL3RleDJseXgvdGV4dC5jcHAKKysrIGIvc3JjL3RleDJseXgvdGV4dC5jcHAKQEAgLTM5NDUs
NiArMzk0NSw3OCBAQCB2b2lkIHBhcnNlX3RleHQoUGFyc2VyICYgcCwgb3N0cmVhbSAmIG9zLCB1
bnNpZ25lZCBmbGFncywgYm9vbCBvdXRlciwKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJaWYgKHQu
Y3MoKSA9PSAiZnJvbnRtYXR0ZXIiKSB7CisJCQljb250ZXh0LmFkZF9wYXJfZXh0cmFfc3R1ZmYo
Ilxcc3RhcnRfb2ZfbWF0dGVyIGZyb250XG4iKTsKKwkJCS8vIFdlIG5lZWQgdG8gc3RhcnQgYSBu
ZXcgcGFyYWdyYXBoLiBPdGhlcndpc2UgdGhlCisJCQkvLyBmcm9udG1hdHRlciBpbiAnYmxhXGZy
b250bWF0dGVyXGNoYXB0ZXJ7JyB3b3VsZCBzdGFydAorCQkJLy8gdG9vIGxhdGUuCisJCQljb250
ZXh0Lm5ld19wYXJhZ3JhcGgob3MpOworCQkJLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0
aGUgcGFyYWdyYXBoIGlzCisJCQkvLyBnZW5lcmF0ZWQgZXZlbiBpZiBpdCBpcyBlbXB0eS4gT3Ro
ZXJ3aXNlIHRoZQorCQkJLy8gZnJvbnRtYXR0ZXIgaW4gJ1xwYXJcZnJvbnRtYXR0ZXJccGFyXGNo
YXB0ZXJ7JyB3b3VsZAorCQkJLy8gc3RhcnQgdG9vIGxhdGUuCisJCQljb250ZXh0LmNoZWNrX2xh
eW91dChvcyk7CisJCQkvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gcHJldmVudCBwYXJhZ3Jh
cGgKKwkJCS8vIGRlbGV0aW9uIGlmIGl0IGlzIGVtcHR5LiBIYW5kbGUgdGhpcyBiZXR0ZXIhCisJ
CQlvdXRwdXRfY29tbWVudChwLCBvcywKKwkJCQkiZHVtbXkgY29tbWVudCBpbnNlcnRlZCBieSB0
ZXgybHl4IHRvICIKKwkJCQkiZW5zdXJlIHRoYXQgdGhpcyBwYXJhZ3JhcGggaXMgbm90IGVtcHR5
IiwKKwkJCQljb250ZXh0KTsKKwkJCS8vIEJvdGggbWVhc3VyZXMgYWJvdmUgbWF5IGdlbmVyYXRl
IGFuIGFkZGl0aW9uYWwKKwkJCS8vIGVtcHR5IHBhcmFncmFwaCwgYnV0IHRoYXQgZG9lcyBub3Qg
aHVydCwgYmVjYXVzZQorCQkJLy8gd2hpdGVzcGFjZSBkb2VzIG5vdCBtYXR0ZXIgaGVyZS4KKwkJ
CWVhdF93aGl0ZXNwYWNlKHAsIG9zLCBjb250ZXh0LCB0cnVlKTsKKwkJCWNvbnRpbnVlOworCQl9
CisKKwkJaWYgKHQuY3MoKSA9PSAibWFpbm1hdHRlciIpIHsKKwkJCWNvbnRleHQuYWRkX3Bhcl9l
eHRyYV9zdHVmZigiXFxzdGFydF9vZl9tYXR0ZXIgbWFpblxuIik7CisJCQkvLyBXZSBuZWVkIHRv
IHN0YXJ0IGEgbmV3IHBhcmFncmFwaC4gT3RoZXJ3aXNlIHRoZQorCQkJLy8gbWFpbm1hdHRlciBp
biAnYmxhXG1haW5tYXR0ZXJcY2hhcHRlcnsnIHdvdWxkIHN0YXJ0CisJCQkvLyB0b28gbGF0ZS4K
KwkJCWNvbnRleHQubmV3X3BhcmFncmFwaChvcyk7CisJCQkvLyBXZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSB0aGF0IHRoZSBwYXJhZ3JhcGggaXMKKwkJCS8vIGdlbmVyYXRlZCBldmVuIGlmIGl0IGlzIGVt
cHR5LiBPdGhlcndpc2UgdGhlCisJCQkvLyBtYWlubWF0dGVyIGluICdccGFyXG1haW5tYXR0ZXJc
cGFyXGNoYXB0ZXJ7JyB3b3VsZAorCQkJLy8gc3RhcnQgdG9vIGxhdGUuCisJCQljb250ZXh0LmNo
ZWNrX2xheW91dChvcyk7CisJCQkvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gcHJldmVudCBw
YXJhZ3JhcGgKKwkJCS8vIGRlbGV0aW9uIGlmIGl0IGlzIGVtcHR5LiBIYW5kbGUgdGhpcyBiZXR0
ZXIhCisJCQlvdXRwdXRfY29tbWVudChwLCBvcywKKwkJCQkiZHVtbXkgY29tbWVudCBpbnNlcnRl
ZCBieSB0ZXgybHl4IHRvICIKKwkJCQkiZW5zdXJlIHRoYXQgdGhpcyBwYXJhZ3JhcGggaXMgbm90
IGVtcHR5IiwKKwkJCQljb250ZXh0KTsKKwkJCS8vIEJvdGggbWVhc3VyZXMgYWJvdmUgbWF5IGdl
bmVyYXRlIGFuIGFkZGl0aW9uYWwKKwkJCS8vIGVtcHR5IHBhcmFncmFwaCwgYnV0IHRoYXQgZG9l
cyBub3QgaHVydCwgYmVjYXVzZQorCQkJLy8gd2hpdGVzcGFjZSBkb2VzIG5vdCBtYXR0ZXIgaGVy
ZS4KKwkJCWVhdF93aGl0ZXNwYWNlKHAsIG9zLCBjb250ZXh0LCB0cnVlKTsKKwkJCWNvbnRpbnVl
OworCQl9CisKKwkJaWYgKHQuY3MoKSA9PSAiYmFja21hdHRlciIpIHsKKwkJCWNvbnRleHQuYWRk
X3Bhcl9leHRyYV9zdHVmZigiXFxzdGFydF9vZl9tYXR0ZXIgYmFja1xuIik7CisJCQkvLyBXZSBu
ZWVkIHRvIHN0YXJ0IGEgbmV3IHBhcmFncmFwaC4gT3RoZXJ3aXNlIHRoZQorCQkJLy8gbWFpbm1h
dHRlciBpbiAnYmxhXG1haW5tYXR0ZXJcY2hhcHRlcnsnIHdvdWxkIHN0YXJ0CisJCQkvLyB0b28g
bGF0ZS4KKwkJCWNvbnRleHQubmV3X3BhcmFncmFwaChvcyk7CisJCQkvLyBXZSBuZWVkIHRvIG1h
a2Ugc3VyZSB0aGF0IHRoZSBwYXJhZ3JhcGggaXMKKwkJCS8vIGdlbmVyYXRlZCBldmVuIGlmIGl0
IGlzIGVtcHR5LiBPdGhlcndpc2UgdGhlCisJCQkvLyBtYWlubWF0dGVyIGluICdccGFyXG1haW5t
YXR0ZXJccGFyXGNoYXB0ZXJ7JyB3b3VsZAorCQkJLy8gc3RhcnQgdG9vIGxhdGUuCisJCQljb250
ZXh0LmNoZWNrX2xheW91dChvcyk7CisJCQkvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gcHJl
dmVudCBwYXJhZ3JhcGgKKwkJCS8vIGRlbGV0aW9uIGlmIGl0IGlzIGVtcHR5LiBIYW5kbGUgdGhp
cyBiZXR0ZXIhCisJCQlvdXRwdXRfY29tbWVudChwLCBvcywKKwkJCQkiZHVtbXkgY29tbWVudCBp
bnNlcnRlZCBieSB0ZXgybHl4IHRvICIKKwkJCQkiZW5zdXJlIHRoYXQgdGhpcyBwYXJhZ3JhcGgg
aXMgbm90IGVtcHR5IiwKKwkJCQljb250ZXh0KTsKKwkJCS8vIEJvdGggbWVhc3VyZXMgYWJvdmUg
bWF5IGdlbmVyYXRlIGFuIGFkZGl0aW9uYWwKKwkJCS8vIGVtcHR5IHBhcmFncmFwaCwgYnV0IHRo
YXQgZG9lcyBub3QgaHVydCwgYmVjYXVzZQorCQkJLy8gd2hpdGVzcGFjZSBkb2VzIG5vdCBtYXR0
ZXIgaGVyZS4KKwkJCWVhdF93aGl0ZXNwYWNlKHAsIG9zLCBjb250ZXh0LCB0cnVlKTsKKwkJCWNv
bnRpbnVlOworCQl9CisKIAkJLy8gTXVzdCBjYXRjaCBlbXB0eSBkYXRlcyBiZWZvcmUgZmluZExh
eW91dCBpcyBjYWxsZWQgYmVsb3cKIAkJaWYgKHQuY3MoKSA9PSAiZGF0ZSIpIHsKIAkJCWVhdF93
aGl0ZXNwYWNlKHAsIG9zLCBjb250ZXh0LCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvdmVyc2lv
bi5oIGIvc3JjL3ZlcnNpb24uaAppbmRleCBjZDQ3YjYyNjhkLi45M2VlZmYwNGE2IDEwMDY0NAot
LS0gYS9zcmMvdmVyc2lvbi5oCisrKyBiL3NyYy92ZXJzaW9uLmgKQEAgLTMyLDggKzMyLDggQEAg
ZXh0ZXJuIGNoYXIgY29uc3QgKiBjb25zdCBseXhfdmVyc2lvbl9pbmZvOwogCiAvLyBEbyBub3Qg
cmVtb3ZlIHRoZSBjb21tZW50IGJlbG93LCBzbyB3ZSBnZXQgbWVyZ2UgY29uZmxpY3QgaW4KIC8v
IGluZGVwZW5kZW50IGJyYW5jaGVzLiBJbnN0ZWFkIGFkZCB5b3VyIG93bi4KLSNkZWZpbmUgTFlY
X0ZPUk1BVF9MWVggNjU2IC8vIHNwaXR6OiBwYXJmaWxsc2tpcAotI2RlZmluZSBMWVhfRk9STUFU
X1RFWDJMWVggNjU2CisjZGVmaW5lIExZWF9GT1JNQVRfTFlYIDY1NyAvLyBzcGl0ejogbWF0dGVy
cworI2RlZmluZSBMWVhfRk9STUFUX1RFWDJMWVggNjU3CiAKICNpZiBMWVhfRk9STUFUX1RFWDJM
WVggIT0gTFlYX0ZPUk1BVF9MWVgKICNpZm5kZWYgX01TQ19WRVIKLS0gCmx5eC1jdnMgbWFpbGlu
ZyBsaXN0Cmx5eC1jdnNAbGlzdHMubHl4Lm9yZwpodHRwczovL2xpc3RzLmx5eC5vcmcvbWFpbG1h
bi9saXN0aW5mby9seXgtY3ZzCg==