# Name: smd_if v0.41 # 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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjY6InNtZF9pZiI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuNDEi O3M6NjoiYXV0aG9yIjtzOjExOiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoy MjoiaHR0cDovL3N0ZWZkYXdzb24uY29tLyI7czoxMToiZGVzY3JpcHRpb24iO3M6MzU6Ikdl bmVyaWMgbXVsdGlwbGUgaWYgY29uZGl0aW9uIHRlc3RzIjtzOjQ6InR5cGUiO3M6MToiMCI7 czo0OiJoZWxwIjtzOjEzNTEyOiI8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAg eyBsaW5lLWhlaWdodDoxLjMgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xk OyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBi YWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250 LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29s b3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFk ZGluZzoxMHB4OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBj b2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHgg c29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNz bWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7 IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQoj c21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNl cmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBi b3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9y OiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgz IHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0 dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBw ZXJjYXNlO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNl cmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRyYW5z Zm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXR0LW5hbWUgeyBmb250LXdlaWdodDpi b2xkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBk b3R0ZWQgIzk5OTsgfQo8L3N0eWxlPgoJPHA+PGRpdiBpZD0ic21kX2hlbHAiPjwvcD4KCgk8 aDE+c21kX2lmPC9oMT4KCgk8cD5BIHJlYWxseSBzaW1wbGUsIGdlbmVyaWMgJiM4MjE2O2lm IGNvbmRpdGlvbiYjODIxNzsgdGVzdGVyLiBDYW4gdGVzdCBhbnkgZmllbGQgaW4gdGhlIGN1 cnJlbnQgYXJ0aWNsZSBvciBsaXN0IGNvbnRleHQgZm9yIGEgdmFyaWV0eSBvZiBhdHRyaWJ1 dGVzIGFuZCB0YWtlIGFjdGlvbiBpZiB0cnVlIG9yIGZhbHNlLjwvcD4KCgk8aDI+RmVhdHVy ZXM8L2gyPgoKCTx1bD4KCQk8bGk+U3VwcG9ydHMgbW9zdCBtYWpvciB2YXJpYWJsZXMgc3Vj aCBhcyBzZWN0aW9uLCBjYXRlZ29yeSwgY3VzdG9tIGZpZWxkcywgaWQsIHF1ZXJ5IHN0cmlu ZywgYXV0aG9yLCBib2R5LCBleGNlcnB0LCB5YWhkZSB5YWhkZSwgcGx1cyB1cmwgdmFycyBh bmQgc2VydmVyIHZhcnM8L2xpPgoJCTxsaT5UZXN0cyBpbmNsdWRlIGVxdWFsaXR5LCBpbmVx dWFsaXR5LCBsZXNzIHRoYW4sIGdyZWF0ZXIgdGhhbiwgZW1wdHksIHVzZWQsIGRlZmluZWQs IGJlZ2lucywgY29udGFpbnMgYW5kIGlzbnVtZXJpYzwvbGk+CgkJPGxpPlRlc3RzIGZvciBt b3JlIHRoYW4gb25lIGNvbmRpdGlvbiBhdCBvbmNlIGFuZCBhcHBsaWVzIGVpdGhlciA8c3Bh biBjbGFzcz0iY2FwcyI+QU5EPC9zcGFuPiBsb2dpYyAoYWxsIHRlc3RzIG11c3QgcGFzcykg b3IgT1IgbG9naWMgKGFueSB0ZXN0IG11c3QgcGFzcyk8L2xpPgoJCTxsaT5VZ2x5IGFuZCB2 ZXJ5IGRpcnR5LiBVc2VzIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+JiM4MjE3O3Mg PGNvZGU+ZXZhbCgpPC9jb2RlPiBjb21tYW5kIHdoaWNoIG1vc3QgcHJvZ3JhbW1lcnMgY29u Y3VyIHNob3VsZCBiZSByZW5hbWVkIDxjb2RlPmV2aWwoKTwvY29kZT48L2xpPgoJPC91bD4K Cgk8aDI+QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20v Y29tbWVudEZvcm0iPlN0ZWYgRGF3c29uPC9hPi4gQmFzZWQgb24gYW4gaWRlYSBicmV3aW5n IGluIHRoZSBiYWNrIG9mIG15IG1pbmQgd2hpbGUgaGFja2luZyBjaHNfaWZfdXJsdmFyLjwv cD4KCgk8aDI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwPkRvd25s b2FkIHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJu Lm9yZy9wbHVnaW5zLzkzMC9zbWRfaWYiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8 YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBw YXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBB ZG1pbiAtJiM2MjsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdp bi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmll d3RvcGljLnBocD9pZD0yNTM1NyI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9y IHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48 L3A+CgoJPGgyPlVzYWdlPC9oMj4KCgk8cD5Vc2UgdGhlIHRhZyBpbiBhbnkgcGFnZSwgZm9y bSBvciBhcnRpY2xlIGNvbnRleHQuPC9wPgoKCTxoMyBjbGFzcz0idGFnIj5zbWRfaWY8L2gz PgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+QXQgdGhlIHBsYWNlIHlvdSB3aXNoIHRvIGNv bXBhcmUgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCB3aXRoIGFub3Ro ZXIgdmFsdWUsIHB1dCB0aGlzIHRhZyB3aXRoIGFsbCB0aHJlZSBtYW5kYXRvcnkgYXR0cmli dXRlcy4gRWFjaCB0YWtlIGEgc2VyaWVzIG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0cy4gSWYg dGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiB0ZXN0cyBpcyA8c3BhbiBjbGFzcz0iY2Fw cyI+VFJVRTwvc3Bhbj4gdGhlIGNvbnRhaW5lZCBibG9jayB3aWxsIGJlIGV4ZWN1dGVkLiBJ ZiB0aGUgcmVzdWx0IGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj4sIGFueSA8 Y29kZT4mIzYwO3R4cDplbHNlIC8mIzYyOzwvY29kZT4gd2lsbCBiZSBleGVjdXRlZCBpbnN0 ZWFkLiBXaXRob3V0IGFueSA8Y29kZT4mIzYwO3R4cDplbHNlIC8mIzYyOzwvY29kZT4gYmxv Y2ssIG5vdGhpbmcgaXMgb3V0cHV0IGlmIHRoZSByZXN1bHQgaXMgPHNwYW4gY2xhc3M9ImNh cHMiPkZBTFNFPC9zcGFuPi48L3A+CgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIG1hbmQiPmZpZWxkZDwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPlRYUDwvc3Bhbj4gZmllbGRzIHRvIHRlc3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUgbWFuZCI+b3BlcmF0b3I8L3NwYW4+IDogdGhlIG9wZXJhdGlvbnMgZm9y IGNvbXBhcmlzb24gd2l0aCB0aGF0IGZpZWxkIChlLmcuIGVxLCBub3QsIGJlZ2lucywgZXRj KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj52YWx1ZTwvc3Bhbj4g OiB0aGUgdmFsdWVzIHRvIGNvbXBhcmUgdGhlIGZpZWxkcyB0bzwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+bG9naWM8L3NwYW4+IDogaG93IG11bHRpcGxlIHRlc3RzIGFy ZSBqb2luZWQ6IDxzcGFuIGNsYXNzPSJjYXBzIj5BTkQ8L3NwYW4+IG9yIE9SPC9saT4KCTwv dWw+CgoJPHA+VGhlIGNvbW1hIHNlcGFyYXRlZCBsaXN0cyBhcmUgcHJvY2Vzc2VkIGluIG9y ZGVyLCBpLmUuIHRoZSAxc3QgZmllbGQgdXNlcyB0aGUgMXN0IG9wZXJhdG9yIGluIHRoZSBs aXN0IGFuZCBjb21wYXJlcyBpdCB0byB0aGUgMXN0IHZhbHVlOyB0aGUgMm5kIGZpZWxkIHVz ZXMgdGhlIDJuZCBvcGVyYXRvciBpbiB0aGUgbGlzdCBhbmQgY29tcGFyZXMgaXQgdG8gdGhl IDJuZCB2YWx1ZSwgYW5kIHNvIG9uLjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9 ImZpZWxkIj5maWVsZDwvaDQ+CgoJPHA+TGlzdCBvZiBUZXh0UGF0dGVybiBmaWVsZHMgdG8g bG9vayBhdC4gUG9zc2libGUgdmFsdWVzIGFyZToKCTx1bD4KCQk8bGk+PGNvZGU+c2VjdGlv bjwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5jYXRlZ29yeTwvY29kZT4gKG9yIDxjb2RlPmNh dGVnb3J5MTwvY29kZT4sIG9yIDxjb2RlPmNhdGVnb3J5MjwvY29kZT4pPC9saT4KCQk8bGk+ PGNvZGU+YXV0aG9yaWQ8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+aWQ8L2NvZGU+IChhcnRp Y2xlIElEKTwvbGk+CgkJPGxpPjxjb2RlPnF1ZXJ5PC9jb2RlPiAodGhlIHF1ZXJ5IHN0cmlu ZyBmcm9tIHRoZSBzZWFyY2ggZm9ybSk8L2xpPgoJCTxsaT48Y29kZT5wZzwvY29kZT4gKHRo ZSBjdXJyZW50IHBhZ2UgbnVtYmVyKTwvbGk+CgkJPGxpPjxjb2RlPnN0YXR1czwvY29kZT4g KGRvY3VtZW50IHN0YXR1czogMjAwLCA0MDQsIDQwMywgZXRjKTwvbGk+CgkJPGxpPjxjb2Rl Pm5leHRfaWQ8L2NvZGU+IChJRCBvZiBuZXh0IGRvY3VtZW50IGlmIG9uIGFydGljbGUgcGFn ZSk8L2xpPgoJCTxsaT48Y29kZT5uZXh0X3RpdGxlPC9jb2RlPiAoVGl0bGUgb2YgbmV4dCBk b2N1bWVudCBpZiBvbiBhcnRpY2xlIHBhZ2UpPC9saT4KCQk8bGk+PGNvZGU+cHJldl9pZDwv Y29kZT48L2xpPgoJCTxsaT48Y29kZT5wcmV2X3RpdGxlPC9jb2RlPjwvbGk+CgkJPGxpPjxj b2RlPm15X2N1c3RvbV9maWVsZF9uYW1lPC9jb2RlPiAoYW55IGN1c3RvbSBmaWVsZHMgeW91 IGhhdmUgZGVmaW5lZCk8L2xpPgoJCTxsaT48Y29kZT51cmx2YXI6bXlfdmFyaWFibGVfbmFt ZTwvY29kZT4gKGFueSB2YXJpYWJsZSBpbiB0aGUgYWRkcmVzcyBiYXIpPC9saT4KCQk8bGk+ PGNvZGU+c3ZydmFyOm15X3ZhcmlhYmxlX25hbWU8L2NvZGU+IChhbnkgc2VydmVyIHZhcmlh YmxlLCBlLmcuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVFRQPC9zcGFuPl9VU0VSX0FHRU5UKTwv bGk+Cgk8L3VsPjwvcD4KCgk8cD5JZiB5b3Ugc3BlY2lmeSBhIGZpZWxkIG5hbWUgdGhhdCBk b2VzIG5vdCBleGlzdCwgdGhlIHRleHQgeW91IHVzZSB3aWxsIGJlIHRha2VuIHZlcmJhdGlt IGluIG1vc3QgY2FzZXMuPGJyIC8+ClRoZXJlIGlzIG9uZSBzcGVjaWFsIGZpZWxkIDxjb2Rl PnBhcmVudDwvY29kZT4gdGhhdCBjaGVja3MgdGhlIHBhcmVudCBjYXRlZ29yeSBmb3IgYSBt YXRjaC4gU3BlY2lmeWluZyAmIzgyMjA7cGFyZW50JiM4MjIxOyBvbiBpdHMgb3duIHdpbGwg dXNlIHRoZSBnbG9iYWwgY2F0ZWdvcnkgKD9jPSkuIElmIHlvdSBhZGQgPGNvZGU+OkNBVG48 L2NvZGU+IHRvIHRoZSBvcHRpb24gKHdoZXJlICYjODIxNjtuJiM4MjE3OyBpcyAxIG9yIDIp IGl0IHdpbGwgaW5zdGVhZCBjb21wYXJlIGNhdGVnb3J5MSBvciBjYXRlZ29yeTIgcmVzcGVj dGl2ZWx5LiBJZiB5b3UgYWRkIDxjb2RlPjpMVkxuPC9jb2RlPiB0byB0aGUgb3B0aW9uLCB0 aGUgY29tcGFyaXNvbiB3aWxsIGJlIHJlc3RyaWN0ZWQgdG8gdGhhdCAmIzgyMjA7bGV2ZWwm IzgyMjE7IG9mIHN1Yi1jYXRlZ29yeS48L3A+CgoJPHA+WW91IGNhbiB1c2UgPHNwYW4gY2xh c3M9ImNhcHMiPkNBVDwvc3Bhbj4gYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5MVkw8L3NwYW4+ IGluIGNvbWJpbmF0aW9uLCBpbmRlcGVuZGVudGx5IG9yIG5vdCBhdCBhbGwuIFRoaXMgYWxs b3dzIGNvbXBhcmlzb25zIHN1Y2ggYXMgJiM4MjIwO2lmIHRoZSAybmQgc3ViLWNhdGVnb3J5 IG9mIGNhdGVnb3J5MSBjb250YWlucyBibGFoYmxhaCYjODIyMTsgb3IgJiM4MjIwO2lmIGNh dGVnb3J5MiBpcyBhIGNoaWxkIG9mIGJsYWhibGFoJiM4MjIxOy4gU2VlIDxhIGhyZWY9IiNl ZzQiPkV4YW1wbGUgNDwvYT4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0ib3Bl cmF0b3IiPm9wZXJhdG9yPC9oND4KCgk8cD5MaXN0IG9mIG9wZXJhdG9ycyB0byBhcHBseSwg aW4gb3JkZXIsIHRvIGVhY2ggZmllbGQuIENob29zZSBmcm9tOjwvcD4KCgk8dWw+CgkJPGxp Pjxjb2RlPmVxPC9jb2RlPiBFcXVhbCAodGhlIGRlZmF1bHQpPC9saT4KCQk8bGk+PGNvZGU+ bm90PC9jb2RlPiBOb3QgZXF1YWw8L2xpPgoJCTxsaT48Y29kZT5sdDwvY29kZT4gTGVzcyB0 aGFuPC9saT4KCQk8bGk+PGNvZGU+Z3Q8L2NvZGU+IEdyZWF0ZXIgdGhhbjwvbGk+CgkJPGxp Pjxjb2RlPmxlPC9jb2RlPiBMZXNzIHRoYW4gb3IgZXF1YWwgdG88L2xpPgoJCTxsaT48Y29k ZT5nZTwvY29kZT4gR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvPC9saT4KCQk8bGk+PGNvZGU+ YmVnaW5zPC9jb2RlPiBWYXJpYWJsZSBiZWdpbnMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJh Y3RlcnM8L2xpPgoJCTxsaT48Y29kZT5jb250YWluczwvY29kZT4gVmFyaWFibGUgY29udGFp bnMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzPC9saT4KCQk8bGk+PGNvZGU+aXNudW08L2Nv ZGU+IFZhcmlhYmxlIGlzIGEgbnVtYmVyPC9saT4KCQk8bGk+PGNvZGU+aXNlbXB0eTwvY29k ZT4gVmFyaWFibGUgaXMgZW1wdHkgKGNvbnRhaW5zIG5vdGhpbmcpPC9saT4KCQk8bGk+PGNv ZGU+aXN1c2VkPC9jb2RlPiBWYXJpYWJsZSBoYXMgc29tZSB2YWx1ZTwvbGk+CgkJPGxpPjxj b2RlPmRlZmluZWQ8L2NvZGU+IFZhcmlhYmxlIGlzIHNldCAodXNlZnVsIHdpdGggdXJsdmFy IHZhcmlhYmxlcyk8L2xpPgoJCTxsaT48Y29kZT51bmRlZmluZWQ8L2NvZGU+IFZhcmlhYmxl IGlzIG5vdCBzZXQsIG9yIG1pc3NpbmcgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4gbGluZTwvbGk+Cgk8L3VsPgoKCTxwPldpdGggdGhlIGNvbXBhcmlzb24gb3Bl cmF0b3JzIChndCwgbHQsIGdlLCBsZSkgeW91IG1heSBmaW5kIG9kZCBiZWhhdmlvdXIgd2hl biBjb21wYXJpbmcgbnVtYmVycy4gRm9yIGV4YW1wbGUsIDxjb2RlPnVybHZhcjpwaWMgZ3Qg NjwvY29kZT4gd2lsbCByZXR1cm4gPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IGlm IHRoZSA8Y29kZT5waWM8L2NvZGU+IHZhcmlhYmxlIGlzIHNldCB0byAmIzgyMjA7ZnJlZCYj ODIyMTsuIFRoaXMgaXMgYmVjYXVzZSB0aGUgd29yZCAmIzgyMjA7ZnJlZCYjODIyMTsgKG9y IGF0IGxlYXN0IHRoZSAmIzgyMjA7Y2hhcmFjdGVyIGYmIzgyMjE7KSBpcyBncmVhdGVyIGlu IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+QVNDSUk8L3NwYW4+IHRhYmxlIHRoYW4gdGhlICYj ODIyMDtjaGFyYWN0ZXIgNiYjODIyMTsuPC9wPgoKCTxwPlRvIGNpcmN1bXZlbnQgdGhpcyBw cm9ibGVtLCB5b3UgbWF5IGFwcGVuZCA8Y29kZT46TlVNPC9jb2RlPiB0byB0aGUgZW5kIG9m IGFueSBvZiB0aGVzZSA0IG9wZXJhdG9ycyB0byBmb3JjZSB0aGUgcGx1Z2luIHRvIGNoZWNr IHRoYXQgdGhlIHZhbHVlcyBhcmUgaW50ZWdlcnMuPC9wPgoKCTxwPk5vdGUgdGhhdCB3aGls ZSA8Y29kZT5kZWZpbmVkPC9jb2RlPiBhbmQgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBkaWZm ZXIgc2VtYW50aWNhbGx5IGZyb20gPGNvZGU+aXN1c2VkPC9jb2RlPiBhbmQgPGNvZGU+aXNl bXB0eTwvY29kZT4gKHJlc3BlY3RpdmVseSksIHRoZSB3YXkgPHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj4gYXNzaWducyB2YXJpYWJsZXMgbWVhbnMgdGhhdCwgZm9yIHRoZSBtb3N0 IHBhcnQsIHRoZXkgYXJlIGludGVyY2hhbmdlYWJsZS4gT25lIGNhdmVhdCBpcyB0aGF0IDxj b2RlPmRlZmluZWQ8L2NvZGU+IGFuZCA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IGRvbj90IG1h a2Ugc2Vuc2Ugd2l0aCA8Y29kZT5wYXJlbnQ8L2NvZGU+LCBzbyB0aGV5IGFyZSBmb3JiaWRk ZW4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0idmFsdWUiPnZhbHVlPC9oND4K Cgk8cD5MaXN0IG9mIHZhbHVlcyB0byBjb21wYXJlIGVhY2ggZmllbGQgaW4gdHVybiB0by4g Q2FuIGJlIHN0YXRpYyB2YWx1ZXMvdGV4dCBvciB0aGUgbmFtZSBvZiBhbnkgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gZmllbGQsIGxpa2UgdGhvc2UgZ2l2ZW4gaW4gPHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj5maWVsZDwvc3Bhbj4gKGV4Y2VwdCAmIzgyMjA7cGFyZW50JiM4 MjIxOykuIFRvIGRpc3Rpbmd1aXNoIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g ZmllbGQgZnJvbSBzdGF0aWMgdGV4dCwgcHJlZml4IHRoZSBmaWVsZCBuYW1lIHdpdGggPGNv ZGU+PzwvY29kZT4uPC9wPgoKCTxwPkZvciBleGFtcGxlOiA8Y29kZT52YWx1ZT0mIzM0O3Rp dGxlJiMzNDs8L2NvZGU+IHdpbGwgY29tcGFyZSB5b3VyIGZpZWxkIGFnYWluc3QgdGhlIHdv cmQgJiM4MjIwO3RpdGxlJiM4MjIxOywgd2hlcmVhcyA8Y29kZT52YWx1ZT0mIzM0Oz90aXRs ZSYjMzQ7PC9jb2RlPiB3aWxsIGNvbXBhcmUgeW91ciBmaWVsZCBhZ2FpbnMgdGhlIGFydGlj bGUmIzgyMTc7cyB0aXRsZS48L3A+CgoJPHA+Tm90ZSB0aGF0IHlvdSBtYXkgZmluZCB1c2lu ZyBkb3VibGUtcXVvdGVzIGluIGZpZWxkcyB5aWVsZHMgdW5leHBlY3RlZCByZXN1bHRzLiBU aGV5IGFyZSBiZXN0IGF2b2lkZWQsIG9yIHdvcmtlZCBhcm91bmQgYnkgdXNpbmcgPGNvZGU+ Y29udGFpbnM8L2NvZGU+IGluc3RlYWQgb2YgPGNvZGU+ZXE8L2NvZGU+LjwvcD4KCgk8aDQg Y2xhc3M9ImF0dC1uYW1lICIgaWQ9ImxvZ2ljIj5sb2dpYzwvaDQ+CgoJPHA+Q2FuIGJlIG9u ZSBvZiA8Y29kZT5hbmQ8L2NvZGU+ICh0aGUgZGVmYXVsdCkgb3IgPGNvZGU+b3I8L2NvZGU+ LiBJZiB1c2luZyA8Y29kZT5hbmQ8L2NvZGU+LCBhbGwgY29uZGl0aW9ucyBtdXN0IGJlIG1l dCBmb3IgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gcmVzdWx0LiBJZiB1c2lu ZyA8Y29kZT5vcjwvY29kZT4sIGFueSBvZiB0aGUgY29uZGl0aW9ucyB0aGF0IG1hdGNoIHdp bGwgZ2l2ZSBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiByZXN1bHQuPC9wPgoK CTxoMj5FeGFtcGxlczwvaDI+CgoJPGgzIGlkPSJlZzEiPkV4YW1wbGUgMTwvaDM+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mIzYwO3R4cDpzbWRfaWYgZmll bGQ9JiMzNDtzZWN0aW9uLCBpZCYjMzQ7CiAgICAgb3BlcmF0b3I9JiMzNDtiZWdpbnMsIGd0 JiMzNDsKICAgICB2YWx1ZT0mIzM0O2xpb24sIDEyJiMzNDsmIzYyOwogJiM2MDt0eHA6YXJ0 aWNsZSAvJiM2MjsKJiM2MDt0eHA6ZWxzZSAvJiM2MjsKICYjNjA7cCYjNjI7Tm90IHRvZGF5 LCB0aGFua3MmIzYwOy9wJiM2MjsKJiM2MDsvdHhwOnNtZF9pZiYjNjI7CjwvY29kZT48L3By ZT4KCgk8cD5DaGVja3MgaWYgdGhlIGN1cnJlbnQgc2VjdGlvbiBuYW1lIGJlZ2lucyB3aXRo IHRoZSB3b3JkICYjODIyMDtsaW9uJiM4MjIxOyBhbmQgdGhlIGFydGljbGUgSUQgaXMgZ3Jl YXRlciB0aGFuIDEyLiBEaXNwbGF5cyB0aGUgYXJ0aWNsZSBpZiBib3RoIGNvbmRpdGlvbnMg YXJlIG1ldCBvciBkaXNwbGF5cyB0aGUgdGV4dCAmIzgyMjA7Tm90IHRvZGF5LCB0aGFua3Mm IzgyMjE7IGlmIG5vdC48L3A+CgoJPGgzIGlkPSJlZzIiPkV4YW1wbGUgMjwvaDM+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mIzYwO3R4cDpzbWRfaWYgZmll bGQ9JiMzNDtzdW1tYXJ5LCBjYXRlZ29yeSwgdXJsdmFyOnBpYyYjMzQ7CiAgICAgb3BlcmF0 b3I9JiMzNDtpc3VzZWQsIGVxLCBpc251bSYjMzQ7CiAgICAgdmFsdWU9JiMzNDssIGFuaW1h bCAsJiMzNDsgJiM2MjsKICYjNjA7dHhwOmFydGljbGUgLyYjNjI7CiYjNjA7dHhwOmVsc2Ug LyYjNjI7CiAmIzYwO3AmIzYyO05vdCB0b2RheSwgdGhhbmtzJiM2MDsvcCYjNjI7CiYjNjA7 L3R4cDpzbWRfaWYmIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hlY2tzIGlmIHRoZSBjdXN0 b20gZmllbGQgbGFiZWxsZWQgJiM4MjIwO3N1bW1hcnkmIzgyMjE7IGhhcyBzb21lIGRhdGEg aW4gaXQsIGNoZWNrcyBpZiB0aGUgZ2xvYmFsIGNhdGVnb3J5IGVxdWFscyAmIzgyMjA7YW5p bWFsJiM4MjIxOyBhbmQgdGVzdHMgaWYgdGhlIHVybHZhciA8Y29kZT5waWM8L2NvZGU+IGlz IG51bWVyaWMgKGUuZy4gPGNvZGU+P3BpYz01PC9jb2RlPikuPC9wPgoKCTxwPklmIGFsbCB0 aGVzZSBjb25kaXRpb25zIGFyZSBtZXQgdGhlIGFydGljbGUgaXMgZGlzcGxheWVkLCBlbHNl IHRoZSBtZXNzYWdlIGlzIHNob3duLiBOb3RlIHRoYXQgPGNvZGU+aXN1c2VkPC9jb2RlPiBh bmQgPGNvZGU+aXNudW08L2NvZGU+IGRvbiYjODIxNzt0IHRha2UgYXJndW1lbnRzIGZvciA8 Y29kZT52YWx1ZTwvY29kZT4gYW5kIHRoZWlyIHBvc2l0aW9ucyBhcmUgaGVsZCBieSBlbXB0 eSBjb21tYXMgKHRlY2huaWNhbGx5IHRoZSBsYXN0IGNvbW1hIGlzbiYjODIxNzt0IG5lZWRl ZCBidXQgaXQgaGVscHMga2VlcCBldmVyeXRoaW5nIG5lYXQgaWYgeW91IGFkZCBmdXJ0aGVy IHRlc3RzIGxhdGVyIG9uKS48L3A+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzwvaDM+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mIzYwO3R4cDpzbWRfaWYg ZmllbGQ9JiMzNDthcnRpY2xlX2ltYWdlLCBzdnJ2YXI6SFRUUF9VU0VSX0FHRU5UJiMzNDsK ICAgICBvcGVyYXRvcj0mIzM0O2VxLCBjb250YWlucyYjMzQ7CiAgICAgdmFsdWU9JiMzNDt1 cmx2YXI6cGljLCBTYWZhcmkmIzM0OwogICAgIGxvZ2ljPSYjMzQ7b3ImIzM0OyYjNjI7CiAm IzYwO3R4cDphcnRpY2xlIC8mIzYyOwomIzYwO3R4cDplbHNlIC8mIzYyOwogJiM2MDtwJiM2 MjtOb3QgdG9kYXksIHRoYW5rcyYjNjA7L3AmIzYyOwomIzYwOy90eHA6c21kX2lmJiM2MjsK PC9jb2RlPjwvcHJlPgoKCTxwPkNvbXBhcmVzIChmb3IgZXF1YWxpdHkpIHRoZSBjdXJyZW50 IGFydGljbGUgaW1hZ2UgaWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHVybCB2YXJpYWJsZSA8 Y29kZT5waWM8L2NvZGU+IGFuZCBjaGVja3MgaWYgdGhlIHZhbHVlIG9mIHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+SFRUUDwvc3Bhbj5fVVNFUl9BR0VOVCBzdHJpbmcgY29udGFpbnMgJiM4 MjIwO1NhZmFyaSYjODIyMTsuIFRoaXMgZXhhbXBsZSB1c2VzIHRoZSAmIzgyMTY7b3ImIzgy MTc7IGxvZ2ljLCBoZW5jZSBpZiA8ZW0+ZWl0aGVyPC9lbT4gY29uZGl0aW9uIGlzIG1ldCB0 aGUgYXJ0aWNsZSBpcyBzaG93biwgb3RoZXJ3aXNlIHRoZSAmIzgyMTY7bm90IHRvZGF5JiM4 MjE3OyBtZXNzYWdlIGlzIGRpc3BsYXllZC48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUg NDwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mIzYwO3R4 cDpzbWRfaWYgZmllbGQ9JiMzNDtwYXJlbnQ6TFZMMiYjMzQ7CiAgICAgb3BlcmF0b3I9JiMz NDtlcSYjMzQ7CiAgICAgdmFsdWU9JiMzNDttYW1tYWwmIzM0OwogICAgIGxvZ2ljPSYjMzQ7 b3ImIzM0OyYjNjI7CiAmIzYwO3R4cDphcnRpY2xlIC8mIzYyOwomIzYwO3R4cDplbHNlIC8m IzYyOwogJiM2MDtwJiM2MjtOb3QgdG9kYXksIHRoYW5rcyYjNjA7L3AmIzYyOwomIzYwOy90 eHA6c21kX2lmJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoZWNrcyB0aGUgMm5kIHN1Yi1j YXRlZ29yeSBvZiB0aGUgZ2xvYmFsIGNhdGVnb3J5JiM4MjE3O3MgdHJlZSB0byBzZWUgaWYg aXQgZXF1YWxzICYjODIyMDttYW1tYWwmIzgyMjE7LiBJZiBpdCBkb2VzLCBzaG93IHRoZSBh cnRpY2xlOyBpZiBub3Qgc2hvdyB0aGUgbWVzc2FnZS4gUmVtb3ZlIHRoZSA8Y29kZT46TFZM MjwvY29kZT4gdG8gc2VlIGlmIHRoZSBjdXJyZW50IGdsb2JhbCBjYXRlZ29yeSBpcyBhIGNo aWxkIG9mICYjODIxNjttYW1tYWwmIzgyMTc7IChhdCBhbnkgbGV2ZWwpLiBDaGFuZ2UgdGhl IGZpZWxkIHRvIDxjb2RlPnBhcmVudDpDQVQxPC9jb2RlPiB0byBzZWUgaWYgdGhlIGFydGlj bGUmIzgyMTc7cyBjYXRlZ29yeTEgbWF0Y2hlcyAmIzgyMTY7bWFtbWFsJiM4MjE3OyBhdCBh bnkgbGV2ZWwgb3IgdXNlIDxjb2RlPmZpZWxkPSYjMzQ7cGFyZW50OkNBVDE6TFZMMiYjMzQ7 PC9jb2RlPiB0byBjb21iaW5lIHRoZSBjaGVja3MuPC9wPgoKCTxoMyBpZD0iZWc1Ij5FeGFt cGxlIDU8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+JiM2 MDt0eHA6c21kX2lmIGZpZWxkPSYjMzQ7dXJsdmFyOnBpYywgdXJsdmFyOmhpZGUmIzM0Owog ICAgIG9wZXJhdG9yPSYjMzQ7Z3Q6TlVNLCB1bmRlZmluZWQmIzM0OwogICAgIHZhbHVlPSYj MzQ7P2FydGljbGVfaW1hZ2UsJiMzNDsmIzYyOwogJiM2MDt0eHA6YXJ0aWNsZSAvJiM2MjsK JiM2MDt0eHA6ZWxzZSAvJiM2MjsKICYjNjA7cCYjNjI7Tm90IHRvZGF5LCB0aGFua3MmIzYw Oy9wJiM2MjsKJiM2MDsvdHhwOnNtZF9pZiYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5UZXN0 cyBpZiB0aGUgdXJsIHZhcmlhYmxlIDxjb2RlPnBpYzwvY29kZT4gaXMgc3RyaWN0bHkgbnVt ZXJpY2FsbHkgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBpbiB0aGUgY3VycmVudCBhcnRpY2xl JiM4MjE3O3MgPGNvZGU+YXJ0aWNsZV9pbWFnZTwvY29kZT4gZmllbGQgYW5kIHRoYXQgdGhl IHVybCB2YXJpYWJsZSA8Y29kZT5oaWRlPC9jb2RlPiBpcyBtaXNzaW5nIGZyb20gdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGFkZHJlc3MuPC9wPgoKCTxoMiBjbGFzcz0i Y2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2gyPgoKCTx1bD4KCQk8bGk+MzAgRGVjIDA3IHwgPGEg aHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfaWZfdjAuMS50eHQi PnYwLjE8L2E+IHwgSW5pdGlhbCByZWxlYXNlPC9saT4KCQk8bGk+MzAgRGVjIDA3IHwgPGEg aHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfaWZfdjAuMi50eHQi PnYwLjI8L2E+IHwgQWRkZWQgcGFyZW50IGNhdGVnb3J5IGNoZWNraW5nICh0aGFua3MgdGhl X2dob3N0KTwvbGk+CgkJPGxpPjAyIEphbiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS9kb3dubG9hZHMvc21kX2lmX3YwLjMudHh0Ij52MC4zPC9hPiB8IEFkZGVkIGRl ZmluZWQvdW5kZWZpbmVkIGFuZCBzdHJpY3QgbnVtZXJpYyBjb21wYXJpc29uczwvbGk+CgkJ PGxpPjA2IEphbiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9h ZHMvc21kX2lmX3YwLjQudHh0Ij52MC40PC9hPiB8IEFkZGVkIDxjb2RlPj88L2NvZGU+IG5v dGF0aW9uIHRvIGFsbG93IHRoZSB2YWx1ZSB0byByZWFkIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IGZpZWxkcy4gQmV0dGVyIHF1b3RlIHN1cHBvcnQgKGJvdGggdGhhbmtzIE5l aWxBKTwvbGk+CgkJPGxpPjA2IEphbiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS9kb3dubG9hZHMvc21kX2lmX3YwLjQxLnR4dCI+djAuNDE8L2E+IHwgRml4ZWQgbG93 ZXIgY2FzZSBmaWVsZCBuYW1lcyBhbmQgdW5kZWZpbmVkIGluZGV4IGVycm9yICh0aGFua3Mg cGV0ZXJqKTxiciAvPgo8L2Rpdj48L2xpPgoJPC91bD4iO3M6MzoiY3NzIjtzOjExMzY6Ijxz dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuMyA7fQoj c21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291 cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZG Q0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVy OjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpi bG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxw IGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29y YXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJv dHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29s b3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNv bGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAj MzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1h bGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xp ZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2Vv cmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzY5MzsgZm9udDog Ym9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJn aW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7fQojc21kX2hlbHAgaDQg eyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAx cHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3Nt ZF9oZWxwIC5hdHQtbmFtZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0KI3NtZF9oZWxwIC5tYW5k IHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9Cjwvc3R5bGU+ IjtzOjQ6ImNvZGUiO3M6NTQ3MjoiZnVuY3Rpb24gc21kX2lmKCRhdHRzLCR0aGluZykgewoJ Z2xvYmFsICR0aGlzYXJ0aWNsZSwgJHByZXRleHQ7CgoJZXh0cmFjdChsQXR0cyhhcnJheSgK CQknZmllbGQnID0+ICcnLAoJCSdvcGVyYXRvcicgPT4gJ2VxJywKCQkndmFsdWUnID0+ICcn LAoJCSdsb2dpYycgPT4gJ2FuZCcsCgkJJ2RlYnVnJyA9PiAnMCcsCgkpLCAkYXR0cykpOwoK CS8vIFNwZWNpYWwgZmllbGQgbmFtZXMgdGhhdCByZWZlciB0byAkcHJldGV4dCBvciBlbHNl d2hlcmUgLSBldmVyeXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0bwoJLy8gZXhpc3QgaW4gJHRo aXNhcnRpY2xlIHNvIGN1c3RvbSBmaWVsZHMgY2FuIGJlIHVzZWQKCSRhbGxQdHh0ID0gYXJy YXkoCgkJImlkIiA9PiAnJHByZXRleHRbImlkIl0nLAoJCSJzZWN0aW9uIiA9PiAnJHByZXRl eHRbInMiXScsCgkJImNhdGVnb3J5IiA9PiAnJHByZXRleHRbImMiXScsCgkJInF1ZXJ5IiA9 PiAnJHByZXRleHRbInEiXScsCgkJInBnIiA9PiAnJHByZXRleHRbInBnIl0nLAoJCSJzdGF0 dXMiID0+ICckcHJldGV4dFsic3RhdHVzIl0nLAoJCSJuZXh0X2lkIiA9PiAoKGlzc2V0KCRw cmV0ZXh0WyduZXh0X2lkJ10pKSA/ICckcHJldGV4dFsibmV4dF9pZCJdJyA6ICcnKSwKCQki bmV4dF90aXRsZSIgPT4gKChpc3NldCgkcHJldGV4dFsnbmV4dF90aXRsZSddKSkgPyAnJHBy ZXRleHRbIm5leHRfdGl0bGUiXScgOiAnJyksCgkJInByZXZfaWQiID0+ICgoaXNzZXQoJHBy ZXRleHRbJ3ByZXZfaWQnXSkpID8gJyRwcmV0ZXh0WyJwcmV2X2lkIl0nIDogJycpLAoJCSJw cmV2X3RpdGxlIiA9PiAoKGlzc2V0KCRwcmV0ZXh0WydwcmV2X3RpdGxlJ10pKSA/ICckcHJl dGV4dFsicHJldl90aXRsZSJdJyA6ICcnKSwKCSk7CgkvLyBFYWNoIGVudHJ5IGhhcyB0aGUg b3BlcmF0aW9uIHRvIGJlIGV2YWwoKWQgbGF0ZXIsIGl0J3MgInR5cGUiICh0ZXN0IFZBTHVl IG9yIFZBUmlhYmxlKSBhbmQgYSBsaXN0IG9mIGRpc2FsbG93ZWQgZmllbGRzCgkkYWxsT3Bz ID0gYXJyYXkoCgkJJ2VxJyA9PiBhcnJheSgnRklFTEQgPT09IFZBTFVFJywgJ1ZBTCcsICcn KSwKCQknbm90JyA9PiBhcnJheSgnRklFTEQgIT09IFZBTFVFJywgJ1ZBTCcsICcnKSwKCQkn Z3QnID0+IGFycmF5KCdDQVNUIEZJRUxEID4gQ0FTVCBWQUxVRScsICdWQUwnLCAnJyksCgkJ J2dlJyA9PiBhcnJheSgnQ0FTVCBGSUVMRCA+PSBDQVNUIFZBTFVFJywgJ1ZBTCcsICcnKSwK CQknbHQnID0+IGFycmF5KCdDQVNUIEZJRUxEIDwgQ0FTVCBWQUxVRScsICdWQUwnLCAnJyks CgkJJ2xlJyA9PiBhcnJheSgnQ0FTVCBGSUVMRCA8PSBDQVNUIFZBTFVFJywgJ1ZBTCcsICcn KSwKCQknYmVnaW5zJyA9PiBhcnJheSgnc3RycG9zKEZJRUxELCBWQUxVRSkgPT09IDAnLCAn VkFMJywgJycpLAoJCSdjb250YWlucycgPT4gYXJyYXkoJ3N0cnBvcyhGSUVMRCwgVkFMVUUp ICE9PSBmYWxzZScsICdWQUwnLCAnJyksCgkJJ2RlZmluZWQnID0+IGFycmF5KCdpc3NldChG SUVMRCknLCAnVkFSJywgJ3BhcmVudCcpLAoJCSd1bmRlZmluZWQnID0+IGFycmF5KCchaXNz ZXQoRklFTEQpJywgJ1ZBUicsICdwYXJlbnQnKSwKCQknaXNudW0nID0+IGFycmF5KCdpc19u dW1lcmljKEZJRUxEKScsICdWQUwnLCAnJyksCgkJJ2lzZW1wdHknID0+IGFycmF5KCdGSUVM RCA9PSAiIicsICdWQUwnLCAnJyksCgkJJ2lzdXNlZCcgPT4gYXJyYXkoJ0ZJRUxEICE9ICIi JywgJ1ZBTCcsICcnKSwKCSk7CgkkbnVtZXJpY09wcyA9ICJndCwgZ2UsIGx0LCBsZSI7Cgkk ZmllbGRzID0gZG9fbGlzdCgkZmllbGQpOwoJJG9wcyA9IGRvX2xpc3QoJG9wZXJhdG9yKTsK CSR2YWxzID0gZG9fbGlzdCgkdmFsdWUpOwoJJG51bVZhbHMgPSBjb3VudCgkdmFscyk7Cgkk b3V0ID0gYXJyYXkoKTsKCglmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGZpZWxkcyk7 ICRpZHgrKykgewoJCSRmbGQgPSAkZmllbGRzWyRpZHhdOwoJCSRmbGRQYXJ0cyA9IGV4cGxv ZGUoIjoiLCAkZmxkKTsKCQkkdmFsID0gKCRpZHggPCAkbnVtVmFscykgPyAkdmFsc1skaWR4 XSA6ICcnOwoJCSR2YWxQYXJ0cyA9IGV4cGxvZGUoIjoiLCAkdmFsKTsKCQkkb3AgPSAkb3Bz WyRpZHhdOwoJCSRvcFBhcnRzID0gZXhwbG9kZSgiOiIsICRvcCk7CgkJJG9wID0gKGFycmF5 X2tleV9leGlzdHMoJG9wUGFydHNbMF0sICRhbGxPcHMpKSA/ICRvcFBhcnRzWzBdIDogImVx IjsKCQkkY2FzdCA9ICgoY291bnQoJG9wUGFydHMpID09IDIpICYmICgkb3BQYXJ0c1sxXSA9 PT0gIk5VTSIpICYmIChpbl9saXN0KCRvcCwgJG51bWVyaWNPcHMpKSkgPyAnKGludCknIDog Jyc7CgoJCS8vIEdldCB0aGUgb3BlcmF0b3IgcmVwbGFjZW1lbnQgY29kZQoJCSR0eXBlID0g JGFsbE9wc1skb3BdWzFdOwoJCSRleGNsdWRlID0gZG9fbGlzdCgkYWxsT3BzWyRvcF1bMl0p OwoJCSRvcCA9ICRhbGxPcHNbJG9wXVswXTsKCgkJLy8gQXMgbG9uZyBhcyB0aGUgY3VycmVu dCBvcGVyYXRvciBhbGxvd3MgdGhpcyBmaWVsZC4uLgoJCWlmICghaW5fYXJyYXkoJGZsZFBh cnRzWzBdLCAkZXhjbHVkZSkpIHsKCQkJLy8gTWFrZSB1cCB0aGUgdGVzdCBmaWVsZCB2YXJp YWJsZQoJCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygkZmxkUGFydHNbMF0sICRhbGxQdHh0KSkg ewoJCQkJJGZsZCA9ICRhbGxQdHh0WyRmbGRQYXJ0c1swXV07CgkJCX0gZWxzZSBpZiAoJGZs ZFBhcnRzWzBdID09ICJwYXJlbnQiKSB7CgkJCQkkbGV2ZWwgPSAnJzsKCQkJCWZvcmVhY2gg KCRmbGRQYXJ0cyBhcyAkcGFydCkgewoJCQkJCWlmICgkcGFydCA9PSAicGFyZW50IikgewoJ CQkJCQkkdGhlQ2F0ID0gJHByZXRleHRbJ2MnXTsKCQkJCQl9IGVsc2UgaWYgKHN0cnBvcygk cGFydCwgIkNBVCIpID09PSAwKSB7CgkJCQkJCSR0aGVDYXQgPSAkdGhpc2FydGljbGVbImNh dGVnb3J5Ii5zdWJzdHIoJHBhcnQsIDMpXTsKCQkJCQl9IGVsc2UgaWYgKHN0cnBvcygkcGFy dCwgIkxWTCIpID09PSAwKSB7CgkJCQkJCSRsZXZlbCA9IHN1YnN0cigkcGFydCwgMyk7CgkJ CQkJfQoJCQkJfQoKCQkJCSR0cmVlID0gZ2V0VHJlZVBhdGgoZG9TbGFzaCgkdGhlQ2F0KSwg J2FydGljbGUnKTsKCQkJCWlmICgkZGVidWcpIHsKCQkJCQlkbXAoJHRyZWUpOwoJCQkJfQoJ CQkJJGl0ZW1zID0gYXJyYXkoKTsKCQkJCWZvcmVhY2ggKCR0cmVlIGFzICRsZWFmKSB7CgkJ CQkJaWYgKCRsZWFmWyduYW1lJ10gPT0gInJvb3QiIHx8ICRsZWFmWyduYW1lJ10gPT0gJHRo ZUNhdCkgewoJCQkJCQljb250aW51ZTsKCQkJCQl9IGVsc2UgaWYgKCRsZXZlbCA9PSAnJyB8 fCAkbGV2ZWwgPT0gJGxlYWZbJ2xldmVsJ10pIHsKCQkJCQkJJGl0ZW1zW10gPSAkbGVhZlsn bmFtZSddOwoJCQkJCX0KCQkJCX0KCQkJCSRmbGQgPSBkb1F1b3RlKGltcGxvZGUoIiAiLCAk aXRlbXMpKTsKCQkJfSBlbHNlIGlmICgkZmxkUGFydHNbMF0gPT0gInVybHZhciIpIHsKCQkJ CWlmIChjb3VudCgkZmxkUGFydHMpID09IDIpIHsKCQkJCQkkZmxkID0gKGdwcygkZmxkUGFy dHNbMV0pICE9PSAnJykgPyAnJF9HRVRbIicuJGZsZFBhcnRzWzFdLiciXScgOiBkb1F1b3Rl KGltcGxvZGUoIiIsICRmbGRQYXJ0cykpOwoJCQkJfQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0 c1swXSA9PSAic3ZydmFyIikgewoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykgPT0gMikgewoJ CQkJCSRmbGQgPSAoc2VydmVyU2V0KCRmbGRQYXJ0c1sxXSkgIT09ICcnKSA/ICckX1NFUlZF UlsiJy4kZmxkUGFydHNbMV0uJyJdJyA6IGRvUXVvdGUoaW1wbG9kZSgiIiwgJGZsZFBhcnRz KSk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkZmxkID0gJyR0aGlzYXJ0aWNsZVsiJy5zdHJ0 b2xvd2VyKCRmbGRQYXJ0c1swXSkuJyJdJzsKCQkJfQoKCQkJLy8gRmluZCB0aGUgcmVhbCB2 YWx1ZSB0byBjb21wYXJlIGFnYWluc3QgKG1heSBiZSBhbm90aGVyIGZpZWxkKQoJCQlpZiAo JHZhbFBhcnRzWzBdID09ICJ1cmx2YXIiKSB7CgkJCQlpZiAoY291bnQoJHZhbFBhcnRzKSA9 PSAyKSB7CgkJCQkJJHZhbCA9IChncHMoJHZhbFBhcnRzWzFdKSAhPT0gJycpID8gJyRfR0VU WyInLiR2YWxQYXJ0c1sxXS4nIl0nIDogZG9RdW90ZShpbXBsb2RlKCIiLCAkdmFsUGFydHMp KTsKCQkJCX0KCQkJfSBlbHNlIGlmICgkdmFsUGFydHNbMF0gPT0gInN2cnZhciIpIHsKCQkJ CWlmIChjb3VudCgkdmFsUGFydHMpID09IDIpIHsKCQkJCQkkdmFsID0gKHNlcnZlclNldCgk dmFsUGFydHNbMV0pICE9PSAnJykgPyAnJF9TRVJWRVJbIicuJHZhbFBhcnRzWzFdLiciXScg OiBkb1F1b3RlKGltcGxvZGUoIiIsICR2YWxQYXJ0cykpOwoJCQkJfQoJCQl9IGVsc2UgaWYg KHN0cnBvcygkdmFsUGFydHNbMF0sICI/IikgPT09IDApIHsKCQkJCSR2YWxQYXJ0c1swXSA9 IHN1YnN0cihzdHJ0b2xvd2VyKCR2YWxQYXJ0c1swXSksIDEpOwoJCQkJaWYgKGFycmF5X2tl eV9leGlzdHMoJHZhbFBhcnRzWzBdLCAkYWxsUHR4dCkpIHsKCQkJCQkkdmFsID0gJGFsbFB0 eHRbJHZhbFBhcnRzWzBdXTsKCQkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyR2 YWxQYXJ0c1swXV0pKSB7CgkJCQkJJHZhbCA9ICckdGhpc2FydGljbGVbIicuJHZhbFBhcnRz WzBdLiciXSc7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkdmFsID0gZG9RdW90ZShzdHJfcmVw bGFjZSgnIicsICdcIicsICR2YWxQYXJ0c1swXSkpOwoJCQl9CgoJCQkvLyBDaGVjayB0aGUg dHlwZSBhbmQgZml4IHRoZSB2YXJpYWJsZSBpZiBuZWNlc3NhcnkKCQkJaWYgKCgkdHlwZSA9 PSAiVkFSIikgJiYgIShzdHJwb3MoJGZsZCwgIiQiKSA9PT0gMCkpIHsKCQkJCSRmbGQgPSAi JCIucHJlZ19yZXBsYWNlKCIvW15hLXpBLVowLTlcX10rLyIsICIiLCAkZmxkKTsKCQkJfQoK CQkJLy8gUmVwbGFjZSB0aGUgc3RyaW5nIHBhcnRzLi4uCgkJCSRjbWQgPSBzdHJfcmVwbGFj ZSgiQ0FTVCIsICRjYXN0LCAkb3ApOwoJCQkkY21kID0gc3RyX3JlcGxhY2UoIkZJRUxEIiwg JGZsZCwgJGNtZCk7CgkJCSRjbWQgPSAiXCRvdXRbXSA9ICgiLnN0cl9yZXBsYWNlKCJWQUxV RSIsICgoJHZhbD09JycgJiYgc3RycG9zKCRvcCwgInN0cnBvcyIpICE9PSBmYWxzZSkgPyAn ICcgOiAkdmFsKSwgJGNtZCkuIikgPyAndHJ1ZScgOiAnZmFsc2UnOyI7CgkJCWlmICgkZGVi dWcpIHsKCQkJCWRtcCgkY21kKTsKCQkJfQoJCQkvLyAuLi4gYW5kIGV2YWx1YXRlIHRoZSBl eHByZXNzaW9uCgkJCWV2YWwoJGNtZCk7CgkJfQoJfQoJaWYgKCRkZWJ1ZykgewoJCWRtcCgk b3V0KTsKCX0KCS8vIENoZWNrIGxvZ2ljCgkkcmVzdWx0ID0gdHJ1ZTsKCWlmIChzdHJ0b2xv d2VyKCRsb2dpYykgPT0gImFuZCIgJiYgaW5fYXJyYXkoImZhbHNlIiwgJG91dCkpIHsKCQkk cmVzdWx0ID0gZmFsc2U7Cgl9CglpZiAoc3RydG9sb3dlcigkbG9naWMpID09ICJvciIgJiYg IWluX2FycmF5KCJ0cnVlIiwgJG91dCkpIHsKCQkkcmVzdWx0ID0gZmFsc2U7Cgl9CgoJcmV0 dXJuIHBhcnNlKEV2YWxFbHNlKCR0aGluZywgJHJlc3VsdCkpOwp9IjtzOjM6Im1kNSI7czoz MjoiNTgxYWVkNTY4MTI1ZGFlMzQ4YTQ3MmQwMTZiODFkNGMiO30=