# wlk_helpful v0.3 # Users can rate an article up or down. # Walker Hamilton # http://www.walkerhamilton.com # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMC4zIjtzOjY6ImF1dGhvciI7czoxNToiV2Fsa2Vy IEhhbWlsdG9uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI5OiJodHRwOi8vd3d3LndhbGtlcmhh bWlsdG9uLmNvbSI7czoxMToiZGVzY3JpcHRpb24iO3M6Mzc6IlVzZXJzIGNhbiByYXRlIGFu IGFydGljbGUgdXAgb3IgZG93bi4iO3M6NDoidHlwZSI7aToxO3M6NDoibmFtZSI7czoxMToi d2xrX2hlbHBmdWwiO3M6NDoiaGVscCI7czoxNTQ0OiIJPGgxPndsa19oZWxwZnVsPC9oMT4K CTxwPlRoaXMgcGx1Z2luIGlzIHByb3ZpZGVkICYjODIyMDthcyBpcyYjODIyMTsuIEkmIzgy MTc7dmUgb25seSB0ZXN0ZWQgaXQgd2l0aCA0LjAuNSwgYnV0IGl0JiM4MjE3O2xsIHByb2Jh Ymx5IHdvcmsgd2l0aCBvbGRlciBpbnN0YWxscyBhcyBsb25nIGFzIHlvdSYjODIxNzt2ZSBn b3QgalF1ZXJ5IGxpbmtlZCBpbiB5b3VyIHBhZ2VzLjwvcD4KCTxoMj5JbnN0YWxsYXRpb248 L2gyPgoJPHA+U2luY2UgeW91IGNhbiByZWFkIHRoaXMgaGVscCwgeW91IGhhdmUgaW5zdGFs bGVkIHRoZSBwbHVnaW4gdG8gdHhwLjxiciAvPgpEaWQgeW91IGFjdGl2YXRlIGl0PzwvcD4K CTxoMj5JbnN0YWxsYXRpb248L2gyPgoJPG9sPgoJCTxsaT5DcmVhdGUgYSBwYWdlIGNhbGxl ZCB3bGtfaGVscGZ1bF9hamF4PC9saT4KCQk8bGk+RGVsZXRlIGV2ZXJ5dGhpbmcgaW4gdGhh dCBwYWdlLjwvbGk+CgkJPGxpPlB1dCB0aGlzIHRhZyBpbiB0aGF0IHBhZ2U6IDxjb2RlPiZs dDt0eHA6d2xrX2hlbHBmdWxfYWpheCAvJmd0OzwvY29kZT4gKFRlbGwgaXQgPGNvZGU+d2hp Y2g9InJhdGlvIjwvY29kZT4gdG8gaGF2ZSBpdCBjb3VudCBieSByYXRpbyByYXRoZXIgdGhh biBwb3NpdGl2aXR5JiM4MjEyO3NpbXBsZS4pPC9saT4KCQk8bGk+Q3JlYXRlIGEgc2VjdGlv biBjYWxsZWQgJiM4MjIwO3dsa19oZWxwZnVsX2FqYXgmIzgyMjE7PC9saT4KCQk8bGk+VG8g aGF2ZSBpdCB1c2UgdGhlIHBhZ2Ugd2xrX2hlbHBmdWxfYWpheDwvbGk+CgkJPGxpPk1ha2Ug c3VyZSB0aGF0IGFsbCB5b3VyIGFydGljbGUgcGFnZXMgdGhhdCB3aWxsIGRpc3BsYXkgPGNv ZGU+Jmx0O3R4cDp3bGtfaGVscGZ1bCAvJmd0OzwvY29kZT4gcmVmZXJlbmNlIHRoZSBqcXVl cnkgZmlsZSBmb3VuZCBpbiB5b3VyIDxjb2RlPi90ZXh0cGF0dGVybi88L2NvZGU+IGRpcmVj dG9yeS48L2xpPgoJCTxsaT5BZGQgdGhlIGphdmFzY3JpcHQgZm91bmQgYXQgPGEgaHJlZj0i aHR0cDovL2Rldi5zaWduYWxmYWRlLmNvbS90eHAvd2xrX2hlbHBmdWxfanMuemlwIj50aGlz IGxpbms8L2E+IHdpdGhpbiB0aGUgaGVhZCBvZiB5b3VyIGRvY3VtZW50IG9yIHJlZmVyZW5j ZWQgaW4gYW4gZXh0ZXJuYWwgamF2YXNjcmlwdCBmaWxlLjwvbGk+Cgk8L29sPgoJPGgyPlRh ZyBQbGFjZW1lbnQ8L2gyPgoJPHA+UGxhY2UgdGhlIDxjb2RlPiZsdDt0eHA6d2xrX2hlbHBm dWwgLyZndDs8L2NvZGU+IHRhZyBpbiBhbiBhcnRpY2xlIGZvcm0gb3Igb24gYSBwYWdlIHRo YXQgaGFzIGEgc2luZ2xlIGFydGljbGUuPC9wPgoJPHA+UHV0IDxjb2RlPiZsdDt0eHA6d2xr X2hlbHBmdWxfbGlzdCAvJmd0OzwvY29kZT4gb3IgPGNvZGU+Jmx0O3R4cDp3bGtfaGVscGZ1 bF9saXN0IHdoaWNoPSJib3R0b20iIC8mZ3Q7PC9jb2RlPiBpbiBhIHNpZGViYXIgb3Igb24g eW91ciBtYWluIHBhZ2UgdG8gc2hvdyBhbiB1bm9yZGVyZWQgbGlzdCBvZiB0aGUgbW9zdCBo ZWxwZnVsIG9yIGxlYXN0IGhlbHBmdWwgYXJ0aWNsZXMgYXMgcmF0ZWQgYnkgeW91ciB1c2Vy cy48L3A+CgoKICI7czo0OiJjb2RlIjtzOjgyNDk6IgoJaWYgKEB0eHBpbnRlcmZhY2UgPT0g J2FkbWluJykKCXsKCQlyZWdpc3Rlcl9jYWxsYmFjaygid2xrX2hlbHBmdWxfaW5zdGFsbCIs ICJwYWdlIik7Cgl9CgoJZnVuY3Rpb24gd2xrX2hlbHBmdWxfaW5zdGFsbCgpIHsKCQlzYWZl X3F1ZXJ5KCdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyAnLnNhZmVfcGZ4KCd0eHBfd2xr X2hlbHBmdWwnKS4nICgKCQkJCQlgaWRgIGludCgxMSkgTk9UIE5VTEwgYXV0b19pbmNyZW1l bnQsCgkJCQkJYHRleHRwYXR0ZXJuX2lkYCBpbnQoMTEpIE5PVCBOVUxMLAoJCQkJCWBwbHVz YCB0aW55aW50KDEpIE5PVCBOVUxMLAoJCQkJCWBtaW51c2AgdGlueWludCgxKSBOT1QgTlVM TCwKCQkJCQlgaXBgIHZhcmNoYXIoMTUpIGJpbmFyeSBOT1QgTlVMTCwKCQkJCQlQUklNQVJZ IEtFWSAgKGBpZGApCgkJCQkJKSBUWVBFPU15SVNBTSBBVVRPX0lOQ1JFTUVOVD0xJyk7CgkJ c2FmZV9xdWVyeSgnQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgJy5zYWZlX3BmeCgndHhw X3dsa19oZWxwZnVsX2NvdW50cycpLicgKAoJCQkJCWBpZGAgaW50KDExKSBOT1QgTlVMTCBh dXRvX2luY3JlbWVudCwKCQkJCQlgdGV4dHBhdHRlcm5faWRgIGludCgxMSkgTk9UIE5VTEws CgkJCQkJYGNvdW50YCBpbnQoNSkgTk9UIE5VTEwgZGVmYXVsdCBcJzBcJywKCQkJCQlgcGx1 c2VzYCB2YXJjaGFyKDUpIGJpbmFyeSBOT1QgTlVMTCBkZWZhdWx0IFwnMFwnLAoJCQkJCWBt aW51c2VzYCB2YXJjaGFyKDUpIGJpbmFyeSBOT1QgTlVMTCBkZWZhdWx0IFwnMFwnLAoJCQkJ CVBSSU1BUlkgS0VZICAoYGlkYCkKCQkJCQkpIFRZUEU9TXlJU0FNIEFVVE9fSU5DUkVNRU5U PTEnKTsKCX0KCglmdW5jdGlvbiB3bGtfaGVscGZ1bCgkYXR0cykgewoJCWdsb2JhbCAkdGhp c2FydGljbGU7CgoJCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJCSdsYWJlbCc9PiAoIWVtcHR5 KCRwcmVmc1snd2xrX2hlbHBmdWxfbGFiZWwnXSkpPyRwcmVmc1snd2xrX2hlbHBmdWxfbGFi ZWwnXTonSGVscGZ1bD8nLAoJCQknZGVidWcnPT4gJ2ZhbHNlJwoJCSksJGF0dHMpKTsKCgkJ Ly9HcmFiIHRoaXMgYXJ0aWNsZSdzIGNvdW50IG9mIHBsdXMgJiBtaW51cwoJCWlmKCR0aGlz YXJ0aWNsZVsndGhpc2lkJ10pCgkJewoJCQkkcmVzdWx0cyA9IHNhZmVfcm93KCdwbHVzZXMs IG1pbnVzZXMnLCAndHhwX3dsa19oZWxwZnVsX2NvdW50cycsICd0ZXh0cGF0dGVybl9pZD0i Jy5hZGRzbGFzaGVzKCR0aGlzYXJ0aWNsZVsndGhpc2lkJ10pLiciJyk7CgkJCWlmKGNvdW50 KCRyZXN1bHRzKT09MCkgewoJCQkJc2FmZV9pbnNlcnQoJ3R4cF93bGtfaGVscGZ1bF9jb3Vu dHMnLCAicGx1c2VzPScwJyxtaW51c2VzPScwJyxjb3VudD0nMCcsdGV4dHBhdHRlcm5faWQ9 JyIuYWRkc2xhc2hlcygkdGhpc2FydGljbGVbJ3RoaXNpZCddKS4iJyIpOwoJCQkJJHJlc3Vs dHMgPSBzYWZlX3JvdygncGx1c2VzLCBtaW51c2VzJywgJ3R4cF93bGtfaGVscGZ1bF9jb3Vu dHMnLCAndGV4dHBhdHRlcm5faWQ9IicuYWRkc2xhc2hlcygkdGhpc2FydGljbGVbJ3RoaXNp ZCddKS4nIicpOwoJCQl9CgkJfQoKCQkvL2NyZWF0ZSB0aGUgSFRNTAoJCSRvdXQgPSAnCgkJ CTx1bCBjbGFzcz0id2xrX2hlbHBmdWxyYXRlciI+CgkJCQk8bGkgY2xhc3M9ImhlbHBmdWwi PkhlbHBmdWw/PC9saT4KCQkJCTxsaSBjbGFzcz0icGx1cyI+PHNwYW4gY2xhc3M9InRoZWNv dW50Ij4nLiRyZXN1bHRzWydwbHVzZXMnXS4nPC9zcGFuPjxzcGFuIGNsYXNzPSJ0aGlzaWQi IHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4nLiR0aGlzYXJ0aWNsZVsndGhpc2lkJ10uJzwvc3Bh bj4gPGEgY2xhc3M9Indsa19oZWxwZnVscGx1cyBmbG9hdGxlZnQiIGhyZWY9IiMiPjxzcGFu IGNsYXNzPSJkaXN0ZXh0Ij5ZZXM8L3NwYW4+PC9hPjwvbGk+CgkJCQk8bGkgY2xhc3M9Im1p bnVzIj48c3BhbiBjbGFzcz0idGhlY291bnQiPicuJHJlc3VsdHNbJ21pbnVzZXMnXS4nPC9z cGFuPjxzcGFuIGNsYXNzPSJ0aGlzaWQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4nLiR0aGlz YXJ0aWNsZVsndGhpc2lkJ10uJzwvc3Bhbj4gPGEgY2xhc3M9Indsa19oZWxwZnVsbWludXMg ZmxvYXRsZWZ0IiBocmVmPSIjIj48c3BhbiBjbGFzcz0iZGlzdGV4dCI+Tm88L3NwYW4+PC9h PjwvbGk+CgkJCTwvdWw+CgkJCSc7CgoJCS8vUmV0dXJuIGl0CgkJcmV0dXJuICRvdXQ7Cgl9 CgoJZnVuY3Rpb24gd2xrX2hlbHBmdWxfbGlzdCgkYXR0cykKCXsKCQlnbG9iYWwgJHByZWZz OwoJCWdsb2JhbCAkcGVybWxpbmtfbW9kZTsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJ J3doaWNoJz0+IChpc3NldCgkcHJlZnNbJ3dsa19oZWxwZnVsX2xpc3Rfd2hpY2gnXSkgJiYg JHByZWZzWyd3bGtfaGVscGZ1bF9saXN0X3doaWNoJ109PSdib3R0b20nKT8nYm90dG9tJzon dG9wJywKCQkJJ29yZGVyJz0+IChpc3NldCgkcHJlZnNbJ3dsa19oZWxwZnVsX2xpc3Rfd2hp Y2gnXSkgJiYgJHByZWZzWyd3bGtfaGVscGZ1bF9saXN0X3doaWNoJ109PSdib3R0b20nKT8n QVNDJzonREVTQycsCgkJCSdsaW1pdCc9PiAoaXNzZXQoJHByZWZzWyd3bGtfaGVscGZ1bF9s aXN0X2xpbWl0J10pICYmIGlzX251bWVyaWMoJHByZWZzWyd3bGtfaGVscGZ1bF9saXN0X2xp bWl0J10pKT8kcHJlZnNbJ3dsa19oZWxwZnVsX2xpc3RfbGltaXQnXTonNScsCgkJCSdkZWJ1 Zyc9PiAnZmFsc2UnCgkJKSwkYXR0cykpOwoKCQlzYWZlX3F1ZXJ5KCdERUxFVEUgRlJPTSAn LnNhZmVfcGZ4KCd0eHBfd2xrX2hlbHBmdWxfY291bnRzJykuJyBXSEVSRSB0ZXh0cGF0dGVy bl9pZCBOT1QgSU4gKCBTRUxFQ1QgSUQgRlJPTSAnLnNhZmVfcGZ4KCd0ZXh0cGF0dGVybicp LicgKScpOwoKCQkvL0dyYWIgdGhlIGFydGljbGVzIHdpdGggdGhlICJ0b3AiIG9yICJib3R0 b20iIGNvdW50IGNvdW50CgkJJHJlc3VsdHMgPSBzYWZlX3F1ZXJ5KCdTRUxFQ1QgdHhwLklE LCB0eHAuVGl0bGUsIHR4cC5TZWN0aW9uLCB0eHAuUG9zdGVkLCB0eHAudXJsX3RpdGxlIEZS T00gJy5zYWZlX3BmeCgndHhwX3dsa19oZWxwZnVsX2NvdW50cycpLicgQVMgaGVscGZ1bCBM RUZUIEpPSU4gJy5zYWZlX3BmeCgndGV4dHBhdHRlcm4nKS4nIEFTIHR4cCBPTiB0eHAuSUQ9 aGVscGZ1bC50ZXh0cGF0dGVybl9pZCBPUkRFUiBCWSBjb3VudCAnLiRvcmRlci4nIExJTUlU IDAsICcuJGxpbWl0KTsKCgkJaWYobXlzcWxfbnVtX3Jvd3MoJHJlc3VsdHMpPjApCgkJewoJ CQkkcmVzdWx0c19yID0gYXJyYXkoKTsKCQkJd2hpbGUoJHJvdyA9IG15c3FsX2ZldGNoX2Fz c29jKCRyZXN1bHRzKSkKCQkJewoJCQkJJGFydGljbGVfYXJyYXkgPSAkcm93OwoJCQkJJGFy dGljbGVfYXJyYXlbJ3Blcm1saW5rJ10gPSBwZXJtbGlua3VybCgkYXJ0aWNsZV9hcnJheSk7 CgkJCQkkcmVzdWx0c19yW10gPSAkYXJ0aWNsZV9hcnJheTsKCQkJfQoJCQkkb3V0ID0gJzxv bCBpZD0id2xraGxwZmwnLiR3aGljaC4nIj4nLiJcciI7CgkJCS8vY3JlYXRlIHRoZSBIVE1M CgkJCWZvcmVhY2goJHJlc3VsdHNfciBhcyAkYXJ0aWNsZSkKCQkJewoJCQkJJG91dCAuPSAi XHJcdCIuJzxsaT48YSBocmVmPSInLiRhcnRpY2xlWydwZXJtbGluayddLiciPicuJGFydGlj bGVbJ1RpdGxlJ10uJzwvYT48L2xpPic7CgkJCX0KCQkJJG91dCAuPSAiXHIiLic8L29sPic7 CgkJCS8vUmV0dXJuIGl0CgkJCXJldHVybiAkb3V0OwoJCX0gZWxzZSB7CgkJCXJldHVybiAn JzsKCQl9Cgl9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vCQkJ CUFqYXggTG9naWMKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCWZ1 bmN0aW9uIHdsa19oZWxwZnVsX2FqYXgoJGF0dHMpCgl7CgkJZXh0cmFjdChsQXR0cyhhcnJh eSgKCQkJJ3doaWNoJz0+IChpc3NldCgkcHJlZnNbJ3dsa19oZWxwZnVsX2FqYXgnXSkpPyRw cmVmc1snd2xrX2hlbHBmdWxfYWpheCddOidzaW1wbGUnLAoJCQknZGVidWcnPT4gZmFsc2UK CQkpLCRhdHRzKSk7CgoJCWlmKGlzc2V0KCRfUE9TVFsnYXJ0aWNsZV9pZCddKSAmJiBpc3Nl dCgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSkpIHsKCQkJLy9yZWNlaXZlIHRoZSBhcnRpY2xl IGlkLCByYXRpbmcKCQkJJHRleHRwYXR0ZXJuX2lkID0gJF9QT1NUWydhcnRpY2xlX2lkJ107 CgkJCSR1cF9kb3duID0gJF9QT1NUWyd1cF9kb3duJ107CgkJCS8vZ2V0IHRoZSBJUAoJCQkk aXAgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsKCgkJCSRvdXQgPSBhcnJheSgpOwoKCQkJ aWYoJHVwX2Rvd249PSd1cCcgfHwgJHVwX2Rvd249PSdkb3duJykgewoJCQkJLy9tYWtlIHN1 cmUgdGhleSBoYXZlbid0IHJhdGVkIHRoaXMgb25lIGJlZm9yZQoJCQkJJGNoZWNrID0gc2Fm ZV9xdWVyeSgnU0VMRUNUICogRlJPTSAnLnNhZmVfcGZ4KCd0eHBfd2xrX2hlbHBmdWwnKS4n IFdIRVJFIHRleHRwYXR0ZXJuX2lkPSInLmFkZHNsYXNoZXMoJHRleHRwYXR0ZXJuX2lkKS4n IiBBTkQgaXA9IicuYWRkc2xhc2hlcygkaXApLiciJyk7CgkJCQkkb3V0W10gPSAnU0VMRUNU ICogRlJPTSAnLnNhZmVfcGZ4KCd0eHBfd2xrX2hlbHBmdWwnKS4nIFdIRVJFIHRleHRwYXR0 ZXJuX2lkPSInLmFkZHNsYXNoZXMoJHRleHRwYXR0ZXJuX2lkKS4nIiBBTkQgaXA9IicuYWRk c2xhc2hlcygkaXApLiciJzsKCgkJCQlpZigkdXBfZG93bj09J2Rvd24nKSB7CgkJCQkJJHVw ID0gMDsKCQkJCQkkZG93biA9IDE7CgkJCQl9IGVsc2UgaWYoJHVwX2Rvd249PSd1cCcpIHsK CQkJCQkkdXAgPSAxOwoJCQkJCSRkb3duID0gMDsKCQkJCX0KCgkJCQlpZihteXNxbF9udW1f cm93cygkY2hlY2spPT0wKQoJCQkJewoJCQkJCS8vc2F2ZSB0aGVpciByYXRpbmcgaWYgdGhl eSBoYXZlbid0CgkJCQkJJGFkZCA9IHNhZmVfcXVlcnkoJ0lOU0VSVCBJTlRPICcuc2FmZV9w ZngoJ3R4cF93bGtfaGVscGZ1bCcpLicgKGlkLCB0ZXh0cGF0dGVybl9pZCwgcGx1cywgbWlu dXMsIGlwKSBWQUxVRVMgKG51bGwsICInLmFkZHNsYXNoZXMoJHRleHRwYXR0ZXJuX2lkKS4n IiwgIicuJHVwLiciLCAiJy4kZG93bi4nIiwgIicuYWRkc2xhc2hlcygkaXApLiciKScpOwoJ CQkJCSRvdXRbXSA9ICdJTlNFUlQgSU5UTyAnLnNhZmVfcGZ4KCd0eHBfd2xrX2hlbHBmdWwn KS4nIChpZCwgdGV4dHBhdHRlcm5faWQsIHBsdXMsIG1pbnVzLCBpcCkgVkFMVUVTIChudWxs LCAiJy5hZGRzbGFzaGVzKCR0ZXh0cGF0dGVybl9pZCkuJyIsICInLiR1cC4nIiwgIicuJGRv d24uJyIsICInLmFkZHNsYXNoZXMoJGlwKS4nIiknOwoKCQkJCQkvL2dldCB0aGUgY3VycmVu dCBvdmVyYWxsIGZyb20gdGhlIGRiCgkJCQkJJGNoYW5nZSA9IHNhZmVfcXVlcnkoJ1NFTEVD VCAqIEZST00gJy5zYWZlX3BmeCgndHhwX3dsa19oZWxwZnVsX2NvdW50cycpLicgV0hFUkUg dGV4dHBhdHRlcm5faWQ9IicuYWRkc2xhc2hlcygkdGV4dHBhdHRlcm5faWQpLiciJyk7CgkJ CQkJJG91dFtdID0gJ1NFTEVDVCAqIEZST00gJy5zYWZlX3BmeCgndHhwX3dsa19oZWxwZnVs X2NvdW50cycpLicgV0hFUkUgdGV4dHBhdHRlcm5faWQ9IicuYWRkc2xhc2hlcygkdGV4dHBh dHRlcm5faWQpLiciJzsKCgkJCQkJaWYobXlzcWxfbnVtX3Jvd3MoJGNoYW5nZSk9PTEpIHsK CQkJCQkJJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCRjaGFuZ2UpOwoJCQkJCQlpZigkdXBf ZG93bj09J2Rvd24nKSB7CgkJCQkJCQlpZigkd2hpY2g9PSdzaW1wbGUnKSB7CgkJCQkJCQkJ JHJvd1snY291bnQnXSA9ICRyb3dbJ2NvdW50J10tMTsKCQkJCQkJCX0gZWxzZSB7CgkJCQkJ CQkJJHJvd1snY291bnQnXSA9ICgkcm93WydwbHVzZXMnXS8oJHJvd1sncGx1c2VzJ10rMSsk cm93WydtaW51c2VzJ10pKTsKCQkJCQkJCX0KCQkJCQkJCSRyb3dbJ21pbnVzZXMnXSsrOwoJ CQkJCQl9IGVsc2UgaWYoJHVwX2Rvd249PSd1cCcpIHsKCQkJCQkJCWlmKCR3aGljaD09J3Np bXBsZScpIHsKCQkJCQkJCQkkcm93Wydjb3VudCddKys7CgkJCQkJCQl9IGVsc2UgewoJCQkJ CQkJCSRyb3dbJ2NvdW50J10gPSAoJHJvd1sncGx1c2VzJ10vKCRyb3dbJ3BsdXNlcyddKzEr JHJvd1snbWludXNlcyddKSk7CgkJCQkJCQl9CgkJCQkJCQkkcm93WydwbHVzZXMnXSsrOwoJ CQkJCQl9CgkJCQkJCSR1cGRhdGVfY291bnQgPSBzYWZlX3F1ZXJ5KCdVUERBVEUgJy5zYWZl X3BmeCgndHhwX3dsa19oZWxwZnVsX2NvdW50cycpLicgU0VUIGNvdW50PSInLmFkZHNsYXNo ZXMoJHJvd1snY291bnQnXSkuJyIsIHBsdXNlcz0iJy5hZGRzbGFzaGVzKCRyb3dbJ3BsdXNl cyddKS4nIiwgbWludXNlcz0iJy5hZGRzbGFzaGVzKCRyb3dbJ21pbnVzZXMnXSkuJyIgV0hF UkUgdGV4dHBhdHRlcm5faWQ9IicuYWRkc2xhc2hlcygkdGV4dHBhdHRlcm5faWQpLiciJyk7 CgkJCQkJCSRvdXRbXSA9ICdVUERBVEUgJy5zYWZlX3BmeCgndHhwX3dsa19oZWxwZnVsX2Nv dW50cycpLicgU0VUIGNvdW50PSInLmFkZHNsYXNoZXMoJHJvd1snY291bnQnXSkuJyIsIHBs dXNlcz0iJy5hZGRzbGFzaGVzKCRyb3dbJ3BsdXNlcyddKS4nIiwgbWludXNlcz0iJy5hZGRz bGFzaGVzKCRyb3dbJ21pbnVzZXMnXSkuJyIgV0hFUkUgdGV4dHBhdHRlcm5faWQ9IicuYWRk c2xhc2hlcygkdGV4dHBhdHRlcm5faWQpLiciJzsKCQkJCQl9IGVsc2UgewoJCQkJCQkkcm93 ID0gYXJyYXkoJ2NvdW50Jz0+MCwgJ3BsdXNlcyc9PjAsICdtaW51c2VzJz0+MCk7CgkJCQkJ CWlmKCR1cF9kb3duPT0nZG93bicpIHsKCQkJCQkJCWlmKCR3aGljaD09J3NpbXBsZScpIHsK CQkJCQkJCQkkcm93Wydjb3VudCddID0gJHJvd1snY291bnQnXS0xOwoJCQkJCQkJfSBlbHNl IHsKCQkJCQkJCQkkcm93Wydjb3VudCddID0gKCRyb3dbJ3BsdXNlcyddLygkcm93WydwbHVz ZXMnXSsxKyRyb3dbJ21pbnVzZXMnXSkpOwoJCQkJCQkJfQoJCQkJCQkJJHJvd1snbWludXNl cyddKys7CgkJCQkJCX0gZWxzZSBpZigkdXBfZG93bj09J3VwJykgewoJCQkJCQkJaWYoJHdo aWNoPT0nc2ltcGxlJykgewoJCQkJCQkJCSRyb3dbJ2NvdW50J10rKzsKCQkJCQkJCX0gZWxz ZSB7CgkJCQkJCQkJJHJvd1snY291bnQnXSA9ICgkcm93WydwbHVzZXMnXS8oJHJvd1sncGx1 c2VzJ10rMSskcm93WydtaW51c2VzJ10pKTsKCQkJCQkJCX0KCQkJCQkJCSRyb3dbJ3BsdXNl cyddKys7CgkJCQkJCX0KCQkJCQkJJGluc2VydF9jb3VudCA9IHNhZmVfcXVlcnkoJ0lOU0VS VCBJTlRPICcuc2FmZV9wZngoJ3R4cF93bGtfaGVscGZ1bF9jb3VudHMnKS4nIChpZCwgdGV4 dHBhdHRlcm5faWQsIGNvdW50LCBwbHVzZXMsIG1pbnVzZXMpIFZBTFVFUyAobnVsbCwgIicu YWRkc2xhc2hlcygkdGV4dHBhdHRlcm5faWQpLiciLCAiJy5hZGRzbGFzaGVzKCRyb3dbJ2Nv dW50J10pLiciLCAiJy5hZGRzbGFzaGVzKCRyb3dbJ3BsdXNlcyddKS4nIiwgIicuYWRkc2xh c2hlcygkcm93WydtaW51c2VzJ10pLiciKScpOwoJCQkJCQkkb3V0W10gPSAnSU5TRVJUIElO VE8gJy5zYWZlX3BmeCgndHhwX3dsa19oZWxwZnVsX2NvdW50cycpLidzIChpZCwgdGV4dHBh dHRlcm5faWQsIGNvdW50LCBwbHVzZXMsIG1pbnVzZXMpIFZBTFVFUyAobnVsbCwgIicuYWRk c2xhc2hlcygkdGV4dHBhdHRlcm5faWQpLiciLCAiJy5hZGRzbGFzaGVzKCRyb3dbJ2NvdW50 J10pLiciLCAiJy5hZGRzbGFzaGVzKCRyb3dbJ3BsdXNlcyddKS4nIiwgIicuYWRkc2xhc2hl cygkcm93WydtaW51c2VzJ10pLiciKSc7CgkJCQkJfQoJCQkJCWlmKCRkZWJ1ZykgewoJCQkJ CQkkdGhlb3V0ID0gaW1wbG9kZSgnPGJyIC8+JywgJG91dCk7CgkJCQkJfSBlbHNlIHsKCQkJ CQkJJHRoZW91dCA9ICcnOwoJCQkJCX0KCQkJCS8vcmV0dXJuIHRydWUgb3IgZmFsc2UgKGp1 c3QgdG8gdGVsbCB0aGVtIHRoYXQgdGhlIHJlcXVlc3Qgc3VjY2VlZGVkCgkJCQkJcmV0dXJu ICR0aGVvdXQuJ3RydWUnOwoJCQkJfSBlbHNlIHsKCQkJCQlpZigkZGVidWcpIHsKCQkJCQkJ JHRoZW91dCA9IGltcGxvZGUoJzxiciAvPicsICRvdXQpOwoJCQkJCX0gZWxzZSB7CgkJCQkJ CSR0aGVvdXQgPSAnJzsKCQkJCQl9CgkJCQkJcmV0dXJuICR0aGVvdXQuJyc7CgkJCQl9CgkJ CX0gZWxzZSB7CgkJCQlpZigkZGVidWcpIHsKCQkJCQkkdGhlb3V0ID0gaW1wbG9kZSgnPGJy IC8+JywgJG91dCk7CgkJCQl9IGVsc2UgewoJCQkJCSR0aGVvdXQgPSAnJzsKCQkJCX0KCQkJ CXJldHVybiAkdGhlb3V0LicnOwoJCQl9CgkJfQoJCS8vU2hvdWxkIHJlYWxseSBydW4gYSBj bGVhbnVwIHRvIGdldCByaWQgb2YgYW55IGNvdW50cyAmIHJhdGluZ3MgZm9yIG5vbi1leGlz dGVudCBhcnRpY2xlcy4KCX0KIjtzOjM6Im1kNSI7czozMjoiYjRiOWRjODE5YTFmMzJlYjgz MzQyOWM3ZmRmYjEzODAiO30=