# Name: smd_prefalizer v0.20 # Type: Admin/Client 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 d3Nvbi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4yMCI7czoxMToiZGVzY3JpcHRpb24i O3M6NDA6IkFkZCwgcmVtb3ZlLCBvciBlZGl0IFRYUCBwcmVmcyB3aXRoIGVhc2UiO3M6NDoi Y29kZSI7czoyMjI4ODoiaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgew0KCWdsb2Jh bCAkc21kX3ByZWZhbGl6ZXJfZXZlbnQsICRzbWRfcHJlZmFsaXplcl9wcml2cywgJHNtZF9w cmVmYWxpemVyX3R5cGVzOw0KDQoJJHNtZF9wcmVmYWxpemVyX2V2ZW50ID0gJ3NtZF9wcmVm YWxpemVyJzsNCgkkc21kX3ByZWZhbGl6ZXJfcHJpdnMgPSAnMSc7DQoJJHNtZF9wcmVmYWxp emVyX3R5cGVzID0gYXJyYXkoMCA9PiAnYmFzaWMnLCAxID0+ICdhZHZhbmNlZCcsIDIgPT4g J2hpZGRlbicpOw0KDQoJYWRkX3ByaXZzKCRzbWRfcHJlZmFsaXplcl9ldmVudCwgJHNtZF9w cmVmYWxpemVyX3ByaXZzKTsNCglyZWdpc3Rlcl90YWIoImFkbWluIiwgJHNtZF9wcmVmYWxp emVyX2V2ZW50LCBzbWRfcHJlZmFsaXplcl9nVHh0KCd0YWJfbmFtZScpKTsNCglyZWdpc3Rl cl9jYWxsYmFjaygnc21kX3ByZWZhbGl6ZXInLCAkc21kX3ByZWZhbGl6ZXJfZXZlbnQpOw0K fQ0KDQpmdW5jdGlvbiBzbWRfcHJlZmFsaXplcigkZXZlbnQsICRzdGVwKSB7DQoJaWYoISRz dGVwIG9yICFpbl9hcnJheSgkc3RlcCwgYXJyYXkoDQoJCQknc21kX3ByZWZhbGl6ZXJfc2F2 ZScsDQoJCQknc21kX3ByZWZhbGl6ZXJfZGVsZXRlJywNCgkJCSdzbWRfcHJlZmFsaXplcl9j aGFuZ2VfcGFnZWJ5JywNCgkJKSkpIHsNCgkJc21kX3ByZWZhbGl6ZXJfbGlzdCgnJyk7DQoJ fSBlbHNlICRzdGVwKCk7DQp9DQoNCi8vIExpc3QgdGhlIGNob3NlbiBwcmVmcw0KZnVuY3Rp b24gc21kX3ByZWZhbGl6ZXJfbGlzdCgkbXNnPScnKSB7DQoJZ2xvYmFsICRzbWRfcHJlZmFs aXplcl9ldmVudCwgJHNtZF9wcmVmYWxpemVyX3R5cGVzOw0KDQoJcGFnZXRvcChzbWRfcHJl ZmFsaXplcl9nVHh0KCd0YWJfbmFtZScpLCAkbXNnKTsNCglleHRyYWN0KGdwc2EoYXJyYXko J3N0ZXAnLCAncGFnZScsICdzb3J0JywgJ2RpcicsICdjcml0JywgJ3NlYXJjaF9tZXRob2Qn LCAnbmFtZScsICd2YWx1ZScsICd0eXBlJywgJ3ByZWZfZXZlbnQnLCAnaHRtbCcsICd1c2Vy X25hbWUnLCAncG9zaXRpb24nLCAnZXhwb3NlJykpKTsNCgkkbXNnID0gKCRtc2cpID8gJG1z ZyA6IGdwcygnbXNnJyk7DQoNCgkvLyBIYW5kbGUgcGFnaW5nIC8gc29ydGluZw0KCSRwYWdl YnkgPSAoZ3BzKCdxdHknKSkgPyBncHMoJ3F0eScpIDogKChjcygnc21kX3ByZWZhbGl6ZXJf cGFnZWJ5JykpID8gY3MoJ3NtZF9wcmVmYWxpemVyX3BhZ2VieScpIDogMjUpOw0KCSRkaXIg PSAoJGRpciA9PSAnZGVzYycpID8gJ2Rlc2MnIDogJ2FzYyc7DQoJc3dpdGNoICgkc29ydCkg ew0KCQljYXNlICd2YWx1ZSc6DQoJCQkkc29ydF9zcWwgPSAndmFsICcuJGRpci4nLCBuYW1l IGFzYyc7DQoJCQlicmVhazsNCgkJY2FzZSAndHlwZSc6DQoJCQkkc29ydF9zcWwgPSAndHlw ZSAnLiRkaXIuJywgbmFtZSBhc2MnOw0KCQkJYnJlYWs7DQoJCWNhc2UgJ2V2ZW50JzoNCgkJ CSRzb3J0X3NxbCA9ICdldmVudCAnLiRkaXIuJywgbmFtZSBhc2MnOw0KCQkJYnJlYWs7DQoJ CWNhc2UgJ2h0bWwnOg0KCQkJJHNvcnRfc3FsID0gJ2h0bWwgJy4kZGlyLicsIG5hbWUgYXNj JzsNCgkJCWJyZWFrOw0KCQljYXNlICd1c2VyJzoNCgkJCSRzb3J0X3NxbCA9ICd1c2VyX25h bWUgJy4kZGlyLicsIG5hbWUgYXNjJzsNCgkJCWJyZWFrOw0KCQljYXNlICdwb3NpdGlvbic6 DQoJCQkkc29ydF9zcWwgPSAncG9zaXRpb24gJy4kZGlyLicsIG5hbWUgYXNjJzsNCgkJCWJy ZWFrOw0KCQljYXNlICduYW1lJzoNCgkJZGVmYXVsdDoNCgkJCSRzb3J0ID0gJ25hbWUnOw0K CQkJJHNvcnRfc3FsID0gJ25hbWUgJy4kZGlyOw0KCQkJYnJlYWs7DQoJfQ0KCSRzd2l0Y2hf ZGlyID0gKCRkaXIgPT0gJ2Rlc2MnKSA/ICdhc2MnIDogJ2Rlc2MnOw0KCSRjcml0ZXJpYSA9 IDE7DQoNCglpZiAoJHNlYXJjaF9tZXRob2QgJiYgJGNyaXQgIT09IGZhbHNlKSB7DQoJCSRj cml0X2VzY2FwZWQgPSBkb1NsYXNoKCRjcml0KTsNCgkJJGNyaXRzcWwgPSBhcnJheSgNCgkJ CSduYW1lJyA9PiAibmFtZSBsaWtlICclJGNyaXRfZXNjYXBlZCUnIiwNCgkJCSd2YWx1ZScg PT4gInZhbCBsaWtlICclJGNyaXRfZXNjYXBlZCUnIiwNCgkJCSd0eXBlJyA9PiAidHlwZSA9 ICIgLiAoKGlzX251bWVyaWMoJGNyaXRfZXNjYXBlZCkpID8gIiRjcml0X2VzY2FwZWQiIDog KCgoJGNyaXRfbnVtYmVyID0gYXJyYXlfc2VhcmNoKHN0cnRvbG93ZXIoJGNyaXRfZXNjYXBl ZCksICRzbWRfcHJlZmFsaXplcl90eXBlcykpICE9PSBmYWxzZSkgPyAkY3JpdF9udW1iZXIg OiAwKSksDQoJCQknZXZlbnQnID0+ICJldmVudCBsaWtlICclJGNyaXRfZXNjYXBlZCUnIiwN CgkJCSdodG1sJyA9PiAiaHRtbCBsaWtlICclJGNyaXRfZXNjYXBlZCUnIiwNCgkJCSd1c2Vy JyA9PiAidXNlcl9uYW1lIGxpa2UgJyUkY3JpdF9lc2NhcGVkJSciLA0KCQkJJ3Bvc2l0aW9u JyA9PiAicG9zaXRpb24gPSAnJGNyaXRfZXNjYXBlZCciLA0KCQkpOw0KDQoJCWlmIChhcnJh eV9rZXlfZXhpc3RzKCRzZWFyY2hfbWV0aG9kLCAkY3JpdHNxbCkpIHsNCgkJCSRjcml0ZXJp YSA9ICRjcml0c3FsWyRzZWFyY2hfbWV0aG9kXTsNCgkJCSRsaW1pdCA9IDEwMDA7DQoJCX0g ZWxzZSB7DQoJCQkkc2VhcmNoX21ldGhvZCA9ICcnOw0KCQkJJGNyaXQgPSAnJzsNCgkJfQ0K CX0gZWxzZSB7DQoJCSRzZWFyY2hfbWV0aG9kID0gJyc7DQoJCSRjcml0ID0gJyc7DQoJfQ0K CSR0b3RhbCA9IHNhZmVfY291bnQoJ3R4cF9wcmVmcycsICIkY3JpdGVyaWEiKTsNCgkkbGlt aXQgPSBtYXgoQCRwYWdlYnksIDE1KTsNCglsaXN0KCRwYWdlLCAkb2Zmc2V0LCAkbnVtUGFn ZXMpID0gcGFnZXIoJHRvdGFsLCAkbGltaXQsICRwYWdlKTsNCg0KCSRxcyA9IGFycmF5KA0K CQkiZXZlbnQiID0+ICRzbWRfcHJlZmFsaXplcl9ldmVudCwNCgkJInBhZ2UiID0+ICRwYWdl LA0KCQkic29ydCIgPT4gJHNvcnQsDQoJCSJkaXIiID0+ICRkaXIsDQoJCSJjcml0IiA9PiAk Y3JpdCwNCgkJInNlYXJjaF9tZXRob2QiID0+ICRzZWFyY2hfbWV0aG9kLA0KCQkiZXhwb3Nl IiA9PiAkZXhwb3NlLA0KCSk7DQoNCgkvLyBMaXN0IHRoZSBkZXNpcmVkIHByZWZzDQoJJHRo ZVByZWZzID0gc2FmZV9yb3dzKCcqJywgJ3R4cF9wcmVmcycsICIkY3JpdGVyaWEgb3JkZXIg YnkgJHNvcnRfc3FsIGxpbWl0ICRvZmZzZXQsICRsaW1pdCIpOw0KCSRhdXRob3JfbGlzdCA9 IHNhZmVfY29sdW1uKCduYW1lJywgJ3R4cF91c2VycycsICcxID0gMScpOw0KCWVjaG8gc21k X3ByZWZhbGl6ZXJfc2VhcmNoX2Zvcm0oJGNyaXQsICRzZWFyY2hfbWV0aG9kKTsNCgkkZWRp dEZvY3VzID0gKCRzdGVwID09ICdlZGl0JykgPyAnalF1ZXJ5KGZ1bmN0aW9uKCkgeyBqUXVl cnkoIiNzbWRfcHJlZmFsaXplcl92YWx1ZSB0ZXh0YXJlYSIpLmZvY3VzKCk7IH0pOyc6ICcn Ow0KDQoJLy8gQW55IGVkaXRzIHRvIGFuIGVudHJ5IGFyZSBjb3BpZWQgdG8gdGhpcyBoaWRk ZW4gZm9ybSBhbmQgdGhlbiBzdWJtaXR0ZWQNCgllY2hvIDw8PEVPQw0KPHNjcmlwdCB0eXBl PSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gc21kX3ByZWZhbGl6ZXJfc2F2ZSgpIHsN Cgl2YXIgc3R5cGUgPSBqUXVlcnkoIiNzbWRfcHJlZmFsaXplcl9lZGl0ZWQgI3NtZF9wcmVm YWxpemVyX3R5cGUgb3B0aW9uOnNlbGVjdGVkIikudmFsKCk7DQoJdmFyIHV0eXBlID0galF1 ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfZWRpdGVkICNzbWRfcHJlZmFsaXplcl91c2VyX25hbWUg b3B0aW9uOnNlbGVjdGVkIikudmFsKCk7DQoJalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfaW5w dXQgaW5wdXRbbmFtZT0nbmV3bmFtZSddIikudmFsKGpRdWVyeSgiI3NtZF9wcmVmYWxpemVy X2VkaXRlZCAjc21kX3ByZWZhbGl6ZXJfbmFtZSBpbnB1dCIpLnZhbCgpKTsNCglqUXVlcnko IiNzbWRfcHJlZmFsaXplcl9pbnB1dCBpbnB1dFtuYW1lPSd2YWx1ZSddIikudmFsKGpRdWVy eSgiI3NtZF9wcmVmYWxpemVyX2VkaXRlZCAjc21kX3ByZWZhbGl6ZXJfdmFsdWUgdGV4dGFy ZWEiKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfaW5wdXQgI3NtZF9wcmVm YWxpemVyX25ld190eXBlIG9wdGlvbjplcSgiK3N0eXBlKyIpIikuYXR0cignc2VsZWN0ZWQn LCAnc2VsZWN0ZWQnKTsNCglqUXVlcnkoIiNzbWRfcHJlZmFsaXplcl9pbnB1dCBpbnB1dFtu YW1lPSdwcmVmX2V2ZW50J10iKS52YWwoalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfZWRpdGVk ICNzbWRfcHJlZmFsaXplcl9ldmVudCBpbnB1dCIpLnZhbCgpKTsNCglqUXVlcnkoIiNzbWRf cHJlZmFsaXplcl9pbnB1dCBpbnB1dFtuYW1lPSdodG1sJ10iKS52YWwoalF1ZXJ5KCIjc21k X3ByZWZhbGl6ZXJfZWRpdGVkICNzbWRfcHJlZmFsaXplcl9odG1sIGlucHV0IikudmFsKCkp Ow0KCWpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2lucHV0ICNzbWRfcHJlZmFsaXplcl9uZXd1 c2VyIG9wdGlvblt2YWx1ZT0nIit1dHlwZSsiJ10iKS5hdHRyKCdzZWxlY3RlZCcsICdzZWxl Y3RlZCcpOw0KCWpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2lucHV0IGlucHV0W25hbWU9J3Bv c2l0aW9uJ10iKS52YWwoalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfZWRpdGVkICNzbWRfcHJl ZmFsaXplcl9wb3NpdGlvbiBpbnB1dCIpLnZhbCgpKTsNCglqUXVlcnkoImZvcm1bbmFtZT0n c21kX3ByZWZhbGl6ZXJfaW5wdXQnXSIpLnRyaWdnZXIoInN1Ym1pdCIpOw0KfQ0KZnVuY3Rp b24gc21kX3ByZWZhbGl6ZXJfdG9nZ2xlbmV3KCkgew0KCWJveCA9IGpRdWVyeSgiZm9ybVtu YW1lPSdzbWRfcHJlZmFsaXplcl9pbnB1dCddIik7DQoJaWYgKGJveC5jc3MoImRpc3BsYXki KSA9PSAibm9uZSIpIHsNCgkJYm94LnNsaWRlRG93bignZmFzdCcpOw0KCX0gZWxzZSB7DQoJ CWJveC5zbGlkZVVwKCdmYXN0Jyk7DQoJfQ0KCWpRdWVyeSgnI3NtZF9wcmVmYWxpemVyX25l dyAuc21kX2ZvY3VzJykuZm9jdXMoKTsNCglyZXR1cm4gZmFsc2U7DQp9DQp7JGVkaXRGb2N1 c30NCjwvc2NyaXB0Pg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCi5zbWRfaGlkZGVuIHsN CglkaXNwbGF5Om5vbmU7DQp9DQojc21kX3ByZWZhbGl6ZXJfbG9uZ2Zvcm0gI2xpc3QgdHIu ZGF0YTpob3ZlciB7DQoJYmFja2dyb3VuZDojZTdlN2U3Ow0KfQ0KPC9zdHlsZT4NCkVPQzsN Cg0KCSRuZXdidG4gPSAnPGEgY2xhc3M9Im5hdmxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9InJl dHVybiBzbWRfcHJlZmFsaXplcl90b2dnbGVuZXcoKTsiPicuc21kX3ByZWZhbGl6ZXJfZ1R4 dCgnbmV3JykuJzwvYT4nOw0KCSRoZWFkaW5ncyA9IGFzc0hlYWQoJ25hbWUnLCd2YWx1ZScs IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3Zpc2liaWxpdHknKSwgc21kX3ByZWZhbGl6ZXJfZ1R4 dCgnZXZlbnQnKSwgc21kX3ByZWZhbGl6ZXJfZ1R4dCgnaHRtbCcpLCBzbWRfcHJlZmFsaXpl cl9nVHh0KCd1c2VyJyksIHNtZF9wcmVmYWxpemVyX2dUeHQoJ3Bvc2l0aW9uJyksIHNtZF9w cmVmYWxpemVyX2dUeHQoJ2FjdGlvbnMnKSk7DQoJZWNobyAnPGZvcm0gbWV0aG9kPSJwb3N0 IiBuYW1lPSJzbWRfcHJlZmFsaXplcl9pbnB1dCIgY2xhc3M9InNtZF9oaWRkZW4iIGFjdGlv bj0iJy5qb2luX3FzKCRxcykuJyI+JzsNCgllY2hvIHNJbnB1dCgnc21kX3ByZWZhbGl6ZXJf c2F2ZScpOw0KCWVjaG8gaElucHV0KCduYW1lJywoKCRzdGVwPT0nZWRpdCcpID8gJG5hbWUg OiAnJykpOw0KCWVjaG8gaElucHV0KCd1c2VyX25hbWUnLCgoJHN0ZXA9PSdlZGl0JykgPyAk dXNlcl9uYW1lIDogJycpKTsNCgllY2hvIHN0YXJ0VGFibGUoJ3NtZF9wcmVmYWxpemVyX25l dycsICcnLCAnJywgOCk7DQoJZWNobyB0cigkaGVhZGluZ3MpOw0KCWVjaG8gJzx0ciBpZD0i c21kX3ByZWZhbGl6ZXJfaW5wdXQiPic7DQoJZWNobyB0ZChmSW5wdXQoJ3RleHQnLCAnbmV3 bmFtZScsICgoJHN0ZXA9PSdlZGl0JykgPyAkbmFtZSA6ICcnKSwgJ3NtZF9mb2N1cycpKQ0K CSAgICAudGQoZklucHV0KCd0ZXh0JywgJ3ZhbHVlJywgKCgkc3RlcD09J2VkaXQnKSA/ICR2 YWx1ZSA6ICcnKSkpDQoJICAgIC50ZChzZWxlY3RJbnB1dCgndHlwZScsICRzbWRfcHJlZmFs aXplcl90eXBlcywgKCgkc3RlcD09J2VkaXQnKSA/ICR0eXBlIDogMiksIGZhbHNlLCAnJywg J3NtZF9wcmVmYWxpemVyX25ld190eXBlJykpDQoJICAgIC50ZChmSW5wdXQoJ3RleHQnLCAn cHJlZl9ldmVudCcsICgoJHN0ZXA9PSdlZGl0JykgPyAkcHJlZl9ldmVudCA6ICcnKSkpDQoJ ICAgIC50ZChmSW5wdXQoJ3RleHQnLCAnaHRtbCcsICgoJHN0ZXA9PSdlZGl0JykgPyAkaHRt bCA6ICd0ZXh0X2lucHV0JykpKQ0KCSAgICAudGQoc2VsZWN0SW5wdXQoJ25ld3VzZXInLCAk YXV0aG9yX2xpc3QsICgoJHN0ZXA9PSdlZGl0JykgPyAkdXNlcl9uYW1lIDogJycpLCB0cnVl LCAnJywgJ3NtZF9wcmVmYWxpemVyX25ld3VzZXInKSkNCgkgICAgLnRkKGZJbnB1dCgndGV4 dCcsICdwb3NpdGlvbicsICgoJHN0ZXA9PSdlZGl0JykgPyAkcG9zaXRpb24gOiAnMCcpKSkN CgkgICAgLnRkKGZJbnB1dCgnc3VibWl0JywgJycsIGdUeHQoJ2FkZCcpLCAnc21hbGxlcmJv eCcpKTsNCgllY2hvICc8L3RyPic7DQoJZWNobyBlbmRUYWJsZSgpOw0KCWVjaG8gJzwvZm9y bT4nOw0KDQoJLy8gVGhlIG1haW4gbGlzdA0KCWVjaG8gJzxmb3JtIG1ldGhvZD0icG9zdCIg bmFtZT0ibG9uZ2Zvcm0iIGlkPSJzbWRfcHJlZmFsaXplcl9sb25nZm9ybSIgYWN0aW9uPSIn LmpvaW5fcXMoJHFzKS4nIj4nOw0KCWVjaG8gc3RhcnRUYWJsZSgnbGlzdCcsJycsJycsOCk7 DQoJZWNobyB0cih0ZGEoJG5ld2J0biwgJyBjb2xzcGFuPSI4IicpKTsNCgllY2hvIHRyKA0K CQljb2x1bW5faGVhZCgnbmFtZScsICduYW1lJywgJ3NtZF9wcmVmYWxpemVyJywgdHJ1ZSwg JHN3aXRjaF9kaXIsICRjcml0LCAkc2VhcmNoX21ldGhvZCwgKCduYW1lJyA9PSAkc29ydCkg PyAkZGlyIDogJycpLg0KCQljb2x1bW5faGVhZCgndmFsdWUnLCAndmFsdWUnLCAnc21kX3By ZWZhbGl6ZXInLCB0cnVlLCAkc3dpdGNoX2RpciwgJGNyaXQsICRzZWFyY2hfbWV0aG9kLCAo J3ZhbHVlJyA9PSAkc29ydCkgPyAkZGlyIDogJycpLg0KCQljb2x1bW5faGVhZChzbWRfcHJl ZmFsaXplcl9nVHh0KCd2aXNpYmlsaXR5JyksICd0eXBlJywgJ3NtZF9wcmVmYWxpemVyJywg dHJ1ZSwgJHN3aXRjaF9kaXIsICRjcml0LCAkc2VhcmNoX21ldGhvZCwgKCd0eXBlJyA9PSAk c29ydCkgPyAkZGlyIDogJycpLg0KCQljb2x1bW5faGVhZChzbWRfcHJlZmFsaXplcl9nVHh0 KCdldmVudCcpLCAnZXZlbnQnLCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAkc3dpdGNoX2Rp ciwgJGNyaXQsICRzZWFyY2hfbWV0aG9kLCAoJ2V2ZW50JyA9PSAkc29ydCkgPyAkZGlyIDog JycpLg0KCQljb2x1bW5faGVhZChzbWRfcHJlZmFsaXplcl9nVHh0KCdodG1sJyksICdodG1s JywgJ3NtZF9wcmVmYWxpemVyJywgdHJ1ZSwgJHN3aXRjaF9kaXIsICRjcml0LCAkc2VhcmNo X21ldGhvZCwgKCdodG1sJyA9PSAkc29ydCkgPyAkZGlyIDogJycpLg0KCQljb2x1bW5faGVh ZChzbWRfcHJlZmFsaXplcl9nVHh0KCd1c2VyJyksICd1c2VyJywgJ3NtZF9wcmVmYWxpemVy JywgdHJ1ZSwgJHN3aXRjaF9kaXIsICRjcml0LCAkc2VhcmNoX21ldGhvZCwgKCd1c2VyJyA9 PSAkc29ydCkgPyAkZGlyIDogJycpLg0KCQljb2x1bW5faGVhZChzbWRfcHJlZmFsaXplcl9n VHh0KCdwb3NpdGlvbicpLCAncG9zaXRpb24nLCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAk c3dpdGNoX2RpciwgJGNyaXQsICRzZWFyY2hfbWV0aG9kLCAoJ3Bvc2l0aW9uJyA9PSAkc29y dCkgPyAkZGlyIDogJycpLg0KCQljb2x1bW5faGVhZChzbWRfcHJlZmFsaXplcl9nVHh0KCdh Y3Rpb25zJyksICdhY3Rpb25zJywgJ3NtZF9wcmVmYWxpemVyJywgZmFsc2UpDQoJKTsNCg0K CWZvcmVhY2ggKCR0aGVQcmVmcyBhcyAkcHJlZl9yb3cpIHsNCgkJJHByZWZfcm93Wyd0eXBl J10gPSAoJHByZWZfcm93Wyd0eXBlJ10gPiAyKSA/IDIgOiAkcHJlZl9yb3dbJ3R5cGUnXTsN CgkJaWYgKCRzdGVwID09ICdlZGl0JyAmJiAkcHJlZl9yb3dbJ25hbWUnXSA9PSAkbmFtZSAm JiAkcHJlZl9yb3dbJ3VzZXJfbmFtZSddID09ICR1c2VyX25hbWUpIHsNCgkJCSRidG5TYXZl ID0gZklucHV0KCdidXR0b24nLCAnJywgZ1R4dCgnU2F2ZScpLCAncHVibGlzaCcsICcnLCAn c21kX3ByZWZhbGl6ZXJfc2F2ZSgpJyk7DQoJCQllY2hvIHRyKCRoZWFkaW5ncyk7DQoJCQll Y2hvIHRyKA0KCQkJCXRkKGZJbnB1dCgndGV4dCcsICduYW1lJywgJHByZWZfcm93WyduYW1l J10pLCA3MCwgJycsICdzbWRfcHJlZmFsaXplcl9uYW1lJykNCgkJCQkudGQodGV4dF9hcmVh KCd2YWx1ZScsICc4MCcsICcyMjAnLCAkcHJlZl9yb3dbJ3ZhbCddKSwgMjIwLCAnJywgJ3Nt ZF9wcmVmYWxpemVyX3ZhbHVlJykNCgkJCQkudGQoc2VsZWN0SW5wdXQoJ3R5cGUnLCAkc21k X3ByZWZhbGl6ZXJfdHlwZXMsICRwcmVmX3Jvd1sndHlwZSddKSwgNjAsICcnLCAnc21kX3By ZWZhbGl6ZXJfdHlwZScpDQoJCQkJLnRkKGZJbnB1dCgndGV4dCcsICdwcmVmX2V2ZW50Jywg JHByZWZfcm93WydldmVudCddKSwgNjAsICcnLCAnc21kX3ByZWZhbGl6ZXJfZXZlbnQnKQ0K CQkJCS50ZChmSW5wdXQoJ3RleHQnLCAnaHRtbCcsICRwcmVmX3Jvd1snaHRtbCddKSwgNjAs ICcnLCAnc21kX3ByZWZhbGl6ZXJfaHRtbCcpDQoJCQkJLnRkKHNlbGVjdElucHV0KCd1c2Vy X25hbWUnLCAkYXV0aG9yX2xpc3QsICRwcmVmX3Jvd1sndXNlcl9uYW1lJ10sIHRydWUpLCA4 MCwgJycsICdzbWRfcHJlZmFsaXplcl91c2VyX25hbWUnKQ0KCQkJCS50ZChmSW5wdXQoJ3Rl eHQnLCAncG9zaXRpb24nLCAkcHJlZl9yb3dbJ3Bvc2l0aW9uJ10pLCAyMCwgJycsICdzbWRf cHJlZmFsaXplcl9wb3NpdGlvbicpDQoJCQkJLnRkKCRidG5TYXZlKQ0KCQkJLCAnIGlkPSJz bWRfcHJlZmFsaXplcl9lZGl0ZWQiJyk7DQoJCX0gZWxzZSB7DQoJCQkkYnRuRWRpdCA9ICc8 YSBocmVmPSInLmpvaW5fcXMoJHFzKS4nJiMzODtzdGVwPWVkaXQmIzM4O25hbWU9Jy4kcHJl Zl9yb3dbJ25hbWUnXS4nJiMzODt1c2VyX25hbWU9Jy4kcHJlZl9yb3dbJ3VzZXJfbmFtZSdd LiciPlsnIC4gZ1R4dCgnZWRpdCcpIC4gJ108L2E+JzsNCgkJCSRidG5EZWwgPSBzbWRfcHJl ZmFsaXplcl9jYW5fYWx0ZXIoJHByZWZfcm93WyduYW1lJ10pID8gJzxhIGhyZWY9Iicuam9p bl9xcygkcXMpLicmIzM4O3N0ZXA9c21kX3ByZWZhbGl6ZXJfZGVsZXRlJiMzODtuYW1lPScu JHByZWZfcm93WyduYW1lJ10uJyYjMzg7dXNlcl9uYW1lPScuJHByZWZfcm93Wyd1c2VyX25h bWUnXS4nIiBvbmNsaWNrPSJyZXR1cm4gY29uZmlybShcJycuc21kX3ByZWZhbGl6ZXJfZ1R4 dCgnZGVsZXRlX2NvbmZpcm0nLCBhcnJheSgie25hbWV9IiA9PiAkcHJlZl9yb3dbJ25hbWUn XSwgInt1c2VyX25hbWV9IiA9PiAoKCRwcmVmX3Jvd1sndXNlcl9uYW1lJ109PScnKSA/IHNt ZF9wcmVmYWxpemVyX2dUeHQoJ2FsbF91c2VycycpIDogJHByZWZfcm93Wyd1c2VyX25hbWUn XSApICkpLidcJyk7Ij5bJyAuIGdUeHQoJ2RlbGV0ZScpIC4gJ108L2E+JyA6ICcnOw0KCQkJ ZWNobyB0cigNCgkJCQl0ZCgkcHJlZl9yb3dbJ25hbWUnXSw3MCkNCgkJCQkudGQoJHByZWZf cm93Wyd2YWwnXSwgMjIwKQ0KCQkJCS50ZCh1Y2ZpcnN0KCRzbWRfcHJlZmFsaXplcl90eXBl c1skcHJlZl9yb3dbJ3R5cGUnXV0pKQ0KCQkJCS50ZCgkcHJlZl9yb3dbJ2V2ZW50J10pDQoJ CQkJLnRkKCRwcmVmX3Jvd1snaHRtbCddKQ0KCQkJCS50ZCgkcHJlZl9yb3dbJ3VzZXJfbmFt ZSddKQ0KCQkJCS50ZCgkcHJlZl9yb3dbJ3Bvc2l0aW9uJ10pDQoJCQkJLnRkKCRidG5FZGl0 LicgJy4kYnRuRGVsLCAxMDApDQoJCQksICcgY2xhc3M9ImRhdGEiJyk7DQoJCX0NCgl9DQoN CgllY2hvIGVuZFRhYmxlKCk7DQoJZWNobyAnPC9mb3JtPic7DQoJZWNobyBuLm5hdl9mb3Jt KCRzbWRfcHJlZmFsaXplcl9ldmVudCwgJHBhZ2UsICRudW1QYWdlcywgJHNvcnQsICRkaXIs ICRjcml0LCAkc2VhcmNoX21ldGhvZCk7DQoJZWNobyBuLnBhZ2VieV9mb3JtKCRzbWRfcHJl ZmFsaXplcl9ldmVudCwgJHBhZ2VieSk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNt ZF9wcmVmYWxpemVyX3NlYXJjaF9mb3JtKCRjcml0LCAkbWV0aG9kKSB7DQoJJG1ldGhvZHMg PQlhcnJheSgNCgkJJ25hbWUnICAgICA9PiBnVHh0KCduYW1lJyksDQoJCSd2YWx1ZScgICAg PT4gZ1R4dCgndmFsdWUnKSwNCgkJJ3R5cGUnICAgICA9PiBzbWRfcHJlZmFsaXplcl9nVHh0 KCd2aXNpYmlsaXR5JyksDQoJCSdldmVudCcgICAgPT4gc21kX3ByZWZhbGl6ZXJfZ1R4dCgn ZXZlbnQnKSwNCgkJJ2h0bWwnICAgICA9PiBzbWRfcHJlZmFsaXplcl9nVHh0KCdodG1sJyks DQoJCSd1c2VyJyAgICAgPT4gc21kX3ByZWZhbGl6ZXJfZ1R4dCgndXNlcicpLA0KCQkncG9z aXRpb24nID0+IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3Bvc2l0aW9uJyksDQoJKTsNCg0KCXJl dHVybiBzZWFyY2hfZm9ybSgnc21kX3ByZWZhbGl6ZXInLCAnc21kX3ByZWZhbGl6ZXJfbGlz dCcsICRjcml0LCAkbWV0aG9kcywgJG1ldGhvZCwgJ25hbWUnKTsNCn0NCg0KLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KZnVuY3Rpb24gc21kX3ByZWZhbGl6ZXJfY2hhbmdlX3BhZ2VieSgpIHsNCglzZXRjb29r aWUoJ3NtZF9wcmVmYWxpemVyX3BhZ2VieScsIGdwcygncXR5JykpOw0KCXNtZF9wcmVmYWxp emVyX2xpc3QoJycpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfcHJlZmFsaXpl cl9jYW5fYWx0ZXIoJG5hbWUsICRleHBvc2U9JycpIHsNCgkkb3ZlcnJpZGUgPSAoJGV4cG9z ZT09J2FsbCcpID8gJGV4cG9zZSA6IGdwcygnZXhwb3NlJyk7DQoJaWYgKCRvdmVycmlkZSA9 PSAnYWxsJykgew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoJJHByb3RlY3RlZF9ldmVudHMgPSBh cnJheSgnYWRtaW4nLCAnY29tbWVudHMnLCAnY3NzJywgJ2N1c3RvbScsICdkaXNjdXNzJywg J2ZlZWRzJywgJ3B1Ymxpc2gnKTsNCgkkcm93ID0gc2FmZV9yb3coJyonLCAndHhwX3ByZWZz JywgIm5hbWU9JyRuYW1lJyIpOw0KCWlmICgkcm93KSB7DQoJCXJldHVybiAoaW5fYXJyYXko JHJvd1snZXZlbnQnXSwgJHByb3RlY3RlZF9ldmVudHMpICYmIGVtcHR5KCRyb3dbJ3VzZXJf bmFtZSddKSkgPyBmYWxzZSA6IHRydWU7DQoJfSBlbHNlIHsNCgkJcmV0dXJuIHRydWU7DQoJ fQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfcHJlZmFsaXplcl9zYXZlKCRtc2c9 JycpIHsNCglnbG9iYWwgJHNtZF9wcmVmYWxpemVyX2V2ZW50Ow0KDQoJZXh0cmFjdChkb1Ns YXNoKHBzYShhcnJheSgnbmFtZScsICduZXduYW1lJywgJ3ZhbHVlJywgJ3R5cGUnLCAncHJl Zl9ldmVudCcsICdodG1sJywgJ3VzZXJfbmFtZScsICduZXd1c2VyJywgJ3Bvc2l0aW9uJykp KSk7DQoJJHJldCA9IGZhbHNlOw0KCSRtc2cgPSAnJzsNCg0KCS8vIFN0YXRlIG1hY2hpbmUt ZXNxdWUgZGVjaXNpb24gdHJlZQ0KCSRleGlzdHMgPSBzYWZlX3JvdygnbmFtZSwgdXNlcl9u YW1lJywgJ3R4cF9wcmVmcycsICJuYW1lID0gJyRuZXduYW1lJyBBTkQgdXNlcl9uYW1lID0g JyRuZXd1c2VyJyIpOw0KCWlmIChlbXB0eSgkbmFtZSkpIHsNCgkJLy8gSW5zZXJ0IG5ldw0K CQlpZiAoJGV4aXN0cykgew0KCQkJJG1zZyA9IGFycmF5KHNtZF9wcmVmYWxpemVyX2dUeHQo J2V4aXN0X2FscmVhZHknLCBhcnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkpLCBFX1dBUk5J TkcpOw0KCQkJJF9QT1NUWydzdGVwJ10gPSAnZWRpdCc7DQoJCX0gZWxzZSB7DQoJCQkkcmV0 ID0gc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycsICJwcmVmc19pZD0xLCBuYW1lPSckbmV3bmFt ZScsIHZhbD0nJHZhbHVlJywgdHlwZT0nJHR5cGUnLCBldmVudD0nJHByZWZfZXZlbnQnLCBo dG1sPSckaHRtbCcsIHBvc2l0aW9uPSckcG9zaXRpb24nLCB1c2VyX25hbWU9JyRuZXd1c2Vy JyIpOw0KCQkJaWYgKCRyZXQgPT09IGZhbHNlKSB7DQoJCQkJJG1zZyA9IHNtZF9wcmVmYWxp emVyX2dUeHQoJ2NyZWF0ZV9mYWlsZWQnLCBhcnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkp Ow0KCQkJfSBlbHNlIHsNCgkJCQkkbXNnID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnY3JlYXRl X29rJywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCX0NCgkJfQ0KDQoJfSBl bHNlIGlmICgkbmFtZSA9PSAkbmV3bmFtZSkgew0KCQkvLyBVcGRhdGUNCgkJaWYgKCR1c2Vy X25hbWUgPT0gJG5ld3VzZXIpIHsNCgkJCS8vIERpcmVjdCB1cGRhdGUNCgkJCWlmICgkZXhp c3RzKSB7DQoJCQkJJHJldCA9IHNhZmVfdXBkYXRlKCd0eHBfcHJlZnMnLCAibmFtZT0nJG5l d25hbWUnLCB2YWw9JyR2YWx1ZScsIHR5cGU9JyR0eXBlJywgZXZlbnQ9JyRwcmVmX2V2ZW50 JywgaHRtbD0nJGh0bWwnLCBwb3NpdGlvbj0nJHBvc2l0aW9uJyIsICJuYW1lPSckbmFtZScg QU5EIHVzZXJfbmFtZT0nJHVzZXJfbmFtZSciKTsNCgkJCQlpZiAoJHJldCA9PT0gZmFsc2Up IHsNCgkJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3NhdmVfZmFpbGVkJywgYXJy YXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkbXNnID0g c21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9vaycsIGFycmF5KCJ7bmFtZX0iID0+ICRuZXdu YW1lKSk7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkkbXNnID0gc21kX3ByZWZhbGl6ZXJf Z1R4dCgnZXhpc3Rfbm90JywgYXJyYXkoIntuYW1lfSIgPT4gJG5hbWUpKTsNCgkJCX0NCgkJ fSBlbHNlIHsNCgkJCS8vIFJlbmFtZWQgdXNlcg0KCQkJaWYgKCRleGlzdHMpIHsNCgkJCQkk bXNnID0gYXJyYXkoc21kX3ByZWZhbGl6ZXJfZ1R4dCgnZXhpc3RfYWxyZWFkeScsIGFycmF5 KCJ7bmFtZX0iID0+ICRuZXduYW1lKSksIEVfV0FSTklORyk7DQoJCQkJJF9QT1NUWydzdGVw J10gPSAnZWRpdCc7DQoJCQkJJF9QT1NUWyduYW1lJ10gPSAkbmFtZTsNCgkJCQkkX1BPU1Rb J3VzZXJfbmFtZSddID0gJHVzZXJfbmFtZTsNCgkJCX0gZWxzZSB7DQoJCQkJJHJldCA9IHNh ZmVfdXBkYXRlKCd0eHBfcHJlZnMnLCAibmFtZT0nJG5ld25hbWUnLCB2YWw9JyR2YWx1ZScs IHR5cGU9JyR0eXBlJywgZXZlbnQ9JyRwcmVmX2V2ZW50JywgaHRtbD0nJGh0bWwnLCBwb3Np dGlvbj0nJHBvc2l0aW9uJywgdXNlcl9uYW1lPSckbmV3dXNlciciLCAibmFtZT0nJG5hbWUn IEFORCB1c2VyX25hbWU9JyR1c2VyX25hbWUnIik7DQoJCQkJaWYgKCRyZXQgPT09IGZhbHNl KSB7DQoJCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXplcl9nVHh0KCdzYXZlX2ZhaWxlZCcsIGFy cmF5KCJ7bmFtZX0iID0+ICRuZXduYW1lKSk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJG1zZyA9 IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3NhdmVfb2snLCBhcnJheSgie25hbWV9IiA9PiAkbmV3 bmFtZSkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJfSBlbHNlIHsNCgkJLy8gVXBkYXRlIGFu ZCByZW5hbWUNCgkJaWYgKCR1c2VyX25hbWUgPT0gJG5ld3VzZXIpIHsNCgkJCS8vIFJlbmFt ZWQgdXBkYXRlDQoJCQlpZiAoJGV4aXN0cykgew0KCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXpl cl9nVHh0KCdleGlzdF9hbHJlYWR5JywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsN CgkJCX0gZWxzZSB7DQoJCQkJJHJldCA9IHNhZmVfdXBkYXRlKCd0eHBfcHJlZnMnLCAibmFt ZT0nJG5ld25hbWUnLCB2YWw9JyR2YWx1ZScsIHR5cGU9JyR0eXBlJywgZXZlbnQ9JyRwcmVm X2V2ZW50JywgaHRtbD0nJGh0bWwnLCBwb3NpdGlvbj0nJHBvc2l0aW9uJyIsICJuYW1lPSck bmFtZScgQU5EIHVzZXJfbmFtZT0nJHVzZXJfbmFtZSciKTsNCgkJCQlpZiAoJHJldCA9PT0g ZmFsc2UpIHsNCgkJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3NhdmVfZmFpbGVk JywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkk bXNnID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9vaycsIGFycmF5KCJ7bmFtZX0iID0+ ICRuZXduYW1lKSk7DQoJCQkJfQ0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJLy8gUmVuYW1lZCB1 cGRhdGUgYW5kIHVzZXINCgkJCWlmICgkZXhpc3RzKSB7DQoJCQkJJG1zZyA9IGFycmF5KHNt ZF9wcmVmYWxpemVyX2dUeHQoJ2V4aXN0X2FscmVhZHknLCBhcnJheSgie25hbWV9IiA9PiAk bmV3bmFtZSkpLCBFX1dBUk5JTkcpOw0KCQkJCSRfUE9TVFsnc3RlcCddID0gJ2VkaXQnOw0K CQkJCSRfUE9TVFsnbmFtZSddID0gJG5hbWU7DQoJCQkJJF9QT1NUWyd1c2VyX25hbWUnXSA9 ICR1c2VyX25hbWU7DQoJCQl9IGVsc2Ugew0KCQkJCSRyZXQgPSBzYWZlX3VwZGF0ZSgndHhw X3ByZWZzJywgIm5hbWU9JyRuZXduYW1lJywgdmFsPSckdmFsdWUnLCB0eXBlPSckdHlwZScs IGV2ZW50PSckcHJlZl9ldmVudCcsIGh0bWw9JyRodG1sJywgcG9zaXRpb249JyRwb3NpdGlv bicsIHVzZXJfbmFtZT0nJG5ld3VzZXInIiwgIm5hbWU9JyRuYW1lJyBBTkQgdXNlcl9uYW1l PSckdXNlcl9uYW1lJyIpOw0KCQkJCWlmICgkcmV0ID09PSBmYWxzZSkgew0KCQkJCQkkbXNn ID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9mYWlsZWQnLCBhcnJheSgie25hbWV9IiA9 PiAkbmV3bmFtZSkpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXpl cl9nVHh0KCdzYXZlX29rJywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCQl9 DQoJCQl9DQoJCX0NCiAgIH0NCg0KCXNtZF9wcmVmYWxpemVyX2xpc3QoJG1zZyk7DQp9DQoN Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9wcmVmYWxpemVyX2RlbGV0ZSgkbXNnPScnKSB7 DQoJZ2xvYmFsICRzbWRfcHJlZmFsaXplcl9ldmVudDsNCg0KCWV4dHJhY3QoZG9TbGFzaChn cHNhKGFycmF5KCduYW1lJywgJ3VzZXJfbmFtZScsICdleHBvc2UnKSkpKTsNCgkkcmV0ID0g ZmFsc2U7DQoJJHJzID0gc2FmZV9yb3coJyonLCAndHhwX3ByZWZzJywgIm5hbWUgPSAnJG5h bWUnIEFORCB1c2VyX25hbWUgPSAnJHVzZXJfbmFtZSciKTsNCglpZiAoJHJzICYmIHNtZF9w cmVmYWxpemVyX2Nhbl9hbHRlcigkbmFtZSwgJGV4cG9zZSkpIHsNCgkJZXh0cmFjdCgkcnMp Ow0KCQkkcmV0ID0gc2FmZV9kZWxldGUoJ3R4cF9wcmVmcycsICJuYW1lID0gJyRuYW1lJyBB TkQgdXNlcl9uYW1lPSckdXNlcl9uYW1lJyIpOw0KCX0NCglpZiAoJHJldCA9PT0gZmFsc2Up IHsNCgkJc21kX3ByZWZhbGl6ZXJfbGlzdChzbWRfcHJlZmFsaXplcl9nVHh0KCdkZWxldGVf ZmFpbGVkJywgYXJyYXkoIntuYW1lfSIgPT4gJG5hbWUpKSk7DQoJfSBlbHNlIHsNCgkJc21k X3ByZWZhbGl6ZXJfbGlzdChzbWRfcHJlZmFsaXplcl9nVHh0KCdkZWxldGVfb2snLCBhcnJh eSgie25hbWV9IiA9PiAkbmFtZSkpKTsNCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KZnVuY3Rpb24gc21kX3ByZWZhbGl6ZXJfZ2V0X3R5cGUoJHR5cGUsICRkZmx0 PScnKSB7DQoJJHByZWZUeXBlID0gJGRmbHQ7DQoNCglzd2l0Y2ggKCR0eXBlKSB7DQoJCWNh c2UgJzAnOg0KCQljYXNlICdiYXNpYyc6DQoJCQkkcHJlZlR5cGUgPSBQUkVGX0JBU0lDOw0K CQkJYnJlYWs7DQoJCWNhc2UgJzEnOg0KCQljYXNlICdhZHZhbmNlZCc6DQoJCQkkcHJlZlR5 cGUgPSBQUkVGX0FEVkFOQ0VEOw0KCQkJYnJlYWs7DQoJCWNhc2UgJzInOg0KCQljYXNlICdo aWRkZW4nOg0KCQkJJHByZWZUeXBlID0gUFJFRl9ISURERU47DQoJCQlicmVhazsNCgl9DQoN CglyZXR1cm4gJHByZWZUeXBlOw0KfQ0KDQovLyoqKioqKioqKioqKg0KLy8gUFVCTElDIFRB R1MNCi8vKioqKioqKioqKioqDQpmdW5jdGlvbiBzbWRfcHJlZl9nZXQoJGF0dHMsICR0aGlu ZyA9IE5VTEwpIHsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSduYW1lJyAgICAgICA9 PiAnJywNCgkJJ3ZhbHVlJyAgICAgID0+ICcnLA0KCQkndmlzaWJpbGl0eScgPT4gJycsDQoJ CSdldmVudCcgICAgICA9PiAnJywNCgkJJ2lucHV0X2N0cmwnID0+ICcnLA0KCQkncG9zaXRp b24nICAgPT4gJycsDQoJCSdhdXRob3InICAgICA9PiAnJywNCgkJJ2Zvcm0nICAgICAgID0+ ICcnLA0KCQknc29ydCcgICAgICAgPT4gJ25hbWUgYXNjJywNCgkJJ3dyYXB0YWcnICAgID0+ ICcnLA0KCQknYnJlYWsnICAgICAgPT4gJycsDQoJCSdjbGFzcycgICAgICA9PiAnJywNCgkJ J2h0bWxfaWQnICAgID0+ICcnLA0KCQknZGVidWcnICAgICAgPT4gMCwNCgkpLCRhdHRzKSk7 DQoNCgkkYXR0ZW1wdF9jb250ZW50ID0gaXNzZXQoJGF0dHNbJ2Zvcm0nXSkgfHwgJHRoaW5n Ow0KCSRjb250ZW50ID0gKGVtcHR5KCRmb3JtKSkgPyAkdGhpbmcgOiBmZXRjaF9mb3JtKCRm b3JtKTsNCgkkYXV0aG9ycyA9IGRvX2xpc3QoJGF1dGhvcik7DQoJaWYgKCgkcG9zID0gYXJy YXlfc2VhcmNoKCdTTURfUFJFRl9MT0dHRURfSU4nLCAkYXV0aG9ycykpICE9PSBmYWxzZSkg ew0KCQkvLyBMZWF2ZSBTTURfUFJFRl9MT0dHRURfSU4gaW4gdGhlIGFycmF5IHNvIHRoZSB0 YWcgcmV0dXJucyBub3RoaW5nIGlmIHlvdSd2ZSB0cmllZA0KCQkvLyB0byBmaW5kIGEgc3Bl Y2lmaWMgdXNlciAob3RoZXJ3aXNlIGl0IHdvdWxkIHJldHVybiBhbGwgdW5hc3NpZ25lZCBl bnRyaWVzKQ0KCQkkYXV0aG9ySW5mbyA9IGlzX2xvZ2dlZF9pbigpOw0KCQlpZiAoaXNzZXQo JGF1dGhvckluZm9bJ25hbWUnXSkpIHsNCgkJCSRhdXRob3JzW10gPSAkYXV0aG9ySW5mb1sn bmFtZSddOw0KCQl9DQoJfQ0KCSRhdXRob3IgPSBqb2luKCcsJywgJGF1dGhvcnMpOw0KDQoJ JHZpc2liaWxpdHkgPSBzbWRfcHJlZmFsaXplcl9nZXRfdHlwZSgkdmlzaWJpbGl0eSk7DQoJ JGNyaXQgPSBhcnJheSgpOw0KCSRjb2xtYXAgPSBhcnJheSgNCgkJJ25hbWUnICAgICAgID0+ ICduYW1lJywNCgkJJ3ZhbHVlJyAgICAgID0+ICd2YWwnLA0KCQkndmlzaWJpbGl0eScgPT4g J3R5cGUnLA0KCQknZXZlbnQnICAgICAgPT4gJ2V2ZW50JywNCgkJJ2lucHV0X2N0cmwnID0+ ICdodG1sJywNCgkJJ3Bvc2l0aW9uJyAgID0+ICdwb3NpdGlvbicsDQoJCSdhdXRob3InICAg ICA9PiAndXNlcl9uYW1lJywNCgkpOw0KDQoJZm9yZWFjaCAoJGNvbG1hcCBhcyAka2V5ID0+ ICRjb2wpIHsNCgkJaWYgKCQka2V5ICE9PSAnJykgew0KCQkJJGNyaXRbJGtleV0gPSAiJGNv bCBJTiAoJyIgLiBqb2luKCInLCciLCBkb19saXN0KGRvU2xhc2goJCRrZXkpKSkgLiAiJyki Ow0KCQl9DQoJfQ0KDQoJJG9yZGVyYnkgPSAoJHNvcnQpID8gJyBPUkRFUiBCWSAnLmRvU2xh c2goJHNvcnQpIDogJyc7DQoNCgkkb3V0ID0gJyc7DQoJJHJzID0gYXJyYXkoKTsNCglpZiAo JGNyaXQpIHsNCgkJJHJzID0gc2FmZV9yb3dzKCcqJywgJ3R4cF9wcmVmcycsIGpvaW4oJyBB TkQgJywgJGNyaXQpIC4gJG9yZGVyYnksICRkZWJ1Zyk7DQoJCSR0b3RhbCA9IGNvdW50KCRy cyk7DQoJCSRjdHIgPSAwOw0KCQlpZiAoJHJzKSB7DQoJCQkkcmVwbGFjZW1lbnRzID0gYXJy YXkoKTsNCgkJCSRjb250ZW50ID0gKCRjb250ZW50KSA/ICRjb250ZW50IDogKCgkYXR0ZW1w dF9jb250ZW50KSA/ICcnIDogJ3tzbWRfcHJlZl92YWx1ZX0nKTsNCgkJCWZvcmVhY2ggKCRy cyBhcyAkcm93KSB7DQoJCQkJZm9yZWFjaCAoJGNvbG1hcCBhcyAka2V5ID0+ICRjb2wpIHsN CgkJCQkJJHJlcGxhY2VtZW50c1sne3NtZF9wcmVmXycuJGtleS4nfSddID0gJHJvd1skY29s XTsNCgkJCQl9DQoJCQkJJHJlcGxhY2VtZW50c1sne3NtZF9wcmVmX3RvdGFsfSddID0gJHRv dGFsOw0KCQkJCSRyZXBsYWNlbWVudHNbJ3tzbWRfcHJlZl9pbmRleH0nXSA9ICRjdHI7DQoJ CQkJJHJlcGxhY2VtZW50c1sne3NtZF9wcmVmX2NvdW50fSddID0gJGN0cisxOw0KCQkJCSRv dXRbXSA9IHBhcnNlKEV2YWxFbHNlKHN0cnRyKCRjb250ZW50LCAkcmVwbGFjZW1lbnRzKSwg MSkpOw0KCQkJCSRjdHIrKzsNCgkJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCQllY2hvICcr KyBSRVBMQUNFTUVOVFMgKysnOw0KCQkJCQlkbXAoJHJlcGxhY2VtZW50cyk7DQoJCQkJfQ0K CQkJfQ0KCQkJcmV0dXJuIGRvd3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3Ms ICcnLCAnJywgJycsICRodG1sX2lkKTsNCgkJfQ0KCX0NCglyZXR1cm4gcGFyc2UoRXZhbEVs c2UoJGNvbnRlbnQsIDApKTsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpm dW5jdGlvbiBzbWRfcHJlZl9zZXQoJGF0dHMsICR0aGluZyA9IE5VTEwpIHsNCglnbG9iYWwg JHR4cF91c2VyOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ25hbWUnICAgICAgID0+ ICcnLA0KCQkndmFsdWUnICAgICAgPT4gJycsDQoJCSd2aXNpYmlsaXR5JyA9PiAnJywNCgkJ J2V2ZW50JyAgICAgID0+ICcnLA0KCQknaW5wdXRfY3RybCcgPT4gJ3RleHRfaW5wdXQnLA0K CQkncG9zaXRpb24nICAgPT4gJycsDQoJCSdwcml2YXRlJyAgICA9PiAwLA0KCQknZGVidWcn ICAgICAgPT4gMCwNCgkpLCRhdHRzKSk7DQoNCgkkdmlzaWJpbGl0eSA9IHNtZF9wcmVmYWxp emVyX2dldF90eXBlKCR2aXNpYmlsaXR5LCAyKTsNCglpZiAoJHByaXZhdGUpIHsNCgkJJHNj b3BlID0gUFJFRl9QUklWQVRFOw0KCQkkaWxpID0gaXNfbG9nZ2VkX2luKCk7DQoJCWlmICgk aWxpKSB7DQoJCQkkdHhwX3VzZXIgPSAkaWxpWyduYW1lJ107DQoJCX0NCgl9IGVsc2Ugew0K CQkkc2NvcGUgPSBQUkVGX0dMT0JBTDsNCgl9DQoNCgkkcmV0ID0gZmFsc2U7DQoJaWYgKHNt ZF9wcmVmYWxpemVyX2Nhbl9hbHRlcigkbmFtZSkpIHsNCgkJJHJldCA9IHNldF9wcmVmKCRu YW1lLCAkdmFsdWUsICRldmVudCwgJHZpc2liaWxpdHksICRpbnB1dF9jdHJsLCAkcG9zaXRp b24sICRzY29wZSk7DQoJfQ0KCWlmICgkZGVidWcpIHsNCgkJZWNobyAnKysgU0VUIFJFU1VM VCBGT1IgJyAuICRuYW1lIC4gJzogJyAuKCgkcmV0KSA/ICdTVUNDRVNTJyA6ICdGQUlMJyku ICcgKysnOw0KCX0NCglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcmV0KSk7DQp9 DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX3ByZWZfZGVs ZXRlKCRhdHRzLCAkdGhpbmcgPSBOVUxMKSB7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0K CQknbmFtZScgICA9PiAnJywNCgkJJ2V2ZW50JyAgPT4gJycsDQoJCSdhdXRob3InID0+ICcn LA0KCQknZGVidWcnICA9PiAnJywNCgkpLCRhdHRzKSk7DQoNCgkkYXV0aG9ycyA9IGRvX2xp c3QoJGF1dGhvcik7DQoJaWYgKCgkcG9zID0gYXJyYXlfc2VhcmNoKCdTTURfUFJFRl9MT0dH RURfSU4nLCAkYXV0aG9ycykpICE9PSBmYWxzZSkgew0KCQkkYXV0aG9ySW5mbyA9IGlzX2xv Z2dlZF9pbigpOw0KCQlpZiAoaXNzZXQoJGF1dGhvckluZm9bJ25hbWUnXSkpIHsNCgkJCSRh dXRob3JzW10gPSAkYXV0aG9ySW5mb1snbmFtZSddOw0KCQl9DQoJfQ0KCSRhdXRob3IgPSBq b2luKCcsJywgJGF1dGhvcnMpOw0KDQoJJGNyaXQgPSBhcnJheSgpOw0KCSRjb2xtYXAgPSBh cnJheSgNCgkJJ25hbWUnICAgPT4gJ25hbWUnLA0KCQknZXZlbnQnICA9PiAnZXZlbnQnLA0K CQknYXV0aG9yJyA9PiAndXNlcl9uYW1lJywNCgkpOw0KDQoJZm9yZWFjaCAoJGNvbG1hcCBh cyAka2V5ID0+ICRjb2wpIHsNCgkJaWYgKCQka2V5ICE9PSAnJykgew0KCQkJJGNyaXRbJGtl eV0gPSAiJGNvbCBJTiAoJyIgLiBqb2luKCInLCciLCBkb19saXN0KGRvU2xhc2goJCRrZXkp KSkgLiAiJykiOw0KCQl9DQoJfQ0KDQoJJG91dCA9IGFycmF5KCk7DQoJaWYgKCRjcml0KSB7 DQoJCSRycyA9IHNhZmVfcm93cygnKicsICd0eHBfcHJlZnMnLCBqb2luKCcgQU5EICcsICRj cml0KSwgJGRlYnVnKTsNCgkJJHRvdGFsID0gY291bnQoJHJzKTsNCgkJJHJlcGxhY2VtZW50 cyA9IGFycmF5KCk7DQoJCSRjdHIgPSAwOw0KCQlmb3JlYWNoICgkcnMgYXMgJHJvdykgew0K CQkJJHJlcGxhY2VtZW50c1sne3NtZF9wcmVmX25hbWV9J10gPSAkcm93WyduYW1lJ107DQoJ CQkkcmVwbGFjZW1lbnRzWyd7c21kX3ByZWZfdmFsdWV9J10gPSAkcm93Wyd2YWwnXTsNCgkJ CSRyZXBsYWNlbWVudHNbJ3tzbWRfcHJlZl92aXNpYmlsaXR5fSddID0gJHJvd1sndHlwZSdd Ow0KCQkJJHJlcGxhY2VtZW50c1sne3NtZF9wcmVmX2V2ZW50fSddID0gJHJvd1snZXZlbnQn XTsNCgkJCSRyZXBsYWNlbWVudHNbJ3tzbWRfcHJlZl9pbnB1dF9jdHJsfSddID0gJHJvd1sn aHRtbCddOw0KCQkJJHJlcGxhY2VtZW50c1sne3NtZF9wcmVmX3Bvc2l0aW9ufSddID0gJHJv d1sncG9zaXRpb24nXTsNCgkJCSRyZXBsYWNlbWVudHNbJ3tzbWRfcHJlZl9hdXRob3J9J10g PSAkcm93Wyd1c2VyX25hbWUnXTsNCgkJCSRyZXBsYWNlbWVudHNbJ3tzbWRfcHJlZl90b3Rh bH0nXSA9ICR0b3RhbDsNCgkJCSRyZXBsYWNlbWVudHNbJ3tzbWRfcHJlZl9pbmRleH0nXSA9 ICRjdHI7DQoJCQkkcmVwbGFjZW1lbnRzWyd7c21kX3ByZWZfY291bnR9J10gPSAkY3RyKzE7 DQoJCQlpZiAoc21kX3ByZWZhbGl6ZXJfY2FuX2FsdGVyKCRyb3dbJ25hbWUnXSkpIHsNCgkJ CQkkcmV0ID0gc2FmZV9kZWxldGUoJ3R4cF9wcmVmcycsICJuYW1lID0gJyIgLiBkb1NsYXNo KCRyb3dbJ25hbWUnXSkgLiAiJyBBTkQgdXNlcl9uYW1lPSciIC4gZG9TbGFzaCgkcm93Wyd1 c2VyX25hbWUnXSkgLiAiJyIsICRkZWJ1Zyk7DQoJCQkJJHJldENvZGUgPSAkcmV0Ow0KCQkJ fSBlbHNlIHsNCgkJCQkkcmV0ID0gMDsNCgkJCQkkcmV0Q29kZSA9IC0xOw0KCQkJfQ0KDQoJ CQkkcmVwbGFjZW1lbnRzWyd7c21kX3ByZWZfZGVsX3Jlc3VsdH0nXSA9ICRyZXRDb2RlOw0K DQoJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCWVjaG8gJysrIFJFUExBQ0VNRU5UUyArKyc7 DQoJCQkJZG1wKCRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KDQoJCQkkb3V0W10gPSBwYXJzZShF dmFsRWxzZShzdHJ0cigkdGhpbmcsICRyZXBsYWNlbWVudHMpLCAkcmV0KSk7DQoNCgkJCWlm ICgkZGVidWcgPiAyKSB7DQoJCQkJZG1wKCcrKyBERUxFVEUgUkVTVUxUIEZPUiAnLiRyb3db J25hbWUnXS4nOiAnIC4gKCgkcmV0Q29kZT09MSkgPyAnU1VDQ0VTUycgOiAoICgkcmV0Q29k ZT09LTEpID8gJ0RJU0FMTE9XRUQnIDogJ0ZBSUwnKSApIC4nICsrJyk7DQoJCQl9DQoJCQkk Y3RyKys7DQoJCX0NCgl9DQoJcmV0dXJuIGpvaW4obiwgJG91dCk7DQp9DQoNCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUGx1Z2luLXNwZWNpZmljIHJlcGxhY2VtZW50IHN0 cmluZ3MgLSBsb2NhbGlzZSBhcyByZXF1aXJlZA0KZnVuY3Rpb24gc21kX3ByZWZhbGl6ZXJf Z1R4dCgkd2hhdCwgJGF0dHMgPSBhcnJheSgpKSB7DQoJJGxhbmcgPSBhcnJheSgNCgkJJ2Fj dGlvbnMnID0+ICdBY3Rpb25zJywNCgkJJ2FsbF91c2VycycgPT4gJ2FsbCB1c2VycycsDQoJ CSdjcmVhdGVfZmFpbGVkJyA9PiAnUHJlZiB7bmFtZX0gTk9UIGNyZWF0ZWQnLA0KCQknY3Jl YXRlX29rJyA9PiAnUHJlZiB7bmFtZX0gY3JlYXRlZCcsDQoJCSdkZWxldGVfY29uZmlybScg PT4gJ1JlYWxseSBkZWxldGUgcHJlZiB7bmFtZX0gKHt1c2VyX25hbWV9KT8nLA0KCQknZGVs ZXRlX2ZhaWxlZCcgPT4gJ1ByZWYge25hbWV9IE5PVCBkZWxldGVkJywNCgkJJ2RlbGV0ZV9v aycgPT4gJ1ByZWYge25hbWV9IGRlbGV0ZWQnLA0KCQknZXhpc3RfYWxyZWFkeScgPT4gJ1By ZWYge25hbWV9IGFscmVhZHkgZXhpc3RzLiBDaG9vc2UgYW5vdGhlciBuYW1lL3VzZXInLA0K CQknZXhpc3Rfbm90JyA9PiAnQ2Fubm90IHVwZGF0ZTogcHJlZiB7bmFtZX0gZG9lcyBub3Qg ZXhpc3QnLA0KCQknZXZlbnQnID0+ICdFdmVudCcsDQoJCSdodG1sJyA9PiAnSW5wdXQgY29u dHJvbCcsDQoJCSduZXcnID0+ICdOZXcgcHJlZicsDQoJCSdwb3NpdGlvbicgPT4gJ1Bvc2l0 aW9uJywNCgkJJ3NhdmVfZmFpbGVkJyA9PiAnUHJlZiB7bmFtZX0gTk9UIHNhdmVkJywNCgkJ J3NhdmVfb2snID0+ICdQcmVmIHtuYW1lfSBzYXZlZCcsDQoJCSd0YWJfbmFtZScgPT4gJ1By ZWZhbGl6ZXInLA0KCQkndXNlcicgPT4gJ1VzZXInLA0KCQkndmlzaWJpbGl0eScgPT4gJ1Zp c2liaWxpdHknLA0KCSk7DQoJcmV0dXJuIHN0cnRyKCRsYW5nWyR3aGF0XSwgJGF0dHMpOw0K fSI7czo0OiJ0eXBlIjtzOjE6IjEiO3M6NToib3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7 czoxOiIwIjtzOjQ6ImhlbHAiO3M6MTc0NzY6IjxkaXYgaWQ9InNtZF9oZWxwIj4KCgk8aDE+ c21kX3ByZWZhbGl6ZXI8L2gxPgoKCTxwPldpdGggdGhlIGFkdmVudCBvZiBwZXItdXNlciBw cmVmZXJlbmNlcywgeW91ciBwcmVmcyB0YWJsZSBjb3VsZCBiZWNvbWUgcmF0aGVyIGxhcmdl LiBLZWVwIGl0IHVuZGVyIGNvbnRyb2wgd2l0aCB0aGlzIHBsdWdpbi4gQWxzbyB1c2VmdWwg aWYgeW91IGhhdmUgdW5pbnN0YWxsZWQgcGx1Z2lucyB5b3Ugbm8gbG9uZ2VyIHVzZSB0aGF0 IGhhdmUgbGVmdCBwcmVmcyBiZWhpbmQuPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVs PgoJCTxsaT5BZGQsIGVkaXQgb3IgcmVtb3ZlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IHByZWZlcmVuY2VzIHNldCBpbiB5b3VyIGRhdGFiYXNlPC9saT4KCQk8bGk+RmlsdGVy IHByZWZzIGJ5IG5hbWUgLyB2YWx1ZSAvIHVzZXIgLyB0eXBlIHRvIGhlbHAgZmluZCB0aGUg b25lcyB5b3Ugd2FudDwvbGk+CgkJPGxpPkNyZWF0ZSByZWd1bGFyIG9yIGhpZGRlbiBwcmVm cywgZm9yIGFsbCBvciBzcGVjaWZpYyB1c2VyczwvbGk+CgkJPGxpPkNyZWF0ZSwgZGlzcGxh eSBvciBkZWxldGUgcHJlZnMgZnJvbSB5b3VyIHB1YmxpYyBzaXRlPC9saT4KCTwvdWw+CgoJ PGgyPkF1dGhvciAvIGNyZWRpdHM8L2gyPgoKCTxwPldyaXR0ZW4gYnkgPGEgaHJlZj0iaHR0 cDovL3N0ZWZkYXdzb24uY29tL2NvbnRhY3QiPlN0ZWYgRGF3c29uPC9hPi48L3A+CgoJPGgy Pkluc3RhbGxhdGlvbiAvIHVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cD5Eb3dubG9hZCB0aGUg cGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1 Z2lucy8xMTI5L3NtZF9wcmVmYWxpemVyIj50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUg PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPiwg cGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g QWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdp bi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmll d3RvcGljLnBocD9pZD0zMjI3MiI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9y IHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48 L3A+CgoJPHA+VG8gdW5pbnN0YWxsLCBkZWxldGUgZnJvbSB0aGUgQWRtaW4gLSZndDsgUGx1 Z2lucyBwYWdlLjwvcD4KCgk8aDI+VXNhZ2UgJiM4MjEyOyBhZG1pbiBzaWRlPC9oMj4KCgk8 cD5WaXNpdCB0aGUgQWRtaW4gPSZndDsgUHJlZmFsaXplciBwYWdlIHRvIHNlZSBhIGxpc3Qg b2YgYWxsIGRlZmluZWQgcHJlZmVyZW5jZXMgaW4geW91ciA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBkYXRhYmFzZS48L3A+CgoJPHA+RWFjaCByb3cgaGFzIGFjdGlvbnMgaW4g dGhlIGxhc3QgY29sdW1uIHRoYXQgYWxsb3cgeW91IHRvIGVkaXQgb3IgZGVsZXRlIGFueSBw cmVmZXJlbmNlLiBTb21lIChzeXN0ZW0pIHByZWZzIGNhbm5vdCBiZSBkZWxldGVkIGJlY2F1 c2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBodXJ0IHlvdXIgc2l0ZTsgdGhlIHBsdWdpbiB0 cmllcyB0byBsaW1pdCB5b3UgdG8gb25seSBiZWluZyBhYmxlIHRvIGRlbGV0ZSBwZXItdXNl ciBvciBwbHVnaW4gcHJlZnMsIGJ1dCB5b3Ugc2hvdWxkIHN0aWxsIGV4ZXJjaXNlIGNhdXRp b24uPC9wPgoKCTxwPlRoZSBjb2x1bW5zIGFyZSBhcyBmb2xsb3dzOjwvcD4KCgk8dWw+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5OYW1lPC9zcGFuPiA6IFRoZSBuYW1lIG9mIHRoZSBw cmVmZXJlbmNlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPlZhbHVlPC9zcGFuPiA6 IFRoZSBzdG9yZWQgY29udGVudHMgb2YgdGhlIHByZWZlcmVuY2U8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+VmlzaWJpbGl0eTwvc3Bhbj4gOiBXaGV0aGVyIHRoZSBwcmVmZXJl bmNlIGFwcGVhcnMgb24gdGhlIDxlbT5CYXNpYyBQcmVmczwvZW0+IG9yIDxlbT5BZHZhbmNl ZCBQcmVmczwvZW0+IHN1YnRhYi4gSWYgaXQgZG9lcyBub3QgYXBwZWFyIGFueXdoZXJlIGF0 IGFsbCwgaXQgaXMgPGVtPkhpZGRlbjwvZW0+IGFuZCBpcyB1c3VhbGx5IHVzZWQgYnkgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gb3IgYSBwbHVnaW4gdG8ga2VlcCB0cmFjayBv ZiB0aGluZ3M8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+RXZlbnQ8L3NwYW4+IDog VGhlIGV2ZW50IChvciBhZG1pbi1zaWRlIHRhYikgdG8gd2hpY2ggdGhpcyBwcmVmIGlzIGFz c29jaWF0ZWQuIFVzZWZ1bCBmb3IgZ3JvdXBpbmcgcHJlZiB2YWx1ZXMgdG9nZXRoZXIgb24t c2NyZWVuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPklucHV0IGNvbnRyb2w8L3Nw YW4+IDogSWYgdGhlIHByZWZlcmVuY2UgaXMgcmVuZGVyZWQgb24tc2NyZWVuIHRoZW4gdGhp cyBnb3Zlcm5zIHdoaWNoIFVJIHdpZGdldCBpcyBkcmF3biBvciBob3cgdGhlIGNvbnRyb2wg d2lsbCBiZWhhdmUuIENvbW1vbiBlbnRyaWVzIGluIHRoaXMgY29sdW1uIGFyZToKCTx1bD4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRleHRfaW5wdXQ8L3NwYW4+IDogKGRlZmF1bHQp IEEgc3RhbmRhcmQgdGV4dCBib3g8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y3Vz dG9tX3NldDwvc3Bhbj4gOiBBIGN1c3RvbSBmaWVsZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5kYXRlZm9ybWF0czwvc3Bhbj4gOiBTb21lIGtpbmQgb2YgZGF0ZSBmb3JtYXR0 aW5nIHN0cmluZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj55ZXNub3JhZGlvPC9z cGFuPiA6IEEgeWVzIG9yIG5vIHJhZGlvIGJ1dHRvbiBzZXQ8L2xpPgoJPC91bD48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+VXNlcjwvc3Bhbj4gOiBMb2dpbiBuYW1lIHRvIHdo b20gdGhlIHByZWZlcmVuY2UgYmVsb25nczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5Qb3NpdGlvbjwvc3Bhbj4gOiBXaGVuIGxpc3RpbmcgcHJlZmVyZW5jZXMgb24tc2NyZWVu LCB0aGUgcG9zaXRpb24gZGljdGF0ZXMgdGhlaXIgb3JkZXIuIExvd2VzdCBudW1iZXJlZCB2 YWx1ZXMgYXJlIGRpc3BsYXllZCBmaXJzdC4gSXQgaXMgY29tbW9uIHByYWN0aWNlIHRvIGFz c2lnbiBwb3NpdGlvbnMgaW4gaW5jcmVtZW50cyBvZiAxMCBvciAyMCBzbyB0aGVyZSBpcyBy b29tIHRvIGVhc2lseSBpbnNlcnQgdmFsdWVzIGxhdGVyPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPkFjdGlvbnM8L3NwYW4+IDogQWN0aW9ucyB0byBwZXJmb3JtIG9uIGVhY2gg cHJlZmVyZW5jZToKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPltFZGl0XTwvc3Bh bj4gOiBFZGl0IHRoZSB2YXJpb3VzIGRldGFpbHMgb2YgdGhlIHByZWZlcmVuY2UuIElucHV0 IGNvbnRyb2xzIGFwcGVhciBpbmxpbmUgZm9yIHlvdSB0byBhbHRlciB0aGUgdmFsdWVzLiBX aGVuIHlvdSBhcmUgZG9uZSwgY2xpY2sgPGVtPlNhdmU8L2VtPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5bRGVsZXRlXTwvc3Bhbj4gOiBQZXJtYW5lbnRseSByZW1vdmUgdGhl IHByZWZlcmVuY2UgdmFsdWUgZnJvbSB5b3VyIGRhdGFiYXNlLiBZb3Ugd2lsbCBoYXZlIGEg Y2hhbmNlIHRvIGNvbmZpcm0geW91ciBpbnRlbnRpb25zLiBCZSBjYXJlZnVsITwvbGk+Cgk8 L3VsPjwvbGk+Cgk8L3VsPgoKCTxwPlVzZSB0aGUgc2VhcmNoIGZlYXR1cmUgdG8gbGltaXQg dGhlIGxpc3QgdG8gdGhlIG1hdGNoZWQgaXRlbXMuIFdoZW4gc2VhcmNoaW5nIGJ5IDxjb2Rl PlZpc2liaWxpdHk8L2NvZGU+IHlvdSBjYW4gZWl0aGVyIHVzZSA8Y29kZT5iYXNpYzwvY29k ZT4sIDxjb2RlPmFkdmFuY2VkPC9jb2RlPiBvciA8Y29kZT5oaWRkZW48L2NvZGU+LCBvciB1 c2UgdGhlaXIgbnVtZXJpYyBjb3VudGVycGFydHMgMCwgMSBvciAyIHJlc3BlY3RpdmVseS48 L3A+CgoJPHA+Q2xpY2sgPGVtPk5ldyBwcmVmPC9lbT4gdG8gYWRkIGEgcHJlZmVyZW5jZSB2 YWx1ZSB0byB0aGUgZGF0YWJhc2UuIEEgcm93IG9mIGlucHV0IGNvbnRyb2xzIHdpbGwgc2xp ZGUgZG93biBhbGxvd2luZyB5b3UgdG8gZW50ZXIgeW91ciBkZXNpcmVkIHZhbHVlcy4gQ2xp Y2sgPGVtPkFkZDwvZW0+IHRvIGNvbW1pdCB0aGUgbmV3IHByZWZlcmVuY2UuPC9wPgoKCTxo Mz5Ob3RlczwvaDM+CgoJPHVsPgoJCTxsaT5JZiB5b3UgdHJ5IHRvIGVkaXQgYSBwcmVmZXJl bmNlIGFuZCByZW5hbWUgaXQgdG8gdGhhdCBvZiBhbiBleGlzdGluZyBwcmVmZXJlbmNlIG93 bmVkIGJ5IHNvbWVvbmUgZWxzZSwgdGhlIHBsdWdpbiB3aWxsIHdhcm4geW91IGFuZCB5b3Vy IGVkaXQgd2lsbCBiZSByZXZlcnRlZCB0byBpdHMgb3JpZ2luYWwgc3RhdGU8L2xpPgoJCTxs aT5JZiB5b3UgdHJ5IHRvIGNyZWF0ZSBhIHByZWZlcmVuY2UgdmFsdWUgdGhhdCB3b3VsZCBj bG9iYmVyIGFuIGV4aXN0aW5nIHNldHRpbmcsIHRoZSBwbHVnaW4gd2lsbCB3YXJuIHlvdS4g SWYgeW91IGNsaWNrIDxlbT5OZXcgcHJlZjwvZW0+IGFnYWluIHRob3VnaCwgeW91ciBtb3N0 IHJlY2VudGx5IGVudGVyZWQgdmFsdWVzIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLiBUaGUg bmFtZSBhbmQgdXNlciB3aWxsIGJlIHJlc2V0LCBob3dldmVyPC9saT4KCQk8bGk+SWYgeW91 IHJlYWxseSwgcmVhbGx5LCBrbm93IHdoYXQgeW91IGFyZSBkb2luZyBhbmQgd2FudCB0byBk ZWxldGUgYSAmIzgyMTY7cHJvdGVjdGVkJiM4MjE3OyBwcmVmIHNldHRpbmcgKGUuZy4gPGNv ZGU+cnZtX2Nzc19kaXI8L2NvZGU+IGlzIG9uZSBzdWNoIGVudHJ5KSB0aGVuIHNpbXBseSBh ZGQgPGNvZGU+JmFtcDtleHBvc2U9YWxsPC9jb2RlPiB0byB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPlVSTDwvc3Bhbj4uIFRoZSBkZWxldGUgYnV0dG9uIHdpbGwgYmVjb21lIGF2YWlsYWJs ZSBmb3IgYWxsIHByZWYgc2V0dGluZ3MuIEJlIGNhcmVmdWwhIEFzIGEgcHJlY2F1dGlvbiwg d2hlbiB5b3UgY2hhbmdlIHBhZ2Ugb3IgYWx0ZXIgdGhlIHNlYXJjaC9zb3J0IGNyaXRlcmlh IHRoZSBwbHVnaW4gd2lsbCByZXZlcnQgdG8gJiM4MjE2O3NhZmUmIzgyMTc7IG1vZGUgYW5k IHlvdSB3aWxsIGhhdmUgdG8gYWRkIDxjb2RlPiZhbXA7ZXhwb3NlPWFsbDwvY29kZT4gdG8g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGFnYWluIHRvIG5vdGlmeSB0aGUg cGx1Z2luIG9mIHlvdXIgaW50ZW50aW9uczwvbGk+Cgk8L3VsPgoKCTxoMj5Vc2FnZSAmIzgy MTI7IHRhZ3M8L2gyPgoKCTxoMz48Y29kZT4mbHQ7dHhwOnNtZF9wcmVmX3NldCAvJmd0Ozwv Y29kZT48L2gzPgoKCTxwPlNldCBhIHByZWZlcmVuY2UgdmFsdWUuIEF0dHJpYnV0ZXM6PC9w PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hbWU8L3NwYW4+IDogdGhlIG5h bWUgb2YgdGhlIHByZWZlcmVuY2UgeW91IHdpc2ggdG8gc2V0LiBJZiBpdCBleGlzdHMgaXQg d2lsbCBiZSB1cGRhdGVkLCBpZiBpdCBkb2VzbiYjODIxNzt0IGV4aXN0IGl0IHdpbGwgYmUg Y3JlYXRlZC4gPGVtPk5vdGUgdGhhdCB5b3UgY2Fubm90IGNyZWF0ZSBvciB1cGRhdGUgYSBw cmVmZXJlbmNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvbmUgb2YgdGhlIHN5c3RlbSBwcmVm ZXJlbmNlczwvZW0+ICYjODIxMjsgdXNlIHRoZSBhZG1pbiBpbnRlcmZhY2UgZm9yIHRoYXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dmFsdWU8L3NwYW4+IDogdGhlIHZhbHVl IHRvIGFzc2lnbiB0byB0aGUgbmFtZWQgcHJlZmVyZW5jZTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5ldmVudDwvc3Bhbj48c3VwIGNsYXNzPSJmb290bm90ZSI+PGEgaHJlZj0i I2ZuMTk2ODYzMTY0NGMyOTI4ZDJhMWIzNSI+MTwvYT48L3N1cD4gOiBhIGdyb3VwIHRvIHdo aWNoIHlvdSB3aXNoIHRvIGFzc2lnbiB5b3VyIHByZWZlcmVuY2UuIEl0IGNvdWxkIGJlIHRo ZSBldmVudCBvZiBhbiBhZG1pbi1zaWRlIHRhYiAoZS5nLiAmIzgyMTY7ZmlsZSYjODIxNzsp IG9yIGFuIGVudHJ5IG9mIHlvdXIgb3duIGNob29zaW5nLiBJdCBpcyByZWNvbW1lbmRlZCB5 b3Ugc3RheSBhd2F5IGZyb20gdGhlIG5hbWUgb2YgZXhpc3RpbmcgZXZlbnRzIHVubGVzcyB5 b3Uga25vdyB3aGF0IHlvdSYjODIxNztyZSBkb2luZyEgWW91IGNhbiBsZWF2ZSB0aGlzIGJs YW5rLCBidXQgaXQmIzgyMTc7cyBhZHZpc2FibGUgdG8gc2V0IGl0IHRvIHNvbWV0aGluZzwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj52aXNpYmlsaXR5PC9zcGFuPjxzdXAgY2xh c3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm4xOTY4NjMxNjQ0YzI5MjhkMmExYjM1Ij4xPC9h Pjwvc3VwPiA6IG9uZSBvZiA8Y29kZT5iYXNpYzwvY29kZT4sIDxjb2RlPmFkdmFuY2VkPC9j b2RlPiBvciA8Y29kZT5oaWRkZW48L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT5oaWRkZW48L2Nv ZGU+LiBJZiB5b3Ugc2V0IGl0IHRvIGJhc2ljIG9yIGFkdmFuY2VkLCB5b3VyIHByZWZlcmVu Y2UgdmFsdWUgd2lsbCBhcHBlYXIgb24gdGhlIHJlbGV2YW50IGJhc2ljL2FkdmFuY2VkIFBy ZWZlcmVuY2VzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aW5wdXRfY3Ry bDwvc3Bhbj48c3VwIGNsYXNzPSJmb290bm90ZSI+PGEgaHJlZj0iI2ZuMTk2ODYzMTY0NGMy OTI4ZDJhMWIzNSI+MTwvYT48L3N1cD4gOiB0aGUgdHlwZSBvZiBpbnB1dCBjb250cm9sIHlv dXIgcHJlZmVyZW5jZSByZXF1aXJlcy4gPGNvZGU+dGV4dF9pbnB1dDwvY29kZT4gaXMgdGhl IGRlZmF1bHQgYnV0IHlvdSBjYW4gc2V0IHRoaXMgdG8gd2hhdGV2ZXIgbWFrZXMgc2Vuc2Ug Zm9yIHlvdXIgYXBwIChlLmcuIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHVzZXMg PGNvZGU+eWVzbm9yYWRpbzwvY29kZT4gZm9yIHllcy9ubyByYWRpbyBjaG9pY2VzKTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wb3NpdGlvbjwvc3Bhbj48c3VwIGNsYXNzPSJm b290bm90ZSI+PGEgaHJlZj0iI2ZuMTk2ODYzMTY0NGMyOTI4ZDJhMWIzNSI+MTwvYT48L3N1 cD4gOiB0aGUgcG9zaXRpb24gKG9yZGVyKSB5b3Ugd2FudCB5b3VyIHByZWYgdG8gYXBwZWFy IGluLiBUYWtlcyBhbiBpbnRlZ2VyIHZhbHVlIGFuZCB0aGUgcHJlZnMgd2lsbCBiZSBkaXNw bGF5ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLCBncm91cGVkIGJ5IDxjb2RlPmV2ZW50PC9jb2Rl PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wcml2YXRlPC9zcGFuPjxzdXAgY2xh c3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm4xOTY4NjMxNjQ0YzI5MjhkMmExYjM1Ij4xPC9h Pjwvc3VwPiA6IGJ5IGRlZmF1bHQgdGhpcyBpcyAwIHdoaWNoIG1lYW5zIHRoZSBwcmVmZXJl bmNlIGlzIGF2YWlsYWJsZSB0byBldmVyeW9uZS4gSWYgeW91IHNldCB0aGlzIHRvIDEgdGhl biB0aGUgcGx1Z2luIHdpbGwgYXR0ZW1wdCB0byBtYWtlIGEgcHJpdmF0ZSAocGVyLXVzZXIp IHByZWZlcmVuY2UuIElmIHlvdSYjODIxNztyZSBub3QgbG9nZ2VkIGluIGl0IHdvbiYjODIx Nzt0IGhhdmUgYW55IGVmZmVjdCBhbmQgdGhlIHByZWZlcmVuY2Ugd2lsbCA8c3Ryb25nPm5v dDwvc3Ryb25nPiBiZSBjcmVhdGVkPC9saT4KCTwvdWw+CgoJPHAgaWQ9ImZuMTk2ODYzMTY0 NGMyOTI4ZDJhMWIzNSIgY2xhc3M9ImZvb3Rub3RlIj48c3VwPjE8L3N1cD4gTm90ZSB0aGF0 IHRoZXNlIGF0dHJpYnV0ZXMgY2FuIG9ubHkgYmUgc2V0IHdoZW4gdGhlIHByZWZlcmVuY2Ug aXMgY3JlYXRlZCBmb3IgdGhlIGZpcnN0IHRpbWUuIE9uY2UgdGhlIHByZWYgaXMgbWFkZSwg dGhlc2UgYXR0cmlidXRlcyB3aWxsIGJlIGlnbm9yZWQgYW5kIHlvdSBjYW4gb25seSB1cGRh dGUgdGhlIDxjb2RlPnZhbHVlPC9jb2RlPiBvZiB0aGUgcHJlZi48L3A+CgoJPHA+VGhlIHRh ZyB3b3JrcyB3aXRoIDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0OzwvY29kZT4gc28geW91IGNh biwgZm9yIGV4YW1wbGUsIHJlcG9ydCB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBz ZXQgb3BlcmF0aW9uLjwvcD4KCgk8aDM+PGNvZGU+Jmx0O3R4cDpzbWRfcHJlZl9nZXQgLyZn dDs8L2NvZGU+PC9oMz4KCgk8cD5SZXRyaWV2ZSBvbmUgb3IgbW9yZSBwcmVmZXJlbmNlIHZh bHVlcy4gQXR0cmlidXRlczo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ bmFtZTwvc3Bhbj4gOiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHByZWZlcmVuY2UgbmFt ZXMgdG8gcmV0cmlldmU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dmFsdWU8L3Nw YW4+IDogYSBsaXN0IG9mIHByZWZlcmVuY2UgdmFsdWVzIHRvIGV4dHJhY3QuIFVzZWZ1bCBp ZiB1c2luZyBvbmUgPGNvZGU+bmFtZTwvY29kZT4gdG8gY2hlY2sgaWYgdGhlIHByZWZlcmVu Y2UgaXMgc2V0IHRvIHRoaXMgcGFydGljdWxhciB2YWx1ZTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5ldmVudDwvc3Bhbj4gOiBhIGxpc3Qgb2YgcHJlZmVyZW5jZSBldmVudHMg dG8gcmV0cmlldmU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dmlzaWJpbGl0eTwv c3Bhbj4gOiBvbmUgb2YgZWl0aGVyIDxjb2RlPmJhc2ljPC9jb2RlPiwgPGNvZGU+YWR2YW5j ZWQ8L2NvZGU+IG9yIDxjb2RlPmhpZGRlbjwvY29kZT4gdG8gcmV0cmlldmUgdGhhdCB0eXBl IG9mIHByZWZlcmVuY2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aW5wdXRfY3Ry bDwvc3Bhbj4gOiBmaWx0ZXIgYnkgdGhpcyBsaXN0IG9mIGlucHV0IGNvbnRyb2xzPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBvc2l0aW9uPC9zcGFuPiA6IG9ubHkgc2hvdyBw cmVmZXJlbmNlcyB0aGF0IGFyZSBzZXQgdG8gYXBwZWFyIGF0IHRoaXMgbGlzdCBvZiBwb3Np dGlvbnMgaW4gdGhlIHRhYmxlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmF1dGhv cjwvc3Bhbj4gOiBsaXN0IG9mIGF1dGhvciAobG9naW4pIG5hbWVzIGZyb20gd2hpY2ggeW91 IHdpc2ggdG8gcmV0cmlldmUgKHBlci11c2VyKSBwcmVmZXJlbmNlcy4gSWYgeW91IHNwZWNp ZnkgdGhlIHNwZWNpYWwgdmFsdWUgPGNvZGU+U01EX1BSRUZfTE9HR0VEX0lOPC9jb2RlPiB0 aGVuIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyJiM4MjE3O3MgbmFtZSAoaWYgYXZhaWxh YmxlKSB3aWxsIGJlIGNvbnNpZGVyZWQuIFlvdSBjYW4gdXNlIHRoaXMgdG8geW91ciBhZHZh bnRhZ2UgdG8gb25seSBkaXNwbGF5IGEgdXNlciYjODIxNztzIHByZWZlcmVuY2VzIHdoZW4g dGhleSYjODIxNztyZSBsb2dnZWQgaW4gYW5kIHZpc2l0IHRoZSBwdWJsaWMgc2l0ZTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zb3J0PC9zcGFuPiA6IG9yZGVyIHRoZSByZXR1 cm5lZCBwcmVmcyBieSB0aGVzZSBjb2x1bW5zIGFuZCBzb3J0IGRpcmVjdGlvbnMuIERlZmF1 bHQ6IDxjb2RlPm5hbWUgYXNjPC9jb2RlPi4gQ2hvb3NlIGZyb206Cgk8dWw+CgkJPGxpPjxz dHJvbmc+bmFtZTwvc3Ryb25nPiA6IHByZWYgbmFtZTwvbGk+CgkJPGxpPjxzdHJvbmc+dmFs PC9zdHJvbmc+IDogcHJlZiB2YWx1ZS4gPGVtPjxzcGFuIGNsYXNzPSJjYXBzIj5OT1RFPC9z cGFuPjogaXQmIzgyMTc7cyA8Y29kZT52YWw8L2NvZGU+IG5vdCA8Y29kZT52YWx1ZTwvY29k ZT48L2VtPjwvbGk+CgkJPGxpPjxzdHJvbmc+ZXZlbnQ8L3N0cm9uZz4gOiBwcmVmIGV2ZW50 IGdyb3VwPC9saT4KCQk8bGk+PHN0cm9uZz50eXBlPC9zdHJvbmc+IDogcHJlZiB0eXBlICh2 aXNpYmlsaXR5KTwvbGk+CgkJPGxpPjxzdHJvbmc+aHRtbDwvc3Ryb25nPiA6IGlucHV0IGNv bnRyb2w8L2xpPgoJCTxsaT48c3Ryb25nPnBvc2l0aW9uPC9zdHJvbmc+IDogbGlzdCBwb3Np dGlvbjwvbGk+CgkJPGxpPjxzdHJvbmc+dXNlcl9uYW1lPC9zdHJvbmc+IDogcHJlZiBvd25l ciYjODIxNztzIGxvZ2luIG5hbWU8L2xpPgoJPC91bD48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiB1c2UgdGhpcyBmb3JtIHRvIGRpc3BsYXkgZWFjaCBw cmVmZXJlbmNlIHZhbHVlLiBJZiB1bnNldCwgdGhlIGNvbnRhaW5lciB3aWxsIGJlIHVzZWQu IElmIGJvdGggYXJlIGVtcHR5IHRoZSBwbHVnaW4gd2lsbCBkaXNwbGF5IG5vdGhpbmcuIE5v dGUgdGhhdCBpZiB5b3UgdXNlIHRoZSB0YWcgYXMgYSBzZWxmLWNsb3NpbmcgdGFnLCA8ZW0+ dGhlIHZhbHVlKHMpIHdpbGwgYmUgZGlzcGxheWVkPC9lbT48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgKHdpdGhvdXQg PGNvZGU+Jmx0OyZndDs8L2NvZGU+IGJyYWNrZXRzKSBpbiB3aGljaCB0byB3cmFwIHRoZSBk aXNwbGF5ZWQgbGlzdCBvZiBwcmVmZXJlbmNlczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgKHdpdGhvdXQgPGNvZGU+Jmx0 OyZndDs8L2NvZGU+IGJyYWNrZXRzKSBpbiB3aGljaCB0byB3cmFwIGVhY2ggcHJlZmVyZW5j ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhcHBseSB0byB0aGUg d3JhcHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5odG1sX2lkPC9zcGFuPiA6 IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImNhcHMi PkRPTTwvc3Bhbj4gbm9kZSBJRCB0byBhcHBseSB0byB0aGUgd3JhcHRhZzwvbGk+Cgk8L3Vs PgoKCTxwPlRoZSB0YWcgd29ya3Mgd2l0aCA8Y29kZT4mbHQ7dHhwOmVsc2UgLyZndDs8L2Nv ZGU+IHNvIHlvdSBjYW4sIGZvciBleGFtcGxlLCBkZXRlY3QgaWYgYSBwcmVmZXJlbmNlIGV4 aXN0cyBvciBoYXMgYSBjZXJ0YWluIHZhbHVlIGFuZCB0aGVuIHVwZGF0ZSBvciBjcmVhdGUg aXQgaWYgaXQgZG9lc24mIzgyMTc7dCBtYXRjaC48L3A+CgoJPGg0PlJlcGxhY2VtZW50IHZh cmlhYmxlczwvaDQ+CgoJPHA+SW4geW91ciBjb250YWluZXIgb3IgZm9ybSB5b3UgbWF5IHVz ZSB0aGUgZm9sbG93aW5nIHJlcGxhY2VtZW50IHZhcmlhYmxlcyB0byBkaXNwbGF5IHRoZSB2 YXJpb3VzIHZhbHVlcyBmcm9tIGVhY2ggcmV0dXJuZWQgcHJlZmVyZW5jZTo8L3A+CgoJPHVs PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9wcmVmX25hbWV9PC9zcGFuPiA6IHRo ZSBwcmVmZXJlbmNlIG5hbWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9w cmVmX3ZhbHVlfTwvc3Bhbj4gOiB0aGUgcHJlZmVyZW5jZSB2YWx1ZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57c21kX3ByZWZfZXZlbnR9PC9zcGFuPiA6IHRoZSBldmVudCB0 byB3aGljaCB0aGUgcHJlZiBiZWxvbmdzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PntzbWRfcHJlZl92aXNpYmlsaXR5fTwvc3Bhbj4gOiB0aGUgbnVtZXJpYyBwcmVmZXJlbmNl IGZsYXZvdXIgKDAgPSBiYXNpYzsgMT1hZHZhbmNlZDsgMj1oaWRkZW4pPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfcHJlZl9pbnB1dF9jdHJsfTwvc3Bhbj4gOiB0aGUg aHRtbCBpbnB1dCBjb250cm9sIHR5cGUgYXNzaWduZWQgdG8gdGhlIHByZWY8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9wcmVmX3Bvc2l0aW9ufTwvc3Bhbj4gOiB0aGUg b3JkZXIgLyBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBwcmVmPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPntzbWRfcHJlZl9hdXRob3J9PC9zcGFuPiA6IHRoZSBvd25lciAoYXV0 aG9yIGxvZ2luIG5hbWUpIG9mIHRoZSBwcmVmZXJlbmNlLiBXaWxsIGJlIGVtcHR5IGZvciBn bG9iYWwgcHJlZnM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9wcmVmX3Rv dGFsfTwvc3Bhbj4gOiB0aGUgdG90YWwgbnVtYmVyIG9mIHByZWZlcmVuY2UgdmFsdWVzIHRo YXQgbWF0Y2hlZCB0aGUgY3JpdGVyaWE8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e3NtZF9wcmVmX2luZGV4fTwvc3Bhbj4gOiB0aGUgY3VycmVudCBwcmVmIGNvdW50IHZhbHVl LCBjb3VudGluZyBmcm9tIDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9w cmVmX2NvdW50ZXJ9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHByZWYgY291bnQgdmFsdWUsIGNv dW50aW5nIGZyb20gMTwvbGk+Cgk8L3VsPgoKCTxoMz48Y29kZT4mbHQ7dHhwOnNtZF9wcmVm X2RlbGV0ZSAvJmd0OzwvY29kZT48L2gzPgoKCTxwPlJlbW92ZSBvbmUgb3IgbW9yZSBwcmVm ZXJlbmNlIHZhbHVlcy4gWW91IG1heSBub3QgcmVtb3ZlIGEgc3lzdGVtIHByZWZlcmVuY2Ug dXNpbmcgdGhpcyB0YWc6IHlvdSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSB1c2UgdGhlIGFk bWluIGludGVyZmFjZSBhbmQgaW5kaWNhdGUgdGhhdCB5b3Uga25vdyB3aGF0IHlvdSYjODIx NztyZSBkb2luZyB3aXRoIHRoZSA8Y29kZT5leHBvc2U8L2NvZGU+IDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlLjwvcD4KCgk8cD5UYWcgYXR0cmlidXRlczo8L3A+ CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmFtZTwvc3Bhbj4gOiBhIGNvbW1h IHNlcGFyYXRlZCBsaXN0IG9mIHByZWZlcmVuY2UgbmFtZXMgdG8gcmVtb3ZlPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50PC9zcGFuPiA6IGEgbGlzdCBvZiBwcmVmZXJl bmNlIGV2ZW50cyB0byByZW1vdmU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YXV0 aG9yPC9zcGFuPiA6IHJlbW92ZSBwcmVmcyBiZWxvbmdpbmcgdG8gdGhpcyBsaXN0IG9mIGF1 dGhvciAobG9naW4pIG5hbWVzLiBJZiB5b3Ugc3BlY2lmeSB0aGUgc3BlY2lhbCB2YWx1ZSA8 Y29kZT5TTURfUFJFRl9MT0dHRURfSU48L2NvZGU+IHRoZW4gdGhlIGN1cnJlbnQgbG9nZ2Vk IGluIHVzZXImIzgyMTc7cyBuYW1lIChpZiBhdmFpbGFibGUpIHdpbGwgYmUgY29uc2lkZXJl ZDwvbGk+Cgk8L3VsPgoKCTxwPlRoZSB0YWcgc3VwcG9ydHMgPGNvZGU+Jmx0O3R4cDplbHNl IC8mZ3Q7PC9jb2RlPiBzbyB5b3UgY2FuIGluZGljYXRlIHRoZSBzdWNjZXNzIG9yIG90aGVy d2lzZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbiBvbiBlYWNoIHByZWZlcmVuY2UuIEluc2lk ZSB5b3VyIGNvbnRhaW5lciB5b3UgY2FuIHVzZSBhbnkgb2YgdGhlIHJlcGxhY2VtZW50IHZh cmlhYmxlcyBhcyBnaXZlbiBmb3IgdGhlIDxjb2RlPiZsdDt0eHA6c21kX3ByZWZfZ2V0Jmd0 OzwvY29kZT4gdGFnLiBUaGVyZSBpcyBvbmUgYWRkaXRpb25hbCByZXBsYWNlbWVudDogPGNv ZGU+e3NtZF9wcmVmX2RlbF9yZXN1bHR9PC9jb2RlPiBpcyBhIG51bWVyaWMgdmFsdWUgaW5k aWNhdGluZyB0aGUgb3V0Y29tZSBvZiB0aGUgZGVsZXRlLCBhcyBmb2xsb3dzOjwvcD4KCgk8 dWw+CgkJPGxpPjxzdHJvbmc+LTE8L3N0cm9uZz46IGRpc2FsbG93ZWQgKGl0JiM4MjE3O3Mg YSBzeXN0ZW0gcHJlZik8L2xpPgoJCTxsaT48c3Ryb25nPjA8L3N0cm9uZz46IGZhaWxlZCAo Zm9yIHNvbWUgb3RoZXIgcmVhc29uKTwvbGk+CgkJPGxpPjxzdHJvbmc+MTwvc3Ryb25nPjog c3VjY2Vzc2Z1bGx5IGRlbGV0ZWQ8L2xpPgoJPC91bD4KCgk8aDI+RXhhbXBsZXM8L2gyPgoK CTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE6IGxpc3Qgb2YgcHJlZmVyZW5jZXMgYnkgZXZlbnQ8 L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpz bWRfcHJlZl9nZXQgZXZlbnQ9JnF1b3Q7bXlfZXZlbnQmcXVvdDsKICAgICB3cmFwdGFnPSZx dW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xpJnF1b3Q7Jmd0OwogICB7c21kX3ByZWZfdmFs dWV9CiZsdDsvdHhwOnNtZF9wcmVmX2dldCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0i ZWcyIj5FeGFtcGxlIDI6IHNldCBwcmVmIGlmIGl0IGRvZXNuJiM4MjE3O3QgZXhpc3Q7IGRp c3BsYXkgb3RoZXJ3aXNlPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDt0eHA6c21kX3ByZWZfZ2V0IG5hbWU9JnF1b3Q7a2VybWl0JnF1b3Q7Jmd0 OwogIEN1cnJlbnQgc2V0dGluZyBvZiB7c21kX3ByZWZfbmFtZX0gaXMge3NtZF9wcmVmX3Zh bHVlfQombHQ7dHhwOmVsc2UgLyZndDsKICAgJmx0O3R4cDpzbWRfcHJlZl9zZXQgbmFtZT0m cXVvdDtrZXJtaXQmcXVvdDsgdmFsdWU9JnF1b3Q7YSBmcm9nJnF1b3Q7CiAgICAgZXZlbnQ9 JnF1b3Q7bXVwcGV0cyZxdW90OyAvJmd0OwombHQ7L3R4cDpzbWRfcHJlZl9nZXQmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzOiBzZXQgcGVyLXVzZXIgcHJl ZiBpZiBsb2dnZWQgaW48L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfcHJlZl9zZXQgbmFtZT0mcXVvdDtsaXN0X29yZGVyJnF1b3Q7 CiAgICAgdmFsdWU9JnF1b3Q7YXNjJnF1b3Q7IGV2ZW50PSZxdW90O2NvbnRyb2xfc3lzJnF1 b3Q7IHByaXZhdGU9JnF1b3Q7MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+SWYg dGhlIHVzZXIgaXMgbG9nZ2VkIGluLCB0aGUgPGNvZGU+bGlzdF9vcmRlcjwvY29kZT4gd2ls bCBiZSBzZXQuIElmIHRoZXkgYXJlIG5vdCBsb2dnZWQgaW4sIG5vdGhpbmcgd2lsbCBoYXBw ZW4uIFRoaXMgY291bGQgYmUgd3JhcHBlZCBpbiBhIDxjb2RlPiZsdDt0eHA6cnZtX2lmX3By aXZpbGVnZWQmZ3Q7PC9jb2RlPiBjYWxsLiBJdCBjb3VsZCBhbHNvIGJlIHdyYXBlcGQgaW4g YW4gc21kX3ByZWZfZ2V0IHNvIGl0IHdhcyBjcmVhdGVkIG9ubHkgaWYgaXQgZGlkbiYjODIx Nzt0IGV4aXN0LjwvcD4KCgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0OiB0b2dnbGUgcGVyLXVz ZXIgcHJlZjwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4m bHQ7dHhwOnNtZF9wcmVmX2dldCBuYW1lPSZxdW90O2xpc3Rfb3JkZXImcXVvdDsKICAgICBh dXRob3I9JnF1b3Q7U01EX1BSRUZfTE9HR0VEX0lOJnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnZh cmlhYmxlIG5hbWU9JnF1b3Q7dGhlX29yZGVyJnF1b3Q7Jmd0O3tzbWRfcHJlZl92YWx1ZX0m bHQ7L3R4cDp2YXJpYWJsZSZndDsKICAgJmx0O3R4cDppZl92YXJpYWJsZSBuYW1lPSZxdW90 O3RoZV9vcmRlciZxdW90OyB2YWx1ZT0mcXVvdDthc2MmcXVvdDsmZ3Q7CiAgICAgICZsdDt0 eHA6c21kX3ByZWZfc2V0IG5hbWU9JnF1b3Q7bGlzdF9vcmRlciZxdW90OyB2YWx1ZT0mcXVv dDtkZXNjJnF1b3Q7IC8mZ3Q7CiAgICZsdDt0eHA6ZWxzZSAvJmd0OwogICAgICAmbHQ7dHhw OnNtZF9wcmVmX3NldCBuYW1lPSZxdW90O2xpc3Rfb3JkZXImcXVvdDsgdmFsdWU9JnF1b3Q7 YXNjJnF1b3Q7IC8mZ3Q7CiAgICZsdDsvdHhwOmlmX3ZhcmlhYmxlJmd0OwombHQ7L3R4cDpz bWRfcHJlZl9nZXQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JZiB0aGUgdXNlciBpcyBsb2dn ZWQgaW4gYW5kIHRoZSA8Y29kZT5saXN0X29yZGVyPC9jb2RlPiBpcyA8Y29kZT5hc2M8L2Nv ZGU+LCBzd2FwIGl0IHRvIDxjb2RlPmRlc2M8L2NvZGU+LCBhbmQgdmljZS12ZXJzYS4gSWYg dGhlIHVzZXImIzgyMTc7cyBub3QgbG9nZ2VkIGluLCBub3RoaW5nIGhhcHBlbnMuPC9wPgoK CTxoMiBpZD0iY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2gyPgoKCTx1bD4KCQk8bGk+MDYgTm92 IDA5IHwgMC4xMCB8IEluaXRpYWwgcmVsZWFzZTwvbGk+CgkJPGxpPjA3IE5vdiAwOSB8IDAu MTEgfCBBZGRlZCBoZWFkaW5nIHJvdyBhYm92ZSByb3cgYmVpbmcgZWRpdGVkICh0aGFua3Mg VWxpKTwvbGk+CgkJPGxpPjEzIE5vdiAwOSB8IDAuMTIgfCBBZGRlZCA8Y29kZT5leHBvc2U8 L2NvZGU+IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG92ZXJyaWRlIHBhcmFtZXRl cjwvbGk+CgkJPGxpPjI3IEp1biAxMCB8IDAuMjAgfCBBZGRlZCA8Y29kZT5zbWRfcHJlZl9n ZXQ8L2NvZGU+LCA8Y29kZT5zbWRfcHJlZl9zZXQ8L2NvZGU+IGFuZCA8Y29kZT5zbWRfcHJl Zl9kZWxldGU8L2NvZGU+IDsgZml4ZWQgcGFnZWJ5IHR5cG8gKHRoYW5rcyBzcGVla2UpIDsg cHJlZiB0eXBlcyAmZ3Q7IDIgbm93IGNvbnNpZGVyZWQgSGlkZGVuIDsgcmVtb3ZlZCB1bnVz ZWQgY29kZTwvbGk+Cgk8L3VsPgoKPC9kaXY+CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBDU1Mg KioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdo dDoxLjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAxMDUl LzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNv bG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3Jt YWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7 IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4OyB9 CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMt c2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7 IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29s b3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAg aDMgeyBjb2xvcjogIzI3NTY4NTsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlm OyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3Jt OiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQg eyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAx cHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3Nt ZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzMzZDsgfQojc21kX2hl bHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0K I3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5n LWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBz b2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUt dHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5pbXBvcnRhbnQge2NvbG9yOnJlZDt9CiNzbWRf aGVscCBsaSB7IG1hcmdpbjo1cHggMjBweCA1cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFr IHsgbWFyZ2luLXRvcDo1cHg7IH0KPC9zdHlsZT4KPCEtLSAqKiogRU5EIFBMVUdJTiBDU1Mg KioqIC0tPgoiO3M6MzoibWQ1IjtzOjMyOiJkZmNjZTg0MTRjMzc3YTQxNGZhZjAxYzhmMjNj Y2VmYSI7fQ==