# Name: smd_prefalizer v0.11 # Type: Admin side plugin # Add, remove, or edit TXP prefs with ease # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE0OiJzbWRfcHJlZmFsaXplciI7czo2OiJhdXRob3IiO3M6 MTE6IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRh d3Nvbi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4xMSI7czoxMToiZGVzY3JpcHRpb24i O3M6NDA6IkFkZCwgcmVtb3ZlLCBvciBlZGl0IFRYUCBwcmVmcyB3aXRoIGVhc2UiO3M6NDoi Y29kZSI7czoxNjEwNzoiaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgew0KCWdsb2Jh bCAkc21kX3ByZWZhbGl6ZXJfZXZlbnQsICRzbWRfcHJlZmFsaXplcl9wcml2cywgJHNtZF9w cmVmYWxpemVyX3R5cGVzOw0KDQoJJHNtZF9wcmVmYWxpemVyX2V2ZW50ID0gJ3NtZF9wcmVm YWxpemVyJzsNCgkkc21kX3ByZWZhbGl6ZXJfcHJpdnMgPSAnMSc7DQoJJHNtZF9wcmVmYWxp emVyX3R5cGVzID0gYXJyYXkoMCA9PiAnYmFzaWMnLCAxID0+ICdhZHZhbmNlZCcsIDIgPT4g J2hpZGRlbicpOw0KDQoJYWRkX3ByaXZzKCRzbWRfcHJlZmFsaXplcl9ldmVudCwgJHNtZF9w cmVmYWxpemVyX3ByaXZzKTsNCglyZWdpc3Rlcl90YWIoImFkbWluIiwgJHNtZF9wcmVmYWxp emVyX2V2ZW50LCBzbWRfcHJlZmFsaXplcl9nVHh0KCd0YWJfbmFtZScpKTsNCglyZWdpc3Rl cl9jYWxsYmFjaygnc21kX3ByZWZhbGl6ZXInLCAkc21kX3ByZWZhbGl6ZXJfZXZlbnQpOw0K fQ0KDQpmdW5jdGlvbiBzbWRfcHJlZmFsaXplcigkZXZlbnQsICRzdGVwKSB7DQoJaWYoISRz dGVwIG9yICFpbl9hcnJheSgkc3RlcCwgYXJyYXkoDQoJCQknc21kX3ByZWZhbGl6ZXJfYWRk JywNCgkJCSdzbWRfcHJlZmFsaXplcl9zYXZlJywNCgkJCSdzbWRfcHJlZmFsaXplcl9kZWxl dGUnLA0KCQkJJ3NtZF9wcmVmYWxpemVyX2NoYW5nZV9wYWdlYnknLA0KCQkpKSkgew0KCQlz bWRfcHJlZmFsaXplcl9saXN0KCcnKTsNCgl9IGVsc2UgJHN0ZXAoKTsNCn0NCg0KLy8gTGlz dCB0aGUgY2hvc2VuIHByZWZzDQpmdW5jdGlvbiBzbWRfcHJlZmFsaXplcl9saXN0KCRtc2c9 JycpIHsNCglnbG9iYWwgJHNtZF9wcmVmYWxpemVyX2V2ZW50LCAkc21kX3ByZWZhbGl6ZXJf dHlwZXM7DQoNCglwYWdldG9wKHNtZF9wcmVmYWxpemVyX2dUeHQoJ3RhYl9uYW1lJyksICRt c2cpOw0KCWV4dHJhY3QoZ3BzYShhcnJheSgnc3RlcCcsICdwYWdlJywgJ3NvcnQnLCAnZGly JywgJ2NyaXQnLCAnc2VhcmNoX21ldGhvZCcsICduYW1lJywgJ3ZhbHVlJywgJ3R5cGUnLCAn cHJlZl9ldmVudCcsICdodG1sJywgJ3VzZXJfbmFtZScsICdwb3NpdGlvbicpKSk7DQoJJG1z ZyA9ICgkbXNnKSA/ICRtc2cgOiBncHMoJ21zZycpOw0KDQoJLy8gSGFuZGxlIHBhZ2luZyAv IHNvcnRpbmcNCgkkcGFnZWJ5ID0gKGdwcygncXR5JykpID8gZ3BzKCdxdHknKSA6ICgoY3Mo J3NtZF9wcmVmYWxpemVyX3BhZ2VieScpKSA/IGNzKCdzbWRfcHJlZmFsaXplcl9wYWdlYnkn KSA6IDI1KTsNCgkkZGlyID0gKCRkaXIgPT0gJ2Rlc2MnKSA/ICdkZXNjJyA6ICdhc2MnOw0K CXN3aXRjaCAoJHNvcnQpIHsNCgkJY2FzZSAndmFsdWUnOg0KCQkJJHNvcnRfc3FsID0gJ3Zh bCAnLiRkaXIuJywgbmFtZSBhc2MnOw0KCQkJYnJlYWs7DQoJCWNhc2UgJ3R5cGUnOg0KCQkJ JHNvcnRfc3FsID0gJ3R5cGUgJy4kZGlyLicsIG5hbWUgYXNjJzsNCgkJCWJyZWFrOw0KCQlj YXNlICdldmVudCc6DQoJCQkkc29ydF9zcWwgPSAnZXZlbnQgJy4kZGlyLicsIG5hbWUgYXNj JzsNCgkJCWJyZWFrOw0KCQljYXNlICdodG1sJzoNCgkJCSRzb3J0X3NxbCA9ICdodG1sICcu JGRpci4nLCBuYW1lIGFzYyc7DQoJCQlicmVhazsNCgkJY2FzZSAndXNlcic6DQoJCQkkc29y dF9zcWwgPSAndXNlcl9uYW1lICcuJGRpci4nLCBuYW1lIGFzYyc7DQoJCQlicmVhazsNCgkJ Y2FzZSAncG9zaXRpb24nOg0KCQkJJHNvcnRfc3FsID0gJ3Bvc2l0aW9uICcuJGRpci4nLCBu YW1lIGFzYyc7DQoJCQlicmVhazsNCgkJY2FzZSAnbmFtZSc6DQoJCWRlZmF1bHQ6DQoJCQkk c29ydCA9ICduYW1lJzsNCgkJCSRzb3J0X3NxbCA9ICduYW1lICcuJGRpcjsNCgkJCWJyZWFr Ow0KCX0NCgkkc3dpdGNoX2RpciA9ICgkZGlyID09ICdkZXNjJykgPyAnYXNjJyA6ICdkZXNj JzsNCgkkY3JpdGVyaWEgPSAxOw0KDQoJaWYgKCRzZWFyY2hfbWV0aG9kICYmICRjcml0ICE9 PSBmYWxzZSkgew0KCQkkY3JpdF9lc2NhcGVkID0gZG9TbGFzaCgkY3JpdCk7DQoJCSRjcml0 c3FsID0gYXJyYXkoDQoJCQknbmFtZScgPT4gIm5hbWUgbGlrZSAnJSRjcml0X2VzY2FwZWQl JyIsDQoJCQkndmFsdWUnID0+ICJ2YWwgbGlrZSAnJSRjcml0X2VzY2FwZWQlJyIsDQoJCQkn dHlwZScgPT4gInR5cGUgPSAiIC4gKChpc19udW1lcmljKCRjcml0X2VzY2FwZWQpKSA/ICIk Y3JpdF9lc2NhcGVkIiA6ICgoKCRjcml0X251bWJlciA9IGFycmF5X3NlYXJjaChzdHJ0b2xv d2VyKCRjcml0X2VzY2FwZWQpLCAkc21kX3ByZWZhbGl6ZXJfdHlwZXMpKSAhPT0gZmFsc2Up ID8gJGNyaXRfbnVtYmVyIDogMCkpLA0KCQkJJ2V2ZW50JyA9PiAiZXZlbnQgbGlrZSAnJSRj cml0X2VzY2FwZWQlJyIsDQoJCQknaHRtbCcgPT4gImh0bWwgbGlrZSAnJSRjcml0X2VzY2Fw ZWQlJyIsDQoJCQkndXNlcicgPT4gInVzZXJfbmFtZSBsaWtlICclJGNyaXRfZXNjYXBlZCUn IiwNCgkJCSdwb3NpdGlvbicgPT4gInBvc2l0aW9uID0gJyRjcml0X2VzY2FwZWQnIiwNCgkJ KTsNCg0KCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygkc2VhcmNoX21ldGhvZCwgJGNyaXRzcWwp KSB7DQoJCQkkY3JpdGVyaWEgPSAkY3JpdHNxbFskc2VhcmNoX21ldGhvZF07DQoJCQkkbGlt aXQgPSAxMDAwOw0KCQl9IGVsc2Ugew0KCQkJJHNlYXJjaF9tZXRob2QgPSAnJzsNCgkJCSRj cml0ID0gJyc7DQoJCX0NCgl9IGVsc2Ugew0KCQkkc2VhcmNoX21ldGhvZCA9ICcnOw0KCQkk Y3JpdCA9ICcnOw0KCX0NCgkkdG90YWwgPSBzYWZlX2NvdW50KCd0eHBfcHJlZnMnLCAiJGNy aXRlcmlhIik7DQoJJGxpbWl0ID0gbWF4KEAkcGFnZWJ5LCAyNSk7DQoJbGlzdCgkcGFnZSwg JG9mZnNldCwgJG51bVBhZ2VzKSA9IHBhZ2VyKCR0b3RhbCwgJGxpbWl0LCAkcGFnZSk7DQoN CgkkcXMgPSBhcnJheSgNCgkJImV2ZW50IiA9PiAkc21kX3ByZWZhbGl6ZXJfZXZlbnQsDQoJ CSJwYWdlIiA9PiAkcGFnZSwNCgkJInNvcnQiID0+ICRzb3J0LA0KCQkiZGlyIiA9PiAkZGly LA0KCQkiY3JpdCIgPT4gJGNyaXQsDQoJCSJzZWFyY2hfbWV0aG9kIiA9PiAkc2VhcmNoX21l dGhvZCwNCgkpOw0KDQoJLy8gTGlzdCB0aGUgZGVzaXJlZCBwcmVmcw0KCSR0aGVQcmVmcyA9 IHNhZmVfcm93cygnKicsICd0eHBfcHJlZnMnLCAiJGNyaXRlcmlhIG9yZGVyIGJ5ICRzb3J0 X3NxbCBsaW1pdCAkb2Zmc2V0LCAkbGltaXQiKTsNCgkkYXV0aG9yX2xpc3QgPSBzYWZlX2Nv bHVtbignbmFtZScsICd0eHBfdXNlcnMnLCAnMSA9IDEnKTsNCgllY2hvIHNtZF9wcmVmYWxp emVyX3NlYXJjaF9mb3JtKCRjcml0LCAkc2VhcmNoX21ldGhvZCk7DQoJJGVkaXRGb2N1cyA9 ICgkc3RlcCA9PSAnZWRpdCcpID8gJ2pRdWVyeShmdW5jdGlvbigpIHsgalF1ZXJ5KCIjc21k X3ByZWZhbGl6ZXJfdmFsdWUgdGV4dGFyZWEiKS5mb2N1cygpOyB9KTsnOiAnJzsNCg0KCS8v IEFueSBlZGl0cyB0byBhbiBlbnRyeSBhcmUgY29waWVkIHRvIHRoaXMgaGlkZGVuIGZvcm0g YW5kIHRoZW4gc3VibWl0dGVkDQoJZWNobyA8PDxFT0MNCjxzY3JpcHQgdHlwZT0idGV4dC9q YXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIHNtZF9wcmVmYWxpemVyX3NhdmUoKSB7DQoJdmFyIHN0 eXBlID0galF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfZWRpdGVkICNzbWRfcHJlZmFsaXplcl90 eXBlIG9wdGlvbjpzZWxlY3RlZCIpLnZhbCgpOw0KCXZhciB1dHlwZSA9IGpRdWVyeSgiI3Nt ZF9wcmVmYWxpemVyX2VkaXRlZCAjc21kX3ByZWZhbGl6ZXJfdXNlcl9uYW1lIG9wdGlvbjpz ZWxlY3RlZCIpLnZhbCgpOw0KCWpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2lucHV0IGlucHV0 W25hbWU9J25ld25hbWUnXSIpLnZhbChqUXVlcnkoIiNzbWRfcHJlZmFsaXplcl9lZGl0ZWQg I3NtZF9wcmVmYWxpemVyX25hbWUgaW5wdXQiKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX3By ZWZhbGl6ZXJfaW5wdXQgaW5wdXRbbmFtZT0ndmFsdWUnXSIpLnZhbChqUXVlcnkoIiNzbWRf cHJlZmFsaXplcl9lZGl0ZWQgI3NtZF9wcmVmYWxpemVyX3ZhbHVlIHRleHRhcmVhIikudmFs KCkpOw0KCWpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2lucHV0ICNzbWRfcHJlZmFsaXplcl9u ZXdfdHlwZSBvcHRpb246ZXEoIitzdHlwZSsiKSIpLmF0dHIoJ3NlbGVjdGVkJywgJ3NlbGVj dGVkJyk7DQoJalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfaW5wdXQgaW5wdXRbbmFtZT0ncHJl Zl9ldmVudCddIikudmFsKGpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2VkaXRlZCAjc21kX3By ZWZhbGl6ZXJfZXZlbnQgaW5wdXQiKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX3ByZWZhbGl6 ZXJfaW5wdXQgaW5wdXRbbmFtZT0naHRtbCddIikudmFsKGpRdWVyeSgiI3NtZF9wcmVmYWxp emVyX2VkaXRlZCAjc21kX3ByZWZhbGl6ZXJfaHRtbCBpbnB1dCIpLnZhbCgpKTsNCglqUXVl cnkoIiNzbWRfcHJlZmFsaXplcl9pbnB1dCAjc21kX3ByZWZhbGl6ZXJfbmV3dXNlciBvcHRp b25bdmFsdWU9JyIrdXR5cGUrIiddIikuYXR0cignc2VsZWN0ZWQnLCAnc2VsZWN0ZWQnKTsN CglqUXVlcnkoIiNzbWRfcHJlZmFsaXplcl9pbnB1dCBpbnB1dFtuYW1lPSdwb3NpdGlvbidd IikudmFsKGpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2VkaXRlZCAjc21kX3ByZWZhbGl6ZXJf cG9zaXRpb24gaW5wdXQiKS52YWwoKSk7DQoJalF1ZXJ5KCJmb3JtW25hbWU9J3NtZF9wcmVm YWxpemVyX2lucHV0J10iKS50cmlnZ2VyKCJzdWJtaXQiKTsNCn0NCmZ1bmN0aW9uIHNtZF9w cmVmYWxpemVyX3RvZ2dsZW5ldygpIHsNCglib3ggPSBqUXVlcnkoImZvcm1bbmFtZT0nc21k X3ByZWZhbGl6ZXJfaW5wdXQnXSIpOw0KCWlmIChib3guY3NzKCJkaXNwbGF5IikgPT0gIm5v bmUiKSB7DQoJCWJveC5zbGlkZURvd24oJ2Zhc3QnKTsNCgl9IGVsc2Ugew0KCQlib3guc2xp ZGVVcCgnZmFzdCcpOw0KCX0NCglqUXVlcnkoJyNzbWRfcHJlZmFsaXplcl9uZXcgLnNtZF9m b2N1cycpLmZvY3VzKCk7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KeyRlZGl0Rm9jdXN9DQo8L3Nj cmlwdD4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQouc21kX2hpZGRlbiB7DQoJZGlzcGxh eTpub25lOw0KfQ0KI3NtZF9wcmVmYWxpemVyX2xvbmdmb3JtICNsaXN0IHRyLmRhdGE6aG92 ZXIgew0KCWJhY2tncm91bmQ6I2U3ZTdlNzsNCn0NCjwvc3R5bGU+DQpFT0M7DQoNCgkkbmV3 YnRuID0gJzxhIGNsYXNzPSJuYXZsaW5rIiBocmVmPSIjIiBvbmNsaWNrPSJyZXR1cm4gc21k X3ByZWZhbGl6ZXJfdG9nZ2xlbmV3KCk7Ij4nLnNtZF9wcmVmYWxpemVyX2dUeHQoJ25ldycp Lic8L2E+JzsNCgkkaGVhZGluZ3MgPSBhc3NIZWFkKCduYW1lJywndmFsdWUnLCAndHlwZScs IHNtZF9wcmVmYWxpemVyX2dUeHQoJ2V2ZW50JyksIHNtZF9wcmVmYWxpemVyX2dUeHQoJ2h0 bWwnKSwgc21kX3ByZWZhbGl6ZXJfZ1R4dCgndXNlcicpLCBzbWRfcHJlZmFsaXplcl9nVHh0 KCdwb3NpdGlvbicpLCBzbWRfcHJlZmFsaXplcl9nVHh0KCdhY3Rpb25zJykpOw0KCWVjaG8g Jzxmb3JtIG1ldGhvZD0icG9zdCIgbmFtZT0ic21kX3ByZWZhbGl6ZXJfaW5wdXQiIGNsYXNz PSJzbWRfaGlkZGVuIiBhY3Rpb249Iicuam9pbl9xcygkcXMpLiciPic7DQoJZWNobyBzSW5w dXQoJ3NtZF9wcmVmYWxpemVyX3NhdmUnKTsNCgllY2hvIGhJbnB1dCgnbmFtZScsKCgkc3Rl cD09J2VkaXQnKSA/ICRuYW1lIDogJycpKTsNCgllY2hvIGhJbnB1dCgndXNlcl9uYW1lJywo KCRzdGVwPT0nZWRpdCcpID8gJHVzZXJfbmFtZSA6ICcnKSk7DQoJZWNobyBzdGFydFRhYmxl KCdzbWRfcHJlZmFsaXplcl9uZXcnLCAnJywgJycsIDgpOw0KCWVjaG8gdHIoJGhlYWRpbmdz KTsNCgllY2hvICc8dHIgaWQ9InNtZF9wcmVmYWxpemVyX2lucHV0Ij4nOw0KCWVjaG8gdGQo ZklucHV0KCd0ZXh0JywgJ25ld25hbWUnLCAoKCRzdGVwPT0nZWRpdCcpID8gJG5hbWUgOiAn JyksICdzbWRfZm9jdXMnKSkNCgkgICAgLnRkKGZJbnB1dCgndGV4dCcsICd2YWx1ZScsICgo JHN0ZXA9PSdlZGl0JykgPyAkdmFsdWUgOiAnJykpKQ0KCSAgICAudGQoc2VsZWN0SW5wdXQo J3R5cGUnLCAkc21kX3ByZWZhbGl6ZXJfdHlwZXMsICgoJHN0ZXA9PSdlZGl0JykgPyAkdHlw ZSA6IDIpLCBmYWxzZSwgJycsICdzbWRfcHJlZmFsaXplcl9uZXdfdHlwZScpKQ0KCSAgICAu dGQoZklucHV0KCd0ZXh0JywgJ3ByZWZfZXZlbnQnLCAoKCRzdGVwPT0nZWRpdCcpID8gJHBy ZWZfZXZlbnQgOiAnJykpKQ0KCSAgICAudGQoZklucHV0KCd0ZXh0JywgJ2h0bWwnLCAoKCRz dGVwPT0nZWRpdCcpID8gJGh0bWwgOiAndGV4dF9pbnB1dCcpKSkNCgkgICAgLnRkKHNlbGVj dElucHV0KCduZXd1c2VyJywgJGF1dGhvcl9saXN0LCAoKCRzdGVwPT0nZWRpdCcpID8gJHVz ZXJfbmFtZSA6ICcnKSwgdHJ1ZSwgJycsICdzbWRfcHJlZmFsaXplcl9uZXd1c2VyJykpDQoJ ICAgIC50ZChmSW5wdXQoJ3RleHQnLCAncG9zaXRpb24nLCAoKCRzdGVwPT0nZWRpdCcpID8g JHBvc2l0aW9uIDogJzAnKSkpDQoJICAgIC50ZChmSW5wdXQoJ3N1Ym1pdCcsICcnLCBnVHh0 KCdhZGQnKSwgJ3NtYWxsZXJib3gnKSk7DQoJZWNobyAnPC90cj4nOw0KCWVjaG8gZW5kVGFi bGUoKTsNCgllY2hvICc8L2Zvcm0+JzsNCg0KCS8vIFRoZSBtYWluIGxpc3QNCgllY2hvICc8 Zm9ybSBtZXRob2Q9InBvc3QiIG5hbWU9Imxvbmdmb3JtIiBpZD0ic21kX3ByZWZhbGl6ZXJf bG9uZ2Zvcm0iIGFjdGlvbj0iJy5qb2luX3FzKCRxcykuJyI+JzsNCgllY2hvIHN0YXJ0VGFi bGUoJ2xpc3QnLCcnLCcnLDgpOw0KCWVjaG8gdHIodGRhKCRuZXdidG4sICcgY29sc3Bhbj0i OCInKSk7DQoJZWNobyB0cigNCgkJY29sdW1uX2hlYWQoJ25hbWUnLCAnbmFtZScsICdzbWRf cHJlZmFsaXplcicsIHRydWUsICRzd2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2Qs ICgnbmFtZScgPT0gJHNvcnQpID8gJGRpciA6ICcnKS4NCgkJY29sdW1uX2hlYWQoJ3ZhbHVl JywgJ3ZhbHVlJywgJ3NtZF9wcmVmYWxpemVyJywgdHJ1ZSwgJHN3aXRjaF9kaXIsICRjcml0 LCAkc2VhcmNoX21ldGhvZCwgKCd2YWx1ZScgPT0gJHNvcnQpID8gJGRpciA6ICcnKS4NCgkJ Y29sdW1uX2hlYWQoJ3R5cGUnLCAndHlwZScsICdzbWRfcHJlZmFsaXplcicsIHRydWUsICRz d2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2QsICgndHlwZScgPT0gJHNvcnQpID8g JGRpciA6ICcnKS4NCgkJY29sdW1uX2hlYWQoc21kX3ByZWZhbGl6ZXJfZ1R4dCgnZXZlbnQn KSwgJ2V2ZW50JywgJ3NtZF9wcmVmYWxpemVyJywgdHJ1ZSwgJHN3aXRjaF9kaXIsICRjcml0 LCAkc2VhcmNoX21ldGhvZCwgKCdldmVudCcgPT0gJHNvcnQpID8gJGRpciA6ICcnKS4NCgkJ Y29sdW1uX2hlYWQoc21kX3ByZWZhbGl6ZXJfZ1R4dCgnaHRtbCcpLCAnaHRtbCcsICdzbWRf cHJlZmFsaXplcicsIHRydWUsICRzd2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2Qs ICgnaHRtbCcgPT0gJHNvcnQpID8gJGRpciA6ICcnKS4NCgkJY29sdW1uX2hlYWQoc21kX3By ZWZhbGl6ZXJfZ1R4dCgndXNlcicpLCAndXNlcicsICdzbWRfcHJlZmFsaXplcicsIHRydWUs ICRzd2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2QsICgndXNlcicgPT0gJHNvcnQp ID8gJGRpciA6ICcnKS4NCgkJY29sdW1uX2hlYWQoc21kX3ByZWZhbGl6ZXJfZ1R4dCgncG9z aXRpb24nKSwgJ3Bvc2l0aW9uJywgJ3NtZF9wcmVmYWxpemVyJywgdHJ1ZSwgJHN3aXRjaF9k aXIsICRjcml0LCAkc2VhcmNoX21ldGhvZCwgKCdwb3NpdGlvbicgPT0gJHNvcnQpID8gJGRp ciA6ICcnKS4NCgkJY29sdW1uX2hlYWQoc21kX3ByZWZhbGl6ZXJfZ1R4dCgnYWN0aW9ucycp LCAnYWN0aW9ucycsICdzbWRfcHJlZmFsaXplcicsIGZhbHNlKQ0KCSk7DQoNCglmb3JlYWNo ICgkdGhlUHJlZnMgYXMgJHByZWZfcm93KSB7DQoJCWlmICgkc3RlcCA9PSAnZWRpdCcgJiYg JHByZWZfcm93WyduYW1lJ10gPT0gJG5hbWUgJiYgJHByZWZfcm93Wyd1c2VyX25hbWUnXSA9 PSAkdXNlcl9uYW1lKSB7DQoJCQkkYnRuU2F2ZSA9IGZJbnB1dCgnYnV0dG9uJywgJycsIGdU eHQoJ1NhdmUnKSwgJ3B1Ymxpc2gnLCAnJywgJ3NtZF9wcmVmYWxpemVyX3NhdmUoKScpOw0K CQkJZWNobyB0cigkaGVhZGluZ3MpOw0KCQkJZWNobyB0cigNCgkJCQl0ZChmSW5wdXQoJ3Rl eHQnLCAnbmFtZScsICRwcmVmX3Jvd1snbmFtZSddKSwgNzAsICcnLCAnc21kX3ByZWZhbGl6 ZXJfbmFtZScpDQoJCQkJLnRkKHRleHRfYXJlYSgndmFsdWUnLCAnODAnLCAnMjIwJywgJHBy ZWZfcm93Wyd2YWwnXSksIDIyMCwgJycsICdzbWRfcHJlZmFsaXplcl92YWx1ZScpDQoJCQkJ LnRkKHNlbGVjdElucHV0KCd0eXBlJywgJHNtZF9wcmVmYWxpemVyX3R5cGVzLCAkcHJlZl9y b3dbJ3R5cGUnXSksIDYwLCAnJywgJ3NtZF9wcmVmYWxpemVyX3R5cGUnKQ0KCQkJCS50ZChm SW5wdXQoJ3RleHQnLCAncHJlZl9ldmVudCcsICRwcmVmX3Jvd1snZXZlbnQnXSksIDYwLCAn JywgJ3NtZF9wcmVmYWxpemVyX2V2ZW50JykNCgkJCQkudGQoZklucHV0KCd0ZXh0JywgJ2h0 bWwnLCAkcHJlZl9yb3dbJ2h0bWwnXSksIDYwLCAnJywgJ3NtZF9wcmVmYWxpemVyX2h0bWwn KQ0KCQkJCS50ZChzZWxlY3RJbnB1dCgndXNlcl9uYW1lJywgJGF1dGhvcl9saXN0LCAkcHJl Zl9yb3dbJ3VzZXJfbmFtZSddLCB0cnVlKSwgODAsICcnLCAnc21kX3ByZWZhbGl6ZXJfdXNl cl9uYW1lJykNCgkJCQkudGQoZklucHV0KCd0ZXh0JywgJ3Bvc2l0aW9uJywgJHByZWZfcm93 Wydwb3NpdGlvbiddKSwgMjAsICcnLCAnc21kX3ByZWZhbGl6ZXJfcG9zaXRpb24nKQ0KCQkJ CS50ZCgkYnRuU2F2ZSkNCgkJCSwgJyBpZD0ic21kX3ByZWZhbGl6ZXJfZWRpdGVkIicpOw0K CQl9IGVsc2Ugew0KCQkJJGJ0bkVkaXQgPSAnPGEgaHJlZj0iJy5qb2luX3FzKCRxcykuJyYj Mzg7c3RlcD1lZGl0JiMzODtuYW1lPScuJHByZWZfcm93WyduYW1lJ10uJyYjMzg7dXNlcl9u YW1lPScuJHByZWZfcm93Wyd1c2VyX25hbWUnXS4nIj5bJyAuIGdUeHQoJ2VkaXQnKSAuICdd PC9hPic7DQoJCQkkYnRuRGVsID0gc21kX3ByZWZhbGl6ZXJfY2FuX2RlbGV0ZSgkcHJlZl9y b3dbJ25hbWUnXSkgPyAnPGEgaHJlZj0iJy5qb2luX3FzKCRxcykuJyYjMzg7c3RlcD1zbWRf cHJlZmFsaXplcl9kZWxldGUmIzM4O25hbWU9Jy4kcHJlZl9yb3dbJ25hbWUnXS4nJiMzODt1 c2VyX25hbWU9Jy4kcHJlZl9yb3dbJ3VzZXJfbmFtZSddLiciIG9uY2xpY2s9InJldHVybiBj b25maXJtKFwnJy5zbWRfcHJlZmFsaXplcl9nVHh0KCdkZWxldGVfY29uZmlybScsIGFycmF5 KCJ7bmFtZX0iID0+ICRwcmVmX3Jvd1snbmFtZSddLCAie3VzZXJfbmFtZX0iID0+ICgoJHBy ZWZfcm93Wyd1c2VyX25hbWUnXT09JycpID8gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnYWxsX3Vz ZXJzJykgOiAkcHJlZl9yb3dbJ3VzZXJfbmFtZSddICkgKSkuJ1wnKTsiPlsnIC4gZ1R4dCgn ZGVsZXRlJykgLiAnXTwvYT4nIDogJyc7DQoJCQllY2hvIHRyKA0KCQkJCXRkKCRwcmVmX3Jv d1snbmFtZSddLDcwKQ0KCQkJCS50ZCgkcHJlZl9yb3dbJ3ZhbCddLCAyMjApDQoJCQkJLnRk KHVjZmlyc3QoJHNtZF9wcmVmYWxpemVyX3R5cGVzWyRwcmVmX3Jvd1sndHlwZSddXSkpDQoJ CQkJLnRkKCRwcmVmX3Jvd1snZXZlbnQnXSkNCgkJCQkudGQoJHByZWZfcm93WydodG1sJ10p DQoJCQkJLnRkKCRwcmVmX3Jvd1sndXNlcl9uYW1lJ10pDQoJCQkJLnRkKCRwcmVmX3Jvd1sn cG9zaXRpb24nXSkNCgkJCQkudGQoJGJ0bkVkaXQuJyAnLiRidG5EZWwsIDEwMCkNCgkJCSwg JyBjbGFzcz0iZGF0YSInKTsNCgkJfQ0KCX0NCg0KCWVjaG8gZW5kVGFibGUoKTsNCgllY2hv ICc8L2Zvcm0+JzsNCgllY2hvIG4ubmF2X2Zvcm0oJHNtZF9wcmVmYWxpemVyX2V2ZW50LCAk cGFnZSwgJG51bVBhZ2VzLCAkc29ydCwgJGRpciwgJGNyaXQsICRzZWFyY2hfbWV0aG9kKTsN CgllY2hvIG4ucGFnZWJ5X2Zvcm0oJHNtZF9wcmVmYWxpemVyX2V2ZW50LCAkcGFnZWJ5KTsN Cn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX3ByZWZhbGl6ZXJfc2VhcmNoX2Zvcm0o JGNyaXQsICRtZXRob2QpIHsNCgkkbWV0aG9kcyA9CWFycmF5KA0KCQknbmFtZScgPT4gZ1R4 dCgnbmFtZScpLA0KCQkndmFsdWUnID0+IGdUeHQoJ3ZhbHVlJyksDQoJCSd0eXBlJyA9PiBn VHh0KCd0eXBlJyksDQoJCSdldmVudCcgPT4gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnZXZlbnQn KSwNCgkJJ2h0bWwnID0+IHNtZF9wcmVmYWxpemVyX2dUeHQoJ2h0bWwnKSwNCgkJJ3VzZXIn ID0+IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3VzZXInKSwNCgkJJ3Bvc2l0aW9uJyA9PiBzbWRf cHJlZmFsaXplcl9nVHh0KCdwb3NpdGlvbicpLA0KCSk7DQoNCglyZXR1cm4gc2VhcmNoX2Zv cm0oJ3NtZF9wcmVmYWxpemVyJywgJ3NtZF9wcmVmYWxpemVyX2xpc3QnLCAkY3JpdCwgJG1l dGhvZHMsICRtZXRob2QsICduYW1lJyk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNt ZF9wcmVmYWxpemVyX2NoYW5nZV9wYWdlYnkoKSB7DQoJc2V0Y29va2llKCdzbWRfcHJlZmFs aXplcl9wYWdlYnknLCBncHMoJ3F0eScpKTsNCglzbWRfcHJlZmFsaXplcl9saXN0KCcnKTsN Cn0NCg0KZnVuY3Rpb24gc21kX3ByZWZhbGl6ZXJfY2FuX2RlbGV0ZSgkbmFtZSkgew0KCSRw cm90ZWN0ZWRfZXZlbnRzID0gYXJyYXkoJ2FkbWluJywgJ2NvbW1lbnRzJywgJ2NzcycsICdj dXN0b20nLCAnZGlzY3VzcycsICdmZWVkcycsICdwdWJsaXNoJyk7DQoJJHJvdyA9IHNhZmVf cm93KCcqJywgJ3R4cF9wcmVmcycsICJuYW1lPSckbmFtZSciKTsNCglyZXR1cm4gKGluX2Fy cmF5KCRyb3dbJ2V2ZW50J10sICRwcm90ZWN0ZWRfZXZlbnRzKSAmJiBlbXB0eSgkcm93Wyd1 c2VyX25hbWUnXSkpID8gZmFsc2UgOiB0cnVlOw0KfQ0KDQpmdW5jdGlvbiBzbWRfcHJlZmFs aXplcl9hZGQoJG1zZz0nJykgew0KCWdsb2JhbCAkc21kX3ByZWZhbGl6ZXJfZXZlbnQ7DQoN CglwYWdldG9wKHNtZF9wcmVmYWxpemVyX2dUeHQoJ3RhYl9uYW1lJyksICRtc2cpOw0KCWVj aG8gJ0FERCc7DQp9DQoNCmZ1bmN0aW9uIHNtZF9wcmVmYWxpemVyX3NhdmUoJG1zZz0nJykg ew0KCWdsb2JhbCAkc21kX3ByZWZhbGl6ZXJfZXZlbnQ7DQoNCglleHRyYWN0KGRvU2xhc2go cHNhKGFycmF5KCduYW1lJywgJ25ld25hbWUnLCAndmFsdWUnLCAndHlwZScsICdwcmVmX2V2 ZW50JywgJ2h0bWwnLCAndXNlcl9uYW1lJywgJ25ld3VzZXInLCAncG9zaXRpb24nKSkpKTsN CgkkcmV0ID0gZmFsc2U7DQoJJG1zZyA9ICcnOw0KDQoJLy8gU3RhdGUgbWFjaGluZS1lc3F1 ZSBkZWNpc2lvbiB0cmVlDQoJJGV4aXN0cyA9IHNhZmVfcm93KCduYW1lLCB1c2VyX25hbWUn LCAndHhwX3ByZWZzJywgIm5hbWUgPSAnJG5ld25hbWUnIEFORCB1c2VyX25hbWUgPSAnJG5l d3VzZXInIik7DQoJaWYgKGVtcHR5KCRuYW1lKSkgew0KCQkvLyBJbnNlcnQgbmV3DQoJCWlm ICgkZXhpc3RzKSB7DQoJCQkkbXNnID0gYXJyYXkoc21kX3ByZWZhbGl6ZXJfZ1R4dCgnZXhp c3RfYWxyZWFkeScsIGFycmF5KCJ7bmFtZX0iID0+ICRuZXduYW1lKSksIEVfV0FSTklORyk7 DQoJCQkkX1BPU1RbJ3N0ZXAnXSA9ICdlZGl0JzsNCgkJfSBlbHNlIHsNCgkJCSRyZXQgPSBz YWZlX2luc2VydCgndHhwX3ByZWZzJywgInByZWZzX2lkPTEsIG5hbWU9JyRuZXduYW1lJywg dmFsPSckdmFsdWUnLCB0eXBlPSckdHlwZScsIGV2ZW50PSckcHJlZl9ldmVudCcsIGh0bWw9 JyRodG1sJywgcG9zaXRpb249JyRwb3NpdGlvbicsIHVzZXJfbmFtZT0nJG5ld3VzZXInIik7 DQoJCQlpZiAoJHJldCA9PT0gZmFsc2UpIHsNCgkJCQkkbXNnID0gc21kX3ByZWZhbGl6ZXJf Z1R4dCgnY3JlYXRlX2ZhaWxlZCcsIGFycmF5KCJ7bmFtZX0iID0+ICRuZXduYW1lKSk7DQoJ CQl9IGVsc2Ugew0KCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXplcl9nVHh0KCdjcmVhdGVfb2sn LCBhcnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkpOw0KCQkJfQ0KCQl9DQoNCgl9IGVsc2Ug aWYgKCRuYW1lID09ICRuZXduYW1lKSB7DQoJCS8vIFVwZGF0ZQ0KCQlpZiAoJHVzZXJfbmFt ZSA9PSAkbmV3dXNlcikgew0KCQkJLy8gRGlyZWN0IHVwZGF0ZQ0KCQkJaWYgKCRleGlzdHMp IHsNCgkJCQkkcmV0ID0gc2FmZV91cGRhdGUoJ3R4cF9wcmVmcycsICJuYW1lPSckbmV3bmFt ZScsIHZhbD0nJHZhbHVlJywgdHlwZT0nJHR5cGUnLCBldmVudD0nJHByZWZfZXZlbnQnLCBo dG1sPSckaHRtbCcsIHBvc2l0aW9uPSckcG9zaXRpb24nIiwgIm5hbWU9JyRuYW1lJyBBTkQg dXNlcl9uYW1lPSckdXNlcl9uYW1lJyIpOw0KCQkJCWlmICgkcmV0ID09PSBmYWxzZSkgew0K CQkJCQkkbXNnID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9mYWlsZWQnLCBhcnJheSgi e25hbWV9IiA9PiAkbmV3bmFtZSkpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRtc2cgPSBzbWRf cHJlZmFsaXplcl9nVHh0KCdzYXZlX29rJywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUp KTsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXplcl9nVHh0 KCdleGlzdF9ub3QnLCBhcnJheSgie25hbWV9IiA9PiAkbmFtZSkpOw0KCQkJfQ0KCQl9IGVs c2Ugew0KCQkJLy8gUmVuYW1lZCB1c2VyDQoJCQlpZiAoJGV4aXN0cykgew0KCQkJCSRtc2cg PSBhcnJheShzbWRfcHJlZmFsaXplcl9nVHh0KCdleGlzdF9hbHJlYWR5JywgYXJyYXkoIntu YW1lfSIgPT4gJG5ld25hbWUpKSwgRV9XQVJOSU5HKTsNCgkJCQkkX1BPU1RbJ3N0ZXAnXSA9 ICdlZGl0JzsNCgkJCQkkX1BPU1RbJ25hbWUnXSA9ICRuYW1lOw0KCQkJCSRfUE9TVFsndXNl cl9uYW1lJ10gPSAkdXNlcl9uYW1lOw0KCQkJfSBlbHNlIHsNCgkJCQkkcmV0ID0gc2FmZV91 cGRhdGUoJ3R4cF9wcmVmcycsICJuYW1lPSckbmV3bmFtZScsIHZhbD0nJHZhbHVlJywgdHlw ZT0nJHR5cGUnLCBldmVudD0nJHByZWZfZXZlbnQnLCBodG1sPSckaHRtbCcsIHBvc2l0aW9u PSckcG9zaXRpb24nLCB1c2VyX25hbWU9JyRuZXd1c2VyJyIsICJuYW1lPSckbmFtZScgQU5E IHVzZXJfbmFtZT0nJHVzZXJfbmFtZSciKTsNCgkJCQlpZiAoJHJldCA9PT0gZmFsc2UpIHsN CgkJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3NhdmVfZmFpbGVkJywgYXJyYXko IntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkbXNnID0gc21k X3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9vaycsIGFycmF5KCJ7bmFtZX0iID0+ICRuZXduYW1l KSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgl9IGVsc2Ugew0KCQkvLyBVcGRhdGUgYW5kIHJl bmFtZQ0KCQlpZiAoJHVzZXJfbmFtZSA9PSAkbmV3dXNlcikgew0KCQkJLy8gUmVuYW1lZCB1 cGRhdGUNCgkJCWlmICgkZXhpc3RzKSB7DQoJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVyX2dU eHQoJ2V4aXN0X2FscmVhZHknLCBhcnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkpOw0KCQkJ fSBlbHNlIHsNCgkJCQkkcmV0ID0gc2FmZV91cGRhdGUoJ3R4cF9wcmVmcycsICJuYW1lPSck bmV3bmFtZScsIHZhbD0nJHZhbHVlJywgdHlwZT0nJHR5cGUnLCBldmVudD0nJHByZWZfZXZl bnQnLCBodG1sPSckaHRtbCcsIHBvc2l0aW9uPSckcG9zaXRpb24nIiwgIm5hbWU9JyRuYW1l JyBBTkQgdXNlcl9uYW1lPSckdXNlcl9uYW1lJyIpOw0KCQkJCWlmICgkcmV0ID09PSBmYWxz ZSkgew0KCQkJCQkkbXNnID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9mYWlsZWQnLCBh cnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRtc2cg PSBzbWRfcHJlZmFsaXplcl9nVHh0KCdzYXZlX29rJywgYXJyYXkoIntuYW1lfSIgPT4gJG5l d25hbWUpKTsNCgkJCQl9DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkvLyBSZW5hbWVkIHVwZGF0 ZSBhbmQgdXNlcg0KCQkJaWYgKCRleGlzdHMpIHsNCgkJCQkkbXNnID0gYXJyYXkoc21kX3By ZWZhbGl6ZXJfZ1R4dCgnZXhpc3RfYWxyZWFkeScsIGFycmF5KCJ7bmFtZX0iID0+ICRuZXdu YW1lKSksIEVfV0FSTklORyk7DQoJCQkJJF9QT1NUWydzdGVwJ10gPSAnZWRpdCc7DQoJCQkJ JF9QT1NUWyduYW1lJ10gPSAkbmFtZTsNCgkJCQkkX1BPU1RbJ3VzZXJfbmFtZSddID0gJHVz ZXJfbmFtZTsNCgkJCX0gZWxzZSB7DQoJCQkJJHJldCA9IHNhZmVfdXBkYXRlKCd0eHBfcHJl ZnMnLCAibmFtZT0nJG5ld25hbWUnLCB2YWw9JyR2YWx1ZScsIHR5cGU9JyR0eXBlJywgZXZl bnQ9JyRwcmVmX2V2ZW50JywgaHRtbD0nJGh0bWwnLCBwb3NpdGlvbj0nJHBvc2l0aW9uJywg dXNlcl9uYW1lPSckbmV3dXNlciciLCAibmFtZT0nJG5hbWUnIEFORCB1c2VyX25hbWU9JyR1 c2VyX25hbWUnIik7DQoJCQkJaWYgKCRyZXQgPT09IGZhbHNlKSB7DQoJCQkJCSRtc2cgPSBz bWRfcHJlZmFsaXplcl9nVHh0KCdzYXZlX2ZhaWxlZCcsIGFycmF5KCJ7bmFtZX0iID0+ICRu ZXduYW1lKSk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVyX2dU eHQoJ3NhdmVfb2snLCBhcnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkpOw0KCQkJCX0NCgkJ CX0NCgkJfQ0KICAgfQ0KDQoJc21kX3ByZWZhbGl6ZXJfbGlzdCgkbXNnKTsNCn0NCg0KZnVu Y3Rpb24gc21kX3ByZWZhbGl6ZXJfZGVsZXRlKCRtc2c9JycpIHsNCglnbG9iYWwgJHNtZF9w cmVmYWxpemVyX2V2ZW50Ow0KDQoJZXh0cmFjdChkb1NsYXNoKGdwc2EoYXJyYXkoJ25hbWUn LCAndXNlcl9uYW1lJykpKSk7DQoJJHJldCA9IGZhbHNlOw0KCSRycyA9IHNhZmVfcm93KCcq JywgJ3R4cF9wcmVmcycsICJuYW1lID0gJyRuYW1lJyBBTkQgdXNlcl9uYW1lID0gJyR1c2Vy X25hbWUnIik7DQoJaWYgKCRycyAmJiBzbWRfcHJlZmFsaXplcl9jYW5fZGVsZXRlKCRuYW1l KSkgew0KCQlleHRyYWN0KCRycyk7DQoJCSRyZXQgPSBzYWZlX2RlbGV0ZSgndHhwX3ByZWZz JywgIm5hbWUgPSAnJG5hbWUnIEFORCB1c2VyX25hbWU9JyR1c2VyX25hbWUnIik7DQoJfQ0K CWlmICgkcmV0ID09PSBmYWxzZSkgew0KCQlzbWRfcHJlZmFsaXplcl9saXN0KHNtZF9wcmVm YWxpemVyX2dUeHQoJ2RlbGV0ZV9mYWlsZWQnLCBhcnJheSgie25hbWV9IiA9PiAkbmFtZSkp KTsNCgl9IGVsc2Ugew0KCQlzbWRfcHJlZmFsaXplcl9saXN0KHNtZF9wcmVmYWxpemVyX2dU eHQoJ2RlbGV0ZV9vaycsIGFycmF5KCJ7bmFtZX0iID0+ICRuYW1lKSkpOw0KCX0NCn0NCg0K Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBQbHVnaW4tc3BlY2lmaWMgcmVwbGFj ZW1lbnQgc3RyaW5ncyAtIGxvY2FsaXNlIGFzIHJlcXVpcmVkDQpmdW5jdGlvbiBzbWRfcHJl ZmFsaXplcl9nVHh0KCR3aGF0LCAkYXR0cyA9IGFycmF5KCkpIHsNCgkkbGFuZyA9IGFycmF5 KA0KCQknYWN0aW9ucycgPT4gJ0FjdGlvbnMnLA0KCQknYWxsX3VzZXJzJyA9PiAnYWxsIHVz ZXJzJywNCgkJJ2NyZWF0ZV9mYWlsZWQnID0+ICdQcmVmIHtuYW1lfSBOT1QgY3JlYXRlZCcs DQoJCSdjcmVhdGVfb2snID0+ICdQcmVmIHtuYW1lfSBjcmVhdGVkJywNCgkJJ2RlbGV0ZV9j b25maXJtJyA9PiAnUmVhbGx5IGRlbGV0ZSBwcmVmIHtuYW1lfSAoe3VzZXJfbmFtZX0pPycs DQoJCSdkZWxldGVfZmFpbGVkJyA9PiAnUHJlZiB7bmFtZX0gTk9UIGRlbGV0ZWQnLA0KCQkn ZGVsZXRlX29rJyA9PiAnUHJlZiB7bmFtZX0gZGVsZXRlZCcsDQoJCSdleGlzdF9hbHJlYWR5 JyA9PiAnUHJlZiB7bmFtZX0gYWxyZWFkeSBleGlzdHMuIENob29zZSBhbm90aGVyIG5hbWUv dXNlcicsDQoJCSdleGlzdF9ub3QnID0+ICdDYW5ub3QgdXBkYXRlOiBwcmVmIHtuYW1lfSBk b2VzIG5vdCBleGlzdCcsDQoJCSdldmVudCcgPT4gJ0V2ZW50JywNCgkJJ2h0bWwnID0+ICdJ bnB1dCBjb250cm9sJywNCgkJJ25ldycgPT4gJ05ldyBwcmVmJywNCgkJJ3Bvc2l0aW9uJyA9 PiAnUG9zaXRpb24nLA0KCQknc2F2ZV9mYWlsZWQnID0+ICdQcmVmIHtuYW1lfSBOT1Qgc2F2 ZWQnLA0KCQknc2F2ZV9vaycgPT4gJ1ByZWYge25hbWV9IHNhdmVkJywNCgkJJ3RhYl9uYW1l JyA9PiAnUHJlZmFsaXplcicsDQoJCSd1c2VyJyA9PiAnVXNlcicsDQoJKTsNCglyZXR1cm4g c3RydHIoJGxhbmdbJHdoYXRdLCAkYXR0cyk7DQp9IjtzOjQ6InR5cGUiO3M6MToiMyI7czo1 OiJvcmRlciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NDoiaGVscCI7czo2MDg1 OiI8ZGl2IGlkPSJzbWRfaGVscCI+CgoJPGgxPnNtZF9wcmVmYWxpemVyPC9oMT4KCgk8cD5X aXRoIHRoZSBhZHZlbnQgb2YgcGVyLXVzZXIgcHJlZmVyZW5jZXMsIHlvdXIgcHJlZnMgdGFi bGUgY291bGQgYmVjb21lIHJhdGhlciBsYXJnZS4gS2VlcCBpdCB1bmRlciBjb250cm9sIHdp dGggdGhpcyBwbHVnaW4uIEFsc28gdXNlZnVsIGlmIHlvdSBoYXZlIHVuaW5zdGFsbGVkIHBs dWdpbnMgeW91IG5vIGxvbmdlciB1c2UgdGhhdCBoYXZlIGxlZnQgcHJlZnMgYmVoaW5kLjwv cD4KCgk8aDI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+QWRkLCBlZGl0IG9yIHJlbW92 ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwcmVmZXJlbmNlcyBzZXQgaW4geW91 ciBkYXRhYmFzZTwvbGk+CgkJPGxpPkZpbHRlciBwcmVmcyBieSBuYW1lIC8gdmFsdWUgLyB1 c2VyIC8gdHlwZSB0byBoZWxwIGZpbmQgdGhlIG9uZXMgeW91IHdhbnQ8L2xpPgoJCTxsaT5D cmVhdGUgcmVndWxhciBvciBoaWRkZW4gcHJlZnMsIGZvciBhbGwgb3Igc3BlY2lmaWMgdXNl cnM8L2xpPgoJPC91bD4KCgk8aDI+QXV0aG9yIC8gY3JlZGl0czwvaDI+CgoJPHA+V3JpdHRl biBieSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29udGFjdCI+U3RlZiBEYXdz b248L2E+LjwvcD4KCgk8aDI+SW5zdGFsbGF0aW9uIC8gdW5pbnN0YWxsYXRpb248L2gyPgoK CTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3Rl eHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzExMjkvc21kX3ByZWZhbGl6ZXIiPnRleHRwYXR0ZXJu Lm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNv ZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5k IGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRl eHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTMyMjcyIj5mb3J1bSB0aHJlYWQ8L2E+ IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lz ZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyB1bmluc3RhbGwsIGRlbGV0ZSBmcm9tIHRo ZSBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhZ2UuPC9wPgoKCTxoMj5Vc2FnZTwvaDI+CgoJPHA+ VmlzaXQgdGhlIEFkbWluID0mZ3Q7IFByZWZhbGl6ZXIgcGFnZSB0byBzZWUgYSBsaXN0IG9m IGFsbCBkZWZpbmVkIHByZWZlcmVuY2VzIGluIHlvdXIgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gZGF0YWJhc2UuPC9wPgoKCTxwPkVhY2ggcm93IGhhcyBhY3Rpb25zIGluIHRo ZSBsYXN0IGNvbHVtbiB0aGF0IGFsbG93IHlvdSB0byBlZGl0IG9yIGRlbGV0ZSBhbnkgcHJl ZmVyZW5jZS4gU29tZSAoc3lzdGVtKSBwcmVmcyBjYW5ub3QgYmUgZGVsZXRlZCBiZWNhdXNl IHRoYXQgd291bGQgcG90ZW50aWFsbHkgaHVydCB5b3VyIHNpdGU7IHRoZSBwbHVnaW4gdHJp ZXMgdG8gbGltaXQgeW91IHRvIG9ubHkgYmVpbmcgYWJsZSB0byBkZWxldGUgcGVyLXVzZXIg b3IgcGx1Z2luIHByZWZzLCBidXQgeW91IHNob3VsZCBzdGlsbCBleGVyY2lzZSBjYXV0aW9u LjwvcD4KCgk8cD5UaGUgY29sdW1ucyBhcmUgYXMgZm9sbG93czo8L3A+CgoJPHVsPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+TmFtZTwvc3Bhbj4gOiBUaGUgbmFtZSBvZiB0aGUgcHJl ZmVyZW5jZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5WYWx1ZTwvc3Bhbj4gOiBU aGUgc3RvcmVkIGNvbnRlbnRzIG9mIHRoZSBwcmVmZXJlbmNlPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPlR5cGU8L3NwYW4+IDogV2hldGhlciB0aGUgcHJlZmVyZW5jZSBhcHBl YXJzIG9uIHRoZSA8ZW0+QmFzaWMgUHJlZnM8L2VtPiBvciA8ZW0+QWR2YW5jZWQgUHJlZnM8 L2VtPiBzdWJ0YWIuIElmIGl0IGRvZXMgbm90IGFwcGVhciBhbnl3aGVyZSBhdCBhbGwsIGl0 IGlzIDxlbT5IaWRkZW48L2VtPiBhbmQgaXMgdXN1YWxseSB1c2VkIGJ5IDxzcGFuIGNsYXNz PSJjYXBzIj5UWFA8L3NwYW4+IG9yIGEgcGx1Z2luIHRvIGtlZXAgdHJhY2sgb2YgdGhpbmdz PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPkV2ZW50PC9zcGFuPiA6IFRoZSBldmVu dCAob3IgYWRtaW4tc2lkZSB0YWIpIHRvIHdoaWNoIHRoaXMgcHJlZiBpcyBhc3NvY2lhdGVk LiBVc2VmdWwgZm9yIGdyb3VwaW5nIHByZWYgdmFsdWVzIHRvZ2V0aGVyIG9uLXNjcmVlbjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5JbnB1dCBjb250cm9sPC9zcGFuPiA6IElm IHRoZSBwcmVmZXJlbmNlIGlzIHJlbmRlcmVkIG9uLXNjcmVlbiB0aGVuIHRoaXMgZ292ZXJu cyB3aGljaCBVSSB3aWRnZXQgaXMgZHJhd24gb3IgaG93IHRoZSBjb250cm9sIHdpbGwgYmVo YXZlLiBDb21tb24gZW50cmllcyBpbiB0aGlzIGNvbHVtbiBhcmU6Cgk8dWw+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj50ZXh0X2lucHV0PC9zcGFuPiA6IChkZWZhdWx0KSBBIHN0YW5k YXJkIHRleHQgYm94PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmN1c3RvbV9zZXQ8 L3NwYW4+IDogQSBjdXN0b20gZmllbGQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ ZGF0ZWZvcm1hdHM8L3NwYW4+IDogU29tZSBraW5kIG9mIGRhdGUgZm9ybWF0dGluZyBzdHJp bmc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+eWVzbm9yYWRpbzwvc3Bhbj4gOiBB IHllcyBvciBubyByYWRpbyBidXR0b24gc2V0PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPlVzZXI8L3NwYW4+IDogTG9naW4gbmFtZSB0byB3aG9tIHRoZSBw cmVmZXJlbmNlIGJlbG9uZ3M8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+UG9zaXRp b248L3NwYW4+IDogV2hlbiBsaXN0aW5nIHByZWZlcmVuY2VzIG9uLXNjcmVlbiwgdGhlIHBv c2l0aW9uIGRpY3RhdGVzIHRoZWlyIG9yZGVyLiBMb3dlc3QgbnVtYmVyZWQgdmFsdWVzIGFy ZSBkaXNwbGF5ZWQgZmlyc3QuIEl0IGlzIGNvbW1vbiBwcmFjdGljZSB0byBhc3NpZ24gcG9z aXRpb25zIGluIGluY3JlbWVudHMgb2YgMTAgb3IgMjAgc28gdGhlcmUgaXMgcm9vbSB0byBl YXNpbHkgaW5zZXJ0IHZhbHVlcyBsYXRlcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5BY3Rpb25zPC9zcGFuPiA6IEFjdGlvbnMgdG8gcGVyZm9ybSBvbiBlYWNoIHByZWZlcmVu Y2U6Cgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5bRWRpdF08L3NwYW4+IDogRWRp dCB0aGUgdmFyaW91cyBkZXRhaWxzIG9mIHRoZSBwcmVmZXJlbmNlLiBJbnB1dCBjb250cm9s cyBhcHBlYXIgaW5saW5lIGZvciB5b3UgdG8gYWx0ZXIgdGhlIHZhbHVlcy4gV2hlbiB5b3Ug YXJlIGRvbmUsIGNsaWNrIDxlbT5TYXZlPC9lbT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+W0RlbGV0ZV08L3NwYW4+IDogUGVybWFuZW50bHkgcmVtb3ZlIHRoZSBwcmVmZXJl bmNlIHZhbHVlIGZyb20geW91ciBkYXRhYmFzZS4gWW91IHdpbGwgaGF2ZSBhIGNoYW5jZSB0 byBjb25maXJtIHlvdXIgaW50ZW50aW9ucy4gQmUgY2FyZWZ1bCE8L2xpPgoJPC91bD48L2xp PgoJPC91bD4KCgk8cD5Vc2UgdGhlIHNlYXJjaCBmZWF0dXJlIHRvIGxpbWl0IHRoZSBsaXN0 IHRvIHRoZSBtYXRjaGVkIGl0ZW1zLiBXaGVuIHNlYXJjaGluZyBieSA8Y29kZT5UeXBlPC9j b2RlPiB5b3UgY2FuIGVpdGhlciB1c2UgPGNvZGU+YmFzaWM8L2NvZGU+LCA8Y29kZT5hZHZh bmNlZDwvY29kZT4gb3IgPGNvZGU+aGlkZGVuPC9jb2RlPiwgb3IgdXNlIHRoZWlyIG51bWVy aWMgY291bnRlcnBhcnRzIDAsIDEgb3IgMiByZXNwZWN0aXZlbHkuPC9wPgoKCTxwPkNsaWNr IDxlbT5OZXcgcHJlZjwvZW0+IHRvIGFkZCBhIHByZWZlcmVuY2UgdmFsdWUgdG8gdGhlIGRh dGFiYXNlLiBBIHJvdyBvZiBpbnB1dCBjb250cm9scyB3aWxsIHNsaWRlIGRvd24gYWxsb3dp bmcgeW91IHRvIGVudGVyIHlvdXIgZGVzaXJlZCB2YWx1ZXMuIENsaWNrIDxlbT5BZGQ8L2Vt PiB0byBjb21taXQgdGhlIG5ldyBwcmVmZXJlbmNlLjwvcD4KCgk8aDM+Tm90ZXM8L2gzPgoK CTx1bD4KCQk8bGk+SWYgeW91IHRyeSB0byBlZGl0IGEgcHJlZmVyZW5jZSBhbmQgcmVuYW1l IGl0IHRvIHRoYXQgb2YgYW4gZXhpc3RpbmcgcHJlZmVyZW5jZSBvd25lZCBieSBzb21lb25l IGVsc2UsIHRoZSBwbHVnaW4gd2lsbCB3YXJuIHlvdSBhbmQgeW91ciBlZGl0IHdpbGwgYmUg cmV2ZXJ0ZWQgdG8gaXRzIG9yaWdpbmFsIHN0YXRlPC9saT4KCQk8bGk+SWYgeW91IHRyeSB0 byBjcmVhdGUgYSBwcmVmZXJlbmNlIHZhbHVlIHRoYXQgd291bGQgY2xvYmJlciBhbiBleGlz dGluZyBzZXR0aW5nLCB0aGUgcGx1Z2luIHdpbGwgd2FybiB5b3UuIElmIHlvdSBjbGljayA8 ZW0+TmV3IHByZWY8L2VtPiBhZ2FpbiB0aG91Z2gsIHlvdXIgbW9zdCByZWNlbnRseSBlbnRl cmVkIHZhbHVlcyB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZS4gVGhlIG5hbWUgYW5kIHVzZXIg d2lsbCBiZSByZXNldCwgaG93ZXZlcjwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iY2hhbmdlbG9n Ij5DaGFuZ2Vsb2c8L2gyPgoKCTx1bD4KCQk8bGk+MDYgTm92IDA5IHwgMC4xIHwgSW5pdGlh bCByZWxlYXNlPC9saT4KCQk8bGk+MDcgTm92IDA5IHwgMC4xMSB8IEFkZGVkIGhlYWRpbmcg cm93IGFib3ZlIHJvdyBiZWluZyBlZGl0ZWQgKHRoYW5rcyBVbGkpPC9saT4KCTwvdWw+Cgo8 L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0eXBlPSJ0 ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAgY29k ZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBj b3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hl bHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQg Izk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2lu OjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGgxIHsgY29sb3I6 ICMzNjk7IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0 LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNv bGlkIGJsYWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBH ZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMjc1Njg1OyBm b250OiBib2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7 IG1hcmdpbjogMTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNv cmF0aW9uOnVuZGVybGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlh bCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7 dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdl aWdodDpib2xkOyBjb2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6 I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRo OjkwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVs cCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVl bSAwO30KI3NtZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hl bHAgLnJlcXVpcmVkIHtjb2xvcjpyZWQ7fQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIw cHggNXB4IDMwcHg7IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwv c3R5bGU+CjwhLS0gKioqIEVORCBQTFVHSU4gQ1NTICoqKiAtLT4KIjtzOjM6Im1kNSI7czoz MjoiNjg2OGJlNWU1YmFmMDM3YzZlMmUyNDBjMjAxNmU1N2UiO30=