# upm_textile v.0.3 # Parse any text with Textile. # Mary Fredborg # http://utterplush.com/txp-plugins/upm-textile # .......................................................................... # A plugin for Textpattern # http://textpattern.com/ # # Adding Plugins to Your Textpattern Installation # http://textpattern.net/wiki/index.php?title=Intermediate_Weblog_Model#Adding_Plugins_to_Your_Textpattern_Installation # .......................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJ1cG1fdGV4dGlsZSI7czoxMToiZGVzY3JpcHRpb24i O3M6Mjg6IlBhcnNlIGFueSB0ZXh0IHdpdGggVGV4dGlsZS4iO3M6NzoidmVyc2lvbiI7czoz OiIwLjMiO3M6NDoidHlwZSI7aToxO3M6NjoiYXV0aG9yIjtzOjEzOiJNYXJ5IEZyZWRib3Jn IjtzOjEwOiJhdXRob3JfdXJpIjtzOjQ1OiJodHRwOi8vdXR0ZXJwbHVzaC5jb20vdHhwLXBs dWdpbnMvdXBtLXRleHRpbGUiO3M6NDoiY29kZSI7czoxNTUxOiJmdW5jdGlvbiB1cG1fdGV4 dGlsZSgkYXR0cyA9IGFycmF5KCksICR0aGluZyA9ICcnKQoJewoJCWdsb2JhbCAkcHJlZnM7 CgoJCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJCSdsaXRlJwkJICAgPT4gJycsCgkJCSdub19p bWFnZScgICA9PiAnJywKCQkJJ3BhcnNlX3RhZ3MnID0+IDEsCgkJCSdyZWwnCQkJICAgPT4g JycsCgkJCSdzdHJpY3QnCSAgID0+ICcnLAoJCSksICRhdHRzKSk7CgoJCWlmICgkdGhpbmcp CgkJewoJCQlAaW5jbHVkZV9vbmNlKHR4cGF0aC4nL2xpYi9jbGFzc1RleHRpbGUucGhwJyk7 CgoJCQlpZiAoY2xhc3NfZXhpc3RzKCdUZXh0aWxlJykpCgkJCXsKCQkJCSR0ZXh0aWxlID0g bmV3IFRleHRpbGUoKTsKCgkJCQlpZiAoJHBhcnNlX3RhZ3MpCgkJCQl7CgkJCQkJJHRoaW5n ID0gcGFyc2UoJHRoaW5nKTsKCQkJCX0KCgkJCQlyZXR1cm4gJHRleHRpbGUtPlRleHRpbGVU aGlzKCR0aGluZywgJGxpdGUsIGZhbHNlLCAkbm9faW1hZ2UsICRzdHJpY3QsICRyZWwpOwoJ CQl9CgoJCQllbHNlaWYgKCRwcmVmc1sncHJvZHVjdGlvbl9zdGF0dXMnXSAhPSAnbGl2ZScp CgkJCXsKCQkJCXJldHVybiB1cG1fdGV4dGlsZV9nVHh0KCd0ZXh0aWxlX21pc3NpbmcnKTsK CQkJfQoJCX0KCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1fdGV4dGlsZV9yZXN0cmlj dGVkKCRhdHRzID0gYXJyYXkoKSwgJHRoaW5nID0gJycpCgl7CgkJZ2xvYmFsICRwcmVmczsK CgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ2xpdGUnCQkgICA9PiAxLAoJCQknbm9faW1h Z2UnICAgPT4gMSwKCQkJJ3BhcnNlX3RhZ3MnID0+IDEsCgkJCSdyZWwnCQkJICAgPT4gJ25v Zm9sbG93JywKCQkpLCAkYXR0cykpOwoKCQlpZiAoJHRoaW5nKQoJCXsKCQkJQGluY2x1ZGVf b25jZSh0eHBhdGguJy9saWIvY2xhc3NUZXh0aWxlLnBocCcpOwoKCQkJaWYgKGNsYXNzX2V4 aXN0cygnVGV4dGlsZScpKQoJCQl7CgkJCQkkdGV4dGlsZSA9IG5ldyBUZXh0aWxlKCk7CgoJ CQkJaWYgKCRwYXJzZV90YWdzKQoJCQkJewoJCQkJCSR0aGluZyA9IHBhcnNlKCR0aGluZyk7 CgkJCQl9CgoJCQkJcmV0dXJuICR0ZXh0aWxlLT5UZXh0aWxlUmVzdHJpY3RlZCgkdGhpbmcs ICRsaXRlLCAkbm9faW1hZ2UsICRyZWwpOwoJCQl9CgoJCQllbHNlaWYgKCRwcmVmc1sncHJv ZHVjdGlvbl9zdGF0dXMnXSAhPSAnbGl2ZScpCgkJCXsKCQkJCXJldHVybiB1cG1fdGV4dGls ZV9nVHh0KCd0ZXh0aWxlX21pc3NpbmcnKTsKCQkJfQoJCX0KCX0KCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglm dW5jdGlvbiB1cG1fdGV4dGlsZV9nVHh0KCR3aGF0LCAkYXR0cyA9IGFycmF5KCkpCgl7CgkJ JGxhbmcgPSBhcnJheSgKCQkJJ3RleHRpbGVfbWlzc2luZycgPT4gJ3VwbV90ZXh0aWxlOiBU ZXh0aWxlIGFwcGVhcnMgdG8gYmUgbWlzc2luZy4nLAoJCSk7CgoJCXJldHVybiBzdHJ0cigk bGFuZ1skd2hhdF0sICRhdHRzKTsKCX0iO3M6NDoiaGVscCI7czo1ODE0OiI8c3R5bGUgdHlw ZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4scHJvamVjdGlvbiI+CjwhLS0KdmFyIHsKcGFk ZGluZzogMC4xZW07CmZvbnQtc3R5bGU6IG5vcm1hbDsKZm9udC13ZWlnaHQ6IGJvbGQ7CmZv bnQtZmFtaWx5OiBtb25vc3BhY2U7CmJhY2tncm91bmQtY29sb3I6ICNlZWU7Cn0KCnRhYmxl LnVwbV90YWdfYXR0cyB7Cm1hcmdpbjogMCAwIDE1cHggMDsKYm9yZGVyOiAxcHggc29saWQg I2VlZTsKYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKfQoKdGFibGUudXBtX3RhZ19hdHRz IGNhcHRpb24gewpwYWRkaW5nOiAwLjVlbTsKZm9udC13ZWlnaHQ6IGJvbGQ7CnRleHQtYWxp Z246IGxlZnQ7CmJhY2tncm91bmQtY29sb3I6ICNkZGQ7Cn0KCnRhYmxlLnVwbV90YWdfYXR0 cyB0ciB7CmJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOwp9Cgp0YWJsZS51cG1fdGFn X2F0dHMgdGgsIHRhYmxlLnVwbV90YWdfYXR0cyB0ZCB7Cm1hcmdpbjogMDsKcGFkZGluZzog MC41ZW0gMWVtOwp9Cgp0YWJsZS51cG1fdGFnX2F0dHMgdGggewpmb250LXdlaWdodDogbm9y bWFsOwp0ZXh0LWFsaWduOiBsZWZ0OwpiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwp9Ci0tPgo8 L3N0eWxlPgoKPGgxPnVwbV90ZXh0aWxlPC9oMT4KCjxvbCBpZD0ic3RhcnQiPgoJPGxpPjxh IGhyZWY9IiNpbnRyb2R1Y3Rpb24iPkludHJvZHVjdGlvbjwvYT48L2xpPgoJPGxpPjxhIGhy ZWY9IiN0YWdzIj5UYWdzPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3VzYWdlLWV4YW1wbGVz Ij5Vc2FnZSBFeGFtcGxlczwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNmb290bm90ZXMiPkZv b3Rub3RlczwvYT48L2xpPgo8L29sPgoKCgo8aDIgaWQ9ImludHJvZHVjdGlvbiI+SW50cm9k dWN0aW9uPC9oMj4KCjxwPlRoaXMgcGx1Z2luIHRhZyBhbGxvd3MgeW91IHRvIHBhcnNlIGFu eSB0ZXh0IHdpdGggVGV4dGlsZS4gU2ltcGx5IHdyYXAgaXQgYXJvdW5kCgl3aGF0ZXZlciB0 ZXh0IHlvdSdkIGxpa2UgdG8gcGFyc2UuPC9wPgoKPHA+PHN0cm9uZz5QbGVhc2Ugbm90ZTo8 L3N0cm9uZz4gdGhpcyB1c2VzIHRoZSBzYW1lIFRleHRpbGUgdmVyc2lvbiBzdXBwbGllZCB3 aXRoIHlvdXIKCWNvcHkgb2YgVGV4dHBhdHRlcm4gYW5kIEkgb25seSBwcm92aWRlIHN1cHBv cnQgZm9yIHRoaXMgcGx1Z2luLCBub3QgVGV4dGlsZQoJaXRzZWxmLiBUaGUgYXR0cmlidXRl cyBiZWxvdyBkbyBub3QgYWRkIGFueSBuZXcvaW1wcm92ZWQgZnVuY3Rpb25hbGl0eSB0byBU ZXh0aWxlLAoJbWVyZWx5IHRoZSBhYmlsaXR5IHRvIHVzZSBpbi1idWlsdCBUZXh0aWxlIHBh cmFtZXRlcnMuPC9wPgoKPHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0iSnVtcCBiYWNrIGNv bnRlbnRzIGxpc3QiPiYjODYxNzs8L2E+PC9wPgoKCgo8aDIgaWQ9InRhZ3MiPlRhZ3M8L2gy PgoKPHRhYmxlIGNsYXNzPSJ1cG1fdGFnX2F0dHMiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3Bh Y2luZz0iMCI+CgoJPGNhcHRpb24+dXBtX3RleHRpbGU8L2NhcHRpb24+CgoJPHRyPgoJCTx0 aD5OYW1lPC90aD4KCQk8dGg+RGVzY3JpcHRpb248L3RoPgoJCTx0aD5SZXF1aXJlZD88L3Ro PgoJCTx0aD5BdmFpbGFibGUgVmFsdWVzPC90aD4KCQk8dGg+RGVmYXVsdCBWYWx1ZTwvdGg+ Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+ZW5jb2RlPC90ZD4KCQk8dGQ+RHJvcHBlZC4gRGVwcmVj YXRlZCBpbiBUZXh0aWxlIGFuZCBkb2VzbiYjODIxNzt0IG1ha2UgbXVjaCBzZW5zZS4gRG8g bm90IHVzZS48L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmxpdGU8L3RkPgoJCTx0ZD5XaGV0 aGVyIHRvIGV4Y2x1ZGUgYWxsIGNvZGUgYW5kIGJsb2NrIHRhZ3MuPC90ZD4KCQk8dGQ+Tm88 L3RkPgoJCTx0ZD48dmFyPjA8L3Zhcj4gKG5vKSBvciA8dmFyPjE8L3Zhcj4gKHllcyk8L3Rk PgoJCTx0ZD48dmFyPjA8L3Zhcj48L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPm5vX2ltYWdl PC90ZD4KCQk8dGQ+V2hldGhlciB0byBzdHJpcCBpbWFnZXMuPC90ZD4KCQk8dGQ+Tm88L3Rk PgoJCTx0ZD48dmFyPjA8L3Zhcj4gKGxlYXZlIGFsb25lKSBvciA8dmFyPjE8L3Zhcj4gKHN0 cmlwIGltYWdlcyk8L3RkPgoJCTx0ZD48dmFyPjA8L3Zhcj48L3RkPgoJPC90cj4KCgk8dHI+ CgkJPHRkPnBhcnNlX3RhZ3M8L3RkPgoJCTx0ZD5XaGV0aGVyIHRvIHBhcnNlIGFueSBjb250 YWluZWQgVGV4dHBhdHRlcm4gdGFncy48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+ MDwvdmFyPiAobm8pIG9yIDx2YXI+MTwvdmFyPiAoeWVzKTwvdGQ+CgkJPHRkPjx2YXI+MTwv dmFyPjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+cmVsPC90ZD4KCQk8dGQ+KFgpSFRNTCA8 dmFyPnJlbDwvdmFyPiBhdHRyaWJ1dGUgdG8gYXBwbHkgdG8gbGlua3MuPC90ZD4KCQk8dGQ+ Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv UkVDLWh0bWw0MC90eXBlcy5odG1sI3R5cGUtbGlua3MiPihYKUhUTUwgbGluayByZWxhdGlv bnNoaXAgdHlwZTwvYT4uPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+CgkJ PHRkPnN0cmljdDwvdGQ+CgkJPHRkPldoZXRoZXIgdG8gc3RyaXAgZXh0cmEgd2hpdGVzcGFj ZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+MDwvdmFyPiAoeWVzKSBvciA8dmFy PjE8L3Zhcj4gKGxlYXZlIGFsb25lKTwvdGQ+CgkJPHRkPjx2YXI+MDwvdmFyPjwvdGQ+Cgk8 L3RyPgo8L3RhYmxlPgoKPHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0iSnVtcCBiYWNrIGNv bnRlbnRzIGxpc3QiPiYjODYxNzs8L2E+PC9wPgoKPHRhYmxlIGNsYXNzPSJ1cG1fdGFnX2F0 dHMiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CgoJPGNhcHRpb24+dXBtX3Rl eHRpbGVfcmVzdHJpY3RlZDwvY2FwdGlvbj4KCgk8dHI+CgkJPHRoPk5hbWU8L3RoPgoJCTx0 aD5EZXNjcmlwdGlvbjwvdGg+CgkJPHRoPlJlcXVpcmVkPzwvdGg+CgkJPHRoPkF2YWlsYWJs ZSBWYWx1ZXM8L3RoPgoJCTx0aD5EZWZhdWx0IFZhbHVlPC90aD4KCTwvdHI+CgoJPHRyPgoJ CTx0ZD5saXRlPC90ZD4KCQk8dGQ+V2hldGhlciB0byBleGNsdWRlIGFsbCBjb2RlIGFuZCBh bGwgYmxvY2sgdGFncywgZXhjZXB0IGZvciBwYXJhZ3JhcGhzIGFuZCBibG9ja3F1b3Rlcy48 L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+MDwvdmFyPiAobGVhdmUgYWxvbmUpIG9y IDx2YXI+MTwvdmFyPiAoeWVzKTwvdGQ+CgkJPHRkPjx2YXI+MTwvdmFyPjwvdGQ+Cgk8L3Ry PgoKCTx0cj4KCQk8dGQ+bm9faW1hZ2U8L3RkPgoJCTx0ZD5XaGV0aGVyIHRvIHN0cmlwIGlt YWdlcy48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+MDwvdmFyPiAobGVhdmUgYWxv bmUpIG9yIDx2YXI+MTwvdmFyPiAoeWVzKTwvdGQ+CgkJPHRkPjx2YXI+MTwvdmFyPjwvdGQ+ Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+cGFyc2VfdGFnczwvdGQ+CgkJPHRkPldoZXRoZXIgdG8g cGFyc2UgYW55IGNvbnRhaW5lZCBUZXh0cGF0dGVybiB0YWdzLjwvdGQ+CgkJPHRkPk5vPC90 ZD4KCQk8dGQ+PHZhcj4wPC92YXI+IChubykgb3IgPHZhcj4xPC92YXI+ICh5ZXMpPC90ZD4K CQk8dGQ+PHZhcj4xPC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5yZWw8L3RkPgoJ CTx0ZD4oWClIVE1MIDx2YXI+cmVsPC92YXI+IGF0dHJpYnV0ZSB0byBhcHBseSB0byBsaW5r cy48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSB2YWxpZCA8YSBocmVmPSJodHRwOi8v d3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3R5cGVzLmh0bWwjdHlwZS1saW5rcyI+KFgpSFRN TCBsaW5rIHJlbGF0aW9uc2hpcCB0eXBlPC9hPi48L3RkPgoJCTx0ZD48dmFyPm5vZm9sbG93 PC92YXI+PHN1cD48YSBocmVmPSIjZm4xIj4xPC9hPjwvc3VwPjwvdGQ+Cgk8L3RyPgoKPC90 YWJsZT4KCjxwPjxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBs aXN0Ij4mIzg2MTc7PC9hPjwvcD4KCgo8aDM+Tm90ZXMgT24gUmVzdHJpY3RlZCBUZXh0aWxl PC9oMz4KCjxwPlZlcnNpb24gNC4wLjQgb2YgVGV4dHBhdHRlcm4gaW50cm9kdWNlZCBhIG5l dyBmdW5jdGlvbiB0byBUZXh0aWxlLCBuYW1lZAoJVGV4dGlsZVJlc3RyaWN0ZWQuIFRoaXMg bmV3IGZ1bmN0aW9uIGRvZXMgc2V2ZXJhbCB0aGluZ3M6PC9wPgoKPHVsPgoJPGxpPkVzY2Fw ZXMgYWxsIHJhdyAoWClIVE1MIGFuZCBhdHRlbXB0cyB0byBjbGVhbiBhbGwgcG9zc2libGUg WFNTIGF0dGVtcHRzLiBUaGlzIHJlcXVpcmVzCgkJc3RyaXBwaW5nIGFsbCA8dmFyPnN0eWxl PC92YXI+LCA8dmFyPmNsYXNzPC92YXI+LCA8dmFyPmlkPC92YXI+LCA8dmFyPmNvbHNwYW48 L3Zhcj4gYW5kCgkJPHZhcj5yb3dzcGFuPC92YXI+IChYKVRITUwgYXR0cmlidXRlcy4gVGhl IDx2YXI+bGFuZzwvdmFyPiBhdHRyaWJ1dGUgaXMgc3RpbGwgYWxsb3dlZC48L2xpPgoKCTxs aT5BdXRvbWF0aWNhbGx5IGNvbnZlcnRzIGFsbCBwbGFpbi10ZXh0IHVybHMgaW50byBsaW5r cy48L2xpPgoKCTxsaT5Pbmx5IDx2YXI+aHR0cDwvdmFyPiwgPHZhcj5odHRwczwvdmFyPiwg PHZhcj5mdHA8L3Zhcj4sIGFuZCA8dmFyPm1haWx0bzwvdmFyPiBVUkkgc2NoZW1lcwoJCWFy ZSBwZXJtaXR0ZWQ8c3VwPjxhIGhyZWY9IiNmbjEiPjE8L2E+PC9zdXA+LjwvbGk+CgoJPGxp PkJ5IGRlZmF1bHQsIGFwcGxpZXMgPHZhcj5ub2ZvbGxvdzwvdmFyPiByZWxhdGlvbnNoaXAK CQlhdHRyaWJ1dGU8c3VwPjxhIGhyZWY9IiNmbjIiPjI8L2E+PC9zdXA+IHRvIGFsbCBsaW5r cy48L2xpPgoKCTxsaT5CeSBkZWZhdWx0LCBlbmZvcmNlcyBzdHJpY3RlciB1c2Ugb2YgVGV4 dGlsZSwgYnV0IHN0aWxsIGFsbG93cyBmb3IgdGhlIGVzc2VudGlhbAoJCWJhc2ljcyBvZiBw YXJhZ3JhcGhzIGFuZCBibG9ja3F1b3Rlcy48L2xpPgo8L3VsPgoKPHA+PGEgaHJlZj0iI3N0 YXJ0IiB0aXRsZT0iSnVtcCBiYWNrIGNvbnRlbnRzIGxpc3QiPiYjODYxNzs8L2E+PC9wPgoK Cgo8aDIgaWQ9InVzYWdlLWV4YW1wbGVzIj5Vc2FnZSBFeGFtcGxlczwvaDI+Cgo8cD48Y29k ZT4mbHQ7dHhwOnVwbV90ZXh0aWxlJmd0O1RoZSB0ZXh0IF95b3VfIHdvdWxkIGxpa2UKCSJU ZXh0aWxlZCI6aHR0cDovL3RleHRpc20uY29tL3Rvb2xzL3RleHRpbGUvLiZsdDsvdHhwOnVw bV90ZXh0aWxlJmd0OzwvY29kZT48L3A+Cgo8cD48Y29kZT4mbHQ7dHhwOnVwbV90ZXh0aWxl X3Jlc3RyaWN0ZWQmZ3Q7RXZlbiB0aGUgb3V0cHV0IG9mIFRleHRwYXR0ZXJuIHRhZ3MsCglz dWNoIGFzICZsdDt0eHA6c2l0ZV9zbG9nYW4gLyZndDssIGNhbiBiZSBUZXh0aWxlZC4mbHQ7 L3R4cDp1cG1fdGV4dGlsZV9yZXN0cmljdGVkJmd0OzwvY29kZT48L3A+Cgo8cD48YSBocmVm PSIjc3RhcnQiIHRpdGxlPSJKdW1wIGJhY2sgY29udGVudHMgbGlzdCI+JiM4NjE3OzwvYT48 L3A+CgoKCjxoMiBpZD0iZm9vdG5vdGVzIj5Gb290bm90ZXM8L2gyPgoKPG9sPgoJPGxpIGlk PSJmbjEiPldpa2lwZWRpYTogPGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lr aS9VUklfc2NoZW1lIj5VUkkgc2NoZW1lPC9hPjwvbGk+Cgk8bGkgaWQ9ImZuMiI+QSA8YSBo cmVmPSJodHRwOi8vZ29vZ2xlLmNvbS9zZWFyY2g/cT1ub2ZvbGxvdyI+R29vZ2xlIHNlYXJj aCBxdWVyeSBmb3IgJiM4MjIwO25vZm9sbG93JiM4MjIxOzwvYT4gY2FuCgkJcHJvdmlkZSBh bGwgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBvbiB3aGF0IHRoaXMgaXMgdXNlZCBmb3Iu PC9saT4KPC9vbD4KCjxwPjxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250 ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4iO3M6ODoiaGVscF9yYXciO3M6NTgxNDoiPHN0 eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuLHByb2plY3Rpb24iPgo8IS0tCnZh ciB7CnBhZGRpbmc6IDAuMWVtOwpmb250LXN0eWxlOiBub3JtYWw7CmZvbnQtd2VpZ2h0OiBi b2xkOwpmb250LWZhbWlseTogbW9ub3NwYWNlOwpiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwp9 Cgp0YWJsZS51cG1fdGFnX2F0dHMgewptYXJnaW46IDAgMCAxNXB4IDA7CmJvcmRlcjogMXB4 IHNvbGlkICNlZWU7CmJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Cn0KCnRhYmxlLnVwbV90 YWdfYXR0cyBjYXB0aW9uIHsKcGFkZGluZzogMC41ZW07CmZvbnQtd2VpZ2h0OiBib2xkOwp0 ZXh0LWFsaWduOiBsZWZ0OwpiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOwp9Cgp0YWJsZS51cG1f dGFnX2F0dHMgdHIgewpib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTsKfQoKdGFibGUu dXBtX3RhZ19hdHRzIHRoLCB0YWJsZS51cG1fdGFnX2F0dHMgdGQgewptYXJnaW46IDA7CnBh ZGRpbmc6IDAuNWVtIDFlbTsKfQoKdGFibGUudXBtX3RhZ19hdHRzIHRoIHsKZm9udC13ZWln aHQ6IG5vcm1hbDsKdGV4dC1hbGlnbjogbGVmdDsKYmFja2dyb3VuZC1jb2xvcjogI2VlZTsK fQotLT4KPC9zdHlsZT4KCjxoMT51cG1fdGV4dGlsZTwvaDE+Cgo8b2wgaWQ9InN0YXJ0Ij4K CTxsaT48YSBocmVmPSIjaW50cm9kdWN0aW9uIj5JbnRyb2R1Y3Rpb248L2E+PC9saT4KCTxs aT48YSBocmVmPSIjdGFncyI+VGFnczwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiN1c2FnZS1l eGFtcGxlcyI+VXNhZ2UgRXhhbXBsZXM8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjZm9vdG5v dGVzIj5Gb290bm90ZXM8L2E+PC9saT4KPC9vbD4KCgoKPGgyIGlkPSJpbnRyb2R1Y3Rpb24i PkludHJvZHVjdGlvbjwvaDI+Cgo8cD5UaGlzIHBsdWdpbiB0YWcgYWxsb3dzIHlvdSB0byBw YXJzZSBhbnkgdGV4dCB3aXRoIFRleHRpbGUuIFNpbXBseSB3cmFwIGl0IGFyb3VuZAoJd2hh dGV2ZXIgdGV4dCB5b3UnZCBsaWtlIHRvIHBhcnNlLjwvcD4KCjxwPjxzdHJvbmc+UGxlYXNl IG5vdGU6PC9zdHJvbmc+IHRoaXMgdXNlcyB0aGUgc2FtZSBUZXh0aWxlIHZlcnNpb24gc3Vw cGxpZWQgd2l0aCB5b3VyCgljb3B5IG9mIFRleHRwYXR0ZXJuIGFuZCBJIG9ubHkgcHJvdmlk ZSBzdXBwb3J0IGZvciB0aGlzIHBsdWdpbiwgbm90IFRleHRpbGUKCWl0c2VsZi4gVGhlIGF0 dHJpYnV0ZXMgYmVsb3cgZG8gbm90IGFkZCBhbnkgbmV3L2ltcHJvdmVkIGZ1bmN0aW9uYWxp dHkgdG8gVGV4dGlsZSwKCW1lcmVseSB0aGUgYWJpbGl0eSB0byB1c2UgaW4tYnVpbHQgVGV4 dGlsZSBwYXJhbWV0ZXJzLjwvcD4KCjxwPjxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAg YmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4KCgoKPGgyIGlkPSJ0YWdzIj5U YWdzPC9oMj4KCjx0YWJsZSBjbGFzcz0idXBtX3RhZ19hdHRzIiBjZWxscGFkZGluZz0iMCIg Y2VsbHNwYWNpbmc9IjAiPgoKCTxjYXB0aW9uPnVwbV90ZXh0aWxlPC9jYXB0aW9uPgoKCTx0 cj4KCQk8dGg+TmFtZTwvdGg+CgkJPHRoPkRlc2NyaXB0aW9uPC90aD4KCQk8dGg+UmVxdWly ZWQ/PC90aD4KCQk8dGg+QXZhaWxhYmxlIFZhbHVlczwvdGg+CgkJPHRoPkRlZmF1bHQgVmFs dWU8L3RoPgoJPC90cj4KCgk8dHI+CgkJPHRkPmVuY29kZTwvdGQ+CgkJPHRkPkRyb3BwZWQu IERlcHJlY2F0ZWQgaW4gVGV4dGlsZSBhbmQgZG9lc24mIzgyMTc7dCBtYWtlIG11Y2ggc2Vu c2UuIERvIG5vdCB1c2UuPC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5saXRlPC90ZD4KCQk8 dGQ+V2hldGhlciB0byBleGNsdWRlIGFsbCBjb2RlIGFuZCBibG9jayB0YWdzLjwvdGQ+CgkJ PHRkPk5vPC90ZD4KCQk8dGQ+PHZhcj4wPC92YXI+IChubykgb3IgPHZhcj4xPC92YXI+ICh5 ZXMpPC90ZD4KCQk8dGQ+PHZhcj4wPC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5u b19pbWFnZTwvdGQ+CgkJPHRkPldoZXRoZXIgdG8gc3RyaXAgaW1hZ2VzLjwvdGQ+CgkJPHRk Pk5vPC90ZD4KCQk8dGQ+PHZhcj4wPC92YXI+IChsZWF2ZSBhbG9uZSkgb3IgPHZhcj4xPC92 YXI+IChzdHJpcCBpbWFnZXMpPC90ZD4KCQk8dGQ+PHZhcj4wPC92YXI+PC90ZD4KCTwvdHI+ CgoJPHRyPgoJCTx0ZD5wYXJzZV90YWdzPC90ZD4KCQk8dGQ+V2hldGhlciB0byBwYXJzZSBh bnkgY29udGFpbmVkIFRleHRwYXR0ZXJuIHRhZ3MuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0 ZD48dmFyPjA8L3Zhcj4gKG5vKSBvciA8dmFyPjE8L3Zhcj4gKHllcyk8L3RkPgoJCTx0ZD48 dmFyPjE8L3Zhcj48L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnJlbDwvdGQ+CgkJPHRkPihY KUhUTUwgPHZhcj5yZWw8L3Zhcj4gYXR0cmlidXRlIHRvIGFwcGx5IHRvIGxpbmtzLjwvdGQ+ CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMu b3JnL1RSL1JFQy1odG1sNDAvdHlwZXMuaHRtbCN0eXBlLWxpbmtzIj4oWClIVE1MIGxpbmsg cmVsYXRpb25zaGlwIHR5cGU8L2E+LjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJ PHRyPgoJCTx0ZD5zdHJpY3Q8L3RkPgoJCTx0ZD5XaGV0aGVyIHRvIHN0cmlwIGV4dHJhIHdo aXRlc3BhY2UuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPjA8L3Zhcj4gKHllcykg b3IgPHZhcj4xPC92YXI+IChsZWF2ZSBhbG9uZSk8L3RkPgoJCTx0ZD48dmFyPjA8L3Zhcj48 L3RkPgoJPC90cj4KPC90YWJsZT4KCjxwPjxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAg YmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4KCjx0YWJsZSBjbGFzcz0idXBt X3RhZ19hdHRzIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgoKCTxjYXB0aW9u PnVwbV90ZXh0aWxlX3Jlc3RyaWN0ZWQ8L2NhcHRpb24+CgoJPHRyPgoJCTx0aD5OYW1lPC90 aD4KCQk8dGg+RGVzY3JpcHRpb248L3RoPgoJCTx0aD5SZXF1aXJlZD88L3RoPgoJCTx0aD5B dmFpbGFibGUgVmFsdWVzPC90aD4KCQk8dGg+RGVmYXVsdCBWYWx1ZTwvdGg+Cgk8L3RyPgoK CTx0cj4KCQk8dGQ+bGl0ZTwvdGQ+CgkJPHRkPldoZXRoZXIgdG8gZXhjbHVkZSBhbGwgY29k ZSBhbmQgYWxsIGJsb2NrIHRhZ3MsIGV4Y2VwdCBmb3IgcGFyYWdyYXBocyBhbmQgYmxvY2tx dW90ZXMuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPjA8L3Zhcj4gKGxlYXZlIGFs b25lKSBvciA8dmFyPjE8L3Zhcj4gKHllcyk8L3RkPgoJCTx0ZD48dmFyPjE8L3Zhcj48L3Rk PgoJPC90cj4KCgk8dHI+CgkJPHRkPm5vX2ltYWdlPC90ZD4KCQk8dGQ+V2hldGhlciB0byBz dHJpcCBpbWFnZXMuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPjA8L3Zhcj4gKGxl YXZlIGFsb25lKSBvciA8dmFyPjE8L3Zhcj4gKHllcyk8L3RkPgoJCTx0ZD48dmFyPjE8L3Zh cj48L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnBhcnNlX3RhZ3M8L3RkPgoJCTx0ZD5XaGV0 aGVyIHRvIHBhcnNlIGFueSBjb250YWluZWQgVGV4dHBhdHRlcm4gdGFncy48L3RkPgoJCTx0 ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+MDwvdmFyPiAobm8pIG9yIDx2YXI+MTwvdmFyPiAoeWVz KTwvdGQ+CgkJPHRkPjx2YXI+MTwvdmFyPjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+cmVs PC90ZD4KCQk8dGQ+KFgpSFRNTCA8dmFyPnJlbDwvdmFyPiBhdHRyaWJ1dGUgdG8gYXBwbHkg dG8gbGlua3MuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgPGEgaHJlZj0i aHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC90eXBlcy5odG1sI3R5cGUtbGlua3Mi PihYKUhUTUwgbGluayByZWxhdGlvbnNoaXAgdHlwZTwvYT4uPC90ZD4KCQk8dGQ+PHZhcj5u b2ZvbGxvdzwvdmFyPjxzdXA+PGEgaHJlZj0iI2ZuMSI+MTwvYT48L3N1cD48L3RkPgoJPC90 cj4KCjwvdGFibGU+Cgo8cD48YSBocmVmPSIjc3RhcnQiIHRpdGxlPSJKdW1wIGJhY2sgY29u dGVudHMgbGlzdCI+JiM4NjE3OzwvYT48L3A+CgoKPGgzPk5vdGVzIE9uIFJlc3RyaWN0ZWQg VGV4dGlsZTwvaDM+Cgo8cD5WZXJzaW9uIDQuMC40IG9mIFRleHRwYXR0ZXJuIGludHJvZHVj ZWQgYSBuZXcgZnVuY3Rpb24gdG8gVGV4dGlsZSwgbmFtZWQKCVRleHRpbGVSZXN0cmljdGVk LiBUaGlzIG5ldyBmdW5jdGlvbiBkb2VzIHNldmVyYWwgdGhpbmdzOjwvcD4KCjx1bD4KCTxs aT5Fc2NhcGVzIGFsbCByYXcgKFgpSFRNTCBhbmQgYXR0ZW1wdHMgdG8gY2xlYW4gYWxsIHBv c3NpYmxlIFhTUyBhdHRlbXB0cy4gVGhpcyByZXF1aXJlcwoJCXN0cmlwcGluZyBhbGwgPHZh cj5zdHlsZTwvdmFyPiwgPHZhcj5jbGFzczwvdmFyPiwgPHZhcj5pZDwvdmFyPiwgPHZhcj5j b2xzcGFuPC92YXI+IGFuZAoJCTx2YXI+cm93c3BhbjwvdmFyPiAoWClUSE1MIGF0dHJpYnV0 ZXMuIFRoZSA8dmFyPmxhbmc8L3Zhcj4gYXR0cmlidXRlIGlzIHN0aWxsIGFsbG93ZWQuPC9s aT4KCgk8bGk+QXV0b21hdGljYWxseSBjb252ZXJ0cyBhbGwgcGxhaW4tdGV4dCB1cmxzIGlu dG8gbGlua3MuPC9saT4KCgk8bGk+T25seSA8dmFyPmh0dHA8L3Zhcj4sIDx2YXI+aHR0cHM8 L3Zhcj4sIDx2YXI+ZnRwPC92YXI+LCBhbmQgPHZhcj5tYWlsdG88L3Zhcj4gVVJJIHNjaGVt ZXMKCQlhcmUgcGVybWl0dGVkPHN1cD48YSBocmVmPSIjZm4xIj4xPC9hPjwvc3VwPi48L2xp PgoKCTxsaT5CeSBkZWZhdWx0LCBhcHBsaWVzIDx2YXI+bm9mb2xsb3c8L3Zhcj4gcmVsYXRp b25zaGlwCgkJYXR0cmlidXRlPHN1cD48YSBocmVmPSIjZm4yIj4yPC9hPjwvc3VwPiB0byBh bGwgbGlua3MuPC9saT4KCgk8bGk+QnkgZGVmYXVsdCwgZW5mb3JjZXMgc3RyaWN0ZXIgdXNl IG9mIFRleHRpbGUsIGJ1dCBzdGlsbCBhbGxvd3MgZm9yIHRoZSBlc3NlbnRpYWwKCQliYXNp Y3Mgb2YgcGFyYWdyYXBocyBhbmQgYmxvY2txdW90ZXMuPC9saT4KPC91bD4KCjxwPjxhIGhy ZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9h PjwvcD4KCgoKPGgyIGlkPSJ1c2FnZS1leGFtcGxlcyI+VXNhZ2UgRXhhbXBsZXM8L2gyPgoK PHA+PGNvZGU+Jmx0O3R4cDp1cG1fdGV4dGlsZSZndDtUaGUgdGV4dCBfeW91XyB3b3VsZCBs aWtlCgkiVGV4dGlsZWQiOmh0dHA6Ly90ZXh0aXNtLmNvbS90b29scy90ZXh0aWxlLy4mbHQ7 L3R4cDp1cG1fdGV4dGlsZSZndDs8L2NvZGU+PC9wPgoKPHA+PGNvZGU+Jmx0O3R4cDp1cG1f dGV4dGlsZV9yZXN0cmljdGVkJmd0O0V2ZW4gdGhlIG91dHB1dCBvZiBUZXh0cGF0dGVybiB0 YWdzLAoJc3VjaCBhcyAmbHQ7dHhwOnNpdGVfc2xvZ2FuIC8mZ3Q7LCBjYW4gYmUgVGV4dGls ZWQuJmx0Oy90eHA6dXBtX3RleHRpbGVfcmVzdHJpY3RlZCZndDs8L2NvZGU+PC9wPgoKPHA+ PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0iSnVtcCBiYWNrIGNvbnRlbnRzIGxpc3QiPiYjODYx Nzs8L2E+PC9wPgoKCgo8aDIgaWQ9ImZvb3Rub3RlcyI+Rm9vdG5vdGVzPC9oMj4KCjxvbD4K CTxsaSBpZD0iZm4xIj5XaWtpcGVkaWE6IDxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEu b3JnL3dpa2kvVVJJX3NjaGVtZSI+VVJJIHNjaGVtZTwvYT48L2xpPgoJPGxpIGlkPSJmbjIi PkEgPGEgaHJlZj0iaHR0cDovL2dvb2dsZS5jb20vc2VhcmNoP3E9bm9mb2xsb3ciPkdvb2ds ZSBzZWFyY2ggcXVlcnkgZm9yICYjODIyMDtub2ZvbGxvdyYjODIyMTs8L2E+IGNhbgoJCXBy b3ZpZGUgYWxsIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gd2hhdCB0aGlzIGlzIHVz ZWQgZm9yLjwvbGk+Cjwvb2w+Cgo8cD48YSBocmVmPSIjc3RhcnQiIHRpdGxlPSJKdW1wIGJh Y2sgY29udGVudHMgbGlzdCI+JiM4NjE3OzwvYT48L3A+IjtzOjE1OiJhbGxvd19odG1sX2hl bHAiO2k6MTtzOjM6Im1kNSI7czozMjoiOGQ3MWFiMjhiMmNmMjFlMjM1MzFjNWM0Y2JhYzkx ZjMiO30=