Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
CiBjbGFzcyBBcHBDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7IHZhciAkYWN0aW9uID0g ZmFsc2U7IHZh..
Decoded Output download
<? CiBjbGFzcyBBcHBDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7IHZhciAkYWN0aW9uID0g
ZmFsc2U7IHZhciAkcGFnZV90b19yZXR1cm47IHZhciAkcXVlcnkgPSBhcnJheSggJ21vZHVsZScg
PT4nbW9kdWxlJywgJ3BhZ2UnID0+J3BhZ2UnLCAnc3ViX3BhZ2UnID0+J3N1Yl9wYWdlJywgJ2Fj
dGlvbicgPT4nYWN0aW9uJywgJ2lkJyA9PidpZCcsICdzaG93X21zZycgPT4nc2hvd19tc2cnICk7
IHZhciAkYWN0aW9ucyA9IGFycmF5KCAnaW5zZXJ0Jz0+J2luc2VydCcsICd1cGRhdGUnPT4ndXBk
YXRlJywgJ2RlbGV0ZSc9PidkZWxldGUnLCAnc3RhdHVzJz0+J3N0YXR1cycsICdkZXRhaWwnPT4n
ZGV0YWlsJyApOyB2YXIgJGlkX2tleSA9ICdpZCc7IHZhciAkc2VsZl9wYWdlOyB2YXIgJGJhc2Vf
aHJlZjsgdmFyICRtb2R1bGU7IHZhciAkcGFnZTsgdmFyICRzdWJfcGFnZTsgdmFyICRwYXJhbXMg
PSBhcnJheSgnbW9kdWxlJywgJ3BhZ2UnLCAnc3ViX3BhZ2UnKTsgdmFyICRtb3JlX3BhcmFtcyA9
IGFycmF5KCAnYnByJywgJ3NvcnQnLCAnb3JkZXInLCAnbGV0dGVyJywgJ2ZpbHRlcicsICdwb3B1
cCcsICdmcmFtZScsICdmaWVsZF9uYW1lJywgJ2ZpZWxkX2lkJywgJ3JlZmVyZXInLCAnYnAnLCAn
YnB0JywgJ25vX2F0dGFjaCcsICdjbG9zZScsICd2YXJzJyApOyB2YXIgJG1vcmVfcGFyYW1zX2Fq
YXggPSBhcnJheSgpOyB2YXIgJGN1c3RvbV9yZXR1cm5fcGFyYW1zID0gYXJyYXkoKTsgdmFyICRj
dXN0b21fcGFnZV90b19yZXR1cm47IHZhciAkZGVsYXlfdGltZSA9ICcxMDAwJzsgdmFyICRsYW5n
ID0gQVBQX0xBTkc7IHZhciAkbW9kdWxlX2RpciA9IEFQUF9NT0RVTEVfRElSOyB2YXIgJGV4dHJh
X21vZHVsZV9kaXIgPSBBUFBfRVhUUkFfTU9EVUxFX0RJUjsgdmFyICRhY2NvdW50X21vZHVsZV9k
aXIgPSBBUFBfQUNDT1VOVF9NT0RVTEVfRElSOyB2YXIgJGV4dHJhX21vZHVsZXMgPSBhcnJheSgp
OyB2YXIgJHdvcmtpbmdfZGlyOyB2YXIgJGZ1bGxfcGFnZTsgdmFyICRmdWxsX3BhZ2VfcGFyYW1z
OyB2YXIgJGFyZ19zZXBhcmF0b3IgPSAnJmFtcDsnOyB2YXIgJG1zZyA9IGFycmF5KCk7IHZhciAk
ZW5jb2Rpbmc7IGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgeyBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7
ICRyZWcgPSAmUmVnaXN0cnk6Omluc3RhbmNlKCk7ICRjb25mID0gJiRyZWctPmdldEVudHJ5KCdj
b25mJyk7ICR0aGlzLT5lbmNvZGluZyA9ICRjb25mWydsYW5nJ11bJ21ldGFfY2hhcnNldCddOyAk
dGhpcy0+YmFzZV9ocmVmID0gJGNvbmZbJ2NsaWVudF9wYXRoJ107ICR0aGlzLT5zZWxmX3BhZ2Ug
PSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsgJHRoaXMtPmFjdGlvbiA9ICR0aGlzLT5nZXRSZXF1ZXN0
VmFyKCdhY3Rpb24nKTsgJHRoaXMtPm1vZHVsZSA9ICR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1
bGUnKTsgJHRoaXMtPnBhZ2UgPSAkdGhpcy0+Z2V0UmVxdWVzdFZhcigncGFnZScpOyAkdGhpcy0+
c3ViX3BhZ2UgPSAkdGhpcy0+Z2V0UmVxdWVzdFZhcignc3ViX3BhZ2UnKTsgJHRoaXMtPndvcmtp
bmdfZGlyID0gJHRoaXMtPm1vZHVsZV9kaXIgLiAkdGhpcy0+bW9kdWxlIC4gJy8nOyAkdGhpcy0+
c2V0Q29tbW9uTGluaygpOyB9IGZ1bmN0aW9uIGFkZE1zZygkZmlsZV9uYW1lLCAkbW9kdWxlID0g
ZmFsc2UpIHsgaWYoJG1vZHVsZSkgeyAkZmlsZV9uYW1lID0gQXBwTXNnOjpnZXRNb2R1bGVNc2dG
aWxlKCRtb2R1bGUsICRmaWxlX25hbWUpOyB9IGVsc2UgeyAkZmlsZV9uYW1lID0gQXBwTXNnOjpn
ZXRDb21tb25Nc2dGaWxlKCRmaWxlX25hbWUpOyB9ICR0aGlzLT5tc2cgPSBhcnJheV9tZXJnZSgk
dGhpcy0+bXNnLCBBcHBNc2c6OnBhcnNlTXNncygkZmlsZV9uYW1lKSk7IH0gZnVuY3Rpb24gZ2V0
UmVxdWVzdFZhcigkdmFyKSB7IHJldHVybiAoaXNzZXQoJF9HRVRbJHRoaXMtPnF1ZXJ5WyR2YXJd
XSkpID8gdXJsZW5jb2RlKHVybGRlY29kZSgkX0dFVFskdGhpcy0+cXVlcnlbJHZhcl1dKSkgOiBO
VUxMOyB9IGZ1bmN0aW9uIGdldFJlcXVlc3RLZXkoJGtleSkgeyByZXR1cm4gQCR0aGlzLT5xdWVy
eVska2V5XTsgfSBmdW5jdGlvbiBzZXRSZXF1ZXN0VmFyKCR2YXIsICR2YWx1ZSkgeyAkX0dFVFsk
dGhpcy0+cXVlcnlbJHZhcl1dID0gJHZhbHVlOyB9IGZ1bmN0aW9uIGdldEN1cnJlbnRMaW5rKCkg
eyAkcXVlcnkgPSBodHRwX2J1aWxkX3F1ZXJ5KCRfR0VUKTsgcmV0dXJuICgkcXVlcnkpID8gJF9T
RVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiAkcXVlcnkgOiAkX1NFUlZFUlsnUEhQX1NFTEYnXTsg
fSBmdW5jdGlvbiBnZXRDb21tb25MaW5rKCkgeyByZXR1cm4gJHRoaXMtPmZ1bGxfcGFnZTsgfSBm
dW5jdGlvbiBzZXRDb21tb25MaW5rKCkgeyAkdGhpcy0+ZnVsbF9wYWdlID0gJHRoaXMtPmdldEZ1
bGxQYWdlVXJsKCk7ICR0aGlzLT5mdWxsX3BhZ2VfcGFyYW1zID0gJHRoaXMtPmdldEZ1bGxQYWdl
UGFyYW1zKCk7IH0gZnVuY3Rpb24gZ2V0QWN0aW9uKCkgeyByZXR1cm4gJHRoaXMtPmFjdGlvbjsg
fSBmdW5jdGlvbiBzZXRDdXN0b21BY3Rpb24oJGFjdGlvbiwgJHZhbHVlKSB7ICR0aGlzLT5hY3Rp
b25zWyRhY3Rpb25dID0gJHZhbHVlOyB9IGZ1bmN0aW9uIGdldEFjdGlvblZhbHVlKCRhY3Rpb25f
a2V5KSB7IHJldHVybiBAJHRoaXMtPmFjdGlvbnNbJGFjdGlvbl9rZXldOyB9IGZ1bmN0aW9uIGdl
dEZ1bGxQYWdlVXJsKCkgeyByZXR1cm4gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiBodHRw
X2J1aWxkX3F1ZXJ5KGFycmF5X21lcmdlKCR0aGlzLT5nZXRQYXJhbXMoKSwgJHRoaXMtPmdldE1v
cmVQYXJhbXMoKSkpOyB9IGZ1bmN0aW9uIGdldEZ1bGxQYWdlUGFyYW1zKCkgeyByZXR1cm4gYXJy
YXlfbWVyZ2UoJHRoaXMtPmdldFBhcmFtcygpLCAkdGhpcy0+Z2V0TW9yZVBhcmFtcygpKTsgfSBm
dW5jdGlvbiAmX2dldFBhcmFtcygkcGFyYW1zKSB7ICRwYXJhbXNfID0gYXJyYXkoKTsgZm9yZWFj
aCgkcGFyYW1zIGFzICR2KSB7IGlmKGlzc2V0KCRfR0VUWyR2XSkpIHsgJHBhcmFtc19bJHZdID0g
JF9HRVRbJHZdOyB9IH0gcmV0dXJuICRwYXJhbXNfOyB9IGZ1bmN0aW9uICZnZXRQYXJhbXMoKSB7
IHJldHVybiAkdGhpcy0+X2dldFBhcmFtcygkdGhpcy0+cGFyYW1zKTsgfSBmdW5jdGlvbiBnZXRN
b3JlUGFyYW1zKCkgeyByZXR1cm4gJHRoaXMtPl9nZXRQYXJhbXMoJHRoaXMtPm1vcmVfcGFyYW1z
KTsgfSBmdW5jdGlvbiBzZXRNb3JlUGFyYW1zKCR2YWwsICRyZWJ1aWx0X3BhcmFtcyA9IHRydWUp
IHsgJHZhbCA9IChpc19hcnJheSgkdmFsKSkgPyAkdmFsIDogYXJyYXkoJHZhbCk7IGZvcmVhY2go
JHZhbCBhcyAkdikgeyAkdGhpcy0+bW9yZV9wYXJhbXNbXSA9ICR2OyB9IGlmKCRyZWJ1aWx0X3Bh
cmFtcykgeyAkdGhpcy0+c2V0Q29tbW9uTGluaygpOyB9IH0gZnVuY3Rpb24gcmVtb3ZlTW9yZVBh
cmFtcygkdmFsLCAkcmVidWlsdF9wYXJhbXMgPSB0cnVlKSB7ICR2YWwgPSAoaXNfYXJyYXkoJHZh
bCkpID8gJHZhbCA6IGFycmF5KCR2YWwpOyBmb3JlYWNoKCR2YWwgYXMgJHYpIHsgJGtleSA9IGFy
cmF5X3NlYXJjaCgkdiwgJHRoaXMtPm1vcmVfcGFyYW1zKTsgaWYoJGtleSkgeyB1bnNldCgkdGhp
cy0+bW9yZV9wYXJhbXNbJGtleV0pOyB9IH0gaWYoJHJlYnVpbHRfcGFyYW1zKSB7ICR0aGlzLT5z
ZXRDb21tb25MaW5rKCk7IH0gfSBmdW5jdGlvbiBzZXRNb3JlUGFyYW1zQWpheCgkdmFsKSB7ICR2
YWwgPSAoaXNfYXJyYXkoJHZhbCkpID8gJHZhbCA6IGFycmF5KCR2YWwpOyBmb3JlYWNoKCR2YWwg
YXMgJHYpIHsgJHRoaXMtPm1vcmVfcGFyYW1zX2FqYXhbXSA9ICR2OyB9IH0gZnVuY3Rpb24gZ2V0
TW9yZVBhcmFtKCRwYXJhbSkgeyAkcmV0ID0gZmFsc2U7IGlmKGlzX2FycmF5KCRwYXJhbSkpIHsg
JHJldCA9ICghZW1wdHkoJF9HRVRbJHBhcmFtWzBdXVskcGFyYW1bMV1dKSkgPyAkX0dFVFskcGFy
YW1bMF1dWyRwYXJhbVsxXV0gOiBmYWxzZTsgfSBlbHNlIHsgJHJldCA9ICghZW1wdHkoJF9HRVRb
JHBhcmFtXSkpID8gJF9HRVRbJHBhcmFtXSA6IGZhbHNlOyB9IGlmKCRyZXQpIHsgJHJldCA9IChp
c19hcnJheSgkcmV0KSkgPyBhcnJheV9tYXAoJ3VybGVuY29kZScsICRyZXQpIDogdXJsZW5jb2Rl
KCRyZXQpOyB9IHJldHVybiAkcmV0OyB9IGZ1bmN0aW9uIHNldEN1c3RvbVBhZ2VUb1JldHVybigk
cGFnZSwgJHVuc2VyaWFsaXplID0gdHJ1ZSkgeyBAJGxpbmsgPSBXZWJVdGlsOjp1bnNlcmlhbGl6
ZV91cmwoJHBhZ2UpOyAkdGhpcy0+Y3VzdG9tX3BhZ2VfdG9fcmV0dXJuID0gKCRsaW5rID09PSBm
YWxzZSkgPyAkcGFnZSA6ICRsaW5rOyB9IGZ1bmN0aW9uIHNldERlbGF5VGltZSgkbXVsdGlwbGll
cikgeyAkdGhpcy0+ZGVsYXlfdGltZSA9ICR0aGlzLT5kZWxheV90aW1lKiRtdWx0aXBsaWVyOyB9
IGZ1bmN0aW9uIGdldFJlZmVyZXJMaW5rKCRyZWZlcmVyLCAkY2xpZW50X2xpbmsgPSBhcnJheSgp
KSB7ICRsaW5rID0gJyc7IGlmKHN0cnBvcygkcmVmZXJlciwgJ2NsaWVudCcpICE9PSBmYWxzZSkg
eyAkbGluayA9ICR0aGlzLT5nZXRDbGllbnRMaW5rKCRjbGllbnRfbGluayk7IH0gZWxzZWlmKHN0
cnBvcygkcmVmZXJlciwgJ2Vtb2RlJykgIT09IGZhbHNlKSB7ICRsaW5rID0gJHRoaXMtPmdldENs
aWVudExpbmsoJGNsaWVudF9saW5rKTsgfSBlbHNlaWYoJHJlZmVyZXIpIHsgJGxpbmsgPSBXZWJV
dGlsOjp1bnNlcmlhbGl6ZV91cmwoJHJlZmVyZXIpOyB9IHJldHVybiAkbGluazsgfSBmdW5jdGlv
biBnbygkbXNnID0gJ3N1Y2Nlc3MnLCAkc2FtZV9wYWdlID0gZmFsc2UsICRhZnRlcl9tc2cgPSBm
YWxzZSwgJGFjdGlvbiA9IGZhbHNlKSB7ICRlbnRyeV9pZCA9ICR0aGlzLT5nZXRSZXF1ZXN0VmFy
KCdpZCcpOyAkYWN0aW9uID0gKCEkYWN0aW9uKSA/ICR0aGlzLT5hY3Rpb24gOiAkYWN0aW9uOyAk
ZXh0cmFfZGF0YSA9IGZhbHNlOyBpZiAoJGFjdGlvbiA9PSAnYnVsaycpIHsgaWYgKGluX2FycmF5
KCR0aGlzLT5ycC0+dmFyc1snYnVsa19hY3Rpb24nXSwgYXJyYXkoJ2RlbGV0ZScsICd0cmFzaCcp
KSkgeyAkYWN0aW9uID0gJHRoaXMtPnJwLT52YXJzWydidWxrX2FjdGlvbiddOyAkZW50cnlfaWQg
PSAkdGhpcy0+cnAtPnZhcnNbJ2lkJ107IH0gZWxzZSB7ICRhY3Rpb24gPSAnYnVsa191cGRhdGUn
OyAkZXh0cmFfZGF0YSA9IGFycmF5KCAnYnVsa19hY3Rpb24nID0+ICR0aGlzLT5ycC0+dmFyc1sn
YnVsa19hY3Rpb24nXSwgJ2lkcycgPT4gJHRoaXMtPnJwLT52YXJzWydpZCddICk7IGlmICghZW1w
dHkoJHRoaXMtPnJwLT52YXJzWyd2YWx1ZSddWyRleHRyYV9kYXRhWydidWxrX2FjdGlvbiddIC4g
J19hY3Rpb24nXSkpIHsgJGV4dHJhX2RhdGFbJ2J1bGtfc3ViX2FjdGlvbiddID0gJHRoaXMtPnJw
LT52YXJzWyd2YWx1ZSddWyRleHRyYV9kYXRhWydidWxrX2FjdGlvbiddIC4gJ19hY3Rpb24nXTsg
fSB9IH0gaWYgKCRhY3Rpb24gIT0gJ3NraXAnKSB7IFVzZXJBY3Rpdml0eUxvZzo6YWRkQWN0aW9u
KCR0aGlzLT5tb2R1bGUsICR0aGlzLT5wYWdlLCAkYWN0aW9uLCAkZW50cnlfaWQsICRleHRyYV9k
YXRhKTsgfSAkcGFnZSA9ICR0aGlzLT5nZXRHb0xpbmsoJG1zZywgJHNhbWVfcGFnZSwgJGFmdGVy
X21zZyk7IGlmKCRzYW1lX3BhZ2UpIHsgaGVhZGVyKCJsb2NhdGlvbjogJHBhZ2UiKTsgZXhpdCgp
OyB9IGlmKCRtc2cgPT09ICdzdWNjZXNzJykgeyBpZihpbl9hcnJheSgkdGhpcy0+Z2V0UmVxdWVz
dFZhcignYWN0aW9uJyksIGFycmF5KCdpbnNlcnQnLCAnY2xvbmUnKSkpIHsgJG1zZyA9ICdhZGRl
ZCc7IH0gZWxzZWlmKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdhY3Rpb24nKSA9PSAndXBkYXRlJykg
eyAkbXNnID0gJ3VwZGF0ZWQnOyB9IGVsc2VpZihpbl9hcnJheSgkdGhpcy0+Z2V0UmVxdWVzdFZh
cignYWN0aW9uJyksIGFycmF5KCdkZWxldGUnLCAndHJhc2gnKSkpIHsgJG1zZyA9ICdkZWxldGVk
JzsgfSBlbHNlaWYoJHRoaXMtPmdldFJlcXVlc3RWYXIoJ2FjdGlvbicpID09ICdidWxrJykgeyAk
bXNnID0gJ2RhdGFfdXBkYXRlZCc7IH0gZWxzZSB7ICRtc2cgPSAnc3VjY2Vzcyc7IH0gfSBlbHNl
aWYoJG1zZyA9PT0gJ2NzcmYnKSB7ICRtc2cgPSAnY3NyZi1lcnJvcic7IH0gJF9TRVNTSU9OWydz
dWNjZXNzX21zZ18nXSA9ICRtc2c7IGhlYWRlcigibG9jYXRpb246ICRwYWdlIik7IGV4aXQoKTsg
fSBmdW5jdGlvbiBnZXRHb0xpbmsoJG1zZyA9ICdzdWNjZXNzJywgJHNhbWVfcGFnZSA9IGZhbHNl
LCAkYWZ0ZXJfbXNnID0gZmFsc2UpIHsgaW5pX3NldCgnYXJnX3NlcGFyYXRvci5vdXRwdXQnLCAn
JicpOyAkdGhpcy0+YXJnX3NlcGFyYXRvciA9ICcmJzsgJHRoaXMtPmZ1bGxfcGFnZSA9IHNlbGY6
Ol9yZXBsYWNlQXJnU2VwYXJhdG9yKCR0aGlzLT5mdWxsX3BhZ2UpOyBpZigkc2FtZV9wYWdlKSB7
ICRwYXJhbXMgPSBhcnJheSgkdGhpcy0+Z2V0UmVxdWVzdEtleSgnc2hvd19tc2cnKSA9PiAkbXNn
KTsgJHBhZ2UgPSAkdGhpcy0+ZnVsbF9wYWdlIC4gJHRoaXMtPmFyZ19zZXBhcmF0b3IgLiBodHRw
X2J1aWxkX3F1ZXJ5KCRwYXJhbXMpOyByZXR1cm4gJHBhZ2U7IH0gJHBhcmFtcyA9IGFycmF5KCk7
IGlmKCRhZnRlcl9tc2cpIHsgJHBhcmFtcyA9IGFycmF5KCR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdz
aG93X21zZycpID0+ICRhZnRlcl9tc2cpOyAkdGhpcy0+ZnVsbF9wYWdlID0gJHRoaXMtPmZ1bGxf
cGFnZSAuICR0aGlzLT5hcmdfc2VwYXJhdG9yIC4gaHR0cF9idWlsZF9xdWVyeSgkcGFyYW1zKTsg
fSAkcGFnZV90b19yZXR1cm4gPSAkdGhpcy0+ZnVsbF9wYWdlOyBpZigkdGhpcy0+Y3VzdG9tX3Bh
Z2VfdG9fcmV0dXJuKSB7ICRwYWdlX3RvX3JldHVybiA9IHNlbGY6Ol9yZXBsYWNlQXJnU2VwYXJh
dG9yKCR0aGlzLT5jdXN0b21fcGFnZV90b19yZXR1cm4pOyB9IHJldHVybiAkcGFnZV90b19yZXR1
cm47IH0gZnVuY3Rpb24gZ29VcmwoJHVybCkgeyAkdXJsID0gJHRoaXMtPl9yZXBsYWNlQXJnU2Vw
YXJhdG9yKCR1cmwpOyBoZWFkZXIoIkxvY2F0aW9uOiAiIC4gJHVybCk7IGV4aXQoKTsgfSBmdW5j
dGlvbiBnb1BhZ2UoJG1vZHVsZSA9IGZhbHNlLCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBm
YWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9yZSA9IGFycmF5KCkpIHsgJGxpbmsgPSAkdGhpcy0+
Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7ICRsaW5r
ID0gJHRoaXMtPl9yZXBsYWNlQXJnU2VwYXJhdG9yKCRsaW5rKTsgaGVhZGVyKCJsb2NhdGlvbjog
JGxpbmsiKTsgZXhpdCgpOyB9IGZ1bmN0aW9uIGdldEdvUGFnZUxpbmsoJG1vZHVsZSA9IGZhbHNl
LCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBmYWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9y
ZSA9IGFycmF5KCkpIHsgJGxpbmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1
Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7IHJldHVybiAkdGhpcy0+X3JlcGxhY2VBcmdTZXBhcmF0
b3IoJGxpbmspOyB9IGZ1bmN0aW9uIHNldFdvcmtpbmdEaXIoJGRpcnMgPSBhcnJheSgpKSB7ICRh
cltdID0gKGlzc2V0KCRkaXJzWydzdWJfcGFnZSddKSkgPyAkZGlyc1snc3ViX3BhZ2UnXSA6ICR0
aGlzLT5zdWJfcGFnZTsgJGFyW10gPSAoaXNzZXQoJGRpcnNbJ3BhZ2UnXSkpID8gJGRpcnNbJ3Bh
Z2UnXSA6ICR0aGlzLT5wYWdlOyAkYXJbXSA9IChpc3NldCgkZGlyc1snbW9kdWxlJ10pKSA/ICRk
aXJzWydtb2R1bGUnXSA6ICR0aGlzLT5tb2R1bGU7IGlmKCFmaWxlX2V4aXN0cygkdGhpcy0+bW9k
dWxlX2RpciAuICdjb25maWdfcGF0aC5waHAnKSkgeyByZXR1cm47IH0gcmVxdWlyZV9vbmNlICR0
aGlzLT5tb2R1bGVfZGlyIC4gJ2NvbmZpZ19wYXRoLnBocCc7IGZvcmVhY2goJGFyIGFzICRrID0+
ICR2KSB7IGlmKGlzc2V0KCRjb25mX21vZHVsZVskdl0pKXsgaWYoc3RycG9zKCRjb25mX21vZHVs
ZVskdl0sICd7JykgIT09IGZhbHNlKSB7ICRyID0gWyAne2V4dHJhX2Rpcn0nID0+ICR0aGlzLT5l
eHRyYV9tb2R1bGVfZGlyLCAne2FjY291bnRfZGlyfScgPT4gJHRoaXMtPmFjY291bnRfbW9kdWxl
X2RpciBdOyAkdGhpcy0+d29ya2luZ19kaXIgPSBzdHJ0cigkY29uZl9tb2R1bGVbJHZdLCAkcik7
IH0gZWxzZSB7ICR0aGlzLT53b3JraW5nX2RpciA9ICR0aGlzLT5tb2R1bGVfZGlyIC4gJGNvbmZf
bW9kdWxlWyR2XTsgfSBicmVhazsgfSB9IH0gZnVuY3Rpb24gZ2V0TGluaygkbW9kdWxlID0gZmFs
c2UsICRwYWdlID0gZmFsc2UsICRzdWJfcGFnZSA9IGZhbHNlLCAkYWN0aW9uID0gZmFsc2UsICRt
b3JlID0gYXJyYXkoKSkgeyBpZigkbW9kdWxlID09ICdhbGwnKSB7IHJldHVybiAkdGhpcy0+X2dl
dExpbmsoJHRoaXMtPmdldFJlcXVlc3RWYXIoJ21vZHVsZScpLCAkdGhpcy0+Z2V0UmVxdWVzdFZh
cigncGFnZScpLCAkdGhpcy0+Z2V0UmVxdWVzdFZhcignc3ViX3BhZ2UnKSwgJHRoaXMtPmdldFJl
cXVlc3RWYXIoJ2FjdGlvbicpLCAkbW9yZSApOyB9IGVsc2VpZigkbW9kdWxlID09ICdtYWluJykg
eyByZXR1cm4gJHRoaXMtPl9nZXRMaW5rKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1bGUnKSwg
JHRoaXMtPmdldFJlcXVlc3RWYXIoJ3BhZ2UnKSwgJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3N1Yl9w
YWdlJykgKTsgfSBlbHNlaWYoJG1vZHVsZSA9PSAnZnVsbCcpIHsgJG1vcmUgPSAkdGhpcy0+Z2V0
RnVsbFBhZ2VQYXJhbXMoKSArICRtb3JlOyB1bnNldCgkbW9yZVsnbW9kdWxlJ10sICRtb3JlWydw
YWdlJ10sICRtb3JlWydzdWJfcGFnZSddLCAkbW9yZVsnYWN0aW9uJ10pOyByZXR1cm4gJHRoaXMt
Pl9nZXRMaW5rKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1bGUnKSwgJHRoaXMtPmdldFJlcXVl
c3RWYXIoJ3BhZ2UnKSwgJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3N1Yl9wYWdlJyksICR0aGlzLT5n
ZXRSZXF1ZXN0VmFyKCdhY3Rpb24nKSwgJG1vcmUgKTsgfSBlbHNlIHsgJG1vZHVsZSA9ICgkbW9k
dWxlID09ICd0aGlzJykgPyAkdGhpcy0+Z2V0UmVxdWVzdFZhcignbW9kdWxlJykgOiAkbW9kdWxl
OyAkcGFnZSA9ICgkcGFnZSA9PSAndGhpcycpID8gJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3BhZ2Un
KSA6ICRwYWdlOyAkc3ViX3BhZ2UgPSAoJHN1Yl9wYWdlID09ICd0aGlzJykgPyAkdGhpcy0+Z2V0
UmVxdWVzdFZhcignc3ViX3BhZ2UnKSA6ICRzdWJfcGFnZTsgJGFjdGlvbiA9ICgkYWN0aW9uID09
ICd0aGlzJykgPyAkdGhpcy0+Z2V0UmVxdWVzdFZhcignYWN0aW9uJykgOiAkYWN0aW9uOyByZXR1
cm4gJHRoaXMtPl9nZXRMaW5rKCRtb2R1bGUsICRwYWdlLCAkc3ViX3BhZ2UsICRhY3Rpb24sICRt
b3JlKTsgfSB9IGZ1bmN0aW9uIF9nZXRBY3Rpb25MaW5rKCRhY3Rpb25fdmFsdWUsICRyZWNvcmRf
aWQgPSBmYWxzZSwgJG1vcmVfcGFyYW1zID0gYXJyYXkoKSkgeyAkYXJnID0gJHRoaXMtPmFyZ19z
ZXBhcmF0b3I7ICRjb21tb25fbGluayA9ICR0aGlzLT5nZXRDb21tb25MaW5rKCk7ICRhY3Rpb25f
a2V5ID0gJHRoaXMtPmdldFJlcXVlc3RLZXkoJ2FjdGlvbicpOyAkaWRfcGFyYW0gPSAoJHJlY29y
ZF9pZCkgPyBzcHJpbnRmKCIlcyVzPSVkIiwgJGFyZywgJHRoaXMtPmlkX2tleSwgJHJlY29yZF9p
ZCkgOiAnJzsgJGFjdGlvbl92YWwgPSAkdGhpcy0+Z2V0QWN0aW9uVmFsdWUoJGFjdGlvbl92YWx1
ZSk7ICRhY3Rpb25fdmFsdWUgPSAoJGFjdGlvbl92YWwpID8gJGFjdGlvbl92YWwgOiAkYWN0aW9u
X3ZhbHVlOyAkbW9yZV9wYXJhbXMgPSAoJG1vcmVfcGFyYW1zKSA/ICRhcmcgLiBodHRwX2J1aWxk
X3F1ZXJ5KCRtb3JlX3BhcmFtcykgOiAnJzsgJHN0ciA9ICclcyVzJXM9JXMlcyVzJzsgJHN0ciA9
IHNwcmludGYoJHN0ciwgJGNvbW1vbl9saW5rLCAkYXJnLCAkYWN0aW9uX2tleSwgJGFjdGlvbl92
YWx1ZSwgJGlkX3BhcmFtLCAkbW9yZV9wYXJhbXMpOyByZXR1cm4gJHN0cjsgfSBmdW5jdGlvbiBn
ZXRBY3Rpb25MaW5rKCRhY3Rpb25fdmFsLCAkcmVjb3JkX2lkID0gZmFsc2UsICRtb3JlX3BhcmFt
cyA9IGFycmF5KCkpIHsgcmV0dXJuICR0aGlzLT5fZ2V0QWN0aW9uTGluaygkYWN0aW9uX3ZhbCwg
JHJlY29yZF9pZCwgJG1vcmVfcGFyYW1zKTsgfSBwcml2YXRlIGZ1bmN0aW9uIF9nZXRMaW5rKCRt
b2R1bGUgPSBmYWxzZSwgJHBhZ2UgPSBmYWxzZSwgJHN1Yl9wYWdlID0gZmFsc2UsICRhY3Rpb24g
PSBmYWxzZSwgJG1vcmUgPSBhcnJheSgpKSB7IGlmKCRtb2R1bGUpIHsgJGxpbmtbMV0gPSBzcHJp
bnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdtb2R1bGUnKSwgJG1vZHVsZSk7IH0g
aWYoJHBhZ2UpIHsgJGxpbmtbMl0gPSBzcHJpbnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0
S2V5KCdwYWdlJyksICRwYWdlKTsgfSBpZigkc3ViX3BhZ2UpIHsgJGxpbmtbM10gPSBzcHJpbnRm
KCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdzdWJfcGFnZScpLCAkc3ViX3BhZ2UpOyB9
IGlmKCRhY3Rpb24pIHsgJGxpbmtbNF0gPSBzcHJpbnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1
ZXN0S2V5KCdhY3Rpb24nKSwgJGFjdGlvbik7IH0gJGxpbmsgPSAoZW1wdHkoJGxpbmspKSA/ICR0
aGlzLT5zZWxmX3BhZ2UgOiAkdGhpcy0+c2VsZl9wYWdlIC4gJz8nIC4gaW1wbG9kZSgkdGhpcy0+
YXJnX3NlcGFyYXRvciwgJGxpbmspOyAkbGluayAuPSAoJG1vcmUpID8gJHRoaXMtPmFyZ19zZXBh
cmF0b3IgLiBodHRwX2J1aWxkX3F1ZXJ5KCRtb3JlKSA6ICcnOyByZXR1cm4gJGxpbms7IH0gZnVu
Y3Rpb24gZ2V0U2hvcnRMaW5rKCRtb2R1bGUgPSBmYWxzZSwgJHBhZ2UgPSBmYWxzZSwgJHN1Yl9w
YWdlID0gZmFsc2UsICRhY3Rpb24gPSBmYWxzZSwgJG1vcmUgPSBhcnJheSgpKSB7ICR0aGlzLT5z
ZWxmX3BhZ2UgPSAnJzsgJGxpbmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1
Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7ICRsaW5rID0gc3RyX3JlcGxhY2UoJz8nLCAnJywgJGxp
bmspOyByZXR1cm4gJGxpbms7IH0gZnVuY3Rpb24gZ2V0RnVsbExpbmsoJG1vZHVsZSA9IGZhbHNl
LCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBmYWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9y
ZSA9IGFycmF5KCkpIHsgJHNlbGZfcGFnZSA9ICR0aGlzLT5zZWxmX3BhZ2U7ICR0aGlzLT5zZWxm
X3BhZ2UgPSBBUFBfQURNSU5fUEFUSCAuICdpbmRleC5waHAnOyAkbGluayA9ICR0aGlzLT5nZXRM
aW5rKCRtb2R1bGUsICRwYWdlLCAkc3ViX3BhZ2UsICRhY3Rpb24sICRtb3JlKTsgJHRoaXMtPnNl
bGZfcGFnZSA9ICRzZWxmX3BhZ2U7IHJldHVybiAkbGluazsgfSBmdW5jdGlvbiBnZXRBamF4TGlu
aygkbW9kdWxlID0gZmFsc2UsICRwYWdlID0gZmFsc2UsICRzdWJfcGFnZSA9IGZhbHNlLCAkYWN0
aW9uID0gZmFsc2UsICRtb3JlID0gYXJyYXkoKSkgeyAkbW9yZSA9IFJlcXVlc3REYXRhVXRpbDo6
YWRkc2xhc2hlcygkbW9yZSk7IGlmKGVtcHR5KCRtb3JlKSAmJiBpc3NldCgkX0dFVFsnaWQnXSkp
IHsgJG1vcmUgPSBhcnJheSgnaWQnID0+IChpbnQpICRfR0VUWydpZCddKTsgfSBmb3JlYWNoKCR0
aGlzLT5tb3JlX3BhcmFtc19hamF4IGFzICR2KXsgaWYoaXNzZXQoJF9HRVRbJHZdKSkgeyAkbW9y
ZVskdl0gPSBhZGRzbGFzaGVzKCRfR0VUWyR2XSk7IH0gfSAkbW9yZVsnYWpheCddID0gMTsgJGxp
bmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1Yl9wYWdlLCAkYWN0aW9uLCAk
bW9yZSk7ICRsaW5rID0gJHRoaXMtPl9yZXBsYWNlQXJnU2VwYXJhdG9yKCRsaW5rKTsgcmV0dXJu
ICRsaW5rOyB9IHN0YXRpYyBmdW5jdGlvbiBnZXRSZWZMaW5rKCRtb2R1bGUgPSBmYWxzZSwgJHBh
Z2UgPSBmYWxzZSwgJHN1Yl9wYWdlID0gZmFsc2UsICRhY3Rpb24gPSBmYWxzZSwgJG1vcmUgPSBh
cnJheSgpLCAkcmVwbGFjZV9hcmcgPSB0cnVlKSB7ICRwID0gQVBQX0FETUlOX1BBVEggLiAnaW5k
ZXgucGhwJzsgaWYoJG1vZHVsZSkgeyAkYyA9IG5ldyBBcHBDb250cm9sbGVyKCk7ICRtb3JlWydy
J10gPSAxOyAkbGluayA9ICRjLT5nZXRTaG9ydExpbmsoJG1vZHVsZSwgJHBhZ2UsICRzdWJfcGFn
ZSwgJGFjdGlvbiwgJG1vcmUpOyBpZigkcmVwbGFjZV9hcmcpIHsgJGxpbmsgPSAkYy0+X3JlcGxh
Y2VBcmdTZXBhcmF0b3IoJGxpbmspOyB9ICRwID0gJHAgLiAnPycgLiAkbGluazsgfSByZXR1cm4g
JHA7IH0gZnVuY3Rpb24gZ2V0Q2xpZW50TGluaygkY2xpZW50X2xpbmssICRzZXJpYWxpemUgPSBm
YWxzZSkgeyAkY2MgPSAmJHRoaXMtPmdldENsaWVudENvbnRyb2xsZXIoKTsgQCRsaW5rID0gJGNj
LT5nZXRSZWRpcmVjdExpbmsoJGNsaWVudF9saW5rWzBdLCAkY2xpZW50X2xpbmtbMV0sICRjbGll
bnRfbGlua1syXSwgJGNsaWVudF9saW5rWzNdLCAkY2xpZW50X2xpbmtbNF0pOyBpZigkc2VyaWFs
aXplKSB7ICRsaW5rID0gV2ViVXRpbDo6c2VyaWFsaXplX3VybCgkbGluayk7IH0gcmV0dXJuICRs
aW5rOyB9IGZ1bmN0aW9uIGdldFB1YmxpY0xpbmsoJHZpZXcsICRkYXRhLCAkbW9yZSA9IFtdKSB7
IHN0YXRpYyAkY2M7IGlmKCRjYyA9PT0gbnVsbCkgeyAkc2V0dGluZ3MgPSBTZXR0aW5nTW9kZWw6
OmdldFF1aWNrKDIpOyAkY2MgPSAkdGhpcy0+Z2V0Q2xpZW50Q29udHJvbGxlcigkc2V0dGluZ3Mp
OyAkY2MtPnNldE1vZFJld3JpdGUoJHNldHRpbmdzWydtb2RfcmV3cml0ZSddKTsgfSAkZW50cnlf
aWQgPSAkZGF0YVsnaWQnXTsgaWYoJHZpZXcgIT0gJ2ZpbGUnKSB7ICRlbnRyeV9pZCA9ICRjYy0+
Z2V0RW50cnlMaW5rUGFyYW1zKCRkYXRhWydpZCddLCAkZGF0YVsndGl0bGUnXSk7IH0gJGxpbmsg
PSAkY2MtPmdldExpbmsoJHZpZXcsIGZhbHNlLCAkZW50cnlfaWQsIGZhbHNlLCAkbW9yZSwgdHJ1
ZSk7IHJldHVybiAkbGluazsgfSBzdGF0aWMgZnVuY3Rpb24gZ2V0QWpheExpbmtUb0ZpbGUoJHR5
cGUsICRtb3JlID0gYXJyYXkoKSkgeyAkcmVnID0gJlJlZ2lzdHJ5OjppbnN0YW5jZSgpOyAkY29u
ZiA9ICYkcmVnLT5nZXRFbnRyeSgnY29uZicpOyAkY2xpZW50X3BhdGggPSBBUFBfQ0xJRU5UX1BB
VEg7IGlmKCRjb25mWydzc2xfYWRtaW4nXSkgeyAkY2xpZW50X3BhdGggPSBzdHJfcmVwbGFjZSgn
aHR0cDovLycsICdodHRwczovLycsIEFQUF9DTElFTlRfUEFUSCk7IH0gJG1vcmUgPSBSZXF1ZXN0
RGF0YVV0aWw6OmFkZHNsYXNoZXMoJG1vcmUpOyAkbGluayA9ICRjbGllbnRfcGF0aCAuICdlbmRw
b2ludC5waHAnOyAkbGluayAuPSAoJHR5cGUpID8gJz90eXBlPScgLiAkdHlwZSA6ICcnOyAkbGlu
ayAuPSAoJG1vcmUpID8gJyYnIC4gaHR0cF9idWlsZF9xdWVyeSgkbW9yZSkgOiAnJzsgJGxpbmsg
PSBBcHBDb250cm9sbGVyOjpfcmVwbGFjZUFyZ1NlcGFyYXRvcigkbGluayk7IHJldHVybiAkbGlu
azsgfSBzdGF0aWMgZnVuY3Rpb24gaXNBamF4Q2FsbCgpIHsgcmV0dXJuICghZW1wdHkoJF9HRVRb
J2FqYXgnXSkpOyB9IHN0YXRpYyBmdW5jdGlvbiBfcmVwbGFjZUFyZ1NlcGFyYXRvcigkc3RyKSB7
IHJldHVybiBzdHJfcmVwbGFjZSgnJmFtcDsnLCAnJicsICRzdHIpOyB9IHN0YXRpYyBmdW5jdGlv
biAmZ2V0Q2xpZW50Q29udHJvbGxlcigkc2V0dGluZ3MgPSBbXSkgeyAkY29udHJvbGxlciA9IG5l
dyBLQkNsaWVudENvbnRyb2xsZXIoKTsgJGNvbnRyb2xsZXItPmtiX3BhdGggPSBBUFBfQ0xJRU5U
X1BBVEg7ICRjb250cm9sbGVyLT5saW5rX3BhdGggPSBBUFBfQ0xJRU5UX1BBVEg7IGlmKCRzZXR0
aW5ncykgeyAkY29udHJvbGxlci0+c2V0RGlyVmFycygkc2V0dGluZ3MpOyB9IHJldHVybiAkY29u
dHJvbGxlcjsgfSBmdW5jdGlvbiBnb1ZpZXcoJiRvYmosICYkbWFuYWdlciwgJGNsYXNzLCAkdmFs
dWVzID0gYXJyYXkoKSkgeyAkdmlldyA9IG5ldyAkY2xhc3M7ICR2aWV3LT5leGVjdXRlKCRvYmos
ICRtYW5hZ2VyLCAkdmFsdWVzKTsgfSBmdW5jdGlvbiBnZXRWaWV3KCYkb2JqLCAmJG1hbmFnZXIs
ICRjbGFzcywgJHZhbHVlcyA9IGFycmF5KCkpIHsgJHZpZXcgPSBuZXcgJGNsYXNzOyByZXR1cm4g
JHZpZXctPmV4ZWN1dGUoJG9iaiwgJG1hbmFnZXIsICR2YWx1ZXMpOyB9IGZ1bmN0aW9uIGlzQ2xh
c3MoJGNsYXNzX25hbWUsICRwYXRoID0gZmFsc2UpIHsgJGNsYXNzX25hbWUgPSAkY2xhc3NfbmFt
ZSAuICcucGhwJzsgaWYoJHBhdGgpIHsgJHBbXSA9ICR0aGlzLT5tb2R1bGVfZGlyIC4gJHBhdGgg
LiAnL2luYy8nOyAkcFtdID0gJHRoaXMtPmV4dHJhX21vZHVsZV9kaXIgLiAkcGF0aCAuICcvaW5j
Lyc7IGZvcmVhY2goJHAgYXMgJHYpIHsgaWYoZmlsZV9leGlzdHMoJHYgLiAkY2xhc3NfbmFtZSkp
IHsgcmV0dXJuIHRydWU7IH0gfSB9IGVsc2UgeyBpZihmaWxlX2V4aXN0cygkdGhpcy0+d29ya2lu
Z19kaXIgLiAnaW5jLycgLiAkY2xhc3NfbmFtZSkpIHsgcmV0dXJuIHRydWU7IH0gfSByZXR1cm4g
ZmFsc2U7IH0gfSAK ?>
Did this file decode correctly?
Original Code
CiBjbGFzcyBBcHBDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7IHZhciAkYWN0aW9uID0g
ZmFsc2U7IHZhciAkcGFnZV90b19yZXR1cm47IHZhciAkcXVlcnkgPSBhcnJheSggJ21vZHVsZScg
PT4nbW9kdWxlJywgJ3BhZ2UnID0+J3BhZ2UnLCAnc3ViX3BhZ2UnID0+J3N1Yl9wYWdlJywgJ2Fj
dGlvbicgPT4nYWN0aW9uJywgJ2lkJyA9PidpZCcsICdzaG93X21zZycgPT4nc2hvd19tc2cnICk7
IHZhciAkYWN0aW9ucyA9IGFycmF5KCAnaW5zZXJ0Jz0+J2luc2VydCcsICd1cGRhdGUnPT4ndXBk
YXRlJywgJ2RlbGV0ZSc9PidkZWxldGUnLCAnc3RhdHVzJz0+J3N0YXR1cycsICdkZXRhaWwnPT4n
ZGV0YWlsJyApOyB2YXIgJGlkX2tleSA9ICdpZCc7IHZhciAkc2VsZl9wYWdlOyB2YXIgJGJhc2Vf
aHJlZjsgdmFyICRtb2R1bGU7IHZhciAkcGFnZTsgdmFyICRzdWJfcGFnZTsgdmFyICRwYXJhbXMg
PSBhcnJheSgnbW9kdWxlJywgJ3BhZ2UnLCAnc3ViX3BhZ2UnKTsgdmFyICRtb3JlX3BhcmFtcyA9
IGFycmF5KCAnYnByJywgJ3NvcnQnLCAnb3JkZXInLCAnbGV0dGVyJywgJ2ZpbHRlcicsICdwb3B1
cCcsICdmcmFtZScsICdmaWVsZF9uYW1lJywgJ2ZpZWxkX2lkJywgJ3JlZmVyZXInLCAnYnAnLCAn
YnB0JywgJ25vX2F0dGFjaCcsICdjbG9zZScsICd2YXJzJyApOyB2YXIgJG1vcmVfcGFyYW1zX2Fq
YXggPSBhcnJheSgpOyB2YXIgJGN1c3RvbV9yZXR1cm5fcGFyYW1zID0gYXJyYXkoKTsgdmFyICRj
dXN0b21fcGFnZV90b19yZXR1cm47IHZhciAkZGVsYXlfdGltZSA9ICcxMDAwJzsgdmFyICRsYW5n
ID0gQVBQX0xBTkc7IHZhciAkbW9kdWxlX2RpciA9IEFQUF9NT0RVTEVfRElSOyB2YXIgJGV4dHJh
X21vZHVsZV9kaXIgPSBBUFBfRVhUUkFfTU9EVUxFX0RJUjsgdmFyICRhY2NvdW50X21vZHVsZV9k
aXIgPSBBUFBfQUNDT1VOVF9NT0RVTEVfRElSOyB2YXIgJGV4dHJhX21vZHVsZXMgPSBhcnJheSgp
OyB2YXIgJHdvcmtpbmdfZGlyOyB2YXIgJGZ1bGxfcGFnZTsgdmFyICRmdWxsX3BhZ2VfcGFyYW1z
OyB2YXIgJGFyZ19zZXBhcmF0b3IgPSAnJmFtcDsnOyB2YXIgJG1zZyA9IGFycmF5KCk7IHZhciAk
ZW5jb2Rpbmc7IGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgeyBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7
ICRyZWcgPSAmUmVnaXN0cnk6Omluc3RhbmNlKCk7ICRjb25mID0gJiRyZWctPmdldEVudHJ5KCdj
b25mJyk7ICR0aGlzLT5lbmNvZGluZyA9ICRjb25mWydsYW5nJ11bJ21ldGFfY2hhcnNldCddOyAk
dGhpcy0+YmFzZV9ocmVmID0gJGNvbmZbJ2NsaWVudF9wYXRoJ107ICR0aGlzLT5zZWxmX3BhZ2Ug
PSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsgJHRoaXMtPmFjdGlvbiA9ICR0aGlzLT5nZXRSZXF1ZXN0
VmFyKCdhY3Rpb24nKTsgJHRoaXMtPm1vZHVsZSA9ICR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1
bGUnKTsgJHRoaXMtPnBhZ2UgPSAkdGhpcy0+Z2V0UmVxdWVzdFZhcigncGFnZScpOyAkdGhpcy0+
c3ViX3BhZ2UgPSAkdGhpcy0+Z2V0UmVxdWVzdFZhcignc3ViX3BhZ2UnKTsgJHRoaXMtPndvcmtp
bmdfZGlyID0gJHRoaXMtPm1vZHVsZV9kaXIgLiAkdGhpcy0+bW9kdWxlIC4gJy8nOyAkdGhpcy0+
c2V0Q29tbW9uTGluaygpOyB9IGZ1bmN0aW9uIGFkZE1zZygkZmlsZV9uYW1lLCAkbW9kdWxlID0g
ZmFsc2UpIHsgaWYoJG1vZHVsZSkgeyAkZmlsZV9uYW1lID0gQXBwTXNnOjpnZXRNb2R1bGVNc2dG
aWxlKCRtb2R1bGUsICRmaWxlX25hbWUpOyB9IGVsc2UgeyAkZmlsZV9uYW1lID0gQXBwTXNnOjpn
ZXRDb21tb25Nc2dGaWxlKCRmaWxlX25hbWUpOyB9ICR0aGlzLT5tc2cgPSBhcnJheV9tZXJnZSgk
dGhpcy0+bXNnLCBBcHBNc2c6OnBhcnNlTXNncygkZmlsZV9uYW1lKSk7IH0gZnVuY3Rpb24gZ2V0
UmVxdWVzdFZhcigkdmFyKSB7IHJldHVybiAoaXNzZXQoJF9HRVRbJHRoaXMtPnF1ZXJ5WyR2YXJd
XSkpID8gdXJsZW5jb2RlKHVybGRlY29kZSgkX0dFVFskdGhpcy0+cXVlcnlbJHZhcl1dKSkgOiBO
VUxMOyB9IGZ1bmN0aW9uIGdldFJlcXVlc3RLZXkoJGtleSkgeyByZXR1cm4gQCR0aGlzLT5xdWVy
eVska2V5XTsgfSBmdW5jdGlvbiBzZXRSZXF1ZXN0VmFyKCR2YXIsICR2YWx1ZSkgeyAkX0dFVFsk
dGhpcy0+cXVlcnlbJHZhcl1dID0gJHZhbHVlOyB9IGZ1bmN0aW9uIGdldEN1cnJlbnRMaW5rKCkg
eyAkcXVlcnkgPSBodHRwX2J1aWxkX3F1ZXJ5KCRfR0VUKTsgcmV0dXJuICgkcXVlcnkpID8gJF9T
RVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiAkcXVlcnkgOiAkX1NFUlZFUlsnUEhQX1NFTEYnXTsg
fSBmdW5jdGlvbiBnZXRDb21tb25MaW5rKCkgeyByZXR1cm4gJHRoaXMtPmZ1bGxfcGFnZTsgfSBm
dW5jdGlvbiBzZXRDb21tb25MaW5rKCkgeyAkdGhpcy0+ZnVsbF9wYWdlID0gJHRoaXMtPmdldEZ1
bGxQYWdlVXJsKCk7ICR0aGlzLT5mdWxsX3BhZ2VfcGFyYW1zID0gJHRoaXMtPmdldEZ1bGxQYWdl
UGFyYW1zKCk7IH0gZnVuY3Rpb24gZ2V0QWN0aW9uKCkgeyByZXR1cm4gJHRoaXMtPmFjdGlvbjsg
fSBmdW5jdGlvbiBzZXRDdXN0b21BY3Rpb24oJGFjdGlvbiwgJHZhbHVlKSB7ICR0aGlzLT5hY3Rp
b25zWyRhY3Rpb25dID0gJHZhbHVlOyB9IGZ1bmN0aW9uIGdldEFjdGlvblZhbHVlKCRhY3Rpb25f
a2V5KSB7IHJldHVybiBAJHRoaXMtPmFjdGlvbnNbJGFjdGlvbl9rZXldOyB9IGZ1bmN0aW9uIGdl
dEZ1bGxQYWdlVXJsKCkgeyByZXR1cm4gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiBodHRw
X2J1aWxkX3F1ZXJ5KGFycmF5X21lcmdlKCR0aGlzLT5nZXRQYXJhbXMoKSwgJHRoaXMtPmdldE1v
cmVQYXJhbXMoKSkpOyB9IGZ1bmN0aW9uIGdldEZ1bGxQYWdlUGFyYW1zKCkgeyByZXR1cm4gYXJy
YXlfbWVyZ2UoJHRoaXMtPmdldFBhcmFtcygpLCAkdGhpcy0+Z2V0TW9yZVBhcmFtcygpKTsgfSBm
dW5jdGlvbiAmX2dldFBhcmFtcygkcGFyYW1zKSB7ICRwYXJhbXNfID0gYXJyYXkoKTsgZm9yZWFj
aCgkcGFyYW1zIGFzICR2KSB7IGlmKGlzc2V0KCRfR0VUWyR2XSkpIHsgJHBhcmFtc19bJHZdID0g
JF9HRVRbJHZdOyB9IH0gcmV0dXJuICRwYXJhbXNfOyB9IGZ1bmN0aW9uICZnZXRQYXJhbXMoKSB7
IHJldHVybiAkdGhpcy0+X2dldFBhcmFtcygkdGhpcy0+cGFyYW1zKTsgfSBmdW5jdGlvbiBnZXRN
b3JlUGFyYW1zKCkgeyByZXR1cm4gJHRoaXMtPl9nZXRQYXJhbXMoJHRoaXMtPm1vcmVfcGFyYW1z
KTsgfSBmdW5jdGlvbiBzZXRNb3JlUGFyYW1zKCR2YWwsICRyZWJ1aWx0X3BhcmFtcyA9IHRydWUp
IHsgJHZhbCA9IChpc19hcnJheSgkdmFsKSkgPyAkdmFsIDogYXJyYXkoJHZhbCk7IGZvcmVhY2go
JHZhbCBhcyAkdikgeyAkdGhpcy0+bW9yZV9wYXJhbXNbXSA9ICR2OyB9IGlmKCRyZWJ1aWx0X3Bh
cmFtcykgeyAkdGhpcy0+c2V0Q29tbW9uTGluaygpOyB9IH0gZnVuY3Rpb24gcmVtb3ZlTW9yZVBh
cmFtcygkdmFsLCAkcmVidWlsdF9wYXJhbXMgPSB0cnVlKSB7ICR2YWwgPSAoaXNfYXJyYXkoJHZh
bCkpID8gJHZhbCA6IGFycmF5KCR2YWwpOyBmb3JlYWNoKCR2YWwgYXMgJHYpIHsgJGtleSA9IGFy
cmF5X3NlYXJjaCgkdiwgJHRoaXMtPm1vcmVfcGFyYW1zKTsgaWYoJGtleSkgeyB1bnNldCgkdGhp
cy0+bW9yZV9wYXJhbXNbJGtleV0pOyB9IH0gaWYoJHJlYnVpbHRfcGFyYW1zKSB7ICR0aGlzLT5z
ZXRDb21tb25MaW5rKCk7IH0gfSBmdW5jdGlvbiBzZXRNb3JlUGFyYW1zQWpheCgkdmFsKSB7ICR2
YWwgPSAoaXNfYXJyYXkoJHZhbCkpID8gJHZhbCA6IGFycmF5KCR2YWwpOyBmb3JlYWNoKCR2YWwg
YXMgJHYpIHsgJHRoaXMtPm1vcmVfcGFyYW1zX2FqYXhbXSA9ICR2OyB9IH0gZnVuY3Rpb24gZ2V0
TW9yZVBhcmFtKCRwYXJhbSkgeyAkcmV0ID0gZmFsc2U7IGlmKGlzX2FycmF5KCRwYXJhbSkpIHsg
JHJldCA9ICghZW1wdHkoJF9HRVRbJHBhcmFtWzBdXVskcGFyYW1bMV1dKSkgPyAkX0dFVFskcGFy
YW1bMF1dWyRwYXJhbVsxXV0gOiBmYWxzZTsgfSBlbHNlIHsgJHJldCA9ICghZW1wdHkoJF9HRVRb
JHBhcmFtXSkpID8gJF9HRVRbJHBhcmFtXSA6IGZhbHNlOyB9IGlmKCRyZXQpIHsgJHJldCA9IChp
c19hcnJheSgkcmV0KSkgPyBhcnJheV9tYXAoJ3VybGVuY29kZScsICRyZXQpIDogdXJsZW5jb2Rl
KCRyZXQpOyB9IHJldHVybiAkcmV0OyB9IGZ1bmN0aW9uIHNldEN1c3RvbVBhZ2VUb1JldHVybigk
cGFnZSwgJHVuc2VyaWFsaXplID0gdHJ1ZSkgeyBAJGxpbmsgPSBXZWJVdGlsOjp1bnNlcmlhbGl6
ZV91cmwoJHBhZ2UpOyAkdGhpcy0+Y3VzdG9tX3BhZ2VfdG9fcmV0dXJuID0gKCRsaW5rID09PSBm
YWxzZSkgPyAkcGFnZSA6ICRsaW5rOyB9IGZ1bmN0aW9uIHNldERlbGF5VGltZSgkbXVsdGlwbGll
cikgeyAkdGhpcy0+ZGVsYXlfdGltZSA9ICR0aGlzLT5kZWxheV90aW1lKiRtdWx0aXBsaWVyOyB9
IGZ1bmN0aW9uIGdldFJlZmVyZXJMaW5rKCRyZWZlcmVyLCAkY2xpZW50X2xpbmsgPSBhcnJheSgp
KSB7ICRsaW5rID0gJyc7IGlmKHN0cnBvcygkcmVmZXJlciwgJ2NsaWVudCcpICE9PSBmYWxzZSkg
eyAkbGluayA9ICR0aGlzLT5nZXRDbGllbnRMaW5rKCRjbGllbnRfbGluayk7IH0gZWxzZWlmKHN0
cnBvcygkcmVmZXJlciwgJ2Vtb2RlJykgIT09IGZhbHNlKSB7ICRsaW5rID0gJHRoaXMtPmdldENs
aWVudExpbmsoJGNsaWVudF9saW5rKTsgfSBlbHNlaWYoJHJlZmVyZXIpIHsgJGxpbmsgPSBXZWJV
dGlsOjp1bnNlcmlhbGl6ZV91cmwoJHJlZmVyZXIpOyB9IHJldHVybiAkbGluazsgfSBmdW5jdGlv
biBnbygkbXNnID0gJ3N1Y2Nlc3MnLCAkc2FtZV9wYWdlID0gZmFsc2UsICRhZnRlcl9tc2cgPSBm
YWxzZSwgJGFjdGlvbiA9IGZhbHNlKSB7ICRlbnRyeV9pZCA9ICR0aGlzLT5nZXRSZXF1ZXN0VmFy
KCdpZCcpOyAkYWN0aW9uID0gKCEkYWN0aW9uKSA/ICR0aGlzLT5hY3Rpb24gOiAkYWN0aW9uOyAk
ZXh0cmFfZGF0YSA9IGZhbHNlOyBpZiAoJGFjdGlvbiA9PSAnYnVsaycpIHsgaWYgKGluX2FycmF5
KCR0aGlzLT5ycC0+dmFyc1snYnVsa19hY3Rpb24nXSwgYXJyYXkoJ2RlbGV0ZScsICd0cmFzaCcp
KSkgeyAkYWN0aW9uID0gJHRoaXMtPnJwLT52YXJzWydidWxrX2FjdGlvbiddOyAkZW50cnlfaWQg
PSAkdGhpcy0+cnAtPnZhcnNbJ2lkJ107IH0gZWxzZSB7ICRhY3Rpb24gPSAnYnVsa191cGRhdGUn
OyAkZXh0cmFfZGF0YSA9IGFycmF5KCAnYnVsa19hY3Rpb24nID0+ICR0aGlzLT5ycC0+dmFyc1sn
YnVsa19hY3Rpb24nXSwgJ2lkcycgPT4gJHRoaXMtPnJwLT52YXJzWydpZCddICk7IGlmICghZW1w
dHkoJHRoaXMtPnJwLT52YXJzWyd2YWx1ZSddWyRleHRyYV9kYXRhWydidWxrX2FjdGlvbiddIC4g
J19hY3Rpb24nXSkpIHsgJGV4dHJhX2RhdGFbJ2J1bGtfc3ViX2FjdGlvbiddID0gJHRoaXMtPnJw
LT52YXJzWyd2YWx1ZSddWyRleHRyYV9kYXRhWydidWxrX2FjdGlvbiddIC4gJ19hY3Rpb24nXTsg
fSB9IH0gaWYgKCRhY3Rpb24gIT0gJ3NraXAnKSB7IFVzZXJBY3Rpdml0eUxvZzo6YWRkQWN0aW9u
KCR0aGlzLT5tb2R1bGUsICR0aGlzLT5wYWdlLCAkYWN0aW9uLCAkZW50cnlfaWQsICRleHRyYV9k
YXRhKTsgfSAkcGFnZSA9ICR0aGlzLT5nZXRHb0xpbmsoJG1zZywgJHNhbWVfcGFnZSwgJGFmdGVy
X21zZyk7IGlmKCRzYW1lX3BhZ2UpIHsgaGVhZGVyKCJsb2NhdGlvbjogJHBhZ2UiKTsgZXhpdCgp
OyB9IGlmKCRtc2cgPT09ICdzdWNjZXNzJykgeyBpZihpbl9hcnJheSgkdGhpcy0+Z2V0UmVxdWVz
dFZhcignYWN0aW9uJyksIGFycmF5KCdpbnNlcnQnLCAnY2xvbmUnKSkpIHsgJG1zZyA9ICdhZGRl
ZCc7IH0gZWxzZWlmKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdhY3Rpb24nKSA9PSAndXBkYXRlJykg
eyAkbXNnID0gJ3VwZGF0ZWQnOyB9IGVsc2VpZihpbl9hcnJheSgkdGhpcy0+Z2V0UmVxdWVzdFZh
cignYWN0aW9uJyksIGFycmF5KCdkZWxldGUnLCAndHJhc2gnKSkpIHsgJG1zZyA9ICdkZWxldGVk
JzsgfSBlbHNlaWYoJHRoaXMtPmdldFJlcXVlc3RWYXIoJ2FjdGlvbicpID09ICdidWxrJykgeyAk
bXNnID0gJ2RhdGFfdXBkYXRlZCc7IH0gZWxzZSB7ICRtc2cgPSAnc3VjY2Vzcyc7IH0gfSBlbHNl
aWYoJG1zZyA9PT0gJ2NzcmYnKSB7ICRtc2cgPSAnY3NyZi1lcnJvcic7IH0gJF9TRVNTSU9OWydz
dWNjZXNzX21zZ18nXSA9ICRtc2c7IGhlYWRlcigibG9jYXRpb246ICRwYWdlIik7IGV4aXQoKTsg
fSBmdW5jdGlvbiBnZXRHb0xpbmsoJG1zZyA9ICdzdWNjZXNzJywgJHNhbWVfcGFnZSA9IGZhbHNl
LCAkYWZ0ZXJfbXNnID0gZmFsc2UpIHsgaW5pX3NldCgnYXJnX3NlcGFyYXRvci5vdXRwdXQnLCAn
JicpOyAkdGhpcy0+YXJnX3NlcGFyYXRvciA9ICcmJzsgJHRoaXMtPmZ1bGxfcGFnZSA9IHNlbGY6
Ol9yZXBsYWNlQXJnU2VwYXJhdG9yKCR0aGlzLT5mdWxsX3BhZ2UpOyBpZigkc2FtZV9wYWdlKSB7
ICRwYXJhbXMgPSBhcnJheSgkdGhpcy0+Z2V0UmVxdWVzdEtleSgnc2hvd19tc2cnKSA9PiAkbXNn
KTsgJHBhZ2UgPSAkdGhpcy0+ZnVsbF9wYWdlIC4gJHRoaXMtPmFyZ19zZXBhcmF0b3IgLiBodHRw
X2J1aWxkX3F1ZXJ5KCRwYXJhbXMpOyByZXR1cm4gJHBhZ2U7IH0gJHBhcmFtcyA9IGFycmF5KCk7
IGlmKCRhZnRlcl9tc2cpIHsgJHBhcmFtcyA9IGFycmF5KCR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdz
aG93X21zZycpID0+ICRhZnRlcl9tc2cpOyAkdGhpcy0+ZnVsbF9wYWdlID0gJHRoaXMtPmZ1bGxf
cGFnZSAuICR0aGlzLT5hcmdfc2VwYXJhdG9yIC4gaHR0cF9idWlsZF9xdWVyeSgkcGFyYW1zKTsg
fSAkcGFnZV90b19yZXR1cm4gPSAkdGhpcy0+ZnVsbF9wYWdlOyBpZigkdGhpcy0+Y3VzdG9tX3Bh
Z2VfdG9fcmV0dXJuKSB7ICRwYWdlX3RvX3JldHVybiA9IHNlbGY6Ol9yZXBsYWNlQXJnU2VwYXJh
dG9yKCR0aGlzLT5jdXN0b21fcGFnZV90b19yZXR1cm4pOyB9IHJldHVybiAkcGFnZV90b19yZXR1
cm47IH0gZnVuY3Rpb24gZ29VcmwoJHVybCkgeyAkdXJsID0gJHRoaXMtPl9yZXBsYWNlQXJnU2Vw
YXJhdG9yKCR1cmwpOyBoZWFkZXIoIkxvY2F0aW9uOiAiIC4gJHVybCk7IGV4aXQoKTsgfSBmdW5j
dGlvbiBnb1BhZ2UoJG1vZHVsZSA9IGZhbHNlLCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBm
YWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9yZSA9IGFycmF5KCkpIHsgJGxpbmsgPSAkdGhpcy0+
Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7ICRsaW5r
ID0gJHRoaXMtPl9yZXBsYWNlQXJnU2VwYXJhdG9yKCRsaW5rKTsgaGVhZGVyKCJsb2NhdGlvbjog
JGxpbmsiKTsgZXhpdCgpOyB9IGZ1bmN0aW9uIGdldEdvUGFnZUxpbmsoJG1vZHVsZSA9IGZhbHNl
LCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBmYWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9y
ZSA9IGFycmF5KCkpIHsgJGxpbmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1
Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7IHJldHVybiAkdGhpcy0+X3JlcGxhY2VBcmdTZXBhcmF0
b3IoJGxpbmspOyB9IGZ1bmN0aW9uIHNldFdvcmtpbmdEaXIoJGRpcnMgPSBhcnJheSgpKSB7ICRh
cltdID0gKGlzc2V0KCRkaXJzWydzdWJfcGFnZSddKSkgPyAkZGlyc1snc3ViX3BhZ2UnXSA6ICR0
aGlzLT5zdWJfcGFnZTsgJGFyW10gPSAoaXNzZXQoJGRpcnNbJ3BhZ2UnXSkpID8gJGRpcnNbJ3Bh
Z2UnXSA6ICR0aGlzLT5wYWdlOyAkYXJbXSA9IChpc3NldCgkZGlyc1snbW9kdWxlJ10pKSA/ICRk
aXJzWydtb2R1bGUnXSA6ICR0aGlzLT5tb2R1bGU7IGlmKCFmaWxlX2V4aXN0cygkdGhpcy0+bW9k
dWxlX2RpciAuICdjb25maWdfcGF0aC5waHAnKSkgeyByZXR1cm47IH0gcmVxdWlyZV9vbmNlICR0
aGlzLT5tb2R1bGVfZGlyIC4gJ2NvbmZpZ19wYXRoLnBocCc7IGZvcmVhY2goJGFyIGFzICRrID0+
ICR2KSB7IGlmKGlzc2V0KCRjb25mX21vZHVsZVskdl0pKXsgaWYoc3RycG9zKCRjb25mX21vZHVs
ZVskdl0sICd7JykgIT09IGZhbHNlKSB7ICRyID0gWyAne2V4dHJhX2Rpcn0nID0+ICR0aGlzLT5l
eHRyYV9tb2R1bGVfZGlyLCAne2FjY291bnRfZGlyfScgPT4gJHRoaXMtPmFjY291bnRfbW9kdWxl
X2RpciBdOyAkdGhpcy0+d29ya2luZ19kaXIgPSBzdHJ0cigkY29uZl9tb2R1bGVbJHZdLCAkcik7
IH0gZWxzZSB7ICR0aGlzLT53b3JraW5nX2RpciA9ICR0aGlzLT5tb2R1bGVfZGlyIC4gJGNvbmZf
bW9kdWxlWyR2XTsgfSBicmVhazsgfSB9IH0gZnVuY3Rpb24gZ2V0TGluaygkbW9kdWxlID0gZmFs
c2UsICRwYWdlID0gZmFsc2UsICRzdWJfcGFnZSA9IGZhbHNlLCAkYWN0aW9uID0gZmFsc2UsICRt
b3JlID0gYXJyYXkoKSkgeyBpZigkbW9kdWxlID09ICdhbGwnKSB7IHJldHVybiAkdGhpcy0+X2dl
dExpbmsoJHRoaXMtPmdldFJlcXVlc3RWYXIoJ21vZHVsZScpLCAkdGhpcy0+Z2V0UmVxdWVzdFZh
cigncGFnZScpLCAkdGhpcy0+Z2V0UmVxdWVzdFZhcignc3ViX3BhZ2UnKSwgJHRoaXMtPmdldFJl
cXVlc3RWYXIoJ2FjdGlvbicpLCAkbW9yZSApOyB9IGVsc2VpZigkbW9kdWxlID09ICdtYWluJykg
eyByZXR1cm4gJHRoaXMtPl9nZXRMaW5rKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1bGUnKSwg
JHRoaXMtPmdldFJlcXVlc3RWYXIoJ3BhZ2UnKSwgJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3N1Yl9w
YWdlJykgKTsgfSBlbHNlaWYoJG1vZHVsZSA9PSAnZnVsbCcpIHsgJG1vcmUgPSAkdGhpcy0+Z2V0
RnVsbFBhZ2VQYXJhbXMoKSArICRtb3JlOyB1bnNldCgkbW9yZVsnbW9kdWxlJ10sICRtb3JlWydw
YWdlJ10sICRtb3JlWydzdWJfcGFnZSddLCAkbW9yZVsnYWN0aW9uJ10pOyByZXR1cm4gJHRoaXMt
Pl9nZXRMaW5rKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1bGUnKSwgJHRoaXMtPmdldFJlcXVl
c3RWYXIoJ3BhZ2UnKSwgJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3N1Yl9wYWdlJyksICR0aGlzLT5n
ZXRSZXF1ZXN0VmFyKCdhY3Rpb24nKSwgJG1vcmUgKTsgfSBlbHNlIHsgJG1vZHVsZSA9ICgkbW9k
dWxlID09ICd0aGlzJykgPyAkdGhpcy0+Z2V0UmVxdWVzdFZhcignbW9kdWxlJykgOiAkbW9kdWxl
OyAkcGFnZSA9ICgkcGFnZSA9PSAndGhpcycpID8gJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3BhZ2Un
KSA6ICRwYWdlOyAkc3ViX3BhZ2UgPSAoJHN1Yl9wYWdlID09ICd0aGlzJykgPyAkdGhpcy0+Z2V0
UmVxdWVzdFZhcignc3ViX3BhZ2UnKSA6ICRzdWJfcGFnZTsgJGFjdGlvbiA9ICgkYWN0aW9uID09
ICd0aGlzJykgPyAkdGhpcy0+Z2V0UmVxdWVzdFZhcignYWN0aW9uJykgOiAkYWN0aW9uOyByZXR1
cm4gJHRoaXMtPl9nZXRMaW5rKCRtb2R1bGUsICRwYWdlLCAkc3ViX3BhZ2UsICRhY3Rpb24sICRt
b3JlKTsgfSB9IGZ1bmN0aW9uIF9nZXRBY3Rpb25MaW5rKCRhY3Rpb25fdmFsdWUsICRyZWNvcmRf
aWQgPSBmYWxzZSwgJG1vcmVfcGFyYW1zID0gYXJyYXkoKSkgeyAkYXJnID0gJHRoaXMtPmFyZ19z
ZXBhcmF0b3I7ICRjb21tb25fbGluayA9ICR0aGlzLT5nZXRDb21tb25MaW5rKCk7ICRhY3Rpb25f
a2V5ID0gJHRoaXMtPmdldFJlcXVlc3RLZXkoJ2FjdGlvbicpOyAkaWRfcGFyYW0gPSAoJHJlY29y
ZF9pZCkgPyBzcHJpbnRmKCIlcyVzPSVkIiwgJGFyZywgJHRoaXMtPmlkX2tleSwgJHJlY29yZF9p
ZCkgOiAnJzsgJGFjdGlvbl92YWwgPSAkdGhpcy0+Z2V0QWN0aW9uVmFsdWUoJGFjdGlvbl92YWx1
ZSk7ICRhY3Rpb25fdmFsdWUgPSAoJGFjdGlvbl92YWwpID8gJGFjdGlvbl92YWwgOiAkYWN0aW9u
X3ZhbHVlOyAkbW9yZV9wYXJhbXMgPSAoJG1vcmVfcGFyYW1zKSA/ICRhcmcgLiBodHRwX2J1aWxk
X3F1ZXJ5KCRtb3JlX3BhcmFtcykgOiAnJzsgJHN0ciA9ICclcyVzJXM9JXMlcyVzJzsgJHN0ciA9
IHNwcmludGYoJHN0ciwgJGNvbW1vbl9saW5rLCAkYXJnLCAkYWN0aW9uX2tleSwgJGFjdGlvbl92
YWx1ZSwgJGlkX3BhcmFtLCAkbW9yZV9wYXJhbXMpOyByZXR1cm4gJHN0cjsgfSBmdW5jdGlvbiBn
ZXRBY3Rpb25MaW5rKCRhY3Rpb25fdmFsLCAkcmVjb3JkX2lkID0gZmFsc2UsICRtb3JlX3BhcmFt
cyA9IGFycmF5KCkpIHsgcmV0dXJuICR0aGlzLT5fZ2V0QWN0aW9uTGluaygkYWN0aW9uX3ZhbCwg
JHJlY29yZF9pZCwgJG1vcmVfcGFyYW1zKTsgfSBwcml2YXRlIGZ1bmN0aW9uIF9nZXRMaW5rKCRt
b2R1bGUgPSBmYWxzZSwgJHBhZ2UgPSBmYWxzZSwgJHN1Yl9wYWdlID0gZmFsc2UsICRhY3Rpb24g
PSBmYWxzZSwgJG1vcmUgPSBhcnJheSgpKSB7IGlmKCRtb2R1bGUpIHsgJGxpbmtbMV0gPSBzcHJp
bnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdtb2R1bGUnKSwgJG1vZHVsZSk7IH0g
aWYoJHBhZ2UpIHsgJGxpbmtbMl0gPSBzcHJpbnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0
S2V5KCdwYWdlJyksICRwYWdlKTsgfSBpZigkc3ViX3BhZ2UpIHsgJGxpbmtbM10gPSBzcHJpbnRm
KCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdzdWJfcGFnZScpLCAkc3ViX3BhZ2UpOyB9
IGlmKCRhY3Rpb24pIHsgJGxpbmtbNF0gPSBzcHJpbnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1
ZXN0S2V5KCdhY3Rpb24nKSwgJGFjdGlvbik7IH0gJGxpbmsgPSAoZW1wdHkoJGxpbmspKSA/ICR0
aGlzLT5zZWxmX3BhZ2UgOiAkdGhpcy0+c2VsZl9wYWdlIC4gJz8nIC4gaW1wbG9kZSgkdGhpcy0+
YXJnX3NlcGFyYXRvciwgJGxpbmspOyAkbGluayAuPSAoJG1vcmUpID8gJHRoaXMtPmFyZ19zZXBh
cmF0b3IgLiBodHRwX2J1aWxkX3F1ZXJ5KCRtb3JlKSA6ICcnOyByZXR1cm4gJGxpbms7IH0gZnVu
Y3Rpb24gZ2V0U2hvcnRMaW5rKCRtb2R1bGUgPSBmYWxzZSwgJHBhZ2UgPSBmYWxzZSwgJHN1Yl9w
YWdlID0gZmFsc2UsICRhY3Rpb24gPSBmYWxzZSwgJG1vcmUgPSBhcnJheSgpKSB7ICR0aGlzLT5z
ZWxmX3BhZ2UgPSAnJzsgJGxpbmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1
Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7ICRsaW5rID0gc3RyX3JlcGxhY2UoJz8nLCAnJywgJGxp
bmspOyByZXR1cm4gJGxpbms7IH0gZnVuY3Rpb24gZ2V0RnVsbExpbmsoJG1vZHVsZSA9IGZhbHNl
LCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBmYWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9y
ZSA9IGFycmF5KCkpIHsgJHNlbGZfcGFnZSA9ICR0aGlzLT5zZWxmX3BhZ2U7ICR0aGlzLT5zZWxm
X3BhZ2UgPSBBUFBfQURNSU5fUEFUSCAuICdpbmRleC5waHAnOyAkbGluayA9ICR0aGlzLT5nZXRM
aW5rKCRtb2R1bGUsICRwYWdlLCAkc3ViX3BhZ2UsICRhY3Rpb24sICRtb3JlKTsgJHRoaXMtPnNl
bGZfcGFnZSA9ICRzZWxmX3BhZ2U7IHJldHVybiAkbGluazsgfSBmdW5jdGlvbiBnZXRBamF4TGlu
aygkbW9kdWxlID0gZmFsc2UsICRwYWdlID0gZmFsc2UsICRzdWJfcGFnZSA9IGZhbHNlLCAkYWN0
aW9uID0gZmFsc2UsICRtb3JlID0gYXJyYXkoKSkgeyAkbW9yZSA9IFJlcXVlc3REYXRhVXRpbDo6
YWRkc2xhc2hlcygkbW9yZSk7IGlmKGVtcHR5KCRtb3JlKSAmJiBpc3NldCgkX0dFVFsnaWQnXSkp
IHsgJG1vcmUgPSBhcnJheSgnaWQnID0+IChpbnQpICRfR0VUWydpZCddKTsgfSBmb3JlYWNoKCR0
aGlzLT5tb3JlX3BhcmFtc19hamF4IGFzICR2KXsgaWYoaXNzZXQoJF9HRVRbJHZdKSkgeyAkbW9y
ZVskdl0gPSBhZGRzbGFzaGVzKCRfR0VUWyR2XSk7IH0gfSAkbW9yZVsnYWpheCddID0gMTsgJGxp
bmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1Yl9wYWdlLCAkYWN0aW9uLCAk
bW9yZSk7ICRsaW5rID0gJHRoaXMtPl9yZXBsYWNlQXJnU2VwYXJhdG9yKCRsaW5rKTsgcmV0dXJu
ICRsaW5rOyB9IHN0YXRpYyBmdW5jdGlvbiBnZXRSZWZMaW5rKCRtb2R1bGUgPSBmYWxzZSwgJHBh
Z2UgPSBmYWxzZSwgJHN1Yl9wYWdlID0gZmFsc2UsICRhY3Rpb24gPSBmYWxzZSwgJG1vcmUgPSBh
cnJheSgpLCAkcmVwbGFjZV9hcmcgPSB0cnVlKSB7ICRwID0gQVBQX0FETUlOX1BBVEggLiAnaW5k
ZXgucGhwJzsgaWYoJG1vZHVsZSkgeyAkYyA9IG5ldyBBcHBDb250cm9sbGVyKCk7ICRtb3JlWydy
J10gPSAxOyAkbGluayA9ICRjLT5nZXRTaG9ydExpbmsoJG1vZHVsZSwgJHBhZ2UsICRzdWJfcGFn
ZSwgJGFjdGlvbiwgJG1vcmUpOyBpZigkcmVwbGFjZV9hcmcpIHsgJGxpbmsgPSAkYy0+X3JlcGxh
Y2VBcmdTZXBhcmF0b3IoJGxpbmspOyB9ICRwID0gJHAgLiAnPycgLiAkbGluazsgfSByZXR1cm4g
JHA7IH0gZnVuY3Rpb24gZ2V0Q2xpZW50TGluaygkY2xpZW50X2xpbmssICRzZXJpYWxpemUgPSBm
YWxzZSkgeyAkY2MgPSAmJHRoaXMtPmdldENsaWVudENvbnRyb2xsZXIoKTsgQCRsaW5rID0gJGNj
LT5nZXRSZWRpcmVjdExpbmsoJGNsaWVudF9saW5rWzBdLCAkY2xpZW50X2xpbmtbMV0sICRjbGll
bnRfbGlua1syXSwgJGNsaWVudF9saW5rWzNdLCAkY2xpZW50X2xpbmtbNF0pOyBpZigkc2VyaWFs
aXplKSB7ICRsaW5rID0gV2ViVXRpbDo6c2VyaWFsaXplX3VybCgkbGluayk7IH0gcmV0dXJuICRs
aW5rOyB9IGZ1bmN0aW9uIGdldFB1YmxpY0xpbmsoJHZpZXcsICRkYXRhLCAkbW9yZSA9IFtdKSB7
IHN0YXRpYyAkY2M7IGlmKCRjYyA9PT0gbnVsbCkgeyAkc2V0dGluZ3MgPSBTZXR0aW5nTW9kZWw6
OmdldFF1aWNrKDIpOyAkY2MgPSAkdGhpcy0+Z2V0Q2xpZW50Q29udHJvbGxlcigkc2V0dGluZ3Mp
OyAkY2MtPnNldE1vZFJld3JpdGUoJHNldHRpbmdzWydtb2RfcmV3cml0ZSddKTsgfSAkZW50cnlf
aWQgPSAkZGF0YVsnaWQnXTsgaWYoJHZpZXcgIT0gJ2ZpbGUnKSB7ICRlbnRyeV9pZCA9ICRjYy0+
Z2V0RW50cnlMaW5rUGFyYW1zKCRkYXRhWydpZCddLCAkZGF0YVsndGl0bGUnXSk7IH0gJGxpbmsg
PSAkY2MtPmdldExpbmsoJHZpZXcsIGZhbHNlLCAkZW50cnlfaWQsIGZhbHNlLCAkbW9yZSwgdHJ1
ZSk7IHJldHVybiAkbGluazsgfSBzdGF0aWMgZnVuY3Rpb24gZ2V0QWpheExpbmtUb0ZpbGUoJHR5
cGUsICRtb3JlID0gYXJyYXkoKSkgeyAkcmVnID0gJlJlZ2lzdHJ5OjppbnN0YW5jZSgpOyAkY29u
ZiA9ICYkcmVnLT5nZXRFbnRyeSgnY29uZicpOyAkY2xpZW50X3BhdGggPSBBUFBfQ0xJRU5UX1BB
VEg7IGlmKCRjb25mWydzc2xfYWRtaW4nXSkgeyAkY2xpZW50X3BhdGggPSBzdHJfcmVwbGFjZSgn
aHR0cDovLycsICdodHRwczovLycsIEFQUF9DTElFTlRfUEFUSCk7IH0gJG1vcmUgPSBSZXF1ZXN0
RGF0YVV0aWw6OmFkZHNsYXNoZXMoJG1vcmUpOyAkbGluayA9ICRjbGllbnRfcGF0aCAuICdlbmRw
b2ludC5waHAnOyAkbGluayAuPSAoJHR5cGUpID8gJz90eXBlPScgLiAkdHlwZSA6ICcnOyAkbGlu
ayAuPSAoJG1vcmUpID8gJyYnIC4gaHR0cF9idWlsZF9xdWVyeSgkbW9yZSkgOiAnJzsgJGxpbmsg
PSBBcHBDb250cm9sbGVyOjpfcmVwbGFjZUFyZ1NlcGFyYXRvcigkbGluayk7IHJldHVybiAkbGlu
azsgfSBzdGF0aWMgZnVuY3Rpb24gaXNBamF4Q2FsbCgpIHsgcmV0dXJuICghZW1wdHkoJF9HRVRb
J2FqYXgnXSkpOyB9IHN0YXRpYyBmdW5jdGlvbiBfcmVwbGFjZUFyZ1NlcGFyYXRvcigkc3RyKSB7
IHJldHVybiBzdHJfcmVwbGFjZSgnJmFtcDsnLCAnJicsICRzdHIpOyB9IHN0YXRpYyBmdW5jdGlv
biAmZ2V0Q2xpZW50Q29udHJvbGxlcigkc2V0dGluZ3MgPSBbXSkgeyAkY29udHJvbGxlciA9IG5l
dyBLQkNsaWVudENvbnRyb2xsZXIoKTsgJGNvbnRyb2xsZXItPmtiX3BhdGggPSBBUFBfQ0xJRU5U
X1BBVEg7ICRjb250cm9sbGVyLT5saW5rX3BhdGggPSBBUFBfQ0xJRU5UX1BBVEg7IGlmKCRzZXR0
aW5ncykgeyAkY29udHJvbGxlci0+c2V0RGlyVmFycygkc2V0dGluZ3MpOyB9IHJldHVybiAkY29u
dHJvbGxlcjsgfSBmdW5jdGlvbiBnb1ZpZXcoJiRvYmosICYkbWFuYWdlciwgJGNsYXNzLCAkdmFs
dWVzID0gYXJyYXkoKSkgeyAkdmlldyA9IG5ldyAkY2xhc3M7ICR2aWV3LT5leGVjdXRlKCRvYmos
ICRtYW5hZ2VyLCAkdmFsdWVzKTsgfSBmdW5jdGlvbiBnZXRWaWV3KCYkb2JqLCAmJG1hbmFnZXIs
ICRjbGFzcywgJHZhbHVlcyA9IGFycmF5KCkpIHsgJHZpZXcgPSBuZXcgJGNsYXNzOyByZXR1cm4g
JHZpZXctPmV4ZWN1dGUoJG9iaiwgJG1hbmFnZXIsICR2YWx1ZXMpOyB9IGZ1bmN0aW9uIGlzQ2xh
c3MoJGNsYXNzX25hbWUsICRwYXRoID0gZmFsc2UpIHsgJGNsYXNzX25hbWUgPSAkY2xhc3NfbmFt
ZSAuICcucGhwJzsgaWYoJHBhdGgpIHsgJHBbXSA9ICR0aGlzLT5tb2R1bGVfZGlyIC4gJHBhdGgg
LiAnL2luYy8nOyAkcFtdID0gJHRoaXMtPmV4dHJhX21vZHVsZV9kaXIgLiAkcGF0aCAuICcvaW5j
Lyc7IGZvcmVhY2goJHAgYXMgJHYpIHsgaWYoZmlsZV9leGlzdHMoJHYgLiAkY2xhc3NfbmFtZSkp
IHsgcmV0dXJuIHRydWU7IH0gfSB9IGVsc2UgeyBpZihmaWxlX2V4aXN0cygkdGhpcy0+d29ya2lu
Z19kaXIgLiAnaW5jLycgLiAkY2xhc3NfbmFtZSkpIHsgcmV0dXJuIHRydWU7IH0gfSByZXR1cm4g
ZmFsc2U7IH0gfSAK
Function Calls
None |
Stats
MD5 | 58fdc53139aee36ef05b8a4fbfdb589e |
Eval Count | 0 |
Decode Time | 106 ms |