# Name: smd_where_used v0.16 # Type: Admin/Client side plugin # Find which forms/pages/articles/plugins/text have been used where in your design # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTQ6InNtZF93aGVyZV91c2VkIjtzOjY6ImF1dGhvciI7czox MToiU3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjE2IjtzOjExOiJkZXNjcmlwdGlvbiI7 czo4MDoiRmluZCB3aGljaCBmb3Jtcy9wYWdlcy9hcnRpY2xlcy9wbHVnaW5zL3RleHQgaGF2 ZSBiZWVuIHVzZWQgd2hlcmUgaW4geW91ciBkZXNpZ24iO3M6NDoiY29kZSI7czoxMDk2MToi Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgew0KCWFkZF9wcml2 cygnc21kX3d1JywnMSwyJyk7DQoNCgkvLyBFeHRlbnNpb25zIHRhYg0KCXJlZ2lzdGVyX3Rh YignZXh0ZW5zaW9ucycsICdzbWRfd3UnLCBzbWRfd3VfZ1R4dCgnc21kX3d1JykpOw0KCXJl Z2lzdGVyX2NhbGxiYWNrKCdzbWRfd3UnLCAnc21kX3d1Jyk7DQp9DQoNCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CmZ1bmN0aW9uIHNtZF93dSgkZXZlbnQsICRzdGVwKSB7DQoJaWYoISRzdGVwIG9yICFpbl9h cnJheSgkc3RlcCwgYXJyYXkoDQoJCQknc21kX3d1X3NlYXJjaCcsDQoJCSkpKSB7DQoJCXNt ZF93dV9zaG93Zm9ybSgnJyk7DQoJfSBlbHNlICRzdGVwKCk7DQp9DQoNCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CmZ1bmN0aW9uIHNtZF93dV9zaG93Zm9ybSgkbWVzc2FnZSwgJHRlcm09JycsICRzZWw9YXJy YXkoKSwgJGluY2w9MCwgJHdob2xlPTAsICRtb2RlPTAsICRwbHVndHlwZT0wKSB7DQoJcGFn ZXRvcChzbWRfd3VfZ1R4dCgnc21kX3d1JyksJG1lc3NhZ2UpOw0KCSRidG5TZWFyY2ggPSBm SW5wdXQoJ3N1Ym1pdCcsICdzbWRfd3Vfc2VhcmNoJywgZ1R4dCgnc2VhcmNoJyksICdzbWFs bGVyYm94Jykuc0lucHV0KCdzbWRfd3Vfc2VhcmNoJyk7DQoJJGJ0blRleHQgPSAnJzsNCglp ZiAoJG1vZGU9PTEpIHsNCgkJaWYgKCRwbHVndHlwZSA9PSAwKSB7DQoJCQkkYnRuVGV4dCA9 IHNtZF93dV9nVHh0KCdhZG1pbl9wbHVnaW5zJyk7DQoJCX0gZWxzZSB7DQoJCQkkYnRuVGV4 dCA9IHNtZF93dV9nVHh0KCdjbGllbnRfcGx1Z2lucycpOw0KCQl9DQoJfQ0KCSRidG5TaG93 UGx1Z3MgPSBmSW5wdXQoJ3N1Ym1pdCcsICdzbWRfd3Vfc2VhcmNoJywgJGJ0blRleHQsICdz bWFsbGVyYm94Jykuc0lucHV0KCdzbWRfd3Vfc2VhcmNoJykuaElucHV0KCdwbHVndHlwZScs ICgoJHBsdWd0eXBlPT0xKSA/IDAgOiAxKSk7DQoJJGJ0blN0eWxlID0gJyBzdHlsZT0iYm9y ZGVyOjA7aGVpZ2h0OjI1cHgiJzsNCgkkcGxhY2UgPSBhcnJheSgnc2VjdGlvbnMnLCdwYWdl cycsJ2Zvcm1zJywnYXJ0aWNsZXMnKTsNCgkkc2VsID0gKGVtcHR5KCRzZWwpKSA/ICRwbGFj ZSA6ICRzZWw7DQoNCgllY2hvICc8Zm9ybSBtZXRob2Q9InBvc3QiIG5hbWU9InNtZF93dV9m b3JtIj4nOw0KCWVjaG8gc3RhcnRUYWJsZSgnbGlzdCcpOw0KCWVjaG8gdHIoZkxhYmVsQ2Vs bChzbWRfd3VfZ1R4dCgnc2VhcmNoX2xibCcpKSAuIHRkY3MoZklucHV0KCd0ZXh0JywgJ3Nl YXJjaF9mb3InLCBzdHJpcHNsYXNoZXMoJHRlcm0pLCAnJywgJycsICcnLCAzMCksIDQpIC4g dGRhKCRidG5TZWFyY2gsICRidG5TdHlsZSkgLiAoKCRtb2RlPT0xKSA/IHRkYSgkYnRuU2hv d1BsdWdzLCAkYnRuU3R5bGUpIDogJycpKTsNCgllY2hvIHRyKGZMYWJlbENlbGwoc21kX3d1 X2dUeHQoJ2ZpbHRlcicpKS50ZGNzKHJhZGlvKCdtZXRoJywwLCgoJGluY2w9PTApPzE6MCkp LnNtZF93dV9nVHh0KCdpbmNsdXNpb24nKS4iICIgLiByYWRpbygnbWV0aCcsMSwoKCRpbmNs PT0xKT8xOjApKS5zbWRfd3VfZ1R4dCgnZXhjbHVzaW9uJykuICIgfCAiIC4gc21kX3d1X2dU eHQoJ3dob2xlX3dvcmQnKS5jaGVja2JveCgnd2hvbGUnLCAxLCAoKCR3aG9sZT09MSk/MTow KSksIDQpKTsNCgkkb3V0ID0gJyc7DQoJZm9yZWFjaCAoJHBsYWNlIGFzICRoZXJlKSB7DQoJ CSRvdXQgLj0gZkxhYmVsQ2VsbChnVHh0KCRoZXJlKSAuIGNoZWNrYm94KCdwbGFjZXNbXScs ICRoZXJlLCBpbl9hcnJheSgkaGVyZSwkc2VsKSkpOw0KCX0NCgllY2hvIHRyKGZMYWJlbENl bGwoc21kX3d1X2dUeHQoJ3NlYXJjaF93aGVyZV9sYmwnKSkgLiAkb3V0KTsNCgllY2hvIGVu ZFRhYmxlKCk7DQoJZWNobyAnPC9mb3JtPic7DQp9DQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rp b24gc21kX3d1X3NlYXJjaCgpIHsNCglleHRyYWN0KGRvU2xhc2goZ3BzYShhcnJheSgnc2Vh cmNoX2ZvcicpKSkpOw0KCSR3aG9sZSA9IGdwcygnd2hvbGUnKTsNCgkkbWV0aCA9IGdwcygn bWV0aCcpOyAvLyAwID0gaW5jbHVkZSwgMSA9IGV4Y2x1ZGUNCgkkcGx1Z3R5cGUgPSBncHMo J3BsdWd0eXBlJyk7IC8vIDAgPSBjbGllbnQsIDEgPSAwK2FkbWluLCAyID0gMStsaWJyYXJ5 DQoJJHBsdWd0eXBlID0gKGlzX251bWVyaWMoJHBsdWd0eXBlKSAmJiAkcGx1Z3R5cGUgPCAz KSA/ICRwbHVndHlwZSA6IDA7DQoJJGpvaW5tZSA9ICgkbWV0aCA9PSAwKSA/ICIgT1IgIiA6 ICIgQU5EICI7DQoJJHBsYWNlcyA9IGdwcygncGxhY2VzJyk7DQoJJHBsYWNlcyA9IGlzX2Fy cmF5KCRwbGFjZXMpID8gJHBsYWNlcyA6IGFycmF5KCk7DQoJJG1vZGUgPSAoJHNlYXJjaF9m b3IpID8gMCA6IDE7DQoJc21kX3d1X3Nob3dmb3JtKCcnLCAkc2VhcmNoX2ZvciwgJHBsYWNl cywgJG1ldGgsICR3aG9sZSwgJG1vZGUsICRwbHVndHlwZSk7DQoNCgkvLyBFbnRyaWVzIGlu IHRoZSBwbGFjZVRhYmxlIGFycmF5IGFyZToNCgkvLyAgMDogVGFibGUgdG8gc2VhcmNoDQoJ Ly8gIDE6IENvbHVtbiB0byBzZWFyY2gNCgkvLyAgMjogQ29sdW1uIHRvIHJldHVybg0KCS8v ICAzOiBIZWFkaW5nIHRvIGRpc3BsYXkgaWYgcmVzdWx0cyBmb3VuZA0KCS8vICA0OiBFdmVu dCBvZiBkZXN0aW5hdGlvbiBVUkwNCgkvLyAgNTogU3RlcCBvZiBkZXN0aW5hdGlvbiBVUkwN CgkvLyAgNjogQWRkaXRpb25hbCBVUkwgdmFyDQoJLy8gIDc6IEFkZGl0aW9uYWwgVVJMIHZh ciByZXBsYWNlbWVudCAodXNlZCBpbiBzdHJ0cikNCgkkcGxhY2VUYWJsZSA9IGFycmF5KA0K CQkncGFnZXMnID0+IGFycmF5KCd0eHBfcGFnZScsICd1c2VyX2h0bWwnLCAnbmFtZScsIGdU eHQoJ3BhZ2VzJyksICdwYWdlJywgJycsICduYW1lJywgJ3tuYW1lfScpLA0KCQknZm9ybXMn ID0+IGFycmF5KCd0eHBfZm9ybScsICdmb3JtJywgJ25hbWUnLCBnVHh0KCdmb3JtcycpLCAn Zm9ybScsICdmb3JtX2VkaXQnLCAnbmFtZScsICd7bmFtZX0nKSwNCgkJJ2FydGljbGVzJyA9 PiBhcnJheSgndGV4dHBhdHRlcm4nLCAnQm9keSxFeGNlcnB0LG92ZXJyaWRlX2Zvcm0sc2Vj dGlvbixUaXRsZSxrZXl3b3JkcycsICdJRCx0aXRsZScsIGdUeHQoJ2FydGljbGVzJyksICdh cnRpY2xlJywgJ2VkaXQnLCAnSUQnLCAne0lEfScpLA0KCQknc2VjdGlvbnMnID0+IGFycmF5 KCd0eHBfc2VjdGlvbicsICdwYWdlLGNzcycsICduYW1lJywgZ1R4dCgnc2VjdGlvbnMnKSwg J3NlY3Rpb24nLCAnJywgJyMnLCAnc2VjdGlvbi17bmFtZX0nKSwNCgkpOw0KDQoJJHJzID0g YXJyYXkoKTsNCgllY2hvIG4uJzxociB3aWR0aD0iNTAlIiAvPic7DQoJZWNobyBzdGFydFRh YmxlKCdsaXN0Jyk7DQoJJGNvbEhlYWQgPSBhcnJheSgpOw0KCSRjb2xCb2R5ID0gYXJyYXko KTsNCg0KCWlmICgkc2VhcmNoX2Zvcikgew0KCQllY2hvIHRyKHRkY3ModGFnKGdUeHQoJ3Nl YXJjaF9yZXN1bHRzJyksICdoMicpLCA0KSk7DQoJCWZvcmVhY2ggKCRwbGFjZXMgYXMgJHBs YWNlKSB7DQoJCQkkY3JvdyA9ICRwbGFjZVRhYmxlWyRwbGFjZV07DQoJCQkkd2hlcmUgPSBh cnJheSgpOw0KCQkJJHdpdGVtcyA9IGRvX2xpc3QoJGNyb3dbMV0pOw0KCQkJJGxpc3QgPSBk b19saXN0KCRjcm93WzJdKTsNCg0KCQkJZm9yZWFjaCAoJHdpdGVtcyBhcyAkaXRlbSkgew0K CQkJCSR3aGVyZVtdID0gJGl0ZW0gLiAoKCRtZXRoPT0xKSA/ICcgTk9UJyA6ICcnKSAuICgo JHdob2xlPT0xKSA/ICcgUkVHRVhQIFwnW1s6PDpdXScuJHNlYXJjaF9mb3IuJ1tbOj46XV1c JycgOiAiIExJS0UgJyUkc2VhcmNoX2ZvciUnIik7DQoJCQl9DQoJCQkkcnMgPSBzYWZlX3Jv d3MoJGNyb3dbMl0sICRjcm93WzBdLCAnKCcuam9pbigkam9pbm1lLCAkd2hlcmUpLicpIE9S REVSIEJZICcuJGxpc3RbMF0pOw0KCQkJJGNvbEhlYWRbXSA9IHRkKHN0cm9uZygkY3Jvd1sz XSkpOw0KCQkJaWYgKCRycykgew0KCQkJCSRvdXQgPSAnPHVsPic7DQoJCQkJZm9yZWFjaCAo JHJzIGFzICRyb3cpIHsNCgkJCQkJJG9wID0gJyc7DQoJCQkJCWZvcmVhY2ggKCRsaXN0IGFz ICRjb2wpIHsNCgkJCQkJCSRmcm9tID0gJ3snLiRjb2wuJ30nOw0KCQkJCQkJaWYgKHN0cnBv cygkY3Jvd1s3XSwgJGZyb20pICE9PSBmYWxzZSkgew0KCQkJCQkJCWlmICgkY3Jvd1s2XSA9 PSAiIyIpIHsNCgkJCQkJCQkJJHZhcnMgPSBqb2luX3FzKGFycmF5KCJldmVudCIgPT4gJGNy b3dbNF0sICJzdGVwIiA9PiAkY3Jvd1s1XSkpLiRjcm93WzZdLnN0cnRyKCRjcm93WzddLCBh cnJheSgkZnJvbSA9PiAkcm93WyRjb2xdKSk7DQoJCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkJ JHZhcnMgPSBqb2luX3FzKGFycmF5KCJldmVudCIgPT4gJGNyb3dbNF0sICJzdGVwIiA9PiAk Y3Jvd1s1XSwgJGNyb3dbNl0gPT4gc3RydHIoJGNyb3dbN10sIGFycmF5KCRmcm9tID0+ICRy b3dbJGNvbF0pKSkpOw0KCQkJCQkJCX0NCgkJCQkJCQkkb3AgLj0gJzxhIGhyZWY9ImluZGV4 LnBocCcuJHZhcnMuJyI+Jy4kcm93WyRjb2xdLic8L2E+ICc7DQoJICAgICAgICAgICAgICAg fSBlbHNlIHsNCgkJCQkJCQkkb3AgLj0gJHJvd1skY29sXS4iICI7DQoJCQkJCQl9DQoJCQkJ CX0NCgkJCQkJJG91dCAuPSAnPGxpPicuJG9wLic8L2xpPic7DQoJCQkJfQ0KCQkJCSRvdXQg Lj0gJzwvdWw+JzsNCgkJCQkkY29sQm9keVtdID0gdGQoJG91dCk7DQoJCQl9IGVsc2Ugew0K CQkJCSRjb2xCb2R5W10gPSB0ZChnVHh0KCdub19yZXN1bHRzX2ZvdW5kJykpOw0KCQkJfQ0K CQl9DQoJCWVjaG8gdHIoam9pbigiICIsICRjb2xIZWFkKSk7DQoJCWVjaG8gdHIoam9pbigi ICIsICRjb2xCb2R5KSk7DQoJfSBlbHNlIHsNCgkJLy8gTm8gc2VhcmNoIGNyaXRlcmlhLCBz byBzaG93IG9ycGhhbnMNCgkJZWNobyB0cih0ZGNzKHRhZyhzbWRfd3VfZ1R4dCgnb3JwaGFu X3Jlc3VsdHMnKSwgJ2gyJyksIDUpKTsNCg0KCQkvLyBSZXByb2dyYW0gdGhlIHBsYWNlcy9w bGFjZVRhYmxlDQoJCSRhcnRrZXkgPSBhcnJheV9zZWFyY2goJ2FydGljbGVzJywgJHBsYWNl cyk7DQoJCWlmICgkYXJ0a2V5ICE9PSBmYWxzZSkgew0KCQkJdW5zZXQoJHBsYWNlc1skYXJ0 a2V5XSk7DQoJCX0NCg0KCQkvLyBwYWdlcy9mb3Jtcy9zZWN0aW9ucyB0byBpZ25vcmUgYmVj YXVzZSB0aGV5IGFyZSBzdGF0aWMgYW5kIGNhbm5vdCBiZSBkZWxldGVkDQoJCSRlc3NlbnRp YWxzID0gYXJyYXkoDQoJCQknc2VjdGlvbnMnID0+IGFycmF5KCdkZWZhdWx0JyksDQoJCQkn cGFnZXMnID0+IGFycmF5KCdlcnJvcl9kZWZhdWx0JyksDQoJCQknZm9ybXMnID0+IGFycmF5 KCdjb21tZW50cycsJ2NvbW1lbnRzX2Rpc3BsYXknLCdjb21tZW50X2Zvcm0nLCdkZWZhdWx0 JywnTGlua3MnLCdmaWxlcycpLCAvLyBjb3BpZWQgZnJvbSB0eHBfZm9ybXMNCgkJKTsNCg0K CQkkcGxhY2VzW10gPSAncGx1Z2lucyc7DQoJCSRwbGFjZXNbXSA9ICdzdHlsZXNoZWV0cyc7 DQoNCgkJJHBsYWNlVGFibGVbJ3BsdWdpbnMnXSA9IGFycmF5KCd0eHBfcGx1Z2luJywgJ25h bWUnLCAnbmFtZScsIGdUeHQoJ3BsdWdpbnMnKSwgJ3BsdWdpbicsICcnLCAnIycsICd7bmFt ZX0nKTsNCgkJJHBsYWNlVGFibGVbJ3N0eWxlc2hlZXRzJ10gPSBhcnJheSgndHhwX2Nzcycs ICduYW1lJywgJ25hbWUnLCBzbWRfd3VfZ1R4dCgnc3R5bGVzaGVldHMnKSwgJ2NzcycsICcn LCAnbmFtZScsICd7bmFtZX0nKTsNCg0KCQkkcGxhY2VUYWJsZVsnZm9ybXMnXVswXSA9ICJT RUxFQ1QgdGYubmFtZSBGUk9NICIgLnNhZmVfcGZ4KCd0eHBfZm9ybScpLiAiIEFTIHRmIFdI RVJFIHRmLm5hbWUgTk9UIElOICgiIC5kb1F1b3RlKGltcGxvZGUoIicsJyIsJGVzc2VudGlh bHNbJ2Zvcm1zJ10pKS4gIikgT1JERVIgQlkgdGYubmFtZSI7IC8vIFdvdWxkIGJlIG5pY2Ug dG8gZXhjbHVkZSBmb3JtcyB0aGF0IHJlZmVyZW5jZSBmb3JtcyBoZXJlIGluc3RlYWQgb2Yg aXRlcmF0aW5nIHRocm91Z2ggdGhlbSBsYXRlcg0KCQkkcGxhY2VUYWJsZVsncGFnZXMnXVsw XSA9ICJTRUxFQ1QgdHAubmFtZSBGUk9NICIgLnNhZmVfcGZ4KCd0eHBfc2VjdGlvbicpLiAi IEFTIHRzIFJJR0hUIEpPSU4gIiAuc2FmZV9wZngoJ3R4cF9wYWdlJykuICIgQVMgdHAgT04g dHMucGFnZSA9IHRwLm5hbWUgV0hFUkUgdHMucGFnZSBJUyBOVUxMIEFORCB0cC5uYW1lIE5P VCBJTiAoIiAuZG9RdW90ZShpbXBsb2RlKCInLCciLCRlc3NlbnRpYWxzWydwYWdlcyddKSku ICIpIE9SREVSIEJZIHRwLm5hbWUiOw0KCQkkcGxhY2VUYWJsZVsncGx1Z2lucyddWzBdID0g IlNFTEVDVCB0Zy5uYW1lLCB0Zy5jb2RlIEZST00gIiAuc2FmZV9wZngoJ3R4cF9wbHVnaW4n KS4gIiBBUyB0ZyBXSEVSRSB0eXBlIDwgIiAuKCRwbHVndHlwZSsxKS4gIiBBTkQgdGcubmFt ZSAhPSAnc21kX3doZXJlX3VzZWQnIE9SREVSIEJZIHRnLm5hbWUiOw0KCQkkcGxhY2VUYWJs ZVsnc2VjdGlvbnMnXVswXSA9ICJTRUxFQ1QgdHMubmFtZSBGUk9NICIgLnNhZmVfcGZ4KCd0 eHBfc2VjdGlvbicpLiAiIEFTIHRzIExFRlQgSk9JTiAiIC5zYWZlX3BmeCgndGV4dHBhdHRl cm4nKS4gIiBBUyB0eHAgT04gdHMubmFtZSA9IHR4cC5zZWN0aW9uIFdIRVJFIElEIElTIE5V TEwgQU5EIHRzLm5hbWUgTk9UIElOICgiIC5kb1F1b3RlKGltcGxvZGUoIicsJyIsJGVzc2Vu dGlhbHNbJ3NlY3Rpb25zJ10pKS4gIikgT1JERVIgQlkgdHMubmFtZSI7DQoJCSRwbGFjZVRh YmxlWydzdHlsZXNoZWV0cyddWzBdID0gIlNFTEVDVCB0Yy5uYW1lIEZST00gIiAuc2FmZV9w ZngoJ3R4cF9zZWN0aW9uJykuICIgQVMgdHMgUklHSFQgSk9JTiAiIC5zYWZlX3BmeCgndHhw X2NzcycpLiAiIEFTIHRjIE9OIHRzLmNzcyA9IHRjLm5hbWUgV0hFUkUgdHMucGFnZSBJUyBO VUxMIE9SREVSIEJZIHRjLm5hbWUiOw0KDQoJCS8vIEZvciAiYXdrd2FyZCIgcXVlcmllcyB0 aGF0IGNhbid0IGJlIGRvbmUgaW4gb25lIHNob3QsIHRoZXJlIGFyZSB0aHJlZSB0aGluZ3Mg cmVxdWlyZWQgcGVyICRwbGFjZToNCgkJLy8gIDE6IHR4cCB0YWJsZSBuYW1lDQoJCS8vICAy OiBsaXN0IG9mIGNvbHVtbnMgdG8gY29tcGFyZQ0KCQkvLyAgMzogbWV0aG9kIG9mIGNvbXBh cmlzb24gcGVyIGNvbHVtbiAoMCA9ICJkaXJlY3QgbWF0Y2giLCAxID0gImxpa2UiKQ0KCQkk Y1RhYmxlID0gYXJyYXkoDQoJCQkncGx1Z2lucycgPT4gYXJyYXkoDQoJCQkJJ3R4cF9mb3Jt JyA9PiBhcnJheSgnZm9ybScgPT4gMSksDQoJCQkJJ3R4cF9wYWdlJyA9PiBhcnJheSgndXNl cl9odG1sJyA9PiAxKSwNCgkJCQkndGV4dHBhdHRlcm4nID0+IGFycmF5KCdCb2R5JyA9PiAx LCAnRXhjZXJwdCcgPT4gMSksDQoJCQkpLA0KCQkJJ2Zvcm1zJyA9PiBhcnJheSgNCgkJCQkn dHhwX2Zvcm0nID0+IGFycmF5KCdmb3JtJyA9PiAxKSwNCgkJCQkndHhwX3BhZ2UnID0+IGFy cmF5KCd1c2VyX2h0bWwnID0+IDEpLA0KCQkJCSd0ZXh0cGF0dGVybicgPT4gYXJyYXkoJ0Jv ZHknID0+IDEsICdFeGNlcnB0JyA9PiAxLCAnb3ZlcnJpZGVfZm9ybScgPT4gMCksDQoJCQkp LA0KCQkpOw0KDQoJCS8vIFdvcmsgb24gYSBjb2x1bW4gYXQgYSB0aW1lDQoJCWZvcmVhY2gg KCRwbGFjZXMgYXMgJHBsYWNlKSB7DQoJCQkkY3JvdyA9ICRwbGFjZVRhYmxlWyRwbGFjZV07 DQoJCQkkY29sUmVmcyA9IGRvX2xpc3QoJGNyb3dbMl0pOw0KCQkJJGNvbEhlYWRbXSA9IHRk KHN0cm9uZygkY3Jvd1szXSkpOw0KCQkJJHJzID0gc3RhcnRSb3dzKCRjcm93WzBdKTsNCgkJ CWlmICgkcnMpIHsNCgkJCQkkb3V0ID0gJzx1bD4nOw0KCQkJCXdoaWxlICgkcm93ID0gbmV4 dFJvdygkcnMpKSB7DQoJCQkJCS8vIENvdW50IHRoZSBubyBvZiByZWNvcmRzIG1hdGNoaW5n IHRoaXMgbmFtZSBpbiBlYWNoIHRhYmxlLg0KCQkJCQkvLyBBbnkgdGltZSB0aGlzIGdvZXMg YWJvdmUgemVybywgdGhlIGl0ZW0gaXMgdXNlZCBhbmQgaXQgY2FuIGJlIGlnbm9yZWQNCgkJ CQkJJG9wID0gJyc7DQoJCQkJCSRmbmFsaWFzZXMgPSBhcnJheSgpOw0KCQkJCQlpZiAoYXJy YXlfa2V5X2V4aXN0cygkcGxhY2UsICRjVGFibGUpKSB7DQoJCQkJCQkvLyBQbHVnaW4gZnVu Y3Rpb25zIGFyZSBub3QgbmVjZXNzYXJpbHkgdGhlIG5hbWUgb2YgdGhlIHBsdWdpbiBpdHNl bGYuDQoJCQkJCQkvLyBGaW5kIGFsbCBmdW5jdGlvbiBkZWZpbml0aW9ucyBhbmQgYnVpbGQg YSBsaXN0IG9mIGFsaWFzZXMNCgkJCQkJCWlmICgkcGxhY2UgPT0gJ3BsdWdpbnMnKSB7DQoJ CQkJCQkJJHJlID0gJy9mdW5jdGlvblxzKyhbQS1aYS16MC05X10rKVxzKlwoLyc7DQoJCQkJ CQkJJG51bSA9IHByZWdfbWF0Y2hfYWxsKCRyZSwgJHJvd1snY29kZSddLCAkZm5hbGlhc2Vz KTsNCgkJCQkJCX0NCg0KCQkJCQkJJHJlY3MgPSAwOw0KCQkJCQkJZm9yZWFjaCAoJGNUYWJs ZVskcGxhY2VdIGFzICR0YmwgPT4gJGNvbEluZm8pIHsNCgkJCQkJCQlpZiAoJHJlY3MgPT0g MCkgew0KCQkJCQkJCQkkd2hlcmUgPSBhcnJheSgpOw0KCQkJCQkJCQlmb3JlYWNoICgkY29s SW5mbyBhcyAkY29sTmFtZSA9PiAkcXJ5VHlwZSkgew0KCQkJCQkJCQkJJHdoZXJlW10gPSAk Y29sTmFtZSAuICgoJHFyeVR5cGU9PTApID8gIiA9ICciIC4kcm93WyRjb2xSZWZzWzBdXS4g IiciIDogIiBMSUtFICclIiAuJHJvd1skY29sUmVmc1swXV0uICIlJyIpOw0KCQkJCQkJCQkJ aWYgKGNvdW50KCRmbmFsaWFzZXMpID4gMSkgew0KCQkJCQkJCQkJCWZvcmVhY2ggKCRmbmFs aWFzZXNbMV0gYXMgJGZuYWxpYXMpIHsNCgkJCQkJCQkJCQkJJHdoZXJlW10gPSAkY29sTmFt ZSAuICgoJHFyeVR5cGU9PTApID8gIiA9ICciIC4kZm5hbGlhcy4gIiciIDogIiBMSUtFICcl IiAuJGZuYWxpYXMuICIlJyIpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJ fQ0KCQkJCQkJCQkkd2hlcmUgPSBqb2luKCIgT1IgIiwgJHdoZXJlKTsNCgkJCQkJCQkJJHJl Y3MgKz0gc2FmZV9jb3VudCgkdGJsLCAkd2hlcmUpOw0KCQkJCQkJCX0NCgkJCQkJCX0NCg0K CQkJCQkJLy8gSWYgdGhlIGl0ZW0gaGFzIG5vdCBiZWVuIGZvdW5kLCBmbGFnIGl0DQoJCQkJ CQlpZiAoJHJlY3MgPT0gMCkgew0KCQkJCQkJCSRjb2xOYW1lcyA9ICRjb2xSZWZzOw0KCQkJ CQkJfSBlbHNlIHsNCgkJCQkJCQkkY29sTmFtZXMgPSBhcnJheSgpOw0KCQkJCQkJfQ0KCQkJ CQl9IGVsc2Ugew0KCQkJCQkJJGNvbE5hbWVzID0gJGNvbFJlZnM7DQoJCQkJCX0NCg0KCQkJ CQkvLyBNYWtlIHVwIHRoZSBzdHJpbmcgdG8gZGlzcGxheSwgYW5kIGh5cGVybGluayBpdCBp ZiBkaXJlY3RlZA0KCQkJCQlmb3JlYWNoICgkY29sTmFtZXMgYXMgJGNvbCkgew0KCQkJCQkJ JGZyb20gPSAneycuJGNvbC4nfSc7DQoJCQkJCQlpZiAoc3RycG9zKCRjcm93WzddLCAkZnJv bSkgIT09IGZhbHNlKSB7DQoJCQkJCQkJaWYgKCRjcm93WzZdID09ICIjIikgew0KCQkJCQkJ CQkkdmFycyA9IGpvaW5fcXMoYXJyYXkoImV2ZW50IiA9PiAkY3Jvd1s0XSwgInN0ZXAiID0+ ICRjcm93WzVdKSkuJGNyb3dbNl0uc3RydHIoJGNyb3dbN10sIGFycmF5KCRmcm9tID0+ICRy b3dbJGNvbF0pKTsNCgkJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCQkkdmFycyA9IGpvaW5fcXMo YXJyYXkoImV2ZW50IiA9PiAkY3Jvd1s0XSwgInN0ZXAiID0+ICRjcm93WzVdLCAkY3Jvd1s2 XSA9PiBzdHJ0cigkY3Jvd1s3XSwgYXJyYXkoJGZyb20gPT4gJHJvd1skY29sXSkpKSk7DQoJ CQkJCQkJfQ0KCQkJCQkJCSRvcCAuPSAnPGEgaHJlZj0iaW5kZXgucGhwJy4kdmFycy4nIj4n LiRyb3dbJGNvbF0uJzwvYT4gJzsNCgkgICAgICAgICAgICAgICB9IGVsc2Ugew0KCQkJCQkJ CSRvcCAuPSAkcm93WyRjb2xdLiIgIjsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQkkb3V0IC49 ICc8bGk+Jy4kb3AuJzwvbGk+JzsNCgkJCQl9DQoJCQkJJG91dCAuPSAnPC91bD4nOw0KCQkJ CSRjb2xCb2R5W10gPSB0ZCgkb3V0KTsNCgkJCX0gZWxzZSB7DQoJCQkJJGNvbEJvZHlbXSA9 IHRkKHNtZF93dV9nVHh0KCdub19vcnBoYW5zX2ZvdW5kJykpOw0KCQkJfQ0KCQl9DQoJCWVj aG8gdHIoam9pbigiICIsICRjb2xIZWFkKSk7DQoJCWVjaG8gdHIoam9pbigiICIsICRjb2xC b2R5KSk7DQoJfQ0KCWVjaG8gZW5kVGFibGUoKTsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUGx1 Z2luLXNwZWNpZmljIHJlcGxhY2VtZW50IHN0cmluZ3MgLSBsb2NhbGlzZSBhcyByZXF1aXJl ZA0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX3d1X2dUeHQoJHdoYXQsICRhdHRzID0gYXJy YXkoKSkgew0KCSRsYW5nID0gYXJyYXkoDQoJCSdhZG1pbl9wbHVnaW5zJyA9PiAnQWRtaW4g cGx1Z2lucycsDQoJCSdjbGllbnRfcGx1Z2lucycgPT4gJ0NsaWVudCBwbHVnaW5zJywNCgkJ J2V4Y2x1c2lvbicgPT4gJ0V4Y2x1ZGUnLA0KCQknaW5jbHVzaW9uJyA9PiAnSW5jbHVkZScs DQoJCSdmaWx0ZXInID0+ICdGaWx0ZXI6JywNCgkJJ25vX29ycGhhbnNfZm91bmQnID0+ICdO byBvcnBoYW5zIGZvdW5kLicsDQoJCSdvcnBoYW5fcmVzdWx0cycgPT4gJ1Bvc3NpYmxlIG9y cGhhbnMnLA0KCQknc2VhcmNoX2xibCcgPT4gJ0ZpbmQ6JywNCgkJJ3NlYXJjaF93aGVyZV9s YmwnID0+ICdMb29rIGluOicsDQoJCSdzdHlsZXNoZWV0cycgPT4gJ1N0eWxlc2hlZXRzJywN CgkJJ3NtZF93dScgPT4gJ1doZXJlIHVzZWQnLA0KCQknd2hvbGVfd29yZCcgPT4gJ1dob2xl IHdvcmRzJywNCgkpOw0KCXJldHVybiBzdHJ0cigkbGFuZ1skd2hhdF0sICRhdHRzKTsNCn0i O3M6NDoidHlwZSI7czoxOiIxIjtzOjQ6ImhlbHAiO3M6NjIzNzoiCTxwPjxkaXYgaWQ9InNt ZF9oZWxwIj48L3A+CgoJPGgxPnNtZF93aGVyZV91c2VkPC9oMT4KCgk8cD5SZWFsbHkgc2lt cGxlIGFkbWluLXNpZGUgcGx1Z2luIHRvIGhlbHAgZmluZCB3aGF0IHlvdSBuZWVkIHRvIGVk aXQvZGVsZXRlLiBJZiB5b3UgaGF2ZSBhIHRvbm5lIG9mIGZvcm1zIG9yIHBhZ2VzIGFuZCB3 YW50IHRvIHRpZHkgc3R1ZmYgdXAgaXQgY2FuIGJlIGEgYml0IG9mIGEgcGFpbiB0byBmaW5k IHdoYXQmIzgyMTc7cyBhY3R1YWxseSBpbiB1c2UuPC9wPgoKCTxwPlNvIHVzZSB0aGlzIHBs dWdpbiB0byBzZWFyY2ggeW91ciBzZWN0aW9ucywgcGFnZXMsIGZvcm1zIG9yIGFydGljbGVz IGZvciByZWZlcmVuY2VzIHRvIHBsdWdpbnMsIG9yIG90aGVyIHBhZ2VzL2Zvcm1zIG9yIGV2 ZW4ganVzdCBwbGFpbiB0ZXh0IGluIGFydGljbGVzLjwvcD4KCgk8aDIgY2xhc3M9ImF1dGhv ciI+QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29t bWVudEZvcm0iPlN0ZWYgRGF3c29uPC9hPjwvcD4KCgk8aDIgY2xhc3M9Imluc3RhbGwiPklu c3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1 Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lu cy85ODQvc21kX3doZXJlX3VzZWQiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBo cmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0 ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1p biAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBW aXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9w aWMucGhwP2lkPTI3NDkzIj5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gYW5kIHRv IHJlcG9ydCB0aGUgc3VjY2VzcyAob3Igb3RoZXJ3aXNlKSBvZiB0aGlzIHBsdWdpbi48L3A+ CgoJPHA+VW5pbnN0YWxsIGJ5IHNpbXBseSBkZWxldGluZyB0aGUgcGx1Z2luIGZyb20gdGhl IEFkbWluLSZndDtQbHVnaW5zIHBhbmUuPC9wPgoKCTxoMiBjbGFzcz0idXNhZ2UiPlVzYWdl PC9oMj4KCgk8cD5WaXNpdCB0aGUgRXh0ZW5zaW9ucyB0YWIgYW5kIENsaWNrICYjODIxNjtX aGVyZSB1c2VkJiM4MjE3OyB0byBhY2Nlc3MgdGhlIHNlYXJjaCBmb3JtLiBUeXBlIHNvbWUg c3R1ZmYgdG8gZmluZCwgc2VsZWN0IHdoZXJlIHlvdSB3YW50IHRvIGxvb2sgYW5kIGhpdCAm IzgyMTY7U2VhcmNoJiM4MjE3OyBvciBwcmVzcyBFbnRlci4gWW91ciByZXF1ZXN0ZWQgbG9j YXRpb25zIHdpbGwgYmUgc2VhcmNoZWQgZm9yIHRoYXQgdGVybSBhbmQgdGhlIHJlc3VsdHMg dGFidWxhdGVkLCB3aXRoIGh5cGVybGlua3MgdG8gdGhlIG9mZmVuZGluZyBpdGVtcyBzbyB5 b3UgY2FuIHF1aWNrbHkgZWRpdCB0aGVtLjwvcD4KCgk8cD5Zb3UgY2FuIGRlY2lkZSB3aGV0 aGVyIHRvIHNlYXJjaCBmb3IgdGhlIHRlcm0gKCYjODIyMDtJbmNsdWRlJiM4MjIxOykgb3Ig dG8gc2VhcmNoIGZvciBzdHVmZiA8c3BhbiBjbGFzcz0iY2FwcyI+Tk9UPC9zcGFuPiBjb250 YWluaW5nIHRoYXQgdGVybSAoJiM4MjIwO0V4Y2x1ZGUmIzgyMjE7KS4gQW5kIHlvdSBtYXkg YWxzbyBjaG9vc2Ugd2hldGhlciB5b3VyIHNlYXJjaCB0ZXJtIG1hdGNoZXMvZG9lcyBub3Qg bWF0Y2ggYSB3aG9sZSB3b3JkLjwvcD4KCgk8cD5UaGlzIGlzIHdoYXQgdGhlIHBsdWdpbiBs b29rcyBhdCB3aGVuIHlvdSBzZWxlY3QgYSBwYXJ0aWN1bGFyIGNoZWNrYm94IGZyb20gdGhl ICYjODIyMDtMb29rIGluJiM4MjIxOyByb3c6PC9wPgoKCTx1bD4KCQk8bGk+JiM4MjE2O1Nl Y3Rpb25zJiM4MjE3OyBzZWFyY2hlcyBldmVyeSBTZWN0aW9uIGZvciBwYWdlcyBvciBzdHls ZXNoZWV0cyB3aXRoIHRoZSBtYXRjaGluZyBuYW1lPC9saT4KCQk8bGk+JiM4MjE2O1BhZ2Vz JiM4MjE3OyBzZWFyY2hlcyBldmVyeSBQYWdlIGZvciBmb3JtcyAvIHBsdWdpbnMgLyB0ZXh0 IHdpdGggdGhlIG1hdGNoaW5nIG5hbWU8L2xpPgoJCTxsaT4mIzgyMTY7Rm9ybXMmIzgyMTc7 IHNlYXJjaGVzIGV2ZXJ5IEZvcm0gZm9yIHBsdWdpbnMgLyBvdGhlciBmb3JtcyAvIHRleHQg d2l0aCB0aGUgbWF0Y2hpbmcgbmFtZTwvbGk+CgkJPGxpPiYjODIxNjtBcnRpY2xlcyYjODIx Nzsgc2VhcmNoZXMgZXZlcnkgQXJ0aWNsZSBzZWN0aW9uLCBib2R5LCBleGNlcnB0LCBvdmVy cmlkZV9mb3JtLCB0aXRsZSBhbmQga2V5d29yZCBmb3IgbWVudGlvbiBvZiB0aGUgdGV4dCB5 b3Ugc3BlY2lmeTwvbGk+Cgk8L3VsPgoKCTxwPklmLCBob3dldmVyLCB5b3UgbGVhdmUgdGhl ICYjODIxNjtGaW5kJiM4MjE3OyBib3ggZW1wdHkgYW5kIGNsaWNrICYjODIxNjtTZWFyY2gm IzgyMTc7IHRoZSBwbHVnaW4gd2lsbCBzZWFyY2ggZm9yIG9ycGhhbnMuIE9ycGhhbnMgYXJl IGRlZmluZWQgYXMgZm9sbG93czo8L3A+CgoJPHVsPgoJCTxsaT5BbnkgUGFnZSB0aGF0IGlz IG5vdCBhc3NpZ25lZCB0byBhIFNlY3Rpb248L2xpPgoJCTxsaT5BbnkgU3R5bGVzaGVldCB0 aGF0IGlzIG5vdCBhc3NpZ25lZCB0byBhIFNlY3Rpb248L2xpPgoJCTxsaT5BbnkgU2VjdGlv biB0aGF0IGhhcyBubyBBcnRpY2xlcyBpbiBpdCAoZXhjbHVkaW5nIOKAmGRlZmF1bHTigJkg d2hpY2ggY2Fubm90IGhhdmUgYW4gYXJ0aWNsZSBhbnl3YXkpPC9saT4KCQk8bGk+QW55IFBs dWdpbiB0aGF0IGlzIG5vdCByZWZlcmVuY2VkIGZyb20gYW4gQXJ0aWNsZSAoYm9keS9leGNl cnB0KSBvciBhbm90aGVyIEZvcm0gb3IgUGFnZTwvbGk+CgkJPGxpPkFueSBGb3JtIHRoYXQg aGFzIG5vIHJlZmVyZW5jZSB0byBpdCBpbiBhbnkgQXJ0aWNsZSAoYm9keS9leGNlcnB0L292 ZXJyaWRlX2Zvcm0pIG9yIGFub3RoZXIgRm9ybSBvciBQYWdlPC9saT4KCTwvdWw+CgoJPHA+ Tm90ZXM6PC9wPgoKCTx1bD4KCQk8bGk+T3JwaGFuZWQgYXJ0aWNsZXMgZG9uJiM4MjE3O3Qg bWFrZSBzZW5zZSBzbyB0aGV5IGFyZSBvbWl0dGVkLiBUaGUgY2hlY2tib3ggaXMgaWdub3Jl ZDwvbGk+CgkJPGxpPkVzc2VudGlhbCBzZWN0aW9ucyAvIHBhZ2VzIC8gZm9ybXMgdGhhdCBj YW5ub3QgYmUgZGVsZXRlZCBhcmUgbm90IGxpc3RlZDwvbGk+CgkJPGxpPlN0eWxlc2hlZXRz IGFuZCBQbHVnaW5zIGFyZSBhbHdheXMgZGlzcGxheWVkIGJlY2F1c2UgdGhlcmUgYXJlIG5v IGNoZWNrIGJveGVzIGZvciB0aGVtLiBUaGUgcmVhc29uIGlzIHRoYXQgdGhlIHBsdWdpbiBk b2VzIG5vdCBhbGxvdyBzZWFyY2hpbmcgd2l0aGluIGEgcGx1Z2luIG9yIGEgc3R5bGVzaGVl dCBmb3IgYSByZWZlcmVuY2UgdG8gYSB3b3JkLCBidXQgaXQgZG9lcyBjaGVjayBvdGhlciBw bGFjZXMgZm9yIHJlZmVyZW5jZXMgPGVtPnRvPC9lbT4gcGx1Z2lucyBhbmQgc3R5bGVzaGVl dHM8L2xpPgoJCTxsaT5QbHVnaW4gbGlzdCBjYW4gYmUgdG9nZ2xlZCBiZXR3ZWVuIHRoZSBk ZWZhdWx0IGNsaWVudC1vbmx5IHBsdWdpbnMgb3IgYm90aCBjbGllbnQgYW5kIGFkbWluIHBs dWdpbnM8L2xpPgoJCTxsaT5KdXN0IGJlY2F1c2UgYW4gaXRlbSBpcyBsaXN0ZWQgYXMgb3Jw aGFuZWQgZG9lcyA8ZW0+bm90IG5lY2Vzc2FyaWx5IG1lYW4gaXQgaXMgbm90IHVzZWQ8L2Vt PiEgRm9yIGV4YW1wbGUsIHJ2bV9tYWludGVuYW5jZSBjaGVja3MgZm9yIHRoZSBleGlzdGVu Y2Ugb2YgYW4gPGNvZGU+ZXJyb3JfNTAzPC9jb2RlPiBQYWdlLiBTaW5jZSBpdCBpcyBuZXZl ciBhc3NpZ25lZCB0byBhIFNlY3Rpb24gaXQgd2lsbCBiZSBsaXN0ZWQgYXMgb3JwaGFuZWQu IElmIHlvdSBoYXZlIGEgZGVkaWNhdGVkIHN0eWxlc2hlZXQgZm9yIG1haW50ZW5hbmNlIG1v ZGUgdGhhdCwgdG9vLCB3aWxsIGJlIHNob3duIGFzIG9ycGhhbmVkLiBJbiBzaG9ydCwgYmUg Y2FyZWZ1bCBhbmQgbWFrZSBhIGJhY2t1cCA6LSk8L2xpPgoJCTxsaT5QbHVnaW5zIHN1Y2gg YXMgcGFwX2NvbnRhY3RfY2xlYW5lciBhbmQgcnZtX21haW50ZW5hbmNlIGFyZSBsaXN0ZWQg YXMgb3JwaGFucyBldmVuIHRob3VnaCB0aGV5IGFyZSB1c2VkIGJ5IG90aGVyIHBsdWdpbnMg LyB1c3VhbGx5IGRpc2FibGVkLiBJZiB5b3UgYXJlIHVuc3VyZSBhYm91dCBhIHBsdWdpbiwg Y2hlY2sgaXQgYnkgdHlwaW5nIGEgcGFydGlhbCB0YWcgbmFtZSBpbnRvIHRoZSBzZWFyY2gg Ym94PC9saT4KCTwvdWw+CgoJPGgyIGNsYXNzPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+ CgoJPHVsPgoJCTxsaT4xNiBKdW4gMDggfCB2MC4xIHwgSW5pdGlhbCByZWxlYXNlPC9saT4K CQk8bGk+MTYgSnVuIDA4IHwgdjAuMTEgfCBBZGRlZCBzZWN0aW9uIHNlYXJjaCBhbmQgb3Zl cnJpZGVfZm9ybTwvbGk+CgkJPGxpPjE2IEp1biAwOCB8IHYwLjEyIHwgQWRkZWQgaW5jbHVk ZS9leGNsdWRlICh0aGFua3MgbXJkYWxlKTwvbGk+CgkJPGxpPjE2IEp1biAwOCB8IHYwLjEz IHwgQWRkZWQgYWJpbGl0eSB0byBtYXRjaCB3aG9sZSB3b3JkcyAodGhhbmtzIHphbnphKTwv bGk+CgkJPGxpPjE3IEp1biAwOCB8IHYwLjE0IHwgQWRkZWQgb3JwaGFuIHNlYXJjaCAodGhh bmtzIHVsaS9uZXQtY2FydmVyKTwvbGk+CgkJPGxpPjE4IEp1biAwOCB8IHYwLjE1IHwgRml4 ZWQgcGx1Z2luIGxpc3Qgc28gaXQgZG9lcyBhIGRlZXAgc2VhcmNoIGluc2lkZSB0aGUgc291 cmNlIGNvZGUgZm9yIHRhZyBuYW1lczwvbGk+CgkJPGxpPjE4IEp1biAwOCB8IHYwLjE2IHwg QWRkZWQgYWRtaW4vY2xpZW50IHNpZGUgcGx1Z2luIHRvZ2dsZSA7IHNlYXJjaGVzIG5vdyBl eHRlbmRlZCB0byB0aXRsZSBhbmQga2V5d29yZHMgKGJvdGggdGhhbmtzIHVsaSk8L2xpPgoJ PC91bD4KCgk8cD48L2Rpdj48L3A+CjwhLS0gLS0tIEJFR0lOIFBMVUdJTiBDU1MgLS0tIC0t Pgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjMg O30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUg IkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAj RkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJv cmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGRpc3Bs YXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRf aGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1k ZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmx1ZTsgcGFkZGlu Zy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7 IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDJw eCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgaDEgeyBjb2xv cjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7IHRl eHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHgg c29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4 IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6ICM2OTM7IGZv bnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsg bWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO30KI3NtZF9oZWxw IGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2lu ZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9 CiNzbWRfaGVscCAuYXR0LW5hbWUgeyBmb250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAu bWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21k X2hlbHAgdGFibGUge3dpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJv dHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xp ZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9Cjwvc3R5bGU+CjwhLS0gLS0tIEVORCBQTFVHSU4g Q1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoiMjRiMjlkNjQwNzkzZjA3OTQzMmU3MmZl ZDkyZmIzODAiO30=