IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQojDQojIHdoaWxlIHN0YXRlbWVudA0KIw0KDQphcnIx
PSAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIg0KYXJyMj0gIjwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiINCmFycjM9ICI8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID4iDQphcnI0PSAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uIg0Kb3JpZ3NjcmVlbiA9IFtdDQp2cG9zYmFsbD0wDQpocG9zYmFsbD0xNw0K
dnBvc3BhZD0yOQ0KaHBvc3BhZD0xMw0KbG9zZWZsYWcyPTANCmhpdFBhZD0wDQpoaXRDZWls
PTENCmhpdFJXYWxsPTANCmhpdExXYWxsPTANCnBhZERldFBvczE9MA0KcGFkRGV0UG9zMj0w
DQoNCmRlZiBmb3Jtc2NyZWVuKCk6DQogICAgbGVuPTMwDQogICAgb3JpZ3NjcmVlbi5hcHBl
bmQoYXJyMSkNCiAgICBpPTENCiAgICB3aGlsZSBpPGxlbi0xOg0KICAgICAgICBvcmlnc2Ny
ZWVuLmFwcGVuZChhcnIyKQ0KICAgICAgICBpPWkrMQ0KICAgIG9yaWdzY3JlZW4uYXBwZW5k
KGFycjMpDQogICAgb3JpZ3NjcmVlbi5hcHBlbmQoYXJyNCkNCg0KZGVmIHByaW50c2NyZWVu
KCk6DQogICAgc2NyZWVuID0gW10NCiAgICBteWxlbiA9IGxlbihvcmlnc2NyZWVuKQ0KICAg
IGk9IDANCiAgICBnbG9iYWwgaGl0UGFkDQogICAgZ2xvYmFsIGhpdENlaWwNCiAgICBnbG9i
YWwgaGl0TFdhbGwNCiAgICBnbG9iYWwgaGl0UldhbGwNCiAgICBnbG9iYWwgbG9zZWZsYWcy
DQogICAgZ2xvYmFsIGRvbmUNCiAgICBsb3NlZmxhZz0gMA0KICAgIHdoaWxlKGkgPCBteWxl
bik6DQogICAgICAgIHk9IG9yaWdzY3JlZW5baV0NCiAgICAgICAgc2NyZWVuLmFwcGVuZCh5
KQ0KICAgICAgICBpZiBpPT0gdnBvc3BhZDoNCiAgICAgICAgICAgIHk9IHlbOmhwb3NwYWRd
ICsgKCItLS0tLS0tIikgKyB5W2hwb3NwYWQrMTpdDQogICAgICAgICAgICBzY3JlZW5baV09
eQ0KICAgICAgICBpZiBpPT0gdnBvc2JhbGw6DQogICAgICAgICAgICBpZih5W2hwb3NiYWxs
XSA9PSAiLiIpOg0KICAgICAgICAgICAgICAgbG9zZWZsYWcgPSAxDQogICAgICAgICAgICBp
Zih5W2hwb3NiYWxsXSA9PSAiLSIpOg0KICAgICAgICAgICAgICAgIGhpdFBhZD0xDQogICAg
ICAgICAgICBpZih5W2hwb3NiYWxsXSA9PSAiKiIpOg0KICAgICAgICAgICAgICAgIGhpdENl
aWw9MQ0KICAgICAgICAgICAgaWYoeVtocG9zYmFsbF0gPT0gIjwiKToNCiAgICAgICAgICAg
ICAgIGhpdExXYWxsPTENCiAgICAgICAgICAgIGlmKHlbaHBvc2JhbGxdID09ICI+Iik6DQog
ICAgICAgICAgICAgICBoaXRSV2FsbD0xDQogICAgICAgICAgICB5PSB5WzpocG9zYmFsbF0g
KyAoIm8iKSArIHlbaHBvc2JhbGwrMTpdDQogICAgICAgICAgICBzY3JlZW5baV0gPSB5DQog
ICAgICAgIGk9aSsxDQogICAgZm9yIHMgaW4gc2NyZWVuOg0KICAgICAgICBwcmludCBzDQog
ICAgaWYgbG9zZWZsYWc9PSAxOg0KICAgICAgICBsb3NlZmxhZzI9MQ0KICAgICAgICBwcmlu
dCAiWW91IGxvc2UiDQoNCg0KDQoNCmZvcm1zY3JlZW4oKQ0KDQoNCms9MA0KYW5nbGVWYXI9
MA0KZGlyZWN0aW9uPTENCg0Kd2hpbGUobG9zZWZsYWcyICE9MSk6DQogICAgDQogICAgcHJp
bnRzY3JlZW4oKQ0KICAgIGlmKGhpdFBhZCE9MSBhbmQgYW5nbGVWYXI9PTApOg0KICAgICAg
ICB3aGlsZShoaXRQYWQhPSAxKToNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaz1rKzEN
CiAgICAgICAgICAgIHByaW50IGsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgYXJyMyA9
ICgiICIpICsgYXJyMw0KICAgICAgICAgICAgeCA9IHJhd19pbnB1dCgiVXNlIHRoZSAnaicg
YW5kICdrJyBrZXkgdG8gbW92ZSB0aGUgcGFkIGxlZnQgYW5kIHJpZ2h0IikNCiAgICAgICAg
ICAgIGlmIHg9PSJqIjoNCiAgICAgICAgICAgICAgICBocG9zcGFkPWhwb3NwYWQtMQ0KICAg
ICAgICAgICAgaWYgeD09ImsiOg0KICAgICAgICAgICAgICAgIGhwb3NwYWQ9aHBvc3BhZCsx
DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICBpZiBrPT0yODoNCiAgICAgICAgICAg
ICAgICBwYWREZXRQb3MxPWhwb3NwYWQNCiAgICAgICAgICAgIGlmIGs9PTI5Og0KICAgICAg
ICAgICAgICAgIHBhZERldFBvczI9aHBvc3BhZA0KDQogICAgICAgICAgICB2cG9zYmFsbD12
cG9zYmFsbCsxDQogICAgICAgICAgICBwcmludHNjcmVlbigpDQogICAgICAgICAgICBoaXRD
ZWlsPTANCiAgICAgICAgICAgIGFuZ2xlVmFyPSBwYWREZXRQb3MyLXBhZERldFBvczENCiAg
ICAgICAgICAgIHByaW50IGFuZ2xlVmFyDQoNCiAgICAgICAgDQogICAgaWYoaGl0UGFkPT0g
MSBhbmQgYW5nbGVWYXI9PTApOg0KICAgICAgICBrPTANCiAgICAgICAgaGl0UGFkPTANCiAg
ICAgICAgd2hpbGUoaGl0Q2VpbCAhPTEpOg0KDQogICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgYXJyMyA9ICgiICIpICsgYXJyMw0KICAgICAgICAgICAgeCA9IHJhd19pbnB1dCgiVXNl
IHRoZSAnaicgYW5kICdrJyBrZXkgdG8gbW92ZSB0aGUgcGFkIGxlZnQgYW5kIHJpZ2h0IikN
CiAgICAgICAgICAgIGlmIHg9PSJqIjoNCiAgICAgICAgICAgICAgICBocG9zcGFkPWhwb3Nw
YWQtMQ0KICAgICAgICAgICAgaWYgeD09ImsiOg0KICAgICAgICAgICAgICAgIGhwb3NwYWQ9
aHBvc3BhZCsxDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIHZwb3Ni
YWxsPSB2cG9zYmFsbC0xDQogICAgICAgICAgICBwcmludHNjcmVlbigpDQoNCg0KICAgIGlm
KGhpdFBhZD09IDEgYW5kIGFuZ2xlVmFyPjApOg0KICAgICAgICBrPTANCiAgICAgICAgaGl0
UGFkPTANCiAgICAgICANCiAgICAgICAgd2hpbGUoaGl0Q2VpbCAhPTEpOg0KICAgICAgICAg
ICAgDQogICAgICAgICAgICBpZihoaXRMV2FsbD09MSk6DQogICAgICAgICAgICAgICAgaGl0
TFdhbGw9MA0KICAgICAgICAgICAgICAgIGRpcmVjdGlvbj0tMQ0KICAgICAgICAgICAgaWYo
aGl0UldhbGw9PTEpOg0KICAgICAgICAgICAgICAgIGhpdFJXYWxsPTANCiAgICAgICAgICAg
ICAgICBkaXJlY3Rpb249MSAgICAgICAgICAgICANCiAgICAgICAgICAgIGFycjMgPSAoIiAi
KSArIGFycjMNCiAgICAgICAgICAgIHggPSByYXdfaW5wdXQoIlVzZSB0aGUgJ2onIGFuZCAn
aycga2V5IHRvIG1vdmUgdGhlIHBhZCBsZWZ0IGFuZCByaWdodCIpDQogICAgICAgICAgICBp
ZiB4PT0iaiI6DQogICAgICAgICAgICAgICAgaHBvc3BhZD1ocG9zcGFkLTENCiAgICAgICAg
ICAgIGlmIHg9PSJrIjoNCiAgICAgICAgICAgICAgICBocG9zcGFkPWhwb3NwYWQrMQ0KICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgdnBvc2JhbGw9IHZwb3NiYWxsLTENCiAgICAg
ICAgICAgIGhwb3NiYWxsPSBocG9zYmFsbC0oMSpkaXJlY3Rpb24pDQogICAgICAgICAgICAN
CiAgICAgICAgICAgIHByaW50c2NyZWVuKCkNCg0KICAgIGlmKGhpdFBhZD09IDEgYW5kIGFu
Z2xlVmFyPDApOg0KICAgICAgICBrPTANCiAgICAgICAgaGl0UGFkPTANCg0KICAgICAgICB3
aGlsZShoaXRDZWlsICE9MSk6DQoNCiAgICAgICAgICAgIGlmKGhpdExXYWxsPT0xKToNCiAg
ICAgICAgICAgICAgICBoaXRMV2FsbD0wDQogICAgICAgICAgICAgICAgZGlyZWN0aW9uPTEN
CiAgICAgICAgICAgIGlmKGhpdFJXYWxsPT0xKToNCiAgICAgICAgICAgICAgICBoaXRSV2Fs
bD0wDQogICAgICAgICAgICAgICAgZGlyZWN0aW9uPS0xDQogICAgICAgICAgICBhcnIzID0g
KCIgIikgKyBhcnIzDQogICAgICAgICAgICB4ID0gcmF3X2lucHV0KCJVc2UgdGhlICdqJyBh
bmQgJ2snIGtleSB0byBtb3ZlIHRoZSBwYWQgbGVmdCBhbmQgcmlnaHQiKQ0KICAgICAgICAg
ICAgaWYgeD09ImoiOg0KICAgICAgICAgICAgICAgIGhwb3NwYWQ9aHBvc3BhZC0xDQogICAg
ICAgICAgICBpZiB4PT0iayI6DQogICAgICAgICAgICAgICAgaHBvc3BhZD1ocG9zcGFkKzEN
Cg0KICAgICAgICAgICAgdnBvc2JhbGw9IHZwb3NiYWxsLTENCiAgICAgICAgICAgIGhwb3Ni
YWxsPSBocG9zYmFsbCsoMSpkaXJlY3Rpb24pDQoNCiAgICAgICAgICAgIHByaW50c2NyZWVu
KCkNCiAgICAgICAgICAgIA0KDQogICAgaWYoaGl0UGFkIT0xIGFuZCBhbmdsZVZhcj4wKToN
CiAgICAgICAgZGlyZWN0aW9uPTENCiAgICAgICAgaz0wDQogICAgICAgIHdoaWxlKGhpdFBh
ZCE9IDEpOg0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZihoaXRMV2FsbD09MSk6DQog
ICAgICAgICAgICAgICAgaGl0TFdhbGw9MA0KICAgICAgICAgICAgICAgIGRpcmVjdGlvbj0x
DQogICAgICAgICAgICBpZihoaXRSV2FsbD09MSk6DQogICAgICAgICAgICAgICAgaGl0Uldh
bGw9MA0KICAgICAgICAgICAgICAgIGRpcmVjdGlvbj0tMSAgICAgICAgICAgIA0KICAgICAg
ICAgICAgDQogICAgICAgICAgICBrPWsrMQ0KICAgICAgICAgICAgcHJpbnQgaw0KICAgICAg
ICAgICAgDQogICAgICAgICAgICBhcnIzID0gKCIgIikgKyBhcnIzDQogICAgICAgICAgICB4
ID0gcmF3X2lucHV0KCJVc2UgdGhlICdqJyBhbmQgJ2snIGtleSB0byBtb3ZlIHRoZSBwYWQg
bGVmdCBhbmQgcmlnaHQiKQ0KICAgICAgICAgICAgaWYgeD09ImoiOg0KICAgICAgICAgICAg
ICAgIGhwb3NwYWQ9aHBvc3BhZC0xDQogICAgICAgICAgICBpZiB4PT0iayI6DQogICAgICAg
ICAgICAgICAgaHBvc3BhZD1ocG9zcGFkKzENCiAgICAgICAgICAgICAgICANCiAgICAgICAg
ICAgIGlmIGs9PTI4Og0KICAgICAgICAgICAgICAgIHBhZERldFBvczE9aHBvc3BhZA0KICAg
ICAgICAgICAgaWYgaz09Mjk6DQogICAgICAgICAgICAgICAgcGFkRGV0UG9zMj1ocG9zcGFk
DQoNCiAgICAgICAgICAgIHZwb3NiYWxsPXZwb3NiYWxsKzENCiAgICAgICAgICAgIGhwb3Ni
YWxsPSBocG9zYmFsbCsoMSpkaXJlY3Rpb24pDQogICAgICAgICAgICBwcmludHNjcmVlbigp
DQogICAgICAgICAgICBoaXRDZWlsPTANCiAgICAgICAgICAgIGFuZ2xlVmFyPSBwYWREZXRQ
b3MyLXBhZERldFBvczENCiAgICAgICAgICAgIHByaW50IGFuZ2xlVmFyDQoNCg0KICAgIGlm
KGhpdFBhZCE9MSBhbmQgYW5nbGVWYXI8MCk6DQogICAgICAgIGRpcmVjdGlvbj0xDQogICAg
ICAgIGs9MA0KICAgICAgICB3aGlsZShoaXRQYWQhPSAxKToNCiAgICAgICAgICAgIA0KICAg
ICAgICAgICAgaWYoaGl0TFdhbGw9PTEpOg0KICAgICAgICAgICAgICAgIGhpdExXYWxsPTAN
CiAgICAgICAgICAgICAgICBkaXJlY3Rpb249LTENCiAgICAgICAgICAgIGlmKGhpdFJXYWxs
PT0xKToNCiAgICAgICAgICAgICAgICBoaXRSV2FsbD0wDQogICAgICAgICAgICAgICAgZGly
ZWN0aW9uPSsxICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIGs9aysx
DQogICAgICAgICAgICBwcmludCBrDQogICAgICAgICAgICANCiAgICAgICAgICAgIGFycjMg
PSAoIiAiKSArIGFycjMNCiAgICAgICAgICAgIHggPSByYXdfaW5wdXQoIlVzZSB0aGUgJ2on
IGFuZCAnaycga2V5IHRvIG1vdmUgdGhlIHBhZCBsZWZ0IGFuZCByaWdodCIpDQogICAgICAg
ICAgICBpZiB4PT0iaiI6DQogICAgICAgICAgICAgICAgaHBvc3BhZD1ocG9zcGFkLTENCiAg
ICAgICAgICAgIGlmIHg9PSJrIjoNCiAgICAgICAgICAgICAgICBocG9zcGFkPWhwb3NwYWQr
MQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgaz09Mjg6DQogICAgICAgICAg
ICAgICAgcGFkRGV0UG9zMT1ocG9zcGFkDQogICAgICAgICAgICBpZiBrPT0yOToNCiAgICAg
ICAgICAgICAgICBwYWREZXRQb3MyPWhwb3NwYWQNCg0KICAgICAgICAgICAgdnBvc2JhbGw9
dnBvc2JhbGwrMQ0KICAgICAgICAgICAgaHBvc2JhbGw9IGhwb3NiYWxsLSgxKmRpcmVjdGlv
bikNCiAgICAgICAgICAgIHByaW50c2NyZWVuKCkNCiAgICAgICAgICAgIGhpdENlaWw9MA0K
ICAgICAgICAgICAgYW5nbGVWYXI9IHBhZERldFBvczItcGFkRGV0UG9zMQ0KICAgICAgICAg
ICAgcHJpbnQgYW5nbGVWYXINCiAgICAgICAgDQogICAgICAgIA0KDQoNCg0KDQogICAgICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgIA0KICAgICAgICAN
Cg==
