# zem_contact_reborn v4.0.3.21 # 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 IjtzOjg6IjQuMC4zLjIxIjtzOjY6ImF1dGhvciI7czoxMzoiVFhQIENvbW11bml0eSI7czox MDoiYXV0aG9yX3VyaSI7czo1MToiaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIzNzI4IjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6MzY2NzU6 IiA8c3R5bGU+CiAgIGxpIGNvZGUge2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRk aW5nOiAwLjVlbSAxZW07IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAj Y2NjO30KICAgaDEsIGgyLCBoMywgaDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7 IGZvbnQtd2VpZ2h0OiBib2xkO30KICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07 fQogICBoMiwgaDMge21hcmdpbi10b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9 CiAgIGgyIHtmb250LXNpemU6IDJlbTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAg bGkgYSBjb2RlIHtmb250LXdlaWdodDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2Fybmlu ZyB7Y29sb3I6cmVkO30KIDwvc3R5bGU+Cgo8aDEgaWQ9InRvcCI+WmVtIENvbnRhY3QgUmVi b3JuPC9oMT4KCjxwPlBsZWFzZSByZXBvcnRzIGJ1Z3MgYW5kIHByb2JsZW1zIHdpdGggdGhp cyBwbHVnaW4gaW4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIzNzI4Ij50aGlzIGZvcnVtIHRocmVhZDwvYT4uPC9wPgoKPHAgY2xh c3M9InJlcXVpcmVkIj5UaGlzIHBsdWdpbiByZXF1aXJlcyBhIHNlcGFyYXRlIGxhbmd1YWdl IHBsdWdpbiBjYWxsZWQgPGNvZGU+emVtX2NvbnRhY3RfbGFuZzwvY29kZT4gdG8gYmUgaW5z dGFsbGVkIGFuZCBhY3RpdmF0ZWQgdG8gd29yayBwcm9wZXJseS48L3A+CgoKPGgyIGlkPSJj b250ZW50cyI+Q29udGVudHM8L2gyPgoKPHVsPgoJPGxpPjxhIGhyZWY9IiNmZWF0dXJlcyI+ RmVhdHVyZXM8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjc3RhcnQiPkdldHRpbmcgc3RhcnRl ZDwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2NvbnRhY3Rmb3JtIj5Db250YWN0IGZvcm08 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3NlbmRhcnRpY2xlIj5TZW5kIGFydGljbGU8L2E+ PC9saT4KCTwvdWw+PC9saT4KCTxsaT48YSBocmVmPSIjdGFncyI+VGFnczwvYT4KCTx1bD4K CQk8bGk+PGEgaHJlZj0iI3pjIj4gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCAvJmd0Ozwv Y29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y190ZXh0Ij4gPGNvZGU+Jmx0O3R4 cDp6ZW1fY29udGFjdF90ZXh0IC8mZ3Q7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJl Zj0iI3pjX2VtYWlsIj4gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9lbWFpbCAvJmd0Ozwv Y29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y190ZXh0YXJlYSI+IDxjb2RlPiZs dDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgLyZndDs8L2NvZGU+IDwvYT48L2xpPgoJCTxs aT48YSBocmVmPSIjemNfc3VibWl0Ij4gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zdWJt aXQgLyZndDs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfc2VsZWN0Ij4g PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgLyZndDs8L2NvZGU+IDwvYT48L2xp PgoJCTxsaT48YSBocmVmPSIjemNfY2hlY2tib3giPiA8Y29kZT4mbHQ7dHhwOnplbV9jb250 YWN0X2NoZWNrYm94IC8mZ3Q7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pj X3JhZGlvIj4gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9yYWRpbyAvJmd0OzwvY29kZT4g PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19zZWNyZXQiPiA8Y29kZT4mbHQ7dHhwOnpl bV9jb250YWN0X3NlY3JldCAvJmd0OzwvY29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9 IiN6Y19zZXJ2ZXJfaW5mbyI+IDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VydmVyaW5m byAvJmd0OzwvY29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19zZW5kX2FydGlj bGUiPiA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSAvJmd0OzwvY29k ZT4gPC9hPjwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI2FkdmFuY2VkIj5BZHZh bmNlZCBleGFtcGxlczwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3Nob3dfZXJyb3IiPlNl cGFyYXRlIGlucHV0IGFuZCBlcnJvciBmb3JtczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIj c3ViamVjdF9mb3JtIj5Vc2VyIHNlbGVjdGFibGUgc3ViamVjdCBmaWVsZDwvYT48L2xpPgoJ CTxsaT48YSBocmVmPSIjdG9fZm9ybSI+VXNlciBzZWxlY3RhYmxlIHJlY2lwaWVudCwgd2l0 aG91dCBzaG93aW5nIGVtYWlsIGFkZHJlc3NlczwvYT48L2xpPgoJPC91bD48L2xpPgoJPGxp PjxhIGhyZWY9IiNzdHlsaW5nIj5TdHlsaW5nPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI2hp c3RvcnkiPkhpc3Rvcnk8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjY3JlZGl0cyI+Q3JlZGl0 czwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNhcGkiPlBsdWdpbiA8c3BhbiBjbGFzcz0iY2Fw cyI+QVBJPC9zcGFuPiBhbmQgY2FsbGJhY2sgZXZlbnRzPC9hPjwvbGk+CjwvdWw+CgoKCjxo MiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCjx1bD4KCTxsaT5BcmJpdHJhcnkgdGV4 dCBmaWVsZHMgY2FuIGJlIHNwZWNpZmllZCwgd2l0aCBtaW4vbWF4L3JlcXVpcmVkIHNldHRp bmdzIGZvciB2YWxpZGF0aW9uLjwvbGk+Cgk8bGk+RW1haWwgYWRkcmVzcyB2YWxpZGF0aW9u LCBpbmNsdWRpbmcgYSBjaGVjayBmb3IgYSB2YWxpZCBNWCByZWNvcmQgKFVuaXggb25seSku PC9saT4KCTxsaT5TYWZlIGVzY2FwaW5nIG9mIGlucHV0IGRhdGEuPC9saT4KCTxsaT48c3Bh biBjbGFzcz0iY2FwcyI+VVRGPC9zcGFuPi04IHNhZmUuPC9saT4KCTxsaT5BY2Nlc3NpYmxl IGZvcm0gbGF5b3V0LCBpbmNsdWRpbmcgPGNvZGU+Jmx0O2xhYmVsJmd0OzwvY29kZT4sIDxj b2RlPiZsdDtsZWdlbmQmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O2ZpZWxkc2V0Jmd0Ozwv Y29kZT4gdGFncy48L2xpPgoJPGxpPlZhcmlvdXMgY2xhc3NlcyBhbmQgaWRzIHRvIGFsbG93 IGVhc3kgc3R5bGluZyBvZiBhbGwgcGFydHMgb2YgdGhlIGZvcm0uPC9saT4KCTxsaT5BIHNl cGFyYXRlIGxhbmd1YWdlIHBsdWctaW4gdG8gZW5hYmxlIGVhc3kgbG9jYWxpc2F0aW9uLjwv bGk+Cgk8bGk+U3BhbSBwcmV2ZW50aW9uIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+ ICh1c2VkIGJ5IFRyYW5xdWlsbG8mIzgyMTc7cyA8Y29kZT5wYXBfY29udGFjdF9jbGVhbmVy PC9jb2RlPiBwbHVnaW4pLjwvbGk+CjwvdWw+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRv IHRvcDwvYT48L3A+CgoKPGgyIGlkPSJzdGFydCI+R2V0dGluZyBzdGFydGVkPC9oMj4KCgo8 aDMgaWQ9ImNvbnRhY3Rmb3JtIj5Db250YWN0IGZvcm08L2gzPgoKPHA+VGhlIHNpbXBsZXN0 IGZvcm0gaXMgc2hvd24gYmVsb3csIHdoaWNoIHByb2R1Y2VzIGEgZGVmYXVsdCBmb3JtIHdp dGggTmFtZSwgRW1haWwgYW5kIE1lc3NhZ2UgZmllbGRzLiBFbWFpbCB3aWxsIGJlIGRlbGl2 ZXJlZCB0byByZWNpcGllbnRAZXhhbXBsZS5jb20sIHdpdGggdGhlIHVzZXImIzgyMTc7cyBz dXBwbGllZCBlbWFpbCBhcyB0aGUgJiM4MjIwO0Zyb206JiM4MjIxOyBhZGRyZXNzLjwvcD4K CjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVvdDtyZWNpcGllbnRAZXhh bXBsZS5jb20mcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5UbyBzcGVjaWZ5IGZpZWxk cyBleHBsaWNpdGx5LCB1c2Ugc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+Cgo8cHJlPjxjb2Rl PiZsdDt0eHA6emVtX2NvbnRhY3QgdG89JnF1b3Q7cmVjaXBpZW50QGV4YW1wbGUuY29tJnF1 b3Q7Jmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyZndDsKICAmbHQ7dHhwOnpl bV9jb250YWN0X3RleHQgbGFiZWw9JnF1b3Q7UGhvbmUmcXVvdDsgbWluPTcgbWF4PTE1LyZn dDsKICAmbHQ7dHhwOnplbV9jb250YWN0X3RleHRhcmVhIGxhYmVsPSZxdW90O1lvdXIgcXVl c3Rpb24mcXVvdDsgLyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X3N1Ym1pdCBsYWJlbD0m cXVvdDtTZW5kJnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT48 L3ByZT4KCjxwPkFsdGVybmF0aXZlbHksIHBsYWNlIHRoZSBmaWVsZCBzcGVjaWZpY2F0aW9u cyBpbiBhIFRleHRwYXR0ZXJuIGZvcm0sIGFuZCBjYWxsIGl0IGxpa2UgdGhpczo8L3A+Cgo8 cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QgdG89JnF1b3Q7cmVjaXBpZW50QGV4YW1w bGUuY29tJnF1b3Q7IGZvcm09JnF1b3Q7bXljb250YWN0Zm9ybSZxdW90OyAvJmd0OzwvY29k ZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMg aWQ9InNlbmRhcnRpY2xlIj5TZW5kIGFydGljbGU8L2gzPgoKV2l0aGluIHRoZSBjb250ZXh0 IG9mIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSwgdGhpcyBwbHVnaW4gY2FuIGJlIHVzZWQgdG8g c2VuZCB0aGUgYXJ0aWNsZSAob3IgZXhjZXJwdCwgaWYgaXQgZXhpc3RzKSB0byBhbiBlbWFp bCBhZGRyZXNzIHNwZWNpZmllZCBieSB0aGUgdmlzaXRvci4gVGhpcyByZXF1aXJlcyBhdCBs ZWFzdCB0d28gdGFnczoKPHVsPgoJPGxpPjxjb2RlPnplbV9jb250YWN0PC9jb2RlPiwgdG8g Y3JlYXRlIGZvcm0gdGhhdCBpcyBpbml0aWFsbHkgaGlkZGVuIGJ5IHNldHRpbmcgdGhlIDxj b2RlPnNlbmRfYXJ0aWNsZTwvY29kZT4gYXR0cmlidXRlLjwvbGk+Cgk8bGk+PGNvZGU+emVt X2NvbnRhY3Rfc2VuZF9hcnRpY2xlPC9jb2RlPiwgdG8gY3JlYXRlIGEgJiM4MjE2O3NlbmQg YXJ0aWNsZSYjODIxNzsgbGluayB3aGljaCByZXZlYWxzIHRoZSBhZm9yZW1lbnRpb25lZCBm b3JtIHdoZW4gY2xpY2tlZC48L2xpPgo8L3VsPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9j b250YWN0IHNlbmRfYXJ0aWNsZT0mcXVvdDsxJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2Nv bnRhY3Rfc2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+QnkgZGVmYXVsdCB0 aGUgZm9ybSBjb250YWlucyBmaWVsZHMgZm9yIHlvdXIgbmFtZSBhbmQgZW1haWwgYWRkcmVz cywgdGhlIHJlY2lwaWVudCYjODIxNztzIGVtYWlsIGFkZHJlc3MgYW5kIGEgcGVyc29uYWwg bWVzc2FnZSwgYnV0IHNpbWlsYXIgdG8gY29udGFjdCBmb3JtcyB5b3UgY2FuIGNyZWF0ZSB5 b3VyIG93biBmb3JtIGxheW91dC4gU29tZSB0aGluZ3MgeW91IG5lZWQgdG8ga25vdzo8YnIg Lz4KPHVsPgoJPGxpPlNldCB0aGUgPGNvZGU+c2VuZF9hcnRpY2xlPC9jb2RlPiBhdHRyaWJ1 dGUgdG8gPGNvZGU+MTwvY29kZT4gaW4gdGhlIDxjb2RlPnplbV9jb250YWN0PC9jb2RlPiB0 YWcuPC9saT4KCTxsaT5Vc2UgYSA8Y29kZT56ZW1fY29udGFjdF9lbWFpbDwvY29kZT4gdGFn IHdpdGggdGhlIDxjb2RlPnNlbmRfYXJ0aWNsZTwvY29kZT4gYXR0cmlidXRlIHNldCB0byA8 Y29kZT4xPC9jb2RlPi4gVGhpcyBmaWVsZCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJlY2lwaWVu dCBlbWFpbCBhZGRyZXNzLjwvbGk+PGJyIC8+CjwvdWw+PC9wPgoKPHByZT48Y29kZT4mbHQ7 dHhwOnplbV9jb250YWN0IHRvPSZxdW90O3lvdUBleGFtcGxlLmNvbSZxdW90OyBzZW5kX2Fy dGljbGU9JnF1b3Q7MSZxdW90OyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X2VtYWlsIGxh YmVsPSZxdW90O1JlY2lwaWVudCBFbWFpbCZxdW90OyBzZW5kX2FydGljbGU9JnF1b3Q7MSZx dW90OyAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgbGFiZWw9JnF1b3Q7WW91 ciBFbWFpbCZxdW90OyAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVs PSZxdW90O1NlbmQgQXJ0aWNsZSZxdW90OyAvJmd0OwombHQ7L3R4cDp6ZW1fY29udGFjdCZn dDsKCiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPjwvcHJl PgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMiBpZD0idGFn cyI+VGFnczwvaDI+Cgo8cD48YSBocmVmPSIjemMiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3QgLyZndDs8L2NvZGU+PC9hPiBwcm9kdWNlcyBhIGZsZXhpYmxlLCBjdXN0b21pc2FibGUg ZW1haWwgY29udGFjdCBmb3JtLiBJdCBpcyBpbnRlbmRlZCBmb3IgdXNlIGFzIGFuIGVucXVp cnkgZm9ybSBmb3IgY29tbWVyY2lhbCBhbmQgcHJpdmF0ZSBzaXRlcywgYW5kIGluY2x1ZGVz IHNldmVyYWwgZmVhdHVyZXMgdG8gaGVscCByZWR1Y2UgY29tbW9uIHByb2JsZW1zIHdpdGgg c3VjaCBmb3JtcyAoaW52YWxpZCBlbWFpbCBhZGRyZXNzZXMsIG1pc3NpbmcgaW5mb3JtYXRp b24pLjwvcD4KCjxwPjxhIGhyZWY9IiN6Y19zZW5kX2FydGljbGUiPjxjb2RlPiZsdDt0eHA6 emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPjwvYT4gY2FuIGJlIHVzZWQg dG8gY3JlYXRlIGEgJiM4MjIwO3NlbmQgYXJ0aWNsZSYjODIyMTsgbGluayB3aXRoaW4gYW4g YXJ0aWNsZSBmb3JtLCBjb25uZWN0aW5nIGl0IHRvIHRoZSBjb250YWN0IGZvcm0uPC9wPgoK PHA+QWxsIG90aGVyIHRhZ3MgcHJvdmlkZWQgYnkgdGhpcyBwbHVnaW4gY2FuIG9ubHkgYmUg dXNlZCBpbnNpZGUgYSA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT4gJiM4 MjMwOyA8Y29kZT4mbHQ7L3R4cDp6ZW1fY29udGFjdCZndDs8L2NvZGU+IGNvbnRhaW5lciB0 YWcgb3IgaW4gYSBUZXh0cGF0dGVybiBmb3JtIHVzZWQgYXMgdGhlIDxjb2RlPmZvcm08L2Nv ZGU+IGF0dHJpYnV0ZSBpbiB0aGUgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCAvJmd0Ozwv Y29kZT4gdGFnLjwvcD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4K Cgo8aDMgaWQ9InpjIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IC8mZ3Q7PC9jb2RlPjwv aDM+Cgo8cD5NYXkgYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyBvciBjb250YWluZXIgdGFn LiBQbGFjZSB0aGlzIHdoZXJlIHlvdSB3YW50IHRoZSBpbnB1dCBmb3JtIHRvIGdvLiBTdGF0 dXMgYW5kIGVycm9yIG1lc3NhZ2VzLCBpZiBhbnksIHdpbGwgYmUgZGlzcGxheWVkIGJlZm9y ZSB0aGUgZm9ybS48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+ dG89JnF1b3Q7ZW1haWwgYWRkcmVzcyZxdW90OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVp cmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4KUmVjaXBpZW50IGVtYWlsIGFkZHJlc3MuPC9s aT4KCTxsaT48Y29kZT50b19mb3JtPSZxdW90O2Zvcm0gbmFtZSZxdW90OzwvY29kZT48YnIg Lz4KVXNlIHNwZWNpZmllZCBmb3JtIChvdmVycmlkZXMgPHN0cm9uZz50bzwvc3Ryb25nPiBh dHRyaWJ1dGUpLjwvbGk+CjwvdWw+Cgo8dWw+Cgk8bGk+PGNvZGU+ZnJvbT0mcXVvdDtlbWFp bCBhZGRyZXNzJnF1b3Q7PC9jb2RlPjxiciAvPgpFbWFpbCBhZGRyZXNzIHVzZWQgaW4gdGhl ICYjODIyMDtGcm9tOiYjODIyMTsgZmllbGQgd2hlbiBzZW5kaW5nIGVtYWlsLiBEZWZhdWx0 cyB0byB0aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcy4gSWYgc3BlY2lmaWVkLCB0 aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcyB3aWxsIGJlIHBsYWNlZCBpbiB0aGUg JiM4MjIwO1JlcGx5LVRvOiYjODIyMTsgZmllbGQgaW5zdGVhZC48L2xpPgoJPGxpPjxjb2Rl PmZyb21fZm9ybT0mcXVvdDtmb3JtIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVj aWZpZWQgZm9ybSAob3ZlcnJpZGVzIDxzdHJvbmc+ZnJvbTwvc3Ryb25nPiBhdHRyaWJ1dGUp LjwvbGk+CjwvdWw+Cgo8dWw+Cgk8bGk+PGNvZGU+c3ViamVjdD0mcXVvdDtzdWJqZWN0IHRl eHQmcXVvdDs8L2NvZGU+PGJyIC8+ClN1YmplY3QgdXNlZCB3aGVuIHNlbmRpbmcgYW4gZW1h aWwuIERlZmF1bHQgaXMgdGhlIHNpdGUgbmFtZS48L2xpPgoJPGxpPjxjb2RlPnN1YmplY3Rf Zm9ybT0mcXVvdDtmb3JtIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQg Zm9ybSAob3ZlcnJpZGVzIDxzdHJvbmc+c3ViamVjdDwvc3Ryb25nPiBhdHRyaWJ1dGUpLjwv bGk+CjwvdWw+Cgo8dWw+Cgk8bGk+PGNvZGU+dGhhbmtzPSZxdW90O3RleHQmcXVvdDs8L2Nv ZGU+PGJyIC8+Ck1lc3NhZ2Ugc2hvd24gYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHN1Ym1pdHRpbmcg YSBtZXNzYWdlLiBEZWZhdWx0IGlzIDxzdHJvbmc+VGhhbmsgeW91LCB5b3VyIG1lc3NhZ2Ug aGFzIGJlZW4gc2VudDwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPnRoYW5rc19mb3JtPSZx dW90O2Zvcm0gbmFtZSZxdW90OzwvY29kZT48YnIgLz4KVXNlIHNwZWNpZmllZCBmb3JtIChv dmVycmlkZXMgPHN0cm9uZz50aGFua3M8L3N0cm9uZz4gYXR0cmlidXRlKS48L2xpPgoJPGxp Pjxjb2RlPnJlZGlyZWN0PSZxdW90O1VSTCZxdW90OzwvY29kZT48YnIgLz4KUmVkaXJlY3Qg dG8gc3BlY2lmaWVkIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IChvdmVycmlkZXMg PHN0cm9uZz50aGFua3M8L3N0cm9uZz4gYW5kIDxzdHJvbmc+dGhhbmtzX2Zvcm08L3N0cm9u Zz4gYXR0cmlidXRlcykuIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG11c3QgYmUg cmVsYXRpdmUgdG8gdGhlIFRleHRwYXR0ZXJuIFNpdGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4uIEV4YW1wbGU6IDxlbT5yZWRpcmVjdD0mIzgyMjA7bW9ua2V5JiM4MjIxOzwv ZW0+IHdvdWxkIHJlZGlyZWN0IHRvIGh0dHA6Ly9leGFtcGxlLmNvbS9tb25rZXkuPC9saT4K PC91bD4KCjx1bD4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxi ciAvPgpMYWJlbCBmb3IgdGhlIGNvbnRhY3QgZm9ybS4gSWYgc2V0IHRvIGFuIGVtcHR5IHN0 cmluZywgZGlzcGxheSBvZiB0aGUgZmllbGRzZXQgYW5kIGxlZ2VuZCB0YWdzIHdpbGwgYmUg c3VwcHJlc3NlZC4gRGVmYXVsdCBpcyA8c3Ryb25nPkNvbnRhY3Q8L3N0cm9uZz4uPC9saT4K CTxsaT48Y29kZT5zZW5kX2FydGljbGU9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIg Lz4KV2hldGhlciB0byB1c2UgdGhpcyBmb3JtIHRvIDxhIGhyZWY9IiNhcnRpY2xlIj5zZW5k IGFuIGFydGljbGU8L2E+LiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4g KHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwv c3Ryb25nPiAobm8pLjwvbGk+Cgk8bGk+PGNvZGU+Y29weXNlbmRlcj0mcXVvdDtib29sZWFu JnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRvIHNlbmQgYSBjb3B5IG9mIHRoZSBlbWFp bCB0byB0aGUgc2VuZGVyJiM4MjE3O3MgYWRkcmVzcy4gQXZhaWxhYmxlIHZhbHVlczogPHN0 cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVs dCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48L2xpPgo8L3VsPgoKPHVsPgoJPGxpPjxj b2RlPmZvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxiciAvPgpVc2Ugc3BlY2lm aWVkIGZvcm0sIGNvbnRhaW5pbmcgdGhlIGxheW91dCBvZiB0aGUgY29udGFjdCBmb3JtIGZp ZWxkcy48L2xpPgoJPGxpPjxjb2RlPnNob3dfaW5wdXQ9JnF1b3Q7Ym9vbGVhbiZxdW90Ozwv Y29kZT48YnIgLz4KIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZm9ybSBpbnB1dCBmaWVsZHMu IEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4w PC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwv bGk+Cgk8bGk+PGNvZGU+c2hvd19lcnJvcj0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxi ciAvPgogV2hldGhlciB0byBkaXNwbGF5IGVycm9yIGFuZCBzdGF0dXMgbWVzc2FnZXMuIEF2 YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9z dHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwvbGk+ CjwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPHA+U2VlIDxhIGhyZWY9IiNjb250YWN0Zm9y bSI+R2V0dGluZyBzdGFydGVkPC9hPiBhbmQgPGEgaHJlZj0iI2FkdmFuY2VkIj5BZHZhbmNl ZCBleGFtcGxlczwvYT4uPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+ PC9wPgoKCjxoMyBpZD0iemNfdGV4dCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0 IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5DcmVhdGVzIGEgdGV4dCBpbnB1dCBmaWVsZCBhbmQg Y29ycmVzcG9uZGluZyA8Y29kZT4mbHQ7bGFiZWwmZ3Q7PC9jb2RlPiB0YWcuIFRoZSBpbnB1 dCB2YWx1ZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBlbWFpbCwgcHJlY2VkZWQgYnkgdGhl IGxhYmVsLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5sYWJl bD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0 byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8c3Ryb25nPlRleHQ8L3N0cm9uZz4uPC9saT4KCTxs aT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1l LCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaW5wdXQg dGFnLjwvbGk+Cgk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1b3Q7PC9jb2RlPjxiciAv PgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0 IGlzIDxjb2RlPiZsdDticiAvJmd0OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0mcXVvdDsm cXVvdDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBz YW1lIGxpbmUuPC9saT4KCTxsaT48Y29kZT5kZWZhdWx0PSZxdW90O3ZhbHVlJnF1b3Q7PC9j b2RlPjxiciAvPgpEZWZhdWx0IHZhbHVlIHdoZW4gbm8gaW5wdXQgaXMgcHJvdmlkZWQuPC9s aT4KCTxsaT48Y29kZT5taW49JnF1b3Q7aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4KTWlu aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8 L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5tYXg9JnF1b3Q7aW50ZWdlciZxdW90OzwvY29k ZT48YnIgLz4KTWF4aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBp cyA8c3Ryb25nPjEwMDwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPnNpemU9JnF1b3Q7aW50 ZWdlciZxdW90OzwvY29kZT48YnIgLz4KU2l6ZSBvZiB0aGUgaW5wdXQgZmllbGQgYXMgZGlz cGxheWVkIHRvIHRoZSB1c2VyLjwvbGk+Cgk8bGk+PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9v bGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIHRleHQgZmllbGQgbXVzdCBi ZSBmaWxsZWQgb3V0LiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHll cyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ry b25nPiAoeWVzKS48L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGU8L2g0PgoKPHByZT48Y29kZT4m bHQ7dHhwOnplbV9jb250YWN0X3RleHQgbGFiZWw9JnF1b3Q7WW91ciBuYW1lJnF1b3Q7IC8m Z3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9w PgoKCjxoMyBpZD0iemNfZW1haWwiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwg LyZndDs8L2NvZGU+PC9oMz4KCjxwPklucHV0IGZpZWxkIGZvciB1c2VyJiM4MjE3O3MgZW1h aWwgYWRkcmVzcy48L3A+Cgo8cD5UaGUgZW50ZXJlZCBlbWFpbCBhZGRyZXNzIHdpbGwgYXV0 b21hdGljYWxseSBiZSB2YWxpZGF0ZWQgdG8gbWFrZSBzdXJlIGl0IGlzIG9mIHRoZSBmb3Jt ICYjODIyMDthYmNAeHh4Lnl5eVsuenp6XSYjODIyMTsuIE9uIG5vbi1XaW5kb3dzIHNlcnZl cnMsIGEgdGVzdCB3aWxsIGJlIGRvbmUgdG8gdmVyaWZ5IHRoYXQgYW4gQSBvciBNWCByZWNv cmQgZXhpc3RzIGZvciB0aGUgZG9tYWluLiBOZWl0aGVyIHRlc3QgcHJldmVudHMgc3BhbSwg YnV0IGl0IGRvZXMgaGVscCBkZXRlY3RpbmcgYWNjaWRlbnRhbCB0eXBpbmcgZXJyb3JzLjwv cD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0 ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0aGUgdXNl ci4gRGVmYXVsdCBpcyA8c3Ryb25nPkVtYWlsPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+ bmFtZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNl ZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlucHV0IHRhZy48L2xp PgoJPGxpPjxjb2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsg dGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZC4gRGVmYXVsdCBpcyA8Y29k ZT4mbHQ7YnIgLyZndDs8L2NvZGU+LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9j b2RlPiB0byBwdXQgdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5l LjwvbGk+Cgk8bGk+PGNvZGU+ZGVmYXVsdD0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIg Lz4KRGVmYXVsdCB2YWx1ZSB3aGVuIG5vIGlucHV0IGlzIHByb3ZpZGVkLjwvbGk+Cgk8bGk+ PGNvZGU+bWluPSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0gaW5w dXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+ LjwvbGk+Cgk8bGk+PGNvZGU+bWF4PSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+ Ck1heGltdW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9u Zz4xMDA8L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5zaXplPSZxdW90O2ludGVnZXImcXVv dDs8L2NvZGU+PGJyIC8+ClNpemUgb2YgdGhlIGlucHV0IGZpZWxkIGFzIGRpc3BsYXllZCB0 byB0aGUgdXNlci48L2xpPgoJPGxpPjxjb2RlPnJlcXVpcmVkPSZxdW90O2Jvb2xlYW4mcXVv dDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyB0ZXh0IGZpZWxkIG11c3QgYmUgZmlsbGVk IG91dC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ry b25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHll cykuPC9saT4KCTxsaT48Y29kZT5zZW5kX2FydGljbGU9JnF1b3Q7Ym9vbGVhbiZxdW90Ozwv Y29kZT48YnIgLz4KV2hldGhlciB0aGlzIGZpZWxkIGlzIHVzZWQgYXMgdGhlIHJlY2lwaWVu dCBlbWFpbCBhZGRyZXNzIHdoZW4gdXNpbmcgdGhlIHNlbmRfYXJ0aWNsZSBmdW5jdGlvbi4g QXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8 L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48L2xp Pgo8L3VsPgoKPGg0PkV4YW1wbGU8L2g0PgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250 YWN0X2VtYWlsIGxhYmVsPSZxdW90O1lvdXIgZW1haWwgYWRkcmVzcyZxdW90OyAvJmd0Ozwv Y29kZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8 aDMgaWQ9InpjX3RleHRhcmVhIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3RleHRhcmVh IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5DcmVhdGVzIGEgdGV4dGFyZWEuPC9wPgoKPGg0PkF0 dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8 L2NvZGU+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBEZWZhdWx0 IGlzIDxzdHJvbmc+TWVzc2FnZTwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPm5hbWU9JnF1 b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1dCB0YWcuPC9saT4KCTxsaT48 Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJyIC8+CkJyZWFrIHRhZyBiZXR3 ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQuIERlZmF1bHQgaXMgPGNvZGU+Jmx0O2Jy IC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSZxdW90OyZxdW90OzwvY29kZT4gdG8g cHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNhbWUgbGluZS48L2xpPgoJ PGxpPjxjb2RlPmRlZmF1bHQ9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkRlZmF1 bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xpPgoJPGxpPjxjb2RlPmNv bHM9JnF1b3Q7aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4KQ29sdW1uIHdpZHRoLiBEZWZh dWx0IGlzIDxzdHJvbmc+NTg8L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5yb3dzPSZxdW90 O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+ClJvdyBoZWlnaHQuIERlZmF1bHQgaXMgPHN0 cm9uZz44PC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+bWluPSZxdW90O2ludGVnZXImcXVv dDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERl ZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+bWF4PSZxdW90 O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck1heGltdW0gaW5wdXQgbGVuZ3RoIGluIGNo YXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4xMDAwMDwvc3Ryb25nPi48L2xpPgoJPGxp Pjxjb2RlPnJlcXVpcmVkPSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CldoZXRo ZXIgdGhpcyB0ZXh0IGZpZWxkIG11c3QgYmUgZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZhbHVl czogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4g RGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KPC91bD4KCjxoND5F eGFtcGxlPC9oND4KCjxwPlRleHRhcmVhIHRoYXQgaXMgNDAgY2hhcnMgd2lkZSwgMTAgbGlu ZXMgaGlnaCwgd2l0aCBhIGN1c3RvbWl6ZWQgbGFiZWw6PC9wPgoKPHByZT48Y29kZT4mbHQ7 dHhwOnplbV9jb250YWN0X3RleHRhcmVhIGNvbHM9JnF1b3Q7NDAmcXVvdDsgcm93cz0mcXVv dDsxMCZxdW90OyBsYWJlbD0mcXVvdDtZb3VyIHF1ZXN0aW9uJnF1b3Q7IC8mZ3Q7PC9jb2Rl PjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBp ZD0iemNfc3VibWl0Ij48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3N1Ym1pdCAvJmd0Ozwv Y29kZT48L2gzPgoKPHA+Q3JlYXRlcyBhIHN1Ym1pdCBidXR0b24uPGJyIC8+CldoZW4gdXNl ZCBhcyBhIGNvbnRhaW5lciB0YWcsIGEgJiM4MjIwO2J1dHRvbiYjODIyMTsgZWxlbWVudCB3 aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBhbiAmIzgyMjA7aW5wdXQmIzgyMjE7IGVsZW1lbnQu PC9wPgoKPGg0PkF0dHJpYnV0ZXM6PC9oND4KCjx1bD4KCTxsaT48Y29kZT5sYWJlbD0mcXVv dDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IHNob3duIG9uIHRoZSBzdWJtaXQgYnV0 dG9uLiBEZWZhdWx0IGlzICYjODIyMDtTZW5kJiM4MjIxOy48L2xpPgoJPGxpPjxjb2RlPmJ1 dHRvbj0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgo8ZW0+RGVwcmVjYXRlZC4g VXNlIGEgY29udGFpbmVyIHRhZyBpZiB5b3Ugd2FudCBhIGJ1dHRvbiBlbGVtZW50LjwvZW0+ PC9saT4KPC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8cD5TdGFuZGFyZCBzdWJtaXQgYnV0 dG9uOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgLyZndDs8 L2NvZGU+PC9wcmU+Cgo8cD5TdWJtaXQgYnV0dG9uIHdpdGggeW91ciBvd24gdGV4dDo8L3A+ Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVsPSZxdW90O1Nl bmQmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5Vc2FnZSBhcyBhIGNvbnRhaW5lciB0 YWcsIHdoaWNoIGFsbG93cyB5b3UgdG8gdXNlIFRleHRwYXR0ZXJuIHRhZ3MgYW5kIDxzcGFu IGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBtYXJrdXAgaW4gdGhlIHN1Ym1pdCBidXR0b246 PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3N1Ym1pdCZndDsmbHQ7c3Ry b25nJmd0O1NlbmQmbHQ7L3N0cm9uZyZndDsgcXVlc3Rpb24mbHQ7L3R4cDp6ZW1fY29udGFj dF9zdWJtaXQmZ3Q7PC9jb2RlPjwvcHJlPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250 YWN0X3N1Ym1pdCZndDsmbHQ7aW1nIHNyYz0mcXVvdDtwYXRoL3RvL2ltZy5wbmcmcXVvdDsg YWx0PSZxdW90O3N1Ym1pdCZxdW90OyZndDsmbHQ7L3R4cDp6ZW1fY29udGFjdF9zdWJtaXQm Z3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9w PgoKCjxoMyBpZD0iemNfc2VsZWN0Ij48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbGVj dCAvJmd0OzwvY29kZT48L2gzPgoKPHA+Q3JlYXRlcyBhIGRyb3AtZG93biBzZWxlY3Rpb24g bGlzdC48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bGlzdD0m cXVvdDtjb21tYS1zZXBhcmF0ZWQgdmFsdWVzJnF1b3Q7PC9jb2RlPiA8c3BhbiBjbGFzcz0i cmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpMaXN0IG9mIGl0ZW1zIHRvIHNob3cg aW4gdGhlIHNlbGVjdCBib3guPC9saT4KCTxsaT48Y29kZT5zZWxlY3RlZD0mcXVvdDt2YWx1 ZSZxdW90OzwvY29kZT48YnIgLz4KTGlzdCBpdGVtIHRoYXQgaXMgc2VsZWN0ZWQgYnkgZGVm YXVsdC48L2xpPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJy IC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJv bmc+T3B0aW9uPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDt2YWx1ZSZx dW90OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJPGxpPjxjb2RlPmJyZWFr PSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxh YmVsIGFuZCBpbnB1dCBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mbHQ7YnIgLyZndDs8L2Nv ZGU+LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBwdXQgdGhlIGxh YmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+Cgk8bGk+PGNvZGU+ ZGVsaW1pdGVyPSZxdW90O2NoYXJhY3RlciZxdW90OzwvY29kZT48YnIgLz4KU2VwYXJhdG9y IGNoYXJhY3RlciB1c2VkIGluIHRoZSA8c3Ryb25nPmxpc3Q8L3N0cm9uZz4gYXR0cmlidXRl LiBEZWZhdWx0IGlzIDxzdHJvbmc+LDwvc3Ryb25nPiAoY29tbWEpLjwvbGk+Cgk8bGk+PGNv ZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciBh IG5vbi1lbXB0eSBvcHRpb24gbXVzdCBiZSBzZWxlY3RlZC4gQXZhaWxhYmxlIHZhbHVlczog PHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVm YXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KPC91bD4KCjxoND5FeGFt cGxlczwvaDQ+Cgo8cD5TZWxlY3QgbGlzdCBsYWJlbGVkICYjODIxNjtEZXBhcnRtZW50JiM4 MjE3OywgY29udGFpbmluZyB0aHJlZSBvcHRpb25zIGFuZCBhIGJsYW5rIG9wdGlvbiAoZHVl IHRvIHRoZSBjb21tYSBiZWZvcmUgJiM4MjE2O01hcmtldGluZyYjODIxNzspIHNob3duIGJ5 IGRlZmF1bHQsIGZvcmNpbmcgdGhlIHVzZXIgdG8gbWFrZSBhIHNlbGVjdGlvbi48L3A+Cgo8 cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0IGxhYmVsPSZxdW90O0RlcGFy dG1lbnQmcXVvdDsgbGlzdD0mcXVvdDssTWFya2V0aW5nLFNhbGVzLFN1cHBvcnQmcXVvdDsg LyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5TZWxlY3QgbGlzdCBjb250YWluaW5nIHRocmVlIG9w dGlvbnMgd2l0aCAmIzgyMTY7TWFya2V0aW5nJiM4MjE3OyBzZWxlY3RlZCBieSBkZWZhdWx0 LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGlzdD0mcXVv dDtNYXJrZXRpbmcsU2FsZXMsU3VwcG9ydCZxdW90OyBzZWxlY3RlZD0mcXVvdDtNYXJrZXRp bmcmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRv IHRvcDwvYT48L3A+CgoKPGgzIGlkPSJ6Y19jaGVja2JveCI+PGNvZGU+Jmx0O3R4cDp6ZW1f Y29udGFjdF9jaGVja2JveCAvJmd0OzwvY29kZT48L2gzPgoKPHA+Q3JlYXRlcyBhIGNoZWNr IGJveC48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bGFiZWw9 JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8g dGhlIHVzZXIuIERlZmF1bHQgaXMgPHN0cm9uZz5DaGVja2JveDwvc3Ryb25nPi48L2xpPgoJ PGxpPjxjb2RlPm5hbWU9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5h bWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1 dCB0YWcuPC9saT4KCTxsaT48Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJy IC8+CkJyZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQuIERlZmF1 bHQgaXMgPGNvZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSZxdW90 OyZxdW90OzwvY29kZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhl IHNhbWUgbGluZS48L2xpPgoJPGxpPjxjb2RlPmNoZWNrZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90 OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIGJveCBpcyBjaGVja2VkIHdoZW4gZmlyc3Qg ZGlzcGxheWVkLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyks IDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzICYjODIyMDswJiM4MjIxOyAo bm8pLjwvbGk+Cgk8bGk+PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29k ZT48YnIgLz4KV2hldGhlciB0aGlzIGNoZWNrYm94IG11c3QgYmUgZmlsbGVkIG91dC4gQXZh aWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0 cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4K PC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8cD5TaHJpbmstd3JhcCBhZ3JlZW1lbnQgd2hp Y2ggbXVzdCBiZSBjaGVja2VkIGJ5IHRoZSB1c2VyIGJlZm9yZSB0aGUgZW1haWwgd2lsbCBi ZSBzZW50LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBs YWJlbD0mcXVvdDtJIGFjY2VwdCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMmcXVvdDsgLyZn dDs8L2NvZGU+PC9wcmU+Cgo8cD5PcHRpb25hbCBjaGVja2JveGVzOjwvcD4KCjxwcmU+PGNv ZGU+U2VsZWN0IHdoaWNoIG9wZXJhdGluZyBzeXN0ZW1zIGFyZSB5b3UgZmFtaWxpYXIgd2l0 aDombHQ7YnIgLyZndDsKJmx0O3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mcXVv dDtXaW5kb3dzJnF1b3Q7IHJlcXVpcmVkPSZxdW90OzAmcXVvdDsgLyZndDsmbHQ7YnIgLyZn dDsKJmx0O3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mcXVvdDtVbml4L0xpbnV4 L0JTRCZxdW90OyByZXF1aXJlZD0mcXVvdDswJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiZs dDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggbGFiZWw9JnF1b3Q7TWFjT1MmcXVvdDsgcmVx dWlyZWQ9JnF1b3Q7MCZxdW90OyAvJmd0OyZsdDticiAvJmd0OzwvY29kZT48L3ByZT4KCjxw PjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX3JhZGlv Ij48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8 cD5DcmVhdGVzIGEgcmFkaW8gYnV0dG9uLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1 bD4KCTxsaT48Y29kZT5ncm91cD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPiA8c3BhbiBjbGFz cz0icmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpUZXh0IHVzZWQgaW4gdGhlIGVt YWlsIHRvIGRlc2NyaWJlIHRoaXMgZ3JvdXAgb2YgcmFkaW8gYnV0dG9ucy4gVGhpcyBhdHRy aWJ1dGUgdmFsdWUgaXMgcmVtZW1iZXJlZCBmb3Igc3Vic2VxdWVudCByYWRpbyBidXR0b25z LCBzbyB5b3Ugb25seSBoYXZlIHRvIHNldCBpdCBvbiB0aGUgZmlyc3QgcmFkaW8gYnV0dG9u IG9mIGEgZ3JvdXAuIERlZmF1bHQgaXMgPHN0cm9uZz5SYWRpbzwvc3Ryb25nPi48L2xpPgoJ PGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+IDxzcGFuIGNsYXNzPSJy ZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRv IHRoZSB1c2VyIGFzIHJhZGlvIGJ1dHRvbiBvcHRpb24uPC9saT4KCTxsaT48Y29kZT5uYW1l PSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGlu IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaW5wdXQgdGFnLiBUaGlzIGF0 dHJpYnV0ZSB2YWx1ZSBpcyByZW1lbWJlcmVkIGZvciBzdWJzZXF1ZW50IHJhZGlvIGJ1dHRv bnMsIHNvIHlvdSBvbmx5IGhhdmUgdG8gc2V0IGl0IG9uIHRoZSBmaXJzdCByYWRpbyBidXR0 b24gb2YgYSBncm91cC4gSWYgaXQgaGFzbiYjODIxNzt0IGJlZW4gc2V0IGF0IGFsbCwgaXQg d2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlIDxjb2RlPmdyb3VwPC9jb2RlPiBhdHRyaWJ1dGUu PC9saT4KCTxsaT48Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJyIC8+CkJy ZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgZmllbGQuIERlZmF1bHQgaXMgYSBzcGFj ZS48L2xpPgoJPGxpPjxjb2RlPmNoZWNrZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48 YnIgLz4KV2hldGhlciB0aGlzIHJhZGlvIG9wdGlvbiBpcyBjaGVja2VkIHdoZW4gdGhlIGZv cm0gaXMgZmlyc3QgZGlzcGxheWVkLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0 cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJv bmc+MDwvc3Ryb25nPiAobm8pLjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZTwvaDQ+Cgo8cD5H cm91cCBtdXR1YWxseSBleGNsdXNpdmUgcmFkaW8gYnV0dG9ucyBieSBzZXR0aW5nIHRoZSA8 Y29kZT5ncm91cDwvY29kZT4gYXR0cmlidXRlIG9uIHRoZSBmaXJzdCByYWRpbyBidXR0b24g aW4gYSBncm91cC4gT25seSB0aGUgY2hvc2VuIHJhZGlvIGJ1dHRvbiBmcm9tIGVhY2ggZ3Jv dXAgd2lsbCBiZSB1c2VkIGluIHRoZSBlbWFpbCBtZXNzYWdlLiBUaGUgbWVzc2FnZSB3aWxs IGJlIG91dHB1dCBpbiB0aGUgZm9ybSA8c3Ryb25nPmdyb3VwOiBsYWJlbDwvc3Ryb25nPiBm b3IgZWFjaCBvZiB0aGUgY2hvc2VuIHJhZGlvIGJ1dHRvbnMuPC9wPgoKPHByZT48Y29kZT4m bHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90O01lZGl1bSZxdW90OyBncm91 cD0mcXVvdDtJIGxpa2UgbXkgc3RlYWsmcXVvdDsgLyZndDsKJmx0O3R4cDp6ZW1fY29udGFj dF9yYWRpbyBsYWJlbD0mcXVvdDtSYXJlJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRh Y3RfcmFkaW8gbGFiZWw9JnF1b3Q7V2VsbCBkb25lJnF1b3Q7IC8mZ3Q7CgombHQ7dHhwOnpl bV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90O1dpbmUmcXVvdDsgZ3JvdXA9JnF1b3Q7V2l0 aCBhIGdsYXNzIG9mJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFi ZWw9JnF1b3Q7QmVlciZxdW90OyAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIGxh YmVsPSZxdW90O1dhdGVyJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0i I3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0iemNfc2VjcmV0Ij48Y29kZT4m bHQ7dHhwOnplbV9jb250YWN0X3NlY3JldCAvJmd0OzwvY29kZT48L2gzPgoKPHA+VGhpcyB0 YWcgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9ybSBvciA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gb3V0cHV0LCBidXQgd2lsbCBpbmNsdWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRp b24gaW4gdGhlIGVtYWlsLiBJdCBjYW4gYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyB0YWcg b3IgYXMgYSBjb250YWluZXIgdGFnLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4K CTxsaT48Y29kZT5uYW1lPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZWQgaW50 ZXJuYWxseS4gU2V0IHRoaXMgb25seSBpZiB5b3UgaGF2ZSBtdWx0aXBsZSAmIzgyMTY7c2Vj cmV0JiM4MjE3OyBmb3JtIGVsZW1lbnRzIHdpdGggaWRlbnRpY2FsIGxhYmVscy48L2xpPgoJ PGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZWQgdG8g aWRlbnRpZnkgdGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gRGVmYXVsdCBpcyA8c3Ryb25nPlNl Y3JldDwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPnZhbHVlPSZxdW90O3ZhbHVlJnF1b3Q7 PC9jb2RlPjxiciAvPgpTb21lIHRleHQgeW91IHdhbnQgdG8gYWRkIHRvIHRoZSBlbWFpbC48 L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVzPC9oND4KCjxwPlVzYWdlIGFzIGEgc2VsZi1jbG9z aW5nIHRhZzwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgdmFs dWU9JnF1b3Q7VGhlIGFuc3dlciBpcyA0MiZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxw PlVzYWdlIGFzIGEgY29udGFpbmVyIHRhZzwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1f Y29udGFjdF9zZWNyZXQgbGFiZWw9JnF1b3Q7RGVhciB1c2VyJnF1b3Q7Jmd0OwogIFBsZWFz ZSBwcm92aWRlIGEgdXNlZnVsIGV4YW1wbGUgZm9yIHRoaXMgdGFnIQombHQ7L3R4cDp6ZW1f Y29udGFjdF9zZWNyZXQmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFj ayB0byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0iemNfc2VydmVyaW5mbyI+PGNvZGU+Jmx0O3R4 cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5UaGlzIHRh ZyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBmb3JtIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1M PC9zcGFuPiBvdXRwdXQsIGJ1dCB3aWxsIGluY2x1ZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlv biBpbiB0aGUgZW1haWwgYmFzZWQgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3Nw YW4+ICRfU0VSVkVSIHZhcmlhYmxlLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4K CTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPiA8c3BhbiBjbGFzcz0i cmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpOYW1lIG9mIHRoZSBzZXJ2ZXIgdmFy aWFibGUuIFNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3BocC5uZXQvbWFudWFsL3Jlc2VydmVk LnZhcmlhYmxlcy5waHAjcmVzZXJ2ZWQudmFyaWFibGVzLnNlcnZlciI+PHNwYW4gY2xhc3M9 ImNhcHMiPlBIUDwvc3Bhbj4gbWFudWFsPC9hPiBmb3IgYSBmdWxsIGxpc3QuPC9saT4KCTxs aT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpVc2VkIHRvIGlk ZW50aWZ5IHRoZSBmaWVsZCBpbiB0aGUgZW1haWwuIERlZmF1bHRzIHRvIHRoZSB2YWx1ZSBv ZiB0aGUgPHN0cm9uZz5uYW1lPC9zdHJvbmc+IGF0dHJpYnV0ZS48L2xpPgo8L3VsPgoKPGg0 PkV4YW1wbGVzPC9oND4KCjxwPkFkZCB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgdmlzaXRvciB0 byB0aGUgZW1haWw8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VydmVy aW5mbyBuYW1lPSZxdW90O1JFTU9URV9BRERSJnF1b3Q7IGxhYmVsPSZxdW90O0lQIG51bWJl ciZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPkFkZCB0aGUgbmFtZSBvZiB0aGUgdmlz aXRvciYjODIxNztzIGJyb3dzZXIgdG8gdGhlIGVtYWlsPC9wPgoKPHByZT48Y29kZT4mbHQ7 dHhwOnplbV9jb250YWN0X3NlcnZlcmluZm8gbmFtZT0mcXVvdDtIVFRQX1VTRVJfQUdFTlQm cXVvdDsgbGFiZWw9JnF1b3Q7QnJvd3NlciZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxw PjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX3NlbmRf YXJ0aWNsZSI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgLyZndDs8 L2NvZGU+PC9oMz4KCjxwPlVzZSB0aGlzIHRhZyBpbiB5b3VyIGluZGl2aWR1YWwgYXJ0aWNs ZSBmb3JtLCB3aGVyZSB5b3Ugd2FudCB0aGUgJiM4MjIwO3NlbmQgYXJ0aWNsZSYjODIyMTsg bGluayB0byBiZSBkaXNwbGF5ZWQuPC9wPgoKCjxoND5BdHRyaWJ1dGVzOjwvaDQ+Cgo8dWw+ Cgk8bGk+PGNvZGU+bGlua3RleHQ9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4 dCBkaXNwbGF5ZWQgZm9yIHRoZSBsaW5rLiBEZWZhdWx0IGlzIDxzdHJvbmc+c2VuZCBhcnRp Y2xlPC9zdHJvbmc+PC9saT4KPC91bD4KCjxoND5FeGFtcGxlczo8L2g0PgoKPHA+U2VlIDxh IGhyZWY9IiNzZW5kYXJ0aWNsZSI+R2V0dGluZyBzdGFydGVkPC9hPjwvcD4KCjxwPjxhIGhy ZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8aDIgaWQ9ImFkdmFuY2VkIj5BZHZh bmNlZCBleGFtcGxlczwvaDI+CgoKPGgzIGlkPSJzaG93X2Vycm9yIj5TZXBhcmF0ZSBpbnB1 dCBhbmQgZXJyb3IgZm9ybXM8L2gzPgoKPHA+VXNpbmcgPGNvZGU+c2hvd19pbnB1dDwvY29k ZT4gYW5kIDxjb2RlPnNob3dfZXJyb3I8L2NvZGU+IHRvIGRpc3BsYXkgdGhlIGZvcm0gYW5k IGVycm9yIG1lc3NhZ2VzIG9uIGRpZmZlcmVudCBwYXJ0cyBvZiBhIHBhZ2UuIEEgZm9ybSBp cyB1c2VkIHRvIG1ha2Ugc3VyZSB0aGUgY29udGVudHMgb2YgYm90aCBmb3JtcyBhcmUgaWRl bnRpY2FsLCBvdGhlcndpc2UgdGhleSB3b3VsZCBiZSBzZWVuIGFzIHR3byBpbmRlcGVuZGVu dCBmb3Jtcy4gVGhlIGZpcnN0IGZvcm0gb25seSBzaG93cyBlcnJvcnMgKG5vIGlucHV0KSwg dGhlIHNlY29uZCBmb3JtIG9ubHkgc2hvd3MgdGhlIGlucHV0IGZpZWxkcyAobm8gZXJyb3Jz KS48L3A+Cgo8cHJlPjxjb2RlPiZsdDtkaXYgaWQ9JnF1b3Q7ZXJyb3ImcXVvdDsmZ3Q7CiAg Jmx0O3R4cDp6ZW1fY29udGFjdCBmb3JtPSZxdW90O2NvbnRhY3RfZm9ybSZxdW90OyBzaG93 X2lucHV0PSZxdW90OzAmcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CgombHQ7ZGl2IGlkPSZx dW90O2lucHV0Zm9ybSZxdW90OyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0IGZvcm09JnF1 b3Q7Y29udGFjdF9mb3JtJnF1b3Q7IHNob3dfZXJyb3I9JnF1b3Q7MCZxdW90OyAvJmd0Owom bHQ7L2RpdiZndDs8L2NvZGU+PC9wcmU+Cgo8cD5BcGFydCBmcm9tIHRoZSA8Y29kZT5zaG93 X2Vycm9yPC9jb2RlPiBhbmQgPGNvZGU+c2hvd19pbnB1dDwvY29kZT4gYXR0cmlidXRlcywg YWxsIG90aGVyIGF0dHJpYnV0ZXMgbXVzdCBiZSAxMDAlIGlkZW50aWNhbCBpbiBib3RoIGZv cm1zLCBvdGhlcndpc2UgdGhleSB3b3VsZCBiZSBzZWVuIGFzIHR3byB1bnJlbGF0ZWQgZm9y bXMuPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBp ZD0ic3ViamVjdF9mb3JtIj5Vc2VyIHNlbGVjdGFibGUgc3ViamVjdCBmaWVsZDwvaDM+Cgo8 cD5TcGVjaWZ5IHRoZSA8Y29kZT5zdWJqZWN0X2Zvcm08L2NvZGU+IGF0dHJpYnV0ZSBhbmQg Y3JlYXRlIGEgZm9ybSB3aGljaCBpbmNsdWRlcyBhIDxjb2RlPnplbV9jb250YWN0X3NlbGVj dDwvY29kZT4gdGFnOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0m cXVvdDt5b3VAZXhhbXBsZS5jb20mcXVvdDsgc3ViamVjdF9mb3JtPSZxdW90O215X3N1Ympl Y3RfZm9ybSZxdW90OyAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0m cXVvdDtOYW1lJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFj dF9lbWFpbCAvJmd0OyZsdDticiAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0 IGxhYmVsPSZxdW90O0Nob29zZSBTdWJqZWN0JnF1b3Q7IGxpc3Q9JnF1b3Q7LFF1ZXN0aW9u LEZlZWRiYWNrJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFj dF90ZXh0YXJlYSBsYWJlbD0mcXVvdDtNZXNzYWdlJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7 CiZsdDsvdHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT48L3ByZT4KCjxwPkNyZWF0ZSBhIFRl eHRwYXR0ZXJuIGZvcm0gY2FsbGVkICYjODIyMDtteV9zdWJqZWN0X2Zvcm0mIzgyMjE7LCBj b250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6 ZW1fY29udGFjdF9mb3JtOwogIGVjaG8gJHplbV9jb250YWN0X2Zvcm1bJiMzOTtDaG9vc2Ug U3ViamVjdCYjMzk7XTsKJmx0Oy90eHA6cGhwJmd0OzwvY29kZT48L3ByZT4KCjxwPlRoZSA8 Y29kZT5sYWJlbDwvY29kZT4gdXNlZCBpbiB0aGUgPGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0 PC9jb2RlPiB0YWcgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFy aWFibGUgaW4gdGhlIDxjb2RlPnN1YmplY3RfZm9ybTwvY29kZT4uIEhlcmUgd2UgdXNlZCA8 Y29kZT5DaG9vc2Ugc3ViamVjdDwvY29kZT4uPC9wPgoKPHA+SWYgeW91JiM4MjE3O2QgcHJl ZmVyIHRvIGFkZCBhIGNvbW1vbiBwcmVmaXggZm9yIGFsbCBzdWJqZWN0cywgdXNlIGEgPGNv ZGU+c3ViamVjdF9mb3JtPC9jb2RlPiBjb250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+Jmx0 O3R4cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtOwogIGVjaG8gJiMzOTtN eSBjb21tb24gcHJlZml4IC0gJiMzOTsgLiAkemVtX2NvbnRhY3RfZm9ybVsmIzM5O0Nob29z ZSBTdWJqZWN0JiMzOTtdOwombHQ7L3R4cDpwaHAmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+PGEg aHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0idG9fZm9ybSI+VXNl ciBzZWxlY3RhYmxlIHJlY2lwaWVudCwgd2l0aG91dCBzaG93aW5nIGVtYWlsIGFkZHJlc3M8 L2gzPgoKPHA+U3BlY2lmeSB0aGUgPGNvZGU+dG9fZm9ybTwvY29kZT4gYXR0cmlidXRlIGFu ZCBjcmVhdGUgYSBmb3JtIHdoaWNoIGluY2x1ZGVzIGEgPGNvZGU+emVtX2NvbnRhY3Rfc2Vs ZWN0PC9jb2RlPiB0YWc6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IHRv X2Zvcm09JnF1b3Q7bXlfemVtX2NvbnRhY3RfdG9fZm9ybSZxdW90OyZndDsKICAmbHQ7dHhw OnplbV9jb250YWN0X3RleHQgbGFiZWw9JnF1b3Q7TmFtZSZxdW90OyAvJmd0OyZsdDticiAv Jmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyZndDsmbHQ7YnIgLyZndDsKICAm bHQ7dHhwOnplbV9jb250YWN0X3NlbGVjdCBsYWJlbD0mcXVvdDtEZXBhcnRtZW50JnF1b3Q7 IGxpc3Q9JnF1b3Q7LFN1cHBvcnQsU2FsZXMmcXVvdDsgLyZndDsmbHQ7YnIgLyZndDsKICAm bHQ7dHhwOnplbV9jb250YWN0X3RleHRhcmVhIGxhYmVsPSZxdW90O01lc3NhZ2UmcXVvdDsg LyZndDsmbHQ7YnIgLyZndDsKJmx0Oy90eHA6emVtX2NvbnRhY3QmZ3Q7PC9jb2RlPjwvcHJl PgoKPHA+Q3JlYXRlIGEgVGV4dHBhdHRlcm4gZm9ybSBjYWxsZWQgJiM4MjIwO215X3plbV9j b250YWN0X3RvX2Zvcm0mIzgyMjE7LCBjb250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+Jmx0 O3R4cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtOwogIHN3aXRjaCgkemVt X2NvbnRhY3RfZm9ybVsmIzM5O0RlcGFydG1lbnQmIzM5O10pCiAgewogICAgY2FzZSAmIzM5 O1N1cHBvcnQmIzM5OzoKICAgICAgZWNobyAmIzM5O2NyZXdAZXhhbXBsZS5jb20mIzM5OzsK ICAgICAgYnJlYWs7CiAgICBjYXNlICYjMzk7U2FsZXMmIzM5OzoKICAgICAgZWNobyAmIzM5 O3Nob3dtZXRoZW1vbmV5QGV4YW1wbGUuY29tJiMzOTs7CiAgICAgIGJyZWFrOwogICAgZGVm YXVsdDoKICAgICAgZWNobyAmIzM5O3NvbWVvbmVAZXhhbXBsZS5jb20mIzM5OzsKICB9CiZs dDsvdHhwOnBocCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5UaGUgPGNvZGU+bGFiZWw8L2NvZGU+ IHVzZWQgaW4gdGhlIDxjb2RlPnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4gdGFnIG11c3Qg YmUgaWRlbnRpY2FsIHRvIHRoZSBjb3JyZXNwb25zaW5nIHZhcmlhYmxlIGluIHRoZSA8Y29k ZT50b19mb3JtPC9jb2RlPi4gSGVyZSB3ZSB1c2VkIDxjb2RlPkRlcGFydG1lbnQ8L2NvZGU+ LjwvcD4KCjxwPkEgJiM4MjE2O2RlZmF1bHQmIzgyMTc7IGVtYWlsIGFkZHJlc3MgaW4gdGhl IDxjb2RlPnRvX2Zvcm08L2NvZGU+IGlzIHNwZWNpZmllZCB0byBlbnN1cmUgdGhhdCBhIHZh bGlkIGVtYWlsIGFkZHJlc3MgaXMgdXNlZCBpbiBjYXNlcyB3aGVyZSB5b3UgYWRkIG9yIGNo YW5nZSBhIHNlbGVjdC9yYWRpbyBvcHRpb24gYW5kIGZvcmdldCB0byB1cGRhdGUgdGhlIDxj b2RlPnRvX2Zvcm08L2NvZGU+LjwvcD4KCjxwIGNsYXNzPSJ3YXJuaW5nIj5OZXZlciB1c2Ug dGFncyBsaWtlIDxjb2RlPnplbV9jb250YWN0X3RleHQ8L2NvZGU+LCA8Y29kZT56ZW1fY29u dGFjdF9lbWFpbDwvY29kZT4gb3IgPGNvZGU+emVtX2NvbnRhY3RfdGV4dGFyZWE8L2NvZGU+ IGZvciBzZXR0aW5nIHRoZSByZWNpcGllbnQgYWRkcmVzcywgb3RoZXJ3aXNlIHlvdXIgZm9y bSBjYW4gYmUgYWJ1c2VkIHRvIHNlbmQgc3BhbSB0byBhbnkgZW1haWwgYWRkcmVzcyE8L3A+ Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgyIGlkPSJzdHls aW5nIj5TdHlsaW5nPC9oMj4KCjxwPlRoZSBmb3JtIGl0c2VsZiBoYXMgYSBjbGFzcyA8c3Ry b25nPnplbUNvbnRhY3RGb3JtPC9zdHJvbmc+IHNldCBvbiB0aGUgPGNvZGU+Rk9STTwvY29k ZT4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZy48L3A+Cgo8cD5UaGUgbGlz dCBvZiBlcnJvciBtZXNzYWdlcyAoaWYgYW55KSBoYXMgYSBjbGFzcyA8c3Ryb25nPnplbUVy cm9yPC9zdHJvbmc+IHNldCBvbiB0aGUgPGNvZGU+VUw8L2NvZGU+IDxzcGFuIGNsYXNzPSJj YXBzIj5IVE1MPC9zcGFuPiB0YWcgdGhhdCBlbmNsb3NlcyB0aGUgbGlzdCBvZiBlcnJvcnMu PC9wPgoKQWxsIGZvcm0gZWxlbWVudHMgYW5kIGNvcnJlc3BvbmRpbmcgbGFiZWxzIGhhdmUg dGhlIGZvbGxvd2luZyBjbGFzc2VzIChvciBpZHMgc2V0KToKPG9sPgoJPGxpPk9uZSBvZiA8 c3Ryb25nPnplbVRleHQ8L3N0cm9uZz4sIDxzdHJvbmc+emVtVGV4dGFyZWE8L3N0cm9uZz4s IDxzdHJvbmc+emVtU2VsZWN0PC9zdHJvbmc+LCA8c3Ryb25nPnplbVJhZGlvPC9zdHJvbmc+ LCA8c3Ryb25nPnplbUNoZWNrYm94PC9zdHJvbmc+LCA8c3Ryb25nPnplbVN1Ym1pdDwvc3Ry b25nPi4gSXQgc2hvdWxkIGJlIG9idmlvdXMgd2hpY2ggY2xhc3MgaXMgdXNlZCBmb3Igd2hp Y2ggZm9ybSBlbGVtZW50IChhbmQgY29ycmVzcG9uZGluZyBsYWJlbCkuPC9saT4KCTxsaT48 c3Ryb25nPnplbVJlcXVpcmVkPC9zdHJvbmc+IG9yIDxzdHJvbmc+ZXJyb3JFbGVtZW50PC9z dHJvbmc+IG9yIDxzdHJvbmc+emVtUmVxdWlyZWRlcnJvckVsZW1lbnQ8L3N0cm9uZz4sIGRl cGVuZGluZyBvbiB3aGV0aGVyIHRoZSBmb3JtIGVsZW1lbnQgaXMgcmVxdWlyZWQsIGFuIGVy cm9yIHdhcyBmb3VuZCBpbiB3aGF0ZXZlciB0aGUgdmlzaXRvciBlbnRlcmVkJiM4MjMwOyBv ciBib3RoLjwvbGk+Cgk8bGk+QW4gaW5kaXZpZHVhbCAmIzgyMjA7aWQmIzgyMjE7IG9yICYj ODIyMDtjbGFzcyYjODIyMTsgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+bmFtZTwv Y29kZT4gYXR0cmlidXRlIG9mIHRoZSBjb3JyZXNwb25kaW5nIHRhZy4gV2hlbiBzdHlsaW5n IGZvcm1zIGJhc2VkIG9uIHRoaXMgY2xhc3MsIHlvdSBzaG91bGQgZXhwbGljaXRseSBzZXQg dGhlIDxjb2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBiZWNhdXNlIGF1dG9tYXRpY2FsbHkg Z2VuZXJhdGVkIG5hbWVzIG1heSBjaGFuZ2UgaW4gbmV3ZXIgemVtX2NvbnRhY3RfcmVib3Ju IHZlcnNpb25zLjwvbGk+Cjwvb2w+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwv YT48L3A+CgoKPGgyIGlkPSJoaXN0b3J5Ij5IaXN0b3J5PC9oMj4KCjxwPk9ubHkgdGhlIGNo YW5nZXMgdGhhdCBtYXkgYWZmZWN0IHBlb3BsZSB3aG8gdXBncmFkZSBhcmUgZGV0YWlsZWQg YmVsb3cuPGJyIC8+ClRvIHNhdmUgc3BhY2UsIGxpbmtzIHRvIGZvcnVtIHRvcGljcyB0aGF0 IGRldGFpbCBhbGwgdGhlIGNoYW5nZXMgaW4gZWFjaCB2ZXJzaW9uIGhhdmUgYmVlbiBhZGRl ZC48L3A+Cgo8dWw+Cgk8bGk+MDcgZmViIDIwMTY6IDxzdHJvbmc+dmVyc2lvbiA0LjAuMy4y MTwvc3Ryb25nPjogQ29tcGF0aWJsZSB3aXRoIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IDQuNiBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gNS4zKzwvbGk+Cgk8 bGk+MjMgYXVnIDIwMDc6IDxzdHJvbmc+dmVyc2lvbiA0LjAuMy4yMDwvc3Ryb25nPiA8YSBo cmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjM3 MjgiPmNoYW5nZWxvZzwvYT48L2xpPgoJPGxpPjE0IGZlYiAyMDA3OiA8c3Ryb25nPnZlcnNp b24gNC4wLjMuMTk8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJu LmNvbS92aWV3dG9waWMucGhwP2lkPTIxMTQ0Ij5jaGFuZ2Vsb2c8L2E+Cgk8dWw+CgkJPGxp PjxhIGhyZWY9IiNzZW5kYXJ0aWNsZSI+c2VuZF9hcnRpY2xlPC9hPiBmdW5jdGlvbmFsaXR5 IHJldmlzZWQsIHJlcXVpcmluZyBjaGFuZ2VzIHdoZW4gdXBncmFkaW5nIGZyb20gZWFybGll ciB2ZXJzaW9uczwvbGk+CgkJPGxpPk5ldyBsYW5ndWFnZSBzdHJpbmdzOiAmIzgyMTY7c2Vu ZF9hcnRpY2xlJiM4MjE3OyBhbmQgJiM4MjE2O3JlY2lwaWVudCYjODIxNzsgKHJlcGxhY2Vz ICYjODIxNjtyZWNlaXZlciYjODIxNzspPC9saT4KCQk8bGk+U2V0cyBvZiByYWRpbyBidXR0 b25zIHJlcXVpcmUgdGhlIG5ldyA8YSBocmVmPSIjemNfcmFkaW8iPmdyb3VwPC9hPiBhdHRy aWJ1dGU8L2xpPgoJCTxsaT5ZZXMvTm8gdmFsdWVzIGRlcHJlY2F0ZWQgaW4gZmF2b3IgZm9y IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBzdGFuZGFyZCAxLzAgdmFsdWVz ICh5ZXMvbm8gc3RpbGwgd29yayBpbiB0aGlzIHZlcnNpb24pPC9saT4KCTwvdWw+PC9saT4K CTxsaT4yMCBub3YgMjAwNjogPHN0cm9uZz52ZXJzaW9uIDQuMC4zLjE4PC9zdHJvbmc+IDxh IGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0x OTgyMyI+Y2hhbmdlbG9nPC9hPgoJPHVsPgoJCTxsaT5JRHMgJiM4MjE2O3plbUNvbnRhY3RG b3JtJiM4MjE3OyBhbmQgJiM4MjE2O3plbVN1Ym1pdCYjODIxNzsgaGF2ZSBjaGFuZ2VkIHRv IGNsYXNzZXMgdG8gYWxsb3cgbXVsdGlwbGUgZm9ybXMgcGVyIHBhZ2U8L2xpPgoJCTxsaT5O ZXcgbGFuZ3VhZ2Ugc3RyaW5nczogJiM4MjE2O2Zvcm1fdXNlZCYjODIxNzssICYjODIxNjtp bnZhbGlkX3V0ZjgmIzgyMTc7LCAmIzgyMTY7bWF4X3dhcm5pbmcmIzgyMTc7LCAmIzgyMTY7 bmFtZSYjODIxNzssICYjODIxNjtyZWZyZXNoJiM4MjE3OywgJiM4MjE2O3NlY3JldCYjODIx Nzs8L2xpPgoJPC91bD48L2xpPgoJPGxpPjEyIG1hciAyMDA2OiA8c3Ryb25nPnZlcnNpb24g NC4wLjMuMTc8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNv bS92aWV3dG9waWMucGhwP2lkPTEzNDE2Ij5jaGFuZ2Vsb2c8L2E+PC9saT4KCTxsaT4xMSBm ZWIgMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4xNjwvc3Ryb25nPjwvbGk+Cgk8bGk+MDYgZmVi IDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMTU8L3N0cm9uZz48L2xpPgoJPGxpPjAzIGZlYiAy MDA2OiA8c3Ryb25nPnZlcnNpb24gLjE0PC9zdHJvbmc+Cgk8dWw+CgkJPGxpPlJlcXVpcmVz IHNlcGFyYXRlIHplbV9jb250YWN0X2xhbmcgcGx1Z2luPC9saT4KCTwvdWw+PC9saT4KCTxs aT4yOSBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4xMjwvc3Ryb25nPjwvbGk+Cgk8bGk+ MjcgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMTE8L3N0cm9uZz48L2xpPgoJPGxpPjIz IGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjA5IGFuZCAuMTA8L3N0cm9uZz48L2xpPgoJ PGxpPjIzIGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjA4PC9zdHJvbmc+PC9saT4KCTxs aT4xNyBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4wNzwvc3Ryb25nPjwvbGk+Cgk8bGk+ MTYgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMDUgYW5kIC4wNjwvc3Ryb25nPjwvbGk+ Cgk8bGk+MTUgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMDQ8L3N0cm9uZz48L2xpPgoJ PGxpPjEwIGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjAzPC9zdHJvbmc+PC9saT4KCTxs aT4xOSBkZWMgMjAwNTogPHN0cm9uZz52ZXJzaW9uIC4wMjwvc3Ryb25nPjwvbGk+CjwvdWw+ Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgyIGlkPSJjcmVk aXRzIj5DcmVkaXRzPC9oMj4KCjx1bD4KCTxsaT48c3Ryb25nPnplbTwvc3Ryb25nPiB3cm90 ZSB0aGUgemVtX2NvbnRhY3QgMC42IHBsdWdpbiBvbiB3aGljaCB0aGlzIHBsdWdpbiB3YXMg aW5pdGlhbGx5IGJhc2VkLjwvbGk+Cgk8bGk+PHN0cm9uZz5NYXJ5PC9zdHJvbmc+IGNvbXBs ZXRlbHkgcmV2aXNlZCB0aGUgcGx1Z2luIGNvZGUuPC9saT4KCTxsaT48c3Ryb25nPlN0dWFy dDwvc3Ryb25nPiBUdXJuZWQgaXQgaW50byBhIHBsdWdpbiwgYWRkZWQgYSByZXZpc2VkIGhl bHAgdGV4dCBhbmQgYWRkaXRpb25hbCBjb2RlLiBNYWludGFpbmVkIGFsbCBwbHVnaW4gdmVy c2lvbnMgdGlsbCA0LjAuMy4xNy48L2xpPgoJPGxpPjxzdHJvbmc+d2V0PC9zdHJvbmc+IGFk ZGVkIHRoZSB6ZW1fY29udGFjdF9yYWRpbyB0YWcuPC9saT4KCTxsaT48c3Ryb25nPlRyYW5x dWlsbG88L3N0cm9uZz4gYWRkZWQgdGhlIGFudGktc3BhbSA8c3BhbiBjbGFzcz0iY2FwcyI+ QVBJPC9zcGFuPiBhbmQgemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIGZ1bmN0aW9uYWxpdHku PC9saT4KCTxsaT48c3Ryb25nPmFzbHN3NjY8L3N0cm9uZz4sIDxzdHJvbmc+amR5a2FzdDwv c3Ryb25nPiBhbmQgb3RoZXJzICg/KSBwcm92aWRlZCBhZGRpdGlvbmFsIGNvZGU8L2xpPgoJ PGxpPjxzdHJvbmc+UnV1ZDwvc3Ryb25nPiBjbGVhbmVkIHVwIGFuZCBhdWRpdGVkIHRoZSBj b2RlIHRvIHdlZWQgb3V0IGJ1Z3MgYW5kIGNvbXBsZXRlbHkgcmV2aXNlZCB0aGUgaGVscCB0 ZXh0LiBNYWludGFpbmVyIG9mIHZlcnNpb25zIDQuMC4zLjE4IGFuZCB1cC48L2xpPgoJPGxp PlN1cHBvcnRlZCBhbmQgdGVzdGVkIHRvIGRlc3RydWN0aW9uIGJ5IHRoZSBUZXh0cGF0dGVy biBjb21tdW5pdHkuPC9saT4KPC91bD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9w PC9hPjwvcD4KCgo8aDIgaWQ9ImFwaSI+WmVtIENvbnRhY3QgUmVib3JuJiM4MjE3O3MgPHNw YW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj48L2gyPgoKPHA+VGhlIHBsdWdpbiA8c3BhbiBj bGFzcz0iY2FwcyI+QVBJPC9zcGFuPiBvZiB6ZW0gY29udGFjdCwgZGV2ZWxvcGVkIGJ5IFRy YW5xdWlsbG8sIGlzIHNpbWlsYXIgdG8gdGhlIGNvbW1lbnRzIDxzcGFuIGNsYXNzPSJjYXBz Ij5BUEk8L3NwYW4+IG9mIFRleHRwYXR0ZXJuLCB3aGljaCBpcyBleHBsYWluZWQgaW4gdGhl IFRleHRib29rIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5uZXQvd2lraS9pbmRleC5w aHA/dGl0bGU9UGx1Z2luX0RldmVsb3BtZW50X1RvcGljcyI+UGx1Z2luIERldmVsb3BtZW50 IFRvcGljczwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5uZXQvd2lraS9p bmRleC5waHA/dGl0bGU9Q29tYmF0X0NvbW1lbnRfU3BhbSI+Q29tYmF0IENvbW1lbnQgU3Bh bTwvYT4uPC9wPgoKVHdvIGNhbGxiYWNrIGV2ZW50cyBleGlzdCBpbiB6ZW1fY29udGFjdF9y ZWJvcm46Cjx1bD4KCTxsaT48Y29kZT56ZW1jb250YWN0LnN1Ym1pdDwvY29kZT4gaXMgY2Fs bGVkIGFmdGVyIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCBhbmQgdGhlIHZhbHVlcyBhcmUgY2hl Y2tlZCBpZiBlbXB0eSBvciB2YWxpZCBlbWFpbCBhZGRyZXNzZXMsIGJ1dCBiZWZvcmUgdGhl IG1haWwgaXMgc2VudC48L2xpPgoJPGxpPjxjb2RlPnplbWNvbnRhY3QuZm9ybTwvY29kZT4g bGV0JiM4MjE3O3MgeW91IGluc2VydCBjb250ZW50IGluIHRoZSBjb250YWN0IGZvcm0gYXMg ZGlzcGxheWVkIHRvIHRoZSB2aXNpdG9yLjwvbGk+CjwvdWw+Cgo8cD5Gb3IgcmVmZXJlbmNl IGhlcmUgYXJlIHRoZSBjb21tYW5kcyB0aGF0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8gcGx1 Z2luIGRldmVsb3BlcnM6PC9wPgoKPHByZT48Y29kZT4vLyBUaGlzIHdpbGwgY2FsbCB5b3Vy IGZ1bmN0aW9uIGJlZm9yZSB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQKLy8gU28geW91IGNhbiBh bmFseXNlIHRoZSBzdWJtaXR0ZWQgZGF0YQpyZWdpc3Rlcl9jYWxsYmFjaygmIzM5O2FiY19t eWZ1bmN0aW9uJiMzOTssJiMzOTt6ZW1jb250YWN0LnN1Ym1pdCYjMzk7KTsKCi8vIFRoaXMg d2lsbCBjYWxsIHlvdXIgZnVuY3Rpb24gYW5kIGFkZCB0aGUgb3V0cHV0ICh1c2UgcmV0dXJu ICRteXN0dWZmKQovLyB0byB0aGUgY29udGFjdC1mb3JtLgpyZWdpc3Rlcl9jYWxsYmFjaygm IzM5O2FiY19teW90aGVyZnVuY3Rpb24yJiMzOTssJiMzOTt6ZW1jb250YWN0LmZvcm0mIzM5 Oyk7CgovLyBUbyBnZXQgaG9sZCBvZiB0aGUgZm9ybS12YXJpYWJsZXMgeW91IGNhbiB1c2UK Z2xvYmFsIHplbV9jb250YWN0X2Zvcm07CgovLyBXaXRoIHRoZSBmb2xsb3dpbmcgdHdvIGxp bmVzIHlvdSBjYW4gdGVsbCB6ZW1fY29udGFjdCBpZiB5b3VyCi8vIHBsdWdpbiBmb3VuZCBz cGFtCiRldmFsdWF0b3IgPSZhbXA7IGdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpOwoKLy8g VGhlIHBhc3NlZCB2YWx1ZSBtdXN0IGJlIG5vbi16ZXJvIHRvIG1hcmsgdGhlIGNvbnRlbnQg YXMgc3BhbS4KLy8gVmFsdWUgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEuCiRl dmFsdWF0b3IgLSZndDsgYWRkX3plbWNvbnRhY3Rfc3RhdHVzKDEpOzwvY29kZT48L3ByZT4K CjxwPk11bHRpcGxlIHBsdWdpbnMgY2FuIGJlIGFjdGl2ZSBhdCB0aGUgc2FtZSB0aW1lIGFu ZCBlYWNoIG9mIHRoZW0gY2FuIG1hcmsgdGhlIHN1Ym1pdHRlZCBjb250ZW50IGFzIHNwYW0g YW5kIHByZXZlbnQgdGhlIGZvcm0gZnJvbSBiZWluZyBzdWJtaXR0ZWQuPC9wPgoKPHA+PHN0 cm9uZz5BbiBleGFtcGxlIG9mIGEgcGx1Zy1pbiBjb25uZWN0aW5nIHRvIFplbSBDb250YWN0 IFJlYm9ybiYjODIxNztzIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+Ojwvc3Ryb25n PjwvcD4KCjxwcmU+PGNvZGU+cmVnaXN0ZXJfY2FsbGJhY2soJiMzOTtwYXBfemVtY29udGFj dF9mb3JtJiMzOTssJiMzOTt6ZW1jb250YWN0LmZvcm0mIzM5Oyk7CnJlZ2lzdGVyX2NhbGxi YWNrKCYjMzk7cGFwX3plbWNvbnRhY3Rfc3VibWl0JiMzOTssJiMzOTt6ZW1jb250YWN0LnN1 Ym1pdCYjMzk7KTsKCmZ1bmN0aW9uIHBhcF96ZW1jb250YWN0X2Zvcm0oKSB7CiAgJGZpZWxk ID0gJiMzOTsmbHQ7ZGl2IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZSZxdW90OyZndDsmIzM5 Oy4KICAgIGZpbnB1dCgmIzM5O3RleHQmIzM5OywmIzM5O3Bob25lJiMzOTsscHMoJiMzOTtw aG9uZSYjMzk7KSwmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7 LCYjMzk7JiMzOTssJiMzOTtwaG9uZSYjMzk7KS4mIzM5OyZsdDticiAvJmd0OyYjMzk7Lgog ICAgZmlucHV0KCYjMzk7dGV4dCYjMzk7LCYjMzk7bWFpbCYjMzk7LHBzKCYjMzk7bWFpbCYj Mzk7KSwmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7 JiMzOTssJiMzOTttYWlsJiMzOTspLiYjMzk7Jmx0Oy9kaXYmZ3Q7JiMzOTs7CiAgcmV0dXJu ICRmaWVsZDsmbHQ7L2NvZGUmZ3Q7Cn0KCmZ1bmN0aW9uIHBhcF96ZW1jb250YWN0X3N1Ym1p dCgpIHsKICAkY2hlY2tpbmdfbWFpbF9maWVsZCA9IHRyaW0ocHMoJiMzOTttYWlsJiMzOTsp KTsKICAkY2hlY2tpbmdfcGhvbmVfZmllbGQgPSB0cmltKHBzKCYjMzk7cGhvbmUmIzM5Oykp OwoKICAkZXZhbHVhdGlvbiA9JmFtcDsgZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9yKCk7Cgog IC8vIElmIHRoZSBoaWRkZW4gZmllbGRzIGFyZSBmaWxsZWQgb3V0LCB0aGUgY29udGFjdCBm b3JtIHdvbiYjMzk7dCBiZSBzdWJtaXR0ZWQhCiAgaWYgKCRjaGVja2luZ19tYWlsX2ZpZWxk ICE9ICYjMzk7JiMzOTsgb3IgJGNoZWNraW5nX3Bob25lX2ZpZWxkICE9ICYjMzk7JiMzOTsp IHsKICAgICRldmFsdWF0aW9uIC0mZ3Q7IGFkZF96ZW1jb250YWN0X3N0YXR1cygxKTsKICB9 CiAgcmV0dXJuOwp9PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0 b3A8L2E+PC9wPiI7czo0OiJjb2RlIjtzOjIxMzQwOiIKaWYgKGNsYXNzX2V4aXN0cygnXFRl eHRwYXR0ZXJuXFRhZ1xSZWdpc3RyeScpKSB7CiAgVHhwOjpnZXQoJ1xUZXh0cGF0dGVyblxU YWdcUmVnaXN0cnknKQogICAgLT5yZWdpc3RlcignemVtX2NvbnRhY3QnKQogICAgLT5yZWdp c3RlcignemVtX2NvbnRhY3RfdGV4dCcpCiAgICAtPnJlZ2lzdGVyKCd6ZW1fY29udGFjdF9l bWFpbCcpCiAgICAtPnJlZ2lzdGVyKCd6ZW1fY29udGFjdF90ZXh0YXJlYScpCiAgICAtPnJl Z2lzdGVyKCd6ZW1fY29udGFjdF9zdWJtaXQnKQogICAgLT5yZWdpc3RlcignemVtX2NvbnRh Y3Rfc2VsZWN0JykKICAgIC0+cmVnaXN0ZXIoJ3plbV9jb250YWN0X2NoZWNrYm94JykKICAg IC0+cmVnaXN0ZXIoJ3plbV9jb250YWN0X3JhZGlvJykKICAgIC0+cmVnaXN0ZXIoJ3plbV9j b250YWN0X3NlY3JldCcpCiAgICAtPnJlZ2lzdGVyKCd6ZW1fY29udGFjdF9zZXJ2ZXJpbmZv JykKICAgIC0+cmVnaXN0ZXIoJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZScpOwp9CgoKZnVu Y3Rpb24gemVtX2NvbnRhY3QoJGF0dHMsICR0aGluZyA9ICcnKQp7CglnbG9iYWwgJHNpdGVu YW1lLCAkcHJlZnMsICRwcm9kdWN0aW9uX3N0YXR1cywgJHplbV9jb250YWN0X2Zyb20sCgkJ JHplbV9jb250YWN0X3JlY2lwaWVudCwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRh Y3Rfc3VibWl0LAoJCSR6ZW1fY29udGFjdF9mb3JtLCAkemVtX2NvbnRhY3RfbGFiZWxzLCAk emVtX2NvbnRhY3RfdmFsdWVzOwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXko CgkJJ2NvcHlzZW5kZXInCT0+IDAsCgkJJ2Zvcm0nCQk9PiAnJywKCQknZnJvbScJCT0+ICcn LAoJCSdmcm9tX2Zvcm0nCT0+ICcnLAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQo J2NvbnRhY3QnKSwKCQkncmVkaXJlY3QnCT0+ICcnLAoJCSdzaG93X2Vycm9yJwk9PiAxLAoJ CSdzaG93X2lucHV0Jwk9PiAxLAoJCSdzZW5kX2FydGljbGUnCT0+IDAsCgkJJ3N1YmplY3Qn CT0+IHplbV9jb250YWN0X2dUeHQoJ2VtYWlsX3N1YmplY3QnLCBodG1sX2VudGl0eV9kZWNv ZGUoJHNpdGVuYW1lLEVOVF9RVU9URVMpKSwKCQknc3ViamVjdF9mb3JtJwk9PiAnJywKCQkn dG8nCQk9PiAnJywKCQkndG9fZm9ybScJPT4gJycsCgkJJ3RoYW5rcycJPT4gZ3JhZih6ZW1f Y29udGFjdF9nVHh0KCdlbWFpbF90aGFua3MnKSksCgkJJ3RoYW5rc19mb3JtJwk9PiAnJwoJ KSwgJGF0dHMpKTsKCgl1bnNldCgkYXR0c1snc2hvd19lcnJvciddLCAkYXR0c1snc2hvd19p bnB1dCddKTsKCSR6ZW1fY29udGFjdF9mb3JtX2lkID0gbWQ1KHNlcmlhbGl6ZSgkYXR0cyku cHJlZ19yZXBsYWNlKCcvW1x0XHNcclxuXS8nLCcnLCR0aGluZykpOwoJJHplbV9jb250YWN0 X3N1Ym1pdCA9IChwcygnemVtX2NvbnRhY3RfZm9ybV9pZCcpID09ICR6ZW1fY29udGFjdF9m b3JtX2lkKTsKCglpZiAoIWlzX2NhbGxhYmxlKCdtYWlsJykpCgl7CgkJcmV0dXJuICgkcHJv ZHVjdGlvbl9zdGF0dXMgPT0gJ2xpdmUnKSA/CgkJCXplbV9jb250YWN0X2dUeHQoJ21haWxf c29ycnknKSA6CgkJCWdUeHQoJ3dhcm5fbWFpbF91bmF2YWlsYWJsZScpOwoJfQoKCXN0YXRp YyAkaGVhZGVyc19zZW50ID0gZmFsc2U7CglpZiAoISRoZWFkZXJzX3NlbnQpIHsKCQloZWFk ZXIoJ0xhc3QtTW9kaWZpZWQ6ICcuZ21kYXRlKCdELCBkIE0gWSBIOmk6cycsdGltZSgpLTM2 MDAqMjQqNykuJyBHTVQnKTsKCQloZWFkZXIoJ0V4cGlyZXM6ICcuZ21kYXRlKCdELCBkIE0g WSBIOmk6cycsdGltZSgpKzYwMCkuJyBHTVQnKTsKCQloZWFkZXIoJ0NhY2hlLUNvbnRyb2w6 IG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUnKTsKCQkkaGVhZGVyc19zZW50ID0gdHJ1ZTsK CX0KCgkkbm9uY2UgICA9IG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZyhwcygnemVtX2NvbnRh Y3Rfbm9uY2UnKSk7CgkkcmVub25jZSA9IGZhbHNlOwoKCWlmICgkemVtX2NvbnRhY3Rfc3Vi bWl0KQoJewoJCXNhZmVfZGVsZXRlKCd0eHBfZGlzY3Vzc19ub25jZScsICdpc3N1ZV90aW1l IDwgZGF0ZV9zdWIobm93KCksIGludGVydmFsIDEwIG1pbnV0ZSknKTsKCQlpZiAoJHJzID0g c2FmZV9yb3coJ3VzZWQnLCAndHhwX2Rpc2N1c3Nfbm9uY2UnLCAibm9uY2UgPSAnJG5vbmNl JyIpKQoJCXsKCQkJaWYgKCRyc1sndXNlZCddKQoJCQl7CgkJCQl1bnNldCgkemVtX2NvbnRh Y3RfZXJyb3IpOwoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0 KCdmb3JtX3VzZWQnKTsKCQkJCSRyZW5vbmNlID0gdHJ1ZTsKCQkJCSRfUE9TVCA9IGFycmF5 KCk7CgkJCQkkX1BPU1RbJ3plbV9jb250YWN0X3N1Ym1pdCddID0gVFJVRTsKCQkJCSRfUE9T VFsnemVtX2NvbnRhY3RfZm9ybV9pZCddID0gJHplbV9jb250YWN0X2Zvcm1faWQ7CgkJCQkk X1BPU1RbJ3plbV9jb250YWN0X25vbmNlJ10gPSAkbm9uY2U7CgkJCX0KCQl9CgkJZWxzZQoJ CXsKCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdmb3JtX2V4 cGlyZWQnKTsKCQkJJHJlbm9uY2UgPSB0cnVlOwoJCX0KCX0KCglpZiAoJHplbV9jb250YWN0 X3N1Ym1pdCBhbmQgJG5vbmNlIGFuZCAhJHJlbm9uY2UpCgl7CgkJJHplbV9jb250YWN0X25v bmNlID0gJG5vbmNlOwoJfQoKCWVsc2VpZiAoISRzaG93X2Vycm9yIG9yICRzaG93X2lucHV0 KQoJewoJCSR6ZW1fY29udGFjdF9ub25jZSA9IG1kNSh1bmlxaWQocmFuZCgpLCB0cnVlKSk7 CgkJc2FmZV9pbnNlcnQoJ3R4cF9kaXNjdXNzX25vbmNlJywgImlzc3VlX3RpbWUgPSBub3co KSwgbm9uY2UgPSAnJHplbV9jb250YWN0X25vbmNlJyIpOwoJfQoKCSRmb3JtID0gKCRmb3Jt KSA/IGZldGNoX2Zvcm0oJGZvcm0pIDogJHRoaW5nOwoKCWlmIChlbXB0eSgkZm9ybSkpCgl7 CgkJJGZvcm0gPSAnCjx0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0iJy56ZW1fY29udGFj dF9nVHh0KCduYW1lJykuJyIgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF9lbWFpbCAvPjxi ciAvPicuCigkc2VuZF9hcnRpY2xlID8gJzx0eHA6emVtX2NvbnRhY3RfZW1haWwgc2VuZF9h cnRpY2xlPSIxIiBsYWJlbD0iJy56ZW1fY29udGFjdF9nVHh0KCdyZWNpcGllbnQnKS4nIiAv PjxiciAvPicgOiAnJykuCic8dHhwOnplbV9jb250YWN0X3RleHRhcmVhIC8+PGJyIC8+Cjx0 eHA6emVtX2NvbnRhY3Rfc3VibWl0IC8+Cic7Cgl9CgoJJGZvcm0gPSBwYXJzZSgkZm9ybSk7 CgoJaWYgKCR0b19mb3JtKQoJewoJCSR0byA9IHBhcnNlKGZldGNoX2Zvcm0oJHRvX2Zvcm0p KTsKCX0KCglpZiAoISR0byBhbmQgISRzZW5kX2FydGljbGUpCgl7CgkJcmV0dXJuIHplbV9j b250YWN0X2dUeHQoJ3RvX21pc3NpbmcnKTsKCX0KCgkkb3V0ID0gJyc7CgoJaWYgKCEkemVt X2NvbnRhY3Rfc3VibWl0KSB7CgkgICMgZG9uJ3Qgc2hvdyBlcnJvcnMgb3Igc2VuZCBtYWls Cgl9CgoJZWxzZWlmICghZW1wdHkoJHplbV9jb250YWN0X2Vycm9yKSkKCXsKCQlpZiAoJHNo b3dfZXJyb3Igb3IgISRzaG93X2lucHV0KQoJCXsKCQkJJG91dCAuPSBuLic8dWwgY2xhc3M9 InplbUVycm9yIj4nOwoKCQkJZm9yZWFjaCAoYXJyYXlfdW5pcXVlKCR6ZW1fY29udGFjdF9l cnJvcikgYXMgJGVycm9yKQoJCQl7CgkJCQkkb3V0IC49IG4udC4nPGxpPicuJGVycm9yLic8 L2xpPic7CgkJCX0KCgkJCSRvdXQgLj0gbi4nPC91bD4nOwoKCQkJaWYgKCEkc2hvd19pbnB1 dCkgcmV0dXJuICRvdXQ7CgkJfQoJfQoKCWVsc2VpZiAoJHNob3dfaW5wdXQgYW5kIGlzX2Fy cmF5KCR6ZW1fY29udGFjdF9mb3JtKSkKCXsKCQkvLy8gbG9hZCBhbmQgY2hlY2sgc3BhbSBw bHVnaW5zLwoJCWNhbGxiYWNrX2V2ZW50KCd6ZW1jb250YWN0LnN1Ym1pdCcpOwoJCSRldmFs dWF0aW9uID0mIGdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpOwoJCSRjbGVhbiA9ICRldmFs dWF0aW9uLT5nZXRfemVtY29udGFjdF9zdGF0dXMoKTsKCQlpZiAoJGNsZWFuICE9IDApIHsK CQkJcmV0dXJuIHplbV9jb250YWN0X2dUeHQoJ3NwYW0nKTsKCQl9CgoJCWlmICgkZnJvbV9m b3JtKQoJCXsKCQkJJGZyb20gPSBwYXJzZShmZXRjaF9mb3JtKCRmcm9tX2Zvcm0pKTsKCQl9 CgoJCWlmICgkc3ViamVjdF9mb3JtKQoJCXsKCQkJJHN1YmplY3QgPSBwYXJzZShmZXRjaF9m b3JtKCRzdWJqZWN0X2Zvcm0pKTsKCQl9CgoJCSRzZXAgPSAhaXNfd2luZG93cygpID8gIlxu IiA6ICJcclxuIjsKCgkJJG1zZyA9IGFycmF5KCk7CgoJCWZvcmVhY2ggKCR6ZW1fY29udGFj dF9sYWJlbHMgYXMgJG5hbWUgPT4gJGxhYmVsKQoJCXsKCQkJaWYgKCF0cmltKCR6ZW1fY29u dGFjdF92YWx1ZXNbJG5hbWVdKSkgY29udGludWU7CgkJCSRtc2dbXSA9ICRsYWJlbC4nOiAn LiR6ZW1fY29udGFjdF92YWx1ZXNbJG5hbWVdOwoJCX0KCgkJaWYgKCRzZW5kX2FydGljbGUp CgkJewoJCQlnbG9iYWwgJHRoaXNhcnRpY2xlOwoJCQkkc3ViamVjdCA9IHN0cl9yZXBsYWNl KCcmIzM4OycsICcmJywgJHRoaXNhcnRpY2xlWyd0aXRsZSddKTsKCQkJJG1zZ1tdID0gcGVy bWxpbmt1cmwoJHRoaXNhcnRpY2xlKTsKCQkJJG1zZ1tdID0gJHN1YmplY3Q7CgkJCSRzX2Fy ID0gYXJyYXkoJyYjODIxNjsnLCAnJiM4MjE3OycsICcmIzgyMjA7JywgJyYjODIyMTsnLCAn JiM4MjE3OycsICcmIzgyNDI7JywgJyYjODI0MzsnLCAnJiM4MjMwOycsICcmIzgyMTE7Jywg JyYjODIxMjsnLCAnJiMyMTU7JywgJyYjODQ4MjsnLCAnJiMxNzQ7JywgJyYjMTY5OycsICcm bHQ7JywgJyZndDsnLCAnJnF1b3Q7JywgJyZhbXA7JywgJyYjMzg7JywgIlx0IiwgJzxwJyk7 CgkJCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWlsY2hhcnNldCddIGFuZCBpc19jYWxsYWJs ZSgndXRmOF9kZWNvZGUnKSkgewoJCQkJJHJfYXIgPSBhcnJheSgiJyIsICInIiwgJyInLCAn IicsICInIiwgIiciLCAnIicsICcuLi4nLCAnLScsICctLScsICd4JywgJ1t0bV0nLCAnKHIp JywgJyhjKScsICc8JywgJz4nLCAnIicsICcmJywgJyYnLCAnICcsICJcbjxwIik7CgkJCX0K CQkJZWxzZQoJCQl7CgkJCQkkcl9hciA9IGFycmF5KCfigJgnLCAn4oCZJywgJ+KAnCcsICfi gJ0nLCAn4oCZJywgJ+KAsicsICfigLMnLCAn4oCmJywgJ+KAkycsICfigJQnLCAnw5cnLCAn 4oSiJywgJ8KuJywgJ8KpJywgJzwnLCAnPicsICciJywgJyYnLCAnJicsICcgJywgIlxuPHAi KTsKCQkJfQoJCQkkbXNnW10gPSB0cmltKHN0cmlwX3RhZ3Moc3RyX3JlcGxhY2UoJHNfYXIs JHJfYXIsKHRyaW0oc3RyaXBfdGFncygkdGhpc2FydGljbGVbJ2V4Y2VycHQnXSkpID8gJHRo aXNhcnRpY2xlWydleGNlcnB0J10gOiAkdGhpc2FydGljbGVbJ2JvZHknXSkpKSk7CgkJCWlm IChlbXB0eSgkemVtX2NvbnRhY3RfcmVjaXBpZW50KSkKCQkJewoJCQkJcmV0dXJuIHplbV9j b250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCB6ZW1fY29udGFjdF9nVHh0KCdyZWNpcGll bnQnKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdG8gPSAkemVtX2NvbnRhY3RfcmVjaXBp ZW50OwoJCQl9CgkJfQoKCQkkbXNnID0gam9pbigiXG5cbiIsICRtc2cpOwoJCSRtc2cgPSBz dHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRtc2cpOwoJCSRtc2cgPSBzdHJfcmVwbGFjZSgi XHIiLCAiXG4iLCAkbXNnKTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxuIiwgJHNlcCwgJG1z Zyk7CgoJCWlmICgkZnJvbSkKCQl7CgkJCSRyZXBseSA9ICR6ZW1fY29udGFjdF9mcm9tOwoJ CX0KCgkJZWxzZQoJCXsKCQkJJGZyb20gPSAkemVtX2NvbnRhY3RfZnJvbTsKCQkJJHJlcGx5 ID0gJyc7CgkJfQoKCQkkZnJvbSAgICA9IHplbV9jb250YWN0X3N0cmlwKCRmcm9tKTsKCQkk dG8gICAgICA9IHplbV9jb250YWN0X3N0cmlwKCR0byk7CgkJJHN1YmplY3QgPSB6ZW1fY29u dGFjdF9zdHJpcCgkc3ViamVjdCk7CgkJJHJlcGx5ICAgPSB6ZW1fY29udGFjdF9zdHJpcCgk cmVwbHkpOwoJCSRtc2cgICAgID0gemVtX2NvbnRhY3Rfc3RyaXAoJG1zZywgRkFMU0UpOwoK CQlpZiAoJHByZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQnXSBhbmQgaXNfY2FsbGFibGUo J3V0ZjhfZGVjb2RlJykpCgkJewoJCQkkY2hhcnNldCA9ICdJU08tODg1OS0xJzsKCQkJJHN1 YmplY3QgPSB1dGY4X2RlY29kZSgkc3ViamVjdCk7CgkJCSRtc2cgICAgID0gdXRmOF9kZWNv ZGUoJG1zZyk7CgkJfQoKCQllbHNlCgkJewoJCQkkY2hhcnNldCA9ICdVVEYtOCc7CgkJfQoK CQkkc3ViamVjdCA9IHplbV9jb250YWN0X21haWxoZWFkZXIoJHN1YmplY3QsICd0ZXh0Jyk7 CgoJCSRoZWFkZXJzID0gJ0Zyb206ICcuJGZyb20uCgkJCSgkcmVwbHkgPyAoJHNlcC4nUmVw bHktVG86ICcuJHJlcGx5KSA6ICcnKS4KCQkJJHNlcC4nWC1NYWlsZXI6IFRleHRwYXR0ZXJu ICh6ZW1fY29udGFjdF9yZWJvcm4pJy4KCQkJJHNlcC4nWC1PcmlnaW5hdGluZy1JUDogJy56 ZW1fY29udGFjdF9zdHJpcCgoIWVtcHR5KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX0ZP UiddKSA/ICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddLicgdmlhICcgOiAnJyku JF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pLgoJCQkkc2VwLidDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiA4Yml0Jy4KCQkJJHNlcC4nQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PSInLiRjaGFyc2V0LiciJzsKCgkJc2FmZV91cGRhdGUoJ3R4cF9kaXNjdXNzX25vbmNl JywgInVzZWQgPSAnMScsIGlzc3VlX3RpbWUgPSBub3coKSIsICJub25jZSA9ICckbm9uY2Un Iik7CgoJCWlmIChtYWlsKCR0bywgJHN1YmplY3QsICRtc2csICRoZWFkZXJzKSkKCQl7CgkJ CSRfUE9TVCA9IGFycmF5KCk7CgoJCQlpZiAoJGNvcHlzZW5kZXIgYW5kICR6ZW1fY29udGFj dF9mcm9tKQoJCQl7CgkJCQltYWlsKHplbV9jb250YWN0X3N0cmlwKCR6ZW1fY29udGFjdF9m cm9tKSwgJHN1YmplY3QsICRtc2csICRoZWFkZXJzKTsKCQkJfQoKCQkJaWYgKCRyZWRpcmVj dCkKCQkJewoJCQkJd2hpbGUgKEBvYl9lbmRfY2xlYW4oKSk7CgkJCQkkdXJpID0gaHUubHRy aW0oJHJlZGlyZWN0LCcvJyk7CgkJCQlpZiAoZW1wdHkoJF9TRVJWRVJbJ0ZDR0lfUk9MRSdd KSBhbmQgZW1wdHkoJF9FTlZbJ0ZDR0lfUk9MRSddKSkKCQkJCXsKCQkJCQl0eHBfc3RhdHVz X2hlYWRlcignMzAzIFNlZSBPdGhlcicpOwoJCQkJCWhlYWRlcignTG9jYXRpb246ICcuJHVy aSk7CgkJCQkJaGVhZGVyKCdDb25uZWN0aW9uOiBjbG9zZScpOwoJCQkJCWhlYWRlcignQ29u dGVudC1MZW5ndGg6IDAnKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkdXJpID0gaHRt bHNwZWNpYWxjaGFycygkdXJpKTsKCQkJCQkkcmVmcmVzaCA9IHplbV9jb250YWN0X2dUeHQo J3JlZnJlc2gnKTsKCQkJCQllY2hvIDw8PEVORAo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0v L1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5v cmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5z PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVu Ij4KPGhlYWQ+Cgk8dGl0bGU+JHNpdGVuYW1lPC90aXRsZT4KCTxtZXRhIGh0dHAtZXF1aXY9 IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgoJ PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9JHVyaSIgLz4KPC9o ZWFkPgo8Ym9keT4KPGEgaHJlZj0iJHVyaSI+JHJlZnJlc2g8L2E+CjwvYm9keT4KPC9odG1s PgpFTkQ7CgkJCQl9CgkJCQlleGl0OwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCXJldHVybiAn PGRpdiBjbGFzcz0iemVtVGhhbmtzIiBpZD0iemNyJy4kemVtX2NvbnRhY3RfZm9ybV9pZC4n Ij4nIC4KCQkJCQkoJHRoYW5rc19mb3JtID8gZmV0Y2hfZm9ybSgkdGhhbmtzX2Zvcm0pIDog JHRoYW5rcykgLgoJCQkJCSc8L2Rpdj4nOwoJCQl9CgkJfQoKCQllbHNlCgkJewoJCQkkb3V0 IC49IGdyYWYoemVtX2NvbnRhY3RfZ1R4dCgnbWFpbF9zb3JyeScpKTsKCQl9Cgl9CgoJaWYg KCRzaG93X2lucHV0IGFuZCAhJHNlbmRfYXJ0aWNsZSBvciBncHMoJ3plbV9jb250YWN0X3Nl bmRfYXJ0aWNsZScpKQoJewoJCXJldHVybiAnPGZvcm0gbWV0aG9kPSJwb3N0IicuKCghJHNo b3dfZXJyb3IgYW5kICR6ZW1fY29udGFjdF9lcnJvcikgPyAnJyA6ICcgaWQ9InpjcicuJHpl bV9jb250YWN0X2Zvcm1faWQuJyInKS4nIGNsYXNzPSJ6ZW1Db250YWN0Rm9ybSIgYWN0aW9u PSInLmh0bWxzcGVjaWFsY2hhcnMoc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpKS4nI3pjcicu JHplbV9jb250YWN0X2Zvcm1faWQuJyI+Jy4KCQkJKCAkbGFiZWwgPyBuLic8ZmllbGRzZXQ+ JyA6IG4uJzxkaXY+JyApLgoJCQkoICRsYWJlbCA/IG4uJzxsZWdlbmQ+Jy5odG1sc3BlY2lh bGNoYXJzKCRsYWJlbCkuJzwvbGVnZW5kPicgOiAnJyApLgoJCQkkb3V0LgoJCQluLic8aW5w dXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ6ZW1fY29udGFjdF9ub25jZSIgdmFsdWU9IicuJHpl bV9jb250YWN0X25vbmNlLiciIC8+Jy4KCQkJbi4nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFt ZT0iemVtX2NvbnRhY3RfZm9ybV9pZCIgdmFsdWU9IicuJHplbV9jb250YWN0X2Zvcm1faWQu JyIgLz4nLgoJCQkkZm9ybS4KCQkJY2FsbGJhY2tfZXZlbnQoJ3plbWNvbnRhY3QuZm9ybScp LgoJCQkoICRsYWJlbCA/IChuLic8L2ZpZWxkc2V0PicpIDogKG4uJzwvZGl2PicpICkuCgkJ CW4uJzwvZm9ybT4nOwoJfQoKCXJldHVybiAnJzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rf c3RyaXAoJHN0ciwgJGhlYWRlciA9IFRSVUUpIHsKCWlmICgkaGVhZGVyKSAkc3RyID0gc3Ry aXBfcm4oJHN0cik7CglyZXR1cm4gcHJlZ19yZXBsYWNlKCcvW1x4MDBdLycsICcgJywgJHN0 cik7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3RleHQoJGF0dHMpCnsKCWdsb2JhbCAkemVt X2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29u dGFjdF9sQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9PiBiciwKCQknZGVmYXVsdCcJPT4gJycs CgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ3Rl eHQnKSwKCQknbWF4JwkJPT4gMTAwLAoJCSdtaW4nCQk9PiAwLAoJCSduYW1lJwkJPT4gJycs CgkJJ3JlcXVpcmVkJwk9PiAxLAoJCSdzaXplJwkJPT4gJycKCSksICRhdHRzKSk7CgoJJG1p biA9IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwoJG1heCk7Cgkkc2l6ZSA9IGludHZh bCgkc2l6ZSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJl bDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJJHZhbHVl ID0gdHJpbShwcygkbmFtZSkpOwoJCSR1dGY4bGVuID0gcHJlZ19tYXRjaF9hbGwoIi8uL3N1 IiwgJHZhbHVlLCAkdXRmOGFyKTsKCQkkaGxhYmVsID0gaHRtbHNwZWNpYWxjaGFycygkbGFi ZWwpOwoKCQlpZiAoc3RybGVuKCR2YWx1ZSkpCgkJewoJCQlpZiAoISR1dGY4bGVuKQoJCQl7 CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRf dXRmOCcsICRobGFiZWwpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoK CQkJZWxzZWlmICgkbWluIGFuZCAkdXRmOGxlbiA8ICRtaW4pCgkJCXsKCQkJCSR6ZW1fY29u dGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnbWluX3dhcm5pbmcnLCAkaGxhYmVs LCAkbWluKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2Vp ZiAoJG1heCBhbmQgJHV0ZjhsZW4gPiAkbWF4KQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJy b3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ21heF93YXJuaW5nJywgJGhsYWJlbCwgJG1heCk7 CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQkJIyR2YWx1ZSA9IGpvaW4oJycs YXJyYXlfc2xpY2UoJGFyWzBdLDAsJG1heCkpOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCXpl bV9jb250YWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7CgkJCX0KCQl9CgkJZWxz ZWlmICgkcmVxdWlyZWQpCgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250 YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCAkaGxhYmVsKTsKCQkJJGlzRXJyb3IgPSAiZXJy b3JFbGVtZW50IjsKCQl9Cgl9CgoJZWxzZQoJewoJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJfQoK CSRzaXplID0gKCRzaXplKSA/ICcgc2l6ZT0iJy4kc2l6ZS4nIicgOiAnJzsKCSRtYXhsZW5n dGggPSAoJG1heCkgPyAnIG1heGxlbmd0aD0iJy4kbWF4LiciJyA6ICcnOwoKCSR6ZW1SZXF1 aXJlZCA9ICRyZXF1aXJlZCA/ICd6ZW1SZXF1aXJlZCcgOiAnJzsKCiAgICAgICAgcmV0dXJu ICc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1UZXh0ICcuJHplbVJlcXVpcmVk LiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9s YWJlbD4nLiRicmVhay4KCQknPGlucHV0IHR5cGU9InRleHQiIGlkPSInLiRuYW1lLiciIGNs YXNzPSJ6ZW1UZXh0ICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9IicuJG5hbWUu JyIgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpLiciJy4kc2l6ZS4kbWF4bGVu Z3RoLicgLz4nOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF90ZXh0YXJlYSgkYXR0cykKewoJ Z2xvYmFsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdDsKCglleHRy YWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+IGJyLAoJCSdjb2xz JwkJPT4gNTgsCgkJJ2RlZmF1bHQnCT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFi ZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdtZXNzYWdlJyksCgkJJ21heCcJCT0+IDEwMDAw LAoJCSdtaW4nCQk9PiAwLAoJCSduYW1lJwkJPT4gJycsCgkJJ3JlcXVpcmVkJwk9PiAxLAoJ CSdyb3dzJwkJPT4gOAoJKSwgJGF0dHMpKTsKCgkkbWluID0gaW50dmFsKCRtaW4pOwoJJG1h eCA9IGludHZhbCgkbWF4KTsKCSRjb2xzID0gaW50dmFsKCRjb2xzKTsKCSRyb3dzID0gaW50 dmFsKCRyb3dzKTsKCglpZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xh YmVsMm5hbWUoJGxhYmVsKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkdmFs dWUgPSBwcmVnX3JlcGxhY2UoJy9eXHMqW1xyXG5dLycsICcnLCBydHJpbShwcygkbmFtZSkp KTsKCQkkdXRmOGxlbiA9IHByZWdfbWF0Y2hfYWxsKCIvLi9zdSIsIGx0cmltKCR2YWx1ZSks ICR1dGY4YXIpOwoJCSRobGFiZWwgPSBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7CgoJCWlm IChzdHJsZW4obHRyaW0oJHZhbHVlKSkpCgkJewoJCQlpZiAoISR1dGY4bGVuKQoJCQl7CgkJ CQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRfdXRm OCcsICRobGFiZWwpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoKCQkJ ZWxzZWlmICgkbWluIGFuZCAkdXRmOGxlbiA8ICRtaW4pCgkJCXsKCQkJCSR6ZW1fY29udGFj dF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnbWluX3dhcm5pbmcnLCAkaGxhYmVsLCAk bWluKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2VpZiAo JG1heCBhbmQgJHV0ZjhsZW4gPiAkbWF4KQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3Jb XSA9IHplbV9jb250YWN0X2dUeHQoJ21heF93YXJuaW5nJywgJGhsYWJlbCwgJG1heCk7CgkJ CQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQkJIyR2YWx1ZSA9IGpvaW4oJycsYXJy YXlfc2xpY2UoJHV0ZjhhclswXSwwLCRtYXgpKTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQl6 ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpOwoJCQl9CgkJfQoKCQll bHNlaWYgKCRyZXF1aXJlZCkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2Nv bnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsICRobGFiZWwpOwoJCQkkaXNFcnJvciA9ICJl cnJvckVsZW1lbnQiOwoJCX0KCX0KCgllbHNlCgl7CgkJJHZhbHVlID0gJGRlZmF1bHQ7Cgl9 CgoJJHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoKCXJl dHVybiAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iemVtVGV4dGFyZWEgJy4kemVt UmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGFi ZWwpLic8L2xhYmVsPicuJGJyZWFrLgoJCSc8dGV4dGFyZWEgaWQ9IicuJG5hbWUuJyIgY2xh c3M9InplbVRleHRhcmVhICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9IicuJG5h bWUuJyIgY29scz0iJy4kY29scy4nIiByb3dzPSInLiRyb3dzLiciPicuaHRtbHNwZWNpYWxj aGFycygkdmFsdWUpLic8L3RleHRhcmVhPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X2Vt YWlsKCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rf c3VibWl0LCAkemVtX2NvbnRhY3RfZnJvbSwgJHplbV9jb250YWN0X3JlY2lwaWVudDsKCgll eHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdkZWZhdWx0Jwk9PiAnJywKCQkn aXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnZW1haWwn KSwKCQknbWF4JwkJPT4gMTAwLAoJCSdtaW4nCQk9PiAwLAoJCSduYW1lJwkJPT4gJycsCgkJ J3JlcXVpcmVkJwk9PiAxLAoJCSdicmVhaycJCT0+IGJyLAoJCSdzaXplJwkJPT4gJycsCgkJ J3NlbmRfYXJ0aWNsZScJPT4gMAoJKSwgJGF0dHMpKTsKCglpZiAoZW1wdHkoJG5hbWUpKSAk bmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKCgkkZW1haWwgPSAkemVt X2NvbnRhY3Rfc3VibWl0ID8gdHJpbShwcygkbmFtZSkpIDogJGRlZmF1bHQ7CgoJaWYgKCR6 ZW1fY29udGFjdF9zdWJtaXQgYW5kIHN0cmxlbigkZW1haWwpKQoJewoJCWlmICghaXNfdmFs aWRfZW1haWwoJGVtYWlsKSkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2Nv bnRhY3RfZ1R4dCgnaW52YWxpZF9lbWFpbCcsIGh0bWxzcGVjaWFsY2hhcnMoJGVtYWlsKSk7 CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoKCQllbHNlCgkJewoJCQlwcmVn X21hdGNoKCIvQCguKykkLyIsICRlbWFpbCwgJG1hdGNoKTsKCQkJJGRvbWFpbiA9ICRtYXRj aFsxXTsKCgkJCWlmIChpc19jYWxsYWJsZSgnY2hlY2tkbnNycicpIGFuZCBjaGVja2Ruc3Jy KCd0ZXh0cGF0dGVybi5jb20uJywnQScpIGFuZCAhY2hlY2tkbnNycigkZG9tYWluLicuJywn TVgnKSBhbmQgIWNoZWNrZG5zcnIoJGRvbWFpbi4nLicsJ0EnKSkKCQkJewoJCQkJJHplbV9j b250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX2hvc3QnLCBodG1s c3BlY2lhbGNoYXJzKCRkb21haW4pKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7 CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJaWYgKCRzZW5kX2FydGljbGUpIHsKCQkJCQkkemVt X2NvbnRhY3RfcmVjaXBpZW50ID0gJGVtYWlsOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJJHpl bV9jb250YWN0X2Zyb20gPSAkZW1haWw7CgkJCQl9CgkJCX0KCQl9Cgl9CgoJcmV0dXJuIHpl bV9jb250YWN0X3RleHQoYXJyYXkoCgkJJ2RlZmF1bHQnCT0+ICRlbWFpbCwKCQknaXNFcnJv cicJPT4gJGlzRXJyb3IsCgkJJ2xhYmVsJwkJPT4gJGxhYmVsLAoJCSdtYXgnCQk9PiAkbWF4 LAoJCSdtaW4nCQk9PiAkbWluLAoJCSduYW1lJwkJPT4gJG5hbWUsCgkJJ3JlcXVpcmVkJwk9 PiAkcmVxdWlyZWQsCgkJJ2JyZWFrJwkJPT4gJGJyZWFrLAoJCSdzaXplJwkJPT4gJHNpemUK CSkpOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zZWxlY3QoJGF0dHMpCnsKCWdsb2JhbCAk emVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1f Y29udGFjdF9sQXR0cyhhcnJheSgKCQknbmFtZScJCT0+ICcnLAoJCSdicmVhaycJCT0+ICcg JywKCQknZGVsaW1pdGVyJwk9PiAnLCcsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJ CT0+IHplbV9jb250YWN0X2dUeHQoJ29wdGlvbicpLAoJCSdsaXN0JwkJPT4gemVtX2NvbnRh Y3RfZ1R4dCgnZ2VuZXJhbF9pbnF1aXJ5JyksCgkJJ3JlcXVpcmVkJwk9PiAxLAoJCSdzZWxl Y3RlZCcJPT4gJycKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6 ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJJGxpc3QgPSBhcnJheV9tYXAoJ3Ry aW0nLCBleHBsb2RlKCRkZWxpbWl0ZXIsIHByZWdfcmVwbGFjZSgnL1tcclxuXHRcc10rLycs ICcgJywkbGlzdCkpKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkdmFsdWUg PSB0cmltKHBzKCRuYW1lKSk7CgoJCWlmIChzdHJsZW4oJHZhbHVlKSkKCQl7CgkJCWlmIChp bl9hcnJheSgkdmFsdWUsICRsaXN0KSkKCQkJewoJCQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5h bWUsICRsYWJlbCwgJHZhbHVlKTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQkkemVtX2NvbnRh Y3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRfdmFsdWUnLCBodG1sc3Bl Y2lhbGNoYXJzKCRsYWJlbCksIGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKSk7CgkJCQkkaXNF cnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgkJfQoKCQllbHNlaWYgKCRyZXF1aXJlZCkK CQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZmllbGRf bWlzc2luZycsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSk7CgkJCSRpc0Vycm9yID0gImVy cm9yRWxlbWVudCI7CgkJfQoJfQoJZWxzZQoJewoJCSR2YWx1ZSA9ICRzZWxlY3RlZDsKCX0K Cgkkb3V0ID0gJyc7CgoJZm9yZWFjaCAoJGxpc3QgYXMgJGl0ZW0pCgl7CgkJJG91dCAuPSBu LnQuJzxvcHRpb24nLigkaXRlbSA9PSAkdmFsdWUgPyAnIHNlbGVjdGVkPSJzZWxlY3RlZCI+ JyA6ICc+JykuKHN0cmxlbigkaXRlbSkgPyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtKSA6ICcg JykuJzwvb3B0aW9uPic7Cgl9CgoJJHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3plbVJl cXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0i emVtU2VsZWN0ICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLmh0bWxz cGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVhay4KCQluLic8c2VsZWN0IGlk PSInLiRuYW1lLiciIG5hbWU9IicuJG5hbWUuJyIgY2xhc3M9InplbVNlbGVjdCAnLiR6ZW1S ZXF1aXJlZC4kaXNFcnJvci4nIj4nLgoJCQkkb3V0LgoJCW4uJzwvc2VsZWN0Pic7Cn0KCmZ1 bmN0aW9uIHplbV9jb250YWN0X2NoZWNrYm94KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250 YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3Rf bEF0dHMoYXJyYXkoCgkJJ2JyZWFrJwkJPT4gJyAnLAoJCSdjaGVja2VkJwk9PiAwLAoJCSdp c0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdjaGVja2Jv eCcpLAoJCSduYW1lJwkJPT4gJycsCgkJJ3JlcXVpcmVkJwk9PiAxCgkpLCAkYXR0cykpOwoK CWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFi ZWwpOwoKCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IChib29sKSBw cygkbmFtZSk7CgoJCWlmICgkcmVxdWlyZWQgYW5kICEkdmFsdWUpCgkJewoJCQkkemVtX2Nv bnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCBodG1s c3BlY2lhbGNoYXJzKCRsYWJlbCkpOwoJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJ CX0KCgkJZWxzZQoJCXsKCQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZh bHVlID8gZ1R4dCgneWVzJykgOiBnVHh0KCdubycpKTsKCQl9Cgl9CgoJZWxzZSB7CgkJJHZh bHVlID0gJGNoZWNrZWQ7Cgl9CgoJJHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3plbVJl cXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iJy4k bmFtZS4nIiBjbGFzcz0iemVtQ2hlY2tib3ggJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyIg bmFtZT0iJy4kbmFtZS4nIicuCgkJKCR2YWx1ZSA/ICcgY2hlY2tlZD0iY2hlY2tlZCInIDog JycpLicgLz4nLiRicmVhay4KCQknPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iemVt Q2hlY2tib3ggJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRtbHNw ZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVsPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0 X3NlcnZlcmluZm8oJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4 dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ2xhYmVsJwkJPT4gJycsCgkJJ25h bWUnCQk9PiAnJwoJKSwgJGF0dHMpKTsKCglpZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHpl bV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKCglpZiAoc3RybGVuKCRuYW1lKSBhbmQg JHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQlpZiAoISRsYWJlbCkgJGxhYmVsID0gJG5hbWU7 CgkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgc2VydmVyU2V0KCRuYW1lKSk7 Cgl9Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3NlY3JldCgkYXR0cywgJHRoaW5nID0gJycp CnsKCWdsb2JhbCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3Rf bEF0dHMoYXJyYXkoCgkJJ25hbWUnCT0+ICcnLAoJCSdsYWJlbCcJPT4gemVtX2NvbnRhY3Rf Z1R4dCgnc2VjcmV0JyksCgkJJ3ZhbHVlJwk9PiAnJwoJKSwgJGF0dHMpKTsKCgkkbmFtZSA9 IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJG5hbWUgPyAkbmFtZSA6ICRsYWJlbCk7CgoJaWYg KCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJaWYgKCR0aGluZykgJHZhbHVlID0gdHJpbShw YXJzZSgkdGhpbmcpKTsKCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFs dWUpOwoJfQoKCXJldHVybiAnJzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfcmFkaW8oJGF0 dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQs ICR6ZW1fY29udGFjdF92YWx1ZXM7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJh eSgKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2NoZWNrZWQnCT0+IDAsCgkJJ2dyb3VwJwkJPT4g JycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnb3B0aW9uJyksCgkJJ25hbWUn CQk9PiAnJwoJKSwgJGF0dHMpKTsKCglzdGF0aWMgJGN1cl9uYW1lID0gJyc7CglzdGF0aWMg JGN1cl9ncm91cCA9ICcnOwoKCWlmICghJG5hbWUgYW5kICEkZ3JvdXAgYW5kICEkY3VyX25h bWUgYW5kICEkY3VyX2dyb3VwKSB7CgkJJGN1cl9ncm91cCA9IHplbV9jb250YWN0X2dUeHQo J3JhZGlvJyk7CgkJJGN1cl9uYW1lID0gJGN1cl9ncm91cDsKCX0KCWlmICgkZ3JvdXAgYW5k ICEkbmFtZSBhbmQgJGdyb3VwICE9ICRjdXJfZ3JvdXApICRuYW1lID0gJGdyb3VwOwoKCWlm ICgkbmFtZSkgJGN1cl9uYW1lID0gJG5hbWU7CgllbHNlICRuYW1lID0gJGN1cl9uYW1lOwoK CWlmICgkZ3JvdXApICRjdXJfZ3JvdXAgPSAkZ3JvdXA7CgllbHNlICRncm91cCA9ICRjdXJf Z3JvdXA7CgoJJGlkICAgPSAncScubWQ1KCRuYW1lLic9PicuJGxhYmVsKTsKCSRuYW1lID0g emVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbmFtZSk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJt aXQpCgl7CgkJJGlzX2NoZWNrZWQgPSAocHMoJG5hbWUpID09ICRpZCk7CgoJCWlmICgkaXNf Y2hlY2tlZCBvciAkY2hlY2tlZCBhbmQgIWlzc2V0KCR6ZW1fY29udGFjdF92YWx1ZXNbJG5h bWVdKSkKCQl7CgkJCXplbV9jb250YWN0X3N0b3JlKCRuYW1lLCAkZ3JvdXAsICRsYWJlbCk7 CgkJfQoJfQoKCWVsc2UKCXsKCQkkaXNfY2hlY2tlZCA9ICRjaGVja2VkOwoJfQoKCXJldHVy biAnPGlucHV0IHZhbHVlPSInLiRpZC4nIiB0eXBlPSJyYWRpbyIgaWQ9IicuJGlkLiciIGNs YXNzPSJ6ZW1SYWRpbyAnLiRuYW1lLiciIG5hbWU9IicuJG5hbWUuJyInLgoJCSggJGlzX2No ZWNrZWQgPyAnIGNoZWNrZWQ9ImNoZWNrZWQiIC8+JyA6ICcgLz4nKS4kYnJlYWsuCgkJJzxs YWJlbCBmb3I9IicuJGlkLiciIGNsYXNzPSJ6ZW1SYWRpbyAnLiRuYW1lLiciPicuaHRtbHNw ZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVsPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0 X3NlbmRfYXJ0aWNsZSgkYXR0cykKewoJaWYgKCFpc3NldCgkX1JFUVVFU1RbJ3plbV9jb250 YWN0X3NlbmRfYXJ0aWNsZSddKSkgewoJCSRsaW5rdGV4dCA9IChlbXB0eSgkYXR0c1snbGlu a3RleHQnXSkpID8gemVtX2NvbnRhY3RfZ1R4dCgnc2VuZF9hcnRpY2xlJykgOiAkYXR0c1sn bGlua3RleHQnXTsKCQkkam9pbiA9IChlbXB0eSgkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10p KSA/ICc/JyA6ICcmJzsKCQkkaHJlZiA9ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiRqb2lu Lid6ZW1fY29udGFjdF9zZW5kX2FydGljbGU9eWVzJzsKCQlyZXR1cm4gJzxhIGhyZWY9Iicu aHRtbHNwZWNpYWxjaGFycygkaHJlZikuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsaW5rdGV4 dCkuJzwvYT4nOwoJfQoJcmV0dXJuOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zdWJtaXQo JGF0dHMsICR0aGluZykKewoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQkn YnV0dG9uJwk9PiAwLAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ3NlbmQnKQoJ KSwgJGF0dHMpKTsKCgkkbGFiZWwgPSBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7CgoJaWYg KCRidXR0b24gb3Igc3RybGVuKCR0aGluZykpCgl7CgkJcmV0dXJuICc8YnV0dG9uIHR5cGU9 InN1Ym1pdCIgY2xhc3M9InplbVN1Ym1pdCIgbmFtZT0iemVtX2NvbnRhY3Rfc3VibWl0IiB2 YWx1ZT0iJy4kbGFiZWwuJyI+Jy4oJHRoaW5nID8gdHJpbShwYXJzZSgkdGhpbmcpKSA6ICRs YWJlbCkuJzwvYnV0dG9uPic7Cgl9CgllbHNlCgl7CgkJcmV0dXJuICc8aW5wdXQgdHlwZT0i c3VibWl0IiBjbGFzcz0iemVtU3VibWl0IiBuYW1lPSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZh bHVlPSInLiRsYWJlbC4nIiAvPic7Cgl9Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X2xBdHRz KCRhcnIsICRhdHRzKQp7Cglmb3JlYWNoKGFycmF5KCdidXR0b24nLCAnY29weXNlbmRlcics ICdjaGVja2VkJywgJ3JlcXVpcmVkJywgJ3NlbmRfYXJ0aWNsZScsICdzaG93X2lucHV0Jywg J3Nob3dfZXJyb3InKSBhcyAka2V5KQoJewoJCWlmIChpc3NldCgkYXR0c1ska2V5XSkpCgkJ ewoJCQkkYXR0c1ska2V5XSA9ICgkYXR0c1ska2V5XSA9PT0gJ3llcycgb3IgaW50dmFsKCRh dHRzWyRrZXldKSkgPyAxIDogMDsKCQl9Cgl9CglpZiAoaXNzZXQoJGF0dHNbJ2JyZWFrJ10p IGFuZCAkYXR0c1snYnJlYWsnXSA9PSAnYnInKSAkYXR0c1snYnJlYWsnXSA9ICc8YnIgLz4n OwoJcmV0dXJuIGxBdHRzKCRhcnIsICRhdHRzKTsKfQoKY2xhc3MgemVtY29udGFjdF9ldmFs dWF0aW9uCnsKCXZhciAkc3RhdHVzOwoKCWZ1bmN0aW9uIHplbWNvbnRhY3RfZXZhbHVhdGlv bigpIHsKCQkkdGhpcy0+c3RhdHVzID0gMDsKCX0KCglmdW5jdGlvbiBhZGRfemVtY29udGFj dF9zdGF0dXMoJGNoZWNrKSB7CgkJJHRoaXMtPnN0YXR1cyArPSAkY2hlY2s7Cgl9CgoJZnVu Y3Rpb24gZ2V0X3plbWNvbnRhY3Rfc3RhdHVzKCkgewoJCXJldHVybiAkdGhpcy0+c3RhdHVz OwoJfQp9CgpmdW5jdGlvbiAmZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9yKCkKewoJc3RhdGlj ICRpbnN0YW5jZTsKCglpZighaXNzZXQoJGluc3RhbmNlKSkgewoJCSRpbnN0YW5jZSA9IG5l dyB6ZW1jb250YWN0X2V2YWx1YXRpb24oKTsKCX0KCXJldHVybiAkaW5zdGFuY2U7Cn0KCmZ1 bmN0aW9uIHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKQp7CgkkbGFiZWwgPSB0cmlt KCRsYWJlbCk7CglpZiAoc3RybGVuKCRsYWJlbCkgPT0gMCkgcmV0dXJuICdpbnZhbGlkJzsK CWlmIChzdHJsZW4oJGxhYmVsKSA8PSAzMiBhbmQgcHJlZ19tYXRjaCgnL15bYS16QS1aXVtB LVphLXowLTk6Xy1dKiQvJywgJGxhYmVsKSkgcmV0dXJuICRsYWJlbDsKCWVsc2UgcmV0dXJu ICdxJy5tZDUoJGxhYmVsKTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUs ICRsYWJlbCwgJHZhbHVlKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29u dGFjdF9sYWJlbHMsICR6ZW1fY29udGFjdF92YWx1ZXM7CgkkemVtX2NvbnRhY3RfZm9ybVsk bGFiZWxdID0gJHZhbHVlOwoJJHplbV9jb250YWN0X2xhYmVsc1skbmFtZV0gPSAkbGFiZWw7 CgkkemVtX2NvbnRhY3RfdmFsdWVzWyRuYW1lXSA9ICR2YWx1ZTsKfQoKZnVuY3Rpb24gemVt X2NvbnRhY3RfbWFpbGhlYWRlcigkc3RyaW5nLCAkdHlwZSkKewoJZ2xvYmFsICRwcmVmczsK CWlmICghc3Ryc3RyKCRzdHJpbmcsJz0/JykgYW5kICFwcmVnX21hdGNoKCcvW1x4MDAtXHgx Rlx4N0YtXHhGRl0vJywgJHN0cmluZykpIHsKCQlpZiAoInBocmFzZSIgPT0gJHR5cGUpIHsK CQkJaWYgKHByZWdfbWF0Y2goJy9bXVsoKTw+QCw7OiIuXHg1Q10vJywgJHN0cmluZykpIHsK CQkJCSRzdHJpbmcgPSAnIicuIHN0cnRyKCRzdHJpbmcsIGFycmF5KCJcXCIgPT4gIlxcXFwi LCAnIicgPT4gJ1wiJykpIC4gJyInOwoJCQl9CgkJfQoJCWVsc2VpZiAoInRleHQiICE9ICR0 eXBlKSB7CgkJCXRyaWdnZXJfZXJyb3IoJ1Vua25vd24gZW5jb2RlX21haWxoZWFkZXIgdHlw ZScsIEVfVVNFUl9XQVJOSU5HKTsKCQl9CgkJcmV0dXJuICRzdHJpbmc7Cgl9CglpZiAoJHBy ZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQnXSkgewoJCSRzdGFydCA9ICc9P0lTTy04ODU5 LTE/Qj8nOwoJCSRwY3JlICA9ICcvLnsxLDQyfS9zJzsKCX0KCWVsc2UgewoJCSRzdGFydCA9 ICc9P1VURi04P0I/JzsKCQkkcGNyZSAgPSAnLy57MSw0NX0oPz1bXHgwMC1ceDdGXHhDMC1c eEZGXXwkKS9zJzsKCX0KCSRlbmQgPSAnPz0nOwoJJHNlcCA9IGlzX3dpbmRvd3MoKSA/ICJc clxuIiA6ICJcbiI7CglwcmVnX21hdGNoX2FsbCgkcGNyZSwgJHN0cmluZywgJG1hdGNoZXMp OwoJcmV0dXJuICRzdGFydCAuIGpvaW4oJGVuZC4kc2VwLicgJy4kc3RhcnQsIGFycmF5X21h cCgnYmFzZTY0X2VuY29kZScsJG1hdGNoZXNbMF0pKSAuICRlbmQ7Cn0KIjtzOjM6Im1kNSI7 czozMjoiNWVlYTFmZDg5MzE3OTI1ZWYxYThlMmUyYmMyYmU0ZjgiO30=