# Name: soo_required_files v0.2.2 # Type: Admin/Client side plugin # Load JavaScript and CSS files per article # Author: Jeff Soo # URL: http://ipsedixit.net/txp/ # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE4OiJzb29fcmVxdWlyZWRfZmlsZXMiO3M6NjoiYXV0aG9y IjtzOjg6IkplZmYgU29vIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI1OiJodHRwOi8vaXBzZWRp eGl0Lm5ldC90eHAvIjtzOjc6InZlcnNpb24iO3M6NToiMC4yLjIiO3M6MTE6ImRlc2NyaXB0 aW9uIjtzOjQxOiJMb2FkIEphdmFTY3JpcHQgYW5kIENTUyBmaWxlcyBwZXIgYXJ0aWNsZSI7 czo0OiJoZWxwIjtzOjEyMjEzOiI8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpkaXYjc2VkX2hl bHAgcHJlIHtwYWRkaW5nOiAwLjVlbSAxZW07IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjog MXB4IGRhc2hlZCAjY2NjO30KZGl2I3NlZF9oZWxwIGgxLCBkaXYjc2VkX2hlbHAgaDIsIGRp diNzZWRfaGVscCBoMywgZGl2I3NlZF9oZWxwIGgzIGNvZGUge2ZvbnQtZmFtaWx5OiBzYW5z LXNlcmlmOyBmb250LXdlaWdodDogYm9sZDt9CmRpdiNzZWRfaGVscCBoMSwgZGl2I3NlZF9o ZWxwIGgyLCBkaXYjc2VkX2hlbHAgaDMge21hcmdpbi1sZWZ0OiAtMWVtO30KZGl2I3NlZF9o ZWxwIGgyLCBkaXYjc2VkX2hlbHAgaDMge21hcmdpbi10b3A6IDJlbTt9CmRpdiNzZWRfaGVs cCBoMSB7Zm9udC1zaXplOiAyLjRlbTt9CmRpdiNzZWRfaGVscCBoMiB7Zm9udC1zaXplOiAx LjhlbTt9CmRpdiNzZWRfaGVscCBoMyB7Zm9udC1zaXplOiAxLjRlbTt9CmRpdiNzZWRfaGVs cCBoNCB7Zm9udC1zaXplOiAxLjJlbTt9CmRpdiNzZWRfaGVscCBoNSB7Zm9udC1zaXplOiAx ZW07bWFyZ2luLWxlZnQ6MWVtO2ZvbnQtc3R5bGU6b2JsaXF1ZTt9CmRpdiNzZWRfaGVscCBo NiB7Zm9udC1zaXplOiAxZW07bWFyZ2luLWxlZnQ6MmVtO2ZvbnQtc3R5bGU6b2JsaXF1ZTt9 CmRpdiNzZWRfaGVscCBsaSB7bGlzdC1zdHlsZS10eXBlOiBkaXNjO30KZGl2I3NlZF9oZWxw IGxpIGxpIHtsaXN0LXN0eWxlLXR5cGU6IGNpcmNsZTt9CmRpdiNzZWRfaGVscCBsaSBsaSBs aSB7bGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7fQpkaXYjc2VkX2hlbHAgbGkgYSBjb2RlIHtm b250LXdlaWdodDogbm9ybWFsO30KZGl2I3NlZF9oZWxwIGxpIGNvZGU6Zmlyc3QtY2hpbGQg e2JhY2tncm91bmQ6ICNkZGQ7cGFkZGluZzowIC4zZW07bWFyZ2luLWxlZnQ6LS4zZW07fQpk aXYjc2VkX2hlbHAgbGkgbGkgY29kZTpmaXJzdC1jaGlsZCB7YmFja2dyb3VuZDpub25lO3Bh ZGRpbmc6MDttYXJnaW4tbGVmdDowO30KZGl2I3NlZF9oZWxwIGRmbiB7Zm9udC13ZWlnaHQ6 Ym9sZDtmb250LXN0eWxlOm9ibGlxdWU7fQpkaXYjc2VkX2hlbHAgLnJlcXVpcmVkLCBkaXYj c2VkX2hlbHAgLndhcm5pbmcge2NvbG9yOnJlZDt9CmRpdiNzZWRfaGVscCAuZGVmYXVsdCB7 Y29sb3I6Z3JlZW47fQpkaXYjc2VkX2hlbHAga2JkIHsKCWZvbnQtZmFtaWx5OiBWZXJkYW5h LCBBcmlhbCwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMTFweDsKCWNvbG9yOiAjMDAwOwoJ bGluZS1oZWlnaHQ6IDExcHg7CgloZWlnaHQ6IDE3cHg7CgliYWNrZ3JvdW5kOiAjZWVlOwoJ Ym9yZGVyOiBzb2xpZCAjYWFhOwoJYm9yZGVyLXdpZHRoOiAxcHggMCAwIDFweDsKCXBhZGRp bmc6IC0xcHggMXB4Owp9Cjwvc3R5bGU+Cgk8cD48ZGl2IGlkPSJzZWRfaGVscCI+PC9wPgoK IDxkaXYgaWQ9InRvYyI+CgoJPGgyPkNvbnRlbnRzPC9oMj4KCgk8dWw+CgkJPGxpPjxhIGhy ZWY9IiNvdmVydmlldyI+T3ZlcnZpZXc8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3JlcXVp cmVtZW50cyI+UmVxdWlyZW1lbnRzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNpbnN0YWxs YXRpb24iPkluc3RhbGxhdGlvbjwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3VwZ3JhZGlu ZyI+VXBncmFkaW5nIGZyb20gMC4xLjE8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEg aHJlZj0iI3VzYWdlIj5Vc2FnZTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2F0dHJpYnV0 ZXMiPkF0dHJpYnV0ZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3Blci1wYWdlIj5QZXIt cGFnZSBsb2FkaW5nPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNwZXItc2VjdGlvbiI+UGVy LXNlY3Rpb24gbG9hZGluZzwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjcGVyLWFydGljbGUi PlBlci1hcnRpY2xlIGxvYWRpbmc8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3RhZy1jb250 ZW50cyI+TG9hZGluZyB0YWcgY29udGVudHM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2xv YWQtb3JkZXIiPkxvYWQgb3JkZXI8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJl Zj0iI2RlZmF1bHRzIj5QcmVmZXJlbmNlcyAmYW1wOyBkZWZhdWx0czwvYT48L2xpPgoJCTxs aT48YSBocmVmPSIjZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9 IiNoaXN0b3J5Ij5IaXN0b3J5PC9hPjwvbGk+Cgk8L3VsPgoKIDwvZGl2PgoKCTxoMT5zb29f cmVxdWlyZWRfZmlsZXM8L2gxPgoKCTxoMiBpZD0ib3ZlcnZpZXciPk92ZXJ2aWV3PC9oMj4K Cgk8cD5BdXRvbWF0aWMgbG9hZGluZyBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFu PiBhbmQgSmF2YVNjcmlwdCBmaWxlcyBpbiB0aGUgcGFnZSA8Y29kZT4mbHQ7aGVhZCZndDs8 L2NvZGU+IChvciBhbnl3aGVyZSB5b3UgbGlrZSkuIEZvciBiYWNrZ3JvdW5kLCBzZWUgPGEg aHJlZj0iaHR0cDovL2lwc2VkaXhpdC5uZXQvdHhwLzczL2FydGljbGUtc3BlY2lmaWMtY3Nz LWphdmFzY3JpcHQtaW4tdGV4dHBhdHRlcm4iPkFydGljbGUtc3BlY2lmaWMgPHNwYW4gY2xh c3M9ImNhcHMiPkNTUzwvc3Bhbj4gJmFtcDsgSmF2YVNjcmlwdCBpbiBUZXh0cGF0dGVybjwv YT4uPC9wPgoKCTxwPjxzdHJvbmc+c29vX3JlcXVpcmVkX2ZpbGVzPC9zdHJvbmc+IGhhcyBm b3VyIG9wdGlvbnMgZm9yIGxvYWRpbmcgZmlsZXMgYW5kIGZvcm1zOjwvcD4KCgk8dWw+CgkJ PGxpPmFsbCBjb250ZXh0cyAoYnkgdGFnIGNvbnRlbnRzKTwvbGk+CgkJPGxpPnBlciBwYWdl IChmb3IgZmlsZXMgd2l0aCBtYXRjaGluZyBuYW1lcyk8L2xpPgoJCTxsaT5wZXIgc2VjdGlv biAoZm9yIGZpbGVzIHdpdGggbWF0Y2hpbmcgbmFtZXMpPC9saT4KCQk8bGk+cGVyIGFydGlj bGUgKGJ5IGN1c3RvbSBmaWVsZCk8L2xpPgoJPC91bD4KCgk8cD5UaGVzZSBtYXkgYmUgdXNl ZCBpbiBhbnkgY29tYmluYXRpb24uPC9wPgoKCTxoMiBpZD0icmVxdWlyZW1lbnRzIj5SZXF1 aXJlbWVudHM8L2gyPgoKCTxwPk5vIHNwZWNpYWwgcmVxdWlyZW1lbnRzLCBleGNlcHQgdGhh dCBwZXItYXJ0aWNsZSB1c2UgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlczwvc3Bh bj4gYSBjdXN0b20gZmllbGQgKG5hbWVkIDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9uZz4gYnkg ZGVmYXVsdCkuPC9wPgoKCTxwPkFsbCBteSBwbHVnaW5zIGFyZSBnZW5lcmFsbHkgZGV2ZWxv cGVkIGluIHRoZSBsYXRlc3QgVHhwIHB1YmxpYyByZWxlYXNlIGFuZCBtYXkgbm90IGhhdmUg YmVlbiB0ZXN0ZWQgaW4gZWFybGllciB2ZXJzaW9ucy48L3A+CgoJPHA+PHN0cm9uZz5zb29f cmVxdWlyZWRfZmlsZXM8L3N0cm9uZz4gaXMgY29tcGF0aWJsZSB3aXRoIDxhIGhyZWY9Imh0 dHA6Ly9pcHNlZGl4aXQubmV0L3R4cC85Mi9zb29fcGx1Z2luX3ByZWYiPnNvb19wbHVnaW5f cHJlZjwvYT4sIHdoaWNoIDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+cmVxdWlyZXM8L3NwYW4+ IFR4cCB2ZXJzaW9uIDQuMi4wIG9yIGdyZWF0ZXIuPC9wPgoKCTxoMiBpZD0iaW5zdGFsbGF0 aW9uIj5JbnN0YWxsYXRpb248L2gyPgoKCTxwPkZvciBwZXItYXJ0aWNsZSBmaWxlIGFuZCBm b3JtIGxvYWRpbmcsIDxhIGhyZWY9Imh0dHA6Ly90ZXh0Ym9vay50ZXh0cGF0dGVybi5uZXQv d2lraS9pbmRleC5waHA/dGl0bGU9QWR2YW5jZWRfUHJlZmVyZW5jZXMjQ3VzdG9tX0ZpZWxk cyI+bmFtZSBvbmUgb2YgeW91ciBjdXN0b20gZmllbGRzPC9hPiAmIzgyMjA7UmVxdWlyZXMm IzgyMjE7LiAoSWYgeW91IHdpc2ggdG8gbmFtZSBpdCBzb21ldGhpbmcgZWxzZSwgY2hhbmdl IHRoZSBjdXN0b20gZmllbGQgc2V0dGluZyBpbiBwbHVnaW4gcHJlZmVyZW5jZXMgKHNlZSA8 YSBocmVmPSIjZGVmYXVsdHMiPlByZWZlcmVuY2VzICZhbXA7IGRlZmF1bHRzPC9hPiwgYmVs b3cuKTwvcD4KCgk8cD5JbnN0YWxsIHRoZSBvcHRpb25hbCA8YSBocmVmPSJodHRwOi8vaXBz ZWRpeGl0Lm5ldC90eHAvOTIvc29vX3BsdWdpbl9wcmVmIj5zb29fcGx1Z2luX3ByZWY8L2E+ IGlmIHlvdSB3YW50IHRvIGNoYW5nZSBkZWZhdWx0IHNldHRpbmdzIChUeHAgdmVyc2lvbiA0 LjIuMCBvciBncmVhdGVyIDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+ KS48L3A+CgoJPGgzIGlkPSJ1cGdyYWRpbmciPlVwZ3JhZGluZyBmcm9tIDAuMS4xPC9oMz4K Cgk8cD5JZiB5b3UgYXJlIHVwZ3JhZGluZyBmcm9tIHZlcnNpb24gMC4xLjEgd2l0aCA8c3Ry b25nPnNvb19wbHVnaW5fcHJlZjwvc3Ryb25nPiwgY2hlY2sgcHJlZmVyZW5jZXMgYWZ0ZXIg aW5zdGFsbGF0aW9uLiBUd28gYXR0cmlidXRlIG5hbWVzIGhhdmUgYmVlbiBjaGFuZ2VkIGlu IHRoaXMgdmVyc2lvbiwgbWVhbmluZyBhbnkgY3VzdG9tIHNldHRpbmdzIGZvciB0aG9zZSBh dHRyaWJ1dGVzIChkZWZhdWx0IGpzIGFuZCBjc3MgZGlyZWN0b3JpZXMpIHdpbGwgYmUgb3Zl cndyaXR0ZW4gb24gdXBncmFkZS48L3A+CgoJPGgyIGlkPSJ1c2FnZSI+VXNhZ2U8L2gyPgoK CTxwPlBsYWNlIHRoZSA8Y29kZT5zb29fcmVxdWlyZWRfZmlsZXM8L2NvZGU+IHRhZyBpbiB0 aGUgcGFnZSA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+LiBJdCB3b3JrcyBhcyBlaXRoZXIg YSBzaW5nbGUgb3IgY29udGFpbmVyIHRhZzo8L3A+Cgo8cHJlPiZsdDt0eHA6c29vX3JlcXVp cmVkX2ZpbGVzIC8mZ3Q7CjwvcHJlPgoKCTxwPm9yPC9wPgoKPHByZT4mbHQ7dHhwOnNvb19y ZXF1aXJlZF9maWxlcyZndDsKCSZsdDshLS0gY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZmls ZSBhbmQgZm9ybSBuYW1lcyAtLSZndDsKJmx0Oy90eHA6c29vX3JlcXVpcmVkX2ZpbGVzJmd0 Owo8L3ByZT4KCgk8aDMgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2gzPgoKCTxwPllv dSBjYW4gb3ZlcnJpZGUgYW55IG9mIHRoZSBwcmVmZXJlbmNlcyB3aXRoIGl0cyBjb3JyZXNw b25kaW5nIGF0dHJpYnV0ZTsgdGhlIGZvbGxvd2luZyBhcmUgdGhlIG9uZXMgeW91IG1pZ2h0 IGFjdHVhbGx5IHdhbnQgdG8gc2V0IHRoaXMgd2F5OjwvcD4KCgk8dWw+CgkJPGxpPjxjb2Rl PnBlcl9wYWdlPC9jb2RlPiA8ZW0+KGJvb2xlYW4pPC9lbT4gV2hldGhlciB0byBlbmFibGUg cGVyLXBhZ2UgbG9hZGluZzwvbGk+CgkJPGxpPjxjb2RlPnBlcl9zZWN0aW9uPC9jb2RlPiA8 ZW0+KGJvb2xlYW4pPC9lbT4gV2hldGhlciB0byBlbmFibGUgcGVyLXNlY3Rpb24gbG9hZGlu ZzwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0icGVyLXBhZ2UiPlBlci1wYWdlIGxvYWRpbmc8L2gz PgoKCTxwPldoZW4gdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgZWl0aGVyIHRocm91Z2ggPGEg aHJlZj0iI2RlZmF1bHRzIj5wcmVmZXJlbmNlczwvYT4gb3IgYnkgdGhlIDxjb2RlPnBlcl9w YWdlPC9jb2RlPiBhdHRyaWJ1dGUsIHRoZSBwbHVnaW4gd2lsbCBsb29rIGZvciBhIGNzcyBh bmQgYSBqcyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgY3VycmVudCBwYWdlLiBG b3IgZXhhbXBsZSwgaWYgdGhlIGN1cnJlbnQgc2VjdGlvbiB1c2VzIGEgcGFnZSBjYWxsZWQg JiM4MjIwO2FydGljbGUmIzgyMjE7LCB0aGUgcGx1Z2luIHdpbGwgbG9vayBmb3IgZmlsZXMg bmFtZWQgJiM4MjIwO2FydGljbGUuY3NzJiM4MjIxOyBhbmQgJiM4MjIwO2FydGljbGUuanMm IzgyMjE7IGluIHRoZWlyIHJlc3BlY3RpdmUgZGlyZWN0b3JpZXMuPC9wPgoKCTxoMyBpZD0i cGVyLXNlY3Rpb24iPlBlci1zZWN0aW9uIGxvYWRpbmc8L2gzPgoKCTxwPldvcmtzIHRoZSBz YW1lIGFzIHBlci1wYWdlIGxvYWRpbmcsIGV4Y2VwdCBiYXNlZCBvbiB0aGUgY3VycmVudCBz ZWN0aW9uIG5hbWUgKGFuZCB0aGUgPGNvZGU+cGVyX3NlY3Rpb248L2NvZGU+IGF0dHJpYnV0 ZS9wcmVmZXJlbmNlKS48L3A+CgoJPGgzIGlkPSJwZXItYXJ0aWNsZSI+UGVyLWFydGljbGUg bG9hZGluZzwvaDM+CgoJPHA+VGhlIDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9uZz4gZmllbGQg dGFrZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4gTGlzdCBpdGVtcyBjYW4gaW5jbHVkZTo8 L3A+CgoJPHVsPgoJCTxsaT5KYXZhU2NyaXB0IGZpbGUgbmFtZXMgKGUuZy4sICYjODIyMDtz Y3JpcHQuanMmIzgyMjE7KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3Nw YW4+IGZpbGUgbmFtZXMgKGUuZywgJiM4MjIwO3N0eWxlLmNzcyYjODIyMTspPC9saT4KCQk8 bGk+VHhwIGZvcm0gbmFtZXM8L2xpPgoJPC91bD4KCgk8cD5BbnkgaXRlbSBlbmRpbmcgaW4g JiM4MjIwOy5qcyYjODIyMTsgaXMgYXNzdW1lZCB0byBiZSBhIEphdmFTY3JpcHQgZmlsZS4g SXQgd2lsbCByZXN1bHQgaW4gYSA8Y29kZT4mbHQ7c2NyaXB0Jmd0OzwvY29kZT4gZWxlbWVu dCBsb2FkaW5nIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkZWZhdWx0IEphdmFTY3Jp cHQgZGlyZWN0b3J5IChzZWUgPGEgaHJlZj0iI2RlZmF1bHRzIj5EZWZhdWx0czwvYT4sIGJl bG93KS48L3A+CgoJPHA+QW55IGl0ZW0gZW5kaW5nIGluICYjODIyMDsuY3NzJiM4MjIxOyBp cyBhc3N1bWVkIHRvIGJlIGEgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gZmlsZS4g SXQgd2lsbCByZXN1bHQgaW4gYSA8Y29kZT4mbHQ7bGluayZndDs8L2NvZGU+IGVsZW1lbnQg bG9hZGluZyB0aGUgc3BlY2lmaWVkIGZpbGUgaW4gdGhlIGRlZmF1bHQgPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gZGlyZWN0b3J5IChzZWUgPGEgaHJlZj0iI2RlZmF1bHRzIj5E ZWZhdWx0czwvYT4sIGJlbG93KS48L3A+CgoJPHA+QW55dGhpbmcgZWxzZSBpcyBhc3N1bWVk IHRvIGJlIHRoZSBuYW1lIG9mIGEgVHhwIGZvcm0uIFRoZSBwbHVnaW4gd2lsbCBhdHRlbXB0 IHRvIG91dHB1dCB0aGUgbmFtZWQgZm9ybSAoZmlyc3QgYWRkaW5nIHRoZSBkZWZhdWx0IHBy ZWZpeDsgc2VlIDxhIGhyZWY9IiNkZWZhdWx0cyI+RGVmYXVsdHM8L2E+LCBiZWxvdykuPC9w PgoKCTxoMyBpZD0idGFnLWNvbnRlbnRzIj5Mb2FkaW5nIHRhZyBjb250ZW50czwvaDM+CgoJ PHA+SWYgeW91IHVzZSA8Y29kZT5zb29fcmVxdWlyZWRfZmlsZXM8L2NvZGU+IGFzIGEgY29u dGFpbmVyLCB0aGUgdGFnIGNvbnRlbnRzIGFyZSB0cmVhdGVkIGluIHRoZSBzYW1lIHdheSBh cyB0aGUgPHN0cm9uZz5SZXF1aXJlczwvc3Ryb25nPiBmaWVsZCBjb250ZW50cywgYWJvdmUu IFRoYXQgaXMsIHRoZSB0YWcgY29udGVudHMgc2hvdWxkIGJlIGEgY29tbWEtc2VwYXJhdGVk IGxpc3QgYW5kIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgY3NzIGZpbGVzLCBqcyBmaWxl cywgYW5kIFR4cCBmb3JtIG5hbWVzLjwvcD4KCgk8cD5BcyBvZiB2ZXJzaW9uIDAuMi4yIHlv dSBjYW4gaW5jbHVkZSBUeHAgdGFncyBpbiB0aGUgdGFnIGNvbnRlbnRzLCBhbGxvd2luZyBl LmcuIFR4cCBjb25kaXRpb25hbCB0YWdzIGZvciBmdXJ0aGVyIGF1dG9tYXRpb24gb3B0aW9u cy48L3A+CgoJPGgzIGlkPSJsb2FkLW9yZGVyIj5Mb2FkIG9yZGVyPC9oMz4KCgk8cD5GaWxl cyBhbmQgZm9ybXMgYXJlIGxvYWRlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOjwvcD4KCgk8 b2w+CgkJPGxpPlRhZyBjb250ZW50czwvbGk+CgkJPGxpPlBlci1wYWdlIGZpbGVzPC9saT4K CQk8bGk+UGVyLXNlY3Rpb24gZmlsZXM8L2xpPgoJCTxsaT48c3Ryb25nPlJlcXVpcmVzPC9z dHJvbmc+IGZpZWxkIGNvbnRlbnRzPC9saT4KCTwvb2w+CgoJPGgyIGlkPSJkZWZhdWx0cyI+ UHJlZmVyZW5jZXMgJmFtcDsgZGVmYXVsdHM8L2gyPgoKCTxwPllvdSBjYW4gY2hhbmdlIHRo ZSBkZWZhdWx0IHZhbHVlcyBmb3IgdmFyaW91cyBzZXR0aW5ncyBhbmQgYXR0cmlidXRlcyBi eSBpbnN0YWxsaW5nIHRoZSA8YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvOTIv c29vX3BsdWdpbl9wcmVmIj5zb29fcGx1Z2luX3ByZWY8L2E+IHBsdWdpbi4gT25jZSBpbnN0 YWxsZWQgeW91IGNhbiBhY2Nlc3MgdGhlIHByZWZlcmVuY2VzIDxhIGhyZWY9Imh0dHA6Ly90 ZXh0Ym9vay50ZXh0cGF0dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0bGU9UGx1Z2lucyNQ YW5lbF9sYXlvdXRfLjI2X2NvbnRyb2xzIj5ieSBjbGlja2luZyB0aGUgPHN0cm9uZz5PcHRp b25zPC9zdHJvbmc+IGxpbmsgZm9yIDxzdHJvbmc+c29vX3JlcXVpcmVkX2ZpbGVzPC9zdHJv bmc+IGluIHRoZSBwbHVnaW4gbGlzdDwvYT4uPC9wPgoKCTxwPlRoZSBpbml0aWFsIGRlZmF1 bHRzIGFyZTo8L3A+CgoJPHRhYmxlPgoJCTx0cj4KCQkJPHRoPkF0dHJpYnV0ZTwvdGg+CgkJ CTx0aD5EZXNjcmlwdGlvbjwvdGg+CgkJCTx0aD5EZWZhdWx0PC90aD4KCQk8L3RyPgoJCTx0 cj4KCQkJPHRkPjxjb2RlPmN1c3RvbV9maWVsZDwvY29kZT48L3RkPgoJCQk8dGg+Q3VzdG9t IGZpZWxkIG5hbWU8L3RoPgoJCQk8dGQ+PGtiZD5SZXF1aXJlczwva2JkPjwvdGQ+CgkJPC90 cj4KCQk8dHI+CgkJCTx0ZD48Y29kZT5jc3NfZGlyPC9jb2RlPjwvdGQ+CgkJCTx0aD48c3Bh biBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj48L3NwYW4+IGRp cmVjdG9yeTwvdGg+CgkJCTx0ZD48a2JkPmNzcy88L2tiZD48L3RkPgoJCTwvdHI+CgkJPHRy PgoJCQk8dGQ+PGNvZGU+anNfZGlyPC9jb2RlPjwvdGQ+CgkJCTx0aD5KUyBkaXJlY3Rvcnk8 L3RoPgoJCQk8dGQ+PGtiZD5qcy88L2tiZD48L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+ PGNvZGU+Zm9ybV9wcmVmaXg8L2NvZGU+PC90ZD4KCQkJPHRoPkZvcm0tbmFtZSBwcmVmaXg8 L3RoPgoJCQk8dGQ+PGtiZD5yZXF1aXJlXzwva2JkPjwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJ CTx0ZD48Y29kZT5wZXJfcGFnZTwvY29kZT48L3RkPgoJCQk8dGg+UGVyLXBhZ2UgbG9hZGlu ZzwvdGg+CgkJCTx0ZD5ObzwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD48Y29kZT5wZXJf c2VjdGlvbjwvY29kZT48L3RkPgoJCQk8dGg+UGVyLXNlY3Rpb24gbG9hZGluZzwvdGg+CgkJ CTx0ZD5ObzwvdGQ+CgkJPC90cj4KCTwvdGFibGU+CgoJPGgyIGlkPSJleGFtcGxlcyI+RXhh bXBsZXM8L2gyPgoKCTxoMz5Vc2luZyB0aGUgUmVxdWlyZXMgZmllbGQ8L2gzPgoKCTxwPldp dGggZGVmYXVsdHMgYXMgYWJvdmUsIGVudGVyaW5nIDxrYmQ+c2NyaXB0MS5qcywgc3R5bGUx LmNzcywgZm9vIDwva2JkPiBpbiB0aGUgPHN0cm9uZz5SZXF1aXJlczwvc3Ryb25nPiBmaWVs ZCB3aWxsIGdldCA8Y29kZT4mbHQ7dHhwOnNvb19yZXF1aXJlZF9maWxlcyAvJmd0OzwvY29k ZT4gdG8gb3V0cHV0IHNvbWV0aGluZyBsaWtlOjwvcD4KCjxwcmU+Jmx0O3NjcmlwdCB0eXBl PSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7aHR0cDovL2V4YW1wbGUu Y29tL2pzL3NjcmlwdDEuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtsaW5rIHJl bD0mcXVvdDtzdHlsZXNoZWV0JnF1b3Q7IHR5cGU9JnF1b3Q7dGV4dC9jc3MmcXVvdDsgaHJl Zj0mcXVvdDtodHRwOi8vZXhhbXBsZS5jb20vY3NzL3N0eWxlMS5jc3MmcXVvdDsgLyZndDsK PC9wcmU+CgoJPHA+Zm9sbG93ZWQgYnkgd2hhdGV2ZXIgaXMgaW4gdGhlIGZvcm0gbmFtZWQg JiM4MjIwO3JlcXVpcmVfZm9vJiM4MjIxOy48L3A+CgoJPHA+Rm9ybXMgYXJlIGVzcGVjaWFs bHkgdXNlZnVsIGZvciBwcmVzZXQgY29tYmluYXRpb25zIG9mIGZpbGVzLiBGb3IgZXhhbXBs ZSwgc29tZSBzY3JpcHRzIChlLmcuIDxhIGhyZWY9Imh0dHA6Ly93d3cuc2hhZG93Ym94LWpz LmNvbS8iPlNoYWRvd2JveDwvYT4pIHJlcXVpcmUgYSBtaXggb2YgSmF2YVNjcmlwdCBhbmQg PHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gZmlsZXMuIFB1dHRpbmcgdGhlIGFwcHJv cHJpYXRlIDxjb2RlPiZsdDtzY3JpcHQmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O2xpbmsm Z3Q7PC9jb2RlPiBlbGVtZW50cyBpbiBhIGZvcm0gYWxsb3dzIHlvdSB0byBjYWxsIHRoaXMg dXAgd2l0aCBhIHNpbmdsZSBlbnRyeSBpbiB0aGUgPHN0cm9uZz5SZXF1aXJlczwvc3Ryb25n PiBmaWVsZC4gU28gdG8gbG9hZCBteSAmIzgyMjA7cmVxdWlyZV9TaGFkb3dib3gmIzgyMjE7 IGZvcm0gKHdoaWNoIGxvYWRzIHRoZSBzY3JpcHRzIGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+ Q1NTPC9zcGFuPiByZXF1aXJlZCBmb3IgU2hhZG93Ym94KSwgSSBlbnRlciA8a2JkPlNoYWRv d2JveDwva2JkPiBpbiB0aGUgPHN0cm9uZz5SZXF1aXJlczwvc3Ryb25nPiBmaWVsZC48L3A+ CgoJPGgzPkNvbWJpbmluZyBwZXItc2VjdGlvbi9wYWdlLCBwZXItYXJ0aWNsZSwgYW5kIHRh ZyBjb250ZW50IGZpbGUgbG9hZGluZzwvaDM+CgoJPHA+Rm9yIG15IDxhIGhyZWY9Imh0dHA6 Ly9pcHNlZGl4aXQubmV0LyI+cGVyc29uYWwgd2Vic2l0ZTwvYT4gSSBoYXZlIDxzcGFuIGNs YXNzPSJjYXBzIj5DU1M8L3NwYW4+IGZpbGVzIG5hbWVkIGFmdGVyIGVhY2ggc2VjdGlvbiAo aW5jbHVkaW5nIHRoZSBkZWZhdWx0IHNlY3Rpb24pLCBwbHVzIGEgZmlsZSBjYWxsZWQgJiM4 MjIwO2Jhc2UuY3NzJiM4MjIxOyBmb3IgY29tbW9uIHN0eWxlcy4gU29tZSBhcnRpY2xlcyBo YXZlIHNwZWNpZmljIGpzL2NzcyByZXF1aXJlbWVudHMsIHNvIEkgYWxzbyBoYXZlIGEgPHN0 cm9uZz5SZXF1aXJlczwvc3Ryb25nPiBmaWVsZCwgdXNlZCBhcyBhYm92ZS4gSSBoYXZlIGEg Zm9ybSBjYWxsZWQgPGNvZGU+cGFnZV90b3A8L2NvZGU+IHRoYXQgY3JlYXRlcyB0aGUgPGNv ZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBlbGVtZW50IGZvciBldmVyeSBzZWN0aW9uLiBJdCBk b2VzbiYjODIxNzt0IGhhdmUgYW55IDxjb2RlPiZsdDtzY3JpcHQmZ3Q7PC9jb2RlPiBvciA8 Y29kZT4mbHQ7bGluayZndDs8L2NvZGU+IHRhZ3MsIGp1c3QgdGhpczo8L3A+Cgo8cHJlPiZs dDt0eHA6c29vX3JlcXVpcmVkX2ZpbGVzJmd0O2Jhc2UuY3NzJmx0Oy90eHA6c29vX3JlcXVp cmVkX2ZpbGVzJmd0Owo8L3ByZT4KCgk8cD5CZWNhdXNlIEkgaGF2ZSBlbmFibGVkIHBlci1z ZWN0aW9uIGxvYWRpbmcgaW4gcHJlZmVyZW5jZXMsIGV2ZXJ5IDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiBwYWdlIGF1dG9tYXRpY2FsbHkgZ2V0cyBib3RoIHRoZSBiYXNlIHN0 eWxlc2hlZXQgYW5kIHRoZSBzZWN0aW9uLXNwZWNpZmljIHN0eWxlc2hlZXQsIGFuZCBpbmRp dmlkdWFsIGFydGljbGUgcGFnZXMgd2lsbCBhbHNvIGxvYWQgYW55dGhpbmcgbGlzdGVkIGlu IDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9uZz4uPC9wPgoKCTxoMiBpZD0iaGlzdG9yeSI+SGlz dG9yeTwvaDI+CgoJPGgzPlZlcnNpb24gMC4yLjIgKDIwMTAvMDcvMTApPC9oMz4KCgk8dWw+ CgkJPGxpPlRhZyBjb250ZW50cyBjYW4gbm93IGluY2x1ZGUgb3RoZXIgVHhwIHRhZ3MsIGFs bG93aW5nIGUuZy4gVHhwIGNvbmRpdGlvbmFsIHRhZ3MgZm9yIGZ1cnRoZXIgYXV0b21hdGlv biBvcHRpb25zLjwvbGk+Cgk8L3VsPgoKCTxoMz5WZXJzaW9uIDAuMi4xICgyMDA5LzEwLzAz KTwvaDM+CgoJPHVsPgoJCTxsaT5GaXhlZCB0byB3b3JrIHdpdGggc3ViLWRpcmVjdG9yeSBp bnN0YWxsYXRpb25zPC9saT4KCTwvdWw+CgoJPGgzPlZlcnNpb24gMC4yICgyMDA5LzA5LzI1 KTwvaDM+CgoJPHVsPgoJCTxsaT5OZXcgZmVhdHVyZXM6Cgk8dWw+CgkJPGxpPlBlci1zZWN0 aW9uIGFuZC9vciBwZXItcGFnZSBmaWxlIGxvYWRpbmc8L2xpPgoJCTxsaT5Db250YWluZXIg dGFnIG1vZGUgZm9yIGFkZGl0aW9uYWwgZmlsZXMvZm9ybXM8L2xpPgoJCTxsaT5BbGwgcHJl ZmVyZW5jZXMgY2FuIG5vdyBiZSBvdmVycmlkZW4gYnkgdGFnIGF0dHJpYnV0ZXM8L2xpPgoJ PC91bD48L2xpPgoJCTxsaT5Ob3RlOiBuZXcgYXR0cmlidXRlIG5hbWVzIGZvciBkZWZhdWx0 IGpzIGFuZCBjc3MgZGlyZWN0b3JpZXMuIFVzZXJzIHVwZ3JhZGluZyBmcm9tIHZlcnNpb24g MC4xLjEgc2hvdWxkIGNoZWNrIHByZWZlcmVuY2VzIGFuZCB1cGRhdGUgdGhlc2UgdmFsdWVz IGlmIG5lZWRlZC48L2xpPgoJPC91bD4KCgk8aDM+VmVyc2lvbiAwLjEuMSAoMjAwOS8wOS8x OCk8L2gzPgoKCTx1bD4KCQk8bGk+QWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIDxhIGhyZWY9 Imh0dHA6Ly9pcHNlZGl4aXQubmV0L3R4cC85Mi9zb29fcGx1Z2luX3ByZWYiPnNvb19wbHVn aW5fcHJlZjwvYT4gZm9yIHByZWZlcmVuY2UgbWFuYWdlbWVudDwvbGk+Cgk8L3VsPgoKCTxo Mz5WZXJzaW9uIDAuMSAoMjAwOS8wNS8xNSk8L2gzPgoKCTx1bD4KCQk8bGk+SW5pdGlhbCBy ZWxlYXNlLiBQZXItYXJ0aWNsZSBsb2FkaW5nIG9mIGpzL2NzcyBmaWxlcywgVHhwIGZvcm1z LjwvbGk+Cgk8L3VsPgoKCTxwPjwvZGl2PjwvcD4iO3M6NDoiY29kZSI7czozNTU4OiIKQHJl cXVpcmVfcGx1Z2luKCdzb29fcGx1Z2luX3ByZWYnKTsJCS8vIG9wdGlvbmFsCgpnbG9iYWwg JHNvb19yZXF1aXJlZF9maWxlczsKCmlmICggZnVuY3Rpb25fZXhpc3RzKCdzb29fcGx1Z2lu X3ByZWZfdmFscycpICkKCSRzb29fcmVxdWlyZWRfZmlsZXMgPSBzb29fcGx1Z2luX3ByZWZf dmFscygnc29vX3JlcXVpcmVkX2ZpbGVzJyk7CmVsc2UKCWZvcmVhY2ggKCBzb29fcmVxdWly ZWRfZmlsZXNfZGVmYXVsdHMoKSBhcyAkbmFtZSA9PiAkdmFsICkKCQkkc29vX3JlcXVpcmVk X2ZpbGVzWyRuYW1lXSA9ICR2YWw7CgphZGRfcHJpdnMoJ3BsdWdpbl9wcmVmcy5zb29fcmVx dWlyZWRfZmlsZXMnLCcxLDInKTsKYWRkX3ByaXZzKCdwbHVnaW5fbGlmZWN5Y2xlLnNvb19y ZXF1aXJlZF9maWxlcycsJzEsMicpOwpyZWdpc3Rlcl9jYWxsYmFjaygnc29vX3JlcXVpcmVk X2ZpbGVzX3ByZWZzJywgJ3BsdWdpbl9wcmVmcy5zb29fcmVxdWlyZWRfZmlsZXMnKTsKcmVn aXN0ZXJfY2FsbGJhY2soJ3Nvb19yZXF1aXJlZF9maWxlc19wcmVmcycsICdwbHVnaW5fbGlm ZWN5Y2xlLnNvb19yZXF1aXJlZF9maWxlcycpOwoKZnVuY3Rpb24gc29vX3JlcXVpcmVkX2Zp bGVzX3ByZWZzKCAkZXZlbnQsICRzdGVwICkgewoJaWYgKCBmdW5jdGlvbl9leGlzdHMoJ3Nv b19wbHVnaW5fcHJlZicpICkKCQlyZXR1cm4gc29vX3BsdWdpbl9wcmVmKCRldmVudCwgJHN0 ZXAsIHNvb19yZXF1aXJlZF9maWxlc19kZWZhdWx0cygpKTsKCWlmICggc3Vic3RyKCRldmVu dCwgMCwgMTIpID09ICdwbHVnaW5fcHJlZnMnICkgewoJCSRwbHVnaW4gPSBzdWJzdHIoJGV2 ZW50LCAxMyk7CgkJJG1lc3NhZ2UgPSAnPHA+PGJyIC8+PHN0cm9uZz4nIC4gZ1R4dCgnZWRp dCcpIC4gIiAkcGx1Z2luICIgLgoJCQlnVHh0KCdlZGl0X3ByZWZlcmVuY2VzJykgLiAnOjwv c3Ryb25nPjxiciAvPicgLiBnVHh0KCdpbnN0YWxsX3BsdWdpbicpIC4KCQkJJyA8YSBocmVm PSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvOTIvc29vX3BsdWdpbl9wcmVmIj4nIC4KCQkJ J3Nvb19wbHVnaW5fcHJlZjwvYT48L3A+JzsKCQlwYWdldG9wKGdUeHQoJ2VkaXRfcHJlZmVy ZW5jZXMnKSAuICIgJiM4MjUwOyAkcGx1Z2luIiwgJG1lc3NhZ2UpOwoJfQp9CgpmdW5jdGlv biBzb29fcmVxdWlyZWRfZmlsZXNfZGVmYXVsdHMoICkgewoJcmV0dXJuIGFycmF5KAoJCSdj dXN0b21fZmllbGQnCQk9PglhcnJheSgKCQkJJ3ZhbCcJPT4JJ1JlcXVpcmVzJywKCQkJJ2h0 bWwnCT0+CSd0ZXh0X2lucHV0JywKCQkJJ3RleHQnCT0+CSdDdXN0b20gZmllbGQgbmFtZScs CgkJKSwKCQknY3NzX2RpcicJPT4JYXJyYXkoCgkJCSd2YWwnCT0+CSdjc3MvJywKCQkJJ2h0 bWwnCT0+CSd0ZXh0X2lucHV0JywKCQkJJ3RleHQnCT0+CSdEZWZhdWx0IGNzcyBkaXIgKHJl bGF0aXZlIHRvIGJhc2UgVVJMLCB3aXRoIGNsb3Npbmcgc2xhc2gpJywKCQkpLAoJCSdqc19k aXInCT0+CWFycmF5KAoJCQkndmFsJwk9PgknanMvJywKCQkJJ2h0bWwnCT0+CSd0ZXh0X2lu cHV0JywKCQkJJ3RleHQnCT0+CSdEZWZhdWx0IGpzIGRpciAocmVsYXRpdmUgdG8gYmFzZSBV UkwsIHdpdGggY2xvc2luZyBzbGFzaCknLAoJCSksCgkJJ2Zvcm1fcHJlZml4Jwk9PglhcnJh eSgKCQkJJ3ZhbCcJPT4JJ3JlcXVpcmVfJywKCQkJJ2h0bWwnCT0+CSd0ZXh0X2lucHV0JywK CQkJJ3RleHQnCT0+CSdPcHRpb25hbCBwcmVmaXggZm9yIGZvcm0gbmFtZXMnLAoJCSksCgkJ J3Blcl9wYWdlJwk9PglhcnJheSgKCQkJJ3ZhbCcJPT4JMCwKCQkJJ2h0bWwnCT0+CSd5ZXNu b3JhZGlvJywKCQkJJ3RleHQnCT0+CSdMb2FkIHtwYWdlfS5jc3MgYW5kIHtwYWdlfS5qcz8n LAoJCSksCgkJJ3Blcl9zZWN0aW9uJwk9PglhcnJheSgKCQkJJ3ZhbCcJPT4JMCwKCQkJJ2h0 bWwnCT0+CSd5ZXNub3JhZGlvJywKCQkJJ3RleHQnCT0+CSdMb2FkIHtzZWN0aW9ufS5jc3Mg YW5kIHtzZWN0aW9ufS5qcz8nLAoJCSksCgkpOwp9CgpmdW5jdGlvbiBzb29fcmVxdWlyZWRf ZmlsZXMoICRhdHRzLCAkdGhpbmcgPSAnJyApIHsKCglnbG9iYWwgJHNvb19yZXF1aXJlZF9m aWxlcywgJHBhZ2UsICRzLCAkaWQ7CglleHRyYWN0KCRzb29fcmVxdWlyZWRfZmlsZXMpOwoJ JHJlcXVpcmVkID0gZG9fbGlzdChwYXJzZSgkdGhpbmcpKTsKCgkvLyB0YWcgYXR0cyBvdmVy cmlkZSBkZWZhdWx0cy9wcmVmcwoJZm9yZWFjaCAoICRhdHRzIGFzICRrID0+ICR2ICkKCQlp ZiAoIGFycmF5X2tleV9leGlzdHMoJGssICRzb29fcmVxdWlyZWRfZmlsZXMpICkKCQkJJCRr ID0gJHY7CgoJaWYgKCAkcGVyX3BhZ2UgKQoJCSRyZXF1aXJlZCA9IGFycmF5X21lcmdlKCRy ZXF1aXJlZCwgX3Nvb19yZXF1aXJlZF9maWxlc19hZGQoJHBhZ2UpKTsKCglpZiAoICRwZXJf c2VjdGlvbiApCgkJJHJlcXVpcmVkID0gYXJyYXlfbWVyZ2UoJHJlcXVpcmVkLCBfc29vX3Jl cXVpcmVkX2ZpbGVzX2FkZCgkcykpOwoKCS8vIGlmIGluZGl2aWR1YWwgYXJ0aWNsZSwgZ2V0 IGN1c3RvbSBmaWVsZCBjb250ZW50cwoJaWYgKCAkaWQgYW5kICRjdXN0b21fZmllbGQgKQoJ CSRyZXF1aXJlZCA9IGFycmF5X21lcmdlKCRyZXF1aXJlZCwgZG9fbGlzdChjdXN0b21fZmll bGQoYXJyYXkoCgkJCSduYW1lJwkJPT4JJGN1c3RvbV9maWVsZCwKCQkJJ2VzY2FwZScJPT4J J2h0bWwnLAoJCQknZGVmYXVsdCcJPT4JJycsCgkJKSkpKTsKCgkkcmVxdWlyZWQgPSBhcnJh eV91bmlxdWUoJHJlcXVpcmVkKTsKCglmb3JlYWNoICggJHJlcXVpcmVkIGFzICRyZXEgKSB7 CgkJaWYgKCBzdWJzdHIoc3RydG9sb3dlcigkcmVxKSwgLTQpID09PSAnLmNzcycgKQoJCQkk b3V0W10gPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0i JyAuCgkJCWh1IC4gJGNzc19kaXIgLiAkcmVxIC4gJyIgLz4nOwoJCWVsc2VpZiAoIHN1YnN0 cihzdHJ0b2xvd2VyKCRyZXEpLCAtMykgPT09ICcuanMnICkKCQkJJG91dFtdID0gJzxzY3Jp cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicgLgoJCQlodSAuICRqc19kaXIgLiAk cmVxIC4gJyI+PC9zY3JpcHQ+JzsKCQllbHNlaWYgKCAkcmVxICkKCQkJJG91dFtdID0gcGFy c2VfZm9ybSgkZm9ybV9wcmVmaXggLiAkcmVxKTsKCX0KCglyZXR1cm4gaXNzZXQoJG91dCkg PyBpbXBsb2RlKCJcbiIsICRvdXQpIDogJyc7Cn0KCmZ1bmN0aW9uIF9zb29fcmVxdWlyZWRf ZmlsZXNfYWRkKCAkbmFtZSApIHsKCWdsb2JhbCAkc29vX3JlcXVpcmVkX2ZpbGVzOwoJZXh0 cmFjdCgkc29vX3JlcXVpcmVkX2ZpbGVzKTsKCSRwYXRoX3Jvb3QgPSBwcmVnX3JlcGxhY2Uo Jy9pbmRleC5waHAvJywgJycsICRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSk7CglpZiAo IGZpbGVfZXhpc3RzKCRwYXRoX3Jvb3QgLiAkY3NzX2RpciAuICRuYW1lIC4gJy5jc3MnKSAp CgkJJG91dFtdID0gJG5hbWUgLiAnLmNzcyc7CglpZiAoIGZpbGVfZXhpc3RzKCRwYXRoX3Jv b3QgLiAkanNfZGlyIC4gJG5hbWUgLiAnLmpzJykgKQoJCSRvdXRbXSA9ICRuYW1lIC4gJy5q cyc7CglyZXR1cm4gaXNzZXQoJG91dCkgPyAkb3V0IDogYXJyYXkoKTsKfQoiO3M6NDoidHlw ZSI7czoxOiIxIjtzOjU6ImZsYWdzIjtzOjE6IjMiO3M6NToib3JkZXIiO3M6MToiNSI7czoz OiJtZDUiO3M6MzI6IjVhNDE1OTRjNTZhN2U0YWRkZjUwMzBlODQzNDg0N2FjIjt9