=begin
------------------------------------------------------------------------
Copyright 2007, TIG (c)
Permission to use, copy, modify, and distribute this software for any 
purpose, and currently without fee, is hereby granted, provided that  
this text and the above copyright (c) notice appear in all copies.
This software is provided "as is" and without any express or implied 
warranties, including, without limitation, the implied warranties of 
merchantability and fitness for a particular purpose.
------------------------------------------------------------------------
Name        : Roof.rb
Author      : TIG
Description : A set of Roof Making Tools.
Menu Item   : Plugins > Roof... > Sub-Menus...
Usage       : See RoofHelp.mht/.pdf file originally distributed with this.
Version     : 1.0	20070824	First issue.
			  1.1	20070826	A:B slope glitch fixed: array.to_f !
			  1.2	20070827	Rectangle checking OK =~ 90 degrees.
			  1.3	20070828	Fixed Gable Materials messed up by v1.2,
								gable 2 overhang glitches & spurious
								non-rectanglur face errors.
			  2.0	20070902	Dialogs redone to avoid Mac failures.
								Gable and Pyramid defs redone to picking
								3 points, rather than face/edge.
								Help redone.
			  2.1	20070903	Gable fascia material glitch fixed.
								Pyramid making made more efficient.
			  3.0	20071223	Sloping fascia and soffit options added.
								Additional warnings for odd geometry.
								Help files updated.
								
								TO DO: Later: Set Slope, Add Details...
								
------------------------------------------------------------------------
=end
=begin
Several parts are inspired in part by Didier Burr's work and also 
RickW's...  ### The next few methods are based on RickW's ideas 
[slightly adjusted], with TIG's adjustments = ###
=end
eval %q{PWJlZ2luCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDb3B5cmlnaHQg
MjAwNywgVElHIChjKQpQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgCnB1cnBv
c2UsIGFuZCBjdXJyZW50bHkgd2l0aG91dCBmZWUsIGlzIGhlcmVieSBncmFu
dGVkLCBwcm92aWRlZCB0aGF0ICAKdGhpcyB0ZXh0IGFuZCB0aGUgYWJvdmUg
Y29weXJpZ2h0IChjKSBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuClRo
aXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiBhbmQgd2l0aG91dCBh
bnkgZXhwcmVzcyBvciBpbXBsaWVkIAp3YXJyYW50aWVzLCBpbmNsdWRpbmcs
IHdpdGhvdXQgbGltaXRhdGlvbiwgdGhlIGltcGxpZWQgd2FycmFudGllcyBv
ZiAKbWVyY2hhbnRhYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3Vs
YXIgcHVycG9zZS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk5hbWUg
ICAgICAgIDogUm9vZi5yYgpBdXRob3IgICAgICA6IFRJRwpEZXNjcmlwdGlv
biA6IEEgc2V0IG9mIFJvb2YgTWFraW5nIFRvb2xzLgpNZW51IEl0ZW0gICA6
IFBsdWdpbnMgPiBSb29mLi4uID4gU3ViLU1lbnVzLi4uClVzYWdlICAgICAg
IDogU2VlIFJvb2ZIZWxwLm1odC8ucGRmIGZpbGUgb3JpZ2luYWxseSBkaXN0
cmlidXRlZCB3aXRoIHRoaXMuClZlcnNpb24gICAgIDogMS4wCTIwMDcwODI0
CUZpcnN0IGlzc3VlLgoJCQkgIDEuMQkyMDA3MDgyNglBOkIgc2xvcGUgZ2xp
dGNoIGZpeGVkOiBhcnJheS50b19mICEKCQkJICAxLjIJMjAwNzA4MjcJUmVj
dGFuZ2xlIGNoZWNraW5nIE9LID1+IDkwIGRlZ3JlZXMuCgkJCSAgMS4zCTIw
MDcwODI4CUZpeGVkIEdhYmxlIE1hdGVyaWFscyBtZXNzZWQgdXAgYnkgdjEu
MiwKCQkJCQkJCQlnYWJsZSAyIG92ZXJoYW5nIGdsaXRjaGVzICYgc3B1cmlv
dXMKCQkJCQkJCQlub24tcmVjdGFuZ2x1ciBmYWNlIGVycm9ycy4KCQkJICAy
LjAJMjAwNzA5MDIJRGlhbG9ncyByZWRvbmUgdG8gYXZvaWQgTWFjIGZhaWx1
cmVzLgoJCQkJCQkJCUdhYmxlIGFuZCBQeXJhbWlkIGRlZnMgcmVkb25lIHRv
IHBpY2tpbmcKCQkJCQkJCQkzIHBvaW50cywgcmF0aGVyIHRoYW4gZmFjZS9l
ZGdlLgoJCQkJCQkJCUhlbHAgcmVkb25lLgoJCQkgIDIuMQkyMDA3MDkwMwlH
YWJsZSBmYXNjaWEgbWF0ZXJpYWwgZ2xpdGNoIGZpeGVkLgoJCQkJCQkJCVB5
cmFtaWQgbWFraW5nIG1hZGUgbW9yZSBlZmZpY2llbnQuCgkJCSAgMy4wCTIw
MDcxMjIzCVNsb3BpbmcgZmFzY2lhIGFuZCBzb2ZmaXQgb3B0aW9ucyBhZGRl
ZC4KCQkJCQkJCQlBZGRpdGlvbmFsIHdhcm5pbmdzIGZvciBvZGQgZ2VvbWV0
cnkuCgkJCQkJCQkJSGVscCBmaWxlcyB1cGRhdGVkLgoJCQkJCQkJCQoJCQkJ
CQkJCVRPIERPOiBMYXRlcjogU2V0IFNsb3BlLCBBZGQgRGV0YWlscy4uLgoJ
CQkJCQkJCQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPWVuZAo9YmVn
aW4KU2V2ZXJhbCBwYXJ0cyBhcmUgaW5zcGlyZWQgaW4gcGFydCBieSBEaWRp
ZXIgQnVycidzIHdvcmsgYW5kIGFsc28gClJpY2tXJ3MuLi4gICMjIyBUaGUg
bmV4dCBmZXcgbWV0aG9kcyBhcmUgYmFzZWQgb24gUmlja1cncyBpZGVhcyAK
W3NsaWdodGx5IGFkanVzdGVkXSwgd2l0aCBUSUcncyBhZGp1c3RtZW50cyA9
ICMjIwo9ZW5kCiMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpyZXF1aXJl
ICdza2V0Y2h1cC5yYicKIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmNs
YXNzIEdlb206OlZlY3RvcjNkCiBkZWYgdG9fZmxhdF9hbmdsZSMjIwoJdmVj
dG9yPUdlb206OlZlY3RvcjNkLm5ldyhzZWxmLngsc2VsZi55LDApCglpZiB2
ZWN0b3IueSA8IDAKCQlyZXR1cm4gMioxODAuZGVncmVlcy12ZWN0b3IuYW5n
bGVfYmV0d2VlbihHZW9tOjpWZWN0b3IzZC5uZXcoMSwwLDApKSAKCWVsc2lm
IHZlY3Rvci55ID4gMAoJCXJldHVybiB2ZWN0b3IuYW5nbGVfYmV0d2VlbihH
ZW9tOjpWZWN0b3IzZC5uZXcoMSwwLDApKQoJZWxzaWYgdmVjdG9yLnkgPT0g
MAoJCWlmIHZlY3Rvci5zYW1lZGlyZWN0aW9uPyhHZW9tOjpWZWN0b3IzZC5u
ZXcoMSwwLDApKQoJCQlyZXR1cm4gMAoJCWVsc2UKCQkJcmV0dXJuIDE4MC5k
ZWdyZWVzCgkJZW5kI2lmCgllbmQjaWYKIGVuZCNkZWYKZW5kI2NsYXNzCiMj
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBHZW9tOjpQb2ludDNk
CglkZWYgaXNfb25fZmFjZT8oZmFjZSxib3VuZHMpIyMjCgkJcmV0dXJuIG5p
bCBpZiBmYWNlLnR5cGVuYW1lIT0iRmFjZSIjIyMKCQlvcmlnaW49ZmFjZS52
ZXJ0aWNlc1swXS5wb3NpdGlvbgoJCXgseSx6PWZhY2Uubm9ybWFsLmF4ZXMK
CQkodD1HZW9tOjpUcmFuc2Zvcm1hdGlvbi5heGVzKG9yaWdpbix4LHkseikp
LmludmVydCEKCQlwdD1zZWxmLmNsb25lLnRyYW5zZm9ybSh0KQogICAgcG9p
bnRzPWZhY2Uub3V0ZXJfbG9vcC52ZXJ0aWNlcy5jb2xsZWN0e3x2fCh2LnBv
c2l0aW9uLnRyYW5zZm9ybSh0KSkudG9fYX0jIyMKCQlyZXR1cm4gdHJ1ZSBp
ZiBHZW9tLnBvaW50X2luX3BvbHlnb25fMkQocHQscG9pbnRzLGJvdW5kcykg
JiYgcHQuej09MAoJCXJldHVybiBmYWxzZQoJZW5kI2RlZgplbmQjY2xhc3MK
IyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmNsYXNzIFNrZXRjaHVwOjpG
YWNlCiBkZWYgb2Zmc2V0X2VhdmVzKGRpc3QpIyMjCgkJaWYgKG5vdCAoKGRp
c3QuY2xhc3M9PUZpeG51bSB8fCBkaXN0LmNsYXNzPT1GbG9hdCB8fCBkaXN0
LmNsYXNzPT1MZW5ndGgpICYmIGRpc3QhPTApKQoJCQlyZXR1cm4gbmlsCgkJ
ZW5kCiAgICB2ZXJ0cz1zZWxmLm91dGVyX2xvb3AudmVydGljZXMKCQlwdHM9
W10KCQkwLnVwdG8odmVydHMubGVuZ3RoLTEpIGRvIHxhfAoJCQl2ZWN0b3Ix
PSh2ZXJ0c1thXS5wb3NpdGlvbi12ZXJ0c1thLSh2ZXJ0cy5sZW5ndGgtMSld
LnBvc2l0aW9uKS5ub3JtYWxpemUKCQkJdmVjdG9yMj0odmVydHNbYV0ucG9z
aXRpb24tdmVydHNbYS0xXS5wb3NpdGlvbikubm9ybWFsaXplCgkJCXZlY3Rv
cjM9KHZlY3RvcjErdmVjdG9yMikubm9ybWFsaXplCgkJCWlmIHZlY3RvcjMu
dmFsaWQ/CiAgICAgICAgYW5nPXZlY3RvcjEuYW5nbGVfYmV0d2Vlbih2ZWN0
b3IyKS8yCgkJCQlhbmc9OTAuZGVncmVlcyBpZiB2ZWN0b3IxLnBhcmFsbGVs
Pyh2ZWN0b3IyKSAjIyNwaWkvMiBpZiB2ZWN0b3IxLnBhcmFsbGVsPyh2ZWN0
b3IyKQoJCQkJdmVjdG9yMy5sZW5ndGg9ZGlzdC9NYXRoOjpzaW4oYW5nKQoJ
CQkJdD1HZW9tOjpUcmFuc2Zvcm1hdGlvbi5uZXcodmVjdG9yMykKCQkJCWlm
IHB0cy5sZW5ndGggPiAwCgkJCQkJaWYgbm90ICh2ZWN0b3IyLnBhcmFsbGVs
PyhwdHMubGFzdC52ZWN0b3JfdG8odmVydHNbYV0ucG9zaXRpb24udHJhbnNm
b3JtKHQpKSkpCgkJCQkJCXQ9R2VvbTo6VHJhbnNmb3JtYXRpb24ubmV3KHZl
Y3RvcjMucmV2ZXJzZSkKCQkJCQllbmQKCQkJCWVuZAogICAgICAgIHB0PXZl
cnRzW2FdLnBvc2l0aW9uLnRyYW5zZm9ybSh0KSMjIwoJCQkJaWYgcHQuaXNf
b25fZmFjZT8oc2VsZix0cnVlKSAjIyMKICAgICAgICAgIHQ9R2VvbTo6VHJh
bnNmb3JtYXRpb24ubmV3KHZlY3RvcjMucmV2ZXJzZSlpZiBkaXN0PjAjIyMK
ICAgICAgICAgIHQ9R2VvbTo6VHJhbnNmb3JtYXRpb24ubmV3KHZlY3RvcjMp
aWYgZGlzdDwwIyMjCiAgICAgICAgICBwdD12ZXJ0c1thXS5wb3NpdGlvbi50
cmFuc2Zvcm0odCkjIyMKICAgICAgICBlbmQjaWYKICAgICAgICBwdHMucHVz
aChwdCkjIyMKCQkJZW5kCgkJZW5kCgkJcmV0dXJuIHNlbGYucGFyZW50LmVu
dGl0aWVzLmFkZF9mYWNlKHB0cykjIyM9ZmFjZQogZW5kI2RlZgplbmQjY2xh
c3MKIyMjIFRoaXMgdG8gZml4IFtdLnRvX2YgZ2xpdGNoICMjIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmNsYXNzIEFycmF5CmRl
ZiB0b19mCglzZWxmLmNvbGxlY3Qhe3xlfGUudG9fZn07IHNlbGYKZW5kI2Rl
ZgpkZWYgdG9faQoJc2VsZi5jb2xsZWN0IXt8ZXxlLnRvX2l9OyBzZWxmCmVu
ZCNkZWYKIyMjLS0tIGVuZCBvZiBSaWNrVyBpbnNwaXJlZCBzdHVmZiAjIyMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmVuZCNjbGFzcyBB
cnJheQpjbGFzcyBGbG9hdAoJZGVmID1+IChudW0yLHRvbD0xMDAwKSMjIyBs
ZXZlbCBvZiB0b2xlcmFuY2UKCQludW0xPShzZWxmKnRvbCkudG9faQoJCW51
bTI9KG51bTIqdG9sKS50b19pCgkJcmV0dXJuIHRydWUgaWYgbnVtMT09bnVt
MgoJCXJldHVybiBuaWwKCWVuZAplbmQjY2xhc3MgRmxvYXQKIyMjCmNsYXNz
IFJvb2YjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogZGVmIFJvb2Y6Om9yZGVyZWRfZWRn
ZV9wb2ludHMoZmFjZSkKICAjIyMgYSBiaXQgUmlja1cgaW5zcGlyZWQgPwog
IHJldHVybiBuaWwgaWYgISBmYWNlCiAgZmFjZS5vdXRlcl9sb29wLmVkZ2Vz
LmVhY2h7fGVkZ2V8CiAgICBmYWNlLnBhcmVudC5lbnRpdGllcy5hZGRfbGlu
ZShlZGdlLmVuZC5wb3NpdGlvbixlZGdlLnN0YXJ0LnBvc2l0aW9uKSBpZiBl
ZGdlLnJldmVyc2VkX2luPyhmYWNlKQogIH0KICBlZGdlcz1mYWNlLm91dGVy
X2xvb3AuZWRnZXMKICBlZGdlPWVkZ2VzWzBdOyB2ZXJ0PWVkZ2Uuc3RhcnQ7
IHBvaW50PXZlcnQucG9zaXRpb24udG9fYQogIHZlcnRzPWZhY2Uub3V0ZXJf
bG9vcC52ZXJ0aWNlcwogIHBvaW50cz1bXTsgdmVydHMuZWFjaHt8dnxwb2lu
dHMucHVzaCh2LnBvc2l0aW9uLnRvX2EpfQogIHBvaW50cy5jb21wYWN0IQog
IHNwb2ludHM9W107cG9pbnQ9cG9pbnRzWzBdO3NlZGdlcz1lZGdlcwogIHBv
aW50cy5lYWNoe3xwfAogICAgZm91bmRfZWRnZT1mYWxzZQogICAgaWYgcD09
cG9pbnQKICAgICAgc2VkZ2VzLmVhY2h7fGV8CiAgICAgICAgcHRzPWUuc3Rh
cnQucG9zaXRpb24udG9fYTtwdGU9ZS5lbmQucG9zaXRpb24udG9fYQogICAg
ICAgIGlmIHA9PXB0cyBhbmQgbm90IGZvdW5kX2VkZ2UKICAgICAgICAgIGZv
dW5kX2VkZ2U9dHJ1ZTtzcG9pbnRzLnB1c2gocHRlKTtwb2ludD1wdGUKICAg
ICAgICAgIHNlZGdlcz1zZWRnZXMtW2VdCiAgICAgICAgZWxzaWYgcD09cHRl
IGFuZCBub3QgZm91bmRfZWRnZQogICAgICAgICAgZm91bmRfZWRnZT10cnVl
O3Nwb2ludHMucHVzaChwdHMpO3BvaW50PXB0cwogICAgICAgICAgc2VkZ2Vz
PXNlZGdlcy1bZV0KICAgICAgICBlbmQjaWYKICAgICAgfQogICAgZW5kI2lm
CiAgfQogICMjIyBlbnN1cmUgYy9jbG9ja3dpc2UKICBwdDA9c3BvaW50c1sw
XTsgcHQxPXNwb2ludHNbMV0KICBwdDA9R2VvbTo6UG9pbnQzZC5uZXcocHQw
WzBdLHB0MFsxXSxwdDBbMl0pIAogIHB0MT1HZW9tOjpQb2ludDNkLm5ldyhw
dDFbMF0scHQxWzFdLHB0MVsyXSkgCiAgdmVjdG9yPXB0MC52ZWN0b3JfdG8o
cHQxKTsgcHQyPXB0MC5vZmZzZXQodmVjdG9yLDAuMS5tbSkKICByb3RhdGU9
R2VvbTo6VHJhbnNmb3JtYXRpb24ucm90YXRpb24ocHQwLFswLDAsMV0sMC4w
MS5kZWdyZWVzKQogIHB0Mj1wdDIudHJhbnNmb3JtIShyb3RhdGUpCiAgc3Bv
aW50cy5yZXZlcnNlISBpZiBub3QgcHQyLmlzX29uX2ZhY2U/KGZhY2UsdHJ1
ZSkKICByZXR1cm4gc3BvaW50cwogZW5kI2RlZgojIyMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KCgoKZGVmIFJvb2Y6OmhpcCgpCiAgIyMjIHZlcnNpb24g
ZXJyb3IgIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogIGlmIFNrZXRjaHVwLnZlcnNpb24uc3BsaXQoIi4i
KVswXS50b19pPDUKICAgICBVSS5tZXNzYWdlYm94KCJTb3JyeSBidXQgJ0hp
cHBlZCBSb29mJyBvbmx5IHdvcmtzIHdpdGggVmVyc2lvbiA1IGFuZCBvdmVy
Li4uIikKICAgICByZXR1cm4gbmlsCiAgZW5kI2lmCiAgIyMjIGNoZWNrIGZh
Y2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogIEBtb2RlbD1Ta2V0Y2h1cC5hY3RpdmVfbW9kZWwK
ICBzcz1AbW9kZWwuc2VsZWN0aW9uCiAgZmFjZXM9W10KICBzcy5lYWNoe3xl
fGZhY2VzLnB1c2goZSlpZiBlLnR5cGVuYW1lPT0iRmFjZSJ9CiAgaWYgc3Mu
ZW1wdHk/IHx8IGZhY2VzLmVtcHR5PwogICAgVUkubWVzc2FnZWJveCgiSGlw
cGVkIFJvb2Y6XG5cbllvdSBtdXN0IHNlbGVjdCBvbmUgaG9yaXpvbnRhbCBG
QUNFICEiKQogICAgcmV0dXJuIG5pbAogIGVuZCNpZgogIGlmIGZhY2VzWzFd
CiAgICBVSS5tZXNzYWdlYm94KCJIaXBwZWQgUm9vZjpcblxuWW91IG11c3Qg
c2VsZWN0IE9ORSBob3Jpem9udGFsIGZhY2UgISIpCiAgICByZXR1cm4gbmls
CiAgZW5kI2lmCiAgb2ZhY2U9ZmFjZXNbMF0jIyMgc3RhcnRpbmcgZmFjZQog
IGlmIG9mYWNlLm5vcm1hbC5ub3JtYWxpemUhLnouYWJzICE9MS4wCiAgICBV
SS5tZXNzYWdlYm94KCJIaXBwZWQgUm9vZjpcblxuWW91IG11c3Qgc2VsZWN0
IG9uZSBIT1JJWk9OVEFMIGZhY2UgISIpCiAgICByZXR1cm4gbmlsCiAgZW5k
I2lmCmRlZiBSb29mOjpkaWFsb2dfaGlwICgpCiMjIyBoaXAgZGlhbG9nICMj
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQHBpdGNoPSIxOjIiIGlmICEgQHBpdGNoICYmIEBt
b2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPDIK
QHBpdGNoPSIzMCIgaWYgISBAcGl0Y2ggJiYgQG1vZGVsLm9wdGlvbnNbIlVu
aXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il0+MQpAZmFzY2lhPTguaW5jaCBp
ZiAhIEBmYXNjaWEgJiYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJd
WyJMZW5ndGhVbml0Il08MgpAZmFzY2lhPTIwMC5tbSBpZiAhIEBmYXNjaWEg
JiYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0
Il0+MQpAc29mZml0PTE2LmluY2ggaWYgISBAc29mZml0ICYmIEBtb2RlbC5v
cHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPDIKQHNvZmZp
dD00MDAubW0gaWYgISBAc29mZml0ICYmIEBtb2RlbC5vcHRpb25zWyJVbml0
c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPjEKQGZzdHlwZT0iVmVydGljYWwr
SG9yaXpvbnRhbCIgaWYgISBAZnN0eXBlIyMjdjMuMApmc3R5cGVzPSJWZXJ0
aWNhbCtIb3Jpem9udGFsfFZlcnRpY2FsK1Nsb3Bpbmd8U2xvcGluZytTbG9w
aW5nfFNsb3BpbmcrSG9yaXpvbnRhbCIjIyN2My4wCkBvdGhlcj0iTm8iIGlm
ICEgQG90aGVyCnVuaXRzPSJpbmNoZXMiIGlmIEBtb2RlbC5vcHRpb25zWyJV
bml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPT0wCnVuaXRzPSJmZWV0IiBp
ZiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQi
XT09MQp1bml0cz0ibW0iIGlmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlv
bnMiXVsiTGVuZ3RoVW5pdCJdPT0yCnVuaXRzPSJjbSIgaWYgQG1vZGVsLm9w
dGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il09PTMKdW5pdHM9
Im0iIGlmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3Ro
VW5pdCJdPT00CmVudW1zPVsiIiwiIiwiIixmc3R5cGVzLCJZZXN8Tm8iXQpw
cm9tcHRzPVsiUm9vZiBTbG9wZSAoRGVncmVlcyBPUiBBOkIpOiAgIiwiRWF2
ZXMgRmFzY2lhIFNpemUgKCN7dW5pdHN9KTogICIsIkVhdmVzIFNvZmZpdCBT
aXplICgje3VuaXRzfSk6ICAiLCJGYXNjaWErU29mZml0IFR5cGU6ICAiLCJT
ZXQgTGF5ZXIgYW5kIE1hdGVyaWFscyA/IDoiXSMjI3YzLjAKdmFsdWVzPVtA
cGl0Y2gsQGZhc2NpYSxAc29mZml0LEBmc3R5cGUsQG90aGVyXSMjI3YzLjAK
QHJlc3VsdHM9KGlucHV0Ym94IHByb21wdHMsdmFsdWVzLGVudW1zLCJIaXBw
ZWQgUm9vZiBTZXR0aW5ncyIpCnJldHVybiBuaWwgaWYgISBAcmVzdWx0cwpi
bGFuaz1mYWxzZSMjIwpAcmVzdWx0cy5lYWNoe3xlfGJsYW5rPXRydWUgaWYg
ZS50b19zPT0iIn0KaWYgYmxhbmsKICBVSS5tZXNzYWdlYm94KCJIaXBwZWQg
Um9vZjpcblxuWW91IGNhbm5vdCBoYXZlIGJsYW5rIGVudHJpZXMuXG5SZXRy
eS4uLiIpCiAgUm9vZjo6ZGlhbG9nX2hpcAplbmQjaWYjIyMKKEBwaXRjaF9z
LEBmYXNjaWFfLEBzb2ZmaXRfLEBmc3R5cGVfLEBvdGhlcl8pPUByZXN1bHRz
IyMjdjMuMApAcGl0Y2g9QHBpdGNoX3M7QGZhc2NpYT1AZmFzY2lhXztAc29m
Zml0PUBzb2ZmaXRfCkBmc3R5cGU9QGZzdHlwZV87QG90aGVyPUBvdGhlcl8j
IyN2My4wCiMjIyBnZXQgYW5nbGUgb2Ygcm9vZiBpbiByYWRpYW5zCnJhdGlv
PUBwaXRjaF9zLnNwbGl0KCI6IikudG9fZgppZiByYXRpb1sxXQogIHRhbj1y
YXRpb1swXS9yYXRpb1sxXQogIEBwaXRjaF9kPShNYXRoOjphdGFuKHRhbikp
LnJhZGlhbnMKZWxzZQogIEBwaXRjaF9kPXJhdGlvWzBdCmVuZCNpZgpAcGl0
Y2hfcj1AcGl0Y2hfZC5kZWdyZWVzICAjIyMgdG8gcmFkaWFucyAjIyMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KaWYgQHBpdGNoX2Q8MQogIFVJLm1lc3Nh
Z2Vib3goIkhpcHBlZCBSb29mOlxuXG5QaXRjaCBjYW4ndCBiZSBsZXNzIHRo
YW4gMSBkZWdyZWUuIikKICBAcGl0Y2g9IjEiO0BwaXRjaF9zPSIxIjtAcGl0
Y2hfZD0xO0BwaXRjaF9yPTEuZGVncmVlcwogIFJvb2Y6OmRpYWxvZ19oaXAK
ZW5kI2lmCmlmIEBwaXRjaF9kPjg5CiAgVUkubWVzc2FnZWJveCgiSGlwcGVk
IFJvb2Y6XG5cblBpdGNoIGNhbid0IGJlIG1vcmUgdGhhbiA4OSBkZWdyZWVz
LiIpCiAgQHBpdGNoPSI4OSI7QHBpdGNoX3M9Ijg5IjtAcGl0Y2hfZD04OTtA
cGl0Y2hfcj04OS5kZWdyZWVzCiAgUm9vZjo6ZGlhbG9nX2hpcAplbmQjaWYK
aWYgQHNvZmZpdF8gPDAKICBVSS5tZXNzYWdlYm94KCJIaXBwZWQgUm9vZjpc
blxuU29mZml0IGNhbid0IGJlIExFU1MgVEhBTiBaRVJPLlxuUmVzZXR0aW5n
IGl0IHRvIFpFUk8uLi5cblxuRm9yIGEgJ3BhcmFwZXQtZWF2ZXMnIGZpcnN0
IHVzZSAnT2Zmc2V0JyBvbiB0aGUgZmFjZSB0byBpbnNldCBpdHMgZWRnZXMg
Li4uIikKICBAc29mZml0PTAudG9fbDtAc29mZml0Xz0wLnRvX2wKICBSb29m
OjpkaWFsb2dfaGlwCmVuZCNpZgojIyN2My4wCmlmIEBmYXNjaWFfIDwwCiAg
VUkubWVzc2FnZWJveCgiSGlwcGVkIFJvb2Y6XG5cRmFzY2lhIGNhbid0IGJl
IExFU1MgVEhBTiBaRVJPLlxuUmVzZXR0aW5nIGl0IHRvIFpFUk8uLi4iKQog
IEBmYXNjaWE9MC50b19sO0BmYXNjaWFfPTAudG9fbAogIFJvb2Y6OmRpYWxv
Z19oaXAKZW5kI2lmCmlmIEBmYXNjaWFfID09MCAmJiBAZnN0eXBlXz09IlZl
cnRpY2FsK1Nsb3BpbmciCiAgVUkubWVzc2FnZWJveCgiSGlwcGVkIFJvb2Y6
XG5cbklmIHRoZSBGYXNjaWEgaXMgWkVSTyB0aGVuIHlvdSBjYW4ndCBoYXZl
IGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBU
eXBlIHRvICdWZXJ0aWNhbCtIb3Jpem9udGFsJy4uLiIpCiAgQGZzdHlwZV89
IlZlcnRpY2FsK0hvcml6b250YWwiCiAgUm9vZjo6ZGlhbG9nX2hpcAplbmQj
aWYKaWYgQGZhc2NpYV8gPT0wICYmIEBmc3R5cGVfPT0iU2xvcGluZytTbG9w
aW5nIgogIFVJLm1lc3NhZ2Vib3goIkhpcHBlZCBSb29mOlxuXG5JZiB0aGUg
RmFzY2lhIGlzIFpFUk8gdGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3Bpbmcg
U29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnU2xv
cGluZytIb3Jpem9udGFsJy4uLiIpCiAgQGZzdHlwZT0iU2xvcGluZytIb3Jp
em9udGFsIjsgQGZzdHlwZV89IlNsb3BpbmcrSG9yaXpvbnRhbCIKICBSb29m
OjpkaWFsb2dfaGlwCmVuZCNpZgojIyN2My4wCiMjIwplbmQjZGVmIGRpYWxv
ZwojIyMgcnVuIGhpcCBkaWFsb2cKICBSb29mOjpkaWFsb2dfaGlwKCkKICBy
ZXR1cm4gbmlsIGlmICEgQHJlc3VsdHMKIyMjCiMjI3YzLjAgc29ydCBvdXQg
c2xvcGluZyBmYXNjaWEgYW5kIHNvZmZpdAojIyMgZGVmYXVsdHM9VmVydGlj
YWwrSG9yaXpvbnRhbApmYWM9QGZhc2NpYTsgZmFjX3VwPWZhYzsgZmFjX291
dD0wLjAKc29mPUBzb2ZmaXQ7IHNvZl91cD0wLjAKaWYgQGZzdHlwZT1+L1Ns
b3BpbmdcKy8KICBmYWNfdXAgPWZhYypNYXRoOjpjb3MoQHBpdGNoX3IpCiAg
ZmFjX291dD1mYWMqTWF0aDo6c2luKEBwaXRjaF9yKQplbmQjaWYKaWYgQGZz
dHlwZT1+L1Nsb3BpbmckLwogIHNvZl91cD1zb2YqTWF0aDo6dGFuKEBwaXRj
aF9yKQplbmQjaWYKIyMjdjMuMAojIyMgZG8gaGlwcGVkIHJvb2YgIyMjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KQG1vZGVsLnN0YXJ0X29wZXJhdGlvbigiSGlwcGVkIFJvb2YiKQplbnRp
dGllcz1AbW9kZWwuYWN0aXZlX2VudGl0aWVzCm9lZGdlcz1vZmFjZS5vdXRl
cl9sb29wLmVkZ2VzCm92ZXJ0cz1vZmFjZS5vdXRlcl9sb29wLnZlcnRpY2Vz
CmNvdW50PW92ZXJ0cy5sZW5ndGgjIyMgdXNlZCBmb3IgJSBldGMgbGF0ZXIu
Li4Kb3BvaW50cz1bXTtvdmVydHMuZWFjaHt8ZXxvcG9pbnRzLnB1c2goZS5w
b3NpdGlvbi50b19hKX0KIyMjIHNldCB1cCByb29mIGdyb3VwIGV0YyAjIyMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnJv
b2ZfZ3JvdXA9ZW50aXRpZXMuYWRkX2dyb3VwCnJvb2ZfZW50aXRpZXM9cm9v
Zl9ncm91cC5lbnRpdGllcwppZmFjZT1yb29mX2VudGl0aWVzLmFkZF9mYWNl
KG9wb2ludHMpCmlmIHNvZj09MCMjI3YzLjAKICBmYWNlPWlmYWNlCmVsc2UK
ICBmYWNlPWlmYWNlLm9mZnNldF9lYXZlcyhzb2YrZmFjX291dCkjIyN2My4w
CiAgaWYgbm90IGZhY2UKICAgIGZhY2U9aWZhY2UKICBlbmQjaWYKZW5kI2lm
CiMjI3YzLjAgcm9vZiBub3cgY29uc2lzdHMgb2YgMiBsb29wcyBhbmQgMSBm
YWNlCiMjIyB0cmFwIGZvciBmb2xsb3dtZSBidWdzcGxhdCBpZiBmYWNlIGhh
cyBjb3JuZXIgYXQgb3JpZ2luICMjIy0tLS0tLS0tLQpvcmlnaW49ZmFsc2UK
aWYgcm9vZl9ncm91cC5ib3VuZHMubWluLno9PTAKICBvcmlnaW49dHJ1ZQog
IG9ycHQ9cm9vZl9ncm91cC5ib3VuZHMubWluCiAgcHQwPUdlb206OlBvaW50
M2QubmV3KDAsMCwxKyhmYWMqZmFjKSkKICB0cjA9R2VvbTo6VHJhbnNmb3Jt
YXRpb24ubmV3KHB0MCkKICByb29mX2dyb3VwLm1vdmUhKHRyMCkKZW5kI2lm
CiMjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIyMgY29udGludWUgd2l0
aCByb29mIGdyb3VwIHNldCB1cCAjIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZWVkZ2VzPWZhY2Uub3V0ZXJfbG9vcC5lZGdlcwpldmVy
dHM9ZmFjZS5vdXRlcl9sb29wLnZlcnRpY2VzIyMjCmVwb2ludHM9W107ZXZl
cnRzLmVhY2h7fGV8ZXBvaW50cy5wdXNoKGUucG9zaXRpb24udG9fYSl9CiMj
IyByZW1vdmUgYW55IGlubmVyIGxvb3AgZWRnZXMgaW4gcm9vZiBncm91cC4u
LgplZGdlc19pbj1bXTtlZGdlc19vdXQ9W10Kcm9vZl9lbnRpdGllcy5lYWNo
e3xlfAogIGlmIGUudHlwZW5hbWU9PSJFZGdlIgogICAgaWYgZS5mYWNlc1sx
XSMjIyBpbm5lciBsb29wCiAgICAgIGVkZ2VzX2luLnB1c2goZSkKICAgIGVs
c2UjIyMgb3V0ZXIgbG9vcAogICAgICBlZGdlc19vdXQucHVzaChlKQogICAg
ZW5kI2lmCiAgZW5kI2lmCn0KZWRnZXNfaW4uZWFjaHt8ZXxlLmVyYXNlIX0g
aWYgc29mID4gMAplZGdlc19vdXQuZWFjaHt8ZXxlLmVyYXNlIX0gaWYgc29m
IDwgMApmYWNlPWVkZ2VzX2luWzBdLmZhY2VzWzBdIGlmIGVkZ2VzX2luWzBd
ICYmIGVkZ2VzX2luWzBdLnZhbGlkPwpmYWNlPWVkZ2VzX291dFswXS5mYWNl
c1swXSBpZiBlZGdlc19vdXRbMF0gJiYgZWRnZXNfb3V0WzBdLnZhbGlkPwpl
cG9pbnRzPVJvb2Yub3JkZXJlZF9lZGdlX3BvaW50cyhmYWNlKQplZWRnZXM9
ZmFjZS5vdXRlcl9sb29wLmVkZ2VzCmVlZGdlcy5lYWNoe3xlfGUuZXJhc2Uh
IGlmIGUudmFsaWQ/fQpmYWNlPXJvb2ZfZW50aXRpZXMuYWRkX2ZhY2UoZXBv
aW50cykKZWVkZ2VzPWZhY2Uub3V0ZXJfbG9vcC5lZGdlcwpldmVydHM9ZmFj
ZS5vdXRlcl9sb29wLnZlcnRpY2VzCiMjIyBtYWtlIHBhdGggYW5kIHByb2Zp
bGUgZXRjICMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQojIyMgd29yayBvdXQgd2hpY2ggdmVydGV4IGdpdmVzIGxhcmdlc3Qg
ZGlzdCBkaW0gIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGltcz1bMC5tbSxu
aWxdIyMjZm9yIGRpc3QsZXZlcnQKZG93bj0xCmV2ZXJ0cy5lYWNoe3xldmVy
dHwKICBTa2V0Y2h1cDo6c2V0X3N0YXR1c190ZXh0KCJIaXBwZWQgUm9vZjog
RmluZGluZyBGYWNlcyAiKygxMDAqZG93bi9jb3VudCkudG9faS50b19zKyIl
LiBQbGVhc2UgV2FpdC4uLiIsU0JfUFJPTVBUKQogIGRvd249ZG93bisxCiAg
ZGlzdD0xLm1tICMjIyA9IG1pbiByb29mIHNpemUgIQogIGVkZ2Uxb3JpZz1l
dmVydAogIGVkZ2Uyb3JpZz1ldmVydAogIGVkZ2UxPWVkZ2Uxb3JpZy5lZGdl
c1swXQogIGVkZ2UyPWVkZ2Uyb3JpZy5lZGdlc1sxXQogIGVkZ2Uxb3RoZXI9
ZWRnZTEub3RoZXJfdmVydGV4KGVkZ2Uxb3JpZykKICBlZGdlMm90aGVyPWVk
Z2UyLm90aGVyX3ZlcnRleChlZGdlMm9yaWcpCiAgdmVjdG9yMT1lZGdlMW9y
aWcucG9zaXRpb24udmVjdG9yX3RvKGVkZ2Uxb3RoZXIucG9zaXRpb24pCiAg
dmVjdG9yMj1lZGdlMm9yaWcucG9zaXRpb24udmVjdG9yX3RvKGVkZ2Uyb3Ro
ZXIucG9zaXRpb24pCiAgYW5nbGUxPXZlY3RvcjEudG9fZmxhdF9hbmdsZQog
IGFuZ2xlMj12ZWN0b3IyLnRvX2ZsYXRfYW5nbGUKICBhbmdsZV9iZXR3ZWVu
PWFuZ2xlMS1hbmdsZTIKICBhbmdsZT1hbmdsZV9iZXR3ZWVuLzIKICBwdDE9
ZXZlcnQucG9zaXRpb24KICBwdDI9cHQxLm9mZnNldCh2ZWN0b3IyLDEubW0p
CiAgcm90YXRlPUdlb206OlRyYW5zZm9ybWF0aW9uLnJvdGF0aW9uKHB0MSxb
MCwwLDFdLGFuZ2xlKQogIHB0Mj1wdDIudHJhbnNmb3JtIShyb3RhdGUpCiAg
IyMjIHNvcnQgd2hpY2ggYW5nbGUgZ2l2ZXMgYSBwb2ludCBvbiB0aGUgZmFj
ZSAjIyMKICBpZiBhbmdsZSA+IDAKICAgIGFuZ2xlPWFuZ2xlKzE4MC5kZWdy
ZWVzIGlmIG5vdCBwdDIuaXNfb25fZmFjZT8oZmFjZSx0cnVlKQogIGVsc2UK
ICAgIGFuZ2xlPWFuZ2xlLTE4MC5kZWdyZWVzIGlmIG5vdCBwdDIuaXNfb25f
ZmFjZT8oZmFjZSx0cnVlKQogIGVuZCNpZgogICMjIyBmaW5kIGJpZ2dlc3Qg
b25lCiAgb25fZmFjZT10cnVlCiAgd2hpbGUgb25fZmFjZQogICAgcHQyPXB0
MS5vZmZzZXQodmVjdG9yMixkaXN0KQogICAgcm90YXRlPUdlb206OlRyYW5z
Zm9ybWF0aW9uLnJvdGF0aW9uKHB0MSxbMCwwLDFdLGFuZ2xlKQogICAgcHQy
PXB0Mi50cmFuc2Zvcm0hKHJvdGF0ZSkKICAgIGlmIG5vdCBwdDIuaXNfb25f
ZmFjZT8oZmFjZSx0cnVlKSAjIyMgZ29uZSBvZmYgdGhlIGZhY2UKICAgICAg
aWYgZGlzdCA+IGRpbXNbMF0KICAgICAgICBkaW1zPVtkaXN0LTEwMC5tbSxl
dmVydF0KICAgICAgZW5kI2lmCiAgICAgIG9uX2ZhY2U9ZmFsc2UKICAgIGVu
ZCNpZgogICAgZGlzdD1kaXN0KzEwMC5tbSMjI2luY3JlbWVudCBkaXN0IDEw
MG1tIHRpbGwgaXQgZ29lcyBvZmYgZmFjZS4KICBlbmQjd2hpbGUKfSNlbmQg
ZXZlcnRzLmVhY2gKIyMjIGxhcmdlc3QgZGlzdCAjIyMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpc3Q9
KGRpbXNbMF0vMS4wMSkuYWJzIy4xNTcwMDU0IyMjIG5ldmVyID4gKHNxcnQz
IC0gKDEvc3FydDMpKSA/ICMjIwpldmVydD1kaW1zWzFdCiAgZWRnZTFvcmln
PWV2ZXJ0CiAgZWRnZTJvcmlnPWV2ZXJ0CiAgZWRnZTE9ZWRnZTFvcmlnLmVk
Z2VzWzBdCiAgZWRnZTI9ZWRnZTJvcmlnLmVkZ2VzWzFdCiAgZWRnZTFvdGhl
cj1lZGdlMS5vdGhlcl92ZXJ0ZXgoZWRnZTFvcmlnKQogIGVkZ2Uyb3RoZXI9
ZWRnZTIub3RoZXJfdmVydGV4KGVkZ2Uyb3JpZykKICB2ZWN0b3IxPWVkZ2Ux
b3JpZy5wb3NpdGlvbi52ZWN0b3JfdG8oZWRnZTFvdGhlci5wb3NpdGlvbikK
ICB2ZWN0b3IyPWVkZ2Uyb3JpZy5wb3NpdGlvbi52ZWN0b3JfdG8oZWRnZTJv
dGhlci5wb3NpdGlvbikKICBhbmdsZTE9dmVjdG9yMS50b19mbGF0X2FuZ2xl
CiAgYW5nbGUyPXZlY3RvcjIudG9fZmxhdF9hbmdsZQogIGFuZ2xlX2JldHdl
ZW49YW5nbGUxLWFuZ2xlMgogIGFuZ2xlPWFuZ2xlX2JldHdlZW4vMgogIHB0
MT1ldmVydC5wb3NpdGlvbgogIHB0Mj1wdDEub2Zmc2V0KHZlY3RvcjIsMS5t
bSkKICByb3RhdGU9R2VvbTo6VHJhbnNmb3JtYXRpb24ucm90YXRpb24ocHQx
LFswLDAsMV0sYW5nbGUpCiAgcHQyPXB0Mi50cmFuc2Zvcm0hKHJvdGF0ZSkK
ICAjIyMgc29ydCB3aGljaCBhbmdsZSBnaXZlcyBhIHBvaW50IG9uIHRoZSBm
YWNlICMjIwogIGlmIGFuZ2xlID4gMAogICAgYW5nbGU9YW5nbGUrMTgwLmRl
Z3JlZXMgaWYgbm90IHB0Mi5pc19vbl9mYWNlPyhmYWNlLHRydWUpCiAgZWxz
ZQogICAgYW5nbGU9YW5nbGUtMTgwLmRlZ3JlZXMgaWYgbm90IHB0Mi5pc19v
bl9mYWNlPyhmYWNlLHRydWUpCiAgZW5kI2lmCiAgcHQyPXB0MS5vZmZzZXQo
dmVjdG9yMixkaXN0KQogIHJvdGF0ZT1HZW9tOjpUcmFuc2Zvcm1hdGlvbi5y
b3RhdGlvbihwdDEsWzAsMCwxXSxhbmdsZSkKICBwdDI9cHQyLnRyYW5zZm9y
bSEocm90YXRlKQojIyMgc29ydCBvdXQgdHJhbnNmb3JtYXRpb24gIyMjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KcHQxPUdl
b206OlBvaW50M2QubmV3KHB0MSkudHJhbnNmb3JtKHJvb2ZfZ3JvdXAudHJh
bnNmb3JtYXRpb24paWYgbm90IG9yaWdpbgpwdDI9R2VvbTo6UG9pbnQzZC5u
ZXcocHQyKS50cmFuc2Zvcm0ocm9vZl9ncm91cC50cmFuc2Zvcm1hdGlvbilp
ZiBub3Qgb3JpZ2luCiMjIyBuZWVkIHRvIGFkanVzdCBvcHAgZm9yIGJlaW5n
IG9uIGRpYWdvbmFsIChzaW4pCmZhbmdsZT1hbmdsZS5hYnMKaWYgZmFuZ2xl
ID4wCiB3aGlsZSBmYW5nbGUgPiAxODAuZGVncmVlcwogIGZhbmdsZT1mYW5n
bGUtMTgwLmRlZ3JlZXMKIGVuZCN3aGlsZQplbmQjaWYKIyMjCiMjIyBnZXQg
b3Bwb3NpdGUgPSBoZWlnaHQgb2YgcmlkZ2UgYXQgZGlzdCBmcm9tIHB0MQpv
cHA9KGRpc3QqTWF0aDo6c2luKGZhbmdsZSkqTWF0aDo6dGFuKEBwaXRjaF9y
KSkuYWJzCiMjIyBtYWtlIHVwc2lkZSBkb3duIHRyaWFuZ3VsYXIgZmFjZSBm
b3IgZm9sbG93bWUgIyMjLS0tLS0tLS0tLS0tLS0tLS0tLQpwdGE9cHQxCnB0
Yj1bcHQxLngscHQxLnkscHQxLnorb3BwXQpwdGM9W3B0Mi54LHB0Mi55LHB0
Mi56K29wcF0KZmZhY2U9cm9vZl9lbnRpdGllcy5hZGRfZmFjZShwdGEscHRi
LHB0YykKIyMjIHJlLXNvcnQgc28gc3RhcnRzIGZyb20gcHQxCmluZGV4PTAK
MC51cHRvKGVlZGdlcy5sZW5ndGgtMSkgZG8gfGl8CiAgaW5kZXg9aSBpZiBl
ZWRnZXNbaV0uZW5kLnBvc2l0aW9uPT1wdDEKZW5kI3VwdG8gaQp0ZWRnZXM9
KGVlZGdlcy5zbGljZShpbmRleC4uLTEpKSsoZWVkZ2VzLnNsaWNlKDAuLmlu
ZGV4LTEpKQojIyMKZmZhY2UuZm9sbG93bWUodGVkZ2VzKSMjIyBtYWtlIG1h
aW4gcm9vZiBmYWNlcyAjIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMjIFRo
ZSB0aWR5IHVwICMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIyBJbnRlcnNlY3QgOgojIyMgVGhl
IGludGVyc2VjdF93aXRoIG1ldGhvZCBpcyB1c2VkIHRvIGludGVyc2VjdCBl
bnRpdGllcywgYSBjb21wb25lbnQKIyMjIGluc3RhbmNlLCBvciBncm91cCAj
IyMgd2l0aCBhbiBlbnRpdGllcyBvYmplY3QuCiMjIyAgIGVudGl0aWVzLmlu
dGVyc2VjdF93aXRoKHJlY3Vyc2UsdHJhbnNmb3JtYXRpb24xLGVudGl0aWVz
MSx0cmFuc2Zvcm1hdGlvbjIsaGlkZGVuLGVudGl0aWVzMikKIyMjIHJlY3Vy
c2UgLSB0cnVlIGlmIHlvdSB3YW50IHRoaXMgZW50aXRpZXMgb2JqZWN0IHRv
IGJlIHJlY3Vyc2VkIC4KIyMjICAgKGludGVyc2VjdGlvbiBsaW5lcyB3aWxs
IGJlIHB1dCBpbnNpZGUgb2YgZ3JvdXBzIGFuZCBjb21wb25lbnRzIAojIyMg
ICAgd2l0aGluIHRoaXMgZW50aXRpZXMgb2JqZWN0KQojIyMgdHJhbnNmb3Jt
YXRpb24xIC0gdGhlIHRyYW5zZm9ybWF0aW9uIGZvciB0aGlzIGVudGl0aWVz
IG9iamVjdC4KIyMjIGVudGl0aWVzMSAtIHRoZSBlbnRpdGllcyAoZ3JvdXAg
ZXRjKSB3aGVyZSB5b3Ugd2FudCB0aGUgaW50ZXJzZWN0aW9uCiMjIyBsaW5l
cyB0byBhcHBlYXIuCiMjIyB0cmFuc2Zvcm1hdGlvbjIgLSB0aGUgdHJhbnNm
b3JtYXRpb24gZm9yIGVudGl0aWVzMS4KIyMjIGhpZGRlbiAtIHRydWUgaWYg
eW91IHdhbnQgaGlkZGVuIGdlb21ldHJ5IGluIHRoaXMgZW50aXRpZXMtb2Jq
ZWN0IHRvIAojIyMgYmUgdXNlZCBpbiB0aGUgaW50ZXJzZWN0aW9uLgojIyMg
ZW50aXRpZXMyIC0gYW4gZW50aXRpZXMgb2JqZWN0IChvciBhbiBhcnJheSBv
ZiBlbnRpdGllcyA/KSA9ICdmYWNlcycuCnRvcD0oY291bnQqY291bnQvOCku
dG9faTtkb3duPTEKdG9wLnRpbWVzIGRvfHRoaXN8CiAgU2tldGNodXA6OnNl
dF9zdGF0dXNfdGV4dCgiSGlwcGVkIFJvb2Y6IEZpbmRpbmcgRWRnZXMgIiso
MTAwKmRvd24vdG9wKS50b19pLnRvX3MrIiUuIFBsZWFzZSBXYWl0Li4uIixT
Ql9QUk9NUFQpCiAgZG93bj1kb3duKzEKICByb29mX2VudGl0aWVzLmVhY2h7
fGV8CiAgICBydHI9WzAsMCwwXQogICAgcm9vZl9lbnRpdGllcy5pbnRlcnNl
Y3Rfd2l0aCh0cnVlLHJ0cixyb29mX2dyb3VwLHJ0cix0cnVlLGUpaWYgZS50
eXBlbmFtZT09IkZhY2UiCiAgfQplbmQjdGltZXMKIyMjIEl0IHJlcGVhdHMg
dG8gY2F0Y2ggYWxsIGludGVyc2VjdGlvbnMgaW4gY29tcGxleCBzZXRzLS0t
LS0tLS0tLS0tLS0tClNrZXRjaHVwOjpzZXRfc3RhdHVzX3RleHQoIkhpcHBl
ZCBSb29mOiBGaW5pc2hpbmcuIixTQl9QUk9NUFQpCnp6PXJvb2ZfZ3JvdXAu
Ym91bmRzLm1pbi56ICMjIyBuZWVkZWQgbGF0ZXIuLi4KcmVwPShjb3VudCpj
b3VudC80KS50b19pCiMjIyByZW1vdmUgZmxhdCBmYWNlcy4uLgpyZXAudGlt
ZXMgZG8gfHRoaXN8CiByb29mX2VudGl0aWVzLmVhY2h7fGV8CiAgaWYgZS50
eXBlbmFtZT09IkZhY2UiICYmIGUgIT0gZmFjZQogICAgZS5lcmFzZSEgaWYg
ZS5ub3JtYWwubm9ybWFsaXplIS54LmFiczwxLjBlLTAwNiAmJiBlLm5vcm1h
bC5ub3JtYWxpemUhLnkuYWJzPDEuMGUtMDA2CiAgZW5kI2lmCiB9CmVuZCN0
aGlzClNrZXRjaHVwOjpzZXRfc3RhdHVzX3RleHQoIkhpcHBlZCBSb29mOiBG
aW5pc2hpbmcuLiIsU0JfUFJPTVBUKQojIyMgZXJhc2UgYWxsICJ2ZXJ0aWNh
bCIgZWRnZXMuLi4KcmVwLnRpbWVzIGRvIHx0aGlzfAogcm9vZl9lbnRpdGll
cy5lYWNoe3xlfAogIGlmIGUudHlwZW5hbWU9PSJFZGdlIgogICAgZS5lcmFz
ZSEgaWYgZS5zdGFydC5wb3NpdGlvbi54PT1lLmVuZC5wb3NpdGlvbi54ICYm
IGUuc3RhcnQucG9zaXRpb24ueT09ZS5lbmQucG9zaXRpb24ueQogIGVuZCNp
ZgogfQplbmQjdGhpcwpTa2V0Y2h1cDo6c2V0X3N0YXR1c190ZXh0KCJIaXBw
ZWQgUm9vZjogRmluaXNoaW5nLi4uIixTQl9QUk9NUFQpCiMjIyBlcmFzZSBm
YWNlbGVzcyBlZGdlcy4uLgpyZXAudGltZXMgZG8gfHRoaXN8CiByb29mX2Vu
dGl0aWVzLmVhY2h7fGV8CiAgaWYgZS50eXBlbmFtZT09IkVkZ2UiCiAgICBl
LmVyYXNlISBpZiAhIGUuZmFjZXNbMF0KICBlbmQjaWYKIH0KZW5kI3RoaXMK
U2tldGNodXA6OnNldF9zdGF0dXNfdGV4dCgiSGlwcGVkIFJvb2Y6IEZpbmlz
aGluZy4uLi4iLFNCX1BST01QVCkKIyMjIHJlbW92ZSBvbmUgZmFjZSBlZGdl
cyA9IG9mZiBiYXNlLi4uCnJlcC50aW1lcyBkbyB8dGhpc3wKIHJvb2ZfZW50
aXRpZXMuZWFjaHt8ZXwKICBpZiBlLnR5cGVuYW1lPT0iRWRnZSIKICAgIGUu
ZXJhc2UhIGlmICEgZS5mYWNlc1sxXQogIGVuZCNpZgogfQplbmQjdGhpcwpT
a2V0Y2h1cDo6c2V0X3N0YXR1c190ZXh0KCJIaXBwZWQgUm9vZjogRmluaXNo
aW5nLi4uLi4iLFNCX1BST01QVCkKIyMjIG5vdyByZXZlcnNlIGZhY2VzIHNv
ICd1cCcKcm9vZl9lbnRpdGllcy5lYWNoe3xlfAogIGlmIGUudHlwZW5hbWU9
PSJGYWNlIgogICAgZS5yZXZlcnNlISBpZiBlLm5vcm1hbC5ub3JtYWxpemUh
LnogPDAKICBlbmQjaWYKfQpTa2V0Y2h1cDo6c2V0X3N0YXR1c190ZXh0KCJI
aXBwZWQgUm9vZjogRmluaXNoaW5nLi4uLi4uIixTQl9QUk9NUFQpCiMjIyBy
ZW1vdmUgYWxsICdmbGF0JyBmYWNlcyBhZ2Fpbi4uLgpyZXAudGltZXMgZG8g
fHRoaXN8CiByb29mX2VudGl0aWVzLmVhY2h7fGV8CiAgaWYgZS50eXBlbmFt
ZT09IkZhY2UiCiAgICBlLmVyYXNlISBpZiBlLm5vcm1hbC5ub3JtYWxpemUh
LnguYWJzPDEuMGUtMDA2ICYmIGUubm9ybWFsLm5vcm1hbGl6ZSEueS5hYnM8
MS4wZS0wMDYKICBlbmQjaWYKIH0KZW5kI3RoaXMKU2tldGNodXA6OnNldF9z
dGF0dXNfdGV4dCgiSGlwcGVkIFJvb2Y6IEZpbmlzaGluZy4uLi4uLi4iLFNC
X1BST01QVCkKIyMjIHRyYXAgYW55IG5vbi1iYXNlIG5vbi1mbGF0IGZhY2Vz
Li4uCmZhY2VzX2hpPVtdCnJvb2ZfZW50aXRpZXMuZWFjaHt8ZXwKICBmYWNl
c19oaS5wdXNoKGUpIGlmIGUudHlwZW5hbWU9PSJGYWNlIiAmJiBlLmJvdW5k
cy5taW4ueiA+IHp6Cn0KZmFjZXNfaGkuZWFjaHt8ZnwKICBjb3BsYW5hcj1m
YWxzZQogIGYuZWRnZXMuZWFjaHt8ZXwKICAgIGNvcGxhbmFyPXRydWUgaWYg
ZS5mYWNlc1sxXSAmJiBlLmZhY2VzWzBdLm5vcm1hbD09ZS5mYWNlc1sxXS5u
b3JtYWwKICAgIGNvcGxhbmFyPXRydWUgaWYgZS5mYWNlc1syXSAmJiBlLmZh
Y2VzWzBdLm5vcm1hbD09ZS5mYWNlc1syXS5ub3JtYWwKICAgIGNvcGxhbmFy
PXRydWUgaWYgZS5mYWNlc1syXSAmJiBlLmZhY2VzWzFdLm5vcm1hbD09ZS5m
YWNlc1syXS5ub3JtYWwKICAgIGNvcGxhbmFyPXRydWUgaWYgZS5mYWNlc1sz
XSAmJiBlLmZhY2VzWzBdLm5vcm1hbD09ZS5mYWNlc1szXS5ub3JtYWwKICAg
IGNvcGxhbmFyPXRydWUgaWYgZS5mYWNlc1szXSAmJiBlLmZhY2VzWzFdLm5v
cm1hbD09ZS5mYWNlc1szXS5ub3JtYWwKICAgIGNvcGxhbmFyPXRydWUgaWYg
ZS5mYWNlc1szXSAmJiBlLmZhY2VzWzJdLm5vcm1hbD09ZS5mYWNlc1szXS5u
b3JtYWwKICB9CiAgZi5lcmFzZSEgaWYgZi52YWxpZD8gJiYgISBjb3BsYW5h
cgp9CmZhY2VzX2hpLmVhY2h7fGZ8CiAgaWYgZi52YWxpZD8KICAgIGYuZWRn
ZXMuZWFjaHt8ZXwKICAgICAgZS5lcmFzZSEgaWYgZS52YWxpZD8gJiYgISBl
LmZhY2VzWzFdCiAgICB9CiAgZW5kI2lmCn0KU2tldGNodXA6OnNldF9zdGF0
dXNfdGV4dCgiSGlwcGVkIFJvb2Y6IEZpbmlzaGluZy4uLi4uLi4iLFNCX1BS
T01QVCkKIyMjIHRpZHkgdXAgZmFjZWxlc3MgYW5kIGNvcGxhbmFyIGVkZ2Vz
IGV0Yy4uLgpyZXAudGltZXMgZG8gfHRoaXN8CiByb29mX2VudGl0aWVzLmVh
Y2h7fGV8CiAgaWYgZS50eXBlbmFtZT09IkVkZ2UiCiAgICBlLmVyYXNlISBp
ZiAhIGUuZmFjZXNbMF0jIyMgZmFjZWxlc3MKICBlbmQjaWYgCiAgaWYgZS52
YWxpZD8gJiYgZS50eXBlbmFtZT09IkVkZ2UiCiAgICBlLmVyYXNlISBpZiBl
LmZhY2VzWzFdICYmIGUuZmFjZXNbMF0ubm9ybWFsPT1lLmZhY2VzWzFdLm5v
cm1hbCMjI2NvcGxhbmFyCiAgZW5kI2lmCiB9CmVuZCN0aGlzClNrZXRjaHVw
OjpzZXRfc3RhdHVzX3RleHQoIkhpcHBlZCBSb29mOiBGaW5pc2hpbmcuLi4u
Li4uLiIsU0JfUFJPTVBUKQojIyMgcmVtb3ZlIG9uZSBmYWNlIGVkZ2VzIHRo
YXQgYXJlIGFib3ZlIGJhc2UgYW5kIG9ubHkgaGF2ZSBvbmUgZmFjZS4uLgpy
ZXAudGltZXMgZG8gfHRoaXN8CiByb29mX2VudGl0aWVzLmVhY2h7fGV8CiAg
aWYgZS50eXBlbmFtZT09IkZhY2UiCiAgICBpZiBlLmJvdW5kcy5taW4ueiA+
IHp6CiAgICAgIGVkZ2VzPWUuZWRnZXMKICAgICAgZWRnZXMuZWFjaHt8ZWV8
ZWUuZXJhc2UhIGlmIGVlLnZhbGlkPyAmJiAhIGVlLmZhY2VzWzFdfQogICAg
ZW5kI2lmCiAgZW5kI2lmCiB9CmVuZCN0aGlzClNrZXRjaHVwOjpzZXRfc3Rh
dHVzX3RleHQoIkhpcHBlZCBSb29mOiBGaW5pc2hpbmcuLi4uLi4uLi4iLFNC
X1BST01QVCkKIyMjIGVyYXNlIGFueSAnZmxvYXRpbmcnIGJpdHMgb2Ygcm9v
ZiBhYm92ZSB0aGUgbWFpbiBib2R5Li4uCnJlcC50aW1lcyBkbyB8dGhpc3wK
IHJvb2ZfZW50aXRpZXMuZWFjaHt8ZXwKICBpZiBlLnR5cGVuYW1lPT0iRmFj
ZSIKICAgIGlmIGUuYm91bmRzLm1pbi56ID4genoKICAgICAgZWRnZXM9ZS5l
ZGdlcwogICAgICBlZGdlcy5lYWNoe3xlZXxlZS5lcmFzZSEgaWYgZWUudmFs
aWQ/fQogICAgZW5kI2lmCiAgZW5kI2lmCiB9CmVuZCN0aGlzClNrZXRjaHVw
OjpzZXRfc3RhdHVzX3RleHQoIkhpcHBlZCBSb29mOiBGaW5pc2hlZC4iLFNC
X1BST01QVCkKIyMjIGVyYXNlIGZhY2VsZXNzIGVkZ2VzIGFnYWluLi4uCnJl
cC50aW1lcyBkbyB8dGhpc3wKIHJvb2ZfZW50aXRpZXMuZWFjaHt8ZXwKICBp
ZiBlLnR5cGVuYW1lPT0iRWRnZSIKICAgIGUuZXJhc2UhIGlmICEgZS5mYWNl
c1swXQogIGVuZCNpZgogfQplbmQjdGltZXMKIyMjIGlmIGZhaWxzLi4uCmlm
ICEgcm9vZl9lbnRpdGllc1swXSB8fCByb29mX2VudGl0aWVzLmxlbmd0aCA8
PSBjb3VudCoyCiAgVUkubWVzc2FnZWJveCgiSGlwcGVkIFJvb2YgRXJyb3I6
XG5cbkl0IHdhcyBub3QgcG9zc2libGUgdG8gbWFrZSBhIHNpbmdsZSBwaXRj
aCBoaXBwZWQgcm9vZiBmcm9tIHRoaXMgZmFjZS5cblxuU29tZXRpbWVzIHRo
ZSBmYWNlL2VkZ2UgcmVsYXRpb25zaGlwcyBnZXQgbXVkZGxlZCBpbiB0aGUg
bW9kZWwncyBkYXRhYmFzZS5cblRyeSByZS1tYWtpbmcgdGhlIG9yaWdpbmFs
IGZhY2U6XG4tIERlbGV0ZSBpdCBhbmQgcmVkcmF3IG92ZXIgb25lIGVkZ2Ug
dG8gcmVtYWtlIGl0LiAgXG5PciBjb3B5IHRoZSBmYWNlIHRvIG9uZSBzaWRl
LCBkZWxldGUgdGhlIG9yaWdpbmFsIGFuZCBtb3ZlIHRoZSBjb3B5IGJhY2su
ICBcblRoaXMgbWV0aG9kcyBjYW4gb2Z0ZW4gbWFrZSBhIGZhY2UgJ3Jvb2Yn
LlxuXG5JZiBub3QsIHRoZW4gdHJ5IHN1Yi1kaXZpZGluZyB0aGUgZmFjZSBp
bnRvIHBpZWNlcyBhbmQgam9pbmluZyB0aGVpciByb29mcyBtYW51YWxseS5c
blxuTm90ZSB0aGF0IHNvbWUgZmFjZSBzaGFwZXMgY2FuIG5ldmVyIGJlIHJv
b2ZlZCB3aXRoIGEgc2luZ2xlIHBpdGNoLlxuZS5nLiBjcm9va2VkIHN0YXJz
LlxuXG5FeGl0aW5nLi4uIikKICByb29mX2dyb3VwLmVyYXNlISBpZiByb29m
X2dyb3VwLnZhbGlkPwogICMjIyB0aWR5IHVwIGF0IGVuZCAjIyMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
IEBtb2RlbC5zZWxlY3Rpb24uY2xlYXIKICBAbW9kZWwuc2VsZWN0aW9uLmFk
ZChvZmFjZSkjIyMgZW5kIHdpdGggb3JpZ2luYWwgZmFjZSByZS1zZWxlY3Rl
ZAogIEBtb2RlbC5hY3RpdmVfdmlldy5pbnZhbGlkYXRlCiAgQG1vZGVsLmNv
bW1pdF9vcGVyYXRpb24KICBTa2V0Y2h1cC5zZW5kX2FjdGlvbiJzZWxlY3RT
ZWxlY3Rpb25Ub29sOiIKICByZXR1cm4gbmlsCmVuZCNpZgojIyMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIyMjIGNvcnJlY3QgZm9yIGZhc2NpYQpyb29m
X2dyb3VwLm1vdmUhKEdlb206OlRyYW5zZm9ybWF0aW9uLm5ldyhbMCwwLGZh
Y191cF0pKWlmIGZhY191cD4wCiMjIwojIyMgc29ydCBvdXQgc29mZml0ICMj
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0Kc29mZml0X2dyb3VwPWVudGl0aWVzLmFkZF9ncm91cCMjI3YzLjAK
c29mZml0X2VudGl0aWVzPXNvZmZpdF9ncm91cC5lbnRpdGllcyMjI3YzLjAK
ZmFjZT1zb2ZmaXRfZW50aXRpZXMuYWRkX2ZhY2Uob3BvaW50cykjIyN2My4w
CmlmIHNvZj4wICMjI3YzLjAKICBzZmFjZT1mYWNlLm9mZnNldF9lYXZlcyhz
b2YpCiAgdmVydHM9ZmFjZS52ZXJ0aWNlcwogIHN2ZXJ0cz1zZmFjZS5vdXRl
cl9sb29wLnZlcnRpY2VzCiAgc2ZhY2UucmV2ZXJzZSEgaWYgc2ZhY2Uubm9y
bWFsLno+MAogIGZhY2UuZXJhc2UhIGlmIGZhY2UudmFsaWQ/IyMjIG1ha2Ug
dGhlIGhvbGUKZW5kI2lmCiMjIwppZiBzb2Y+MCAmJiBzb2ZfdXA+MAogICMj
IyBmb2xkIHNvZmZpdCBpZiBzbG9waW5nLi4uCiB2ZXJ0cy5lYWNoe3x2fAog
IHBvcz12LnBvc2l0aW9uCiAgcG9zbj1bcG9zLngscG9zLnkscG9zLnorc29m
X3VwXQogIHZlYz1wb3MudmVjdG9yX3RvKHBvc24pCiAgdHJhbj1HZW9tOjpU
cmFuc2Zvcm1hdGlvbi50cmFuc2xhdGlvbih2ZWMpCiAgc29mZml0X2VudGl0
aWVzLnRyYW5zZm9ybV9lbnRpdGllcyh0cmFuLHYpCiB9CiAjIyMgZXJhc2Ug
Y29wbGFuYXIgZWRnZXMuCiBzb2ZmaXRfZW50aXRpZXMuZWFjaHt8ZXwKICBp
ZiBlLnR5cGVuYW1lPT0iRWRnZSIKICAgIGlmIGUuZmFjZXNbMV0gYW5kIG5v
dCBlLmZhY2VzWzJdCgkgIGUuZXJhc2UhIGlmIGUuZmFjZXNbMF0ubm9ybWFs
PT1lLmZhY2VzWzFdLm5vcm1hbCBhbmQgZS52YWxpZD8KCWVuZCNpZgoJZS5l
cmFzZSEgaWYgZS52YWxpZD8gYW5kIG5vdCBlLmZhY2VzWzBdCiAgZW5kI2lm
CiB9IyMjCmVuZCNpZiBzb2ZfdXAKIyMjIG1vdmUgd2hvbGUgcm9vZiBncm91
cCBkb3duIGJ5IHNvZl91cCBzbyBpdCBzaXRzIG9uIHNlbGVjdGVkIGZhY2Uu
CnRyej1HZW9tOjpUcmFuc2Zvcm1hdGlvbi5uZXcoWzAsMCxzb2ZfdXAqLTEr
ZmFjX3VwXSlpZiBzb2ZfdXA+MCMjI3YzLjAKcm9vZl9ncm91cC5tb3ZlISh0
cnopaWYgc29mX3VwPjAjIyN2My4wCnRyej1HZW9tOjpUcmFuc2Zvcm1hdGlv
bi5uZXcoWzAsMCxzb2ZfdXAqLTFdKWlmIHNvZl91cD4wIyMjdjMuMApzb2Zm
aXRfZ3JvdXAubW92ZSEodHJ6KWlmIHNvZl91cD4wIyMjdjMuMAojIyN2My4w
CiMjIyBzb3J0IG91dCBmYXNjaWEgZXRjICMjIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZmFzY2lhX2dyb3VwPWVu
dGl0aWVzLmFkZF9ncm91cApmYXNjaWFfZW50aXRpZXM9ZmFzY2lhX2dyb3Vw
LmVudGl0aWVzCmZhY2U9ZmFzY2lhX2VudGl0aWVzLmFkZF9mYWNlKG9wb2lu
dHMpCiMjIwppZiBmYWNfb3V0PT0wCiAgZmZhY2U9ZmFjZS5vZmZzZXRfZWF2
ZXMoc29mKSBpZiBzb2Y+MAogIGZmYWNlPWZhY2UgaWYgc29mPT0wCiAgeHZl
cnRzPWZmYWNlLm91dGVyX2xvb3AudmVydGljZXMKICB4eHBvaW50cz1bXQog
IHh2ZXJ0cy5lYWNoe3xlfAogICAgZWU9ZS5wb3NpdGlvbi50b19hCiAgICB4
eHBvaW50cy5wdXNoKFtlZVswXSxlZVsxXSxlZVsyXStmYWNfdXBdKQogIH0K
ICBlZGdlczJnbz1mYWNlLmVkZ2VzIGlmIHNvZj4wCiAgZWRnZXMyZ28uZWFj
aHt8ZXxlLmVyYXNlIX0gaWYgc29mPjAKICBmYXNjaWFfZW50aXRpZXMuYWRk
X2ZhY2UoeHhwb2ludHMpCiAgZmFzY2lhX2VudGl0aWVzLmVhY2h7fGV8ZS5l
cmFzZSEgaWYgZS50eXBlbmFtZT09IkZhY2UifQogIHZsaW5lcz1bXQogIHh2
ZXJ0cy5lYWNoe3xlfAogICAgZWU9ZS5wb3NpdGlvbi50b19hCiAgICB2PWZh
c2NpYV9lbnRpdGllcy5hZGRfbGluZShlZSxbZWVbMF0sZWVbMV0sZWVbMl0r
ZmFjX3VwXSkKICAgIHZsaW5lcy5wdXNoKHYpCiAgfQogIHZsaW5lcy5lYWNo
e3xlfGUuZmluZF9mYWNlcyBpZiBlfQogIGZhc2NpYV9lbnRpdGllcy5lYWNo
e3xlfGUucmV2ZXJzZSEgaWYgZS50eXBlbmFtZT09IkZhY2UifQplbHNlICMj
IyBmYWNfb3V0ID4gMCA9PXNsb3BpbmcKICBmZmFjZT1mYWNlLm9mZnNldF9l
YXZlcyhzb2YpIGlmIHNvZj4wCiAgZmZhY2U9ZmFjZSBpZiBzb2Y9PTAKICBl
ZGdlczJnbz1mYWNlLmVkZ2VzIGlmIHNvZj4wCiAgZmZmYWNlPWZmYWNlLm9m
ZnNldF9lYXZlcyhmYWNfb3V0KQogIGZmZmFjZS5yZXZlcnNlISBpZiBmZmZh
Y2Uubm9ybWFsLno+MAogIGZmYWNlLmVyYXNlISBpZiBmZmFjZS52YWxpZD8K
ICBmYWNlLmVyYXNlISBpZiBmYWNlLnZhbGlkPwogIGVkZ2VzMmdvLmVhY2h7
fGV8ZS5lcmFzZSEgaWYgZS52YWxpZD99IGlmIHNvZj4wCiAgZnZlcnRzPWZm
ZmFjZS5vdXRlcl9sb29wLnZlcnRpY2VzCiAgZnZlcnRzLmVhY2h7fHZ8CiAg
ICBwb3M9di5wb3NpdGlvbgogICAgcG9zbj1bcG9zLngscG9zLnkscG9zLnor
ZmFjX3VwXQogICAgdmVjPXBvcy52ZWN0b3JfdG8ocG9zbikKICAgIHRyYW49
R2VvbTo6VHJhbnNmb3JtYXRpb24udHJhbnNsYXRpb24odmVjKQogICAgZmFz
Y2lhX2VudGl0aWVzLnRyYW5zZm9ybV9lbnRpdGllcyh0cmFuLHYpCiAgfQog
ICMjIyBlcmFzZSBjb3BsYW5hciBlZGdlcy4KICBmYXNjaWFfZW50aXRpZXMu
ZWFjaHt8ZXwKICAgIGlmIGUudHlwZW5hbWU9PSJFZGdlIgogICAgICBpZiBl
LmZhY2VzWzFdIGFuZCBub3QgZS5mYWNlc1syXQoJICAgIGUuZXJhc2UhIGlm
IGUuZmFjZXNbMF0ubm9ybWFsPT1lLmZhY2VzWzFdLm5vcm1hbCBhbmQgZS52
YWxpZD8KCSAgZW5kI2lmCgkgIGUuZXJhc2UhIGlmIGUudmFsaWQ/IGFuZCBu
b3QgZS5mYWNlc1swXQogICAgZW5kI2lmCiAgfQplbmQjaWYKIyMjIG1vdmUg
d2hvbGUgZmFzY2lhIGdyb3VwIGRvd24gYnkgc29mX3VwIHNvIGl0IHNpdHMg
b24gc2VsZWN0ZWQgZmFjZS4KdHJ6PUdlb206OlRyYW5zZm9ybWF0aW9uLm5l
dyhbMCwwLHNvZl91cCotMV0pCmZhc2NpYV9ncm91cC5tb3ZlISh0cnopCiMj
IyBtb3ZlIG9yaWdpbiBiYXNlZCBmYWNlcyBldGMgYmFjayBpbnRvIHBsYWNl
IHRvIGF2b2lkIGJ1Z3NwbGF0cyAjIyMtLQppZiBvcmlnaW4KICB0cj1HZW9t
OjpUcmFuc2Zvcm1hdGlvbi5uZXcob3JwdCkKICB0cno9R2VvbTo6VHJhbnNm
b3JtYXRpb24ubmV3KFswLDAsMF0pCiAgcm9vZl9ncm91cC5tb3ZlISh0cnop
CiAgIyMjIGNvcnJlY3QgZm9yIGZhc2NpYSA/CiAgcm9vZl9ncm91cC5tb3Zl
IShHZW9tOjpUcmFuc2Zvcm1hdGlvbi5uZXcoWzAsMCxmYWNfdXBdKSlpZiBm
YWNfdXA+MAogIHNvZmZpdF9ncm91cC5tb3ZlISh0cnopCiAgZmFzY2lhX2dy
b3VwLm1vdmUhKHRyeikKZW5kI2lmCiMjI3YzLjAKIyMjIE1vdmVkIG1hdGVy
aWFscyBkaWFsb2cgdG8gYWZ0ZXIgcm9vZiBpcyBtYWRlLi4uCmRlZiBSb29m
OjpkaWFsb2dfbWF0c19oaXAgKCkKIyMjIG1hdGVyaWFscyBkaWFsb2cgIyMj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAgbW9kZWw9U2tldGNodXAuYWN0aXZlX21vZGVsCiAgIyMjIGxheWVy
cy4uLgogIG1sYXllcnM9bW9kZWwubGF5ZXJzCiAgYWxheWVyPW1vZGVsLmFj
dGl2ZV9sYXllcgogIG1vZGVsLmFjdGl2ZV9sYXllcj1uaWwKICBkZWZsYXll
cj1tb2RlbC5hY3RpdmVfbGF5ZXIubmFtZQogIG1vZGVsLmFjdGl2ZV9sYXll
cj1hbGF5ZXIKICBybGF5ZXI9Ii1ST09GIiMjIyBlZGl0IHRoaXMgdG8gc3Vp
dCB5b3VyIGRlc2lyZWQgZGVmYXVsdCByb29mIGxheWVyLgogIGxheWVycz1b
XQogIG1sYXllcnMuZWFjaHt8bGF5ZXJ8bGF5ZXJzLnB1c2gobGF5ZXIubmFt
ZSlpZiBsYXllci5uYW1lIT1kZWZsYXllcn0KICBsYXllcnM9W3JsYXllcixk
ZWZsYXllcl0rbGF5ZXJzLnNvcnQhCiAgbGF5ZXJzPWxheWVycy51bmlxLmpv
aW4oJ3wnKQogICMjIyBtYXRlcmlhbHMuLi4KICBtYXRfcm9vZj0iUm9vZiBT
dXJmYWNlIgogIG1hdF9mYXNjaWE9IlJvb2YgRmFzY2lhIgogIG1hdF9zb2Zm
aXQ9IlJvb2YgU29mZml0IgogIG1hdGVyaWFscz1tb2RlbC5tYXRlcmlhbHMK
ICBtYXRzPVtdCiAgbWF0ZXJpYWxzLmVhY2h7fG1hdHxtYXRzLnB1c2gobWF0
Lm5hbWUpfQogIG1hdHMuc29ydCEKICBsaXN0X21hdF9yb29mPSgoWyI8RGVm
YXVsdD4iXStbbWF0X3Jvb2ZdK21hdHMpLnVuaXEpLmpvaW4oInwiKQogIGxp
c3RfbWF0X2Zhc2NpYT0oKFsiPERlZmF1bHQ+Il0rW21hdF9mYXNjaWFdK21h
dHMpLnVuaXEpLmpvaW4oInwiKQogIGxpc3RfbWF0X3NvZmZpdD0oKFsiPERl
ZmF1bHQ+Il0rW21hdF9zb2ZmaXRdK21hdHMpLnVuaXEpLmpvaW4oInwiKQog
ICMjIyBzZXQgdXAgdmFyaWFibGVzLi4uCiAgQGxheWVyPXJsYXllciBpZiAh
IEBsYXllcgogIEBtYXRfcm9vZj1tYXRfcm9vZiBpZiAhIEBtYXRfcm9vZgog
IEBtYXRfZmFzY2lhPW1hdF9mYXNjaWEgaWYgISBAbWF0X2Zhc2NpYQogIEBt
YXRfc29mZml0PW1hdF9zb2ZmaXQgaWYgISBAbWF0X3NvZmZpdAogIGVudW1z
PVtsYXllcnMsbGlzdF9tYXRfcm9vZixsaXN0X21hdF9mYXNjaWEsbGlzdF9t
YXRfc29mZml0XQogIHByb21wdHM9WyJSb29mIExheWVyOiAgIiwiUm9vZiBT
dXJmYWNlOiAgIiwiUm9vZiBGYXNjaWE6ICAiLCJSb29mIFNvZmZpdDogIl0K
ICB2YWx1ZXM9W0BsYXllcixAbWF0X3Jvb2YsQG1hdF9mYXNjaWEsQG1hdF9z
b2ZmaXRdCiAgQG90aGVyX3Jlc3VsdHM9KGlucHV0Ym94IHByb21wdHMsdmFs
dWVzLGVudW1zLCJSb29mIExheWVyIGFuZCBNYXRlcmlhbHMiKQogIEBsYXll
cixAbWF0X3Jvb2YsQG1hdF9mYXNjaWEsQG1hdF9zb2ZmaXQ9QG90aGVyX3Jl
c3VsdHMgaWYgQG90aGVyX3Jlc3VsdHMKICBAb3RoZXI9Ik5vIiBpZiAhIEBv
dGhlcl9yZXN1bHRzCiAgIyMjCmVuZCNkZWYKIyMjIHJ1biBtYXRlcmlhbCBk
aWFsb2cKICBSb29mOjpkaWFsb2dfbWF0c19oaXAoKSBpZiBAb3RoZXI9PSJZ
ZXMiCiMjIyAKIyMjdjMuMAojIyMgc29ydCBvdXQgbGF5ZXIsIG1hdGVyaWFs
cyBldGMgIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
aWYgQG90aGVyPT0iWWVzIgogICMjIyBub3RlIHRoYXQgbGF5ZXIgaXMgc2V0
IGFmdGVyIGdyb3VwcyBjb21iaW5lZC4uLgogIGV4dGc9bmlsO0Btb2RlbC5s
YXllcnMuZWFjaHt8bHlyfGV4dGc9bHlyIGlmIGx5ci5uYW1lPT1AbGF5ZXJ9
CiAgaWYgQGxheWVyPT0iPERlZmF1bHQ+IgogICAgbGF5cj1uaWwKICBlbHNl
CiAgICBpZiBleHRnCiAgICAgIGxheXI9ZXh0ZwogICAgZWxzZQogICAgICBs
YXlyPUBtb2RlbC5sYXllcnMuYWRkKEBsYXllcikKICAgIGVuZCNpZgogIGVu
ZCNpZgogICMjIyBtYXRlcmlhbHMuLi4KICAjIyMgcm9vZgogIGV4dGc9bmls
O0Btb2RlbC5tYXRlcmlhbHMuZWFjaHt8bWF0fGV4dGc9bWF0IGlmIG1hdC5u
YW1lPT1AbWF0X3Jvb2Z9CiAgaWYgQG1hdF9yb29mPT0iPERlZmF1bHQ+Igog
ICAgbWF0X3I9bmlsCiAgZWxzZQogICAgaWYgZXh0ZwogICAgICBtYXRfcj1l
eHRnCiAgICBlbHNlCiAgICAgIG1hdF9yPUBtb2RlbC5tYXRlcmlhbHMuYWRk
KEBtYXRfcm9vZikKICAgICAgbWF0X3IuY29sb3I9WzExMSwxMTEsMTExXSMj
IyBhZGp1c3QgZGVmYXVsdCBjb2xvdXJzIGhlcmUuCiAgICBlbmQjaWYKICBl
bmQjaWYKICByb29mX2VudGl0aWVzLmVhY2h7fGV8ZS5tYXRlcmlhbD1tYXRf
ciBpZiBlLnR5cGVuYW1lPT0iRmFjZSJ9CiAgIyMjIGZhc2NpYQogIGV4dGc9
bmlsO0Btb2RlbC5tYXRlcmlhbHMuZWFjaHt8bWF0fGV4dGc9bWF0IGlmIG1h
dC5uYW1lPT1AbWF0X2Zhc2NpYX0KICBpZiBAbWF0X2Zhc2NpYT09IjxEZWZh
dWx0PiIKICAgIG1hdF9mPW5pbAogIGVsc2UKICAgIGlmIGV4dGcKICAgICAg
bWF0X2Y9ZXh0ZwogICAgZWxzZQogICAgICBtYXRfZj1AbW9kZWwubWF0ZXJp
YWxzLmFkZChAbWF0X2Zhc2NpYSkKICAgICAgbWF0X2YuY29sb3I9WzY2LDY2
LDY2XSMjIyBhZGp1c3QgZGVmYXVsdCBjb2xvdXJzIGhlcmUuCiAgICBlbmQj
aWYKICBlbmQjaWYKICBmYXNjaWFfZW50aXRpZXMuZWFjaHt8ZXxlLm1hdGVy
aWFsPW1hdF9mIGlmIGUudHlwZW5hbWU9PSJGYWNlIn0KICAjIyMgc29mZml0
CiAgZXh0Zz1uaWw7QG1vZGVsLm1hdGVyaWFscy5lYWNoe3xtYXR8ZXh0Zz1t
YXQgaWYgbWF0Lm5hbWU9PUBtYXRfc29mZml0fQogIGlmIEBtYXRfc29mZml0
PT0iPERlZmF1bHQ+IgogICAgbWF0X3M9bmlsCiAgZWxzZQogICAgaWYgZXh0
ZwogICAgICBtYXRfcz1leHRnCiAgICBlbHNlCiAgICAgIG1hdF9zPUBtb2Rl
bC5tYXRlcmlhbHMuYWRkKEBtYXRfc29mZml0KQogICAgICBtYXRfcy5jb2xv
cj1bMjIyLDIyMiwyMjJdIyMjIGFkanVzdCBkZWZhdWx0IGNvbG91cnMgaGVy
ZS4KICAgIGVuZCNpZgogIGVuZCNpZgogIHNvZmZpdF9lbnRpdGllcy5lYWNo
e3xlfGUubWF0ZXJpYWw9bWF0X3MgaWYgZS50eXBlbmFtZT09IkZhY2UifQog
ICMjIwplbmQjaWYKIyMjIGNvbWJpbmUgcGllY2VzICMjIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnRncm91
cD1lbnRpdGllcy5hZGRfZ3JvdXAocm9vZl9ncm91cCxzb2ZmaXRfZ3JvdXAs
ZmFzY2lhX2dyb3VwKQpyb29mX2dyb3VwLmV4cGxvZGUKc29mZml0X2dyb3Vw
LmV4cGxvZGUKZmFzY2lhX2dyb3VwLmV4cGxvZGUKcm9vZl9ncm91cD10Z3Jv
dXAKIyMjCnJvb2ZfZ3JvdXAubGF5ZXI9bGF5ciBpZiBAb3RoZXI9PSJZZXMi
IyMjIGxheWVyIHNldCBoZXJlLi4uCiMjIyB0aWR5IHVwIGF0IGVuZCAjIyMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAbW9kZWwuc2VsZWN0aW9uLmNsZWFyCkBtb2RlbC5zZWxlY3Rpb24u
YWRkKG9mYWNlKSMjIyBlbmQgd2l0aCBvcmlnaW5hbCBmYWNlIHJlLXNlbGVj
dGVkCkBtb2RlbC5hY3RpdmVfdmlldy5pbnZhbGlkYXRlCkBtb2RlbC5jb21t
aXRfb3BlcmF0aW9uClNrZXRjaHVwLnNlbmRfYWN0aW9uInNlbGVjdFNlbGVj
dGlvblRvb2w6IgogICMjIwplbmQjZGVmIGhpcAojIyMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KCgoKZGVmIFJvb2Y6Om1hbnNhcmQoKQogICMjIyB2ZXJz
aW9uIGVycm9yICMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICBpZiBTa2V0Y2h1cC52ZXJzaW9uLnNwbGl0
KCIuIilbMF0udG9faTw1CiAgICAgVUkubWVzc2FnZWJveCgiU29ycnkgYnV0
ICdNYW5zYXJkL1Nwcm9ja2V0IFJvb2YnIG9ubHkgd29ya3Mgd2l0aCBWZXJz
aW9uIDUgYW5kIG92ZXIuLi4iKQogICAgIHJldHVybiBuaWwKICBlbmQjaWYK
ICAjIyMgY2hlY2sgZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQG1vZGVsPVNrZXRjaHVw
LmFjdGl2ZV9tb2RlbAogIHNzPUBtb2RlbC5zZWxlY3Rpb24KICBmYWNlcz1b
XQogIHNzLmVhY2h7fGV8ZmFjZXMucHVzaChlKWlmIGUudHlwZW5hbWU9PSJG
YWNlIn0KICBpZiBzcy5lbXB0eT8gfHwgZmFjZXMuZW1wdHk/CiAgICBVSS5t
ZXNzYWdlYm94KCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Y6XG5cbllvdSBtdXN0
IHNlbGVjdCBvbmUgaG9yaXpvbnRhbCBGQUNFICEiKQogICAgcmV0dXJuIG5p
bAogIGVuZCNpZgogIGlmIGZhY2VzWzFdCiAgICBVSS5tZXNzYWdlYm94KCJN
YW5zYXJkL1Nwcm9ja2V0IFJvb2Y6XG5cbllvdSBtdXN0IHNlbGVjdCBPTkUg
aG9yaXpvbnRhbCBmYWNlICEiKQogICAgcmV0dXJuIG5pbAogIGVuZCNpZgog
IG9mYWNlPWZhY2VzWzBdIyMjIHN0YXJ0aW5nIGZhY2UKICBpZiBvZmFjZS5u
b3JtYWwubm9ybWFsaXplIS56LmFicyAhPTEuMAogICAgVUkubWVzc2FnZWJv
eCgiTWFuc2FyZC9TcHJvY2tldCBSb29mOlxuXG5Zb3UgbXVzdCBzZWxlY3Qg
b25lIEhPUklaT05UQUwgZmFjZSAhIikKICAgIHJldHVybiBuaWwKICBlbmQj
aWYKZGVmIFJvb2Y6OmRpYWxvZ19tYW4gKCkKIyMjIG1hbiBkaWFsb2cgIyMj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAcGl0Y2gxPSIyOjEiIGlmICEgQHBpdGNoMSAmJiBA
bW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXTwy
CkBwaXRjaDE9IjYwIiBpZiAhIEBwaXRjaDEgJiYgQG1vZGVsLm9wdGlvbnNb
IlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il0+MQpAcGl0Y2gyPSIxOjIi
IGlmICEgQHBpdGNoMiAmJiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25z
Il1bIkxlbmd0aFVuaXQiXTwyCkBwaXRjaDI9IjMwIiBpZiAhIEBwaXRjaDIg
JiYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0
Il0+MQpAaHQ9NDguaW5jaCBpZiAhIEBodCAmJiBAbW9kZWwub3B0aW9uc1si
VW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXTwyCkBodD0xMjAwLm1tIGlm
ICEgQGh0ICYmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVu
Z3RoVW5pdCJdPjEKQGZhc2NpYT04LmluY2ggaWYgISBAZmFzY2lhICYmIEBt
b2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPDIK
QGZhc2NpYT0yMDAubW0gaWYgISBAZmFzY2lhICYmIEBtb2RlbC5vcHRpb25z
WyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPjEKQHNvZmZpdD0xNi5p
bmNoIGlmICEgQHNvZmZpdCAmJiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRp
b25zIl1bIkxlbmd0aFVuaXQiXTwyCkBzb2ZmaXQ9NDAwLm1tIGlmICEgQHNv
ZmZpdCAmJiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0
aFVuaXQiXT4xCkBmc3R5cGU9IlZlcnRpY2FsK0hvcml6b250YWwiIGlmICEg
QGZzdHlwZSMjI3YzLjAKZnN0eXBlcz0iVmVydGljYWwrSG9yaXpvbnRhbHxW
ZXJ0aWNhbCtTbG9waW5nfFNsb3BpbmcrU2xvcGluZ3xTbG9waW5nK0hvcml6
b250YWwiIyMjdjMuMApAb3RoZXI9Ik5vIiBpZiAhIEBvdGhlcgp1bml0cz0i
aW5jaGVzIiBpZiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxl
bmd0aFVuaXQiXT09MAp1bml0cz0iZmVldCIgaWYgQG1vZGVsLm9wdGlvbnNb
IlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il09PTEKdW5pdHM9Im1tIiBp
ZiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQi
XT09Mgp1bml0cz0iY20iIGlmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlv
bnMiXVsiTGVuZ3RoVW5pdCJdPT0zCnVuaXRzPSJtIiBpZiBAbW9kZWwub3B0
aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXT09NAplbnVtcz1b
IiIsIiIsIiIsIiIsIiIsZnN0eXBlcywiWWVzfE5vIl0KcHJvbXB0cz1bIkxv
d2VyIFNsb3BlIChEZWdyZWVzIE9SIEE6Qik6ICAiLCJVcHBlciBTbG9wZSAo
RGVncmVlcyBPUiBBOkIpOiAgIiwiSGVpZ2h0IG9mIExvd2VyIFJvb2YgKCN7
dW5pdHN9KTogICIsIkVhdmVzIEZhc2NpYSBTaXplICgje3VuaXRzfSk6ICAi
LCJFYXZlcyBTb2ZmaXQgU2l6ZSAoI3t1bml0c30pOiAgIiwiRmFzY2lhK1Nv
ZmZpdCBUeXBlOiAgIiwiU2V0IExheWVyICsgTWF0ZXJpYWxzID8gOiJdIyMj
djMuMAp2YWx1ZXM9W0BwaXRjaDEsQHBpdGNoMixAaHQsQGZhc2NpYSxAc29m
Zml0LEBmc3R5cGUsQG90aGVyXSMjI3YzLjAKQHJlc3VsdHM9KGlucHV0Ym94
IHByb21wdHMsdmFsdWVzLGVudW1zLCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Yg
U2V0dGluZ3MiKQpyZXR1cm4gbmlsIGlmICEgQHJlc3VsdHMKYmxhbms9ZmFs
c2UjIyMKQHJlc3VsdHMuZWFjaHt8ZXxibGFuaz10cnVlIGlmIGUudG9fcz09
IiJ9CmlmIGJsYW5rCiAgVUkubWVzc2FnZWJveCgiTWFuc2FyZC9TcHJvY2tl
dDpcblxuWW91IGNhbm5vdCBoYXZlIGJsYW5rIGVudHJpZXMuXG5SZXRyeS4u
LiIpCiAgUm9vZjo6ZGlhbG9nX21hbgplbmQjaWYjIyMKKEBwaXRjaDFfcyxA
cGl0Y2gyX3MsQGh0XyxAZmFzY2lhXyxAc29mZml0XyxAZnN0eXBlXyxAb3Ro
ZXJfKT1AcmVzdWx0cyMjI3YzLjAKQHBpdGNoMT1AcGl0Y2gxX3M7QHBpdGNo
Mj1AcGl0Y2gyX3M7QGh0PUBodF87CkBmYXNjaWE9QGZhc2NpYV87QHNvZmZp
dD1Ac29mZml0XztAZnN0eXBlPUBmc3R5cGVfOyMjI3YzLjAKQG90aGVyPUBv
dGhlcl8KIyMjIGdldCBhbmdsZSBvZiByb29mIGluIHJhZGlhbnMKcmF0aW89
QHBpdGNoMV9zLnNwbGl0KCI6IikudG9fZgppZiByYXRpb1sxXQogIHRhbj1y
YXRpb1swXS9yYXRpb1sxXQogIEBwaXRjaDFfZD0oTWF0aDo6YXRhbih0YW4p
KS5yYWRpYW5zCmVsc2UKICBAcGl0Y2gxX2Q9cmF0aW9bMF0KZW5kI2lmCkBw
aXRjaDFfcj1AcGl0Y2gxX2QuZGVncmVlcyAgIyMjIHRvIHJhZGlhbnMgIyMj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnJhdGlvPUBwaXRjaDJfcy5zcGxp
dCgiOiIpLnRvX2YKaWYgcmF0aW9bMV0KICB0YW49cmF0aW9bMF0vcmF0aW9b
MV0KICBAcGl0Y2gyX2Q9KE1hdGg6OmF0YW4odGFuKSkucmFkaWFucwplbHNl
CiAgQHBpdGNoMl9kPXJhdGlvWzBdCmVuZCNpZgpAcGl0Y2gyX3I9QHBpdGNo
Ml9kLmRlZ3JlZXMgICMjIyB0byByYWRpYW5zICMjIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQppZiBAcGl0Y2gxX2Q8MQogIFVJLm1lc3NhZ2Vib3goIk1h
bnNhcmQvU3Byb2NrZXQgUm9vZjpcblxuTG93ZXIgcGl0Y2ggY2FuJ3QgYmUg
bGVzcyB0aGFuIDEgZGVncmVlLiIpCiAgQHBpdGNoMT0iMSI7QHBpdGNoMV9z
PSIxIjtAcGl0Y2gxX2Q9MTtAcGl0Y2gxX3I9MS5kZWdyZWVzCiAgUm9vZjo6
ZGlhbG9nX21hbgplbmQjaWYKaWYgQHBpdGNoMl9kPDEKICBVSS5tZXNzYWdl
Ym94KCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Y6XG5cblVwcGVyIHBpdGNoIGNh
bid0IGJlIGxlc3MgdGhhbiAxIGRlZ3JlZS4iKQogIEBwaXRjaDI9IjEiO0Bw
aXRjaDJfcz0iMSI7QHBpdGNoMl9kPTE7QHBpdGNoMl9yPTEuZGVncmVlcwog
IFJvb2Y6OmRpYWxvZ19tYW4KZW5kI2lmCmlmIEBwaXRjaDFfZD44OSAKICBV
SS5tZXNzYWdlYm94KCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Y6XG5cbkxvd2Vy
IHBpdGNoIGNhbid0IGJlIG1vcmUgdGhhbiA4OSBkZWdyZWVzLiIpCiAgQHBp
dGNoMT0iODkiO0BwaXRjaDFfcz0iODkiO0BwaXRjaDFfZD04OTtAcGl0Y2gx
X3I9ODkuZGVncmVlcwogIFJvb2Y6OmRpYWxvZ19tYW4KZW5kI2lmCmlmIEBw
aXRjaDJfZD44OSAKICBVSS5tZXNzYWdlYm94KCJNYW5zYXJkL1Nwcm9ja2V0
IFJvb2Y6XG5cblVwcGVyIHBpdGNoIGNhbid0IGJlIG1vcmUgdGhhbiA4OSBk
ZWdyZWVzLiIpCiAgQHBpdGNoMj0iODkiO0BwaXRjaDJfcz0iODkiO0BwaXRj
aDJfZD04OTtAcGl0Y2gyX3I9ODkuZGVncmVlcwogIFJvb2Y6OmRpYWxvZ19t
YW4KZW5kI2lmCmlmIEBzb2ZmaXRfIDwwCiAgVUkubWVzc2FnZWJveCgiTWFu
c2FyZC9TcHJvY2tldCBSb29mOlxuXG5FYXZlcyBjYW4ndCBiZSBMRVNTIFRI
QU4gWkVSTy5cblJlc2V0dGluZyBpdCB0byBaRVJPLi4uXG5cbkZvciBhICdw
YXJhcGV0LWVhdmVzJyBmaXJzdCB1c2UgJ09mZnNldCcgb24gdGhlIGZhY2Ug
dG8gaW5zZXQgaXRzIGVkZ2VzIC4uLiIpCiAgQHNvZmZpdD0wLnRvX2w7QHNv
ZmZpdF89MC50b19sCiAgUm9vZjo6ZGlhbG9nX21hbgplbmQjaWYKIyMjdjMu
MAppZiBAZmFzY2lhXyA8MAogIFVJLm1lc3NhZ2Vib3goIk1hbnNhcmQvU3By
b2NrZXQgUm9vZjpcblxGYXNjaWEgY2FuJ3QgYmUgTEVTUyBUSEFOIFpFUk8u
XG5SZXNldHRpbmcgaXQgdG8gWkVSTy4uLiIpCiAgQGZhc2NpYT0wLnRvX2w7
QGZhc2NpYV89MC50b19sCiAgUm9vZjo6ZGlhbG9nX21hbgplbmQjaWYKaWYg
QGZhc2NpYV8gPT0wICYmIEBmc3R5cGVfPT0iVmVydGljYWwrU2xvcGluZyIK
ICBVSS5tZXNzYWdlYm94KCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Y6XG5cbklm
IHRoZSBGYXNjaWEgaXMgWkVSTyB0aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xv
cGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRv
ICdWZXJ0aWNhbCtIb3Jpem9udGFsJy4uLiIpCiAgQGZzdHlwZV89IlZlcnRp
Y2FsK0hvcml6b250YWwiCiAgUm9vZjo6ZGlhbG9nX21hbgplbmQjaWYKaWYg
QGZhc2NpYV8gPT0wICYmIEBmc3R5cGVfPT0iU2xvcGluZytTbG9waW5nIgog
IFVJLm1lc3NhZ2Vib3goIk1hbnNhcmQvU3Byb2NrZXQgUm9vZjpcblxuSWYg
dGhlIEZhc2NpYSBpcyBaRVJPIHRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9w
aW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8g
J1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4iKQogIEBmc3R5cGU9IlNsb3Bpbmcr
SG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJTbG9waW5nK0hvcml6b250YWwiCiAg
Um9vZjo6ZGlhbG9nX21hbgplbmQjaWYKIyMjdjMuMAojIyMKaWYgQGh0XyA8
MAogIFVJLm1lc3NhZ2Vib3goIk1hbnNhcmQvU3Byb2NrZXQgUm9vZjpcblxu
TG93ZXIgUm9vZiBIZWlnaHQgY2FuJ3QgYmUgTEVTUyBUSEFOIFpFUk8uXG5c
blJlc2V0dGluZyBpdCB0byBaRVJPLi4uIikKICBAaHQ9MC50b19sO0BodF89
MC50b19sCiAgUm9vZjo6ZGlhbG9nX21hbgplbmQjaWYKIyMjCmVuZCNkZWYK
IyMjIHJ1biBtYW4gZGlhbG9nCiAgUm9vZjo6ZGlhbG9nX21hbigpCiAgcmV0
dXJuIG5pbCBpZiAhIEByZXN1bHRzCiMjIwojIyN2My4wIHNvcnQgb3V0IHNs
b3BpbmcgZmFzY2lhIGFuZCBzb2ZmaXQKIyMjIGRlZmF1bHRzPVZlcnRpY2Fs
K0hvcml6b250YWwKZmFjPUBmYXNjaWE7IGZhY191cD1mYWM7IGZhY19vdXQ9
MC4wCnNvZj1Ac29mZml0OyBzb2ZfdXA9MC4wCmlmIEBmc3R5cGU9fi9TbG9w
aW5nXCsvCiAgZmFjX3VwID1mYWMqTWF0aDo6Y29zKEBwaXRjaDFfcikKICBm
YWNfb3V0PWZhYypNYXRoOjpzaW4oQHBpdGNoMV9yKQplbmQjaWYKaWYgQGZz
dHlwZT1+L1Nsb3BpbmckLwogIHNvZl91cD1zb2YqTWF0aDo6dGFuKEBwaXRj
aDFfcikKZW5kI2lmCiMjI3YzLjAKIyMjIGRvIE1hbnNhcmQvU3Byb2NrZXQg
cm9vZiAjIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAbW9kZWwuc3RhcnRfb3BlcmF0aW9uKCJNYW5zYXJk
L1Nwcm9ja2V0IFJvb2YiKQplbnRpdGllcz1AbW9kZWwuYWN0aXZlX2VudGl0
aWVzCm9lZGdlcz1vZmFjZS5vdXRlcl9sb29wLmVkZ2VzCm92ZXJ0cz1vZmFj
ZS5vdXRlcl9sb29wLnZlcnRpY2VzCmNvdW50PW92ZXJ0cy5sZW5ndGgjIyMg
dXNlZCBmb3IgJSBldGMgbGF0ZXIuLi4Kb3BvaW50cz1bXTtvdmVydHMuZWFj
aHt8ZXxvcG9pbnRzLnB1c2goZS5wb3NpdGlvbi50b19hKX0KIyMjIHNldCB1
cCByb29mIGdyb3VwIGV0YyAjIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCnJvb2ZfZ3JvdXA9ZW50aXRpZXMuYWRkX2dy
b3VwCnJvb2ZfZW50aXRpZXM9cm9vZl9ncm91cC5lbnRpdGllcwppZmFjZT1y
b29mX2VudGl0aWVzLmFkZF9mYWNlKG9wb2ludHMpCmlmIHNvZj09MCMjI3Yz
LjAKICBmYWNlPWlmYWNlCmVsc2UKICBmYWNlPWlmYWNlLm9mZnNldF9lYXZl
cyhzb2YrZmFjX291dCkjIyN2My4wCiAgaWYgbm90IGZhY2UKICAgIGZhY2U9
aWZhY2UKICBlbmQjaWYKZW5kI2lmCiMjI3YzLjAgcm9vZiBub3cgY29uc2lz
dHMgb2YgMiBsb29wcyBhbmQgMSBmYWNlCiMjIyB0cmFwIGZvciBmb2xsb3dt
ZSBidWdzcGxhdCBpZiBmYWNlIGhhcyBjb3JuZXIgYXQgb3JpZ2luICMjIy0t
LS0tLS0tLQpvcmlnaW49ZmFsc2UKaWYgcm9vZl9ncm91cC5ib3VuZHMubWlu
Lno9PTAKICBvcmlnaW49dHJ1ZQogIG9ycHQ9cm9vZl9ncm91cC5ib3VuZHMu
bWluCiAgcHQwPUdlb206OlBvaW50M2QubmV3KDAsMCwxKyhmYWMqZmFjKSkK
ICB0cjA9R2VvbTo6VHJhbnNmb3JtYXRpb24ubmV3KHB0MCkKICByb29mX2dy
b3VwLm1vdmUhKHRyMCkKZW5kI2lmCiMjIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQojIyMgY29udGludWUgd2l0aCByb29mIGdyb3VwIHNldCB1cCAjIyMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZWVkZ2VzPWZhY2Uu
b3V0ZXJfbG9vcC5lZGdlcwpldmVydHM9ZmFjZS5vdXRlcl9sb29wLnZlcnRp
Y2VzIyMjCmVwb2ludHM9W107ZXZlcnRzLmVhY2h7fGV8ZXBvaW50cy5wdXNo
KGUucG9zaXRpb24udG9fYSl9CiMjIyByZW1vdmUgYW55IGlubmVyIGxvb3Ag
ZWRnZXMgaW4gcm9vZiBncm91cC4uLgplZGdlc19pbj1bXTtlZGdlc19vdXQ9
W10Kcm9vZl9lbnRpdGllcy5lYWNoe3xlfAogIGlmIGUudHlwZW5hbWU9PSJF
ZGdlIgogICAgaWYgZS5mYWNlc1sxXSMjIyBpbm5lciBsb29wCiAgICAgIGVk
Z2VzX2luLnB1c2goZSkKICAgIGVsc2UjIyMgb3V0ZXIgbG9vcAogICAgICBl
ZGdlc19vdXQucHVzaChlKQogICAgZW5kI2lmCiAgZW5kI2lmCn0KZWRnZXNf
aW4uZWFjaHt8ZXxlLmVyYXNlIX0gaWYgc29mID4gMAplZGdlc19vdXQuZWFj
aHt8ZXxlLmVyYXNlIX0gaWYgc29mIDwgMApmYWNlPWVkZ2VzX2luWzBdLmZh
Y2VzWzBdIGlmIGVkZ2VzX2luWzBdICYmIGVkZ2VzX2luWzBdLnZhbGlkPwpm
YWNlPWVkZ2VzX291dFswXS5mYWNlc1swXSBpZiBlZGdlc19vdXRbMF0gJiYg
ZWRnZXNfb3V0WzBdLnZhbGlkPwplcG9pbnRzPVJvb2Yub3JkZXJlZF9lZGdl
X3BvaW50cyhmYWNlKQplZWRnZXM9ZmFjZS5vdXRlcl9sb29wLmVkZ2VzCmVl
ZGdlcy5lYWNoe3xlfGUuZXJhc2UhIGlmIGUudmFsaWQ/fQpmYWNlPXJvb2Zf
ZW50aXRpZXMuYWRkX2ZhY2UoZXBvaW50cykKZWVkZ2VzPWZhY2Uub3V0ZXJf
bG9vcC5lZGdlcwpldmVydHM9ZmFjZS5vdXRlcl9sb29wLnZlcnRpY2VzCiMj
IyBtYWtlIHBhdGggYW5kIHByb2ZpbGUgZXRjICMjIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaW1zPVswLm1tLG5pbF0jIyNm
b3IgZGlzdCxldmVydApkb3duPTEKZXZlcnRzLmVhY2h7fGV2ZXJ0fAogIFNr
ZXRjaHVwOjpzZXRfc3RhdHVzX3RleHQoIk1hbnNhcmQvU3Byb2NrZXQgUm9v
ZjogRmluZGluZyBGYWNlcyAiKygxMDAqZG93bi9jb3VudCkudG9faS50b19z
KyIlLiBQbGVhc2UgV2FpdC4uLiIsU0JfUFJPTVBUKQogIGRvd249ZG93bisx
CiAgZGlzdD0xLm1tICMjIyA9IG1pbiByb29mIHNpemUgIQogIGVkZ2Uxb3Jp
Zz1ldmVydAogIGVkZ2Uyb3JpZz1ldmVydAogIGVkZ2UxPWVkZ2Uxb3JpZy5l
ZGdlc1swXQogIGVkZ2UyPWVkZ2Uyb3JpZy5lZGdlc1sxXQogIGVkZ2Uxb3Ro
ZXI9ZWRnZTEub3RoZXJfdmVydGV4KGVkZ2Uxb3JpZykKICBlZGdlMm90aGVy
PWVkZ2UyLm90aGVyX3ZlcnRleChlZGdlMm9yaWcpCiAgdmVjdG9yMT1lZGdl
MW9yaWcucG9zaXRpb24udmVjdG9yX3RvKGVkZ2Uxb3RoZXIucG9zaXRpb24p
CiAgdmVjdG9yMj1lZGdlMm9yaWcucG9zaXRpb24udmVjdG9yX3RvKGVkZ2Uy
b3RoZXIucG9zaXRpb24pCiAgYW5nbGUxPXZlY3RvcjEudG9fZmxhdF9hbmds
ZQogIGFuZ2xlMj12ZWN0b3IyLnRvX2ZsYXRfYW5nbGUKICBhbmdsZV9iZXR3
ZWVuPWFuZ2xlMS1hbmdsZTIKICBhbmdsZT1hbmdsZV9iZXR3ZWVuLzIKICBw
dDE9ZXZlcnQucG9zaXRpb24KICBwdDI9cHQxLm9mZnNldCh2ZWN0b3IyLDEu
bW0pCiAgcm90YXRlPUdlb206OlRyYW5zZm9ybWF0aW9uLnJvdGF0aW9uKHB0
MSxbMCwwLDFdLGFuZ2xlKQogIHB0Mj1wdDIudHJhbnNmb3JtIShyb3RhdGUp
CiAgIyMjIHNvcnQgd2hpY2ggYW5nbGUgZ2l2ZXMgYSBwb2ludCBvbiB0aGUg
ZmFjZSAjIyMKICBpZiBhbmdsZSA+IDAKICAgIGFuZ2xlPWFuZ2xlKzE4MC5k
ZWdyZWVzIGlmIG5vdCBwdDIuaXNfb25fZmFjZT8oZmFjZSx0cnVlKQogIGVs
c2UKICAgIGFuZ2xlPWFuZ2xlLTE4MC5kZWdyZWVzIGlmIG5vdCBwdDIuaXNf
b25fZmFjZT8oZmFjZSx0cnVlKQogIGVuZCNpZgogICMjIyBmaW5kIGJpZ2dl
c3Qgb25lCiAgb25fZmFjZT10cnVlCiAgd2hpbGUgb25fZmFjZQogICAgcHQy
PXB0MS5vZmZzZXQodmVjdG9yMixkaXN0KQogICAgcm90YXRlPUdlb206OlRy
YW5zZm9ybWF0aW9uLnJvdGF0aW9uKHB0MSxbMCwwLDFdLGFuZ2xlKQogICAg
cHQyPXB0Mi50cmFuc2Zvcm0hKHJvdGF0ZSkKICAgIGlmIG5vdCBwdDIuaXNf
b25fZmFjZT8oZmFjZSx0cnVlKSAjIyMgZ29uZSBvZmYgdGhlIGZhY2UKICAg
ICAgaWYgZGlzdCA+IGRpbXNbMF0KICAgICAgICBkaW1zPVtkaXN0LTEwMC5t
bSxldmVydF0KICAgICAgZW5kI2lmCiAgICAgIG9uX2ZhY2U9ZmFsc2UKICAg
IGVuZCNpZgogICAgZGlzdD1kaXN0KzEwMC5tbSMjI2luY3JlbWVudCBkaXN0
IDEwMG1tIHRpbGwgaXQgZ29lcyBvZmYgZmFjZS4KICBlbmQjd2hpbGUKfSNl
bmQgZXZlcnRzLmVhY2gKIyMjIGxhcmdlc3QgZGlzdCAjIyMtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
c3Q9KGRpbXNbMF0vMS4wMSkuYWJzIy4xNTcwMDU0IyMjIG5ldmVyID4gKHNx
cnQzIC0gKDEvc3FydDMpKSAjIyMgPz8/Pz8/CmV2ZXJ0PWRpbXNbMV0KICBl
ZGdlMW9yaWc9ZXZlcnQKICBlZGdlMm9yaWc9ZXZlcnQKICBlZGdlMT1lZGdl
MW9yaWcuZWRnZXNbMF0KICBlZGdlMj1lZGdlMm9yaWcuZWRnZXNbMV0KICBl
ZGdlMW90aGVyPWVkZ2UxLm90aGVyX3ZlcnRleChlZGdlMW9yaWcpCiAgZWRn
ZTJvdGhlcj1lZGdlMi5vdGhlcl92ZXJ0ZXgoZWRnZTJvcmlnKQogIHZlY3Rv
cjE9ZWRnZTFvcmlnLnBvc2l0aW9uLnZlY3Rvcl90byhlZGdlMW90aGVyLnBv
c2l0aW9uKQogIHZlY3RvcjI9ZWRnZTJvcmlnLnBvc2l0aW9uLnZlY3Rvcl90
byhlZGdlMm90aGVyLnBvc2l0aW9uKQogIGFuZ2xlMT12ZWN0b3IxLnRvX2Zs
YXRfYW5nbGUKICBhbmdsZTI9dmVjdG9yMi50b19mbGF0X2FuZ2xlCiAgYW5n
bGVfYmV0d2Vlbj1hbmdsZTEtYW5nbGUyCiAgYW5nbGU9YW5nbGVfYmV0d2Vl
bi8yCiAgcHQxPWV2ZXJ0LnBvc2l0aW9uCiAgcHQyPXB0MS5vZmZzZXQodmVj
dG9yMiwxLm1tKQogIHJvdGF0ZT1HZW9tOjpUcmFuc2Zvcm1hdGlvbi5yb3Rh
dGlvbihwdDEsWzAsMCwxXSxhbmdsZSkKICBwdDI9cHQyLnRyYW5zZm9ybSEo
cm90YXRlKQogICMjIyBzb3J0IHdoaWNoIGFuZ2xlIGdpdmVzIGEgcG9pbnQg
b24gdGhlIGZhY2UgIyMjCiAgaWYgYW5nbGUgPiAwCiAgICBhbmdsZT1hbmds
ZSsxODAuZGVncmVlcyBpZiBub3QgcHQyLmlzX29uX2ZhY2U/KGZhY2UsdHJ1
ZSkKICBlbHNlCiAgICBhbmdsZT1hbmdsZS0xODAuZGVncmVlcyBpZiBub3Qg
cHQyLmlzX29uX2ZhY2U/KGZhY2UsdHJ1ZSkKICBlbmQjaWYKICBwdDI9cHQx
Lm9mZnNldCh2ZWN0b3IyLGRpc3QpCiAgcm90YXRlPUdlb206OlRyYW5zZm9y
bWF0aW9uLnJvdGF0aW9uKHB0MSxbMCwwLDFdLGFuZ2xlKQogIHB0Mj1wdDIu
dHJhbnNmb3JtIShyb3RhdGUpCiMjIyBzb3J0IG91dCB0cmFuc2Zvcm1hdGlv
biAjIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpwdDE9R2VvbTo6UG9pbnQzZC5uZXcocHQxKS50cmFuc2Zvcm0ocm9vZl9n
cm91cC50cmFuc2Zvcm1hdGlvbilpZiBub3Qgb3JpZ2luCnB0Mj1HZW9tOjpQ
b2ludDNkLm5ldyhwdDIpLnRyYW5zZm9ybShyb29mX2dyb3VwLnRyYW5zZm9y
bWF0aW9uKWlmIG5vdCBvcmlnaW4KIyMjIG5lZWQgdG8gYWRqdXN0IG9wcCBm
b3IgYmVpbmcgb24gZGlhZ29uYWwgKHNpbikKZmFuZ2xlPWFuZ2xlLmFicwpp
ZiBmYW5nbGUgPjAKIHdoaWxlIGZhbmdsZSA+IDE4MC5kZWdyZWVzCiAgZmFu
Z2xlPWZhbmdsZS0xODAuZGVncmVlcwogZW5kI3doaWxlCmVuZCNpZgojIyMK
IyMjIGdldCBvcHBvc2l0ZXMgPSBoZWlnaHQgb2YgcmlkZ2UgYXQgZGlzdCBm
cm9tIHB0MQpkaXN0MT1AaHRfL01hdGg6OnRhbihAcGl0Y2gxX3IpCmRpc3Qy
PWRpc3QtZGlzdDEKb3BwMT1AaHRfCm9wcDI9KGRpc3QyKk1hdGg6OnNpbihm
YW5nbGUpKk1hdGg6OnRhbihAcGl0Y2gyX3IpKS5hYnMKb3BwPW9wcDErb3Bw
MgojIyMgbWFrZSB1cHNpZGUgZG93biB0cmlhbmd1bGFyIGNyYW5rZWQgZmFj
ZSBmb3IgZm9sbG93bWUgIyMjLS0tLS0tLS0tLS0KcHRhPXB0MQpwdGI9W3B0
MS54LHB0MS55LHB0MS56K29wcF0KcHRjPVtwdDIueCxwdDIueSxwdDIueitv
cHBdCnB0ZD1bcHQxLngrKChwdDIueC1wdDEueCkqKGRpc3QxL2Rpc3QpL01h
dGg6OnNpbihmYW5nbGUpKSxwdDEueSsoKHB0Mi55LXB0MS55KSooZGlzdDEv
ZGlzdCkvTWF0aDo6c2luKGZhbmdsZSkpLHB0MS56K29wcDFdCnJvb2ZfZW50
aXRpZXMuYWRkX2VkZ2VzKHB0YSxwdGIscHRjLHB0ZCkKZmZhY2U9cm9vZl9l
bnRpdGllcy5hZGRfZmFjZShwdGEscHRiLHB0YyxwdGQpCiMjIyByZS1zb3J0
IHNvIHN0YXJ0cyBmcm9tIHB0MQppbmRleD0wCjAudXB0byhlZWRnZXMubGVu
Z3RoLTEpIGRvIHxpfAogIGluZGV4PWkgaWYgZWVkZ2VzW2ldLmVuZC5wb3Np
dGlvbj09cHQxCmVuZCN1cHRvIGkKdGVkZ2VzPShlZWRnZXMuc2xpY2UoaW5k
ZXguLi0xKSkrKGVlZGdlcy5zbGljZSgwLi5pbmRleC0xKSkKIyMjCmZmYWNl
LmZvbGxvd21lKHRlZGdlcykjIyMgbWFrZSBtYWluIHJvb2YgZmFjZXMgIyMj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIyBUaGUgdGlkeSB1cCAjIyMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQojIyMgSW50ZXJzZWN0IDoKIyMjIFRoZSBpbnRlcnNlY3Rfd2l0aCBt
ZXRob2QgaXMgdXNlZCB0byBpbnRlcnNlY3QgZW50aXRpZXMsIGEgY29tcG9u
ZW50CiMjIyBpbnN0YW5jZSwgb3IgZ3JvdXAgIyMjIHdpdGggYW4gZW50aXRp
ZXMgb2JqZWN0LgojIyMgICBlbnRpdGllcy5pbnRlcnNlY3Rfd2l0aChyZWN1
cnNlLHRyYW5zZm9ybWF0aW9uMSxlbnRpdGllczEsdHJhbnNmb3JtYXRpb24y
LGhpZGRlbixlbnRpdGllczIpCiMjIyByZWN1cnNlIC0gdHJ1ZSBpZiB5b3Ug
d2FudCB0aGlzIGVudGl0aWVzIG9iamVjdCB0byBiZSByZWN1cnNlZCAuCiMj
IyAgIChpbnRlcnNlY3Rpb24gbGluZXMgd2lsbCBiZSBwdXQgaW5zaWRlIG9m
IGdyb3VwcyBhbmQgY29tcG9uZW50cyAKIyMjICAgIHdpdGhpbiB0aGlzIGVu
dGl0aWVzIG9iamVjdCkKIyMjIHRyYW5zZm9ybWF0aW9uMSAtIHRoZSB0cmFu
c2Zvcm1hdGlvbiBmb3IgdGhpcyBlbnRpdGllcyBvYmplY3QuCiMjIyBlbnRp
dGllczEgLSB0aGUgZW50aXRpZXMgKGdyb3VwIGV0Yykgd2hlcmUgeW91IHdh
bnQgdGhlIGludGVyc2VjdGlvbgojIyMgbGluZXMgdG8gYXBwZWFyLgojIyMg
dHJhbnNmb3JtYXRpb24yIC0gdGhlIHRyYW5zZm9ybWF0aW9uIGZvciBlbnRp
dGllczEuCiMjIyBoaWRkZW4gLSB0cnVlIGlmIHlvdSB3YW50IGhpZGRlbiBn
ZW9tZXRyeSBpbiB0aGlzIGVudGl0aWVzLW9iamVjdCB0byAKIyMjIGJlIHVz
ZWQgaW4gdGhlIGludGVyc2VjdGlvbi4KIyMjIGVudGl0aWVzMiAtIGFuIGVu
dGl0aWVzIG9iamVjdCAob3IgYW4gYXJyYXkgb2YgZW50aXRpZXMgPykgPSAn
ZmFjZXMnLgp0b3A9KGNvdW50KmNvdW50LzgpLnRvX2k7ZG93bj0xCnRvcC50
aW1lcyBkb3x0aGlzfAogIFNrZXRjaHVwOjpzZXRfc3RhdHVzX3RleHQoIk1h
bnNhcmQvU3Byb2NrZXQgUm9vZjogRmluZGluZyBFZGdlcyAiKygxMDAqZG93
bi90b3ApLnRvX2kudG9fcysiJS4gUGxlYXNlIFdhaXQuLi4iLFNCX1BST01Q
VCkKICBkb3duPWRvd24rMQogIHJvb2ZfZW50aXRpZXMuZWFjaHt8ZXwKICAg
IHJ0cj1bMCwwLDBdCiAgICByb29mX2VudGl0aWVzLmludGVyc2VjdF93aXRo
KHRydWUscnRyLHJvb2ZfZ3JvdXAscnRyLHRydWUsZSlpZiBlLnR5cGVuYW1l
PT0iRmFjZSIKICB9CmVuZCN0aW1lcwojIyMgSXQgcmVwZWF0cyB0byBjYXRj
aCBhbGwgaW50ZXJzZWN0aW9ucyBpbiBjb21wbGV4IHNldHMtLS0tLS0tLS0t
LS0tLS0KU2tldGNodXA6OnNldF9zdGF0dXNfdGV4dCgiTWFuc2FyZC9TcHJv
Y2tldCBSb29mOiBGaW5pc2hpbmcuIixTQl9QUk9NUFQpCnp6PXJvb2ZfZ3Jv
dXAuYm91bmRzLm1pbi56ICMjIyBuZWVkZWQgbGF0ZXIuLi4KcmVwPShjb3Vu
dCpjb3VudC80KS50b19pCiMjIyByZW1vdmUgZmxhdCBmYWNlcy4uLgpyZXAu
dGltZXMgZG8gfHRoaXN8CiByb29mX2VudGl0aWVzLmVhY2h7fGV8CiAgaWYg
ZS50eXBlbmFtZT09IkZhY2UiICYmIGUgIT0gZmFjZQogICAgZS5lcmFzZSEg
aWYgZS5ub3JtYWwubm9ybWFsaXplIS54LmFiczwxLjBlLTAwNiAmJiBlLm5v
cm1hbC5ub3JtYWxpemUhLnkuYWJzPDEuMGUtMDA2CiAgZW5kI2lmCiB9CmVu
ZCN0aGlzClNrZXRjaHVwOjpzZXRfc3RhdHVzX3RleHQoIk1hbnNhcmQvU3By
b2NrZXQgUm9vZjogRmluaXNoaW5nLi4iLFNCX1BST01QVCkKIyMjIGVyYXNl
IGFsbCAidmVydGljYWwiIGVkZ2VzLi4uCnJlcC50aW1lcyBkbyB8dGhpc3wK
IHJvb2ZfZW50aXRpZXMuZWFjaHt8ZXwKICBpZiBlLnR5cGVuYW1lPT0iRWRn
ZSIKICAgIGUuZXJhc2UhIGlmIGUuc3RhcnQucG9zaXRpb24ueD09ZS5lbmQu
cG9zaXRpb24ueCAmJiBlLnN0YXJ0LnBvc2l0aW9uLnk9PWUuZW5kLnBvc2l0
aW9uLnkKICBlbmQjaWYKIH0KZW5kI3RoaXMKU2tldGNodXA6OnNldF9zdGF0
dXNfdGV4dCgiTWFuc2FyZC9TcHJvY2tldCBSb29mOiBGaW5pc2hpbmcuLi4i
LFNCX1BST01QVCkKIyMjIGVyYXNlIGZhY2VsZXNzIGVkZ2VzLi4uCnJlcC50
aW1lcyBkbyB8dGhpc3wKIHJvb2ZfZW50aXRpZXMuZWFjaHt8ZXwKICBpZiBl
LnR5cGVuYW1lPT0iRWRnZSIKICAgIGUuZXJhc2UhIGlmICEgZS5mYWNlc1sw
XQogIGVuZCNpZgogfQplbmQjdGhpcwpTa2V0Y2h1cDo6c2V0X3N0YXR1c190
ZXh0KCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Y6IEZpbmlzaGluZy4uLi4iLFNC
X1BST01QVCkKIyMjIHJlbW92ZSBvbmUgZmFjZSBlZGdlcyA9IG9mZiBiYXNl
Li4uCnJlcC50aW1lcyBkbyB8dGhpc3wKIHJvb2ZfZW50aXRpZXMuZWFjaHt8
ZXwKICBpZiBlLnR5cGVuYW1lPT0iRWRnZSIKICAgIGUuZXJhc2UhIGlmICEg
ZS5mYWNlc1sxXQogIGVuZCNpZgogfQplbmQjdGhpcwpTa2V0Y2h1cDo6c2V0
X3N0YXR1c190ZXh0KCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Y6IEZpbmlzaGlu
Zy4uLi4uIixTQl9QUk9NUFQpCiMjIyBub3cgcmV2ZXJzZSBmYWNlcyBzbyAn
dXAnCnJvb2ZfZW50aXRpZXMuZWFjaHt8ZXwKICBpZiBlLnR5cGVuYW1lPT0i
RmFjZSIKICAgIGUucmV2ZXJzZSEgaWYgZS5ub3JtYWwubm9ybWFsaXplIS56
IDwwCiAgZW5kI2lmCn0KU2tldGNodXA6OnNldF9zdGF0dXNfdGV4dCgiTWFu
c2FyZC9TcHJvY2tldCBSb29mOiBGaW5pc2hpbmcuLi4uLi4iLFNCX1BST01Q
VCkKIyMjIHJlbW92ZSBhbGwgJ2ZsYXQnIGZhY2VzIGFnYWluLi4uCnJlcC50
aW1lcyBkbyB8dGhpc3wKIHJvb2ZfZW50aXRpZXMuZWFjaHt8ZXwKICBpZiBl
LnR5cGVuYW1lPT0iRmFjZSIKICAgIGUuZXJhc2UhIGlmIGUubm9ybWFsLm5v
cm1hbGl6ZSEueC5hYnM8MS4wZS0wMDYgJiYgZS5ub3JtYWwubm9ybWFsaXpl
IS55LmFiczwxLjBlLTAwNgogIGVuZCNpZgogfQplbmQjdGhpcwpTa2V0Y2h1
cDo6c2V0X3N0YXR1c190ZXh0KCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Y6IEZp
bmlzaGluZy4uLi4uLi4iLFNCX1BST01QVCkKIyMjIHRyYXAgYW55IG5vbi1i
YXNlIG5vbi1mbGF0IGZhY2VzLi4uCmZhY2VzX2hpPVtdCnJvb2ZfZW50aXRp
ZXMuZWFjaHt8ZXwKICBhdHRhY2hlZD10cnVlCiAgaWYgZS50eXBlbmFtZT09
IkZhY2UiICYmIGUuYm91bmRzLm1pbi56ID4genoKICAgIGUuZWRnZXMuZWFj
aHt8ZWV8CiAgICAgIHp6ej1lLmJvdW5kcy5taW4ueiAjIyMgYm90dG9tIGVk
Z2VzCiAgICAgIGlmIGVlLmJvdW5kcy5taW4uej09enp6ICYmIGVlLnN0YXJ0
LnBvc2l0aW9uLno9PWVlLmVuZC5wb3NpdGlvbi56ICMjIyBpdCBpcyBsZXZl
bAogICAgICAgIG90aGVyZmFjZXM9ZWUuZmFjZXMtW2VdCiAgICAgICAgb3Ro
ZXJmYWNlcy5lYWNoe3xmfAogICAgICAgICAgYXR0YWNoZWQ9ZmFsc2UgaWYg
Zi5ib3VuZHMubWluLnogIT0genoKICAgICAgICB9CiAgICAgIGVuZCNpZgog
ICAgfQogICAgZmFjZXNfaGkucHVzaChlKSBpZiBub3QgYXR0YWNoZWQKICBl
bmQjaWYKfQpmYWNlc19oaS5lYWNoe3xmfAogIGNvcGxhbmFyPWZhbHNlCiAg
Zi5lZGdlcy5lYWNoe3xlfAogICAgY29wbGFuYXI9dHJ1ZSBpZiBlLmZhY2Vz
WzFdICYmIGUuZmFjZXNbMF0ubm9ybWFsPT1lLmZhY2VzWzFdLm5vcm1hbAog
ICAgY29wbGFuYXI9dHJ1ZSBpZiBlLmZhY2VzWzJdICYmIGUuZmFjZXNbMF0u
bm9ybWFsPT1lLmZhY2VzWzJdLm5vcm1hbAogICAgY29wbGFuYXI9dHJ1ZSBp
ZiBlLmZhY2VzWzJdICYmIGUuZmFjZXNbMV0ubm9ybWFsPT1lLmZhY2VzWzJd
Lm5vcm1hbAogICAgY29wbGFuYXI9dHJ1ZSBpZiBlLmZhY2VzWzNdICYmIGUu
ZmFjZXNbMF0ubm9ybWFsPT1lLmZhY2VzWzNdLm5vcm1hbAogICAgY29wbGFu
YXI9dHJ1ZSBpZiBlLmZhY2VzWzNdICYmIGUuZmFjZXNbMV0ubm9ybWFsPT1l
LmZhY2VzWzNdLm5vcm1hbAogICAgY29wbGFuYXI9dHJ1ZSBpZiBlLmZhY2Vz
WzNdICYmIGUuZmFjZXNbMl0ubm9ybWFsPT1lLmZhY2VzWzNdLm5vcm1hbAog
IH0KICBmLmVyYXNlISBpZiBmLnZhbGlkPyAmJiAhIGNvcGxhbmFyCn0KZmFj
ZXNfaGkuZWFjaHt8ZnwKICBpZiBmLnZhbGlkPwogICAgZi5lZGdlcy5lYWNo
e3xlfAogICAgICBlLmVyYXNlISBpZiBlLnZhbGlkPyAmJiAhIGUuZmFjZXNb
MV0KICAgIH0KICBlbmQjaWYKfQpTa2V0Y2h1cDo6c2V0X3N0YXR1c190ZXh0
KCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Y6IEZpbmlzaGluZy4uLi4uLi4iLFNC
X1BST01QVCkKIyMjIHRpZHkgdXAgZmFjZWxlc3MgYW5kIGNvcGxhbmFyIGVk
Z2VzIGV0Yy4uLgpyZXAudGltZXMgZG8gfHRoaXN8CiByb29mX2VudGl0aWVz
LmVhY2h7fGV8CiAgaWYgZS50eXBlbmFtZT09IkVkZ2UiCiAgICBlLmVyYXNl
ISBpZiAhIGUuZmFjZXNbMF0jIyMgZmFjZWxlc3MKICBlbmQjaWYgCiAgaWYg
ZS52YWxpZD8gJiYgZS50eXBlbmFtZT09IkVkZ2UiCiAgICBlLmVyYXNlISBp
ZiBlLmZhY2VzWzFdICYmIGUuZmFjZXNbMF0ubm9ybWFsPT1lLmZhY2VzWzFd
Lm5vcm1hbCMjI2NvcGxhbmFyCiAgZW5kI2lmCiB9CmVuZCN0aGlzClNrZXRj
aHVwOjpzZXRfc3RhdHVzX3RleHQoIk1hbnNhcmQvU3Byb2NrZXQgUm9vZjog
RmluaXNoaW5nLi4uLi4uLi4iLFNCX1BST01QVCkKIyMjIHJlbW92ZSBvbmUg
ZmFjZSBlZGdlcyB0aGF0IGFyZSBhYm92ZSBiYXNlIGFuZCBvbmx5IGhhdmUg
b25lIGZhY2UuLi4KcmVwLnRpbWVzIGRvIHx0aGlzfAogcm9vZl9lbnRpdGll
cy5lYWNoe3xlfAogIGlmIGUudHlwZW5hbWU9PSJGYWNlIgogICAgaWYgZS5i
b3VuZHMubWluLnogPiB6egogICAgICBlZGdlcz1lLmVkZ2VzCiAgICAgIGVk
Z2VzLmVhY2h7fGVlfGVlLmVyYXNlISBpZiBlZS52YWxpZD8gJiYgISBlZS5m
YWNlc1sxXX0KICAgIGVuZCNpZgogIGVuZCNpZgogfQplbmQjdGhpcwpTa2V0
Y2h1cDo6c2V0X3N0YXR1c190ZXh0KCJNYW5zYXJkL1Nwcm9ja2V0IFJvb2Y6
IEZpbmlzaGluZy4uLi4uLi4uLiIsU0JfUFJPTVBUKQojIyMgZXJhc2UgYW55
ICdmbG9hdGluZycgYml0cyBvZiByb29mIGFib3ZlIHRoZSBtYWluIGJvZHku
Li4KcmVwLnRpbWVzIGRvIHx0aGlzfAogcm9vZl9lbnRpdGllcy5lYWNoe3xl
fAogIGlmIGUudHlwZW5hbWU9PSJGYWNlIiAmJiBmYWNlc19oaS5pbmNsdWRl
PyhlKQogICAgaWYgZS5ib3VuZHMubWluLnogPiB6egogICAgICBlZGdlcz1l
LmVkZ2VzCiAgICAgIGVkZ2VzLmVhY2h7fGVlfGVlLmVyYXNlISBpZiBlZS52
YWxpZD99CiAgICBlbmQjaWYKICBlbmQjaWYKIH0KZW5kI3RoaXMKU2tldGNo
dXA6OnNldF9zdGF0dXNfdGV4dCgiTWFuc2FyZC9TcHJvY2tldCBSb29mOiBG
aW5pc2hlZC4iLFNCX1BST01QVCkKIyMjIGVyYXNlIGZhY2VsZXNzIGVkZ2Vz
IGFnYWluLi4uCnJlcC50aW1lcyBkbyB8dGhpc3wKIHJvb2ZfZW50aXRpZXMu
ZWFjaHt8ZXwKICBpZiBlLnR5cGVuYW1lPT0iRWRnZSIKICAgIGUuZXJhc2Uh
IGlmICEgZS5mYWNlc1swXQogIGVuZCNpZgogfQplbmQjdGltZXMKIyMjIGlm
IGZhaWxzLi4uCmlmICEgcm9vZl9lbnRpdGllc1swXSB8fCByb29mX2VudGl0
aWVzLmxlbmd0aCA8PSBjb3VudCoyCiAgVUkubWVzc2FnZWJveCgiTWFuc2Fy
ZC9TcHJvY2tldCBSb29mIEVycm9yOlxuXG5JdCB3YXMgbm90IHBvc3NpYmxl
IHRvIG1ha2UgYSBzaW5nbGUgcGl0Y2ggbWFuc2FyZC9zcHJvY2tldCByb29m
IGZyb20gdGhpcyBmYWNlLlxuXG5Tb21ldGltZXMgdGhlIGZhY2UvZWRnZSBy
ZWxhdGlvbnNoaXBzIGdldCBtdWRkbGVkIGluIHRoZSBtb2RlbCdzIGRhdGFi
YXNlLlxuVHJ5IHJlLW1ha2luZyB0aGUgb3JpZ2luYWwgZmFjZTpcbi0gRGVs
ZXRlIGl0IGFuZCByZWRyYXcgb3ZlciBvbmUgZWRnZSB0byByZW1ha2UgaXQu
ICBcbk9yIGNvcHkgdGhlIGZhY2UgdG8gb25lIHNpZGUsIGRlbGV0ZSB0aGUg
b3JpZ2luYWwgYW5kIG1vdmUgdGhlIGNvcHkgYmFjay4gIFxuVGhpcyBtZXRo
b2RzIGNhbiBvZnRlbiBtYWtlIGEgZmFjZSAncm9vZicuXG5cbklmIG5vdCwg
dGhlbiB0cnkgc3ViLWRpdmlkaW5nIHRoZSBmYWNlIGludG8gcGllY2VzIGFu
ZCBqb2luaW5nIHRoZWlyIHJvb2ZzIG1hbnVhbGx5LlxuXG5Ob3RlIHRoYXQg
c29tZSBmYWNlIHNoYXBlcyBjYW4gbmV2ZXIgYmUgcm9vZmVkIHdpdGggYSBz
aW5nbGUgcGl0Y2guXG5lLmcuIGNyb29rZWQgc3RhcnMuXG5cbkV4aXRpbmcu
Li4iKQogIHJvb2ZfZ3JvdXAuZXJhc2UhIGlmIHJvb2ZfZ3JvdXAudmFsaWQ/
CiAgIyMjIHRpZHkgdXAgYXQgZW5kICMjIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQG1vZGVsLnNlbGVj
dGlvbi5jbGVhcgogIEBtb2RlbC5zZWxlY3Rpb24uYWRkKG9mYWNlKSMjIyBl
bmQgd2l0aCBvcmlnaW5hbCBmYWNlIHJlLXNlbGVjdGVkCiAgQG1vZGVsLmFj
dGl2ZV92aWV3LmludmFsaWRhdGUKICBAbW9kZWwuY29tbWl0X29wZXJhdGlv
bgogIFNrZXRjaHVwLnNlbmRfYWN0aW9uInNlbGVjdFNlbGVjdGlvblRvb2w6
IgogIHJldHVybiBuaWwKZW5kI2lmCiMjIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQojIyMgY29ycmVjdCBmb3IgZmFzY2lhCnJvb2ZfZ3JvdXAubW92ZSEo
R2VvbTo6VHJhbnNmb3JtYXRpb24ubmV3KFswLDAsZmFjX3VwXSkpaWYgZmFj
X3VwPjAKIyMjCiMjIyBzb3J0IG91dCBzb2ZmaXQgIyMjLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzb2ZmaXRf
Z3JvdXA9ZW50aXRpZXMuYWRkX2dyb3VwIyMjdjMuMApzb2ZmaXRfZW50aXRp
ZXM9c29mZml0X2dyb3VwLmVudGl0aWVzIyMjdjMuMApmYWNlPXNvZmZpdF9l
bnRpdGllcy5hZGRfZmFjZShvcG9pbnRzKSMjI3YzLjAKaWYgc29mPjAgIyMj
djMuMAogIHNmYWNlPWZhY2Uub2Zmc2V0X2VhdmVzKHNvZikKICB2ZXJ0cz1m
YWNlLnZlcnRpY2VzCiAgc3ZlcnRzPXNmYWNlLm91dGVyX2xvb3AudmVydGlj
ZXMKICBzZmFjZS5yZXZlcnNlISBpZiBzZmFjZS5ub3JtYWwuej4wCiAgZmFj
ZS5lcmFzZSEgaWYgZmFjZS52YWxpZD8jIyMgbWFrZSB0aGUgaG9sZQplbmQj
aWYKIyMjCmlmIHNvZj4wICYmIHNvZl91cD4wCiAgIyMjIGZvbGQgc29mZml0
IGlmIHNsb3BpbmcuLi4KIHZlcnRzLmVhY2h7fHZ8CiAgcG9zPXYucG9zaXRp
b24KICBwb3NuPVtwb3MueCxwb3MueSxwb3Mueitzb2ZfdXBdCiAgdmVjPXBv
cy52ZWN0b3JfdG8ocG9zbikKICB0cmFuPUdlb206OlRyYW5zZm9ybWF0aW9u
LnRyYW5zbGF0aW9uKHZlYykKICBzb2ZmaXRfZW50aXRpZXMudHJhbnNmb3Jt
X2VudGl0aWVzKHRyYW4sdikKIH0KICMjIyBlcmFzZSBjb3BsYW5hciBlZGdl
cy4KIHNvZmZpdF9lbnRpdGllcy5lYWNoe3xlfAogIGlmIGUudHlwZW5hbWU9
PSJFZGdlIgogICAgaWYgZS5mYWNlc1sxXSBhbmQgbm90IGUuZmFjZXNbMl0K
CSAgZS5lcmFzZSEgaWYgZS5mYWNlc1swXS5ub3JtYWw9PWUuZmFjZXNbMV0u
bm9ybWFsIGFuZCBlLnZhbGlkPwoJZW5kI2lmCgllLmVyYXNlISBpZiBlLnZh
bGlkPyBhbmQgbm90IGUuZmFjZXNbMF0KICBlbmQjaWYKIH0jIyMKZW5kI2lm
IHNvZl91cAojIyMgbW92ZSB3aG9sZSByb29mIGdyb3VwIGRvd24gYnkgc29m
X3VwIHNvIGl0IHNpdHMgb24gc2VsZWN0ZWQgZmFjZS4KdHJ6PUdlb206OlRy
YW5zZm9ybWF0aW9uLm5ldyhbMCwwLHNvZl91cCotMStmYWNfdXBdKWlmIHNv
Zl91cD4wIyMjdjMuMApyb29mX2dyb3VwLm1vdmUhKHRyeilpZiBzb2ZfdXA+
MCMjI3YzLjAKdHJ6PUdlb206OlRyYW5zZm9ybWF0aW9uLm5ldyhbMCwwLHNv
Zl91cCotMV0paWYgc29mX3VwPjAjIyN2My4wCnNvZmZpdF9ncm91cC5tb3Zl
ISh0cnopaWYgc29mX3VwPjAjIyN2My4wCiMjI3YzLjAKIyMjIHNvcnQgb3V0
IGZhc2NpYSBldGMgIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpmYXNjaWFfZ3JvdXA9ZW50aXRpZXMuYWRkX2dy
b3VwCmZhc2NpYV9lbnRpdGllcz1mYXNjaWFfZ3JvdXAuZW50aXRpZXMKZmFj
ZT1mYXNjaWFfZW50aXRpZXMuYWRkX2ZhY2Uob3BvaW50cykKIyMjCmlmIGZh
Y19vdXQ9PTAKICBmZmFjZT1mYWNlLm9mZnNldF9lYXZlcyhzb2YpIGlmIHNv
Zj4wCiAgZmZhY2U9ZmFjZSBpZiBzb2Y9PTAKICB4dmVydHM9ZmZhY2Uub3V0
ZXJfbG9vcC52ZXJ0aWNlcwogIHh4cG9pbnRzPVtdCiAgeHZlcnRzLmVhY2h7
fGV8CiAgICBlZT1lLnBvc2l0aW9uLnRvX2EKICAgIHh4cG9pbnRzLnB1c2go
W2VlWzBdLGVlWzFdLGVlWzJdK2ZhY191cF0pCiAgfQogIGVkZ2VzMmdvPWZh
Y2UuZWRnZXMgaWYgc29mPjAKICBlZGdlczJnby5lYWNoe3xlfGUuZXJhc2Uh
fSBpZiBzb2Y+MAogIGZhc2NpYV9lbnRpdGllcy5hZGRfZmFjZSh4eHBvaW50
cykKICBmYXNjaWFfZW50aXRpZXMuZWFjaHt8ZXxlLmVyYXNlISBpZiBlLnR5
cGVuYW1lPT0iRmFjZSJ9CiAgdmxpbmVzPVtdCiAgeHZlcnRzLmVhY2h7fGV8
CiAgICBlZT1lLnBvc2l0aW9uLnRvX2EKICAgIHY9ZmFzY2lhX2VudGl0aWVz
LmFkZF9saW5lKGVlLFtlZVswXSxlZVsxXSxlZVsyXStmYWNfdXBdKQogICAg
dmxpbmVzLnB1c2godikKICB9CiAgdmxpbmVzLmVhY2h7fGV8ZS5maW5kX2Zh
Y2VzIGlmIGV9CiAgZmFzY2lhX2VudGl0aWVzLmVhY2h7fGV8ZS5yZXZlcnNl
ISBpZiBlLnR5cGVuYW1lPT0iRmFjZSJ9CmVsc2UgIyMjIGZhY19vdXQgPiAw
ID09c2xvcGluZwogIGZmYWNlPWZhY2Uub2Zmc2V0X2VhdmVzKHNvZikgaWYg
c29mPjAKICBmZmFjZT1mYWNlIGlmIHNvZj09MAogIGVkZ2VzMmdvPWZhY2Uu
ZWRnZXMgaWYgc29mPjAKICBmZmZhY2U9ZmZhY2Uub2Zmc2V0X2VhdmVzKGZh
Y19vdXQpCiAgZmZmYWNlLnJldmVyc2UhIGlmIGZmZmFjZS5ub3JtYWwuej4w
CiAgZmZhY2UuZXJhc2UhIGlmIGZmYWNlLnZhbGlkPwogIGZhY2UuZXJhc2Uh
IGlmIGZhY2UudmFsaWQ/CiAgZWRnZXMyZ28uZWFjaHt8ZXxlLmVyYXNlISBp
ZiBlLnZhbGlkP30gaWYgc29mPjAKICBmdmVydHM9ZmZmYWNlLm91dGVyX2xv
b3AudmVydGljZXMKICBmdmVydHMuZWFjaHt8dnwKICAgIHBvcz12LnBvc2l0
aW9uCiAgICBwb3NuPVtwb3MueCxwb3MueSxwb3MueitmYWNfdXBdCiAgICB2
ZWM9cG9zLnZlY3Rvcl90byhwb3NuKQogICAgdHJhbj1HZW9tOjpUcmFuc2Zv
cm1hdGlvbi50cmFuc2xhdGlvbih2ZWMpCiAgICBmYXNjaWFfZW50aXRpZXMu
dHJhbnNmb3JtX2VudGl0aWVzKHRyYW4sdikKICB9CiAgIyMjIGVyYXNlIGNv
cGxhbmFyIGVkZ2VzLgogIGZhc2NpYV9lbnRpdGllcy5lYWNoe3xlfAogICAg
aWYgZS50eXBlbmFtZT09IkVkZ2UiCiAgICAgIGlmIGUuZmFjZXNbMV0gYW5k
IG5vdCBlLmZhY2VzWzJdCgkgICAgZS5lcmFzZSEgaWYgZS5mYWNlc1swXS5u
b3JtYWw9PWUuZmFjZXNbMV0ubm9ybWFsIGFuZCBlLnZhbGlkPwoJICBlbmQj
aWYKCSAgZS5lcmFzZSEgaWYgZS52YWxpZD8gYW5kIG5vdCBlLmZhY2VzWzBd
CiAgICBlbmQjaWYKICB9CmVuZCNpZgojIyMgbW92ZSB3aG9sZSBmYXNjaWEg
Z3JvdXAgZG93biBieSBzb2ZfdXAgc28gaXQgc2l0cyBvbiBzZWxlY3RlZCBm
YWNlLgp0cno9R2VvbTo6VHJhbnNmb3JtYXRpb24ubmV3KFswLDAsc29mX3Vw
Ki0xXSkKZmFzY2lhX2dyb3VwLm1vdmUhKHRyeikKIyMjIG1vdmUgb3JpZ2lu
IGJhc2VkIGZhY2VzIGV0YyBiYWNrIGludG8gcGxhY2UgdG8gYXZvaWQgYnVn
c3BsYXRzICMjIy0tCmlmIG9yaWdpbgogIHRyPUdlb206OlRyYW5zZm9ybWF0
aW9uLm5ldyhvcnB0KQogIHRyej1HZW9tOjpUcmFuc2Zvcm1hdGlvbi5uZXco
WzAsMCwwXSkKICByb29mX2dyb3VwLm1vdmUhKHRyeikKICAjIyMgY29ycmVj
dCBmb3IgZmFzY2lhID8KICByb29mX2dyb3VwLm1vdmUhKEdlb206OlRyYW5z
Zm9ybWF0aW9uLm5ldyhbMCwwLGZhY191cF0pKWlmIGZhY191cD4wCiAgc29m
Zml0X2dyb3VwLm1vdmUhKHRyeikKICBmYXNjaWFfZ3JvdXAubW92ZSEodHJ6
KQplbmQjaWYKIyMjdjMuMAojIyMgTW92ZWQgbWF0ZXJpYWxzIGRpYWxvZyB0
byBhZnRlciByb29mIGlzIG1hZGUuLi4KZGVmIFJvb2Y6OmRpYWxvZ19tYXRz
X21hbiAoKQojIyMgbWF0ZXJpYWxzIGRpYWxvZyAjIyMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBtb2RlbD1T
a2V0Y2h1cC5hY3RpdmVfbW9kZWwKICAjIyMgbGF5ZXJzLi4uCiAgbWxheWVy
cz1tb2RlbC5sYXllcnMKICBhbGF5ZXI9bW9kZWwuYWN0aXZlX2xheWVyCiAg
bW9kZWwuYWN0aXZlX2xheWVyPW5pbAogIGRlZmxheWVyPW1vZGVsLmFjdGl2
ZV9sYXllci5uYW1lCiAgbW9kZWwuYWN0aXZlX2xheWVyPWFsYXllcgogIHJs
YXllcj0iLVJPT0YiIyMjIGVkaXQgdGhpcyB0byBzdWl0IHlvdXIgZGVzaXJl
ZCBkZWZhdWx0IHJvb2YgbGF5ZXIuCiAgbGF5ZXJzPVtdCiAgbWxheWVycy5l
YWNoe3xsYXllcnxsYXllcnMucHVzaChsYXllci5uYW1lKWlmIGxheWVyLm5h
bWUhPWRlZmxheWVyfQogIGxheWVycz1bcmxheWVyLGRlZmxheWVyXStsYXll
cnMuc29ydCEKICBsYXllcnM9bGF5ZXJzLnVuaXEuam9pbignfCcpCiAgIyMj
IG1hdGVyaWFscy4uLgogIG1hdF9yb29mPSJSb29mIFN1cmZhY2UiCiAgbWF0
X2Zhc2NpYT0iUm9vZiBGYXNjaWEiCiAgbWF0X3NvZmZpdD0iUm9vZiBTb2Zm
aXQiCiAgbWF0ZXJpYWxzPW1vZGVsLm1hdGVyaWFscwogIG1hdHM9W10KICBt
YXRlcmlhbHMuZWFjaHt8bWF0fG1hdHMucHVzaChtYXQubmFtZSl9CiAgbWF0
cy5zb3J0IQogIGxpc3RfbWF0X3Jvb2Y9KChbIjxEZWZhdWx0PiJdK1ttYXRf
cm9vZl0rbWF0cykudW5pcSkuam9pbigifCIpCiAgbGlzdF9tYXRfZmFzY2lh
PSgoWyI8RGVmYXVsdD4iXStbbWF0X2Zhc2NpYV0rbWF0cykudW5pcSkuam9p
bigifCIpCiAgbGlzdF9tYXRfc29mZml0PSgoWyI8RGVmYXVsdD4iXStbbWF0
X3NvZmZpdF0rbWF0cykudW5pcSkuam9pbigifCIpCiAgIyMjIHNldCB1cCB2
YXJpYWJsZXMuLi4KICBAbGF5ZXI9cmxheWVyIGlmICEgQGxheWVyCiAgQG1h
dF9yb29mPW1hdF9yb29mIGlmICEgQG1hdF9yb29mCiAgQG1hdF9mYXNjaWE9
bWF0X2Zhc2NpYSBpZiAhIEBtYXRfZmFzY2lhCiAgQG1hdF9zb2ZmaXQ9bWF0
X3NvZmZpdCBpZiAhIEBtYXRfc29mZml0CiAgZW51bXM9W2xheWVycyxsaXN0
X21hdF9yb29mLGxpc3RfbWF0X2Zhc2NpYSxsaXN0X21hdF9zb2ZmaXRdCiAg
cHJvbXB0cz1bIlJvb2YgTGF5ZXI6ICAiLCJSb29mIFN1cmZhY2U6ICAiLCJS
b29mIEZhc2NpYTogICIsIlJvb2YgU29mZml0OiAiXQogIHZhbHVlcz1bQGxh
eWVyLEBtYXRfcm9vZixAbWF0X2Zhc2NpYSxAbWF0X3NvZmZpdF0KICBAb3Ro
ZXJfcmVzdWx0cz0oaW5wdXRib3ggcHJvbXB0cyx2YWx1ZXMsZW51bXMsIlJv
b2YgTGF5ZXIgYW5kIE1hdGVyaWFscyIpCiAgQGxheWVyLEBtYXRfcm9vZixA
bWF0X2Zhc2NpYSxAbWF0X3NvZmZpdD1Ab3RoZXJfcmVzdWx0cyBpZiBAb3Ro
ZXJfcmVzdWx0cwogIEBvdGhlcj0iTm8iIGlmICEgQG90aGVyX3Jlc3VsdHMK
ICAjIyMKZW5kI2RlZgojIyMgcnVuIG1hdGVyaWFsIGRpYWxvZwogIFJvb2Y6
OmRpYWxvZ19tYXRzX21hbigpIGlmIEBvdGhlcj09IlllcyIKIyMjIAojIyN2
My4wCiMjIyBzb3J0IG91dCBsYXllciwgbWF0ZXJpYWxzIGV0YyAjIyMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiBAb3RoZXI9PSJZ
ZXMiCiAgIyMjIG5vdGUgdGhhdCBsYXllciBpcyBzZXQgYWZ0ZXIgZ3JvdXBz
IGNvbWJpbmVkLi4uCiAgZXh0Zz1uaWw7QG1vZGVsLmxheWVycy5lYWNoe3xs
eXJ8ZXh0Zz1seXIgaWYgbHlyLm5hbWU9PUBsYXllcn0KICBpZiBAbGF5ZXI9
PSI8RGVmYXVsdD4iCiAgICBsYXlyPW5pbAogIGVsc2UKICAgIGlmIGV4dGcK
ICAgICAgbGF5cj1leHRnCiAgICBlbHNlCiAgICAgIGxheXI9QG1vZGVsLmxh
eWVycy5hZGQoQGxheWVyKQogICAgZW5kI2lmCiAgZW5kI2lmCiAgIyMjIG1h
dGVyaWFscy4uLgogICMjIyByb29mCiAgZXh0Zz1uaWw7QG1vZGVsLm1hdGVy
aWFscy5lYWNoe3xtYXR8ZXh0Zz1tYXQgaWYgbWF0Lm5hbWU9PUBtYXRfcm9v
Zn0KICBpZiBAbWF0X3Jvb2Y9PSI8RGVmYXVsdD4iCiAgICBtYXRfcj1uaWwK
ICBlbHNlCiAgICBpZiBleHRnCiAgICAgIG1hdF9yPWV4dGcKICAgIGVsc2UK
ICAgICAgbWF0X3I9QG1vZGVsLm1hdGVyaWFscy5hZGQoQG1hdF9yb29mKQog
ICAgICBtYXRfci5jb2xvcj1bMTExLDExMSwxMTFdIyMjIGFkanVzdCBkZWZh
dWx0IGNvbG91cnMgaGVyZS4KICAgIGVuZCNpZgogIGVuZCNpZgogIHJvb2Zf
ZW50aXRpZXMuZWFjaHt8ZXxlLm1hdGVyaWFsPW1hdF9yIGlmIGUudHlwZW5h
bWU9PSJGYWNlIn0KICAjIyMgZmFzY2lhCiAgZXh0Zz1uaWw7QG1vZGVsLm1h
dGVyaWFscy5lYWNoe3xtYXR8ZXh0Zz1tYXQgaWYgbWF0Lm5hbWU9PUBtYXRf
ZmFzY2lhfQogIGlmIEBtYXRfZmFzY2lhPT0iPERlZmF1bHQ+IgogICAgbWF0
X2Y9bmlsCiAgZWxzZQogICAgaWYgZXh0ZwogICAgICBtYXRfZj1leHRnCiAg
ICBlbHNlCiAgICAgIG1hdF9mPUBtb2RlbC5tYXRlcmlhbHMuYWRkKEBtYXRf
ZmFzY2lhKQogICAgICBtYXRfZi5jb2xvcj1bNjYsNjYsNjZdIyMjIGFkanVz
dCBkZWZhdWx0IGNvbG91cnMgaGVyZS4KICAgIGVuZCNpZgogIGVuZCNpZgog
IGZhc2NpYV9lbnRpdGllcy5lYWNoe3xlfGUubWF0ZXJpYWw9bWF0X2YgaWYg
ZS50eXBlbmFtZT09IkZhY2UifQogICMjIyBzb2ZmaXQKICBleHRnPW5pbDtA
bW9kZWwubWF0ZXJpYWxzLmVhY2h7fG1hdHxleHRnPW1hdCBpZiBtYXQubmFt
ZT09QG1hdF9zb2ZmaXR9CiAgaWYgQG1hdF9zb2ZmaXQ9PSI8RGVmYXVsdD4i
CiAgICBtYXRfcz1uaWwKICBlbHNlCiAgICBpZiBleHRnCiAgICAgIG1hdF9z
PWV4dGcKICAgIGVsc2UKICAgICAgbWF0X3M9QG1vZGVsLm1hdGVyaWFscy5h
ZGQoQG1hdF9zb2ZmaXQpCiAgICAgIG1hdF9zLmNvbG9yPVsyMjIsMjIyLDIy
Ml0jIyMgYWRqdXN0IGRlZmF1bHQgY29sb3VycyBoZXJlLgogICAgZW5kI2lm
CiAgZW5kI2lmCiAgc29mZml0X2VudGl0aWVzLmVhY2h7fGV8ZS5tYXRlcmlh
bD1tYXRfcyBpZiBlLnR5cGVuYW1lPT0iRmFjZSJ9CiAgIyMjCmVuZCNpZgoj
IyMgY29tYmluZSBwaWVjZXMgIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KdGdyb3VwPWVudGl0aWVzLmFk
ZF9ncm91cChyb29mX2dyb3VwLHNvZmZpdF9ncm91cCxmYXNjaWFfZ3JvdXAp
CnJvb2ZfZ3JvdXAuZXhwbG9kZQpzb2ZmaXRfZ3JvdXAuZXhwbG9kZQpmYXNj
aWFfZ3JvdXAuZXhwbG9kZQpyb29mX2dyb3VwPXRncm91cAojIyMKcm9vZl9n
cm91cC5sYXllcj1sYXlyIGlmIEBvdGhlcj09IlllcyIjIyMgbGF5ZXIgc2V0
IGhlcmUuLi4KIyMjIHRpZHkgdXAgYXQgZW5kICMjIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBtb2RlbC5z
ZWxlY3Rpb24uY2xlYXIKQG1vZGVsLnNlbGVjdGlvbi5hZGQob2ZhY2UpIyMj
IGVuZCB3aXRoIG9yaWdpbmFsIGZhY2UgcmUtc2VsZWN0ZWQKQG1vZGVsLmFj
dGl2ZV92aWV3LmludmFsaWRhdGUKQG1vZGVsLmNvbW1pdF9vcGVyYXRpb24K
U2tldGNodXAuc2VuZF9hY3Rpb24ic2VsZWN0U2VsZWN0aW9uVG9vbDoiCiAg
IyMjCmVuZCNkZWYgbWFuc2FyZAoKCgoKCgoKCgoKCmRlZiBSb29mOjpnYWJs
ZShwdHMpCglTa2V0Y2h1cDo6c2V0X3N0YXR1c190ZXh0ICJSb29mIEdhYmxl
OiIKICAgIEBtb2RlbD1Ta2V0Y2h1cC5hY3RpdmVfbW9kZWwKCWVudGl0aWVz
PUBtb2RlbC5hY3RpdmVfZW50aXRpZXMKCXAxPXB0c1swXTsgcDI9cHRzWzFd
OyBwZD1wdHNbMl0KCXoxPXAxLno7IHAyLno9ejE7IHBkLno9ejEKCWlmIChw
MT09cDIgfHwgcDI9PXBkKSB8fCAocGQ9PXAxKQoJICBVSS5tZXNzYWdlYm94
KCJSb29mIEdhYmxlOlxuQ2FuJ3QgaGF2ZSBhbnkgcG9pbnRzIGluIHRoZSBz
YW1lIGxvY2F0aW9uIGluIHBsYW4gIVxuVHJ5IGFnYWluLi4uIikKCSAgU2tl
dGNodXAuc2VuZF9hY3Rpb24gInNlbGVjdFNlbGVjdGlvblRvb2w6IgoJICBy
ZXR1cm4gbmlsCgllbmQjaWYKCWFuZzEyPShwMS52ZWN0b3JfdG8ocDIpKS50
b19mbGF0X2FuZ2xlCglhbmcyZD0ocDIudmVjdG9yX3RvKHBkKSkudG9fZmxh
dF9hbmdsZQoJYW5nPShhbmcyZC1hbmcxMikudG9fZgoJaWYgYW5nLmFicz1+
MC4wLmRlZ3JlZXMgfHwgYW5nLmFicz1+MTgwLjAuZGVncmVlcwoJICBVSS5t
ZXNzYWdlYm94KCJSb29mIEdhYmxlOlxuQ2FuJ3QgaGF2ZSAzIHBvaW50cyBp
biBhIGxpbmUgIVxuVHJ5IGFnYWluLi4uIikKCSAgU2tldGNodXAuc2VuZF9h
Y3Rpb24gInNlbGVjdFNlbGVjdGlvblRvb2w6IgoJICByZXR1cm4gbmlsCgll
bmQjaWYKIyMjIGRvIGdhYmxlIGRpYWxvZy4uLgpkZWYgUm9vZjo6ZGlhbG9n
X2dhYmxlICgpCiMjIyBkaWFsb2cgIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAcGl0Y2hH
PSIxOjIiIGlmICEgQHBpdGNoRyAmJiBAbW9kZWwub3B0aW9uc1siVW5pdHNP
cHRpb25zIl1bIkxlbmd0aFVuaXQiXTwyCkBwaXRjaEc9IjMwIiBpZiAhIEBw
aXRjaEcgJiYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5n
dGhVbml0Il0+MQpAZmFzY2lhPTguaW5jaCBpZiAhIEBmYXNjaWEgJiYgQG1v
ZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il08MgpA
ZmFzY2lhPTIwMC5tbSBpZiAhIEBmYXNjaWEgJiYgQG1vZGVsLm9wdGlvbnNb
IlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il0+MQpAc29mZml0PTE2Lmlu
Y2ggaWYgISBAc29mZml0ICYmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlv
bnMiXVsiTGVuZ3RoVW5pdCJdPDIKQGdhYmxlMT00MDAubW0gaWYgISBAZ2Fi
bGUxICYmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3Ro
VW5pdCJdPjEKQGdhYmxlMT0xNi5pbmNoIGlmICEgQGdhYmxlMSAmJiBAbW9k
ZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXTwyCkBn
YWJsZTI9NDAwLm1tIGlmICEgQGdhYmxlMiAmJiBAbW9kZWwub3B0aW9uc1si
VW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXT4xCkBnYWJsZTI9MTYuaW5j
aCBpZiAhIEBnYWJsZTIgJiYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9u
cyJdWyJMZW5ndGhVbml0Il08MgpAc29mZml0PTQwMC5tbSBpZiAhIEBzb2Zm
aXQgJiYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhV
bml0Il0+MQpAZ2FibGUxdHlwZT0iVmVyZ2UgZnJvbSBGYXNjaWEiIGlmICEg
QGdhYmxlMXR5cGUKQGdhYmxlMnR5cGU9IlZlcmdlIGZyb20gRmFzY2lhIiBp
ZiAhIEBnYWJsZTJ0eXBlCkBmc3R5cGU9IlZlcnRpY2FsK0hvcml6b250YWwi
IGlmICEgQGZzdHlwZSMjI3YzLjAKZnN0eXBlcz0iVmVydGljYWwrSG9yaXpv
bnRhbHxWZXJ0aWNhbCtTbG9waW5nfFNsb3BpbmcrU2xvcGluZ3xTbG9waW5n
K0hvcml6b250YWwiIyMjdjMuMApAb3RoZXI9Ik5vIiBpZiAhIEBvdGhlcgpA
dW5pdHM9ImluY2hlcyIgaWYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9u
cyJdWyJMZW5ndGhVbml0Il09PTAKQHVuaXRzPSJmZWV0IiBpZiBAbW9kZWwu
b3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXT09MQpAdW5p
dHM9Im1tIiBpZiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxl
bmd0aFVuaXQiXT09MgpAdW5pdHM9ImNtIiBpZiBAbW9kZWwub3B0aW9uc1si
VW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXT09MwpAdW5pdHM9Im0iIGlm
IEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJd
PT00CmdhYmxldHlwZXM9IkJsYW5rfEJsYW5rIHdpdGggRmFzY2lhfFZlcmdl
IGZyb20gRmFzY2lhfFZlcmdlIGZyb20gU29mZml0fFZlcmdlIGJ5IEhlaWdo
dHxWZXJnZSBieSBXaWR0aHxWZXJnZSBieSBIZWlnaHQsIHdpdGggRmFzY2lh
fFZlcmdlIGJ5IFdpZHRoLCB3aXRoIEZhc2NpYXxWZXJnZSB3aXRoIEZhc2Np
YSBbQWxsIEVxdWFsXXxWZXJnZSBieSBIZWlnaHQsIHdpdGggQm94LUVhdmVz
fFZlcmdlIGJ5IFdpZHRoLCB3aXRoIEJveC1FYXZlcyIKZW51bXM9WyIiLCIi
LCIiLGZzdHlwZXMsIiIsIiIsZ2FibGV0eXBlcyxnYWJsZXR5cGVzLCJZZXN8
Tm8iXSMjI3YzLjAKcHJvbXB0cz1bIlJvb2YgU2xvcGUgKGluIERlZ3JlZXMg
b3IgQTpCIG9yIF5IZWlnaHQoI3tAdW5pdHN9KSk6ICAiLCJFYXZlcyBGYXNj
aWEgU2l6ZSgje0B1bml0c30pOiAgIiwiRWF2ZXMgU29mZml0IFNpemUoI3tA
dW5pdHN9KTogICIsIkZhc2NpYStTb2ZmaXQgVHlwZTogICIsIkZpcnN0IEdh
YmxlIFNpemUoI3tAdW5pdHN9KTogIiwiU2Vjb25kIEdhYmxlIFNpemUoI3tA
dW5pdHN9KTogIiwiRmlyc3QgR2FibGUgVHlwZTogIiwiU2Vjb25kIEdhYmxl
IFR5cGU6ICIsIlNldCBMYXllciBhbmQgTWF0ZXJpYWxzID8gOiJdIyMjdjMu
MAp2YWx1ZXM9W0BwaXRjaEcsQGZhc2NpYSxAc29mZml0LEBmc3R5cGUsQGdh
YmxlMSxAZ2FibGUyLEBnYWJsZTF0eXBlLEBnYWJsZTJ0eXBlLEBvdGhlcl0j
IyN2My4wCkByZXN1bHRzPShpbnB1dGJveCBwcm9tcHRzLHZhbHVlcyxlbnVt
cywiR2FibGUgUm9vZiBTZXR0aW5ncyIpCihTa2V0Y2h1cC5zZW5kX2FjdGlv
biAic2VsZWN0U2VsZWN0aW9uVG9vbDoiOyByZXR1cm4gbmlsKSBpZiAhIEBy
ZXN1bHRzCihAcGl0Y2hfcyxAZmFzY2lhXyxAc29mZml0XyxAZnN0eXBlXyxA
Z2FibGUxXyxAZ2FibGUyXyxAZ2FibGUxdHlwZV8sQGdhYmxlMnR5cGVfLEBv
dGhlcl8pPUByZXN1bHRzCkBwaXRjaEc9QHBpdGNoX3M7QGZhc2NpYT1AZmFz
Y2lhXztAc29mZml0PUBzb2ZmaXRfO0Bmc3R5cGU9QGZzdHlwZV87IyMjdjMu
MApAZ2FibGUxPUBnYWJsZTFfO0BnYWJsZTI9QGdhYmxlMl87QGdhYmxlMXR5
cGU9QGdhYmxlMXR5cGVfO0BnYWJsZTJ0eXBlPUBnYWJsZTJ0eXBlXztAb3Ro
ZXI9QG90aGVyXwojIyMgc29ydCBpZiBeaGVpZ2h0IG9yIHNsb3BlLi4uCmlm
IEBwaXRjaF9zLnNwbGl0KCIiKVswXT09Il4iCiAgZ2h0PUBwaXRjaF9zWzEu
Li0xXS50b19mCiAgZ2h0PWdodC50b19sIGlmIEB1bml0cz09ImluY2hlcyIK
ICBnaHQ9Z2h0LmZlZXQgaWYgQHVuaXRzPT0iZmVldCIKICBnaHQ9Z2h0Lm1t
IGlmIEB1bml0cz09Im1tIgogIGdodD1naHQuY20gaWYgQHVuaXRzPT0iY20i
CiAgZ2h0PWdodC5tIGlmIEB1bml0cz09Im0iCiAgYWRqPShAb2VkZ2UubGVu
Z3RoLzIpK0Bzb2ZmaXQKICBAcGl0Y2hfZD0oTWF0aDo6YXRhbihnaHQvYWRq
KSkucmFkaWFucwplbHNlI2l0J3MgYW4gYW5nbGUKICAjIyMgZ2V0IGFuZ2xl
IG9mIHJvb2YgaW4gcmFkaWFucwogIHJhdGlvPUBwaXRjaF9zLnNwbGl0KCI6
IikudG9fZgogIGlmIHJhdGlvWzFdCiAgICB0YW49cmF0aW9bMF0vcmF0aW9b
MV0KICAgIEBwaXRjaF9kPShNYXRoOjphdGFuKHRhbikpLnJhZGlhbnMKICBl
bHNlCiAgICBAcGl0Y2hfZD1yYXRpb1swXQogIGVuZCNpZgplbmQjaWYKQHBp
dGNoX3I9QHBpdGNoX2QuZGVncmVlcyAgIyMjIHRvIHJhZGlhbnMgIyMjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmlmIEBwaXRjaF9kPDEKICBVSS5tZXNz
YWdlYm94KCJHYWJsZSBSb29mOlxuXG5QaXRjaCBjYW4ndCBiZSBsZXNzIHRo
YW4gMSBkZWdyZWUuIikKICBAcGl0Y2hHPSIxIjtAcGl0Y2hfcz0iMSI7QHBp
dGNoX2Q9MTtAcGl0Y2hfcj0xLmRlZ3JlZXMKICBSb29mOjpkaWFsb2dfZ2Fi
bGUKICByZXR1cm4gbmlsCmVuZCNpZgppZiBAcGl0Y2hfZD44OSAKICBVSS5t
ZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5QaXRjaCBjYW4ndCBiZSBtb3Jl
IHRoYW4gODkgZGVncmVlcy4iKQogIEBwaXRjaEc9Ijg5IjtAcGl0Y2hfcz0i
ODkiO0BwaXRjaF9kPTg5O0BwaXRjaF9yPTg5LmRlZ3JlZXMKICBSb29mOjpk
aWFsb2dfZ2FibGUKICByZXR1cm4gbmlsCmVuZCNpZgppZiBAZmFzY2lhXyA8
MAogIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbkZhc2NpYSBjYW4n
dCBiZSBMRVNTIFRIQU4gWkVSTy5cblJlc2V0dGluZyBpdCB0byBaRVJPLi4u
IikKICBAZmFzY2lhPTAudG9fbDtAZmFzY2lhXz0wLnRvX2wKICBSb29mOjpk
aWFsb2dfZ2FibGUKICByZXR1cm4gbmlsCmVuZCNpZgppZiBAc29mZml0XyA8
MAogIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbkVhdmVzIGNhbid0
IGJlIExFU1MgVEhBTiBaRVJPLlxuUmVzZXR0aW5nIGl0IHRvIFpFUk8uLi5c
blxuRm9yIGEgJ3BhcmFwZXQtZWF2ZXMnIGZpcnN0IHVzZSAnT2Zmc2V0JyBv
biB0aGUgZmFjZSB0byBpbnNldCBpdHMgZWRnZXMgLi4uIikKICBAc29mZml0
PTAudG9fbDtAc29mZml0Xz0wLnRvX2wKICBSb29mOjpkaWFsb2dfZ2FibGUK
ICByZXR1cm4gbmlsCmVuZCNpZgojIyMKaWYgQGdhYmxlMV8gPDAKICBVSS5t
ZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5GaXJzdCBHYWJsZSBjYW4ndCBi
ZSBMRVNTIFRIQU4gWkVSTy5cblJlc2V0dGluZyBpdCB0byBaRVJPLi4uXG5c
bkZvciBhICdwYXJhcGV0LWdhYmxlJyBmaXJzdCB1c2UgJ09mZnNldCcgb24g
dGhlIGZhY2UgdG8gaW5zZXQgaXRzIGVkZ2VzIC4uLiIpCiAgQHNvZmZpdD0w
LnRvX2w7QHNvZmZpdF89MC50b19sCiAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAg
cmV0dXJuIG5pbAplbmQjaWYKaWYgQGdhYmxlMl8gPDAKICBVSS5tZXNzYWdl
Ym94KCJHYWJsZSBSb29mOlxuXFNlY29uZCBHYWJsZSBjYW4ndCBiZSBMRVNT
IFRIQU4gWkVSTy5cblJlc2V0dGluZyBpdCB0byBaRVJPLi4uXG5cbkZvciBh
ICdwYXJhcGV0LWdhYmxlJyBmaXJzdCB1c2UgJ09mZnNldCcgb24gdGhlIGZh
Y2UgdG8gaW5zZXQgaXRzIGVkZ2VzIC4uLiIpCiAgQHNvZmZpdD0wLnRvX2w7
QHNvZmZpdF89MC50b19sCiAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgcmV0dXJu
IG5pbAplbmQjaWYKaWYgQGZhc2NpYV89PTAgJiYgKEBnYWJsZTF0eXBlXz09
IlZlcmdlIGZyb20gRmFzY2lhInx8QGdhYmxlMXR5cGVfPT0iVmVyZ2Ugd2l0
aCBGYXNjaWEgW0FsbCBFcXVhbF0iKQogIFVJLm1lc3NhZ2Vib3goIkdhYmxl
IFJvb2Y6XG5cbkZhc2NpYSBpcyBaRVJPLlxuVGhlcmVmb3JlIGNhbm5vdCBt
YWtlICdWZXJnZSBmcm9tIEZhc2NpYScgLi4uIikKICBAZ2FibGUxdHlwZV89
IkJsYW5rIjtAZ2FibGUxdHlwZT0iQmxhbmsiCiAgUm9vZjo6ZGlhbG9nX2dh
YmxlCiAgcmV0dXJuIG5pbAplbmQjaWYKaWYgQGZhc2NpYV89PTAgJiYgKEBn
YWJsZTJ0eXBlXz09IlZlcmdlIGZyb20gRmFzY2lhInx8QGdhYmxlMnR5cGVf
PT0iVmVyZ2Ugd2l0aCBGYXNjaWEgW0FsbCBFcXVhbF0iKQogIFVJLm1lc3Nh
Z2Vib3goIkdhYmxlIFJvb2Y6XG5cbkZhc2NpYSBpcyBaRVJPLlxuVGhlcmVm
b3JlIGNhbm5vdCBtYWtlICdWZXJnZSBmcm9tIEZhc2NpYScgLi4uIikKICBA
Z2FibGUydHlwZV89IkJsYW5rIjtAZ2FibGUydHlwZT0iQmxhbmsiCiAgUm9v
Zjo6ZGlhbG9nX2dhYmxlCiAgcmV0dXJuIG5pbAplbmQjaWYKaWYgQHNvZmZp
dF89PTAgJiYgQGdhYmxlMXR5cGVfPT0iVmVyZ2UgZnJvbSBTb2ZmaXQiCiAg
VUkubWVzc2FnZWJveCgiR2FibGUgUm9vZjpcblxTb2ZmaXQgaXMgWkVSTy5c
blRoZXJlZm9yZSBjYW5ub3QgbWFrZSAnVmVyZ2UgZnJvbSBTb2ZmaXQnIC4u
LiIpCiAgQGdhYmxlMXR5cGVfPSJCbGFuayI7QGdhYmxlMXR5cGU9IkJsYW5r
IgogIFJvb2Y6OmRpYWxvZ19nYWJsZQogIHJldHVybiBuaWwKZW5kI2lmCmlm
IEBzb2ZmaXRfPT0wICYmIEBnYWJsZTJ0eXBlXz09IlZlcmdlIGZyb20gU29m
Zml0IgogIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cU29mZml0IGlz
IFpFUk8uXG5UaGVyZWZvcmUgY2Fubm90IG1ha2UgJ1ZlcmdlIGZyb20gU29m
Zml0JyAuLi4iKQogIEBnYWJsZTJ0eXBlXz0iQmxhbmsiO0BnYWJsZTJ0eXBl
PSJCbGFuayIKICBSb29mOjpkaWFsb2dfZ2FibGUKICByZXR1cm4gbmlsCmVu
ZCNpZgppZiBAZmFzY2lhXz09MCAmJiBAZ2FibGUxdHlwZT09IlZlcmdlIGJ5
IEhlaWdodCwgd2l0aCBGYXNjaWEiCiAgVUkubWVzc2FnZWJveCgiR2FibGUg
Um9vZjpcblxuRmFzY2lhIGlzIFpFUk8uXG5UaGVyZWZvcmUgY2Fubm90IG1h
a2UgJ1ZlcmdlIGJ5IEhlaWdodCwgd2l0aCBGYXNjaWEnIC4uLiIpCiAgQGdh
YmxlMXR5cGVfPSJCbGFuayI7QGdhYmxlMXR5cGU9IkJsYW5rIgogIFJvb2Y6
OmRpYWxvZ19nYWJsZQogIHJldHVybiBuaWwKZW5kI2lmCmlmIEBmYXNjaWFf
PT0wICYmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEZh
c2NpYSIKICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5GYXNjaWEg
aXMgWkVSTy5cblRoZXJlZm9yZSBjYW5ub3QgbWFrZSAnVmVyZ2UgYnkgSGVp
Z2h0LCB3aXRoIEZhc2NpYScgLi4uIikKICBAZ2FibGUydHlwZV89IkJsYW5r
IjtAZ2FibGUydHlwZT0iQmxhbmsiCiAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAg
cmV0dXJuIG5pbAplbmQjaWYKaWYgQGZhc2NpYV89PTAgJiYgQGdhYmxlMXR5
cGU9PSJCbGFuayB3aXRoIEZhc2NpYSIKICBVSS5tZXNzYWdlYm94KCJHYWJs
ZSBSb29mOlxuXG5GYXNjaWEgaXMgWkVSTy5cblRoZXJlZm9yZSBjYW5ub3Qg
bWFrZSAnQmxhbmsgd2l0aCBGYXNjaWEnIC4uLiIpCiAgQGdhYmxlMXR5cGVf
PSJCbGFuayI7QGdhYmxlMXR5cGU9IkJsYW5rIgogIFJvb2Y6OmRpYWxvZ19n
YWJsZQogIHJldHVybiBuaWwKZW5kI2lmCmlmIEBmYXNjaWFfPT0wICYmIEBn
YWJsZTJ0eXBlPT0iQmxhbmsgd2l0aCBGYXNjaWEiCiAgVUkubWVzc2FnZWJv
eCgiR2FibGUgUm9vZjpcblxuRmFzY2lhIGlzIFpFUk8uXG5UaGVyZWZvcmUg
Y2Fubm90IG1ha2UgJ0JsYW5rIHdpdGggRmFzY2lhJyAuLi4iKQogIEBnYWJs
ZTJ0eXBlXz0iQmxhbmsiO0BnYWJsZTJ0eXBlPSJCbGFuayIKICBSb29mOjpk
aWFsb2dfZ2FibGUKICByZXR1cm4gbmlsCmVuZCNpZgppZiAoQGZhc2NpYV89
PTAgJiYgQHNvZmZpdD09MCkgJiYgKEBnYWJsZTF0eXBlPT0iVmVyZ2UgYnkg
SGVpZ2h0LCB3aXRoIEJveC1FYXZlcyJ8fEBnYWJsZTF0eXBlPT0iVmVyZ2Ug
YnkgV2lkdGgsIHdpdGggQm94LUVhdmVzIikKICBVSS5tZXNzYWdlYm94KCJH
YWJsZSBSb29mOlxuXG5GYXNjaWEgQU5EIFNvZmZpdCBhcmUgWkVSTy5cblRo
ZXJlZm9yZSBjYW5ub3QgbWFrZSBhICdCb3ggRWF2ZXMnIC4uLiIpCiAgQGdh
YmxlMXR5cGVfPSJCbGFuayI7QGdhYmxlMXR5cGU9IkJsYW5rIgogIFJvb2Y6
OmRpYWxvZ19nYWJsZQogIHJldHVybiBuaWwKZW5kI2lmCmlmIChAZmFzY2lh
Xz09MCAmJiBAc29mZml0PT0wKSAmJiAoQGdhYmxlMnR5cGU9PSJWZXJnZSBi
eSBIZWlnaHQsIHdpdGggQm94LUVhdmVzInx8QGdhYmxlMnR5cGU9PSJWZXJn
ZSBieSBXaWR0aCwgd2l0aCBCb3gtRWF2ZXMiKQogIFVJLm1lc3NhZ2Vib3go
IkdhYmxlIFJvb2Y6XG5cbkZhc2NpYSBBTkQgU29mZml0IGFyZSBaRVJPLlxu
VGhlcmVmb3JlIGNhbm5vdCBtYWtlIGEgJ0JveCBFYXZlcycgLi4uIikKICBA
Z2FibGUydHlwZV89IkJsYW5rIjtAZ2FibGUydHlwZT0iQmxhbmsiCiAgUm9v
Zjo6ZGlhbG9nX2dhYmxlCiAgcmV0dXJuIG5pbAplbmQjaWYKIyMjdjMuMApp
ZiBAZmFzY2lhXyA9PTAgJiYgQGZzdHlwZV89PSJWZXJ0aWNhbCtTbG9waW5n
IgogIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSBGYXNj
aWEgaXMgWkVSTyB0aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2Zm
aXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdWZXJ0aWNh
bCtIb3Jpem9udGFsJy4uLiIpCiAgQGZzdHlwZV89IlZlcnRpY2FsK0hvcml6
b250YWwiCiAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgcmV0dXJuIG5pbAplbmQj
aWYKaWYgQGZhc2NpYV8gPT0wICYmIEBmc3R5cGVfPT0iU2xvcGluZytTbG9w
aW5nIgogIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSBG
YXNjaWEgaXMgWkVSTyB0aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBT
b2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdTbG9w
aW5nK0hvcml6b250YWwnLi4uIikKICBAZnN0eXBlPSJTbG9waW5nK0hvcml6
b250YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9udGFsIgogIFJvb2Y6
OmRpYWxvZ19nYWJsZQogIHJldHVybiBuaWwKZW5kI2lmCiMjIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMjIENSSUI6IGdhYmxldHlw
ZXM9IkJsYW5rfEJsYW5rIHdpdGggRmFzY2lhfFZlcmdlIGZyb20gRmFzY2lh
fFZlcmdlIGZyb20gU29mZml0fFZlcmdlIGJ5IEhlaWdodHxWZXJnZSBieSBX
aWR0aHxWZXJnZSBieSBIZWlnaHQsIHdpdGggRmFzY2lhfFZlcmdlIGJ5IFdp
ZHRoLCB3aXRoIEZhc2NpYXxWZXJnZSB3aXRoIEZhc2NpYSBbQWxsIEVxdWFs
XXxWZXJnZSBieSBIZWlnaHQsIHdpdGggQm94LUVhdmVzfFZlcmdlIGJ5IFdp
ZHRoLCB3aXRoIEJveC1FYXZlcyIjIyN2My4wIHRlc3RzLi4uCmlmIEBmc3R5
cGU9fi9TbG9waW5nXCsvCiAgaWYgQGdhYmxlMXR5cGU9PSJCbGFuayIKICAg
IGlmIEBnYWJsZTJ0eXBlPT0iQmxhbmsiCgkgICMjI09LCgllbmQjaWYKICAg
IGlmIEBnYWJsZTJ0eXBlPT0iQmxhbmsgd2l0aCBGYXNjaWEiICYmIEBnYWJs
ZTI9PTAgJiYgQGZzdHlwZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1l
c3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMg
J0JsYW5rIHdpdGggRmFzY2lhJyB3aXRoIGEgWkVSTyBvdmVyaGFuZywgXG50
aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRp
bmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdWZXJ0aWNhbCtIb3Jpem9udGFs
Jy4uLiIpCiAgICAgIEBmc3R5cGU9IlZlcnRpY2FsK0hvcml6b250YWwiOyBA
ZnN0eXBlXz0iVmVydGljYWwrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlh
bG9nX2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdh
YmxlMnR5cGU9PSJCbGFuayB3aXRoIEZhc2NpYSIgJiYgQGdhYmxlMj09MCAm
JiBAZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94
KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdCbGFuayB3
aXRoIEZhc2NpYScgd2l0aCBhIFpFUk8gb3ZlcmhhbmcsIFxudGhlbiB5b3Ug
Y2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2Np
YStTb2ZmaXQgVHlwZSB0byAnU2xvcGluZytIb3Jpem9udGFsJy4uLiIpCiAg
ICAgIEBmc3R5cGU9IlNsb3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJT
bG9waW5nK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQog
ICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0i
VmVyZ2UgZnJvbSBGYXNjaWEiCgkgICMjI09LCgllbmQjaWYKICAgIGlmIEBn
YWJsZTJ0eXBlPT0iVmVyZ2UgZnJvbSBTb2ZmaXQiICYmIEBmc3R5cGU9PSJW
ZXJ0aWNhbCtTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29m
OlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdmcm9tIFNvZmZpdCcgeW91IGNh
bid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWEr
U29mZml0IFR5cGUgdG8gJ1ZlcnRpY2FsK0hvcml6b250YWwnLi4uIikKICAg
ICAgQGZzdHlwZT0iVmVydGljYWwrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJW
ZXJ0aWNhbCtIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUK
ICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09
IlZlcmdlIGZyb20gU29mZml0IiAmJiBAZnN0eXBlPT0iU2xvcGluZytTbG9w
aW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUg
Mm5kIFZlcmdlIGlzICdmcm9tIFNvZmZpdCcgeW91IGNhbid0IGhhdmUgYSBT
bG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUg
dG8gJ1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJT
bG9waW5nK0hvcml6b250YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9u
dGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5p
bAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIGJ5IEhlaWdo
dCwgd2l0aCBGYXNjaWEiICYmIEBnYWJsZTI9PTAgJiYgQGZzdHlwZT09IlZl
cnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6
XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ2J5IEhlaWdodCwgd2l0aCBGYXNj
aWEnIGFuZCBoYXMgYSBaRVJPIG92ZXJoYW5nLCBcbnRoZW4geW91IGNhbid0
IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29m
Zml0IFR5cGUgdG8gJ1ZlcnRpY2FsK0hvcml6b250YWwnLi4uIikKICAgICAg
QGZzdHlwZT0iVmVydGljYWwrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJWZXJ0
aWNhbCtIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAg
ICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZl
cmdlIGJ5IEhlaWdodCwgd2l0aCBGYXNjaWEiICYmIEBnYWJsZTI9PTAgJiYg
QGZzdHlwZT09IlNsb3BpbmcrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJveCgi
R2FibGUgUm9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnYnkgSGVpZ2h0
LCB3aXRoIEZhc2NpYScgYW5kIGhhcyBhIFpFUk8gb3ZlcmhhbmcsIFxudGhl
biB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5n
IEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnU2xvcGluZytIb3Jpem9udGFsJy4u
LiIpCiAgICAgIEBmc3R5cGU9IlNsb3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5
cGVfPSJTbG9waW5nK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19n
YWJsZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0
eXBlPT0iVmVyZ2UgYnkgV2lkdGgsIHdpdGggRmFzY2lhIiAmJiBAZ2FibGUy
PT0wICYmIEBmc3R5cGU9PSJWZXJ0aWNhbCtTbG9waW5nIgoJICBVSS5tZXNz
YWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdi
eSBXaWR0aCwgd2l0aCBGYXNjaWEnIGFuZCBoYXMgYSBaRVJPIG92ZXJoYW5n
LCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJl
c2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1ZlcnRpY2FsK0hvcml6
b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iVmVydGljYWwrSG9yaXpvbnRh
bCI7IEBmc3R5cGVfPSJWZXJ0aWNhbCtIb3Jpem9udGFsIgogICAgICBSb29m
OjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBp
ZiBAZ2FibGUydHlwZT09IlZlcmdlIGJ5IFdpZHRoLCB3aXRoIEZhc2NpYSIg
JiYgQGdhYmxlMj09MCAmJiBAZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJ
ICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZl
cmdlIGlzICdieSBXaWR0aCwgd2l0aCBGYXNjaWEnIGFuZCBoYXMgYSBaRVJP
IG92ZXJoYW5nLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNv
ZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1Nsb3Bp
bmcrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJTbG9waW5nK0hv
cml6b250YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9udGFsIgogICAg
ICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lm
CiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIHdpdGggRmFzY2lhIFtBbGwg
RXF1YWxdIiAmJiBAZ2FibGUyPT0wICYmIEBmc3R5cGU9PSJWZXJ0aWNhbCtT
bG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0
aGUgMm5kIFZlcmdlIGlzICd3aXRoIEZhc2NpYSBbQWxsIEVxdWFsXScgYW5k
IGhhcyBhIFpFUk8gb3ZlcmhhbmcsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBh
IFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlw
ZSB0byAnVmVydGljYWwrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBl
PSJWZXJ0aWNhbCtIb3Jpem9udGFsIjsgQGZzdHlwZV89IlZlcnRpY2FsK0hv
cml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1
cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2Ugd2l0
aCBGYXNjaWEgW0FsbCBFcXVhbF0iICYmIEBnYWJsZTI9PTAgJiYgQGZzdHlw
ZT09IlNsb3BpbmcrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJveCgiR2FibGUg
Um9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnd2l0aCBGYXNjaWEgW0Fs
bCBFcXVhbF0nIGFuZCBoYXMgYSBaRVJPIG92ZXJoYW5nLCBcbnRoZW4geW91
IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNj
aWErU29mZml0IFR5cGUgdG8gJ1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4iKQog
ICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6b250YWwiOyBAZnN0eXBlXz0i
U2xvcGluZytIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUK
ICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09
IlZlcmdlIGJ5IEhlaWdodCwgd2l0aCBCb3gtRWF2ZXMiICYmIEBmc3R5cGU9
PSJWZXJ0aWNhbCtTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBS
b29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdieSBIZWlnaHQsIHdpdGgg
Qm94LUVhdmVzJywgXG50aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBT
b2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdWZXJ0
aWNhbCtIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9IlZlcnRpY2Fs
K0hvcml6b250YWwiOyBAZnN0eXBlXz0iVmVydGljYWwrSG9yaXpvbnRhbCIK
ICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVu
ZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBieSBIZWlnaHQsIHdp
dGggQm94LUVhdmVzIiAmJiBAZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJ
ICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZl
cmdlIGlzICdieSBIZWlnaHQsIHdpdGggQm94LUVhdmVzJywgXG50aGVuIHlv
dSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFz
Y2lhK1NvZmZpdCBUeXBlIHRvICdTbG9waW5nK0hvcml6b250YWwnLi4uIikK
ICAgICAgQGZzdHlwZT0iU2xvcGluZytIb3Jpem9udGFsIjsgQGZzdHlwZV89
IlNsb3BpbmcrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxl
CiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9
PSJWZXJnZSBieSBXaWR0aCwgd2l0aCBCb3gtRWF2ZXMiICYmIEBmc3R5cGU9
PSJWZXJ0aWNhbCtTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBS
b29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdieSBXaWR0aCwgd2l0aCBC
b3gtRWF2ZXMnLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNv
ZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1ZlcnRp
Y2FsK0hvcml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iVmVydGljYWwr
SG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJWZXJ0aWNhbCtIb3Jpem9udGFsIgog
ICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5k
I2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIGJ5IFdpZHRoLCB3aXRo
IEJveC1FYXZlcyIgJiYgQGZzdHlwZT09IlNsb3BpbmcrU2xvcGluZyIKCSAg
VUkubWVzc2FnZWJveCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJuZCBWZXJn
ZSBpcyAnYnkgV2lkdGgsIHdpdGggQm94LUVhdmVzJywgXG50aGVuIHlvdSBj
YW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lh
K1NvZmZpdCBUeXBlIHRvICdTbG9waW5nK0hvcml6b250YWwnLi4uIikKICAg
ICAgQGZzdHlwZT0iU2xvcGluZytIb3Jpem9udGFsIjsgQGZzdHlwZV89IlNs
b3BpbmcrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAg
ICAgIHJldHVybiBuaWwKCWVuZCNpZgogIGVuZCNpZiBCbGFuawojIyMgIyMj
ICMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBpZiBAZ2FibGUx
dHlwZT09IkJsYW5rIHdpdGggRmFzY2lhIgogICAgaWYgQGdhYmxlMT09MCAm
JiBAZnN0eXBlPT0iVmVydGljYWwrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJv
eCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDFzdGQgVmVyZ2UgaXMgJ0JsYW5r
IHdpdGggRmFzY2lhJyB3aXRoIGEgWkVSTyBvdmVyaGFuZywgXG50aGVuIHlv
dSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFz
Y2lhK1NvZmZpdCBUeXBlIHRvICdWZXJ0aWNhbCtIb3Jpem9udGFsJy4uLiIp
CiAgICAgIEBmc3R5cGU9IlZlcnRpY2FsK0hvcml6b250YWwiOyBAZnN0eXBl
Xz0iVmVydGljYWwrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9nX2dh
YmxlCiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdhYmxlMT09
MCAmJiBAZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJICBVSS5tZXNzYWdl
Ym94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMXN0ZCBWZXJnZSBpcyAnQmxh
bmsgd2l0aCBGYXNjaWEnIHdpdGggYSBaRVJPIG92ZXJoYW5nLCBcbnRoZW4g
eW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBG
YXNjaWErU29mZml0IFR5cGUgdG8gJ1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4i
KQogICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6b250YWwiOyBAZnN0eXBl
Xz0iU2xvcGluZytIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2Fi
bGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlw
ZT09IkJsYW5rIgoJICAjIyNPSwoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlw
ZT09IkJsYW5rIHdpdGggRmFzY2lhIiAmJiBAZ2FibGUyPT0wICYmIEBmc3R5
cGU9PSJWZXJ0aWNhbCtTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJs
ZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdCbGFuayB3aXRoIEZh
c2NpYScgd2l0aCBhIFpFUk8gb3ZlcmhhbmcsIFxudGhlbiB5b3UgY2FuJ3Qg
aGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2Zm
aXQgVHlwZSB0byAnVmVydGljYWwrSG9yaXpvbnRhbCcuLi4iKQogICAgICBA
ZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9udGFsIjsgQGZzdHlwZV89IlZlcnRp
Y2FsK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAg
ICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iQmxh
bmsgd2l0aCBGYXNjaWEiICYmIEBnYWJsZTI9PTAgJiYgQGZzdHlwZT09IlNs
b3BpbmcrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJveCgiR2FibGUgUm9vZjpc
blxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnQmxhbmsgd2l0aCBGYXNjaWEnIHdp
dGggYSBaRVJPIG92ZXJoYW5nLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBT
bG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUg
dG8gJ1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJT
bG9waW5nK0hvcml6b250YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9u
dGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5p
bAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIGZyb20gRmFz
Y2lhIgoJICAjIyNPSwoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZl
cmdlIGZyb20gU29mZml0IiAmJiBAZnN0eXBlPT0iVmVydGljYWwrU2xvcGlu
ZyIKCSAgVUkubWVzc2FnZWJveCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJu
ZCBWZXJnZSBpcyAnZnJvbSBTb2ZmaXQnIHlvdSBjYW4ndCBoYXZlIGEgU2xv
cGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRv
ICdWZXJ0aWNhbCtIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9IlZl
cnRpY2FsK0hvcml6b250YWwiOyBAZnN0eXBlXz0iVmVydGljYWwrSG9yaXpv
bnRhbCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJldHVybiBu
aWwKCWVuZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBmcm9tIFNv
ZmZpdCIgJiYgQGZzdHlwZT09IlNsb3BpbmcrU2xvcGluZyIKCSAgVUkubWVz
c2FnZWJveCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAn
ZnJvbSBTb2ZmaXQnIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQu
XG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdTbG9waW5nK0hv
cml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iU2xvcGluZytIb3Jpem9u
dGFsIjsgQGZzdHlwZV89IlNsb3BpbmcrSG9yaXpvbnRhbCIKICAgICAgUm9v
Zjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAg
aWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBieSBIZWlnaHQsIHdpdGggRmFzY2lh
IiAmJiBAZ2FibGUyPT0wICYmIEBmc3R5cGU9PSJWZXJ0aWNhbCtTbG9waW5n
IgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5k
IFZlcmdlIGlzICdieSBIZWlnaHQsIHdpdGggRmFzY2lhJyBhbmQgaGFzIGEg
WkVSTyBvdmVyaGFuZywgXG50aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGlu
ZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdW
ZXJ0aWNhbCtIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9IlZlcnRp
Y2FsK0hvcml6b250YWwiOyBAZnN0eXBlXz0iVmVydGljYWwrSG9yaXpvbnRh
bCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJldHVybiBuaWwK
CWVuZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBieSBIZWlnaHQs
IHdpdGggRmFzY2lhIiAmJiBAZ2FibGUyPT0wICYmIEBmc3R5cGU9PSJTbG9w
aW5nK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5c
bklmIHRoZSAybmQgVmVyZ2UgaXMgJ2J5IEhlaWdodCwgd2l0aCBGYXNjaWEn
IGFuZCBoYXMgYSBaRVJPIG92ZXJoYW5nLCBcbnRoZW4geW91IGNhbid0IGhh
dmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0
IFR5cGUgdG8gJ1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0
eXBlPSJTbG9waW5nK0hvcml6b250YWwiOyBAZnN0eXBlXz0iU2xvcGluZytI
b3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0
dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIGJ5
IFdpZHRoLCB3aXRoIEZhc2NpYSIgJiYgQGdhYmxlMj09MCAmJiBAZnN0eXBl
PT0iVmVydGljYWwrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJveCgiR2FibGUg
Um9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnYnkgV2lkdGgsIHdpdGgg
RmFzY2lhJyBhbmQgaGFzIGEgWkVSTyBvdmVyaGFuZywgXG50aGVuIHlvdSBj
YW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lh
K1NvZmZpdCBUeXBlIHRvICdWZXJ0aWNhbCtIb3Jpem9udGFsJy4uLiIpCiAg
ICAgIEBmc3R5cGU9IlZlcnRpY2FsK0hvcml6b250YWwiOyBAZnN0eXBlXz0i
VmVydGljYWwrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxl
CiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9
PSJWZXJnZSBieSBXaWR0aCwgd2l0aCBGYXNjaWEiICYmIEBnYWJsZTI9PTAg
JiYgQGZzdHlwZT09IlNsb3BpbmcrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJv
eCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnYnkgV2lk
dGgsIHdpdGggRmFzY2lhJyBhbmQgaGFzIGEgWkVSTyBvdmVyaGFuZywgXG50
aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRp
bmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdTbG9waW5nK0hvcml6b250YWwn
Li4uIikKICAgICAgQGZzdHlwZT0iU2xvcGluZytIb3Jpem9udGFsIjsgQGZz
dHlwZV89IlNsb3BpbmcrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9n
X2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdhYmxl
MnR5cGU9PSJWZXJnZSB3aXRoIEZhc2NpYSBbQWxsIEVxdWFsXSIgJiYgQGdh
YmxlMj09MCAmJiBAZnN0eXBlPT0iVmVydGljYWwrU2xvcGluZyIKCSAgVUku
bWVzc2FnZWJveCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBp
cyAnd2l0aCBGYXNjaWEgW0FsbCBFcXVhbF0nIGFuZCBoYXMgYSBaRVJPIG92
ZXJoYW5nLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZp
dC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1ZlcnRpY2Fs
K0hvcml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iVmVydGljYWwrSG9y
aXpvbnRhbCI7IEBmc3R5cGVfPSJWZXJ0aWNhbCtIb3Jpem9udGFsIgogICAg
ICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lm
CiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIHdpdGggRmFzY2lhIFtBbGwg
RXF1YWxdIiAmJiBAZ2FibGUyPT0wICYmIEBmc3R5cGU9PSJTbG9waW5nK1Ns
b3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRo
ZSAybmQgVmVyZ2UgaXMgJ3dpdGggRmFzY2lhIFtBbGwgRXF1YWxdJyBhbmQg
aGFzIGEgWkVSTyBvdmVyaGFuZywgXG50aGVuIHlvdSBjYW4ndCBoYXZlIGEg
U2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBl
IHRvICdTbG9waW5nK0hvcml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0i
U2xvcGluZytIb3Jpem9udGFsIjsgQGZzdHlwZV89IlNsb3BpbmcrSG9yaXpv
bnRhbCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJldHVybiBu
aWwKCWVuZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBieSBIZWln
aHQsIHdpdGggQm94LUVhdmVzIiAmJiBAZnN0eXBlPT0iVmVydGljYWwrU2xv
cGluZyIKCSAgVUkubWVzc2FnZWJveCgiR2FibGUgUm9vZjpcblxuSWYgdGhl
IDJuZCBWZXJnZSBpcyAnYnkgSGVpZ2h0LCB3aXRoIEJveC1FYXZlcycsIFxu
dGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0
aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnVmVydGljYWwrSG9yaXpvbnRh
bCcuLi4iKQogICAgICBAZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9udGFsIjsg
QGZzdHlwZV89IlZlcnRpY2FsK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRp
YWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBn
YWJsZTJ0eXBlPT0iVmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEJveC1FYXZlcyIg
JiYgQGZzdHlwZT09IlNsb3BpbmcrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJv
eCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnYnkgSGVp
Z2h0LCB3aXRoIEJveC1FYXZlcycsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBh
IFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlw
ZSB0byAnU2xvcGluZytIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9
IlNsb3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJTbG9waW5nK0hvcml6
b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4g
bmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgV2lk
dGgsIHdpdGggQm94LUVhdmVzIiAmJiBAZnN0eXBlPT0iVmVydGljYWwrU2xv
cGluZyIKCSAgVUkubWVzc2FnZWJveCgiR2FibGUgUm9vZjpcblxuSWYgdGhl
IDJuZCBWZXJnZSBpcyAnYnkgV2lkdGgsIHdpdGggQm94LUVhdmVzJywgXG50
aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRp
bmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdWZXJ0aWNhbCtIb3Jpem9udGFs
Jy4uLiIpCiAgICAgIEBmc3R5cGU9IlZlcnRpY2FsK0hvcml6b250YWwiOyBA
ZnN0eXBlXz0iVmVydGljYWwrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlh
bG9nX2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdh
YmxlMnR5cGU9PSJWZXJnZSBieSBXaWR0aCwgd2l0aCBCb3gtRWF2ZXMiICYm
IEBmc3R5cGU9PSJTbG9waW5nK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3go
IkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ2J5IFdpZHRo
LCB3aXRoIEJveC1FYXZlcycsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNs
b3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0
byAnU2xvcGluZytIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9IlNs
b3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJTbG9waW5nK0hvcml6b250
YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmls
CgllbmQjaWYKICBlbmQjaWYgQmxhbmsgd2l0aCBGYXNjaWEKIyMjICMjIyAj
IyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgaWYgQGdhYmxlMXR5
cGU9PSJWZXJnZSBmcm9tIEZhc2NpYSIKICAgIGlmIEBnYWJsZTJ0eXBlPT0i
QmxhbmsiCgkgICMjI09LCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0i
Qmxhbmsgd2l0aCBGYXNjaWEiICYmIEBnYWJsZTI9PTAgJiYgQGZzdHlwZT09
IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJv
b2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ0JsYW5rIHdpdGggRmFzY2lh
JyB3aXRoIGEgWkVSTyBvdmVyaGFuZywgXG50aGVuIHlvdSBjYW4ndCBoYXZl
IGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBU
eXBlIHRvICdWZXJ0aWNhbCtIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5
cGU9IlZlcnRpY2FsK0hvcml6b250YWwiOyBAZnN0eXBlXz0iVmVydGljYWwr
SG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJl
dHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9PSJCbGFuayB3
aXRoIEZhc2NpYSIgJiYgQGdhYmxlMj09MCAmJiBAZnN0eXBlPT0iU2xvcGlu
ZytTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5J
ZiB0aGUgMm5kIFZlcmdlIGlzICdCbGFuayB3aXRoIEZhc2NpYScgd2l0aCBh
IFpFUk8gb3ZlcmhhbmcsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3Bp
bmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAn
U2xvcGluZytIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9IlNsb3Bp
bmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJTbG9waW5nK0hvcml6b250YWwi
CiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgll
bmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgZnJvbSBGYXNjaWEi
CgkgICMjI09LCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2Ug
ZnJvbSBTb2ZmaXQiICYmIEBmc3R5cGU9PSJWZXJ0aWNhbCtTbG9waW5nIgoJ
ICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZl
cmdlIGlzICdmcm9tIFNvZmZpdCcgeW91IGNhbid0IGhhdmUgYSBTbG9waW5n
IFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1Zl
cnRpY2FsK0hvcml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iVmVydGlj
YWwrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJWZXJ0aWNhbCtIb3Jpem9udGFs
IgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJ
ZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIGZyb20gU29mZml0
IiAmJiBAZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJICBVSS5tZXNzYWdl
Ym94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdmcm9t
IFNvZmZpdCcgeW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJl
c2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1Nsb3BpbmcrSG9yaXpv
bnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6b250YWwi
OyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9udGFsIgogICAgICBSb29mOjpk
aWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBA
Z2FibGUydHlwZT09IlZlcmdlIGJ5IEhlaWdodCwgd2l0aCBGYXNjaWEiICYm
IEBnYWJsZTI9PTAgJiYgQGZzdHlwZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkg
IFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAybmQgVmVy
Z2UgaXMgJ2J5IEhlaWdodCwgd2l0aCBGYXNjaWEnIGFuZCBoYXMgYSBaRVJP
IG92ZXJoYW5nLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNv
ZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1ZlcnRp
Y2FsK0hvcml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iVmVydGljYWwr
SG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJWZXJ0aWNhbCtIb3Jpem9udGFsIgog
ICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5k
I2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIGJ5IEhlaWdodCwgd2l0
aCBGYXNjaWEiICYmIEBnYWJsZTI9PTAgJiYgQGZzdHlwZT09IlNsb3Bpbmcr
U2xvcGluZyIKCSAgVUkubWVzc2FnZWJveCgiR2FibGUgUm9vZjpcblxuSWYg
dGhlIDJuZCBWZXJnZSBpcyAnYnkgSGVpZ2h0LCB3aXRoIEZhc2NpYScgYW5k
IGhhcyBhIFpFUk8gb3ZlcmhhbmcsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBh
IFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlw
ZSB0byAnU2xvcGluZytIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9
IlNsb3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJTbG9waW5nK0hvcml6
b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4g
bmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgV2lk
dGgsIHdpdGggRmFzY2lhIiAmJiBAZ2FibGUyPT0wICYmIEBmc3R5cGU9PSJW
ZXJ0aWNhbCtTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29m
OlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdieSBXaWR0aCwgd2l0aCBGYXNj
aWEnIGFuZCBoYXMgYSBaRVJPIG92ZXJoYW5nLCBcbnRoZW4geW91IGNhbid0
IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29m
Zml0IFR5cGUgdG8gJ1ZlcnRpY2FsK0hvcml6b250YWwnLi4uIikKICAgICAg
QGZzdHlwZT0iVmVydGljYWwrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJWZXJ0
aWNhbCtIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAg
ICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZl
cmdlIGJ5IFdpZHRoLCB3aXRoIEZhc2NpYSIgJiYgQGdhYmxlMj09MCAmJiBA
ZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJH
YWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdieSBXaWR0aCwg
d2l0aCBGYXNjaWEnIGFuZCBoYXMgYSBaRVJPIG92ZXJoYW5nLCBcbnRoZW4g
eW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBG
YXNjaWErU29mZml0IFR5cGUgdG8gJ1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4i
KQogICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6b250YWwiOyBAZnN0eXBl
Xz0iU2xvcGluZytIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2Fi
bGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlw
ZT09IlZlcmdlIHdpdGggRmFzY2lhIFtBbGwgRXF1YWxdIiAmJiBAZ2FibGUy
PT0wICYmIEBmc3R5cGU9PSJWZXJ0aWNhbCtTbG9waW5nIgoJICBVSS5tZXNz
YWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICd3
aXRoIEZhc2NpYSBbQWxsIEVxdWFsXScgYW5kIGhhcyBhIFpFUk8gb3Zlcmhh
bmcsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0Llxu
UmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnVmVydGljYWwrSG9y
aXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9u
dGFsIjsgQGZzdHlwZV89IlZlcnRpY2FsK0hvcml6b250YWwiCiAgICAgIFJv
b2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAg
IGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2Ugd2l0aCBGYXNjaWEgW0FsbCBFcXVh
bF0iICYmIEBnYWJsZTI9PTAgJiYgQGZzdHlwZT09IlNsb3BpbmcrU2xvcGlu
ZyIKCSAgVUkubWVzc2FnZWJveCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJu
ZCBWZXJnZSBpcyAnd2l0aCBGYXNjaWEgW0FsbCBFcXVhbF0nIGFuZCBoYXMg
YSBaRVJPIG92ZXJoYW5nLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9w
aW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8g
J1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJTbG9w
aW5nK0hvcml6b250YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9udGFs
IgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJ
ZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIGJ5IEhlaWdodCwg
d2l0aCBCb3gtRWF2ZXMiICYmIEBmc3R5cGU9PSJWZXJ0aWNhbCtTbG9waW5n
IgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5k
IFZlcmdlIGlzICdieSBIZWlnaHQsIHdpdGggQm94LUVhdmVzJywgXG50aGVu
IHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcg
RmFzY2lhK1NvZmZpdCBUeXBlIHRvICdWZXJ0aWNhbCtIb3Jpem9udGFsJy4u
LiIpCiAgICAgIEBmc3R5cGU9IlZlcnRpY2FsK0hvcml6b250YWwiOyBAZnN0
eXBlXz0iVmVydGljYWwrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9n
X2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdhYmxl
MnR5cGU9PSJWZXJnZSBieSBIZWlnaHQsIHdpdGggQm94LUVhdmVzIiAmJiBA
ZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJH
YWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdieSBIZWlnaHQs
IHdpdGggQm94LUVhdmVzJywgXG50aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xv
cGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRv
ICdTbG9waW5nK0hvcml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iU2xv
cGluZytIb3Jpem9udGFsIjsgQGZzdHlwZV89IlNsb3BpbmcrSG9yaXpvbnRh
bCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJldHVybiBuaWwK
CWVuZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBieSBXaWR0aCwg
d2l0aCBCb3gtRWF2ZXMiICYmIEBmc3R5cGU9PSJWZXJ0aWNhbCtTbG9waW5n
IgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5k
IFZlcmdlIGlzICdieSBXaWR0aCwgd2l0aCBCb3gtRWF2ZXMnLCBcbnRoZW4g
eW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBG
YXNjaWErU29mZml0IFR5cGUgdG8gJ1ZlcnRpY2FsK0hvcml6b250YWwnLi4u
IikKICAgICAgQGZzdHlwZT0iVmVydGljYWwrSG9yaXpvbnRhbCI7IEBmc3R5
cGVfPSJWZXJ0aWNhbCtIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2df
Z2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUy
dHlwZT09IlZlcmdlIGJ5IFdpZHRoLCB3aXRoIEJveC1FYXZlcyIgJiYgQGZz
dHlwZT09IlNsb3BpbmcrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJveCgiR2Fi
bGUgUm9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnYnkgV2lkdGgsIHdp
dGggQm94LUVhdmVzJywgXG50aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGlu
ZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdT
bG9waW5nK0hvcml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iU2xvcGlu
ZytIb3Jpem9udGFsIjsgQGZzdHlwZV89IlNsb3BpbmcrSG9yaXpvbnRhbCIK
ICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVu
ZCNpZgogIGVuZCNpZiBWZXJnZSBmcm9tIEZhc2NpYQojIyMgIyMjICMjIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBpZiBAZ2FibGUxdHlwZT09
IlZlcmdlIGZyb20gU29mZml0IgogICAgaWYgQGZzdHlwZT09IlZlcnRpY2Fs
K1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklm
IHRoZSAxc3QgVmVyZ2UgaXMgJ2Zyb20gU29mZml0JyB5b3UgY2FuJ3QgaGF2
ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQg
VHlwZSB0byAnVmVydGljYWwrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0
eXBlPSJWZXJ0aWNhbCtIb3Jpem9udGFsIjsgQGZzdHlwZV89IlZlcnRpY2Fs
K0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICBy
ZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBmc3R5cGU9PSJTbG9waW5nK1Ns
b3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRo
ZSAxc3QgVmVyZ2UgaXMgJ2Zyb20gU29mZml0JyB5b3UgY2FuJ3QgaGF2ZSBh
IFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlw
ZSB0byAnU2xvcGluZytIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9
IlNsb3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJTbG9waW5nK0hvcml6
b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4g
bmlsCgllbmQjaWYKICBlbmQjaWYgVmVyZ2UgZnJvbSBTb2ZmaXQKIyMjICMj
IyAjIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgaWYgQGdhYmxl
MXR5cGU9PSJWZXJnZSBieSBIZWlnaHQiIHx8IEBnYWJsZTF0eXBlPT0iVmVy
Z2UgYnkgV2lkdGgiCiAgICBpZiBAZ2FibGUydHlwZT09IkJsYW5rIgoJICAj
IyNPSwoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IkJsYW5rIHdpdGgg
RmFzY2lhIiAmJiBAZ2FibGUyPT0wICYmIEBmc3R5cGU9PSJWZXJ0aWNhbCtT
bG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0
aGUgMm5kIFZlcmdlIGlzICdCbGFuayB3aXRoIEZhc2NpYScgd2l0aCBhIFpF
Uk8gb3ZlcmhhbmcsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3Bpbmcg
U29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnVmVy
dGljYWwrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJWZXJ0aWNh
bCtIb3Jpem9udGFsIjsgQGZzdHlwZV89IlZlcnRpY2FsK0hvcml6b250YWwi
CiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgll
bmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iQmxhbmsgd2l0aCBGYXNjaWEi
ICYmIEBnYWJsZTI9PTAgJiYgQGZzdHlwZT09IlNsb3BpbmcrU2xvcGluZyIK
CSAgVUkubWVzc2FnZWJveCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJuZCBW
ZXJnZSBpcyAnQmxhbmsgd2l0aCBGYXNjaWEnIHdpdGggYSBaRVJPIG92ZXJo
YW5nLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5c
blJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1Nsb3BpbmcrSG9y
aXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6b250
YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9udGFsIgogICAgICBSb29m
OjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBp
ZiBAZ2FibGUydHlwZT09IlZlcmdlIGZyb20gRmFzY2lhIiAKCSAgIyMjT0sK
CWVuZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBmcm9tIFNvZmZp
dCIgJiYgQGZzdHlwZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1lc3Nh
Z2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ2Zy
b20gU29mZml0JyB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0Llxu
UmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnVmVydGljYWwrSG9y
aXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9u
dGFsIjsgQGZzdHlwZV89IlZlcnRpY2FsK0hvcml6b250YWwiCiAgICAgIFJv
b2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAg
IGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgZnJvbSBTb2ZmaXQiICYmIEBmc3R5
cGU9PSJTbG9waW5nK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxl
IFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ2Zyb20gU29mZml0JyB5
b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZh
c2NpYStTb2ZmaXQgVHlwZSB0byAnU2xvcGluZytIb3Jpem9udGFsJy4uLiIp
CiAgICAgIEBmc3R5cGU9IlNsb3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVf
PSJTbG9waW5nK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJs
ZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBl
PT0iVmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEZhc2NpYSIgJiYgQGdhYmxlMj09
MCAmJiBAZnN0eXBlPT0iVmVydGljYWwrU2xvcGluZyIKCSAgVUkubWVzc2Fn
ZWJveCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnYnkg
SGVpZ2h0LCB3aXRoIEZhc2NpYScgYW5kIGhhcyBhIFpFUk8gb3Zlcmhhbmcs
IFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVz
ZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnVmVydGljYWwrSG9yaXpv
bnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9udGFs
IjsgQGZzdHlwZV89IlZlcnRpY2FsK0hvcml6b250YWwiCiAgICAgIFJvb2Y6
OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlm
IEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEZhc2NpYSIg
JiYgQGdhYmxlMj09MCAmJiBAZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJ
ICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZl
cmdlIGlzICdieSBIZWlnaHQsIHdpdGggRmFzY2lhJyBhbmQgaGFzIGEgWkVS
TyBvdmVyaGFuZywgXG50aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBT
b2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdTbG9w
aW5nK0hvcml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iU2xvcGluZytI
b3Jpem9udGFsIjsgQGZzdHlwZV89IlNsb3BpbmcrSG9yaXpvbnRhbCIKICAg
ICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVuZCNp
ZgogICAgaWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBieSBXaWR0aCwgd2l0aCBG
YXNjaWEiICYmIEBnYWJsZTI9PTAgJiYgQGZzdHlwZT09IlZlcnRpY2FsK1Ns
b3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRo
ZSAybmQgVmVyZ2UgaXMgJ2J5IFdpZHRoLCB3aXRoIEZhc2NpYScgYW5kIGhh
cyBhIFpFUk8gb3ZlcmhhbmcsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNs
b3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0
byAnVmVydGljYWwrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJW
ZXJ0aWNhbCtIb3Jpem9udGFsIjsgQGZzdHlwZV89IlZlcnRpY2FsK0hvcml6
b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4g
bmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgV2lk
dGgsIHdpdGggRmFzY2lhIiAmJiBAZ2FibGUyPT0wICYmIEBmc3R5cGU9PSJT
bG9waW5nK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6
XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ2J5IFdpZHRoLCB3aXRoIEZhc2Np
YScgYW5kIGhhcyBhIFpFUk8gb3ZlcmhhbmcsIFxudGhlbiB5b3UgY2FuJ3Qg
aGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2Zm
aXQgVHlwZSB0byAnU2xvcGluZytIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBm
c3R5cGU9IlNsb3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJTbG9waW5n
K0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICBy
ZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2Ug
d2l0aCBGYXNjaWEgW0FsbCBFcXVhbF0iICYmIEBnYWJsZTI9PTAgJiYgQGZz
dHlwZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdh
YmxlIFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ3dpdGggRmFzY2lh
IFtBbGwgRXF1YWxdJyBhbmQgaGFzIGEgWkVSTyBvdmVyaGFuZywgXG50aGVu
IHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcg
RmFzY2lhK1NvZmZpdCBUeXBlIHRvICdWZXJ0aWNhbCtIb3Jpem9udGFsJy4u
LiIpCiAgICAgIEBmc3R5cGU9IlZlcnRpY2FsK0hvcml6b250YWwiOyBAZnN0
eXBlXz0iVmVydGljYWwrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9n
X2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdhYmxl
MnR5cGU9PSJWZXJnZSB3aXRoIEZhc2NpYSBbQWxsIEVxdWFsXSIgJiYgQGdh
YmxlMj09MCAmJiBAZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJICBVSS5t
ZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlz
ICd3aXRoIEZhc2NpYSBbQWxsIEVxdWFsXScgYW5kIGhhcyBhIFpFUk8gb3Zl
cmhhbmcsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0
LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnU2xvcGluZytI
b3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9IlNsb3BpbmcrSG9yaXpv
bnRhbCI7IEBmc3R5cGVfPSJTbG9waW5nK0hvcml6b250YWwiCiAgICAgIFJv
b2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAg
IGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEJveC1F
YXZlcyIgJiYgQGZzdHlwZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1l
c3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMg
J2J5IEhlaWdodCwgd2l0aCBCb3gtRWF2ZXMnLCBcbnRoZW4geW91IGNhbid0
IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29m
Zml0IFR5cGUgdG8gJ1ZlcnRpY2FsK0hvcml6b250YWwnLi4uIikKICAgICAg
QGZzdHlwZT0iVmVydGljYWwrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJWZXJ0
aWNhbCtIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAg
ICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZl
cmdlIGJ5IEhlaWdodCwgd2l0aCBCb3gtRWF2ZXMiICYmIEBmc3R5cGU9PSJT
bG9waW5nK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6
XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ2J5IEhlaWdodCwgd2l0aCBCb3gt
RWF2ZXMnLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZp
dC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1Nsb3Bpbmcr
SG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6
b250YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9udGFsIgogICAgICBS
b29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAg
ICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIGJ5IFdpZHRoLCB3aXRoIEJveC1F
YXZlcyIgJiYgQGZzdHlwZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1l
c3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMg
J2J5IFdpZHRoLCB3aXRoIEJveC1FYXZlcycsIFxudGhlbiB5b3UgY2FuJ3Qg
aGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2Zm
aXQgVHlwZSB0byAnVmVydGljYWwrSG9yaXpvbnRhbCcuLi4iKQogICAgICBA
ZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9udGFsIjsgQGZzdHlwZV89IlZlcnRp
Y2FsK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAg
ICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVy
Z2UgYnkgV2lkdGgsIHdpdGggQm94LUVhdmVzIiAmJiBAZnN0eXBlPT0iU2xv
cGluZytTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxu
XG5JZiB0aGUgMm5kIFZlcmdlIGlzICdieSBXaWR0aCwgd2l0aCBCb3gtRWF2
ZXMnLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5c
blJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1Nsb3BpbmcrSG9y
aXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6b250
YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9udGFsIgogICAgICBSb29m
OjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgZW5k
I2lmIFZlcmdlIGJ5IEhlaWdodCAvIFdpZHRoCiMjIyAjIyMgIyMjLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGlmIChAZ2FibGUxdHlwZT09IlZl
cmdlIGJ5IEhlaWdodCwgd2l0aCBGYXNjaWEiIHx8IEBnYWJsZTF0eXBlPT0i
VmVyZ2UgYnkgV2lkdGgsIHdpdGggRmFzY2lhIikgfHwgQGdhYmxlMXR5cGU9
PSJWZXJnZSB3aXRoIEZhc2NpYSBbQWxsIEVxdWFsXSIKICAgIGlmIEBnYWJs
ZTE9PTAgJiYgQGZzdHlwZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1l
c3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAxc3QgVmVyZ2UgaXMg
Jy4uLndpdGggRmFzY2lhLi4uJywgQlVUIHdpdGggYSBaRVJPIG92ZXJoYW5n
LCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJl
c2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1ZlcnRpY2FsK0hvcml6
b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iVmVydGljYWwrSG9yaXpvbnRh
bCI7IEBmc3R5cGVfPSJWZXJ0aWNhbCtIb3Jpem9udGFsIgogICAgICBSb29m
OjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBp
ZiBAZ2FibGUxPT0wICYmIEBmc3R5cGU9PSJTbG9waW5nK1Nsb3BpbmciCgkg
IFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAxc3QgVmVy
Z2UgaXMgJy4uLndpdGggRmFzY2lhLi4uJywgQlVUIHdpdGggYSBaRVJPIG92
ZXJoYW5nLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZp
dC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1Nsb3Bpbmcr
SG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6
b250YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9udGFsIgogICAgICBS
b29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAg
ICBpZiBAZ2FibGUydHlwZT09IkJsYW5rIgoJICAjIyNPSwoJZW5kI2lmCiAg
ICBpZiBAZ2FibGUydHlwZT09IkJsYW5rIHdpdGggRmFzY2lhIiAmJiBAZ2Fi
bGUyPT0wICYmIEBmc3R5cGU9PSJWZXJ0aWNhbCtTbG9waW5nIgoJICBVSS5t
ZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlz
ICdCbGFuayB3aXRoIEZhc2NpYScgd2l0aCBhIFpFUk8gb3ZlcmhhbmcsIFxu
dGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0
aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnVmVydGljYWwrSG9yaXpvbnRh
bCcuLi4iKQogICAgICBAZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9udGFsIjsg
QGZzdHlwZV89IlZlcnRpY2FsK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRp
YWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBn
YWJsZTJ0eXBlPT0iQmxhbmsgd2l0aCBGYXNjaWEiICYmIEBnYWJsZTI9PTAg
JiYgQGZzdHlwZT09IlNsb3BpbmcrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJv
eCgiR2FibGUgUm9vZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnQmxhbmsg
d2l0aCBGYXNjaWEnIHdpdGggYSBaRVJPIG92ZXJoYW5nLCBcbnRoZW4geW91
IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNj
aWErU29mZml0IFR5cGUgdG8gJ1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4iKQog
ICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6b250YWwiOyBAZnN0eXBlXz0i
U2xvcGluZytIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUK
ICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09
IlZlcmdlIGZyb20gRmFzY2lhIiAKCSAgIyMjT0sKCWVuZCNpZgogICAgaWYg
QGdhYmxlMnR5cGU9PSJWZXJnZSBmcm9tIFNvZmZpdCIgJiYgQGZzdHlwZT09
IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJv
b2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ2Zyb20gU29mZml0JyB5b3Ug
Y2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2Np
YStTb2ZmaXQgVHlwZSB0byAnVmVydGljYWwrSG9yaXpvbnRhbCcuLi4iKQog
ICAgICBAZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9udGFsIjsgQGZzdHlwZV89
IlZlcnRpY2FsK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJs
ZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBl
PT0iVmVyZ2UgZnJvbSBTb2ZmaXQiICYmIEBmc3R5cGU9PSJTbG9waW5nK1Ns
b3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRo
ZSAybmQgVmVyZ2UgaXMgJ2Zyb20gU29mZml0JyB5b3UgY2FuJ3QgaGF2ZSBh
IFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlw
ZSB0byAnU2xvcGluZytIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9
IlNsb3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJTbG9waW5nK0hvcml6
b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4g
bmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgSGVp
Z2h0LCB3aXRoIEZhc2NpYSIgJiYgQGdhYmxlMj09MCAmJiBAZnN0eXBlPT0i
VmVydGljYWwrU2xvcGluZyIKCSAgVUkubWVzc2FnZWJveCgiR2FibGUgUm9v
ZjpcblxuSWYgdGhlIDJuZCBWZXJnZSBpcyAnYnkgSGVpZ2h0LCB3aXRoIEZh
c2NpYScgYW5kIGhhcyBhIFpFUk8gb3ZlcmhhbmcsIFxudGhlbiB5b3UgY2Fu
J3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStT
b2ZmaXQgVHlwZSB0byAnVmVydGljYWwrSG9yaXpvbnRhbCcuLi4iKQogICAg
ICBAZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9udGFsIjsgQGZzdHlwZV89IlZl
cnRpY2FsK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQog
ICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0i
VmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEZhc2NpYSIgJiYgQGdhYmxlMj09MCAm
JiBAZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94
KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICdieSBIZWln
aHQsIHdpdGggRmFzY2lhJyBhbmQgaGFzIGEgWkVSTyBvdmVyaGFuZywgXG50
aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRp
bmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdTbG9waW5nK0hvcml6b250YWwn
Li4uIikKICAgICAgQGZzdHlwZT0iU2xvcGluZytIb3Jpem9udGFsIjsgQGZz
dHlwZV89IlNsb3BpbmcrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9n
X2dhYmxlCiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdhYmxl
MnR5cGU9PSJWZXJnZSBieSBXaWR0aCwgd2l0aCBGYXNjaWEiICYmIEBnYWJs
ZTI9PTAgJiYgQGZzdHlwZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1l
c3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMg
J2J5IFdpZHRoLCB3aXRoIEZhc2NpYScgYW5kIGhhcyBhIFpFUk8gb3Zlcmhh
bmcsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0Llxu
UmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnVmVydGljYWwrSG9y
aXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJWZXJ0aWNhbCtIb3Jpem9u
dGFsIjsgQGZzdHlwZV89IlZlcnRpY2FsK0hvcml6b250YWwiCiAgICAgIFJv
b2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAg
IGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgV2lkdGgsIHdpdGggRmFzY2lh
IiAmJiBAZ2FibGUyPT0wICYmIEBmc3R5cGU9PSJTbG9waW5nK1Nsb3Bpbmci
CgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAybmQg
VmVyZ2UgaXMgJ2J5IFdpZHRoLCB3aXRoIEZhc2NpYScgYW5kIGhhcyBhIFpF
Uk8gb3ZlcmhhbmcsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3Bpbmcg
U29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnU2xv
cGluZytIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5cGU9IlNsb3Bpbmcr
SG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJTbG9waW5nK0hvcml6b250YWwiCiAg
ICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgllbmQj
aWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2Ugd2l0aCBGYXNjaWEgW0Fs
bCBFcXVhbF0iICYmIEBnYWJsZTI9PTAgJiYgQGZzdHlwZT09IlZlcnRpY2Fs
K1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklm
IHRoZSAybmQgVmVyZ2UgaXMgJ3dpdGggRmFzY2lhIFtBbGwgRXF1YWxdJyBh
bmQgaGFzIGEgWkVSTyBvdmVyaGFuZywgXG50aGVuIHlvdSBjYW4ndCBoYXZl
IGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBU
eXBlIHRvICdWZXJ0aWNhbCtIb3Jpem9udGFsJy4uLiIpCiAgICAgIEBmc3R5
cGU9IlZlcnRpY2FsK0hvcml6b250YWwiOyBAZnN0eXBlXz0iVmVydGljYWwr
SG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxlCiAgICAgIHJl
dHVybiBuaWwKCWVuZCNpZgogICAgaWYgQGdhYmxlMnR5cGU9PSJWZXJnZSB3
aXRoIEZhc2NpYSBbQWxsIEVxdWFsXSIgJiYgQGdhYmxlMj09MCAmJiBAZnN0
eXBlPT0iU2xvcGluZytTbG9waW5nIgoJICBVSS5tZXNzYWdlYm94KCJHYWJs
ZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZlcmdlIGlzICd3aXRoIEZhc2NpYSBb
QWxsIEVxdWFsXScgYW5kIGhhcyBhIFpFUk8gb3ZlcmhhbmcsIFxudGhlbiB5
b3UgY2FuJ3QgaGF2ZSBhIFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZh
c2NpYStTb2ZmaXQgVHlwZSB0byAnU2xvcGluZytIb3Jpem9udGFsJy4uLiIp
CiAgICAgIEBmc3R5cGU9IlNsb3BpbmcrSG9yaXpvbnRhbCI7IEBmc3R5cGVf
PSJTbG9waW5nK0hvcml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJs
ZQogICAgICByZXR1cm4gbmlsCgllbmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBl
PT0iVmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEJveC1FYXZlcyIgJiYgQGZzdHlw
ZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxl
IFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ2J5IEhlaWdodCwgd2l0
aCBCb3gtRWF2ZXMnLCBcbnRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5n
IFNvZmZpdC5cblJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1Zl
cnRpY2FsK0hvcml6b250YWwnLi4uIikKICAgICAgQGZzdHlwZT0iVmVydGlj
YWwrSG9yaXpvbnRhbCI7IEBmc3R5cGVfPSJWZXJ0aWNhbCtIb3Jpem9udGFs
IgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUKICAgICAgcmV0dXJuIG5pbAoJ
ZW5kI2lmCiAgICBpZiBAZ2FibGUydHlwZT09IlZlcmdlIGJ5IEhlaWdodCwg
d2l0aCBCb3gtRWF2ZXMiICYmIEBmc3R5cGU9PSJTbG9waW5nK1Nsb3Bpbmci
CgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAybmQg
VmVyZ2UgaXMgJ2J5IEhlaWdodCwgd2l0aCBCb3gtRWF2ZXMnLCBcbnRoZW4g
eW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBG
YXNjaWErU29mZml0IFR5cGUgdG8gJ1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4i
KQogICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6b250YWwiOyBAZnN0eXBl
Xz0iU2xvcGluZytIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2Fi
bGUKICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgICBpZiBAZ2FibGUydHlw
ZT09IlZlcmdlIGJ5IFdpZHRoLCB3aXRoIEJveC1FYXZlcyIgJiYgQGZzdHlw
ZT09IlZlcnRpY2FsK1Nsb3BpbmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxl
IFJvb2Y6XG5cbklmIHRoZSAybmQgVmVyZ2UgaXMgJ2J5IFdpZHRoLCB3aXRo
IEJveC1FYXZlcycsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBhIFNsb3Bpbmcg
U29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlwZSB0byAnVmVy
dGljYWwrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBlPSJWZXJ0aWNh
bCtIb3Jpem9udGFsIjsgQGZzdHlwZV89IlZlcnRpY2FsK0hvcml6b250YWwi
CiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1cm4gbmlsCgll
bmQjaWYKICAgIGlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgV2lkdGgsIHdp
dGggQm94LUVhdmVzIiAmJiBAZnN0eXBlPT0iU2xvcGluZytTbG9waW5nIgoJ
ICBVSS5tZXNzYWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMm5kIFZl
cmdlIGlzICdieSBXaWR0aCwgd2l0aCBCb3gtRWF2ZXMnLCBcbnRoZW4geW91
IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5cblJlc2V0dGluZyBGYXNj
aWErU29mZml0IFR5cGUgdG8gJ1Nsb3BpbmcrSG9yaXpvbnRhbCcuLi4iKQog
ICAgICBAZnN0eXBlPSJTbG9waW5nK0hvcml6b250YWwiOyBAZnN0eXBlXz0i
U2xvcGluZytIb3Jpem9udGFsIgogICAgICBSb29mOjpkaWFsb2dfZ2FibGUK
ICAgICAgcmV0dXJuIG5pbAoJZW5kI2lmCiAgZW5kI2lmIFZlcmdlIC4uLndp
dGggRmFzY2lhLi4uCiAgIyMjICMjIyAjIyMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgaWYgQGdhYmxlMXR5cGU9fi93aXRoIEJveC1FYXZlcy8K
ICAgIGlmIEBmc3R5cGU9PSJWZXJ0aWNhbCtTbG9waW5nIgoJICBVSS5tZXNz
YWdlYm94KCJHYWJsZSBSb29mOlxuXG5JZiB0aGUgMXN0IFZlcmdlIGlzICcu
Li53aXRoIEJveC1FYXZlcy4uLicsIFxudGhlbiB5b3UgY2FuJ3QgaGF2ZSBh
IFNsb3BpbmcgU29mZml0LlxuUmVzZXR0aW5nIEZhc2NpYStTb2ZmaXQgVHlw
ZSB0byAnVmVydGljYWwrSG9yaXpvbnRhbCcuLi4iKQogICAgICBAZnN0eXBl
PSJWZXJ0aWNhbCtIb3Jpem9udGFsIjsgQGZzdHlwZV89IlZlcnRpY2FsK0hv
cml6b250YWwiCiAgICAgIFJvb2Y6OmRpYWxvZ19nYWJsZQogICAgICByZXR1
cm4gbmlsCgllbmQjaWYKICAgIGlmIEBmc3R5cGU9PSJTbG9waW5nK1Nsb3Bp
bmciCgkgIFVJLm1lc3NhZ2Vib3goIkdhYmxlIFJvb2Y6XG5cbklmIHRoZSAx
c3QgVmVyZ2UgaXMgJy4uLndpdGggQm94LUVhdmVzLi4uJywgXG50aGVuIHlv
dSBjYW4ndCBoYXZlIGEgU2xvcGluZyBTb2ZmaXQuXG5SZXNldHRpbmcgRmFz
Y2lhK1NvZmZpdCBUeXBlIHRvICdTbG9waW5nK0hvcml6b250YWwnLi4uIikK
ICAgICAgQGZzdHlwZT0iU2xvcGluZytIb3Jpem9udGFsIjsgQGZzdHlwZV89
IlNsb3BpbmcrSG9yaXpvbnRhbCIKICAgICAgUm9vZjo6ZGlhbG9nX2dhYmxl
CiAgICAgIHJldHVybiBuaWwKCWVuZCNpZgogIGVuZCNpZiAuLi53aXRoIEJv
eC1FYXZlcy4uLgogICMjIwplbmQjaWYgc2xvcGluZyBzb2YgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMjIENSSUI6IGdhYmxldHlwZXM9IkJs
YW5rfEJsYW5rIHdpdGggRmFzY2lhfFZlcmdlIGZyb20gRmFzY2lhfFZlcmdl
IGZyb20gU29mZml0fFZlcmdlIGJ5IEhlaWdodHxWZXJnZSBieSBXaWR0aHxW
ZXJnZSBieSBIZWlnaHQsIHdpdGggRmFzY2lhfFZlcmdlIGJ5IFdpZHRoLCB3
aXRoIEZhc2NpYXxWZXJnZSB3aXRoIEZhc2NpYSBbQWxsIEVxdWFsXXxWZXJn
ZSBieSBIZWlnaHQsIHdpdGggQm94LUVhdmVzfFZlcmdlIGJ5IFdpZHRoLCB3
aXRoIEJveC1FYXZlcyIjIyN2My4wIHRlc3RzLi4uCiMjI3YzLjAgIyMjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwplbmQjZGVmIGRp
YWxvZwojIyMgcnVuIGRpYWxvZwogIFJvb2Y6OmRpYWxvZ19nYWJsZSgpCiAg
KFNrZXRjaHVwLnNlbmRfYWN0aW9uICJzZWxlY3RTZWxlY3Rpb25Ub29sOiI7
IHJldHVybiBuaWwpIGlmICEgQHJlc3VsdHMKIyMjCiMjI3YzLjAgc29ydCBv
dXQgc2xvcGluZyBmYXNjaWEgYW5kIHNvZmZpdApTa2V0Y2h1cDo6c2V0X3N0
YXR1c190ZXh0ICJSb29mIEdhYmxlOiBQcm9jZXNzaW5nLi4uIgojIyMgZGVm
YXVsdHM9VmVydGljYWwrSG9yaXpvbnRhbApmYWM9QGZhc2NpYTsgZmFjX3Vw
PWZhYzsgZmFjX291dD0wLjAKc29mPUBzb2ZmaXQ7IHNvZl91cD0wLjA7IHNm
X3VwPTAuMCMjIyBhZGp1c3RzIHJpZGdlIGh0IGZvciBzbG9waW5nIGZhc2Np
YQppZiBAZnN0eXBlPX4vXlNsb3BpbmcrLwogIGZhY191cCA9IGZhYypNYXRo
Ojpjb3MoQHBpdGNoX3IpCiAgZmFjX291dD0gZmFjKk1hdGg6OnNpbihAcGl0
Y2hfcikKICBzZl91cD0gZmFjX291dCpNYXRoOjp0YW4oQHBpdGNoX3IpCmVu
ZCNpZgppZiBAZnN0eXBlPX4vU2xvcGluZyQvCiAgc29mX3VwPSBzb2YqTWF0
aDo6dGFuKEBwaXRjaF9yKQplbmQjaWYKIyMjdjMuMAojIyMtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KCWN3aXNlPWZhbHNlCgljd2lzZT10cnVlIGlmIChh
bmcxMj49MC4wLmRlZ3JlZXMgJiYgYW5nMTI8OTAuMC5kZWdyZWVzKSAmJiAo
YW5nMmQ8YW5nMTIgfHwgYW5nMmQ+YW5nMTIrMTgwLjAuZGVncmVlcykKCWN3
aXNlPXRydWUgaWYgKGFuZzEyPj05MC4wLmRlZ3JlZXMgJiYgYW5nMTI8MTgw
LjAuZGVncmVlcykgJiYgKGFuZzJkPmFuZzEyICYmIGFuZzJkPGFuZzEyKzE4
MC4wLmRlZ3JlZXMpCgljd2lzZT10cnVlIGlmIChhbmcxMj49MTgwLjAuZGVn
cmVlcyAmJiBhbmcxMjwyNzAuMC5kZWdyZWVzKSAmJiAoYW5nMmQ8YW5nMTIg
fHwgYW5nMmQ8YW5nMTItMTgwLjAuZGVncmVlcykKCWN3aXNlPXRydWUgaWYg
KGFuZzEyPj0yNzAuMC5kZWdyZWVzICYmIGFuZzEyPD0zNjAuMC5kZWdyZWVz
KSAmJiAoYW5nMmQ8YW5nMTIgJiYgYW5nMmQ+YW5nMTItMTgwLjAuZGVncmVl
cykKCWFuZzkwPTkwLjAuZGVncmVlcwoJI2FuZzkwPS1hbmc5MCBpZiBjd2lz
ZQoJKHB0PXAxO3AxPXAyO3AyPXB0KSBpZiBjd2lzZQoJIyMjCglyb29mX2dy
b3VwPWVudGl0aWVzLmFkZF9ncm91cAoJcm9vZl9lbnRpdGllcz1yb29mX2dy
b3VwLmVudGl0aWVzCglsbjE9cm9vZl9lbnRpdGllcy5hZGRfbGluZShwMSxw
MikKCSMjI2xlbj1sbjEubGVuZ3RoICMjIyB3aWR0aCBvZiBiYXNlCiAgICAj
IyMgZ2V0IGRpc3Qgb2YgcDNkIGZyb20gbGluZSBvZiBsbjEsdGhpcyBpcyBk
ZXB0aCBvZiBiYXNlCglkaXN0PXBkLmRpc3RhbmNlX3RvX2xpbmUobG4xLmxp
bmUpCglsbjEuZXJhc2UhIGlmIGxuMS52YWxpZD8KCSMjIyBhZGQgcDMgYWxv
bmcgdmVjdCBwMixwMSBhdCBkaXN0LHJvdGF0ZSBwMyA5MGRlZwoJdmVjPXAy
LnZlY3Rvcl90byhwMSkKCXAzPXAyLm9mZnNldCh2ZWMsZGlzdCkKCXJvdGF0
ZT1HZW9tOjpUcmFuc2Zvcm1hdGlvbi5yb3RhdGlvbihwMixbMCwwLDFdLC1h
bmc5MCkKCXAzPXAzLnRyYW5zZm9ybSEocm90YXRlKQoJI2xuMj1yb29mX2Vu
dGl0aWVzLmFkZF9saW5lKHAyLHAzKQoJIyMjYWRkIHA0IGFsb25nIHZlY3Qg
cDEscDIgYXQgZGlzdCxyb3RhdGUgcDQgLTkwZGVnCgl2ZWM9cDEudmVjdG9y
X3RvKHAyKQoJcDQ9cDEub2Zmc2V0KHZlYyxkaXN0KQoJcm90YXRlPUdlb206
OlRyYW5zZm9ybWF0aW9uLnJvdGF0aW9uKHAxLFswLDAsMV0sYW5nOTApCglw
ND1wNC50cmFuc2Zvcm0hKHJvdGF0ZSkKCSMjIyBwMSxwMixwMyxwNCBhcmUg
Y29ybmVycyBvZiBiYXNlICdob2xlJwogICAgIyMjIERPIEdBQkxFLi4uCgkj
IyMgbm93IHdlIGZpbmQgY29ybmVycyBvZiAxc3QgZ2FibGUKCXZlYz1wNC52
ZWN0b3JfdG8ocDEpCglnMT1wMS5vZmZzZXQodmVjLEBnYWJsZTEpCgl2ZWM9
cDMudmVjdG9yX3RvKHAyKQoJZzI9cDIub2Zmc2V0KHZlYyxAZ2FibGUxKQoJ
dmVjPWcyLnZlY3Rvcl90byhnMSkKCWcxPWcxLm9mZnNldCh2ZWMsc29mKQoJ
dmVjPWcxLnZlY3Rvcl90byhnMikKCWcyPWcyLm9mZnNldCh2ZWMsc29mKQoJ
IyMjIGdldCBjZW50cmUKY3A9R2VvbTo6UG9pbnQzZC5saW5lYXJfY29tYmlu
YXRpb24oMC41LGcxLDAuNSxnMikKYWRqPWcxLmRpc3RhbmNlKGNwKSMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCm9wcD1hZGoqTWF0aDo6dGFuKEBwaXRj
aF9yKSMjIyMjIyMjIyMjIyMjIyMjIwojIyMgc3RhcnQgdW5kbwpAbW9kZWwu
c3RhcnRfb3BlcmF0aW9uKCJHYWJsZSBSb29mIikKIyMjIG1ha2UgcHJvZmls
ZQp2ZWM9cDEudmVjdG9yX3RvKHAyKQpwMTJmPWcxLm9mZnNldCh2ZWMsIGcx
LmRpc3RhbmNlKGcyKStmYWNfb3V0KQpwMTJmPVtwMTJmLngscDEyZi55LHAx
MmYueitmYWNfdXBdCnZlYz1wMi52ZWN0b3JfdG8ocDEpCnAyMWY9ZzIub2Zm
c2V0KHZlYywgZzIuZGlzdGFuY2UoZzEpK2ZhY19vdXQpCnAyMWY9W3AyMWYu
eCxwMjFmLnkscDIxZi56K2ZhY191cF0KIyMjIGFkZCBsaW5lcwpnMTI9cm9v
Zl9lbnRpdGllcy5hZGRfbGluZShnMSxnMikKZmUxPXJvb2ZfZW50aXRpZXMu
YWRkX2xpbmUoZzIscDEyZilpZiBmYWNfdXAhPTAuMApnZTE9cm9vZl9lbnRp
dGllcy5hZGRfbGluZShwMTJmLFtjcC54LGNwLnksY3AueitvcHArZmFjX3Vw
K3NmX3VwXSkKZ2UyPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2NwLngsY3Au
eSxjcC56K29wcCtmYWNfdXArc2ZfdXBdLHAyMWYpCmZlMj1yb29mX2VudGl0
aWVzLmFkZF9saW5lKHAyMWYsZzEpaWYgZmFjIT0wLjAKIyMjIGRyYXcgZ2Fi
bGUxCmlmIGZhYz09MC4wCiAgZ2ZhY2U9cm9vZl9lbnRpdGllcy5hZGRfZmFj
ZShnMTIsZ2UxLGdlMikKZWxzZQogIGdmYWNlPXJvb2ZfZW50aXRpZXMuYWRk
X2ZhY2UoZzEyLGZlMSxnZTEsZ2UyLGZlMikKZW5kI2lmCmdhYmxlMT1nZmFj
ZSMjIyB0aGlzIGlzIDFzdCBnYWJsZQpnZmFjZS5wdXNocHVsbCgoLUBnYWJs
ZTEtZGlzdC1AZ2FibGUyKSxmYWxzZSkjIyMgbWFrZSByb29mIHNoYXBlCiMj
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMj
IyBnZXQgcGFydHMgb2Ygcm9vZgpyb29mX2ZhY2VzPVtdO2dhYmxlcz1bXQoj
IyMgbWFrZSBob2xlIGluIGJhc2UKcm9vZl9lbnRpdGllcy5lYWNoe3xlfHJv
b2ZfZmFjZXMucHVzaChlKWlmIGUudHlwZW5hbWU9PSJGYWNlIn0Kcm9vZl9m
YWNlcy5lYWNoe3xmYWNlfAogIGdhYmxlcy5wdXNoKGZhY2UpaWYgZmFjZS5u
b3JtYWwuej1+MC4wICYmIGZhY2UuZWRnZXMubGVuZ3RoIT00Cn0KZ2FibGUy
PShnYWJsZXMtW2dhYmxlMV0pWzBdCmdhYmxlMW5vcm1hbD1nYWJsZTEubm9y
bWFsCmdhYmxlMm5vcm1hbD1nYWJsZTIubm9ybWFsCiMjIwpnZWRnZTE9bmls
CmdhYmxlMS5lZGdlcy5lYWNoe3xlfAogIGdlZGdlMT1lIGlmIGUuc3RhcnQu
cG9zaXRpb24uej09ZS5lbmQucG9zaXRpb24uegp9CmdzMT1nZWRnZTEuc3Rh
cnQucG9zaXRpb247IGdlMT1nZWRnZTEuZW5kLnBvc2l0aW9uCmNwMT1HZW9t
OjpQb2ludDNkLmxpbmVhcl9jb21iaW5hdGlvbigwLjUsZ3MxLDAuNSxnZTEp
CmdzMT1nczEub2Zmc2V0KGdlMS52ZWN0b3JfdG8oZ3MxKSxmYWNfb3V0KSMj
I3YzLjAKZ2UxPWdlMS5vZmZzZXQoZ3MxLnZlY3Rvcl90byhnZTEpLGZhY19v
dXQpIyMjdjMuMApnZWRnZTI9bmlsCmdhYmxlMi5lZGdlcy5lYWNoe3xlfAog
IGdlZGdlMj1lIGlmIGUuc3RhcnQucG9zaXRpb24uej09ZS5lbmQucG9zaXRp
b24uegp9CmdzMj1nZWRnZTIuc3RhcnQucG9zaXRpb247IGdlMj1nZWRnZTIu
ZW5kLnBvc2l0aW9uCmNwMj1HZW9tOjpQb2ludDNkLmxpbmVhcl9jb21iaW5h
dGlvbigwLjUsZ3MyLDAuNSxnZTIpCmdzMj1nczIub2Zmc2V0KGdlMi52ZWN0
b3JfdG8oZ3MyKSxmYWNfb3V0KSMjI3YzLjAKZ2UyPWdlMi5vZmZzZXQoZ3My
LnZlY3Rvcl90byhnZTIpLGZhY19vdXQpIyMjdjMuMAppZiBAZ2FibGUxdHlw
ZT09IkJsYW5rIHdpdGggRmFzY2lhIgogIGxuMT1yb29mX2VudGl0aWVzLmFk
ZF9saW5lKFtnczEueCxnczEueSxnczEueitmYWNfdXBdLFtnZTEueCxnZTEu
eSxnZTEueitmYWNfdXBdKSMjIyMKZW5kI2lmCmlmIEBnYWJsZTJ0eXBlPT0i
Qmxhbmsgd2l0aCBGYXNjaWEiCiAgbG4xPXJvb2ZfZW50aXRpZXMuYWRkX2xp
bmUoW2dzMi54LGdzMi55LGdzMi56K2ZhY191cF0sW2dlMi54LGdlMi55LGdl
Mi56K2ZhY191cF0pIyMjIwplbmQjaWYKIyMjIG1ha2UgZ2FibGUgdHlwZXMK
IyMjID0gQmxhbmt8Qmxhbmsgd2l0aCBGYXNjaWF8RWF2ZXMgaW50byBWZXJn
ZXxTb2ZmaXQgaW50byBWZXJnZSBldGMKIyMjIGdhYmxlIE9ORSBmaXJzdC4u
LgppZiBAZ2FibGUxdHlwZT09IlZlcmdlIGZyb20gRmFzY2lhIgogIGlmIEBm
c3R5cGU9fi9eU2xvcGluZysvCiAgICBnczE9Z3MxLm9mZnNldChnczEudmVj
dG9yX3RvKGdlMSksZmFjX291dCkKICAgIGdlMT1nZTEub2Zmc2V0KGdlMS52
ZWN0b3JfdG8oZ3MxKSxmYWNfb3V0KQogIGVuZCNpZgogIGxuMT1yb29mX2Vu
dGl0aWVzLmFkZF9saW5lKGdlMSxbY3AxLngsY3AxLnksY3AxLnorb3BwXSkK
ICByb29mX2VudGl0aWVzLmFkZF9saW5lKFtjcDEueCxjcDEueSxjcDEueitv
cHBdLGdzMSkKICBnYWIxPW5pbDsgbG4xLmZhY2VzLmVhY2h7fGV8CiAgICBn
YWIxPWUgaWYgZS5ib3VuZHMubWF4LnohPXJvb2ZfZ3JvdXAuYm91bmRzLm1h
eC56CiAgfQogIGdhYjEucHVzaHB1bGwoLUBnYWJsZTEsZmFsc2UpIGlmIGdh
YjEKZWxzaWYgQGdhYmxlMXR5cGU9PSJWZXJnZSBmcm9tIFNvZmZpdCIKICBp
ZiBAZnN0eXBlPX4vXlNsb3BpbmcrLwogICAgZ3MxPWdzMS5vZmZzZXQoZ3Mx
LnZlY3Rvcl90byhnZTEpLGZhY19vdXQpCiAgICBnZTE9Z2UxLm9mZnNldChn
ZTEudmVjdG9yX3RvKGdzMSksZmFjX291dCkKICBlbmQjaWYKICByaXNlPU1h
dGg6OnRhbihAcGl0Y2hfcikqc29mIyMjCiAgZ2UxPWdlMS5vZmZzZXQoZ2Ux
LnZlY3Rvcl90byhnczEpLHNvZikKICBnczE9Z3MxLm9mZnNldChnczEudmVj
dG9yX3RvKGdlMSksc29mKQogIGxuMT1yb29mX2VudGl0aWVzLmFkZF9saW5l
KGdlMSxbY3AxLngsY3AxLnksY3AxLnorb3BwLXJpc2VdKSMjIwogIHJvb2Zf
ZW50aXRpZXMuYWRkX2xpbmUoW2NwMS54LGNwMS55LGNwMS56K29wcC1yaXNl
XSxnczEpIyMjCiAgZ2FiMT1uaWw7IGxuMS5mYWNlcy5lYWNoe3xlfAogICAg
Z2FiMT1lIGlmIGUuYm91bmRzLm1heC56IT1yb29mX2dyb3VwLmJvdW5kcy5t
YXguegogIH0KICBnYWIxLnB1c2hwdWxsKC1AZ2FibGUxLGZhbHNlKSBpZiBn
YWIxCiAgIyMjVmVyZ2UgYnkgSGVpZ2h0fFZlcmdlIGJ5IFdpZHRofFZlcmdl
IGJ5IEhlaWdodCwgd2l0aCBGYXNjaWF8VmVyZ2UgYnkgV2lkdGgsIHdpdGgg
RmFzY2lhfFZlcmdlIGJ5IEhlaWdodCwgd2l0aCBCb3gtRWF2ZXN8VmVyZ2Ug
YnkgV2lkdGgsIHdpdGggQm94LUVhdmVzCmVsc2lmIEBnYWJsZTF0eXBlPT0i
VmVyZ2UgYnkgSGVpZ2h0IiAjIyMKICBpZiBub3QgQHZlcmdlMSBvciBAdmVy
Z2UxPD0wCiAgICBAdmVyZ2UxPTQuaW5jaCBpZiBAbW9kZWwub3B0aW9uc1si
VW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXTwyCiAgICBAdmVyZ2UxPTEw
MC5tbSBpZiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0
aFVuaXQiXT4xCiAgZW5kI2lmCiAgbWF4aHQ9KG9wcCtmYWNfdXAtMTAubW0p
LnRvX2w7IG1heGh0X3M9bWF4aHQudG9fcwogIHByb21wdHM9WyJGaXJzdCBH
YWJsZSBWZXJnZSBIZWlnaHQgKCNAdW5pdHMpOiAiXQogIHRpdGxlPSJGaXJz
dCBHYWJsZSBWZXJnZSBIZWlnaHQ6IG1pbi4gPiAwLCBtYXguIDwgIittYXho
dF9zKyIjQHVuaXRzIgogIHZhbHVlcz1bQHZlcmdlMV0KICBAdmVyZ2UxLD1p
bnB1dGJveChwcm9tcHRzLHZhbHVlcyxbIiJdLHRpdGxlKQogIEB2ZXJnZTE9
bWF4aHQgaWYgbm90IEB2ZXJnZTEKICB3aGlsZSBAdmVyZ2UxPm1heGh0KzEw
Lm1tIHx8IEB2ZXJnZTE8PTAKICAgIEB2ZXJnZTE9bWF4aHQudG9fbAogICAg
QHZlcmdlMSw9aW5wdXRib3gocHJvbXB0cyxbQHZlcmdlMV0sWyIiXSx0aXRs
ZSkKCUB2ZXJnZTE9bWF4aHQgaWYgbm90IEB2ZXJnZTEKICBlbmQjd2hpbGUK
ICAjIyMgZG8gbGluZXMKICBpZiBub3QgQGZzdHlwZT1+L15TbG9waW5nKy8K
ICAgIGlmIEB2ZXJnZTE8ZmFjX3VwIyMjCgkgIGFkZD1mYWNfdXAtQHZlcmdl
MSMjIwoJICBsbjE9cm9vZl9lbnRpdGllcy5hZGRfbGluZShbZ2UxLngsZ2Ux
LnksZ2UxLnorYWRkXSxbY3AxLngsY3AxLnksY3AxLnorb3BwLUB2ZXJnZTEr
ZmFjX3VwXSkjIyMjCiAgICAgIHJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dz
MS54LGdzMS55LGdzMS56K2FkZF0sW2NwMS54LGNwMS55LGNwMS56K29wcC1A
dmVyZ2UxK2ZhY191cF0pIyMjIwoJZWxzZQoJICBkaWZmPUB2ZXJnZTEtZmFj
X3VwIyMjCgkgIGFkZD1kaWZmL01hdGg6OnRhbihAcGl0Y2hfcikKCSAgZ2Ux
PWdlMS5vZmZzZXQoZ2VkZ2UxLmxpbmVbMV0ucmV2ZXJzZSxhZGQpCgkgIGdz
MT1nczEub2Zmc2V0KGdlZGdlMS5saW5lWzFdLGFkZCkKCSAgbG4xPXJvb2Zf
ZW50aXRpZXMuYWRkX2xpbmUoW2dlMS54LGdlMS55LGdlMS56XSxbY3AxLngs
Y3AxLnksY3AxLnorb3BwLUB2ZXJnZTErZmFjX3VwXSkjIyMjCiAgICAgIHJv
b2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dzMS54LGdzMS55LGdzMS56XSxbY3Ax
LngsY3AxLnksY3AxLnorb3BwLUB2ZXJnZTErZmFjX3VwXSkjIyMjCgllbmQj
aWYKICBlbHNlIyMjIHNsb3BpbmcgZmFzY2lhCiAgICBpZiBAdmVyZ2UxPGZh
Y191cCMjIwoJICBhZGQ9ZmFjX3VwLUB2ZXJnZTEjIyMKCSAgc2Zfb3V0PWFk
ZCpNYXRoOjp0YW4oQHBpdGNoX3IpCgkgIHNmX3VwID1zZl9vdXQqTWF0aDo6
dGFuKEBwaXRjaF9yKQoJICBnczE9Z3MxLm9mZnNldChnczEudmVjdG9yX3Rv
KGdlMSksZmFjX291dC1zZl9vdXQpCgkgIGdlMT1nZTEub2Zmc2V0KGdlMS52
ZWN0b3JfdG8oZ3MxKSxmYWNfb3V0LXNmX291dCkKCSAgbG4xPXJvb2ZfZW50
aXRpZXMuYWRkX2xpbmUoW2dlMS54LGdlMS55LGdlMS56K2FkZF0sW2NwMS54
LGNwMS55LGNwMS56K29wcC1AdmVyZ2UxK2ZhY191cCtzZl91cF0pIyMjIwog
ICAgICByb29mX2VudGl0aWVzLmFkZF9saW5lKFtnczEueCxnczEueSxnczEu
eithZGRdLFtjcDEueCxjcDEueSxjcDEueitvcHAtQHZlcmdlMStmYWNfdXAr
c2ZfdXBdKSMjIyMKCWVsc2UKCSAgZGlmZj1AdmVyZ2UxLWZhY191cCMjIwoJ
ICBhZGQ9ZGlmZi9NYXRoOjp0YW4oQHBpdGNoX3IpCgkgIGdlMT1nZTEub2Zm
c2V0KGdlZGdlMS5saW5lWzFdLnJldmVyc2UsYWRkKQoJICBnczE9Z3MxLm9m
ZnNldChnZWRnZTEubGluZVsxXSxhZGQpCgkgIGxuMT1yb29mX2VudGl0aWVz
LmFkZF9saW5lKFtnZTEueCxnZTEueSxnZTEuel0sW2NwMS54LGNwMS55LGNw
MS56K29wcC1AdmVyZ2UxK2ZhY191cF0pIyMjIwogICAgICByb29mX2VudGl0
aWVzLmFkZF9saW5lKFtnczEueCxnczEueSxnczEuel0sW2NwMS54LGNwMS55
LGNwMS56K29wcC1AdmVyZ2UxK2ZhY191cF0pIyMjIwoJZW5kI2lmCiAgZW5k
I2lmCiAgZ2FiMT1uaWw7IGxuMS5mYWNlcy5lYWNoe3xlfGdhYjE9ZSBpZiBl
LmJvdW5kcy5tYXgueiE9cm9vZl9ncm91cC5ib3VuZHMubWF4Lnp9CiAgZ2Fi
MS5wdXNocHVsbCgtQGdhYmxlMSxmYWxzZSkgaWYgZ2FiMQogICMjIwplbHNp
ZiBAZ2FibGUxdHlwZT09IlZlcmdlIGJ5IFdpZHRoIiMjIwogIGlmIG5vdCBA
dmVyZ2UxdyBvciBAdmVyZ2Uxdzw9MAogICAgQHZlcmdlMXc9NC5pbmNoIGlm
IEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJd
PDIKICAgIEB2ZXJnZTF3PTEwMC5tbSBpZiBAbW9kZWwub3B0aW9uc1siVW5p
dHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXT4xCiAgZW5kI2lmCiAgbWF4aHQ9
KChvcHArZmFjX3VwKzEwLm1tKSpNYXRoOjpjb3MoQHBpdGNoX3IpKS50b19s
OyBtYXhodF9zPW1heGh0LnRvX3MKICBwcm9tcHRzPVsiRmlyc3QgR2FibGUg
VmVyZ2UgUGVycGVuZGljdWxhciBXaWR0aCAoI0B1bml0cyk6ICJdCiAgdGl0
bGU9IkZpcnN0IEdhYmxlIFZlcmdlOiBtaW4uID4gMCwgbWF4LiA8ICIrbWF4
aHRfcysiI0B1bml0cyIKICB2YWx1ZXM9W0B2ZXJnZTF3XQogIEB2ZXJnZTF3
LD1pbnB1dGJveChwcm9tcHRzLHZhbHVlcyxbIiJdLHRpdGxlKQogIEB2ZXJn
ZTF3PW1heGh0IGlmIG5vdCBAdmVyZ2UxdwogIHdoaWxlIEB2ZXJnZTF3Pm1h
eGh0KzEwLm1tIHx8IEB2ZXJnZTF3PD0wCiAgICBAdmVyZ2Uxdz1tYXhodC50
b19sCiAgICBAdmVyZ2Uxdyw9aW5wdXRib3gocHJvbXB0cyxbQHZlcmdlMV0s
WyIiXSx0aXRsZSkKCUB2ZXJnZTF3PW1heGh0IGlmIG5vdCBAdmVyZ2Uxdwog
IGVuZCN3aGlsZQogICMjIyBkbyBsaW5lcwogIEB2ZXJ0PUB2ZXJnZTF3Kk1h
dGg6OmNvcyhAcGl0Y2hfcikKICAjIyMgZG8gbGluZXMKICBpZiBub3QgQGZz
dHlwZT1+L15TbG9waW5nKy8KICAgIGlmIEB2ZXJ0PGZhY191cCMjIwoJICBh
ZGQ9ZmFjX3VwLUB2ZXJ0IyMjCgkgIGxuMT1yb29mX2VudGl0aWVzLmFkZF9s
aW5lKFtnZTEueCxnZTEueSxnZTEueithZGRdLFtjcDEueCxjcDEueSxjcDEu
eitvcHAtQHZlcnRdKQogICAgICByb29mX2VudGl0aWVzLmFkZF9saW5lKFtn
czEueCxnczEueSxnczEueithZGRdLFtjcDEueCxjcDEueSxjcDEueitvcHAt
QHZlcnRdKQoJZWxzZQoJICBkaWZmPUB2ZXJ0LWZhY191cCMjIwoJICBhZGQ9
ZGlmZi9NYXRoOjp0YW4oQHBpdGNoX3IpCgkgIGdlMT1nZTEub2Zmc2V0KGdl
ZGdlMS5saW5lWzFdLnJldmVyc2UsYWRkKQoJICBnczE9Z3MxLm9mZnNldChn
ZWRnZTEubGluZVsxXSxhZGQpCgkgIGxuMT1yb29mX2VudGl0aWVzLmFkZF9s
aW5lKFtnZTEueCxnZTEueSxnZTEuel0sW2NwMS54LGNwMS55LGNwMS56K29w
cC1AdmVydCtmYWNfdXBdKQogICAgICByb29mX2VudGl0aWVzLmFkZF9saW5l
KFtnczEueCxnczEueSxnczEuel0sW2NwMS54LGNwMS55LGNwMS56K29wcC1A
dmVydCtmYWNfdXBdKQoJZW5kI2lmCiAgZWxzZSMjIyBzbG9waW5nIGZhc2Np
YQogICAgaWYgQHZlcnQ8ZmFjX3VwIyMjCgkgIGFkZD1mYWNfdXAtQHZlcnQj
IyMKCSAgc2Zfb3V0PWFkZCpNYXRoOjp0YW4oQHBpdGNoX3IpCgkgIHNmX3Vw
ID1zZl9vdXQqTWF0aDo6dGFuKEBwaXRjaF9yKQoJICBnczE9Z3MxLm9mZnNl
dChnczEudmVjdG9yX3RvKGdlMSksZmFjX291dC1zZl9vdXQpCgkgIGdlMT1n
ZTEub2Zmc2V0KGdlMS52ZWN0b3JfdG8oZ3MxKSxmYWNfb3V0LXNmX291dCkK
CSAgbG4xPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dlMS54LGdlMS55LGdl
MS56K2FkZF0sW2NwMS54LGNwMS55LGNwMS56K29wcCthZGQrc2ZfdXBdKQog
ICAgICByb29mX2VudGl0aWVzLmFkZF9saW5lKFtnczEueCxnczEueSxnczEu
eithZGRdLFtjcDEueCxjcDEueSxjcDEueitvcHArYWRkK3NmX3VwXSkKCWVs
c2UKCSAgZGlmZj1AdmVydC1mYWNfdXAjIyMKCSAgYWRkPWRpZmYvTWF0aDo6
dGFuKEBwaXRjaF9yKQoJICBnZTE9Z2UxLm9mZnNldChnZWRnZTEubGluZVsx
XS5yZXZlcnNlLGFkZCkKCSAgZ3MxPWdzMS5vZmZzZXQoZ2VkZ2UxLmxpbmVb
MV0sYWRkKQoJICB1cD0oY3AxLmRpc3RhbmNlKGdzMSkpKk1hdGg6OnRhbihA
cGl0Y2hfcikKCSAgbG4xPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dlMS54
LGdlMS55LGdlMS56XSxbY3AxLngsY3AxLnksY3AxLnordXBdKQogICAgICBy
b29mX2VudGl0aWVzLmFkZF9saW5lKFtnczEueCxnczEueSxnczEuel0sW2Nw
MS54LGNwMS55LGNwMS56K3VwXSkKCWVuZCNpZgogIGVuZCNpZgogIGdhYjE9
bmlsOyBsbjEuZmFjZXMuZWFjaHt8ZXxnYWIxPWUgaWYgZS5ib3VuZHMubWF4
LnohPXJvb2ZfZ3JvdXAuYm91bmRzLm1heC56fQogIGdhYjEucHVzaHB1bGwo
LUBnYWJsZTEsZmFsc2UpIGlmIGdhYjEKICAjIyMgIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCmVsc2lmIEBnYWJsZTF0eXBlPT0iVmVyZ2UgYnkgSGVpZ2h0LCB3
aXRoIEZhc2NpYSIKICBpZiBub3QgQHZlcmdlMSBvciBAdmVyZ2UxPD0wCiAg
ICBAdmVyZ2UxPTQuaW5jaCBpZiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRp
b25zIl1bIkxlbmd0aFVuaXQiXTwyCiAgICBAdmVyZ2UxPTEwMC5tbSBpZiBA
bW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXT4x
CiAgZW5kI2lmCiAgbWF4aHQ9KG9wcCtmYWNfdXAtMTAubW0pLnRvX2w7IG1h
eGh0X3M9bWF4aHQudG9fcwogIHByb21wdHM9WyJGaXJzdCBHYWJsZSBWZXJn
ZSBIZWlnaHQgKCNAdW5pdHMpOiAiXQogIHRpdGxlPSJGaXJzdCBHYWJsZSBW
ZXJnZSBIZWlnaHQ6IG1pbi4gPiAwLCBtYXguIDwgIittYXhodF9zKyIjQHVu
aXRzIgogIHZhbHVlcz1bQHZlcmdlMV0KICBAdmVyZ2UxLD1pbnB1dGJveChw
cm9tcHRzLHZhbHVlcyxbIiJdLHRpdGxlKQogIEB2ZXJnZTE9bWF4aHQgaWYg
bm90IEB2ZXJnZTEKICB3aGlsZSBAdmVyZ2UxPm1heGh0KzEwLm1tIHx8IEB2
ZXJnZTE8PTAKICAgIEB2ZXJnZTE9bWF4aHQudG9fbAogICAgQHZlcmdlMSw9
aW5wdXRib3gocHJvbXB0cyxbQHZlcmdlMV0sWyIiXSx0aXRsZSkKCUB2ZXJn
ZTE9bWF4aHQgaWYgbm90IEB2ZXJnZTEKICBlbmQjd2hpbGUKICAjIyMgZG8g
bGluZXMuLi4KICBpZiBub3QgQGZzdHlwZT1+L15TbG9waW5nKy8KICAgIEBp
bnNldD1AdmVyZ2UxL01hdGg6OnRhbihAcGl0Y2hfcikKICAgIGdlMT1nZTEu
b2Zmc2V0KGdlZGdlMS5saW5lWzFdLnJldmVyc2UsQGluc2V0KQogICAgZ3Mx
PWdzMS5vZmZzZXQoZ2VkZ2UxLmxpbmVbMV0sQGluc2V0KQogICAgbG5BPXJv
b2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dlMS54LGdlMS55LGdlMS56K2ZhYytm
YWNfb3V0XSxbY3AxLngsY3AxLnksY3AxLnorb3BwK2ZhYytmYWNfb3V0LUB2
ZXJnZTFdKQogICAgbG5CPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2NwMS54
LGNwMS55LGNwMS56K29wcCtmYWMrZmFjX291dC1AdmVyZ2UxXSxbZ3MxLngs
Z3MxLnksZ3MxLnorZmFjK2ZhY19vdXRdKQogICAgbG5DPXJvb2ZfZW50aXRp
ZXMuYWRkX2xpbmUoW2dzMS54LGdzMS55LGdzMS56K2ZhYytmYWNfb3V0XSxb
Z2UxLngsZ2UxLnksZ2UxLnorZmFjK2ZhY19vdXRdKQogICAgZ2FiMT1yb29m
X2VudGl0aWVzLmFkZF9mYWNlKGxuQSxsbkIsbG5DKQogICAgZ2FiMS5wdXNo
cHVsbCgtQGdhYmxlMSxmYWxzZSkgaWYgZ2FiMQogIGVsc2Ujc2xvcGluZyBm
YXNjaWEKICAgIHNmX2luPUB2ZXJnZTEvTWF0aDo6dGFuKEBwaXRjaF9yKQog
ICAgZ2UxPWdlMS5vZmZzZXQoZ2UxLnZlY3Rvcl90byhnczEpLHNmX2luKQog
ICAgZ3MxPWdzMS5vZmZzZXQoZ3MxLnZlY3Rvcl90byhnZTEpLHNmX2luKQog
ICAgbG5BPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dlMS54LGdlMS55LGdl
MS56K2ZhY191cF0sW2NwMS54LGNwMS55LGNwMS56K29wcCtmYWNfdXArc2Zf
dXAtQHZlcmdlMV0pCiAgICBsbkI9cm9vZl9lbnRpdGllcy5hZGRfbGluZShb
Y3AxLngsY3AxLnksY3AxLnorb3BwK2ZhY191cCtzZl91cC1AdmVyZ2UxXSxb
Z3MxLngsZ3MxLnksZ3MxLnorZmFjX3VwXSkKICAgIGxuQz1yb29mX2VudGl0
aWVzLmFkZF9saW5lKFtnczEueCxnczEueSxnczEueitmYWNfdXBdLFtnZTEu
eCxnZTEueSxnZTEueitmYWNfdXBdKQogICAgZ2FiMT1yb29mX2VudGl0aWVz
LmFkZF9mYWNlKGxuQSxsbkIsbG5DKQogICAgZ2FiMS5wdXNocHVsbCgtQGdh
YmxlMSxmYWxzZSkgaWYgZ2FiMQogIGVuZCNpZgogICMjIwplbHNpZiBAZ2Fi
bGUxdHlwZT09IlZlcmdlIGJ5IFdpZHRoLCB3aXRoIEZhc2NpYSIKICBAdmVy
Z2Uxdz1AZmFzY2lhIGlmICEgQHZlcmdlMXcKICBpZiBAdmVyZ2Uxdz09MAog
ICAgQHZlcmdlMXc9NC5pbmNoIGlmIEBtb2RlbC5vcHRpb25zWyJVbml0c09w
dGlvbnMiXVsiTGVuZ3RoVW5pdCJdPDIKICAgIEB2ZXJnZTF3PTEwMC5tbSBp
ZiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQi
XT4xCiAgZW5kI2lmCiAgQHZlcnQ9QHZlcmdlMXcvTWF0aDo6Y29zKEBwaXRj
aF9yKQogIEByaXNlPU1hdGg6OnRhbihAcGl0Y2hfcikqQHNvZmZpdAogIG1h
eGh0PSgoQHJpc2UrQGZhc2NpYSkqTWF0aDo6Y29zKEBwaXRjaF9yKSkudG9f
bDttYXhodF9zPW1heGh0LnRvX3MKICBwcm9tcHRzPVsiRmlyc3QgR2FibGUg
VmVyZ2UgUGVycGVuZGljdWxhciBXaWR0aCAoI0B1bml0cyk6ICJdCiAgdGl0
bGU9IkZpcnN0IEdhYmxlIFZlcmdlOiBtaW4uID4gMCwgbWF4LiA8ICIrbWF4
aHRfcysiI0B1bml0cyIKICB2YWx1ZXM9W0B2ZXJnZTF3XQogIEB2ZXJnZTF3
LD1pbnB1dGJveChwcm9tcHRzLHZhbHVlcyxbIiJdLHRpdGxlKQogIEB2ZXJn
ZTF3PUBmYXNjaWEgaWYgISBAdmVyZ2UxdwogIHdoaWxlIEB2ZXJnZTF3Pm1h
eGh0IHx8IEB2ZXJnZTF3PD0wCiAgICBAdmVyZ2Uxdz1tYXhodAogICAgQHZl
cmdlMXcsPWlucHV0Ym94KHByb21wdHMsW0B2ZXJnZTF3XSxbIiJdLHRpdGxl
KQogIGVuZCN3aGlsZQogICMjIyBkbyBsaW5lcwogIGlmIG5vdCBAZnN0eXBl
PX4vXlNsb3BpbmcrLwogICAgQGluc2V0PUB2ZXJ0L01hdGg6OnRhbihAcGl0
Y2hfcikKICAgIGdlMT1nZTEub2Zmc2V0KGdlZGdlMS5saW5lWzFdLnJldmVy
c2UsQGluc2V0KQogICAgZ3MxPWdzMS5vZmZzZXQoZ2VkZ2UxLmxpbmVbMV0s
QGluc2V0KQogICAgbG5BPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dlMS54
LGdlMS55LGdlMS56K2ZhYytmYWNfb3V0XSxbY3AxLngsY3AxLnksY3AxLnor
b3BwK2ZhYytmYWNfb3V0LUB2ZXJ0XSkKICAgIGxuQj1yb29mX2VudGl0aWVz
LmFkZF9saW5lKFtjcDEueCxjcDEueSxjcDEueitvcHArZmFjK2ZhY19vdXQt
QHZlcnRdLFtnczEueCxnczEueSxnczEueitmYWMrZmFjX291dF0pCiAgICBs
bkM9cm9vZl9lbnRpdGllcy5hZGRfbGluZShbZ3MxLngsZ3MxLnksZ3MxLnor
ZmFjK2ZhY19vdXRdLFtnZTEueCxnZTEueSxnZTEueitmYWMrZmFjX291dF0p
CiAgICBnYWIxPXJvb2ZfZW50aXRpZXMuYWRkX2ZhY2UobG5BLGxuQixsbkMp
CiAgICBnYWIxLnB1c2hwdWxsKC1AZ2FibGUxLGZhbHNlKSBpZiBnYWIxCiAg
ZWxzZSNzbG9waW5nIGZhc2NpYSA/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/
CiAgICBzZl9pbj1AdmVydC9NYXRoOjp0YW4oQHBpdGNoX3IpCiAgICBnZTE9
Z2UxLm9mZnNldChnZTEudmVjdG9yX3RvKGdzMSksc2ZfaW4pCiAgICBnczE9
Z3MxLm9mZnNldChnczEudmVjdG9yX3RvKGdlMSksc2ZfaW4pCiAgICBsbkE9
cm9vZl9lbnRpdGllcy5hZGRfbGluZShbZ2UxLngsZ2UxLnksZ2UxLnorZmFj
X3VwXSxbY3AxLngsY3AxLnksY3AxLnorb3BwK2ZhY191cCtzZl91cC1AdmVy
dF0pCiAgICBsbkI9cm9vZl9lbnRpdGllcy5hZGRfbGluZShbY3AxLngsY3Ax
LnksY3AxLnorb3BwK2ZhY191cCtzZl91cC1AdmVydF0sW2dzMS54LGdzMS55
LGdzMS56K2ZhY191cF0pCiAgICBsbkM9cm9vZl9lbnRpdGllcy5hZGRfbGlu
ZShbZ3MxLngsZ3MxLnksZ3MxLnorZmFjX3VwXSxbZ2UxLngsZ2UxLnksZ2Ux
LnorZmFjX3VwXSkKICAgIGdhYjE9cm9vZl9lbnRpdGllcy5hZGRfZmFjZShs
bkEsbG5CLGxuQykKICAgIGdhYjEucHVzaHB1bGwoLUBnYWJsZTEsZmFsc2Up
IGlmIGdhYjEKICBlbmQjaWYKICAjIyMKZWxzaWYgQGdhYmxlMXR5cGU9PSJW
ZXJnZSB3aXRoIEZhc2NpYSBbQWxsIEVxdWFsXSIjIyMKICBAdmVydD1mYWNf
dXAKICBpZiBub3QgQGZzdHlwZT1+L15TbG9waW5nKy8KICAgIEBpbnNldD1A
dmVydC9NYXRoOjp0YW4oQHBpdGNoX3IpCiAgICBnZTE9Z2UxLm9mZnNldChn
ZWRnZTEubGluZVsxXS5yZXZlcnNlLEBpbnNldCkKICAgIGdzMT1nczEub2Zm
c2V0KGdlZGdlMS5saW5lWzFdLEBpbnNldCkKICAgIGxuQT1yb29mX2VudGl0
aWVzLmFkZF9saW5lKFtnZTEueCxnZTEueSxnZTEueitmYWMrZmFjX291dF0s
W2NwMS54LGNwMS55LGNwMS56K29wcCtmYWMrZmFjX291dC1AdmVydF0pCiAg
ICBsbkI9cm9vZl9lbnRpdGllcy5hZGRfbGluZShbY3AxLngsY3AxLnksY3Ax
Lnorb3BwK2ZhYytmYWNfb3V0LUB2ZXJ0XSxbZ3MxLngsZ3MxLnksZ3MxLnor
ZmFjK2ZhY19vdXRdKQogICAgbG5DPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUo
W2dzMS54LGdzMS55LGdzMS56K2ZhYytmYWNfb3V0XSxbZ2UxLngsZ2UxLnks
Z2UxLnorZmFjK2ZhY19vdXRdKQogICAgZ2FiMT1yb29mX2VudGl0aWVzLmFk
ZF9mYWNlKGxuQSxsbkIsbG5DKQogICAgZ2FiMS5wdXNocHVsbCgtQGdhYmxl
MSxmYWxzZSkgaWYgZ2FiMQogIGVsc2Ujc2xvcGluZyBmYXNjaWEgPz8/Pz8/
Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PwogICAgc2ZfaW49QHZlcnQvTWF0aDo6dGFu
KEBwaXRjaF9yKQogICAgZ2UxPWdlMS5vZmZzZXQoZ2UxLnZlY3Rvcl90byhn
czEpLHNmX2luKQogICAgZ3MxPWdzMS5vZmZzZXQoZ3MxLnZlY3Rvcl90byhn
ZTEpLHNmX2luKQogICAgbG5BPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dl
MS54LGdlMS55LGdlMS56K2ZhY191cF0sW2NwMS54LGNwMS55LGNwMS56K29w
cCtmYWNfdXArc2ZfdXAtQHZlcnRdKQogICAgbG5CPXJvb2ZfZW50aXRpZXMu
YWRkX2xpbmUoW2NwMS54LGNwMS55LGNwMS56K29wcCtmYWNfdXArc2ZfdXAt
QHZlcnRdLFtnczEueCxnczEueSxnczEueitmYWNfdXBdKQogICAgbG5DPXJv
b2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dzMS54LGdzMS55LGdzMS56K2ZhY191
cF0sW2dlMS54LGdlMS55LGdlMS56K2ZhY191cF0pCiAgICBnYWIxPXJvb2Zf
ZW50aXRpZXMuYWRkX2ZhY2UobG5BLGxuQixsbkMpCiAgICBnYWIxLnB1c2hw
dWxsKC1AZ2FibGUxLGZhbHNlKSBpZiBnYWIxCiAgZW5kI2lmCiAgIyMjCmVs
c2lmIEBnYWJsZTF0eXBlPT0iVmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEJveC1F
YXZlcyIKICBAdmVyZ2UxPUBmYXNjaWEgaWYgISBAdmVyZ2UxCiAgaWYgQHZl
cmdlMT09MAogICAgQHZlcmdlMT00LmluY2ggaWYgQG1vZGVsLm9wdGlvbnNb
IlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il08MgogICAgQHZlcmdlMT0x
MDAubW0gaWYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5n
dGhVbml0Il0+MQogIGVuZCNpZgogIG1heGh0PShvcHArQGZhc2NpYSkudG9f
bDttYXhodF9zPW1heGh0LnRvX3MKICBwcm9tcHRzPVsiRmlyc3QgR2FibGUg
VmVyZ2UgSGVpZ2h0ICgjQHVuaXRzKTogIl0KICB0aXRsZT0iRmlyc3QgR2Fi
bGUgVmVyZ2UgSGVpZ2h0OiBtaW4uID4gMCwgbWF4LiA8ICIrbWF4aHRfcysi
I0B1bml0cyIKICB2YWx1ZXM9W0B2ZXJnZTFdCiAgQHZlcmdlMSw9aW5wdXRi
b3gocHJvbXB0cyx2YWx1ZXMsWyIiXSx0aXRsZSkKICBAdmVyZ2UxPUBmYXNj
aWEgaWYgISBAdmVyZ2UxCiAgd2hpbGUgQHZlcmdlMT5tYXhodCB8fCBAdmVy
Z2UxPD0wCiAgICBAdmVyZ2UxPW1heGh0CiAgICBAdmVyZ2UxLD1pbnB1dGJv
eChwcm9tcHRzLFtAdmVyZ2UxXSxbIiJdLHRpdGxlKQogIGVuZCN3aGlsZQog
ICMjIyBkbyBsaW5lcy4uLgogICMjIyBnZXQgQHJpc2Ugb24gZWF2ZXMgb3Zl
ciBzb2ZmaXQgYXQgYW5nbGUKICBAcmlzZT1NYXRoOjp0YW4oQHBpdGNoX3Ip
KkBzb2ZmaXQKICBnZTE9Z2UxLm9mZnNldChnZWRnZTEubGluZVsxXS5yZXZl
cnNlLEBzb2ZmaXQpCiAgZ3MxPWdzMS5vZmZzZXQoZ2VkZ2UxLmxpbmVbMV0s
QHNvZmZpdCkKICByb29mX2VudGl0aWVzLmFkZF9saW5lKGdlMSxbZ2UxLngs
Z2UxLnksZ2UxLnorQHJpc2UrZmFjK2ZhY19vdXQtQHZlcmdlMV0pCiAgbG4x
PXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dlMS54LGdlMS55LGdlMS56K0By
aXNlK2ZhYytmYWNfb3V0LUB2ZXJnZTFdLFtjcDEueCxjcDEueSxjcDEueitv
cHArZmFjK2ZhY19vdXQtQHZlcmdlMV0pCiAgcm9vZl9lbnRpdGllcy5hZGRf
bGluZShbY3AxLngsY3AxLnksY3AxLnorb3BwK2ZhYytmYWNfb3V0LUB2ZXJn
ZTFdLFtnczEueCxnczEueSxnczEueitAcmlzZStmYWMrZmFjX291dC1AdmVy
Z2UxXSkKICByb29mX2VudGl0aWVzLmFkZF9saW5lKFtnczEueCxnczEueSxn
czEueitAcmlzZStmYWMrZmFjX291dC1AdmVyZ2UxXSxnczEpCiAgZ2FiMT1u
aWw7IGxuMS5mYWNlcy5lYWNoe3xlfAogICAgZ2FiMT1lIGlmIGUuYm91bmRz
Lm1heC56IT1yb29mX2dyb3VwLmJvdW5kcy5tYXguegogIH0KICBnYWIxLnB1
c2hwdWxsKC1AZ2FibGUxLGZhbHNlKSBpZiBnYWIxCiAgIyMjCmVsc2lmIEBn
YWJsZTF0eXBlPT0iVmVyZ2UgYnkgV2lkdGgsIHdpdGggQm94LUVhdmVzIgog
IEB2ZXJnZTF3PUBmYXNjaWEgaWYgISBAdmVyZ2UxdwogIGlmIEB2ZXJnZTF3
PT0wCiAgICBAdmVyZ2Uxdz00LmluY2ggaWYgQG1vZGVsLm9wdGlvbnNbIlVu
aXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il08MgogICAgQHZlcmdlMXc9MTAw
Lm1tIGlmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3Ro
VW5pdCJdPjEKICBlbmQjaWYKICB2ZXJ0PUB2ZXJnZTF3L01hdGg6OmNvcyhA
cGl0Y2hfcikKICBAcmlzZT1NYXRoOjp0YW4oQHBpdGNoX3IpKkBzb2ZmaXQK
ICBtYXhodD0oKEByaXNlK0BmYXNjaWEpKk1hdGg6OmNvcyhAcGl0Y2hfcikp
LnRvX2w7bWF4aHRfcz1tYXhodC50b19zCiAgcHJvbXB0cz1bIkZpcnN0IEdh
YmxlIFZlcmdlIFBlcnBlbmRpY3VsYXIgV2lkdGggKCNAdW5pdHMpOiAiXQog
IHRpdGxlPSJGaXJzdCBHYWJsZSBWZXJnZTogbWluLiA+IDAsIG1heC4gPCAi
K21heGh0X3MrIiNAdW5pdHMiCiAgdmFsdWVzPVtAdmVyZ2Uxd10KICBAdmVy
Z2Uxdyw9aW5wdXRib3gocHJvbXB0cyx2YWx1ZXMsWyIiXSx0aXRsZSkKICBA
dmVyZ2Uxdz1AZmFzY2lhIGlmICEgQHZlcmdlMXcKICB3aGlsZSBAdmVyZ2Ux
dz5tYXhodCB8fCBAdmVyZ2Uxdzw9MAogICAgQHZlcmdlMXc9bWF4aHQKICAg
IEB2ZXJnZTF3LD1pbnB1dGJveChwcm9tcHRzLFtAdmVyZ2Uxd10sWyIiXSx0
aXRsZSkKICBlbmQjd2hpbGUKICAjIyMgZG8gbGluZXMKICBAdmVydD1AdmVy
Z2Uxdy9NYXRoOjpjb3MoQHBpdGNoX3IpCiAgZ2UxPWdlMS5vZmZzZXQoZ2Vk
Z2UxLmxpbmVbMV0ucmV2ZXJzZSxzb2YpCiAgZ3MxPWdzMS5vZmZzZXQoZ2Vk
Z2UxLmxpbmVbMV0sc29mKQogIHJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoZ2Ux
LFtnZTEueCxnZTEueSxnZTEueitAcmlzZStmYWMrZmFjX291dC1AdmVydF0p
CiAgbG4xPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dlMS54LGdlMS55LGdl
MS56K0ByaXNlK2ZhYytmYWNfb3V0LUB2ZXJ0XSxbY3AxLngsY3AxLnksY3Ax
Lnorb3BwK2ZhYytmYWNfb3V0LUB2ZXJ0XSkKICByb29mX2VudGl0aWVzLmFk
ZF9saW5lKFtjcDEueCxjcDEueSxjcDEueitvcHArZmFjK2ZhY19vdXQtQHZl
cnRdLFtnczEueCxnczEueSxnczEueitAcmlzZStmYWMrZmFjX291dC1AdmVy
dF0pCiAgcm9vZl9lbnRpdGllcy5hZGRfbGluZShbZ3MxLngsZ3MxLnksZ3Mx
LnorQHJpc2UrZmFjK2ZhY19vdXQtQHZlcnRdLGdzMSkKICBnYWIxPW5pbDsg
bG4xLmZhY2VzLmVhY2h7fGV8CiAgICBnYWIxPWUgaWYgZS5ib3VuZHMubWF4
LnohPXJvb2ZfZ3JvdXAuYm91bmRzLm1heC56CiAgfQogIGdhYjEucHVzaHB1
bGwoLUBnYWJsZTEsZmFsc2UpIGlmIGdhYjEKZW5kI2lmCiMjIyMjIyMjIyMj
IyMjIE5PVyBmb3IgZ2FibGUgVFdPICMjIyMjIyMjIyMjIyMtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmlmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgZnJv
bSBGYXNjaWEiCiAgaWYgQGZzdHlwZT1+L15TbG9waW5nKy8KICAgIGdzMj1n
czIub2Zmc2V0KGdzMi52ZWN0b3JfdG8oZ2UyKSxmYWNfb3V0KQogICAgZ2Uy
PWdlMi5vZmZzZXQoZ2UyLnZlY3Rvcl90byhnczIpLGZhY19vdXQpCiAgZW5k
I2lmCiAgbG4xPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoZ2UyLFtjcDIueCxj
cDIueSxjcDIueitvcHBdKQogIHJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2Nw
Mi54LGNwMi55LGNwMi56K29wcF0sZ3MyKQogIGdhYjI9bmlsOyBsbjEuZmFj
ZXMuZWFjaHt8ZXwKICAgIGdhYjI9ZSBpZiBlLmJvdW5kcy5tYXgueiE9cm9v
Zl9ncm91cC5ib3VuZHMubWF4LnoKICB9CiAgZ2FiMi5wdXNocHVsbCgtQGdh
YmxlMSxmYWxzZSkgaWYgZ2FiMgplbHNpZiBAZ2FibGUydHlwZT09IlZlcmdl
IGZyb20gU29mZml0IgogIGlmIEBmc3R5cGU9fi9eU2xvcGluZysvCiAgICBn
czI9Z3MyLm9mZnNldChnczIudmVjdG9yX3RvKGdlMiksZmFjX291dCkKICAg
IGdlMj1nZTIub2Zmc2V0KGdlMi52ZWN0b3JfdG8oZ3MyKSxmYWNfb3V0KQog
IGVuZCNpZgogIHJpc2U9TWF0aDo6dGFuKEBwaXRjaF9yKSpzb2YjIyMKICBn
ZTI9Z2UyLm9mZnNldChnZTIudmVjdG9yX3RvKGdzMiksc29mKQogIGdzMj1n
czIub2Zmc2V0KGdzMi52ZWN0b3JfdG8oZ2UyKSxzb2YpCiAgbG4xPXJvb2Zf
ZW50aXRpZXMuYWRkX2xpbmUoZ2UyLFtjcDIueCxjcDIueSxjcDIueitvcHAt
cmlzZV0pIyMjCiAgcm9vZl9lbnRpdGllcy5hZGRfbGluZShbY3AyLngsY3Ay
LnksY3AyLnorb3BwLXJpc2VdLGdzMikjIyMKICBnYWIyPW5pbDsgbG4xLmZh
Y2VzLmVhY2h7fGV8CiAgICBnYWIyPWUgaWYgZS5ib3VuZHMubWF4LnohPXJv
b2ZfZ3JvdXAuYm91bmRzLm1heC56CiAgfQogIGdhYjIucHVzaHB1bGwoLUBn
YWJsZTEsZmFsc2UpIGlmIGdhYjIKICAjIyNWZXJnZSBieSBIZWlnaHR8VmVy
Z2UgYnkgV2lkdGh8VmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEZhc2NpYXxWZXJn
ZSBieSBXaWR0aCwgd2l0aCBGYXNjaWF8VmVyZ2UgYnkgSGVpZ2h0LCB3aXRo
IEJveC1FYXZlc3xWZXJnZSBieSBXaWR0aCwgd2l0aCBCb3gtRWF2ZXMKZWxz
aWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBieSBIZWlnaHQiICMjIwogIGlmIG5v
dCBAdmVyZ2UyIG9yIEB2ZXJnZTI8PTAKICAgIEB2ZXJnZTI9NC5pbmNoIGlm
IEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJd
PDIKICAgIEB2ZXJnZTI9MTAwLm1tIGlmIEBtb2RlbC5vcHRpb25zWyJVbml0
c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPjEKICBlbmQjaWYKICBtYXhodD0o
b3BwK2ZhY191cC0xMC5tbSkudG9fbDsgbWF4aHRfcz1tYXhodC50b19zCiAg
cHJvbXB0cz1bIlNlY29uZCBHYWJsZSBWZXJnZSBIZWlnaHQgKCNAdW5pdHMp
OiAiXQogIHRpdGxlPSJTZWNvbmQgR2FibGUgVmVyZ2UgSGVpZ2h0OiBtaW4u
ID4gMCwgbWF4LiA8ICIrbWF4aHRfcysiI0B1bml0cyIKICB2YWx1ZXM9W0B2
ZXJnZTJdCiAgQHZlcmdlMiw9aW5wdXRib3gocHJvbXB0cyx2YWx1ZXMsWyIi
XSx0aXRsZSkKICBAdmVyZ2UyPW1heGh0IGlmIG5vdCBAdmVyZ2UyCiAgd2hp
bGUgQHZlcmdlMj5tYXhodCsxMC5tbSB8fCBAdmVyZ2UyPD0wCiAgICBAdmVy
Z2UyPW1heGh0LnRvX2wKICAgIEB2ZXJnZTIsPWlucHV0Ym94KHByb21wdHMs
W0B2ZXJnZTJdLFsiIl0sdGl0bGUpCglAdmVyZ2UyPW1heGh0IGlmIG5vdCBA
dmVyZ2UyCiAgZW5kI3doaWxlCiAgIyMjIGRvIGxpbmVzCiAgaWYgbm90IEBm
c3R5cGU9fi9eU2xvcGluZysvCiAgICBpZiBAdmVyZ2UyPGZhY191cCMjIwoJ
ICBhZGQ9ZmFjX3VwLUB2ZXJnZTIjIyMKCSAgbG4xPXJvb2ZfZW50aXRpZXMu
YWRkX2xpbmUoW2dlMi54LGdlMi55LGdlMi56K2FkZF0sW2NwMi54LGNwMi55
LGNwMi56K29wcC1AdmVyZ2UyK2ZhY191cF0pIyMjIwogICAgICByb29mX2Vu
dGl0aWVzLmFkZF9saW5lKFtnczIueCxnczIueSxnczIueithZGRdLFtjcDIu
eCxjcDIueSxjcDIueitvcHAtQHZlcmdlMitmYWNfdXBdKSMjIyMKCWVsc2UK
CSAgZGlmZj1AdmVyZ2UyLWZhY191cCMjIwoJICBhZGQ9ZGlmZi9NYXRoOjp0
YW4oQHBpdGNoX3IpCgkgIGdlMj1nZTIub2Zmc2V0KGdlZGdlMi5saW5lWzFd
LnJldmVyc2UsYWRkKQoJICBnczI9Z3MyLm9mZnNldChnZWRnZTIubGluZVsx
XSxhZGQpCgkgIGxuMT1yb29mX2VudGl0aWVzLmFkZF9saW5lKFtnZTIueCxn
ZTIueSxnZTIuel0sW2NwMi54LGNwMi55LGNwMi56K29wcC1AdmVyZ2UyK2Zh
Y191cF0pIyMjIwogICAgICByb29mX2VudGl0aWVzLmFkZF9saW5lKFtnczIu
eCxnczIueSxnczIuel0sW2NwMi54LGNwMi55LGNwMi56K29wcC1AdmVyZ2Uy
K2ZhY191cF0pIyMjIwoJZW5kI2lmCiAgZWxzZSMjIyBzbG9waW5nIGZhc2Np
YQogICAgaWYgQHZlcmdlMjxmYWNfdXAjIyMKCSAgYWRkPWZhY191cC1AdmVy
Z2UyIyMjCgkgIHNmX291dD1hZGQqTWF0aDo6dGFuKEBwaXRjaF9yKQoJICBz
Zl91cCA9c2Zfb3V0Kk1hdGg6OnRhbihAcGl0Y2hfcikKCSAgZ3MyPWdzMi5v
ZmZzZXQoZ3MyLnZlY3Rvcl90byhnZTIpLGZhY19vdXQtc2Zfb3V0KQoJICBn
ZTI9Z2UyLm9mZnNldChnZTIudmVjdG9yX3RvKGdzMiksZmFjX291dC1zZl9v
dXQpCgkgIGxuMT1yb29mX2VudGl0aWVzLmFkZF9saW5lKFtnZTIueCxnZTIu
eSxnZTIueithZGRdLFtjcDIueCxjcDIueSxjcDIueitvcHAtQHZlcmdlMitm
YWNfdXArc2ZfdXBdKSMjIyMKICAgICAgcm9vZl9lbnRpdGllcy5hZGRfbGlu
ZShbZ3MyLngsZ3MyLnksZ3MyLnorYWRkXSxbY3AyLngsY3AyLnksY3AyLnor
b3BwLUB2ZXJnZTIrZmFjX3VwK3NmX3VwXSkjIyMjCgllbHNlCgkgIGRpZmY9
QHZlcmdlMi1mYWNfdXAjIyMKCSAgYWRkPWRpZmYvTWF0aDo6dGFuKEBwaXRj
aF9yKQoJICBnZTI9Z2UyLm9mZnNldChnZWRnZTIubGluZVsxXS5yZXZlcnNl
LGFkZCkKCSAgZ3MyPWdzMi5vZmZzZXQoZ2VkZ2UyLmxpbmVbMV0sYWRkKQoJ
ICBsbjE9cm9vZl9lbnRpdGllcy5hZGRfbGluZShbZ2UyLngsZ2UyLnksZ2Uy
LnpdLFtjcDIueCxjcDIueSxjcDIueitvcHAtQHZlcmdlMitmYWNfdXBdKSMj
IyMKICAgICAgcm9vZl9lbnRpdGllcy5hZGRfbGluZShbZ3MyLngsZ3MyLnks
Z3MyLnpdLFtjcDIueCxjcDIueSxjcDIueitvcHAtQHZlcmdlMitmYWNfdXBd
KSMjIyMKCWVuZCNpZgogIGVuZCNpZgogIGdhYjI9bmlsOyBsbjEuZmFjZXMu
ZWFjaHt8ZXxnYWIyPWUgaWYgZS5ib3VuZHMubWF4LnohPXJvb2ZfZ3JvdXAu
Ym91bmRzLm1heC56fQogIGdhYjIucHVzaHB1bGwoLUBnYWJsZTEsZmFsc2Up
IGlmIGdhYjIKICAjIyMKZWxzaWYgQGdhYmxlMnR5cGU9PSJWZXJnZSBieSBX
aWR0aCIjIyMKICBpZiBub3QgQHZlcmdlMncgb3IgQHZlcmdlMnc8PTAKICAg
IEB2ZXJnZTJ3PTQuaW5jaCBpZiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRp
b25zIl1bIkxlbmd0aFVuaXQiXTwyCiAgICBAdmVyZ2Uydz0xMDAubW0gaWYg
QG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il0+
MQogIGVuZCNpZgogIG1heGh0PSgob3BwK2ZhY191cCsxMC5tbSkqTWF0aDo6
Y29zKEBwaXRjaF9yKSkudG9fbDsgbWF4aHRfcz1tYXhodC50b19zCiAgcHJv
bXB0cz1bIlNlY29uZCBHYWJsZSBWZXJnZSBQZXJwZW5kaWN1bGFyIFdpZHRo
ICgjQHVuaXRzKTogIl0KICB0aXRsZT0iU2Vjb25kIEdhYmxlIFZlcmdlOiBt
aW4uID4gMCwgbWF4LiA8ICIrbWF4aHRfcysiI0B1bml0cyIKICB2YWx1ZXM9
W0B2ZXJnZTJ3XQogIEB2ZXJnZTJ3LD1pbnB1dGJveChwcm9tcHRzLHZhbHVl
cyxbIiJdLHRpdGxlKQogIEB2ZXJnZTJ3PW1heGh0IGlmIG5vdCBAdmVyZ2Uy
dwogIHdoaWxlIEB2ZXJnZTJ3Pm1heGh0KzEwLm1tIHx8IEB2ZXJnZTJ3PD0w
CiAgICBAdmVyZ2Uydz1tYXhodC50b19sCiAgICBAdmVyZ2Uydyw9aW5wdXRi
b3gocHJvbXB0cyxbQHZlcmdlMl0sWyIiXSx0aXRsZSkKCUB2ZXJnZTJ3PW1h
eGh0IGlmIG5vdCBAdmVyZ2UydwogIGVuZCN3aGlsZQogICMjIyBkbyBsaW5l
cwogIEB2ZXJ0PUB2ZXJnZTJ3Kk1hdGg6OmNvcyhAcGl0Y2hfcikKICAjIyMg
ZG8gbGluZXMKICBpZiBub3QgQGZzdHlwZT1+L15TbG9waW5nKy8KICAgIGlm
IEB2ZXJ0PGZhY191cCMjIwoJICBhZGQ9ZmFjX3VwLUB2ZXJ0IyMjCgkgIGxu
MT1yb29mX2VudGl0aWVzLmFkZF9saW5lKFtnZTIueCxnZTIueSxnZTIueith
ZGRdLFtjcDIueCxjcDIueSxjcDIueitvcHAtQHZlcnRdKQogICAgICByb29m
X2VudGl0aWVzLmFkZF9saW5lKFtnczIueCxnczIueSxnczIueithZGRdLFtj
cDIueCxjcDIueSxjcDIueitvcHAtQHZlcnRdKQoJZWxzZQoJICBkaWZmPUB2
ZXJ0LWZhY191cCMjIwoJICBhZGQ9ZGlmZi9NYXRoOjp0YW4oQHBpdGNoX3Ip
CgkgIGdlMj1nZTIub2Zmc2V0KGdlZGdlMi5saW5lWzFdLnJldmVyc2UsYWRk
KQoJICBnczI9Z3MyLm9mZnNldChnZWRnZTIubGluZVsxXSxhZGQpCgkgIGxu
MT1yb29mX2VudGl0aWVzLmFkZF9saW5lKFtnZTIueCxnZTIueSxnZTIuel0s
W2NwMi54LGNwMi55LGNwMi56K29wcC1AdmVydCtmYWNfdXBdKQogICAgICBy
b29mX2VudGl0aWVzLmFkZF9saW5lKFtnczIueCxnczIueSxnczIuel0sW2Nw
Mi54LGNwMi55LGNwMi56K29wcC1AdmVydCtmYWNfdXBdKQoJZW5kI2lmCiAg
ZWxzZSMjIyBzbG9waW5nIGZhc2NpYQogICAgaWYgQHZlcnQ8ZmFjX3VwIyMj
CgkgIGFkZD1mYWNfdXAtQHZlcnQjIyMKCSAgc2Zfb3V0PWFkZCpNYXRoOjp0
YW4oQHBpdGNoX3IpCgkgIHNmX3VwID1zZl9vdXQqTWF0aDo6dGFuKEBwaXRj
aF9yKQoJICBnczI9Z3MyLm9mZnNldChnczIudmVjdG9yX3RvKGdlMiksZmFj
X291dC1zZl9vdXQpCgkgIGdlMj1nZTIub2Zmc2V0KGdlMi52ZWN0b3JfdG8o
Z3MyKSxmYWNfb3V0LXNmX291dCkKCSAgbG4xPXJvb2ZfZW50aXRpZXMuYWRk
X2xpbmUoW2dlMi54LGdlMi55LGdlMi56K2FkZF0sW2NwMi54LGNwMi55LGNw
Mi56K29wcCthZGQrc2ZfdXBdKQogICAgICByb29mX2VudGl0aWVzLmFkZF9s
aW5lKFtnczIueCxnczIueSxnczIueithZGRdLFtjcDIueCxjcDIueSxjcDIu
eitvcHArYWRkK3NmX3VwXSkKCWVsc2UKCSAgZGlmZj1AdmVydC1mYWNfdXAj
IyMKCSAgYWRkPWRpZmYvTWF0aDo6dGFuKEBwaXRjaF9yKQoJICBnZTI9Z2Uy
Lm9mZnNldChnZWRnZTIubGluZVsxXS5yZXZlcnNlLGFkZCkKCSAgZ3MyPWdz
Mi5vZmZzZXQoZ2VkZ2UyLmxpbmVbMV0sYWRkKQoJICB1cD0oY3AyLmRpc3Rh
bmNlKGdzMikpKk1hdGg6OnRhbihAcGl0Y2hfcikKCSAgbG4xPXJvb2ZfZW50
aXRpZXMuYWRkX2xpbmUoW2dlMi54LGdlMi55LGdlMi56XSxbY3AyLngsY3Ay
LnksY3AyLnordXBdKQogICAgICByb29mX2VudGl0aWVzLmFkZF9saW5lKFtn
czIueCxnczIueSxnczIuel0sW2NwMi54LGNwMi55LGNwMi56K3VwXSkKCWVu
ZCNpZgogIGVuZCNpZgogIGdhYjI9bmlsOyBsbjEuZmFjZXMuZWFjaHt8ZXxn
YWIyPWUgaWYgZS5ib3VuZHMubWF4LnohPXJvb2ZfZ3JvdXAuYm91bmRzLm1h
eC56fQogIGdhYjIucHVzaHB1bGwoLUBnYWJsZTEsZmFsc2UpIGlmIGdhYjIK
ICAjIyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmVsc2lmIEBnYWJsZTJ0eXBl
PT0iVmVyZ2UgYnkgSGVpZ2h0LCB3aXRoIEZhc2NpYSIKICBpZiBub3QgQHZl
cmdlMiBvciBAdmVyZ2UyPD0wCiAgICBAdmVyZ2UyPTQuaW5jaCBpZiBAbW9k
ZWwub3B0aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXTwyCiAg
ICBAdmVyZ2UyPTEwMC5tbSBpZiBAbW9kZWwub3B0aW9uc1siVW5pdHNPcHRp
b25zIl1bIkxlbmd0aFVuaXQiXT4xCiAgZW5kI2lmCiAgbWF4aHQ9KG9wcCtm
YWNfdXAtMTAubW0pLnRvX2w7IG1heGh0X3M9bWF4aHQudG9fcwogIHByb21w
dHM9WyJTZWNvbmQgR2FibGUgVmVyZ2UgSGVpZ2h0ICgjQHVuaXRzKTogIl0K
ICB0aXRsZT0iU2Vjb25kIEdhYmxlIFZlcmdlIEhlaWdodDogbWluLiA+IDAs
IG1heC4gPCAiK21heGh0X3MrIiNAdW5pdHMiCiAgdmFsdWVzPVtAdmVyZ2Uy
XQogIEB2ZXJnZTIsPWlucHV0Ym94KHByb21wdHMsdmFsdWVzLFsiIl0sdGl0
bGUpCiAgQHZlcmdlMj1tYXhodCBpZiBub3QgQHZlcmdlMgogIHdoaWxlIEB2
ZXJnZTI+bWF4aHQrMTAubW0gfHwgQHZlcmdlMjw9MAogICAgQHZlcmdlMj1t
YXhodC50b19sCiAgICBAdmVyZ2UyLD1pbnB1dGJveChwcm9tcHRzLFtAdmVy
Z2UyXSxbIiJdLHRpdGxlKQoJQHZlcmdlMj1tYXhodCBpZiBub3QgQHZlcmdl
MgogIGVuZCN3aGlsZQogICMjIyBkbyBsaW5lcy4uLgogIGlmIG5vdCBAZnN0
eXBlPX4vXlNsb3BpbmcrLwogICAgQGluc2V0PUB2ZXJnZTIvTWF0aDo6dGFu
KEBwaXRjaF9yKQogICAgZ2UyPWdlMi5vZmZzZXQoZ2VkZ2UyLmxpbmVbMV0u
cmV2ZXJzZSxAaW5zZXQpCiAgICBnczI9Z3MyLm9mZnNldChnZWRnZTIubGlu
ZVsxXSxAaW5zZXQpCiAgICBsbkE9cm9vZl9lbnRpdGllcy5hZGRfbGluZShb
Z2UyLngsZ2UyLnksZ2UyLnorZmFjK2ZhY19vdXRdLFtjcDIueCxjcDIueSxj
cDIueitvcHArZmFjK2ZhY19vdXQtQHZlcmdlMl0pCiAgICBsbkI9cm9vZl9l
bnRpdGllcy5hZGRfbGluZShbY3AyLngsY3AyLnksY3AyLnorb3BwK2ZhYytm
YWNfb3V0LUB2ZXJnZTJdLFtnczIueCxnczIueSxnczIueitmYWMrZmFjX291
dF0pCiAgICBsbkM9cm9vZl9lbnRpdGllcy5hZGRfbGluZShbZ3MyLngsZ3My
LnksZ3MyLnorZmFjK2ZhY19vdXRdLFtnZTIueCxnZTIueSxnZTIueitmYWMr
ZmFjX291dF0pCiAgICBnYWIyPXJvb2ZfZW50aXRpZXMuYWRkX2ZhY2UobG5B
LGxuQixsbkMpCiAgICBnYWIyLnB1c2hwdWxsKC1AZ2FibGUxLGZhbHNlKSBp
ZiBnYWIyCiAgZWxzZSNzbG9waW5nIGZhc2NpYQogICAgc2ZfaW49QHZlcmdl
Mi9NYXRoOjp0YW4oQHBpdGNoX3IpCiAgICBnZTI9Z2UyLm9mZnNldChnZTIu
dmVjdG9yX3RvKGdzMiksc2ZfaW4pCiAgICBnczI9Z3MyLm9mZnNldChnczIu
dmVjdG9yX3RvKGdlMiksc2ZfaW4pCiAgICBsbkE9cm9vZl9lbnRpdGllcy5h
ZGRfbGluZShbZ2UyLngsZ2UyLnksZ2UyLnorZmFjX3VwXSxbY3AyLngsY3Ay
LnksY3AyLnorb3BwK2ZhY191cCtzZl91cC1AdmVyZ2UyXSkKICAgIGxuQj1y
b29mX2VudGl0aWVzLmFkZF9saW5lKFtjcDIueCxjcDIueSxjcDIueitvcHAr
ZmFjX3VwK3NmX3VwLUB2ZXJnZTJdLFtnczIueCxnczIueSxnczIueitmYWNf
dXBdKQogICAgbG5DPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dzMi54LGdz
Mi55LGdzMi56K2ZhY191cF0sW2dlMi54LGdlMi55LGdlMi56K2ZhY191cF0p
CiAgICBnYWIyPXJvb2ZfZW50aXRpZXMuYWRkX2ZhY2UobG5BLGxuQixsbkMp
CiAgICBnYWIyLnB1c2hwdWxsKC1AZ2FibGUxLGZhbHNlKSBpZiBnYWIyCiAg
ZW5kI2lmCiAgIyMjCmVsc2lmIEBnYWJsZTJ0eXBlPT0iVmVyZ2UgYnkgV2lk
dGgsIHdpdGggRmFzY2lhIgogIEB2ZXJnZTJ3PUBmYXNjaWEgaWYgISBAdmVy
Z2UydwogIGlmIEB2ZXJnZTJ3PT0wCiAgICBAdmVyZ2Uydz00LmluY2ggaWYg
QG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il08
MgogICAgQHZlcmdlMnc9MTAwLm1tIGlmIEBtb2RlbC5vcHRpb25zWyJVbml0
c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPjEKICBlbmQjaWYKICBAdmVydD1A
dmVyZ2Uydy9NYXRoOjpjb3MoQHBpdGNoX3IpCiAgQHJpc2U9TWF0aDo6dGFu
KEBwaXRjaF9yKSpAc29mZml0CiAgbWF4aHQ9KChAcmlzZStAZmFzY2lhKSpN
YXRoOjpjb3MoQHBpdGNoX3IpKS50b19sO21heGh0X3M9bWF4aHQudG9fcwog
IHByb21wdHM9WyJTZWNvbmQgR2FibGUgVmVyZ2UgUGVycGVuZGljdWxhciBX
aWR0aCAoI0B1bml0cyk6ICJdCiAgdGl0bGU9IlNlY29uZCBHYWJsZSBWZXJn
ZTogbWluLiA+IDAsIG1heC4gPCAiK21heGh0X3MrIiNAdW5pdHMiCiAgdmFs
dWVzPVtAdmVyZ2Uyd10KICBAdmVyZ2Uydyw9aW5wdXRib3gocHJvbXB0cyx2
YWx1ZXMsWyIiXSx0aXRsZSkKICBAdmVyZ2Uydz1AZmFzY2lhIGlmICEgQHZl
cmdlMncKICB3aGlsZSBAdmVyZ2Uydz5tYXhodCB8fCBAdmVyZ2Uydzw9MAog
ICAgQHZlcmdlMnc9bWF4aHQKICAgIEB2ZXJnZTJ3LD1pbnB1dGJveChwcm9t
cHRzLFtAdmVyZ2Uyd10sWyIiXSx0aXRsZSkKICBlbmQjd2hpbGUKICAjIyMg
ZG8gbGluZXMKICBpZiBub3QgQGZzdHlwZT1+L15TbG9waW5nKy8KICAgIEBp
bnNldD1AdmVydC9NYXRoOjp0YW4oQHBpdGNoX3IpCiAgICBnZTI9Z2UyLm9m
ZnNldChnZWRnZTIubGluZVsxXS5yZXZlcnNlLEBpbnNldCkKICAgIGdzMj1n
czIub2Zmc2V0KGdlZGdlMi5saW5lWzFdLEBpbnNldCkKICAgIGxuQT1yb29m
X2VudGl0aWVzLmFkZF9saW5lKFtnZTIueCxnZTIueSxnZTIueitmYWMrZmFj
X291dF0sW2NwMi54LGNwMi55LGNwMi56K29wcCtmYWMrZmFjX291dC1AdmVy
dF0pCiAgICBsbkI9cm9vZl9lbnRpdGllcy5hZGRfbGluZShbY3AyLngsY3Ay
LnksY3AyLnorb3BwK2ZhYytmYWNfb3V0LUB2ZXJ0XSxbZ3MyLngsZ3MyLnks
Z3MyLnorZmFjK2ZhY19vdXRdKQogICAgbG5DPXJvb2ZfZW50aXRpZXMuYWRk
X2xpbmUoW2dzMi54LGdzMi55LGdzMi56K2ZhYytmYWNfb3V0XSxbZ2UyLngs
Z2UyLnksZ2UyLnorZmFjK2ZhY19vdXRdKQogICAgZ2FiMj1yb29mX2VudGl0
aWVzLmFkZF9mYWNlKGxuQSxsbkIsbG5DKQogICAgZ2FiMi5wdXNocHVsbCgt
QGdhYmxlMSxmYWxzZSkgaWYgZ2FiMgogIGVsc2Ujc2xvcGluZyBmYXNjaWEg
Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PwogICAgc2ZfaW49QHZlcnQvTWF0
aDo6dGFuKEBwaXRjaF9yKQogICAgZ2UyPWdlMi5vZmZzZXQoZ2UyLnZlY3Rv
cl90byhnczIpLHNmX2luKQogICAgZ3MyPWdzMi5vZmZzZXQoZ3MyLnZlY3Rv
cl90byhnZTIpLHNmX2luKQogICAgbG5BPXJvb2ZfZW50aXRpZXMuYWRkX2xp
bmUoW2dlMi54LGdlMi55LGdlMi56K2ZhY191cF0sW2NwMi54LGNwMi55LGNw
Mi56K29wcCtmYWNfdXArc2ZfdXAtQHZlcnRdKQogICAgbG5CPXJvb2ZfZW50
aXRpZXMuYWRkX2xpbmUoW2NwMi54LGNwMi55LGNwMi56K29wcCtmYWNfdXAr
c2ZfdXAtQHZlcnRdLFtnczIueCxnczIueSxnczIueitmYWNfdXBdKQogICAg
bG5DPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2dzMi54LGdzMi55LGdzMi56
K2ZhY191cF0sW2dlMi54LGdlMi55LGdlMi56K2ZhY191cF0pCiAgICBnYWIy
PXJvb2ZfZW50aXRpZXMuYWRkX2ZhY2UobG5BLGxuQixsbkMpCiAgICBnYWIy
LnB1c2hwdWxsKC1AZ2FibGUxLGZhbHNlKSBpZiBnYWIyCiAgZW5kI2lmCiAg
IyMjCmVsc2lmIEBnYWJsZTJ0eXBlPT0iVmVyZ2Ugd2l0aCBGYXNjaWEgW0Fs
bCBFcXVhbF0iIyMjCiAgQHZlcnQ9ZmFjX3VwCiAgaWYgbm90IEBmc3R5cGU9
fi9eU2xvcGluZysvCiAgICBAaW5zZXQ9QHZlcnQvTWF0aDo6dGFuKEBwaXRj
aF9yKQogICAgZ2UyPWdlMi5vZmZzZXQoZ2VkZ2UyLmxpbmVbMV0ucmV2ZXJz
ZSxAaW5zZXQpCiAgICBnczI9Z3MyLm9mZnNldChnZWRnZTIubGluZVsxXSxA
aW5zZXQpCiAgICBsbkE9cm9vZl9lbnRpdGllcy5hZGRfbGluZShbZ2UyLngs
Z2UyLnksZ2UyLnorZmFjK2ZhY19vdXRdLFtjcDIueCxjcDIueSxjcDIueitv
cHArZmFjK2ZhY19vdXQtQHZlcnRdKQogICAgbG5CPXJvb2ZfZW50aXRpZXMu
YWRkX2xpbmUoW2NwMi54LGNwMi55LGNwMi56K29wcCtmYWMrZmFjX291dC1A
dmVydF0sW2dzMi54LGdzMi55LGdzMi56K2ZhYytmYWNfb3V0XSkKICAgIGxu
Qz1yb29mX2VudGl0aWVzLmFkZF9saW5lKFtnczIueCxnczIueSxnczIueitm
YWMrZmFjX291dF0sW2dlMi54LGdlMi55LGdlMi56K2ZhYytmYWNfb3V0XSkK
ICAgIGdhYjI9cm9vZl9lbnRpdGllcy5hZGRfZmFjZShsbkEsbG5CLGxuQykK
ICAgIGdhYjIucHVzaHB1bGwoLUBnYWJsZTEsZmFsc2UpIGlmIGdhYjIKICBl
bHNlI3Nsb3BpbmcgZmFzY2lhID8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8K
ICAgIHNmX2luPUB2ZXJ0L01hdGg6OnRhbihAcGl0Y2hfcikKICAgIGdlMj1n
ZTIub2Zmc2V0KGdlMi52ZWN0b3JfdG8oZ3MyKSxzZl9pbikKICAgIGdzMj1n
czIub2Zmc2V0KGdzMi52ZWN0b3JfdG8oZ2UyKSxzZl9pbikKICAgIGxuQT1y
b29mX2VudGl0aWVzLmFkZF9saW5lKFtnZTIueCxnZTIueSxnZTIueitmYWNf
dXBdLFtjcDIueCxjcDIueSxjcDIueitvcHArZmFjX3VwK3NmX3VwLUB2ZXJ0
XSkKICAgIGxuQj1yb29mX2VudGl0aWVzLmFkZF9saW5lKFtjcDIueCxjcDIu
eSxjcDIueitvcHArZmFjX3VwK3NmX3VwLUB2ZXJ0XSxbZ3MyLngsZ3MyLnks
Z3MyLnorZmFjX3VwXSkKICAgIGxuQz1yb29mX2VudGl0aWVzLmFkZF9saW5l
KFtnczIueCxnczIueSxnczIueitmYWNfdXBdLFtnZTIueCxnZTIueSxnZTIu
eitmYWNfdXBdKQogICAgZ2FiMj1yb29mX2VudGl0aWVzLmFkZF9mYWNlKGxu
QSxsbkIsbG5DKQogICAgZ2FiMi5wdXNocHVsbCgtQGdhYmxlMSxmYWxzZSkg
aWYgZ2FiMgogIGVuZCNpZgogICMjIwplbHNpZiBAZ2FibGUydHlwZT09IlZl
cmdlIGJ5IEhlaWdodCwgd2l0aCBCb3gtRWF2ZXMiCiAgQHZlcmdlMj1AZmFz
Y2lhIGlmICEgQHZlcmdlMgogIGlmIEB2ZXJnZTI9PTAKICAgIEB2ZXJnZTI9
NC5pbmNoIGlmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVu
Z3RoVW5pdCJdPDIKICAgIEB2ZXJnZTI9MTAwLm1tIGlmIEBtb2RlbC5vcHRp
b25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPjEKICBlbmQjaWYK
ICBtYXhodD0ob3BwK0BmYXNjaWEpLnRvX2w7bWF4aHRfcz1tYXhodC50b19z
CiAgcHJvbXB0cz1bIlNlY29uZCBHYWJsZSBWZXJnZSBIZWlnaHQgKCNAdW5p
dHMpOiAiXQogIHRpdGxlPSJTZWNvbmQgR2FibGUgVmVyZ2UgSGVpZ2h0OiBt
aW4uID4gMCwgbWF4LiA8ICIrbWF4aHRfcysiI0B1bml0cyIKICB2YWx1ZXM9
W0B2ZXJnZTJdCiAgQHZlcmdlMiw9aW5wdXRib3gocHJvbXB0cyx2YWx1ZXMs
WyIiXSx0aXRsZSkKICBAdmVyZ2UyPUBmYXNjaWEgaWYgISBAdmVyZ2UyCiAg
d2hpbGUgQHZlcmdlMj5tYXhodCB8fCBAdmVyZ2UyPD0wCiAgICBAdmVyZ2Uy
PW1heGh0CiAgICBAdmVyZ2UyLD1pbnB1dGJveChwcm9tcHRzLFtAdmVyZ2Uy
XSxbIiJdLHRpdGxlKQogIGVuZCN3aGlsZQogICMjIyBkbyBsaW5lcy4uLgog
ICMjIyBnZXQgQHJpc2Ugb24gZWF2ZXMgb3ZlciBzb2ZmaXQgYXQgYW5nbGUK
ICBAcmlzZT1NYXRoOjp0YW4oQHBpdGNoX3IpKkBzb2ZmaXQKICBnZTI9Z2Uy
Lm9mZnNldChnZWRnZTIubGluZVsxXS5yZXZlcnNlLEBzb2ZmaXQpCiAgZ3My
PWdzMi5vZmZzZXQoZ2VkZ2UyLmxpbmVbMV0sQHNvZmZpdCkKICByb29mX2Vu
dGl0aWVzLmFkZF9saW5lKGdlMixbZ2UyLngsZ2UyLnksZ2UyLnorQHJpc2Ur
ZmFjK2ZhY19vdXQtQHZlcmdlMl0pCiAgbG4xPXJvb2ZfZW50aXRpZXMuYWRk
X2xpbmUoW2dlMi54LGdlMi55LGdlMi56K0ByaXNlK2ZhYytmYWNfb3V0LUB2
ZXJnZTJdLFtjcDIueCxjcDIueSxjcDIueitvcHArZmFjK2ZhY19vdXQtQHZl
cmdlMl0pCiAgcm9vZl9lbnRpdGllcy5hZGRfbGluZShbY3AyLngsY3AyLnks
Y3AyLnorb3BwK2ZhYytmYWNfb3V0LUB2ZXJnZTJdLFtnczIueCxnczIueSxn
czIueitAcmlzZStmYWMrZmFjX291dC1AdmVyZ2UyXSkKICByb29mX2VudGl0
aWVzLmFkZF9saW5lKFtnczIueCxnczIueSxnczIueitAcmlzZStmYWMrZmFj
X291dC1AdmVyZ2UyXSxnczIpCiAgZ2FiMj1uaWw7IGxuMS5mYWNlcy5lYWNo
e3xlfAogICAgZ2FiMj1lIGlmIGUuYm91bmRzLm1heC56IT1yb29mX2dyb3Vw
LmJvdW5kcy5tYXguegogIH0KICBnYWIyLnB1c2hwdWxsKC1AZ2FibGUxLGZh
bHNlKSBpZiBnYWIyCiAgIyMjCmVsc2lmIEBnYWJsZTJ0eXBlPT0iVmVyZ2Ug
YnkgV2lkdGgsIHdpdGggQm94LUVhdmVzIgogIEB2ZXJnZTJ3PUBmYXNjaWEg
aWYgISBAdmVyZ2UydwogIGlmIEB2ZXJnZTJ3PT0wCiAgICBAdmVyZ2Uydz00
LmluY2ggaWYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5n
dGhVbml0Il08MgogICAgQHZlcmdlMnc9MTAwLm1tIGlmIEBtb2RlbC5vcHRp
b25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPjEKICBlbmQjaWYK
ICB2ZXJ0PUB2ZXJnZTJ3L01hdGg6OmNvcyhAcGl0Y2hfcikKICBAcmlzZT1N
YXRoOjp0YW4oQHBpdGNoX3IpKkBzb2ZmaXQKICBtYXhodD0oKEByaXNlK0Bm
YXNjaWEpKk1hdGg6OmNvcyhAcGl0Y2hfcikpLnRvX2w7bWF4aHRfcz1tYXho
dC50b19zCiAgcHJvbXB0cz1bIlNlY29uZCBHYWJsZSBWZXJnZSBQZXJwZW5k
aWN1bGFyIFdpZHRoICgjQHVuaXRzKTogIl0KICB0aXRsZT0iU2Vjb25kIEdh
YmxlIFZlcmdlOiBtaW4uID4gMCwgbWF4LiA8ICIrbWF4aHRfcysiI0B1bml0
cyIKICB2YWx1ZXM9W0B2ZXJnZTJ3XQogIEB2ZXJnZTJ3LD1pbnB1dGJveChw
cm9tcHRzLHZhbHVlcyxbIiJdLHRpdGxlKQogIEB2ZXJnZTJ3PUBmYXNjaWEg
aWYgISBAdmVyZ2UydwogIHdoaWxlIEB2ZXJnZTJ3Pm1heGh0IHx8IEB2ZXJn
ZTJ3PD0wCiAgICBAdmVyZ2Uydz1tYXhodAogICAgQHZlcmdlMncsPWlucHV0
Ym94KHByb21wdHMsW0B2ZXJnZTJ3XSxbIiJdLHRpdGxlKQogIGVuZCN3aGls
ZQogICMjIyBkbyBsaW5lcwogIEB2ZXJ0PUB2ZXJnZTJ3L01hdGg6OmNvcyhA
cGl0Y2hfcikKICBnZTI9Z2UyLm9mZnNldChnZWRnZTIubGluZVsxXS5yZXZl
cnNlLHNvZikKICBnczI9Z3MyLm9mZnNldChnZWRnZTIubGluZVsxXSxzb2Yp
CiAgcm9vZl9lbnRpdGllcy5hZGRfbGluZShnZTIsW2dlMi54LGdlMi55LGdl
Mi56K0ByaXNlK2ZhYytmYWNfb3V0LUB2ZXJ0XSkKICBsbjE9cm9vZl9lbnRp
dGllcy5hZGRfbGluZShbZ2UyLngsZ2UyLnksZ2UyLnorQHJpc2UrZmFjK2Zh
Y19vdXQtQHZlcnRdLFtjcDIueCxjcDIueSxjcDIueitvcHArZmFjK2ZhY19v
dXQtQHZlcnRdKQogIHJvb2ZfZW50aXRpZXMuYWRkX2xpbmUoW2NwMi54LGNw
Mi55LGNwMi56K29wcCtmYWMrZmFjX291dC1AdmVydF0sW2dzMi54LGdzMi55
LGdzMi56K0ByaXNlK2ZhYytmYWNfb3V0LUB2ZXJ0XSkKICByb29mX2VudGl0
aWVzLmFkZF9saW5lKFtnczIueCxnczIueSxnczIueitAcmlzZStmYWMrZmFj
X291dC1AdmVydF0sZ3MyKQogIGdhYjI9bmlsOyBsbjEuZmFjZXMuZWFjaHt8
ZXwKICAgIGdhYjI9ZSBpZiBlLmJvdW5kcy5tYXgueiE9cm9vZl9ncm91cC5i
b3VuZHMubWF4LnoKICB9CiAgZ2FiMi5wdXNocHVsbCgtQGdhYmxlMSxmYWxz
ZSkgaWYgZ2FiMgplbmQjaWYKIyMjIGVuZCBtYWtpbmcgdmVyZ2VzLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiMjI3YzLjAgIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIyMgMXN0IG1ha2UgaG9s
ZSBpbiBiYXNlLi4uCmlmYWNlPXJvb2ZfZW50aXRpZXMuYWRkX2ZhY2UocDEs
cDIscDMscDQpCml2ZXJ0cz1pZmFjZS52ZXJ0aWNlcwppZmFjZS5lcmFzZSEg
aWYgaWZhY2UudmFsaWQ/CiMjIyB1c2Ugc29mX3VwIGlmIDAgbm8gY2hhbmdl
ID8KaXZlcnRzLmVhY2h7fHZ8CiAgcG9zPXYucG9zaXRpb24KICBwb3NuPVtw
b3MueCxwb3MueSxwb3Mueitzb2ZfdXBdCiAgdmVjPXBvcy52ZWN0b3JfdG8o
cG9zbikKICB0cmFuPUdlb206OlRyYW5zZm9ybWF0aW9uLnRyYW5zbGF0aW9u
KHZlYykKICByb29mX2VudGl0aWVzLnRyYW5zZm9ybV9lbnRpdGllcyh0cmFu
LHYpCn0KIyMjIGludGVyc2VjdCBhbGwgc28gdGhhdCBlZGdlcyBmb3JtLi4u
CnJvb2ZfZW50aXRpZXMubGVuZ3RoLnRpbWVzIGRvfHRoaXN8CiAgcm9vZl9l
bnRpdGllcy5lYWNoe3xlfAogICAgcnRyPVswLDAsMF0KICAgIHJvb2ZfZW50
aXRpZXMuaW50ZXJzZWN0X3dpdGgodHJ1ZSxydHIscm9vZl9ncm91cCxydHIs
dHJ1ZSxlKQogIH0KZW5kI3RpbWVzCiMjIyBlcmFzZSBjb3BsYW5hciBlZGdl
cy4uLgpyb29mX2VudGl0aWVzLmxlbmd0aC50aW1lcyBkb3x0aGlzfAogcm9v
Zl9lbnRpdGllcy5lYWNoe3xlfAogIGlmIGUudHlwZW5hbWU9PSJFZGdlIgog
ICAgaWYgZS5mYWNlc1sxXSBhbmQgbm90IGUuZmFjZXNbMl0KCSAgaWYgbm90
IGUuZmFjZXNbMF0ubm9ybWFsLnouYWJzPX4wLjAgIyMjIE5PVCBjb3BsYW5h
ciBpbiBnYWJsZQoJICAgIGUuZXJhc2UhIGlmIGUuZmFjZXNbMF0ubm9ybWFs
PT1lLmZhY2VzWzFdLm5vcm1hbCBhbmQgZS52YWxpZD8KCSAgZW5kI2lmCgll
bmQjaWYKCWUuZXJhc2UhIGlmIGUudmFsaWQ/IGFuZCBub3QgZS5mYWNlc1sw
XSAjIyMgPWZhY2VsZXNzCiAgZW5kI2lmCiB9CmVuZCN0aW1lcwojIyMgbW92
ZSB3aG9sZSByb29mIGdyb3VwIGRvd24gYnkgc29mX3VwIHNvIGl0IHNpdHMg
b24gc2VsZWN0ZWQgZmFjZS4KdHJ6PUdlb206OlRyYW5zZm9ybWF0aW9uLm5l
dyhbMCwwLHNvZl91cCotMV0pCnJvb2ZfZ3JvdXAubW92ZSEodHJ6KQojIyN2
My4wICMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IyMjCnNvZmZpdHM9W107c2xvcGVzPVtdO3ZlcnRpY2Fscz1bXQpyb29mX2Vu
dGl0aWVzLmVhY2h7fGV8CiAgaWYgZS50eXBlbmFtZT09IkZhY2UiCiAgICBp
ZiBlLm5vcm1hbC5ub3JtYWxpemUuej1+MC4wCgkgIHZlcnRpY2Fscy5wdXNo
KGUpCgllbHNlCgkgIHNvZmZpdHMucHVzaChlKSBpZiBlLm5vcm1hbC56IDwg
MAogICAgICBzbG9wZXMucHVzaChlKSBpZiBlLm5vcm1hbC56ID4gMAoJZW5k
I2lmCiAgZW5kI2lmCn0KZ2FibGVzPVtdIyMjCnZlcnRpY2Fscy5lYWNoe3xl
fAogIGdhYmxlcy5wdXNoKGUpIGlmIGUuZWRnZXMubGVuZ3RoPT0zIHx8IChl
LmVkZ2VzLmxlbmd0aD09NSAmJiBlLmJvdW5kcy5tYXguei1lLmJvdW5kcy5t
aW4ueiE9ZmFjX3VwKQogIGlubGluZTM9MAogIGUuZWRnZXMuZWFjaHt8ZWV8
CiAgICBpZiBlZS5zdGFydC5wb3NpdGlvbi56PX5lZS5lbmQucG9zaXRpb24u
egoJICBpbmxpbmUzPWlubGluZTMrMQoJZW5kI2lmCiAgfQogIGdhYmxlcy5w
dXNoKGUpIGlmIGUuZWRnZXMubGVuZ3RoPT02ICYmIChpbmxpbmUzPT0yICYm
IGUuYm91bmRzLm1pbi56PX5yb29mX2dyb3VwLmJvdW5kcy5taW4ueikKICBn
YWJsZXMucHVzaChlKSBpZiBlLmVkZ2VzLmxlbmd0aD09NyAmJiAoaW5saW5l
Mz09MyAmJiBlLmJvdW5kcy5taW4uej1+cm9vZl9ncm91cC5ib3VuZHMubWlu
LnopCiAgZ2FiPWZhbHNlO2hvcno9W10KICBpZiBlLmVkZ2VzLmxlbmd0aD09
NAogICAgdmVydHM9ZS52ZXJ0aWNlczsgdno9dmVydHNbMF0ucG9zaXRpb24u
ejsgcT0xCgkodmVydHMtW3ZlcnRzWzBdXSkuZWFjaHt8dnxxPXErMSBpZiB2
LnBvc2l0aW9uLno9fnZ6fQoJZ2FiPXRydWUgaWYgcSE9MgogIGVuZCNpZgog
IGdhYmxlcy5wdXNoKGUpIGlmIGdhYgp9CmlmIGdhYmxlc1swXSBhbmQgZ2Fi
bGVzWzBdLm5vcm1hbD09Z2FibGUxbm9ybWFsCiAgZ2FiMT1nYWJsZXNbMF0K
ICBnYWIyPWdhYmxlc1sxXQplbHNpZiBnYWJsZXNbMF0KICBnYWIxPWdhYmxl
c1sxXQogIGdhYjI9Z2FibGVzWzBdCmVuZCNpZgojIyMKZmFzY2lhcz12ZXJ0
aWNhbHMtZ2FibGVzCiMjIyBzb3J0IGFueSBib3ggdmVyZ2UgYml0cyBvZiBm
YXNjaWFzIHRoYXQgc2hvdWxkIGJlIHNvZmZpdC4uLgpmYXNjaWFzLmVhY2h7
fGZ8CiAgaWYgZi5lZGdlcy5sZW5ndGg9PTQgIyMjID1ob3JpeiBiaXQ6IGdl
dCBob3JpeiBlZGdlcyB0aGF0J3MgdG9wIG9uZS4uLgogICAgdG9wZWRnZT1u
aWwKICAgIGYuZWRnZXMuZWFjaHt8ZXwKICAgICAgdG9wZWRnZT1lIGlmIGUu
Ym91bmRzLm1heC56PT1lLmJvdW5kcy5taW4ueiAmJiBlLmJvdW5kcy5tYXgu
ej09Zi5ib3VuZHMubWF4LnoKICAgIH0KICAgIGJveD1mYWxzZQoJdG9wZWRn
ZS5mYWNlcy5lYWNoe3xlfGJveD10cnVlIGlmIGUubm9ybWFsLm5vcm1hbGl6
ZS56PDB9aWYgdG9wZWRnZQogICAgaWYgYm94CiAgICAgIGZhc2NpYXMtW2Zd
CgkgIHNvZmZpdHMucHVzaChmKSBpZiBub3QgKGYubm9ybWFsLm5vcm1hbGl6
ZS56ID4gMC45OTk5OSkKICAgIGVuZCNpZgogIGVuZCNpZgp9CiMjIyBtb3Zl
IGxpZHMgZnJvbSBzbG9wZXMKc2xvcGVzLmVhY2h7fGV8CiAgaWYgZS5ub3Jt
YWwubm9ybWFsaXplLnogPiAwLjk5OTk5CglzbG9wZXMtW2VdCglmYXNjaWFz
LnB1c2goZSkKICBlbmQjaWYKfQojIyMKIyMjdjMuMCB3ZSBtdXN0IGdldCBz
bG9waW5nIGZhc2NpYXMgaW50byB0aGUgY29ycmVjdCBhcnJheQojIyMgZmly
c3QgZ28gdGhyb3VnaCBzb2ZmaXRzLCBJRiBlZGdlIGNvbW1vbiB3aXRoIHNs
b3BlIHRoZW4gPWZhc2NpYS4KaWYgZmFjX291dD4wCiAgc29mZml0cy5lYWNo
e3xzfAogICAgaXNfZmFjPWZhbHNlCiAgICBzLmVkZ2VzLmVhY2h7fGV8Cgkg
IHNsb3Blcy5lYWNoe3xyfAoJICAgIHIuZWRnZXMuZWFjaHt8ZWV8CgkJICBp
c19mYWM9dHJ1ZSBpZiBlZT09ZQoJCX0KCSAgfQoJfQoJaWYgaXNfZmFjCgkg
IHNvZmZpdHM9c29mZml0cy1bc10KCSAgZmFzY2lhcy5wdXNoKHMpCgllbmQj
aWYKICB9CmVuZCNpZiMjI3YzLjAKIyMjIHNvcnQgb3V0IGxheWVyLCBtYXRl
cmlhbHMgZXRjICMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRlZiBSb29mOjpkaWFsb2dfbWF0c19nYWJsZSAoKQojIyMgbWF0ZXJp
YWxzIGRpYWxvZyAjIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICBtb2RlbD1Ta2V0Y2h1cC5hY3RpdmVfbW9k
ZWwKICAjIyMgbGF5ZXJzLi4uCiAgbWxheWVycz1tb2RlbC5sYXllcnMKICBh
bGF5ZXI9bW9kZWwuYWN0aXZlX2xheWVyCiAgbW9kZWwuYWN0aXZlX2xheWVy
PW5pbAogIGRlZmxheWVyPW1vZGVsLmFjdGl2ZV9sYXllci5uYW1lCiAgbW9k
ZWwuYWN0aXZlX2xheWVyPWFsYXllcgogIHJsYXllcj0iLVJPT0YiIyMjIGVk
aXQgdGhpcyB0byBzdWl0IHlvdXIgZGVzaXJlZCBkZWZhdWx0IHJvb2YgbGF5
ZXIuCiAgbGF5ZXJzPVtdCiAgbWxheWVycy5lYWNoe3xsYXllcnxsYXllcnMu
cHVzaChsYXllci5uYW1lKWlmIGxheWVyLm5hbWUhPWRlZmxheWVyfQogIGxh
eWVycz1bcmxheWVyLGRlZmxheWVyXStsYXllcnMuc29ydCEKICBsYXllcnM9
bGF5ZXJzLnVuaXEuam9pbignfCcpCiAgIyMjIG1hdGVyaWFscy4uLgogIG1h
dF9yb29mPSJSb29mIFN1cmZhY2UiCiAgbWF0X2Zhc2NpYT0iUm9vZiBGYXNj
aWEiCiAgbWF0X3NvZmZpdD0iUm9vZiBTb2ZmaXQiCiAgbWF0X2dhYmxlMT0i
PERlZmF1bHQ+IgogIG1hdF9nYWJsZTI9IjxEZWZhdWx0PiIKICBtYXRlcmlh
bHM9bW9kZWwubWF0ZXJpYWxzCiAgbWF0cz1bXQogIG1hdGVyaWFscy5lYWNo
e3xtYXR8bWF0cy5wdXNoKG1hdC5uYW1lKX0KICBtYXRzLnNvcnQhCiAgbGlz
dF9tYXRfcm9vZj0oKFsiPERlZmF1bHQ+Il0rW21hdF9yb29mXSttYXRzKS51
bmlxKS5qb2luKCJ8IikKICBsaXN0X21hdF9mYXNjaWE9KChbIjxEZWZhdWx0
PiJdK1ttYXRfZmFzY2lhXSttYXRzKS51bmlxKS5qb2luKCJ8IikKICBsaXN0
X21hdF9zb2ZmaXQ9KChbIjxEZWZhdWx0PiJdK1ttYXRfc29mZml0XSttYXRz
KS51bmlxKS5qb2luKCJ8IikKICBsaXN0X21hdF9nYWJsZTE9KChbIjxEZWZh
dWx0PiJdK1siUm9vZiBHYWJsZSAxIl0rWyJSb29mIEdhYmxlIDIiXStbbWF0
X3Jvb2ZdK21hdHMpLnVuaXEpLmpvaW4oInwiKQogIGxpc3RfbWF0X2dhYmxl
Mj0oKFsiPERlZmF1bHQ+Il0rWyJSb29mIEdhYmxlIDEiXStbIlJvb2YgR2Fi
bGUgMiJdK1ttYXRfcm9vZl0rbWF0cykudW5pcSkuam9pbigifCIpCiAgIyMj
IHNldCB1cCB2YXJpYWJsZXMuLi4KICBAbGF5ZXI9cmxheWVyIGlmICEgQGxh
eWVyCiAgQG1hdF9yb29mPW1hdF9yb29mIGlmICEgQG1hdF9yb29mCiAgQG1h
dF9mYXNjaWE9bWF0X2Zhc2NpYSBpZiAhIEBtYXRfZmFzY2lhCiAgQG1hdF9z
b2ZmaXQ9bWF0X3NvZmZpdCBpZiAhIEBtYXRfc29mZml0CiAgQG1hdF9nYWJs
ZTE9bWF0X2dhYmxlMSBpZiAhIEBtYXRfZ2FibGUxCiAgQG1hdF9nYWJsZTI9
bWF0X2dhYmxlMiBpZiAhIEBtYXRfZ2FibGUyCiAgZW51bXM9W2xheWVycyxs
aXN0X21hdF9yb29mLGxpc3RfbWF0X2Zhc2NpYSxsaXN0X21hdF9zb2ZmaXQs
bGlzdF9tYXRfZ2FibGUxLGxpc3RfbWF0X2dhYmxlMl0KICBwcm9tcHRzPVsi
Um9vZiBMYXllcjogICIsIlJvb2YgU3VyZmFjZTogICIsIlJvb2YgRmFzY2lh
OiAgIiwiUm9vZiBTb2ZmaXQ6ICIsIkZpcnN0IFJvb2YgR2FibGU6ICIsIlNl
Y29uZCBSb29mIEdhYmxlOiAiXQogIHZhbHVlcz1bQGxheWVyLEBtYXRfcm9v
ZixAbWF0X2Zhc2NpYSxAbWF0X3NvZmZpdCxAbWF0X2dhYmxlMSxAbWF0X2dh
YmxlMl0KICBAb3RoZXJfcmVzdWx0cz0oaW5wdXRib3ggcHJvbXB0cyx2YWx1
ZXMsZW51bXMsIlJvb2YgTGF5ZXIgYW5kIE1hdGVyaWFscyIpCiAgQGxheWVy
LEBtYXRfcm9vZixAbWF0X2Zhc2NpYSxAbWF0X3NvZmZpdCxAbWF0X2dhYmxl
MSxAbWF0X2dhYmxlMj1Ab3RoZXJfcmVzdWx0cyBpZiBAb3RoZXJfcmVzdWx0
cwogIEBvdGhlcj0iTm8iIGlmICEgQG90aGVyX3Jlc3VsdHMKICAjIyMKZW5k
I2RlZgojIyMgcnVuIG1hdGVyaWFsIGRpYWxvZwogIFJvb2Y6OmRpYWxvZ19t
YXRzX2dhYmxlKCkgaWYgQG90aGVyPT0iWWVzIgojIyMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KICAjbWF0X3Jvb2Y9IlJvb2YgU3VyZmFjZSIKICAjbWF0
X2Zhc2NpYT0iUm9vZiBGYXNjaWEiCiAgI21hdF9zb2ZmaXQ9IlJvb2YgU29m
Zml0IgogICNtYXRfZ2FibGUxPSI8RGVmYXVsdD4iCiAgI21hdF9nYWJsZTI9
IjxEZWZhdWx0PiIKaWYgQG90aGVyPT0iWWVzIgogIyMjLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4KICMjc29ydCBmb3IgbGlkcwogbGlkcz1mYWxzZTsgZmFz
Y2lhcy5lYWNoe3xlfGxpZHM9dHJ1ZSBpZiBlLm5vcm1hbC5ub3JtYWxpemUu
ej09MX0KIGlmIGxpZHMgCiAgICMjIyBWQ0IgYW5kIHN0YXR1cyBpbmZvCiAg
IFNrZXRjaHVwOjpzZXRfc3RhdHVzX3RleHQoKCInTGlkJyBNYXRlcmlhbC4u
LiIgKSwgU0JfUFJPTVBUKQogICBTa2V0Y2h1cDo6c2V0X3N0YXR1c190ZXh0
KCIiLCBTQl9WQ0JfTEFCRUwpCiAgIFNrZXRjaHVwOjpzZXRfc3RhdHVzX3Rl
eHQoIiIsIFNCX1ZDQl9WQUxVRSkKICAgaWYgVUkubWVzc2FnZWJveCgiQXJl
IHRoZSBHYWJsZSBGYXNjaWEgJ0xpZHMnXG50byBiZSBpbiB0aGUgRmFzY2lh
IE1hdGVyaWFsID8gIixNQl9ZRVNOTywiJ0xpZCcgTWF0ZXJpYWwiKT09NyAj
IyMgNj1ZRVMgNz1OTwogICAgIGZhc2NpYXMuZWFjaHt8ZXwKICAgICAgIGlm
IGUubm9ybWFsLm5vcm1hbGl6ZS56PT0xCgkgICAgIGZhc2NpYXMtW2VdCgkg
ICAgIHNvZmZpdHMucHVzaChlKQoJICAgZW5kI2lmCiAgICAgfQogIGVuZCNp
ZgogZW5kI2lmCiAgIyMjIG5vdGUgdGhhdCBsYXllciBpcyBzZXQgYWZ0ZXIg
Z3JvdXBzIGNvbWJpbmVkLi4uCiAgZXh0Zz1uaWw7QG1vZGVsLmxheWVycy5l
YWNoe3xseXJ8ZXh0Zz1seXIgaWYgbHlyLm5hbWU9PUBsYXllcn0KICBpZiBA
bGF5ZXI9PSI8RGVmYXVsdD4iCiAgICBsYXlyPW5pbAogIGVsc2UKICAgIGlm
IGV4dGcKICAgICAgbGF5cj1leHRnCiAgICBlbHNlCiAgICAgIGxheXI9QG1v
ZGVsLmxheWVycy5hZGQoQGxheWVyKQogICAgZW5kI2lmCiAgZW5kI2lmCiAg
IyMjIG1hdGVyaWFscy4uLgogICMjIyByb29mCiAgZXh0Zz1uaWw7QG1vZGVs
Lm1hdGVyaWFscy5lYWNoe3xtYXR8ZXh0Zz1tYXQgaWYgbWF0Lm5hbWU9PUBt
YXRfcm9vZn0KICBpZiBAbWF0X3Jvb2Y9PSI8RGVmYXVsdD4iCiAgICBtYXRf
cj1uaWwKICBlbHNlCiAgICBpZiBleHRnCiAgICAgIG1hdF9yPWV4dGcKICAg
IGVsc2UKICAgICAgbWF0X3I9QG1vZGVsLm1hdGVyaWFscy5hZGQoQG1hdF9y
b29mKQogICAgICBtYXRfci5jb2xvcj1bMTExLDExMSwxMTFdIyMjIGFkanVz
dCBkZWZhdWx0IGNvbG91cnMgaGVyZS4KICAgIGVuZCNpZgogIGVuZCNpZgog
IHNsb3Blcy5lYWNoe3xlfGUubWF0ZXJpYWw9bWF0X3J9CiAgIyMjIGZhc2Np
YQogIGV4dGc9bmlsO0Btb2RlbC5tYXRlcmlhbHMuZWFjaHt8bWF0fGV4dGc9
bWF0IGlmIG1hdC5uYW1lPT1AbWF0X2Zhc2NpYX0KICBpZiBAbWF0X2Zhc2Np
YT09IjxEZWZhdWx0PiIKICAgIG1hdF9mPW5pbAogIGVsc2UKICAgIGlmIGV4
dGcKICAgICAgbWF0X2Y9ZXh0ZwogICAgZWxzZQogICAgICBtYXRfZj1AbW9k
ZWwubWF0ZXJpYWxzLmFkZChAbWF0X2Zhc2NpYSkKICAgICAgbWF0X2YuY29s
b3I9WzY2LDY2LDY2XSMjIyBhZGp1c3QgZGVmYXVsdCBjb2xvdXJzIGhlcmUu
CiAgICBlbmQjaWYKICBlbmQjaWYKICBmYXNjaWFzLmVhY2h7fGV8ZS5tYXRl
cmlhbD1tYXRfZn0KICAjIyMgc29mZml0CiAgZXh0Zz1uaWw7QG1vZGVsLm1h
dGVyaWFscy5lYWNoe3xtYXR8ZXh0Zz1tYXQgaWYgbWF0Lm5hbWU9PUBtYXRf
c29mZml0fQogIGlmIEBtYXRfc29mZml0PT0iPERlZmF1bHQ+IgogICAgbWF0
X3M9bmlsCiAgZWxzZQogICAgaWYgZXh0ZwogICAgICBtYXRfcz1leHRnCiAg
ICBlbHNlCiAgICAgIG1hdF9zPUBtb2RlbC5tYXRlcmlhbHMuYWRkKEBtYXRf
c29mZml0KQogICAgICBtYXRfcy5jb2xvcj1bMjIyLDIyMiwyMjJdIyMjIGFk
anVzdCBkZWZhdWx0IGNvbG91cnMgaGVyZS4KICAgIGVuZCNpZgogIGVuZCNp
ZgogIHNvZmZpdHMuZWFjaHt8ZXxlLm1hdGVyaWFsPW1hdF9zfQogICMjIyBn
YWJsZQogIGV4dGc9bmlsO0Btb2RlbC5tYXRlcmlhbHMuZWFjaHt8bWF0fGV4
dGc9bWF0IGlmIG1hdC5uYW1lPT1AbWF0X2dhYmxlMX0KICBpZiBAbWF0X2dh
YmxlMT09IjxEZWZhdWx0PiIKICAgIG1hdF9nMT1uaWwKICBlbHNlCiAgICBp
ZiBleHRnCiAgICAgIG1hdF9nMT1leHRnCiAgICBlbHNlCiAgICAgIG1hdF9n
MT1AbW9kZWwubWF0ZXJpYWxzLmFkZChAbWF0X2dhYmxlMSkKICAgICAgIyMj
IGFkanVzdCBkZWZhdWx0IGNvbG91cnMgaGVyZS4KCSAgbWF0X2cxLmNvbG9y
PVsyMzQsMjM0LDIzNF0gaWYgQG1hdF9nYWJsZTE9PSJSb29mIFN1cmZhY2Ui
CiAgICAgIG1hdF9nMS5jb2xvcj1bMjU1LDI1NSwyNTVdIGlmIEBtYXRfZ2Fi
bGUxPT0iUm9vZiBHYWJsZSAxIiN3aGl0ZQogICAgICBtYXRfZzEuY29sb3I9
WzI1NSwyNTUsMjU1XSBpZiBAbWF0X2dhYmxlMT09IlJvb2YgR2FibGUgMiIj
d2hpdGUKICAgIGVuZCNpZgogIGVuZCNpZgogIGdhYjEubWF0ZXJpYWw9bWF0
X2cxIGlmIGdhYjEKICBleHRnPW5pbDtAbW9kZWwubWF0ZXJpYWxzLmVhY2h7
fG1hdHxleHRnPW1hdCBpZiBtYXQubmFtZT09QG1hdF9nYWJsZTJ9CiAgaWYg
QG1hdF9nYWJsZTI9PSI8RGVmYXVsdD4iCiAgICBtYXRfZzI9bmlsCiAgZWxz
ZQogICAgaWYgZXh0ZwogICAgICBtYXRfZzI9ZXh0ZwogICAgZWxzZQogICAg
ICBtYXRfZzI9QG1vZGVsLm1hdGVyaWFscy5hZGQoQG1hdF9nYWJsZTIpCiAg
ICAgICMjIyBhZGp1c3QgZGVmYXVsdCBjb2xvdXJzIGhlcmUuCgkgIG1hdF9n
Mi5jb2xvcj1bMjM0LDIzNCwyMzRdIGlmIEBtYXRfZ2FibGUyPT0iUm9vZiBT
dXJmYWNlIgogICAgICBtYXRfZzIuY29sb3I9WzI1NSwyNTUsMjU1XSBpZiBA
bWF0X2dhYmxlMj09IlJvb2YgR2FibGUgMSIjd2hpdGUKICAgICAgbWF0X2cy
LmNvbG9yPVsyNTUsMjU1LDI1NV0gaWYgQG1hdF9nYWJsZTI9PSJSb29mIEdh
YmxlIDIiI3doaXRlCiAgICBlbmQjaWYKICBlbmQjaWYKICBnYWIyLm1hdGVy
aWFsPW1hdF9nMiBpZiBnYWIyCmVuZCNpZgojIyMgZml4IGZvciBmYXNjaWEg
bGlkIGV0IGFsICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKc2xvcGVzLmVhY2h7fGV8ZS5tYXRlcmlhbD1tYXRfciBpZiBu
b3QgZS5ub3JtYWwubm9ybWFsaXplLno9PTF9CiMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwojIyMgZml4IGZvciBtZXNzeSBmYXNjaWEgZ2FibGVzIDwg
c29mZml0IHJpc2UKICBpZiAoc29mKk1hdGg6OnRhbihAcGl0Y2hfcik+ZmFj
X3VwIGFuZCBAZnN0eXBlPX4vU2xvcGluZyQvKSBhbmQgKEBnYWJsZTF0eXBl
PX4vd2l0aCBGYXNjaWEvIG9yIEBnYWJsZTJ0eXBlPX4vd2l0aCBGYXNjaWEv
KQogICAgZGluYz0oKCgoKCgoKE1hdGg6OmF0YW4oZmFjX3VwL3NvZikpLnJh
ZGlhbnMpKSkqMTAwMCkudG9faSkudG9fZikvMTAwMCkudG9fcwoJcmluYz0i
MToiKygoKCgoc29mL2ZhY191cCkqMTAwMCkudG9faSkudG9fZikvMTAwMCku
dG9fcwoJc2luYz0oKCgoKGZhY191cC8oTWF0aDo6dGFuKEBwaXRjaF9yKSkp
KjEwMDApLnRvX2kpLnRvX2YpLzEwMDApLnRvX2wudG9fcwoJZmluYz0oKCgo
KHNvZiooTWF0aDo6dGFuKEBwaXRjaF9yKSkpKjEwMDApLnRvX2kpLnRvX2Yp
LzEwMDApLnRvX2wudG9fcwogICAgVUkubWVzc2FnZWJveCgiUm9vZiBHYWJs
ZTogV2FybmluZy5cblxuVGhlcmUgbWlnaHQgYmUgc29tZSB1bmV4cGVjdGVk
IEdhYmxlIEdlb21ldHJ5LlxuVGhlIEdhYmxlIEZhc2NpYSBTaXplIGlzIGxl
c3MgdGhhbiB0aGUgUmlzZSBvbiB0aGUgU2xvcGluZyBTb2ZmaXQuXG5cbkRv
aW5nIE9ORSBvZiB0aGUgZm9sbG93aW5nIG1pZ2h0IGF2b2lkIHRoaXM6XG5c
biAgTWFrZSB0aGUgc2xvcGUgPCAiK2RpbmMrIiBkZWdyZWVzIG9yICIrcmlu
YysiXG4gIE1ha2UgdGhlIHNvZmZpdCA8ICIrc2luYytAdW5pdHMrIlxuICBN
YWtlIHRoZSBmYXNjaWEgPiAiK2ZpbmMrQHVuaXRzKyJcbiIpCiAgZW5kI2lm
CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICBAbW9kZWwuY29tbWl0X29w
ZXJhdGlvbgogIFNrZXRjaHVwLnNlbmRfYWN0aW9uICJzZWxlY3RTZWxlY3Rp
b25Ub29sOiIKZW5kI2RlZiBnYWJsZQojIyMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KCgoKCgoKCmRlZiBSb29mOjpweXJhbWlkKHB0cykKICAjIyMgY2hl
Y2sgZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAgU2tldGNodXA6OnNldF9zdGF0dXNfdGV4
dCAiUm9vZiBQeXJhbWlkOiIKICBAbW9kZWw9U2tldGNodXAuYWN0aXZlX21v
ZGVsCgllbnRpdGllcz1AbW9kZWwuYWN0aXZlX2VudGl0aWVzCglwMT1wdHNb
MF07IHAyPXB0c1sxXTsgcGQ9cHRzWzJdCgl6MT1wMS56OyBwMi56PXoxOyBw
ZC56PXoxCglpZiAocDE9PXAyIHx8IHAyPT1wZCkgfHwgKHBkPT1wMSkKCSAg
VUkubWVzc2FnZWJveCgiUm9vZiBQeXJhbWlkOlxuQ2FuJ3QgaGF2ZSBwb2lu
dHMgaW4gdGhlIHNhbWUgcGxhY2UgaW4gcGxhbiAhXG5UcnkgYWdhaW4uLi4i
KQoJICBTa2V0Y2h1cC5zZW5kX2FjdGlvbiAic2VsZWN0U2VsZWN0aW9uVG9v
bDoiCgkgIHJldHVybiBuaWwKCWVuZCNpZgoJYW5nMTI9KHAxLnZlY3Rvcl90
byhwMikpLnRvX2ZsYXRfYW5nbGUKCWFuZzJkPShwMi52ZWN0b3JfdG8ocGQp
KS50b19mbGF0X2FuZ2xlCglhbmc9KGFuZzJkLWFuZzEyKS50b19mCglpZiBh
bmcuYWJzPX4wLjAuZGVncmVlcyB8fCBhbmcuYWJzPX4xODAuMC5kZWdyZWVz
CgkgIFVJLm1lc3NhZ2Vib3goIlJvb2YgUHlyYW1pZDpcbkNhbid0IGhhdmUg
MyBwb2ludHMgaW4gYSBsaW5lICFcblRyeSBhZ2Fpbi4uLiIpCgkgIFNrZXRj
aHVwLnNlbmRfYWN0aW9uICJzZWxlY3RTZWxlY3Rpb25Ub29sOiIKCSAgcmV0
dXJuIG5pbAoJZW5kI2lmCiMjIyBkbyBnYWJsZSBkaWFsb2cuLi4KZGVmIFJv
b2Y6OmRpYWxvZ19weXJhbWlkICgpCiMjIyBkaWFsb2cgIyMjLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAcGl0Y2hHPSIxOjIiIGlmICEgQHBpdGNoRyAmJiBAbW9kZWwub3B0
aW9uc1siVW5pdHNPcHRpb25zIl1bIkxlbmd0aFVuaXQiXTwyCkBwaXRjaEc9
IjMwIiBpZiAhIEBwaXRjaEcgJiYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0
aW9ucyJdWyJMZW5ndGhVbml0Il0+MQpAZmFzY2lhPTguaW5jaCBpZiAhIEBm
YXNjaWEgJiYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5n
dGhVbml0Il08MgpAZmFzY2lhPTIwMC5tbSBpZiAhIEBmYXNjaWEgJiYgQG1v
ZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhVbml0Il0+MQpA
c29mZml0PTE2LmluY2ggaWYgISBAc29mZml0ICYmIEBtb2RlbC5vcHRpb25z
WyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPDIKQHNvZmZpdD00MDAu
bW0gaWYgISBAc29mZml0ICYmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlv
bnMiXVsiTGVuZ3RoVW5pdCJdPjEKQGZzdHlwZT0iVmVydGljYWwrSG9yaXpv
bnRhbCIgaWYgISBAZnN0eXBlIyMjdjMuMApmc3R5cGVzPSJWZXJ0aWNhbCtI
b3Jpem9udGFsfFZlcnRpY2FsK1Nsb3Bpbmd8U2xvcGluZytTbG9waW5nfFNs
b3BpbmcrSG9yaXpvbnRhbCIjIyN2My4wCkBvdGhlcj0iTm8iIGlmICEgQG90
aGVyCkB1bml0cz0iaW5jaGVzIiBpZiBAbW9kZWwub3B0aW9uc1siVW5pdHNP
cHRpb25zIl1bIkxlbmd0aFVuaXQiXT09MApAdW5pdHM9ImZlZXQiIGlmIEBt
b2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPT0x
CkB1bml0cz0ibW0iIGlmIEBtb2RlbC5vcHRpb25zWyJVbml0c09wdGlvbnMi
XVsiTGVuZ3RoVW5pdCJdPT0yCkB1bml0cz0iY20iIGlmIEBtb2RlbC5vcHRp
b25zWyJVbml0c09wdGlvbnMiXVsiTGVuZ3RoVW5pdCJdPT0zCkB1bml0cz0i
bSIgaWYgQG1vZGVsLm9wdGlvbnNbIlVuaXRzT3B0aW9ucyJdWyJMZW5ndGhV
bml0Il09PTQKZW51bXM9WyIiLCIiLCIiLGZzdHlwZXMsIlllc3xObyJdIyMj
djMuMApwcm9tcHRzPVsiUm9vZiBTbG9wZSAoaW4gRGVncmVlcyBvciBBOkIg
b3IgXkhlaWdodCgje0B1bml0c30pKTogICIsIkVhdmVzIEZhc2NpYSBTaXpl
ICgje0B1bml0c30pOiAgIiwiRWF2ZXMgU29mZml0IFNpemUgKCN7QHVuaXRz
fSk6ICAiLCJGYXNjaWErU29mZml0IFR5cGU6ICAiLCJTZXQgTGF5ZXIgYW5k
IE1hdGVyaWFscyA/IDoiXSMjI3YzLjAKdmFsdWVzPVtAcGl0Y2hHLEBmYXNj
aWEsQHNvZmZpdCxAZnN0eXBlLEBvdGhlcl0jIyN2My4wCkByZXN1bHRzPShp
bnB1dGJveCBwcm9tcHRzLHZhbHVlcyxlbnVtcywiUHlyYW1pZCBSb29mIFNl
dHRpbmdzIikKcmV0dXJuIG5pbCBpZiAhIEByZXN1bHRzCihAcGl0Y2hfcyxA
ZmFzY2lhXyxAc29mZml0XyxAZnN0eXBlXyxAb3RoZXJfKT1AcmVzdWx0cyMj
I3YzLjAKQHBpdGNoRz1AcGl0Y2hfcztAZmFzY2lhPUBmYXNjaWFfO0Bzb2Zm
aXQ9QHNvZmZpdF87CkBmc3R5cGU9QGZzdHlwZV87QG90aGVyPUBvdGhlcl8j
IyN2My4wCiMjIyBzb3J0IGlmIF5oZWlnaHQgb3Igc2xvcGUuLi4KQGhpPWZh
bHNlCmlmIEBwaXRjaF9zLnNwbGl0KCIiKVswXT09Il4iCiAgQHBodD1AcGl0
Y2hfc1sxLi4tMV0udG9fZgogIEBwaHQ9QHBodC50b19sIGlmIEB1bml0cz09
ImluY2hlcyIKICBAcGh0PUBwaHQuZmVldCBpZiBAdW5pdHM9PSJmZWV0Igog
IEBwaHQ9QHBodC5tbSBpZiBAdW5pdHM9PSJtbSIKICBAcGh0PUBwaHQuY20g
aWYgQHVuaXRzPT0iY20iCiAgQHBodD1AcGh0Lm0gaWYgQHVuaXRzPT0ibSIK
ICBAaGk9dHJ1ZQogIEBwaXRjaF9kPTIKICBAcGl0Y2hfZD0wIGlmIEBwaHQg
PDEubW0KZWxzZSNpdCdzIGFuIGFuZ2xlCiAgIyMjIGdldCBhbmdsZSBvZiBy
b29mIGluIHJhZGlhbnMKICByYXRpbz1AcGl0Y2hfcy5zcGxpdCgiOiIpLnRv
X2YKICBpZiByYXRpb1sxXQogICAgdGFuPXJhdGlvWzBdL3JhdGlvWzFdCiAg
ICBAcGl0Y2hfZD0oTWF0aDo6YXRhbih0YW4pKS5yYWRpYW5zCiAgZWxzZQog
ICAgQHBpdGNoX2Q9cmF0aW9bMF0KICBlbmQjaWYKZW5kI2lmCkBwaXRjaF9y
PUBwaXRjaF9kLmRlZ3JlZXMgICMjIyB0byByYWRpYW5zICMjIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQppZiBAcGl0Y2hfZDwxCiAgVUkubWVzc2FnZWJv
eCgiUHlyYW1pZCBSb29mOlxuXFBpdGNoIGNhbid0IGJlIGxlc3MgdGhhbiAx
IGRlZ3JlZS4iKQogIEBwaXRjaEc9IjEiO0BwaXRjaF9zPSIxIjtAcGl0Y2hf
ZD0xO0BwaXRjaF9yPTEuZGVncmVlcwogIFJvb2Y6OmRpYWxvZ19weXJhbWlk
CiAgcmV0dXJuIG5pbAplbmQjaWYKaWYgQHBpdGNoX2Q+ODkgCiAgVUkubWVz
c2FnZWJveCgiUHlyYW1pZCBSb29mOlxuXG5QaXRjaCBjYW4ndCBiZSBtb3Jl
IHRoYW4gODkgZGVncmVlcy4iKQogIEBwaXRjaEc9Ijg5IjtAcGl0Y2hfcz0i
ODkiO0BwaXRjaF9kPTg5O0BwaXRjaF9yPTg5LmRlZ3JlZXMKICBSb29mOjpk
aWFsb2dfcHlyYW1pZAogIHJldHVybiBuaWwKZW5kI2lmCmlmIEBmYXNjaWFf
IDwwCiAgVUkubWVzc2FnZWJveCgiUHlyYW1pZCBSb29mOlxuXG5GYXNjaWEg
Y2FuJ3QgYmUgTEVTUyBUSEFOIFpFUk8uXG5SZXNldHRpbmcgaXQgdG8gWkVS
Ty4uLiIpCiAgQGZhc2NpYT0wLnRvX2w7QGZhc2NpYV89MC50b19sCiAgUm9v
Zjo6ZGlhbG9nX3B5cmFtaWQKICByZXR1cm4gbmlsCmVuZCNpZgppZiBAc29m
Zml0XyA8MAogIFVJLm1lc3NhZ2Vib3goIlB5cmFtaWQgUm9vZjpcblxuRWF2
ZXMgY2FuJ3QgYmUgTEVTUyBUSEFOIFpFUk8uXG5SZXNldHRpbmcgaXQgdG8g
WkVSTy4uLlxuXG5Gb3IgYSAncGFyYXBldC1lYXZlcycgZmlyc3QgdXNlICdP
ZmZzZXQnIG9uIHRoZSBmYWNlIHRvIGluc2V0IGl0cyBlZGdlcyAuLi4iKQog
IEBzb2ZmaXQ9MC50b19sO0Bzb2ZmaXRfPTAudG9fbAogIFJvb2Y6OmRpYWxv
Z19weXJhbWlkCiAgcmV0dXJuIG5pbAplbmQjaWYKIyMjdjMuMCAjIyMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiBAZmFz
Y2lhXyA9PTAgJiYgQGZzdHlwZV89PSJWZXJ0aWNhbCtTbG9waW5nIgogIFVJ
Lm1lc3NhZ2Vib3goIlB5cmFtaWQgUm9vZjpcblxuSWYgdGhlIEZhc2NpYSBp
cyBaRVJPIHRoZW4geW91IGNhbid0IGhhdmUgYSBTbG9waW5nIFNvZmZpdC5c
blJlc2V0dGluZyBGYXNjaWErU29mZml0IFR5cGUgdG8gJ1ZlcnRpY2FsK0hv
cml6b250YWwnLi4uIikKICBAZnN0eXBlXz0iVmVydGljYWwrSG9yaXpvbnRh
bCIKICBSb29mOjpkaWFsb2dfcHlyYW1pZAogIHJldHVybiBuaWwKZW5kI2lm
CmlmIEBmYXNjaWFfID09MCAmJiBAZnN0eXBlXz09IlNsb3BpbmcrU2xvcGlu
ZyIKICBVSS5tZXNzYWdlYm94KCJQeXJhbWlkIFJvb2Y6XG5cbklmIHRoZSBG
YXNjaWEgaXMgWkVSTyB0aGVuIHlvdSBjYW4ndCBoYXZlIGEgU2xvcGluZyBT
b2ZmaXQuXG5SZXNldHRpbmcgRmFzY2lhK1NvZmZpdCBUeXBlIHRvICdTbG9w
aW5nK0hvcml6b250YWwnLi4uIikKICBAZnN0eXBlPSJTbG9waW5nK0hvcml6
b250YWwiOyBAZnN0eXBlXz0iU2xvcGluZytIb3Jpem9udGFsIgogIFJvb2Y6
OmRpYWxvZ19weXJhbWlkCiAgcmV0dXJuIG5pbAplbmQjaWYKIyMjdjMuMAoj
IyMKZW5kI2RlZiBkaWFsb2cKIyMjIHJ1biBkaWFsb2cKICBSb29mOjpkaWFs
b2dfcHlyYW1pZCgpCiAgKFNrZXRjaHVwLnNlbmRfYWN0aW9uICJzZWxlY3RT
ZWxlY3Rpb25Ub29sOiI7IHJldHVybiBuaWwpIGlmICEgQHJlc3VsdHMKIyMj
ClNrZXRjaHVwOjpzZXRfc3RhdHVzX3RleHQgIlJvb2YgUHlyYW1pZDogUHJv
Y2Vzc2luZy4uLiIKIyMjdjMuMCBzb3J0IG91dCBzbG9waW5nIGZhc2NpYSBh
bmQgc29mZml0CiMjIyBkZWZhdWx0cz1WZXJ0aWNhbCtIb3Jpem9udGFsCmZh
Yz1AZmFzY2lhOyBmYWNfdXA9ZmFjOyBmYWNfb3V0PTAuMApzb2Y9QHNvZmZp
dDsgc29mX3VwPTAuMAppZiBAZnN0eXBlPX4vU2xvcGluZ1wrLwogIGZhY191
cCA9ZmFjKk1hdGg6OmNvcyhAcGl0Y2hfcikKICBmYWNfb3V0PWZhYypNYXRo
OjpzaW4oQHBpdGNoX3IpCmVuZCNpZgppZiBAZnN0eXBlPX4vU2xvcGluZyQv
CiAgc29mX3VwPXNvZipNYXRoOjp0YW4oQHBpdGNoX3IpCmVuZCNpZgojIyN2
My4wCiMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJY3dpc2U9ZmFsc2UK
CWN3aXNlPXRydWUgaWYgKGFuZzEyPj0wLjAuZGVncmVlcyAmJiBhbmcxMjw5
MC4wLmRlZ3JlZXMpICYmIChhbmcyZDxhbmcxMiB8fCBhbmcyZD5hbmcxMisx
ODAuMC5kZWdyZWVzKQoJY3dpc2U9dHJ1ZSBpZiAoYW5nMTI+PTkwLjAuZGVn
cmVlcyAmJiBhbmcxMjwxODAuMC5kZWdyZWVzKSAmJiAoYW5nMmQ+YW5nMTIg
JiYgYW5nMmQ8YW5nMTIrMTgwLjAuZGVncmVlcykKCWN3aXNlPXRydWUgaWYg
KGFuZzEyPj0xODAuMC5kZWdyZWVzICYmIGFuZzEyPDI3MC4wLmRlZ3JlZXMp
ICYmIChhbmcyZDxhbmcxMiB8fCBhbmcyZDxhbmcxMi0xODAuMC5kZWdyZWVz
KQoJY3dpc2U9dHJ1ZSBpZiAoYW5nMTI+PTI3MC4wLmRlZ3JlZXMgJiYgYW5n
MTI8PTM2MC4wLmRlZ3JlZXMpICYmIChhbmcyZDxhbmcxMiAmJiBhbmcyZD5h
bmcxMi0xODAuMC5kZWdyZWVzKQoJYW5nOTA9OTAuMC5kZWdyZWVzCgkjYW5n
OTA9LWFuZzkwIGlmIGN3aXNlCgkocHQ9cDE7cDE9cDI7cDI9cHQpIGlmIGN3
aXNlCgkjIyMKCXJvb2ZfZ3JvdXA9ZW50aXRpZXMuYWRkX2dyb3VwCglyb29m
X2VudGl0aWVzPXJvb2ZfZ3JvdXAuZW50aXRpZXMKCWxuMT1yb29mX2VudGl0
aWVzLmFkZF9saW5lKHAxLHAyKQoJIyMjbGVuPWxuMS5sZW5ndGggIyMjIHdp
ZHRoIG9mIGJhc2UKICAgICMjIyBnZXQgZGlzdCBvZiBwM2QgZnJvbSBsaW5l
IG9mIGxuMSx0aGlzIGlzIGRlcHRoIG9mIGJhc2UKCWRpc3Q9cGQuZGlzdGFu
Y2VfdG9fbGluZShsbjEubGluZSkKCWxuMS5lcmFzZSEgaWYgbG4xLnZhbGlk
PwoJIyMjIGFkZCBwMyBhbG9uZyB2ZWN0IHAyLHAxIGF0IGRpc3Qscm90YXRl
IHAzIDkwZGVnCgl2ZWM9cDIudmVjdG9yX3RvKHAxKQoJcDM9cDIub2Zmc2V0
KHZlYyxkaXN0KQoJcm90YXRlPUdlb206OlRyYW5zZm9ybWF0aW9uLnJvdGF0
aW9uKHAyLFswLDAsMV0sLWFuZzkwKQoJcDM9cDMudHJhbnNmb3JtIShyb3Rh
dGUpCgkjbG4yPXJvb2ZfZW50aXRpZXMuYWRkX2xpbmUocDIscDMpCgkjIyNh
ZGQgcDQgYWxvbmcgdmVjdCBwMSxwMiBhdCBkaXN0LHJvdGF0ZSBwNCAtOTBk
ZWcKCXZlYz1wMS52ZWN0b3JfdG8ocDIpCglwND1wMS5vZmZzZXQodmVjLGRp
c3QpCglyb3RhdGU9R2VvbTo6VHJhbnNmb3JtYXRpb24ucm90YXRpb24ocDEs
WzAsMCwxXSxhbmc5MCkKCXA0PXA0LnRyYW5zZm9ybSEocm90YXRlKQoJIyMj
IHAxLHAyLHAzLHA0IGFyZSBjb3JuZXJzIG9mIGJhc2UgJ2hvbGUnCiMjIyBk
byBQeXJhbWlkIHJvb2YuLi4KQG1vZGVsLnN0YXJ0X29wZXJhdGlvbigiUHly
YW1pZCBSb29mIikKIyMjIHNldCB1cCByb29mIGdyb3VwIGV0YyAjIyMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnJvb2Zf
Z3JvdXA9ZW50aXRpZXMuYWRkX2dyb3VwCnJvb2ZfZW50aXRpZXM9cm9vZl9n
cm91cC5lbnRpdGllcwppZmFjZT1yb29mX2VudGl0aWVzLmFkZF9mYWNlKHAx
LHAyLHAzLHA0KQppZiBAc29mZml0PT0wCiAgZmFjZT1pZmFjZQplbHNlCiAg
ZmFjZT1pZmFjZS5vZmZzZXRfZWF2ZXMoc29mKSMjI3YzLjAKICBpZiBub3Qg
ZmFjZQogICAgZmFjZT1pZmFjZQoJZmZhY2U9ZmFjZS5vZmZzZXRfZWF2ZXMo
ZmFjX291dCkgaWYgZmFjX291dCA+MCMjI3YzLjAKICBlbHNlCiAgICBmZmFj
ZT1mYWNlLm9mZnNldF9lYXZlcyhmYWNfb3V0KSBpZiBmYWNfb3V0ID4wIyMj
djMuMAogICAgaWZhY2UuZWRnZXMuZWFjaHt8ZXxlLmVyYXNlISBpZiBlLnZh
bGlkP30KICBlbmQjaWYKZW5kI2lmCmVwb2ludHM9Um9vZi5vcmRlcmVkX2Vk
Z2VfcG9pbnRzKGZhY2UpCmZlcG9pbnRzPVJvb2Yub3JkZXJlZF9lZGdlX3Bv
aW50cyhmZmFjZSkgaWYgZmFjX291dD4wIyMjdjMuMApyb29mX2VudGl0aWVz
LmVhY2h7fGV8ZS5lcmFzZSEgaWYgZS52YWxpZD8gJiYgZS50eXBlbmFtZT09
IkZhY2UifQplZnBvaW50cz1lcG9pbnRzOyBlZnBvaW50cz1lZnBvaW50cy5w
dXNoKGVmcG9pbnRzWzBdKQplZWRnZXM9cm9vZl9lbnRpdGllcy5hZGRfZWRn
ZXMoZWZwb2ludHMpCmZlZnBvaW50cz1mZXBvaW50cyBpZiBmYWNfb3V0PjAj
IyN2My4wCmZlZnBvaW50cz1mZWZwb2ludHMucHVzaChmZWZwb2ludHNbMF0p
IGlmIGZhY19vdXQ+MCMjI3YzLjAKZmVmcG9pbnRzPWVmcG9pbnRzIGlmIGZh
Y19vdXQ9PTAjIyN2My4wCmZlZWRnZXM9cm9vZl9lbnRpdGllcy5hZGRfZWRn
ZXMoZmVmcG9pbnRzKSMjI3YzLjAKIyMjIGFsbG93IGZvciBmYXNjaWEuLi4K
ZnBvaW50cz1bXQpmZWZwb2ludHMuZWFjaHt8ZXxmcG9pbnRzLnB1c2goW2Uu
eCxlLnksZS56K2ZhY191cF0pfSMjI3YzLjAKIyMjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiMjIyBAcGl0Y2hfZCA9IGFuZ2xlIG9mIHJvb2YgYXQgcGl0
Y2ggc2lkZSA9IGxuMQpsbjE9cm9vZl9lbnRpdGllcy5hZGRfbGluZShwMSxw
MikKY3RyPUdlb206OlBvaW50M2QubGluZWFyX2NvbWJpbmF0aW9uKDAuNSxs
bjEuc3RhcnQucG9zaXRpb24sMC41LGxuMS5lbmQucG9zaXRpb24pCmFweD1H
ZW9tOjpQb2ludDNkLmxpbmVhcl9jb21iaW5hdGlvbigwLjUsZXBvaW50c1sw
XSwwLjUsZXBvaW50c1syXSkKYWRqPWN0ci5kaXN0YW5jZShhcHgpK0Bzb2Zm
aXQKaWYgQGhpICMjI15ubm4gaGVpZ2h0IGFkZGVkCiAgb3BwPUBwaHQKZWxz
ZQogIG9wcD1NYXRoOjp0YW4oQHBpdGNoX3IpKmFkagplbmQjaWYKYXBleD1b
YXB4LngsYXB4LnksYXB4Lnorb3BwK2ZhY191cF0jIyN2My4wCiMjIyBhZGQg
ZmFjZXMgdG8gcm9vZiAjIyN2Mi4xCnJvb2ZfZW50aXRpZXMuYWRkX2ZhY2Uo
ZnBvaW50c1swXSxmcG9pbnRzWzFdLGFwZXgpCnJvb2ZfZW50aXRpZXMuYWRk
X2ZhY2UoZnBvaW50c1sxXSxmcG9pbnRzWzJdLGFwZXgpCnJvb2ZfZW50aXRp
ZXMuYWRkX2ZhY2UoZnBvaW50c1syXSxmcG9pbnRzWzNdLGFwZXgpCnJvb2Zf
ZW50aXRpZXMuYWRkX2ZhY2UoZnBvaW50c1szXSxmcG9pbnRzWzBdLGFwZXgp
CiMjIyBhZGQgaW4gc29mZml0CnNvZmZpdD1yb29mX2VudGl0aWVzLmFkZF9m
YWNlKGVlZGdlcykjIyN2Mi4xCnNvZmZpdC5yZXZlcnNlISBpZiBzb2ZmaXQu
bm9ybWFsLnogPiAwCiMjIyBhZGQgZmFzY2lhLCBpZiBhbnkKaWYgQGZhc2Np
YSA+MAogIGZvciBpIGluIDAuLi5lZnBvaW50cy5sZW5ndGgtMSMjIwogICAg
cm9vZl9lbnRpdGllcy5hZGRfZmFjZShlZnBvaW50c1tpXSxmcG9pbnRzW2ld
LGZwb2ludHNbaSsxXSxlZnBvaW50c1tpKzFdKQogIGVuZCNmb3IKZW5kI2lm
CnZlcnRpY2Fscz1bXQpyb29mX2VudGl0aWVzLmVhY2h7fGV8CiAgaWYgZS50
eXBlbmFtZT09IkZhY2UiCiAgICB2ZXJ0aWNhbHMucHVzaChlKSBpZiBlLm5v
cm1hbC5ub3JtYWxpemUuei49fjAgIyMjdjIuMQogIGVuZCNpZgp9CiMjI3Yz
LjAgcmVtb3ZlIHNwYXJlIHVuZmFjZWQgbGluZXMKZmVlZGdlcy5lYWNoe3xl
fGUuZXJhc2UhfSBpZiBmYWNfb3V0PjAKIyMjdjMuMAojIyMgbWFrZSBob2xl
IGluIGJhc2UuLi4KaWZhY2U9cm9vZl9lbnRpdGllcy5hZGRfZmFjZShwMSxw
MixwMyxwNCkKIyMjCiMjI3YzLjAKaXZlcnRzPWlmYWNlLnZlcnRpY2VzCiMj
I3YzLjAKaWZhY2UuZXJhc2UhIGlmIGlmYWNlLnZhbGlkPwojIyN2My4wCiMj
IyB1c2Ugc29mX3VwIGlmIDAgbm8gY2hhbmdlID8KaXZlcnRzLmVhY2h7fHZ8
CiAgcG9zPXYucG9zaXRpb24KICBwb3NuPVtwb3MueCxwb3MueSxwb3Mueitz
b2ZfdXBdIyMjdjMuMAogIHZlYz1wb3MudmVjdG9yX3RvKHBvc24pCiAgdHJh
bj1HZW9tOjpUcmFuc2Zvcm1hdGlvbi50cmFuc2xhdGlvbih2ZWMpCiAgcm9v
Zl9lbnRpdGllcy50cmFuc2Zvcm1fZW50aXRpZXModHJhbix2KQp9CiMjIyBl
cmFzZSBjb3BsYW5hciBlZGdlcy4Kcm9vZl9lbnRpdGllcy5lYWNoe3xlfAog
IGlmIGUudHlwZW5hbWU9PSJFZGdlIgogICAgaWYgZS5mYWNlc1sxXSBhbmQg
bm90IGUuZmFjZXNbMl0KCSAgZS5lcmFzZSEgaWYgZS5mYWNlc1swXS5ub3Jt
YWw9PWUuZmFjZXNbMV0ubm9ybWFsIGFuZCBlLnZhbGlkPwoJZW5kI2lmCiAg
ZW5kI2lmCn0KIyMjIG1vdmUgd2hvbGUgcm9vZiBncm91cCBkb3duIGJ5IHNv
Zl91cCBzbyBpdCBzaXRzIG9uIHNlbGVjdGVkIGZhY2UuCnRyej1HZW9tOjpU
cmFuc2Zvcm1hdGlvbi5uZXcoWzAsMCxzb2ZfdXAqLTFdKQpyb29mX2dyb3Vw
Lm1vdmUhKHRyeikKIyMjdjMuMAojIyMKIyMjIE5PVyBzb3J0IG91dCBmYWNl
IGJpdHMgZm9yIHRoZWlyIG1hdGVyaWFscy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCnNvZmZpdHM9W107c2xvcGVzPVtdO2Zhc2NpYXM9W10Kcm9vZl9l
bnRpdGllcy5lYWNoe3xlfAogIGlmIGUudHlwZW5hbWU9PSJGYWNlIgogICAg
aWYgZS5ub3JtYWwubm9ybWFsaXplLno9fjAjIyN2Mi4xCiAgICAgIGZhc2Np
YXMucHVzaChlKQoJICAjIyMgfnZlcnRpY2FsCgllbHNlCgkgIHNvZmZpdHMu
cHVzaChlKSBpZiBlLm5vcm1hbC5ub3JtYWxpemUueiA8IDAKCSAgIyMjIGRv
d253YXJkcyBzb2ZmaXRzCiAgICAgIHNsb3Blcy5wdXNoKGUpIGlmIGUubm9y
bWFsLm5vcm1hbGl6ZS56ID4gMAoJICAjIyMgdXB3YXJkcyBidXQgbm90IGxp
ZAogICAgZW5kI2lmCiAgZW5kI2lmCn0KIyMjdjMuMCB3ZSBtdXN0IGdldCBz
bG9waW5nIGZhc2NpYXMgaW50byB0aGUgY29ycmVjdCBhcnJheQojIyMgZmly
c3QgZ28gdGhyb3VnaCBzb2ZmaXRzLCBJRiBlZGdlIGNvbW1vbiB3aXRoIHNs
b3BlIHRoZW4gPWZhc2NpYS4KaWYgZmFjX291dD4wCiAgc29mZml0cy5lYWNo
e3xzfAogICAgaXNfZmFjPWZhbHNlCiAgICBzLmVkZ2VzLmVhY2h7fGV8Cgkg
IHNsb3Blcy5lYWNoe3xyfAoJICAgIHIuZWRnZXMuZWFjaHt8ZWV8CgkJICBp
c19mYWM9dHJ1ZSBpZiBlZT09ZQoJCX0KCSAgfQoJfQoJaWYgaXNfZmFjCgkg
IHNvZmZpdHM9c29mZml0cy1bc10KCSAgZmFzY2lhcy5wdXNoKHMpCgllbmQj
aWYKICB9CmVuZCNpZiMjI3YzLjAKIyMjIHNvcnQgb3V0IGxheWVyLCBtYXRl
cmlhbHMgZXRjICMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRlZiBSb29mOjpkaWFsb2dfbWF0c19weXJhbWlkICgpCiMjIyBtYXRl
cmlhbHMgZGlhbG9nICMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogIG1vZGVsPVNrZXRjaHVwLmFjdGl2ZV9t
b2RlbAogICMjIyBsYXllcnMuLi4KICBtbGF5ZXJzPW1vZGVsLmxheWVycwog
IGFsYXllcj1tb2RlbC5hY3RpdmVfbGF5ZXIKICBtb2RlbC5hY3RpdmVfbGF5
ZXI9bmlsCiAgZGVmbGF5ZXI9bW9kZWwuYWN0aXZlX2xheWVyLm5hbWUKICBt
b2RlbC5hY3RpdmVfbGF5ZXI9YWxheWVyCiAgcmxheWVyPSItUk9PRiIjIyMg
ZWRpdCB0aGlzIHRvIHN1aXQgeW91ciBkZXNpcmVkIGRlZmF1bHQgcm9vZiBs
YXllci4KICBsYXllcnM9W10KICBtbGF5ZXJzLmVhY2h7fGxheWVyfGxheWVy
cy5wdXNoKGxheWVyLm5hbWUpaWYgbGF5ZXIubmFtZSE9ZGVmbGF5ZXJ9CiAg
bGF5ZXJzPVtybGF5ZXIsZGVmbGF5ZXJdK2xheWVycy5zb3J0IQogIGxheWVy
cz1sYXllcnMudW5pcS5qb2luKCd8JykKICAjIyMgbWF0ZXJpYWxzLi4uCiAg
bWF0X3Jvb2Y9IlJvb2YgU3VyZmFjZSIKICBtYXRfZmFzY2lhPSJSb29mIEZh
c2NpYSIKICBtYXRfc29mZml0PSJSb29mIFNvZmZpdCIKICBtYXRlcmlhbHM9
bW9kZWwubWF0ZXJpYWxzCiAgbWF0cz1bXQogIG1hdGVyaWFscy5lYWNoe3xt
YXR8bWF0cy5wdXNoKG1hdC5uYW1lKX0KICBtYXRzLnNvcnQhCiAgbGlzdF9t
YXRfcm9vZj0oKFsiPERlZmF1bHQ+Il0rW21hdF9yb29mXSttYXRzKS51bmlx
KS5qb2luKCJ8IikKICBsaXN0X21hdF9mYXNjaWE9KChbIjxEZWZhdWx0PiJd
K1ttYXRfZmFzY2lhXSttYXRzKS51bmlxKS5qb2luKCJ8IikKICBsaXN0X21h
dF9zb2ZmaXQ9KChbIjxEZWZhdWx0PiJdK1ttYXRfc29mZml0XSttYXRzKS51
bmlxKS5qb2luKCJ8IikKICAjIyMgc2V0IHVwIHZhcmlhYmxlcy4uLgogIEBs
YXllcj1ybGF5ZXIgaWYgISBAbGF5ZXIKICBAbWF0X3Jvb2Y9bWF0X3Jvb2Yg
aWYgISBAbWF0X3Jvb2YKICBAbWF0X2Zhc2NpYT1tYXRfZmFzY2lhIGlmICEg
QG1hdF9mYXNjaWEKICBAbWF0X3NvZmZpdD1tYXRfc29mZml0IGlmICEgQG1h
dF9zb2ZmaXQKICBlbnVtcz1bbGF5ZXJzLGxpc3RfbWF0X3Jvb2YsbGlzdF9t
YXRfZmFzY2lhLGxpc3RfbWF0X3NvZmZpdF0KICBwcm9tcHRzPVsiUm9vZiBM
YXllcjogICIsIlJvb2YgU3VyZmFjZTogICIsIlJvb2YgRmFzY2lhOiAgIiwi
Um9vZiBTb2ZmaXQ6ICJdCiAgdmFsdWVzPVtAbGF5ZXIsQG1hdF9yb29mLEBt
YXRfZmFzY2lhLEBtYXRfc29mZml0XQogIEBvdGhlcl9yZXN1bHRzPShpbnB1
dGJveCBwcm9tcHRzLHZhbHVlcyxlbnVtcywiUm9vZiBMYXllciBhbmQgTWF0
ZXJpYWxzIikKICBAbGF5ZXIsQG1hdF9yb29mLEBtYXRfZmFzY2lhLEBtYXRf
c29mZml0PUBvdGhlcl9yZXN1bHRzIGlmIEBvdGhlcl9yZXN1bHRzCiAgQG90
aGVyPSJObyIgaWYgISBAb3RoZXJfcmVzdWx0cwogICMjIwplbmQjZGVmCiMj
IyBydW4gbWF0ZXJpYWwgZGlhbG9nCiAgUm9vZjo6ZGlhbG9nX21hdHNfcHly
YW1pZCgpIGlmIEBvdGhlcj09IlllcyIKIyMjLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAgI21hdF9yb29mPSJSb29mIFN1cmZhY2UiCiAgI21hdF9mYXNj
aWE9IlJvb2YgRmFzY2lhIgogICNtYXRfc29mZml0PSJSb29mIFNvZmZpdCIK
aWYgQG90aGVyPT0iWWVzIgogICMjIyBub3RlIHRoYXQgbGF5ZXIgaXMgc2V0
IGFmdGVyIGdyb3VwcyBjb21iaW5lZC4uLgogIGV4dGc9bmlsO0Btb2RlbC5s
YXllcnMuZWFjaHt8bHlyfGV4dGc9bHlyIGlmIGx5ci5uYW1lPT1AbGF5ZXJ9
CiAgaWYgQGxheWVyPT0iPERlZmF1bHQ+IgogICAgbGF5cj1uaWwKICBlbHNl
CiAgICBpZiBleHRnCiAgICAgIGxheXI9ZXh0ZwogICAgZWxzZQogICAgICBs
YXlyPUBtb2RlbC5sYXllcnMuYWRkKEBsYXllcikKICAgIGVuZCNpZgogIGVu
ZCNpZgogICMjIyBtYXRlcmlhbHMuLi4KICAjIyMgZmFzY2lhCiAgZXh0Zz1u
aWw7QG1vZGVsLm1hdGVyaWFscy5lYWNoe3xtYXR8ZXh0Zz1tYXQgaWYgbWF0
Lm5hbWU9PUBtYXRfZmFzY2lhfQogIGlmIEBtYXRfZmFzY2lhPT0iPERlZmF1
bHQ+IgogICAgbWF0X2Y9bmlsCiAgZWxzZQogICAgaWYgZXh0ZwogICAgICBt
YXRfZj1leHRnCiAgICBlbHNlCiAgICAgIG1hdF9mPUBtb2RlbC5tYXRlcmlh
bHMuYWRkKEBtYXRfZmFzY2lhKQogICAgICBtYXRfZi5jb2xvcj1bNjYsNjYs
NjZdIyMjIGFkanVzdCBkZWZhdWx0IGNvbG91cnMgaGVyZS4KICAgIGVuZCNp
ZgogIGVuZCNpZgogIGZhc2NpYXMuZWFjaHt8ZXxlLm1hdGVyaWFsPW1hdF9m
fQogICMjIyBzb2ZmaXQKICBleHRnPW5pbDtAbW9kZWwubWF0ZXJpYWxzLmVh
Y2h7fG1hdHxleHRnPW1hdCBpZiBtYXQubmFtZT09QG1hdF9zb2ZmaXR9CiAg
aWYgQG1hdF9zb2ZmaXQ9PSI8RGVmYXVsdD4iCiAgICBtYXRfcz1uaWwKICBl
bHNlCiAgICBpZiBleHRnCiAgICAgIG1hdF9zPWV4dGcKICAgIGVsc2UKICAg
ICAgbWF0X3M9QG1vZGVsLm1hdGVyaWFscy5hZGQoQG1hdF9zb2ZmaXQpCiAg
ICAgIG1hdF9zLmNvbG9yPVsyMjIsMjIyLDIyMl0jIyMgYWRqdXN0IGRlZmF1
bHQgY29sb3VycyBoZXJlLgogICAgZW5kI2lmCiAgZW5kI2lmCiAgc29mZml0
cy5lYWNoe3xlfGUubWF0ZXJpYWw9bWF0X3N9CiAgIyMjIHJvb2YKICBleHRn
PW5pbDtAbW9kZWwubWF0ZXJpYWxzLmVhY2h7fG1hdHxleHRnPW1hdCBpZiBt
YXQubmFtZT09QG1hdF9yb29mfQogIGlmIEBtYXRfcm9vZj09IjxEZWZhdWx0
PiIKICAgIG1hdF9yPW5pbAogIGVsc2UKICAgIGlmIGV4dGcKICAgICAgbWF0
X3I9ZXh0ZwogICAgZWxzZQogICAgICBtYXRfcj1AbW9kZWwubWF0ZXJpYWxz
LmFkZChAbWF0X3Jvb2YpCiAgICAgIG1hdF9yLmNvbG9yPVsxMTEsMTExLDEx
MV0jIyMgYWRqdXN0IGRlZmF1bHQgY29sb3VycyBoZXJlLgogICAgZW5kI2lm
CiAgZW5kI2lmCiAgc2xvcGVzLmVhY2h7fGV8ZS5tYXRlcmlhbD1tYXRfcn0K
ZW5kI2lmCiMjIyB0aWR5IHVwIGF0IGVuZCAjIyMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAbW9kZWwuYWN0
aXZlX3ZpZXcuaW52YWxpZGF0ZQpAbW9kZWwuY29tbWl0X29wZXJhdGlvbgpT
a2V0Y2h1cC5zZW5kX2FjdGlvbiJzZWxlY3RTZWxlY3Rpb25Ub29sOiIKIyMj
CmVuZCNkZWYgcHlyYW1pZAojIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
CgoKCgoKCiMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkZWYgUm9vZjo6
Z2V0X3Nsb3BlKCkKICAjIyMgY2hlY2sgZmFjZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQG1v
ZGVsPVNrZXRjaHVwLmFjdGl2ZV9tb2RlbAogIHNzPUBtb2RlbC5zZWxlY3Rp
b24KICBmYWNlcz1bXTsgc3MuZWFjaHt8ZXxmYWNlcy5wdXNoKGUpaWYgZS50
eXBlbmFtZT09IkZhY2UifQogIGlmICEgZmFjZXNbMF0gfHwgZmFjZXNbMV0K
ICAgIFVJLm1lc3NhZ2Vib3goIkdldCBTbG9wZTpcblxuWW91IG11c3Qgc2Vs
ZWN0IE9ORSBGQUNFICEiKQogICAgcmV0dXJuIG5pbAogIGVuZCNpZgogIGZh
Y2U9ZmFjZXNbMF0KICBub3JtYWw9ZmFjZS5ub3JtYWwubm9ybWFsaXplCiAg
dXA9R2VvbTo6VmVjdG9yM2QubmV3KDAsMCwxKQogIGFuZ2xlPW5vcm1hbC5h
bmdsZV9iZXR3ZWVuKHVwKSMjI3JhZGlhbnMKICBhbmdsZV9kPWFuZ2xlLnJh
ZGlhbnMjIyNkZWdyZWVzCiAgYW5nbGVfcz1hbmdsZV9kLnRvX3MKICBhPTE7
IGI9MS9NYXRoOjp0YW4oYW5nbGUpLmFicwogIChhPTA7Yj0xKSBpZiBhbmds
ZV9kPT0wIyMjCiAgYj0wIGlmIGFuZ2xlX2Q+PTg5Ljk5OTkjIyMKICByYXRp
bz1hLnRvX3MrIjoiK2IudG9fcwogIFVJLm1lc3NhZ2Vib3goIkFuZ2xlID0g
IithbmdsZV9zKyIgZGVncmVlc1xuU2xvcGUgPSAiK3JhdGlvKQogICMjIyAg
CmVuZCNkZWYgZ2V0X3Nsb3BlCiMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQoKCgoKCmRlZiBSb29mOjpoZWxwCiAgaGVscD1Ta2V0Y2h1cC5maW5kX3N1
cHBvcnRfZmlsZSgiUm9vZkhlbHAuZG9jIiwiUGx1Z2lucy8iKQogIGlmIGhl
bHAKICAgIGhlbHA9ImZpbGU6Ly8vIitoZWxwCglVSS5vcGVuVVJMKGhlbHAp
CiAgZWxzZQogICAgVUkubWVzc2FnZWJveCgiKioqRVJST1IqKipcbkRPQyBS
b29mIEhlbHAgRmlsZSBOT1QgZm91bmQuIikgCiAgICBoZWxwPVNrZXRjaHVw
LmZpbmRfc3VwcG9ydF9maWxlKCJSb29mSGVscC5taHQiLCJQbHVnaW5zLyIp
CglpZiBoZWxwCiAgICAgIGhlbHA9ImZpbGU6Ly8vIitoZWxwCgkgIFVJLm9w
ZW5VUkwoaGVscCkKCWVsc2UKCSAgVUkubWVzc2FnZWJveCgiKioqRVJST1Iq
Kipcbk1IVCBSb29mIEhlbHAgRmlsZSBOT1QgZm91bmQuIikgCgkgIGhlbHA9
U2tldGNodXAuZmluZF9zdXBwb3J0X2ZpbGUoIlJvb2ZIZWxwLnBkZiIsIlBs
dWdpbnMvIikKCSAgaWYgaGVscAoJICAgIGhlbHA9ImZpbGU6Ly8vIitoZWxw
CgkgICAgVUkub3BlblVSTChoZWxwKQogICAgICBlbHNlCgkgICAgVUkubWVz
c2FnZWJveCgiKioqRVJST1IqKipcblBERiBSb29mIEhlbHAgRmlsZSBOT1Qg
Zm91bmQuIikKCSAgZW5kI2lmCgllbmQjaWYKICBlbmQjaWYKZW5kI2RlZiBo
ZWxwCiMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyMjCmVuZCNjbGFz
cyBSb29mIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwojIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KCgoKCgojIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KY2xhc3MgUm9v
ZkdhYmxlCiAgICBkZWYgaW5pdGlhbGl6ZQogICAgICAgICMjIz8KCQlyZXNl
dAogICAgZW5kCiAgICBkZWYgcmVzZXQKICAgICAgICBAcHRzPVtdCiAgICAg
ICAgQHN0YXRlPTAKICAgICAgICBAaXA9U2tldGNodXA6OklucHV0UG9pbnQu
bmV3CiAgICAgICAgQGlwMT1Ta2V0Y2h1cDo6SW5wdXRQb2ludC5uZXcKICAg
ICAgICBAaXAyPVNrZXRjaHVwOjpJbnB1dFBvaW50Lm5ldwogICAgICAgIEBp
cDM9U2tldGNodXA6OklucHV0UG9pbnQubmV3CiAgICAgICAgU2tldGNodXA6
OnNldF9zdGF0dXNfdGV4dCAiUm9vZiBHYWJsZTogIFBpY2sgdGhlIDFzdCBD
b3JuZXIgb2YgdGhlIEZpcnN0LUdhYmxlIFt0aGlzIHdpbGwgYWxzbyBzZXQg
Wi1sZXZlbF0uLi4iCiAgICAgICAgQGRyYXduPWZhbHNlCgkJQHNoaWZ0X2Rv
d25fdGltZT0wCiAgICBlbmQKICAgIGRlZiBhY3RpdmF0ZQogICAgICAgIHNl
bGYucmVzZXQKICAgIGVuZAogICAgZGVmIGRlYWN0aXZhdGUodmlldykKICAg
ICAgICB2aWV3LmludmFsaWRhdGUgaWYgQGRyYXduCiAgICAgICAgQGlwMT1u
aWwKICAgICAgICBAaXAyPW5pbAogICAgICAgIEBpcDM9bmlsCiAgICBlbmQK
ICAgIGRlZiBvbk1vdXNlTW92ZShmbGFncyx4LHksdmlldykKCSAgICB2aWV3
LmludmFsaWRhdGUKICAgICAgICBjYXNlIEBzdGF0ZQogICAgICAgIHdoZW4g
MCAjIyMgZ2V0IHRoZSBmaXJzdCBwb2ludAogICAgICAgICAgICBAaXAucGlj
ayh2aWV3LHgseSkKICAgICAgICAgICAgaWYgQGlwLnZhbGlkPyAmJiBAaXAh
PUBpcDEKICAgICAgICAgICAgICAgIEBpcDEuY29weSEoQGlwKQoJCQkJQHB0
c1swXT1AaXAxLnBvc2l0aW9uCiAgICAgICAgICAgIGVuZAoJCQl2aWV3Lmlu
dmFsaWRhdGUKICAgICAgICAgICAgdmlldy50b29sdGlwPSIxc3QgQ29ybmVy
IG9mIEZpcnN0LUdhYmxlOiAiK0BpcC50b29sdGlwIGlmIEBpcC52YWxpZD8K
ICAgICAgICB3aGVuIDEgIyMjIGdldCB0aGUgc2Vjb25kIHBvaW50CiAgICAg
ICAgICAgIEBpcC5waWNrKHZpZXcseCx5LEBpcDEpCiAgICAgICAgICAgIGlm
IEBpcC52YWxpZD8gJiYgQGlwIT1AaXAyCiAgICAgICAgICAgICAgICBAaXAy
LmNvcHkhKEBpcCkKICAgICAgICAgICAgICAgIEBwdHNbMV09QGlwMi5wb3Np
dGlvbgogICAgICAgICAgICBlbmQKICAgICAgICAgICAgdmlldy5pbnZhbGlk
YXRlCiAgICAgICAgICAgIHZpZXcudG9vbHRpcD0iMm5kIENvcm5lciBvZiBG
aXJzdC1HYWJsZTogIitAaXAudG9vbHRpcCBpZiBAaXAudmFsaWQ/CiAgICAg
ICAgd2hlbiAyICMjIyBnZXQgdGhlIHRoaXJkIHBvaW50CiAgICAgICAgICAg
IEBpcC5waWNrKHZpZXcseCx5LEBpcDIpCiAgICAgICAgICAgIGlmIEBpcC52
YWxpZD8gJiYgQGlwIT1AaXAzCiAgICAgICAgICAgICAgICBAaXAzLmNvcHkh
KEBpcCkKICAgICAgICAgICAgICAgIEBwdHNbMl09QGlwMy5wb3NpdGlvbgog
ICAgICAgICAgICBlbmQKICAgICAgICAgICAgdmlldy5pbnZhbGlkYXRlCiAg
ICAgICAgICAgIHZpZXcudG9vbHRpcD0iUG9pbnQgb24gdGhlIExpbmUgb2Yg
U2Vjb25kLUdhYmxlOiAiK0BpcC50b29sdGlwIGlmIEBpcC52YWxpZD8KICAg
ICAgICBlbmQKICAgIGVuZAogICAgZGVmIG9uTEJ1dHRvbkRvd24oZmxhZ3Ms
eCx5LHZpZXcpCiAgICAgICAgQGlwLnBpY2sodmlldyx4LHkpCiAgICAgICAg
aWYgQGlwLnZhbGlkPwogICAgICAgICAgICBjYXNlIEBzdGF0ZQogICAgICAg
ICAgICB3aGVuIDAKICAgICAgICAgICAgICAgIGlmIEBpcC52YWxpZD8KICAg
ICAgICAgICAgICAgICAgICBAcHRzWzBdPUBpcC5wb3NpdGlvbgogICAgICAg
ICAgICAgICAgICAgIFNrZXRjaHVwOjpzZXRfc3RhdHVzX3RleHQoIlJvb2Yg
R2FibGU6ICBQaWNrIHRoZSAybmQgQ29ybmVyIG9mIHRoZSBGaXJzdC1HYWJs
ZS4uLiIpCiAgICAgICAgICAgICAgICAgICAgQHN0YXRlPTEKICAgICAgICAg
ICAgICAgIGVuZAogICAgICAgICAgICB3aGVuIDEKICAgICAgICAgICAgICAg
IGlmIEBpcC52YWxpZD8gJiYgQGlwIT1AaXAxCiAgICAgICAgICAgICAgICAg
ICAgQHB0c1sxXT1AaXAucG9zaXRpb24KICAgICAgICAgICAgICAgICAgICBA
c3RhdGU9MgogICAgICAgICAgICAgICAgICAgIFNrZXRjaHVwOjpzZXRfc3Rh
dHVzX3RleHQoIlJvb2YgR2FibGU6ICBQaWNrIGEgUG9pbnQgb24gdGhlIExp
bmUgb2YgdGhlIFNlY29uZC1HYWJsZS4uLiIpCiAgICAgICAgICAgICAgICBl
bmQKICAgICAgICAgICAgd2hlbiAyCiAgICAgICAgICAgICAgICBpZiBAaXAu
dmFsaWQ/ICYmIEBpcCE9QGlwMSAmJiBAaXAhPUBpcDIKICAgICAgICAgICAg
ICAgICAgICBAcHRzWzJdPUBpcC5wb3NpdGlvbgogICAgICAgICAgICAgICAg
ICAgIEBzdGF0ZT0zCiAgICAgICAgICAgICAgICAgICAgUm9vZjo6Z2FibGUo
QHB0cykKCQkJCQlyZXR1cm4gbmlsCiAgICAgICAgICAgICAgICBlbmQKICAg
ICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICBlbmQKICAgIGRlZiBvbkNh
bmNlbChmbGFnLHZpZXcpCiAgICAgICAgdmlldy5pbnZhbGlkYXRlIGlmIEBk
cmF3bgogICAgICAgIHJlc2V0CiAgICBlbmQKICAgIGRlZiBkcmF3KHZpZXcp
CiAgICAgICAgaWYgQGlwLnZhbGlkPyAmJiBAaXAuZGlzcGxheT8KICAgICAg
ICAgICAgQGlwLmRyYXcodmlldykKICAgICAgICAgICAgQGRyYXduPXRydWUK
ICAgICAgICBlbmQKICAgICAgICBpZiBAc3RhdGU9PTEKICAgICAgICAgICAg
dmlldy5zZXRfY29sb3JfZnJvbV9saW5lKEBpcDEsQGlwKQogICAgICAgICAg
ICB2aWV3LmRyYXcoR0xfTElORV9TVFJJUCxAaXAxLnBvc2l0aW9uLEBpcC5w
b3NpdGlvbikKICAgICAgICAgICAgQGRyYXduPXRydWUKICAgICAgICBlbHNp
ZiBAc3RhdGU9PTIKICAgICAgICAgICAgdmlldy5kcmF3aW5nX2NvbG9yPSJv
cmFuZ2UiCiAgICAgICAgICAgIHZpZXcuZHJhdyhHTF9MSU5FX1NUUklQLEBp
cDEucG9zaXRpb24sQGlwMi5wb3NpdGlvbikKICAgICAgICAgICAgdmlldy5z
ZXRfY29sb3JfZnJvbV9saW5lKEBpcDIsQGlwKQogICAgICAgICAgICB2aWV3
LmRyYXcoR0xfTElORV9TVFJJUCxAaXAyLnBvc2l0aW9uLEBpcC5wb3NpdGlv
bikKICAgICAgICAgICAgQGRyYXduPXRydWUKICAgICAgICBlbmQKICAgIGVu
ZAogICAgZGVmIG9uS2V5RG93bihrZXkscmVwZWF0LGZsYWdzLHZpZXcpCiAg
ICAgICAgaWYga2V5PT1DT05TVFJBSU5fTU9ESUZJRVJfS0VZICYmIHJlcGVh
dD09MQogICAgICAgICAgICBAc2hpZnRfZG93bl90aW1lPVRpbWUubm93CiAg
ICAgICAgICAgIGlmIHZpZXcuaW5mZXJlbmNlX2xvY2tlZD8KICAgICAgICAg
ICAgICAgIHZpZXcubG9ja19pbmZlcmVuY2UKICAgICAgICAgICAgZWxzaWYg
QGlwLnZhbGlkPwogICAgICAgICAgICAgICAgdmlldy5sb2NrX2luZmVyZW5j
ZShAaXApCiAgICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgZW5kCiAg
ICBkZWYgb25LZXlVcChrZXkscmVwZWF0LGZsYWdzLHZpZXcpCiAgICAgICAg
aWYga2V5PT1DT05TVFJBSU5fTU9ESUZJRVJfS0VZICYmIHZpZXcuaW5mZXJl
bmNlX2xvY2tlZD8gJiYgVGltZS5ub3ctQHNoaWZ0X2Rvd25fdGltZT4wLjUK
ICAgICAgICAgICAgdmlldy5sb2NrX2luZmVyZW5jZQogICAgICAgIGVuZAog
ICAgICAgIGlmIGtleT09MTMKICAgICAgICAgICAgUm9vZjo6Z2FibGUoQHB0
cykKICAgICAgICAgICAgc2VsZi5yZXNldAogICAgICAgIGVuZAogICAgZW5k
CmVuZCNjbGFzcyBSb29mR2FibGUKCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCmNsYXNzIFJvb2ZQeXJhbWlkCiAgICBkZWYgaW5pdGlhbGl6ZQog
ICAgICAgICMjIz8KCQlyZXNldAogICAgZW5kCiAgICBkZWYgcmVzZXQKICAg
ICAgICBAcHRzPVtdCiAgICAgICAgQHN0YXRlPTAKICAgICAgICBAaXA9U2tl
dGNodXA6OklucHV0UG9pbnQubmV3CiAgICAgICAgQGlwMT1Ta2V0Y2h1cDo6
SW5wdXRQb2ludC5uZXcKICAgICAgICBAaXAyPVNrZXRjaHVwOjpJbnB1dFBv
aW50Lm5ldwogICAgICAgIEBpcDM9U2tldGNodXA6OklucHV0UG9pbnQubmV3
CiAgICAgICAgU2tldGNodXA6OnNldF9zdGF0dXNfdGV4dCAiUm9vZiBQeXJh
bWlkOiAgUGljayB0aGUgMXN0IENvcm5lciBvZiB0aGUgUGl0Y2gtU2lkZSBb
dGhpcyB3aWxsIGFsc28gc2V0IFotbGV2ZWxdLi4uIgogICAgICAgIEBkcmF3
bj1mYWxzZQoJCUBzaGlmdF9kb3duX3RpbWU9MAogICAgZW5kCiAgICBkZWYg
YWN0aXZhdGUKICAgICAgICBzZWxmLnJlc2V0CiAgICBlbmQKICAgIGRlZiBk
ZWFjdGl2YXRlKHZpZXcpCiAgICAgICAgdmlldy5pbnZhbGlkYXRlIGlmIEBk
cmF3bgogICAgICAgIEBpcDE9bmlsCiAgICAgICAgQGlwMj1uaWwKICAgICAg
ICBAaXAzPW5pbAogICAgZW5kCiAgICBkZWYgb25Nb3VzZU1vdmUoZmxhZ3Ms
eCx5LHZpZXcpCgkgICAgdmlldy5pbnZhbGlkYXRlCiAgICAgICAgY2FzZSBA
c3RhdGUKICAgICAgICB3aGVuIDAgIyMjIGdldCB0aGUgZmlyc3QgcG9pbnQK
ICAgICAgICAgICAgQGlwLnBpY2sodmlldyx4LHkpCiAgICAgICAgICAgIGlm
IEBpcC52YWxpZD8gJiYgQGlwIT1AaXAxCiAgICAgICAgICAgICAgICBAaXAx
LmNvcHkhKEBpcCkKCQkJCUBwdHNbMF09QGlwMS5wb3NpdGlvbgogICAgICAg
ICAgICBlbmQKCQkJdmlldy5pbnZhbGlkYXRlCiAgICAgICAgICAgIHZpZXcu
dG9vbHRpcD0iMXN0IENvcm5lciBvZiBQaXRjaC1TaWRlOiAiK0BpcC50b29s
dGlwIGlmIEBpcC52YWxpZD8KICAgICAgICB3aGVuIDEgIyMjIGdldCB0aGUg
c2Vjb25kIHBvaW50CiAgICAgICAgICAgIEBpcC5waWNrKHZpZXcseCx5LEBp
cDEpCiAgICAgICAgICAgIGlmIEBpcC52YWxpZD8gJiYgQGlwIT1AaXAyCiAg
ICAgICAgICAgICAgICBAaXAyLmNvcHkhKEBpcCkKICAgICAgICAgICAgICAg
IEBwdHNbMV09QGlwMi5wb3NpdGlvbgogICAgICAgICAgICBlbmQKICAgICAg
ICAgICAgdmlldy5pbnZhbGlkYXRlCiAgICAgICAgICAgIHZpZXcudG9vbHRp
cD0iMm5kIENvcm5lciBvZiBQaXRjaC1TaWRlOiAiK0BpcC50b29sdGlwIGlm
IEBpcC52YWxpZD8KICAgICAgICB3aGVuIDIgIyMjIGdldCB0aGUgdGhpcmQg
cG9pbnQKICAgICAgICAgICAgQGlwLnBpY2sodmlldyx4LHksQGlwMikKICAg
ICAgICAgICAgaWYgQGlwLnZhbGlkPyAmJiBAaXAhPUBpcDMKICAgICAgICAg
ICAgICAgIEBpcDMuY29weSEoQGlwKQogICAgICAgICAgICAgICAgQHB0c1sy
XT1AaXAzLnBvc2l0aW9uCiAgICAgICAgICAgIGVuZAogICAgICAgICAgICB2
aWV3LmludmFsaWRhdGUKICAgICAgICAgICAgdmlldy50b29sdGlwPSJQb2lu
dCBvbiB0aGUgTGluZSBvZiBPdGhlciBTaWRlOiAiK0BpcC50b29sdGlwIGlm
IEBpcC52YWxpZD8KICAgICAgICBlbmQKICAgIGVuZAogICAgZGVmIG9uTEJ1
dHRvbkRvd24oZmxhZ3MseCx5LHZpZXcpCiAgICAgICAgQGlwLnBpY2sodmll
dyx4LHkpCiAgICAgICAgaWYgQGlwLnZhbGlkPwogICAgICAgICAgICBjYXNl
IEBzdGF0ZQogICAgICAgICAgICB3aGVuIDAKICAgICAgICAgICAgICAgIGlm
IEBpcC52YWxpZD8KICAgICAgICAgICAgICAgICAgICBAcHRzWzBdPUBpcC5w
b3NpdGlvbgogICAgICAgICAgICAgICAgICAgIFNrZXRjaHVwOjpzZXRfc3Rh
dHVzX3RleHQoIlJvb2YgUHlyYW1pZDogIFBpY2sgdGhlIDJuZCBDb3JuZXIg
b2YgdGhlIFBpdGNoLVNpZGUuLi4iKQogICAgICAgICAgICAgICAgICAgIEBz
dGF0ZT0xCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgd2hlbiAx
CiAgICAgICAgICAgICAgICBpZiBAaXAudmFsaWQ/ICYmIEBpcCE9QGlwMQog
ICAgICAgICAgICAgICAgICAgIEBwdHNbMV09QGlwLnBvc2l0aW9uCiAgICAg
ICAgICAgICAgICAgICAgQHN0YXRlPTIKICAgICAgICAgICAgICAgICAgICBT
a2V0Y2h1cDo6c2V0X3N0YXR1c190ZXh0KCJSb29mIFB5cmFtaWQ6ICBQaWNr
IGEgUG9pbnQgb24gdGhlIExpbmUgb2YgdGhlIE90aGVyIFNpZGUuLi4iKQog
ICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIHdoZW4gMgogICAgICAg
ICAgICAgICAgaWYgQGlwLnZhbGlkPyAmJiBAaXAhPUBpcDEgJiYgQGlwIT1A
aXAyCiAgICAgICAgICAgICAgICAgICAgQHB0c1syXT1AaXAucG9zaXRpb24K
ICAgICAgICAgICAgICAgICAgICBAc3RhdGU9MwogICAgICAgICAgICAgICAg
ICAgIFJvb2Y6OnB5cmFtaWQoQHB0cykKCQkJCQlyZXR1cm4gbmlsCiAgICAg
ICAgICAgICAgICBlbmQKICAgICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAg
ICBlbmQKICAgIGRlZiBvbkNhbmNlbChmbGFnLHZpZXcpCiAgICAgICAgdmll
dy5pbnZhbGlkYXRlIGlmIEBkcmF3bgogICAgICAgIHJlc2V0CiAgICBlbmQK
ICAgIGRlZiBkcmF3KHZpZXcpCiAgICAgICAgaWYgQGlwLnZhbGlkPyAmJiBA
aXAuZGlzcGxheT8KICAgICAgICAgICAgQGlwLmRyYXcodmlldykKICAgICAg
ICAgICAgQGRyYXduPXRydWUKICAgICAgICBlbmQKICAgICAgICBpZiBAc3Rh
dGU9PTEKICAgICAgICAgICAgdmlldy5zZXRfY29sb3JfZnJvbV9saW5lKEBp
cDEsQGlwKQogICAgICAgICAgICB2aWV3LmRyYXcoR0xfTElORV9TVFJJUCxA
aXAxLnBvc2l0aW9uLEBpcC5wb3NpdGlvbikKICAgICAgICAgICAgQGRyYXdu
PXRydWUKICAgICAgICBlbHNpZiBAc3RhdGU9PTIKICAgICAgICAgICAgdmll
dy5kcmF3aW5nX2NvbG9yPSJvcmFuZ2UiCiAgICAgICAgICAgIHZpZXcuZHJh
dyhHTF9MSU5FX1NUUklQLEBpcDEucG9zaXRpb24sQGlwMi5wb3NpdGlvbikK
ICAgICAgICAgICAgdmlldy5zZXRfY29sb3JfZnJvbV9saW5lKEBpcDIsQGlw
KQogICAgICAgICAgICB2aWV3LmRyYXcoR0xfTElORV9TVFJJUCxAaXAyLnBv
c2l0aW9uLEBpcC5wb3NpdGlvbikKICAgICAgICAgICAgQGRyYXduPXRydWUK
ICAgICAgICBlbmQKICAgIGVuZAogICAgZGVmIG9uS2V5RG93bihrZXkscmVw
ZWF0LGZsYWdzLHZpZXcpCiAgICAgICAgaWYga2V5PT1DT05TVFJBSU5fTU9E
SUZJRVJfS0VZICYmIHJlcGVhdD09MQogICAgICAgICAgICBAc2hpZnRfZG93
bl90aW1lPVRpbWUubm93CiAgICAgICAgICAgIGlmIHZpZXcuaW5mZXJlbmNl
X2xvY2tlZD8KICAgICAgICAgICAgICAgIHZpZXcubG9ja19pbmZlcmVuY2UK
ICAgICAgICAgICAgZWxzaWYgQGlwLnZhbGlkPwogICAgICAgICAgICAgICAg
dmlldy5sb2NrX2luZmVyZW5jZShAaXApCiAgICAgICAgICAgIGVuZAogICAg
ICAgIGVuZAogICAgZW5kCiAgICBkZWYgb25LZXlVcChrZXkscmVwZWF0LGZs
YWdzLHZpZXcpCiAgICAgICAgaWYga2V5PT1DT05TVFJBSU5fTU9ESUZJRVJf
S0VZICYmIHZpZXcuaW5mZXJlbmNlX2xvY2tlZD8gJiYgVGltZS5ub3ctQHNo
aWZ0X2Rvd25fdGltZT4wLjUKICAgICAgICAgICAgdmlldy5sb2NrX2luZmVy
ZW5jZQogICAgICAgIGVuZAogICAgICAgIGlmIGtleT09MTMKICAgICAgICAg
ICAgUm9vZjo6cHlyYW1pZChAcHRzKQogICAgICAgICAgICBzZWxmLnJlc2V0
CiAgICAgICAgZW5kCiAgICBlbmQKZW5kI2NsYXNzIFJvb2ZQeXJhbWlkCiMj
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCiMjIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQoKIyMjIE1lbnVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmlzX3Ro
aXNfZmlsZT1GaWxlLmJhc2VuYW1lKF9fRklMRV9fKQppZiBub3QgZmlsZV9s
b2FkZWQ/KGlzX3RoaXNfZmlsZSkKICAjIyNtZW51PSRzdWJtZW51My5hZGRf
c3VibWVudSgiUm9vZi4uLiIpIyMjVElHIG9ubHkgdXNlLi4uCiAgbWVudT1V
SS5tZW51KCJQbHVnaW5zIikuYWRkX3N1Ym1lbnUoIlJvb2YuLi4iKQogIG1l
bnUuYWRkX2l0ZW0oIkhpcHBlZCBSb29mIFtmcm9tIHNlbGVjdGVkIEZhY2Vd
Iil7Um9vZjo6aGlwfQogIG1lbnUuYWRkX2l0ZW0oIk1hbnNhcmQgfCBTcHJv
Y2tldCBSb29mIFtmcm9tIGVsZWN0ZWQgRmFjZV0iKXtSb29mOjptYW5zYXJk
fQogIG1lbnUuYWRkX2l0ZW0oIkdhYmxlLUVuZGVkIFJvb2YgW3BpY2sgMyBQ
b2ludHNdIil7U2tldGNodXAuYWN0aXZlX21vZGVsLnNlbGVjdF90b29sIFJv
b2ZHYWJsZS5uZXd9CiAgbWVudS5hZGRfaXRlbSgiUHlyYW1pZCBSb29mIFtw
aWNrIDMgUG9pbnRzXSIpe1NrZXRjaHVwLmFjdGl2ZV9tb2RlbC5zZWxlY3Rf
dG9vbCBSb29mUHlyYW1pZC5uZXd9CiAgbWVudS5hZGRfaXRlbSgiR2V0IFNs
b3BlIFtmcm9tIHNlbGVjdGVkIEZhY2VdIil7Um9vZjo6Z2V0X3Nsb3BlfQog
IG1lbnUuYWRkX2l0ZW0oIkhlbHAuLi4iKXtSb29mOjpoZWxwfQplbmQjaWYK
ZmlsZV9sb2FkZWQoaXNfdGhpc19maWxlKQojIyMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0K}.unpack("m").to_s
