# zem_contact_reborn v4.0.3.19 # Form mailer for Textpattern # # License: GNU GPLv2 or later # # TXP Community # http://forum.textpattern.com/viewtopic.php?id=21144 # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTg6InplbV9jb250YWN0X3JlYm9ybiI7czo3OiJ2ZXJzaW9u IjtzOjg6IjQuMC4zLjE5IjtzOjY6ImF1dGhvciI7czoxMzoiVFhQIENvbW11bml0eSI7czox MDoiYXV0aG9yX3VyaSI7czo1MToiaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIxMTQ0IjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6MzY0MTY6 IiA8c3R5bGU+CiAgIGxpIGNvZGUge2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRk aW5nOiAwLjVlbSAxZW07IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAj Y2NjO30KICAgaDEsIGgyLCBoMywgaDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7 IGZvbnQtd2VpZ2h0OiBib2xkO30KICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07 fQogICBoMiwgaDMge21hcmdpbi10b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9 CiAgIGgyIHtmb250LXNpemU6IDJlbTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAg bGkgYSBjb2RlIHtmb250LXdlaWdodDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2Fybmlu ZyB7Y29sb3I6cmVkO30KIDwvc3R5bGU+Cgo8aDEgaWQ9InRvcCI+WmVtIENvbnRhY3QgUmVi b3JuPC9oMT4KCjxwPlBsZWFzZSByZXBvcnRzIGJ1Z3MgYW5kIHByb2JsZW1zIHdpdGggdGhp cyBwbHVnaW4gaW4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIxMTQ0Ij50aGlzIGZvcnVtIHRocmVhZDwvYT4uPC9wPgoKPHAgY2xh 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+PGEgaHJlZj0iI2Vycm9yZm9ybSI+U2Vw YXJhdGUgaW5wdXQgYW5kIGVycm9yIGZvcm1zPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNz dWJqZWN0X2Zvcm0iPlVzZXIgc2VsZWN0YWJsZSBzdWJqZWN0IGZpZWxkPC9hPjwvbGk+CgkJ PGxpPjxhIGhyZWY9IiN0b19mb3JtIj5Vc2VyIHNlbGVjdGFibGUgcmVjaXBpZW50LCB3aXRo b3V0IHNob3dpbmcgZW1haWwgYWRkcmVzc2VzPC9hPjwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+ PGEgaHJlZj0iI3N0eWxpbmciPlN0eWxpbmc8L2E+PC9saT4KCTxsaT48YSBocmVmPSIjaGlz dG9yeSI+SGlzdG9yeTwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNjcmVkaXRzIj5DcmVkaXRz PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI2FwaSI+UGx1Z2luIDxzcGFuIGNsYXNzPSJjYXBz Ij5BUEk8L3NwYW4+IGFuZCBjYWxsYmFjayBldmVudHM8L2E+PC9saT4KPC91bD4KCgoKPGgy IGlkPSJmZWF0dXJlcyI+RmVhdHVyZXM8L2gyPgoKPHVsPgoJPGxpPkFyYml0cmFyeSB0ZXh0 IGZpZWxkcyBjYW4gYmUgc3BlY2lmaWVkLCB3aXRoIG1pbi9tYXgvcmVxdWlyZWQgc2V0dGlu Z3MgZm9yIHZhbGlkYXRpb24uPC9saT4KCTxsaT5FbWFpbCBhZGRyZXNzIHZhbGlkYXRpb24s IGluY2x1ZGluZyBhIGNoZWNrIGZvciBhIHZhbGlkIE1YIHJlY29yZCAoVW5peCBvbmx5KS48 L2xpPgoJPGxpPlNhZmUgZXNjYXBpbmcgb2YgaW5wdXQgZGF0YS48L2xpPgoJPGxpPjxzcGFu IGNsYXNzPSJjYXBzIj5VVEY8L3NwYW4+LTggc2FmZS48L2xpPgoJPGxpPkFjY2Vzc2libGUg Zm9ybSBsYXlvdXQsIGluY2x1ZGluZyA8Y29kZT4mbHQ7bGFiZWwmZ3Q7PC9jb2RlPiwgPGNv ZGU+Jmx0O2xlZ2VuZCZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7ZmllbGRzZXQmZ3Q7PC9j b2RlPiB0YWdzLjwvbGk+Cgk8bGk+VmFyaW91cyBjbGFzc2VzIGFuZCBpZHMgdG8gYWxsb3cg ZWFzeSBzdHlsaW5nIG9mIGFsbCBwYXJ0cyBvZiB0aGUgZm9ybS48L2xpPgoJPGxpPkEgc2Vw YXJhdGUgbGFuZ3VhZ2UgcGx1Zy1pbiB0byBlbmFibGUgZWFzeSBsb2NhbGlzYXRpb24uPC9s aT4KCTxsaT5TcGFtIHByZXZlbnRpb24gPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj4g KHVzZWQgYnkgVHJhbnF1aWxsbyYjODIxNztzIDxjb2RlPnBhcF9jb250YWN0X2NsZWFuZXI8 L2NvZGU+IHBsdWdpbikuPC9saT4KPC91bD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8g dG9wPC9hPjwvcD4KCgo8aDIgaWQ9InN0YXJ0Ij5HZXR0aW5nIHN0YXJ0ZWQ8L2gyPgoKCjxo MyBpZD0iY29udGFjdGZvcm0iPkNvbnRhY3QgZm9ybTwvaDM+Cgo8cD5UaGUgc2ltcGxlc3Qg Zm9ybSBpcyBzaG93biBiZWxvdywgd2hpY2ggcHJvZHVjZXMgYSBkZWZhdWx0IGZvcm0gd2l0 aCBOYW1lLCBFbWFpbCBhbmQgTWVzc2FnZSBmaWVsZHMuIEVtYWlsIHdpbGwgYmUgZGVsaXZl cmVkIHRvIHJlY2lwaWVudEBleGFtcGxlLmNvbSwgd2l0aCB0aGUgdXNlciYjODIxNztzIHN1 cHBsaWVkIGVtYWlsIGFzIHRoZSAmIzgyMjA7RnJvbTomIzgyMjE7IGFkZHJlc3MuPC9wPgoK PHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IHRvPSZxdW90O3JlY2lwaWVudEBleGFt cGxlLmNvbSZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPlRvIHNwZWNpZnkgZmllbGRz IGV4cGxpY2l0bHksIHVzZSBzb21ldGhpbmcgbGlrZSB0aGlzOjwvcD4KCjxwcmU+PGNvZGU+ Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVvdDtyZWNpcGllbnRAZXhhbXBsZS5jb20mcXVv dDsmZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFjdF9lbWFpbCAvJmd0OwogICZsdDt0eHA6emVt X2NvbnRhY3RfdGV4dCBsYWJlbD0mcXVvdDtQaG9uZSZxdW90OyBtaW49NyBtYXg9MTUvJmd0 OwogICZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgbGFiZWw9JnF1b3Q7WW91ciBxdWVz dGlvbiZxdW90OyAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVsPSZx dW90O1NlbmQmcXVvdDsgLyZndDsKJmx0Oy90eHA6emVtX2NvbnRhY3QmZ3Q7PC9jb2RlPjwv cHJlPgoKPHA+QWx0ZXJuYXRpdmVseSwgcGxhY2UgdGhlIGZpZWxkIHNwZWNpZmljYXRpb25z IGluIGEgVGV4dHBhdHRlcm4gZm9ybSwgYW5kIGNhbGwgaXQgbGlrZSB0aGlzOjwvcD4KCjxw cmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVvdDtyZWNpcGllbnRAZXhhbXBs ZS5jb20mcXVvdDsgZm9ybT0mcXVvdDtteWNvbnRhY3Rmb3JtJnF1b3Q7IC8mZ3Q7PC9jb2Rl PjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBp ZD0ic2VuZGFydGljbGUiPlNlbmQgYXJ0aWNsZTwvaDM+CgpXaXRoaW4gdGhlIGNvbnRleHQg b2YgYW4gaW5kaXZpZHVhbCBhcnRpY2xlLCB0aGlzIHBsdWdpbiBjYW4gYmUgdXNlZCB0byBz ZW5kIHRoZSBhcnRpY2xlIChvciBleGNlcnB0LCBpZiBpdCBleGlzdHMpIHRvIGFuIGVtYWls IGFkZHJlc3Mgc3BlY2lmaWVkIGJ5IHRoZSB2aXNpdG9yLiBUaGlzIHJlcXVpcmVzIGF0IGxl YXN0IHR3byB0YWdzOgo8dWw+Cgk8bGk+PGNvZGU+emVtX2NvbnRhY3Q8L2NvZGU+LCB0byBj cmVhdGUgZm9ybSB0aGF0IGlzIGluaXRpYWxseSBoaWRkZW4gYnkgc2V0dGluZyB0aGUgPGNv ZGU+c2VuZF9hcnRpY2xlPC9jb2RlPiBhdHRyaWJ1dGUuPC9saT4KCTxsaT48Y29kZT56ZW1f Y29udGFjdF9zZW5kX2FydGljbGU8L2NvZGU+LCB0byBjcmVhdGUgYSAmIzgyMTY7c2VuZCBh cnRpY2xlJiM4MjE3OyBsaW5rIHdoaWNoIHJldmVhbHMgdGhlIGFmb3JlbWVudGlvbmVkIGZv cm0gd2hlbiBjbGlja2VkLjwvbGk+CjwvdWw+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2Nv bnRhY3Qgc2VuZF9hcnRpY2xlPSZxdW90OzEmcXVvdDsgLyZndDsKJmx0O3R4cDp6ZW1fY29u dGFjdF9zZW5kX2FydGljbGUgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5CeSBkZWZhdWx0IHRo ZSBmb3JtIGNvbnRhaW5zIGZpZWxkcyBmb3IgeW91ciBuYW1lIGFuZCBlbWFpbCBhZGRyZXNz LCB0aGUgcmVjaXBpZW50JiM4MjE3O3MgZW1haWwgYWRkcmVzcyBhbmQgYSBwZXJzb25hbCBt ZXNzYWdlLCBidXQgc2ltaWxhciB0byBjb250YWN0IGZvcm1zIHlvdSBjYW4gY3JlYXRlIHlv dXIgb3duIGZvcm0gbGF5b3V0LiBTb21lIHRoaW5ncyB5b3UgbmVlZCB0byBrbm93OjxiciAv Pgo8dWw+Cgk8bGk+U2V0IHRoZSA8Y29kZT5zZW5kX2FydGljbGU8L2NvZGU+IGF0dHJpYnV0 ZSB0byA8Y29kZT4xPC9jb2RlPiBpbiB0aGUgPGNvZGU+emVtX2NvbnRhY3Q8L2NvZGU+IHRh Zy48L2xpPgoJPGxpPlVzZSBhIDxjb2RlPnplbV9jb250YWN0X2VtYWlsPC9jb2RlPiB0YWcg d2l0aCB0aGUgPGNvZGU+c2VuZF9hcnRpY2xlPC9jb2RlPiBhdHRyaWJ1dGUgc2V0IHRvIDxj b2RlPjE8L2NvZGU+LiBUaGlzIGZpZWxkIHdpbGwgYmUgdXNlZCBhcyB0aGUgcmVjaXBpZW50 IGVtYWlsIGFkZHJlc3MuPC9saT48YnIgLz4KPC91bD48L3A+Cgo8cHJlPjxjb2RlPiZsdDt0 eHA6emVtX2NvbnRhY3QgdG89JnF1b3Q7eW91QGV4YW1wbGUuY29tJnF1b3Q7IHNlbmRfYXJ0 aWNsZT0mcXVvdDsxJnF1b3Q7Jmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgbGFi ZWw9JnF1b3Q7UmVjaXBpZW50IEVtYWlsJnF1b3Q7IHNlbmRfYXJ0aWNsZT0mcXVvdDsxJnF1 b3Q7IC8mZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFjdF9lbWFpbCBsYWJlbD0mcXVvdDtZb3Vy IEVtYWlsJnF1b3Q7IC8mZ3Q7CiAgJmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgbGFiZWw9 JnF1b3Q7U2VuZCBBcnRpY2xlJnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnplbV9jb250YWN0Jmd0 OwoKJmx0O3R4cDp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgLyZndDs8L2NvZGU+PC9wcmU+ Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgyIGlkPSJ0YWdz Ij5UYWdzPC9oMj4KCjxwPjxhIGhyZWY9IiN6YyI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFj dCAvJmd0OzwvY29kZT48L2E+IHByb2R1Y2VzIGEgZmxleGlibGUsIGN1c3RvbWlzYWJsZSBl bWFpbCBjb250YWN0IGZvcm0uIEl0IGlzIGludGVuZGVkIGZvciB1c2UgYXMgYW4gZW5xdWly eSBmb3JtIGZvciBjb21tZXJjaWFsIGFuZCBwcml2YXRlIHNpdGVzLCBhbmQgaW5jbHVkZXMg c2V2ZXJhbCBmZWF0dXJlcyB0byBoZWxwIHJlZHVjZSBjb21tb24gcHJvYmxlbXMgd2l0aCBz dWNoIGZvcm1zIChpbnZhbGlkIGVtYWlsIGFkZHJlc3NlcywgbWlzc2luZyBpbmZvcm1hdGlv bikuPC9wPgoKPHA+PGEgaHJlZj0iI3pjX3NlbmRfYXJ0aWNsZSI+PGNvZGU+Jmx0O3R4cDp6 ZW1fY29udGFjdF9zZW5kX2FydGljbGUgLyZndDs8L2NvZGU+PC9hPiBjYW4gYmUgdXNlZCB0 byBjcmVhdGUgYSAmIzgyMjA7c2VuZCBhcnRpY2xlJiM4MjIxOyBsaW5rIHdpdGhpbiBhbiBh cnRpY2xlIGZvcm0sIGNvbm5lY3RpbmcgaXQgdG8gdGhlIGNvbnRhY3QgZm9ybS48L3A+Cgo8 cD5BbGwgb3RoZXIgdGFncyBwcm92aWRlZCBieSB0aGlzIHBsdWdpbiBjYW4gb25seSBiZSB1 c2VkIGluc2lkZSBhIDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QmZ3Q7PC9jb2RlPiAmIzgy MzA7IDxjb2RlPiZsdDsvdHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT4gY29udGFpbmVyIHRh ZyBvciBpbiBhIFRleHRwYXR0ZXJuIGZvcm0gdXNlZCBhcyB0aGUgPGNvZGU+Zm9ybTwvY29k ZT4gYXR0cmlidXRlIGluIHRoZSA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IC8mZ3Q7PC9j b2RlPiB0YWcuPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoK CjxoMyBpZD0iemMiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QgLyZndDs8L2NvZGU+PC9o Mz4KCjxwPk1heSBiZSB1c2VkIGFzIGEgc2VsZi1jbG9zaW5nIG9yIGNvbnRhaW5lciB0YWcu IFBsYWNlIHRoaXMgd2hlcmUgeW91IHdhbnQgdGhlIGlucHV0IGZvcm0gdG8gZ28uIFN0YXR1 cyBhbmQgZXJyb3IgbWVzc2FnZXMsIGlmIGFueSwgd2lsbCBiZSBkaXNwbGF5ZWQgYmVmb3Jl IHRoZSBmb3JtLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT50 bz0mcXVvdDtlbWFpbCBhZGRyZXNzJnF1b3Q7PC9jb2RlPiA8c3BhbiBjbGFzcz0icmVxdWly ZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpSZWNpcGllbnQgZW1haWwgYWRkcmVzcy48L2xp PgoJPGxpPjxjb2RlPnRvX2Zvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxiciAv PgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8c3Ryb25nPnRvPC9zdHJvbmc+IGF0 dHJpYnV0ZSkuPC9saT4KPC91bD4KCjx1bD4KCTxsaT48Y29kZT5mcm9tPSZxdW90O2VtYWls IGFkZHJlc3MmcXVvdDs8L2NvZGU+PGJyIC8+CkVtYWlsIGFkZHJlc3MgdXNlZCBpbiB0aGUg JiM4MjIwO0Zyb206JiM4MjIxOyBmaWVsZCB3aGVuIHNlbmRpbmcgZW1haWwuIERlZmF1bHRz IHRvIHRoZSBzZW5kZXImIzgyMTc7cyBlbWFpbCBhZGRyZXNzLiBJZiBzcGVjaWZpZWQsIHRo ZSBzZW5kZXImIzgyMTc7cyBlbWFpbCBhZGRyZXNzIHdpbGwgYmUgcGxhY2VkIGluIHRoZSAm IzgyMjA7UmVwbHktVG86JiM4MjIxOyBmaWVsZCBpbnN0ZWFkLjwvbGk+Cgk8bGk+PGNvZGU+ ZnJvbV9mb3JtPSZxdW90O2Zvcm0gbmFtZSZxdW90OzwvY29kZT48YnIgLz4KVXNlIHNwZWNp ZmllZCBmb3JtIChvdmVycmlkZXMgPHN0cm9uZz5mcm9tPC9zdHJvbmc+IGF0dHJpYnV0ZSku PC9saT4KPC91bD4KCjx1bD4KCTxsaT48Y29kZT5zdWJqZWN0PSZxdW90O3N1YmplY3QgdGV4 dCZxdW90OzwvY29kZT48YnIgLz4KU3ViamVjdCB1c2VkIHdoZW4gc2VuZGluZyBhbiBlbWFp bC4gRGVmYXVsdCBpcyB0aGUgc2l0ZSBuYW1lLjwvbGk+Cgk8bGk+PGNvZGU+c3ViamVjdF9m b3JtPSZxdW90O2Zvcm0gbmFtZSZxdW90OzwvY29kZT48YnIgLz4KVXNlIHNwZWNpZmllZCBm b3JtIChvdmVycmlkZXMgPHN0cm9uZz5zdWJqZWN0PC9zdHJvbmc+IGF0dHJpYnV0ZSkuPC9s aT4KPC91bD4KCjx1bD4KCTxsaT48Y29kZT50aGFua3M9JnF1b3Q7dGV4dCZxdW90OzwvY29k ZT48YnIgLz4KTWVzc2FnZSBzaG93biBhZnRlciBzdWNjZXNzZnVsbHkgc3VibWl0dGluZyBh IG1lc3NhZ2UuIERlZmF1bHQgaXMgPHN0cm9uZz5UaGFuayB5b3UsIHlvdXIgbWVzc2FnZSBo YXMgYmVlbiBzZW50PC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+dGhhbmtzX2Zvcm09JnF1 b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxiciAvPgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92 ZXJyaWRlcyA8c3Ryb25nPnRoYW5rczwvc3Ryb25nPiBhdHRyaWJ1dGUpLjwvbGk+Cgk8bGk+ PGNvZGU+cmVkaXJlY3Q9JnF1b3Q7VVJMJnF1b3Q7PC9jb2RlPjxiciAvPgpSZWRpcmVjdCB0 byBzcGVjaWZpZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gKG92ZXJyaWRlcyA8 c3Ryb25nPnRoYW5rczwvc3Ryb25nPiBhbmQgPHN0cm9uZz50aGFua3NfZm9ybTwvc3Ryb25n PiBhdHRyaWJ1dGVzKS4gPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbXVzdCBiZSBy ZWxhdGl2ZSB0byB0aGUgVGV4dHBhdHRlcm4gU2l0ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPi4gRXhhbXBsZTogPGVtPnJlZGlyZWN0PSYjODIyMDttb25rZXkmIzgyMjE7PC9l bT4gd291bGQgcmVkaXJlY3QgdG8gaHR0cDovL2V4YW1wbGUuY29tL21vbmtleS48L2xpPgo8 L3VsPgoKPHVsPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJy IC8+CkxhYmVsIGZvciB0aGUgY29udGFjdCBmb3JtLiBJZiBzZXQgdG8gYW4gZW1wdHkgc3Ry aW5nLCBkaXNwbGF5IG9mIHRoZSBmaWVsZHNldCBhbmQgbGVnZW5kIHRhZ3Mgd2lsbCBiZSBz dXBwcmVzc2VkLiBEZWZhdWx0IGlzIDxzdHJvbmc+Q29udGFjdDwvc3Ryb25nPi48L2xpPgoJ PGxpPjxjb2RlPnNlbmRfYXJ0aWNsZT0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAv PgpXaGV0aGVyIHRvIHVzZSB0aGlzIGZvcm0gdG8gPGEgaHJlZj0iI2FydGljbGUiPnNlbmQg YW4gYXJ0aWNsZTwvYT4uIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAo eWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9z dHJvbmc+IChubykuPC9saT4KCTxsaT48Y29kZT5jb3B5c2VuZGVyPSZxdW90O2Jvb2xlYW4m cXVvdDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdG8gc2VuZCBhIGNvcHkgb2YgdGhlIGVtYWls IHRvIHRoZSBzZW5kZXImIzgyMTc7cyBhZGRyZXNzLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ry b25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0 IGlzIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLjwvbGk+CjwvdWw+Cgo8dWw+Cgk8bGk+PGNv ZGU+Zm9ybT0mcXVvdDtmb3JtIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZp ZWQgZm9ybSwgY29udGFpbmluZyB0aGUgbGF5b3V0IG9mIHRoZSBjb250YWN0IGZvcm0gZmll bGRzLjwvbGk+Cgk8bGk+PGNvZGU+c2hvd19pbnB1dD0mcXVvdDtib29sZWFuJnF1b3Q7PC9j b2RlPjxiciAvPgogV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIGlucHV0IGZpZWxkcy4g QXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8 L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9s aT4KCTxsaT48Y29kZT5zaG93X2Vycm9yPSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJy IC8+CiBXaGV0aGVyIHRvIGRpc3BsYXkgZXJyb3IgYW5kIHN0YXR1cyBtZXNzYWdlcy4gQXZh aWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0 cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4K PC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8cD5TZWUgPGEgaHJlZj0iI2NvbnRhY3Rmb3Jt Ij5HZXR0aW5nIHN0YXJ0ZWQ8L2E+IGFuZCA8YSBocmVmPSIjYWR2YW5jZWQiPkFkdmFuY2Vk IGV4YW1wbGVzPC9hPi48L3A+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48 L3A+CgoKPGgzIGlkPSJ6Y190ZXh0Ij48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3RleHQg LyZndDs8L2NvZGU+PC9oMz4KCjxwPkNyZWF0ZXMgYSB0ZXh0IGlucHV0IGZpZWxkIGFuZCBj b3JyZXNwb25kaW5nIDxjb2RlPiZsdDtsYWJlbCZndDs8L2NvZGU+IHRhZy4gVGhlIGlucHV0 IHZhbHVlIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGVtYWlsLCBwcmVjZWRlZCBieSB0aGUg bGFiZWwuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmxhYmVs PSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRv IHRoZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJvbmc+VGV4dDwvc3Ryb25nPi48L2xpPgoJPGxp Pjxjb2RlPm5hbWU9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUs IGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1dCB0 YWcuPC9saT4KCTxsaT48Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJyIC8+ CkJyZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQuIERlZmF1bHQg aXMgPGNvZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSZxdW90OyZx dW90OzwvY29kZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNh bWUgbGluZS48L2xpPgoJPGxpPjxjb2RlPmRlZmF1bHQ9JnF1b3Q7dmFsdWUmcXVvdDs8L2Nv ZGU+PGJyIC8+CkRlZmF1bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xp PgoJPGxpPjxjb2RlPm1pbj0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpNaW5p bXVtIGlucHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwv c3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPm1heD0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2Rl PjxiciAvPgpNYXhpbXVtIGlucHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLiBEZWZhdWx0IGlz IDxzdHJvbmc+MTAwPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+c2l6ZT0mcXVvdDtpbnRl Z2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpTaXplIG9mIHRoZSBpbnB1dCBmaWVsZCBhcyBkaXNw bGF5ZWQgdG8gdGhlIHVzZXIuPC9saT4KCTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29s ZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgdGV4dCBmaWVsZCBtdXN0IGJl IGZpbGxlZCBvdXQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVz KSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJv bmc+ICh5ZXMpLjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZTwvaDQ+Cgo8cHJlPjxjb2RlPiZs dDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0mcXVvdDtZb3VyIG5hbWUmcXVvdDsgLyZn dDs8L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+ CgoKPGgzIGlkPSJ6Y19lbWFpbCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9lbWFpbCAv Jmd0OzwvY29kZT48L2gzPgoKPHA+SW5wdXQgZmllbGQgZm9yIHVzZXImIzgyMTc7cyBlbWFp bCBhZGRyZXNzLjwvcD4KCjxwPlRoZSBlbnRlcmVkIGVtYWlsIGFkZHJlc3Mgd2lsbCBhdXRv bWF0aWNhbGx5IGJlIHZhbGlkYXRlZCB0byBtYWtlIHN1cmUgaXQgaXMgb2YgdGhlIGZvcm0g JiM4MjIwO2FiY0B4eHgueXl5Wy56enpdJiM4MjIxOy4gT24gbm9uLVdpbmRvd3Mgc2VydmVy cywgYSB0ZXN0IHdpbGwgYmUgZG9uZSB0byB2ZXJpZnkgdGhhdCBhbiBBIG9yIE1YIHJlY29y ZCBleGlzdHMgZm9yIHRoZSBkb21haW4uIE5laXRoZXIgdGVzdCBwcmV2ZW50cyBzcGFtLCBi dXQgaXQgZG9lcyBoZWxwIGRldGVjdGluZyBhY2NpZGVudGFsIHR5cGluZyBlcnJvcnMuPC9w PgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3Rl eHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRvIHRoZSB1c2Vy LiBEZWZhdWx0IGlzIDxzdHJvbmc+RW1haWw8L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5u YW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2Vk IGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaW5wdXQgdGFnLjwvbGk+ Cgk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1b3Q7PC9jb2RlPjxiciAvPgpCcmVhayB0 YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2Rl PiZsdDticiAvJmd0OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0mcXVvdDsmcXVvdDs8L2Nv ZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUu PC9saT4KCTxsaT48Y29kZT5kZWZhdWx0PSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAv PgpEZWZhdWx0IHZhbHVlIHdoZW4gbm8gaW5wdXQgaXMgcHJvdmlkZWQuPC9saT4KCTxsaT48 Y29kZT5taW49JnF1b3Q7aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4KTWluaW11bSBpbnB1 dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4u PC9saT4KCTxsaT48Y29kZT5tYXg9JnF1b3Q7aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4K TWF4aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBpcyA8c3Ryb25n PjEwMDwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPnNpemU9JnF1b3Q7aW50ZWdlciZxdW90 OzwvY29kZT48YnIgLz4KU2l6ZSBvZiB0aGUgaW5wdXQgZmllbGQgYXMgZGlzcGxheWVkIHRv IHRoZSB1c2VyLjwvbGk+Cgk8bGk+PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90 OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIHRleHQgZmllbGQgbXVzdCBiZSBmaWxsZWQg b3V0LiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJv bmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVz KS48L2xpPgoJPGxpPjxjb2RlPnNlbmRfYXJ0aWNsZT0mcXVvdDtib29sZWFuJnF1b3Q7PC9j b2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgZmllbGQgaXMgdXNlZCBhcyB0aGUgcmVjaXBpZW50 IGVtYWlsIGFkZHJlc3Mgd2hlbiB1c2luZyB0aGUgc2VuZF9hcnRpY2xlIGZ1bmN0aW9uLiBB dmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwv c3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLjwvbGk+ CjwvdWw+Cgo8aDQ+RXhhbXBsZTwvaDQ+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3RfZW1haWwgbGFiZWw9JnF1b3Q7WW91ciBlbWFpbCBhZGRyZXNzJnF1b3Q7IC8mZ3Q7PC9j b2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxo MyBpZD0iemNfdGV4dGFyZWEiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEg LyZndDs8L2NvZGU+PC9oMz4KCjxwPkNyZWF0ZXMgYSB0ZXh0YXJlYS48L3A+Cgo8aDQ+QXR0 cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90Ozwv Y29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQg aXMgPHN0cm9uZz5NZXNzYWdlPC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+bmFtZT0mcXVv dDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJPGxpPjxj b2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdl ZW4gdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mbHQ7YnIg LyZndDs8L2NvZGU+LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBw dXQgdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+Cgk8 bGk+PGNvZGU+ZGVmYXVsdD0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRGVmYXVs dCB2YWx1ZSB3aGVuIG5vIGlucHV0IGlzIHByb3ZpZGVkLjwvbGk+Cgk8bGk+PGNvZGU+Y29s cz0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpDb2x1bW4gd2lkdGguIERlZmF1 bHQgaXMgPHN0cm9uZz41ODwvc3Ryb25nPi48L2xpPgoJPGxpPjxjb2RlPnJvd3M9JnF1b3Q7 aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4KUm93IGhlaWdodC4gRGVmYXVsdCBpcyA8c3Ry b25nPjg8L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5taW49JnF1b3Q7aW50ZWdlciZxdW90 OzwvY29kZT48YnIgLz4KTWluaW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVm YXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5tYXg9JnF1b3Q7 aW50ZWdlciZxdW90OzwvY29kZT48YnIgLz4KTWF4aW11bSBpbnB1dCBsZW5ndGggaW4gY2hh cmFjdGVycy4gRGVmYXVsdCBpcyA8c3Ryb25nPjEwMDAwPC9zdHJvbmc+LjwvbGk+Cgk8bGk+ PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhl ciB0aGlzIHRleHQgZmllbGQgbXVzdCBiZSBmaWxsZWQgb3V0LiBBdmFpbGFibGUgdmFsdWVz OiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBE ZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgo8L3VsPgoKPGg0PkV4 YW1wbGU8L2g0PgoKPHA+VGV4dGFyZWEgdGhhdCBpcyA0MCBjaGFycyB3aWRlLCAxMCBsaW5l cyBoaWdoLCB3aXRoIGEgY3VzdG9taXplZCBsYWJlbDo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0 eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgY29scz0mcXVvdDs0MCZxdW90OyByb3dzPSZxdW90 OzEwJnF1b3Q7IGxhYmVsPSZxdW90O1lvdXIgcXVlc3Rpb24mcXVvdDsgLyZndDs8L2NvZGU+ PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgzIGlk PSJ6Y19zdWJtaXQiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IC8mZ3Q7PC9j b2RlPjwvaDM+Cgo8cD5DcmVhdGVzIGEgc3VibWl0IGJ1dHRvbi48YnIgLz4KV2hlbiB1c2Vk IGFzIGEgY29udGFpbmVyIHRhZywgYSAmIzgyMjA7YnV0dG9uJiM4MjIxOyBlbGVtZW50IHdp bGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFuICYjODIyMDtpbnB1dCYjODIyMTsgZWxlbWVudC48 L3A+Cgo8aDQ+QXR0cmlidXRlczo8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90 O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQgc2hvd24gb24gdGhlIHN1Ym1pdCBidXR0 b24uIERlZmF1bHQgaXMgJiM4MjIwO1NlbmQmIzgyMjE7LjwvbGk+Cgk8bGk+PGNvZGU+YnV0 dG9uPSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+CjxlbT5EZXByZWNhdGVkLiBV c2UgYSBjb250YWluZXIgdGFnIGlmIHlvdSB3YW50IGEgYnV0dG9uIGVsZW1lbnQuPC9lbT48 L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVzPC9oND4KCjxwPlN0YW5kYXJkIHN1Ym1pdCBidXR0 b246PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3N1Ym1pdCAvJmd0Ozwv Y29kZT48L3ByZT4KCjxwPlN1Ym1pdCBidXR0b24gd2l0aCB5b3VyIG93biB0ZXh0OjwvcD4K CjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgbGFiZWw9JnF1b3Q7U2Vu ZCZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPlVzYWdlIGFzIGEgY29udGFpbmVyIHRh Zywgd2hpY2ggYWxsb3dzIHlvdSB0byB1c2UgVGV4dHBhdHRlcm4gdGFncyBhbmQgPHNwYW4g Y2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG1hcmt1cCBpbiB0aGUgc3VibWl0IGJ1dHRvbjo8 L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0Jmd0OyZsdDtzdHJv bmcmZ3Q7U2VuZCZsdDsvc3Ryb25nJmd0OyBxdWVzdGlvbiZsdDsvdHhwOnplbV9jb250YWN0 X3N1Ym1pdCZndDs8L2NvZGU+PC9wcmU+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3Rfc3VibWl0Jmd0OyZsdDtpbWcgc3JjPSZxdW90O3BhdGgvdG8vaW1nLnBuZyZxdW90OyBh bHQ9JnF1b3Q7c3VibWl0JnF1b3Q7Jmd0OyZsdDsvdHhwOnplbV9jb250YWN0X3N1Ym1pdCZn dDs8L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+ CgoKPGgzIGlkPSJ6Y19zZWxlY3QiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0 IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5DcmVhdGVzIGEgZHJvcC1kb3duIHNlbGVjdGlvbiBs aXN0LjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5saXN0PSZx dW90O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+IDxzcGFuIGNsYXNzPSJy ZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+Ckxpc3Qgb2YgaXRlbXMgdG8gc2hvdyBp biB0aGUgc2VsZWN0IGJveC48L2xpPgoJPGxpPjxjb2RlPnNlbGVjdGVkPSZxdW90O3ZhbHVl JnF1b3Q7PC9jb2RlPjxiciAvPgpMaXN0IGl0ZW0gdGhhdCBpcyBzZWxlY3RlZCBieSBkZWZh dWx0LjwvbGk+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIg Lz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgPHN0cm9u Zz5PcHRpb248L3N0cm9uZz4uPC9saT4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1 b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+SFRNTDwvc3Bhbj4gaW5wdXQgdGFnLjwvbGk+Cgk8bGk+PGNvZGU+YnJlYWs9 JnF1b3Q7dGFnJnF1b3Q7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFi ZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiZsdDticiAvJmd0OzwvY29k ZT4uIFVzZSA8Y29kZT5icmVhaz0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFi ZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9saT4KCTxsaT48Y29kZT5k ZWxpbWl0ZXI9JnF1b3Q7Y2hhcmFjdGVyJnF1b3Q7PC9jb2RlPjxiciAvPgpTZXBhcmF0b3Ig Y2hhcmFjdGVyIHVzZWQgaW4gdGhlIDxzdHJvbmc+bGlzdDwvc3Ryb25nPiBhdHRyaWJ1dGUu IERlZmF1bHQgaXMgPHN0cm9uZz4sPC9zdHJvbmc+IChjb21tYSkuPC9saT4KCTxsaT48Y29k ZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIGEg bm9uLWVtcHR5IG9wdGlvbiBtdXN0IGJlIHNlbGVjdGVkLiBBdmFpbGFibGUgdmFsdWVzOiA8 c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZh dWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgo8L3VsPgoKPGg0PkV4YW1w bGVzPC9oND4KCjxwPlNlbGVjdCBsaXN0IGxhYmVsZWQgJiM4MjE2O0RlcGFydG1lbnQmIzgy MTc7LCBjb250YWluaW5nIHRocmVlIG9wdGlvbnMgYW5kIGEgYmxhbmsgb3B0aW9uIChkdWUg dG8gdGhlIGNvbW1hIGJlZm9yZSAmIzgyMTY7TWFya2V0aW5nJiM4MjE3Oykgc2hvd24gYnkg ZGVmYXVsdCwgZm9yY2luZyB0aGUgdXNlciB0byBtYWtlIGEgc2VsZWN0aW9uLjwvcD4KCjxw cmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGFiZWw9JnF1b3Q7RGVwYXJ0 bWVudCZxdW90OyBsaXN0PSZxdW90OyxNYXJrZXRpbmcsU2FsZXMsU3VwcG9ydCZxdW90OyAv Jmd0OzwvY29kZT48L3ByZT4KCjxwPlNlbGVjdCBsaXN0IGNvbnRhaW5pbmcgdGhyZWUgb3B0 aW9ucyB3aXRoICYjODIxNjtNYXJrZXRpbmcmIzgyMTc7IHNlbGVjdGVkIGJ5IGRlZmF1bHQu PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbGVjdCBsaXN0PSZxdW90 O01hcmtldGluZyxTYWxlcyxTdXBwb3J0JnF1b3Q7IHNlbGVjdGVkPSZxdW90O01hcmtldGlu ZyZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8g dG9wPC9hPjwvcD4KCgo8aDMgaWQ9InpjX2NoZWNrYm94Ij48Y29kZT4mbHQ7dHhwOnplbV9j b250YWN0X2NoZWNrYm94IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5DcmVhdGVzIGEgY2hlY2sg Ym94LjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5sYWJlbD0m cXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0 aGUgdXNlci4gRGVmYXVsdCBpcyA8c3Ryb25nPkNoZWNrYm94PC9zdHJvbmc+LjwvbGk+Cgk8 bGk+PGNvZGU+bmFtZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRmllbGQgbmFt ZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlucHV0 IHRhZy48L2xpPgoJPGxpPjxjb2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIg Lz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZC4gRGVmYXVs dCBpcyA8Y29kZT4mbHQ7YnIgLyZndDs8L2NvZGU+LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7 JnF1b3Q7PC9jb2RlPiB0byBwdXQgdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUg c2FtZSBsaW5lLjwvbGk+Cgk8bGk+PGNvZGU+Y2hlY2tlZD0mcXVvdDtib29sZWFuJnF1b3Q7 PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgYm94IGlzIGNoZWNrZWQgd2hlbiBmaXJzdCBk aXNwbGF5ZWQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwg PHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgJiM4MjIwOzAmIzgyMjE7IChu bykuPC9saT4KCTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2Rl PjxiciAvPgpXaGV0aGVyIHRoaXMgY2hlY2tib3ggbXVzdCBiZSBmaWxsZWQgb3V0LiBBdmFp bGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ry b25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgo8 L3VsPgoKPGg0PkV4YW1wbGVzPC9oND4KCjxwPlNocmluay13cmFwIGFncmVlbWVudCB3aGlj aCBtdXN0IGJlIGNoZWNrZWQgYnkgdGhlIHVzZXIgYmVmb3JlIHRoZSBlbWFpbCB3aWxsIGJl IHNlbnQuPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxh YmVsPSZxdW90O0kgYWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyZxdW90OyAvJmd0 OzwvY29kZT48L3ByZT4KCjxwPk9wdGlvbmFsIGNoZWNrYm94ZXM6PC9wPgoKPHByZT48Y29k ZT5TZWxlY3Qgd2hpY2ggb3BlcmF0aW5nIHN5c3RlbXMgYXJlIHlvdSBmYW1pbGlhciB3aXRo OiZsdDticiAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSZxdW90 O1dpbmRvd3MmcXVvdDsgcmVxdWlyZWQ9JnF1b3Q7MCZxdW90OyAvJmd0OyZsdDticiAvJmd0 OwombHQ7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSZxdW90O1VuaXgvTGludXgv QlNEJnF1b3Q7IHJlcXVpcmVkPSZxdW90OzAmcXVvdDsgLyZndDsmbHQ7YnIgLyZndDsKJmx0 O3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mcXVvdDtNYWNPUyZxdW90OyByZXF1 aXJlZD0mcXVvdDswJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+ PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0iemNfcmFkaW8i Pjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gLyZndDs8L2NvZGU+PC9oMz4KCjxw PkNyZWF0ZXMgYSByYWRpbyBidXR0b24uPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVs PgoJPGxpPjxjb2RlPmdyb3VwPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+IDxzcGFuIGNsYXNz PSJyZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClRleHQgdXNlZCBpbiB0aGUgZW1h aWwgdG8gZGVzY3JpYmUgdGhpcyBncm91cCBvZiByYWRpbyBidXR0b25zLiBUaGlzIGF0dHJp YnV0ZSB2YWx1ZSBpcyByZW1lbWJlcmVkIGZvciBzdWJzZXF1ZW50IHJhZGlvIGJ1dHRvbnMs IHNvIHlvdSBvbmx5IGhhdmUgdG8gc2V0IGl0IG9uIHRoZSBmaXJzdCByYWRpbyBidXR0b24g b2YgYSBncm91cC4gRGVmYXVsdCBpcyA8c3Ryb25nPlJhZGlvPC9zdHJvbmc+LjwvbGk+Cgk8 bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT4gPHNwYW4gY2xhc3M9InJl cXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8g dGhlIHVzZXIgYXMgcmFkaW8gYnV0dG9uIG9wdGlvbi48L2xpPgoJPGxpPjxjb2RlPm5hbWU9 JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBpbnB1dCB0YWcuIFRoaXMgYXR0 cmlidXRlIHZhbHVlIGlzIHJlbWVtYmVyZWQgZm9yIHN1YnNlcXVlbnQgcmFkaW8gYnV0dG9u cywgc28geW91IG9ubHkgaGF2ZSB0byBzZXQgaXQgb24gdGhlIGZpcnN0IHJhZGlvIGJ1dHRv biBvZiBhIGdyb3VwLiBJZiBpdCBoYXNuJiM4MjE3O3QgYmVlbiBzZXQgYXQgYWxsLCBpdCB3 aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGUgPGNvZGU+Z3JvdXA8L2NvZGU+IGF0dHJpYnV0ZS48 L2xpPgoJPGxpPjxjb2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJl YWsgdGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBmaWVsZC4gRGVmYXVsdCBpcyBhIHNwYWNl LjwvbGk+Cgk8bGk+PGNvZGU+Y2hlY2tlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxi ciAvPgpXaGV0aGVyIHRoaXMgcmFkaW8gb3B0aW9uIGlzIGNoZWNrZWQgd2hlbiB0aGUgZm9y bSBpcyBmaXJzdCBkaXNwbGF5ZWQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ry b25nPiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9u Zz4wPC9zdHJvbmc+IChubykuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlPC9oND4KCjxwPkdy b3VwIG11dHVhbGx5IGV4Y2x1c2l2ZSByYWRpbyBidXR0b25zIGJ5IHNldHRpbmcgdGhlIDxj b2RlPmdyb3VwPC9jb2RlPiBhdHRyaWJ1dGUgb24gdGhlIGZpcnN0IHJhZGlvIGJ1dHRvbiBp biBhIGdyb3VwLiBPbmx5IHRoZSBjaG9zZW4gcmFkaW8gYnV0dG9uIGZyb20gZWFjaCBncm91 cCB3aWxsIGJlIHVzZWQgaW4gdGhlIGVtYWlsIG1lc3NhZ2UuIFRoZSBtZXNzYWdlIHdpbGwg YmUgb3V0cHV0IGluIHRoZSBmb3JtIDxzdHJvbmc+Z3JvdXA6IGxhYmVsPC9zdHJvbmc+IGZv ciBlYWNoIG9mIHRoZSBjaG9zZW4gcmFkaW8gYnV0dG9ucy48L3A+Cgo8cHJlPjxjb2RlPiZs dDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9JnF1b3Q7TWVkaXVtJnF1b3Q7IGdyb3Vw PSZxdW90O0kgbGlrZSBteSBzdGVhayZxdW90OyAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0 X3JhZGlvIGxhYmVsPSZxdW90O1JhcmUmcXVvdDsgLyZndDsKJmx0O3R4cDp6ZW1fY29udGFj dF9yYWRpbyBsYWJlbD0mcXVvdDtXZWxsIGRvbmUmcXVvdDsgLyZndDsKCiZsdDt0eHA6emVt X2NvbnRhY3RfcmFkaW8gbGFiZWw9JnF1b3Q7V2luZSZxdW90OyBncm91cD0mcXVvdDtXaXRo IGEgZ2xhc3Mgb2YmcXVvdDsgLyZndDsKJmx0O3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJl bD0mcXVvdDtCZWVyJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFi ZWw9JnF1b3Q7V2F0ZXImcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIj dG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgzIGlkPSJ6Y19zZWNyZXQiPjxjb2RlPiZs dDt0eHA6emVtX2NvbnRhY3Rfc2VjcmV0IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5UaGlzIHRh ZyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBmb3JtIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1M PC9zcGFuPiBvdXRwdXQsIGJ1dCB3aWxsIGluY2x1ZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlv biBpbiB0aGUgZW1haWwuIEl0IGNhbiBiZSB1c2VkIGFzIGEgc2VsZi1jbG9zaW5nIHRhZyBv ciBhcyBhIGNvbnRhaW5lciB0YWcuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJ PGxpPjxjb2RlPm5hbWU9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVXNlZCBpbnRl cm5hbGx5LiBTZXQgdGhpcyBvbmx5IGlmIHlvdSBoYXZlIG11bHRpcGxlICYjODIxNjtzZWNy ZXQmIzgyMTc7IGZvcm0gZWxlbWVudHMgd2l0aCBpZGVudGljYWwgbGFiZWxzLjwvbGk+Cgk8 bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVXNlZCB0byBp ZGVudGlmeSB0aGUgZmllbGQgaW4gdGhlIGVtYWlsLiBEZWZhdWx0IGlzIDxzdHJvbmc+U2Vj cmV0PC9zdHJvbmc+LjwvbGk+Cgk8bGk+PGNvZGU+dmFsdWU9JnF1b3Q7dmFsdWUmcXVvdDs8 L2NvZGU+PGJyIC8+ClNvbWUgdGV4dCB5b3Ugd2FudCB0byBhZGQgdG8gdGhlIGVtYWlsLjwv bGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPHA+VXNhZ2UgYXMgYSBzZWxmLWNsb3Np bmcgdGFnPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlY3JldCB2YWx1 ZT0mcXVvdDtUaGUgYW5zd2VyIGlzIDQyJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+ VXNhZ2UgYXMgYSBjb250YWluZXIgdGFnPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9j b250YWN0X3NlY3JldCBsYWJlbD0mcXVvdDtEZWFyIHVzZXImcXVvdDsmZ3Q7CiAgUGxlYXNl IHByb3ZpZGUgYSB1c2VmdWwgZXhhbXBsZSBmb3IgdGhpcyB0YWchCiZsdDsvdHhwOnplbV9j b250YWN0X3NlY3JldCZndDs8L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNr IHRvIHRvcDwvYT48L3A+CgoKPGgzIGlkPSJ6Y19zZXJ2ZXJpbmZvIj48Y29kZT4mbHQ7dHhw OnplbV9jb250YWN0X3NlcnZlcmluZm8gLyZndDs8L2NvZGU+PC9oMz4KCjxwPlRoaXMgdGFn IGhhcyBubyBlZmZlY3Qgb24gdGhlIGZvcm0gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+IG91dHB1dCwgYnV0IHdpbGwgaW5jbHVkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u IGluIHRoZSBlbWFpbCBiYXNlZCBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bh bj4gJF9TRVJWRVIgdmFyaWFibGUuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJ PGxpPjxjb2RlPm5hbWU9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+IDxzcGFuIGNsYXNzPSJy ZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+Ck5hbWUgb2YgdGhlIHNlcnZlciB2YXJp YWJsZS4gU2VlIHRoZSA8YSBocmVmPSJodHRwOi8vcGhwLm5ldC9tYW51YWwvcmVzZXJ2ZWQu dmFyaWFibGVzLnBocCNyZXNlcnZlZC52YXJpYWJsZXMuc2VydmVyIj48c3BhbiBjbGFzcz0i Y2FwcyI+UEhQPC9zcGFuPiBtYW51YWw8L2E+IGZvciBhIGZ1bGwgbGlzdC48L2xpPgoJPGxp Pjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZWQgdG8gaWRl bnRpZnkgdGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gRGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9m IHRoZSA8c3Ryb25nPm5hbWU8L3N0cm9uZz4gYXR0cmlidXRlLjwvbGk+CjwvdWw+Cgo8aDQ+ RXhhbXBsZXM8L2g0PgoKPHA+QWRkIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSB2aXNpdG9yIHRv IHRoZSBlbWFpbDwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJp bmZvIG5hbWU9JnF1b3Q7UkVNT1RFX0FERFImcXVvdDsgbGFiZWw9JnF1b3Q7SVAgbnVtYmVy JnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+QWRkIHRoZSBuYW1lIG9mIHRoZSB2aXNp dG9yJiM4MjE3O3MgYnJvd3NlciB0byB0aGUgZW1haWw8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0 eHA6emVtX2NvbnRhY3Rfc2VydmVyaW5mbyBuYW1lPSZxdW90O0hUVFBfVVNFUl9BR0VOVCZx dW90OyBsYWJlbD0mcXVvdDtCcm93c2VyJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+ PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0iemNfc2VuZF9h cnRpY2xlIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSAvJmd0Ozwv Y29kZT48L2gzPgoKPHA+VXNlIHRoaXMgdGFnIGluIHlvdXIgaW5kaXZpZHVhbCBhcnRpY2xl IGZvcm0sIHdoZXJlIHlvdSB3YW50IHRoZSAmIzgyMjA7c2VuZCBhcnRpY2xlJiM4MjIxOyBs aW5rIHRvIGJlIGRpc3BsYXllZC48L3A+CgoKPGg0PkF0dHJpYnV0ZXM6PC9oND4KCjx1bD4K CTxsaT48Y29kZT5saW5rdGV4dD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0 IGRpc3BsYXllZCBmb3IgdGhlIGxpbmsuIERlZmF1bHQgaXMgPHN0cm9uZz5zZW5kIGFydGlj bGU8L3N0cm9uZz48L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVzOjwvaDQ+Cgo8cD5TZWUgPGEg aHJlZj0iI3NlbmRhcnRpY2xlIj5HZXR0aW5nIHN0YXJ0ZWQ8L2E+PC9wPgoKPHA+PGEgaHJl Zj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMiBpZD0iYWR2YW5jZWQiPkFkdmFu Y2VkIGV4YW1wbGVzPC9oMj4KCgo8aDMgaWQ9InNob3dfZXJyb3IiPlNlcGFyYXRlIGlucHV0 IGFuZCBlcnJvciBmb3JtczwvaDM+Cgo8cD5Vc2luZyA8Y29kZT5zaG93X2lucHV0PC9jb2Rl PiBhbmQgPGNvZGU+c2hvd19lcnJvcjwvY29kZT4gdG8gZGlzcGxheSB0aGUgZm9ybSBhbmQg ZXJyb3IgbWVzc2FnZXMgb24gZGlmZmVyZW50IHBhcnRzIG9mIGEgcGFnZS4gQSBmb3JtIGlz IHVzZWQgdG8gbWFrZSBzdXJlIHRoZSBjb250ZW50cyBvZiBib3RoIGZvcm1zIGFyZSBpZGVu dGljYWwsIG90aGVyd2lzZSB0aGV5IHdvdWxkIGJlIHNlZW4gYXMgdHdvIGluZGVwZW5kZW50 IGZvcm1zLiBUaGUgZmlyc3QgZm9ybSBvbmx5IHNob3dzIGVycm9ycyAobm8gaW5wdXQpLCB0 aGUgc2Vjb25kIGZvcm0gb25seSBzaG93cyB0aGUgaW5wdXQgZmllbGRzIChubyBlcnJvcnMp LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O2RpdiBpZD0mcXVvdDtlcnJvciZxdW90OyZndDsKICAm bHQ7dHhwOnplbV9jb250YWN0IGZvcm09JnF1b3Q7Y29udGFjdF9mb3JtJnF1b3Q7IHNob3df aW5wdXQ9JnF1b3Q7MCZxdW90OyAvJmd0OwombHQ7L2RpdiZndDsKCiZsdDtkaXYgaWQ9JnF1 b3Q7aW5wdXRmb3JtJnF1b3Q7Jmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3QgZm9ybT0mcXVv dDtjb250YWN0X2Zvcm0mcXVvdDsgc2hvd19lcnJvcj0mcXVvdDswJnF1b3Q7IC8mZ3Q7CiZs dDsvZGl2Jmd0OzwvY29kZT48L3ByZT4KCjxwPlRoZSA8Y29kZT5mb3JtPC9jb2RlPiBhdHRy aWJ1dGUgaXMgdXNlZCBiZWNhdXNlIGFwYXJ0IGZyb20gdGhlIDxjb2RlPnNob3dfZXJyb3I8 L2NvZGU+IGFuZCA8Y29kZT5zaG93X2lucHV0PC9jb2RlPiBmb3JtcywgYm90aCBmb3JtcyBt dXN0IGJlIDEwMCUgaWRlbnRpY2FsLiBPdGhlcndpc2UgdGhleSB3b3VsZCBiZSB0cmVhdGVk IGFzIHR3byB1bnJlbGF0ZWQgZm9ybXMuPC9wPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0 byB0b3A8L2E+PC9wPgoKCjxoMyBpZD0ic3ViamVjdF9mb3JtIj5Vc2VyIHNlbGVjdGFibGUg c3ViamVjdCBmaWVsZDwvaDM+Cgo8cD5TcGVjaWZ5IHRoZSA8Y29kZT5zdWJqZWN0X2Zvcm08 L2NvZGU+IGF0dHJpYnV0ZSBhbmQgY3JlYXRlIGEgZm9ybSB3aGljaCBpbmNsdWRlcyBhIDxj b2RlPnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4gdGFnOjwvcD4KCjxwcmU+PGNvZGU+Jmx0 O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVvdDt5b3VAZXhhbXBsZS5jb20mcXVvdDsgc3ViamVj dF9mb3JtPSZxdW90O215X3N1YmplY3RfZm9ybSZxdW90OyAvJmd0OwogICZsdDt0eHA6emVt X2NvbnRhY3RfdGV4dCBsYWJlbD0mcXVvdDtOYW1lJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7 CiAgJmx0O3R4cDp6ZW1fY29udGFjdF9lbWFpbCAvJmd0OyZsdDticiAvJmd0OwogICZsdDt0 eHA6emVtX2NvbnRhY3Rfc2VsZWN0IGxhYmVsPSZxdW90O0Nob29zZSBTdWJqZWN0JnF1b3Q7 IGxpc3Q9JnF1b3Q7LFF1ZXN0aW9uLEZlZWRiYWNrJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7 CiAgJmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSBsYWJlbD0mcXVvdDtNZXNzYWdlJnF1 b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiZsdDsvdHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT48 L3ByZT4KCjxwPkNyZWF0ZSBhIFRleHRwYXR0ZXJuIGZvcm0gY2FsbGVkICYjODIyMDtteV9z dWJqZWN0X2Zvcm0mIzgyMjE7LCBjb250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4 cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtOwogIGVjaG8gJHplbV9jb250 YWN0X2Zvcm1bJiMzOTtDaG9vc2UgU3ViamVjdCYjMzk7XTsKJmx0Oy90eHA6cGhwJmd0Ozwv Y29kZT48L3ByZT4KCjxwPlRoZSA8Y29kZT5sYWJlbDwvY29kZT4gdXNlZCBpbiB0aGUgPGNv ZGU+emVtX2NvbnRhY3Rfc2VsZWN0PC9jb2RlPiB0YWcgbXVzdCBiZSBpZGVudGljYWwgdG8g dGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGUgaW4gdGhlIDxjb2RlPnN1YmplY3RfZm9ybTwv Y29kZT4uIEhlcmUgd2UgdXNlZCA8Y29kZT5DaG9vc2Ugc3ViamVjdDwvY29kZT4uPC9wPgoK PHA+SWYgeW91JiM4MjE3O2QgcHJlZmVyIHRvIGFkZCBhIGNvbW1vbiBwcmVmaXggZm9yIGFs bCBzdWJqZWN0cywgdXNlIGEgPGNvZGU+c3ViamVjdF9mb3JtPC9jb2RlPiBjb250YWluaW5n OjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6ZW1fY29udGFj dF9mb3JtOwogIGVjaG8gJiMzOTtNeSBjb21tb24gcHJlZml4IC0gJiMzOTsgLiAkemVtX2Nv bnRhY3RfZm9ybVsmIzM5O0Nob29zZSBTdWJqZWN0JiMzOTtdOwombHQ7L3R4cDpwaHAmZ3Q7 PC9jb2RlPjwvcHJlPgoKPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoK CjxoMyBpZD0idG9fZm9ybSI+VXNlciBzZWxlY3RhYmxlIHJlY2lwaWVudCwgd2l0aG91dCBz aG93aW5nIGVtYWlsIGFkZHJlc3M8L2gzPgoKPHA+U3BlY2lmeSB0aGUgPGNvZGU+dG9fZm9y bTwvY29kZT4gYXR0cmlidXRlIGFuZCBjcmVhdGUgYSBmb3JtIHdoaWNoIGluY2x1ZGVzIGEg PGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0PC9jb2RlPiB0YWc6PC9wPgoKPHByZT48Y29kZT4m bHQ7dHhwOnplbV9jb250YWN0IHRvX2Zvcm09JnF1b3Q7bXlfemVtX2NvbnRhY3RfdG9fZm9y bSZxdW90OyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X3RleHQgbGFiZWw9JnF1b3Q7TmFt ZSZxdW90OyAvJmd0OyZsdDticiAvJmd0OwogICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwg LyZndDsmbHQ7YnIgLyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X3NlbGVjdCBsYWJlbD0m cXVvdDtEZXBhcnRtZW50JnF1b3Q7IGxpc3Q9JnF1b3Q7LFN1cHBvcnQsU2FsZXMmcXVvdDsg LyZndDsmbHQ7YnIgLyZndDsKICAmbHQ7dHhwOnplbV9jb250YWN0X3RleHRhcmVhIGxhYmVs PSZxdW90O01lc3NhZ2UmcXVvdDsgLyZndDsmbHQ7YnIgLyZndDsKJmx0Oy90eHA6emVtX2Nv bnRhY3QmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+Q3JlYXRlIGEgVGV4dHBhdHRlcm4gZm9ybSBj YWxsZWQgJiM4MjIwO215X3plbV9jb250YWN0X3RvX2Zvcm0mIzgyMjE7LCBjb250YWluaW5n OjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpwaHAmZ3Q7CiAgZ2xvYmFsICR6ZW1fY29udGFj dF9mb3JtOwogIHN3aXRjaCgkemVtX2NvbnRhY3RfZm9ybVsmIzM5O0RlcGFydG1lbnQmIzM5 O10pCiAgewogICAgY2FzZSAmIzM5O1N1cHBvcnQmIzM5OzoKICAgICAgZWNobyAmIzM5O2Ny ZXdAZXhhbXBsZS5jb20mIzM5OzsKICAgICAgYnJlYWs7CiAgICBjYXNlICYjMzk7U2FsZXMm IzM5OzoKICAgICAgZWNobyAmIzM5O3Nob3dtZXRoZW1vbmV5QGV4YW1wbGUuY29tJiMzOTs7 CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgZWNobyAmIzM5O3NvbWVvbmVAZXhh bXBsZS5jb20mIzM5OzsKICB9CiZsdDsvdHhwOnBocCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5U aGUgPGNvZGU+bGFiZWw8L2NvZGU+IHVzZWQgaW4gdGhlIDxjb2RlPnplbV9jb250YWN0X3Nl bGVjdDwvY29kZT4gdGFnIG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBjb3JyZXNwb25zaW5n IHZhcmlhYmxlIGluIHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPi4gSGVyZSB3ZSB1c2VkIDxj b2RlPkRlcGFydG1lbnQ8L2NvZGU+LjwvcD4KCjxwPkEgJiM4MjE2O2RlZmF1bHQmIzgyMTc7 IGVtYWlsIGFkZHJlc3MgaW4gdGhlIDxjb2RlPnRvX2Zvcm08L2NvZGU+IGlzIHNwZWNpZmll ZCB0byBlbnN1cmUgdGhhdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgaXMgdXNlZCBpbiBjYXNl cyB3aGVyZSB5b3UgYWRkIG9yIGNoYW5nZSBhIHNlbGVjdC9yYWRpbyBvcHRpb24gYW5kIGZv cmdldCB0byB1cGRhdGUgdGhlIDxjb2RlPnRvX2Zvcm08L2NvZGU+LjwvcD4KCjxwIGNsYXNz PSJ3YXJuaW5nIj5OZXZlciB1c2UgdGFncyBsaWtlIDxjb2RlPnplbV9jb250YWN0X3RleHQ8 L2NvZGU+LCA8Y29kZT56ZW1fY29udGFjdF9lbWFpbDwvY29kZT4gb3IgPGNvZGU+emVtX2Nv bnRhY3RfdGV4dGFyZWE8L2NvZGU+IGZvciBzZXR0aW5nIHRoZSByZWNpcGllbnQgYWRkcmVz cywgb3RoZXJ3aXNlIHlvdXIgZm9ybSBjYW4gYmUgYWJ1c2VkIHRvIHNlbmQgc3BhbSB0byBh bnkgZW1haWwgYWRkcmVzcyE8L3A+Cgo8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwv YT48L3A+CgoKPGgyIGlkPSJzdHlsaW5nIj5TdHlsaW5nPC9oMj4KCjxwPlRoZSBmb3JtIGl0 c2VsZiBoYXMgYSBjbGFzcyA8c3Ryb25nPnplbUNvbnRhY3RGb3JtPC9zdHJvbmc+IHNldCBv biB0aGUgPGNvZGU+Rk9STTwvY29kZT4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+ IHRhZy48L3A+Cgo8cD5UaGUgbGlzdCBvZiBlcnJvciBtZXNzYWdlcyAoaWYgYW55KSBoYXMg YSBjbGFzcyA8c3Ryb25nPnplbUVycm9yPC9zdHJvbmc+IHNldCBvbiB0aGUgPGNvZGU+VUw8 L2NvZGU+IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWcgdGhhdCBlbmNsb3Nl cyB0aGUgbGlzdCBvZiBlcnJvcnMuPC9wPgoKQWxsIGZvcm0gZWxlbWVudHMgYW5kIGNvcnJl c3BvbmRpbmcgbGFiZWxzIGhhdmUgdGhlIGZvbGxvd2luZyBjbGFzc2VzIChvciBpZHMgc2V0 KToKPG9sPgoJPGxpPk9uZSBvZiA8c3Ryb25nPnplbVRleHQ8L3N0cm9uZz4sIDxzdHJvbmc+ emVtVGV4dGFyZWE8L3N0cm9uZz4sIDxzdHJvbmc+emVtU2VsZWN0PC9zdHJvbmc+LCA8c3Ry b25nPnplbVJhZGlvPC9zdHJvbmc+LCA8c3Ryb25nPnplbUNoZWNrYm94PC9zdHJvbmc+LCA8 c3Ryb25nPnplbVN1Ym1pdDwvc3Ryb25nPi4gSXQgc2hvdWxkIGJlIG9idmlvdXMgd2hpY2gg Y2xhc3MgaXMgdXNlZCBmb3Igd2hpY2ggZm9ybSBlbGVtZW50IChhbmQgY29ycmVzcG9uZGlu ZyBsYWJlbCkuPC9saT4KCTxsaT48c3Ryb25nPnplbVJlcXVpcmVkPC9zdHJvbmc+IG9yIDxz dHJvbmc+ZXJyb3JFbGVtZW50PC9zdHJvbmc+IG9yIDxzdHJvbmc+emVtUmVxdWlyZWRlcnJv ckVsZW1lbnQ8L3N0cm9uZz4sIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBmb3JtIGVsZW1l bnQgaXMgcmVxdWlyZWQsIGFuIGVycm9yIHdhcyBmb3VuZCBpbiB3aGF0ZXZlciB0aGUgdmlz aXRvciBlbnRlcmVkJiM4MjMwOyBvciBib3RoLjwvbGk+Cgk8bGk+QW4gaW5kaXZpZHVhbCAm IzgyMjA7aWQmIzgyMjE7IG9yICYjODIyMDtjbGFzcyYjODIyMTsgc2V0IHRvIHRoZSB2YWx1 ZSBvZiB0aGUgPGNvZGU+bmFtZTwvY29kZT4gYXR0cmlidXRlIG9mIHRoZSBjb3JyZXNwb25k aW5nIHRhZy4gV2hlbiBzdHlsaW5nIGZvcm1zIGJhc2VkIG9uIHRoaXMgY2xhc3MsIHlvdSBz aG91bGQgZXhwbGljaXRseSBzZXQgdGhlIDxjb2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBi ZWNhdXNlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG5hbWVzIG1heSBjaGFuZ2UgaW4gbmV3 ZXIgemVtX2NvbnRhY3RfcmVib3JuIHZlcnNpb25zLjwvbGk+Cjwvb2w+Cgo8cD48YSBocmVm PSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoKPGgyIGlkPSJoaXN0b3J5Ij5IaXN0b3J5 PC9oMj4KCjxwPk9ubHkgdGhlIGNoYW5nZXMgdGhhdCBtYXkgYWZmZWN0IHBlb3BsZSB3aG8g dXBncmFkZSBhcmUgZGV0YWlsZWQgYmVsb3cuPGJyIC8+ClRvIHNhdmUgc3BhY2UsIGxpbmtz IHRvIGZvcnVtIHRvcGljcyB0aGF0IGRldGFpbCBhbGwgdGhlIGNoYW5nZXMgaW4gZWFjaCB2 ZXJzaW9uIGhhdmUgYmVlbiBhZGRlZC48L3A+Cgo8dWw+Cgk8bGk+MTQgZmViIDIwMDc6IDxz dHJvbmc+dmVyc2lvbiA0LjAuMy4xOTwvc3Ryb25nPiA8YSBocmVmPSJodHRwOi8vZm9ydW0u dGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjExNDQiPmNoYW5nZWxvZzwvYT4K CTx1bD4KCQk8bGk+PGEgaHJlZj0iI3NlbmRhcnRpY2xlIj5zZW5kX2FydGljbGU8L2E+IGZ1 bmN0aW9uYWxpdHkgcmV2aXNlZCwgcmVxdWlyaW5nIGNoYW5nZXMgd2hlbiB1cGdyYWRpbmcg ZnJvbSBlYXJsaWVyIHZlcnNpb25zPC9saT4KCQk8bGk+TmV3IGxhbmd1YWdlIHN0cmluZ3M6 ICYjODIxNjtzZW5kX2FydGljbGUmIzgyMTc7IGFuZCAmIzgyMTY7cmVjaXBpZW50JiM4MjE3 OyAocmVwbGFjZXMgJiM4MjE2O3JlY2VpdmVyJiM4MjE3Oyk8L2xpPgoJCTxsaT5TZXRzIG9m IHJhZGlvIGJ1dHRvbnMgcmVxdWlyZSB0aGUgbmV3IDxhIGhyZWY9IiN6Y19yYWRpbyI+Z3Jv dXA8L2E+IGF0dHJpYnV0ZTwvbGk+CgkJPGxpPlllcy9ObyB2YWx1ZXMgZGVwcmVjYXRlZCBp biBmYXZvciBmb3IgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHN0YW5kYXJk IDEvMCB2YWx1ZXMgKHllcy9ubyBzdGlsbCB3b3JrIGluIHRoaXMgdmVyc2lvbik8L2xpPgoJ PC91bD48L2xpPgoJPGxpPjIwIG5vdiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gNC4wLjMuMTg8 L3N0cm9uZz4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9w aWMucGhwP2lkPTE5ODIzIj5jaGFuZ2Vsb2c8L2E+Cgk8dWw+CgkJPGxpPklEcyAmIzgyMTY7 emVtQ29udGFjdEZvcm0mIzgyMTc7IGFuZCAmIzgyMTY7emVtU3VibWl0JiM4MjE3OyBoYXZl IGNoYW5nZWQgdG8gY2xhc3NlcyB0byBhbGxvdyBtdWx0aXBsZSBmb3JtcyBwZXIgcGFnZTwv bGk+CgkJPGxpPk5ldyBsYW5ndWFnZSBzdHJpbmdzOiAmIzgyMTY7Zm9ybV91c2VkJiM4MjE3 OywgJiM4MjE2O2ludmFsaWRfdXRmOCYjODIxNzssICYjODIxNjttYXhfd2FybmluZyYjODIx NzssICYjODIxNjtuYW1lJiM4MjE3OywgJiM4MjE2O3JlZnJlc2gmIzgyMTc7LCAmIzgyMTY7 c2VjcmV0JiM4MjE3OzwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+MTIgbWFyIDIwMDY6IDxzdHJv bmc+dmVyc2lvbiA0LjAuMy4xNzwvc3Ryb25nPiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4 dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MTM0MTYiPmNoYW5nZWxvZzwvYT48L2xp PgoJPGxpPjExIGZlYiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjE2PC9zdHJvbmc+PC9saT4K CTxsaT4wNiBmZWIgMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4xNTwvc3Ryb25nPjwvbGk+Cgk8 bGk+MDMgZmViIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMTQ8L3N0cm9uZz4KCTx1bD4KCQk8 bGk+UmVxdWlyZXMgc2VwYXJhdGUgemVtX2NvbnRhY3RfbGFuZyBwbHVnaW48L2xpPgoJPC91 bD48L2xpPgoJPGxpPjI5IGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjEyPC9zdHJvbmc+ PC9saT4KCTxsaT4yNyBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4xMTwvc3Ryb25nPjwv bGk+Cgk8bGk+MjMgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMDkgYW5kIC4xMDwvc3Ry b25nPjwvbGk+Cgk8bGk+MjMgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMDg8L3N0cm9u Zz48L2xpPgoJPGxpPjE3IGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjA3PC9zdHJvbmc+ PC9saT4KCTxsaT4xNiBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4wNSBhbmQgLjA2PC9z dHJvbmc+PC9saT4KCTxsaT4xNSBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4wNDwvc3Ry b25nPjwvbGk+Cgk8bGk+MTAgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMDM8L3N0cm9u Zz48L2xpPgoJPGxpPjE5IGRlYyAyMDA1OiA8c3Ryb25nPnZlcnNpb24gLjAyPC9zdHJvbmc+ PC9saT4KPC91bD4KCjxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgo8 aDIgaWQ9ImNyZWRpdHMiPkNyZWRpdHM8L2gyPgoKPHVsPgoJPGxpPjxzdHJvbmc+emVtPC9z dHJvbmc+IHdyb3RlIHRoZSB6ZW1fY29udGFjdCAwLjYgcGx1Z2luIG9uIHdoaWNoIHRoaXMg cGx1Z2luIHdhcyBpbml0aWFsbHkgYmFzZWQuPC9saT4KCTxsaT48c3Ryb25nPk1hcnk8L3N0 cm9uZz4gY29tcGxldGVseSByZXZpc2VkIHRoZSBwbHVnaW4gY29kZS48L2xpPgoJPGxpPjxz dHJvbmc+U3R1YXJ0PC9zdHJvbmc+IFR1cm5lZCBpdCBpbnRvIGEgcGx1Z2luLCBhZGRlZCBh IHJldmlzZWQgaGVscCB0ZXh0IGFuZCBhZGRpdGlvbmFsIGNvZGUuIE1haW50YWluZWQgYWxs IHBsdWdpbiB2ZXJzaW9ucyB0aWxsIDQuMC4zLjE3LjwvbGk+Cgk8bGk+PHN0cm9uZz53ZXQ8 L3N0cm9uZz4gYWRkZWQgdGhlIHplbV9jb250YWN0X3JhZGlvIHRhZy48L2xpPgoJPGxpPjxz dHJvbmc+VHJhbnF1aWxsbzwvc3Ryb25nPiBhZGRlZCB0aGUgYW50aS1zcGFtIDxzcGFuIGNs YXNzPSJjYXBzIj5BUEk8L3NwYW4+IGFuZCB6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgZnVu Y3Rpb25hbGl0eS48L2xpPgoJPGxpPjxzdHJvbmc+YXNsc3c2Njwvc3Ryb25nPiwgPHN0cm9u Zz5qZHlrYXN0PC9zdHJvbmc+IGFuZCBvdGhlcnMgKD8pIHByb3ZpZGVkIGFkZGl0aW9uYWwg Y29kZTwvbGk+Cgk8bGk+PHN0cm9uZz5SdXVkPC9zdHJvbmc+IGNsZWFuZWQgdXAgYW5kIGF1 ZGl0ZWQgdGhlIGNvZGUgdG8gd2VlZCBvdXQgYnVncyBhbmQgY29tcGxldGVseSByZXZpc2Vk IHRoZSBoZWxwIHRleHQuIE1haW50YWluZXIgb2YgdmVyc2lvbnMgNC4wLjMuMTggYW5kIHVw LjwvbGk+Cgk8bGk+U3VwcG9ydGVkIGFuZCB0ZXN0ZWQgdG8gZGVzdHJ1Y3Rpb24gYnkgdGhl IFRleHRwYXR0ZXJuIGNvbW11bml0eS48L2xpPgo8L3VsPgoKPHA+PGEgaHJlZj0iI3RvcCI+ QmFjayB0byB0b3A8L2E+PC9wPgoKCjxoMiBpZD0iYXBpIj5aZW0gQ29udGFjdCBSZWJvcm4m IzgyMTc7cyA8c3BhbiBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPjwvaDI+Cgo8cD5UaGUgcGx1 Z2luIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+IG9mIHplbSBjb250YWN0LCBkZXZl bG9wZWQgYnkgVHJhbnF1aWxsbywgaXMgc2ltaWxhciB0byB0aGUgY29tbWVudHMgPHNwYW4g Y2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj4gb2YgVGV4dHBhdHRlcm4sIHdoaWNoIGlzIGV4cGxh aW5lZCBpbiB0aGUgVGV4dGJvb2sgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93 aWtpL2luZGV4LnBocD90aXRsZT1QbHVnaW5fRGV2ZWxvcG1lbnRfVG9waWNzIj5QbHVnaW4g RGV2ZWxvcG1lbnQgVG9waWNzPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJu Lm5ldC93aWtpL2luZGV4LnBocD90aXRsZT1Db21iYXRfQ29tbWVudF9TcGFtIj5Db21iYXQg Q29tbWVudCBTcGFtPC9hPi48L3A+CgpUd28gY2FsbGJhY2sgZXZlbnRzIGV4aXN0IGluIHpl bV9jb250YWN0X3JlYm9ybjoKPHVsPgoJPGxpPjxjb2RlPnplbWNvbnRhY3Quc3VibWl0PC9j b2RlPiBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGZvcm0gaXMgc3VibWl0dGVkIGFuZCB0aGUgdmFs dWVzIGFyZSBjaGVja2VkIGlmIGVtcHR5IG9yIHZhbGlkIGVtYWlsIGFkZHJlc3NlcywgYnV0 IGJlZm9yZSB0aGUgbWFpbCBpcyBzZW50LjwvbGk+Cgk8bGk+PGNvZGU+emVtY29udGFjdC5m b3JtPC9jb2RlPiBsZXQmIzgyMTc7cyB5b3UgaW5zZXJ0IGNvbnRlbnQgaW4gdGhlIGNvbnRh Y3QgZm9ybSBhcyBkaXNwbGF5ZWQgdG8gdGhlIHZpc2l0b3IuPC9saT4KPC91bD4KCjxwPkZv ciByZWZlcmVuY2UgaGVyZSBhcmUgdGhlIGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBpbnRlcmVz dGluZyB0byBwbHVnaW4gZGV2ZWxvcGVyczo8L3A+Cgo8cHJlPjxjb2RlPi8vIFRoaXMgd2ls bCBjYWxsIHlvdXIgZnVuY3Rpb24gYmVmb3JlIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZAovLyBT byB5b3UgY2FuIGFuYWx5c2UgdGhlIHN1Ym1pdHRlZCBkYXRhCnJlZ2lzdGVyX2NhbGxiYWNr KCYjMzk7YWJjX215ZnVuY3Rpb24mIzM5OywmIzM5O3plbWNvbnRhY3Quc3VibWl0JiMzOTsp OwoKLy8gVGhpcyB3aWxsIGNhbGwgeW91ciBmdW5jdGlvbiBhbmQgYWRkIHRoZSBvdXRwdXQg KHVzZSByZXR1cm4gJG15c3R1ZmYpCi8vIHRvIHRoZSBjb250YWN0LWZvcm0uCnJlZ2lzdGVy X2NhbGxiYWNrKCYjMzk7YWJjX215b3RoZXJmdW5jdGlvbjImIzM5OywmIzM5O3plbWNvbnRh Y3QuZm9ybSYjMzk7KTsKCi8vIFRvIGdldCBob2xkIG9mIHRoZSBmb3JtLXZhcmlhYmxlcyB5 b3UgY2FuIHVzZQpnbG9iYWwgemVtX2NvbnRhY3RfZm9ybTsKCi8vIFdpdGggdGhlIGZvbGxv d2luZyB0d28gbGluZXMgeW91IGNhbiB0ZWxsIHplbV9jb250YWN0IGlmIHlvdXIKLy8gcGx1 Z2luIGZvdW5kIHNwYW0KJGV2YWx1YXRvciA9JmFtcDsgZ2V0X3plbWNvbnRhY3RfZXZhbHVh dG9yKCk7CgovLyBUaGUgcGFzc2VkIHZhbHVlIG11c3QgYmUgbm9uLXplcm8gdG8gbWFyayB0 aGUgY29udGVudCBhcyBzcGFtLgovLyBWYWx1ZSBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4g MCBhbmQgMS4KJGV2YWx1YXRvciAtJmd0OyBhZGRfemVtY29udGFjdF9zdGF0dXMoMSk7PC9j b2RlPjwvcHJlPgoKPHA+TXVsdGlwbGUgcGx1Z2lucyBjYW4gYmUgYWN0aXZlIGF0IHRoZSBz YW1lIHRpbWUgYW5kIGVhY2ggb2YgdGhlbSBjYW4gbWFyayB0aGUgc3VibWl0dGVkIGNvbnRl bnQgYXMgc3BhbSBhbmQgcHJldmVudCB0aGUgZm9ybSBmcm9tIGJlaW5nIHN1Ym1pdHRlZC48 L3A+Cgo8cD48c3Ryb25nPkFuIGV4YW1wbGUgb2YgYSBwbHVnLWluIGNvbm5lY3RpbmcgdG8g WmVtIENvbnRhY3QgUmVib3JuJiM4MjE3O3MgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bh bj46PC9zdHJvbmc+PC9wPgoKPHByZT48Y29kZT5yZWdpc3Rlcl9jYWxsYmFjaygmIzM5O3Bh cF96ZW1jb250YWN0X2Zvcm0mIzM5OywmIzM5O3plbWNvbnRhY3QuZm9ybSYjMzk7KTsKcmVn aXN0ZXJfY2FsbGJhY2soJiMzOTtwYXBfemVtY29udGFjdF9zdWJtaXQmIzM5OywmIzM5O3pl bWNvbnRhY3Quc3VibWl0JiMzOTspOwoKZnVuY3Rpb24gcGFwX3plbWNvbnRhY3RfZm9ybSgp IHsKICAkZmllbGQgPSAmIzM5OyZsdDtkaXYgc3R5bGU9JnF1b3Q7ZGlzcGxheTpub25lJnF1 b3Q7Jmd0OyYjMzk7LgogICAgZmlucHV0KCYjMzk7dGV4dCYjMzk7LCYjMzk7cGhvbmUmIzM5 OyxwcygmIzM5O3Bob25lJiMzOTspLCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7 LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5O3Bob25lJiMzOTspLiYjMzk7Jmx0O2JyIC8m Z3Q7JiMzOTsuCiAgICBmaW5wdXQoJiMzOTt0ZXh0JiMzOTssJiMzOTttYWlsJiMzOTsscHMo JiMzOTttYWlsJiMzOTspLCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7 JiMzOTssJiMzOTsmIzM5OywmIzM5O21haWwmIzM5OykuJiMzOTsmbHQ7L2RpdiZndDsmIzM5 OzsKICByZXR1cm4gJGZpZWxkOyZsdDsvY29kZSZndDsKfQoKZnVuY3Rpb24gcGFwX3plbWNv bnRhY3Rfc3VibWl0KCkgewogICRjaGVja2luZ19tYWlsX2ZpZWxkID0gdHJpbShwcygmIzM5 O21haWwmIzM5OykpOwogICRjaGVja2luZ19waG9uZV9maWVsZCA9IHRyaW0ocHMoJiMzOTtw aG9uZSYjMzk7KSk7CgogICRldmFsdWF0aW9uID0mYW1wOyBnZXRfemVtY29udGFjdF9ldmFs dWF0b3IoKTsKCiAgLy8gSWYgdGhlIGhpZGRlbiBmaWVsZHMgYXJlIGZpbGxlZCBvdXQsIHRo ZSBjb250YWN0IGZvcm0gd29uJiMzOTt0IGJlIHN1Ym1pdHRlZCEKICBpZiAoJGNoZWNraW5n X21haWxfZmllbGQgIT0gJiMzOTsmIzM5OyBvciAkY2hlY2tpbmdfcGhvbmVfZmllbGQgIT0g JiMzOTsmIzM5OykgewogICAgJGV2YWx1YXRpb24gLSZndDsgYWRkX3plbWNvbnRhY3Rfc3Rh dHVzKDEpOwogIH0KICByZXR1cm47Cn08L2NvZGU+PC9wcmU+Cgo8cD48YSBocmVmPSIjdG9w Ij5CYWNrIHRvIHRvcDwvYT48L3A+IjtzOjQ6ImNvZGUiO3M6MjA3MTA6IgpmdW5jdGlvbiB6 ZW1fY29udGFjdCgkYXR0cywgJHRoaW5nID0gJycpCnsKCWdsb2JhbCAkc2l0ZW5hbWUsICRw cmVmcywgJHByb2R1Y3Rpb25fc3RhdHVzLCAkemVtX2NvbnRhY3RfZnJvbSwKCQkkemVtX2Nv bnRhY3RfcmVjaXBpZW50LCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJt aXQsCgkJJHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9sYWJlbHMsICR6ZW1fY29u dGFjdF92YWx1ZXM7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknY29w eXNlbmRlcicJPT4gMCwKCQknZm9ybScJCT0+ICcnLAoJCSdmcm9tJwkJPT4gJycsCgkJJ2Zy b21fZm9ybScJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnY29udGFj dCcpLAoJCSdyZWRpcmVjdCcJPT4gJycsCgkJJ3Nob3dfZXJyb3InCT0+IDEsCgkJJ3Nob3df aW5wdXQnCT0+IDEsCgkJJ3NlbmRfYXJ0aWNsZScJPT4gMCwKCQknc3ViamVjdCcJPT4gemVt X2NvbnRhY3RfZ1R4dCgnZW1haWxfc3ViamVjdCcsIGh0bWxfZW50aXR5X2RlY29kZSgkc2l0 ZW5hbWUsRU5UX1FVT1RFUykpLAoJCSdzdWJqZWN0X2Zvcm0nCT0+ICcnLAoJCSd0bycJCT0+ ICcnLAoJCSd0b19mb3JtJwk9PiAnJywKCQkndGhhbmtzJwk9PiBncmFmKHplbV9jb250YWN0 X2dUeHQoJ2VtYWlsX3RoYW5rcycpKSwKCQkndGhhbmtzX2Zvcm0nCT0+ICcnCgkpLCAkYXR0 cykpOwoKCXVuc2V0KCRhdHRzWydzaG93X2Vycm9yJ10sICRhdHRzWydzaG93X2lucHV0J10p OwoJJHplbV9jb250YWN0X2Zvcm1faWQgPSBtZDUoc2VyaWFsaXplKCRhdHRzKS5wcmVnX3Jl cGxhY2UoJy9bXHRcc1xyXG5dLycsJycsJHRoaW5nKSk7CgkkemVtX2NvbnRhY3Rfc3VibWl0 ID0gKHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSBhbmQgcHMoJ3plbV9jb250YWN0X2Zvcm1f aWQnKSA9PSAkemVtX2NvbnRhY3RfZm9ybV9pZCk7CgoJaWYgKCFpc19jYWxsYWJsZSgnbWFp bCcpKQoJewoJCXJldHVybiAoJHByb2R1Y3Rpb25fc3RhdHVzID09ICdsaXZlJykgPwoJCQl6 ZW1fY29udGFjdF9nVHh0KCdtYWlsX3NvcnJ5JykgOgoJCQlnVHh0KCd3YXJuX21haWxfdW5h dmFpbGFibGUnKTsKCX0KCglzdGF0aWMgJGhlYWRlcnNfc2VudCA9IGZhbHNlOwoJaWYgKCEk aGVhZGVyc19zZW50KSB7CgkJaGVhZGVyKCdMYXN0LU1vZGlmaWVkOiAnLmdtZGF0ZSgnRCwg ZCBNIFkgSDppOnMnLHRpbWUoKS0zNjAwKjI0KjcpLicgR01UJyk7CgkJaGVhZGVyKCdFeHBp cmVzOiAnLmdtZGF0ZSgnRCwgZCBNIFkgSDppOnMnLHRpbWUoKSs2MDApLicgR01UJyk7CgkJ aGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlJyk7CgkJ JGhlYWRlcnNfc2VudCA9IHRydWU7Cgl9CgoJJG5vbmNlICAgPSBteXNxbF9yZWFsX2VzY2Fw ZV9zdHJpbmcocHMoJ3plbV9jb250YWN0X25vbmNlJykpOwoJJHJlbm9uY2UgPSBmYWxzZTsK CglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQlzYWZlX2RlbGV0ZSgndHhwX2Rpc2N1 c3Nfbm9uY2UnLCAnaXNzdWVfdGltZSA8IGRhdGVfc3ViKG5vdygpLCBpbnRlcnZhbCAxMCBt aW51dGUpJyk7CgkJaWYgKCRycyA9IHNhZmVfcm93KCd1c2VkJywgJ3R4cF9kaXNjdXNzX25v bmNlJywgIm5vbmNlID0gJyRub25jZSciKSkKCQl7CgkJCWlmICgkcnNbJ3VzZWQnXSkKCQkJ ewoJCQkJdW5zZXQoJHplbV9jb250YWN0X2Vycm9yKTsKCQkJCSR6ZW1fY29udGFjdF9lcnJv cltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZm9ybV91c2VkJyk7CgkJCQkkcmVub25jZSA9IHRy dWU7CgkJCQkkX1BPU1QgPSBhcnJheSgpOwoJCQkJJF9QT1NUWyd6ZW1fY29udGFjdF9zdWJt aXQnXSA9IDE7CgkJCQkkX1BPU1RbJ3plbV9jb250YWN0X2Zvcm1faWQnXSA9ICR6ZW1fY29u dGFjdF9mb3JtX2lkOwoJCQkJJF9QT1NUWyd6ZW1fY29udGFjdF9ub25jZSddID0gJG5vbmNl OwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2Nv bnRhY3RfZ1R4dCgnZm9ybV9leHBpcmVkJyk7CgkJCSRyZW5vbmNlID0gdHJ1ZTsKCQl9Cgl9 CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQgYW5kICRub25jZSBhbmQgISRyZW5vbmNlKQoJ ewoJCSR6ZW1fY29udGFjdF9ub25jZSA9ICRub25jZTsKCX0KCgllbHNlaWYgKCEkc2hvd19l cnJvciBvciAkc2hvd19pbnB1dCkKCXsKCQkkemVtX2NvbnRhY3Rfbm9uY2UgPSBtZDUodW5p cWlkKHJhbmQoKSwgdHJ1ZSkpOwoJCXNhZmVfaW5zZXJ0KCd0eHBfZGlzY3Vzc19ub25jZScs ICJpc3N1ZV90aW1lID0gbm93KCksIG5vbmNlID0gJyR6ZW1fY29udGFjdF9ub25jZSciKTsK CX0KCgkkZm9ybSA9ICgkZm9ybSkgPyBmZXRjaF9mb3JtKCRmb3JtKSA6ICR0aGluZzsKCglp ZiAoZW1wdHkoJGZvcm0pKQoJewoJCSRmb3JtID0gJwo8dHhwOnplbV9jb250YWN0X3RleHQg bGFiZWw9IicuemVtX2NvbnRhY3RfZ1R4dCgnbmFtZScpLiciIC8+PGJyIC8+Cjx0eHA6emVt X2NvbnRhY3RfZW1haWwgLz48YnIgLz4nLgooJHNlbmRfYXJ0aWNsZSA/ICc8dHhwOnplbV9j b250YWN0X2VtYWlsIHNlbmRfYXJ0aWNsZT0iMSIgbGFiZWw9IicuemVtX2NvbnRhY3RfZ1R4 dCgncmVjaXBpZW50JykuJyIgLz48YnIgLz4nIDogJycpLgonPHR4cDp6ZW1fY29udGFjdF90 ZXh0YXJlYSAvPjxiciAvPgo8dHhwOnplbV9jb250YWN0X3N1Ym1pdCAvPgonOwoJfQoKCSRm b3JtID0gcGFyc2UoJGZvcm0pOwoKCWlmICgkdG9fZm9ybSkKCXsKCQkkdG8gPSBwYXJzZShm ZXRjaF9mb3JtKCR0b19mb3JtKSk7Cgl9CgoJaWYgKCEkdG8gYW5kICEkc2VuZF9hcnRpY2xl KQoJewoJCXJldHVybiB6ZW1fY29udGFjdF9nVHh0KCd0b19taXNzaW5nJyk7Cgl9CgoJJG91 dCA9ICcnOwoKCWlmICghJHplbV9jb250YWN0X3N1Ym1pdCkgewoJICAjIGRvbid0IHNob3cg ZXJyb3JzIG9yIHNlbmQgbWFpbAoJfQoKCWVsc2VpZiAoIWVtcHR5KCR6ZW1fY29udGFjdF9l cnJvcikpCgl7CgkJaWYgKCRzaG93X2Vycm9yIG9yICEkc2hvd19pbnB1dCkKCQl7CgkJCSRv dXQgLj0gbi4nPHVsIGNsYXNzPSJ6ZW1FcnJvciI+JzsKCgkJCWZvcmVhY2ggKGFycmF5X3Vu aXF1ZSgkemVtX2NvbnRhY3RfZXJyb3IpIGFzICRlcnJvcikKCQkJewoJCQkJJG91dCAuPSBu LnQuJzxsaT4nLiRlcnJvci4nPC9saT4nOwoJCQl9CgoJCQkkb3V0IC49IG4uJzwvdWw+JzsK CgkJCWlmICghJHNob3dfaW5wdXQpIHJldHVybiAkb3V0OwoJCX0KCX0KCgllbHNlaWYgKCRz aG93X2lucHV0IGFuZCBpc19hcnJheSgkemVtX2NvbnRhY3RfZm9ybSkpCgl7CgkJLy8vIGxv YWQgYW5kIGNoZWNrIHNwYW0gcGx1Z2lucy8KCQljYWxsYmFja19ldmVudCgnemVtY29udGFj dC5zdWJtaXQnKTsKCQkkZXZhbHVhdGlvbiA9JiBnZXRfemVtY29udGFjdF9ldmFsdWF0b3Io KTsKCQkkY2xlYW4gPSAkZXZhbHVhdGlvbi0+Z2V0X3plbWNvbnRhY3Rfc3RhdHVzKCk7CgkJ aWYgKCRjbGVhbiAhPSAwKSB7CgkJCXJldHVybiB6ZW1fY29udGFjdF9nVHh0KCdzcGFtJyk7 CgkJfQoKCQlpZiAoJGZyb21fZm9ybSkKCQl7CgkJCSRmcm9tID0gcGFyc2UoZmV0Y2hfZm9y bSgkZnJvbV9mb3JtKSk7CgkJfQoKCQlpZiAoJHN1YmplY3RfZm9ybSkKCQl7CgkJCSRzdWJq ZWN0ID0gcGFyc2UoZmV0Y2hfZm9ybSgkc3ViamVjdF9mb3JtKSk7CgkJfQoKCQkkc2VwID0g IWlzX3dpbmRvd3MoKSA/ICJcbiIgOiAiXHJcbiI7CgoJCSRtc2cgPSBhcnJheSgpOwoKCQlm b3JlYWNoICgkemVtX2NvbnRhY3RfbGFiZWxzIGFzICRuYW1lID0+ICRsYWJlbCkKCQl7CgkJ CSRtc2dbXSA9ICRsYWJlbC4nOiAnLiR6ZW1fY29udGFjdF92YWx1ZXNbJG5hbWVdOwoJCX0K CgkJaWYgKCRzZW5kX2FydGljbGUpCgkJewoJCQlnbG9iYWwgJHRoaXNhcnRpY2xlOwoJCQkk c3ViamVjdCA9IHN0cl9yZXBsYWNlKCcmIzM4OycsICcmJywgJHRoaXNhcnRpY2xlWyd0aXRs ZSddKTsKCQkJJG1zZ1tdID0gcGVybWxpbmt1cmwoJHRoaXNhcnRpY2xlKTsKCQkJJG1zZ1td ID0gJHN1YmplY3Q7CgkJCSRzX2FyID0gYXJyYXkoJyYjODIxNjsnLCAnJiM4MjE3OycsICcm IzgyMjA7JywgJyYjODIyMTsnLCAnJiM4MjE3OycsICcmIzgyNDI7JywgJyYjODI0MzsnLCAn JiM4MjMwOycsICcmIzgyMTE7JywgJyYjODIxMjsnLCAnJiMyMTU7JywgJyYjODQ4MjsnLCAn JiMxNzQ7JywgJyYjMTY5OycsICcmbHQ7JywgJyZndDsnLCAnJnF1b3Q7JywgJyZhbXA7Jywg JyYjMzg7JywgIlx0IiwgJzxwJyk7CgkJCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWlsY2hh cnNldCddIGFuZCBpc19jYWxsYWJsZSgndXRmOF9kZWNvZGUnKSkgewoJCQkJJHJfYXIgPSBh cnJheSgiJyIsICInIiwgJyInLCAnIicsICInIiwgIiciLCAnIicsICcuLi4nLCAnLScsICct LScsICd4JywgJ1t0bV0nLCAnKHIpJywgJyhjKScsICc8JywgJz4nLCAnIicsICcmJywgJyYn LCAnICcsICJcbjxwIik7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkcl9hciA9IGFycmF5KCfi gJgnLCAn4oCZJywgJ+KAnCcsICfigJ0nLCAn4oCZJywgJ+KAsicsICfigLMnLCAn4oCmJywg J+KAkycsICfigJQnLCAnw5cnLCAn4oSiJywgJ8KuJywgJ8KpJywgJzwnLCAnPicsICciJywg JyYnLCAnJicsICcgJywgIlxuPHAiKTsKCQkJfQoJCQkkbXNnW10gPSB0cmltKHN0cmlwX3Rh Z3Moc3RyX3JlcGxhY2UoJHNfYXIsJHJfYXIsKHRyaW0oc3RyaXBfdGFncygkdGhpc2FydGlj bGVbJ2V4Y2VycHQnXSkpID8gJHRoaXNhcnRpY2xlWydleGNlcnB0J10gOiAkdGhpc2FydGlj bGVbJ2JvZHknXSkpKSk7CgkJCWlmIChlbXB0eSgkemVtX2NvbnRhY3RfcmVjaXBpZW50KSkK CQkJewoJCQkJcmV0dXJuIHplbV9jb250YWN0X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCBodG1s c3BlY2lhbGNoYXJzKHplbV9jb250YWN0X2dUeHQoJ3JlY2lwaWVudCcpKSk7CgkJCX0KCQkJ ZWxzZQoJCQl7CgkJCQkkdG8gPSAkemVtX2NvbnRhY3RfcmVjaXBpZW50OwoJCQl9CgkJfQoK CQkkbXNnID0gam9pbigiXG5cbiIsICRtc2cpOwoJCSRtc2cgPSBzdHJfcmVwbGFjZSgiXHJc biIsICJcbiIsICRtc2cpOwoJCSRtc2cgPSBzdHJfcmVwbGFjZSgiXHIiLCAiXG4iLCAkbXNn KTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxuIiwgJHNlcCwgJG1zZyk7CgoJCWlmICgkZnJv bSkKCQl7CgkJCSRyZXBseSA9ICR6ZW1fY29udGFjdF9mcm9tOwoJCX0KCgkJZWxzZQoJCXsK CQkJJGZyb20gPSAkemVtX2NvbnRhY3RfZnJvbTsKCQkJJHJlcGx5ID0gJyc7CgkJfQoKCQkk ZnJvbSAgICA9IHplbV9jb250YWN0X3N0cmlwKCRmcm9tKTsKCQkkdG8gICAgICA9IHplbV9j b250YWN0X3N0cmlwKCR0byk7CgkJJHN1YmplY3QgPSB6ZW1fY29udGFjdF9zdHJpcCgkc3Vi amVjdCk7CgkJJHJlcGx5ICAgPSB6ZW1fY29udGFjdF9zdHJpcCgkcmVwbHkpOwoJCSRtc2cg ICAgID0gemVtX2NvbnRhY3Rfc3RyaXAoJG1zZywgRkFMU0UpOwoKCQlpZiAoJHByZWZzWydv dmVycmlkZV9lbWFpbGNoYXJzZXQnXSBhbmQgaXNfY2FsbGFibGUoJ3V0ZjhfZGVjb2RlJykp CgkJewoJCQkkY2hhcnNldCA9ICdJU08tODU5OS0xJzsKCQkJJHRvICAgICAgPSB1dGY4X2Rl Y29kZSgkdG8pOwoJCQkkc3ViamVjdCA9IHV0ZjhfZGVjb2RlKCRzdWJqZWN0KTsKCQkJJG1z ZyAgICAgPSB1dGY4X2RlY29kZSgkbXNnKTsKCQkJJGZyb20gICAgPSB1dGY4X2RlY29kZSgk ZnJvbSk7CgkJCSRyZXBseSAgID0gdXRmOF9kZWNvZGUoJHJlcGx5KTsKCQl9CgoJCWVsc2UK CQl7CgkJCSRjaGFyc2V0ID0gJ1VURi04JzsKCQl9CgoJCSRzdWJqZWN0ID0gemVtX2NvbnRh Y3RfbWFpbGhlYWRlcigkc3ViamVjdCwgJ3RleHQnKTsKCgkJJGhlYWRlcnMgPSAnRnJvbTog Jy4kZnJvbS4KCQkJKCRyZXBseSA/ICgkc2VwLidSZXBseS1UbzogJy4kcmVwbHkpIDogJycp LgoJCQkkc2VwLidYLU1haWxlcjogVGV4dHBhdHRlcm4gKHplbV9jb250YWN0X3JlYm9ybikn LgoJCQkkc2VwLidYLU9yaWdpbmF0aW5nLUlQOiAnLighZW1wdHkoJF9TRVJWRVJbJ0hUVFBf WF9GT1JXQVJERURfRk9SJ10pID8gJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10u JyB2aWEgJyA6ICcnKS4kX1NFUlZFUlsnUkVNT1RFX0FERFInXS4KCQkJJHNlcC4nQ29udGVu dC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCcuCgkJCSRzZXAuJ0NvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD0iJy4kY2hhcnNldC4nIic7CgoJCXNhZmVfdXBkYXRlKCd0eHBf ZGlzY3Vzc19ub25jZScsICJ1c2VkID0gJzEnLCBpc3N1ZV90aW1lID0gbm93KCkiLCAibm9u Y2UgPSAnJG5vbmNlJyIpOwoKCQlpZiAobWFpbCgkdG8sICRzdWJqZWN0LCAkbXNnLCAkaGVh ZGVycykpCgkJewoJCQkkX1BPU1QgPSBhcnJheSgpOwoKCQkJaWYgKCRjb3B5c2VuZGVyIGFu ZCAkemVtX2NvbnRhY3RfZnJvbSkKCQkJewoJCQkJbWFpbCgkZnJvbSwgJHN1YmplY3QsICRt c2csICRoZWFkZXJzKTsKCQkJfQoKCQkJaWYgKCRyZWRpcmVjdCkKCQkJewoJCQkJd2hpbGUg KEBvYl9lbmRfY2xlYW4oKSk7CgkJCQkkdXJpID0gaHUubHRyaW0oJHJlZGlyZWN0LCcvJyk7 CgkJCQlpZiAoZW1wdHkoJF9TRVJWRVJbJ0ZDR0lfUk9MRSddKSBhbmQgZW1wdHkoJF9FTlZb J0ZDR0lfUk9MRSddKSkKCQkJCXsKCQkJCQl0eHBfc3RhdHVzX2hlYWRlcignMzAzIFNlZSBP dGhlcicpOwoJCQkJCWhlYWRlcignTG9jYXRpb246ICcuJHVyaSk7CgkJCQkJaGVhZGVyKCdD b25uZWN0aW9uOiBjbG9zZScpOwoJCQkJCWhlYWRlcignQ29udGVudC1MZW5ndGg6IDAnKTsK CQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkdXJpID0gaHRtbHNwZWNpYWxjaGFycygkdXJp KTsKCQkJCQkkcmVmcmVzaCA9IHplbV9jb250YWN0X2dUeHQoJ3JlZnJlc2gnKTsKCQkJCQll Y2hvIDw8PEVORAo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEu MCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94 aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y Zy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4KPGhlYWQ+Cgk8dGl0bGU+ JHNpdGVuYW1lPC90aXRsZT4KCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgoJPG1ldGEgaHR0cC1lcXVpdj0i cmVmcmVzaCIgY29udGVudD0iMDt1cmw9JHVyaSIgLz4KPC9oZWFkPgo8Ym9keT4KPGEgaHJl Zj0iJHVyaSI+JHJlZnJlc2g8L2E+CjwvYm9keT4KPC9odG1sPgpFTkQ7CgkJCQl9CgkJCQll eGl0OwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCXJldHVybiAnPGRpdiBjbGFzcz0iemVtVGhh bmtzIiBpZD0iemNyJy4kemVtX2NvbnRhY3RfZm9ybV9pZC4nIj4nIC4KCQkJCQkoJHRoYW5r c19mb3JtID8gZmV0Y2hfZm9ybSgkdGhhbmtzX2Zvcm0pIDogJHRoYW5rcykgLgoJCQkJCSc8 L2Rpdj4nOwoJCQl9CgkJfQoKCQllbHNlCgkJewoJCQkkb3V0IC49IGdyYWYoemVtX2NvbnRh Y3RfZ1R4dCgnbWFpbF9zb3JyeScpKTsKCQl9Cgl9CgoJaWYgKCRzaG93X2lucHV0IGFuZCAh JHNlbmRfYXJ0aWNsZSBvciBncHMoJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZScpKQoJewoJ CXJldHVybiAnPGZvcm0gbWV0aG9kPSJwb3N0IicuKCghJHNob3dfZXJyb3IgYW5kICR6ZW1f Y29udGFjdF9lcnJvcikgPyAnJyA6ICcgaWQ9InpjcicuJHplbV9jb250YWN0X2Zvcm1faWQu JyInKS4nIGNsYXNzPSJ6ZW1Db250YWN0Rm9ybSIgYWN0aW9uPSInLnNlcnZlclNldCgnUkVR VUVTVF9VUkknKS4nI3pjcicuJHplbV9jb250YWN0X2Zvcm1faWQuJyI+Jy4KCQkJKCAkbGFi ZWwgPyBuLic8ZmllbGRzZXQ+JyA6IG4uJzxkaXY+JyApLgoJCQkoICRsYWJlbCA/IG4uJzxs ZWdlbmQ+Jy4kbGFiZWwuJzwvbGVnZW5kPicgOiAnJyApLgoJCQkkb3V0LgoJCQluLic8aW5w dXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ6ZW1fY29udGFjdF9ub25jZSIgdmFsdWU9IicuJHpl bV9jb250YWN0X25vbmNlLiciIC8+Jy4KCQkJbi4nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFt ZT0iemVtX2NvbnRhY3RfZm9ybV9pZCIgdmFsdWU9IicuJHplbV9jb250YWN0X2Zvcm1faWQu JyIgLz4nLgoJCQkkZm9ybS4KCQkJY2FsbGJhY2tfZXZlbnQoJ3plbWNvbnRhY3QuZm9ybScp LgoJCQkoICRsYWJlbCA/IChuLic8L2ZpZWxkc2V0PicpIDogKG4uJzwvZGl2PicpICkuCgkJ CW4uJzwvZm9ybT4nOwoJfQoKCXJldHVybiAnJzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rf c3RyaXAoJHN0ciwgJGhlYWRlciA9IFRSVUUpIHsKCWlmICgkaGVhZGVyKSAkc3RyID0gc3Ry aXBfcm4oJHN0cik7CglyZXR1cm4gcHJlZ19yZXBsYWNlKCcvW1x4MDBdLycsICcgJywgJHN0 cik7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3RleHQoJGF0dHMpCnsKCWdsb2JhbCAkemVt X2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29u dGFjdF9sQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9PiBiciwKCQknZGVmYXVsdCcJPT4gJycs CgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ3Rl eHQnKSwKCQknbWF4JwkJPT4gMTAwLAoJCSdtaW4nCQk9PiAwLAoJCSduYW1lJwkJPT4gJycs CgkJJ3JlcXVpcmVkJwk9PiAxLAoJCSdzaXplJwkJPT4gJycKCSksICRhdHRzKSk7CgoJJG1p biA9IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwoJG1heCk7Cgkkc2l6ZSA9IGludHZh bCgkc2l6ZSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJl bDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJJHZhbHVl ID0gcHMoJG5hbWUpOwoJCSR1dGY4bGVuID0gcHJlZ19tYXRjaF9hbGwoIi8uL3N1IiwgJHZh bHVlLCAkdXRmOGFyKTsKCQkkaGxhYmVsID0gaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpOwoK CQlpZiAoc3RybGVuKCR2YWx1ZSkpCgkJewoJCQlpZiAoISR1dGY4bGVuKQoJCQl7CgkJCQkk emVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRfdXRmOCcs ICRobGFiZWwpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoKCQkJZWxz ZWlmICgkbWluIGFuZCAkdXRmOGxlbiA8ICRtaW4pCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9l cnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnbWluX3dhcm5pbmcnLCAkaGxhYmVsLCAkbWlu KTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2VpZiAoJG1h eCBhbmQgJHV0ZjhsZW4gPiAkbWF4KQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9 IHplbV9jb250YWN0X2dUeHQoJ21heF93YXJuaW5nJywgJGhsYWJlbCwgJG1heCk7CgkJCQkk aXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQkJIyR2YWx1ZSA9IGpvaW4oJycsYXJyYXlf c2xpY2UoJGFyWzBdLDAsJG1heCkpOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCXplbV9jb250 YWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7CgkJCX0KCQl9CgkJZWxzZWlmICgk cmVxdWlyZWQpCgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dU eHQoJ2ZpZWxkX21pc3NpbmcnLCAkaGxhYmVsKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVt ZW50IjsKCQl9Cgl9CgoJZWxzZQoJewoJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJfQoKCSRzaXpl ID0gKCRzaXplKSA/ICcgc2l6ZT0iJy4kc2l6ZS4nIicgOiAnJzsKCSRtYXhsZW5ndGggPSAo JG1heCkgPyAnIG1heGxlbmd0aD0iJy4kbWF4LiciJyA6ICcnOwoKCSR6ZW1SZXF1aXJlZCA9 ICRyZXF1aXJlZCA/ICd6ZW1SZXF1aXJlZCcgOiAnJzsKCiAgICAgICAgcmV0dXJuICc8bGFi ZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1UZXh0ICcuJHplbVJlcXVpcmVkLiRpc0Vy cm9yLicgJy4kbmFtZS4nIj4nLiRsYWJlbC4nPC9sYWJlbD4nLiRicmVhay4KCQknPGlucHV0 IHR5cGU9InRleHQiIGlkPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1UZXh0ICcuJHplbVJlcXVp cmVkLiRpc0Vycm9yLiciIG5hbWU9IicuJG5hbWUuJyIgdmFsdWU9IicuaHRtbHNwZWNpYWxj aGFycygkdmFsdWUpLiciJy4kc2l6ZS4kbWF4bGVuZ3RoLicgLz4nOwp9CgpmdW5jdGlvbiB6 ZW1fY29udGFjdF90ZXh0YXJlYSgkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJv ciwgJHplbV9jb250YWN0X3N1Ym1pdDsKCglleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFy cmF5KAoJCSdicmVhaycJCT0+IGJyLAoJCSdjb2xzJwkJPT4gNTgsCgkJJ2RlZmF1bHQnCT0+ ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0 KCdtZXNzYWdlJyksCgkJJ21heCcJCT0+IDEwMDAwLAoJCSdtaW4nCQk9PiAwLAoJCSduYW1l JwkJPT4gJycsCgkJJ3JlcXVpcmVkJwk9PiAxLAoJCSdyb3dzJwkJPT4gOAoJKSwgJGF0dHMp KTsKCgkkbWluID0gaW50dmFsKCRtaW4pOwoJJG1heCA9IGludHZhbCgkbWF4KTsKCSRjb2xz ID0gaW50dmFsKCRjb2xzKTsKCSRyb3dzID0gaW50dmFsKCRyb3dzKTsKCglpZiAoZW1wdHko JG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKCglpZiAo JHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkdmFsdWUgPSBwcygkbmFtZSk7CgkJJHV0Zjhs ZW4gPSBwcmVnX21hdGNoX2FsbCgiLy4vc3UiLCAkdmFsdWUsICR1dGY4YXIpOwoJCSRobGFi ZWwgPSBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7CgoJCWlmIChzdHJsZW4oJHZhbHVlKSkK CQl7CgkJCWlmICghJHV0ZjhsZW4pCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0g emVtX2NvbnRhY3RfZ1R4dCgnaW52YWxpZF91dGY4JywgJGhsYWJlbCk7CgkJCQkkaXNFcnJv ciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtaW4gYW5kICR1dGY4bGVu IDwgJG1pbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9n VHh0KCdtaW5fd2FybmluZycsICRobGFiZWwsICRtaW4pOwoJCQkJJGlzRXJyb3IgPSAiZXJy b3JFbGVtZW50IjsKCQkJfQoKCQkJZWxzZWlmICgkbWF4IGFuZCAkdXRmOGxlbiA+ICRtYXgp CgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnbWF4 X3dhcm5pbmcnLCAkaGxhYmVsLCAkbWF4KTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVu dCI7CgkJCQkjJHZhbHVlID0gam9pbignJyxhcnJheV9zbGljZSgkdXRmOGFyWzBdLDAsJG1h eCkpOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCXplbV9jb250YWN0X3N0b3JlKCRuYW1lLCAk bGFiZWwsICR2YWx1ZSk7CgkJCX0KCQl9CgoJCWVsc2VpZiAoJHJlcXVpcmVkKQoJCXsKCQkJ JHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5n JywgJGhsYWJlbCk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoJfQoKCWVs c2UKCXsKCQkkdmFsdWUgPSAkZGVmYXVsdDsKCX0KCgkkemVtUmVxdWlyZWQgPSAkcmVxdWly ZWQgPyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0dXJuICc8bGFiZWwgZm9yPSInLiRuYW1l LiciIGNsYXNzPSJ6ZW1UZXh0YXJlYSAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nICcuJG5h bWUuJyI+Jy4kbGFiZWwuJzwvbGFiZWw+Jy4kYnJlYWsuCgkJJzx0ZXh0YXJlYSBpZD0iJy4k bmFtZS4nIiBjbGFzcz0iemVtVGV4dGFyZWEgJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyIg bmFtZT0iJy4kbmFtZS4nIiBjb2xzPSInLiRjb2xzLiciIHJvd3M9IicuJHJvd3MuJyI+Jy5o dG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSkuJzwvdGV4dGFyZWE+JzsKfQoKZnVuY3Rpb24gemVt X2NvbnRhY3RfZW1haWwoJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6 ZW1fY29udGFjdF9zdWJtaXQsICR6ZW1fY29udGFjdF9mcm9tLCAkemVtX2NvbnRhY3RfcmVj aXBpZW50OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ2RlZmF1bHQn CT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9n VHh0KCdlbWFpbCcpLAoJCSdtYXgnCQk9PiAxMDAsCgkJJ21pbicJCT0+IDAsCgkJJ25hbWUn CQk9PiAnJywKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ2JyZWFrJwkJPT4gYnIsCgkJJ3NpemUn CQk9PiAnJywKCQknc2VuZF9hcnRpY2xlJwk9PiAwCgkpLCAkYXR0cykpOwoKCWlmIChlbXB0 eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoKCSRl bWFpbCA9ICR6ZW1fY29udGFjdF9zdWJtaXQgPyBwcygkbmFtZSkgOiAkZGVmYXVsdDsKCglp ZiAoJHplbV9jb250YWN0X3N1Ym1pdCBhbmQgc3RybGVuKCRlbWFpbCkpCgl7CgkJaWYgKCFw cmVnX21hdGNoKCcvXltcdy5fLV0rQChbXHctXStcLikrW1x3LV0rJC8nLCAkZW1haWwpKQoJ CXsKCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlk X2VtYWlsJywgaHRtbHNwZWNpYWxjaGFycygkZW1haWwpKTsKCQkJJGlzRXJyb3IgPSAiZXJy b3JFbGVtZW50IjsKCQl9CgoJCWVsc2UKCQl7CgkJCXByZWdfbWF0Y2goIi9AKC4rKSQvIiwg JGVtYWlsLCAkbWF0Y2gpOwoJCQkkZG9tYWluID0gJG1hdGNoWzFdOwoKCQkJaWYgKGlzX2Nh bGxhYmxlKCdjaGVja2Ruc3JyJykgYW5kIGNoZWNrZG5zcnIoJ3RleHRwYXR0ZXJuLmNvbS4n LCdBJykgYW5kICFjaGVja2Ruc3JyKCRkb21haW4uJy4nLCdNWCcpIGFuZCAhY2hlY2tkbnNy cigkZG9tYWluLicuJywnQScpKQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHpl bV9jb250YWN0X2dUeHQoJ2ludmFsaWRfaG9zdCcsIGh0bWxzcGVjaWFsY2hhcnMoJGRvbWFp bikpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoKCQkJZWxzZQoJCQl7 CgkJCQlpZiAoJHNlbmRfYXJ0aWNsZSkgewoJCQkJCSR6ZW1fY29udGFjdF9yZWNpcGllbnQg PSAkZW1haWw7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQkkemVtX2NvbnRhY3RfZnJvbSA9ICRl bWFpbDsKCQkJCX0KCQkJfQoJCX0KCX0KCglyZXR1cm4gemVtX2NvbnRhY3RfdGV4dChhcnJh eSgKCQknZGVmYXVsdCcJPT4gJGVtYWlsLAoJCSdpc0Vycm9yJwk9PiAkaXNFcnJvciwKCQkn bGFiZWwnCQk9PiAkbGFiZWwsCgkJJ21heCcJCT0+ICRtYXgsCgkJJ21pbicJCT0+ICRtaW4s CgkJJ25hbWUnCQk9PiAkbmFtZSwKCQkncmVxdWlyZWQnCT0+ICRyZXF1aXJlZCwKCQknYnJl YWsnCQk9PiAkYnJlYWssCgkJJ3NpemUnCQk9PiAkc2l6ZQoJKSk7Cn0KCmZ1bmN0aW9uIHpl bV9jb250YWN0X3NlbGVjdCgkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJvciwg JHplbV9jb250YWN0X3N1Ym1pdDsKCglleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5 KAoJCSduYW1lJwkJPT4gJycsCgkJJ2JyZWFrJwkJPT4gJyAnLAoJCSdkZWxpbWl0ZXInCT0+ ICcsJywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4 dCgnb3B0aW9uJyksCgkJJ2xpc3QnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdnZW5lcmFsX2lu cXVpcnknKSwKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ3NlbGVjdGVkJwk9PiAnJwoJKSwgJGF0 dHMpKTsKCglpZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5h bWUoJGxhYmVsKTsKCgkkbGlzdCA9IGFycmF5X21hcCgndHJpbScsIHNwbGl0KCRkZWxpbWl0 ZXIsIHByZWdfcmVwbGFjZSgnL1tcclxuXHRcc10rLycsICcgJywkbGlzdCkpKTsKCglpZiAo JHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkdmFsdWUgPSB0cmltKHBzKCRuYW1lKSk7CgoJ CWlmIChzdHJsZW4oJHZhbHVlKSkKCQl7CgkJCWlmIChpbl9hcnJheSgkdmFsdWUsICRsaXN0 KSkKCQkJewoJCQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKTsK CQkJfQoKCQkJZWxzZQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250 YWN0X2dUeHQoJ2ludmFsaWRfdmFsdWUnLCBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCksIGh0 bWxzcGVjaWFsY2hhcnMoJHZhbHVlKSk7CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQi OwoJCQl9CgkJfQoKCQllbHNlaWYgKCRyZXF1aXJlZCkKCQl7CgkJCSR6ZW1fY29udGFjdF9l cnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsIGh0bWxzcGVjaWFs Y2hhcnMoJGxhYmVsKSk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoJfQoJ ZWxzZQoJewoJCSR2YWx1ZSA9ICRzZWxlY3RlZDsKCX0KCgkkb3V0ID0gJyc7CgoJZm9yZWFj aCAoJGxpc3QgYXMgJGl0ZW0pCgl7CgkJJG91dCAuPSBuLnQuJzxvcHRpb24nLigkaXRlbSA9 PSAkdmFsdWUgPyAnIHNlbGVjdGVkPSJzZWxlY3RlZCI+JyA6ICc+JykuKHN0cmxlbigkaXRl bSkgPyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtKSA6ICcgJykuJzwvb3B0aW9uPic7Cgl9CgoJ JHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoKCXJldHVy biAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iemVtU2VsZWN0ICcuJHplbVJlcXVp cmVkLiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLiRsYWJlbC4nPC9sYWJlbD4nLiRicmVhay4K CQluLic8c2VsZWN0IGlkPSInLiRuYW1lLiciIG5hbWU9IicuJG5hbWUuJyIgY2xhc3M9Inpl bVNlbGVjdCAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nIj4nLgoJCQkkb3V0LgoJCW4uJzwv c2VsZWN0Pic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X2NoZWNrYm94KCRhdHRzKQp7Cgln bG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJh Y3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ2JyZWFrJwkJPT4gJyAnLAoJCSdjaGVj a2VkJwk9PiAwLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFj dF9nVHh0KCdjaGVja2JveCcpLAoJCSduYW1lJwkJPT4gJycsCgkJJ3JlcXVpcmVkJwk9PiAx CgkpLCAkYXR0cykpOwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3Rf bGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0KQoJewoJCSR2 YWx1ZSA9IChib29sKSBwcygkbmFtZSk7CgoJCWlmICgkcmVxdWlyZWQgYW5kICEkdmFsdWUp CgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ZpZWxk X21pc3NpbmcnLCBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkpOwoJCQkkaXNFcnJvciA9ICJl cnJvckVsZW1lbnQiOwoJCX0KCgkJZWxzZQoJCXsKCQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5h bWUsICRsYWJlbCwgJHZhbHVlID8gZ1R4dCgneWVzJykgOiBnVHh0KCdubycpKTsKCQl9Cgl9 CgoJZWxzZSB7CgkJJHZhbHVlID0gJGNoZWNrZWQ7Cgl9CgoJJHplbVJlcXVpcmVkID0gJHJl cXVpcmVkID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGlucHV0IHR5cGU9ImNo ZWNrYm94IiBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iemVtQ2hlY2tib3ggJy4kemVtUmVxdWly ZWQuJGlzRXJyb3IuJyIgbmFtZT0iJy4kbmFtZS4nIicuCgkJKCR2YWx1ZSA/ICcgY2hlY2tl ZD0iY2hlY2tlZCInIDogJycpLicgLz4nLiRicmVhay4KCQknPGxhYmVsIGZvcj0iJy4kbmFt ZS4nIiBjbGFzcz0iemVtQ2hlY2tib3ggJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRu YW1lLiciPicuJGxhYmVsLic8L2xhYmVsPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3Nl cnZlcmluZm8oJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJh Y3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ2xhYmVsJwkJPT4gJycsCgkJJ25hbWUn CQk9PiAnJwoJKSwgJGF0dHMpKTsKCglpZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9j b250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKCglpZiAoc3RybGVuKCRuYW1lKSBhbmQgJHpl bV9jb250YWN0X3N1Ym1pdCkKCXsKCQlpZiAoISRsYWJlbCkgJGxhYmVsID0gJG5hbWU7CgkJ emVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgc2VydmVyU2V0KCRuYW1lKSk7Cgl9 Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3NlY3JldCgkYXR0cywgJHRoaW5nID0gJycpCnsK CWdsb2JhbCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0 dHMoYXJyYXkoCgkJJ25hbWUnCT0+ICcnLAoJCSdsYWJlbCcJPT4gemVtX2NvbnRhY3RfZ1R4 dCgnc2VjcmV0JyksCgkJJ3ZhbHVlJwk9PiAnJwoJKSwgJGF0dHMpKTsKCgkkbmFtZSA9IHpl bV9jb250YWN0X2xhYmVsMm5hbWUoJG5hbWUgPyAkbmFtZSA6ICRsYWJlbCk7CgoJaWYgKCR6 ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJaWYgKCR0aGluZykgJHZhbHVlID0gdHJpbShwYXJz ZSgkdGhpbmcpKTsKCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUp OwoJfQoKCXJldHVybiAnJzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfcmFkaW8oJGF0dHMp CnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQsICR6 ZW1fY29udGFjdF92YWx1ZXM7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgK CQknYnJlYWsnCQk9PiAnICcsCgkJJ2NoZWNrZWQnCT0+IDAsCgkJJ2dyb3VwJwkJPT4gJycs CgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnb3B0aW9uJyksCgkJJ25hbWUnCQk9 PiAnJwoJKSwgJGF0dHMpKTsKCglzdGF0aWMgJGN1cl9uYW1lID0gJyc7CglzdGF0aWMgJGN1 cl9ncm91cCA9ICcnOwoKCWlmICghJG5hbWUgYW5kICEkZ3JvdXAgYW5kICEkY3VyX25hbWUg YW5kICEkY3VyX2dyb3VwKSB7CgkJJGN1cl9ncm91cCA9IHplbV9jb250YWN0X2dUeHQoJ3Jh ZGlvJyk7CgkJJGN1cl9uYW1lID0gJGN1cl9ncm91cDsKCX0KCWlmICgkZ3JvdXAgYW5kICEk bmFtZSBhbmQgJGdyb3VwICE9ICRjdXJfZ3JvdXApICRuYW1lID0gJGdyb3VwOwoKCWlmICgk bmFtZSkgJGN1cl9uYW1lID0gJG5hbWU7CgllbHNlICRuYW1lID0gJGN1cl9uYW1lOwoKCWlm ICgkZ3JvdXApICRjdXJfZ3JvdXAgPSAkZ3JvdXA7CgllbHNlICRncm91cCA9ICRjdXJfZ3Jv dXA7CgoJJGlkICAgPSAncScubWQ1KCRuYW1lLic9PicuJGxhYmVsKTsKCSRuYW1lID0gemVt X2NvbnRhY3RfbGFiZWwybmFtZSgkbmFtZSk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQp Cgl7CgkJJGlzX2NoZWNrZWQgPSAocHMoJG5hbWUpID09ICRpZCk7CgoJCWlmICgkaXNfY2hl Y2tlZCBvciAkY2hlY2tlZCBhbmQgIWlzc2V0KCR6ZW1fY29udGFjdF92YWx1ZXNbJG5hbWVd KSkKCQl7CgkJCXplbV9jb250YWN0X3N0b3JlKCRuYW1lLCAkZ3JvdXAsICRsYWJlbCk7CgkJ fQoJfQoKCWVsc2UKCXsKCQkkaXNfY2hlY2tlZCA9ICRjaGVja2VkOwoJfQoKCXJldHVybiAn PGlucHV0IHZhbHVlPSInLiRpZC4nIiB0eXBlPSJyYWRpbyIgaWQ9IicuJGlkLiciIGNsYXNz PSJ6ZW1SYWRpbyAnLiRuYW1lLiciIG5hbWU9IicuJG5hbWUuJyInLgoJCSggJGlzX2NoZWNr ZWQgPyAnIGNoZWNrZWQ9ImNoZWNrZWQiIC8+JyA6ICcgLz4nKS4kYnJlYWsuCgkJJzxsYWJl bCBmb3I9IicuJGlkLiciIGNsYXNzPSJ6ZW1SYWRpbyAnLiRuYW1lLiciPicuJGxhYmVsLic8 L2xhYmVsPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSgkYXR0cykK ewoJaWYgKCFpc3NldCgkX1JFUVVFU1RbJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZSddKSkg ewoJCSRsaW5rdGV4dCA9IChlbXB0eSgkYXR0c1snbGlua3RleHQnXSkpID8gemVtX2NvbnRh Y3RfZ1R4dCgnc2VuZF9hcnRpY2xlJykgOiAkYXR0c1snbGlua3RleHQnXTsKCQkkam9pbiA9 IChlbXB0eSgkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10pKSA/ICc/JyA6ICcmYW1wOyc7CgkJ JGhyZWYgPSAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXS4kam9pbi4nemVtX2NvbnRhY3Rfc2Vu ZF9hcnRpY2xlPXllcyc7CgkJcmV0dXJuICc8YSBocmVmPSInLiRocmVmLiciPicuJGxpbmt0 ZXh0Lic8L2E+JzsKCX0KCXJldHVybjsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc3VibWl0 KCRhdHRzLCAkdGhpbmcpCnsKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJ J2J1dHRvbicJPT4gMCwKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdzZW5kJykK CSksICRhdHRzKSk7CgoJaWYgKCRidXR0b24gb3Igc3RybGVuKCR0aGluZykpCgl7CgkJcmV0 dXJuICc8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9InplbVN1Ym1pdCIgbmFtZT0iemVt X2NvbnRhY3Rfc3VibWl0IiB2YWx1ZT0iJy4kbGFiZWwuJyI+Jy4oJHRoaW5nID8gdHJpbShw YXJzZSgkdGhpbmcpKSA6ICRsYWJlbCkuJzwvYnV0dG9uPic7Cgl9CgllbHNlCgl7CgkJcmV0 dXJuICc8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0iemVtU3VibWl0IiBuYW1lPSJ6ZW1f Y29udGFjdF9zdWJtaXQiIHZhbHVlPSInLiRsYWJlbC4nIiAvPic7Cgl9Cn0KCmZ1bmN0aW9u IHplbV9jb250YWN0X2xBdHRzKCRhcnIsICRhdHRzKQp7Cglmb3JlYWNoKGFycmF5KCdidXR0 b24nLCAnY29weXNlbmRlcicsICdjaGVja2VkJywgJ3JlcXVpcmVkJywgJ3NlbmRfYXJ0aWNs ZScsICdzaG93X2lucHV0JywgJ3Nob3dfZXJyb3InKSBhcyAka2V5KQoJewoJCWlmIChpc3Nl dCgkYXR0c1ska2V5XSkpCgkJewoJCQlpZiAoJGF0dHNbJGtleV0gPT0gJ3llcycpICRhdHRz WyRrZXldID0gMTsKCQkJZWxzZWlmICgkYXR0c1ska2V5XSA9PSAnbm8nKSAkYXR0c1ska2V5 XSA9IDA7CgkJCWVsc2UgJGF0dHNbJGtleV0gPSBpbnR2YWwoJGF0dHNbJGtleV0pOwoJCX0K CX0KCWlmIChpc3NldCgkYXR0c1snYnJlYWsnXSkgYW5kICRhdHRzWydicmVhayddID09ICdi cicpICRhdHRzWydicmVhayddID0gJzxiciAvPic7CglyZXR1cm4gbEF0dHMoJGFyciwgJGF0 dHMpOwp9CgpjbGFzcyB6ZW1jb250YWN0X2V2YWx1YXRpb24KewoJdmFyICRzdGF0dXM7CgoJ ZnVuY3Rpb24gemVtY29udGFjdF9ldmFsdWF0aW9uKCkgewoJCSR0aGlzLT5zdGF0dXMgPSAw OwoJfQoKCWZ1bmN0aW9uIGFkZF96ZW1jb250YWN0X3N0YXR1cygkY2hlY2spIHsKCQkkdGhp cy0+c3RhdHVzICs9ICRjaGVjazsKCX0KCglmdW5jdGlvbiBnZXRfemVtY29udGFjdF9zdGF0 dXMoKSB7CgkJcmV0dXJuICR0aGlzLT5zdGF0dXM7Cgl9Cn0KCmZ1bmN0aW9uICZnZXRfemVt Y29udGFjdF9ldmFsdWF0b3IoKQp7CglzdGF0aWMgJGluc3RhbmNlOwoKCWlmKCFpc3NldCgk aW5zdGFuY2UpKSB7CgkJJGluc3RhbmNlID0gbmV3IHplbWNvbnRhY3RfZXZhbHVhdGlvbigp OwoJfQoJcmV0dXJuICRpbnN0YW5jZTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfbGFiZWwy bmFtZSgkbGFiZWwpCnsKCSRsYWJlbCA9IHRyaW0oJGxhYmVsKTsKCWlmIChzdHJsZW4oJGxh YmVsKSA9PSAwKSByZXR1cm4gJ2ludmFsaWQnOwoJaWYgKHN0cmxlbigkbGFiZWwpIDw9IDMy IGFuZCBwcmVnX21hdGNoKCcvXlthLXpBLVpdW0EtWmEtejAtOTpfLV0qJC8nLCAkbGFiZWwp KSByZXR1cm4gJGxhYmVsOwoJZWxzZSByZXR1cm4gJ3EnLm1kNSgkbGFiZWwpOwp9CgpmdW5j dGlvbiB6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpCnsKCWdsb2Jh bCAkemVtX2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0X2xhYmVscywgJHplbV9jb250YWN0 X3ZhbHVlczsKCSR6ZW1fY29udGFjdF9mb3JtWyRsYWJlbF0gPSAkdmFsdWU7CgkkemVtX2Nv bnRhY3RfbGFiZWxzWyRuYW1lXSA9ICRsYWJlbDsKCSR6ZW1fY29udGFjdF92YWx1ZXNbJG5h bWVdID0gJHZhbHVlOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9tYWlsaGVhZGVyKCRzdHJp bmcsICR0eXBlKQp7CglnbG9iYWwgJHByZWZzOwoJaWYgKCFzdHJzdHIoJHN0cmluZywnPT8n KSBhbmQgIXByZWdfbWF0Y2goJy9bXHgwMC1ceDFGXHg3Ri1ceEZGXS8nLCAkc3RyaW5nKSkg ewoJCWlmICgicGhyYXNlIiA9PSAkdHlwZSkgewoJCQlpZiAocHJlZ19tYXRjaCgnL1tdWygp PD5ALDs6Ii5ceDVDXS8nLCAkc3RyaW5nKSkgewoJCQkJJHN0cmluZyA9ICciJy4gc3RydHIo JHN0cmluZywgYXJyYXkoIlxcIiA9PiAiXFxcXCIsICciJyA9PiAnXCInKSkgLiAnIic7CgkJ CX0KCQl9CgkJZWxzZWlmICgidGV4dCIgIT0gJHR5cGUpIHsKCQkJdHJpZ2dlcl9lcnJvcign VW5rbm93biBlbmNvZGVfbWFpbGhlYWRlciB0eXBlJywgRV9VU0VSX1dBUk5JTkcpOwoJCX0K CQlyZXR1cm4gJHN0cmluZzsKCX0KCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWlsY2hhcnNl dCddKSB7CgkJJHN0YXJ0ID0gJz0/SVNPLTg4NTktMT9CPyc7CgkJJHBjcmUgID0gJy8uezEs NDJ9L3MnOwoJfQoJZWxzZSB7CgkJJHN0YXJ0ID0gJz0/VVRGLTg/Qj8nOwoJCSRwY3JlICA9 ICcvLnsxLDQ1fSg/PVtceDAwLVx4N0ZceEMwLVx4RkZdfCQpL3MnOwoJfQoJJGVuZCA9ICc/ PSc7Cgkkc2VwID0gaXNfd2luZG93cygpID8gIlxyXG4iIDogIlxuIjsKCXByZWdfbWF0Y2hf YWxsKCRwY3JlLCAkc3RyaW5nLCAkbWF0Y2hlcyk7CglyZXR1cm4gJHN0YXJ0IC4gam9pbigk ZW5kLiRzZXAuJyAnLiRzdGFydCwgYXJyYXlfbWFwKCdiYXNlNjRfZW5jb2RlJywkbWF0Y2hl c1swXSkpIC4gJGVuZDsKfQoiO3M6MzoibWQ1IjtzOjMyOiIzZDllNWRkZmJkMjdlZmY3N2U4 MDNjYTM2MTg5ZTI0MyI7fQ==