# tru_podcast v0.9 # Podcasting support for Textpattern # Nathan Arthur # http://www.rainskit.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJ0cnVfcG9kY2FzdCI7czo3OiJ2ZXJzaW9uIjtzOjM6 IjAuOSI7czo2OiJhdXRob3IiO3M6MTM6Ik5hdGhhbiBBcnRodXIiO3M6MTA6ImF1dGhvcl91 cmkiO3M6MjI6Imh0dHA6Ly93d3cudHJ1aXN0LmNvbS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjM0OiJQb2RjYXN0aW5nIHN1cHBvcnQgZm9yIFRleHRwYXR0ZXJuIjtzOjE1OiJhbGxvd19o dG1sX2hlbHAiO2k6MDtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6NDEwNzoiCTxwPlRv IGxlYXJuIG1vcmUgYWJvdXQgdHJ1X3BvZGNhc3QsIGNoZWNrIG91dCB0aGUgPGEgaHJlZj0i L2Jsb2cvNTQyL3RydV9wb2RjYXN0LWEtcG9kY2FzdGluZy1wbHVnaW4tZm9yLXRleHRwYXR0 ZXJuIj5pbnRyb2R1Y3RvcnkgYXJ0aWNsZTwvYT4sIHRoZSA8YSBocmVmPSJodXJlZmVyZW5j ZS81MzkvdHJ1X3BvZGNhc3QtcmVsZWFzZXMiPnJlbGVhc2VzIHBhZ2U8L2E+LCBvciB0aGUg PGEgaHJlZj0iaHVyZWZlcmVuY2UvNTQwL3RydV9wb2RjYXN0LWZlYXR1cmUtbGlzdCI+ZmVh dHVyZSBsaXN0PC9hPi48L3A+CgoJPGgzIGlkPSJjb25maWciPkNvbmZpZ3VyYXRpb248L2gz PgoKCTxoND5TdGVwIDE6IFJlbmFtZSBvbmUgb2YgeW91ciBjdXN0b20gZmllbGRzPC9oND4K Cgk8cD50cnVfcG9kY2FzdCB1c2VzIGEgY3VzdG9tIGZpZWxkIG5hbWVkICYjODIyMDt0cnVf cG9kY2FzdCYjODIyMTsuICBOYW1lIG9uZSBvZiB5b3VyIHVudXNlZCBjdXN0b20gZmllbGRz ICYjODIyMDt0cnVfcG9kY2FzdCYjODIyMTsgb24gdGhlIEFkbWluIC0+IFByZWZlcmVuY2Vz IC0+IEFkdmFuY2VkIHRhYi48L3A+CgoJPHA+PHR4cDppbWFnZSBpZD0iMTciIGNsYXNzPSJk aWFncmFtIiAvPjwvcD4KCgk8aDQ+U3RlcCAyOiBTdGFydCBwb2RjYXN0aW5nITwvaDQ+CgoJ PHA+V2hlbmV2ZXIgeW91IHdhbnQgdG8gY3JlYXRlIGEgbmV3IGVwaXNvZGUsIGNyZWF0ZSBh IG5ldyBhcnRpY2xlIGFuZCBwdXQgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IG9mIHRoZSBtZWRpYSBmaWxlIGludG8gdGhlIDxjb2RlPnRydV9wb2RjYXN0PC9jb2RlPiBm aWVsZCBpbiBUZXh0cGF0dGVybi4gIChUaGUgZmllbGQgd2lsbCBiZSBoaWRpbmcgYmVoaW5k IHRoZSAmIzgyMjA7QWR2YW5jZWQgT3B0aW9ucyYjODIyMTsgbGluayBvbiB0aGUgbGVmdCBz aWRlIG9mIHRoZSAmIzgyMjA7V3JpdGUmIzgyMjE7IHBhZ2UuKSAgVGhhdCYjODIxNztzIGFs bCBpdCB0YWtlcyAmIzgyMTE7IHRoZSBmaWxlIHdpbGwgYXBwZWFyIGluIHlvdXIgPHNwYW4g Y2xhc3M9ImNhcHMiPlJTUzwvc3Bhbj4gYW5kIEF0b20gZmVlZHMgYXMgYW4gZW5jbG9zdXJl LCBhbmQgcG9kY2FzdCBjbGllbnRzIChpVHVuZXMsIGZvciBleGFtcGxlKSB3aWxsIGlkZW50 aWZ5IGl0IGNvcnJlY3RseS48L3A+CgoJPHA+WW91JiM4MjE3O2xsIHByb2JhYmx5IHdhbnQg dG8gaW5zdGFsbCBSb2IgU2FibGUmIzgyMTc7cyA8YSBocmVmPSJodHRwOi8vd3d3LndpbHNo aXJlb25lLmNvbS90ZXh0cGF0dGVybi1wbHVnaW5zL3Jzcy1hZG1pbi1zaG93LWFkdi1vcHRz Ij5yc3NfYWRtaW5fc2hvd19hZHZfb3B0czwvYT4sIHdoaWNoIHdpbGwgYXV0b21hdGljYWxs eSBleHBhbmQgdGhlICYjODIyMDtBZHZhbmNlZCBPcHRpb25zJiM4MjIxOyBzZWN0aW9uIG9m IHRoZSAmIzgyMjA7V3JpdGUmIzgyMjE7IHBhZ2UsIHdoZW4geW91IGFyZSB3cml0aW5nIGFy dGljbGVzLiAgVGhhdCBnaXZlcyB5b3UgZWFzeSBhY2Nlc3MgdG8gdGhlIGN1c3RvbSBmaWVs ZHMuPC9wPgoKCTxoND5TdGVwIDM6IEluY2x1ZGUgbGlua3MgaW4geW91ciBhcnRpY2xlcyAo T3B0aW9uYWwpPC9oND4KCgk8cD5Gb3IgcGVvcGxlIHJlYWRpbmcgeW91ciBzaXRlIHZpYSB0 aGVpciB3ZWIgYnJvd3NlciwgeW91IGNhbiBsaW5rIHRvIHRoZSBtZWRpYSBmaWxlIGZyb20g eW91ciBhcnRpY2xlcyB3aXRoIHNvbWV0aGluZyBsaWtlOjwvcD4KCjxwcmU+JiM2MDt0eHA6 dHJ1X3BvZGNhc3RfaWZfcG9kY2FzdCYjNjI7ClRoaXMgYXJ0aWNsZSBoYXMgYSBwb2RjYXN0 ISAgJiM2MDt0eHA6dHJ1X3BvZGNhc3RfbGluayBsaW5rdGV4dD0mIzM0O1JpZ2h0IGhlcmUh JiMzNDsgLyYjNjI7CiYjNjA7dHhwOmVsc2UgLyYjNjI7Ck5vIHBvZGNhc3QgaGVyZSEKJiM2 MDsvdHhwOnRydV9wb2RjYXN0X2lmX3BvZGNhc3QmIzYyOzwvcHJlPgoKCTxoND5TdGVwIDQ6 IFVzZSBhIGNhdGVnb3J5IHRvIGNyZWF0ZSBhIHBvZGNhc3Qtb25seSBmZWVkIChPcHRpb25h bCk8L2g0PgoKCTxwPllvdSBkb24mIzgyMTc7dCBoYXZlIHRvIGNyZWF0ZSBhIHNwZWNpYWwg PHNwYW4gY2xhc3M9ImNhcHMiPlJTUzwvc3Bhbj4gZmVlZCBmb3IgcG9kY2FzdHMgJiM4MjEx OyB0aGUgJiM4MjIwO2VuY2xvc3VyZXMmIzgyMjE7IHdpbGwgc2ltcGx5IHNob3cgdXAgaW4g eW91ciBub3JtYWwgZmVlZChzKSBhbnkgdGltZSB5b3Ugc3BlY2lmeSBhIG1lZGlhIGZpbGUg JiM4MjExOyBidXQgeW91IGNhbiBkbyBzbyBpZiB5b3Ugd2FudC4gIFNpbXBseSBjcmVhdGUg YSBuZXcgY2F0ZWdvcnkgZm9yIGFsbCB5b3VyIHBvZGNhc3RpbmcsIGFuZCB1c2UgdGhlIGZl ZWQgZm9yIHRoYXQgY2F0ZWdvcnkgYXMgeW91ciBwb2RjYXN0LW9ubHkgZmVlZC48L3A+CgoJ PGg0PlN0ZXAgNTogT3RoZXIgdHlwZXMgb2YgJiM4MjIwO3BvZGNhc3RzJiM4MjIxOyAoT3B0 aW9uYWwpPC9oND4KCgk8cD5Zb3UgZG9uJiM4MjE3O3QgaGF2ZSB0byBsaW1pdCB5b3Vyc2Vs ZiB0byBhdWRpbzsgdHJ1X3BvZGNhc3Qgc3VwcG9ydHMgYW55IHR5cGUgb2YgbWVkaWEgKHZp ZGVvLCBpbWFnZXMsIGV0Yy4pLiAgQXMgbG9uZyBhcyB5b3VyIHNlcnZlciBrbm93cyB0aGUg Y29ycmVjdCA8c3BhbiBjbGFzcz0iY2FwcyI+TUlNRTwvc3Bhbj4gdHlwZSBmb3IgeW91ciBt ZWRpYSwgZXZlcnl0aGluZyBzaG91bGQgd29yay48L3A+CgoJPGgzIGlkPSJyZWZlcmVuY2Ui PlRhZyByZWZlcmVuY2U8L2gzPgoKCTxoND48Y29kZT50cnVfcG9kY2FzdF9saW5rPC9jb2Rl PjwvaDQ+CgoJPHA+VGhpcyB0YWcgd2lsbCBnZW5lcmF0ZSBhbiA8Y29kZT4mIzYwO2EgaHJl Zi4uLjwvY29kZT4gbGluayBpZiB0aGUgY3VycmVudCBhcnRpY2xlIGhhcyBhIHBvZGNhc3Qg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gc2V0LiAgVGhlIGdlbmVyYXRlZCBsaW5r IHdpbGwgYXV0b21hdGljYWxseSBoYXZlIDxjb2RlPnJlbD0mIzM0O2VuY2xvc3VyZSYjMzQ7 PC9jb2RlPiBzZXQgaW4gY2FzZSBhbiBvbGQgcG9kY2FzdCBjbGllbnQgaXMgbG9va2luZyBm b3IgaXQuICBZb3UgY2FuIHBhc3MgYW55IGF0dHJpYnV0ZSB0byB0aGlzIHRhZyBhbmQgaXQg d2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIDxjb2RlPiYjNjA7YSYjNjI7PC9jb2RlPiB0YWcs IGV4Y2VwdCA8Y29kZT5saW5rdGV4dDwvY29kZT4gYXMgaW5kaWNhdGVkIGJlbG93LjwvcD4K Cgk8aDU+QXR0cmlidXRlczo8L2g1PgoKCTx1bD4KCQk8bGk+PGNvZGU+bGlua3RleHQ8L2Nv ZGU+IHdpbGwgc2V0IHRoZSBjb250ZW50IG9mIHRoZSA8Y29kZT4mIzYwO2EmIzYyOy4uLiYj NjA7L2EmIzYyOzwvY29kZT4gbGluay4gIElmIHlvdSBkb24mIzgyMTc7dCBzcGVjaWZ5IDxj b2RlPmxpbmt0ZXh0PC9jb2RlPiwgaXQgZGVmYXVsdHMgdG8gdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IG9mIHRoZSBtZWRpYS48L2xpPgoJCTxsaT5Bbnkgb3RoZXIgYXR0 cmlidXRlIGRlc2lyZWQgY2FuIGJlIHBhc3NlZCB0byB0aGUgPGNvZGU+JiM2MDthJiM2Mjs8 L2NvZGU+LiAgRm9yIGV4YW1wbGUsIDxjb2RlPiYjNjA7dHhwOnRydV9wb2RjYXN0X2xpbmsg bGlua3RleHQ9JiMzNDt0ZXN0JiMzNDsganVuaz0mIzM0O3dvcnRoeSYjMzQ7IC8mIzYyOzwv Y29kZT4gd2lsbCBnZW5lcmF0ZSB0aGlzIEhUTUw6IDxjb2RlPiYjNjA7YSBocmVmPSYjMzQ7 L3NvbWUvbWVkaWEudXJsJiMzNDsganVuaz0mIzM0O3dvcnRoeSYjMzQ7JiM2Mjt0ZXN0JiM2 MDsvYSYjNjI7PC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoND48Y29kZT50cnVfcG9kY2FzdF9p Zl9wb2RjYXN0PC9jb2RlPjwvaDQ+CgoJPHA+VGhpcyBjb25kaXRpb25hbCB0YWcgd2lsbCBy ZW5kZXIgaXRzIGNvbnRlbnRzIGlmIHRoZSBjdXJyZW50IGFydGljbGUgaGFzIGFuIGFzc29j aWF0ZWQgbWVkaWEgZmlsZSAoaW4gdGhlIDxjb2RlPnRydV9wb2RjYXN0PC9jb2RlPiBjdXN0 b20gZmllbGQpLjwvcD4KCgk8aDQ+PGNvZGU+dHJ1X3BvZGNhc3RfZ2V0X3VybDwvY29kZT48 L2g0PgoKCTxwPlRoaXMgdGFnIHdpbGwgcmV0dXJuIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiBvZiBhbiBhc3NvY2lhdGVkIG1lZGlhIGZpbGUsIGlmIGFueS48L3A+Ijtz OjQ6ImNvZGUiO3M6MzA4NDoiCiNDb3B5cmlnaHQgMjAwNyBOYXRoYW4gQXJ0aHVyCiNSZWxl YXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLCBzZWUgaHR0cDovL3d3dy5vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ncGwtbGljZW5zZS5waHAgZm9yIGRldGFpbHMKI1RoaXMg d29yayBpcyBiYXNlZCBwYXJ0aWFsbHkgb24gV29yZFByZXNzIGNvZGU7IHNlZSBodHRwOi8v dHJhYy53b3JkcHJlc3Mub3JnL2Jyb3dzZXIvdHJ1bmsvd3AtaW5jbHVkZXMvZnVuY3Rpb25z LnBocD9yZXY9NDcyNQoKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfbGluaygkYXR0cykgewoJJHBv ZGNhc3RfdXJsID0gdHJ1X3BvZGNhc3RfZ2V0X3VybCgpOwoJaWYgKCRwb2RjYXN0X3VybCkg ewoJCSRsaW5rdGV4dCA9ICgkYXR0c1snbGlua3RleHQnXSA/ICRhdHRzWydsaW5rdGV4dCdd IDogJHBvZGNhc3RfdXJsKTsKCQl1bnNldCgkYXR0c1snbGlua3RleHQnXSk7CgoJCSRsaW5r ID0gIjxhIGhyZWY9XCIkcG9kY2FzdF91cmxcIiByZWw9XCJlbmNsb3N1cmVcIiI7CgkJZm9y ZWFjaCAoJGF0dHMgYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkJJGxpbmsgLj0gIiAka2V5PVwi JHZhbHVlXCIiOwoJCX0KCQkkbGluayAuPSAiPiRsaW5rdGV4dDwvYT4iOwoKCQlyZXR1cm4g JGxpbms7Cgl9Cn0KCmZ1bmN0aW9uIHRydV9wb2RjYXN0X2lmX3BvZGNhc3QoJGF0dHMsICR0 aGluZykgewogICAgICAgIHJldHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsIHRydV9wb2Rj YXN0X2dldF91cmwoKSkpOwp9CgpmdW5jdGlvbiB0cnVfcG9kY2FzdF9nZXRfdXJsKCkgewoJ Z2xvYmFsICR0aGlzYXJ0aWNsZTsKCXJldHVybiB0cmltKCR0aGlzYXJ0aWNsZVsndHJ1X3Bv ZGNhc3QnXSk7Cn0KCnJlZ2lzdGVyX2NhbGxiYWNrKCd0cnVfcG9kY2FzdF9yc3NfaGFuZGxl cl9yc3MnLCAncnNzX2VudHJ5Jyk7CmZ1bmN0aW9uIHRydV9wb2RjYXN0X3Jzc19oYW5kbGVy X3JzcygkZXZlbnQsICRzdGVwKXtyZXR1cm4gdHJ1X3BvZGNhc3RfcnNzX2hhbmRsZXIoZmFs c2UpO30KcmVnaXN0ZXJfY2FsbGJhY2soJ3RydV9wb2RjYXN0X3Jzc19oYW5kbGVyX2F0b20n LCAnYXRvbV9lbnRyeScpOwpmdW5jdGlvbiB0cnVfcG9kY2FzdF9yc3NfaGFuZGxlcl9hdG9t KCRldmVudCwgJHN0ZXApe3JldHVybiB0cnVfcG9kY2FzdF9yc3NfaGFuZGxlcih0cnVlKTt9 CgpmdW5jdGlvbiB0cnVfcG9kY2FzdF9yc3NfaGFuZGxlcigkYXRvbSkKewoJJHBvZGNhc3Rf dXJsID0gdHJ1X3BvZGNhc3RfZ2V0X3VybCgpOwoJaWYgKCRwb2RjYXN0X3VybCkKCQlyZXR1 cm4gdHJ1X3BvZGNhc3RfZ2VuZXJhdGVfZW5jbG9zdXJlKCRwb2RjYXN0X3VybCwgJGF0b20p OwoJZWxzZQoJCXJldHVybjsKfQoKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfZ2VuZXJhdGVfZW5j bG9zdXJlKCR1cmwsICRhdG9tKSB7CgkkbGVuZ3RoID0gJHR5cGUgPSBmYWxzZTsKCSRoZWFk ZXJzID0gdHJ1X3BvZGNhc3RfZ2V0X2hlYWRlcnNfZm9yKCR1cmwpOwoJaWYgKCRoZWFkZXJz KSB7CgkJJHR5cGUgPSAkaGVhZGVyc1snY29udGVudC10eXBlJ107CgkJJGxlbmd0aCA9ICRo ZWFkZXJzWydjb250ZW50LWxlbmd0aCddOwoJfQoKCSR4bWxfbWlkID0gKCR0eXBlID8gIiB0 eXBlPVwiJHR5cGVcIiIgOiAiIikgLiAoJGxlbmd0aCA/ICIgbGVuZ3RoPVwiJGxlbmd0aFwi IiA6ICIiKTsKCWlmICgkYXRvbSkKCQkkeG1sID0gIjxsaW5rIHJlbD1cImVuY2xvc3VyZVwi IGhyZWY9XCIkdXJsXCIiIC4gJHhtbF9taWQgLiAiIC8+IjsKCWVsc2UKCQkkeG1sID0gIjxl bmNsb3N1cmUgdXJsPVwiJHVybFwiIiAuICR4bWxfbWlkIC4gIiAvPiI7CgoJcmV0dXJuICR4 bWwubjsKfQoKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfZ2V0X2hlYWRlcnNfZm9yKCR1cmwpIHsK CSRNQVhfUkVESVJFQ1RTID0gNTsKCSRTT0NLRVRfQ09OTkVDVF9USU1FT1VUID0gMzsKCgkk cmVkaXJlY3RzID0gMDsKCXdoaWxlICgkcmVkaXJlY3RzKysgPCAkTUFYX1JFRElSRUNUUykg ewoJCSRwYXJ0cyA9IHBhcnNlX3VybCgkdXJsKTsKCQkkZmlsZSA9ICRwYXJ0c1sncGF0aCdd IC4gKCRwYXJ0c1sncXVlcnknXSA/ICc/Jy4kcGFydHNbJ3F1ZXJ5J10gOiAnJyk7CgkJJGhv c3QgPSAoJHBhcnRzWydob3N0J10gPyAkcGFydHNbJ2hvc3QnXSA6ICRfU0VSVkVSWydIVFRQ X0hPU1QnXSk7CgkJJHBvcnQgPSAoaXNzZXQoJHBhcnRzWydwb3J0J10pID8gJHBhcnRzWydw b3J0J10gOiA4MCk7CgoJCSRmcCA9IEBmc29ja29wZW4oJGhvc3QsICRwb3J0LCAkZXJyX251 bSwgJGVycl9tc2csICRTT0NLRVRfQ09OTkVDVF9USU1FT1VUKTsKCQlpZiAoISRmcCkKCQkJ cmV0dXJuIGZhbHNlOwoKCQkkcmVzcG9uc2UgPSAnJzsKCQkkaGVhZCA9ICJIRUFEICRmaWxl IEhUVFAvMS4xXHJcbkhPU1Q6ICRob3N0XHJcblVzZXItQWdlbnQ6ICIgLiAkcGx1Z2luWydu YW1lJ10gLiAiLyIgLiAkcGx1Z2luWyd2ZXJzaW9uJ10gLiAiXHJcblxyXG4iOwoJCWZwdXRz KCRmcCwgJGhlYWQpOwoJCXdoaWxlICghZmVvZigkZnApICYmIHN0cnBvcygkcmVzcG9uc2Us ICJcclxuXHJcbiIpID09IGZhbHNlKQoJCQkkcmVzcG9uc2UgLj0gZmdldHMoJGZwLCAyMDQ4 KTsKCQlmY2xvc2UoJGZwKTsKCgkJLy91Z2x5CgkJcHJlZ19tYXRjaCgnLy4qKFswLTldezN9 KS4qLycsICRyZXNwb25zZSwgJHJldHVybik7CgkJJGNvZGUgPSAkaGVhZGVyc1sncmVzcG9u c2UnXSA9ICRyZXR1cm5bMV07IC8vIEhUVFAgcmVzcG9uc2UgY29kZQoKCQlwcmVnX21hdGNo X2FsbCgnLyguKj8pOiAoLiopXHIvJywgJHJlc3BvbnNlLCAkbWF0Y2hlcyk7CgkJJGNvdW50 ID0gY291bnQoJG1hdGNoZXNbMV0pOwoJCWZvciAoJGkgPSAwOyAkaSA8ICRjb3VudDsgJGkr KykgewoJCQkka2V5ID0gc3RydG9sb3dlcigkbWF0Y2hlc1sxXVskaV0pOwoJCQkkaGVhZGVy c1siJGtleSJdID0gJG1hdGNoZXNbMl1bJGldOwoJCX0KCgkJaWYgKCgnMzAyJyA9PSAkY29k ZSB8fCAnMzAxJyA9PSAkY29kZSkgJiYgaXNzZXQoJGhlYWRlcnNbJ2xvY2F0aW9uJ10pKQoJ CQkkdXJsID0gJGhlYWRlcnNbJ2xvY2F0aW9uJ107CgkJZWxzZQoJCQlyZXR1cm4gJGhlYWRl cnM7Cgl9CglyZXR1cm4gZmFsc2U7Cn0KIjtzOjg6ImhlbHBfcmF3IjtzOjMyMjc6IlRvIGxl YXJuIG1vcmUgYWJvdXQgdHJ1X3BvZGNhc3QsIGNoZWNrIG91dCB0aGUgImludHJvZHVjdG9y eSBhcnRpY2xlIjovYmxvZy81NDIvdHJ1X3BvZGNhc3QtYS1wb2RjYXN0aW5nLXBsdWdpbi1m b3ItdGV4dHBhdHRlcm4sIHRoZSAicmVsZWFzZXMgcGFnZSI6cmVmZXJlbmNlLzUzOS90cnVf cG9kY2FzdC1yZWxlYXNlcywgb3IgdGhlICJmZWF0dXJlIGxpc3QiOnJlZmVyZW5jZS81NDAv dHJ1X3BvZGNhc3QtZmVhdHVyZS1saXN0LgoKaDMoI2NvbmZpZykuIENvbmZpZ3VyYXRpb24K Cmg0LiBTdGVwIDE6IFJlbmFtZSBvbmUgb2YgeW91ciBjdXN0b20gZmllbGRzCgp0cnVfcG9k Y2FzdCB1c2VzIGEgY3VzdG9tIGZpZWxkIG5hbWVkICJ0cnVfcG9kY2FzdCIuICBOYW1lIG9u ZSBvZiB5b3VyIHVudXNlZCBjdXN0b20gZmllbGRzICJ0cnVfcG9kY2FzdCIgb24gdGhlIEFk bWluIC0+IFByZWZlcmVuY2VzIC0+IEFkdmFuY2VkIHRhYi4KCjx0eHA6aW1hZ2UgaWQ9IjE3 IiBjbGFzcz0iZGlhZ3JhbSIgLz4KCmg0LiBTdGVwIDI6IFN0YXJ0IHBvZGNhc3RpbmchCgpX aGVuZXZlciB5b3Ugd2FudCB0byBjcmVhdGUgYSBuZXcgZXBpc29kZSwgY3JlYXRlIGEgbmV3 IGFydGljbGUgYW5kIHB1dCB0aGUgVVJMIG9mIHRoZSBtZWRpYSBmaWxlIGludG8gdGhlIEB0 cnVfcG9kY2FzdEAgZmllbGQgaW4gVGV4dHBhdHRlcm4uICAoVGhlIGZpZWxkIHdpbGwgYmUg aGlkaW5nIGJlaGluZCB0aGUgIkFkdmFuY2VkIE9wdGlvbnMiIGxpbmsgb24gdGhlIGxlZnQg c2lkZSBvZiB0aGUgIldyaXRlIiBwYWdlLikgIFRoYXQncyBhbGwgaXQgdGFrZXMgLSB0aGUg ZmlsZSB3aWxsIGFwcGVhciBpbiB5b3VyIFJTUyBhbmQgQXRvbSBmZWVkcyBhcyBhbiBlbmNs b3N1cmUsIGFuZCBwb2RjYXN0IGNsaWVudHMgKGlUdW5lcywgZm9yIGV4YW1wbGUpIHdpbGwg aWRlbnRpZnkgaXQgY29ycmVjdGx5LgoKWW91J2xsIHByb2JhYmx5IHdhbnQgdG8gaW5zdGFs bCBSb2IgU2FibGUncyAicnNzX2FkbWluX3Nob3dfYWR2X29wdHMiOmh0dHA6Ly93d3cud2ls c2hpcmVvbmUuY29tL3RleHRwYXR0ZXJuLXBsdWdpbnMvcnNzLWFkbWluLXNob3ctYWR2LW9w dHMsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBleHBhbmQgdGhlICJBZHZhbmNlZCBPcHRp b25zIiBzZWN0aW9uIG9mIHRoZSAiV3JpdGUiIHBhZ2UsIHdoZW4geW91IGFyZSB3cml0aW5n IGFydGljbGVzLiAgVGhhdCBnaXZlcyB5b3UgZWFzeSBhY2Nlc3MgdG8gdGhlIGN1c3RvbSBm aWVsZHMuCgpoNC4gU3RlcCAzOiBJbmNsdWRlIGxpbmtzIGluIHlvdXIgYXJ0aWNsZXMgKE9w dGlvbmFsKQoKRm9yIHBlb3BsZSByZWFkaW5nIHlvdXIgc2l0ZSB2aWEgdGhlaXIgd2ViIGJy b3dzZXIsIHlvdSBjYW4gbGluayB0byB0aGUgbWVkaWEgZmlsZSBmcm9tIHlvdXIgYXJ0aWNs ZXMgd2l0aCBzb21ldGhpbmcgbGlrZToKCjxwcmU+PHR4cDp0cnVfcG9kY2FzdF9pZl9wb2Rj YXN0PgpUaGlzIGFydGljbGUgaGFzIGEgcG9kY2FzdCEgIDx0eHA6dHJ1X3BvZGNhc3RfbGlu ayBsaW5rdGV4dD0iUmlnaHQgaGVyZSEiIC8+Cjx0eHA6ZWxzZSAvPgpObyBwb2RjYXN0IGhl cmUhCjwvdHhwOnRydV9wb2RjYXN0X2lmX3BvZGNhc3Q+PC9wcmU+CgpoNC4gU3RlcCA0OiBV c2UgYSBjYXRlZ29yeSB0byBjcmVhdGUgYSBwb2RjYXN0LW9ubHkgZmVlZCAoT3B0aW9uYWwp CgpZb3UgZG9uJ3QgaGF2ZSB0byBjcmVhdGUgYSBzcGVjaWFsIFJTUyBmZWVkIGZvciBwb2Rj YXN0cyAtIHRoZSAiZW5jbG9zdXJlcyIgd2lsbCBzaW1wbHkgc2hvdyB1cCBpbiB5b3VyIG5v cm1hbCBmZWVkKHMpIGFueSB0aW1lIHlvdSBzcGVjaWZ5IGEgbWVkaWEgZmlsZSAtIGJ1dCB5 b3UgY2FuIGRvIHNvIGlmIHlvdSB3YW50LiAgU2ltcGx5IGNyZWF0ZSBhIG5ldyBjYXRlZ29y eSBmb3IgYWxsIHlvdXIgcG9kY2FzdGluZywgYW5kIHVzZSB0aGUgZmVlZCBmb3IgdGhhdCBj YXRlZ29yeSBhcyB5b3VyIHBvZGNhc3Qtb25seSBmZWVkLgoKaDQuIFN0ZXAgNTogT3RoZXIg dHlwZXMgb2YgInBvZGNhc3RzIiAoT3B0aW9uYWwpCgpZb3UgZG9uJ3QgaGF2ZSB0byBsaW1p dCB5b3Vyc2VsZiB0byBhdWRpbzsgdHJ1X3BvZGNhc3Qgc3VwcG9ydHMgYW55IHR5cGUgb2Yg bWVkaWEgKHZpZGVvLCBpbWFnZXMsIGV0Yy4pLiAgQXMgbG9uZyBhcyB5b3VyIHNlcnZlciBr bm93cyB0aGUgY29ycmVjdCBNSU1FIHR5cGUgZm9yIHlvdXIgbWVkaWEsIGV2ZXJ5dGhpbmcg c2hvdWxkIHdvcmsuCgpoMygjcmVmZXJlbmNlKS4gVGFnIHJlZmVyZW5jZQoKaDQuIEB0cnVf cG9kY2FzdF9saW5rQAoKVGhpcyB0YWcgd2lsbCBnZW5lcmF0ZSBhbiBAPGEgaHJlZi4uLkAg bGluayBpZiB0aGUgY3VycmVudCBhcnRpY2xlIGhhcyBhIHBvZGNhc3QgVVJMIHNldC4gIFRo ZSBnZW5lcmF0ZWQgbGluayB3aWxsIGF1dG9tYXRpY2FsbHkgaGF2ZSBAcmVsPSJlbmNsb3N1 cmUiQCBzZXQgaW4gY2FzZSBhbiBvbGQgcG9kY2FzdCBjbGllbnQgaXMgbG9va2luZyBmb3Ig aXQuICBZb3UgY2FuIHBhc3MgYW55IGF0dHJpYnV0ZSB0byB0aGlzIHRhZyBhbmQgaXQgd2ls bCBiZSBwYXNzZWQgb24gdG8gdGhlIEA8YT5AIHRhZywgZXhjZXB0IEBsaW5rdGV4dEAgYXMg aW5kaWNhdGVkIGJlbG93LgoKaDUuIEF0dHJpYnV0ZXM6CgoqIEBsaW5rdGV4dEAgd2lsbCBz ZXQgdGhlIGNvbnRlbnQgb2YgdGhlIEA8YT4uLi48L2E+QCBsaW5rLiAgSWYgeW91IGRvbid0 IHNwZWNpZnkgQGxpbmt0ZXh0QCwgaXQgZGVmYXVsdHMgdG8gdGhlIFVSTCBvZiB0aGUgbWVk aWEuCiogQW55IG90aGVyIGF0dHJpYnV0ZSBkZXNpcmVkIGNhbiBiZSBwYXNzZWQgdG8gdGhl IEA8YT5ALiAgRm9yIGV4YW1wbGUsIEA8dHhwOnRydV9wb2RjYXN0X2xpbmsgbGlua3RleHQ9 InRlc3QiIGp1bms9IndvcnRoeSIgLz5AIHdpbGwgZ2VuZXJhdGUgdGhpcyBIVE1MOiBAPGEg aHJlZj0iL3NvbWUvbWVkaWEudXJsIiBqdW5rPSJ3b3J0aHkiPnRlc3Q8L2E+QAoKaDQuIEB0 cnVfcG9kY2FzdF9pZl9wb2RjYXN0QAoKVGhpcyBjb25kaXRpb25hbCB0YWcgd2lsbCByZW5k ZXIgaXRzIGNvbnRlbnRzIGlmIHRoZSBjdXJyZW50IGFydGljbGUgaGFzIGFuIGFzc29jaWF0 ZWQgbWVkaWEgZmlsZSAoaW4gdGhlIEB0cnVfcG9kY2FzdEAgY3VzdG9tIGZpZWxkKS4KCmg0 LiBAdHJ1X3BvZGNhc3RfZ2V0X3VybEAKClRoaXMgdGFnIHdpbGwgcmV0dXJuIHRoZSBVUkwg b2YgYW4gYXNzb2NpYXRlZCBtZWRpYSBmaWxlLCBpZiBhbnkuIjtzOjM6Im1kNSI7czozMjoi ZGY5MmM2MjhjOTAyZDA3ZGMzMGY4NzgxMzY2YTg2MTAiO30=