# Name: smd_horizon v0.1 # Type: Client side plugin # Next/previous article without restrictions # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfaG9yaXpvbiI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6MzoiMC4xIjtzOjExOiJkZXNjcmlwdGlvbiI7czo0 MjoiTmV4dC9wcmV2aW91cyBhcnRpY2xlIHdpdGhvdXQgcmVzdHJpY3Rpb25zIjtzOjQ6Imhl bHAiO3M6Mjc0NTI6IjxkaXYgaWQ9InNtZF9oZWxwIj4NCg0KCTxoMSBpZD0idG9wIj5zbWRf aG9yaXpvbjwvaDE+DQoNCgk8cD5UaGUgZXhpc3RpbmcgdGFncyA8Y29kZT4mbHQ7dHhwOm5l eHRfdGl0bGUgLyZndDs8L2NvZGU+LCA8Y29kZT4mbHQ7dHhwOmxpbmtfdG9fbmV4dCAvJmd0 OzwvY29kZT4gYW5kIHRoZWlyIDxjb2RlPnByZXY8L2NvZGU+IGNvdW50ZXJwYXJ0cyBjZWFz ZSB0byBmdW5jdGlvbiB3aGVuIHRoZXkgcmVhY2ggdGhlIGZpcnN0L2xhc3QgcG9zdGVkIGFy dGljbGUgaW4gYSBzZWN0aW9uLiBJZiB5b3UgaGF2ZSBldmVyIHdhbnRlZCB0byBuYXZpZ2F0 ZSBvZmYgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGdyaWQsIHRoaXMgcGx1 Z2luIGNhbiBoZWxwLjwvcD4NCg0KCTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4N Cg0KCTx1bD4NCgkJPGxpPkFiaWxpdHkgdG8gbGluayB0byBhcnRpY2xlcyB0aGF0IGFyZSB0 byBiZSBwdWJsaXNoZWQgaW4gZnV0dXJlOyA8Y29kZT4mbHQ7dHhwOm5leHQvcHJldl90aXRs ZSAvJmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDt0eHA6bGlua190b19uZXh0L3ByZXYmZ3Q7 PC9jb2RlPiB3b3JrIGJleW9uZCB0aGUgZXhpc3RpbmcgUG9zdGVkIHJhbmdlPC9saT4NCgkJ PGxpPkRldGVjdGlvbiBvZiB3aGVuIHlvdSBhcmUgYWJvdXQgdG8gJiM4MjIwO2ZhbGwgb2Zm IHRoZSBlbmQmIzgyMjE7IG9mIGEgc2VjdGlvbiBvciBjYXRlZ29yeSwgaW4gZWl0aGVyIGRp cmVjdGlvbjwvbGk+DQoJCTxsaT5FbnRpcmUgYWRqYWNlbnQgYXJ0aWNsZSBjb250ZW50cyBh dmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgYXJ0aWNsZSBmb3IgeW91ciAobWlzKXVzZSBzbyB5 b3UgY2FuIHRlYXNlIHBlb3BsZSB3aXRoIHdoYXQmIzgyMTc7cyBjb21pbmcgbmV4dCBvciB1 c2UgYW55IGFydGljbGUgY29udGVudCBhcyBhIGxpbms8L2xpPg0KCQk8bGk+TmF2aWdhdGUg c2VhbWxlc3NseSBiZXR3ZWVuIG1hbnkgc2VjdGlvbnMsIGNhdGVnb3JpZXMgb3IgYXV0aG9y czwvbGk+DQoJPC91bD4NCg0KCTxoMiBpZD0iYXV0aG9yIj5BdXRob3IgLyBjcmVkaXRzPC9o Mj4NCg0KCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0Ij5TdGVm IERhd3NvbjwvYT4uPC9wPg0KDQoJPGgyIGlkPSJpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBV bmluc3RhbGxhdGlvbjwvaDI+DQoNCgk8cCBjbGFzcz0icmVxdWlyZWQiPlJlcXVpcmVzIFRl eHRwYXR0ZXJuIDQuMC43KzwvcD4NCg0KCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBl aXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzEwNzkvc21k X2hvcml6b24iPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8v c3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBp bnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVn aW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEg aHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTMw NDY0Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRo ZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4NCg0KCTxwPlRvIHVu aW5zdGFsbCwgc2ltcGx5IGRlbGV0ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVnaW5zIHBh Z2UuPC9wPg0KDQoJPGgyIGlkPSJucCI+VGFnczogPGNvZGU+Jmx0O3R4cDpzbWRfbmV4dCZn dDs8L2NvZGU+IC8gPGNvZGU+Jmx0O3R4cDpzbWRfcHJldiZndDs8L2NvZGU+PC9oMj4NCg0K CTxwPldyYXAgZWl0aGVyIDxjb2RlPiZsdDt0eHA6c21kX25leHQmZ3Q7PC9jb2RlPiBvciA8 Y29kZT4mbHQ7dHhwOnNtZF9wcmV2Jmd0OzwvY29kZT4gYXJvdW5kIGV4aXN0aW5nIDxjb2Rl PiZsdDt0eHA6bGlua190b19uZXh0L3ByZXYgLyZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7 dHhwOm5leHQvcHJldl90aXRsZSAvJmd0OzwvY29kZT4gdGFncyB0byBiZSBhYmxlIHRvIG5h dmlnYXRlIG11bHRpcGxlIHNlY3Rpb25zIG9yIGZ1dHVyZSBhcnRpY2xlcy48L3A+DQoNCgk8 aDMgY2xhc3M9ImF0dHMgIiBpZD0ibnBhdHRzIj5BdHRyaWJ1dGVzPC9oMz4NCg0KCTx1bD4N CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zZWN0aW9uPC9zcGFuPiA6IG5hdmlnYXRlIGFt b25nIGFydGljbGVzIGluIHRoaXMgbGlzdCBvZiBzZWN0aW9ucy4gRGVmYXVsdDogY3VycmVu dCBzZWN0aW9uPC9saT4NCgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jYXRlZ29yeTwvc3Bh bj4gOiBuYXZpZ2F0ZSBhbW9uZyBhcnRpY2xlcyBoYXZpbmcgdGhpcyBsaXN0IG9mIGNhdGVn b3JpZXMuIERlZmF1bHQ6IGN1cnJlbnQgY2F0ZWdvcnk8L2xpPg0KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiBuYXZpZ2F0ZSBhbW9uZyBhcnRpY2xlcyBieSB0 aGlzIGxpc3Qgb2YgYXV0aG9yIElEcy4gRGVmYXVsdDogY3VycmVudCBhdXRob3I8L2xpPg0K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnJlYWxuYW1lPC9zcGFuPiA6IG5hdmlnYXRlIGFt b25nIGFydGljbGVzIGJ5IHRoaXMgbGlzdCBvZiBhdXRob3IgUmVhbCBOYW1lcy4gRGVmYXVs dDogdW5zZXQuIE5vdGUgdGhpcyBhZGRzIG9uZSBkYXRhYmFzZSBxdWVyeSB0byB0aGUgcGFn ZSBzbyBpZiB5b3UgY2FuIHBvc3NpYmx5IHVzZSA8Y29kZT5hdXRob3I8L2NvZGU+IGluc3Rl YWQsIGRvIHNvPC9saT4NCgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdGF0dXM8L3NwYW4+ IDogdGFrZSBhcnRpY2xlcyBpbiB0aGlzIGxpc3Qgb2Ygc3RhdHVzIGludG8gY29uc2lkZXJh dGlvbi4gVXNlIGVpdGhlciB0aGUgbmFtZSAoPGNvZGU+bGl2ZTwvY29kZT4sIDxjb2RlPmhp ZGRlbjwvY29kZT4sIGV0Yykgb3IgdGhlaXIgZXF1aXZhbGVudCBudW1lcmljIHZhbHVlcy4g RGVmYXVsdDogPGNvZGU+bGl2ZTwvY29kZT4uIE5vdGU6IHlvdSBzdGlsbCBjYW5ub3QgYWN0 dWFsbHkgPGVtPnZpZXc8L2VtPiAoaS5lLiBuYXZpZ2F0ZSB0bykgYXJ0aWNsZXMgdGhhdCBh cmUgbm90IExpdmUgb3IgU3RpY2t5IGJ1dCB5b3UgY2FuIHNlZSB0aGVpciBjb250ZW50cyBm cm9tIHRoZSBjdXJyZW50IGFydGljbGUgKGkuZS4gcHJldmlldyB0aGVtOiBzZWUgPGEgaHJl Zj0iI2VnMyI+ZXhhbXBsZSAzPC9hPik8L2xpPg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnRpbWU8L3NwYW4+IDogY2hvb3NlIHdoaWNoIHRpbWVmcmFtZSB5b3VyIGFydGljbGVzIHNo b3VsZCBiZSBpbi4gRWl0aGVyIDxjb2RlPmFueTwvY29kZT4sIDxjb2RlPmZ1dHVyZTwvY29k ZT4sIG9yIDxjb2RlPnBhc3Q8L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+PC9s aT4NCgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kYXRhc29ydDwvc3Bhbj4gOiBvcmRlciB0 aGUgYXJ0aWNsZXMgYnkgdGhlc2UgZGF0YSBpdGVtczxzdXAgY2xhc3M9ImZvb3Rub3RlIj48 YSBocmVmPSIjZm4xNzI3MzQ3MjQxNDllYjY0NTI0YTE5OCI+MTwvYT48L3N1cD4uIFlvdSBz aG91bGQgbm90IG5vcm1hbGx5IG5lZWQgdGhpcyBhcyBpdCBhdXRvbWF0aWNhbGx5IHNvcnRz IGJhc2VkIG9uIHlvdXIgc2VjdGlvbiwgY2F0ZWdvcnkgYW5kIGF1dGhvciBmaWx0ZXJzLiBE ZWZhdWx0OiA8Y29kZT5zZWN0aW9uLCBjYXRlZ29yeTEsIGNhdGVnb3J5MiwgYXV0aG9yPC9j b2RlPi4gTm90ZSB0aGF0IHVubGlrZSByZWd1bGFyIHNvcnQgb3B0aW9ucyB0aGlzIGRvZXMg PGVtPm5vdDwvZW0+IHRha2UgPGNvZGU+YXNjPC9jb2RlPiBvciA8Y29kZT5kZXNjPC9jb2Rl PjogdGhlIHNvcnQgb3JkZXIgaXMgZGV0ZXJtaW5lZCBieSB3aGV0aGVyIHlvdSBhcmUgdXNp bmcgc21kX3ByZXYgb3Igc21kX25leHQ8L2xpPg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnRpbWVzb3J0PC9zcGFuPiA6IG9yZGVyIGFydGljbGVzIGJ5IHRoZXNlIHRpbWUgb3B0aW9u czxzdXAgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm4xNzI3MzQ3MjQxNDllYjY0NTI0 YTE5OCI+MTwvYT48L3N1cD4uIENhbiBiZSBhbnkgb2YgPGNvZGU+cG9zdGVkPC9jb2RlPiwg PGNvZGU+bGFzdG1vZDwvY29kZT4gb3IgPGNvZGU+ZXhwaXJlczwvY29kZT4uIERlZmF1bHQ6 IDxjb2RlPnBvc3RlZDwvY29kZT48L2xpPg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZv cm08L3NwYW4+IDogaWYgeW91IHByZWZlciB0byB1c2UgYSBmb3JtIGluc3RlYWQgb2YgdGhl IGNvbnRhaW5lciB0byBob2xkIHlvdXIgbWFya3VwIGFuZCB0YWdzLCBzcGVjaWZ5IGl0IGhl cmUuIERlZmF1bHQ6IHVuc2V0LjwvbGk+DQoJPC91bD4NCg0KCTxwIGlkPSJmbjE3MjczNDcy NDE0OWViNjQ1MjRhMTk4IiBjbGFzcz0iZm9vdG5vdGUiPjxzdXA+MTwvc3VwPiBUaGUgcmVh c29uIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygc29ydCBvcHRpb25zIGlzIGJlY2F1c2UgdGhl ICYjODIxNjtkYXRhc29ydCYjODIxNzsgaXMgYXBwbGllZCBmaXJzdC4gVGh1cywgaW4gdGhl IGNhc2Ugb2YgbGlua2luZyBhbW9uZyBtdWx0aXBsZSBzZWN0aW9ucywgYXJ0aWNsZXMgYXJl IGFsd2F5cyBvcmRlcmVkIGJ5IGRhdGUgPGVtPndpdGhpbjwvZW0+IGEgc2VjdGlvbi4gSWYg dGhpcyB3ZXJlIG5vdCB0aGUgY2FzZSwgeW91ciBhcnRpY2xlcyBtaWdodCBiZSBtdWRkbGVk IHVwIGFuZCBpdCB3b3VsZCBiZSB2ZXJ5IGRpZmZpY3VsdCB0byBrbm93IHdoZW4geW91IGhh dmUgcmVhY2hlZCB0aGUgJiM4MjE2O2VuZCYjODIxNzsgb2YgYSBzZWN0aW9uIG9yIGNhdGVn b3J5LjwvcD4NCg0KCTxoMiBpZD0ibGlua3RvIj5UYWdzOiA8Y29kZT4mbHQ7dHhwOnNtZF9s aW5rX3RvX25leHQmZ3Q7PC9jb2RlPiAvIDxjb2RlPiZsdDt0eHA6c21kX2xpbmtfdG9fcHJl diZndDs8L2NvZGU+PC9oMj4NCg0KCTxwPkEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgdGhl IGJ1aWx0LWluIG5hdmlnYXRpb24gdGFncywgd2l0aCBhIGZldyBhZGRpdGlvbmFsIGF0dHJp YnV0ZXM6PC9wPg0KDQoJPHVsPg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8 L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnLCB3aXRob3V0IGl0cyBicmFja2V0cywgdG8gd3Jh cCByb3VuZCB0aGUgbGluaywgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZxdW90Ozwv Y29kZT4uIElmIHVzZWQgYXMgYSBTaW5nbGUgdGFnLCB0aGlzIGF0dHJpYnV0ZSBpcyBpZ25v cmVkLiBEZWZhdWx0OiB1bnNldDwvbGk+DQoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xh c3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5h bWUgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWcuIElmIG5vIHdyYXB0YWcgaXMgZ2l2ZW4sIHRo ZSBjbGFzcyBpcyBhcHBsaWVkIGRpcmVjdGx5IHRvIHRoZSBsaW5rIGl0c2VsZi4gSWYgdXNl ZCBhcyBhIFNpbmdsZSB0YWcsIHRoaXMgYXR0cmlidXRlIGlzIGlnbm9yZWQuIERlZmF1bHQ6 IHVuc2V0PC9saT4NCgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj51cmx2YXJzPC9zcGFuPiA6 IGEgbGlzdCBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBuYW1l cyB0byBhZGQgdG8gdGhlIGdlbmVyYXRlZCBsaW5rLiBEZWZhdWx0OiB1bnNldDwvbGk+DQoJ PC91bD4NCg0KCTxwPlRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJs ZXMgbWF5IGJlIGRlcml2ZWQgZnJvbSB0aGUgY3VycmVudCA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiBsaW5lIG9yIG1heSBiZSBzZXQgbGlrZSB0aGlzOjwvcD4NCg0KPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfbGlua190b19u ZXh0IHVybHZhcnM9JnF1b3Q7YywgaWQsIG15dmFyPTEyJnF1b3Q7Jmd0Ow0KICAmbHQ7dHhw OnRpdGxlIC8mZ3Q7DQombHQ7L3R4cDpsaW5rX3RvX25leHQmZ3Q7DQo8L2NvZGU+PC9wcmU+ DQoNCgk8cD5UaHVzLCA8Y29kZT5jPC9jb2RlPiBhbmQgPGNvZGU+aWQ8L2NvZGU+IHdpbGwg YmUgcmVhZCBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBhbmQgcGFz c2VkIGZvcndhcmQsIHdoZXJlYXMgPGNvZGU+bXl2YXI8L2NvZGU+IHdpbGwgYmUgYWRkZWQg dG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGFuZCBpbml0aWFsaXplZCB3 aXRoIGEgdmFsdWUgb2YgPGNvZGU+MTI8L2NvZGU+IGlmIGl0IGRvZXMgbm90IGFscmVhZHkg ZXhpc3QuIElmIGVpdGhlciA8Y29kZT5jPC9jb2RlPiBvciA8Y29kZT5pZDwvY29kZT4gYXJl IG1pc3NpbmcgdGhleSB3aWxsIG5vdCBiZSBwYXNzZWQgaW4gdGhlIGxpbmsuIElmIDxjb2Rl Pm15dmFyPC9jb2RlPiBjaGFuZ2VzIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiYjODIxNztzIHZhbHVlIHdpbGwgcGVyc2lzdCwgaG93ZXZlciBpZiBpdCBpcyByZW1vdmVk IGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGl0IHdpbGwgYmUgcmVp bnN0YXRlZCB3aGVuIHlvdSBuYXZpZ2F0ZSB0byBhbm90aGVyIGFydGljbGUsIGFuZCBpdCB3 aWxsIGJlIHJlc2V0IHRvIDxjb2RlPjEyPC9jb2RlPi48L3A+DQoNCgk8cD5Ob3Rlczo8L3A+ DQoNCgk8dWw+DQoJCTxsaT50aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFy aWFibGVzIGFuZCB2YWx1ZXMgYXJlIHJlYWQgZnJvbSBib3RoIDxzcGFuIGNsYXNzPSJjYXBz Ij5HRVQ8L3NwYW4+IGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+UE9TVDwvc3Bhbj4gc3VibWlz c2lvbnM7IDxzcGFuIGNsYXNzPSJjYXBzIj5QT1NUPC9zcGFuPiBvdmVycmlkZXMgPHNwYW4g Y2xhc3M9ImNhcHMiPkdFVDwvc3Bhbj4gaWYgdGhlIG5hbWVzIGNsYXNoPC9saT4NCgkJPGxp PnlvdSBjYW4gdXNlIHRoZSBzaG9ydGhhbmQgPGNvZGU+U01EX0FMTDwvY29kZT4gdG8gcmVh ZCBhbGwgY3VycmVudCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZXM8 L2xpPg0KCQk8bGk+eW91IG1heSBhZGQgPGNvZGU+OkVTQ0FQRTwvY29kZT4gdG8gYW55IHZh cmlhYmxlIG5hbWUgKGluY2x1ZGluZyA8c3BhbiBjbGFzcz0iY2FwcyI+U01EPC9zcGFuPl9B TEwpIHRvIGhhdmUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGVudGl0aWVzIGVz Y2FwZWQ8L2xpPg0KCQk8bGk+eW91IG1heSBhZGQgPGNvZGU+OkZPUkNFPC9jb2RlPiB0byBh bnkgdmFyaWFibGUgbmFtZSAoaW5jbHVkaW5nIDxzcGFuIGNsYXNzPSJjYXBzIj5TTUQ8L3Nw YW4+X0FMTCkgdG8gaW5jbHVkZSB0aGUgdmFyaWFibGUgaW4gdGhlIGxpbmsgZXZlbiBpZiBp dCBpcyBlbXB0eTwvbGk+DQoJCTxsaT55b3UgbWF5IGFkZCA8Y29kZT46VEFHX1BSSU9SSVRZ PC9jb2RlPiB0byBhbnkgdmFyaWFibGUgbmFtZSAoaW5jbHVkaW5nIDxzcGFuIGNsYXNzPSJj YXBzIj5TTUQ8L3NwYW4+X0FMTCkgc28gYW55IHZhbHVlcyB5b3UgbWF5IGhhdmUgZ2l2ZW4g aW4gdGhlIHRhZyBhcmUgdXNlZCByZWdhcmRsZXNzIGlmIHRoZSBzYW1lIHZhcmlhYmxlIG5h bWUgZXhpc3RzIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPi4gV2l0aG91 dCB0aGlzIG9wdGlvbiwgJiM4MjE2OzxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHBy aW9yaXR5JiM4MjE3OyBpcyBhc3N1bWVkLCBzbyBpZiBhIHZhcmlhYmxlIG9mIHRoZSBzYW1l IG5hbWUgZXhpc3RzIGFuZCBpcyB1c2VkLCB5b3VyIGdpdmVuIHZhbHVlIHdpbGwgYmUgaWdu b3JlZC4gPHNwYW4gY2xhc3M9ImNhcHMiPlRBRzwvc3Bhbj5fUFJJT1JJVFkgaXMgdXNlZnVs IGZvciBtYWtpbmcgc3VyZSBhIHZhcmlhYmxlIGV4aXN0cywgaXMgaW5pdGlhbGl6ZWQgdG8g YSBrbm93biB2YWx1ZSBhbmQgcmVtYWlucyBhdCB0aGF0IHZhbHVlLCBldmVuIGlmIHRoZSB2 YXJpYWJsZSBpcyBhbHRlcmVkIGJ5IHRoZSB2aXNpdG9yIG9yIHJlbW92ZWQgZnJvbSB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj48L2xpPg0KCQk8bGk+dGhlIGFib3ZlIHRo cmVlIG1vZGlmaWVycyBjYW4gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiBpZiB5b3Ugd2lzaDwv bGk+DQoJPC91bD4NCg0KCTxoMiBpZD0iaWZlbmQiPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRf aWZfZW5kJmd0OzwvY29kZT48L2gyPg0KDQoJPHA+QW55dGhpbmcgaW5zaWRlIHRoaXMgY29u ZGl0aW9uYWwgdGFnIHdpbGwgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIGVuZCBvZiBjdXJy ZW50IHBvc3RhYmxlIGFydGljbGVzIGhhcyBiZWVuIHJlYWNoZWQuIFRoZSB0YWcgY2FuIGxv b2sgZm9yIHRoZSAmIzgyMTY7ZW5kJiM4MjE3OyBvZiBhIHZhcmlldHkgb2YgdGhpbmdzIGdv dmVybmVkIGJ5IHRoZSA8Y29kZT50eXBlPC9jb2RlPiBhdHRyaWJ1dGU6PC9wPg0KDQoJPHVs Pg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnR5cGU8L3NwYW4+IDogY2FuIGJlIGFueSBv ZiA8Y29kZT5saXN0PC9jb2RlPiwgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LCA8Y29kZT5jYXRl Z29yeTE8L2NvZGU+LCA8Y29kZT5jYXRlZ29yeTI8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2Nv ZGU+IG9yIDxjb2RlPnNlY3Rpb248L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT5saXN0PC9jb2Rl PjwvbGk+DQoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bG9naWM8L3NwYW4+IDogY2FuIGJl IDxjb2RlPm9yPC9jb2RlPiB3aGljaCBtZWFucyB0aGF0IGlmIDxlbT5hbnk8L2VtPiBvZiB0 aGUgaXRlbXMgcmVhY2ggdGhlaXIgZW5kIHRoZSBjb250YWluZXIgd2lsbCBiZSB0cmlnZ2Vy ZWQ7IG9yIGl0IGNvdWxkIGJlIDxjb2RlPmFuZDwvY29kZT4gd2hpY2ggbWVhbnMgdGhhdCA8 ZW0+YWxsPC9lbT4gb2YgdGhlIGl0ZW1zIGhhdmUgdG8gZW5kIHNpbXVsdGFuZW91c2x5IGJl Zm9yZSB0aGUgY29udGFpbmVyIHdpbGwgZmlyZTwvbGk+DQoJPC91bD4NCg0KCTxwPlVzZSB0 aGlzIHRvIHRha2UgYWN0aW9uIGFuZCBkaXNwbGF5IHNvbWV0aGluZyBkaWZmZXJlbnQgaWYg eW91IHdpc2ggdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuICYjODIxNjtmdXR1cmUmIzgyMTc7 IGFuZCAmIzgyMTY7Y3VycmVudCYjODIxNzsgYXJ0aWNsZXMgb3IgaWYgeW91IGhhdmUgcmVh Y2hlZCB0aGUgZW5kIG9mIGEgbGlzdCBvZiBzZWN0aW9ucy48L3A+DQoNCgk8aDIgaWQ9Imlm c3RhcnQiPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRfaWZfc3RhcnQmZ3Q7PC9jb2RlPjwvaDI+ DQoNCgk8cD5XaGF0ZXZlciBpcyBpbnNpZGUgdGhpcyBjb25kaXRpb25hbCB0YWcgd2lsbCBv bmx5IGJlIGRpc3BsYXllZCBpZiB0aGUgYmVnaW5uaW5nIG9mIGN1cnJlbnQgcG9zdGFibGUg YXJ0aWNsZXMgaGFzIGJlZW4gcmVhY2hlZC4gVGhlIHRhZyBjYW4gbG9vayBmb3IgdGhlICYj ODIxNjtzdGFydCYjODIxNzsgb2YgYSB2YXJpZXR5IG9mIHRoaW5ncyBnb3Zlcm5lZCBieSB0 aGUgPGNvZGU+dHlwZTwvY29kZT4gYXR0cmlidXRlOjwvcD4NCg0KCTx1bD4NCgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj50eXBlPC9zcGFuPiA6IGNhbiBiZSBhbnkgb2YgPGNvZGU+bGlz dDwvY29kZT4sIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+Y2F0ZWdvcnkxPC9jb2Rl PiwgPGNvZGU+Y2F0ZWdvcnkyPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiBvciA8Y29k ZT5zZWN0aW9uPC9jb2RlPi4gRGVmYXVsdDogPGNvZGU+bGlzdDwvY29kZT48L2xpPg0KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxvZ2ljPC9zcGFuPiA6IGNhbiBiZSA8Y29kZT5vcjwv Y29kZT4gd2hpY2ggbWVhbnMgdGhhdCBpZiA8ZW0+YW55PC9lbT4gb2YgdGhlIGl0ZW1zIGhh dmUgcmVhY2hlZCB0aGUgYmVnaW5uaW5nLCB0aGUgY29udGFpbmVyIHdpbGwgdHJpZ2dlcjsg b3IgaXQgY291bGQgYmUgPGNvZGU+YW5kPC9jb2RlPiB3aGljaCBtZWFucyB0aGF0IDxlbT5h bGw8L2VtPiBvZiB0aGUgaXRlbXMgaGF2ZSB0byBiZSBhdCB0aGVpciByZXNwZWN0aXZlIHN0 YXJ0IHBvaW50cyBzaW11bHRhbmVvdXNseSBiZWZvcmUgdGhlIGNvbnRhaW5lciB3aWxsIGZp cmU8L2xpPg0KCTwvdWw+DQoNCgk8cD5UaGlzIGNvdWxkIGJlIHVzZWQgdG8gb2ZmZXIgJiM4 MjIwO3dyYXBhcm91bmQmIzgyMjE7IG5hdmlnYXRpb24gc28gaWYgeW91IGNsaWNrICYjODIy MDtwcmV2aW91cyYjODIyMTsgd2hlbiB5b3UgYXJlIGF0IHRoZSBmaXJzdCBhcnRpY2xlIHlv dSBjYW4gcGVyaGFwcyB0YWtlIHZpc2l0b3JzIHRvIHRoZSBsYXN0IGFydGljbGUsIG9yIG1h eWJlIHRvIHRoZSBtb3N0IHJlY2VudCBhcnRpY2xlIGluIGFub3RoZXIgc2VjdGlvbi48L3A+ DQoNCgk8aDIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+DQoNCgk8cCBjbGFzcz0icmVx dWlyZWQiPkltcG9ydGFudDogYWtpbiB0byB0aGUgYnVpbHQtaW4gdGFncywgc21kX2hvcml6 b24gaXMgbGltaXRlZCB0byB1c2UgaW4gYW4gaW5kaXZpZHVhbCBhcnRpY2xlIGNvbnRleHQg YW5kIHdpbGwgZWl0aGVyIHRocm93IGEgd2FybmluZyBvciBwcm9kdWNlIHdlaXJkIHJlc3Vs dHMgaWYgdXNlZCBpbiBhbiBhcnRpY2xlIGxpc3QuPC9wPg0KDQoJPGgzIGlkPSJlZzEiPkV4 YW1wbGUgMTogPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyIHBlcnNpc3RlbmNl IGFuZCB3cmFwcGluZzwvaDM+DQoNCgk8cD5DYW4gYmUgdXNlZCBhcyBhIGRyb3AtaW4gcmVw bGFjZW1lbnQgZm9yIDxjb2RlPiZsdDt0eHA6bGlua190b18uLi4uJmd0OzwvY29kZT4gYnV0 IHdpdGggdGhlIGV4dHJhIGFiaWxpdHkgdG8gYXBwbHkgd3JhcHRhZyBhbmQgY2xhc3MuIEFs c28sIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSA8Y29kZT51 bmFtZTwvY29kZT4gaXMgcGFzc2VkIGFsb25nIGZyb20gYXJ0aWNsZSB0byBhcnRpY2xlLCBp ZiBpdCBpcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPi48L3A+ DQoNCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6aWZf aW5kaXZpZHVhbF9hcnRpY2xlJmd0Ow0KICAmbHQ7dHhwOnNtZF9saW5rX3RvX3ByZXYgd3Jh cHRhZz0mcXVvdDtkaXYmcXVvdDsNCiAgICAgY2xhc3M9JnF1b3Q7bmF2X3ByZXYmcXVvdDsg dXJsdmFycz0mcXVvdDt1bmFtZSZxdW90OyZndDsmYW1wOyMxNzE7DQogICAgICZsdDt0eHA6 cHJldl90aXRsZS8mZ3Q7Jmx0Oy90eHA6c21kX2xpbmtfdG9fcHJldiZndDsNCiAgJmx0O3R4 cDpzbWRfbGlua190b19uZXh0IHdyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7DQogICAgIGNsYXNz PSZxdW90O25hdl9uZXh0JnF1b3Q7DQogICAgIHVybHZhcnM9JnF1b3Q7dW5hbWUmcXVvdDsm Z3Q7Jmx0O3R4cDpuZXh0X3RpdGxlLyZndDsNCiAgICAgJmFtcDsjMTg3OyZsdDsvdHhwOnNt ZF9saW5rX3RvX25leHQmZ3Q7DQombHQ7L3R4cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7 DQo8L2NvZGU+PC9wcmU+DQoNCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiBOYXZpZ2F0aW5n IHRvIGZ1dHVyZSBhcnRpY2xlczwvaDM+DQoNCgk8cD5FbmhhbmNlIHRoZSBzdGFuZGFyZCBs aW5rX3RvX25leHQvcHJldiB0YWdzIGJ5IHdyYXBwaW5nIHNtZF9uZXh0L3NtZF9wcmV2IGFy b3VuZCB0aGVtLiBXaXRoIGl0cyBkZWZhdWx0IHNldHRpbmcgPGNvZGU+dGltZT0mcXVvdDth bnkmcXVvdDs8L2NvZGU+LCB5b3UgY2FuIGFsbG93IHZpc2l0b3JzIHRvIG5hdmlnYXRlIHRv IGZ1dHVyZSBhcnRpY2xlcyBlaXRoZXIgdXNpbmcgdGhlIHN0YW5kYXJkIGxpbmtfdG9fbmV4 dC9wcmV2IHRhZ3MgKGFzIHVzZWQgaW4gdGhpcyBleGFtcGxlKSBvciB2aWEgdGhlIHNtZF9s aW5rX3RvX25leHQvcHJldiB0YWdzLjwvcD4NCg0KPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+Jmx0O3R4cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7DQogICAm bHQ7dHhwOnNtZF9wcmV2Jmd0Ow0KICAgICAgJmx0O3R4cDpsaW5rX3RvX3ByZXYmZ3Q7DQog ICAgICAgICAmYW1wOyMxNzE7ICZsdDt0eHA6cHJldl90aXRsZS8mZ3Q7DQogICAgICAmbHQ7 L3R4cDpsaW5rX3RvX3ByZXYmZ3Q7DQogICAmbHQ7L3R4cDpzbWRfcHJldiZndDsNCiAgICZs dDt0eHA6c21kX25leHQmZ3Q7DQogICAgICAmbHQ7dHhwOmxpbmtfdG9fbmV4dCZndDsNCiAg ICAgICAgICZsdDt0eHA6bmV4dF90aXRsZS8mZ3Q7ICZhbXA7IzE4NzsNCiAgICAgICZsdDsv dHhwOmxpbmtfdG9fbmV4dCZndDsNCiAgICZsdDsvdHhwOnNtZF9uZXh0Jmd0Ow0KJmx0Oy90 eHA6aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0Ow0KPC9jb2RlPjwvcHJlPg0KDQoJPGgzIGlk PSJlZzMiPkV4YW1wbGUgMzogU25lYWsgcGVlayBvZiB1bnB1Ymxpc2hlZCBhcnRpY2xlczwv aDM+DQoNCgk8cD5JZiBuYXZpZ2F0aW5nIGRpcmVjdGx5IHRvIGZ1dHVyZSBhcnRpY2xlcyBp cyBub3QgeW91ciBpZGVhIG9mIGZ1biwgaG93IGFib3V0IG9mZmVyaW5nIGEgc25lYWsgcHJl dmlldyBvZiB0aGUgbmV4dCBjaGFwdGVyIG9mIHlvdXIgYm9vayB0aGF0IHlvdSBhcmUgc2Vy aWFsaXNpbmc/PC9wPg0KDQo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsNCiAgICZsdDt0eHA6dGl0bGUg LyZndDsNCiAgICZsdDt0eHA6Ym9keSAvJmd0Ow0KICAgJmx0O3R4cDpzbWRfaWZfZW5kIHR5 cGU9JnF1b3Q7c2VjdGlvbiZxdW90OyZndDsNCiAgICAgICZsdDt0eHA6c21kX25leHQmZ3Q7 DQogICAgICAgICAmbHQ7aDMmZ3Q7Q29taW5nIHVwIG5leHQgd2Vlay4uLiZsdDsvaDMmZ3Q7 DQogICAgICAgICAmbHQ7dHhwOmV4Y2VycHQgLyZndDsNCiAgICAgICZsdDsvdHhwOnNtZF9u ZXh0Jmd0Ow0KICAgICAgJmx0O3R4cDpsaW5rX3RvX3ByZXYmZ3Q7DQogICAgICAgICAmbHQ7 dHhwOnByZXZfdGl0bGUvJmd0Ow0KICAgICAgJmx0Oy90eHA6bGlua190b19wcmV2Jmd0Ow0K ICAgJmx0O3R4cDplbHNlIC8mZ3Q7DQogICAgICAmbHQ7dHhwOmxpbmtfdG9fcHJldiZndDsN CiAgICAgICAgICZsdDt0eHA6cHJldl90aXRsZS8mZ3Q7DQogICAgICAmbHQ7L3R4cDpsaW5r X3RvX3ByZXYmZ3Q7DQogICAgICAmbHQ7dHhwOmxpbmtfdG9fbmV4dCZndDsNCiAgICAgICAg ICZsdDt0eHA6bmV4dF90aXRsZS8mZ3Q7DQogICAgICAmbHQ7L3R4cDpsaW5rX3RvX25leHQm Z3Q7DQogICAmbHQ7L3R4cDpzbWRfaWZfZW5kJmd0Ow0KJmx0Oy90eHA6aWZfaW5kaXZpZHVh bF9hcnRpY2xlJmd0Ow0KPC9jb2RlPjwvcHJlPg0KDQoJPHA+SW1hZ2luZSB5b3UgaGF2ZSBl YWNoIGNoYXB0ZXIgYXMgYW4gYXJ0aWNsZSBhbmQgaGF2ZSBwdWJsaXNoZWQsIHNheSwgdGhl IGZpcnN0IDMgY2hhcHRlcnMuIFlvdSBoYXZlIHdyaXR0ZW4gdGhlIDR0aCBjaGFwdGVyIGJ1 dCBoYXZlIHNldCBpdHMgcG9zdGVkIGRhdGUgdG8gbmV4dCB3ZWVrLiBZb3VyIHZpc2l0b3Jz IGNhbiByZWFkIGFuZCBuYXZpZ2F0ZSB0aHJvdWdoIGNoYXB0ZXJzIDEsIDIsIGFuZCAzLCBh cyB0aGV5IG5vcm1hbGx5IHdvdWxkIHdpdGggYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IGFydGljbGVzLiBXaGVuIHRoZXkgcmVhY2ggQ2hhcHRlciAzLCB0aGV5IGFyZSBz aG93biB0aGUgZXhjZXJwdCBmcm9tIHRoZSB1bnB1Ymxpc2hlZCBhcnRpY2xlIHRvIHdoZXQg dGhlaXIgYXBwZXRpdGVzLjwvcD4NCg0KCTxwPk9uZSBzaWRlLWVmZmVjdCBvZiA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIGNvbnRlbnQgaGFuZGxpbmcgaXMgdGhh dCBmdXR1cmUgYXJ0aWNsZXMgY2FuIHN0aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgYnJvd3Nl ciBpZiBhIHZpc2l0b3IgZ3Vlc3NlcyB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4uIEZvciBzZXJpYWxpc2VkIGFydGljbGUgdGl0bGVzIHN1Y2ggYXMgPGVtPmNoYXB0ZXIt MTwvZW0+LCA8ZW0+Y2hhcHRlci0yPC9lbT4sIGFuZCBzbyBvbiwgaXQgaXMgbm90IGEgZ3Jl YXQgbGVhcCBvZiBmYWl0aCBmb3Igc29tZW9uZSB0byBnYWluIGFjY2VzcyB0byB5b3VyIGZ1 dHVyZSBhcnRpY2xlcy48L3A+DQoNCgk8cD5XaXRoIHNtZF9ob3Jpem9uIHlvdSBjYW4gY2ly Y3VtdmVudCB0aGlzLiBTZXQgeW91ciBDaGFwdGVyIDQsIGZ1dHVyZSBhcnRpY2xlIHRvIHRo ZSAmIzgyMTY7aGlkZGVuJiM4MjE3OyBzdGF0dXMgYW5kIGFkZCA8Y29kZT5zdGF0dXM9JnF1 b3Q7bGl2ZSwgaGlkZGVuJnF1b3Q7PC9jb2RlPiB0byB5b3VyIDxjb2RlPiZsdDt0eHA6c21k X25leHQmZ3Q7PC9jb2RlPiB0YWcuIFlvdSBjYW4gc3RpbGwgb2ZmZXIgJiM4MjE2O3ByZXZp ZXdzJiM4MjE3OyBvZiB0aGUgY29udGVudC48L3A+DQoNCgk8aDMgaWQ9ImVnNCI+RXhhbXBs ZSA0OiBNYWtlIG5leHQvcHJldiBsaW5rcyB1c2luZyBpbWFnZXM8L2gzPg0KDQoJPHA+QXJ0 aWNsZSBjb250ZW50IGNhbiBiZSBhbnl0aGluZyBmcm9tIHRoZSBhcnRpY2xlOyBub3QganVz dCBpdHMgZXhjZXJwdC4gRm9yIGV4YW1wbGUsIGNhdGVnb3J5IGFuZCBjdXN0b20gZmllbGQg Y29udGVudHMgYXJlIGFsbCBhdmFpbGFibGUuIFNheSB5b3UgcHVibGlzaGVkIGFuIG9ubGlu ZSBjb21pYzsgeW91IGNhbiBldmVuIHByZXZpZXcgdGhlIGFydGljbGUgaW1hZ2UgaWYgeW91 IHdpc2guPC9wPg0KDQoJPHA+V2l0aCB0aGlzIGV4YW1wbGUsIGFydGljbGUgaW1hZ2VzIGFy ZSB1c2VkIGFzIGxpbmtzIHRvIHRoZSBuZXh0L3ByZXZpb3VzIGFydGljbGUuIEl0IGFsc28g bWFpbnRhaW5zIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZXMg PGNvZGU+bTwvY29kZT4gYW5kIDxjb2RlPnk8L2NvZGU+IHNvIHRoYXQgYSBuZWFyYnkgY2Fs ZW5kYXIgb24gdGhlIHNhbWUgcGFnZSByZW1haW5zIHNob3dpbmcgdGhlIG1vbnRoIGFuZCB5 ZWFyIHRoZSB2aXNpdG9yIGhhcyBjaG9zZW46PC9wPg0KDQo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsN CiAgJmx0O3R4cDpzbWRfcHJldiB0aW1lPSZxdW90O3Bhc3QmcXVvdDsmZ3Q7DQogICAgJmx0 O3R4cDpzbWRfbGlua190b19wcmV2IHVybHZhcnM9JnF1b3Q7bSx5JnF1b3Q7Jmd0Ow0KICAg ICAgJmx0O3R4cDphcnRpY2xlX2ltYWdlIHRodW1ibmFpbD0mcXVvdDsxJnF1b3Q7IC8mZ3Q7 DQogICAgJmx0Oy90eHA6c21kX2xpbmtfdG9fcHJldiZndDsNCiAgJmx0Oy90eHA6c21kX3By ZXYmZ3Q7DQogICZsdDt0eHA6c21kX25leHQgdGltZT0mcXVvdDtwYXN0JnF1b3Q7Jmd0Ow0K ICAgICZsdDt0eHA6c21kX2xpbmtfdG9fbmV4dCB1cmx2YXJzPSZxdW90O20seSZxdW90OyZn dDsNCiAgICAgICZsdDt0eHA6YXJ0aWNsZV9pbWFnZSB0aHVtYm5haWw9JnF1b3Q7MSZxdW90 OyAvJmd0Ow0KICAgICZsdDsvdHhwOnNtZF9saW5rX3RvX25leHQmZ3Q7DQogICZsdDsvdHhw OnNtZF9uZXh0Jmd0Ow0KJmx0Oy90eHA6aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0Ow0KPC9j b2RlPjwvcHJlPg0KDQoJPHA+SWYgeW91IHdhbnRlZCB0byB1c2UgdGhlIHRpdGxlIGFzIGEg ZmFsbGJhY2sgaW4gY2FzZSBhbiBhcnRpY2xlIGltYWdlIHdhc24mIzgyMTc7dCBhc3NpZ25l ZCwgeW91IGNhbiB1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4wLjkmIzgy MTc7cyA8Y29kZT4mbHQ7dHhwOmlmX2FydGljbGVfaW1hZ2UgLyZndDs8L2NvZGU+IHRhZzo8 L3A+DQoNCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0Ow0KICAmbHQ7dHhwOnNtZF9wcmV2IHRpbWU9JnF1 b3Q7cGFzdCZxdW90OyZndDsNCiAgICAmbHQ7dHhwOnNtZF9saW5rX3RvX3ByZXYgdXJsdmFy cz0mcXVvdDttLHkmcXVvdDsmZ3Q7DQogICAgICAmbHQ7dHhwOmlmX2FydGljbGVfaW1hZ2Um Z3Q7DQogICAgICAgICAmbHQ7dHhwOmFydGljbGVfaW1hZ2UgdGh1bWJuYWlsPSZxdW90OzEm cXVvdDsgLyZndDsNCiAgICAgICZsdDt0eHA6ZWxzZSAvJmd0Ow0KICAgICAgICAgJmx0O3R4 cDp0aXRsZSAvJmd0Ow0KICAgICAgJmx0Oy90eHA6aWZfYXJ0aWNsZV9pbWFnZSZndDsNCiAg ICAmbHQ7L3R4cDpzbWRfbGlua190b19wcmV2Jmd0Ow0KICAmbHQ7L3R4cDpzbWRfcHJldiZn dDsNCiAgJmx0O3R4cDpzbWRfbmV4dCB0aW1lPSZxdW90O3Bhc3QmcXVvdDsmZ3Q7DQogICAg Jmx0O3R4cDpzbWRfbGlua190b19uZXh0IHVybHZhcnM9JnF1b3Q7bSx5JnF1b3Q7Jmd0Ow0K ICAgICAgJmx0O3R4cDppZl9hcnRpY2xlX2ltYWdlJmd0Ow0KICAgICAgICAgJmx0O3R4cDph cnRpY2xlX2ltYWdlIHRodW1ibmFpbD0mcXVvdDsxJnF1b3Q7IC8mZ3Q7DQogICAgICAmbHQ7 dHhwOmVsc2UgLyZndDsNCiAgICAgICAgICZsdDt0eHA6dGl0bGUgLyZndDsNCiAgICAgICZs dDsvdHhwOmlmX2FydGljbGVfaW1hZ2UmZ3Q7DQogICAgJmx0Oy90eHA6c21kX2xpbmtfdG9f bmV4dCZndDsNCiAgJmx0Oy90eHA6c21kX25leHQmZ3Q7DQombHQ7L3R4cDppZl9pbmRpdmlk dWFsX2FydGljbGUmZ3Q7DQo8L2NvZGU+PC9wcmU+DQoNCgk8aDMgaWQ9ImVnNSI+RXhhbXBs ZSA1OiBNdWx0aXBsZSBzZWN0aW9uIG5hdmlnYXRpb248L2gzPg0KDQoJPHA+TmF2aWdhdGUg b3ZlciBtb3JlIHRoYW4gb25lIHNlY3Rpb24gYW5kIHRha2UgYWN0aW9uIHdoZW4geW91IHJl YWNoIGVpdGhlciBlbmQgb2YgdGhlIGxpc3QuPC9wPg0KDQo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsN CiAgICZsdDt0eHA6c21kX3ByZXYgc2VjdGlvbj0mcXVvdDthcnRpY2xlcywgYWJvdXQmcXVv dDsmZ3Q7DQogICAgICAmbHQ7dHhwOnNtZF9pZl9zdGFydCB0eXBlPSZxdW90O2xpc3QmcXVv dDsmZ3Q7DQogICAgICBUaGUgYXJ0aWNsZXMgYmVnaW4gaGVyZQ0KICAgICAgJmx0Oy90eHA6 c21kX2lmX3N0YXJ0Jmd0Ow0KICAgICAgJmx0O3R4cDpsaW5rX3RvX3ByZXYmZ3Q7DQogICAg ICAgICAmbHQ7dHhwOnByZXZfdGl0bGUvJmd0Ow0KICAgICAgJmx0Oy90eHA6bGlua190b19w cmV2Jmd0Ow0KICAgJmx0Oy90eHA6c21kX3ByZXYmZ3Q7DQogICAmbHQ7dHhwOnNtZF9uZXh0 IHNlY3Rpb249JnF1b3Q7YXJ0aWNsZXMsIGFib3V0JnF1b3Q7Jmd0Ow0KICAgICAgJmx0O3R4 cDpzbWRfaWZfZW5kIHR5cGU9JnF1b3Q7bGlzdCZxdW90OyZndDsNCiAgICAgIFRoZSBlbmQg b2YgdGhlIHJvYWQNCiAgICAgICZsdDsvdHhwOnNtZF9pZl9lbmQmZ3Q7DQogICAgICAmbHQ7 dHhwOmxpbmtfdG9fbmV4dCZndDsNCiAgICAgICAgICZsdDt0eHA6bmV4dF90aXRsZS8mZ3Q7 DQogICAgICAmbHQ7L3R4cDpsaW5rX3RvX25leHQmZ3Q7DQogICAmbHQ7L3R4cDpzbWRfbmV4 dCZndDsNCiZsdDsvdHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsNCjwvY29kZT48L3By ZT4NCg0KCTxwPk5vdGVzOjwvcD4NCg0KCTx1bD4NCgkJPGxpPiB0aGlzIGlzIGFjaGlldmVk IGJ5IHNpbXBseSB3cmFwcGluZyB0aGUgc3RhbmRhcmQgbGlua190b19uZXh0L3ByZXYgdGFn cyB3aXRoIHNtZF9uZXh0IGFuZCBzbWRfcHJldi4gTm8gb3RoZXIgdHJpY2tlcnkgaW52b2x2 ZWQ8L2xpPg0KCQk8bGk+aWYgeW91IGFyZSB1c2luZyBzbWRfbmV4dC9wcmV2IHRvIGl0ZXJh dGUgb3ZlciBhIGxpc3Qgb2YgY2F0ZWdvcmllcyBvciBhdXRob3JzLCB5b3UgY2FuIGRldGVj dCB0aGUgZW5kIG9mIHRob3NlIGxpc3RzIGFzIHdlbGwgdXNpbmcgdGhlIHNhbWUgPGNvZGU+ dHlwZT0mcXVvdDtsaXN0JnF1b3Q7PC9jb2RlPiBzeW50YXguIElmIHlvdSBhcmUgaXRlcmF0 aW5nIG92ZXIgbW9yZSB0aGFuIG9uZSBpdGVtIGF0IG9uY2UgdGhlIHBsdWdpbiBoYXMgbm8g d2F5IG9mIGtub3dpbmcgd2hpY2ggb2YgdGhlICYjODIxNjtsYXN0JiM4MjE3OyBpdGVtcyBp dCBoYXMgcmVhY2hlZCAoc2VjdGlvbiwgY2F0ZWdvcnksIGF1dGhvciYjODIzMDspIHNvIGl0 JiM4MjE3O2xsIGJlIHRoZSB2ZXJ5IGxhc3Qgb25lIHRoYXQgdHJpZ2dlcnMgaXQ8L2xpPg0K CTwvdWw+DQoNCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2OiBBdCB0aGUgZW5kIG9mIGVhY2gg c2VjdGlvbiwgZG8mIzgyMzA7PC9oMz4NCg0KCTxwPkFuIGV4dGVuc2lvbiBvZiA8YSBocmVm PSIjZWc1Ij5leGFtcGxlIDU8L2E+LCB0aGlzIG9uZSBkZXRlY3RzIHdoZW4geW91IHJlYWNo IHRoZSBlbmQgb2Ygb25lIG9mIHRoZSBzZWN0aW9ucyBpbiB5b3VyIGxpc3QgYW5kIGRpc3Bs YXlzIGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2UgdG8gZ3VpZGUgeW91IG9ud2FyZHMuPC9wPg0K DQo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOmlmX2lu ZGl2aWR1YWxfYXJ0aWNsZSZndDsNCiAgICZsdDt0eHA6c21kX3ByZXYgc2VjdGlvbj0mcXVv dDthcnRpY2xlcywgYWJvdXQmcXVvdDsmZ3Q7DQogICAgICAmbHQ7dHhwOnNtZF9pZl9zdGFy dCB0eXBlPSZxdW90O3NlY3Rpb24mcXVvdDsmZ3Q7DQogICAgICAgICAmbHQ7dHhwOmxpbmtf dG9fcHJldiZndDsNCiAgICAgICAgICAgIFN0ZXAgYmFjayBpbnRvICZsdDt0eHA6c2VjdGlv biAvJmd0Ow0KICAgICAgICAgJmx0Oy90eHA6bGlua190b19wcmV2Jmd0Ow0KICAgICAgJmx0 O3R4cDplbHNlIC8mZ3Q7DQogICAgICAgICAmbHQ7dHhwOmxpbmtfdG9fcHJldiZndDsNCiAg ICAgICAgICAgICZsdDt0eHA6cHJldl90aXRsZS8mZ3Q7DQogICAgICAgICAmbHQ7L3R4cDps aW5rX3RvX3ByZXYmZ3Q7DQogICAgICAmbHQ7L3R4cDpzbWRfaWZfc3RhcnQmZ3Q7DQogICAm bHQ7L3R4cDpzbWRfcHJldiZndDsNCiAgICZsdDt0eHA6c21kX25leHQgc2VjdGlvbj0mcXVv dDthcnRpY2xlcywgYWJvdXQmcXVvdDsmZ3Q7DQogICAgICAmbHQ7dHhwOnNtZF9pZl9lbmQg dHlwZT0mcXVvdDtzZWN0aW9uJnF1b3Q7Jmd0Ow0KICAgICAgICAgJmx0O3R4cDpsaW5rX3Rv X25leHQmZ3Q7DQogICAgICAgICAgICBNb3ZlIG9ud2FyZHMgdG8gJmx0O3R4cDpzZWN0aW9u IC8mZ3Q7DQogICAgICAgICAmbHQ7L3R4cDpsaW5rX3RvX25leHQmZ3Q7DQogICAgICAmbHQ7 dHhwOmVsc2UgLyZndDsNCiAgICAgICAgICZsdDt0eHA6bGlua190b19uZXh0Jmd0Ow0KICAg ICAgICAgICAgJmx0O3R4cDpuZXh0X3RpdGxlLyZndDsNCiAgICAgICAgICZsdDsvdHhwOmxp bmtfdG9fbmV4dCZndDsNCiAgICAgICZsdDsvdHhwOnNtZF9pZl9lbmQmZ3Q7DQogICAmbHQ7 L3R4cDpzbWRfbmV4dCZndDsNCiZsdDsvdHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsN CjwvY29kZT48L3ByZT4NCg0KCTxoMyBpZD0iZWc3Ij5FeGFtcGxlIDc6IE5lc3Rpbmcgc21k X2lmX3N0YXJ0L2VuZDwvaDM+DQoNCgk8cD5BIGZ1cnRoZXIgZXh0ZW5zaW9uIG9mIDxhIGhy ZWY9IiNlZzYiPmV4YW1wbGUgNjwvYT46PC9wPg0KDQo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsNCiAg ICZsdDt0eHA6c21kX3ByZXYgc2VjdGlvbj0iYXJ0aWNsZXMsIGFib3V0LCBwcm9kdWN0cyIm Z3Q7DQogICAgICAmbHQ7dHhwOnNtZF9pZl9zdGFydCB0eXBlPSJsaXN0IiZndDsNCiAgICAg IFRoZSBhcnRpY2xlcyBiZWdpbiBoZXJlDQogICAgICAmbHQ7dHhwOmVsc2UgLyZndDsNCiAg ICAgICAgICZsdDt0eHA6c21kX2lmX3N0YXJ0IHR5cGU9InNlY3Rpb24iJmd0Ow0KICAgICAg ICAgICAgKHByZXZpb3VzIHNlY3Rpb24pDQogICAgICAgICAmbHQ7L3R4cDpzbWRfaWZfc3Rh cnQmZ3Q7DQogICAgICAmbHQ7L3R4cDpzbWRfaWZfc3RhcnQmZ3Q7DQogICAgICAmbHQ7dHhw OmxpbmtfdG9fcHJldiZndDsNCiAgICAgICAgICZsdDt0eHA6cHJldl90aXRsZS8mZ3Q7DQog ICAgICAmbHQ7L3R4cDpsaW5rX3RvX3ByZXYmZ3Q7DQogICAmbHQ7L3R4cDpzbWRfcHJldiZn dDsNCiAgICZsdDt0eHA6c21kX25leHQgc2VjdGlvbj0iYXJ0aWNsZXMsIGFib3V0LCBwcm9k dWN0cyImZ3Q7DQogICAgICAmbHQ7dHhwOmxpbmtfdG9fbmV4dCZndDsNCiAgICAgICAgICZs dDt0eHA6bmV4dF90aXRsZS8mZ3Q7DQogICAgICAmbHQ7L3R4cDpsaW5rX3RvX25leHQmZ3Q7 DQogICAgICAmbHQ7dHhwOnNtZF9pZl9lbmQgdHlwZT0ibGlzdCImZ3Q7DQogICAgICBUaGUg ZW5kIG9mIHRoZSByb2FkDQogICAgICAmbHQ7dHhwOmVsc2UgLyZndDsNCiAgICAgICAgICZs dDt0eHA6c21kX2lmX2VuZCB0eXBlPSJzZWN0aW9uIiZndDsNCiAgICAgICAgICAgICAobmV4 dCBzZWN0aW9uKQ0KICAgICAgICAgJmx0Oy90eHA6c21kX2lmX2VuZCZndDsNCiAgICAgICZs dDsvdHhwOnNtZF9pZl9lbmQmZ3Q7DQogICAmbHQ7L3R4cDpzbWRfbmV4dD4mbHQ7YnIgLyZn dDsNCiZsdDsvdHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDs8L2NvZGU+PC9wcmU+DQoN Cgk8cD5Ob3RpY2UgdGhhdDo8L3A+DQoNCgk8dWw+DQoJCTxsaT5kZXRlY3Rpb24gb2YgdGhl IHN0YXJ0L2VuZCBvZiB0aGUgbGlzdCBvZiBzZWN0aW9ucyBvY2N1cnMgPGVtPmZpcnN0PC9l bT48L2xpPg0KCQk8bGk+aWYgdGhhdCBmYWlscywgd2UgY2hlY2sgaWYgd2UgYXJlIGF0IHRo ZSBlbmQgb2YgYSBjb252ZW50aW9uYWwgc2VjdGlvbi4gSWYgd2UgZGlkIG5vdCBkbyB0aGlz IG5lc3RlZCBpbnNpZGUgdGhlICYjODIxNjtlbHNlJiM4MjE3OywgdGhlICYjODIxNjtlbmQg b2Ygc2VjdGlvbiYjODIxNzsgdHJpZ2dlciB3b3VsZCBiZSB0cnVlIGF0IHRoZSBleHRyZW1p dGllcyBvZiB0aGUgc2VjdGlvbiBsaXN0IGFzIHdlbGw8L2xpPg0KCQk8bGk+dGhlcmUgaXMg bm8gY29uZGl0aW9uYWwgc3Vycm91bmRpbmcgdGhlIGxpbmtfdG9fbmV4dC9wcmV2IGJlY2F1 c2UgdGhleSB3aWxsIGF1dG9tYXRpY2FsbHkgcmV0dXJuIG5vdGhpbmcgd2hlbiB0aGUgZW5k IG9mIHRoZSBsaXN0IGlzIHJlYWNoZWQ8L2xpPg0KCTwvdWw+DQoNCgk8aDMgaWQ9ImVnOCI+ RXhhbXBsZSA4OiBBdCBlbmQgb2YgZWFjaCBjYXRlZ29yeTEsIGRvJiM4MjMwOzwvaDM+DQoN Cgk8cD5JZiB5b3Ugb3JkZXIgeW91ciBhcnRpY2xlcyBieSBjYXRlZ29yeTEgeW91IGNhbiBp ZGVudGlmeSB3aGVuIHRoZSBuZXh0IChvciBwcmV2aW91cykgY2F0ZWdvcnkgaXMgYWJvdXQg dG8gYmUgcmVhY2hlZC4gVGhpcyBleGFtcGxlIGp1c3Qgc2hvd3MgYSBtZXNzYWdlIHdoZW4g YSBkaWZmZXJlbnQgY2F0ZWdvcnkxIGlzIGRldGVjdGVkOjwvcD4NCg0KPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDppZl9pbmRpdmlkdWFsX2FydGlj bGUmZ3Q7DQogICAmbHQ7dHhwOnNtZF9wcmV2Jmd0Ow0KICAgICAgJmx0O3R4cDpsaW5rX3Rv X3ByZXYmZ3Q7DQogICAgICAgICAmYW1wOyMxNzE7ICZsdDt0eHA6cHJldl90aXRsZS8mZ3Q7 DQogICAgICAmbHQ7L3R4cDpsaW5rX3RvX3ByZXYmZ3Q7DQogICAmbHQ7L3R4cDpzbWRfcHJl diZndDsNCiAgICZsdDt0eHA6c21kX25leHQmZ3Q7DQogICAgICAmbHQ7dHhwOmxpbmtfdG9f bmV4dCZndDsNCiAgICAgICAgICZsdDt0eHA6bmV4dF90aXRsZS8mZ3Q7ICZhbXA7IzE4NzsN CiAgICAgICZsdDsvdHhwOmxpbmtfdG9fbmV4dCZndDsNCiAgICAgICZsdDt0eHA6c21kX2lm X2VuZCB0eXBlPSZxdW90O2NhdGVnb3J5MSZxdW90OyZndDsNCiAgICAgICAgIE5leHQgY2F0 OiAmbHQ7dHhwOmNhdGVnb3J5MSBsaW5rPSZxdW90OzEmcXVvdDsgLyZndDsNCiAgICAgICZs dDsvdHhwOnNtZF9pZl9lbmQmZ3Q7DQogICAmbHQ7L3R4cDpzbWRfbmV4dCZndDsNCiZsdDsv dHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsNCjwvY29kZT48L3ByZT4NCg0KCTxwPk5v dGVzOjwvcD4NCg0KCTx1bD4NCgkJPGxpPlVzZSA8Y29kZT50eXBlPSZxdW90O2NhdGVnb3J5 MSwgY2F0ZWdvcnkyJnF1b3Q7PC9jb2RlPiAob3IgPGNvZGU+dHlwZT0mcXVvdDtjYXRlZ29y eSZxdW90OzwvY29kZT4pIHRvIHRha2UgYWN0aW9uIGlmIDxlbT5laXRoZXI8L2VtPiBjYXRl Z29yeSBjaGFuZ2VzIGluIHRoZSBuZXh0IGFydGljbGU8L2xpPg0KCQk8bGk+VXNlIDxjb2Rl PnR5cGU9JnF1b3Q7Y2F0ZWdvcnkxLCBjYXRlZ29yeTImcXVvdDsgbG9naWM9JnF1b3Q7YW5k JnF1b3Q7PC9jb2RlPiB0byB0YWtlIGFjdGlvbiBpZiA8ZW0+Ym90aDwvZW0+IGNhdGVnb3Jp ZXMgY2hhbmdlIGluIHRoZSBuZXh0IGFydGljbGU8L2xpPg0KCQk8bGk+WW91IGNhbiB1c2Ug dGhlIHNob3J0aGFuZCA8Y29kZT5jYXQxPC9jb2RlPiBhbmQgPGNvZGU+Y2F0MjwvY29kZT4g aWYgeW91IGRvbiYjODIxNzt0IGxpa2Ugc3BlbGxpbmcgb3V0IDxjb2RlPmNhdGVnb3J5MTwv Y29kZT4gYW5kIDxjb2RlPmNhdGVnb3J5MjwvY29kZT4gZXZlcnkgdGltZSA6LSk8L2xpPg0K CTwvdWw+DQoNCgk8aDMgaWQ9ImVnOSI+RXhhbXBsZSA5OiBMb29wIG92ZXIgYW4gYXV0aG9y JiM4MjE3O3MgYXJ0aWNsZXM8L2gzPg0KDQoJPHA+Tm8gbWF0dGVyIGlmIGFuIGF1dGhvciBo YXMgd3JpdHRlbiBzdHVmZiBpbiBtdWx0aXBsZSBzZWN0aW9ucywgeW91IGNhbiBpdGVyYXRl IG92ZXIgdGhlbSBhbGwgdXNpbmcgc21kX2xpbmtfdG9fbmV4dC9wcmV2LjwvcD4NCg0KPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDppZl9pbmRpdmlk dWFsX2FydGljbGUmZ3Q7DQogICAmbHQ7dHhwOnNtZF9wcmV2IGF1dGhvcj0mcXVvdDtCbG9r ZSZxdW90OyBzZWN0aW9uPSZxdW90O2FydGljbGVzLGFib3V0JnF1b3Q7Jmd0Ow0KICAgICAg Jmx0O3R4cDpzbWRfbGlua190b19wcmV2Jmd0Ow0KICAgICAgICAgJmx0O3R4cDp0aXRsZSAv Jmd0Ow0KICAgICAgJmx0Oy90eHA6c21kX2xpbmtfdG9fcHJldiZndDsNCiAgICZsdDsvdHhw OnNtZF9wcmV2Jmd0Ow0KICAgJmx0O3R4cDpzbWRfbmV4dCBhdXRob3I9JnF1b3Q7Qmxva2Um cXVvdDsgc2VjdGlvbj0mcXVvdDthcnRpY2xlcyxhYm91dCZxdW90OyZndDsNCiAgICAgICZs dDt0eHA6c21kX2xpbmtfdG9fbmV4dCZndDsNCiAgICAgICAgICZsdDt0eHA6dGl0bGUgLyZn dDsNCiAgICAgICZsdDsvdHhwOnNtZF9saW5rX3RvX25leHQmZ3Q7DQogICAmbHQ7L3R4cDpz bWRfbmV4dCZndDsNCiZsdDsvdHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsNCjwvY29k ZT48L3ByZT4NCg0KCTxwPkluc3RlYWQgb2YgaGFyZC1jb2RpbmcgdGhlIGF1dGhvciBuYW1l LCBpZiB5b3Ugd2lzaCB0byB1c2UgdGhlIGN1cnJlbnQgYXV0aG9yLCByZXBsYWNlIDxjb2Rl PmF1dGhvcj0mcXVvdDtCbG9rZSZxdW90OzwvY29kZT4gd2l0aCA8Y29kZT5yZWFsbmFtZT0m IzM5OyZsdDt0eHA6YXV0aG9yIC8mZ3Q7JiMzOTs8L2NvZGU+LiBWZXJ5IHVzZWZ1bCBpbiBt YWdhemluZS1zdHlsZSBzaXRlcyBmb3Igc2hvd2luZyAmIzgyMTY7bmV4dCBhcnRpY2xlIGJ5 IHRoaXMgYXV0aG9yJiM4MjE3OyBsaW5rcy48L3A+DQoNCgk8cD5Ob3RlIHRoYXQgdGhpcyBl eGFtcGxlIGRvZXMgPGVtPm5vdDwvZW0+IHdvcmsgd2l0aCA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiYjODIxNztzIGJ1aWx0LWluIGxpbmtfdG9fbmV4dC9wcmV2IHRhZ3MgYmVj YXVzZSB0aGV5IHN0aWxsICYjODIxNjtzZWUmIzgyMTc7IG90aGVyIGFydGljbGVzIGluIHRo ZSBzYW1lIHNlY3Rpb24sIGlycmVzcGVjdGl2ZSBvZiBhdXRob3IgKGFuZCBpbiBmYWN0IGNh dGVnb3J5LCBzbyB0aGUgc2FtZSByZXN0cmljdGlvbiBhcHBsaWVzIHRoZXJlKS48L3A+DQoN Cgk8aDMgaWQ9ImVnMTAiPkV4YW1wbGUgMTA6IExvb3Agb3ZlciBtYW55IGF1dGhvciYjODIx NztzIGFydGljbGVzPC9oMz4NCg0KCTxwPkFuZCBhY3Jvc3MgbXVsdGlwbGUgc2VjdGlvbnMg dG9vOjwvcD4NCg0KPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7DQogICAmbHQ7cCZndDtDdXJyZW50IGFy dGljbGUgYnk6ICZsdDt0eHA6YXV0aG9yIC8mZ3Q7Jmx0Oy9wJmd0Ow0KICAgJmx0O3R4cDpz bWRfcHJldiBhdXRob3I9JnF1b3Q7U3RlZiwgSm9obiZxdW90Ow0KICAgICBzZWN0aW9uPSZx dW90O2FydGljbGVzLHByb2R1Y3RzJnF1b3Q7DQogICAgIGRhdGFzb3J0PSZxdW90O2F1dGhv ciwgc2VjdGlvbiZxdW90OyZndDsNCiAgICAgICZsdDt0eHA6c21kX2xpbmtfdG9fcHJldiZn dDsNCiAgICAgICAgICZsdDt0eHA6dGl0bGUgLyZndDsgKGJ5ICZsdDt0eHA6YXV0aG9yIC8m Z3Q7KQ0KICAgICAgJmx0Oy90eHA6c21kX2xpbmtfdG9fcHJldiZndDsNCiAgICZsdDsvdHhw OnNtZF9wcmV2Jmd0Ow0KICAgJmx0O3R4cDpzbWRfbmV4dCBhdXRob3I9JnF1b3Q7U3RlZiwg Sm9obiZxdW90Ow0KICAgICBzZWN0aW9uPSZxdW90O2FydGljbGVzLCBwcm9kdWN0cyZxdW90 Ow0KICAgICBkYXRhc29ydD0mcXVvdDthdXRob3IsIHNlY3Rpb24mcXVvdDsmZ3Q7DQogICAg ICAmbHQ7dHhwOnNtZF9saW5rX3RvX25leHQmZ3Q7DQogICAgICAgICAmbHQ7dHhwOnRpdGxl IC8mZ3Q7IChieSAmbHQ7dHhwOmF1dGhvciAvJmd0OykNCiAgICAgICZsdDsvdHhwOnNtZF9s aW5rX3RvX25leHQmZ3Q7DQogICAmbHQ7L3R4cDpzbWRfbmV4dCZndDsNCiZsdDsvdHhwOmlm X2luZGl2aWR1YWxfYXJ0aWNsZSZndDsNCjwvY29kZT48L3ByZT4NCg0KCTxwPk5vdGljZSB0 aGF0OjwvcD4NCg0KCTx1bD4NCgkJPGxpPjxjb2RlPmRhdGFzb3J0PC9jb2RlPiBpcyB1c2Vk IHRvIG9yZGVyIGJ5IGF1dGhvciBmaXJzdCwgdGhlbiBzZWN0aW9uPC9saT4NCgkJPGxpPml0 ZXJhdGluZyBvdmVyIGF1dGhvciBsaXN0cyA8ZW0+bXVzdDwvZW0+IGJlIGRvbmUgaW5zaWRl IHNtZF9uZXh0L3ByZXYgdGFnczwvbGk+DQoJPC91bD4NCg0KCTxoMyBpZD0iZWcxMSI+RXhh bXBsZSAxMTogRGV0ZWN0IHdoZW4gYW4gYXV0aG9yIGNoYW5nZSBvY2N1cnM8L2gzPg0KDQoJ PHA+QW4gZXh0ZW5zaW9uIG9mIDxhIGhyZWY9IiNlZzEwIj5leGFtcGxlIDEwPC9hPiB0aGF0 IHNob3dzIGEgbm90aWZpY2F0aW9uIGV2ZXJ5IHRpbWUgeW91IGFyZSBhYm91dCB0byAmIzgy MjA7c3RlcCBvZmYmIzgyMjE7IGFuIGF1dGhvciYjODIxNztzIGFydGljbGUgbGlzdCBpbnRv IHRoZSBuZXh0IG9yIHByZXZpb3VzIGF1dGhvcjo8L3A+DQoNCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0 Ow0KICAgJmx0O3AmZ3Q7Q3VycmVudCBhcnRpY2xlIGJ5OiAmbHQ7dHhwOmF1dGhvciAvJmd0 OyZsdDsvcCZndDsNCiAgICZsdDt0eHA6c21kX3ByZXYgYXV0aG9yPSZxdW90O1N0ZWYsIERh bGUsIEpha29iJnF1b3Q7DQogICAgIHNlY3Rpb249JnF1b3Q7YXJ0aWNsZXMsIHByb2R1Y3Rz JnF1b3Q7DQogICAgIGRhdGFzb3J0PSZxdW90O2F1dGhvciwgc2VjdGlvbiZxdW90OyZndDsN CiAgICAgICZsdDt0eHA6c21kX2xpbmtfdG9fcHJldiZndDsNCiAgICAgICAgICZsdDt0eHA6 dGl0bGUgLyZndDsgKGJ5ICZsdDt0eHA6YXV0aG9yIC8mZ3Q7KQ0KICAgICAgJmx0Oy90eHA6 c21kX2xpbmtfdG9fcHJldiZndDsNCiAgICAgICZsdDt0eHA6c21kX2lmX3N0YXJ0IHR5cGU9 JnF1b3Q7YXV0aG9yJnF1b3Q7Jmd0Ow0KICAgICAgKFByZXZpb3VzIGF1dGhvcikNCiAgICAg ICZsdDsvdHhwOnNtZF9pZl9zdGFydCZndDsNCiAgICZsdDsvdHhwOnNtZF9wcmV2Jmd0Ow0K ICAgJmx0O3R4cDpzbWRfbmV4dCBhdXRob3I9JnF1b3Q7U3RlZiwgRGFsZSwgSmFrb2ImcXVv dDsNCiAgICAgc2VjdGlvbj0mcXVvdDthcnRpY2xlcywgcHJvZHVjdHMmcXVvdDsNCiAgICAg ZGF0YXNvcnQ9JnF1b3Q7YXV0aG9yLCBzZWN0aW9uJnF1b3Q7Jmd0Ow0KICAgICAgJmx0O3R4 cDpzbWRfbGlua190b19uZXh0Jmd0Ow0KICAgICAgICAgJmx0O3R4cDp0aXRsZSAvJmd0OyAo YnkgJmx0O3R4cDphdXRob3IgLyZndDspDQogICAgICAmbHQ7L3R4cDpzbWRfbGlua190b19u ZXh0Jmd0Ow0KICAgICAgJmx0O3R4cDpzbWRfaWZfZW5kIHR5cGU9JnF1b3Q7YXV0aG9yJnF1 b3Q7Jmd0Ow0KICAgICAgKE5leHQgYXV0aG9yKQ0KICAgICAgJmx0Oy90eHA6c21kX2lmX2Vu ZCZndDsNCiAgICZsdDsvdHhwOnNtZF9uZXh0Jmd0Ow0KJmx0Oy90eHA6aWZfaW5kaXZpZHVh bF9hcnRpY2xlJmd0Ow0KPC9jb2RlPjwvcHJlPg0KDQo8L2Rpdj4KPCEtLSAtLS0gQkVHSU4g UExVR0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQojc21kX2hlbHAg eyBsaW5lLWhlaWdodDoxLjUgO30NCiNzbWRfaGVscCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9s ZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsg YmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9DQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZv bnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1j b2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBw YWRkaW5nOjEwcHg7IH0NCiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4 IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9 DQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRp bmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2Vy aWY7IH0NCiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMjc1Njg1OyBmb250OiBib2xkIDEycHgg QXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAw IDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu ZTt9DQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7 IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3Jt OiB1cHBlcmNhc2U7IH0NCiNzbWRfaGVscCAuYXRubSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNv bG9yOiMzM2Q7IH0NCiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVy OjFweCBkb3R0ZWQgIzk5OTsgfQ0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQt YWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQ0KI3NtZF9oZWxwIHRkLCAjc21k X2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzouNWVtIDA7fQ0KI3Nt ZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQ0KI3NtZF9oZWxwIC5yZXF1 aXJlZCB7Y29sb3I6cmVkO30NCiNzbWRfaGVscCBsaSB7IG1hcmdpbjo1cHggMjBweCA1cHgg MzBweDsgfQ0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9DQo8L3N0eWxl Pgo8IS0tIC0tLSBFTkQgUExVR0lOIENTUyAtLS0gLS0+IjtzOjQ6ImNvZGUiO3M6MTM1NjE6 Ii8vIFB1YmxpYyBpbnRlcmZhY2VzOiBjb252ZW5pZW5jZSBmdW5jdGlvbnMNCmZ1bmN0aW9u IHNtZF9wcmV2KCRhdHRzLCAkdGhpbmcpIHsNCgkkYXR0c1snZGlyJ10gPSAncHJldic7DQoJ cmV0dXJuIHNtZF9uZWFyZXN0KCRhdHRzLCAkdGhpbmcpOw0KfQ0KZnVuY3Rpb24gc21kX25l eHQoJGF0dHMsICR0aGluZykgew0KCSRhdHRzWydkaXInXSA9ICduZXh0JzsNCglyZXR1cm4g c21kX25lYXJlc3QoJGF0dHMsICR0aGluZyk7DQp9DQpmdW5jdGlvbiBzbWRfbGlua190b19w cmV2KCRhdHRzLCAkdGhpbmcpIHsNCgkkYXR0c1snZGlyJ10gPSAncHJldic7DQoJcmV0dXJu IHNtZF9saW5rX3RvKCRhdHRzLCAkdGhpbmcpOw0KfQ0KZnVuY3Rpb24gc21kX2xpbmtfdG9f bmV4dCgkYXR0cywgJHRoaW5nKSB7DQoJJGF0dHNbJ2RpciddID0gJ25leHQnOw0KCXJldHVy biBzbWRfbGlua190bygkYXR0cywgJHRoaW5nKTsNCn0NCmZ1bmN0aW9uIHNtZF9pZl9zdGFy dCgkYXR0cywgJHRoaW5nKSB7DQoJJGF0dHNbJ2RpciddID0gJ3ByZXYnOw0KCXJldHVybiBz bWRfaWZfaG9yaXpvbigkYXR0cywgJHRoaW5nKTsNCn0NCmZ1bmN0aW9uIHNtZF9pZl9lbmQo JGF0dHMsICR0aGluZykgew0KCSRhdHRzWydkaXInXSA9ICduZXh0JzsNCglyZXR1cm4gc21k X2lmX2hvcml6b24oJGF0dHMsICR0aGluZyk7DQp9DQoNCi8vICoqKioqKioqKioqKioqKioq KioqKioqKioqKioNCi8vIFByaXZhdGUgZnVuY3Rpb246IG5vdCBmb3IgcHVibGljIGNvbnN1 bXB0aW9uDQovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpmdW5jdGlvbiBzbWRf aWZfaG9yaXpvbigkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRwcmV0ZXh0LCAkdGhpc2Fy dGljbGUsICR0aGlzY2F0ZWdvcnksICRzbWRfbGFzdCwgJHNtZF9maXJzdCwgJHNtZF9pbl9u ZWFyZXN0Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3R5cGUnID0+ICdsaXN0JywN CgkJJ2xvZ2ljJyA9PiAnb3InLA0KCQknZGlyJyA9PiAnbmV4dCcsDQoJCSdkZWJ1ZycgPT4g MCwNCgkpLCAkYXR0cykpOw0KDQoJJGl0b3V0ID0gYXJyYXkoKTsgLy8gRm9yIGRlYnVnIG9u bHkNCgkkdHlwZSA9IGRvX2xpc3QoJHR5cGUpOw0KCSRvdXQgPSBhcnJheSgpOw0KCWZvcmVh Y2ggKCR0eXBlIGFzICRpdGVtKSB7DQoJCWlmICgkZGVidWcpIHsNCgkJCSRpdG91dFtdID0g JGl0ZW07DQoJCX0NCgkJc3dpdGNoICgkaXRlbSkgew0KCQkJY2FzZSAnbGlzdCc6DQoJCQkJ aWYgKCRzbWRfaW5fbmVhcmVzdCkgew0KCQkJCQlpZiAoJGRpciA9PSAnbmV4dCcpIHsNCgkJ CQkJCSRvdXRbXSA9IChlbXB0eSgkc21kX2xhc3QpKSA/IHRydWUgOiBmYWxzZTsNCgkJCQkJ fSBlbHNlIHsNCgkJCQkJCSRvdXRbXSA9IChlbXB0eSgkc21kX2ZpcnN0KSkgPyB0cnVlIDog ZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICdjYXRlZ29yeSc6 DQoJCQkJaWYgKCRzbWRfaW5fbmVhcmVzdCkgew0KCQkJCQlpZiAoJGRpciA9PSAnbmV4dCcp IHsNCgkJCQkJCSRvdXRbXSA9ICghZW1wdHkoJHNtZF9sYXN0KSAmJiAoJHNtZF9sYXN0Wydj YXRlZ29yeTEnXSAhPSAkdGhpc2FydGljbGVbJ2NhdGVnb3J5MSddIHx8ICRzbWRfbGFzdFsn Y2F0ZWdvcnkyJ10gIT0gJHRoaXNhcnRpY2xlWydjYXRlZ29yeTInXSkpID8gdHJ1ZSA6IGZh bHNlOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJG91dFtdID0gKCFlbXB0eSgkc21kX2ZpcnN0 KSAmJiAoJHNtZF9maXJzdFsnY2F0ZWdvcnkxJ10gIT0gJHRoaXNhcnRpY2xlWydjYXRlZ29y eTEnXSB8fCAkc21kX2ZpcnN0WydjYXRlZ29yeTInXSAhPSAkdGhpc2FydGljbGVbJ2NhdGVn b3J5MiddKSkgPyB0cnVlIDogZmFsc2U7DQoJCQkJCX0NCgkJCQl9IGVsc2Ugew0KCQkJCQlp ZiAoJGRpciA9PSAnbmV4dCcpIHsNCgkJCQkJCSRvdXRbXSA9ICghZW1wdHkoJHRoaXNjYXRl Z29yeVsnaXNfbGFzdCddKSkgPyB0cnVlIDogZmFsc2U7DQoJCQkJCX0gZWxzZSB7DQoJCQkJ CQkkb3V0W10gPSAoIWVtcHR5KCR0aGlzY2F0ZWdvcnlbJ2lzX2ZpcnN0J10pKSA/IHRydWUg OiBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlicmVhazsNCgkJCWNhc2UgJ2F1dGhvcic6 DQoJCQkJaWYgKCRzbWRfaW5fbmVhcmVzdCkgew0KCQkJCQlpZiAoJGRpciA9PSAnbmV4dCcp IHsNCgkJCQkJCSRvdXRbXSA9ICghZW1wdHkoJHNtZF9sYXN0KSAmJiAkc21kX2xhc3RbJ2F1 dGhvciddICE9ICR0aGlzYXJ0aWNsZVsnYXV0aG9yaWQnXSkgPyB0cnVlIDogZmFsc2U7DQoJ CQkJCX0gZWxzZSB7DQoJCQkJCQkkb3V0W10gPSAoIWVtcHR5KCRzbWRfZmlyc3QpICYmICRz bWRfZmlyc3RbJ2F1dGhvciddICE9ICR0aGlzYXJ0aWNsZVsnYXV0aG9yaWQnXSkgPyB0cnVl IDogZmFsc2U7DQoJCQkJCX0NCgkJCQl9IGVsc2Ugew0KCQkJCQkvLyBOb3QgcG9zc2libGUg c2luY2UgYXV0aG9yIGxpc3RzIGFyZSBub3QgcGVybWl0dGVkIGluIFRYUA0KCQkJCX0NCgkJ CQlicmVhazsNCgkJCWNhc2UgJ2NhdDEnOg0KCQkJY2FzZSAnY2F0ZWdvcnkxJzoNCgkJCQlp ZiAoJHNtZF9pbl9uZWFyZXN0KSB7DQoJCQkJCWlmICgkZGlyID09ICduZXh0Jykgew0KCQkJ CQkJJG91dFtdID0gKCFlbXB0eSgkc21kX2xhc3QpICYmICRzbWRfbGFzdFsnY2F0ZWdvcnkx J10gIT0gJHRoaXNhcnRpY2xlWydjYXRlZ29yeTEnXSkgPyB0cnVlIDogZmFsc2U7DQoJCQkJ CX0gZWxzZSB7DQoJCQkJCQkkb3V0W10gPSAoIWVtcHR5KCRzbWRfZmlyc3QpICYmICRzbWRf Zmlyc3RbJ2NhdGVnb3J5MSddICE9ICR0aGlzYXJ0aWNsZVsnY2F0ZWdvcnkxJ10pID8gdHJ1 ZSA6IGZhbHNlOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJaWYgKCRkaXIgPT0gJ25l eHQnKSB7DQoJCQkJCQkkb3V0W10gPSAoIWVtcHR5KCR0aGlzY2F0ZWdvcnlbJ2lzX2xhc3Qn XSkpID8gdHJ1ZSA6IGZhbHNlOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJG91dFtdID0gKCFl bXB0eSgkdGhpc2NhdGVnb3J5Wydpc19maXJzdCddKSkgPyB0cnVlIDogZmFsc2U7DQoJCQkJ CX0NCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICdjYXQyJzoNCgkJCWNhc2UgJ2NhdGVn b3J5Mic6DQoJCQkJaWYgKCRzbWRfaW5fbmVhcmVzdCkgew0KCQkJCQlpZiAoJGRpciA9PSAn bmV4dCcpIHsNCgkJCQkJCSRvdXRbXSA9ICghZW1wdHkoJHNtZF9sYXN0KSAmJiAkc21kX2xh c3RbJ2NhdGVnb3J5MiddICE9ICR0aGlzYXJ0aWNsZVsnY2F0ZWdvcnkyJ10pID8gdHJ1ZSA6 IGZhbHNlOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJG91dFtdID0gKCFlbXB0eSgkc21kX2Zp cnN0KSAmJiAkc21kX2ZpcnN0WydjYXRlZ29yeTInXSAhPSAkdGhpc2FydGljbGVbJ2NhdGVn b3J5MiddKSA/IHRydWUgOiBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCWlm ICgkZGlyID09ICduZXh0Jykgew0KCQkJCQkJJG91dFtdID0gKCFlbXB0eSgkdGhpc2NhdGVn b3J5Wydpc19sYXN0J10pKSA/IHRydWUgOiBmYWxzZTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJ CSRvdXRbXSA9ICghZW1wdHkoJHRoaXNjYXRlZ29yeVsnaXNfZmlyc3QnXSkpID8gdHJ1ZSA6 IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnc2VjdGlvbic6 DQoJCQlkZWZhdWx0Og0KCQkJCWlmICgkc21kX2luX25lYXJlc3QpIHsNCgkJCQkJaWYgKCRk aXIgPT0gJ25leHQnKSB7DQoJCQkJCQkkb3V0W10gPSAoIWVtcHR5KCRzbWRfbGFzdCkgJiYg JHNtZF9sYXN0WydzZWN0aW9uJ10gIT0gJHRoaXNhcnRpY2xlWydzZWN0aW9uJ10pID8gdHJ1 ZSA6IGZhbHNlOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJG91dFtdID0gKCFlbXB0eSgkc21k X2ZpcnN0KSAmJiAkc21kX2ZpcnN0WydzZWN0aW9uJ10gIT0gJHRoaXNhcnRpY2xlWydzZWN0 aW9uJ10pID8gdHJ1ZSA6IGZhbHNlOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJaWYg KCRkaXIgPT0gJ25leHQnKSB7DQoJCQkJCQkkb3V0W10gPSBlbXB0eSgkcHJldGV4dFsnbmV4 dF9pZCddKSA/IHRydWUgOiBmYWxzZTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRvdXRbXSA9 IGVtcHR5KCRwcmV0ZXh0WydwcmV2X2lkJ10pID8gdHJ1ZSA6IGZhbHNlOw0KCQkJCQl9DQoJ CQkJfQ0KCQkJCWJyZWFrOw0KCQl9DQoJfQ0KCWlmICgkZGVidWcpIHsNCgkJZWNobyAnKysg VEVTVCBSRVNVTFRTICsrJzsNCgkJZG1wKCRpdG91dCk7DQoJCWRtcCgkb3V0KTsNCgl9DQoJ JHJlcyA9ICgkb3V0KSA/IHRydWUgOiBmYWxzZTsNCglpZiAoc3RydG9sb3dlcigkbG9naWMp ID09ICJhbmQiICYmIGluX2FycmF5KGZhbHNlLCAkb3V0KSkgew0KCQkkcmVzID0gZmFsc2U7 DQoJfQ0KCWlmIChzdHJ0b2xvd2VyKCRsb2dpYykgPT0gIm9yIiAmJiAhaW5fYXJyYXkodHJ1 ZSwgJG91dCkpIHsNCgkJJHJlcyA9IGZhbHNlOw0KCX0NCglpZiAoJGRlYnVnKSB7DQoJCWVj aG8gJysrIEZJTkFMIFJFU1VMVCArKyc7DQoJCWRtcCgkcmVzKTsNCgl9DQoJcmV0dXJuIHBh cnNlKEV2YWxFbHNlKCR0aGluZywgJHJlcykpOw0KfQ0KDQovLyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQovLyBQcml2YXRlIGZ1bmN0aW9uOiBub3QgZm9yIHB1YmxpYyBjb25z dW1wdGlvbg0KLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZnVuY3Rpb24gc21k X25lYXJlc3QoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRp Y2xlLCAkdGhpc2NhdGVnb3J5LCAkcHJlZnMsICRuZXh0X2lkLCAkcHJldl9pZCwgJG5leHRf dGl0bGUsICRwcmV2X3RpdGxlLCAkc21kX2xhc3QsICRzbWRfZmlyc3QsICRzbWRfaW5fbmVh cmVzdDsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdzZWN0aW9uJyA9PiAkcHJldGV4 dFsncyddLA0KCQknY2F0ZWdvcnknID0+ICRwcmV0ZXh0WydjJ10sDQoJCSdhdXRob3InID0+ ICRwcmV0ZXh0WydhdXRob3InXSwNCgkJJ3JlYWxuYW1lJyA9PiAnJywNCgkJJ3N0YXR1cycg PT4gJzQnLA0KCQkndGltZScgPT4gJ2FueScsIC8vIGFueSwgZnV0dXJlLCBwYXN0DQoJCSdk YXRhc29ydCcgPT4gJ3NlY3Rpb24sIGNhdGVnb3J5MSwgY2F0ZWdvcnkyLCBhdXRob3InLA0K CQkndGltZXNvcnQnID0+ICdwb3N0ZWQnLA0KCQknZm9ybScgPT4gJycsDQoJCSdkaXInID0+ ICduZXh0JywgLy8gU2V0IGJ5IHdyYXBwZXIgdGFncw0KCQknZGVidWcnID0+IDAsDQoJKSwg JGF0dHMpKTsNCg0KCWV4dHJhY3QoJHByZWZzKTsNCgkkc21kX2luX25lYXJlc3QgPSB0cnVl Ow0KDQoJJHRoaW5nID0gKGVtcHR5KCRmb3JtKSkgPyAkdGhpbmcgOiBmZXRjaF9mb3JtKCRm b3JtKTsNCgkkZXhwaXJlZCA9ICgkcHVibGlzaF9leHBpcmVkX2FydGljbGVzKSA/ICcnIDog JyBBTkQgKG5vdygpIDw9IEV4cGlyZXMgb3IgRXhwaXJlcyA9ICcuTlVMTERBVEVUSU1FLicp JzsNCgkkc2FmZV9uYW1lID0gc2FmZV9wZngoJ3RleHRwYXR0ZXJuJyk7DQoNCgkvLyBGaWx0 ZXJzDQoJJGNhdFNRTCA9ICRzZWNTUUwgPSAkYXV0aFNRTCA9ICcnOw0KCWlmKCRjYXRlZ29y eSkgew0KCQkkY2F0U1FMID0gZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3Qo JGNhdGVnb3J5KSkpKTsNCgkJJGNhdFNRTCA9ICcgQU5EICggQ2F0ZWdvcnkxIElOICgnLiRj YXRTUUwuJykgT1IgQ2F0ZWdvcnkyIElOICgnLiRjYXRTUUwuJykgKSAnOw0KCX0NCglpZigk c2VjdGlvbikgew0KCQkkc2VjU1FMID0gJyBBTkQgU2VjdGlvbiBJTiAoJy5kb1F1b3RlKGpv aW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkc2VjdGlvbikpKSkuJykgJzsNCgl9DQoJaWYo JHJlYWxuYW1lKSB7DQoJCSRhdXRob3IgPSBqb2luKCcsJywgc2FmZV9jb2x1bW4oJ25hbWUn LCAndHhwX3VzZXJzJywgJ1JlYWxOYW1lIElOICgnLiBkb1F1b3RlKGpvaW4oIicsJyIsIGRv U2xhc2goZG9BcnJheShkb19saXN0KCRyZWFsbmFtZSksICd1cmxkZWNvZGUnKSkpKSAuJykn ICkpOw0KCX0NCglpZigkYXV0aG9yKSB7DQoJCSRhdXRoU1FMID0gJyBBTkQgQXV0aG9ySUQg SU4gKCcuZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGF1dGhvcikpKSku JykgJzsNCgl9DQoJJHN0YXR1cyA9IGRvX2xpc3QoJHN0YXR1cyk7DQoJJHN0YXRpID0gYXJy YXkoKTsNCglmb3JlYWNoICgkc3RhdHVzIGFzICRzdGF0KSB7DQoJCWlmIChlbXB0eSgkc3Rh dCkpIHsNCgkJCWNvbnRpbnVlOw0KCQl9IGVsc2UgaWYgKGlzX251bWVyaWMoJHN0YXQpKSB7 DQoJCQkkc3RhdGlbXSA9ICRzdGF0Ow0KCQl9IGVsc2Ugew0KCQkJJHN0YXRpW10gPSBnZXRT dGF0dXNOdW0oJHN0YXQpOw0KCQl9DQoJfQ0KCSRzdGF0U1FMID0gJ1N0YXR1cyBJTiAoJy5q b2luKCcsJywgJHN0YXRpKS4nKSc7DQoJJHRpbWVTUUwgPSAnJzsNCglzd2l0Y2goJHRpbWUp IHsNCgkJY2FzZSAiYW55IiA6IGJyZWFrOw0KCQljYXNlICJmdXR1cmUiIDogJHRpbWVTUUwg PSAiIEFORCBQb3N0ZWQgPiBub3coKSI7IGJyZWFrOw0KCQlkZWZhdWx0IDogJHRpbWVTUUwg PSAiIEFORCBQb3N0ZWQgPCBub3coKSI7IGJyZWFrOyAvLyBUaGUgcGFzdA0KCX0NCg0KCS8v IFNvcnQNCgkkc29yZGVyID0gKCgkZGlyPT0nbmV4dCcpID8gJyBERVNDJyA6ICcgQVNDJyk7 IC8vIE5lZ2F0aXZlIGxvZ2ljIHRvIGF2b2lkIGxvb2thaGVhZDogdGhlICJsYXN0IiByb3cg c2VlbiBpcyBhbHdheXMgdGhlIG9uZSByZXF1aXJlZA0KCSRvcmRlcmJ5ID0gYXJyYXkoKTsN CglpZiAoJGRhdGFzb3J0KSB7DQoJCSRkYXRhc29ydCA9IGRvX2xpc3QoJGRhdGFzb3J0KTsN CgkJZm9yZWFjaCAoJGRhdGFzb3J0IGFzICRpdGVtKSB7DQoJCQlzd2l0Y2goJGl0ZW0pIHsN CgkJCQljYXNlICdzZWN0aW9uJzoNCgkJCQkJaWYgKCRzZWN0aW9uKSB7DQoJCQkJCQkkb3Jk ZXJieVtdID0gJ1NlY3Rpb24nLiRzb3JkZXI7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJ Y2FzZSAnY2F0ZWdvcnknOg0KCQkJCQlpZiAoJGNhdGVnb3J5KSB7DQoJCQkJCQkkb3JkZXJi eVtdID0gJ0NhdGVnb3J5MScuJHNvcmRlcjsNCgkJCQkJCSRvcmRlcmJ5W10gPSAnQ2F0ZWdv cnkyJy4kc29yZGVyOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2NhdGVnb3J5 MSc6DQoJCQkJCWlmICgkY2F0ZWdvcnkpIHsNCgkJCQkJCSRvcmRlcmJ5W10gPSAnQ2F0ZWdv cnkxJy4kc29yZGVyOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2NhdGVnb3J5 Mic6DQoJCQkJCWlmICgkY2F0ZWdvcnkpIHsNCgkJCQkJCSRvcmRlcmJ5W10gPSAnQ2F0ZWdv cnkyJy4kc29yZGVyOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2F1dGhvcic6 DQoJCQkJCWlmICgkYXV0aG9yKSB7DQoJCQkJCQkkb3JkZXJieVtdID0gJ0F1dGhvcklEJy4k c29yZGVyOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KCWlmICgkdGlt ZXNvcnQpIHsNCgkJJHRpbWVzb3J0ID0gZG9fbGlzdCgkdGltZXNvcnQpOw0KCQlmb3JlYWNo ICgkdGltZXNvcnQgYXMgJGl0ZW0pIHsNCgkJCXN3aXRjaChzdHJ0b2xvd2VyKCRpdGVtKSkg ew0KCQkJCWNhc2UgJ2xhc3Rtb2QnOg0KCQkJCQkkb3JkZXJieVtdID0gJ0xhc3RNb2QnLiRz b3JkZXI7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2V4cGlyZXMnOg0KCQkJCQkkb3JkZXJi eVtdID0gJ0V4cGlyZXMnLiRzb3JkZXI7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ3Bvc3Rl ZCc6DQoJCQkJZGVmYXVsdDoNCgkJCQkJJG9yZGVyYnlbXSA9ICdQb3N0ZWQnLiRzb3JkZXI7 DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJJG9yZGVyYnkgPSAnIE9SREVSIEJZ ICcgLiBqb2luKCcsJywgJG9yZGVyYnkpOw0KDQoJLy8gRG8gaXQNCglhc3NlcnRfYXJ0aWNs ZSgpOw0KCSRycyA9IHNhZmVfcm93cygnKiwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1 UG9zdGVkLCB1bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcywgdW5peF90aW1l c3RhbXAoTGFzdE1vZCkgYXMgdUxhc3RNb2QnLA0KCSd0ZXh0cGF0dGVybicsDQoJJHN0YXRT UUwuDQoJCSgoJGNhdGVnb3J5KSA/ICRjYXRTUUwgOiAnJykuDQoJCSgoJHNlY3Rpb24pID8g JHNlY1NRTCA6ICcnKS4NCgkJKCgkYXV0aG9yKSA/ICRhdXRoU1FMIDogJycpLg0KCQkkdGlt ZVNRTC4NCgkJJGV4cGlyZWQuDQoJCSRvcmRlcmJ5LA0KCSRkZWJ1Zyk7DQoJaWYgKCRkZWJ1 ZyA+IDEgJiYgJHJzKSB7DQoJCWVjaG8gJysrIFJFQ09SRCBTRVQgKysnOw0KCQlkbXAoJHJz KTsNCgl9DQoJLy8gRmluZCB0aGUgY3VycmVudCBhcnRpY2xlIGluIHRoZSByZWNvcmQgc2V0 LCB0aGVuIG1vdmUgdG8gZmluZCBuZXh0L3ByZXYNCgkkbGFzdCA9ICRjdXJyID0gJGN0ciA9 IDE7DQoNCglmb3JlYWNoICgkcnMgYXMgJHJvdykgew0KCQlpZiAoJHJvd1snSUQnXSA9PSAk dGhpc2FydGljbGVbJ3RoaXNpZCddKSB7DQoJCQkkY3VyciA9ICRsYXN0Ow0KCQkJYnJlYWs7 DQoJCX0NCgkJJGxhc3QgPSAkcm93OyAvLyBTdG9yZSBjdXJyZW50DQoJCSRjdHIrKzsNCgl9 DQoNCglpZiAoJGN1cnIgIT09IDEpIHsNCgkJaWYgKCRkaXI9PSduZXh0Jykgew0KCQkJJHNt ZF9sYXN0Wydwb3NpdGlvbiddID0gJGN0cjsNCgkJCSRzbWRfbGFzdFsnc2VjdGlvbiddID0g JHRoaXNhcnRpY2xlWydzZWN0aW9uJ107DQoJCQkkc21kX2xhc3RbJ3BzZWMnXSA9ICRwcmV0 ZXh0WydzJ107DQoJCQkkc21kX2xhc3RbJ3BjYXQnXSA9ICRwcmV0ZXh0WydjJ107DQoJCQkk c21kX2xhc3RbJ2NhdGVnb3J5MSddID0gJHRoaXNhcnRpY2xlWydjYXRlZ29yeTEnXTsNCgkJ CSRzbWRfbGFzdFsnY2F0ZWdvcnkyJ10gPSAkdGhpc2FydGljbGVbJ2NhdGVnb3J5MiddOw0K CQkJJHNtZF9sYXN0WydhdXRob3InXSA9ICR0aGlzYXJ0aWNsZVsnYXV0aG9yaWQnXTsNCgkJ fSBlbHNlIHsNCgkJCSRzbWRfZmlyc3RbJ3Bvc2l0aW9uJ10gPSAkY3RyOw0KCQkJJHNtZF9m aXJzdFsncHNlYyddID0gJHByZXRleHRbJ3MnXTsNCgkJCSRzbWRfZmlyc3RbJ3BjYXQnXSA9 ICRwcmV0ZXh0WydjJ107DQoJCQkkc21kX2ZpcnN0WydzZWN0aW9uJ10gPSAkdGhpc2FydGlj bGVbJ3NlY3Rpb24nXTsNCgkJCSRzbWRfZmlyc3RbJ2NhdGVnb3J5MSddID0gJHRoaXNhcnRp Y2xlWydjYXRlZ29yeTEnXTsNCgkJCSRzbWRfZmlyc3RbJ2NhdGVnb3J5MiddID0gJHRoaXNh cnRpY2xlWydjYXRlZ29yeTInXTsNCgkJCSRzbWRfZmlyc3RbJ2F1dGhvciddID0gJHRoaXNh cnRpY2xlWydhdXRob3JpZCddOw0KCQl9DQoJfSBlbHNlIHsNCgkJaWYgKCRkaXI9PSduZXh0 Jykgew0KCQkJJHNtZF9sYXN0ID0gYXJyYXkoKTsNCgkJfSBlbHNlIHsNCgkJCSRzbWRfZmly c3QgPSBhcnJheSgpOw0KCQl9DQoJfQ0KDQoJaWYgKCRkZWJ1Zykgew0KCQlpZiAoJGRpcj09 J25leHQnKSB7DQoJCQllY2hvICcrKyBNT1NUIFJFQ0VOVCAoTkVYVCkgKysnOw0KCQkJZG1w KCRzbWRfbGFzdCk7DQoJCX0gZWxzZSB7DQoJCQllY2hvICcrKyBNT1NUIFJFQ0VOVCAoUFJF VikgKysnOw0KCQkJZG1wKCRzbWRfZmlyc3QpOw0KCQl9DQoJfQ0KDQoJLy8gUG9wdWxhdGUg Z2xvYmFscyBpZiB0aGUgbmV4dC9wcmV2IGFydGljbGUgZXhpc3RzDQoJJG91dCA9ICcnOw0K CSRzYXZlZCA9IGFycmF5KCk7DQoJaWYgKCRjdXJyID09PSAxKSB7DQoJCSRvdXQgPSBwYXJz ZSgkdGhpbmcpOw0KCX0gZWxzZSB7DQoJCS8vIEtlZXAgYSBub3RlIG9mIHdoZXJlIHdlIHdl cmUNCgkJYXJ0aWNsZV9wdXNoKCk7DQoJCSRzYXZlZFsncHJldl9pZCddID0gJHByZXZfaWQ7 DQoJCSRzYXZlZFsnbmV4dF9pZCddID0gJG5leHRfaWQ7DQoJCSRzYXZlZFsncHJldl90aXRs ZSddID0gJHByZXZfdGl0bGU7DQoJCSRzYXZlZFsnbmV4dF90aXRsZSddID0gJG5leHRfdGl0 bGU7DQoNCgkJLy8gUHJldGVuZCB3ZSdyZSBpbiB0aGUgbmV3IGFydGljbGUsIGFuZCBmYWtl IHRoZSBnbG9iYWwgdmFycw0KCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRjdXJyKTsNCgkJJHBy ZXZfaWQgPSAoJGRpcj09J3ByZXYnKSA/ICRjdXJyWydJRCddIDogJyc7DQoJCSRuZXh0X2lk ID0gKCRkaXI9PSduZXh0JykgPyAkY3VyclsnSUQnXSA6ICcnOw0KCQkkcHJldl90aXRsZSA9 ICgkZGlyPT0ncHJldicpID8gJGN1cnJbJ1RpdGxlJ10gOiAnJzsNCgkJJG5leHRfdGl0bGUg PSAoJGRpcj09J25leHQnKSA/ICRjdXJyWydUaXRsZSddIDogJyc7DQoJCSR1cmwgPSBwZXJt bGlua3VybF9pZCgkY3VyclsnSUQnXSk7DQoJCSR0aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ ICc8YSByZWw9IicuJGRpci4nIiBocmVmPSInLiR1cmwuJyIgdGl0bGU9IicuJGN1cnJbJ1Rp dGxlJ10uJyI+Jy4kY3VyclsnVGl0bGUnXS4nPC9hPicgOiAkdGhpbmc7DQoJCSRvdXQgPSBw YXJzZSgkdGhpbmcpOw0KDQoJCS8vIFJlc3RvcmUgZXZlcnl0aGluZw0KCQkkcHJldl9pZCA9 ICRzYXZlZFsncHJldl9pZCddOw0KCQkkbmV4dF9pZCA9ICRzYXZlZFsnbmV4dF9pZCddOw0K CQkkcHJldl90aXRsZSA9ICRzYXZlZFsncHJldl90aXRsZSddOw0KCQkkbmV4dF90aXRsZSA9 ICRzYXZlZFsnbmV4dF90aXRsZSddOw0KCQlhcnRpY2xlX3BvcCgpOw0KCX0NCgkkc21kX2lu X25lYXJlc3QgPSBmYWxzZTsNCglyZXR1cm4gJG91dDsNCn0NCg0KLy8gKioqKioqKioqKioq KioqKioqKioqKioqKioqKg0KLy8gUHJpdmF0ZSBmdW5jdGlvbjogbm90IGZvciBwdWJsaWMg Y29uc3VtcHRpb24NCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmZ1bmN0aW9u IHNtZF9saW5rX3RvKCRhdHRzLCAkdGhpbmcgPSBOVUxMKSB7DQoJZ2xvYmFsICRuZXh0X2lk LCAkcHJldl9pZCwgJG5leHRfdGl0bGUsICRwcmV2X3RpdGxlLCAkc21kX2xhc3QsICRzbWRf Zmlyc3QsICRzbWRfaW5fbmVhcmVzdDsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdz aG93YWx3YXlzJyA9PiAwLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdjbGFzcycgPT4gJycs DQoJCSd1cmx2YXJzJyA9PiAnJywNCgkJJ2RpcicgPT4gJ25leHQnLCAvLyBTZXQgYnkgd3Jh cHBlciB0YWdzDQoJCSdkZWJ1ZycgPT4gJzAnLA0KCSksICRhdHRzKSk7DQoNCgkvLyBNYWlu dGFpbiBhbnkgVVJMIHZhcmlhYmxlcw0KCSRhZGRBcmdzID0gYXJyYXkoKTsNCglpZigkdXJs dmFycykgew0KCQkkb3B0ZW5jb2RlID0gJG9wdGZvcmNlID0gJG9wdHByaSA9IGZhbHNlOw0K CQlpZiAoc3RycG9zKCR1cmx2YXJzLCAnU01EX0FMTCcpID09PSAwKSB7DQoJCQkvLyBEZXRl cm1pbmUgaWYgb3B0aW9ucyBhcmUgdG8gYmUgYXBwbGllZCBnbG9iYWxseQ0KCQkJJHVybG9w dHMgPSBkb19saXN0KCR1cmx2YXJzLCAnOicpOw0KCQkJJG9wdGVuY29kZSA9IChpbl9hcnJh eSgnRVNDQVBFJywgJHVybG9wdHMpKSA/IHRydWUgOiBmYWxzZTsNCgkJCSRvcHRmb3JjZSA9 IChpbl9hcnJheSgnRk9SQ0UnLCAkdXJsb3B0cykpID8gdHJ1ZSA6IGZhbHNlOw0KCQkJJG9w dHByaSA9IChpbl9hcnJheSgnVEFHX1BSSU9SSVRZJywgJHVybG9wdHMpKSA/IHRydWUgOiBm YWxzZTsNCgkJCS8vIFBPU1Qgb3ZlcnJpZGVzIEdFVCBpZiBib3RoIGV4aXN0DQoJCQkkdXJs dmFycyA9IGFycmF5X21lcmdlKGFycmF5X2tleXMoJF9HRVQpLCBhcnJheV9rZXlzKCRfUE9T VCkpOw0KCQl9IGVsc2Ugew0KCQkJJHVybHZhcnMgPSBkb19saXN0KCR1cmx2YXJzKTsNCgkJ fQ0KCQlmb3JlYWNoICgkdXJsdmFycyBhcyAkdXJsdmFyKSB7DQoJCQkkdXJsb3B0cyA9IGRv X2xpc3QoJHVybHZhciwgJzonKTsNCgkJCSRlbmNvZGUgPSAoJG9wdGVuY29kZSB8fCBpbl9h cnJheSgnRVNDQVBFJywgJHVybG9wdHMpKSA/IHRydWUgOiBmYWxzZTsNCgkJCSRmb3JjZSA9 ICgkb3B0Zm9yY2UgfHwgaW5fYXJyYXkoJ0ZPUkNFJywgJHVybG9wdHMpKSA/IHRydWUgOiBm YWxzZTsNCgkJCSRwcmkgPSAoJG9wdHByaSB8fCBpbl9hcnJheSgnVEFHX1BSSU9SSVRZJywg JHVybG9wdHMpKSA/IHRydWUgOiBmYWxzZTsNCgkJCSR1cmxwYXJ0cyA9IGRvX2xpc3QoJHVy bG9wdHNbMF0sICc9Jyk7DQoJCQkkdmFyID0gJHVybHBhcnRzWzBdOw0KCQkJJHZhbCA9IGdw cygkdXJscGFydHNbMF0pOw0KCQkJaWYgKCRwcmkpIHsNCgkJCQkkdmFsID0gKGlzc2V0KCR1 cmxwYXJ0c1sxXSkpID8gJHVybHBhcnRzWzFdIDogZ3BzKCR1cmxwYXJ0c1swXSk7DQoJCQl9 IGVsc2Ugew0KCQkJCWlmICgkdmFsPT0nJyAmJiBpc3NldCgkdXJscGFydHNbMV0pKSB7DQoJ CQkJCSR2YWwgPSAkdXJscGFydHNbMV07DQoJCQkJfQ0KCQkJfQ0KCQkJJHZhbCA9ICgkZW5j b2RlKSA/IGh0bWxlbnRpdGllcygkdmFsKSA6ICR2YWw7DQoJCQlpZiAoJHZhbCAhPT0gJycg fHwgJGZvcmNlKSB7DQoJCQkJJGFkZEFyZ3NbXSA9ICR2YXIuJz0nLiR2YWw7DQoJCQl9DQoJ CX0NCgl9DQoNCglpZiAoJGRlYnVnICYmICRhZGRBcmdzKSB7DQoJCWVjaG8gJysrIFVSTCBW QVJTICsrJzsNCgkJZG1wKCRhZGRBcmdzKTsNCiAgIH0NCg0KCWlmICgkZGlyPT0nbmV4dCcg JiYgKCgkc21kX2luX25lYXJlc3QpID8gJHNtZF9sYXN0IDogMSkpIHsNCgkJaWYgKCRuZXh0 X2lkKSB7DQoJCQkkdXJsID0gcGVybWxpbmt1cmxfaWQoJG5leHRfaWQpIC4gKCgkYWRkQXJn cykgPyAnPycuIGpvaW4oYSwgJGFkZEFyZ3MpIDogJycpOw0KCQkJaWYgKCR0aGluZykgew0K CQkJCSR0aGluZyA9IHBhcnNlKCR0aGluZyk7DQoJCQkJJG5leHRfdGl0bGUgPSBlc2NhcGVf dGl0bGUoJG5leHRfdGl0bGUpOw0KDQoJCQkJcmV0dXJuIGRvV3JhcChhcnJheSgnPGEgcmVs PSJuZXh0IiBocmVmPSInLiR1cmwuJyInLiAoKCRjbGFzcyAmJiAhJHdyYXB0YWcpID8gJyBj bGFzcz0iJy4kY2xhc3MuJyInIDogJycpLg0KCQkJCQkoJG5leHRfdGl0bGUgIT0gJHRoaW5n ID8gJyB0aXRsZT0iJy4kbmV4dF90aXRsZS4nIicgOiAnJykuDQoJCQkJCSc+Jy4kdGhpbmcu JzwvYT4nKSwgJHdyYXB0YWcsICcnLCAkY2xhc3MpOw0KCQkJfQ0KCQkJcmV0dXJuICR1cmw7 DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gKCRzaG93YWx3YXlzKSA/IHBhcnNlKCR0aGluZykg OiAnJzsNCgkJfQ0KCX0NCglpZiAoJGRpcj09J3ByZXYnICYmICgoJHNtZF9pbl9uZWFyZXN0 KSA/ICRzbWRfZmlyc3QgOiAxKSkgew0KCQlpZiAoJHByZXZfaWQpIHsNCgkJCSR1cmwgPSBw ZXJtbGlua3VybF9pZCgkcHJldl9pZCkgLiAoKCRhZGRBcmdzKSA/ICc/Jy4gam9pbihhLCAk YWRkQXJncykgOiAnJyk7DQoJCQlpZiAoJHRoaW5nKSB7DQoJCQkJJHRoaW5nID0gcGFyc2Uo JHRoaW5nKTsNCgkJCQkkcHJldl90aXRsZSA9IGVzY2FwZV90aXRsZSgkcHJldl90aXRsZSk7 DQoNCgkJCQlyZXR1cm4gZG9XcmFwKGFycmF5KCc8YSByZWw9InByZXYiIGhyZWY9IicuJHVy bC4nIicuICgoJGNsYXNzICYmICEkd3JhcHRhZykgPyAnIGNsYXNzPSInLiRjbGFzcy4nIicg OiAnJykuDQoJCQkJCSgkcHJldl90aXRsZSAhPSAkdGhpbmcgPyAnIHRpdGxlPSInLiRwcmV2 X3RpdGxlLiciJyA6ICcnKS4NCgkJCQkJJz4nLiR0aGluZy4nPC9hPicpLCAkd3JhcHRhZywg JycsICRjbGFzcyk7DQoJCQl9DQoJCQlyZXR1cm4gJHVybDsNCgkJfSBlbHNlIHsNCgkJCXJl dHVybiAoJHNob3dhbHdheXMpID8gcGFyc2UoJHRoaW5nKSA6ICcnOw0KCQl9DQoJfQ0KCXJl dHVybjsNCn0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NToi b3JkZXIiO3M6MToiNSI7czozOiJtZDUiO3M6MzI6IjIzMDM0MDg5MzcwYWQ2NmQ1YTdkY2Y4 YjZlZjQ2NjY3Ijt9