# Name: smd_if v0.62 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjY6InNtZF9pZiI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuNjIi O3M6ODoicmV2aXNpb24iO3M6MDoiIjtzOjY6ImF1dGhvciI7czoxMToiU3RlZiBEYXdzb24i O3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS8iO3M6MTE6 ImRlc2NyaXB0aW9uIjtzOjM1OiJHZW5lcmljIG11bHRpcGxlIGlmIGNvbmRpdGlvbiB0ZXN0 cyI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NDoiaGVscCI7czoyNDA0ODoiCTxwPjxkaXYgaWQ9 InNtZF9oZWxwIj48L3A+CgoJPGgxPnNtZF9pZjwvaDE+CgoJPHA+QSByZWFsbHkgc2ltcGxl LCBnZW5lcmljICYjODIxNjtpZiBjb25kaXRpb24mIzgyMTc7IHRlc3Rlci4gQ2FuIHRlc3Qg YW55IGZpZWxkIG9yIHZhcmlhYmxlIGluIHRoZSBjdXJyZW50IGFydGljbGUsIGZpbGUgb3Ig bGluayBjb250ZXh0IGZvciBhIHZhcmlldHkgb2YgYXR0cmlidXRlcyBhbmQgdGFrZSBhY3Rp b24gaWYgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJj YXBzIj5GQUxTRTwvc3Bhbj4uPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxs aT5TdXBwb3J0cyBtb3N0IG1ham9yIGFydGljbGUsIGZpbGUgYW5kIGxpbmsgdmFyaWFibGVz IHN1Y2ggYXMgc2VjdGlvbiwgY2F0ZWdvcnksIGN1c3RvbSBmaWVsZHMsIGlkLCBxdWVyeSBz dHJpbmcsIGF1dGhvciwgYm9keSwgZXhjZXJwdCwgeWFoZGUgeWFoZGUsIHBsdXMgdXJsIHZh cnMsIHNlcnZlciB2YXJzIGFuZCBzdWItY2F0ZWdvcnkvcGFyZW50IGNoZWNraW5nPC9saT4K CQk8bGk+VGVzdHMgaW5jbHVkZSBlcXVhbGl0eSwgaW5lcXVhbGl0eSwgbGVzcyB0aGFuLCBn cmVhdGVyIHRoYW4sIGVtcHR5LCB1c2VkLCBkZWZpbmVkLCBiZWdpbnMsIGVuZHMsIGNvbnRh aW5zLCBpcyBudW1lcmljIC8gYWxwaGEgLyBhbHBoYW51bWVyaWMgLyBsb3dlcmNhc2UgLyB1 cHBlcmNhc2UsIGFtb25nIG90aGVyczwvbGk+CgkJPGxpPlRlc3RzIGZvciBtb3JlIHRoYW4g b25lIGNvbmRpdGlvbiBhdCBvbmNlIGFuZCBhcHBsaWVzIGVpdGhlciA8c3BhbiBjbGFzcz0i Y2FwcyI+QU5EPC9zcGFuPiBsb2dpYyAoYWxsIHRlc3RzIG11c3QgcGFzcykgb3IgT1IgbG9n aWMgKGFueSB0ZXN0IG11c3QgcGFzcyk8L2xpPgoJCTxsaT5VZ2x5IGFuZCB2ZXJ5IGRpcnR5 LiBVc2VzIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+JiM4MjE3O3MgPGNvZGU+ZXZh bCgpPC9jb2RlPiBjb21tYW5kIHdoaWNoIG1vc3QgcHJvZ3JhbW1lcnMgY29uY3VyIHNob3Vs ZCBiZSByZW5hbWVkIDxjb2RlPmV2aWwoKTwvY29kZT48L2xpPgoJPC91bD4KCgk8aDI+QXV0 aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZv cm0iPlN0ZWYgRGF3c29uPC9hPi4gQmFzZWQgb24gYW4gaWRlYSBicmV3aW5nIGluIHRoZSBi YWNrIG9mIG15IG1pbmQgd2hpbGUgaGFja2luZyBjaHNfaWZfdXJsdmFyLjwvcD4KCgk8aDI+ SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwPkRvd25sb2FkIHRoZSBw bHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVn aW5zLzkzMC9zbWRfaWYiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJo dHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUg Y29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0 OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0 aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhw P2lkPTI1MzU3Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0 IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5U byB1bmluc3RhbGwsIHNpbXBseSBkZWxldGUgZnJvbSB0aGUgQWRtaW4gLSZndDsgUGx1Z2lu cyBwYWdlLjwvcD4KCgk8aDI+VXNhZ2U8L2gyPgoKCTxwPlVzZSB0aGUgdGFnIGluIGFueSBw YWdlLCBmb3JtIG9yIGFydGljbGUgY29udGV4dC4gQ2FuIGFsc28gYmUgdXNlZCBpbnNpZGUg ZmlsZSBvciBsaW5rIGxpc3RzIHRvIHRha2UgYWN0aW9uIGRlcGVuZGluZyBvbiBhdHRyaWJ1 dGVzIG9mIHRoZSBjdXJyZW50IGl0ZW0uPC9wPgoKCTxoMyBjbGFzcz0idGFnIj5zbWRfaWY8 L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+QXQgdGhlIHBsYWNlIHlvdSB3aXNoIHRv IGNvbXBhcmUgYSBmaWVsZCB3aXRoIGFub3RoZXIgdmFsdWUsIHB1dCB0aGlzIHRhZyB3aXRo IGFsbCB0aHJlZSBtYW5kYXRvcnkgYXR0cmlidXRlcyAoc2hhZGVkIGJlbG93KS4gRWFjaCB0 YWtlIGEgc2VyaWVzIG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0cyAmIzgyMTI7IHRob3VnaCB0 aGUgPGEgaHJlZj0iI3BhcmFtZGVsaW0iPmNvbW1hIGlzIG92ZXJyaWRhYmxlPC9hPiB3aXRo IHRoZSBwYXJhbV9kZWxpbSBhdHRyaWJ1dGUuIElmIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBh cmlzb24gdGVzdHMgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IHRoZSBjb250 YWluZWQgYmxvY2sgd2lsbCBiZSBleGVjdXRlZC4gSWYgdGhlIHJlc3VsdCBpcyA8c3BhbiBj bGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+LCBhbnkgPGNvZGU+Jmx0O3R4cDplbHNlIC8mZ3Q7 PC9jb2RlPiB3aWxsIGJlIGV4ZWN1dGVkIGluc3RlYWQuIFdpdGhvdXQgYW55IDxjb2RlPiZs dDt0eHA6ZWxzZSAvJmd0OzwvY29kZT4gYmxvY2ssIG5vdGhpbmcgaXMgb3V0cHV0IGlmIHRo ZSByZXN1bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPi48L3A+CgoJPGg0 IGNsYXNzPSJhdHRzICIgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPmZpZWxkPC9zcGFuPiA6IHRoZSA8 YSBocmVmPSIjZmllbGQiPmZpZWxkczwvYT4gdG8gdGVzdDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSBtYW5kIj5vcGVyYXRvcjwvc3Bhbj4gOiB0aGUgPGEgaHJlZj0iI29w ZXJhdG9yIj5vcGVyYXRpb25zPC9hPiBmb3IgY29tcGFyaXNvbiB3aXRoIHRoYXQgZmllbGQg KGUuZy4gPGNvZGU+ZXE8L2NvZGU+LCA8Y29kZT5ub3Q8L2NvZGU+LCA8Y29kZT5iZWdpbnM8 L2NvZGU+LCBldGMpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPnZh bHVlPC9zcGFuPiA6IHRoZSA8YSBocmVmPSIjdmFsdWUiPnZhbHVlczwvYT4gd2l0aCB3aGlj aCB0byBjb21wYXJlIHRoZSBmaWVsZHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPmxvZ2ljPC9zcGFuPiA6IGhvdyBtdWx0aXBsZSB0ZXN0cyBhcmUgam9pbmVkOiA8c3Bh biBjbGFzcz0iY2FwcyI+QU5EPC9zcGFuPiBvciBPUi4gRGVmYXVsdCBpcyA8c3BhbiBjbGFz cz0iY2FwcyI+QU5EPC9zcGFuPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ Y2FzZV9zZW5zaXRpdmU8L3NwYW4+IDogMSA9IGNhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb247 IDAgPSBpZ25vcmUgY2FzZS4gRGVmYXVsdCBpcyAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dC1uYW1lIj5wYXJhbV9kZWxpbTwvc3Bhbj4gOiBkZWxpbWl0ZXIgdG8gdXNlIHdoZW4g c3BlY2lmeWluZyBmaWVsZCwgb3BlcmF0b3Igb3IgdmFsdWUgbGlzdHMuIERlZmF1bHQgaXMg dGhlIGNvbW1hICgsKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bW9kX2Rl bGltPC9zcGFuPiA6IGRlbGltaXRlciB0byB1c2Ugd2hlbiBzcGVjaWZ5aW5nIGZpZWxkIG9y IG9wZXJhdG9yIG1vZGlmaWVycy4gRGVmYXVsdCBpcyB0aGUgY29sb24gKDopPC9saT4KCTwv dWw+CgoJPHA+VGhlIGxpc3RzIGFyZSBwcm9jZXNzZWQgaW4gb3JkZXIsIGkuZS4gdGhlIDFz dCBmaWVsZCB1c2VzIHRoZSAxc3Qgb3BlcmF0b3IgaW4gdGhlIGxpc3QgYW5kIGNvbXBhcmVz IGl0IHRvIHRoZSAxc3QgdmFsdWU7IHRoZSAybmQgZmllbGQgdXNlcyB0aGUgMm5kIG9wZXJh dG9yIGluIHRoZSBsaXN0IGFuZCBjb21wYXJlcyBpdCB0byB0aGUgMm5kIHZhbHVlLCBhbmQg c28gb24uIFZhbHVlcyBzaG91bGQgdXN1YWxseSBiZSBzcGVjaWZpZWQgd2l0aCBwbGFjZWhv bGRlcnMgdG8gbWFpbnRhaW4gb3JkZXI6IGUuZy4gPGNvZGU+dmFsdWU9JnF1b3Q7LCA0LCwg dG9wJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5Ob3RlIHRoYXQsIGFsdGhvdWdoIHRoZSBmaXJz dCB0aHJlZSBhdHRyaWJ1dGVzIGFyZSBjb25zaWRlcmVkIG1hbmRhdG9yeSwgaWYgeW91IGhh cHBlbiB0byByZXF1aXJlIHRoZSBkZWZhdWx0IG9wZXJhdG9yIGZvciBhbGwgeW91ciB0ZXN0 cywgeW91IGNhbiBzYWZlbHkgb21pdCA8Y29kZT5vcGVyYXRvcjwvY29kZT4uIFNpbWlsYXJs eSB3aXRoIHZhbHVlczogaWYgeW91IGFyZSBlbnRpcmVseSB0ZXN0aW5nIHRoZSBleGlzdGVu Y2Ugb3IgdHlwZSBvZiB2YXJpYWJsZXMsIHlvdSBjYW4gb21pdCB0aGUgPGNvZGU+dmFsdWU8 L2NvZGU+IHBhcmFtZXRlciBpZiB5b3Ugd2lzaC48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFt ZSAiIGlkPSJmaWVsZCI+ZmllbGQ8L2g0PgoKCTxwPkxpc3Qgb2YgZmllbGQgbG9jYXRpb25z IHRvIGxvb2sgYXQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cgk8dWw+CgkJPGxpPjxjb2RlPnNl Y3Rpb248L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+Y2F0ZWdvcnk8L2NvZGU+IChvciA8Y29k ZT5jYXRlZ29yeTE8L2NvZGU+LCBvciA8Y29kZT5jYXRlZ29yeTI8L2NvZGU+IGlmIG9uIGFu IGFydGljbGUgcGFnZSk8L2xpPgoJCTxsaT48Y29kZT5hdXRob3JpZDwvY29kZT4gb3IgPGNv ZGU+YXV0aG9yPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPmlkPC9jb2RlPiAoZmlsZS9saW5r L2FydGljbGUgSUQpPC9saT4KCQk8bGk+PGNvZGU+cXVlcnk8L2NvZGU+ICh0aGUgcXVlcnkg c3RyaW5nIGZyb20gdGhlIHNlYXJjaCBmb3JtKTwvbGk+CgkJPGxpPjxjb2RlPnBnPC9jb2Rl PiAodGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgaW4gbGlzdHMpPC9saT4KCQk8bGk+PGNvZGU+ bW9udGg8L2NvZGU+IChjdXJyZW50IG1vbnRoIGZpZWxkIGZyb20gdGhlIGFkZHJlc3MgYmFy KTwvbGk+CgkJPGxpPjxjb2RlPnN0YXR1czwvY29kZT4gKGRvY3VtZW50IHN0YXR1czogMjAw LCA0MDQsIDQwMywgZXRjKTwvbGk+CgkJPGxpPjxjb2RlPnBhZ2U8L2NvZGU+ICh0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gUGFnZSB0ZW1wbGF0ZSB1c2VkIGJ5IHRoaXMg c2VjdGlvbik8L2xpPgoJCTxsaT48Y29kZT5uZXh0X2lkPC9jb2RlPiAvIDxjb2RlPnByZXZf aWQ8L2NvZGU+IChJRCBvZiBuZXh0L3ByZXYgZG9jdW1lbnQgaWYgb24gYXJ0aWNsZSBwYWdl KTwvbGk+CgkJPGxpPjxjb2RlPm5leHRfdGl0bGU8L2NvZGU+IC8gPGNvZGU+cHJldl90aXRs ZTwvY29kZT4oVGl0bGUgb2YgbmV4dC9wcmV2IGRvY3VtZW50IGlmIG9uIGFydGljbGUgcGFn ZSk8L2xpPgoJCTxsaT48Y29kZT5uZXh0X3V0aXRsZTwvY29kZT4gLyA8Y29kZT5wcmV2X3V0 aXRsZTwvY29kZT4gKHVybC10aXRsZSBvZiBuZXh0L3ByZXYgZG9jdW1lbnQgaWYgb24gYXJ0 aWNsZSBwYWdlKTwvbGk+CgkJPGxpPjxjb2RlPnBlcm1saW5rX21vZGU8L2NvZGU+ICh0YWtl IGFjdGlvbiBiYXNlZCBvbiBvbmUgb2YgdGhlIG1lc3N5L2NsZWFuIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IHNjaGVtZXMpPC9saT4KCQk8bGk+PGNvZGU+b3RoZXIgYXJ0aWNs ZS9maWxlL2xpbmsgZmllbGQ8L2NvZGU+IChlLmcuIGJvZHksIGV4Y2VycHQsIGFydGljbGVf aW1hZ2UsIGtleXdvcmRzLCBsaW5rYW5tZSwgZmlsZW5hbWUsIGRvd25sb2FkcywgJiM4MjMw Oyk8L2xpPgoJCTxsaT48Y29kZT5teV9jdXN0b21fZmllbGRfbmFtZTwvY29kZT4gKGFueSBj dXN0b20gZmllbGRzIHlvdSBoYXZlIGRlZmluZWQpPC9saT4KCQk8bGk+PGNvZGU+dXJsdmFy Om15X3ZhcmlhYmxlX25hbWU8L2NvZGU+IChhbnkgdmFyaWFibGUgaW4gdGhlIGFkZHJlc3Mg YmFyIGFmdGVyIHRoZSA8Y29kZT4/PC9jb2RlPik8L2xpPgoJCTxsaT48Y29kZT5zdnJ2YXI6 bXlfdmFyaWFibGVfbmFtZTwvY29kZT4gKGFueSBzZXJ2ZXIgdmFyaWFibGUsIGUuZy4gPHNw YW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdFTlQpPC9saT4KCQk8bGk+PGNv ZGU+cGFyZW50Om9wdGlvbmFsX21vZGlmaWVyczwvY29kZT4gKHdoZXRoZXIgdGhlIGdpdmVu IGNhdGVnb3J5IGlzIGEgZGVzY2VuZGVudCBvZiBhbm90aGVyIGNhdGVnb3J5KTwvbGk+CgkJ PGxpPjxjb2RlPk5VTEw8L2NvZGU+ICh1c2VmdWwgd2hlbiBjb21wYXJpbmcgYXJiaXRyYXJ5 IHZhbHVlcyBmb3IgZW1wdGluZXNzKTwvbGk+Cgk8L3VsPjwvcD4KCgk8cD5JZiB5b3Ugc3Bl Y2lmeSBhIGZpZWxkIG5hbWUgdGhhdCBkb2VzIG5vdCBleGlzdCwgdGhlIHRleHQgeW91IHVz ZSB3aWxsIGJlIHRha2VuIHZlcmJhdGltIGluIG1vc3QgY2FzZXMuPC9wPgoKCTxwPlRoZSBz cGVjaWFsIGZpZWxkIDxjb2RlPnBhcmVudDwvY29kZT4gY2hlY2tzIHRoZSBwYXJlbnQgY2F0 ZWdvcnkgZm9yIGEgbWF0Y2guIFVubGlrZSB0aGUgb3RoZXIgZmllbGQgdHlwZXMsIHRoZSBk ZWZhdWx0IDxhIGhyZWY9IiNvcGVyYXRvciI+b3BlcmF0b3I8L2E+IGZvciBwYXJlbnQgaXMg JiM4MjE2O2NvbnRhaW5zJiM4MjE3Oy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBlbnRpcmUgdHJl ZSBpcyBjaGVja2VkIGZvciBhIG1hdGNoLCBzdGFydGluZyBmcm9tIHRoZSB0b3Agb2YgdGhl IHRyZWUgZG93biB0byB0aGUgY3VycmVudCBjYXRlZ29yeS4gSW50ZXJuYWxseSwgdGhlIHBs dWdpbiBtYWtlcyB1cCBhICYjODIyMDticmVhZGNydW1iIHRyYWlsJiM4MjIxOyBvZiBjYXRl Z29yaWVzIGluIHRoZSBjdXJyZW50IGJyYW5jaCwgZWFjaCBzZXBhcmF0ZWQgYnkgYSBzcGFj ZSwgc28gdGVzdGluZyBmb3IgZXF1YWxpdHkgd291bGQgcmVxdWlyZSBwdXR0aW5nIHRoZW0g YWxsIGluIHRoZSA8YSBocmVmPSIjdmFsdWUiPnZhbHVlPC9hPiBwYXJhbWV0ZXIuPC9wPgoK CTxwPllvdSBhcmUgb2YgY291cnNlIGZyZWUgdG8gY2hvb3NlIGFuIGFsdGVybmF0aXZlIG9w ZXJhdG9yOyA8Y29kZT5iZWdpbnM8L2NvZGU+IGlzIHZlcnkgdXNlZnVsIGZvciB0ZXN0aW5n IGlmIHRoZSB0b3AgbGV2ZWwgY2F0ZWdvcnkgbWF0Y2hlcyB0aGUgb25lIGdpdmVuIGluIHRo ZSA8Y29kZT52YWx1ZTwvY29kZT4gZmllbGQuPC9wPgoKCTxwPklmIHlvdSB1c2UgPGNvZGU+ cGFyZW50OkxWTG48L2NvZGU+LCB0aGUgY29tcGFyaXNvbiB3aWxsIGJlIHJlc3RyaWN0ZWQg dG8gdGhhdCAmIzgyMjA7bGV2ZWwmIzgyMjE7IG9mIHN1Yi1jYXRlZ29yeTsgTFZMMSBpcyB0 aGUgJiM4MjIwO3RvcCYjODIyMTsgbGV2ZWwsIExWTDIgaXMgdGhlIG5leHQgc3ViLWNhdGVn b3J5IGxldmVsLCBhbmQgc28gb24uIFdoZW4gdXNpbmcgdGhlc2UgbW9kaWZpZXJzLCB0aGUg JiM4MjE2O2VxJiM4MjE3OyBvcGVyYXRvciBiZWNvbWVzIG1vcmUgdXNlZnVsIGJlY2F1c2Ug eW91IGFyZSBjb21wYXJpbmcgYSBzaW5nbGUgcGFyZW50IGNhdGVnb3J5LjwvcD4KCgk8cD5X aGVuIHVzaW5nIGFydGljbGVzLCB5b3UgY2FuIGZ1cnRoZXIgbW9kaWZ5IHRoZSBiZWhhdmlv dXIgb2YgdGhlIHBhcmVudCB1c2luZyB0aGUgPGNvZGU+Q0FUbjwvY29kZT4gc3ludGF4ICh3 aGVyZSAmIzgyMTY7biYjODIxNzsgaXMgMSBvciAyKS4gU3BlY2lmeWluZyAmIzgyMjA7cGFy ZW50JiM4MjIxOyB3aXRob3V0IDxjb2RlPkNBVG48L2NvZGU+IHdpbGwgdXNlIHRoZSBnbG9i YWwgY2F0ZWdvcnkgKDxjb2RlPj9jPTwvY29kZT4pLiBJZiB5b3UgYWRkIDxjb2RlPjpDQVRu PC9jb2RlPiBpdCB3aWxsIGluc3RlYWQgY29tcGFyZSB0aGUgYXJ0aWNsZSYjODIxNztzIGNh dGVnb3J5MSBvciBjYXRlZ29yeTIgcmVzcGVjdGl2ZWx5LjwvcD4KCgk8cD5Zb3UgY2FuIHVz ZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q0FUPC9zcGFuPiBhbmQgPHNwYW4gY2xhc3M9ImNhcHMi PkxWTDwvc3Bhbj4gaW4gY29tYmluYXRpb24sIGluZGVwZW5kZW50bHkgb3Igbm90IGF0IGFs bC4gVGhpcyBhbGxvd3MgY29tcGFyaXNvbnMgc3VjaCBhcyAmIzgyMjA7aWYgdGhlIDJuZCBz dWItY2F0ZWdvcnkgb2YgY2F0ZWdvcnkxIGVxdWFscyBibGFoYmxhaCYjODIyMTsgb3IgJiM4 MjIwO2lmIGNhdGVnb3J5MiBpcyBhIGNoaWxkIG9mIGJsYWhibGFoJiM4MjIxOy4gU2VlIDxh IGhyZWY9IiNlZzQiPkV4YW1wbGUgNDwvYT4uPC9wPgoKCTxwPk9uZSBvdGhlciBzcGVjaWFs IGZpZWxkIGlzIDxjb2RlPk5VTEw8L2NvZGU+LiBUaGlzIGlzIGV4YWN0bHkgd2hhdCBpdCBz YXlzIGl0IGlzOiBlbXB0eS4gVGhlIHJlYXNvbiBmb3IgaXRzIGluY2x1c2lvbiBpcyB0aGF0 IHNvbWV0aW1lcyB5b3Ugd2lzaCB0byB0ZXN0IHNvbWV0aGluZyB0aGF0IGlzbiYjODIxNzt0 IGEgdHJ1ZSB2YXJpYWJsZSAmIzgyMTI7IGUuZy4gYSByZXBsYWNlbWVudCB2YXJpYWJsZSBm cm9tIHNtZF92YXJzIG9yIHNtZF9lYWNoICYjODIxMjsgdG8gc2VlIGlmIGl0JiM4MjE3O3Mg ZW1wdHkgb3Igbm90LjwvcD4KCgk8cD5JZiB5b3Ugd2VyZSB0byBwdXQgdGhpczo8L3A+CgoJ PHA+PGNvZGU+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7e3Jlc3VsdH0mcXVvdDsgb3Bl cmF0b3I9JnF1b3Q7aXNlbXB0eSZxdW90OyZndDs8L2NvZGU+PC9wPgoKCTxwPnlvdSB3b3Vs ZCBub3QgZ2V0IHRoZSByZXN1bHQgeW91IGV4cGVjdCAoaXQmIzgyMTc7cyBwcmV0dHkgZXNv dGVyaWMgYnV0IGl0IHJldm9sdmVzIGFyb3VuZCB0aGUgZmFjdCB0aGF0IDxjb2RlPiZxdW90 OyZxdW90OzwvY29kZT4gKGFzIGEgdmFyaWFibGUgbmFtZSkgaXMgbm90IGVtcHR5LCBpdCYj ODIxNztzIGludmFsaWQpLiBUbyBnZXQgcm91bmQgdGhpcyB5b3UgbWF5IHVzZSA8c3BhbiBj bGFzcz0iY2FwcyI+TlVMTDwvc3Bhbj4gYXMgYSBwbGFjZWhvbGRlciBhbmQgbW92ZSB0aGUg dGhpbmcgeW91IHdhbnQgdG8gY2hlY2sgaW50byB0aGUgPGNvZGU+dmFsdWU8L2NvZGU+IGlu c3RlYWQsIGUuZzo8L3A+CgoJPHA+PGNvZGU+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7 TlVMTCZxdW90OyBvcGVyYXRvcj0mcXVvdDtlcSZxdW90OyB2YWx1ZT0mcXVvdDt7cmVzdWx0 fSZxdW90OyZndDs8L2NvZGU+PC9wPgoKCTxwPndpbGwgdGVzdCB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPk5VTEw8L3NwYW4+IG9iamVjdCAoaS5lLiAmIzgyMTY7ZW1wdGluZXNzJiM4MjE3 OykgdG8gc2VlIGlmIGl0JiM4MjE3O3MgZXF1YWwgdG8gdGhlIDxjb2RlPntyZXN1bHR9PC9j b2RlPiByZXBsYWNlbWVudCB2YXJpYWJsZS48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAi IGlkPSJvcGVyYXRvciI+b3BlcmF0b3I8L2g0PgoKCTxwPkxpc3Qgb2Ygb3BlcmF0b3JzIHRv IGFwcGx5LCBpbiBvcmRlciwgdG8gZWFjaCBmaWVsZC4gQ2hvb3NlIGZyb206PC9wPgoKCTx1 bD4KCQk8bGk+PGNvZGU+ZXE8L2NvZGU+IEVxdWFsICh0aGUgZGVmYXVsdCBmb3IgYWxsIGV4 Y2VwdCAmIzgyMTY7cGFyZW50JiM4MjE3Oyk8L2xpPgoJCTxsaT48Y29kZT5ub3Q8L2NvZGU+ IE5vdCBlcXVhbDwvbGk+CgkJPGxpPjxjb2RlPmx0PC9jb2RlPiBMZXNzIHRoYW48L2xpPgoJ CTxsaT48Y29kZT5ndDwvY29kZT4gR3JlYXRlciB0aGFuPC9saT4KCQk8bGk+PGNvZGU+bGU8 L2NvZGU+IExlc3MgdGhhbiBvciBlcXVhbCB0bzwvbGk+CgkJPGxpPjxjb2RlPmdlPC9jb2Rl PiBHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG88L2xpPgoJCTxsaT48Y29kZT5iZWdpbnM8L2Nv ZGU+IFZhcmlhYmxlIGJlZ2lucyB3aXRoIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVyczwvbGk+ CgkJPGxpPjxjb2RlPmNvbnRhaW5zPC9jb2RlPiBWYXJpYWJsZSBjb250YWlucyBhIHNlcXVl bmNlIG9mIGNoYXJhY3RlcnMgKGRlZmF1bHQgZm9yICYjODIxNjtwYXJlbnQmIzgyMTc7KTwv bGk+CgkJPGxpPjxjb2RlPmVuZHM8L2NvZGU+IFZhcmlhYmxlIGVuZHMgd2l0aCBhIHNlcXVl bmNlIG9mIGNoYXJhY3RlcnM8L2xpPgoJCTxsaT48Y29kZT5pc2VtcHR5PC9jb2RlPiBWYXJp YWJsZSBpcyBlbXB0eSAoY29udGFpbnMgbm90aGluZyk8L2xpPgoJCTxsaT48Y29kZT5pc3Vz ZWQ8L2NvZGU+IFZhcmlhYmxlIGhhcyBzb21lIHZhbHVlPC9saT4KCQk8bGk+PGNvZGU+ZGVm aW5lZDwvY29kZT4gVmFyaWFibGUgaXMgc2V0ICh1c2VmdWwgd2l0aCB1cmx2YXIgdmFyaWFi bGVzKTwvbGk+CgkJPGxpPjxjb2RlPnVuZGVmaW5lZDwvY29kZT4gVmFyaWFibGUgaXMgbm90 IHNldCwgb3IgbWlzc2luZyBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBsaW5lPC9saT4KCQk8bGk+PGNvZGU+aXNudW08L2NvZGU+IFZhcmlhYmxlIGlzIGEgbnVt YmVyPC9saT4KCQk8bGk+PGNvZGU+aXNhbHBoYTwvY29kZT4gVmFyaWFibGUgY29udGFpbnMg Y2hhcmFjdGVycyBvbmx5PC9saT4KCQk8bGk+PGNvZGU+aXNhbG51bTwvY29kZT4gVmFyaWFi bGUgY29udGFpbnMgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb25seTwvbGk+CgkJPGxpPjxj b2RlPmlzbG93ZXI8L2NvZGU+IEV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgdmFyaWFibGUgaXMg bG93ZXIgY2FzZTwvbGk+CgkJPGxpPjxjb2RlPmlzdXBwZXI8L2NvZGU+IEV2ZXJ5IGNoYXJh Y3RlciBpbiB0aGUgdmFyaWFibGUgaXMgdXBwZXIgY2FzZTwvbGk+CgkJPGxpPjxjb2RlPmlz cHVuY3Q8L2NvZGU+IEV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgdmFyaWFibGUgaXMgc29tZSBw dW5jdHVhdGlvbiBtYXJrPC9saT4KCQk8bGk+PGNvZGU+aXNzcGFjZTwvY29kZT4gRXZlcnkg Y2hhcmFjdGVyIGluIHRoZSB2YXJpYWJsZSBpcyBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIChv ciB0YWIsIG5ld2xpbmUsIGV0Yyk8L2xpPgoJPC91bD4KCgk8cD5XaXRoIHRoZSBjb21wYXJp c29uIG9wZXJhdG9ycyAoZ3QsIGx0LCBnZSwgbGUpIHlvdSBtYXkgZmluZCBvZGQgYmVoYXZp b3VyIHdoZW4gY29tcGFyaW5nIG51bWJlcnMuIEZvciBleGFtcGxlLCA8Y29kZT51cmx2YXI6 cGljIGd0IDY8L2NvZGU+IHdpbGwgcmV0dXJuIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9z cGFuPiBpZiB0aGUgPGNvZGU+cGljPC9jb2RlPiB2YXJpYWJsZSBpcyBzZXQgdG8gJiM4MjIw O2ZyZWQmIzgyMjE7LiBUaGlzIGlzIGJlY2F1c2UgdGhlIHdvcmQgJiM4MjIwO2ZyZWQmIzgy MjE7IChvciBhdCBsZWFzdCB0aGUgJiM4MjIwO2NoYXJhY3RlciBmJiM4MjIxOykgaXMgZ3Jl YXRlciBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkFTQ0lJPC9zcGFuPiB0YWJsZSB0aGFu IHRoZSAmIzgyMjA7Y2hhcmFjdGVyIDYmIzgyMjE7LjwvcD4KCgk8cD5UbyBjaXJjdW12ZW50 IHRoaXMgcHJvYmxlbSwgeW91IG1heSBhcHBlbmQgPGNvZGU+Ok5VTTwvY29kZT4gdG8gdGhl IGVuZCBvZiBhbnkgb2YgdGhlc2UgNCBvcGVyYXRvcnMgdG8gZm9yY2UgdGhlIHBsdWdpbiB0 byBjaGVjayB0aGF0IHRoZSB2YWx1ZXMgYXJlIGludGVnZXJzLjwvcD4KCgk8cD5Bbnkgb2Yg dGhlIDxjb2RlPmlzPC9jb2RlPiBvcGVyYXRvcnMgKGV4Y2VwdCA8Y29kZT5pc3NwYWNlPC9j b2RlPikgY2FuIHRha2UgYW4gZXh0cmEgcGFyYW1ldGVyIGFzIHdlbGwuIFNpbmNlIHRoZXkg Y29tcGFyZSBldmVyeSBjaGFyYWN0ZXIgYWdhaW5zdCB0aGUgZ2l2ZW4gYmVoYXZpb3VyLCBz cGFjZSBjaGFyYWN0ZXJzIGNhbiBtZXNzIHRoaW5ncyB1cCBhIGJpdC4gRm9yIGV4YW1wbGUg PGNvZGU+Y3VzdG9tMSBpc2xvd2VyPC9jb2RlPiB3aWxsIGZhaWwgaWYgY3VzdG9tMSBjb250 YWlucyAmIzgyMjA7dGhpcyBpcyBhIHRlc3QmIzgyMjE7LiBUbyBjaXJjdW12ZW50IHRoaXMs IGFkZCA8Y29kZT46Tk9TUEFDRTwvY29kZT4gdG8gdGhlIG9wZXJhdG9yIHdoaWNoIHdpbGwg cmVtb3ZlIGFsbCBzcGFjZXMgZnJvbSB0aGUgc3RyaW5nIGJlZm9yZSB0ZXN0aW5nIGl0Ljwv cD4KCgk8cD5Ob3RlIGFsc28gdGhhdCB3aGlsZSA8Y29kZT5kZWZpbmVkPC9jb2RlPiBhbmQg PGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBkaWZmZXIgc2VtYW50aWNhbGx5IGZyb20gPGNvZGU+ aXN1c2VkPC9jb2RlPiBhbmQgPGNvZGU+aXNlbXB0eTwvY29kZT4gKHJlc3BlY3RpdmVseSks IHRoZSB3YXkgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gYXNzaWducyB2YXJpYWJs ZXMgbWVhbnMgdGhhdCwgZm9yIHRoZSBtb3N0IHBhcnQsIHRoZSB0ZXJtcyBhcmUgaW50ZXJj aGFuZ2VhYmxlLiBXaGVuIGRlYWxpbmcgd2l0aCB1cmx2YXJzIGFuZCBzdnJ2YXJzLCB0aGUg dHdvIHNldHMgb2Ygb3BlcmF0b3JzIGJlaGF2ZSBpbmRlcGVuZGVudGx5LCBhcyB5b3Ugd291 bGQgZXhwZWN0LiBTZWUgPGEgaHJlZj0iI2VnNSI+RXhhbXBsZSA1PC9hPiBmb3IgbW9yZS4g TmVpdGhlciA8Y29kZT5kZWZpbmVkPC9jb2RlPiBub3IgPGNvZGU+dW5kZWZpbmVkPC9jb2Rl PiBtYWtlIHNlbnNlIHdpdGggPGNvZGU+cGFyZW50PC9jb2RlPiwgc28gdGhleSBhcmUgZm9y YmlkZGVuLjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9InZhbHVlIj52YWx1ZTwv aDQ+CgoJPHA+TGlzdCBvZiB2YWx1ZXMgdG8gY29tcGFyZSBlYWNoIGZpZWxkIGluIHR1cm4g dG8uIENhbiBiZSBzdGF0aWMgdmFsdWVzL3RleHQgb3IgdGhlIG5hbWUgb2YgYW55IDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkLCBsaWtlIHRob3NlIGdpdmVuIGluIDxh IGhyZWY9IiNmaWVsZCI+ZmllbGQ8L2E+IChleGNlcHQgJiM4MjIwO3BhcmVudCYjODIyMTsp LjwvcD4KCgk8cD5UbyBkaXN0aW5ndWlzaCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IGZpZWxkIGZyb20gc3RhdGljIHRleHQsIHByZWZpeCB0aGUgZmllbGQgbmFtZSB3aXRo IDxjb2RlPj88L2NvZGU+LiBGb3IgZXhhbXBsZTogPGNvZGU+dmFsdWU9JnF1b3Q7dGl0bGUm cXVvdDs8L2NvZGU+IHdpbGwgY29tcGFyZSB5b3VyIGNob3NlbiBmaWVsZCBhZ2FpbnN0IHRo ZSB3b3JkICYjODIyMDt0aXRsZSYjODIyMTssIHdoZXJlYXMgPGNvZGU+dmFsdWU9JnF1b3Q7 P3RpdGxlJnF1b3Q7PC9jb2RlPiB3aWxsIGNvbXBhcmUgeW91ciBmaWVsZCBhZ2FpbnN0IHRo ZSBjdXJyZW50IGFydGljbGUmIzgyMTc7cyB0aXRsZS48L3A+CgoJPHA+Tm90ZSB0aGF0IHlv dSBtYXkgZmluZCB1c2luZyBkb3VibGUtcXVvdGVzIGluIGZpZWxkcyBnaXZlcyB1bmV4cGVj dGVkIHJlc3VsdHMuIFRoZXkgYXJlIGJlc3QgYXZvaWRlZCwgb3Igd29ya2VkIGFyb3VuZCBi eSB1c2luZyA8Y29kZT5jb250YWluczwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT5lcTwvY29k ZT4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0ibG9naWMiPmxvZ2ljPC9oND4K Cgk8cD5DYW4gYmUgb25lIG9mIDxjb2RlPmFuZDwvY29kZT4gKHRoZSBkZWZhdWx0KSBvciA8 Y29kZT5vcjwvY29kZT4uIElmIHVzaW5nIDxjb2RlPmFuZDwvY29kZT4sIGFsbCBjb25kaXRp b25zIG11c3QgYmUgbWV0IGZvciBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiBy ZXN1bHQuIElmIHVzaW5nIDxjb2RlPm9yPC9jb2RlPiwgYW55IG9mIHRoZSBjb25kaXRpb25z IHRoYXQgbWF0Y2ggd2lsbCBnaXZlIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+ IHJlc3VsdC48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJjYXNlc2Vuc2UiPmNh c2Vfc2Vuc2l0aXZlPC9oND4KCgk8cD5CeSBkZWZhdWx0LCBhbGwgY29tcGFyaXNvbnMgYXJl IGNhc2UtaW5zZW5zaXRpdmUgKDApLiBJZiB5b3Ugd2lzaCB0byBtYWtlIHRoZW0gc2Vuc2l0 aXZlIHRvIGNhcHRpbGlzYXRpb24sIHNwZWNpZnkgPGNvZGU+Y2FzZV9zZW5zaXRpdmU9JnF1 b3Q7MSZxdW90OzwvY29kZT4uIE5vdGUgdGhhdCBpZiB1c2luZyA8Y29kZT5pc2xvd2VyPC9j b2RlPiBvciA8Y29kZT5pc3VwcGVyPC9jb2RlPiBpbiBhIGNvbXBhcmlzb24sIGNhc2Ugc2Vu c2l0aXZpdHkgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHN3aXRjaGVkIG9uIHdoaWxlIHRoZSB0 ZXN0IGlzIHRha2luZyBwbGFjZS48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJw YXJhbWRlbGltIj5wYXJhbV9kZWxpbTwvaDQ+CgoJPHA+WW91IG5vcm1hbGx5IHNwZWNpZnkg Y29tbWEtc2VwYXJhdGVkIGxpc3RzIHRvIHRoZSA8Y29kZT5maWVsZDwvY29kZT4sIDxjb2Rl Pm9wZXJhdG9yPC9jb2RlPiBhbmQgPGNvZGU+dmFsdWU8L2NvZGU+IHBhcmFtZXRlcnMuIFNv bWV0aW1lcyB0aGlzIG1pZ2h0IG5vdCBiZSBkZXNpcmFibGUgaWYgeW91IGhhdmUgdXNlZCB0 aGF0IGNoYXJhY3RlciBpbiB0aGUgbmFtZSBvZiBhIGN1c3RvbSBmaWVsZCwgZm9yIGV4YW1w bGUuIFRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBkZWxpbWl0ZXIgdG8g YWxtb3N0IGFueXRoaW5nIHlvdSBsaWtlLCBlLmcuIHNwZWNpZnlpbmcgPGNvZGU+cGFyYW1f ZGVsaW09JnF1b3Q7Ly8mcXVvdDs8L2NvZGU+IG1lYW5zIHlvdSB3b3VsZCBzcGVjaWZ5IDxl bT5hbGw8L2VtPiB5b3VyIHBhcmFtZXRlciBsaXN0cyBsaWtlIHRoaXM6PC9wPgoKCTxwPjxj b2RlPmZpZWxkPSZxdW90O3NlY3Rpb24gLy8gdXJsdmFyOnR5cGUmcXVvdDsgb3BlcmF0b3I9 JnF1b3Q7ZXEgLy8gYmVnaW5zJnF1b3Q7IHZhbHVlPSZxdW90O2FuaW1hbHMgLy8gdGlnZXIm cXVvdDs8L2NvZGU+PC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0ibW9kZGVsaW0i Pm1vZF9kZWxpbTwvaDQ+CgoJPHA+VmVyeSBzaW1pbGFyIHRvIDxhIGhyZWY9IiNwYXJhbWRl bGltIj5wYXJhbV9kZWxpbTwvYT4sIHRoaXMgZ292ZXJucyB0aGUgZGVsaW1pdGVyIHRvIHVz ZSBiZXR3ZWVuIGFuIG9wdGlvbiBhbmQgaXRzIG1vZGlmaWVyIChlLmcuIHRoZSB0aGluZyBz ZXBhcmF0aW5nIHVybHZhciBvciBzdnJ2YXIgZnJvbSB0aGUgdmFyaWFibGUgbmFtZSwgb3Ig cGFyZW50IGZyb20gPGNvZGU+TFZMPC9jb2RlPiBhbmQgPGNvZGU+Q0FUPC9jb2RlPiwgYW5k IGFsc28gdGhlIGNoYXJhY3RlcihzKSB0aGF0IHNlcGFyYXRlIGFuIG9wZXJhdG9yIGZyb20g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5OVU08L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBz Ij5OT1NQQUNFPC9zcGFuPiBtb2RpZmllcnMpLiBJdCBpcyB0aGUgY29sb24gKDopIGJ5IGRl ZmF1bHQuPC9wPgoKCTxwPk5vdGUgdGhhdCBpbiBib3RoICYjODIxNjtkZWxpbSYjODIxNzsg YXR0cmlidXRlcywgc29tZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIG1heSBjYXVzZSBwcm9ibGVt cyAocXVvdGVzICYjODIxMjsgc2luZ2xlIG9yIGRvdWJsZSAmIzgyMTI7IHNwcmluZyB0byBt aW5kOyBvdGhlcnMgbGlrZSBwYXJlbnRoZXNlcyBtYXkgYWxzbyBjYXVzZSB0aGUgcGx1Z2lu IHRvIGV4cGxvZGUpLjwvcD4KCgk8aDI+RXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0iZWcxIj5F eGFtcGxlIDE8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7c2VjdGlvbiwgaWQmcXVvdDsKICAgICBvcGVy YXRvcj0mcXVvdDtiZWdpbnMsIGd0JnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7bGlvbiwgMTIm cXVvdDsmZ3Q7CiAmbHQ7dHhwOmFydGljbGUgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAm bHQ7cCZndDtOb3QgdG9kYXksIHRoYW5rcyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hlY2tzIGlmIHRoZSBjdXJyZW50IHNlY3Rpb24gbmFt ZSBiZWdpbnMgd2l0aCB0aGUgd29yZCAmIzgyMjA7bGlvbiYjODIyMTsgYW5kIHRoZSBhcnRp Y2xlIElEIGlzIGdyZWF0ZXIgdGhhbiAxMi4gRGlzcGxheXMgdGhlIGFydGljbGUgaWYgYm90 aCBjb25kaXRpb25zIGFyZSBtZXQgb3IgZGlzcGxheXMgdGhlIHRleHQgJiM4MjIwO05vdCB0 b2RheSwgdGhhbmtzJiM4MjIxOyBpZiBub3QuPC9wPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxl IDI8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfaWYgZmllbGQ9JnF1b3Q7c3VtbWFyeSwgY2F0ZWdvcnksIHVybHZhcjpwaWMmcXVv dDsKICAgICBvcGVyYXRvcj0mcXVvdDtpc3VzZWQsIGVxLCBpc251bSZxdW90OwogICAgIHZh bHVlPSZxdW90OywgYW5pbWFsICwmcXVvdDsgJmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7 CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3Am Z3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoZWNrcyBpZiB0 aGUgY3VzdG9tIGZpZWxkIGxhYmVsbGVkICYjODIyMDtzdW1tYXJ5JiM4MjIxOyBoYXMgc29t ZSBkYXRhIGluIGl0LCBjaGVja3MgaWYgdGhlIGdsb2JhbCBjYXRlZ29yeSBlcXVhbHMgJiM4 MjIwO2FuaW1hbCYjODIyMTsgYW5kIHRlc3RzIGlmIHRoZSB1cmx2YXIgPGNvZGU+cGljPC9j b2RlPiBpcyBudW1lcmljIChlLmcuIDxjb2RlPj9waWM9NTwvY29kZT4pLjwvcD4KCgk8cD5J ZiBhbGwgdGhlc2UgY29uZGl0aW9ucyBhcmUgbWV0IHRoZSBhcnRpY2xlIGlzIGRpc3BsYXll ZCwgZWxzZSB0aGUgbWVzc2FnZSBpcyBzaG93bi4gTm90ZSB0aGF0IDxjb2RlPmlzdXNlZDwv Y29kZT4gYW5kIDxjb2RlPmlzbnVtPC9jb2RlPiBkb24mIzgyMTc7dCB0YWtlIGFyZ3VtZW50 cyBmb3IgPGNvZGU+dmFsdWU8L2NvZGU+IGFuZCB0aGVpciBwb3NpdGlvbnMgYXJlIGhlbGQg YnkgZW1wdHkgY29tbWFzICh0ZWNobmljYWxseSB0aGUgbGFzdCBjb21tYSBpc24mIzgyMTc7 dCBuZWVkZWQgYnV0IGl0IGhlbHBzIGtlZXAgZXZlcnl0aGluZyBuZWF0IGlmIHlvdSBhZGQg ZnVydGhlciB0ZXN0cyBsYXRlciBvbikuPC9wPgoKCTxoMyBpZD0iZWczIj5FeGFtcGxlIDM8 L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpz bWRfaWYgZmllbGQ9JnF1b3Q7YXJ0aWNsZV9pbWFnZSwgc3ZydmFyOkhUVFBfVVNFUl9BR0VO VCZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2VxLCBjb250YWlucyZxdW90OwogICAgIHZh bHVlPSZxdW90O3VybHZhcjpwaWMsIFNhZmFyaSZxdW90OwogICAgIGxvZ2ljPSZxdW90O29y JnF1b3Q7Jmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0Owog Jmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNvbXBhcmVzIChmb3IgZXF1YWxpdHkpIHRoZSBjdXJy ZW50IGFydGljbGUgaW1hZ2UgaWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHVybCB2YXJpYWJs ZSA8Y29kZT5waWM8L2NvZGU+IGFuZCBjaGVja3MgaWYgdGhlIHZhbHVlIG9mIHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+SFRUUDwvc3Bhbj5fVVNFUl9BR0VOVCBzdHJpbmcgY29udGFpbnMg JiM4MjIwO1NhZmFyaSYjODIyMTsuIFRoaXMgZXhhbXBsZSB1c2VzIHRoZSAmIzgyMTY7b3Im IzgyMTc7IGxvZ2ljLCBoZW5jZSBpZiA8ZW0+ZWl0aGVyPC9lbT4gY29uZGl0aW9uIGlzIG1l dCB0aGUgYXJ0aWNsZSBpcyBzaG93biwgb3RoZXJ3aXNlIHRoZSAmIzgyMTY7bm90IHRvZGF5 JiM4MjE3OyBtZXNzYWdlIGlzIGRpc3BsYXllZC48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1w bGUgNDwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7 dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtwYXJlbnQ6TFZMMiZxdW90OwogICAgIG9wZXJhdG9y PSZxdW90O2VxJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7bWFtbWFsJnF1b3Q7Jmd0OwogJmx0 O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRv ZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPkNoZWNrcyB0aGUgMm5kIHN1Yi1jYXRlZ29yeSBvZiB0aGUgZ2xvYmFsIGNhdGVn b3J5JiM4MjE3O3MgdHJlZSB0byBzZWUgaWYgaXQgZXF1YWxzICYjODIyMDttYW1tYWwmIzgy MjE7LiBJZiBpdCBkb2VzLCBzaG93IHRoZSBhcnRpY2xlOyBpZiBub3Qgc2hvdyB0aGUgbWVz c2FnZS4gUmVtb3ZpbmcgdGhlIDxjb2RlPjpMVkwyPC9jb2RlPiAod2hpY2ggYWxsb3dzIHlv dSB0byBhbHNvIHJlbW92ZSB0aGUgb3BlcmF0b3IgcGFyYW1ldGVyIHRvIGZvcmNlIHRoZSBj b21wYXJpc29uIHRvIGJlIHRoZSBkZWZhdWx0ICYjODIyMDtjb250YWlucyYjODIyMTspIGNo ZWNrcyBpZiB0aGUgY3VycmVudCBnbG9iYWwgY2F0ZWdvcnkgaXMgYSBjaGlsZCBvZiAmIzgy MTY7bWFtbWFsJiM4MjE3OyAoYXQgYW55IGxldmVsKS48L3A+CgoJPHA+Q2hhbmdlIHRoZSBm aWVsZCB0byA8Y29kZT5wYXJlbnQ6Q0FUMTwvY29kZT4gdG8gc2VlIGlmIHRoZSBhcnRpY2xl JiM4MjE3O3MgY2F0ZWdvcnkxIG1hdGNoZXMgJiM4MjE2O21hbW1hbCYjODIxNzsgYXQgYW55 IGxldmVsLCBvciB1c2UgPGNvZGU+ZmllbGQ9JnF1b3Q7cGFyZW50OkNBVDE6TFZMMiZxdW90 OzwvY29kZT4gdG8gY29tYmluZSB0aGUgY2hlY2tzLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhh bXBsZSA1PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3VybHZhcjpwaWMsIHVybHZhcjpwYWdlJnF1b3Q7 CiAgICAgb3BlcmF0b3I9JnF1b3Q7Z3Q6TlVNLCB1bmRlZmluZWQmcXVvdDsKICAgICB2YWx1 ZT0mcXVvdDs/YXJ0aWNsZV9pbWFnZSwmcXVvdDsmZ3Q7CiAmbHQ7dHhwOmFydGljbGUgLyZn dDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZndDtOb3QgdG9kYXksIHRoYW5rcyZsdDsv cCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGVzdHMgaWYg dGhlIHVybCB2YXJpYWJsZSA8Y29kZT5waWM8L2NvZGU+IGlzIHN0cmljdGx5IG51bWVyaWNh bGx5IGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgaW4gdGhlIGN1cnJlbnQgYXJ0aWNsZSYjODIx NztzIDxjb2RlPmFydGljbGVfaW1hZ2U8L2NvZGU+IGZpZWxkIGFuZCB0aGF0IHRoZSB1cmwg dmFyaWFibGUgPGNvZGU+cGFnZTwvY29kZT4gaXMgbWlzc2luZyBmcm9tIHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBhZGRyZXNzLiBDb21wYXJlIHRoZSBvdXRjb21lIG9m IHRoaXMgdGVzdCB3aXRoIHRoZSBvdGhlciBvcGVyYXRvcnMgdXNpbmcgdGhlIGZvbGxvd2lu ZyB0YWJsZSB3aGVuIHRlc3RpbmcgdGhlIDxjb2RlPnBhZ2U8L2NvZGU+IHVybHZhcjo8L3A+ CgoJPHRhYmxlPgoJCTx0cj4KCQkJPHRoPjxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPjwvc3Bhbj4gPC90aD4KCQkJPHRoPmRlZmluZWQgPC90aD4K CQkJPHRoPnVuZGVmaW5lZCA8L3RoPgoJCQk8dGg+aXN1c2VkIDwvdGg+CgkJCTx0aD5pc2Vt cHR5IDwvdGg+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gaW5kZXgucGhwP3BhZyA8L3RkPgoJ CQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3Nw YW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFz cz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9 ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJ CTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bh bj48L3NwYW4+IDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gaW5kZXgucGhwP3BhZ2U9 IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5U UlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNw YW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3Bh biBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4g PC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlRS VUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IGluZGV4LnBo cD9wYWdlPTQgPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9 ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJj YXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8 dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj48 L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJj YXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJPC90cj4KCTwvdGFibGU+CgoJPGgz IGlkPSJlZzYiPkV4YW1wbGUgNjwvaDM+CgoJPHA+UHV0IHRoaXMgaW5zaWRlIHlvdXIgPGNv ZGU+cGxhaW5saW5rczwvY29kZT4gZm9ybSBhbmQgZXhlY3V0ZSBhIDxjb2RlPiZsdDt0eHA6 bGlua2xpc3QgLyZndDs8L2NvZGU+IGZyb20gYW4gYXJ0aWNsZSBwYWdlL2Zvcm06PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYg ZmllbGQ9JnF1b3Q7aWQsIGlkJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7Z2U6TlVNLCBs ZTpOVU0mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDt1cmx2YXI6bWluLCB1cmx2YXI6bWF4JnF1 b3Q7Jmd0OwogICZsdDt0eHA6bGlua2Rlc2N0aXRsZSAvJmd0OyZsdDticiAvJmd0OwombHQ7 L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHdpbGwgbGlzdCBvbmx5 IHRoZSBsaW5rcyB0aGF0IGhhdmUgSURzIGJldHdlZW4gdGhlIDxjb2RlPm1pbjwvY29kZT4g YW5kIDxjb2RlPm1heDwvY29kZT4gdmFyaWFibGVzIHNwZWNpZmllZCBvbiB0aGUgYWRkcmVz cyBiYXIuPC9wPgoKCTxoMyBpZD0iZWc3Ij5FeGFtcGxlIDc8L2gzPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7 dXJsdmFyOnByb2R1Y3RfY29kZSZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2lzYWxudW0m cXVvdDsmZ3Q7CiAgJmx0O3R4cDpvdXRwdXRfZm9ybSBmb3JtPSZxdW90O3Nob3dfcHJvZHVj dCZxdW90OyAvJmd0OwombHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O0ludmFsaWQgcHJv ZHVjdCBjb2RlJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5UZXN0cyB0byBzZWUgaWYgdGhlIHByb2R1Y3RfY29kZSA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBpcyBhbHBoYW51bWVyaWMgYW5kIGRpc3BsYXlzIGEg Zm9ybSBpZiBzby48L3A+CgoJPGgyIGNsYXNzPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+ CgoJPHVsPgoJCTxsaT4zMCBEZWMgMDcgfCAwLjEgfCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJ CTxsaT4zMCBEZWMgMDcgfCAwLjIgfCBBZGRlZCBwYXJlbnQgY2F0ZWdvcnkgY2hlY2tpbmcg KHRoYW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDIgSmFuIDA4IHwgMC4zIHwgQWRkZWQg ZGVmaW5lZC91bmRlZmluZWQgYW5kIHN0cmljdCBudW1lcmljIGNvbXBhcmlzb25zPC9saT4K CQk8bGk+MDYgSmFuIDA4IHwgMC40IHwgQWRkZWQgPGNvZGU+PzwvY29kZT4gbm90YXRpb24g dG8gYWxsb3cgdGhlIHZhbHVlIHRvIHJlYWQgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gZmllbGRzOyBiZXR0ZXIgcXVvdGUgc3VwcG9ydCAoYm90aCB0aGFua3MgTmVpbEEpPC9s aT4KCQk8bGk+MDYgSmFuIDA4IHwgMC40MSB8IEZpeGVkIGxvd2VyIGNhc2UgZmllbGQgbmFt ZXMgYW5kIHVuZGVmaW5lZCBpbmRleCBlcnJvciAodGhhbmtzIHBldGVyaik8L2xpPgoJCTxs aT4xNCBKYW4gMDggfCAwLjUgfCBBZGRlZCBjYXNlX3NlbnNpdGl2ZSBvcHRpb247IG1hZGUg JiM4MjE2O2NvbnRhaW5zJiM4MjE3OyB0aGUgZGVmYXVsdCBmb3IgJiM4MjE2O3BhcmVudCYj ODIxNzsgdGVzdHM7IGltcHJvdmVkIGhlbHAgKGFsbCB0aGFua3MgdGhlX2dob3N0KTsgYWRk ZWQgZGVsaW0gb3B0aW9uczwvbGk+CgkJPGxpPjE1IEphbiAwOCB8IDAuNTEgfCBGaXhlZCBk ZWZpbmVkL3VuZGVmaW5lZCBzeW50YXggZXJyb3I7IHRpZ2h0ZW5lZCBpc3VzZWQvaXNlbXB0 eSB0byBkaXN0aW5ndWlzaCB0aGVtIGZyb20gZGVmaW5lZC91bmRlZmluZWQ8L2xpPgoJCTxs aT4yNSBNYXkgMDggfCAwLjYgfCBGaXhlZCAmIzgyMTY7dW5kZWZpbmVkIGluZGV4JiM4MjE3 OyBlcnJvcnMgKHRoYW5rcyByZWRib3QgYW5kIHRoZV9naG9zdCkgOyBhZGRlZCBtb3JlIHBy ZXRleHQgdmFyaWFibGVzIDsgYWRkZWQgbW9yZSA8Y29kZT5pczwvY29kZT4gY2hlY2tzIChh bmQgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5OT1NQQUNFPC9zcGFuPiBtb2RpZmllcikgOyBh bGxvd2VkIGZpbGUgYW5kIGxpbmsgdGVzdHMgKGluY2x1ZGluZyBwYXJlbnQgY2F0ZWdvcmll cyk8L2xpPgoJCTxsaT4yNiBNYXkgMDggfCAwLjYxIHwgRml4ZWQgc3R1cGlkIG92ZXJzaWdo dCBpbiBmaWVsZCBuYW1lIGdlbmVyYXRpb24gdG8gYWxsb3cgYXJiaXRyYXJ5IG5hbWVzIGlu c3RlYWQgb2YgZm9yY2luZyAkdGhpc2FydGljbGUgKHRoYW5rcyB0byBKb2FuYSBDYXJ2YWxo byBmb3IgbGVhZGluZyBtZSB0byB0aGlzKTwvbGk+CgkJPGxpPjExIEp1biAwOCB8IDAuNjIg fCBGaXhlZCBpbmNvcnJlY3QgcmVzdWx0IGlmIGV2YWwoKSBpcyBlbXB0eSA7IGFkZGVkIDxz cGFuIGNsYXNzPSJjYXBzIj5OVUxMPC9zcGFuPiBmaWVsZCBvYmplY3Q8L2xpPgoJPC91bD4K Cgk8cD48L2Rpdj48L3A+CjwhLS0gLS0tIEJFR0lOIFBMVUdJTiBDU1MgLS0tIC0tPgo8c3R5 bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjMgO30KI3Nt ZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJp ZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkND O30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlcjox cHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6Ymxv Y2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBh OmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0 aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0 b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9y OiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDJweCBzb2xp ZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2 OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxp Z246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQg YmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3Jn aWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJv bGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2lu OiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO30KI3NtZF9oZWxwIGg0IHsg Zm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4 OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRf aGVscCAuYXR0LW5hbWUgeyBmb250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7 IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAg dGFibGUge3dpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbTox ZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5 OyBwYWRkaW5nOi41ZW0gMDt9Cjwvc3R5bGU+CjwhLS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0t LSAtLT4KIjtzOjM6ImNzcyI7czoxMjczOiI8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21k X2hlbHAgeyBsaW5lLWhlaWdodDoxLjMgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdo dDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3Nw YWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sg eyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91 bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBw eDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0 ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9t OiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92 ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246 IG5vbmU7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbTox cHg7fQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBz YW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAg aDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7 IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9o ZWxwIGgzIHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJp ZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9y bTogdXBwZXJjYXNlO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBz YW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0 LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXR0LW5hbWUgeyBmb250LXdl aWdodDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVy OjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjEwMCU7IHRleHQt YWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRf aGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9Cjwvc3R5 bGU+IjtzOjQ6ImNvZGUiO3M6ODA2OToiZnVuY3Rpb24gc21kX2lmKCRhdHRzLCR0aGluZykg ewoJZ2xvYmFsICR0aGlzYXJ0aWNsZSwgJHByZXRleHQsICR0aGlzZmlsZSwgJHRoaXNsaW5r OwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ2ZpZWxkJyA9PiAnJywKCQknb3BlcmF0b3In ID0+ICcnLAoJCSd2YWx1ZScgPT4gJycsCgkJJ2xvZ2ljJyA9PiAnYW5kJywKCQknY2FzZV9z ZW5zaXRpdmUnID0+IDAsCgkJJ3BhcmFtX2RlbGltJyA9PiAnLCcsCgkJJ21vZF9kZWxpbScg PT4gJzonLAoJCSdkZWJ1ZycgPT4gJzAnLAoJKSwgJGF0dHMpKTsKCgkvLyBTcGVjaWFsIGZp ZWxkIG5hbWVzIHRoYXQgcmVmZXIgdG8gJHByZXRleHQgb3IgZWxzZXdoZXJlIC0gZXZlcnl0 aGluZyBlbHNlIGlzIGFzc3VtZWQgdG8KCS8vIGV4aXN0IGluICR0aGlzYXJ0aWNsZSBzbyBj dXN0b20gZmllbGRzIGNhbiBiZSB1c2VkCgkkYWxsUHR4dCA9IGFycmF5KAoJCSJpZCIgPT4g JyRwcmV0ZXh0WyJpZCJdJywKCQkic2VjdGlvbiIgPT4gJyRwcmV0ZXh0WyJzIl0nLAoJCSJj YXRlZ29yeSIgPT4gJyRwcmV0ZXh0WyJjIl0nLAoJCSJxdWVyeSIgPT4gJyRwcmV0ZXh0WyJx Il0nLAoJCSJwZyIgPT4gJyRwcmV0ZXh0WyJwZyJdJywKCQkibW9udGgiID0+ICckcHJldGV4 dFsibW9udGgiXScsCgkJImF1dGhvciIgPT4gJyRwcmV0ZXh0WyJhdXRob3IiXScsCgkJInN0 YXR1cyIgPT4gJyRwcmV0ZXh0WyJzdGF0dXMiXScsCgkJInBhZ2UiID0+ICckcHJldGV4dFsi cGFnZSJdJywKCQkibmV4dF9pZCIgPT4gJyRwcmV0ZXh0WyJuZXh0X2lkIl0nLAoJCSJuZXh0 X3RpdGxlIiA9PiAnJHByZXRleHRbIm5leHRfdGl0bGUiXScsCgkJIm5leHRfdXRpdGxlIiA9 PiAnJHByZXRleHRbIm5leHRfdXRpdGxlIl0nLAoJCSJwcmV2X2lkIiA9PiAnJHByZXRleHRb InByZXZfaWQiXScsCgkJInByZXZfdGl0bGUiID0+ICckcHJldGV4dFsicHJldl90aXRsZSJd JywKCQkicHJldl91dGl0bGUiID0+ICckcHJldGV4dFsicHJldl91dGl0bGUiXScsCgkJInBl cm1saW5rX21vZGUiID0+ICckcHJldGV4dFsicGVybWxpbmtfbW9kZSJdJywKCSk7CgkvLyBF YWNoIGVudHJ5IGhhcyB0aGUgb3BlcmF0aW9uIHRvIGJlIGV2YWwoKWQgbGF0ZXIgYW5kIGEg bGlzdCBvZiBkaXNhbGxvd2VkIGZpZWxkcwoJJGFsbE9wcyA9IGFycmF5KAoJCSdlcScgPT4g YXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIEZJRUxEID09PSBWQUxVRScsICcnKSwKCQknbm90 JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgRklFTEQgIT09IFZBTFVFJywgJycpLAoJ CSdndCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgPiBDQVNUIFZB TFVFJywgJycpLAoJCSdnZScgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklF TEQgPj0gQ0FTVCBWQUxVRScsICcnKSwKCQknbHQnID0+IGFycmF5KCdpc3NldChWQVJOQU1F KSAmJiBDQVNUIEZJRUxEIDwgQ0FTVCBWQUxVRScsICcnKSwKCQknbGUnID0+IGFycmF5KCdp c3NldChWQVJOQU1FKSAmJiBDQVNUIEZJRUxEIDw9IENBU1QgVkFMVUUnLCAnJyksCgkJJ2Jl Z2lucycgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIHN0cnBvcyhGSUVMRCwgVkFMVUUp ID09PSAwJywgJycpLAoJCSdjb250YWlucycgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYm IHN0cnBvcyhGSUVMRCwgVkFMVUUpICE9PSBmYWxzZScsICcnKSwKCQknZW5kcycgPT4gYXJy YXkoJ2lzc2V0KFZBUk5BTUUpICYmIHN1YnN0cihGSUVMRCwgc3RybGVuKEZJRUxEKSAtIHN0 cmxlbihWQUxVRSkpID09PSBWQUxVRScsICcnKSwKCQknZGVmaW5lZCcgPT4gYXJyYXkoJ2lz c2V0KFZBUk5BTUUpJywgJ3BhcmVudCcpLAoJCSd1bmRlZmluZWQnID0+IGFycmF5KCchaXNz ZXQoVkFSTkFNRSknLCAncGFyZW50JyksCgkJJ2lzZW1wdHknID0+IGFycmF5KCdpc3NldChW QVJOQU1FKSAmJiBGSUVMRCA9PSAiIicsICcnKSwKCQknaXN1c2VkJyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgRklFTEQgIT0gIiInLCAnJyksCgkJJ2lzbnVtJyA9PiBhcnJheSgn aXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfZGlnaXQoKHN0cmluZylGSUVMRCknLCAnJyksCgkJ J2lzYWxwaGEnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBjdHlwZV9hbHBoYSgoc3Ry aW5nKUZJRUxEKScsICcnKSwKCQknaXNhbG51bScgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUp ICYmIGN0eXBlX2FsbnVtKChzdHJpbmcpRklFTEQpJywgJycpLAoJCSdpc2xvd2VyJyA9PiBh cnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfbG93ZXIoKHN0cmluZylGSUVMRCknLCAn JyksCgkJJ2lzdXBwZXInID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBjdHlwZV91cHBl cigoc3RyaW5nKUZJRUxEKScsICcnKSwKCQknaXNwdW5jdCcgPT4gYXJyYXkoJ2lzc2V0KFZB Uk5BTUUpICYmIGN0eXBlX3B1bmN0KChzdHJpbmcpRklFTEQpJywgJycpLAoJCSdpc3NwYWNl JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfc3BhY2UoKHN0cmluZylGSUVM RCknLCAnJyksCgkpOwoKCSRudW1lcmljT3BzID0gImd0LCBnZSwgbHQsIGxlIjsKCSRjYXNl T3BzID0gImlzbG93ZXIsIGlzdXBwZXIiOwoJJHNwYWNlT3BzID0gImlzbnVtLCBpc2FscGhh LCBpc2FsbnVtLCBpc2xvd2VyLCBpc3VwcGVyLCBpc3B1bmN0IjsKCSRmaWVsZHMgPSBkb19s aXN0KCRmaWVsZCwgJHBhcmFtX2RlbGltKTsKCSRvcHMgPSBkb19saXN0KCRvcGVyYXRvciwg JHBhcmFtX2RlbGltKTsKCSRudW1PcHMgPSBjb3VudCgkb3BzKTsKCSR2YWxzID0gZG9fbGlz dCgkdmFsdWUsICRwYXJhbV9kZWxpbSk7CgkkbnVtVmFscyA9IGNvdW50KCR2YWxzKTsKCSRw YXJlbnRDYXRzID0gJyc7IC8vIFBsYWNlaG9sZGVyIGZvciB0aGUgY29uY2F0ZW5hdGVkIGxp c3Qgb2YgY2F0ZWdvcnkgbGVhZiBub2RlcwoJJHR5cGUgPSAoJHRoaXNmaWxlKSA/ICJmaWxl IiA6ICgoJHRoaXNsaW5rKSA/ICJsaW5rIiA6ICJhcnRpY2xlIik7Cgkkb3V0ID0gYXJyYXko KTsKCglmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGZpZWxkcyk7ICRpZHgrKykgewoJ CSRmbGQgPSAkZmllbGRzWyRpZHhdOwoJCSRmbGRQYXJ0cyA9IGV4cGxvZGUoJG1vZF9kZWxp bSwgJGZsZCk7CgkJJHZhbCA9ICgkaWR4IDwgJG51bVZhbHMpID8gJHZhbHNbJGlkeF0gOiAn JzsKCQkkdmFsUGFydHMgPSBleHBsb2RlKCRtb2RfZGVsaW0sICR2YWwpOwoJCSRvcCA9ICgk aWR4IDwgJG51bU9wcyAmJiAkb3BzWyRpZHhdICE9ICcnKSA/ICRvcHNbJGlkeF0gOiAoKCRm bGRQYXJ0c1swXT09InBhcmVudCIpID8gImNvbnRhaW5zIiA6ICJlcSIpOwoJCSRvcFBhcnRz ID0gZXhwbG9kZSgkbW9kX2RlbGltLCAkb3ApOwoJCSRvcCA9ICRzdG9yZWRPcCA9IChhcnJh eV9rZXlfZXhpc3RzKCRvcFBhcnRzWzBdLCAkYWxsT3BzKSkgPyAkb3BQYXJ0c1swXSA6ICJl cSI7CgkJJGNhc3QgPSAoKGNvdW50KCRvcFBhcnRzKSA9PSAyKSAmJiAoJG9wUGFydHNbMV0g PT09ICJOVU0iKSAmJiAoaW5fbGlzdCgkb3AsICRudW1lcmljT3BzKSkpID8gJyhpbnQpJyA6 ICcnOwoJCSRraWxsU3BhY2VzID0gKChjb3VudCgkb3BQYXJ0cykgPT0gMikgJiYgKCRvcFBh cnRzWzFdID09PSAiTk9TUEFDRSIpICYmIChpbl9saXN0KCRvcCwgJHNwYWNlT3BzKSkpID8g dHJ1ZSA6IGZhbHNlOwoJCSRjYXNlX3NlbnNpdGl2ZSA9IChpbl9saXN0KCRvcCwgJGNhc2VP cHMpKSA/IDEgOiAkY2FzZV9zZW5zaXRpdmU7CgkJaWYgKCRkZWJ1ZykgewoJCQllY2hvICdU RVNUICcuKCRpZHgrMSkubjsKCQkJZG1wKCRmbGRQYXJ0cywgJG9wUGFydHMsICR2YWxQYXJ0 cyk7CgkJfQoJCS8vIEdldCB0aGUgb3BlcmF0b3IgcmVwbGFjZW1lbnQgY29kZQoJCSRleGNs dWRlID0gZG9fbGlzdCgkYWxsT3BzWyRvcF1bMV0pOwoJCSRvcCA9ICRhbGxPcHNbJG9wXVsw XTsKCgkJLy8gQXMgbG9uZyBhcyB0aGUgY3VycmVudCBvcGVyYXRvciBhbGxvd3MgdGhpcyBm aWVsZC4uLgoJCWlmICghaW5fYXJyYXkoJGZsZFBhcnRzWzBdLCAkZXhjbHVkZSkpIHsKCQkJ Ly8gTWFrZSB1cCB0aGUgdGVzdCBmaWVsZCB2YXJpYWJsZQoJCQlpZiAoaXNzZXQoJHRoaXNm aWxlWyRmbGRQYXJ0c1swXV0pKSB7CgkJCQkkZmxkID0gJyR0aGlzZmlsZVsiJy4kZmxkUGFy dHNbMF0uJyJdJzsKCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2xpbmtbJGZsZFBhcnRzWzBd XSkpIHsKCQkJCSRmbGQgPSAnJHRoaXNsaW5rWyInLiRmbGRQYXJ0c1swXS4nIl0nOwoJCQl9 IGVsc2UgaWYgKGFycmF5X2tleV9leGlzdHMoJGZsZFBhcnRzWzBdLCAkYWxsUHR4dCkpIHsK CQkJCSRmbGQgPSAkYWxsUHR4dFskZmxkUGFydHNbMF1dOwoJCQl9IGVsc2UgaWYgKCRmbGRQ YXJ0c1swXSA9PSAicGFyZW50IikgewoJCQkJJGxldmVsID0gJyc7CgkJCQlmb3JlYWNoICgk ZmxkUGFydHMgYXMgJHBhcnQpIHsKCQkJCQlpZiAoJHBhcnQgPT0gInBhcmVudCIpIHsKCQkJ CQkJJHRoZUNhdCA9ICgkdGhpc2ZpbGUpID8gJHRoaXNmaWxlWydjYXRlZ29yeSddIDogKCgk dGhpc2xpbmspID8gJHRoaXNsaW5rWydjYXRlZ29yeSddIDogJHByZXRleHRbJ2MnXSk7CgkJ CQkJfSBlbHNlIGlmIChzdHJwb3MoJHBhcnQsICJDQVQiKSA9PT0gMCkgewoJCQkJCQkkdGhl Q2F0ID0gJHRoaXNhcnRpY2xlWyJjYXRlZ29yeSIuc3Vic3RyKCRwYXJ0LCAzKV07CgkJCQkJ fSBlbHNlIGlmIChzdHJwb3MoJHBhcnQsICJMVkwiKSA9PT0gMCkgewoJCQkJCQkkbGV2ZWwg PSBzdWJzdHIoJHBhcnQsIDMpOwoJCQkJCX0KCQkJCX0KCgkJCQkkdHJlZSA9IGdldFRyZWVQ YXRoKGRvU2xhc2goJHRoZUNhdCksICR0eXBlKTsKCQkJCWlmICgkZGVidWcpIHsKCQkJCQll Y2hvICJDQVRFR09SWSBUUkVFOiI7CgkJCQkJZG1wKCR0cmVlKTsKCQkJCX0KCQkJCSRpdGVt cyA9IGFycmF5KCk7CgkJCQlmb3JlYWNoICgkdHJlZSBhcyAkbGVhZikgewoJCQkJCWlmICgk bGVhZlsnbmFtZSddID09ICJyb290IiB8fCAkbGVhZlsnbmFtZSddID09ICR0aGVDYXQpIHsK CQkJCQkJY29udGludWU7CgkJCQkJfSBlbHNlIGlmICgkbGV2ZWwgPT0gJycgfHwgJGxldmVs ID09ICRsZWFmWydsZXZlbCddKSB7CgkJCQkJCSRpdGVtc1tdID0gJGxlYWZbJ25hbWUnXTsK CQkJCQl9CgkJCQl9CgkJCQkkcGFyZW50Q2F0cyA9IGltcGxvZGUoIiAiLCAkaXRlbXMpOwoJ CQkJJGZsZCA9ICckcGFyZW50Q2F0cyc7CgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09 ICJ1cmx2YXIiKSB7CgkJCQlpZiAoY291bnQoJGZsZFBhcnRzKSA9PSAyKSB7CgkJCQkJJGZs ZCA9ICckX0dFVFsiJy4kZmxkUGFydHNbMV0uJyJdJzsKCQkJCX0KCQkJfSBlbHNlIGlmICgk ZmxkUGFydHNbMF0gPT0gInN2cnZhciIpIHsKCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID09 IDIpIHsKCQkJCQkkZmxkID0gJyRfU0VSVkVSWyInLiRmbGRQYXJ0c1sxXS4nIl0nOwoJCQkJ fQoJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskZmxkUGFydHNbMF1dKSkgewoJ CQkJJGZsZCA9ICckdGhpc2FydGljbGVbIicuc3RydG9sb3dlcigkZmxkUGFydHNbMF0pLici XSc7CgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJOVUxMIikgewoJCQkJJHNtZF9p Zl92YXIgPSAnJzsKCQkJCSRmbGQgPSAnJHNtZF9pZl92YXInOwoJCQl9IGVsc2UgewoJCQkJ JHNtZF9pZl92YXIgPSAkZmxkUGFydHNbMF07CgkJCQkkZmxkID0gJyRzbWRfaWZfdmFyJzsK CQkJfQoKCQkJLy8gVGFrZSBhIGNvcHkgb2YgJGZsZCB0byB1c2UgaW4gYW55IGlzc2V0KCkg cmVxdWVzdHMKCQkJJGZsZENsZWFuID0gJGZsZDsKCQkJaWYgKCRraWxsU3BhY2VzKSB7CgkJ CQkkZmxkID0gJ3ByZWdfcmVwbGFjZSgiL1xzKy8iLCIiLCcuJGZsZC4nKSc7CgkJCX0KCgkJ CS8vIEZpbmQgdGhlIHJlYWwgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0IChtYXkgYmUgYW5v dGhlciBmaWVsZCkKCQkJaWYgKCR2YWxQYXJ0c1swXSA9PSAidXJsdmFyIikgewoJCQkJaWYg KGNvdW50KCR2YWxQYXJ0cykgPT0gMikgewoJCQkJCSR2YWwgPSAoaXNzZXQoJF9HRVRbJHZh bFBhcnRzWzFdXSkgJiYgJF9HRVRbJHZhbFBhcnRzWzFdXSAhPSAiIikgPyAnJF9HRVRbIicu JHZhbFBhcnRzWzFdLiciXScgOiBkb1F1b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wiJywgJHZh bFBhcnRzWzFdKSk7CgkJCQl9CgkJCX0gZWxzZSBpZiAoJHZhbFBhcnRzWzBdID09ICJzdnJ2 YXIiKSB7CgkJCQlpZiAoY291bnQoJHZhbFBhcnRzKSA9PSAyKSB7CgkJCQkJJHZhbCA9IChp c3NldCgkX1NFUlZFUlskdmFsUGFydHNbMV1dKSAmJiAkX1NFUlZFUlskdmFsUGFydHNbMV1d ICE9ICIiKSA/ICckX1NFUlZFUlsiJy4kdmFsUGFydHNbMV0uJyJdJyA6IGRvUXVvdGUoc3Ry X3JlcGxhY2UoJyInLCAnXCInLCAkdmFsUGFydHNbMV0pKTsKCQkJCX0KCQkJfSBlbHNlIGlm IChzdHJwb3MoJHZhbFBhcnRzWzBdLCAiPyIpID09PSAwKSB7CgkJCQkkdmFsUGFydHNbMF0g PSBzdWJzdHIoc3RydG9sb3dlcigkdmFsUGFydHNbMF0pLCAxKTsKCQkJCWlmIChpc3NldCgk dGhpc2ZpbGVbJHZhbFBhcnRzWzBdXSkpIHsKCQkJCQkkdmFsID0gJyR0aGlzZmlsZVsiJy4k dmFsUGFydHNbMF0uJyJdJzsKCQkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNsaW5rWyR2YWxQ YXJ0c1swXV0pKSB7CgkJCQkJJHZhbCA9ICckdGhpc2xpbmtbIicuJHZhbFBhcnRzWzBdLici XSc7CgkJCQl9IGVsc2UgaWYgKGFycmF5X2tleV9leGlzdHMoJHZhbFBhcnRzWzBdLCAkYWxs UHR4dCkpIHsKCQkJCQkkdmFsID0gJGFsbFB0eHRbJHZhbFBhcnRzWzBdXTsKCQkJCX0gZWxz ZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyR2YWxQYXJ0c1swXV0pKSB7CgkJCQkJJHZhbCA9 ICckdGhpc2FydGljbGVbIicuJHZhbFBhcnRzWzBdLiciXSc7CgkJCQl9IGVsc2UgewoJCQkJ CSR2YWwgPSBkb1F1b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wiJywgJHZhbFBhcnRzWzBdKSk7 CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkdmFsID0gZG9RdW90ZShzdHJfcmVwbGFjZSgnIics ICdcIicsICR2YWxQYXJ0c1swXSkpOwoJCQl9CgoJCQkvLyBSZXBsYWNlIHRoZSBzdHJpbmcg cGFydHMuLi4KCQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJDQVNUIiwgJGNhc3QsICRvcCk7CgkJ CSRjbWQgPSBzdHJfcmVwbGFjZSgiRklFTEQiLCAoKCRjYXNlX3NlbnNpdGl2ZSkgPyAkZmxk IDogJ3N0cnRvbG93ZXIoJy4kZmxkLicpJyksICRjbWQpOwoJCQkkY21kID0gc3RyX3JlcGxh Y2UoIlZBUk5BTUUiLCAkZmxkQ2xlYW4sICRjbWQpOwoJCQkkY21kID0gc3RyX3JlcGxhY2Uo IlZBTFVFIiwgKCgkY2FzZV9zZW5zaXRpdmUpID8gJ1ZBTFVFJyA6ICdzdHJ0b2xvd2VyKFZB TFVFKScpLCAkY21kKTsKCQkJJGNtZCA9ICJcJG91dFtdID0gKCIuc3RyX3JlcGxhY2UoIlZB TFVFIiwgKCgkdmFsPT09IicnIiAmJiBzdHJwb3MoJG9wLCAic3RycG9zIikgIT09IGZhbHNl KSA/ICInICciIDogJHZhbCksICRjbWQpLiIpID8gJ3RydWUnIDogJ2ZhbHNlJzsiOwoJCQlp ZiAoJGRlYnVnKSB7CgkJCQlkbXAoJGNtZCk7CgkJCX0KCQkJLy8gLi4uIGFuZCBldmFsdWF0 ZSB0aGUgZXhwcmVzc2lvbgoJCQlldmFsKCRjbWQpOwoJCX0KCX0KCWlmICgkZGVidWcpIHsK CQllY2hvICJSRVNVTFQ6IjsKCQlkbXAoJG91dCk7Cgl9CglpZiAoJGRlYnVnID09IDIpIHsK CQllY2hvICJQUkVURVhUOiI7CgkJZG1wKCRwcmV0ZXh0KTsKCQllY2hvICJUSElTIEFSVElD TEU6IjsKCQlkbXAoJHRoaXNhcnRpY2xlKTsKCQllY2hvICJUSElTIEZJTEU6IjsKCQlkbXAo JHRoaXNmaWxlKTsKCQllY2hvICJUSElTIExJTks6IjsKCQlkbXAoJHRoaXNsaW5rKTsKCX0K CS8vIENoZWNrIGxvZ2ljCgkkcmVzdWx0ID0gKCRvdXQpID8gdHJ1ZSA6IGZhbHNlOwoJaWYg KHN0cnRvbG93ZXIoJGxvZ2ljKSA9PSAiYW5kIiAmJiBpbl9hcnJheSgiZmFsc2UiLCAkb3V0 KSkgewoJCSRyZXN1bHQgPSBmYWxzZTsKCX0KCWlmIChzdHJ0b2xvd2VyKCRsb2dpYykgPT0g Im9yIiAmJiAhaW5fYXJyYXkoInRydWUiLCAkb3V0KSkgewoJCSRyZXN1bHQgPSBmYWxzZTsK CX0KCglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcmVzdWx0KSk7Cn0iO3M6Mzoi bWQ1IjtzOjMyOiI3ZWRlZDQ0Y2ViNGY5NDQxM2IzY2Y2MTFiYmI5MzgzZCI7fQ==