# zem_contact_reborn v4.0.3.20 # Form mailer for Textpattern # # License: GNU GPLv2 or later # # TXP Community # http://forum.textpattern.com/viewtopic.php?id=23728 # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTg6InplbV9jb250YWN0X3JlYm9ybiI7czo3OiJ2ZXJzaW9u IjtzOjg6IjQuMC4zLjIwIjtzOjY6ImF1dGhvciI7czoxMzoiVFhQIENvbW11bml0eSI7czox MDoiYXV0aG9yX3VyaSI7czo1MToiaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIzNzI4IjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6MzY4Mzg6 IiA8c3R5bGU+CiAgIGxpIGNvZGUge2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRk aW5nOiAwLjVlbSAxZW07IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAj Y2NjO30KICAgaDEsIGgyLCBoMywgaDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7 IGZvbnQtd2VpZ2h0OiBib2xkO30KICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07 fQogICBoMiwgaDMge21hcmdpbi10b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9 CiAgIGgyIHtmb250LXNpemU6IDJlbTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAg bGkgYSBjb2RlIHtmb250LXdlaWdodDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2Fybmlu ZyB7Y29sb3I6cmVkO30KIDwvc3R5bGU+CgoJPGgxIGlkPSJ0b3AiPlplbSBDb250YWN0IFJl Ym9ybjwvaDE+CgoJPHA+UGxlYXNlIHJlcG9ydHMgYnVncyBhbmQgcHJvYmxlbXMgd2l0aCB0 aGlzIHBsdWdpbiBpbiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3Zp ZXd0b3BpYy5waHA/aWQ9MjM3MjgiPnRoaXMgZm9ydW0gdGhyZWFkPC9hPi48L3A+CgoJPHAg Y2xhc3M9InJlcXVpcmVkIj5UaGlzIHBsdWdpbiByZXF1aXJlcyBhIHNlcGFyYXRlIGxhbmd1 YWdlIHBsdWdpbiBjYWxsZWQgPGNvZGU+emVtX2NvbnRhY3RfbGFuZzwvY29kZT4gdG8gYmUg aW5zdGFsbGVkIGFuZCBhY3RpdmF0ZWQgdG8gd29yayBwcm9wZXJseS48L3A+CgoJPGgyIGlk PSJjb250ZW50cyI+Q29udGVudHM8L2gyPgoKCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2ZlYXR1 cmVzIj5GZWF0dXJlczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjc3RhcnQiPkdldHRpbmcg c3RhcnRlZDwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2NvbnRhY3Rmb3JtIj5Db250YWN0 IGZvcm08L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3NlbmRhcnRpY2xlIj5TZW5kIGFydGlj bGU8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3RhZ3MiPlRhZ3M8L2E+ Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiN6YyI+IDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Qg LyZndDs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfdGV4dCI+IDxjb2Rl PiZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dCAvJmd0OzwvY29kZT4gPC9hPjwvbGk+CgkJPGxp PjxhIGhyZWY9IiN6Y19lbWFpbCI+IDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwg LyZndDs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfdGV4dGFyZWEiPiA8 Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3RleHRhcmVhIC8mZ3Q7PC9jb2RlPiA8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI3pjX3N1Ym1pdCI+IDxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3Rfc3VibWl0IC8mZ3Q7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX3Nl bGVjdCI+IDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0IC8mZ3Q7PC9jb2RlPiA8 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX2NoZWNrYm94Ij4gPGNvZGU+Jmx0O3R4cDp6 ZW1fY29udGFjdF9jaGVja2JveCAvJmd0OzwvY29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhy ZWY9IiN6Y19yYWRpbyI+IDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gLyZndDs8 L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfc2VjcmV0Ij4gPGNvZGU+Jmx0 O3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgLyZndDs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48 YSBocmVmPSIjemNfc2VydmVyX2luZm8iPiA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3Nl cnZlcmluZm8gLyZndDs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfc2Vu ZF9hcnRpY2xlIj4gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgLyZn dDs8L2NvZGU+IDwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjYWR2YW5j ZWQiPkFkdmFuY2VkIGV4YW1wbGVzPC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjc2hvd19l cnJvciI+U2VwYXJhdGUgaW5wdXQgYW5kIGVycm9yIGZvcm1zPC9hPjwvbGk+CgkJPGxpPjxh IGhyZWY9IiNzdWJqZWN0X2Zvcm0iPlVzZXIgc2VsZWN0YWJsZSBzdWJqZWN0IGZpZWxkPC9h PjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN0b19mb3JtIj5Vc2VyIHNlbGVjdGFibGUgcmVjaXBp ZW50LCB3aXRob3V0IHNob3dpbmcgZW1haWwgYWRkcmVzc2VzPC9hPjwvbGk+Cgk8L3VsPjwv bGk+CgkJPGxpPjxhIGhyZWY9IiNzdHlsaW5nIj5TdHlsaW5nPC9hPjwvbGk+CgkJPGxpPjxh IGhyZWY9IiNoaXN0b3J5Ij5IaXN0b3J5PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjcmVk aXRzIj5DcmVkaXRzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNhcGkiPlBsdWdpbiA8c3Bh biBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPiBhbmQgY2FsbGJhY2sgZXZlbnRzPC9hPjwvbGk+ Cgk8L3VsPgoKCTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxp PkFyYml0cmFyeSB0ZXh0IGZpZWxkcyBjYW4gYmUgc3BlY2lmaWVkLCB3aXRoIG1pbi9tYXgv cmVxdWlyZWQgc2V0dGluZ3MgZm9yIHZhbGlkYXRpb24uPC9saT4KCQk8bGk+RW1haWwgYWRk cmVzcyB2YWxpZGF0aW9uLCBpbmNsdWRpbmcgYSBjaGVjayBmb3IgYSB2YWxpZCBNWCByZWNv cmQgKFVuaXggb25seSkuPC9saT4KCQk8bGk+U2FmZSBlc2NhcGluZyBvZiBpbnB1dCBkYXRh LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJjYXBzIj5VVEY8L3NwYW4+LTggc2FmZS48L2xp PgoJCTxsaT5BY2Nlc3NpYmxlIGZvcm0gbGF5b3V0LCBpbmNsdWRpbmcgPGNvZGU+Jmx0O2xh YmVsJmd0OzwvY29kZT4sIDxjb2RlPiZsdDtsZWdlbmQmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+ Jmx0O2ZpZWxkc2V0Jmd0OzwvY29kZT4gdGFncy48L2xpPgoJCTxsaT5WYXJpb3VzIGNsYXNz ZXMgYW5kIGlkcyB0byBhbGxvdyBlYXN5IHN0eWxpbmcgb2YgYWxsIHBhcnRzIG9mIHRoZSBm b3JtLjwvbGk+CgkJPGxpPkEgc2VwYXJhdGUgbGFuZ3VhZ2UgcGx1Zy1pbiB0byBlbmFibGUg ZWFzeSBsb2NhbGlzYXRpb24uPC9saT4KCQk8bGk+U3BhbSBwcmV2ZW50aW9uIDxzcGFuIGNs YXNzPSJjYXBzIj5BUEk8L3NwYW4+ICh1c2VkIGJ5IFRyYW5xdWlsbG8mIzgyMTc7cyA8Y29k ZT5wYXBfY29udGFjdF9jbGVhbmVyPC9jb2RlPiBwbHVnaW4pLjwvbGk+Cgk8L3VsPgoKCTxw PjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9InN0YXJ0Ij5H ZXR0aW5nIHN0YXJ0ZWQ8L2gyPgoKCTxoMyBpZD0iY29udGFjdGZvcm0iPkNvbnRhY3QgZm9y bTwvaDM+CgoJPHA+VGhlIHNpbXBsZXN0IGZvcm0gaXMgc2hvd24gYmVsb3csIHdoaWNoIHBy b2R1Y2VzIGEgZGVmYXVsdCBmb3JtIHdpdGggTmFtZSwgRW1haWwgYW5kIE1lc3NhZ2UgZmll bGRzLiBFbWFpbCB3aWxsIGJlIGRlbGl2ZXJlZCB0byByZWNpcGllbnRAZXhhbXBsZS5jb20s IHdpdGggdGhlIHVzZXImIzgyMTc7cyBzdXBwbGllZCBlbWFpbCBhcyB0aGUgJiM4MjIwO0Zy b206JiM4MjIxOyBhZGRyZXNzLjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFj dCB0bz0mcXVvdDtyZWNpcGllbnRAZXhhbXBsZS5jb20mcXVvdDsgLyZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPlRvIHNwZWNpZnkgZmllbGRzIGV4cGxpY2l0bHksIHVzZSBzb21ldGhpbmcg bGlrZSB0aGlzOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVv dDtyZWNpcGllbnRAZXhhbXBsZS5jb20mcXVvdDsmZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFj dF9lbWFpbCAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0mcXVvdDtQ aG9uZSZxdW90OyBtaW49NyBtYXg9MTUvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfdGV4 dGFyZWEgbGFiZWw9JnF1b3Q7WW91ciBxdWVzdGlvbiZxdW90OyAvJmd0OwogICZsdDt0eHA6 emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVsPSZxdW90O1NlbmQmcXVvdDsgLyZndDsKJmx0Oy90 eHA6emVtX2NvbnRhY3QmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5BbHRlcm5hdGl2ZWx5LCBw bGFjZSB0aGUgZmllbGQgc3BlY2lmaWNhdGlvbnMgaW4gYSBUZXh0cGF0dGVybiBmb3JtLCBh bmQgY2FsbCBpdCBsaWtlIHRoaXM6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250 YWN0IHRvPSZxdW90O3JlY2lwaWVudEBleGFtcGxlLmNvbSZxdW90OyBmb3JtPSZxdW90O215 Y29udGFjdGZvcm0mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0 b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDMgaWQ9InNlbmRhcnRpY2xlIj5TZW5kIGFy dGljbGU8L2gzPgoKCTxwPldpdGhpbiB0aGUgY29udGV4dCBvZiBhbiBpbmRpdmlkdWFsIGFy dGljbGUsIHRoaXMgcGx1Z2luIGNhbiBiZSB1c2VkIHRvIHNlbmQgdGhlIGFydGljbGUgKG9y IGV4Y2VycHQsIGlmIGl0IGV4aXN0cykgdG8gYW4gZW1haWwgYWRkcmVzcyBzcGVjaWZpZWQg YnkgdGhlIHZpc2l0b3IuIFRoaXMgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIHRhZ3M6Cgk8dWw+ CgkJPGxpPjxjb2RlPnplbV9jb250YWN0PC9jb2RlPiwgdG8gY3JlYXRlIGZvcm0gdGhhdCBp cyBpbml0aWFsbHkgaGlkZGVuIGJ5IHNldHRpbmcgdGhlIDxjb2RlPnNlbmRfYXJ0aWNsZTwv Y29kZT4gYXR0cmlidXRlLjwvbGk+CgkJPGxpPjxjb2RlPnplbV9jb250YWN0X3NlbmRfYXJ0 aWNsZTwvY29kZT4sIHRvIGNyZWF0ZSBhICYjODIxNjtzZW5kIGFydGljbGUmIzgyMTc7IGxp bmsgd2hpY2ggcmV2ZWFscyB0aGUgYWZvcmVtZW50aW9uZWQgZm9ybSB3aGVuIGNsaWNrZWQu PC9saT4KCTwvdWw+PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IHNlbmRf YXJ0aWNsZT0mcXVvdDsxJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VuZF9h cnRpY2xlIC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5CeSBkZWZhdWx0IHRoZSBmb3JtIGNv bnRhaW5zIGZpZWxkcyBmb3IgeW91ciBuYW1lIGFuZCBlbWFpbCBhZGRyZXNzLCB0aGUgcmVj aXBpZW50JiM4MjE3O3MgZW1haWwgYWRkcmVzcyBhbmQgYSBwZXJzb25hbCBtZXNzYWdlLCBi dXQgc2ltaWxhciB0byBjb250YWN0IGZvcm1zIHlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIGZv cm0gbGF5b3V0LiBTb21lIHRoaW5ncyB5b3UgbmVlZCB0byBrbm93OgoJPHVsPgoJCTxsaT5T ZXQgdGhlIDxjb2RlPnNlbmRfYXJ0aWNsZTwvY29kZT4gYXR0cmlidXRlIHRvIDxjb2RlPjE8 L2NvZGU+IGluIHRoZSA8Y29kZT56ZW1fY29udGFjdDwvY29kZT4gdGFnLjwvbGk+CgkJPGxp PlVzZSBhIDxjb2RlPnplbV9jb250YWN0X2VtYWlsPC9jb2RlPiB0YWcgd2l0aCB0aGUgPGNv ZGU+c2VuZF9hcnRpY2xlPC9jb2RlPiBhdHRyaWJ1dGUgc2V0IHRvIDxjb2RlPjE8L2NvZGU+ LiBUaGlzIGZpZWxkIHdpbGwgYmUgdXNlZCBhcyB0aGUgcmVjaXBpZW50IGVtYWlsIGFkZHJl c3MuPC9saT4KCTwvdWw+PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IHRv PSZxdW90O3lvdUBleGFtcGxlLmNvbSZxdW90OyBzZW5kX2FydGljbGU9JnF1b3Q7MSZxdW90 OyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X2VtYWlsIGxhYmVsPSZxdW90O1JlY2lwaWVu dCBFbWFpbCZxdW90OyBzZW5kX2FydGljbGU9JnF1b3Q7MSZxdW90OyAvJmd0OwogICZsdDt0 eHA6emVtX2NvbnRhY3RfZW1haWwgbGFiZWw9JnF1b3Q7WW91ciBFbWFpbCZxdW90OyAvJmd0 OwogICZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVsPSZxdW90O1NlbmQgQXJ0aWNs ZSZxdW90OyAvJmd0OwombHQ7L3R4cDp6ZW1fY29udGFjdCZndDsKPC9jb2RlPgo8Y29kZT4m bHQ7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0idGFncyI+ VGFnczwvaDI+CgoJPHA+PGEgaHJlZj0iI3pjIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0 IC8mZ3Q7PC9jb2RlPjwvYT4gcHJvZHVjZXMgYSBmbGV4aWJsZSwgY3VzdG9taXNhYmxlIGVt YWlsIGNvbnRhY3QgZm9ybS4gSXQgaXMgaW50ZW5kZWQgZm9yIHVzZSBhcyBhbiBlbnF1aXJ5 IGZvcm0gZm9yIGNvbW1lcmNpYWwgYW5kIHByaXZhdGUgc2l0ZXMsIGFuZCBpbmNsdWRlcyBz ZXZlcmFsIGZlYXR1cmVzIHRvIGhlbHAgcmVkdWNlIGNvbW1vbiBwcm9ibGVtcyB3aXRoIHN1 Y2ggZm9ybXMgKGludmFsaWQgZW1haWwgYWRkcmVzc2VzLCBtaXNzaW5nIGluZm9ybWF0aW9u KS48L3A+CgoJPHA+PGEgaHJlZj0iI3pjX3NlbmRfYXJ0aWNsZSI+PGNvZGU+Jmx0O3R4cDp6 ZW1fY29udGFjdF9zZW5kX2FydGljbGUgLyZndDs8L2NvZGU+PC9hPiBjYW4gYmUgdXNlZCB0 byBjcmVhdGUgYSAmIzgyMjA7c2VuZCBhcnRpY2xlJiM4MjIxOyBsaW5rIHdpdGhpbiBhbiBh cnRpY2xlIGZvcm0sIGNvbm5lY3RpbmcgaXQgdG8gdGhlIGNvbnRhY3QgZm9ybS48L3A+CgoJ PHA+QWxsIG90aGVyIHRhZ3MgcHJvdmlkZWQgYnkgdGhpcyBwbHVnaW4gY2FuIG9ubHkgYmUg dXNlZCBpbnNpZGUgYSA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT4gJiM4 MjMwOyA8Y29kZT4mbHQ7L3R4cDp6ZW1fY29udGFjdCZndDs8L2NvZGU+IGNvbnRhaW5lciB0 YWcgb3IgaW4gYSBUZXh0cGF0dGVybiBmb3JtIHVzZWQgYXMgdGhlIDxjb2RlPmZvcm08L2Nv ZGU+IGF0dHJpYnV0ZSBpbiB0aGUgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCAvJmd0Ozwv Y29kZT4gdGFnLjwvcD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+ CgoJPGgzIGlkPSJ6YyI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCAvJmd0OzwvY29kZT48 L2gzPgoKCTxwPk1heSBiZSB1c2VkIGFzIGEgc2VsZi1jbG9zaW5nIG9yIGNvbnRhaW5lciB0 YWcuIFBsYWNlIHRoaXMgd2hlcmUgeW91IHdhbnQgdGhlIGlucHV0IGZvcm0gdG8gZ28uIFN0 YXR1cyBhbmQgZXJyb3IgbWVzc2FnZXMsIGlmIGFueSwgd2lsbCBiZSBkaXNwbGF5ZWQgYmVm b3JlIHRoZSBmb3JtLjwvcD4KCgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48 Y29kZT50bz0mcXVvdDtlbWFpbCBhZGRyZXNzJnF1b3Q7PC9jb2RlPiA8c3BhbiBjbGFzcz0i cmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpSZWNpcGllbnQgZW1haWwgYWRkcmVz cy48L2xpPgoJCTxsaT48Y29kZT50b19mb3JtPSZxdW90O2Zvcm0gbmFtZSZxdW90OzwvY29k ZT48YnIgLz4KVXNlIHNwZWNpZmllZCBmb3JtIChvdmVycmlkZXMgPHN0cm9uZz50bzwvc3Ry b25nPiBhdHRyaWJ1dGUpLjwvbGk+Cgk8L3VsPgoKCTx1bD4KCQk8bGk+PGNvZGU+ZnJvbT0m cXVvdDtlbWFpbCBhZGRyZXNzJnF1b3Q7PC9jb2RlPjxiciAvPgpFbWFpbCBhZGRyZXNzIHVz ZWQgaW4gdGhlICYjODIyMDtGcm9tOiYjODIyMTsgZmllbGQgd2hlbiBzZW5kaW5nIGVtYWls LiBEZWZhdWx0cyB0byB0aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcy4gSWYgc3Bl Y2lmaWVkLCB0aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcyB3aWxsIGJlIHBsYWNl ZCBpbiB0aGUgJiM4MjIwO1JlcGx5LVRvOiYjODIyMTsgZmllbGQgaW5zdGVhZC48L2xpPgoJ CTxsaT48Y29kZT5mcm9tX2Zvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxiciAv PgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8c3Ryb25nPmZyb208L3N0cm9uZz4g YXR0cmlidXRlKS48L2xpPgoJPC91bD4KCgk8dWw+CgkJPGxpPjxjb2RlPnN1YmplY3Q9JnF1 b3Q7c3ViamVjdCB0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpTdWJqZWN0IHVzZWQgd2hlbiBz ZW5kaW5nIGFuIGVtYWlsLiBEZWZhdWx0IGlzIHRoZSBzaXRlIG5hbWUuPC9saT4KCQk8bGk+ PGNvZGU+c3ViamVjdF9mb3JtPSZxdW90O2Zvcm0gbmFtZSZxdW90OzwvY29kZT48YnIgLz4K VXNlIHNwZWNpZmllZCBmb3JtIChvdmVycmlkZXMgPHN0cm9uZz5zdWJqZWN0PC9zdHJvbmc+ IGF0dHJpYnV0ZSkuPC9saT4KCTwvdWw+CgoJPHVsPgoJCTxsaT48Y29kZT50aGFua3M9JnF1 b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KTWVzc2FnZSBzaG93biBhZnRlciBzdWNjZXNz ZnVsbHkgc3VibWl0dGluZyBhIG1lc3NhZ2UuIERlZmF1bHQgaXMgPHN0cm9uZz5UaGFuayB5 b3UsIHlvdXIgbWVzc2FnZSBoYXMgYmVlbiBzZW50PC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxj b2RlPnRoYW5rc19mb3JtPSZxdW90O2Zvcm0gbmFtZSZxdW90OzwvY29kZT48YnIgLz4KVXNl IHNwZWNpZmllZCBmb3JtIChvdmVycmlkZXMgPHN0cm9uZz50aGFua3M8L3N0cm9uZz4gYXR0 cmlidXRlKS48L2xpPgoJCTxsaT48Y29kZT5yZWRpcmVjdD0mcXVvdDtVUkwmcXVvdDs8L2Nv ZGU+PGJyIC8+ClJlZGlyZWN0IHRvIHNwZWNpZmllZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiAob3ZlcnJpZGVzIDxzdHJvbmc+dGhhbmtzPC9zdHJvbmc+IGFuZCA8c3Ryb25n PnRoYW5rc19mb3JtPC9zdHJvbmc+IGF0dHJpYnV0ZXMpLiA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiBtdXN0IGJlIHJlbGF0aXZlIHRvIHRoZSBUZXh0cGF0dGVybiBTaXRlIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LiBFeGFtcGxlOiA8ZW0+cmVkaXJlY3Q9JiM4 MjIwO21vbmtleSYjODIyMTs8L2VtPiB3b3VsZCByZWRpcmVjdCB0byBodHRwOi8vZXhhbXBs ZS5jb20vbW9ua2V5LjwvbGk+Cgk8L3VsPgoKCTx1bD4KCQk8bGk+PGNvZGU+bGFiZWw9JnF1 b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KTGFiZWwgZm9yIHRoZSBjb250YWN0IGZvcm0u IElmIHNldCB0byBhbiBlbXB0eSBzdHJpbmcsIGRpc3BsYXkgb2YgdGhlIGZpZWxkc2V0IGFu ZCBsZWdlbmQgdGFncyB3aWxsIGJlIHN1cHByZXNzZWQuIERlZmF1bHQgaXMgPHN0cm9uZz5D b250YWN0PC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxjb2RlPnNlbmRfYXJ0aWNsZT0mcXVvdDti b29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRvIHVzZSB0aGlzIGZvcm0gdG8g PGEgaHJlZj0iI2FydGljbGUiPnNlbmQgYW4gYXJ0aWNsZTwvYT4uIEF2YWlsYWJsZSB2YWx1 ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubyku IERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuPC9saT4KCQk8bGk+PGNvZGU+ Y29weXNlbmRlcj0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRv IHNlbmQgYSBjb3B5IG9mIHRoZSBlbWFpbCB0byB0aGUgc2VuZGVyJiM4MjE3O3MgYWRkcmVz cy4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25n PjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48 L2xpPgoJPC91bD4KCgk8dWw+CgkJPGxpPjxjb2RlPmZvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1 b3Q7PC9jb2RlPjxiciAvPgpVc2Ugc3BlY2lmaWVkIGZvcm0sIGNvbnRhaW5pbmcgdGhlIGxh eW91dCBvZiB0aGUgY29udGFjdCBmb3JtIGZpZWxkcy48L2xpPgoJCTxsaT48Y29kZT5zaG93 X2lucHV0PSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CiBXaGV0aGVyIHRvIGRp c3BsYXkgdGhlIGZvcm0gaW5wdXQgZmllbGRzLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25n PjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlz IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgoJCTxsaT48Y29kZT5zaG93X2Vycm9y PSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CiBXaGV0aGVyIHRvIGRpc3BsYXkg ZXJyb3IgYW5kIHN0YXR1cyBtZXNzYWdlcy4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4x PC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8 c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KCTwvdWw+CgoJPGg0PkV4YW1wbGVzPC9o ND4KCgk8cD5TZWUgPGEgaHJlZj0iI2NvbnRhY3Rmb3JtIj5HZXR0aW5nIHN0YXJ0ZWQ8L2E+ IGFuZCA8YSBocmVmPSIjYWR2YW5jZWQiPkFkdmFuY2VkIGV4YW1wbGVzPC9hPi48L3A+CgoJ PHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfdGV4 dCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IC8mZ3Q7PC9jb2RlPjwvaDM+CgoJ PHA+Q3JlYXRlcyBhIHRleHQgaW5wdXQgZmllbGQgYW5kIGNvcnJlc3BvbmRpbmcgPGNvZGU+ Jmx0O2xhYmVsJmd0OzwvY29kZT4gdGFnLiBUaGUgaW5wdXQgdmFsdWUgd2lsbCBiZSBpbmNs dWRlZCBpbiB0aGUgZW1haWwsIHByZWNlZGVkIGJ5IHRoZSBsYWJlbC48L3A+CgoJPGg0PkF0 dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90 OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1 bHQgaXMgPHN0cm9uZz5UZXh0PC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxjb2RlPm5hbWU9JnF1 b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1dCB0YWcuPC9saT4KCQk8bGk+ PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1b3Q7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0 d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiZsdDti ciAvJmd0OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0mcXVvdDsmcXVvdDs8L2NvZGU+IHRv IHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9saT4K CQk8bGk+PGNvZGU+ZGVmYXVsdD0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRGVm YXVsdCB2YWx1ZSB3aGVuIG5vIGlucHV0IGlzIHByb3ZpZGVkLjwvbGk+CgkJPGxpPjxjb2Rl Pm1pbj0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpNaW5pbXVtIGlucHV0IGxl bmd0aCBpbiBjaGFyYWN0ZXJzLiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwvc3Ryb25nPi48L2xp PgoJCTxsaT48Y29kZT5tYXg9JnF1b3Q7aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4KTWF4 aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBpcyA8c3Ryb25nPjEw MDwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5zaXplPSZxdW90O2ludGVnZXImcXVvdDs8 L2NvZGU+PGJyIC8+ClNpemUgb2YgdGhlIGlucHV0IGZpZWxkIGFzIGRpc3BsYXllZCB0byB0 aGUgdXNlci48L2xpPgoJCTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7 PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgdGV4dCBmaWVsZCBtdXN0IGJlIGZpbGxlZCBv dXQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9u Zz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMp LjwvbGk+Cgk8L3VsPgoKCTxoND5FeGFtcGxlPC9oND4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6 ZW1fY29udGFjdF90ZXh0IGxhYmVsPSZxdW90O1lvdXIgbmFtZSZxdW90OyAvJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxo MyBpZD0iemNfZW1haWwiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyZndDs8 L2NvZGU+PC9oMz4KCgk8cD5JbnB1dCBmaWVsZCBmb3IgdXNlciYjODIxNztzIGVtYWlsIGFk ZHJlc3MuPC9wPgoKCTxwPlRoZSBlbnRlcmVkIGVtYWlsIGFkZHJlc3Mgd2lsbCBhdXRvbWF0 aWNhbGx5IGJlIHZhbGlkYXRlZCB0byBtYWtlIHN1cmUgaXQgaXMgb2YgdGhlIGZvcm0gJiM4 MjIwO2FiY0B4eHgueXl5Wy56enpdJiM4MjIxOy4gT24gbm9uLVdpbmRvd3Mgc2VydmVycywg YSB0ZXN0IHdpbGwgYmUgZG9uZSB0byB2ZXJpZnkgdGhhdCBhbiBBIG9yIE1YIHJlY29yZCBl eGlzdHMgZm9yIHRoZSBkb21haW4uIE5laXRoZXIgdGVzdCBwcmV2ZW50cyBzcGFtLCBidXQg aXQgZG9lcyBoZWxwIGRldGVjdGluZyBhY2NpZGVudGFsIHR5cGluZyBlcnJvcnMuPC9wPgoK CTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3Rl eHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRvIHRoZSB1c2Vy LiBEZWZhdWx0IGlzIDxzdHJvbmc+RW1haWw8L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+ bmFtZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNl ZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlucHV0IHRhZy48L2xp PgoJCTxsaT48Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJyIC8+CkJyZWFr IHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQuIERlZmF1bHQgaXMgPGNv ZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSZxdW90OyZxdW90Ozwv Y29kZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNhbWUgbGlu ZS48L2xpPgoJCTxsaT48Y29kZT5kZWZhdWx0PSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxi ciAvPgpEZWZhdWx0IHZhbHVlIHdoZW4gbm8gaW5wdXQgaXMgcHJvdmlkZWQuPC9saT4KCQk8 bGk+PGNvZGU+bWluPSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0g aW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJv bmc+LjwvbGk+CgkJPGxpPjxjb2RlPm1heD0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxi ciAvPgpNYXhpbXVtIGlucHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLiBEZWZhdWx0IGlzIDxz dHJvbmc+MTAwPC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxjb2RlPnNpemU9JnF1b3Q7aW50ZWdl ciZxdW90OzwvY29kZT48YnIgLz4KU2l6ZSBvZiB0aGUgaW5wdXQgZmllbGQgYXMgZGlzcGxh eWVkIHRvIHRoZSB1c2VyLjwvbGk+CgkJPGxpPjxjb2RlPnJlcXVpcmVkPSZxdW90O2Jvb2xl YW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyB0ZXh0IGZpZWxkIG11c3QgYmUg ZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMp LCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9u Zz4gKHllcykuPC9saT4KCQk8bGk+PGNvZGU+c2VuZF9hcnRpY2xlPSZxdW90O2Jvb2xlYW4m cXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyBmaWVsZCBpcyB1c2VkIGFzIHRoZSBy ZWNpcGllbnQgZW1haWwgYWRkcmVzcyB3aGVuIHVzaW5nIHRoZSBzZW5kX2FydGljbGUgZnVu Y3Rpb24uIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0 cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+IChu bykuPC9saT4KCTwvdWw+CgoJPGg0PkV4YW1wbGU8L2g0PgoKPHByZT48Y29kZT4mbHQ7dHhw OnplbV9jb250YWN0X2VtYWlsIGxhYmVsPSZxdW90O1lvdXIgZW1haWwgYWRkcmVzcyZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8 L2E+PC9wPgoKCTxoMyBpZD0iemNfdGV4dGFyZWEiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3RfdGV4dGFyZWEgLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5DcmVhdGVzIGEgdGV4dGFyZWEu PC9wPgoKCTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxjb2RlPmxhYmVsPSZx dW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRvIHRo ZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJvbmc+TWVzc2FnZTwvc3Ryb25nPi48L2xpPgoJCTxs aT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1l LCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaW5wdXQg dGFnLjwvbGk+CgkJPGxpPjxjb2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIg Lz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZC4gRGVmYXVs dCBpcyA8Y29kZT4mbHQ7YnIgLyZndDs8L2NvZGU+LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7 JnF1b3Q7PC9jb2RlPiB0byBwdXQgdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUg c2FtZSBsaW5lLjwvbGk+CgkJPGxpPjxjb2RlPmRlZmF1bHQ9JnF1b3Q7dmFsdWUmcXVvdDs8 L2NvZGU+PGJyIC8+CkRlZmF1bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48 L2xpPgoJCTxsaT48Y29kZT5jb2xzPSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+ CkNvbHVtbiB3aWR0aC4gRGVmYXVsdCBpcyA8c3Ryb25nPjU4PC9zdHJvbmc+LjwvbGk+CgkJ PGxpPjxjb2RlPnJvd3M9JnF1b3Q7aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4KUm93IGhl aWdodC4gRGVmYXVsdCBpcyA8c3Ryb25nPjg8L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+ bWluPSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0gaW5wdXQgbGVu Z3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+LjwvbGk+ CgkJPGxpPjxjb2RlPm1heD0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpNYXhp bXVtIGlucHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTAw MDA8L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZx dW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIHRleHQgZmllbGQgbXVzdCBiZSBmaWxs ZWQgb3V0LiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxz dHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAo eWVzKS48L2xpPgoJPC91bD4KCgk8aDQ+RXhhbXBsZTwvaDQ+CgoJPHA+VGV4dGFyZWEgdGhh dCBpcyA0MCBjaGFycyB3aWRlLCAxMCBsaW5lcyBoaWdoLCB3aXRoIGEgY3VzdG9taXplZCBs YWJlbDo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgY29s cz0mcXVvdDs0MCZxdW90OyByb3dzPSZxdW90OzEwJnF1b3Q7IGxhYmVsPSZxdW90O1lvdXIg cXVlc3Rpb24mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0b3Ai PkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDMgaWQ9InpjX3N1Ym1pdCI+PGNvZGU+Jmx0O3R4 cDp6ZW1fY29udGFjdF9zdWJtaXQgLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5DcmVhdGVzIGEg c3VibWl0IGJ1dHRvbi48YnIgLz4KV2hlbiB1c2VkIGFzIGEgY29udGFpbmVyIHRhZywgYSAm IzgyMjA7YnV0dG9uJiM4MjIxOyBlbGVtZW50IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFu ICYjODIyMDtpbnB1dCYjODIyMTsgZWxlbWVudC48L3A+CgoJPGg0PkF0dHJpYnV0ZXM6PC9o ND4KCgk8dWw+CgkJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJy IC8+ClRleHQgc2hvd24gb24gdGhlIHN1Ym1pdCBidXR0b24uIERlZmF1bHQgaXMgJiM4MjIw O1NlbmQmIzgyMjE7LjwvbGk+CgkJPGxpPjxjb2RlPmJ1dHRvbj0mcXVvdDtib29sZWFuJnF1 b3Q7PC9jb2RlPjxiciAvPgo8ZW0+RGVwcmVjYXRlZC4gVXNlIGEgY29udGFpbmVyIHRhZyBp ZiB5b3Ugd2FudCBhIGJ1dHRvbiBlbGVtZW50LjwvZW0+PC9saT4KCTwvdWw+CgoJPGg0PkV4 YW1wbGVzPC9oND4KCgk8cD5TdGFuZGFyZCBzdWJtaXQgYnV0dG9uOjwvcD4KCjxwcmU+PGNv ZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxw PlN1Ym1pdCBidXR0b24gd2l0aCB5b3VyIG93biB0ZXh0OjwvcD4KCjxwcmU+PGNvZGU+Jmx0 O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgbGFiZWw9JnF1b3Q7U2VuZCZxdW90OyAvJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+VXNhZ2UgYXMgYSBjb250YWluZXIgdGFnLCB3aGljaCBhbGxv d3MgeW91IHRvIHVzZSBUZXh0cGF0dGVybiB0YWdzIGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gbWFya3VwIGluIHRoZSBzdWJtaXQgYnV0dG9uOjwvcD4KCjxwcmU+PGNv ZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQmZ3Q7Jmx0O3N0cm9uZyZndDtTZW5kJmx0 Oy9zdHJvbmcmZ3Q7IHF1ZXN0aW9uJmx0Oy90eHA6emVtX2NvbnRhY3Rfc3VibWl0Jmd0Owo8 L2NvZGU+PC9wcmU+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0Jmd0 OyZsdDtpbWcgc3JjPSZxdW90O3BhdGgvdG8vaW1nLnBuZyZxdW90OyBhbHQ9JnF1b3Q7c3Vi bWl0JnF1b3Q7Jmd0OyZsdDsvdHhwOnplbV9jb250YWN0X3N1Ym1pdCZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDMgaWQ9 InpjX3NlbGVjdCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgLyZndDs8L2Nv ZGU+PC9oMz4KCgk8cD5DcmVhdGVzIGEgZHJvcC1kb3duIHNlbGVjdGlvbiBsaXN0LjwvcD4K Cgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5saXN0PSZxdW90O2Nv bW1hLXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+IDxzcGFuIGNsYXNzPSJyZXF1aXJl ZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+Ckxpc3Qgb2YgaXRlbXMgdG8gc2hvdyBpbiB0aGUg c2VsZWN0IGJveC48L2xpPgoJCTxsaT48Y29kZT5zZWxlY3RlZD0mcXVvdDt2YWx1ZSZxdW90 OzwvY29kZT48YnIgLz4KTGlzdCBpdGVtIHRoYXQgaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC48 L2xpPgoJCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpU ZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8c3Ryb25nPk9w dGlvbjwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7 PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+SFRNTDwvc3Bhbj4gaW5wdXQgdGFnLjwvbGk+CgkJPGxpPjxjb2RlPmJyZWFrPSZx dW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxhYmVs IGFuZCBpbnB1dCBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mbHQ7YnIgLyZndDs8L2NvZGU+ LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBwdXQgdGhlIGxhYmVs IGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+CgkJPGxpPjxjb2RlPmRl bGltaXRlcj0mcXVvdDtjaGFyYWN0ZXImcXVvdDs8L2NvZGU+PGJyIC8+ClNlcGFyYXRvciBj aGFyYWN0ZXIgdXNlZCBpbiB0aGUgPHN0cm9uZz5saXN0PC9zdHJvbmc+IGF0dHJpYnV0ZS4g RGVmYXVsdCBpcyA8c3Ryb25nPiw8L3N0cm9uZz4gKGNvbW1hKS48L2xpPgoJCTxsaT48Y29k ZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIGEg bm9uLWVtcHR5IG9wdGlvbiBtdXN0IGJlIHNlbGVjdGVkLiBBdmFpbGFibGUgdmFsdWVzOiA8 c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZh dWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgoJPC91bD4KCgk8aDQ+RXhh bXBsZXM8L2g0PgoKCTxwPlNlbGVjdCBsaXN0IGxhYmVsZWQgJiM4MjE2O0RlcGFydG1lbnQm IzgyMTc7LCBjb250YWluaW5nIHRocmVlIG9wdGlvbnMgYW5kIGEgYmxhbmsgb3B0aW9uIChk dWUgdG8gdGhlIGNvbW1hIGJlZm9yZSAmIzgyMTY7TWFya2V0aW5nJiM4MjE3Oykgc2hvd24g YnkgZGVmYXVsdCwgZm9yY2luZyB0aGUgdXNlciB0byBtYWtlIGEgc2VsZWN0aW9uLjwvcD4K CjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGFiZWw9JnF1b3Q7RGVw YXJ0bWVudCZxdW90OyBsaXN0PSZxdW90OyxNYXJrZXRpbmcsU2FsZXMsU3VwcG9ydCZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+U2VsZWN0IGxpc3QgY29udGFpbmluZyB0aHJl ZSBvcHRpb25zIHdpdGggJiM4MjE2O01hcmtldGluZyYjODIxNzsgc2VsZWN0ZWQgYnkgZGVm YXVsdC48L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0IGxpc3Q9 JnF1b3Q7TWFya2V0aW5nLFNhbGVzLFN1cHBvcnQmcXVvdDsgc2VsZWN0ZWQ9JnF1b3Q7TWFy a2V0aW5nJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9wIj5C YWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJ6Y19jaGVja2JveCI+PGNvZGU+Jmx0O3R4 cDp6ZW1fY29udGFjdF9jaGVja2JveCAvJmd0OzwvY29kZT48L2gzPgoKCTxwPkNyZWF0ZXMg YSBjaGVjayBib3guPC9wPgoKCTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxj b2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQgbGFiZWwgZGlz cGxheWVkIHRvIHRoZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJvbmc+Q2hlY2tib3g8L3N0cm9u Zz4uPC9saT4KCQk8bGk+PGNvZGU+bmFtZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIg Lz4KRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJCTxsaT48Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVv dDs8L2NvZGU+PGJyIC8+CkJyZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQg ZmllbGQuIERlZmF1bHQgaXMgPGNvZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2Rl PmJyZWFrPSZxdW90OyZxdW90OzwvY29kZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQg ZmllbGQgb24gdGhlIHNhbWUgbGluZS48L2xpPgoJCTxsaT48Y29kZT5jaGVja2VkPSZxdW90 O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyBib3ggaXMgY2hlY2tl ZCB3aGVuIGZpcnN0IGRpc3BsYXllZC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9z dHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyAmIzgy MjA7MCYjODIyMTsgKG5vKS48L2xpPgoJCTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29s ZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgY2hlY2tib3ggbXVzdCBiZSBm aWxsZWQgb3V0LiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyks IDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25n PiAoeWVzKS48L2xpPgoJPC91bD4KCgk8aDQ+RXhhbXBsZXM8L2g0PgoKCTxwPlNocmluay13 cmFwIGFncmVlbWVudCB3aGljaCBtdXN0IGJlIGNoZWNrZWQgYnkgdGhlIHVzZXIgYmVmb3Jl IHRoZSBlbWFpbCB3aWxsIGJlIHNlbnQuPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9j b250YWN0X2NoZWNrYm94IGxhYmVsPSZxdW90O0kgYWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+T3B0aW9uYWwgY2hlY2ti b3hlczo8L3A+Cgo8cHJlPjxjb2RlPlNlbGVjdCB3aGljaCBvcGVyYXRpbmcgc3lzdGVtcyBh cmUgeW91IGZhbWlsaWFyIHdpdGg6Jmx0O2JyIC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRhY3Rf Y2hlY2tib3ggbGFiZWw9JnF1b3Q7V2luZG93cyZxdW90OyByZXF1aXJlZD0mcXVvdDswJnF1 b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggbGFi ZWw9JnF1b3Q7VW5peC9MaW51eC9CU0QmcXVvdDsgcmVxdWlyZWQ9JnF1b3Q7MCZxdW90OyAv Jmd0OyZsdDticiAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSZx dW90O01hY09TJnF1b3Q7IHJlcXVpcmVkPSZxdW90OzAmcXVvdDsgLyZndDsmbHQ7YnIgLyZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwv cD4KCgk8aDMgaWQ9InpjX3JhZGlvIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3JhZGlv IC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+Q3JlYXRlcyBhIHJhZGlvIGJ1dHRvbi48L3A+CgoJ PGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+Z3JvdXA9JnF1b3Q7dGV4 dCZxdW90OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48 YnIgLz4KVGV4dCB1c2VkIGluIHRoZSBlbWFpbCB0byBkZXNjcmliZSB0aGlzIGdyb3VwIG9m IHJhZGlvIGJ1dHRvbnMuIFRoaXMgYXR0cmlidXRlIHZhbHVlIGlzIHJlbWVtYmVyZWQgZm9y IHN1YnNlcXVlbnQgcmFkaW8gYnV0dG9ucywgc28geW91IG9ubHkgaGF2ZSB0byBzZXQgaXQg b24gdGhlIGZpcnN0IHJhZGlvIGJ1dHRvbiBvZiBhIGdyb3VwLiBEZWZhdWx0IGlzIDxzdHJv bmc+UmFkaW88L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZx dW90OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIg Lz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgYXMgcmFkaW8gYnV0dG9uIG9w dGlvbi48L2xpPgoJCTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxi ciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gaW5wdXQgdGFnLiBUaGlzIGF0dHJpYnV0ZSB2YWx1ZSBpcyByZW1lbWJlcmVk IGZvciBzdWJzZXF1ZW50IHJhZGlvIGJ1dHRvbnMsIHNvIHlvdSBvbmx5IGhhdmUgdG8gc2V0 IGl0IG9uIHRoZSBmaXJzdCByYWRpbyBidXR0b24gb2YgYSBncm91cC4gSWYgaXQgaGFzbiYj ODIxNzt0IGJlZW4gc2V0IGF0IGFsbCwgaXQgd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlIDxj b2RlPmdyb3VwPC9jb2RlPiBhdHRyaWJ1dGUuPC9saT4KCQk8bGk+PGNvZGU+YnJlYWs9JnF1 b3Q7dGFnJnF1b3Q7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwg YW5kIGZpZWxkLiBEZWZhdWx0IGlzIGEgc3BhY2UuPC9saT4KCQk8bGk+PGNvZGU+Y2hlY2tl ZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgcmFkaW8g b3B0aW9uIGlzIGNoZWNrZWQgd2hlbiB0aGUgZm9ybSBpcyBmaXJzdCBkaXNwbGF5ZWQuIEF2 YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9z dHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuPC9saT4K CTwvdWw+CgoJPGg0PkV4YW1wbGU8L2g0PgoKCTxwPkdyb3VwIG11dHVhbGx5IGV4Y2x1c2l2 ZSByYWRpbyBidXR0b25zIGJ5IHNldHRpbmcgdGhlIDxjb2RlPmdyb3VwPC9jb2RlPiBhdHRy aWJ1dGUgb24gdGhlIGZpcnN0IHJhZGlvIGJ1dHRvbiBpbiBhIGdyb3VwLiBPbmx5IHRoZSBj aG9zZW4gcmFkaW8gYnV0dG9uIGZyb20gZWFjaCBncm91cCB3aWxsIGJlIHVzZWQgaW4gdGhl IGVtYWlsIG1lc3NhZ2UuIFRoZSBtZXNzYWdlIHdpbGwgYmUgb3V0cHV0IGluIHRoZSBmb3Jt IDxzdHJvbmc+Z3JvdXA6IGxhYmVsPC9zdHJvbmc+IGZvciBlYWNoIG9mIHRoZSBjaG9zZW4g cmFkaW8gYnV0dG9ucy48L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfcmFk aW8gbGFiZWw9JnF1b3Q7TWVkaXVtJnF1b3Q7IGdyb3VwPSZxdW90O0kgbGlrZSBteSBzdGVh ayZxdW90OyAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90O1Jh cmUmcXVvdDsgLyZndDsKJmx0O3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0mcXVvdDtX ZWxsIGRvbmUmcXVvdDsgLyZndDsKPC9jb2RlPgo8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0 X3JhZGlvIGxhYmVsPSZxdW90O1dpbmUmcXVvdDsgZ3JvdXA9JnF1b3Q7V2l0aCBhIGdsYXNz IG9mJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9JnF1b3Q7 QmVlciZxdW90OyAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90 O1dhdGVyJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9wIj5C YWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJ6Y19zZWNyZXQiPjxjb2RlPiZsdDt0eHA6 emVtX2NvbnRhY3Rfc2VjcmV0IC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+VGhpcyB0YWcgaGFz IG5vIGVmZmVjdCBvbiB0aGUgZm9ybSBvciA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bh bj4gb3V0cHV0LCBidXQgd2lsbCBpbmNsdWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4g dGhlIGVtYWlsLiBJdCBjYW4gYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyB0YWcgb3IgYXMg YSBjb250YWluZXIgdGFnLjwvcD4KCgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxs aT48Y29kZT5uYW1lPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZWQgaW50ZXJu YWxseS4gU2V0IHRoaXMgb25seSBpZiB5b3UgaGF2ZSBtdWx0aXBsZSAmIzgyMTY7c2VjcmV0 JiM4MjE3OyBmb3JtIGVsZW1lbnRzIHdpdGggaWRlbnRpY2FsIGxhYmVscy48L2xpPgoJCTxs aT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpVc2VkIHRvIGlk ZW50aWZ5IHRoZSBmaWVsZCBpbiB0aGUgZW1haWwuIERlZmF1bHQgaXMgPHN0cm9uZz5TZWNy ZXQ8L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+dmFsdWU9JnF1b3Q7dmFsdWUmcXVvdDs8 L2NvZGU+PGJyIC8+ClNvbWUgdGV4dCB5b3Ugd2FudCB0byBhZGQgdG8gdGhlIGVtYWlsLjwv bGk+Cgk8L3VsPgoKCTxoND5FeGFtcGxlczwvaDQ+CgoJPHA+VXNhZ2UgYXMgYSBzZWxmLWNs b3NpbmcgdGFnPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlY3JldCB2 YWx1ZT0mcXVvdDtUaGUgYW5zd2VyIGlzIDQyJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5Vc2FnZSBhcyBhIGNvbnRhaW5lciB0YWc8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6 emVtX2NvbnRhY3Rfc2VjcmV0IGxhYmVsPSZxdW90O0RlYXIgdXNlciZxdW90OyZndDsKICBQ bGVhc2UgcHJvdmlkZSBhIHVzZWZ1bCBleGFtcGxlIGZvciB0aGlzIHRhZyEKJmx0Oy90eHA6 emVtX2NvbnRhY3Rfc2VjcmV0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3Rv cCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfc2VydmVyaW5mbyI+PGNvZGU+ Jmx0O3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+ VGhpcyB0YWcgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9ybSBvciA8c3BhbiBjbGFzcz0iY2Fw cyI+SFRNTDwvc3Bhbj4gb3V0cHV0LCBidXQgd2lsbCBpbmNsdWRlIGFkZGl0aW9uYWwgaW5m b3JtYXRpb24gaW4gdGhlIGVtYWlsIGJhc2VkIG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ UEhQPC9zcGFuPiAkX1NFUlZFUiB2YXJpYWJsZS48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0 PgoKCTx1bD4KCQk8bGk+PGNvZGU+bmFtZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT4gPHNw YW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4KTmFtZSBvZiB0aGUg c2VydmVyIHZhcmlhYmxlLiBTZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9waHAubmV0L21hbnVh bC9yZXNlcnZlZC52YXJpYWJsZXMucGhwI3Jlc2VydmVkLnZhcmlhYmxlcy5zZXJ2ZXIiPjxz cGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IG1hbnVhbDwvYT4gZm9yIGEgZnVsbCBsaXN0 LjwvbGk+CgkJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ ClVzZWQgdG8gaWRlbnRpZnkgdGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gRGVmYXVsdHMgdG8g dGhlIHZhbHVlIG9mIHRoZSA8c3Ryb25nPm5hbWU8L3N0cm9uZz4gYXR0cmlidXRlLjwvbGk+ Cgk8L3VsPgoKCTxoND5FeGFtcGxlczwvaDQ+CgoJPHA+QWRkIHRoZSBJUCBhZGRyZXNzIG9m IHRoZSB2aXNpdG9yIHRvIHRoZSBlbWFpbDwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1f Y29udGFjdF9zZXJ2ZXJpbmZvIG5hbWU9JnF1b3Q7UkVNT1RFX0FERFImcXVvdDsgbGFiZWw9 JnF1b3Q7SVAgbnVtYmVyJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5BZGQgdGhl IG5hbWUgb2YgdGhlIHZpc2l0b3ImIzgyMTc7cyBicm93c2VyIHRvIHRoZSBlbWFpbDwvcD4K CjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIG5hbWU9JnF1b3Q7 SFRUUF9VU0VSX0FHRU5UJnF1b3Q7IGxhYmVsPSZxdW90O0Jyb3dzZXImcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4K Cgk8aDMgaWQ9InpjX3NlbmRfYXJ0aWNsZSI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9z ZW5kX2FydGljbGUgLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5Vc2UgdGhpcyB0YWcgaW4geW91 ciBpbmRpdmlkdWFsIGFydGljbGUgZm9ybSwgd2hlcmUgeW91IHdhbnQgdGhlICYjODIyMDtz ZW5kIGFydGljbGUmIzgyMjE7IGxpbmsgdG8gYmUgZGlzcGxheWVkLjwvcD4KCgk8aDQ+QXR0 cmlidXRlczo8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+bGlua3RleHQ9JnF1b3Q7dGV4dCZx dW90OzwvY29kZT48YnIgLz4KVGV4dCBkaXNwbGF5ZWQgZm9yIHRoZSBsaW5rLiBEZWZhdWx0 IGlzIDxzdHJvbmc+c2VuZCBhcnRpY2xlPC9zdHJvbmc+PC9saT4KCTwvdWw+CgoJPGg0PkV4 YW1wbGVzOjwvaDQ+CgoJPHA+U2VlIDxhIGhyZWY9IiNzZW5kYXJ0aWNsZSI+R2V0dGluZyBz dGFydGVkPC9hPjwvcD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+ CgoJPGgyIGlkPSJhZHZhbmNlZCI+QWR2YW5jZWQgZXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0i c2hvd19lcnJvciI+U2VwYXJhdGUgaW5wdXQgYW5kIGVycm9yIGZvcm1zPC9oMz4KCgk8cD5V c2luZyA8Y29kZT5zaG93X2lucHV0PC9jb2RlPiBhbmQgPGNvZGU+c2hvd19lcnJvcjwvY29k ZT4gdG8gZGlzcGxheSB0aGUgZm9ybSBhbmQgZXJyb3IgbWVzc2FnZXMgb24gZGlmZmVyZW50 IHBhcnRzIG9mIGEgcGFnZS4gQSBmb3JtIGlzIHVzZWQgdG8gbWFrZSBzdXJlIHRoZSBjb250 ZW50cyBvZiBib3RoIGZvcm1zIGFyZSBpZGVudGljYWwsIG90aGVyd2lzZSB0aGV5IHdvdWxk IGJlIHNlZW4gYXMgdHdvIGluZGVwZW5kZW50IGZvcm1zLiBUaGUgZmlyc3QgZm9ybSBvbmx5 IHNob3dzIGVycm9ycyAobm8gaW5wdXQpLCB0aGUgc2Vjb25kIGZvcm0gb25seSBzaG93cyB0 aGUgaW5wdXQgZmllbGRzIChubyBlcnJvcnMpLjwvcD4KCjxwcmU+PGNvZGU+Jmx0O2RpdiBp ZD0mcXVvdDtlcnJvciZxdW90OyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0IGZvcm09JnF1 b3Q7Y29udGFjdF9mb3JtJnF1b3Q7IHNob3dfaW5wdXQ9JnF1b3Q7MCZxdW90OyAvJmd0Owom bHQ7L2RpdiZndDsKPC9jb2RlPgo8Y29kZT4mbHQ7ZGl2IGlkPSZxdW90O2lucHV0Zm9ybSZx dW90OyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0IGZvcm09JnF1b3Q7Y29udGFjdF9mb3Jt JnF1b3Q7IHNob3dfZXJyb3I9JnF1b3Q7MCZxdW90OyAvJmd0OwombHQ7L2RpdiZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPkFwYXJ0IGZyb20gdGhlIDxjb2RlPnNob3dfZXJyb3I8L2NvZGU+ IGFuZCA8Y29kZT5zaG93X2lucHV0PC9jb2RlPiBhdHRyaWJ1dGVzLCBhbGwgb3RoZXIgYXR0 cmlidXRlcyBtdXN0IGJlIDEwMCUgaWRlbnRpY2FsIGluIGJvdGggZm9ybXMsIG90aGVyd2lz ZSB0aGV5IHdvdWxkIGJlIHNlZW4gYXMgdHdvIHVucmVsYXRlZCBmb3Jtcy48L3A+CgoJPHA+ PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0ic3ViamVjdF9m b3JtIj5Vc2VyIHNlbGVjdGFibGUgc3ViamVjdCBmaWVsZDwvaDM+CgoJPHA+U3BlY2lmeSB0 aGUgPGNvZGU+c3ViamVjdF9mb3JtPC9jb2RlPiBhdHRyaWJ1dGUgYW5kIGNyZWF0ZSBhIGZv cm0gd2hpY2ggaW5jbHVkZXMgYSA8Y29kZT56ZW1fY29udGFjdF9zZWxlY3Q8L2NvZGU+IHRh Zzo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QgdG89JnF1b3Q7eW91QGV4 YW1wbGUuY29tJnF1b3Q7IHN1YmplY3RfZm9ybT0mcXVvdDtteV9zdWJqZWN0X2Zvcm0mcXVv dDsgLyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X3RleHQgbGFiZWw9JnF1b3Q7TmFtZSZx dW90OyAvJmd0OyZsdDticiAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyZn dDsmbHQ7YnIgLyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X3NlbGVjdCBsYWJlbD0mcXVv dDtDaG9vc2UgU3ViamVjdCZxdW90OyBsaXN0PSZxdW90OyxRdWVzdGlvbixGZWVkYmFjayZx dW90OyAvJmd0OyZsdDticiAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEg bGFiZWw9JnF1b3Q7TWVzc2FnZSZxdW90OyAvJmd0OyZsdDticiAvJmd0OwombHQ7L3R4cDp6 ZW1fY29udGFjdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNyZWF0ZSBhIFRleHRwYXR0ZXJu IGZvcm0gY2FsbGVkICYjODIyMDtteV9zdWJqZWN0X2Zvcm0mIzgyMjE7LCBjb250YWluaW5n OjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6ZW1fY29udGFj dF9mb3JtOwogIGVjaG8gJHplbV9jb250YWN0X2Zvcm1bJiMzOTtDaG9vc2UgU3ViamVjdCYj Mzk7XTsKJmx0Oy90eHA6cGhwJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIDxjb2RlPmxh YmVsPC9jb2RlPiB1c2VkIGluIHRoZSA8Y29kZT56ZW1fY29udGFjdF9zZWxlY3Q8L2NvZGU+ IHRhZyBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgY29ycmVzcG9uZGluZyB2YXJpYWJsZSBp biB0aGUgPGNvZGU+c3ViamVjdF9mb3JtPC9jb2RlPi4gSGVyZSB3ZSB1c2VkIDxjb2RlPkNo b29zZSBzdWJqZWN0PC9jb2RlPi48L3A+CgoJPHA+SWYgeW91JiM4MjE3O2QgcHJlZmVyIHRv IGFkZCBhIGNvbW1vbiBwcmVmaXggZm9yIGFsbCBzdWJqZWN0cywgdXNlIGEgPGNvZGU+c3Vi amVjdF9mb3JtPC9jb2RlPiBjb250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpw aHAmZ3Q7CiAgZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtOwogIGVjaG8gJiMzOTtNeSBjb21t b24gcHJlZml4IC0gJiMzOTsgLiAkemVtX2NvbnRhY3RfZm9ybVsmIzM5O0Nob29zZSBTdWJq ZWN0JiMzOTtdOwombHQ7L3R4cDpwaHAmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVm PSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJ0b19mb3JtIj5Vc2VyIHNl bGVjdGFibGUgcmVjaXBpZW50LCB3aXRob3V0IHNob3dpbmcgZW1haWwgYWRkcmVzczwvaDM+ CgoJPHA+U3BlY2lmeSB0aGUgPGNvZGU+dG9fZm9ybTwvY29kZT4gYXR0cmlidXRlIGFuZCBj cmVhdGUgYSBmb3JtIHdoaWNoIGluY2x1ZGVzIGEgPGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0 PC9jb2RlPiB0YWc6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IHRvX2Zv cm09JnF1b3Q7bXlfemVtX2NvbnRhY3RfdG9fZm9ybSZxdW90OyZndDsKICAmbHQ7dHhwOnpl bV9jb250YWN0X3RleHQgbGFiZWw9JnF1b3Q7TmFtZSZxdW90OyAvJmd0OyZsdDticiAvJmd0 OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyZndDsmbHQ7YnIgLyZndDsKICAmbHQ7 dHhwOnplbV9jb250YWN0X3NlbGVjdCBsYWJlbD0mcXVvdDtEZXBhcnRtZW50JnF1b3Q7IGxp c3Q9JnF1b3Q7LFN1cHBvcnQsU2FsZXMmcXVvdDsgLyZndDsmbHQ7YnIgLyZndDsKICAmbHQ7 dHhwOnplbV9jb250YWN0X3RleHRhcmVhIGxhYmVsPSZxdW90O01lc3NhZ2UmcXVvdDsgLyZn dDsmbHQ7YnIgLyZndDsKJmx0Oy90eHA6emVtX2NvbnRhY3QmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5DcmVhdGUgYSBUZXh0cGF0dGVybiBmb3JtIGNhbGxlZCAmIzgyMjA7bXlfemVtX2Nv bnRhY3RfdG9fZm9ybSYjODIyMTssIGNvbnRhaW5pbmc6PC9wPgoKPHByZT48Y29kZT4mbHQ7 dHhwOnBocCZndDsKICBnbG9iYWwgJHplbV9jb250YWN0X2Zvcm07CiAgc3dpdGNoKCR6ZW1f Y29udGFjdF9mb3JtWyYjMzk7RGVwYXJ0bWVudCYjMzk7XSkKICB7CiAgICBjYXNlICYjMzk7 U3VwcG9ydCYjMzk7OgogICAgICBlY2hvICYjMzk7Y3Jld0BleGFtcGxlLmNvbSYjMzk7Owog ICAgICBicmVhazsKICAgIGNhc2UgJiMzOTtTYWxlcyYjMzk7OgogICAgICBlY2hvICYjMzk7 c2hvd21ldGhlbW9uZXlAZXhhbXBsZS5jb20mIzM5OzsKICAgICAgYnJlYWs7CiAgICBkZWZh dWx0OgogICAgICBlY2hvICYjMzk7c29tZW9uZUBleGFtcGxlLmNvbSYjMzk7OwogIH0KJmx0 Oy90eHA6cGhwJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIDxjb2RlPmxhYmVsPC9jb2Rl PiB1c2VkIGluIHRoZSA8Y29kZT56ZW1fY29udGFjdF9zZWxlY3Q8L2NvZGU+IHRhZyBtdXN0 IGJlIGlkZW50aWNhbCB0byB0aGUgY29ycmVzcG9uc2luZyB2YXJpYWJsZSBpbiB0aGUgPGNv ZGU+dG9fZm9ybTwvY29kZT4uIEhlcmUgd2UgdXNlZCA8Y29kZT5EZXBhcnRtZW50PC9jb2Rl Pi48L3A+CgoJPHA+QSAmIzgyMTY7ZGVmYXVsdCYjODIxNzsgZW1haWwgYWRkcmVzcyBpbiB0 aGUgPGNvZGU+dG9fZm9ybTwvY29kZT4gaXMgc3BlY2lmaWVkIHRvIGVuc3VyZSB0aGF0IGEg dmFsaWQgZW1haWwgYWRkcmVzcyBpcyB1c2VkIGluIGNhc2VzIHdoZXJlIHlvdSBhZGQgb3Ig Y2hhbmdlIGEgc2VsZWN0L3JhZGlvIG9wdGlvbiBhbmQgZm9yZ2V0IHRvIHVwZGF0ZSB0aGUg PGNvZGU+dG9fZm9ybTwvY29kZT4uPC9wPgoKCTxwIGNsYXNzPSJ3YXJuaW5nIj5OZXZlciB1 c2UgdGFncyBsaWtlIDxjb2RlPnplbV9jb250YWN0X3RleHQ8L2NvZGU+LCA8Y29kZT56ZW1f Y29udGFjdF9lbWFpbDwvY29kZT4gb3IgPGNvZGU+emVtX2NvbnRhY3RfdGV4dGFyZWE8L2Nv ZGU+IGZvciBzZXR0aW5nIHRoZSByZWNpcGllbnQgYWRkcmVzcywgb3RoZXJ3aXNlIHlvdXIg Zm9ybSBjYW4gYmUgYWJ1c2VkIHRvIHNlbmQgc3BhbSB0byBhbnkgZW1haWwgYWRkcmVzcyE8 L3A+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0i c3R5bGluZyI+U3R5bGluZzwvaDI+CgoJPHA+VGhlIGZvcm0gaXRzZWxmIGhhcyBhIGNsYXNz IDxzdHJvbmc+emVtQ29udGFjdEZvcm08L3N0cm9uZz4gc2V0IG9uIHRoZSA8Y29kZT5GT1JN PC9jb2RlPiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFnLjwvcD4KCgk8cD5U aGUgbGlzdCBvZiBlcnJvciBtZXNzYWdlcyAoaWYgYW55KSBoYXMgYSBjbGFzcyA8c3Ryb25n PnplbUVycm9yPC9zdHJvbmc+IHNldCBvbiB0aGUgPGNvZGU+VUw8L2NvZGU+IDxzcGFuIGNs YXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWcgdGhhdCBlbmNsb3NlcyB0aGUgbGlzdCBvZiBl cnJvcnMuPC9wPgoKCTxwPkFsbCBmb3JtIGVsZW1lbnRzIGFuZCBjb3JyZXNwb25kaW5nIGxh YmVscyBoYXZlIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyAob3IgaWRzIHNldCk6Cgk8b2w+CgkJ PGxpPk9uZSBvZiA8c3Ryb25nPnplbVRleHQ8L3N0cm9uZz4sIDxzdHJvbmc+emVtVGV4dGFy ZWE8L3N0cm9uZz4sIDxzdHJvbmc+emVtU2VsZWN0PC9zdHJvbmc+LCA8c3Ryb25nPnplbVJh ZGlvPC9zdHJvbmc+LCA8c3Ryb25nPnplbUNoZWNrYm94PC9zdHJvbmc+LCA8c3Ryb25nPnpl bVN1Ym1pdDwvc3Ryb25nPi4gSXQgc2hvdWxkIGJlIG9idmlvdXMgd2hpY2ggY2xhc3MgaXMg dXNlZCBmb3Igd2hpY2ggZm9ybSBlbGVtZW50IChhbmQgY29ycmVzcG9uZGluZyBsYWJlbCku PC9saT4KCQk8bGk+PHN0cm9uZz56ZW1SZXF1aXJlZDwvc3Ryb25nPiBvciA8c3Ryb25nPmVy cm9yRWxlbWVudDwvc3Ryb25nPiBvciA8c3Ryb25nPnplbVJlcXVpcmVkZXJyb3JFbGVtZW50 PC9zdHJvbmc+LCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgZm9ybSBlbGVtZW50IGlzIHJl cXVpcmVkLCBhbiBlcnJvciB3YXMgZm91bmQgaW4gd2hhdGV2ZXIgdGhlIHZpc2l0b3IgZW50 ZXJlZCYjODIzMDsgb3IgYm90aC48L2xpPgoJCTxsaT5BbiBpbmRpdmlkdWFsICYjODIyMDtp ZCYjODIyMTsgb3IgJiM4MjIwO2NsYXNzJiM4MjIxOyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRo ZSA8Y29kZT5uYW1lPC9jb2RlPiBhdHRyaWJ1dGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdGFn LiBXaGVuIHN0eWxpbmcgZm9ybXMgYmFzZWQgb24gdGhpcyBjbGFzcywgeW91IHNob3VsZCBl eHBsaWNpdGx5IHNldCB0aGUgPGNvZGU+bmFtZTwvY29kZT4gYXR0cmlidXRlIGJlY2F1c2Ug YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZXMgbWF5IGNoYW5nZSBpbiBuZXdlciB6ZW1f Y29udGFjdF9yZWJvcm4gdmVyc2lvbnMuPC9saT4KCTwvb2w+PC9wPgoKCTxwPjxhIGhyZWY9 IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9Imhpc3RvcnkiPkhpc3Rvcnk8 L2gyPgoKCTxwPk9ubHkgdGhlIGNoYW5nZXMgdGhhdCBtYXkgYWZmZWN0IHBlb3BsZSB3aG8g dXBncmFkZSBhcmUgZGV0YWlsZWQgYmVsb3cuPGJyIC8+ClRvIHNhdmUgc3BhY2UsIGxpbmtz IHRvIGZvcnVtIHRvcGljcyB0aGF0IGRldGFpbCBhbGwgdGhlIGNoYW5nZXMgaW4gZWFjaCB2 ZXJzaW9uIGhhdmUgYmVlbiBhZGRlZC48L3A+CgoJPHVsPgoJCTxsaT4xNCBmZWIgMjAwNzog PHN0cm9uZz52ZXJzaW9uIDQuMC4zLjE5PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHA6Ly9mb3J1 bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yMTE0NCI+Y2hhbmdlbG9nPC9h PgoJPHVsPgoJCTxsaT48YSBocmVmPSIjc2VuZGFydGljbGUiPnNlbmRfYXJ0aWNsZTwvYT4g ZnVuY3Rpb25hbGl0eSByZXZpc2VkLCByZXF1aXJpbmcgY2hhbmdlcyB3aGVuIHVwZ3JhZGlu ZyBmcm9tIGVhcmxpZXIgdmVyc2lvbnM8L2xpPgoJCTxsaT5OZXcgbGFuZ3VhZ2Ugc3RyaW5n czogJiM4MjE2O3NlbmRfYXJ0aWNsZSYjODIxNzsgYW5kICYjODIxNjtyZWNpcGllbnQmIzgy MTc7IChyZXBsYWNlcyAmIzgyMTY7cmVjZWl2ZXImIzgyMTc7KTwvbGk+CgkJPGxpPlNldHMg b2YgcmFkaW8gYnV0dG9ucyByZXF1aXJlIHRoZSBuZXcgPGEgaHJlZj0iI3pjX3JhZGlvIj5n cm91cDwvYT4gYXR0cmlidXRlPC9saT4KCQk8bGk+WWVzL05vIHZhbHVlcyBkZXByZWNhdGVk IGluIGZhdm9yIGZvciB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gc3RhbmRh cmQgMS8wIHZhbHVlcyAoeWVzL25vIHN0aWxsIHdvcmsgaW4gdGhpcyB2ZXJzaW9uKTwvbGk+ Cgk8L3VsPjwvbGk+CgkJPGxpPjIwIG5vdiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gNC4wLjMu MTg8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTE5ODIzIj5jaGFuZ2Vsb2c8L2E+Cgk8dWw+CgkJPGxpPklEcyAmIzgy MTY7emVtQ29udGFjdEZvcm0mIzgyMTc7IGFuZCAmIzgyMTY7emVtU3VibWl0JiM4MjE3OyBo YXZlIGNoYW5nZWQgdG8gY2xhc3NlcyB0byBhbGxvdyBtdWx0aXBsZSBmb3JtcyBwZXIgcGFn ZTwvbGk+CgkJPGxpPk5ldyBsYW5ndWFnZSBzdHJpbmdzOiAmIzgyMTY7Zm9ybV91c2VkJiM4 MjE3OywgJiM4MjE2O2ludmFsaWRfdXRmOCYjODIxNzssICYjODIxNjttYXhfd2FybmluZyYj ODIxNzssICYjODIxNjtuYW1lJiM4MjE3OywgJiM4MjE2O3JlZnJlc2gmIzgyMTc7LCAmIzgy MTY7c2VjcmV0JiM4MjE3OzwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjEyIG1hciAyMDA2OiA8 c3Ryb25nPnZlcnNpb24gNC4wLjMuMTc8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cDovL2ZvcnVt LnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTEzNDE2Ij5jaGFuZ2Vsb2c8L2E+ PC9saT4KCQk8bGk+MTEgZmViIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMTY8L3N0cm9uZz48 L2xpPgoJCTxsaT4wNiBmZWIgMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4xNTwvc3Ryb25nPjwv bGk+CgkJPGxpPjAzIGZlYiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjE0PC9zdHJvbmc+Cgk8 dWw+CgkJPGxpPlJlcXVpcmVzIHNlcGFyYXRlIHplbV9jb250YWN0X2xhbmcgcGx1Z2luPC9s aT4KCTwvdWw+PC9saT4KCQk8bGk+MjkgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMTI8 L3N0cm9uZz48L2xpPgoJCTxsaT4yNyBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4xMTwv c3Ryb25nPjwvbGk+CgkJPGxpPjIzIGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjA5IGFu ZCAuMTA8L3N0cm9uZz48L2xpPgoJCTxsaT4yMyBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9u IC4wODwvc3Ryb25nPjwvbGk+CgkJPGxpPjE3IGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24g LjA3PC9zdHJvbmc+PC9saT4KCQk8bGk+MTYgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAu MDUgYW5kIC4wNjwvc3Ryb25nPjwvbGk+CgkJPGxpPjE1IGphbiAyMDA2OiA8c3Ryb25nPnZl cnNpb24gLjA0PC9zdHJvbmc+PC9saT4KCQk8bGk+MTAgamFuIDIwMDY6IDxzdHJvbmc+dmVy c2lvbiAuMDM8L3N0cm9uZz48L2xpPgoJCTxsaT4xOSBkZWMgMjAwNTogPHN0cm9uZz52ZXJz aW9uIC4wMjwvc3Ryb25nPjwvbGk+Cgk8L3VsPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sg dG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9ImNyZWRpdHMiPkNyZWRpdHM8L2gyPgoKCTx1bD4K CQk8bGk+PHN0cm9uZz56ZW08L3N0cm9uZz4gd3JvdGUgdGhlIHplbV9jb250YWN0IDAuNiBw bHVnaW4gb24gd2hpY2ggdGhpcyBwbHVnaW4gd2FzIGluaXRpYWxseSBiYXNlZC48L2xpPgoJ CTxsaT48c3Ryb25nPk1hcnk8L3N0cm9uZz4gY29tcGxldGVseSByZXZpc2VkIHRoZSBwbHVn aW4gY29kZS48L2xpPgoJCTxsaT48c3Ryb25nPlN0dWFydDwvc3Ryb25nPiBUdXJuZWQgaXQg aW50byBhIHBsdWdpbiwgYWRkZWQgYSByZXZpc2VkIGhlbHAgdGV4dCBhbmQgYWRkaXRpb25h bCBjb2RlLiBNYWludGFpbmVkIGFsbCBwbHVnaW4gdmVyc2lvbnMgdGlsbCA0LjAuMy4xNy48 L2xpPgoJCTxsaT48c3Ryb25nPndldDwvc3Ryb25nPiBhZGRlZCB0aGUgemVtX2NvbnRhY3Rf cmFkaW8gdGFnLjwvbGk+CgkJPGxpPjxzdHJvbmc+VHJhbnF1aWxsbzwvc3Ryb25nPiBhZGRl ZCB0aGUgYW50aS1zcGFtIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+IGFuZCB6ZW1f Y29udGFjdF9zZW5kX2FydGljbGUgZnVuY3Rpb25hbGl0eS48L2xpPgoJCTxsaT48c3Ryb25n PmFzbHN3NjY8L3N0cm9uZz4sIDxzdHJvbmc+amR5a2FzdDwvc3Ryb25nPiBhbmQgb3RoZXJz ICg/KSBwcm92aWRlZCBhZGRpdGlvbmFsIGNvZGU8L2xpPgoJCTxsaT48c3Ryb25nPlJ1dWQ8 L3N0cm9uZz4gY2xlYW5lZCB1cCBhbmQgYXVkaXRlZCB0aGUgY29kZSB0byB3ZWVkIG91dCBi dWdzIGFuZCBjb21wbGV0ZWx5IHJldmlzZWQgdGhlIGhlbHAgdGV4dC4gTWFpbnRhaW5lciBv ZiB2ZXJzaW9ucyA0LjAuMy4xOCBhbmQgdXAuPC9saT4KCQk8bGk+U3VwcG9ydGVkIGFuZCB0 ZXN0ZWQgdG8gZGVzdHJ1Y3Rpb24gYnkgdGhlIFRleHRwYXR0ZXJuIGNvbW11bml0eS48L2xp PgoJPC91bD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgy IGlkPSJhcGkiPlplbSBDb250YWN0IFJlYm9ybiYjODIxNztzIDxzcGFuIGNsYXNzPSJjYXBz Ij5BUEk8L3NwYW4+PC9oMj4KCgk8cD5UaGUgcGx1Z2luIDxzcGFuIGNsYXNzPSJjYXBzIj5B UEk8L3NwYW4+IG9mIHplbSBjb250YWN0LCBkZXZlbG9wZWQgYnkgVHJhbnF1aWxsbywgaXMg c2ltaWxhciB0byB0aGUgY29tbWVudHMgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj4g b2YgVGV4dHBhdHRlcm4sIHdoaWNoIGlzIGV4cGxhaW5lZCBpbiB0aGUgVGV4dGJvb2sgPGEg aHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90aXRsZT1QbHVn aW5fRGV2ZWxvcG1lbnRfVG9waWNzIj5QbHVnaW4gRGV2ZWxvcG1lbnQgVG9waWNzPC9hPiBh bmQgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90aXRs ZT1Db21iYXRfQ29tbWVudF9TcGFtIj5Db21iYXQgQ29tbWVudCBTcGFtPC9hPi48L3A+CgoJ PHA+VHdvIGNhbGxiYWNrIGV2ZW50cyBleGlzdCBpbiB6ZW1fY29udGFjdF9yZWJvcm46Cgk8 dWw+CgkJPGxpPjxjb2RlPnplbWNvbnRhY3Quc3VibWl0PC9jb2RlPiBpcyBjYWxsZWQgYWZ0 ZXIgdGhlIGZvcm0gaXMgc3VibWl0dGVkIGFuZCB0aGUgdmFsdWVzIGFyZSBjaGVja2VkIGlm IGVtcHR5IG9yIHZhbGlkIGVtYWlsIGFkZHJlc3NlcywgYnV0IGJlZm9yZSB0aGUgbWFpbCBp cyBzZW50LjwvbGk+CgkJPGxpPjxjb2RlPnplbWNvbnRhY3QuZm9ybTwvY29kZT4gbGV0JiM4 MjE3O3MgeW91IGluc2VydCBjb250ZW50IGluIHRoZSBjb250YWN0IGZvcm0gYXMgZGlzcGxh eWVkIHRvIHRoZSB2aXNpdG9yLjwvbGk+Cgk8L3VsPjwvcD4KCgk8cD5Gb3IgcmVmZXJlbmNl IGhlcmUgYXJlIHRoZSBjb21tYW5kcyB0aGF0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8gcGx1 Z2luIGRldmVsb3BlcnM6PC9wPgoKPHByZT48Y29kZT4vLyBUaGlzIHdpbGwgY2FsbCB5b3Vy IGZ1bmN0aW9uIGJlZm9yZSB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQKLy8gU28geW91IGNhbiBh bmFseXNlIHRoZSBzdWJtaXR0ZWQgZGF0YQpyZWdpc3Rlcl9jYWxsYmFjaygmIzM5O2FiY19t eWZ1bmN0aW9uJiMzOTssJiMzOTt6ZW1jb250YWN0LnN1Ym1pdCYjMzk7KTsKPC9jb2RlPgo8 Y29kZT4vLyBUaGlzIHdpbGwgY2FsbCB5b3VyIGZ1bmN0aW9uIGFuZCBhZGQgdGhlIG91dHB1 dCAodXNlIHJldHVybiAkbXlzdHVmZikKLy8gdG8gdGhlIGNvbnRhY3QtZm9ybS4KcmVnaXN0 ZXJfY2FsbGJhY2soJiMzOTthYmNfbXlvdGhlcmZ1bmN0aW9uMiYjMzk7LCYjMzk7emVtY29u dGFjdC5mb3JtJiMzOTspOwo8L2NvZGU+Cjxjb2RlPi8vIFRvIGdldCBob2xkIG9mIHRoZSBm b3JtLXZhcmlhYmxlcyB5b3UgY2FuIHVzZQpnbG9iYWwgemVtX2NvbnRhY3RfZm9ybTsKPC9j b2RlPgo8Y29kZT4vLyBXaXRoIHRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHlvdSBjYW4gdGVs bCB6ZW1fY29udGFjdCBpZiB5b3VyCi8vIHBsdWdpbiBmb3VuZCBzcGFtCiRldmFsdWF0b3Ig PSZhbXA7IGdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpOwo8L2NvZGU+Cjxjb2RlPi8vIFRo ZSBwYXNzZWQgdmFsdWUgbXVzdCBiZSBub24temVybyB0byBtYXJrIHRoZSBjb250ZW50IGFz IHNwYW0uCi8vIFZhbHVlIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxLgokZXZh bHVhdG9yIC0mZ3Q7IGFkZF96ZW1jb250YWN0X3N0YXR1cygxKTsKPC9jb2RlPjwvcHJlPgoK CTxwPk11bHRpcGxlIHBsdWdpbnMgY2FuIGJlIGFjdGl2ZSBhdCB0aGUgc2FtZSB0aW1lIGFu ZCBlYWNoIG9mIHRoZW0gY2FuIG1hcmsgdGhlIHN1Ym1pdHRlZCBjb250ZW50IGFzIHNwYW0g YW5kIHByZXZlbnQgdGhlIGZvcm0gZnJvbSBiZWluZyBzdWJtaXR0ZWQuPC9wPgoKCTxwPjxz dHJvbmc+QW4gZXhhbXBsZSBvZiBhIHBsdWctaW4gY29ubmVjdGluZyB0byBaZW0gQ29udGFj dCBSZWJvcm4mIzgyMTc7cyA8c3BhbiBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPjo8L3N0cm9u Zz48L3A+Cgo8cHJlPjxjb2RlPnJlZ2lzdGVyX2NhbGxiYWNrKCYjMzk7cGFwX3plbWNvbnRh Y3RfZm9ybSYjMzk7LCYjMzk7emVtY29udGFjdC5mb3JtJiMzOTspOwpyZWdpc3Rlcl9jYWxs YmFjaygmIzM5O3BhcF96ZW1jb250YWN0X3N1Ym1pdCYjMzk7LCYjMzk7emVtY29udGFjdC5z dWJtaXQmIzM5Oyk7CjwvY29kZT4KPGNvZGU+ZnVuY3Rpb24gcGFwX3plbWNvbnRhY3RfZm9y bSgpIHsKICAkZmllbGQgPSAmIzM5OyZsdDtkaXYgc3R5bGU9JnF1b3Q7ZGlzcGxheTpub25l JnF1b3Q7Jmd0OyYjMzk7LgogICAgZmlucHV0KCYjMzk7dGV4dCYjMzk7LCYjMzk7cGhvbmUm IzM5OyxwcygmIzM5O3Bob25lJiMzOTspLCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYj Mzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5O3Bob25lJiMzOTspLiYjMzk7Jmx0O2Jy IC8mZ3Q7JiMzOTsuCiAgICBmaW5wdXQoJiMzOTt0ZXh0JiMzOTssJiMzOTttYWlsJiMzOTss cHMoJiMzOTttYWlsJiMzOTspLCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYj Mzk7JiMzOTssJiMzOTsmIzM5OywmIzM5O21haWwmIzM5OykuJiMzOTsmbHQ7L2RpdiZndDsm IzM5OzsKICByZXR1cm4gJGZpZWxkOyZsdDsvY29kZSZndDsKfQo8L2NvZGU+Cjxjb2RlPmZ1 bmN0aW9uIHBhcF96ZW1jb250YWN0X3N1Ym1pdCgpIHsKICAkY2hlY2tpbmdfbWFpbF9maWVs ZCA9IHRyaW0ocHMoJiMzOTttYWlsJiMzOTspKTsKICAkY2hlY2tpbmdfcGhvbmVfZmllbGQg PSB0cmltKHBzKCYjMzk7cGhvbmUmIzM5OykpOwo8L2NvZGU+Cjxjb2RlPiAgJGV2YWx1YXRp b24gPSZhbXA7IGdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpOwo8L2NvZGU+Cjxjb2RlPiAg Ly8gSWYgdGhlIGhpZGRlbiBmaWVsZHMgYXJlIGZpbGxlZCBvdXQsIHRoZSBjb250YWN0IGZv cm0gd29uJiMzOTt0IGJlIHN1Ym1pdHRlZCEKICBpZiAoJGNoZWNraW5nX21haWxfZmllbGQg IT0gJiMzOTsmIzM5OyBvciAkY2hlY2tpbmdfcGhvbmVfZmllbGQgIT0gJiMzOTsmIzM5Oykg ewogICAgJGV2YWx1YXRpb24gLSZndDsgYWRkX3plbWNvbnRhY3Rfc3RhdHVzKDEpOwogIH0K ICByZXR1cm47Cn0KPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8g dG9wPC9hPjwvcD4iO3M6NDoiY29kZSI7czoyMDgzNDoiCmZ1bmN0aW9uIHplbV9jb250YWN0 KCRhdHRzLCAkdGhpbmcgPSAnJykKewoJZ2xvYmFsICRzaXRlbmFtZSwgJHByZWZzLCAkcHJv ZHVjdGlvbl9zdGF0dXMsICR6ZW1fY29udGFjdF9mcm9tLAoJCSR6ZW1fY29udGFjdF9yZWNp cGllbnQsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdCwKCQkkemVt X2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0X2xhYmVscywgJHplbV9jb250YWN0X3ZhbHVl czsKCglleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdjb3B5c2VuZGVyJwk9 PiAwLAoJCSdmb3JtJwkJPT4gJycsCgkJJ2Zyb20nCQk9PiAnJywKCQknZnJvbV9mb3JtJwk9 PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdjb250YWN0JyksCgkJJ3Jl ZGlyZWN0Jwk9PiAnJywKCQknc2hvd19lcnJvcicJPT4gMSwKCQknc2hvd19pbnB1dCcJPT4g MSwKCQknc2VuZF9hcnRpY2xlJwk9PiAwLAoJCSdzdWJqZWN0Jwk9PiB6ZW1fY29udGFjdF9n VHh0KCdlbWFpbF9zdWJqZWN0JywgaHRtbF9lbnRpdHlfZGVjb2RlKCRzaXRlbmFtZSxFTlRf UVVPVEVTKSksCgkJJ3N1YmplY3RfZm9ybScJPT4gJycsCgkJJ3RvJwkJPT4gJycsCgkJJ3Rv X2Zvcm0nCT0+ICcnLAoJCSd0aGFua3MnCT0+IGdyYWYoemVtX2NvbnRhY3RfZ1R4dCgnZW1h aWxfdGhhbmtzJykpLAoJCSd0aGFua3NfZm9ybScJPT4gJycKCSksICRhdHRzKSk7CgoJdW5z ZXQoJGF0dHNbJ3Nob3dfZXJyb3InXSwgJGF0dHNbJ3Nob3dfaW5wdXQnXSk7CgkkemVtX2Nv bnRhY3RfZm9ybV9pZCA9IG1kNShzZXJpYWxpemUoJGF0dHMpLnByZWdfcmVwbGFjZSgnL1tc dFxzXHJcbl0vJywnJywkdGhpbmcpKTsKCSR6ZW1fY29udGFjdF9zdWJtaXQgPSAocHMoJ3pl bV9jb250YWN0X2Zvcm1faWQnKSA9PSAkemVtX2NvbnRhY3RfZm9ybV9pZCk7CgoJaWYgKCFp c19jYWxsYWJsZSgnbWFpbCcpKQoJewoJCXJldHVybiAoJHByb2R1Y3Rpb25fc3RhdHVzID09 ICdsaXZlJykgPwoJCQl6ZW1fY29udGFjdF9nVHh0KCdtYWlsX3NvcnJ5JykgOgoJCQlnVHh0 KCd3YXJuX21haWxfdW5hdmFpbGFibGUnKTsKCX0KCglzdGF0aWMgJGhlYWRlcnNfc2VudCA9 IGZhbHNlOwoJaWYgKCEkaGVhZGVyc19zZW50KSB7CgkJaGVhZGVyKCdMYXN0LU1vZGlmaWVk OiAnLmdtZGF0ZSgnRCwgZCBNIFkgSDppOnMnLHRpbWUoKS0zNjAwKjI0KjcpLicgR01UJyk7 CgkJaGVhZGVyKCdFeHBpcmVzOiAnLmdtZGF0ZSgnRCwgZCBNIFkgSDppOnMnLHRpbWUoKSs2 MDApLicgR01UJyk7CgkJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbXVzdC1y ZXZhbGlkYXRlJyk7CgkJJGhlYWRlcnNfc2VudCA9IHRydWU7Cgl9CgoJJG5vbmNlICAgPSBt eXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcocHMoJ3plbV9jb250YWN0X25vbmNlJykpOwoJJHJl bm9uY2UgPSBmYWxzZTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQlzYWZlX2Rl bGV0ZSgndHhwX2Rpc2N1c3Nfbm9uY2UnLCAnaXNzdWVfdGltZSA8IGRhdGVfc3ViKG5vdygp LCBpbnRlcnZhbCAxMCBtaW51dGUpJyk7CgkJaWYgKCRycyA9IHNhZmVfcm93KCd1c2VkJywg J3R4cF9kaXNjdXNzX25vbmNlJywgIm5vbmNlID0gJyRub25jZSciKSkKCQl7CgkJCWlmICgk cnNbJ3VzZWQnXSkKCQkJewoJCQkJdW5zZXQoJHplbV9jb250YWN0X2Vycm9yKTsKCQkJCSR6 ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZm9ybV91c2VkJyk7CgkJ CQkkcmVub25jZSA9IHRydWU7CgkJCQkkX1BPU1QgPSBhcnJheSgpOwoJCQkJJF9QT1NUWyd6 ZW1fY29udGFjdF9zdWJtaXQnXSA9IFRSVUU7CgkJCQkkX1BPU1RbJ3plbV9jb250YWN0X2Zv cm1faWQnXSA9ICR6ZW1fY29udGFjdF9mb3JtX2lkOwoJCQkJJF9QT1NUWyd6ZW1fY29udGFj dF9ub25jZSddID0gJG5vbmNlOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR6ZW1fY29udGFj dF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZm9ybV9leHBpcmVkJyk7CgkJCSRyZW5v bmNlID0gdHJ1ZTsKCQl9Cgl9CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQgYW5kICRub25j ZSBhbmQgISRyZW5vbmNlKQoJewoJCSR6ZW1fY29udGFjdF9ub25jZSA9ICRub25jZTsKCX0K CgllbHNlaWYgKCEkc2hvd19lcnJvciBvciAkc2hvd19pbnB1dCkKCXsKCQkkemVtX2NvbnRh Y3Rfbm9uY2UgPSBtZDUodW5pcWlkKHJhbmQoKSwgdHJ1ZSkpOwoJCXNhZmVfaW5zZXJ0KCd0 eHBfZGlzY3Vzc19ub25jZScsICJpc3N1ZV90aW1lID0gbm93KCksIG5vbmNlID0gJyR6ZW1f Y29udGFjdF9ub25jZSciKTsKCX0KCgkkZm9ybSA9ICgkZm9ybSkgPyBmZXRjaF9mb3JtKCRm b3JtKSA6ICR0aGluZzsKCglpZiAoZW1wdHkoJGZvcm0pKQoJewoJCSRmb3JtID0gJwo8dHhw OnplbV9jb250YWN0X3RleHQgbGFiZWw9IicuemVtX2NvbnRhY3RfZ1R4dCgnbmFtZScpLici IC8+PGJyIC8+Cjx0eHA6emVtX2NvbnRhY3RfZW1haWwgLz48YnIgLz4nLgooJHNlbmRfYXJ0 aWNsZSA/ICc8dHhwOnplbV9jb250YWN0X2VtYWlsIHNlbmRfYXJ0aWNsZT0iMSIgbGFiZWw9 IicuemVtX2NvbnRhY3RfZ1R4dCgncmVjaXBpZW50JykuJyIgLz48YnIgLz4nIDogJycpLgon PHR4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSAvPjxiciAvPgo8dHhwOnplbV9jb250YWN0X3N1 Ym1pdCAvPgonOwoJfQoKCSRmb3JtID0gcGFyc2UoJGZvcm0pOwoKCWlmICgkdG9fZm9ybSkK CXsKCQkkdG8gPSBwYXJzZShmZXRjaF9mb3JtKCR0b19mb3JtKSk7Cgl9CgoJaWYgKCEkdG8g YW5kICEkc2VuZF9hcnRpY2xlKQoJewoJCXJldHVybiB6ZW1fY29udGFjdF9nVHh0KCd0b19t aXNzaW5nJyk7Cgl9CgoJJG91dCA9ICcnOwoKCWlmICghJHplbV9jb250YWN0X3N1Ym1pdCkg ewoJICAjIGRvbid0IHNob3cgZXJyb3JzIG9yIHNlbmQgbWFpbAoJfQoKCWVsc2VpZiAoIWVt cHR5KCR6ZW1fY29udGFjdF9lcnJvcikpCgl7CgkJaWYgKCRzaG93X2Vycm9yIG9yICEkc2hv d19pbnB1dCkKCQl7CgkJCSRvdXQgLj0gbi4nPHVsIGNsYXNzPSJ6ZW1FcnJvciI+JzsKCgkJ CWZvcmVhY2ggKGFycmF5X3VuaXF1ZSgkemVtX2NvbnRhY3RfZXJyb3IpIGFzICRlcnJvcikK CQkJewoJCQkJJG91dCAuPSBuLnQuJzxsaT4nLiRlcnJvci4nPC9saT4nOwoJCQl9CgoJCQkk b3V0IC49IG4uJzwvdWw+JzsKCgkJCWlmICghJHNob3dfaW5wdXQpIHJldHVybiAkb3V0OwoJ CX0KCX0KCgllbHNlaWYgKCRzaG93X2lucHV0IGFuZCBpc19hcnJheSgkemVtX2NvbnRhY3Rf Zm9ybSkpCgl7CgkJLy8vIGxvYWQgYW5kIGNoZWNrIHNwYW0gcGx1Z2lucy8KCQljYWxsYmFj a19ldmVudCgnemVtY29udGFjdC5zdWJtaXQnKTsKCQkkZXZhbHVhdGlvbiA9JiBnZXRfemVt Y29udGFjdF9ldmFsdWF0b3IoKTsKCQkkY2xlYW4gPSAkZXZhbHVhdGlvbi0+Z2V0X3plbWNv bnRhY3Rfc3RhdHVzKCk7CgkJaWYgKCRjbGVhbiAhPSAwKSB7CgkJCXJldHVybiB6ZW1fY29u dGFjdF9nVHh0KCdzcGFtJyk7CgkJfQoKCQlpZiAoJGZyb21fZm9ybSkKCQl7CgkJCSRmcm9t ID0gcGFyc2UoZmV0Y2hfZm9ybSgkZnJvbV9mb3JtKSk7CgkJfQoKCQlpZiAoJHN1YmplY3Rf Zm9ybSkKCQl7CgkJCSRzdWJqZWN0ID0gcGFyc2UoZmV0Y2hfZm9ybSgkc3ViamVjdF9mb3Jt KSk7CgkJfQoKCQkkc2VwID0gIWlzX3dpbmRvd3MoKSA/ICJcbiIgOiAiXHJcbiI7CgoJCSRt c2cgPSBhcnJheSgpOwoKCQlmb3JlYWNoICgkemVtX2NvbnRhY3RfbGFiZWxzIGFzICRuYW1l ID0+ICRsYWJlbCkKCQl7CgkJCWlmICghdHJpbSgkemVtX2NvbnRhY3RfdmFsdWVzWyRuYW1l XSkpIGNvbnRpbnVlOwoJCQkkbXNnW10gPSAkbGFiZWwuJzogJy4kemVtX2NvbnRhY3RfdmFs dWVzWyRuYW1lXTsKCQl9CgoJCWlmICgkc2VuZF9hcnRpY2xlKQoJCXsKCQkJZ2xvYmFsICR0 aGlzYXJ0aWNsZTsKCQkJJHN1YmplY3QgPSBzdHJfcmVwbGFjZSgnJiMzODsnLCAnJicsICR0 aGlzYXJ0aWNsZVsndGl0bGUnXSk7CgkJCSRtc2dbXSA9IHBlcm1saW5rdXJsKCR0aGlzYXJ0 aWNsZSk7CgkJCSRtc2dbXSA9ICRzdWJqZWN0OwoJCQkkc19hciA9IGFycmF5KCcmIzgyMTY7 JywgJyYjODIxNzsnLCAnJiM4MjIwOycsICcmIzgyMjE7JywgJyYjODIxNzsnLCAnJiM4MjQy OycsICcmIzgyNDM7JywgJyYjODIzMDsnLCAnJiM4MjExOycsICcmIzgyMTI7JywgJyYjMjE1 OycsICcmIzg0ODI7JywgJyYjMTc0OycsICcmIzE2OTsnLCAnJmx0OycsICcmZ3Q7JywgJyZx dW90OycsICcmYW1wOycsICcmIzM4OycsICJcdCIsICc8cCcpOwoJCQlpZiAoJHByZWZzWydv dmVycmlkZV9lbWFpbGNoYXJzZXQnXSBhbmQgaXNfY2FsbGFibGUoJ3V0ZjhfZGVjb2RlJykp IHsKCQkJCSRyX2FyID0gYXJyYXkoIiciLCAiJyIsICciJywgJyInLCAiJyIsICInIiwgJyIn LCAnLi4uJywgJy0nLCAnLS0nLCAneCcsICdbdG1dJywgJyhyKScsICcoYyknLCAnPCcsICc+ JywgJyInLCAnJicsICcmJywgJyAnLCAiXG48cCIpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJ JHJfYXIgPSBhcnJheSgn4oCYJywgJ+KAmScsICfigJwnLCAn4oCdJywgJ+KAmScsICfigLIn LCAn4oCzJywgJ+KApicsICfigJMnLCAn4oCUJywgJ8OXJywgJ+KEoicsICfCricsICfCqScs ICc8JywgJz4nLCAnIicsICcmJywgJyYnLCAnICcsICJcbjxwIik7CgkJCX0KCQkJJG1zZ1td ID0gdHJpbShzdHJpcF90YWdzKHN0cl9yZXBsYWNlKCRzX2FyLCRyX2FyLCh0cmltKHN0cmlw X3RhZ3MoJHRoaXNhcnRpY2xlWydleGNlcnB0J10pKSA/ICR0aGlzYXJ0aWNsZVsnZXhjZXJw dCddIDogJHRoaXNhcnRpY2xlWydib2R5J10pKSkpOwoJCQlpZiAoZW1wdHkoJHplbV9jb250 YWN0X3JlY2lwaWVudCkpCgkJCXsKCQkJCXJldHVybiB6ZW1fY29udGFjdF9nVHh0KCdmaWVs ZF9taXNzaW5nJywgemVtX2NvbnRhY3RfZ1R4dCgncmVjaXBpZW50JykpOwoJCQl9CgkJCWVs c2UKCQkJewoJCQkJJHRvID0gJHplbV9jb250YWN0X3JlY2lwaWVudDsKCQkJfQoJCX0KCgkJ JG1zZyA9IGpvaW4oIlxuXG4iLCAkbXNnKTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxyXG4i LCAiXG4iLCAkbXNnKTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxyIiwgIlxuIiwgJG1zZyk7 CgkJJG1zZyA9IHN0cl9yZXBsYWNlKCJcbiIsICRzZXAsICRtc2cpOwoKCQlpZiAoJGZyb20p CgkJewoJCQkkcmVwbHkgPSAkemVtX2NvbnRhY3RfZnJvbTsKCQl9CgoJCWVsc2UKCQl7CgkJ CSRmcm9tID0gJHplbV9jb250YWN0X2Zyb207CgkJCSRyZXBseSA9ICcnOwoJCX0KCgkJJGZy b20gICAgPSB6ZW1fY29udGFjdF9zdHJpcCgkZnJvbSk7CgkJJHRvICAgICAgPSB6ZW1fY29u dGFjdF9zdHJpcCgkdG8pOwoJCSRzdWJqZWN0ID0gemVtX2NvbnRhY3Rfc3RyaXAoJHN1Ympl Y3QpOwoJCSRyZXBseSAgID0gemVtX2NvbnRhY3Rfc3RyaXAoJHJlcGx5KTsKCQkkbXNnICAg ICA9IHplbV9jb250YWN0X3N0cmlwKCRtc2csIEZBTFNFKTsKCgkJaWYgKCRwcmVmc1snb3Zl cnJpZGVfZW1haWxjaGFyc2V0J10gYW5kIGlzX2NhbGxhYmxlKCd1dGY4X2RlY29kZScpKQoJ CXsKCQkJJGNoYXJzZXQgPSAnSVNPLTg4NTktMSc7CgkJCSRzdWJqZWN0ID0gdXRmOF9kZWNv ZGUoJHN1YmplY3QpOwoJCQkkbXNnICAgICA9IHV0ZjhfZGVjb2RlKCRtc2cpOwoJCX0KCgkJ ZWxzZQoJCXsKCQkJJGNoYXJzZXQgPSAnVVRGLTgnOwoJCX0KCgkJJHN1YmplY3QgPSB6ZW1f Y29udGFjdF9tYWlsaGVhZGVyKCRzdWJqZWN0LCAndGV4dCcpOwoKCQkkaGVhZGVycyA9ICdG cm9tOiAnLiRmcm9tLgoJCQkoJHJlcGx5ID8gKCRzZXAuJ1JlcGx5LVRvOiAnLiRyZXBseSkg OiAnJykuCgkJCSRzZXAuJ1gtTWFpbGVyOiBUZXh0cGF0dGVybiAoemVtX2NvbnRhY3RfcmVi b3JuKScuCgkJCSRzZXAuJ1gtT3JpZ2luYXRpbmctSVA6ICcuemVtX2NvbnRhY3Rfc3RyaXAo KCFlbXB0eSgkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXSkgPyAkX1NFUlZFUlsn SFRUUF9YX0ZPUldBUkRFRF9GT1InXS4nIHZpYSAnIDogJycpLiRfU0VSVkVSWydSRU1PVEVf QUREUiddKS4KCQkJJHNlcC4nQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCcuCgkJ CSRzZXAuJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iJy4kY2hhcnNldC4n Iic7CgoJCXNhZmVfdXBkYXRlKCd0eHBfZGlzY3Vzc19ub25jZScsICJ1c2VkID0gJzEnLCBp c3N1ZV90aW1lID0gbm93KCkiLCAibm9uY2UgPSAnJG5vbmNlJyIpOwoKCQlpZiAobWFpbCgk dG8sICRzdWJqZWN0LCAkbXNnLCAkaGVhZGVycykpCgkJewoJCQkkX1BPU1QgPSBhcnJheSgp OwoKCQkJaWYgKCRjb3B5c2VuZGVyIGFuZCAkemVtX2NvbnRhY3RfZnJvbSkKCQkJewoJCQkJ bWFpbCh6ZW1fY29udGFjdF9zdHJpcCgkemVtX2NvbnRhY3RfZnJvbSksICRzdWJqZWN0LCAk bXNnLCAkaGVhZGVycyk7CgkJCX0KCgkJCWlmICgkcmVkaXJlY3QpCgkJCXsKCQkJCXdoaWxl IChAb2JfZW5kX2NsZWFuKCkpOwoJCQkJJHVyaSA9IGh1Lmx0cmltKCRyZWRpcmVjdCwnLycp OwoJCQkJaWYgKGVtcHR5KCRfU0VSVkVSWydGQ0dJX1JPTEUnXSkgYW5kIGVtcHR5KCRfRU5W WydGQ0dJX1JPTEUnXSkpCgkJCQl7CgkJCQkJdHhwX3N0YXR1c19oZWFkZXIoJzMwMyBTZWUg T3RoZXInKTsKCQkJCQloZWFkZXIoJ0xvY2F0aW9uOiAnLiR1cmkpOwoJCQkJCWhlYWRlcign Q29ubmVjdGlvbjogY2xvc2UnKTsKCQkJCQloZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAwJyk7 CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHVyaSA9IGh0bWxzcGVjaWFsY2hhcnMoJHVy aSk7CgkJCQkJJHJlZnJlc2ggPSB6ZW1fY29udGFjdF9nVHh0KCdyZWZyZXNoJyk7CgkJCQkJ ZWNobyA8PDxFTkQKPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAx LjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQv eGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5v cmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiI+CjxoZWFkPgoJPHRpdGxl PiRzaXRlbmFtZTwvdGl0bGU+Cgk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KCTxtZXRhIGh0dHAtZXF1aXY9 InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPSR1cmkiIC8+CjwvaGVhZD4KPGJvZHk+CjxhIGhy ZWY9IiR1cmkiPiRyZWZyZXNoPC9hPgo8L2JvZHk+CjwvaHRtbD4KRU5EOwoJCQkJfQoJCQkJ ZXhpdDsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gJzxkaXYgY2xhc3M9InplbVRo YW5rcyIgaWQ9InpjcicuJHplbV9jb250YWN0X2Zvcm1faWQuJyI+JyAuCgkJCQkJKCR0aGFu a3NfZm9ybSA/IGZldGNoX2Zvcm0oJHRoYW5rc19mb3JtKSA6ICR0aGFua3MpIC4KCQkJCQkn PC9kaXY+JzsKCQkJfQoJCX0KCgkJZWxzZQoJCXsKCQkJJG91dCAuPSBncmFmKHplbV9jb250 YWN0X2dUeHQoJ21haWxfc29ycnknKSk7CgkJfQoJfQoKCWlmICgkc2hvd19pbnB1dCBhbmQg ISRzZW5kX2FydGljbGUgb3IgZ3BzKCd6ZW1fY29udGFjdF9zZW5kX2FydGljbGUnKSkKCXsK CQlyZXR1cm4gJzxmb3JtIG1ldGhvZD0icG9zdCInLigoISRzaG93X2Vycm9yIGFuZCAkemVt X2NvbnRhY3RfZXJyb3IpID8gJycgOiAnIGlkPSJ6Y3InLiR6ZW1fY29udGFjdF9mb3JtX2lk LiciJykuJyBjbGFzcz0iemVtQ29udGFjdEZvcm0iIGFjdGlvbj0iJy5odG1sc3BlY2lhbGNo YXJzKHNlcnZlclNldCgnUkVRVUVTVF9VUkknKSkuJyN6Y3InLiR6ZW1fY29udGFjdF9mb3Jt X2lkLiciPicuCgkJCSggJGxhYmVsID8gbi4nPGZpZWxkc2V0PicgOiBuLic8ZGl2PicgKS4K CQkJKCAkbGFiZWwgPyBuLic8bGVnZW5kPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLic8 L2xlZ2VuZD4nIDogJycgKS4KCQkJJG91dC4KCQkJbi4nPGlucHV0IHR5cGU9ImhpZGRlbiIg bmFtZT0iemVtX2NvbnRhY3Rfbm9uY2UiIHZhbHVlPSInLiR6ZW1fY29udGFjdF9ub25jZS4n IiAvPicuCgkJCW4uJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InplbV9jb250YWN0X2Zv cm1faWQiIHZhbHVlPSInLiR6ZW1fY29udGFjdF9mb3JtX2lkLiciIC8+Jy4KCQkJJGZvcm0u CgkJCWNhbGxiYWNrX2V2ZW50KCd6ZW1jb250YWN0LmZvcm0nKS4KCQkJKCAkbGFiZWwgPyAo bi4nPC9maWVsZHNldD4nKSA6IChuLic8L2Rpdj4nKSApLgoJCQluLic8L2Zvcm0+JzsKCX0K CglyZXR1cm4gJyc7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3N0cmlwKCRzdHIsICRoZWFk ZXIgPSBUUlVFKSB7CglpZiAoJGhlYWRlcikgJHN0ciA9IHN0cmlwX3JuKCRzdHIpOwoJcmV0 dXJuIHByZWdfcmVwbGFjZSgnL1tceDAwXS8nLCAnICcsICRzdHIpOwp9CgpmdW5jdGlvbiB6 ZW1fY29udGFjdF90ZXh0KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAk emVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXko CgkJJ2JyZWFrJwkJPT4gYnIsCgkJJ2RlZmF1bHQnCT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAn JywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCd0ZXh0JyksCgkJJ21heCcJCT0+ IDEwMCwKCQknbWluJwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4g MSwKCQknc2l6ZScJCT0+ICcnCgkpLCAkYXR0cykpOwoKCSRtaW4gPSBpbnR2YWwoJG1pbik7 CgkkbWF4ID0gaW50dmFsKCRtYXgpOwoJJHNpemUgPSBpbnR2YWwoJHNpemUpOwoKCWlmIChl bXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoK CWlmICgkemVtX2NvbnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IHRyaW0ocHMoJG5hbWUp KTsKCQkkdXRmOGxlbiA9IHByZWdfbWF0Y2hfYWxsKCIvLi9zdSIsICR2YWx1ZSwgJHV0Zjhh cik7CgkJJGhsYWJlbCA9IGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKTsKCgkJaWYgKHN0cmxl bigkdmFsdWUpKQoJCXsKCQkJaWYgKCEkdXRmOGxlbikKCQkJewoJCQkJJHplbV9jb250YWN0 X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX3V0ZjgnLCAkaGxhYmVsKTsK CQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2VpZiAoJG1pbiBh bmQgJHV0ZjhsZW4gPCAkbWluKQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHpl bV9jb250YWN0X2dUeHQoJ21pbl93YXJuaW5nJywgJGhsYWJlbCwgJG1pbik7CgkJCQkkaXNF cnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtYXggYW5kICR1dGY4 bGVuID4gJG1heCkKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFj dF9nVHh0KCdtYXhfd2FybmluZycsICRobGFiZWwsICRtYXgpOwoJCQkJJGlzRXJyb3IgPSAi ZXJyb3JFbGVtZW50IjsKCQkJCSMkdmFsdWUgPSBqb2luKCcnLGFycmF5X3NsaWNlKCRhclsw XSwwLCRtYXgpKTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQl6ZW1fY29udGFjdF9zdG9yZSgk bmFtZSwgJGxhYmVsLCAkdmFsdWUpOwoJCQl9CgkJfQoJCWVsc2VpZiAoJHJlcXVpcmVkKQoJ CXsKCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9t aXNzaW5nJywgJGhsYWJlbCk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoJ fQoKCWVsc2UKCXsKCQkkdmFsdWUgPSAkZGVmYXVsdDsKCX0KCgkkc2l6ZSA9ICgkc2l6ZSkg PyAnIHNpemU9IicuJHNpemUuJyInIDogJyc7CgkkbWF4bGVuZ3RoID0gKCRtYXgpID8gJyBt YXhsZW5ndGg9IicuJG1heC4nIicgOiAnJzsKCgkkemVtUmVxdWlyZWQgPSAkcmVxdWlyZWQg PyAnemVtUmVxdWlyZWQnIDogJyc7CgogICAgICAgIHJldHVybiAnPGxhYmVsIGZvcj0iJy4k bmFtZS4nIiBjbGFzcz0iemVtVGV4dCAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nICcuJG5h bWUuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGFiZWw+Jy4kYnJlYWsuCgkJ JzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iemVtVGV4dCAnLiR6 ZW1SZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciIHZhbHVlPSInLmh0bWxz cGVjaWFsY2hhcnMoJHZhbHVlKS4nIicuJHNpemUuJG1heGxlbmd0aC4nIC8+JzsKfQoKZnVu Y3Rpb24gemVtX2NvbnRhY3RfdGV4dGFyZWEoJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRh Y3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9s QXR0cyhhcnJheSgKCQknYnJlYWsnCQk9PiBiciwKCQknY29scycJCT0+IDU4LAoJCSdkZWZh dWx0Jwk9PiAnJywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRh Y3RfZ1R4dCgnbWVzc2FnZScpLAoJCSdtYXgnCQk9PiAxMDAwMCwKCQknbWluJwkJPT4gMCwK CQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQkncm93cycJCT0+IDgKCSks ICRhdHRzKSk7CgoJJG1pbiA9IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwoJG1heCk7 CgkkY29scyA9IGludHZhbCgkY29scyk7Cgkkcm93cyA9IGludHZhbCgkcm93cyk7CgoJaWYg KGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7 CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJJHZhbHVlID0gcHJlZ19yZXBsYWNl KCcvXlxzKltcclxuXS8nLCAnJywgcnRyaW0ocHMoJG5hbWUpKSk7CgkJJHV0ZjhsZW4gPSBw cmVnX21hdGNoX2FsbCgiLy4vc3UiLCBsdHJpbSgkdmFsdWUpLCAkdXRmOGFyKTsKCQkkaGxh YmVsID0gaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpOwoKCQlpZiAoc3RybGVuKGx0cmltKCR2 YWx1ZSkpKQoJCXsKCQkJaWYgKCEkdXRmOGxlbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vy cm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX3V0ZjgnLCAkaGxhYmVsKTsKCQkJ CSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2VpZiAoJG1pbiBhbmQg JHV0ZjhsZW4gPCAkbWluKQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9j b250YWN0X2dUeHQoJ21pbl93YXJuaW5nJywgJGhsYWJlbCwgJG1pbik7CgkJCQkkaXNFcnJv ciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtYXggYW5kICR1dGY4bGVu ID4gJG1heCkKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9n VHh0KCdtYXhfd2FybmluZycsICRobGFiZWwsICRtYXgpOwoJCQkJJGlzRXJyb3IgPSAiZXJy b3JFbGVtZW50IjsKCQkJCSMkdmFsdWUgPSBqb2luKCcnLGFycmF5X3NsaWNlKCR1dGY4YXJb MF0sMCwkbWF4KSk7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJemVtX2NvbnRhY3Rfc3RvcmUo JG5hbWUsICRsYWJlbCwgJHZhbHVlKTsKCQkJfQoJCX0KCgkJZWxzZWlmICgkcmVxdWlyZWQp CgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ZpZWxk X21pc3NpbmcnLCAkaGxhYmVsKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQl9 Cgl9CgoJZWxzZQoJewoJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJfQoKCSR6ZW1SZXF1aXJlZCA9 ICRyZXF1aXJlZCA/ICd6ZW1SZXF1aXJlZCcgOiAnJzsKCglyZXR1cm4gJzxsYWJlbCBmb3I9 IicuJG5hbWUuJyIgY2xhc3M9InplbVRleHRhcmVhICcuJHplbVJlcXVpcmVkLiRpc0Vycm9y LicgJy4kbmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRi cmVhay4KCQknPHRleHRhcmVhIGlkPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1UZXh0YXJlYSAn LiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciIGNvbHM9IicuJGNv bHMuJyIgcm93cz0iJy4kcm93cy4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKS4nPC90 ZXh0YXJlYT4nOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9lbWFpbCgkYXR0cykKewoJZ2xv YmFsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdCwgJHplbV9jb250 YWN0X2Zyb20sICR6ZW1fY29udGFjdF9yZWNpcGllbnQ7CgoJZXh0cmFjdCh6ZW1fY29udGFj dF9sQXR0cyhhcnJheSgKCQknZGVmYXVsdCcJPT4gJycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJ CSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2VtYWlsJyksCgkJJ21heCcJCT0+IDEw MCwKCQknbWluJwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gMSwK CQknYnJlYWsnCQk9PiBiciwKCQknc2l6ZScJCT0+ICcnLAoJCSdzZW5kX2FydGljbGUnCT0+ IDAKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFj dF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJJGVtYWlsID0gJHplbV9jb250YWN0X3N1Ym1pdCA/ IHRyaW0ocHMoJG5hbWUpKSA6ICRkZWZhdWx0OwoKCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0 IGFuZCBzdHJsZW4oJGVtYWlsKSkKCXsKCQlpZiAoIWlzX3ZhbGlkX2VtYWlsKCRlbWFpbCkp CgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFs aWRfZW1haWwnLCBodG1sc3BlY2lhbGNoYXJzKCRlbWFpbCkpOwoJCQkkaXNFcnJvciA9ICJl cnJvckVsZW1lbnQiOwoJCX0KCgkJZWxzZQoJCXsKCQkJcHJlZ19tYXRjaCgiL0AoLispJC8i LCAkZW1haWwsICRtYXRjaCk7CgkJCSRkb21haW4gPSAkbWF0Y2hbMV07CgoJCQlpZiAoaXNf Y2FsbGFibGUoJ2NoZWNrZG5zcnInKSBhbmQgY2hlY2tkbnNycigndGV4dHBhdHRlcm4uY29t LicsJ0EnKSBhbmQgIWNoZWNrZG5zcnIoJGRvbWFpbi4nLicsJ01YJykgYW5kICFjaGVja2Ru c3JyKCRkb21haW4uJy4nLCdBJykpCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0g emVtX2NvbnRhY3RfZ1R4dCgnaW52YWxpZF9ob3N0JywgaHRtbHNwZWNpYWxjaGFycygkZG9t YWluKSk7CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlCgkJ CXsKCQkJCWlmICgkc2VuZF9hcnRpY2xlKSB7CgkJCQkJJHplbV9jb250YWN0X3JlY2lwaWVu dCA9ICRlbWFpbDsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCSR6ZW1fY29udGFjdF9mcm9tID0g JGVtYWlsOwoJCQkJfQoJCQl9CgkJfQoJfQoKCXJldHVybiB6ZW1fY29udGFjdF90ZXh0KGFy cmF5KAoJCSdkZWZhdWx0Jwk9PiAkZW1haWwsCgkJJ2lzRXJyb3InCT0+ICRpc0Vycm9yLAoJ CSdsYWJlbCcJCT0+ICRsYWJlbCwKCQknbWF4JwkJPT4gJG1heCwKCQknbWluJwkJPT4gJG1p biwKCQknbmFtZScJCT0+ICRuYW1lLAoJCSdyZXF1aXJlZCcJPT4gJHJlcXVpcmVkLAoJCSdi cmVhaycJCT0+ICRicmVhaywKCQknc2l6ZScJCT0+ICRzaXplCgkpKTsKfQoKZnVuY3Rpb24g emVtX2NvbnRhY3Rfc2VsZWN0KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9y LCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJy YXkoCgkJJ25hbWUnCQk9PiAnJywKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2RlbGltaXRlcicJ PT4gJywnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9n VHh0KCdvcHRpb24nKSwKCQknbGlzdCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2dlbmVyYWxf aW5xdWlyeScpLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQknc2VsZWN0ZWQnCT0+ICcnCgkpLCAk YXR0cykpOwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwy bmFtZSgkbGFiZWwpOwoKCSRsaXN0ID0gYXJyYXlfbWFwKCd0cmltJywgc3BsaXQoJGRlbGlt aXRlciwgcHJlZ19yZXBsYWNlKCcvW1xyXG5cdFxzXSsvJywgJyAnLCRsaXN0KSkpOwoKCWlm ICgkemVtX2NvbnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IHRyaW0ocHMoJG5hbWUpKTsK CgkJaWYgKHN0cmxlbigkdmFsdWUpKQoJCXsKCQkJaWYgKGluX2FycmF5KCR2YWx1ZSwgJGxp c3QpKQoJCQl7CgkJCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUp OwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2Nv bnRhY3RfZ1R4dCgnaW52YWxpZF92YWx1ZScsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSwg aHRtbHNwZWNpYWxjaGFycygkdmFsdWUpKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVu dCI7CgkJCX0KCQl9CgoJCWVsc2VpZiAoJHJlcXVpcmVkKQoJCXsKCQkJJHplbV9jb250YWN0 X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5nJywgaHRtbHNwZWNp YWxjaGFycygkbGFiZWwpKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQl9Cgl9 CgllbHNlCgl7CgkJJHZhbHVlID0gJHNlbGVjdGVkOwoJfQoKCSRvdXQgPSAnJzsKCglmb3Jl YWNoICgkbGlzdCBhcyAkaXRlbSkKCXsKCQkkb3V0IC49IG4udC4nPG9wdGlvbicuKCRpdGVt ID09ICR2YWx1ZSA/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIj4nIDogJz4nKS4oc3RybGVuKCRp dGVtKSA/IGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0pIDogJyAnKS4nPC9vcHRpb24+JzsKCX0K CgkkemVtUmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0 dXJuICc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1TZWxlY3QgJy4kemVtUmVx dWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwp Lic8L2xhYmVsPicuJGJyZWFrLgoJCW4uJzxzZWxlY3QgaWQ9IicuJG5hbWUuJyIgbmFtZT0i Jy4kbmFtZS4nIiBjbGFzcz0iemVtU2VsZWN0ICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLici PicuCgkJCSRvdXQuCgkJbi4nPC9zZWxlY3Q+JzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rf Y2hlY2tib3goJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29u dGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknYnJl YWsnCQk9PiAnICcsCgkJJ2NoZWNrZWQnCT0+IDAsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSds YWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2NoZWNrYm94JyksCgkJJ25hbWUnCQk9PiAn JywKCQkncmVxdWlyZWQnCT0+IDEKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkg JG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1fY29u dGFjdF9zdWJtaXQpCgl7CgkJJHZhbHVlID0gKGJvb2wpIHBzKCRuYW1lKTsKCgkJaWYgKCRy ZXF1aXJlZCBhbmQgISR2YWx1ZSkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVt X2NvbnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVs KSk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoKCQllbHNlCgkJewoJCQl6 ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUgPyBnVHh0KCd5ZXMnKSA6 IGdUeHQoJ25vJykpOwoJCX0KCX0KCgllbHNlIHsKCQkkdmFsdWUgPSAkY2hlY2tlZDsKCX0K CgkkemVtUmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0 dXJuICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1D aGVja2JveCAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciJy4K CQkoJHZhbHVlID8gJyBjaGVja2VkPSJjaGVja2VkIicgOiAnJykuJyAvPicuJGJyZWFrLgoJ CSc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1DaGVja2JveCAnLiR6ZW1SZXF1 aXJlZC4kaXNFcnJvci4nICcuJG5hbWUuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCku JzwvbGFiZWw+JzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc2VydmVyaW5mbygkYXR0cykK ewoJZ2xvYmFsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9s QXR0cyhhcnJheSgKCQknbGFiZWwnCQk9PiAnJywKCQknbmFtZScJCT0+ICcnCgkpLCAkYXR0 cykpOwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFt ZSgkbGFiZWwpOwoKCWlmIChzdHJsZW4oJG5hbWUpIGFuZCAkemVtX2NvbnRhY3Rfc3VibWl0 KQoJewoJCWlmICghJGxhYmVsKSAkbGFiZWwgPSAkbmFtZTsKCQl6ZW1fY29udGFjdF9zdG9y ZSgkbmFtZSwgJGxhYmVsLCBzZXJ2ZXJTZXQoJG5hbWUpKTsKCX0KfQoKZnVuY3Rpb24gemVt X2NvbnRhY3Rfc2VjcmV0KCRhdHRzLCAkdGhpbmcgPSAnJykKewoJZ2xvYmFsICR6ZW1fY29u dGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknbmFt ZScJPT4gJycsCgkJJ2xhYmVsJwk9PiB6ZW1fY29udGFjdF9nVHh0KCdzZWNyZXQnKSwKCQkn dmFsdWUnCT0+ICcnCgkpLCAkYXR0cykpOwoKCSRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwy bmFtZSgkbmFtZSA/ICRuYW1lIDogJGxhYmVsKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1p dCkKCXsKCQlpZiAoJHRoaW5nKSAkdmFsdWUgPSB0cmltKHBhcnNlKCR0aGluZykpOwoJCXpl bV9jb250YWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7Cgl9CgoJcmV0dXJuICcn Owp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9yYWRpbygkYXR0cykKewoJZ2xvYmFsICR6ZW1f Y29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdCwgJHplbV9jb250YWN0X3ZhbHVl czsKCglleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+ICcg JywKCQknY2hlY2tlZCcJPT4gMCwKCQknZ3JvdXAnCQk9PiAnJywKCQknbGFiZWwnCQk9PiB6 ZW1fY29udGFjdF9nVHh0KCdvcHRpb24nKSwKCQknbmFtZScJCT0+ICcnCgkpLCAkYXR0cykp OwoKCXN0YXRpYyAkY3VyX25hbWUgPSAnJzsKCXN0YXRpYyAkY3VyX2dyb3VwID0gJyc7CgoJ aWYgKCEkbmFtZSBhbmQgISRncm91cCBhbmQgISRjdXJfbmFtZSBhbmQgISRjdXJfZ3JvdXAp IHsKCQkkY3VyX2dyb3VwID0gemVtX2NvbnRhY3RfZ1R4dCgncmFkaW8nKTsKCQkkY3VyX25h bWUgPSAkY3VyX2dyb3VwOwoJfQoJaWYgKCRncm91cCBhbmQgISRuYW1lIGFuZCAkZ3JvdXAg IT0gJGN1cl9ncm91cCkgJG5hbWUgPSAkZ3JvdXA7CgoJaWYgKCRuYW1lKSAkY3VyX25hbWUg PSAkbmFtZTsKCWVsc2UgJG5hbWUgPSAkY3VyX25hbWU7CgoJaWYgKCRncm91cCkgJGN1cl9n cm91cCA9ICRncm91cDsKCWVsc2UgJGdyb3VwID0gJGN1cl9ncm91cDsKCgkkaWQgICA9ICdx Jy5tZDUoJG5hbWUuJz0+Jy4kbGFiZWwpOwoJJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJu YW1lKCRuYW1lKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkaXNfY2hlY2tl ZCA9IChwcygkbmFtZSkgPT0gJGlkKTsKCgkJaWYgKCRpc19jaGVja2VkIG9yICRjaGVja2Vk IGFuZCAhaXNzZXQoJHplbV9jb250YWN0X3ZhbHVlc1skbmFtZV0pKQoJCXsKCQkJemVtX2Nv bnRhY3Rfc3RvcmUoJG5hbWUsICRncm91cCwgJGxhYmVsKTsKCQl9Cgl9CgoJZWxzZQoJewoJ CSRpc19jaGVja2VkID0gJGNoZWNrZWQ7Cgl9CgoJcmV0dXJuICc8aW5wdXQgdmFsdWU9Iicu JGlkLiciIHR5cGU9InJhZGlvIiBpZD0iJy4kaWQuJyIgY2xhc3M9InplbVJhZGlvICcuJG5h bWUuJyIgbmFtZT0iJy4kbmFtZS4nIicuCgkJKCAkaXNfY2hlY2tlZCA/ICcgY2hlY2tlZD0i Y2hlY2tlZCIgLz4nIDogJyAvPicpLiRicmVhay4KCQknPGxhYmVsIGZvcj0iJy4kaWQuJyIg Y2xhc3M9InplbVJhZGlvICcuJG5hbWUuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCku JzwvbGFiZWw+JzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlKCRhdHRz KQp7CglpZiAoIWlzc2V0KCRfUkVRVUVTVFsnemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlJ10p KSB7CgkJJGxpbmt0ZXh0ID0gKGVtcHR5KCRhdHRzWydsaW5rdGV4dCddKSkgPyB6ZW1fY29u dGFjdF9nVHh0KCdzZW5kX2FydGljbGUnKSA6ICRhdHRzWydsaW5rdGV4dCddOwoJCSRqb2lu ID0gKGVtcHR5KCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSkpID8gJz8nIDogJyYnOwoJCSRo cmVmID0gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10uJGpvaW4uJ3plbV9jb250YWN0X3NlbmRf YXJ0aWNsZT15ZXMnOwoJCXJldHVybiAnPGEgaHJlZj0iJy5odG1sc3BlY2lhbGNoYXJzKCRo cmVmKS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxpbmt0ZXh0KS4nPC9hPic7Cgl9CglyZXR1 cm47Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3N1Ym1pdCgkYXR0cywgJHRoaW5nKQp7Cgll eHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdidXR0b24nCT0+IDAsCgkJJ2xh YmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnc2VuZCcpCgkpLCAkYXR0cykpOwoKCSRsYWJl bCA9IGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKTsKCglpZiAoJGJ1dHRvbiBvciBzdHJsZW4o JHRoaW5nKSkKCXsKCQlyZXR1cm4gJzxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iemVt U3VibWl0IiBuYW1lPSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZhbHVlPSInLiRsYWJlbC4nIj4n LigkdGhpbmcgPyB0cmltKHBhcnNlKCR0aGluZykpIDogJGxhYmVsKS4nPC9idXR0b24+JzsK CX0KCWVsc2UKCXsKCQlyZXR1cm4gJzxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJ6ZW1T dWJtaXQiIG5hbWU9InplbV9jb250YWN0X3N1Ym1pdCIgdmFsdWU9IicuJGxhYmVsLiciIC8+ JzsKCX0KfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfbEF0dHMoJGFyciwgJGF0dHMpCnsKCWZv cmVhY2goYXJyYXkoJ2J1dHRvbicsICdjb3B5c2VuZGVyJywgJ2NoZWNrZWQnLCAncmVxdWly ZWQnLCAnc2VuZF9hcnRpY2xlJywgJ3Nob3dfaW5wdXQnLCAnc2hvd19lcnJvcicpIGFzICRr ZXkpCgl7CgkJaWYgKGlzc2V0KCRhdHRzWyRrZXldKSkKCQl7CgkJCSRhdHRzWyRrZXldID0g KCRhdHRzWyRrZXldID09PSAneWVzJyBvciBpbnR2YWwoJGF0dHNbJGtleV0pKSA/IDEgOiAw OwoJCX0KCX0KCWlmIChpc3NldCgkYXR0c1snYnJlYWsnXSkgYW5kICRhdHRzWydicmVhaydd ID09ICdicicpICRhdHRzWydicmVhayddID0gJzxiciAvPic7CglyZXR1cm4gbEF0dHMoJGFy ciwgJGF0dHMpOwp9CgpjbGFzcyB6ZW1jb250YWN0X2V2YWx1YXRpb24KewoJdmFyICRzdGF0 dXM7CgoJZnVuY3Rpb24gemVtY29udGFjdF9ldmFsdWF0aW9uKCkgewoJCSR0aGlzLT5zdGF0 dXMgPSAwOwoJfQoKCWZ1bmN0aW9uIGFkZF96ZW1jb250YWN0X3N0YXR1cygkY2hlY2spIHsK CQkkdGhpcy0+c3RhdHVzICs9ICRjaGVjazsKCX0KCglmdW5jdGlvbiBnZXRfemVtY29udGFj dF9zdGF0dXMoKSB7CgkJcmV0dXJuICR0aGlzLT5zdGF0dXM7Cgl9Cn0KCmZ1bmN0aW9uICZn ZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKQp7CglzdGF0aWMgJGluc3RhbmNlOwoKCWlmKCFp c3NldCgkaW5zdGFuY2UpKSB7CgkJJGluc3RhbmNlID0gbmV3IHplbWNvbnRhY3RfZXZhbHVh dGlvbigpOwoJfQoJcmV0dXJuICRpbnN0YW5jZTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rf bGFiZWwybmFtZSgkbGFiZWwpCnsKCSRsYWJlbCA9IHRyaW0oJGxhYmVsKTsKCWlmIChzdHJs ZW4oJGxhYmVsKSA9PSAwKSByZXR1cm4gJ2ludmFsaWQnOwoJaWYgKHN0cmxlbigkbGFiZWwp IDw9IDMyIGFuZCBwcmVnX21hdGNoKCcvXlthLXpBLVpdW0EtWmEtejAtOTpfLV0qJC8nLCAk bGFiZWwpKSByZXR1cm4gJGxhYmVsOwoJZWxzZSByZXR1cm4gJ3EnLm1kNSgkbGFiZWwpOwp9 CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpCnsK CWdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0X2xhYmVscywgJHplbV9j b250YWN0X3ZhbHVlczsKCSR6ZW1fY29udGFjdF9mb3JtWyRsYWJlbF0gPSAkdmFsdWU7Cgkk emVtX2NvbnRhY3RfbGFiZWxzWyRuYW1lXSA9ICRsYWJlbDsKCSR6ZW1fY29udGFjdF92YWx1 ZXNbJG5hbWVdID0gJHZhbHVlOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9tYWlsaGVhZGVy KCRzdHJpbmcsICR0eXBlKQp7CglnbG9iYWwgJHByZWZzOwoJaWYgKCFzdHJzdHIoJHN0cmlu ZywnPT8nKSBhbmQgIXByZWdfbWF0Y2goJy9bXHgwMC1ceDFGXHg3Ri1ceEZGXS8nLCAkc3Ry aW5nKSkgewoJCWlmICgicGhyYXNlIiA9PSAkdHlwZSkgewoJCQlpZiAocHJlZ19tYXRjaCgn L1tdWygpPD5ALDs6Ii5ceDVDXS8nLCAkc3RyaW5nKSkgewoJCQkJJHN0cmluZyA9ICciJy4g c3RydHIoJHN0cmluZywgYXJyYXkoIlxcIiA9PiAiXFxcXCIsICciJyA9PiAnXCInKSkgLiAn Iic7CgkJCX0KCQl9CgkJZWxzZWlmICgidGV4dCIgIT0gJHR5cGUpIHsKCQkJdHJpZ2dlcl9l cnJvcignVW5rbm93biBlbmNvZGVfbWFpbGhlYWRlciB0eXBlJywgRV9VU0VSX1dBUk5JTkcp OwoJCX0KCQlyZXR1cm4gJHN0cmluZzsKCX0KCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWls Y2hhcnNldCddKSB7CgkJJHN0YXJ0ID0gJz0/SVNPLTg4NTktMT9CPyc7CgkJJHBjcmUgID0g Jy8uezEsNDJ9L3MnOwoJfQoJZWxzZSB7CgkJJHN0YXJ0ID0gJz0/VVRGLTg/Qj8nOwoJCSRw Y3JlICA9ICcvLnsxLDQ1fSg/PVtceDAwLVx4N0ZceEMwLVx4RkZdfCQpL3MnOwoJfQoJJGVu ZCA9ICc/PSc7Cgkkc2VwID0gaXNfd2luZG93cygpID8gIlxyXG4iIDogIlxuIjsKCXByZWdf bWF0Y2hfYWxsKCRwY3JlLCAkc3RyaW5nLCAkbWF0Y2hlcyk7CglyZXR1cm4gJHN0YXJ0IC4g am9pbigkZW5kLiRzZXAuJyAnLiRzdGFydCwgYXJyYXlfbWFwKCdiYXNlNjRfZW5jb2RlJywk bWF0Y2hlc1swXSkpIC4gJGVuZDsKfQoiO3M6MzoibWQ1IjtzOjMyOiJjYjc3MmYzMDU3Mjdh OWU5ZTVmZDdkMTYxNmY1Njk5NiI7fQ==