<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>youtubeplayer</name>
	<version>1.0</version>
  <mincmsversion>1.6.4</mincmsversion>
	<help>PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQoJCQkJVGhpcyBpcyBhIHNpbXBsZSBtb2R1bGUgdGhhdCBtYW5hZ2VzIGFuZCBkaXNwbGF5cyBhIFZpZGVvIGNhdGFsb2d1ZSBmcm9tIFlvdVR1YmUuDQoJCQkJPGJyPiBJdCBpcyBzaW1pbGFyIHRvIG15IG90aGVyIG1vZHVsZSAnQVZQbGF5ZXInIGV4Y2VwdCB3aXRoIHRoaXMgbW9kdWxlIG9mIGNvdXJzZSB5b3UgZG8gbm90IG5lZWQgdG8gdXBsb2FkIGFueXRoaW5nIDxiciAvPg0KCQkJPGJyLz48aDM+SG93IERvIEkgVXNlIEl0PzwvaDM+DQoJCQkJPGJyLz48aDQ+R2V0IHRoZSBWaWRlbyBJRDwvaDQ+DQoJCQkJPGJyIC8+IGNvcHkgdGhlIFZpZGVvIElEIGZyb20gYSBZb3V0dWJlIFVSTCBsaWtlIHRoaXM6IGh0dHA6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj08Zm9udCBjb2xvcj0nUmVkJz56Z0otVnNueFp6VSA8YnIgLz48L2ZvbnQ+DQoJCQkJVGhlIFZpZGVvIElEIGlzIHRoZSBzdHJpbmcgYWZ0ZXIgP3Y9IDxiciAvPg0KCQkJCTxici8+PGg0PlBlcm1pc3Npb25zPC9oND4NCgkJCQkJPHA+TWFrZSBzdXJlIHlvdXIgdXNlcnMgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgcGVybWlzc2lvbnMuIElmIHlvdSBhcmUgbm90IHVzaW5nIHRoZSBhY2Nlc3MgcmVzdHJpY3Rpb24gb3B0aW9uIChzZWUgc2V0dGluZ3MpLCB0aGUgInlvdXR1YmVwbGF5ZXI6IE5vcm1hbCB1c2VyIiBwZXJtaXNzaW9uIHdpbGwgYmUgZW5vdWdoIHRvIHVzZSB0aGUgbW9kdWxlLiBJbiB0aGUgc2V0dGluZ3MgdGFiLCB5b3UgY2FuIGNob29zZSB3aGljaCB0YWJzIHdpbGwgYmUgZGlzcGxheWVkIGZvciB0aGUgbm9ybWFsIHVzZXIuIE9ubHkgdGhlIGFkbWluaXN0cmF0b3IgYW5kIHVzZXJzIHdpdGggdGhlICJ5b3V0dWJlcGxheWVyOiBBZHZhbmNlZCIgcGVybWlzc2lvbiB3aWxsIGhhdmUgYWNjZXNzIHRvIHNldHRpbmdzIHRhYi48YnIvPg0KCQkJCQlJZiB5b3Ugd2lzaCB0byBkZWZpbmUgbGV2ZWwtc3BlY2lmaWMgcGVybWlzc2lvbnMsIGFjdGl2YXRlIHRoZSBhY2Nlc3MgcmVzdHJpY3Rpb24gb3B0aW9uIGluIHRoZSBzZXR0aW5ncyB0YWIgYW5kIGdpdmUgdGhlICJ5b3V0dWJlcGxheWVyOiBNYW5hZ2UgbmFtZV9vZl9sZXZlbCIgcGVybWlzc2lvbiB0byB0aGUgYXBwcm9wcmlhdGUgdXNlcnMuPC9wPg0KCQkJCTxici8+PGg0PkJhc2ljczwvaDQ+DQoJCQkJCTxwPlRvIGNhbGwgdGhlIG1vZHVsZSwgc2ltcGx5IHVzZSB0aGUgZm9sbG93aW5nIHRhZzo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9InlvdXR1YmVwbGF5ZXIifTwvcD4NCgkJCQkJPHA+SW4gdGhpcyBjYXNlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IGxldmVsIGVsZW1lbnRzICh2aWRlb3MpIHdpbGwgYmUgZGlzcGxheWVkLiBUbyBzZWxlY3QgYSBsZXZlbCwgdXNlIHRoZSAid2hhdCIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0ieW91dHViZXBsYXllciIgd2hhdD0idmlkZW9zIn08YnIvPg0KCQkJCQk8aT5UaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgIndoYXQiIHBhcmFtZXRlciBhcmUgOiBjYXRlZ29yeSwgdmlkZW9zPC9pPjwvcD4NCgkJCQkJPHA+WW91IG1heSBhbHNvIGFzayBmb3IgZWxlbWVudHMgd2hvIGJlbG9uZyB0byBhIHNwZWNpZmljIHBhcmVudDo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9InlvdXR1YmVwbGF5ZXIiIHBhcmVudD0iYWxpYXNfb2ZfcGFyZW50In08L3A+DQoJCQkJCTxwPllvdSBtYXkgZmluYWxseSBhc2sgZm9yIGEgc3BlY2lmaWMgZWxlbWVudDo8YnI+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0ieW91dHViZXBsYXllciIgYWxpYXM9ImFsaWFzX29mX2l0ZW0ifTwvcD4NCgkJCQk8YnIvPjxoND5TZXBhcmF0aW5nIGludG8gcGFnZXM8L2g0Pg0KCQkJCQk8cD5Zb3UgbWF5IGxpbWl0IHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgc2hvd24gb24gb25lIHBhZ2U6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJ5b3V0dWJlcGxheWVyIiBuYnBlcnBhZ2U9IjUifTxici8+DQoJCQkJCUluIHRoZSB0ZW1wbGF0ZSwgeW91IGNhbiBidWlsZCB0aGUgcGFnZSBtZW51IHVzaW5nIHRoZSBmb2xsb3dpbmcgdGFnczo8YnIvPg0KCQkJCQl7JHBhZ2Vfc2hvd2luZ30sIHskcGFnZV90b3RhbGl0ZW1zfSwgeyRwYWdlX3BhZ2VudW1iZXJzfSwgeyRwYWdlX25leHR9LCB7JHBhZ2VfcHJldmlvdXN9PC9wPg0KCQkJCTxici8+PGg0PlVzaW5nIHF1ZXJpZXM8L2g0Pg0KCQkJCQk8cD5UbyBnZXQgYSBsaXN0IG9mIGl0ZW0gdGhhdCBtZWV0IHNwZWNpZmljIGNyaXRlcmlhLCB5b3UgY2FuIGNyZWF0ZSBhIHF1ZXJ5IHVzaW5nIHRoZSBxdWVyaWVzIHRhYiBvZiB0aGUgYWRtaW4gcGFuZWwsIGFuZCBjYWxsIHRoZW0gdXNpbmcgdGhlICJxdWVyeSIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0ieW91dHViZXBsYXllciIgcXVlcnk9IjUifTwvcD4NCgkJCQkJPHA+PGk+SWYgdGhlIG9wdGlvbiB0byBhbGxvdyBtYW51ZWwgc3FsIHF1ZXJpZXMgaXMgZW5hYmxlZDwvaT4gKHNlZSAiU2V0dGluZ3MiIHRhYiksIHlvdSBtYXkgYWxzbyBwcm92aWRlIHRoZSBzcWwgcXVlcnkgZGlyZWN0bHkgd2l0aCB0aGUgcXVlcnkgcGFyYW1ldGVyLiBGb3IgZXhhbXBsZTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9InlvdXR1YmVwbGF5ZXIiIHdoYXQ9InZpZGVvcyIgcXVlcnk9IkEuZGF0ZV9tb2RpZmllZCA+ICcyMDA5LTAzLTE1JyBBTkQgQS5hY3RpdmUgPSAxIn08YnIvPg0KCQkJCQlUaGUgcXVlcnkgcGFyYW1ldGVyIGNhbiBvbmx5IGhvbGQgdGhlIFdIRVJFIGNsYXVzZSBvZiB0aGUgcXVlcnksIGFuZCBzaG91bGQgbm90IGluY2x1ZGUgdGhlIFdIRVJFIGNvbW1hbmQgaXRzZWxmLiBUbyBhdm9pZCBwcm9ibGVtcywgdGhlIHByZWZpeCAiQS4iIHNob3VsZCBiZSB1c2VkIGJlZm9yZSBmaWVsZCBuYW1lcyAod2hlcmUgYXBwbGljYWJsZSwgdGhlICJCLiIgcHJlZml4IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY3JpdGVyaWEgb24gdGhlIHBhcmVudCdzIGZpZWxkcykuPGJyLz4NCgkJCQkJQWx0aG91Z2ggdGhlIGFic3RyYWN0aW9uIGxheWVyIGlzIG5vdCBlYXNpbHkgcHJvbmUgdG8gaW5qZWN0aW9ucywgcmVtZW1iZXIgdGhhdCBhY3RpdmF0aW5nIHRoaXMgb3B0aW9uIG1lYW5zIGdpdmluZyBhIHNxbCBvcGVuaW5nIHdpdGhpbiB0aGUgdGVtcGxhdGVzIGFuZCBiZSBjYXJlZnVsLjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgbGluayBhY3Rpb248L2g0Pg0KCQkJCQk8cD5Zb3UgbWF5IHVzZSB0aGUgYWN0aW9uIDxiPiJsaW5rIjwvYj4gdG8gY3JlYXRlIGEgbGluayB0byB0aGUgZGVmYXVsdCBhY3Rpb24sIHVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnM6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJ5b3V0dWJlcGxheWVyIiBhY3Rpb249ImxpbmsiIHdoYXQ9InZpZGVvcyIgcmFuZG9tPSIxIn08YnIvPg0KCQkJCQl3b3VsZCBjcmVhdGUgYSBsaW5rIHRvIGEgcmFuZG9tIGVsZW1lbnQgb2YgdGhpcyBsZXZlbC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIHNpdGVtYXAgYWN0aW9uPC9oND4NCgkJCQkJPHA+SWYgeW91ciBtb2R1bGUgaXMgbm90IHNoYXJpbmcgY2hpbGRyZW4sIHlvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+InNpdGVtYXAiPC9iPiB0byBjcmVhdGUgYSBtb2R1bGUgc2l0ZW1hcDo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9InlvdXR1YmVwbGF5ZXIiIGFjdGlvbj0ic2l0ZW1hcCJ9PGJyLz4NCgkJCQkJWW91IGNhbiBzZWxlY3QgdGhlIGxldmVscyB1c2luZyB0aGUgIndoYXQiIHBhcmFtZXRlciwgYW5kIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSB1c2luZyAifCIgOiB3aGF0PSJsZXZlbDF8bGV2ZWwyIi48YnIvPg0KCQkJCQlPdGhlciBhdmFpbGFibGUgcGFyYW1ldGVycyBmb3IgdGhpcyBhY3Rpb24gYXJlICJkZXRhaWxwYWdlIiBhbmQgImlubGluZSIuPGJyLz4NCgkJCQkJVG8gY3JlYXRlIGEgZ29vZ2xlIHNpdGVtYXAsIHNlZSB0aGUgPGEgaHJlZj0iLi4vbW9kdWxlcy95b3V0dWJlcGxheWVyL2RvYy9mYXEuaHRtbCNxMTYiIHRhcmdldD0iX2JsYW5rIj5GQVE8L2E+LjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2VhcmNoIGFjdGlvbjwvaDQ+DQoJCQkJCTxwPllvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+InNlYXJjaCI8L2I+IHRvIGRpc3BsYXkgYSBzZWFyY2ggZm9ybTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9InlvdXR1YmVwbGF5ZXIiIGFjdGlvbj0ic2VhcmNoIn08YnIvPg0KCQkJCQlVc2UgdGhlICJzZWFyY2htb2RlIiBwYXJhbWV0ZXIgdG8gc3dpdGNoIGJldHdlZW4gYWR2YW5jZWQgKGRlZmF1bHQpIGFuZCBzaW1wbGUgbW9kZS4gWW91IG1heSBzcGVjaWZ5IHRoZSBsZXZlbCBpbiB3aGljaCB0byBzZWFyY2ggdXNpbmcgdGhlICJ3aGF0IiBwYXJhbWV0ZXIuIFlvdSBjYW5ub3QgdXNlIHRoZSBhZHZhbmNlZCBzZWFyY2ggbW9kZSBpbiBhbGwgbGV2ZWxzIGF0IHRoZSBzYW1lIHRpbWUuPGJyLz4NCgkJCQkJVGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGNhbiBiZSB1c2VkIHdpdGggdGhlIHNlYXJjaCBhY3Rpb246IHdoYXQsIGxpbWl0LCBuYnBlcnBhZ2UsIG9yZGVyYnksIGRldGFpbHBhZ2UsIGxpc3R0ZW1wbGF0ZSwgaW5saW5lLCBzZWFyY2htb2RlLjxici8+DQoJCQkJCVNlZSB5b3V0dWJlcGxheWVyL3RlbXBsYXRlcy9zZWFyY2gudHBsIHRvIG1vZGlmeSB0aGUgc2VhcmNoIGZvcm0uPC9wPjxici8+DQoJCQkJPHA+Rm9yIG1vcmUgaGVscCwgeW91IG1heSB0YWtlIGEgbG9vayBhdCB0aGUgPGEgaHJlZj0iLi4vbW9kdWxlcy95b3V0dWJlcGxheWVyL2RvYy9mYXEuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPkZBUTwvYT4uPC9wPg0KCQkJPGJyLz48aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCgkJCQk8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiBjcmVhdGVkIHdpdGggQ1RMTW9kdWxlTWFrZXIsIGFuZCBpcyByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLjwvcD48YnIvPjxici8+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWN0aW9uPSJkZWZhdWx0IiAtIFBvc3NpYmxlIGFjdGlvbnM6ICJsaW5rIiwgInNlYXJjaCIsICJicmVhZGNydW1icyIsICJkZWZhdWx0IiwgInNpdGVtYXAiLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gd2hhdD0iIiAtIEFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbGV2ZWwgeW91IHdpc2ggdG8gZGlzcGxheS4gUG9zc2libGUgdmFsdWVzIGFyZSA6IDxpPmNhdGVnb3J5LCB2aWRlb3M8L2k+PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhbGlhcz0iIiAtIEFsaWFzIG9mIHRoZSBpdGVtIHlvdSB3aXNoIHRvIGRpc3BsYXkuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzaG93ZGVmYXVsdD0iIiAtIFNldCB0byAidHJ1ZSIgaWYgeW91IHdpc2ggdG8gZGlzcGxheSB0aGUgZGVmYXVsdCBlbGVtZW50LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gcGFyZW50PSIiIC0gSWYgeW91IHdpc2ggdG8gbGltaXQgdGhlIGRpc3BsYXllZCBlbGVtZW50cyB0byB0aG9zZSB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50LCBlbnRlciB0aGUgcGFyZW50IGFsaWFzIGhlcmUuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsaW1pdD0iMCIgLSBMaW1pdCB0aGUgbnVtYmVyIG9mIGl0ZW0gcmV0dXJuZWQgYnkgdGhlIHF1ZXJ5ICgwID0gbm8gbGltaXQpPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBuYnBlcnBhZ2U9IjAiIC0gU2V0IHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIG9uIGVhY2ggcGFnZS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG9yZGVyYnk9IjAiIC0gWW91IGNhbiBzZXQgdG8gIm1vZGlmaWVkIiwgImNyZWF0ZWQiIG9yIHRoZSBuYW1lIG9mIGEgZmllbGQgdG8gb3JkZXIgaXRlbXMgaW4gdGhpcyB3YXkuIEFueSBvdGhlciB2YWx1ZSB3aWxsIG9yZGVyIHdpdGggdGhlIGl0ZW0gb3JkZXIuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkZXRhaWxwYWdlPSIiIC0gU3BlY2lmeSB0aGUgYWxpYXMgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggbGlua3MgdG8gY2hpbGQgZWxlbWVudHMgc2hvdWxkIGJlIHNlbnQgKGlmIG5vbmUgaXMgc3BlY2lmaWVkLCBjdXJyZW50IHBhZ2UgaXMgdXNlZCk8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHJhbmRvbT0iMCIgLSBTZXQgdG8gYSBudW1iZXIgdG8gc2hvdyBhIG51bWJlciBvZiByYW5kb20gZWxlbWVudHMgZnJvbSB5b3VyIHF1ZXJ5LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGlzdHRlbXBsYXRlPSIiIC0gU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgbGlzdCB2aWV3LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZmluYWx0ZW1wbGF0ZT0iIiAtIFNwZWNpZnkgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBmb3IgdGhlIGRldGFpbCB2aWV3IG9mIHRoZSBmaW5hbCBsZXZlbC48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGZvcmNlbGlzdD0iMCIgLSBTZXQgdG8gMSBpZiB5b3Ugd2lzaCB0byBkaXNwbGF5IGEgbGlzdCB2aWV3IGV2ZW4gd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBlbGVtZW50LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gaW5saW5lPSIwIiAtIE1ha2VzIHRoZSBsaW5rcyBpbmxpbmUuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzZWFyY2htb2RlPSJhZHZhbmNlZCIgLSBGb3IgdXNlIHdpdGggdGhlICJzZWFyY2giIGFjdGlvbi4gU2V0IHRvICJzaW1wbGUiIHRvIHNlYXJjaCBpbiBhbGwgdGV4dCBmaWVsZHMsIGFuZCAiYWR2YW5jZWQiIHRvIHNlYXJjaCBpbiBzcGVjaWZpYyBmaWVsZHMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBxdWVyeT0iMCIgLSBGb3Igb3B0aW9uYWwgdXNlIHdpdGggdGhlICJkZWZhdWx0IiBhY3Rpb24uIFNwZWNpZmllcyB0aGUgaWQgb2YgdGhlIHF1ZXJ5IHRvIHVzZS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRvYWN0aW9uPSIiIC0gRm9yIHVzZSB3aXRoIHRoZSAibGluayIgYWN0aW9uLiBTZXRzIHRoZSBhY3Rpb24gdG8gd2hpY2ggdGhlIGxpbmsgc2hvdWxkIHJlZGlyZWN0LjwvbGk+PC91bD4=</help>
	<about>PGJyIC8+QXV0aG9yOiBCeSBNYXJ0aW4gKG13KTxiciAvPjxiciAvPlZlcnNpb246IDEuMDxiciAvPg==</about>
	<description>Embed YouTube Player</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.addfiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYoIWlzc2V0KCRfRklMRVMpIHx8ICFpc3NldCgkcGFyYW1zWydmaWVsZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pIHx8ICFpc3NldCgkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pKXsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCkpOwp9CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKCiRyZXNpemUgPSBpc3NldCgkcGFyYW1zWydzaXplJ10pPyRwYXJhbXNbJ3NpemUnXTpmYWxzZTsKJHRodW1ic2l6ZSA9IGlzc2V0KCRwYXJhbXNbJ3RodW1iJ10pPyRwYXJhbXNbJ3RodW1iJ106ZmFsc2U7CiRpdGVtaWQgPSAkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddOwoKJGN1cmRpciA9IChpc3NldCgkcGFyYW1zWydjdXJkaXInXSkgPyAkcGFyYW1zWydjdXJkaXInXS4nLycgOiAnJyk7CiRzdGFydGRpciA9IChpc3NldCgkcGFyYW1zWydzdGFydGRpciddKSA/ICRwYXJhbXNbJ3N0YXJ0ZGlyJ10uJy8nIDogJycpOwokZGVzdGluYXRpb24gPSBzdHJfcmVwbGFjZSgnLy8nLCcvJywkc3RhcnRkaXIuJGN1cmRpcik7CgokYWxsb3dlZGV4dCA9IGZhbHNlOwppZihpc3NldCgkcGFyYW1zWydleHRlbnNpb25zJ10pICYmICRwYXJhbXNbJ2V4dGVuc2lvbnMnXSAmJiAkcGFyYW1zWydleHRlbnNpb25zJ10gIT0gIiIpCSRhbGxvd2VkZXh0ID0gZXhwbG9kZSgiLCIsJHBhcmFtc1snZXh0ZW5zaW9ucyddKTsKCiRlcnJvcnMgPSAiIjsKJHppcGZpZWxkID0gJGlkLid1cGxvYWR6aXBmaWxlJzsKCmlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHppcGZpbGUiXSkpewoJCgkkZGlyID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uc3RyX3JlcGxhY2UoIi8vIiwiLyIsIi8iLiRkZXN0aW5hdGlvbi4iLyIpOwoJaWYoJHJlc2l6ZSAmJiAhaXNfYXJyYXkoJHJlc2l6ZSkpCSRyZXNpemUgPSBleHBsb2RlKCJ4IiwkcmVzaXplKTsKCQoJaWYoaXNzZXQoJF9GSUxFU1skemlwZmllbGRdKSAmJiBpc3NldCgkX0ZJTEVTWyR6aXBmaWVsZF1bJ25hbWUnXSkgJiYgJF9GSUxFU1skemlwZmllbGRdWyduYW1lJ10gIT0gIiIpewoJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN0cnJjaHIoJF9GSUxFU1skemlwZmllbGRdWyduYW1lJ10sICIuIikpOwoJCSR6YSA9IG5ldyBaaXBBcmNoaXZlKCk7CgkJaWYoc3RydG9sb3dlcigkZXh0ZW5zaW9uKSA9PSAnLnppcCcgJiYgJHphLT5vcGVuKCRfRklMRVNbJHppcGZpZWxkXVsndG1wX25hbWUnXSkpIHsKCQkJJGkgPSAwOwoJCQl3aGlsZSgkaSA8ICR6YS0+bnVtRmlsZXMpIHsKCQkJCSRmaWxlc3RhdHMgPSAkemEtPnN0YXRJbmRleCgkaSk7CgkJCQkkZmlsZW5hbWUgPSAkZmlsZXN0YXRzWyduYW1lJ107CgkJCQkkZXh0ZW5zaW9uID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICIuIiksMSkpOwoJCQkJaWYoICRleHRlbnNpb24gIT0gIiIgJiYgKCAhJGFsbG93ZWRleHQgfHwgaW5fYXJyYXkoJGV4dGVuc2lvbiwgJGFsbG93ZWRleHQpICkgKXsKCQkJCQkkZmlsZW5hbWUgPSAkdGhpcy0+dXBsb2FkX2NoZWNrZmlsZW5hbWUoJGZpbGVuYW1lLCRkaXIpOwoJCQkJCSRmcCA9IGZvcGVuKCRkaXIuJGZpbGVuYW1lLCAidyIpOwoJCQkJCWlmKGZ3cml0ZSgkZnAsJHphLT5nZXRGcm9tSW5kZXgoJGkpKSl7CgkJCQkJCWZjbG9zZSgkZnApOwoJCQkJCQljaG1vZCgkZGlyLiRmaWxlbmFtZSwgMDc3Nyk7CgkJCQkJCWlmKCRyZXNpemUgJiYgY291bnQoJHJlc2l6ZSkgPT0gMikgJHRoaXMtPnBsUmVzaXplKCRkaXIuJGZpbGVuYW1lLCAnJywgJHJlc2l6ZVswXSwgJHJlc2l6ZVsxXSx0cnVlLGlzc2V0KCRwYXJhbXNbJ2Nyb3AnXSkpOwoJCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKHN0cl9yZXBsYWNlKCIvLyIsIi8iLCIvIi4kZGVzdGluYXRpb24uIi8iLiRmaWxlbmFtZSksICRwYXJhbXNbJ3RhYmxlbmFtZSddLCAkaXRlbWlkLCAkcGFyYW1zWydmaWVsZCddLCAkdGh1bWJzaXplLCBpc3NldCgkcGFyYW1zWydjcm9wdGh1bWInXSkpOwoJCQkJCX1lbHNlewoJCQkJCQlmY2xvc2UoJGZwKTsKCQkJCQkJJGVycm9ycyA9ICc8bGk+Jy4kZmlsZW5hbWUuJzogJy5sYW5nKCdmaWxlbm90dXBsb2FkZWQnKS4nPC9saT4nOwoJCQkJCX0KCQkJCX1lbHNlewoJCQkJCSRlcnJvcnMgPSAnPGxpPicuJGZpbGVuYW1lLic6ICcuJHRoaXMtPkxhbmcoJ2Vycm9yX3dyb25nZmlsZXR5cGUnKS4nPC9saT4nOwoJCQkJfQoJCQkJJGkrKzsKCQkJfQoJCX1lbHNlewoJCQkkZXJyb3JzID0gJzxsaT4nLiRfRklMRVNbJHppcGZpZWxkXVsnbmFtZSddLic6ICcuJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRhcmNoaXZlJykuJzwvbGk+JzsKCQl9Cgl9CgkKfWVsc2V7CgkKCWZvcmVhY2goJF9GSUxFUyBhcyAkZmllbGRuYW1lPT4kZmlsZSl7CgkJaWYoJGZpZWxkbmFtZSAhPSAkemlwZmllbGQgJiYgaXNzZXQoJGZpbGVbJ25hbWUnXSkgJiYgJGZpbGVbJ25hbWUnXSAhPSAiIil7CgkJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlWyduYW1lJ10sICIuIiksMSkpOwoJCQlpZiggISRhbGxvd2VkZXh0IHx8IGluX2FycmF5KCRleHRlbnNpb24sICRhbGxvd2VkZXh0KSApewoJCQkJaWYoICRmaWxlcGF0aCA9ICR0aGlzLT5wbFVwbG9hZEZpbGUoJGZpbGUsICRkZXN0aW5hdGlvbiwgJHJlc2l6ZSwgaXNzZXQoJHBhcmFtc1snY3JvcCddKSkgKXsKCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKCRmaWxlcGF0aCwgJHBhcmFtc1sndGFibGVuYW1lJ10sICRpdGVtaWQsICRwYXJhbXNbJ2ZpZWxkJ10sICR0aHVtYnNpemUsIGlzc2V0KCRwYXJhbXNbJ2Nyb3B0aHVtYiddKSk7CgkJCQl9ZWxzZXsKCQkJCQkkZXJyb3JzIC49ICI8bGk+Ii4kZmlsZVsnbmFtZSddLic6ICcubGFuZygnZmlsZW5vdHVwbG9hZGVkJykuIjwvbGk+IjsKCQkJCX0KCQkJfWVsc2V7CgkJCQkkZXJyb3JzID0gJzxsaT4nLiRmaWxlWyduYW1lJ10uJzogJy4kdGhpcy0+TGFuZygnZXJyb3Jfd3JvbmdmaWxldHlwZScpLic8L2xpPic7CgkJCX0KCQl9Cgl9CgkKfQoKJG5ld3BhcmFtcyA9IGFycmF5KCAkcGFyYW1zWydwcmVmaXgnXS4naWQnID0+ICRpdGVtaWQgKTsKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgJG5ld3BhcmFtc1snYWN0aXZlX3RhYiddID0gJHBhcmFtc1snYWN0aXZlX3RhYiddOwppZigkZXJyb3JzICE9ICIiKQkkbmV3cGFyYW1zWydtb2R1bGVfbWVzc2FnZSddID0gJzx1bD4nLiRlcnJvcnMuJzwvdWw+JzsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXQnLiRwYXJhbXNbJ3ByZWZpeCddLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMgKTsJCQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.adminquery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmVjaG8gIjxoMj4iLiR0aGlzLT5MYW5nKCJjcmVhdGVxdWVyeSIpLiI8L2gyPjxici8+IjsKCmlmKCFpc3NldCgkcGFyYW1zWyJ3aGF0Il0pKXsKCQoJJGxldmVsYXJyYXkgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsKCSRsZXZlbG9wdGlvbnMgPSBhcnJheSgpOwoJZm9yZWFjaCgkbGV2ZWxhcnJheSBhcyAkb25lKQkkbGV2ZWxvcHRpb25zWyRvbmVdID0gJG9uZTsKCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoInByb21wdF9xdWVyeSIpOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImFkbWlucXVlcnkiLCAkcmV0dXJuaWQpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIndoYXQiLCRsZXZlbG9wdGlvbnMpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCQp9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHF1ZXJ5Il0pKXsKCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCSR3aGF0ID0gJHBhcmFtc1sid2hhdCJdOwoJJG11bHRpcGxlbGlzdGZpZWxkcyA9IGFycmF5KCk7CgoKCS8vIHdlIHBhcnNlIHRoZSBrZXl3b3JkcwoJJHdoZXJlID0gJHRoaXMtPmdldFdoZXJlRnJvbVBhcmFtcygkcGFyYW1zKTsKCQoJbGlzdCgkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcykgPSAkdGhpcy0+YnVpbGRXaGVyZSgkd2hlcmUsICR3aGF0KTsKCSRjdXN0b21vcmRlciA9IChpc3NldCgkcGFyYW1zWyJvcmRlciJdKSAmJiAkcGFyYW1zWyJvcmRlciJdICE9ICIiKT8kcGFyYW1zWyJvcmRlciJdLiIgIi4kcGFyYW1zWyJvcmRlcl90eXBlIl06IiI7CgkKCSR0bXBpZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcnNhdmVkX3F1ZXJpZXNfc2VxIik7CgkkbmFtZSA9IGlzc2V0KCRwYXJhbXNbInF1ZXJ5bmFtZSJdKT9hZGRzbGFzaGVzKCRwYXJhbXNbInF1ZXJ5bmFtZSJdKToiIjsKCQoJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl9zYXZlZF9xdWVyaWVzIFNFVCBpZD0/LCBuYW1lPT8sIHdoYXQ9Pywgd2hlcmVjbGF1c2U9Pywgd2hlcmV2YWx1ZXM9PywgcXVlcnlvcmRlcj0/IjsKCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0bXBpZCwgJG5hbWUsICR3aGF0LCAkd2hlcmVjbGF1c2UsIHNlcmlhbGl6ZSgkd2hlcmV2YWx1ZXMpLCAkY3VzdG9tb3JkZXIpKTsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+InF1ZXJpZXMiLCJtb2R1bGVfbWVzc2FnZSI9PiR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikpKTsKCn1lbHNlewoJJHdoYXQgPSAkcGFyYW1zWyJ3aGF0Il07CgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiYWRtaW5xdWVyeSIsICRyZXR1cm5pZCk7CgllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJ3aGF0IiwgJHdoYXQpOwoJZWNobyAiPHA+Ii4kdGhpcy0+TGFuZygicXVlcnluYW1lIikuIjogIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwicXVlcnluYW1lIiwiIiwzMCkuIjwvcD4iOwoJJHRoaXMtPmNyZWF0ZUZpZWxkRm9ybSgkd2hhdCwgJGlkLCBmYWxzZSk7CgllY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJzdWJtaXRxdWVyeSIsIGxhbmcoInN1Ym1pdCIpKS4iPC9wPiI7CgllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgkJCQp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.assignfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCmlmKCFpc3NldCgkcGFyYW1zWydmaWVsZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pIHx8ICFpc3NldCgkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pKQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgpKTsNCg0KJGZpbGVwYXRoID0gaXNzZXQoJHBhcmFtc1snZmlsZXBhdGgnXSk/JHBhcmFtc1snZmlsZXBhdGgnXTonJzsNCmlmKCRmaWxlcGF0aCAhPSAnJyAmJiBpc3NldCgkcGFyYW1zWydzdGFydGRpciddKSAmJiAkcGFyYW1zWydzdGFydGRpciddICE9ICcvJykJJGZpbGVwYXRoID0gJHBhcmFtc1snc3RhcnRkaXInXS4nLycuJGZpbGVwYXRoOw0KJGZpbGVwYXRoID0gc3RyX3JlcGxhY2UoJy8vJywnLycsJGZpbGVwYXRoKTsNCiRpdGVtaWQgPSAkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddOw0KJHRodW1ic2l6ZSA9IGlzc2V0KCRwYXJhbXNbJ3RodW1iJ10pPyRwYXJhbXNbJ3RodW1iJ106ZmFsc2U7DQoNCiR0aGlzLT5wbEFzc2lnbkZpbGUoJGZpbGVwYXRoLCAkcGFyYW1zWyd0YWJsZW5hbWUnXSwgJGl0ZW1pZCwgJHBhcmFtc1snZmllbGQnXSwgJHRodW1ic2l6ZSwgaXNzZXQoJHBhcmFtc1snY3JvcHRodW1iJ10pKTsNCg0KJG5ld3BhcmFtcyA9IGFycmF5KCAkcGFyYW1zWydwcmVmaXgnXS4naWQnID0+ICRpdGVtaWQgKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpICRuZXdwYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdlZGl0Jy4kcGFyYW1zWydwcmVmaXgnXSwgJHJldHVybmlkLCAkbmV3cGFyYW1zICk7CQkNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.browsefiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMjIGFjdGlvbi5Ccm93c2VmaWxlcy5waHANCiMjIEJ5OiBQaWVycmUtTHVjIEdlcm1haW4NCiMjIFBBUkFNUzoNCiMjICRwYXJhbXNbJ21vZGUnXSA6IGltYWdlcyB8fCBmaWxlcw0KIyMgJHBhcmFtc1snZXh0ZW5zaW9ucyddIDogYXJyYXkgb2Ygc2hvd24gZmlsZSBleHRlbnNpb25zDQojIyAkcGFyYW1zWydzdGFydGRpciddIDogdGhlIGZvbGRlciB0byBzdGFydCBhdCAoIHVwbG9hZHMvIFtzdGFydGRpcl0gLyApDQojIyAkcGFyYW1zWyd0YWJsZW5hbWUnXSA6IHRoZSBuYW1lIG9mIHRoZSBkYiB0YWJsZQ0KIyMgJHBhcmFtc1sncHJlZml4J10gOiB0aGUgdmFyaWFibGUgcHJlZml4DQojIyAkcGFyYW1zW3ByZWZpeC4naWQnXSA6IHRoZSBpZCBvZiB0aGUgaXRlbSB0byB3aGljaCB0aGUgaW1hZ2Ugd2lsbCBiZSBhc3NpZ25lZCAodmFsdWUgaXMgbm90IHVzZWQsIGJ1dCByZXR1cm5lZCBhdCB0aGUgZW5kKQ0KIyMgJHBhcmFtc1snZmllbGQnXSA6IG9ubHkgYSBwYXNzLXRocm91Z2ggdG8gdGhlIGFzc2lnbiBhY3Rpb24NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgUEFSQU1TIEFORCBDT05GSUdTLi4uDQojDQppZiAoIWlzc2V0KCRwYXJhbXNbJ21vZGUnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2ZpZWxkJ10pIHx8ICFpc3NldCgkcGFyYW1zWydwcmVmaXgnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2ZpZWxkJ10pIHx8ICFpc3NldCgkcGFyYW1zWyd0YWJsZW5hbWUnXSkgKSBleGl0Ow0KDQokaGlkZXRodW1icyA9IHRydWU7IC8vIHdpbGwgaGlkZSBJbWFnZSBNYW5hZ2VyIHRodW1ibmFpbHMsIGJ1dCBhbHNvIGhpZGUgYWxsIGZpbGVzIHRoYXQgc3RhcnQgd2l0aCAidGh1bWJfIi4uLg0KJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoNCiMjIGRlZmluaW5nIHRoZSBhbGxvd2VkIGV4dGVuc2lvbnM6DQokbWVkaWFleHQgPSBhcnJheSgnc3dmJywnZmx2JywnanBlZycsJ2pwZycsJ3BuZycsJ2dpZicpOw0KJGRvY2V4dCA9IGFycmF5KCdkb2MnLCdkb2N4JywneGxzJywneGxzeCcsJ3J0ZicsJ3R4dCcsJ3BkZicpOw0KDQppZigkcGFyYW1zWydtb2RlJ10gPT0gJ2ltYWdlcycgfHwgJHBhcmFtc1snbW9kZSddID09ICdpbWFnZScpIHsNCgkkbW9kZSA9ICdpbWFnZSc7DQoJJGFsbG93ZWRleHQgPSAkbWVkaWFleHQ7DQp9ZWxzZXsNCgkkbW9kZSA9ICdvdGhlcic7DQoJJGFsbG93ZWRleHQgPSBhcnJheV9tZXJnZSgkbWVkaWFleHQsJGRvY2V4dCk7DQp9DQppZihpc3NldCgkcGFyYW1zWydleHRlbnNpb25zJ10pICYmICRwYXJhbXNbJ2V4dGVuc2lvbnMnXSAmJiAkcGFyYW1zWydleHRlbnNpb25zJ10gIT0gIiIpCSRhbGxvd2VkZXh0ID0gZXhwbG9kZSgiLCIsJHBhcmFtc1snZXh0ZW5zaW9ucyddKTsNCmlmKCRtb2RlID09ICdpbWFnZScgJiYgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzaG93dGh1bWJuYWlscyIsdHJ1ZSkpCSRtb2RlID0gJ290aGVyJzsNCg0KJGFkZGZpbGVzID0gKCBpc3NldCgkcGFyYW1zWydhZGRmaWxlcyddKSAmJiAkcGFyYW1zWydhZGRmaWxlcyddICk7DQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgU09NRSBGVU5DVElPTlMuLi4NCiMNCg0KZnVuY3Rpb24gc3RybGltaXQoJHN0cmluZyl7DQoJLy8gZnVuY3Rpb24gdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlsZW5hbWVzDQoJaWYgKHN1YnN0cigkc3RyaW5nLDAsMjEpID09ICRzdHJpbmcpew0KCQlyZXR1cm4gJHN0cmluZzsNCgl9ZWxzZXsNCgkJcmV0dXJuIHN1YnN0cigkc3RyaW5nLDAsMTkpLicuLi4nOw0KCX0NCn0NCmZ1bmN0aW9uIGdldF90aHVtYm5haWwoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpciwgJHJldHVybmFycmF5PWZhbHNlKXsNCgkkdGh1bWJwYXRoID0gJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZTsNCgkkdGh1bWJuYW1lID0gJGZpbGVuYW1lOw0KCWlmIChmaWxlX2V4aXN0cygkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RodW1iXycuJGZpbGVuYW1lKSkgew0KCQkkdGh1bWJuYW1lID0gJ3RodW1iXycuJGZpbGVuYW1lOw0KCX1lbHNlaWYoZmlsZV9leGlzdHMoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHRodW1iXycuJGZpbGVuYW1lKSl7DQoJCSR0aHVtYm5hbWUgPSAncGx0aHVtYl8nLiRmaWxlbmFtZTsNCgl9DQoJJGltZ2luZiA9IGdldGltYWdlc2l6ZSgkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHRodW1ibmFtZSk7DQoJaWYoISRpbWdpbmYgfHwgIWlzc2V0KCRpbWdpbmZbMV0pKQlyZXR1cm4gZmFsc2U7DQoJbGlzdCgkd2lkdGgsICRoZWlnaHQpID0gJGltZ2luZjsNCgkkdGh1bWJuYWlscmF0aW8gPSBtYXgoJHdpZHRoIC8gMTA2LCRoZWlnaHQgLyAxMDYpOw0KCWlmICgkdGh1bWJuYWlscmF0aW8gPCAxKSAkdGh1bWJuYWlscmF0aW8gPSAxOw0KCSR0aGVpZ2h0ID0gZmxvb3IoJGhlaWdodCAvICR0aHVtYm5haWxyYXRpbyk7DQoJJHR3aWR0aCA9IGZsb29yKCR3aWR0aCAvICR0aHVtYm5haWxyYXRpbyk7DQoJaWYoJHJldHVybmFycmF5KXsNCgkJcmV0dXJuIGFycmF5KCRiYXNldXJsLicvJy4kdGh1bWJuYW1lLCAkdHdpZHRoLCAkdGhlaWdodCk7DQoJfWVsc2V7DQoJCXJldHVybiAnPGltZyBib3JkZXI9MCBzcmM9IicuJGJhc2V1cmwuJy8nLiR0aHVtYm5hbWUuJyIgd2lkdGg9IicuJHR3aWR0aC4nIiBoZWlnaHQ9IicuJHRoZWlnaHQuJyIgLz4nOw0KCX0NCn0NCmZ1bmN0aW9uIGltYWdlbW9kZV9idWlsZGxpbmtjb250ZW50KCRiYXNldXJsLCAkZmlsZW5hbWUsICRkaXI9Jycpew0KCS8vIGNyZWF0ZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGxpbmsgaW4gaW1hZ2UgbW9kZQ0KCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlbmFtZSwgIi4iKSwgMSkpOw0KCWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdqcGVnJywnanBnJywncG5nJywnZ2lmJykpKXsNCgkJJHRoZXRodW1iID0gZ2V0X3RodW1ibmFpbCgkYmFzZXVybCwgJGZpbGVuYW1lLCAkZGlyKTsNCgkJcmV0dXJuICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4nLiR0aGV0aHVtYi4nPC9kaXY+Jy5zdHJsaW1pdCgkZmlsZW5hbWUpOw0KCX0NCglnbG9iYWwgJGdDbXM7DQoJJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2ZsdicsJ3N3ZicsJ3dtdicsJ21vdicpKSl7DQoJCSRwaWMgPSAkdGhlYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9maWxldHlwZXMvZm1lZGlhLmdpZiIpOw0KCX1lbHNlaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2pwZWcnLCdqcGcnLCdwbmcnLCdnaWYnKSkpew0KCQkkcGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzL2ZwYWludC5naWYiKTsNCgl9ZWxzZXsNCgkJJHBpYyA9ICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL2ZpbGV0eXBlcy9mZG9jLmdpZiIpOw0KCX0NCglyZXR1cm4gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPicuJHBpYy4nPC9kaXY+Jy5zdHJsaW1pdCgkZmlsZW5hbWUpOw0KfQ0KDQpmdW5jdGlvbiBtYWtlRGlyT2JqKCRmaWxlbmFtZSwkZGlyLCRtb2R1bGUsJHBhcmFtcywkY3VyZGlyLCRwYXJlbnRkaXIsJGlkLCRyZXR1cm5pZCl7DQoJZ2xvYmFsICRnQ21zOw0KCSR0aGVhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCSRwYXJlbnQgPSAoJGZpbGVuYW1lID09ICcuLicpOw0KCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkkb2JqLT5mb2xkZXIgPSB0cnVlOw0KCSRlbXB0eSA9IGFycmF5KCJleHQiLCJzaXplIiwiaW1hZ2VzaXplIiwiZGVsZXRlbGluayIsIm1vZGlmaWVkIiwib3duZXIiLCJwZXJtaXNzaW9ucyIpOw0KCWZvcmVhY2goJGVtcHR5IGFzICRmaWVsZCkJJG9iai0+JGZpZWxkID0gJyc7DQoJJG9iai0+ZmlsZW5hbWUgPSAkZmlsZW5hbWU7DQoJJG9iai0+cGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzLyIuKCRwYXJlbnQ/InVwIjoiIikuImZvbGRlci5naWYiKTsNCglpZigkcGFyZW50KXsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRwYXJlbnRkaXIpKTsNCgkJJG9iai0+dGhlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICcuLicsICRuZXdwYXJhbXMpOw0KCX1lbHNlew0KCQkkbmV3cGFyYW1zID0gYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2N1cmRpcicgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lLCAncGFyZW50ZGlyJyA9PiAkY3VyZGlyKSk7DQoJCSRvYmotPnRoZWxpbmsgPSAnPGEgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPi4nLiRmaWxlbmFtZS4nPC9hPicuJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdicm93c2VmaWxlcycsICRyZXR1cm5pZCwgJGZpbGVuYW1lLCAkbmV3cGFyYW1zKTsNCgl9DQoJcmV0dXJuICRvYmo7DQp9DQpmdW5jdGlvbiBtYWtlRmlsZU9iaigkZmlsZW5hbWUsJGRpciwkbW9kdWxlLCRwYXJhbXMsJGN1cmRpciwkaWQsJHJldHVybmlkLCRiYXNldXJsKXsNCglnbG9iYWwgJGdDbXM7DQoJJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJJGluZm8gPSAkbW9kdWxlLT5wbEdldEZpbGVJbmZvKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWUpOw0KCSRleHRlbnNpb24gPSAkaW5mb1snZXh0J107DQoJJG9iaiA9IG5ldyBTdGRDbGFzcygpOw0KCSRvYmotPmZvbGRlciA9IGZhbHNlOw0KCSRvYmotPmZpbGVuYW1lID0gJGZpbGVuYW1lOw0KCSRvYmotPmV4dCA9ICRleHRlbnNpb247DQoJJG9iai0+c2l6ZSA9ICc8YSBzdHlsZT0iZGlzcGxheTpub25lOyI+Jy4kaW5mb1sic2l6ZSJdLic8L2E+Jy4kaW5mb1sic2l6ZV93Zm9ybWF0Il07DQoJJG9iai0+cGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgkaW5mb1siZmlsZWljb24iXSk7DQoJJG9iai0+aW1hZ2VzaXplID0gJyc7DQoJJG9iai0+dmlld2xpbmsgPSAnJzsNCglpZigkaW5mb1siaW1hZ2VzaXplIl0pew0KCQkkb2JqLT5pbWFnZXNpemUgPSAnPGEgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPicuJGluZm9bIndpZHRoIl0uJzwvYT4nLiRpbmZvWyJpbWFnZXNpemUiXTsNCgkJJHRoZXRodW1iID0gZ2V0X3RodW1ibmFpbCgkYmFzZXVybCwgJGZpbGVuYW1lLCAkZGlyLCB0cnVlKTsNCgkJaWYoJHRoZXRodW1iKQkkb2JqLT52aWV3bGluayA9ICcgPGEgaHJlZj0iJy4kdGhldGh1bWJbMF0uJyIgdGl0bGU9IicuJG1vZHVsZS0+TGFuZygiaW5zdGFudHByZXZpZXciKS4nIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0icmV0dXJuIGRpc3BsYXl0aHVtYih0aGlzLFwnJy4kdGhldGh1bWJbMF0uJ1wnLCcuJHRoZXRodW1iWzFdLicsJy4kdGhldGh1bWJbMl0uJyk7Ij4nLiR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS92aWV3LmdpZiIpLic8L2E+JzsNCgl9DQoJJG9iai0+ZGVsZXRlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiksYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2RlbGV0ZWZpbGUnPT4kZmlsZW5hbWUpKSkuJG9iai0+dmlld2xpbms7DQoJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdmaWxlbmFtZSc9PiRmaWxlbmFtZSwgJ2ZpbGVwYXRoJyA9PiAkY3VyZGlyLicvJy4kZmlsZW5hbWUpKTsNCgkkb2JqLT50aGVsaW5rID0gJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdhc3NpZ25maWxlJywgJHJldHVybmlkLCAkZmlsZW5hbWUsICRuZXdwYXJhbXMpOw0KCSRvYmotPm1vZGlmaWVkID0gJzxhIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4nLiRpbmZvWyJmaWxlbXRpbWUiXS4nPC9hPicuJGluZm9bIm1vZGlmaWVkIl07DQoJJG9iai0+b3duZXIgPSAkaW5mb1sib3duZXIiXTsNCgkkb2JqLT5wZXJtaXNzaW9ucyA9ICRpbmZvWyJwZXJtaXNzaW9ucyJdOw0KCXJldHVybiAkb2JqOw0KfQ0KDQoNCg0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgQ1VSUkVOVCBQQVRILi4uDQojDQoNCiRzdGFydGRpciA9IGlzc2V0KCRwYXJhbXNbJ3N0YXJ0ZGlyJ10pPyRwYXJhbXNbJ3N0YXJ0ZGlyJ106Jyc7DQppZigkc3RhcnRkaXIgIT0gJycgJiYgc3Vic3RyKCRzdGFydGRpciwwLDEpICE9ICcvJyAmJiBzdWJzdHIoJHN0YXJ0ZGlyLDAsMSkgIT0gJ1xcJykgJHN0YXJ0ZGlyID0gRElSRUNUT1JZX1NFUEFSQVRPUi4kc3RhcnRkaXI7DQppZighZmlsZV9leGlzdHMoJGdDbXMtPmNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uJHN0YXJ0ZGlyKSkgQG1rZGlyKCRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiRzdGFydGRpcik7DQoNCiRwYXJlbnRkaXIgPSAoaXNzZXQoJHBhcmFtc1sncGFyZW50ZGlyJ10pID8gJHBhcmFtc1sncGFyZW50ZGlyJ10gOiAnJyk7DQokY3VyZGlyID0gKGlzc2V0KCRwYXJhbXNbJ2N1cmRpciddKSA/ICRwYXJhbXNbJ2N1cmRpciddIDogJycpOw0KJGRpciA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiRzdGFydGRpci4kY3VyZGlyOw0KaWYoIWlzX2RpcigkZGlyKSl7DQoJJGRpciA9ICRnQ21zLT5jb25maWdbInVwbG9hZHNfcGF0aCJdOw0KCSRjdXJkaXIgPSAnJzsNCgkkcGFyZW50ZGlyID0gJyc7DQp9DQokYmFzZXVybCA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfdXJsJ10uJHN0YXJ0ZGlyLiRjdXJkaXI7DQoNCmlmIChpc3NldCgkcGFyYW1zWydkZWxldGVmaWxlJ10pKXsNCgkvLyBXZSdyZSBkZWxldGluZyBhIGZpbGUNCglpZihmaWxlX2V4aXN0cygkZGlyLicvJy4kcGFyYW1zWydkZWxldGVmaWxlJ10pICYmIHVubGluaygkZGlyLicvJy4kcGFyYW1zWydkZWxldGVmaWxlJ10pKXsNCgkJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoIm1lc3NhZ2VfZGVsZXRlZCIpKTsNCgl9DQp9DQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFBSRVBBUklORyBISURERU4gRklFTERTIEZPUiBVUExPQUQNCiMNCg0KJGhpZGRlbiA9ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2N1cmRpcicsJGN1cmRpcikuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnZmllbGQnLCRwYXJhbXNbJ2ZpZWxkJ10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3RhYmxlbmFtZScsJHBhcmFtc1sndGFibGVuYW1lJ10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ21vZGUnLCRwYXJhbXNbJ21vZGUnXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwncHJlZml4JywkcGFyYW1zWydwcmVmaXgnXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwkcGFyYW1zWydwcmVmaXgnXS4naWQnLCRwYXJhbXNbJHBhcmFtc1sncHJlZml4J10uJ2lkJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snZXh0ZW5zaW9ucyddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdleHRlbnNpb25zJywkcGFyYW1zWydleHRlbnNpb25zJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snc3RhcnRkaXInXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnc3RhcnRkaXInLCRwYXJhbXNbJ3N0YXJ0ZGlyJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snc2l6ZSddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdzaXplJywkcGFyYW1zWydzaXplJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1sndGh1bWInXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGh1bWInLCRwYXJhbXNbJ3RodW1iJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snY3JvcCddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjcm9wJywkcGFyYW1zWydjcm9wJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snY3JvcHRodW1iJ10pKSAkaGlkZGVuIC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2Nyb3B0aHVtYicsJHBhcmFtc1snY3JvcHRodW1iJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snYWRkZmlsZXMnXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnYWRkZmlsZXMnLCRwYXJhbXNbJ2FkZGZpbGVzJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdhY3RpdmVfdGFiJywkcGFyYW1zWydhY3RpdmVfdGFiJ10pOw0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgRklMRVMgJiBGT0xERVJTDQojDQoNCiRkaCAgPSBvcGVuZGlyKCRkaXIpOw0KJGZvbGRlcnMgPSBhcnJheSgpOw0KJGZpbGVzID0gYXJyYXkoKTsNCiR1cGZvbGRlciA9IGZhbHNlOw0Kd2hpbGUgKCRmaWxlbmFtZSA9IHJlYWRkaXIoJGRoKSl7DQoJaWYoaXNfZGlyKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWUpICYmICRmaWxlbmFtZSE9Jy4nKXsNCgkJCWlmICgkZmlsZW5hbWU9PScuLicpIHsNCgkJCQlpZiAoJGN1cmRpciAhPSAnJykJCSR1cGZvbGRlciA9IHRydWU7DQoJCQl9ZWxzZXsNCgkJCQkkZm9sZGVyc1tdID0gJGZpbGVuYW1lOw0KCQkJfQ0KCX1lbHNlew0KCQkkZXh0ZW5zaW9uID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICIuIiksIDEpKTsNCgkJaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgJGFsbG93ZWRleHQpICYmICghJGhpZGV0aHVtYnMgfHwgc3Vic3RyKCRmaWxlbmFtZSwwLDYpICE9ICd0aHVtYl8nKSAmJiBzdWJzdHIoJGZpbGVuYW1lLDAsOCkgIT0gJ3BsdGh1bWJfJyl7DQoJCQkkZmlsZXNbXSA9ICRmaWxlbmFtZTsNCgkJfQ0KCX0NCn0NCmlmIChpc3NldCgkZGgpKQljbG9zZWRpcigkZGgpOw0Kc29ydCgkZm9sZGVycyk7DQpzb3J0KCRmaWxlcyk7DQoNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBESVNQTEFZSU5HLi4uDQojDQoNCmVjaG8gJzxkaXYgaWQ9ImN0bG1tX3N1Ym1pdG1lc3NhZ2UiIGNsYXNzPSJwYWdlbWNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4nLiR0aGlzLT5MYW5nKCJzdWJtaXR0aW5nX2ZpbGUiKS4nPC9kaXY+JzsNCg0KaWYoJG1vZGUgPT0gJ2ltYWdlJyl7DQoJLy8gaW1hZ2UgbW9kZSAod2l0aCB0aHVtYm5haWxzKSAtIG5vIHRlbXBsYXRlDQoJZWNobyAnPGgyPicuJHRoaXMtPkxhbmcoJ2Jyb3dzZWZpbGVzdGl0bGUnKS4nPC9oMj4nOw0KCWVjaG8gJzxwPicuJHRoaXMtPkxhbmcoJ3Nob3dpbmdkaXInKS4nIDogJy4kZGlyLic8L3A+JzsNCgllY2hvICc8ZGl2IGlkPSJmaWxlc2VsZWN0IiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0icGFkZGluZzogNHB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyBib3JkZXI6IDFweCBzb2xpZCAjNjY2NjY2OyBiYWNrZ3JvdW5kOiAjRkZGRkZGOyBvdmVyZmxvdzogYXV0bzsiPjxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyI+JzsNCgkkZGl2b3B0aW9uID0gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgZmxvYXQ6IGxlZnQ7IHdpZHRoOiAxNjVweDsgaGVpZ2h0OiAxODBweDsiPjxici8+JzsNCgkkY2xvc2VkaXYgPSAnPC9kaXY+DQonOw0KCWlmKCR1cGZvbGRlcil7DQoJCWVjaG8gJGRpdm9wdGlvbjsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRwYXJlbnRkaXIpKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdicm93c2VmaWxlcycsICRyZXR1cm5pZCwgJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzL3VwZm9sZGVyLmdpZiIpLic8YnIvPicuJHRoaXMtPkxhbmcoJ3BhcmVudGRpcicpLCAkbmV3cGFyYW1zKTsNCgkJZWNobyAkY2xvc2VkaXY7DQoJfQ0KCWZvcmVhY2goJGZvbGRlcnMgYXMgJGZpbGVuYW1lKXsNCgkJZWNobyAkZGl2b3B0aW9uOw0KCQkkbmV3cGFyYW1zID0gYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2N1cmRpcicgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lLCAncGFyZW50ZGlyJyA9PiAkY3VyZGlyKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48aW1nIGJvcmRlcj0wIHNyYz0iLi4vbGliL2ZpbGVtYW5hZ2VyL0ltYWdlTWFuYWdlci9pbWcvZm9sZGVyLmdpZiIgLz48L2Rpdj4nLiRmaWxlbmFtZSwgJG5ld3BhcmFtcyk7DQoJCWVjaG8gJGNsb3NlZGl2Ow0KCX0NCglmb3JlYWNoKCRmaWxlcyBhcyAkZmlsZW5hbWUpew0KCQllY2hvICRkaXZvcHRpb247DQoJCSRuZXdwYXJhbXMgPSBhcnJheV9tZXJnZSgkcGFyYW1zLCBhcnJheSgnZmlsZW5hbWUnPT4kZmlsZW5hbWUsICdmaWxlcGF0aCcgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYXNzaWduZmlsZScsICRyZXR1cm5pZCwgaW1hZ2Vtb2RlX2J1aWxkbGlua2NvbnRlbnQoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpciksICRuZXdwYXJhbXMpLic8YnIvPic7DQoJCSRpbWdpbmYgPSBnZXRpbWFnZXNpemUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZSk7DQoJCWlmKCRpbWdpbmYgJiYgaXNzZXQoJGltZ2luZlsxXSkpCWVjaG8gJygnLiRpbWdpbmZbMF0uJ3gnLiRpbWdpbmZbMV0uJykgJzsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdkZWxldGVmaWxlJz0+JGZpbGVuYW1lKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiksJG5ld3BhcmFtcyk7DQoJCWVjaG8gJGNsb3NlZGl2Ow0KCX0NCgllY2hvICc8L2Rpdj48L2Rpdj4nOw0KCQ0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZGRmaWxlcycsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpOw0KCWVjaG8gJzxoMz4nLmxhbmcoJ3VwbG9hZGZpbGUnKS4nOjwvaDM+PGRpdj4nOw0KCWlmKCRhZGRmaWxlcyl7DQoJCWVjaG8gJzxmaWVsZHNldCBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+PGxlZ2VuZD48Yj4nLiR0aGlzLT5MYW5nKCJ1cGxvYWR6aXBmaWxlIikuJzwvYj48L2xlZ2VuZD4nOw0KCQllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCJ6aXBmaWxlbm90aWNlIikuJzwvcD4nOw0KCQllY2hvICc8cD4nLiR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWR6aXBmaWxlJykuJyAnLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdHppcGZpbGUnLGxhbmcoJ3NlbmQnKSkuJzwvcD48L2ZpZWxkc2V0Pic7DQoJfQ0KCWVjaG8gJzxwPicuJHRoaXMtPkxhbmcoJ3Bvc3RtYXhzaXplJykuaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpLic8L3A+JzsNCglpZihpc3NldCgkcGFyYW1zWyJzaXplIl0pKQllY2hvICc8cD4oJy4kdGhpcy0+TGFuZygnYnJvd3NlZmlsZXNyZXNpemUnKS4nKTwvcD4nOw0KCWVjaG8gJzxkaXYgaWQ9ImZpbGVpbnB1dHMiPjxwPicuJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3VwbG9hZGZpbGUnKS4nPC9wPjwvZGl2Pic7DQoJaWYoJGFkZGZpbGVzKQllY2hvICc8cD48YSBocmVmPSJqYXZhc2NyaXB0OmFkZGZpbGVpbnB1dChcJ2ZpbGVpbnB1dHNcJyx0aGlzKTsiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7Ij4nLiR0aGlzLT5MYW5nKCJhZGRmaWxlaW5wdXQiKS4nPC9hPjwvcD4nOw0KCWVjaG8gJzxwPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpLic8L3A+JzsNCgllY2hvICRoaWRkZW47DQoJZWNobyAnPC9kaXY+JzsJCQ0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgkNCn1lbHNlew0KCS8vIGxpc3QgbW9kZSAobm8gdGh1bWJuYWlscykgLSB1c2VzIGEgdGVtcGxhdGUNCgkNCgkkaW5zdGFudHNlYXJjaCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkaXNwbGF5X2luc3RhbnRzZWFyY2giLGZhbHNlKTsNCgkkaW5zdGFudHNvcnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGlzcGxheV9pbnN0YW50c29ydCIsZmFsc2UpOw0KCQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYnJvd3NldGl0bGUiLCR0aGlzLT5MYW5nKCdicm93c2VmaWxlc3RpdGxlJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigidXBsb2FkdGl0bGUiLGxhbmcoJ3VwbG9hZGZpbGUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzaG93aW5nZGlyIiwkdGhpcy0+TGFuZygnc2hvd2luZ2RpcicpLicgOiAnLiRkaXIpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZm9ybXN0YXJ0IiwkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkZGZpbGVzJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZm9ybWVuZCIsJGhpZGRlbi4kdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInJlc2l6ZW5vdGljZSIsaXNzZXQoJHBhcmFtc1sic2l6ZSJdKT8kdGhpcy0+TGFuZygnYnJvd3NlZmlsZXNyZXNpemUnKTpmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwb3N0bWF4c2l6ZSIsJHRoaXMtPkxhbmcoJ3Bvc3RtYXhzaXplJykuaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInN1Ym1pdCIsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImluc3RhbnRzZWFyY2giLCAkaW5zdGFudHNlYXJjaD8kdGhpcy0+TGFuZygic2VhcmNodGhpc3RhYmxlIikuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAic2VhcmNoZmlsZXRhYmxlIiwgIiIsIDEwLCA2NCwgJyBvbmtleXVwPSJjdGxtbV9zZWFyY2godGhpcy52YWx1ZSxcJ2ZpbGVsaXN0X3RhYmxlXCcpOyInKTpmYWxzZSk7DQoNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInppcHRpdGxlIiwgJHRoaXMtPkxhbmcoInVwbG9hZHppcGZpbGUiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXBub3RpY2UiLCAkdGhpcy0+TGFuZygiemlwZmlsZW5vdGljZSIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInppcGlucHV0IiwgJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3VwbG9hZHppcGZpbGUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXBzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXR6aXBmaWxlJyxsYW5nKCdzZW5kJykpKTsNCg0KCWlmKCRhZGRmaWxlcyl7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZmlsZWlucHV0IiwnPGRpdiBpZD0iZmlsZWlucHV0cyI+PHA+Jy4kdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwndXBsb2FkZmlsZScpLic8L3A+PC9kaXY+Jyk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkZmlsZWlucHV0IiwnPGEgaHJlZj0iamF2YXNjcmlwdDphZGRmaWxlaW5wdXQoXCdmaWxlaW5wdXRzXCcsdGhpcyk7IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyI+Jy4kdGhpcy0+TGFuZygiYWRkZmlsZWlucHV0IikuJzwvYT4nKTsNCgl9ZWxzZXsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWxlaW5wdXQiLCc8cD4nLiR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWRmaWxlJykuJzwvcD4nKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZGRmaWxlaW5wdXQiLGZhbHNlKTsNCgl9DQoJDQoJJHNvcnRsaW5rcyA9IGFycmF5KCk7DQoJJG51bWVyaWNfc29ydGxpbmtzID0gYXJyYXkoKTsNCgkkaSA9IDA7DQoJd2hpbGUoJGkgPCAxMCl7DQoJCWlmKCRpbnN0YW50c29ydCl7DQoJCQkkc29ydGxpbmtzWyRpXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF91cC5naWYiIGFsdD0iXiIvPjwvYT48YnIvPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ2ZpbGVsaXN0X3RhYmxlXCcsJy4kaS4nLHRydWUpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF9kb3duLmdpZiIgYWx0PSJ2Ii8+PC9hPjwvZGl2PiAmbmJzcDsnOw0KCQkJJG51bWVyaWNfc29ydGxpbmtzWyRpXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicsZmFsc2UsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X3VwLmdpZiIgYWx0PSJeIi8+PC9hPjxici8+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicsdHJ1ZSx0cnVlKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfZG93bi5naWYiIGFsdD0idiIvPjwvYT48L2Rpdj4gJm5ic3A7JzsNCgkJfWVsc2V7DQoJCQkkc29ydGxpbmtzWyRpXSA9ICcnOw0KCQkJJG51bWVyaWNfc29ydGxpbmtzWyRpXSA9ICcnOw0KCQl9DQoJCSRpKys7DQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigic29ydGxpbmtzIiwkc29ydGxpbmtzKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIm51bWVyaWNfc29ydGxpbmtzIiwkbnVtZXJpY19zb3J0bGlua3MpOw0KCQ0KCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkkb2JqLT5mb2xkZXIgPSAiIjsNCgkkb2JqLT5maWxlbmFtZSA9ICR0aGlzLT5MYW5nKCJmaWxlbmFtZSIpOw0KCSRvYmotPmV4dCA9ICR0aGlzLT5MYW5nKCJmaWxlZXh0Iik7DQoJJG9iai0+c2l6ZSA9ICR0aGlzLT5MYW5nKCJmaWxlc2l6ZSIpOw0KCSRvYmotPnBpYyA9ICIiOw0KCSRvYmotPmltYWdlc2l6ZSA9ICR0aGlzLT5MYW5nKCJpbWFnZXNpemUiKTsNCgkkb2JqLT5kZWxldGVsaW5rID0gJHRoaXMtPkxhbmcoIkFjdGlvbnMiKTsNCgkkb2JqLT5tb2RpZmllZCA9ICR0aGlzLT5MYW5nKCJsYXN0bW9kIik7DQoJJG9iai0+b3duZXIgPSAkdGhpcy0+TGFuZygiZmlsZW93bmVyIik7DQoJJG9iai0+cGVybWlzc2lvbnMgPSAkdGhpcy0+TGFuZygiZmlsZXBlcm1zIik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJoZWFkZXJzIiwkb2JqKTsNCgkNCgkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCWlmKCR1cGZvbGRlcikJJGl0ZW1saXN0W10gPSBtYWtlRGlyT2JqKCIuLiIsJGRpciwkdGhpcywkcGFyYW1zLCRjdXJkaXIsJHBhcmVudGRpciwkaWQsJHJldHVybmlkKTsNCglmb3JlYWNoKCRmb2xkZXJzIGFzICRmb2xkZXIpCSRpdGVtbGlzdFtdID0gbWFrZURpck9iaigkZm9sZGVyLCRkaXIsJHRoaXMsJHBhcmFtcywkY3VyZGlyLCRwYXJlbnRkaXIsJGlkLCRyZXR1cm5pZCk7DQoJZm9yZWFjaCgkZmlsZXMgYXMgJGZpbGVuYW1lKQkkaXRlbWxpc3RbXSA9IG1ha2VGaWxlT2JqKCRmaWxlbmFtZSwkZGlyLCR0aGlzLCRwYXJhbXMsJGN1cmRpciwkaWQsJHJldHVybmlkLCRiYXNldXJsKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkaXRlbWxpc3QpOw0KCQ0KCWVjaG8gJw0KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCic7DQoJaWYoJGluc3RhbnRzZWFyY2gpCWVjaG8gJHRoaXMtPmdldEZpbGVDb250ZW50KCJpbnN0YW50c2VhcmNoLmpzIik7DQoJaWYoJGluc3RhbnRzb3J0KQllY2hvICR0aGlzLT5nZXRGaWxlQ29udGVudCgiaW5zdGFudHNvcnQuanMiKTsNCgllY2hvICcNCgk8L3NjcmlwdD4NCic7DQoNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImJyb3dzZWZpbGVzLnRwbCIpOw0KfQ0KDQplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQp2YXIgY3RsbW1fZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCInLiRpZC4nbW9kdWxlZm9ybV8xIik7DQppZihjdGxtbV9mb3JtKQljdGxtbV9mb3JtLm9uc3VibWl0ID0gZnVuY3Rpb24oKSB7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN0bG1tX3N1Ym1pdG1lc3NhZ2UiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCn0NCmZ1bmN0aW9uIGRpc3BsYXl0aHVtYihlbGUsdGh1bWJwYXRoLHdpZHRoLGhlaWdodCl7DQoJZWxlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJdmFyIHRoZWltZyA9IG5ldyBJbWFnZSgpOw0KCXRoZWltZy53aWR0aCA9IHdpZHRoOw0KCXRoZWltZy5oZWlnaHQgPSBoZWlnaHQ7DQoJdGhlaW1nLnNyYyA9IHRodW1icGF0aDsNCgl0aGVpbWcuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOw0KCXRoZWltZy5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IGhpZGV0aHVtYih0aGlzKTsgfTsNCgllbGUucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGVpbWcpOw0KCXJldHVybiBmYWxzZTsNCn0NCmZ1bmN0aW9uIGhpZGV0aHVtYihlbGUsdGh1bWJwYXRoLHdpZHRoLGhlaWdodCl7DQoJdmFyIHBhcmVudCA9IGVsZS5wYXJlbnROb2RlOw0KCXBhcmVudC5yZW1vdmVDaGlsZChlbGUpOw0KCXZhciB0aGVhcyA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOw0KCXRoZWFzW3RoZWFzLmxlbmd0aC0xXS5zdHlsZS5kaXNwbGF5ID0gImlubGluZSI7DQp9DQoNCnZhciBuYmZpbGVpbnB1dCA9IDE7DQoNCmZ1bmN0aW9uIGFkZGZpbGVpbnB1dChjb250YWluZXJpZCwgYnRuKXsNCgl2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyaWQpOw0KCWlmKCFjb250YWluZXIpIHJldHVybiBmYWxzZTsNCgluYmZpbGVpbnB1dCsrOw0KCXZhciB0bXBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7DQoJdG1waW5wdXQudHlwZSA9ICJmaWxlIjsNCgl0bXBpbnB1dC5uYW1lID0gIicuJGlkLid1cGxvYWRmaWxlIituYmZpbGVpbnB1dDsNCgl2YXIgdGhlcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsNCgl0aGVwLmFwcGVuZENoaWxkKHRtcGlucHV0KTsNCgljb250YWluZXIuYXBwZW5kQ2hpbGQodGhlcCk7DQoJaWYobmJmaWxlaW5wdXQgPT0gMTIpCWJ0bi5zdHlsZS5kaXNwbGF5ID0gZmFsc2U7DQp9DQo8L3NjcmlwdD4nOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIHdlIG5lZWQgdG8ga25vdyB3aGljaCBsZXZlbCBpcyB0aGUgZmluYWwgbGV2ZWwNCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQokZmluYWxsZXZlbCA9ICJ2aWRlb3MiOw0KDQovLyB3ZSBjaGVjayB3aGF0IGxldmVsIHdlJ3JlIHdhdGNoaW5nLi4uIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB3ZSB1c2UgdGhlIGZpbmFsIGxldmVsDQokd2hhdCA9IChpc3NldCgkcGFyYW1zWyJ3aGF0Il0pICYmIGluX2FycmF5KCRwYXJhbXNbIndoYXQiXSwkbGV2ZWxhcnJheSkpPyRwYXJhbXNbIndoYXQiXTokZmluYWxsZXZlbDsNCi8vIHdlIGdpdmUgaXQgYmFjayB0byB0aGUgcGFyYW1zIGZvciBwcmV0dHkgdXJscyBhbmQgcGFnZSB2aWV3DQppZighaXNzZXQoJHBhcmFtc1sid2hhdCJdKSB8fCAkcGFyYW1zWyJ3aGF0Il0gPT0gIiIpCSRwYXJhbXNbIndoYXQiXSA9ICR3aGF0Ow0KJHBhcmVudGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHdoYXQsIGZhbHNlKTsNCg0KLy8gd2UgcmV0cmlldmUgc29tZSBvdGhlciBwYXJhbWV0ZXJzDQppZigkd2hhdCAhPSAkZmluYWxsZXZlbCl7DQoJJGZvcmNlbGlzdCA9IHRydWU7CQkvLyBBbHdheXMgZGlzcGxheSBhcyBsaXN0IHdoZW4gd2UncmUgbm90IG9uIHRoZSBmaW5hbCBsZXZlbA0KfWVsc2VpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSl7DQoJJGZvcmNlbGlzdCA9IGZhbHNlOwkJLy8gbmV2ZXIgZGlzcGxheSBhIGxpc3Qgd2hlbiB0aGUgYWxpYXMgaXMgc3BlY2lmaWVkDQp9ZWxzZXsNCgkvLyBkZWZhdWx0IHZhbHVlDQoJJGZvcmNlbGlzdCA9IGlzc2V0KCRwYXJhbXNbImZvcmNlbGlzdCJdKT8kcGFyYW1zWyJmb3JjZWxpc3QiXTokdGhpcy0+R2V0UHJlZmVyZW5jZSgiZm9yY2VfbGlzdCIsZmFsc2UpOw0KfQ0KJG9yZGVyYnkgPSBpc3NldCgkcGFyYW1zWyJvcmRlcmJ5Il0pPyRwYXJhbXNbIm9yZGVyYnkiXTpmYWxzZTsNCiRpbmxpbmUgPSAoaXNzZXQoJHBhcmFtc1siaW5saW5lIl0pICYmICRwYXJhbXNbImlubGluZSJdKT90cnVlOmZhbHNlOw0KJGxpbWl0ID0gaXNzZXQoJHBhcmFtc1sibGltaXQiXSk/JHBhcmFtc1sibGltaXQiXTowOw0KJGxpbWl0ID0gKGludCkgJGxpbWl0Ow0KaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pICYmICRwYXJhbXNbIm5icGVycGFnZSJdID4gJGxpbWl0KXsNCgkkbmJwZXJwYWdlID0gKGludCkgJHBhcmFtc1sibmJwZXJwYWdlIl07DQp9ZWxzZXsNCgkvLyBkZWZhdWx0IHBhZ2luYXRpb24NCgkkZGVmYXVsdF9uYnBlcnBhZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkd2hhdC4iX3BhZ2luYXRpb24iLDApOw0KCSRuYnBlcnBhZ2UgPSAoJGRlZmF1bHRfbmJwZXJwYWdlID4gJGxpbWl0KT8kZGVmYXVsdF9uYnBlcnBhZ2U6ZmFsc2U7DQoJJHBhcmFtc1sibmJwZXJwYWdlIl0gPSAkbmJwZXJwYWdlOwkvLyBnaXZlIGl0IGJhY2sgZm9yIGxpbmtzDQp9DQppZigkbmJwZXJwYWdlKQkkbGltaXQgPSAoKChpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSk/JHBhcmFtc1sicGFnZWluZGV4Il06MSktMSkgKiAkbmJwZXJwYWdlKS4iLCIuJG5icGVycGFnZTsNCg0KLy8gd2UgYnVpbGQgdGhlIHF1ZXJ5LiBGaXJzdCwgd2UgY2hlY2sgaWYgd2UncmUgdXNpbmcgYSBzYXZlZCBxdWVyeSA6DQppZihpc3NldCgkcGFyYW1zWyJxdWVyeSJdKSl7DQoJJHF1ZXJ5aWQgPSAoaW50KSAkcGFyYW1zWyJxdWVyeSJdOw0KCWlmKCRxdWVyeSA9ICR0aGlzLT5nZXRfcXVlcmllcyhhcnJheSgiaWQiPT4kcXVlcnlpZCkpKXsNCgkJLy8gd2UgcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBkbyB0aGUgcXVlcnkNCgkJJHF1ZXJ5ID0gJHF1ZXJ5WzBdOw0KCQkkd2hhdCA9ICRxdWVyeS0+d2hhdDsNCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0Ow0KCQkkcGFyZW50bGV2ZWwgPSAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCwgZmFsc2UpOw0KCQkkd2hlcmVjbGF1c2UgPSAkcXVlcnktPndoZXJlY2xhdXNlOw0KCQkkd2hlcmV2YWx1ZXMgPSAkcXVlcnktPndoZXJldmFsdWVzOw0KCQkkY3VzdG9tb3JkZXIgPSAoJHF1ZXJ5LT5xdWVyeW9yZGVyID09ICIiP2ZhbHNlOiRxdWVyeS0+cXVlcnlvcmRlcik7DQoJfWVsc2VpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWxsb3dfc3FsIixmYWxzZSkpew0KCQkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7DQoJCSRwYXJlbnRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCR3aGF0LCBmYWxzZSk7DQoJCSR3aGVyZWNsYXVzZSA9ICRwYXJhbXNbInF1ZXJ5Il07IC8vIHF1ZXJ5IHNob3VsZCBiZSBzYW5pdGl6ZWQuLi4NCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJJGN1c3RvbW9yZGVyID0gZmFsc2U7DQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgJG9yZGVyYnksICRsaW1pdCwgJHF1ZXJ5KTsNCgl9ZWxzZXsNCgkJJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZygiZXJyb3Jfd3JvbmdxdWVyeSIpOw0KCQlpZigkcXVlcnlpZCAhPSAkcXVlcnkgJiYgJG1zZyA9IG15c3FsX2Vycm9yKCkpCQkkbWVzc2FnZSAuPSAiPGJyLz4iLiR0aGlzLT5MYW5nKCJnaXZlbmVycm9yIikuJG1zZzsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkbWVzc2FnZSk7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmICRuYnBlcnBhZ2Upew0KCQkvLyB3ZSBuZWVkIHBhZ2luYXRpb24gLSBzbyB3ZSBmaXJzdCByZXRyaWV2ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGZpdHRpbmcgdGhlIHF1ZXJ5DQoJCSR0b3RhbCA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygkd2hhdCwiaWQiLGFycmF5KCksJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMsICRwYXJlbnRsZXZlbCk7DQoJfQ0KCWlmKGlzc2V0KCR0b3RhbCkgJiYgJHRvdGFsID09IDApew0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOwkvLyB3ZSBhbHJlYWR5IGtub3cgdGhlcmUncyBub3RoaW5nIHRvIHF1ZXJ5DQoJfWVsc2V7DQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgJG9yZGVyYnksICRsaW1pdCwgJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMsICRjdXN0b21vcmRlcik7DQoJfQ0KfWVsc2V7DQoJLy8gd2UncmUgbm90IHVzaW5nIGEgc2F2ZWQgcXVlcnksIHNvIHdlIHBhcnNlIHRoZSBwYXJhbWV0ZXJzDQoJLy8gd2UgcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBkbyB0aGUgcXVlcnkNCgkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7DQoJLy8gVGhlICR3aGVyZSBob2xkcyBlbGVtZW50cyBvZiB0aGUgV0hFUkUgY2xhdXNlIG9mIHRoZSBxdWVyeSwgaW4gdGhlIGZvcm0gZmllbGRfbmFtZT0+ZmllbGRfdmFsdWUNCglpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiAkcGFyYW1zWyJhbGlhcyJdICE9ICIiKSB7DQoJCSR3aGVyZSA9IGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbImFsaWFzIl0pOw0KCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sic2hvd2RlZmF1bHQiXSkgJiYgJHBhcmFtc1sic2hvd2RlZmF1bHQiXSkgew0KCQkkd2hlcmUgPSBhcnJheSgiaXNkZWZhdWx0Ij0+MSk7DQoJfWVsc2V7DQoJCSR3aGVyZSA9IGFycmF5KCk7DQoJfQ0KCWlmKGlzc2V0KCRwYXJhbXNbInBhcmVudCJdKSAmJiAkcGFyYW1zWyJwYXJlbnQiXSAhPSAiIikgJHdoZXJlWyJwYXJlbnQiXSA9ICRwYXJhbXNbInBhcmVudCJdOw0KDQoJJHdoZXJlWyJhY3RpdmUiXSA9IDE7DQoJaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmICRuYnBlcnBhZ2Upew0KCQkvLyB3ZSBuZWVkIHBhZ2luYXRpb24gLSBzbyB3ZSBmaXJzdCByZXRyaWV2ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGZpdHRpbmcgdGhlIHF1ZXJ5DQoJCSR0b3RhbCA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygkd2hhdCwiaWQiLCR3aGVyZSxmYWxzZSxhcnJheSgpLCRwYXJlbnRsZXZlbCk7DQoJfQ0KCWlmKGlzc2V0KCR0b3RhbCkgJiYgJHRvdGFsID09IDApew0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOwkvLyB3ZSBhbHJlYWR5IGtub3cgdGhlcmUncyBub3RoaW5nIHRvIHF1ZXJ5DQoJfWVsc2V7DQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oJHdoZXJlLCBmYWxzZSwgIiIsICIiLCAkb3JkZXJieSwgJGxpbWl0KTsNCgl9DQp9DQoNCmlmKCFpc3NldCgkdG90YWwpKQkkdG90YWwgPSBjb3VudCgkaXRlbWxpc3QpOw0KDQovLyBJbnRlZ3JhdGlvbiB3b3VsZCByZXF1aXJlIHNvbWUgY2hhbmdlcyB0byBDYXJ0TWFkZVNpbXBsZQ0KLy8gJGl0ZW1saXN0ID0gJHRoaXMtPmFkZENhcnRVcmxzKCRpdGVtbGlzdCwkaWQsJHJldHVybmlkKTsNCg0KDQoNCi8vICBTVEFSVCBQUk9DRVNTSU5HDQoNCmlmKGNvdW50KCRpdGVtbGlzdCkgPT0gMSAmJiAhJGZvcmNlbGlzdCl7DQoJDQoJLy8gIyMjIyMjIyMjIyMjIyMjIyMgV0UgQVJFIERJU1BMQVlJTkcgQU4gSVRFTSBJTiBERVRBSUwgVklFVw0KCQ0KCSRpdGVtID0gJGl0ZW1saXN0WzBdOw0KCSRpdGVtID0gJHRoaXMtPmFkZGZyb250ZW5kdXJscygkaXRlbSwkcGFyYW1zLCRpZCwkcmV0dXJuaWQpOw0KDQoJLy8gaWYgYSB0ZW1wbGF0ZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHdlIHRyeSB0byByZXRyaWV2ZSBpdAkNCgkkdGVtcGxhdGUgPSBmYWxzZTsNCglpZihpc3NldCgkcGFyYW1zWyJmaW5hbHRlbXBsYXRlIl0pICYmICRwYXJhbXNbImZpbmFsdGVtcGxhdGUiXSAhPSAiIil7DQoJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJmaW5hbHRlbXBsYXRlIl0pOw0KCX0NCg0KCS8vIGlmIG5vIHRlbXBsYXRlIGhhcyBiZWVuIHNwZWNpZmllZCwgd2UgcmV0cmlldmUgdGhlIGRlZmF1bHQgZmluYWwgdGVtcGxhdGUNCglpZighJHRlbXBsYXRlIHx8ICR0ZW1wbGF0ZSA9PSAiIil7DQoJCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmluYWx0ZW1wbGF0ZSIpOw0KCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7DQoJfQ0KCS8vIHdlIHJldHJpZXZlIHRoZSBwYXJlbnQgdHJlZToNCgkkcGFyZW50dHJlZSA9ICR0aGlzLT5nZXRfb2JqdHJlZSggJGl0ZW0tPnBhcmVudF9pZCwgJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHdoYXQsIGZhbHNlKSApOw0KCSRpdGVtLT5wYXJlbnRfb2JqZWN0ID0gJHBhcmVudHRyZWU7DQoNCgkNCgkNCgkvLyB3ZSByZXRyaWV2ZSBhIGxhYmVsIGZvciBlYWNoIG9mIHRoZSBpdGVtJ3MgZmllbGQgYW5kIGFzc2lnbiBpdCB0byBzbWFydHkNCgkkbGFiZWxzID0gbmV3IFN0ZENsYXNzKCk7DQoJZm9yZWFjaCgkaXRlbSBhcyAka2V5PT4kdmFsdWUpew0KCQkkbGFiZWxzLT4ka2V5ID0gJHRoaXMtPkxhbmcoJHdoYXQuIl8iLiRrZXkpOwkJDQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGFiZWxzIiwgJGxhYmVscyk7DQoJDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtIiwkaXRlbSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkd2hhdC4iX3BsdXJhbCIpKTsNCg0KCWlmKCFpc3NldCgkcGFyYW1zWyJxdWVyeSJdKSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibG9hZF9uZXh0cHJldmlvdXMiLGZhbHNlKSl7DQoJCS8vIHdlIGxvYWQgbGlua3MgdG8gbmV4dCBhbmQgcHJldmlvdXMgaXRlbXMNCgkJLy8gYXMgdGhpcyBpbXBsaWVzIHR3byBtb3JlIHF1ZXJpZXMsIGl0IG11c3QgYmUgYWN0aXZhdGVkIGluIHRoZSBzZXR0aW5ncyB0YWJzDQoJCSRuZXd3aGVyZSA9IGFycmF5KCJhY3RpdmUiPT4xKTsNCgkJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pKXsNCgkJCSRuZXd3aGVyZVsicGFyZW50Il0gPSAkcGFyYW1zWyJwYXJlbnQiXTsJDQoJCX1lbHNlaWYoaXNzZXQoJGl0ZW0tPnBhcmVudF9hbGlhcykgJiYgJHRoaXMtPmdldE9yZGVyVHlwZSgkd2hhdCkpew0KCQkJJG5ld3doZXJlWyJwYXJlbnQiXSA9ICRpdGVtLT5wYXJlbnRfYWxpYXM7DQoJCX0NCgkJJG5leHRpdGVtID0gZmFsc2U7DQoJCSRuZXd3aGVyZVsiaXRlbV9vcmRlciJdID0gJGl0ZW0tPml0ZW1fb3JkZXIgKyAxOw0KCQkkbmV3cGFybXMgPSAkcGFyYW1zOw0KCQkkdG1waXRlbSA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oJG5ld3doZXJlKTsNCgkJaWYoaXNzZXQoJHRtcGl0ZW1bMF0pKXsNCgkJCSRuZXdwYXJtc1siYWxpYXMiXSA9ICR0bXBpdGVtWzBdLT5hbGlhczsNCgkJCSRuZXh0aXRlbSA9ICR0aGlzLT5hZGRmcm9udGVuZHVybHMoJHRtcGl0ZW1bMF0sJG5ld3Bhcm1zLCRpZCwkcmV0dXJuaWQpOw0KCQl9DQoJCSRwcmV2aXRlbSA9IGZhbHNlOw0KCQlpZigkaXRlbS0+aXRlbV9vcmRlciA+IDEpew0KCQkJJG5ld3doZXJlWyJpdGVtX29yZGVyIl0gPSAkaXRlbS0+aXRlbV9vcmRlciAtIDE7DQoJCQkkdG1waXRlbSA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oJG5ld3doZXJlKTsNCgkJCWlmKGlzc2V0KCR0bXBpdGVtWzBdKSl7DQoJCQkJJG5ld3Bhcm1zWyJhbGlhcyJdID0gJHRtcGl0ZW1bMF0tPmFsaWFzOw0KCQkJCSRwcmV2aXRlbSA9ICR0aGlzLT5hZGRmcm9udGVuZHVybHMoJHRtcGl0ZW1bMF0sJG5ld3Bhcm1zLCRpZCwkcmV0dXJuaWQpOw0KCQkJfQ0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibmV4dF9pdGVtIiwkbmV4dGl0ZW0pOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInByZXZpb3VzX2l0ZW0iLCRwcmV2aXRlbSk7DQoJfQ0KCQ0KCS8vIHdlIHByb2Nlc3MgdGhlIHRlbXBsYXRlDQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCgkNCn1lbHNlaWYoY291bnQoJGl0ZW1saXN0KSA+IDApew0KCQ0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIFdFIEFSRSBESVNQTEFZSU5HIEEgTElTVCBWSUVXDQoJJHBhcmVudG9iaiA9IGZhbHNlOw0KCS8vIGlmIHdlIGFyZSB3YXRjaGluZyBpdGVtcyBmcm9tIGEgc3BlY2lmaWMgcGFyZW50cywgd2Ugd2FudCB0byBoYXZlIHRoZSBpbmZvcm1hdGlvbnMgb2YgdGhpcyBwYXJlbnQgYXZhaWxhYmxlDQoJLy8gaW4gdGhlIHRlbXBsYXRlIChmb3IgZXhhbXBsZSwgaWYgd2Ugd2FudCB0byBkaXNwbGF5IGEgY2F0ZWdvcnkgcGFnZSwgd2UgbWlnaHQgd2FudCB0byBzaG93IHRoZSBjYXRlZ29yeSBkZXNjcmlwdGlvbikNCgkvLyBpZiBpdCBpcyB0aGUgY2FzZSwgd2UgcmV0cmlldmUgdGhlIHBhcmVudCBhbmQgZ2l2ZSBpdCB0byBzbWFydHkNCglpZihpc3NldCgkcGFyYW1zWyJwYXJlbnQiXSkgJiYgJHBhcmFtc1sicGFyZW50Il0gIT0gIiIpew0KCQkkcGFyZW50b2JqID0gJHRoaXMtPmdldF9vYmp0cmVlKCRwYXJhbXNbInBhcmVudCJdLCAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCxmYWxzZSksICJhbGlhcyIpOw0KCX0NCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudG9iaiIsJHBhcmVudG9iaik7DQoJDQoJJHNlbGVjdGVkYWxpYXMgPSBmYWxzZTsNCgkvLyB3ZSBjaGVjayBpZiB0aGUgY3VycmVudCBwYWdlIGhhcyBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIG1vZHVsZSB3aGljaCBhcmUgaW4gYWN0aW9uDQoJJGdsb2IgPSAkdGhpcy0+Z2V0X21vZHVsZUdldFZhcnMoKTsNCglpZigkd2hhdCA9PSAkZmluYWxsZXZlbCAmJiBpc3NldCgkZ2xvYlsiYWxpYXMiXSkpew0KCQkkc2VsZWN0ZWRhbGlhcyA9ICRnbG9iWyJhbGlhcyJdOw0KCX1lbHNlaWYoaXNzZXQoJGdsb2JbInBhcmVudCJdKSAmJiBpc3NldCgkZ2xvYlsid2hhdCJdKSAmJiAkZ2xvYlsid2hhdCJdID09ICR0aGlzLT5nZXRfbmV4dGxldmVsKCR3aGF0KSl7DQoJCSRzZWxlY3RlZGFsaWFzID0gJGdsb2JbInBhcmVudCJdOw0KCX0NCglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkgJiYgaXNzZXQoJGdsb2JbInBhZ2VpbmRleCJdKSAmJiAhaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pKSAkcGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRnbG9iWyJwYWdlaW5kZXgiXTsNCglpZighaXNzZXQoJHRoaXMtPnBsY3VycmVudFskd2hhdF0pKQkkdGhpcy0+YnVpbGRHbG9iYWxUcmVlKCk7DQoJaWYoaXNzZXQoJHRoaXMtPnBsY3VycmVudFskd2hhdF0pKQkkc2VsZWN0ZWRhbGlhcyA9ICR0aGlzLT5wbGN1cnJlbnRbJHdoYXRdOw0KCWlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSAmJiAhaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pKSAkcGFyYW1zWyJwYWdlaW5kZXgiXSA9ICR0aGlzLT5jdXJyZW50cGFnZWluZGV4Ow0KCSRsaW5rcmV0dXJuaWQgPSAoaXNzZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSk/JHRoaXMtPmdldF9wYWdlaWQoJHBhcmFtc1siZGV0YWlscGFnZSJdKTokcmV0dXJuaWQ7DQoNCgkvLyB3ZSByZXRyaWV2ZSB0aGUgdGVtcGxhdGUNCglpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkgJiYgJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0gIT0gIiIgJiYgJGN1c3RvbXRwbCA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSwgJHRoaXMtPkdldE5hbWUoKSkpew0KCQkkdGVtcGxhdGUgPSAkY3VzdG9tdHBsOw0KCX1lbHNlew0KCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV8iLiR3aGF0KTsNCgkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUsICR0aGlzLT5HZXROYW1lKCkpOw0KCX0NCg0KCS8vIGlmIFJBTkRPTSBvcHRpb24gaXMgc2V0LCB3ZSByYW5kb21seSBzZWxlY3RlZCBvbmx5IGEgbnVtYmVyIG9mIHRoZSBpdGVtcyByZXRyaWV2ZWQNCglpZiggaXNzZXQoJHBhcmFtc1sicmFuZG9tIl0pICYmICRwYXJhbXNbInJhbmRvbSJdID4gMCAmJiAkcGFyYW1zWyJyYW5kb20iXSA8IGNvdW50KCRpdGVtbGlzdCkgKXsNCgkJJG5ld2xpc3QgPSBhcnJheSgpOw0KCQkkaSA9IDE7DQoJCSRzZWxlY3RlZCA9IGFycmF5KCk7DQoJCSRjdXJyYW5kID0gcmFuZCgwLChjb3VudCgkaXRlbWxpc3QpLTEpKTsNCgkJd2hpbGUoJGkgPD0gJHBhcmFtc1sicmFuZG9tIl0pew0KCQkJd2hpbGUoaW5fYXJyYXkoJGN1cnJhbmQsICRzZWxlY3RlZCkgJiYgY291bnQoJHNlbGVjdGVkKSA8IGNvdW50KCRpdGVtbGlzdCkpCSRjdXJyYW5kID0gcmFuZCgwLChjb3VudCgkaXRlbWxpc3QpLTEpKTsNCgkJCSRuZXdsaXN0W10gPSAkaXRlbWxpc3RbJGN1cnJhbmRdOw0KCQkJJHNlbGVjdGVkW10gPSAkY3VycmFuZDsNCgkJCSRpKys7DQoJCX0NCgkJJGl0ZW1saXN0ID0gJG5ld2xpc3Q7DQoJfQ0KCQkNCgkvLyBmaW5hbCBwcm9jZXNzaW5nIC0gd2UgY3JlYXRlIHRoZSBkZXRhaWxsaW5rcyBmb3IgZWFjaCBpdGVtDQoJJG5ld2xpc3QgPSBhcnJheSgpOw0KCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJJGl0ZW0gPSAkdGhpcy0+YWRkZnJvbnRlbmR1cmxzKCRpdGVtLCRwYXJhbXMsJGlkLCRsaW5rcmV0dXJuaWQpOw0KCQkkaXRlbS0+aXNfc2VsZWN0ZWQgPSAoJGl0ZW0tPmFsaWFzID09ICRzZWxlY3RlZGFsaWFzKT90cnVlOmZhbHNlOw0KCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7DQoJfQ0KCSRpdGVtbGlzdCA9ICRuZXdsaXN0Ow0KCQ0KCSR0aGlzLT5wYWdpbmF0ZSgkd2hhdCwkdG90YWwsJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsNCgkNCgkvLyB3ZSBnaXZlIGV2ZXJ5dGhpbmcgdG8gc21hcnR5IGFuZCBwcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRpdGVtbGlzdCk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkd2hhdC4iX3BsdXJhbCIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1jb3VudCIsY291bnQoJGl0ZW1saXN0KSk7DQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCgkNCn1lbHNlew0KCQ0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIFdFIEFSRU4nVCBESVNQTEFZSU5HIEFOWVRISU5HIEFUIEFMTA0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZXJyb3JfbXNnIiwoaXNzZXQoJHBhcmFtc1siYWxpYXMiXSk/JHRoaXMtPkxhbmcoImVycm9yX25vdGZvdW5kIik6JHRoaXMtPkxhbmcoImVycm9yX25vaXRlbWZvdW5kIikpKTsNCgkkcGFyZW50b2JqID0gZmFsc2U7DQoJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pICYmICRwYXJlbnRsZXZlbCl7DQoJCSR0bXBmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kcGFyZW50bGV2ZWw7DQoJCSRwYXJlbnRvYmogPSAkdGhpcy0+JHRtcGZ1bmN0aW9uKGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbInBhcmVudCJdKSk7DQoJCSRwYXJlbnRvYmogPSBpc3NldCgkcGFyZW50b2JqWzBdKT8kcGFyZW50b2JqWzBdOmZhbHNlOw0KCX0NCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudG9iaiIsJHBhcmVudG9iaik7DQoJDQoJJHRlbXBsYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImVtcHR5dGVtcGxhdGUiLCIqKiIpOw0KCWlmKCR0ZW1wbGF0ZSA9PSAiKioiKXsNCgkJLy8gd2UgdXNlIHRoZSBsaXN0IHRlbXBsYXRlDQoJCWlmKGlzc2V0KCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdKSAmJiAkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSAhPSAiIiAmJiAkY3VzdG9tdHBsID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdLCAkdGhpcy0+R2V0TmFtZSgpKSl7DQoJCQkkdGVtcGxhdGUgPSAkY3VzdG9tdHBsOw0KCQl9ZWxzZXsNCgkJCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlXyIuJHdoYXQpOw0KCQkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUsICR0aGlzLT5HZXROYW1lKCkpOw0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRpdGVtbGlzdCk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGV2ZWx0aXRsZSIsJHRoaXMtPkxhbmcoJHdoYXQuIl9wbHVyYWwiKSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWNvdW50IiwwKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKGFycmF5KCJwYWdlX3Nob3dpbmciPT5mYWxzZSwicGFnZV90b3RhbGl0ZW1zIj0+ZmFsc2UsInBhZ2VfcGFnZW51bWJlcnMiPT5mYWxzZSwicGFnZV9uZXh0Ij0+ZmFsc2UsInBhZ2VfcHJldmlvdXMiPT5mYWxzZSkpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOw0KCX1lbHNlew0KCQkvLyB3ZSB1c2UgdGhlIG5vcmVzdWx0IHRlbXBsYXRlDQoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOw0KCX0NCg0KfQ0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQokYWN0aXZlX3RhYiA9IGlzc2V0KCRwYXJhbXNbImFjdGl2ZV90YWIiXSk/JHBhcmFtc1siYWN0aXZlX3RhYiJdOiJjYXRlZ29yeSI7DQoNCiRoYXNfYWR2YW5jZWRfcGVybSA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oInlvdXR1YmVwbGF5ZXJfYWR2YW5jZWQiKTsNCg0KJGZpbHRlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkaXNwbGF5X2ZpbHRlciIsZmFsc2UpOw0KJGluc3RhbnRzZWFyY2ggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGlzcGxheV9pbnN0YW50c2VhcmNoIixmYWxzZSk7DQokaW5zdGFudHNvcnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGlzcGxheV9pbnN0YW50c29ydCIsZmFsc2UpOw0KJGFkbWlucGFnZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWRtaW5wYWdlcyIsMCk7DQokdXNlX2hpZXJhcmNoeSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ1c2VfaGllcmFyY2h5IixmYWxzZSk7DQokdXNlX3Nlc3Npb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidXNlX3Nlc3Npb24iLHRydWUpOw0KDQppZigkaW5zdGFudHNvcnQgfHwgJGluc3RhbnRzZWFyY2gpew0KCWVjaG8gJw0KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCic7DQoJaWYoJGluc3RhbnRzZWFyY2gpCWVjaG8gJHRoaXMtPmdldEZpbGVDb250ZW50KCJpbnN0YW50c2VhcmNoLmpzIik7DQoJaWYoJGluc3RhbnRzb3J0KQllY2hvICR0aGlzLT5nZXRGaWxlQ29udGVudCgiaW5zdGFudHNvcnQuanMiKTsNCgllY2hvICINCgk8L3NjcmlwdD4NCiI7DQp9DQoNCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOw0KCWlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfY2F0ZWdvcnkiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX21hbmFnZV9jYXRlZ29yeSIpICkgew0KCQllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoImNhdGVnb3J5IiwgJHRoaXMtPkxhbmcoImNhdGVnb3J5X3BsdXJhbCIpLCAiY2F0ZWdvcnkiID09ICRhY3RpdmVfdGFiID8gdHJ1ZSA6IGZhbHNlKTsNCgl9DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV92aWRlb3MiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX21hbmFnZV92aWRlb3MiKSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJ2aWRlb3MiLCAkdGhpcy0+TGFuZygidmlkZW9zX3BsdXJhbCIpLCAidmlkZW9zIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7DQoJfQ0KCWlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigiTW9kaWZ5IFRlbXBsYXRlcyIpIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3RlbXBsYXRlcyIsZmFsc2UpICkgew0KCQllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoInRlbXBsYXRlcyIsICR0aGlzLT5MYW5nKCJ0ZW1wbGF0ZXMiKSwgInRlbXBsYXRlcyIgPT0gJGFjdGl2ZV90YWIgPyB0cnVlIDogZmFsc2UpOwkJDQoJfQ0KCWlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfcXVlcmllcyIsZmFsc2UpICkgew0KCQllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoInF1ZXJpZXMiLCAkdGhpcy0+TGFuZygicXVlcmllcyIpLCAicXVlcmllcyIgPT0gJGFjdGl2ZV90YWIgPyB0cnVlIDogZmFsc2UpOwkJDQoJfQ0KCWlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigicHJlZmVyZW5jZXMiLCAkdGhpcy0+TGFuZygicHJlZmVyZW5jZXMiKSwgInByZWZlcmVuY2VzIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7CQkNCgl9DQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7DQoNCg0KDQplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsNCg0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X2NhdGVnb3J5IixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigieW91dHViZXBsYXllcl9tYW5hZ2VfY2F0ZWdvcnkiKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigiY2F0ZWdvcnkiKTsNCg0KCQkkd2hlcmVjbGF1c2UgPSBhcnJheSgpOw0KCQkkZmlsdGVyb3V0cHV0ID0gZmFsc2U7DQoNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWx0ZXIiLCAkZmlsdGVyb3V0cHV0KTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpbnN0YW50c2VhcmNoIiwgJGluc3RhbnRzZWFyY2g/JHRoaXMtPkxhbmcoInNlYXJjaHRoaXN0YWJsZSIpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgInNlYXJjaHRhYmxlX2NhdGVnb3J5IiwgIiIsIDEwLCA2NCwgJyBvbmtleXVwPSJjdGxtbV9zZWFyY2godGhpcy52YWx1ZSxcJ2NhdGVnb3J5X3RhYmxlXCcpOyInKTpmYWxzZSk7DQoJCQkNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZGRuZXciLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJlZGl0QSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIi4kdGhpcy0+TGFuZygiYWRkX2NhdGVnb3J5IikpKTsNCgkJJHJlb3JkZXJfYnRuID0gZmFsc2U7DQoJCWlmKCRoYXNfYWR2YW5jZWRfcGVybSB8fCAhJHRoaXMtPkdldFByZWZlcmVuY2UoInJlc3RyaWN0X3Blcm1pc3Npb25zIixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigieW91dHViZXBsYXllcl9tYW5hZ2VfY2F0ZWdvcnkiKSkJJHJlb3JkZXJfYnRuID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAicmVvcmRlciIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL3Jlb3JkZXIuZ2lmIiwgIiIsIiIsIiIsInN5c3RlbWljb24iKS4iICIuJHRoaXMtPkxhbmcoInJlb3JkZXIiKSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicmVvcmRlciIsICRyZW9yZGVyX2J0bik7DQoJCSRsaW1pdCA9IGZhbHNlOw0KCQlpZigkYWRtaW5wYWdlcyl7DQoJCQkkbGltaXQgPSAoKGlzc2V0KCRwYXJhbXNbImNhdGVnb3J5X3BhZ2UiXSk/JHBhcmFtc1siY2F0ZWdvcnlfcGFnZSJdOjApICogJGFkbWlucGFnZXMpLiIsIi4kYWRtaW5wYWdlczsNCgkJfQ0KCQkNCgkJCSRpdGVtbGlzdCA9ICR0aGlzLT5nZXRfbGV2ZWxfY2F0ZWdvcnkoaXNzZXQoJHdoZXJlY2xhdXNlKT8kd2hlcmVjbGF1c2U6YXJyYXkoKSx0cnVlLCAkaWQsICRyZXR1cm5pZCwgZmFsc2UsICRsaW1pdCk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRhYmxlaWQiLCAiY2F0ZWdvcnlfdGFibGUiKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCAkaXRlbWxpc3QpOw0KCQkJJGFkbWluc2hvdyA9IGFycmF5KA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJuYW1lIiksImVkaXRsaW5rIixmYWxzZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoImFjdGl2ZSIpLCJ0b2dnbGVhY3RpdmUiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJyZW9yZGVyIiksIm1vdmVsaW5rcyIsdHJ1ZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwiZGVsZXRlbGluayIsdHJ1ZSkJCQ0KCQkJCSk7DQoJCQlpZigkaW5zdGFudHNvcnQgJiYgY291bnQoJGl0ZW1saXN0KT4xKXsNCgkJCQkkaSA9IDA7DQoJCQkJd2hpbGUoJGk8Y291bnQoJGFkbWluc2hvdykpew0KCQkJCQlpZighJGFkbWluc2hvd1skaV1bMl0pCSRhZG1pbnNob3dbJGldWzBdID0gJzxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCdjYXRlZ29yeV90YWJsZVwnLCcuJGkuJyk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X3VwLmdpZiIgYWx0PSJeIi8+PC9hPjxici8+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnY2F0ZWdvcnlfdGFibGVcJywnLiRpLicsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X2Rvd24uZ2lmIiBhbHQ9InYiLz48L2E+PC9kaXY+PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6IDI0cHg7Ij4gJm5ic3A7Jy4kYWRtaW5zaG93WyRpXVswXS4iPC9kaXY+IjsNCgkJCQkJJGkrKzsNCgkJCQl9DQoJCQl9DQoJCQlsaXN0KCRwYWdlaW5mbywgJG5leHRwYWdlLCAkcHJldmlvdXNwYWdlLCAkcGFnZXMpID0gJHRoaXMtPmFkbWluX3BhZ2luYXRlKCJjYXRlZ29yeSIsJGFkbWlucGFnZXMsJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibmV4dHBhZ2UiLCAkbmV4dHBhZ2UpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwcmV2aW91c3BhZ2UiLCAkcHJldmlvdXNwYWdlKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZWluZm8iLCAkcGFnZWluZm8pOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlcyIsICRwYWdlcyk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOw0KCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOw0KDQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQoNCn0NCg0KaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV92aWRlb3MiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX21hbmFnZV92aWRlb3MiKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigidmlkZW9zIik7DQoNCglpZigkdGhpcy0+Y291bnRzb21ldGhpbmcoImNhdGVnb3J5IikgPiAwKXsNCg0KCQkkd2hlcmVjbGF1c2UgPSBhcnJheSgpOw0KCQkkZmlsdGVyb3V0cHV0ID0gZmFsc2U7DQoNCgkJCWlmKCRmaWx0ZXIpew0KCQkJCSRjdXJfZmlsdGVyID0gZmFsc2U7DQoJCQkJaWYoaXNzZXQoJHBhcmFtc1sidmlkZW9zX3Nob3dvbmx5Il0pKXsNCgkJCQkJJGN1cl9maWx0ZXIgPSAkcGFyYW1zWyJ2aWRlb3Nfc2hvd29ubHkiXTsNCgkJCQkJaWYoJHVzZV9zZXNzb2luKQkkX1NFU1NJT05bImN0bG1tX2ZpbHRlcl92aWRlb3MiXSA9ICRwYXJhbXNbInZpZGVvc19zaG93b25seSJdOw0KCQkJCX1lbHNlaWYoJHVzZV9zZXNzaW9uICYmIGlzc2V0KCRfU0VTU0lPTlsiY3RsbW1fZmlsdGVyX3ZpZGVvcyJdKSAmJiAkX1NFU1NJT05bImN0bG1tX2ZpbHRlcl92aWRlb3MiXSl7DQoJCQkJCSRjdXJfZmlsdGVyID0gJF9TRVNTSU9OWyJjdGxtbV9maWx0ZXJfdmlkZW9zIl07DQoJCQkJfQ0KCQkJCWlmKCRjdXJfZmlsdGVyICYmICRjdXJfZmlsdGVyICE9ICIiKXsNCgkJCQkJJGZpbHRlcm9wdGlvbnMgPSBhcnJheV9mbGlwKCR0aGlzLT5nZXRfb3B0aW9ucygiY2F0ZWdvcnkiKSk7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgPSBpc3NldCgkZmlsdGVyb3B0aW9uc1skcGFyYW1zWyJ2aWRlb3Nfc2hvd29ubHkiXV0pPyR0aGlzLT5MYW5nKCJzaG93aW5nb25seSIpLiRmaWx0ZXJvcHRpb25zWyRwYXJhbXNbInZpZGVvc19zaG93b25seSJdXS4iICI6IiI7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygic2hvd2FsbCIpLCBhcnJheSgiYWN0aXZlX3RhYiIgPT4gInZpZGVvcyIsICJ2aWRlb3Nfc2hvd29ubHkiPT5mYWxzZSkpOw0KCQkJCQkkd2hlcmVjbGF1c2UgPSBhcnJheSgicGFyZW50X2lkIj0+JHBhcmFtc1sidmlkZW9zX3Nob3dvbmx5Il0pOw0KCQkJCX1lbHNlewkJCQkJDQoJCQkJCWlmKCR1c2VfaGllcmFyY2h5KXsNCgkJCQkJCSRmaWx0ZXJvcHRpb25zID0gJHRoaXMtPmdldF9hZG1pbl9oaWVyYXJjaHlvcHRpb25zKCJ2aWRlb3MiLHRydWUpOw0KCQkJCQl9ZWxzZXsNCgkJCQkJCSRmaWx0ZXJvcHRpb25zID0gJHRoaXMtPmdldF9vcHRpb25zKCJjYXRlZ29yeSIpOw0KCQkJCQl9DQoJCQkJCSRmaWx0ZXJvdXRwdXQgPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCk7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgLj0gJHRoaXMtPkxhbmcoImZpbHRlcmJ5X2NhdGVnb3J5IikuIiA6ICI7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAidmlkZW9zX3Nob3dvbmx5IiwgJGZpbHRlcm9wdGlvbnMsIC0xKTsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiYWN0aXZlX3RhYiIsICJ2aWRlb3MiKTsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAiICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKTsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCQkJCX0NCgkJCX0NCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWx0ZXIiLCAkZmlsdGVyb3V0cHV0KTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpbnN0YW50c2VhcmNoIiwgJGluc3RhbnRzZWFyY2g/JHRoaXMtPkxhbmcoInNlYXJjaHRoaXN0YWJsZSIpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgInNlYXJjaHRhYmxlX3ZpZGVvcyIsICIiLCAxMCwgNjQsICcgb25rZXl1cD0iY3RsbW1fc2VhcmNoKHRoaXMudmFsdWUsXCd2aWRlb3NfdGFibGVcJyk7IicpOmZhbHNlKTsNCgkJCQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZG5ldyIsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImVkaXRCIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGRfdmlkZW9zIikpKTsNCgkJJHJlb3JkZXJfYnRuID0gZmFsc2U7DQoJCWlmKCRoYXNfYWR2YW5jZWRfcGVybSB8fCAhJHRoaXMtPkdldFByZWZlcmVuY2UoInJlc3RyaWN0X3Blcm1pc3Npb25zIixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigieW91dHViZXBsYXllcl9tYW5hZ2VfdmlkZW9zIikpCSRyZW9yZGVyX2J0biA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInJlb3JkZXIiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9yZW9yZGVyLmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJyZW9yZGVyIikpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInJlb3JkZXIiLCAkcmVvcmRlcl9idG4pOw0KCQkkbGltaXQgPSBmYWxzZTsNCgkJaWYoJGFkbWlucGFnZXMpew0KCQkJJGxpbWl0ID0gKChpc3NldCgkcGFyYW1zWyJ2aWRlb3NfcGFnZSJdKT8kcGFyYW1zWyJ2aWRlb3NfcGFnZSJdOjApICogJGFkbWlucGFnZXMpLiIsIi4kYWRtaW5wYWdlczsNCgkJfQ0KCQkNCgkJCSRpdGVtbGlzdCA9ICR0aGlzLT5nZXRfbGV2ZWxfdmlkZW9zKGlzc2V0KCR3aGVyZWNsYXVzZSk/JHdoZXJlY2xhdXNlOmFycmF5KCksdHJ1ZSwgJGlkLCAkcmV0dXJuaWQsIGZhbHNlLCAkbGltaXQpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0YWJsZWlkIiwgInZpZGVvc190YWJsZSIpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtbGlzdCIsICRpdGVtbGlzdCk7DQoJCQkkYWRtaW5zaG93ID0gYXJyYXkoDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIm5hbWUiKSwiZWRpdGxpbmsiLGZhbHNlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygiYWN0aXZlIiksInRvZ2dsZWFjdGl2ZSIsdHJ1ZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoImlzZGVmYXVsdCIpLCJ0b2dnbGVkZWZhdWx0Iix0cnVlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygicmVvcmRlciIpLCJtb3ZlbGlua3MiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksImRlbGV0ZWxpbmsiLHRydWUpCQkNCgkJCQkpOw0KCQkJaWYoJGluc3RhbnRzb3J0ICYmIGNvdW50KCRpdGVtbGlzdCk+MSl7DQoJCQkJJGkgPSAwOw0KCQkJCXdoaWxlKCRpPGNvdW50KCRhZG1pbnNob3cpKXsNCgkJCQkJaWYoISRhZG1pbnNob3dbJGldWzJdKQkkYWRtaW5zaG93WyRpXVswXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwndmlkZW9zX3RhYmxlXCcsJy4kaS4nKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfdXAuZ2lmIiBhbHQ9Il4iLz48L2E+PGJyLz48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCd2aWRlb3NfdGFibGVcJywnLiRpLicsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X2Rvd24uZ2lmIiBhbHQ9InYiLz48L2E+PC9kaXY+PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6IDI0cHg7Ij4gJm5ic3A7Jy4kYWRtaW5zaG93WyRpXVswXS4iPC9kaXY+IjsNCgkJCQkJJGkrKzsNCgkJCQl9DQoJCQl9DQoJCQlsaXN0KCRwYWdlaW5mbywgJG5leHRwYWdlLCAkcHJldmlvdXNwYWdlLCAkcGFnZXMpID0gJHRoaXMtPmFkbWluX3BhZ2luYXRlKCJ2aWRlb3MiLCRhZG1pbnBhZ2VzLCRpZCwkcmV0dXJuaWQsJHBhcmFtcyk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5leHRwYWdlIiwgJG5leHRwYWdlKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicHJldmlvdXNwYWdlIiwgJHByZXZpb3VzcGFnZSk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VpbmZvIiwgJHBhZ2VpbmZvKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZXMiLCAkcGFnZXMpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZG1pbnNob3ciLCAkYWRtaW5zaG93KTsNCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTsNCg0KCX1lbHNlew0KCQllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJlcnJvcl9ub3BhcmVudCIpLiI8L3A+IjsNCgl9DQoNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCg0KfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbihhcnJheSgibmV4dHBhZ2UiPT5mYWxzZSwicHJldmlvdXNwYWdlIj0+ZmFsc2UsInBhZ2VpbmZvIj0+ZmFsc2UsInBhZ2VzIj0+ZmFsc2UpKTsNCg0KCSR0aGlzLT5zbWFydHktPmFzc2lnbihhcnJheSgiZmlsdGVyIj0+ZmFsc2UsInJlb3JkZXIiPT5mYWxzZSwiaW5zdGFudHNlYXJjaCI9PmZhbHNlLCJ0YWJsZWlkIj0+ZmFsc2UpKTsNCg0KaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJNb2RpZnkgVGVtcGxhdGVzIikgfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfdGVtcGxhdGVzIixmYWxzZSkgKSB7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoInRlbXBsYXRlcyIpOw0KCQ0KICAgIGVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA2MDBweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoImRlZmF1bHR0ZW1wbGF0ZXMiKS4iPC9iPjwvbGVnZW5kPiI7DQogICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImNoYW5nZWRlZnRlbXBsYXRlcyIsICRyZXR1cm5pZCk7DQogICAgJHRlbXBsYXRlbGlzdCA9ICR0aGlzLT5MaXN0VGVtcGxhdGVzKCR0aGlzLT5HZXROYW1lKCkpOw0KICAgICRkZWZ0cGxzID0gJHRoaXMtPmdldERlZmF1bHRUZW1wbGF0ZXMoKTsNCiAgICAkdHBsb3B0aW9ucyA9IGFycmF5KCk7DQogICAgJGl0ZW1saXN0ID0gYXJyYXkoKTsNCiAgICBmb3JlYWNoKCR0ZW1wbGF0ZWxpc3QgYXMgJG9uZXRwbCl7DQoJICAgJHRwbG9wdGlvbnNbJG9uZXRwbF0gPSAkb25ldHBsOw0KCSAgICR0cGwgPSBuZXcgc3RkQ2xhc3MoKTsNCgkgICAkdHBsLT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICJlZGl0VGVtcGxhdGUiLCAkcmV0dXJuaWQsICRvbmV0cGwsIGFycmF5KCJ0cGxuYW1lIj0+JG9uZXRwbCkgKTsNCgkgICAkdHBsLT5kZWxldGVsaW5rID0gaW5fYXJyYXkoJG9uZXRwbCwgJGRlZnRwbHMpPyIiOiR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICJkZWxldGV0cGwiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiwgJHRoaXMtPkxhbmcoImRlbGV0ZSIpLCAiIiwgIiIsICJzeXN0ZW1pY29uIiksIGFycmF5KCJ0cGxuYW1lIj0+JG9uZXRwbCkgKTsNCgkgICBhcnJheV9wdXNoKCRpdGVtbGlzdCwgJHRwbCk7DQogICAgfQ0KDQoJICAgZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmdGVtcGxhdGVmb3IiKS4iIFwiY2F0ZWdvcnlcIjo8L3A+DQoJCQkgPHAgY2xhc3M9XCJwYWdlaW5wdXRcIj4iLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwibGlzdHRlbXBsYXRlX2NhdGVnb3J5IiwkdHBsb3B0aW9ucywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlX2NhdGVnb3J5IikpLiI8L3A+DQoJCTwvZGl2Pg0KICAgICI7DQoJICAgZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmdGVtcGxhdGVmb3IiKS4iIFwidmlkZW9zXCI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImxpc3R0ZW1wbGF0ZV92aWRlb3MiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfdmlkZW9zIikpLiI8L3A+DQoJCTwvZGl2Pg0KICAgICI7DQogICAgZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmZGV0YWlsdGVtcGxhdGUiKS4iOjwvcD4NCgkJCSA8cCBjbGFzcz1cInBhZ2VpbnB1dFwiPiIuJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJmaW5hbHRlbXBsYXRlIiwkdHBsb3B0aW9ucywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmluYWx0ZW1wbGF0ZSIpKS4iPC9wPg0KCQk8L2Rpdj4NCgkiOw0KCSR0cGxvcHRpb25zWyR0aGlzLT5MYW5nKCJ1c2VsZXZlbGxpc3R0cGwiKV0gPSAiKioiOw0KCWVjaG8gIgk8ZGl2IGNsYXNzPVwicGFnZW92ZXJmbG93XCI+DQoJCQkgPHAgY2xhc3M9XCJwYWdldGV4dFwiPiIuJHRoaXMtPkxhbmcoImRlZnNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIpLiI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIsJHRwbG9wdGlvbnMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIsIioqIikpLiI8L3A+DQoJCTwvZGl2Pg0KCSI7DQoJZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmZW1wdHl0ZW1wbGF0ZSIpLiI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImVtcHR5dGVtcGxhdGUiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlbXB0eXRlbXBsYXRlIiwiKioiKSkuIjwvcD4NCgkJPC9kaXY+DQogICAgPHA+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsNCiAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCiAgICBlY2hvICI8L2ZpZWxkc2V0Pjxici8+PGJyLz4iOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCAkaXRlbWxpc3QpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkbmV3IiwgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZWRpdFRlbXBsYXRlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGR0ZW1wbGF0ZSIpKSk7DQogICAgJGFkbWluc2hvdyA9IGFycmF5KAlhcnJheSgkdGhpcy0+TGFuZygidGVtcGxhdGUiKSwgImVkaXRsaW5rIiwgZmFsc2UpLCBhcnJheSgkdGhpcy0+TGFuZygiQWN0aW9ucyIpLCAiZGVsZXRlbGluayIsIGZhbHNlKQkpOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRtaW5zaG93IiwgJGFkbWluc2hvdyk7DQogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3F1ZXJpZXMiLGZhbHNlKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigicXVlcmllcyIpOw0KDQoJCSRpdGVtbGlzdCA9ICR0aGlzLT5nZXRfcXVlcmllcygkd2hlcmU9YXJyYXkoKSwgdHJ1ZSwgJGlkLCAkcmV0dXJuaWQpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwgJGl0ZW1saXN0PyRpdGVtbGlzdDphcnJheSgpKTsNCgkJJGFkbWluc2hvdyA9IGFycmF5KCBhcnJheSgiaWQiLCJpZCIpLA0KCQkJCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJuYW1lIiksICJuYW1lIiksDQoJCQkJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwgImFjdGlvbnMiKQ0KCQkJCQkJCSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRtaW5zaG93IiwgJGFkbWluc2hvdyk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkbmV3IiwgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiYWRtaW5xdWVyeSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIi4kdGhpcy0+TGFuZygiY3JlYXRlcXVlcnkiKSkpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImFkbWlucGFuZWwudHBsIik7DQoJCQ0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJwcmVmZXJlbmNlcyIpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJjaGFuZ2VwcmVmZXJlbmNlcyIsICRyZXR1cm5pZCk7DQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDQ2NXB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygicHJlZl90YWJkaXNwbGF5IikuIjo8L2I+PC9sZWdlbmQ+PHVsPg0KCSI7DQoJJHRhYmRpc3BsYXkgPSBhcnJheSgiY2F0ZWdvcnkiLCJ2aWRlb3MiLCJ0ZW1wbGF0ZXMiLCJxdWVyaWVzIik7DQoJZm9yZWFjaCgkdGFiZGlzcGxheSBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxsaT4iLiR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgInRhYmRpc3BsYXlfIi4kb25lcHJlZiwgdHJ1ZSwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfIi4kb25lcHJlZixmYWxzZSkpLiR0aGlzLT5MYW5nKCRvbmVwcmVmKS4iPC9saT4NCgkiOw0KCX0NCgllY2hvICI8L3VsPjxici8+PHA+Ii4kdGhpcy0+TGFuZygiaGVscF90YWJkaXNwbGF5IikuIjwvcD4NCjwvZmllbGRzZXQ+PGJyLz4NCiI7DQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDQ2NXB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygicHJlZl9zZWFyY2htb2R1bGVfaW5kZXgiKS4iOjwvYj48L2xlZ2VuZD48dWw+DQoJIjsNCglmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRvbmVwcmVmKXsNCgkJZWNobyAiPGxpPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAic2VhcmNobW9kdWxlX2luZGV4XyIuJG9uZXByZWYsIHRydWUsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfIi4kb25lcHJlZixmYWxzZSkpLiR0aGlzLT5MYW5nKCRvbmVwcmVmKS4iPC9saT4NCgkiOw0KCX0NCgllY2hvICI8L3VsPjxici8+PHA+Ii4kdGhpcy0+TGFuZygiaGVscF9zZWFyY2htb2R1bGVfaW5kZXgiKS4iPC9wPg0KPC9maWVsZHNldD48YnIvPg0KIjsNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNDY1cHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJwcmVmX25ld2l0ZW1zZmlyc3QiKS4iOjwvYj48L2xlZ2VuZD48dWw+DQoJIjsNCglmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRvbmVwcmVmKXsNCgkJZWNobyAiPGxpPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAibmV3aXRlbXNmaXJzdF8iLiRvbmVwcmVmLCB0cnVlLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF8iLiRvbmVwcmVmLGZhbHNlKSkuJHRoaXMtPkxhbmcoJG9uZXByZWYpLiI8L2xpPg0KCSI7DQoJfQ0KCWVjaG8gIjwvdWw+PGJyLz48cD4iLiR0aGlzLT5MYW5nKCJoZWxwX25ld2l0ZW1zZmlyc3QiKS4iPC9wPg0KPC9maWVsZHNldD48YnIvPg0KIjsNCg0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA0NjVweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoInByZWZfbGV2ZWxwYWdpbmF0aW9uIikuIjo8L2I+PC9sZWdlbmQ+PHVsPg0KCSI7DQoJZm9yZWFjaCgkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxsaT4iLiR0aGlzLT5MYW5nKCRvbmVwcmVmKS4iOiAiOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAkb25lcHJlZi4iX3BhZ2luYXRpb24iLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkb25lcHJlZi4iX3BhZ2luYXRpb24iLDApLCAxMiwgMykuIjwvbGk+DQoJIjsNCgl9DQoJZWNobyAiPC91bD48YnIvPjxwPiIuJHRoaXMtPkxhbmcoImhlbHBfbGV2ZWxwYWdpbmF0aW9uIikuIjwvcD4NCjwvZmllbGRzZXQ+PGJyLz4NCiI7DQoNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNjAwcHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJwcmVmZXJlbmNlcyIpLiI6PC9iPjwvbGVnZW5kPg0KCSI7DQoJJGNoZWNrYm94cHJlZnMgPSBhcnJheSgibG9hZF9uYmNoaWxkcmVuIiwibG9hZF9uZXh0cHJldmlvdXMiLCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsInVzZV9oaWVyYXJjaHkiLCJvcmRlcmJ5bmFtZSIsImRpc3BsYXlfZmlsdGVyIiwiZGlzcGxheV9pbnN0YW50c2VhcmNoIiwiZGlzcGxheV9pbnN0YW50c29ydCIsImVkaXRhYmxlX2FsaWFzZXMiLCJhdXRvaW5jcmVtZW50X2FsaWFzIiwiYWxsb3dfc3FsIiwiZm9yY2VfbGlzdCIsInNob3d0aHVtYm5haWxzIiwiZGVsZXRlX2ZpbGVzIiwiYWxsb3dfY29tcGxleF9vcmRlciIsInVzZV9zZXNzaW9uIik7DQoJZm9yZWFjaCgkY2hlY2tib3hwcmVmcyBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkb25lcHJlZiwgdHJ1ZSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJG9uZXByZWYsZmFsc2UpKS4iICIuJHRoaXMtPkxhbmcoInByZWZfIi4kb25lcHJlZikuIjwvcD4NCgkiOw0KCX0NCgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJwcmVmX2FkbWlucGFnZXMiKS4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgImFkbWlucGFnZXMiLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWRtaW5wYWdlcyIsMCksIDEyLCAzKS4iPC9wPg0KCSI7DQoJZWNobyAiPHA+Ii4kdGhpcy0+TGFuZygicHJlZl9tYXhzaG93bnBhZ2VzIikuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICJtYXhzaG93bnBhZ2VzIiwgJHRoaXMtPkdldFByZWZlcmVuY2UoIm1heHNob3ducGFnZXMiLDcpLCAxMiwgMikuIjwvcD4NCgkiOw0KCWVjaG8gIjwvZmllbGRzZXQ+PGJyLz48cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJzdWJtaXQiLCBsYW5nKCJzdWJtaXQiKSkuIjwvcD4iOw0KICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgllY2hvICI8YnIvPjxwPiIuJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIjsNCgllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImV4cG9ydCIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoImV4cG9ydF90aXRsZSIpKS4iIHwgIi4kdGhpcy0+Q3JlYXRlTGluaygkaWQsICJpbXBvcnQiLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJpbXBvcnRfdGl0bGUiKSkuIjwvcD4iOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.editA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkgfHwgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX2FkdmFuY2VkIikgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oInlvdXR1YmVwbGF5ZXJfbWFuYWdlX2NhdGVnb3J5IikpICl7DQoJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIiA9PiAiY2F0ZWdvcnkiKTsNCglpZighaXNzZXQoJHBhcmFtc1siY2FuY2VsIl0pKQkkbmV3cGFyYW1zWyJtb2R1bGVfbWVzc2FnZSJdID0gJHRoaXMtPkxhbmcoImVycm9yX2RlbmllZCIpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMpOw0KfQ0KDQokZGIgPSYgJHRoaXMtPkdldERiKCk7DQoNCg0KaWYoaXNzZXQoJHBhcmFtc1siQWlkIl0pKSB7DQoJLy8gaWYgd2UgYXJlIHdvcmtpbmcgb24gYW4gaXRlbSB0aGF0IGV4aXN0cywgd2UgbG9hZCBpdC4gV2UgbXVzdCBkbyB0aGlzIGV2ZW4gd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQsIG90aGVyd2lzZSB3ZSB3b24ndCBoYXZlIHRoZSBmaWxlIGZpZWxkcw0KCSRpdGVtcyA9ICR0aGlzLT5nZXRfbGV2ZWxfY2F0ZWdvcnkoYXJyYXkoImlkIj0+JHBhcmFtc1siQWlkIl0pKTsNCgkkaXRlbSA9ICRpdGVtc1swXTsNCn0NCg0KLy8gQ0hFQ0sgSUYgVEhFIEZPUk0gSVMgQkVJTkcgU1VCTUlUVEVEIDoNCi8vICh3ZSBtdXN0IGRldGVjdCBhbGwga2luZHMgb2Ygc3VibWl0IGJ1dHRvbnMsIGluY2x1ZGluZyBmaWxlcywgc2luY2UgaW5mb3JtYXRpb24gbXVzdCBiZSBzYXZlZCBiZWZvcmUgd2UgZ28gdG8gZmlsZSBzdWJtaXNzaW9uKQ0KaWYgKGlzc2V0KCRwYXJhbXNbInN1Ym1pdCJdKSB8fCANCglpc3NldCgkcGFyYW1zWyJhcHBseSJdKSANCgkpDQp7DQoJZGVidWdfYnVmZmVyKCJFZGl0IEZvcm0gaGFzIGJlZW4gc3VibWl0dGVkIi5fX0xJTkVfXyk7DQoNCgkvLyBSRVRSSUVWSU5HIFRIRSBGT1JNIFZBTFVFUyAoYW5kIGVzY2FwaW5nIGl0LCBpZiBuZWVkZWQpDQoJaWYoIWlzc2V0KCRpdGVtKSkgJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCglpZihpc3NldCgkcGFyYW1zWyJBaXRlbV9vcmRlciJdKSkgJGl0ZW0tPml0ZW1fb3JkZXIgPSAkcGFyYW1zWyJBaXRlbV9vcmRlciJdOw0KCSRpdGVtLT5kZXNjcmlwdGlvbiA9ICRwYXJhbXNbIkFkZXNjcmlwdGlvbiJdOw0KCQkkaXRlbS0+bmFtZSA9ICRwYXJhbXNbIkFuYW1lIl07DQoJCQ0KCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlZGl0YWJsZV9hbGlhc2VzIixmYWxzZSkpew0KCQlpZihpc3NldCgkcGFyYW1zWyJBYWxpYXMiXSkpew0KCQkJJHRtcGFsaWFzID0gJHRoaXMtPnBsY3JlYXRlYWxpYXModHJpbSgkcGFyYW1zWyJBYWxpYXMiXSkpOw0KCQkJJGl0ZW0tPmFsaWFzID0gJHRtcGFsaWFzID09ICIiPyR0aGlzLT5wbGNyZWF0ZWFsaWFzKCRpdGVtLT5uYW1lKTokdG1wYWxpYXM7DQoJCX1lbHNlew0KCQkJJGl0ZW0tPmFsaWFzID0gJHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOw0KCQl9DQoJfWVsc2V7DQoJCSRpdGVtLT5hbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKCRpdGVtLT5uYW1lKTsNCgl9DQoJDQoJJGF1dG9pbmNyZW1lbnRhbGlhcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJhdXRvaW5jcmVtZW50X2FsaWFzIixmYWxzZSk7DQoNCgkvLyBDSEVDSyBJRiBUSEUgTkVFREVEIFZBTFVFUyBBUkUgVEhFUkUNCglpZigJJGl0ZW0tPm5hbWUgPT0gIiINCgkJICkNCgl7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsNCgl9ZWxzZWlmKCEkYXV0b2luY3JlbWVudGFsaWFzICYmIGZhbHNlID09ICR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfeW91dHViZXBsYXllcl9jYXRlZ29yeSIsICRpdGVtLT5hbGlhcywgaXNzZXQoJHBhcmFtc1siQWlkIl0pPyRwYXJhbXNbIkFpZCJdOmZhbHNlKSl7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfeW91dHViZXBsYXllcl9jYXRlZ29yeSIsICR0bXBhbGlhcywgaXNzZXQoJHBhcmFtc1siQWlkIl0pPyRwYXJhbXNbIkFpZCJdOmZhbHNlKSl7DQoJCQkJJHRtcGFsaWFzID0gJGJhc2VhbGlhcy4iXyIuJGk7DQoJCQkJJGkrKzsNCgkJCX0NCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhczsNCgkJfQ0KDQoJCS8vIEZJRUxEUyBUTyBVUERBVEUNCgkJJHF1ZXJ5ID0gKGlzc2V0KCRpdGVtLT5pZCk/IlVQREFURSAiOiJJTlNFUlQgSU5UTyAiKS5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX2NhdGVnb3J5IFNFVCANCgkJCWRlc2NyaXB0aW9uPT8sDQoJCQluYW1lPT8sDQoJCWFsaWFzPT8sDQoJCWRhdGVfbW9kaWZpZWQ9PywNCgkJYWN0aXZlPSIuKGlzc2V0KCRpdGVtLT5hY3RpdmUpPyRpdGVtLT5hY3RpdmU6MSkuIiwNCgkJaXNkZWZhdWx0PSIuKGlzc2V0KCRpdGVtLT5pc2RlZmF1bHQpPyRpdGVtLT5pc2RlZmF1bHQ6MCkuIiI7DQoJCQkNCgkJLy8gVkFMVUVTDQoJCSR2YWx1ZXMgPSBhcnJheShhZGRzbGFzaGVzKCRpdGVtLT5kZXNjcmlwdGlvbiksDQoJCQlhZGRzbGFzaGVzKCRpdGVtLT5uYW1lKSwkaXRlbS0+YWxpYXMsc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSkpOw0KDQoJCWlmKGlzc2V0KCRpdGVtLT5pZCkpew0KCQkJJGV2ZW50ID0gInlvdXR1YmVwbGF5ZXJfbW9kaWZpZWQiOw0KCQkJJHF1ZXJ5IC49ICIgV0hFUkUgaWQ9PzsiOw0KCQkJYXJyYXlfcHVzaCgkdmFsdWVzLCRpdGVtLT5pZCk7DQoJCX1lbHNlew0KCQkJLy8gTkVXIElURU0NCgkJCSRxdWVyeSAuPSAiLCBkYXRlX2NyZWF0ZWQ9PyI7DQoJCQkkdmFsdWVzW10gPSBzdHJfcmVwbGFjZSgiJyIsIiIsJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpKTsNCgkJCSRldmVudCA9ICJ5b3V0dWJlcGxheWVyX2FkZGVkIjsNCgkJCS8vIGdldCBhIG5ldyBpZCBmcm9tIHRoZSBzZXF1ZW5jZSB0YWJsZQ0KCQkJJGl0ZW0tPmlkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX2NhdGVnb3J5X3NlcSIpOw0KCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoIm5ld2l0ZW1zZmlyc3RfY2F0ZWdvcnkiLGZhbHNlKSl7DQoJCQkJLy8gbmV3IGl0ZW1zIGdldCB0byB0aGUgdG9wIC0gc28gd2UgbXVzdCBwdXQgYWxsIG90aGVyIGl0ZW1zIGRvd24gZnJvbSBvbmUgc3RlcCwgYW5kIHRoZW4gc2V0IHRoaXMgaXRlbSdzIG9yZGVyIHRvIDENCgkJCQkkcXVlcnkyID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfY2F0ZWdvcnkgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkiOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkyKTsNCgkJCQkkcXVlcnkgLj0gIixpdGVtX29yZGVyPTEsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfWVsc2V7DQoJCQkJLy8gbmV3IGl0ZW1zIGdldCB0byB0aGUgYm90dG9tIC0gc28gd2UgbXVzdCBzZXQgdGhlIGl0ZW1fb3JkZXIgdG8gdGhlIG51bWJlciBvZiBpdGVtcyArIDENCgkJCQkkaXRlbV9vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygiY2F0ZWdvcnkiKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJCSRyZWRpcmVjdCA9IHRydWU7DQoJCS8vaWYobXlzcWxfYWZmZWN0ZWRfcm93cygpKXsJLy8gbXlzcWwtb25seQ0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X2NhdGVnb3J5IixmYWxzZSkpew0KCQkJCS8vIElGIEFOWVRISU5HIFdBUyBNT0RJRklFRCwgV0UgTVVTVCBVUERBVEUgVEhFIFNFQVJDSCBJTkRFWCBBTkQgU0VORCBBTiBFVkVOVC4uLg0KCQkJCWlmKGlzc2V0KCRldmVudCkpCSR0aGlzLT5TZW5kRXZlbnQoJGV2ZW50LCBhcnJheSgid2hhdCI9PiJjYXRlZ29yeSIsICJpdGVtaWQiID0+ICRpdGVtLT5pZCwgImFsaWFzIj0+JGl0ZW0tPmFsaWFzKSk7DQoJCQkJZGVidWdfYnVmZmVyKCJTRUFSSEMgSU5ERVggV0FTIFVQREFURUQgIi5fX0xJTkVfXyk7DQoJCQkJJG1vZHVsZSA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoIlNlYXJjaCIpOw0KCQkJCWlmKCRtb2R1bGUpIHsNCgkJCQkJJHRleHQgPSAiJGl0ZW0tPm5hbWUiOw0KCQkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJjYXRlZ29yeSIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCX1lbHNlaWYobXlzcWxfZXJyb3IoKSl7DQoJCQkvLyBkbyBub3QgcmVkaXJlY3QgOg0KCQkJJHJlZGlyZWN0ID0gZmFsc2U7DQoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKG15c3FsX2Vycm9yKCkpOw0KCQl9DQoNCgkJLy8gUkVESVJFQ1RJTkcuLi4NCgkJCWlmKCRyZWRpcmVjdCA9PSBmYWxzZSl7DQoJCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbImFwcGx5Il0pKXsNCgkJCQllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKTsNCgkJCX1lbHNlew0KCQkJCSRwYXJhbXMgPSBhcnJheSgibW9kdWxlX21lc3NhZ2UiID0+ICR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIiksICJhY3RpdmVfdGFiIj0+ImNhdGVnb3J5Iik7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJHBhcmFtcyk7CQ0KCQkJfQ0KCX0NCgkvLyBFTkQgT0YgRk9STSBTVUJNSVNTSU9ODQp9DQoNCg0KDQovKiAjIyBQUkVQQVJJTkcgU01BUlRZIEVMRU1FTlRTDQpDcmVhdGVJbnB1dFRleHQgOiAoaWQsbmFtZSx2YWx1ZSxzaXplLG1heGxlbmd0aCkNCkNyZWF0ZVRleHRBcmVhIDogKHd5c2l3eWcsaWQsdGV4dCxuYW1lKQ0KQ3JlYXRlSW5wdXRTZWxlY3RMaXN0IDogKGlkLG5hbWUsaXRlbXMsc2VsZWN0ZWRpdGVtcyxzaXplKQ0KQ3JlYXRlSW5wdXREcm9wZG93biA6IChpZCxuYW1lLGl0ZW1zLHNpbmRleCxzdmFsdWUpDQoqLw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImRlc2NyaXB0aW9uX2xhYmVsIiwgJHRoaXMtPkxhbmcoImNhdGVnb3J5X2Rlc2NyaXB0aW9uIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJkZXNjcmlwdGlvbl9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBZGVzY3JpcHRpb24iLGlzc2V0KCRpdGVtKT8kaXRlbS0+ZGVzY3JpcHRpb246IiIsNTAsMjU1KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5hbWVfbGFiZWwiLCAkdGhpcy0+TGFuZygibmFtZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBbmFtZSIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5uYW1lOiIiLDUwLDY0KSk7DQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZWRpdGFibGVfYWxpYXNlcyIsZmFsc2UpKXsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2xhYmVsIiwgJHRoaXMtPkxhbmcoImFsaWFzIikpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiQWFsaWFzIixpc3NldCgkaXRlbSk/JGl0ZW0tPmFsaWFzOiIiLDUwLDY0KSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtYWxpYXMiLGZhbHNlKTsNCn1lbHNlew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWFsaWFzIixpc3NldCgkaXRlbS0+YWxpYXMpPyIoYWxpYXMgOiAiLiRpdGVtLT5hbGlhcy4iKSI6ZmFsc2UpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfaW5wdXQiLCBmYWxzZSk7DQp9DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiZWRpdHRpdGxlIiwgJHRoaXMtPkxhbmcoImVkaXRfY2F0ZWdvcnkiKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigic3VibWl0IiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImFwcGx5IiwgKGlzc2V0KCRpdGVtKSAmJiBpc3NldCgkaXRlbS0+aWQpKT8kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiYXBwbHkiLCBsYW5nKCJhcHBseSIpKToiIik7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNhbmNlbCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJjYW5jZWwiLCBsYW5nKCJjYW5jZWwiKSkpOw0KDQoNCi8vIERJU1BMQVlJTkcNCmlmKGlzc2V0KCRpdGVtKSAmJiBpc3NldCgkaXRlbS0+aWQpKXsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImVkaXRBIiwgJHJldHVybmlkKTsNCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJlZGl0QS50cGwiKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiQWlkIiwgJGl0ZW0tPmlkKTsNCgkJaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5wYXJlbnQpKSBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJvbGRwYXJlbnQiLCAkaXRlbS0+cGFyZW50KTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiQWl0ZW1fb3JkZXIiLCAkaXRlbS0+aXRlbV9vcmRlcik7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgkNCg0KfWVsc2V7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImVkaXRBIiwgJHJldHVybmlkKTsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImVkaXRBLnRwbCIpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/action.editB.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkgfHwgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX2FkdmFuY2VkIikgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oInlvdXR1YmVwbGF5ZXJfbWFuYWdlX3ZpZGVvcyIpKSApew0KCSRuZXdwYXJhbXMgPSBhcnJheSgiYWN0aXZlX3RhYiIgPT4gInZpZGVvcyIpOw0KCWlmKCFpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkpCSRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlIl0gPSAkdGhpcy0+TGFuZygiZXJyb3JfZGVuaWVkIik7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQp9DQoNCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCg0KaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoInVzZV9oaWVyYXJjaHkiLGZhbHNlKSl7DQoJJHBhcmVudG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2FkbWluX2hpZXJhcmNoeW9wdGlvbnMoInZpZGVvcyIsZmFsc2UpOw0KfWVsc2V7DQoJJHBhcmVudG9wdGlvbnMgPSAkdGhpcy0+Z2V0X29wdGlvbnMoImNhdGVnb3J5Iik7DQp9DQoNCmlmKGlzc2V0KCRwYXJhbXNbIkJpZCJdKSkgew0KCS8vIGlmIHdlIGFyZSB3b3JraW5nIG9uIGFuIGl0ZW0gdGhhdCBleGlzdHMsIHdlIGxvYWQgaXQuIFdlIG11c3QgZG8gdGhpcyBldmVuIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkLCBvdGhlcndpc2Ugd2Ugd29uJ3QgaGF2ZSB0aGUgZmlsZSBmaWVsZHMNCgkkaXRlbXMgPSAkdGhpcy0+Z2V0X2xldmVsX3ZpZGVvcyhhcnJheSgiaWQiPT4kcGFyYW1zWyJCaWQiXSkpOw0KCSRpdGVtID0gJGl0ZW1zWzBdOw0KfQ0KDQovLyBDSEVDSyBJRiBUSEUgRk9STSBJUyBCRUlORyBTVUJNSVRURUQgOg0KLy8gKHdlIG11c3QgZGV0ZWN0IGFsbCBraW5kcyBvZiBzdWJtaXQgYnV0dG9ucywgaW5jbHVkaW5nIGZpbGVzLCBzaW5jZSBpbmZvcm1hdGlvbiBtdXN0IGJlIHNhdmVkIGJlZm9yZSB3ZSBnbyB0byBmaWxlIHN1Ym1pc3Npb24pDQppZiAoaXNzZXQoJHBhcmFtc1sic3VibWl0Il0pIHx8IA0KCWlzc2V0KCRwYXJhbXNbImFwcGx5Il0pIA0KCSkNCnsNCglkZWJ1Z19idWZmZXIoIkVkaXQgRm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQiLl9fTElORV9fKTsNCg0KCS8vIFJFVFJJRVZJTkcgVEhFIEZPUk0gVkFMVUVTIChhbmQgZXNjYXBpbmcgaXQsIGlmIG5lZWRlZCkNCglpZighaXNzZXQoJGl0ZW0pKSAkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCWlmKGlzc2V0KCRwYXJhbXNbIkJpdGVtX29yZGVyIl0pKSAkaXRlbS0+aXRlbV9vcmRlciA9ICRwYXJhbXNbIkJpdGVtX29yZGVyIl07DQoJJGl0ZW0tPnZpZGVvaWQgPSAkcGFyYW1zWyJCdmlkZW9pZCJdOw0KCQkkaXRlbS0+ZGVzY3JpcHRpb24gPSAkcGFyYW1zWyJCZGVzY3JpcHRpb24iXTsNCgkJJGl0ZW0tPnBhcmVudCA9ICRwYXJhbXNbIkJwYXJlbnQiXTsNCgkJJGl0ZW0tPm5hbWUgPSAkcGFyYW1zWyJCbmFtZSJdOw0KCQkNCglpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZWRpdGFibGVfYWxpYXNlcyIsZmFsc2UpKXsNCgkJaWYoaXNzZXQoJHBhcmFtc1siQmFsaWFzIl0pKXsNCgkJCSR0bXBhbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKHRyaW0oJHBhcmFtc1siQmFsaWFzIl0pKTsNCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhcyA9PSAiIj8kdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk6JHRtcGFsaWFzOw0KCQl9ZWxzZXsNCgkJCSRpdGVtLT5hbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKCRpdGVtLT5uYW1lKTsNCgkJfQ0KCX1lbHNlew0KCQkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJfQ0KCQ0KCSRhdXRvaW5jcmVtZW50YWxpYXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYXV0b2luY3JlbWVudF9hbGlhcyIsZmFsc2UpOw0KDQoJLy8gQ0hFQ0sgSUYgVEhFIE5FRURFRCBWQUxVRVMgQVJFIFRIRVJFDQoJaWYoCSRpdGVtLT52aWRlb2lkID09ICIiDQoJCSB8fCAkaXRlbS0+ZGVzY3JpcHRpb24gPT0gIiINCgkJIHx8ICRpdGVtLT5uYW1lID09ICIiDQoJCSApDQoJew0KCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJlcnJvcl9taXNzZ2ludmFsdWUiKSk7DQoJfWVsc2VpZighJGF1dG9pbmNyZW1lbnRhbGlhcyAmJiBmYWxzZSA9PSAkdGhpcy0+Y2hlY2thbGlhcygibW9kdWxlX3lvdXR1YmVwbGF5ZXJfdmlkZW9zIiwgJGl0ZW0tPmFsaWFzLCBpc3NldCgkcGFyYW1zWyJCaWQiXSk/JHBhcmFtc1siQmlkIl06ZmFsc2UpKXsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfYWxyZWFkeWV4aXN0cyIpKTsNCgl9ZWxzZXsNCgkJIyMjIyMjIyMjIyMjIERPSU5HIFRIRSBVUERBVEUNCg0KCQlpZigkYXV0b2luY3JlbWVudGFsaWFzKXsNCgkJCSRiYXNlYWxpYXMgPSAkaXRlbS0+YWxpYXM7DQoJCQkkdG1wYWxpYXMgPSAkaXRlbS0+YWxpYXM7DQoJCQkkaSA9IDE7DQoJCQl3aGlsZSghJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV95b3V0dWJlcGxheWVyX3ZpZGVvcyIsICR0bXBhbGlhcywgaXNzZXQoJHBhcmFtc1siQmlkIl0pPyRwYXJhbXNbIkJpZCJdOmZhbHNlKSl7DQoJCQkJJHRtcGFsaWFzID0gJGJhc2VhbGlhcy4iXyIuJGk7DQoJCQkJJGkrKzsNCgkJCX0NCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhczsNCgkJfQ0KDQoJCS8vIEZJRUxEUyBUTyBVUERBVEUNCgkJJHF1ZXJ5ID0gKGlzc2V0KCRpdGVtLT5pZCk/IlVQREFURSAiOiJJTlNFUlQgSU5UTyAiKS5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3ZpZGVvcyBTRVQgDQoJCQl2aWRlb2lkPT8sDQoJCQlkZXNjcmlwdGlvbj0/LA0KCQkJcGFyZW50PT8sDQoJCQluYW1lPT8sDQoJCWFsaWFzPT8sDQoJCWRhdGVfbW9kaWZpZWQ9PywNCgkJYWN0aXZlPSIuKGlzc2V0KCRpdGVtLT5hY3RpdmUpPyRpdGVtLT5hY3RpdmU6MSkuIiwNCgkJaXNkZWZhdWx0PSIuKGlzc2V0KCRpdGVtLT5pc2RlZmF1bHQpPyRpdGVtLT5pc2RlZmF1bHQ6MCkuIiI7DQoJCQkNCgkJLy8gVkFMVUVTDQoJCSR2YWx1ZXMgPSBhcnJheShhZGRzbGFzaGVzKCRpdGVtLT52aWRlb2lkKSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPmRlc2NyaXB0aW9uKSwNCgkJCSRpdGVtLT5wYXJlbnQsDQoJCQlhZGRzbGFzaGVzKCRpdGVtLT5uYW1lKSwkaXRlbS0+YWxpYXMsc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSkpOw0KDQoJCWlmKGlzc2V0KCRpdGVtLT5pZCkpew0KCQkJJGV2ZW50ID0gInlvdXR1YmVwbGF5ZXJfbW9kaWZpZWQiOw0KCQkJJHF1ZXJ5IC49ICIgV0hFUkUgaWQ9PzsiOw0KCQkJYXJyYXlfcHVzaCgkdmFsdWVzLCRpdGVtLT5pZCk7DQoJCX1lbHNlew0KCQkJLy8gTkVXIElURU0NCgkJCSRxdWVyeSAuPSAiLCBkYXRlX2NyZWF0ZWQ9PyI7DQoJCQkkdmFsdWVzW10gPSBzdHJfcmVwbGFjZSgiJyIsIiIsJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpKTsNCgkJCSRldmVudCA9ICJ5b3V0dWJlcGxheWVyX2FkZGVkIjsNCgkJCS8vIGdldCBhIG5ldyBpZCBmcm9tIHRoZSBzZXF1ZW5jZSB0YWJsZQ0KCQkJJGl0ZW0tPmlkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3ZpZGVvc19zZXEiKTsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJuZXdpdGVtc2ZpcnN0X3ZpZGVvcyIsZmFsc2UpKXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3AgLSBzbyB3ZSBtdXN0IHB1dCBhbGwgb3RoZXIgaXRlbXMgZG93biBmcm9tIG9uZSBzdGVwLCBhbmQgdGhlbiBzZXQgdGhpcyBpdGVtJ3Mgb3JkZXIgdG8gMQ0KCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl92aWRlb3MgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgcGFyZW50PT8iOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkaXRlbS0+cGFyZW50KSk7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0xLCBpZD0iLiRpdGVtLT5pZDsNCgkJCX1lbHNlew0KCQkJCS8vIG5ldyBpdGVtcyBnZXQgdG8gdGhlIGJvdHRvbSAtIHNvIHdlIG11c3Qgc2V0IHRoZSBpdGVtX29yZGVyIHRvIHRoZSBudW1iZXIgb2YgaXRlbXMgKyAxDQoJCQkJJGl0ZW1fb3JkZXIgPSAkdGhpcy0+Y291bnRzb21ldGhpbmcoInZpZGVvcyIsImlkIixhcnJheSgicGFyZW50Ij0+JGl0ZW0tPnBhcmVudCkpICsgMTsNCgkJCQkkcXVlcnkgLj0gIixpdGVtX29yZGVyPSIuJGl0ZW1fb3JkZXIuIiwgaWQ9Ii4kaXRlbS0+aWQ7DQoJCQl9DQoJCX0NCgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHZhbHVlcyk7DQoNCglpZihpc3NldCgkcGFyYW1zWyJvbGRwYXJlbnQiXSkgJiYgJHBhcmFtc1sib2xkcGFyZW50Il0gIT0gJGl0ZW0tPnBhcmVudCl7DQoJCS8vIHRoZSBpdGVtIGlzIGNoYW5naW5nIHBhcmVudCwgYW5kIHdlJ3JlIG9yZGVyaW5nIGJ5IHBhcmVudHMNCgkJDQoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJuZXdpdGVtc2ZpcnN0X3ZpZGVvcyIsZmFsc2UpKXsNCgkJCS8vIG5ldyBpdGVtcyBnZXQgdG8gdGhlIHRvcA0KCQkJDQoJCQkvLyBVUERBVEUgVEhFIE9SREVSIE9GIFRIRSBJVEVNUyBXSVRIIFRIRSBPTEQgUEFSRU5UDQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl92aWRlb3MgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA+ID8gQU5EIHBhcmVudD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkcGFyYW1zWyJvbGRwYXJlbnQiXSkpOw0KCQkJLy8gR0VUIE5FVyBJVEVNIE9SREVSDQoJCQkkaXRlbS0+aXRlbV9vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygidmlkZW9zIiwiaWQiLGFycmF5KCJwYXJlbnQiPT4kaXRlbS0+cGFyZW50KSkgKyAxOw0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfdmlkZW9zIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoNCgkJfWVsc2V7DQoNCgkJCS8vIFVQREFURSBUSEUgT1JERVIgT0YgVEhFIElURU1TIFdJVEggVEhFIE9MRCBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3ZpZGVvcyBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID4gPyBBTkQgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPml0ZW1fb3JkZXIsICRwYXJhbXNbIm9sZHBhcmVudCJdKSk7DQoJCQkvLyBVUERBVEUgTkVXIFBBUkVOVA0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfdmlkZW9zIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIHBhcmVudD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5wYXJlbnQpKTsNCgkJCS8vIEdFVCBORVcgSVRFTSBPUkRFUg0KCQkJJGl0ZW0tPml0ZW1fb3JkZXIgPSAxOw0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfdmlkZW9zIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoJCQ0KCQl9DQoJfQ0KDQoJCSRyZWRpcmVjdCA9IHRydWU7DQoJCS8vaWYobXlzcWxfYWZmZWN0ZWRfcm93cygpKXsJLy8gbXlzcWwtb25seQ0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X3ZpZGVvcyIsZmFsc2UpKXsNCgkJCQkvLyBJRiBBTllUSElORyBXQVMgTU9ESUZJRUQsIFdFIE1VU1QgVVBEQVRFIFRIRSBTRUFSQ0ggSU5ERVggQU5EIFNFTkQgQU4gRVZFTlQuLi4NCgkJCQlpZihpc3NldCgkZXZlbnQpKQkkdGhpcy0+U2VuZEV2ZW50KCRldmVudCwgYXJyYXkoIndoYXQiPT4idmlkZW9zIiwgIml0ZW1pZCIgPT4gJGl0ZW0tPmlkLCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpKTsNCgkJCQlkZWJ1Z19idWZmZXIoIlNFQVJIQyBJTkRFWCBXQVMgVVBEQVRFRCAiLl9fTElORV9fKTsNCgkJCQkkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgiU2VhcmNoIik7DQoJCQkJaWYoJG1vZHVsZSkgew0KCQkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgInZpZGVvcyIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCX1lbHNlaWYobXlzcWxfZXJyb3IoKSl7DQoJCQkvLyBkbyBub3QgcmVkaXJlY3QgOg0KCQkJJHJlZGlyZWN0ID0gZmFsc2U7DQoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKG15c3FsX2Vycm9yKCkpOw0KCQl9DQoNCgkJLy8gUkVESVJFQ1RJTkcuLi4NCgkJCWlmKCRyZWRpcmVjdCA9PSBmYWxzZSl7DQoJCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbImFwcGx5Il0pKXsNCgkJCQllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKTsNCgkJCX1lbHNlew0KCQkJCSRwYXJhbXMgPSBhcnJheSgibW9kdWxlX21lc3NhZ2UiID0+ICR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIiksICJhY3RpdmVfdGFiIj0+InZpZGVvcyIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRwYXJhbXMpOwkNCgkJCX0NCgl9DQoJLy8gRU5EIE9GIEZPUk0gU1VCTUlTU0lPTg0KfQ0KDQoNCg0KLyogIyMgUFJFUEFSSU5HIFNNQVJUWSBFTEVNRU5UUw0KQ3JlYXRlSW5wdXRUZXh0IDogKGlkLG5hbWUsdmFsdWUsc2l6ZSxtYXhsZW5ndGgpDQpDcmVhdGVUZXh0QXJlYSA6ICh3eXNpd3lnLGlkLHRleHQsbmFtZSkNCkNyZWF0ZUlucHV0U2VsZWN0TGlzdCA6IChpZCxuYW1lLGl0ZW1zLHNlbGVjdGVkaXRlbXMsc2l6ZSkNCkNyZWF0ZUlucHV0RHJvcGRvd24gOiAoaWQsbmFtZSxpdGVtcyxzaW5kZXgsc3ZhbHVlKQ0KKi8NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ2aWRlb2lkX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZpZGVvc192aWRlb2lkIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ2aWRlb2lkX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkJ2aWRlb2lkIixpc3NldCgkaXRlbSk/JGl0ZW0tPnZpZGVvaWQ6IiIsNTAsMjU1KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImRlc2NyaXB0aW9uX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZpZGVvc19kZXNjcmlwdGlvbiIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiZGVzY3JpcHRpb25faW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiQmRlc2NyaXB0aW9uIixpc3NldCgkaXRlbSk/JGl0ZW0tPmRlc2NyaXB0aW9uOiIiLDUwLDI1NSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJuYW1lX2xhYmVsIiwgJHRoaXMtPkxhbmcoIm5hbWUiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5hbWVfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiQm5hbWUiLGlzc2V0KCRpdGVtKT8kaXRlbS0+bmFtZToiIiw1MCw2NCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRfbGFiZWwiLCAkdGhpcy0+TGFuZygiY2F0ZWdvcnkiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiQnBhcmVudCIsJHBhcmVudG9wdGlvbnMsLTEsaXNzZXQoJGl0ZW0pPyRpdGVtLT5wYXJlbnQ6MCkpO2lmKGlzc2V0KCRpdGVtKSkgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImVkaXRhYmxlX2FsaWFzZXMiLGZhbHNlKSl7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19sYWJlbCIsICR0aGlzLT5MYW5nKCJhbGlhcyIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkJhbGlhcyIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5hbGlhczoiIiw1MCw2NCkpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWFsaWFzIixmYWxzZSk7DQp9ZWxzZXsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsaXNzZXQoJGl0ZW0tPmFsaWFzKT8iKGFsaWFzIDogIi4kaXRlbS0+YWxpYXMuIikiOmZhbHNlKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2lucHV0IiwgZmFsc2UpOw0KfQ0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImVkaXR0aXRsZSIsICR0aGlzLT5MYW5nKCJlZGl0X3ZpZGVvcyIpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiYXBwbHkiLCAoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpPyR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJhcHBseSIsIGxhbmcoImFwcGx5IikpOiIiKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FuY2VsIiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImNhbmNlbCIsIGxhbmcoImNhbmNlbCIpKSk7DQoNCg0KLy8gRElTUExBWUlORw0KaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpew0KCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImVkaXRCLnRwbCIpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJCaWQiLCAkaXRlbS0+aWQpOw0KCQlpZihpc3NldCgkaXRlbSkgJiYgaXNzZXQoJGl0ZW0tPnBhcmVudCkpIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJCaXRlbV9vcmRlciIsICRpdGVtLT5pdGVtX29yZGVyKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCQ0KDQp9ZWxzZXsNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQpOw0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiZWRpdEIudHBsIik7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.editTemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInPT4ndGVtcGxhdGVzJykgKTsKCiR0cGxjb250ZW50ID0gJyc7CmlmKCAoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydhcHBseSddKSApICYmIGlzc2V0KCRwYXJhbXNbJ3RwbG5hbWUnXSkgKXsKCWlmKCRwYXJhbXNbJ3RwbG5hbWUnXSAhPSAnJyl7CgkJaWYoaXNzZXQoJHBhcmFtc1snaXNuZXcnXSkpCSRwYXJhbXNbJ3RwbG5hbWUnXSA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1sndHBsbmFtZSddLCBmYWxzZSk7CgkJJHRwbGNvbnRlbnQgPSAkcGFyYW1zWyd0cGxjb250ZW50J107CgkJaWYoJHRoaXMtPlNldFRlbXBsYXRlKCRwYXJhbXNbJ3RwbG5hbWUnXSwkcGFyYW1zWyd0cGxjb250ZW50J10sJHRoaXMtPkdldE5hbWUoKSkpOwoJCWlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSl7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCJtb2R1bGVfbWVzc2FnZSIgPT4gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSwgJ2FjdGl2ZV90YWInPT4ndGVtcGxhdGVzJykgKTsKCQl9ZWxzZXsKCQkJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSk7CgkJfQoJfWVsc2V7CgkJZWNobyAnPGRpdiBjbGFzcz0icGFnZWVycm9yY29udGFpbmVyIj4nLiR0aGlzLT5MYW5nKCdlcnJvcl9taXNzZ2ludmFsdWUnKS4nPC9kaXY+JzsKCX0KfWVsc2VpZiggaXNzZXQoJHBhcmFtc1sndHBsbmFtZSddKSApewoJJHRwbGNvbnRlbnQgPSAkdGhpcy0+R2V0VGVtcGxhdGUoICRwYXJhbXNbJ3RwbG5hbWUnXSwgJHRoaXMtPkdldE5hbWUoKSApOwp9CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigidGVtcGxhdGUiLCAkdGhpcy0+TGFuZygidGVtcGxhdGUiKSwgdHJ1ZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoImhlbHB0YWIiLCAkdGhpcy0+TGFuZygidGVtcGxhdGV2YXJzIiksIGZhbHNlKTsJCQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYigidGVtcGxhdGUiKTsKCQllY2hvICc8aDE+Jy4kdGhpcy0+TGFuZygiZWRpdHRlbXBsYXRlIikuJzwvaDE+JzsKCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdFRlbXBsYXRlIiwgJHJldHVybmlkKTsKCQkvL2VjaG8gJzxwPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImFwcGx5IiwgbGFuZygiYXBwbHkiKSkuJyAnLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJjYW5jZWwiLCBsYW5nKCJjYW5jZWwiKSkuJzwvcD48YnIvPjxici8+JzsKCQllY2hvICcJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+TGFuZygnbmFtZScpLicgOjwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CgkJaWYoaXNzZXQoJHBhcmFtc1sndHBsbmFtZSddKSAmJiAkcGFyYW1zWyd0cGxuYW1lJ10gIT0gJycpewoJCSAgICBlY2hvICRwYXJhbXNbJ3RwbG5hbWUnXS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAidHBsbmFtZSIsICRwYXJhbXNbJ3RwbG5hbWUnXSk7CgkJfWVsc2V7CgkJICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3RwbG5hbWUnLCcnLDMwLDY0KTsKCQl9CgkJZWNobyAnPC9wPgoJCSAgICA8L2Rpdj4KCQknOwoJCWVjaG8gJwk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5MYW5nKCd0ZW1wbGF0ZScpLicgOjwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkdHBsY29udGVudCwndHBsY29udGVudCcpLic8L3A+CgkJICAgIDwvZGl2PgoJCSc7CgkJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLicgJy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiYXBwbHkiLCBsYW5nKCJhcHBseSIpKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImNhbmNlbCIsIGxhbmcoImNhbmNlbCIpKS4nPC9wPic7CgkJaWYoIWlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgfHwgJHBhcmFtc1sidHBsbmFtZSJdID09ICcnKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJpc25ldyIsICJ5ZXMiKTsKCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYigiaGVscHRhYiIpOwoJCWVjaG8gJzxkaXYgaWQ9InRlbXBsYXRlaGVscCI+Jy4kdGhpcy0+TGFuZygndGVtcGxhdGVoZWxwJykuJzwvZGl2Pic7CgkJZWNobyAnCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWZ1bmN0aW9uIGN0bG1tX2Rpc3BsYXl0b2dnbGUoZWxlKXsKCQlpZighZWxlIHx8ICFlbGUucGFyZW50Tm9kZSkJcmV0dXJuIGZhbHNlOwoJCXZhciB0aGVkaXYgPSBlbGUucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2IilbMF07CgkJaWYoIXRoZWRpdikJcmV0dXJuIGZhbHNlOwoJCWlmKHRoZWRpdi5zdHlsZS5kaXNwbGF5ID09ICJub25lIil7CgkJCXRoZWRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCQkJZWxlLmlubmVySFRNTCA9ICJWIiArIGVsZS5pbm5lckhUTUwuc3Vic3RyKDQpOwoJCX1lbHNlewoJCQl0aGVkaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCQkJZWxlLmlubmVySFRNTCA9ICImZ3Q7IiArIGVsZS5pbm5lckhUTUwuc3Vic3RyKDEpOwoJCX0KCX0KCXZhciB0aGVkaXZzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlbXBsYXRlaGVscCIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKTsKCWZvcihpPTA7aTx0aGVkaXZzLmxlbmd0aDtpKyspewoJCWlmKHRoZWRpdnNbaV0uY2xhc3NOYW1lID09ICJ0cGx2YXJzX2hpZGUiKQl0aGVkaXZzW2ldLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cgl9Cjwvc2NyaXB0PgonOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.export.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkJZXhpdDsKCmlmKGlzc2V0KCRwYXJhbXNbJ2RvZXhwb3J0J10pKXsKCQoJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCgkkb3V0cHV0ID0gJyc7Cglmb3JlYWNoKCRwYXJhbXNbJ3NlbGVjdGVkbGV2ZWxzJ10gYXMgJGxldmVsKXsKCQkkb3V0cHV0IC49ICcKPHRhYmxlIG5hbWU9IicuJGxldmVsLiciPgoJJzsKCQkKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJGxldmVsOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCXdoaWxlICggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CgkJCSRvdXRwdXQgLj0gIjxpdGVtPgoJCSI7CgkJCWZvcmVhY2goJHJvdyBhcyAkZmllbGQ9PiR2YWx1ZSl7CgkJCQkkb3V0cHV0IC49ICc8Jy4kZmllbGQuJz48IVtDREFUQVsnLnN0cmlwc2xhc2hlcygkdmFsdWUpLiddXT48LycuJGZpZWxkLic+CgkJJzsKCQkJfQoJCQkkb3V0cHV0IC49ICIKCTwvaXRlbT4KCSI7CgkJfQoJCSRvdXRwdXQgLj0gIgo8L3RhYmxlPgoKIjsKCX0KCgoKCS8vIGV4cG9ydGluZyBtdWx0aXBsZSBmaWxlIGZpZWxkcyAoaWYgYW55KQoJCSR0bXBvdXRwdXQgPSAnJzsKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX211bHRpcGxlZmlsZXNmaWVsZHMiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCXdoaWxlICggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CgkJCSR0bXBvdXRwdXQgLj0gJzxpdGVtPgoJCSc7CgkJCWZvcmVhY2goJHJvdyBhcyAkZmllbGQ9PiR2YWx1ZSl7CgkJCQkkdG1wb3V0cHV0IC49ICc8Jy4kZmllbGQuJz48IVtDREFUQVsnLnN0cmlwc2xhc2hlcygkdmFsdWUpLiddXT48LycuJGZpZWxkLic+CgkJJzsKCQkJfQoJCQkkdG1wb3V0cHV0IC49ICcKCTwvaXRlbT4KCSc7CgkJfQoJCQoJCWlmKCR0bXBvdXRwdXQgIT0gJycpCSRvdXRwdXQgLj0gJwo8dGFibGUgbmFtZT0ibXVsdGlwbGVmaWxlc2ZpZWxkcyI+CgknLiR0bXBvdXRwdXQuJwo8L3RhYmxlPgoKJzsKCgoKCS8vIGV4cG9ydGluZyBsaXN0b3B0aW9ucyAoaWYgYW55KQoJCSR0bXBvdXRwdXQgPSAnJzsKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX2ZpZWxkb3B0aW9ucyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJd2hpbGUgKCAkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApIHsKCQkJJHRtcG91dHB1dCAuPSAnPGl0ZW0+CgkJJzsKCQkJZm9yZWFjaCgkcm93IGFzICRmaWVsZD0+JHZhbHVlKXsKCQkJCSR0bXBvdXRwdXQgLj0gJzwnLiRmaWVsZC4nPjwhW0NEQVRBWycuc3RyaXBzbGFzaGVzKCR2YWx1ZSkuJ11dPjwvJy4kZmllbGQuJz4KCQknOwoJCQl9CgkJCSR0bXBvdXRwdXQgLj0gJwoJPC9pdGVtPgoJJzsKCQl9CgkJCgkJaWYoJHRtcG91dHB1dCAhPSAnJykJJG91dHB1dCAuPSAnCjx0YWJsZSBuYW1lPSJmaWVsZG9wdGlvbnMiPgoJJy4kdG1wb3V0cHV0LicKPC90YWJsZT4KCic7CgoKCgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2V4cG9ydF90ZW1wbGF0ZXMnXSkgJiYgJHBhcmFtc1snZXhwb3J0X3RlbXBsYXRlcyddKXsKCQlmb3JlYWNoKCR0aGlzLT5MaXN0VGVtcGxhdGVzKCkgYXMgJHRwbG5hbWUpewoJCQkkb3V0cHV0IC49ICcKPHRlbXBsYXRlIG5hbWU9IicuJHRwbG5hbWUuJyI+PCFbQ0RBVEFbJy4kdGhpcy0+R2V0VGVtcGxhdGUoJHRwbG5hbWUpLiddXT48L3RlbXBsYXRlPgonOwoJCX0KCX0KCQoJaWYoJG91dHB1dCA9PSAnJyl7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2V4cG9ydCcsICRyZXR1cm5pZCk7Cgl9ZWxzZXsKCQkkb3V0cHV0ID0gIjxyb290PiIuJG91dHB1dC4iPC9yb290PiI7CgkJCgkJJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOyAKCQlmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQkJCgoJCWhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKCQloZWFkZXIoJ0V4cGlyZXM6IDAnKTsKCQloZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCcpOwoJCWhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwoJCWhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOwoJCWhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94bWwnKTsKCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInLiR0aGlzLT5HZXROYW1lKCkuJy54bWwiJyApOwoJCWhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBzdHJsZW4oJG91dHB1dCkpOwoJCgkJcHJpbnQoJG91dHB1dCk7CgkKCQlAZmx1c2goKTsgQG9iX2ZsdXNoKCk7IEBvYl9mbHVzaCgpOwoJfQkKCn1lbHNlewoJCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZXhwb3J0IiwgJHJldHVybmlkKTsKCWVjaG8gJzxoMz4nLiR0aGlzLT5MYW5nKCdleHBvcnRfdGl0bGUnKS4nPC9oMz4nOwoJZWNobyAnPGZpZWxkc2V0PjxsZWdlbmQ+PGI+Jy4kdGhpcy0+TGFuZygnZXhwb3J0d2hpY2hsZXZlbHMnKS4nPC9iPjwvbGVnZW5kPic7CgkkY2hvaWNlcyA9IGFycmF5KCk7Cglmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRsZXZlbCkJJGNob2ljZXNbJGxldmVsXSA9ICRsZXZlbDsKCWVjaG8gJHRoaXMtPkRvQ2hlY2tib3hlcygkaWQsICdzZWxlY3RlZGxldmVscycsICRjaG9pY2VzLCAkY2hvaWNlcykuJzwvZmllbGRzZXQ+PGJyLz4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImV4cG9ydF90ZW1wbGF0ZXMiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdleHBvcnRfdGVtcGxhdGVzJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZG9leHBvcnQiLCBsYW5nKCJzdWJtaXQiKSkuJzwvcD4nOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwkKCQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkJZXhpdDsKCmVjaG8gJzxoMz4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfdGl0bGUnKS4nPC9oMz4nOwoKaWYoaXNzZXQoJF9GSUxFUykgJiYgaXNzZXQoJF9GSUxFU1skaWQuJ3htbGZpbGUnXSkgJiYgaXNzZXQoJF9GSUxFU1skaWQuJ3htbGZpbGUnXVsnbmFtZSddKSAmJiAkX0ZJTEVTWyRpZC4neG1sZmlsZSddWyduYW1lJ10gIT0gJycpIHsKCQoJJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkX0ZJTEVTWyRpZC4neG1sZmlsZSddWyd0bXBfbmFtZSddICk7CgkkcGFyc2VyID0geG1sX3BhcnNlcl9jcmVhdGUoJycpOwoJeG1sX3BhcnNlcl9zZXRfb3B0aW9uKCRwYXJzZXIsIFhNTF9PUFRJT05fVEFSR0VUX0VOQ09ESU5HLCAnVVRGLTgnKTsKCXhtbF9wYXJzZXJfc2V0X29wdGlvbigkcGFyc2VyLCBYTUxfT1BUSU9OX0NBU0VfRk9MRElORywgMCk7Cgl4bWxfcGFyc2VyX3NldF9vcHRpb24oJHBhcnNlciwgWE1MX09QVElPTl9TS0lQX1dISVRFLCAxKTsKCgkkeG1sZGF0YSA9IGFycmF5KCk7Cgl4bWxfcGFyc2VfaW50b19zdHJ1Y3QoJHBhcnNlciwgdHJpbSgkeG1sKSwgJHhtbGRhdGEpOwoJeG1sX3BhcnNlcl9mcmVlKCRwYXJzZXIpOwoJaWYgKCEkeG1sZGF0YSkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2ltcG9ydCcsICRyZXR1cm5pZCwgYXJyYXkoJ21vZHVsZV9tZXNzYWdlJz0+JHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWR4bWwnKSkgKTsKCgkkdGFibGVzID0gYXJyYXkoKTsKCSR0ZW1wbGF0ZXMgPSBhcnJheSgpOwoJJGVudHJpZXMgPSAwOwoJJGN1cnJlbnR0YWJsZSA9IGZhbHNlOwoJJGN1cnJlbnRpdGVtID0gZmFsc2U7CgoJJGV4aXN0aW5nX3RhYmxlcyA9IGFycmF5X21lcmdlKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpLCBhcnJheSgnZmllbGRvcHRpb25zJywgJ211bHRpcGxlZmlsZXNmaWVsZHMnKSk7CgkKCQoJZm9yZWFjaCAoJHhtbGRhdGEgYXMgJGRhdGEpIHsKCQlzd2l0Y2goJGRhdGFbJ3R5cGUnXSkgewoJCQljYXNlICdvcGVuJzoKCQkJCWlmKCRkYXRhWydsZXZlbCddID09IDIgJiYgJGRhdGFbJ3RhZyddID09ICd0YWJsZScgJiYgaXNzZXQoJGRhdGFbJ2F0dHJpYnV0ZXMnXSkgJiYgaXNzZXQoJGRhdGFbJ2F0dHJpYnV0ZXMnXVsnbmFtZSddKSApewoJCQkJCSR0YWJsZW5hbWUgPSAkZGF0YVsnYXR0cmlidXRlcyddWyduYW1lJ107CgkJCQkJaWYoaW5fYXJyYXkoJHRhYmxlbmFtZSwgJGV4aXN0aW5nX3RhYmxlcykpewoJCQkJCQkkdGFibGVzWyR0YWJsZW5hbWVdID0gYXJyYXkoKTsKCQkJCQkJJGN1cnJlbnR0YWJsZSA9ICR0YWJsZW5hbWU7CgkJCQkJfWVsc2V7CgkJCQkJCSRjdXJyZW50dGFibGUgPSBmYWxzZTsKCQkJCQl9CgkJCQl9ZWxzZWlmKCRkYXRhWydsZXZlbCddID09IDMgJiYgJGRhdGFbJ3RhZyddID09ICdpdGVtJyl7CgkJCQkJJGN1cnJlbnRpdGVtID0gYXJyYXkoKTsKCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICdjbG9zZSc6CgkJCQlpZigkY3VycmVudHRhYmxlICYmICRjdXJyZW50aXRlbSAhPSBmYWxzZSAmJiAkZGF0YVsnbGV2ZWwnXSA9PSAzICYmICRkYXRhWyd0YWcnXSA9PSAnaXRlbScpewoJCQkJCWlmKGNvdW50KCRjdXJyZW50aXRlbSkgPiAwKXsKCQkJCQkJYXJyYXlfcHVzaCgkdGFibGVzWyRjdXJyZW50dGFibGVdLCAkY3VycmVudGl0ZW0pOwoJCQkJCQkkZW50cmllcysrOwoJCQkJCX0KCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICdjb21wbGV0ZSc6CgkJCQlpZigkZGF0YVsnbGV2ZWwnXSA9PSA0KXsKCQkJCQkkY3VycmVudGl0ZW1bJGRhdGFbJ3RhZyddXSA9ICRkYXRhWyd2YWx1ZSddOwoJCQkJfWVsc2VpZigkZGF0YVsnbGV2ZWwnXSA9PSAxICYmICRkYXRhWyd0YWcnXSA9PSAndGVtcGxhdGUnICYmIGlzc2V0KCRkYXRhWydhdHRyaWJ1dGVzJ10pICYmIGlzc2V0KCRkYXRhWydhdHRyaWJ1dGVzJ11bJ25hbWUnXSkgKXsKCQkJCQkkdGVtcGxhdGVzWyRkYXRhWydhdHRyaWJ1dGVzJ11bJ25hbWUnXV0gPSAkZGF0YVsndmFsdWUnXTsKCQkJCX0KCQkJCWJyZWFrOwoJCX0KCX0KCglpZihjb3VudCgkdGFibGVzKSA9PSAwKQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnaW1wb3J0JywgJHJldHVybmlkLCBhcnJheSgnbW9kdWxlX21lc3NhZ2UnPT4kdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHhtbCcpKSApOwoJCgkkX1NFU1NJT05bJ2N0bG1tX21vZHVsZWltcG9ydCddID0gYXJyYXkoKTsKCSRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddID0gJHRhYmxlczsKCSRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RlbXBsYXRlcyddID0gJHRlbXBsYXRlczsKCQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImltcG9ydCIsICRyZXR1cm5pZCk7CgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfZW50cmllcycsJGVudHJpZXMpLic8L3A+JzsKCWVjaG8gJzxmaWVsZHNldD48bGVnZW5kPjxiPicuJHRoaXMtPkxhbmcoJ2ltcG9ydHdoaWNobGV2ZWxzJykuJzwvYj48L2xlZ2VuZD4nOwoJJGNob2ljZXMgPSBhcnJheSgpOwoJZm9yZWFjaCgkdGFibGVzIGFzICRrZXk9PiR2YWx1ZSl7CgkJaWYoY291bnQoJHZhbHVlKSA+MCkJJGNob2ljZXNbJGtleS4nICgnLmNvdW50KCR2YWx1ZSkuJyknXSA9ICRrZXk7Cgl9CgllY2hvICR0aGlzLT5Eb0NoZWNrYm94ZXMoJGlkLCAnc2VsZWN0ZWRsZXZlbHMnLCAkY2hvaWNlcywgJGNob2ljZXMpLic8L2ZpZWxkc2V0Pjxici8+JzsKCWlmKGNvdW50KCR0ZW1wbGF0ZXMpID4gMCkJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImltcG9ydF90ZW1wbGF0ZXMiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdpbXBvcnRfdGVtcGxhdGVzJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImltcG9ydF9kZWxldGUiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdpbXBvcnRfZGVsZXRlJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZG9pbXBvcnQiLCBsYW5nKCJzdWJtaXQiKSkuJzwvcD4nOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwoKfWVsc2VpZihpc3NldCgkcGFyYW1zWydkb2ltcG9ydCddKSAmJiBpc3NldCgkX1NFU1NJT05bJ2N0bG1tX21vZHVsZWltcG9ydCddKSAmJiBpc3NldCgkcGFyYW1zWydzZWxlY3RlZGxldmVscyddKSl7CgoJJGRiID0mICR0aGlzLT5HZXREYigpOwoJJHRhYmxlcHJlZml4ID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIjsKCSRlcnJvcnMgPSAnJzsKCSRhZGRlZCA9IDA7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2ltcG9ydF90ZW1wbGF0ZXMnXSkgJiYgJHBhcmFtc1snaW1wb3J0X3RlbXBsYXRlcyddICYmIGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RlbXBsYXRlcyddKSApewoJCWZvcmVhY2goJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXVsndGVtcGxhdGVzJ10gYXMgJHRwbG5hbWU9PiR0ZW1wbGF0ZSl7CgkJCSR0aGlzLT5TZXRUZW1wbGF0ZSgkdHBsbmFtZSwgJHRlbXBsYXRlKTsKCQl9Cgl9CgkKCSRkZWxldGUgPSAoaXNzZXQoJHBhcmFtc1snaW1wb3J0X2RlbGV0ZSddKSAmJiAkcGFyYW1zWydpbXBvcnRfZGVsZXRlJ10gKTsKCQoJZm9yZWFjaCgkcGFyYW1zWydzZWxlY3RlZGxldmVscyddIGFzICR0YWJsZW5hbWUpewoJCQoJCWlmKGlzX2NhbGxhYmxlKGFycmF5KCRkYiwnTWV0YUNvbHVtbk5hbWVzJykpKXsKCQkJJGV4aXN0aW5nX2ZpZWxkcyA9IGFycmF5KCk7CgkJCSRjb2x1bW5zID0gJGRiLT5NZXRhQ29sdW1uTmFtZXMoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCQlmb3JlYWNoKCRjb2x1bW5zIGFzICRjb2wpCWFycmF5X3B1c2goJGV4aXN0aW5nX2ZpZWxkcyxzdHJ0b2xvd2VyKCRjb2wpKTsKCQl9ZWxzZXsKCQkJJGNvbHVtbnMgPSBmYWxzZTsKCQl9CgkJCgkJJHByb2NlZWQgPSB0cnVlOwoJCSRoaWdoZXN0aWQgPSAwOwoJCWlmKGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdKSl7CgkJCWlmKCRkZWxldGUpCSRkYi0+RXhlY3V0ZSgiVFJVTkNBVEUgVEFCTEUgIi4kdGFibGVwcmVmaXguJHRhYmxlbmFtZSk7CgkJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCQkkaSA9IDA7CgkJCXdoaWxlKCRwcm9jZWVkICYmICRpIDwgY291bnQoJHRhYmxlKSl7CgkJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJCSRxdWVyeSA9ICcnOwoJCQkJZm9yZWFjaCgkdGFibGVbJGldIGFzICRrZXk9PiR2YWx1ZSl7CgkJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJCSRxdWVyeSAuPSAoJHF1ZXJ5PT0nJz8nJzonLCAnKS4iYCIuJGtleS4iYD0/IjsKCQkJCQkJJHZhbHVlc1tdID0gKCR2YWx1ZT09PU5VTEw/Jyc6JHZhbHVlKTsKCQkJCQl9CgkJCQl9CgkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4kdGFibGVwcmVmaXguJHRhYmxlbmFtZS4iIFNFVCAiLiRxdWVyeTsKCQkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJCWlmKGlzc2V0KCR0YWJsZVskaV1bJ2lkJ10pICYmICR0YWJsZVskaV1bJ2lkJ10gPiAkaGlnaGVzdGlkKQkkaGlnaGVzdGlkID0gJHRhYmxlWyRpXVsnaWQnXTsKCQkJCQkkYWRkZWQrKzsKCQkJCX1lbHNlewoJCQkJCSRwcm9jZWVkID0gZmFsc2U7CgkJCQkJJGVycm9ycyAuPSAoJGVycm9ycz09Jyc/Jyc6JywgJykuJHRhYmxlbmFtZTsKCQkJCX0JCgkJCQkkaSsrOwoJCQl9CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9Cgl9CgkKCWlmKGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWydtdWx0aXBsZWZpbGVzZmllbGRzJ10pKXsKCQkkdGFibGVuYW1lID0gIm11bHRpcGxlZmlsZXNmaWVsZHMiOwoJCSRwcm9jZWVkID0gdHJ1ZTsKCQkkaGlnaGVzdGlkID0gMDsKCQlpZigkZGVsZXRlKQkkZGItPkV4ZWN1dGUoIlRSVU5DQVRFIFRBQkxFICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCSRpID0gMDsKCQl3aGlsZSgkcHJvY2VlZCAmJiAkaSA8IGNvdW50KCR0YWJsZSkpewoJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJJHF1ZXJ5ID0gJyc7CgkJCWZvcmVhY2goJHRhYmxlWyRpXSBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJJHF1ZXJ5IC49ICgkcXVlcnk9PScnPycnOicsICcpLiJgIi4ka2V5LiJgPT8iOwoJCQkJCSR2YWx1ZXNbXSA9ICgkdmFsdWU9PT1OVUxMPycnOiR2YWx1ZSk7CgkJCQl9CgkJCX0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuIiBTRVQgIi4kcXVlcnk7CgkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJaWYoaXNzZXQoJHRhYmxlWyRpXVsnZmlsZWlkJ10pICYmICR0YWJsZVskaV1bJ2ZpbGVpZCddID4gJGhpZ2hlc3RpZCkJJGhpZ2hlc3RpZCA9ICR0YWJsZVskaV1bJ2ZpbGVpZCddOwoJCQkJJGFkZGVkKys7CgkJCX1lbHNlewoJCQkJJHByb2NlZWQgPSBmYWxzZTsKCQkJCSRlcnJvcnMgLj0gKCRlcnJvcnM9PScnPycnOicsICcpLiR0YWJsZW5hbWU7CgkJCX0JCgkJCSRpKys7CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9CQkKCQkKCX0KCQoJaWYoaXNzZXQoJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXVsndGFibGVzJ11bJ2ZpZWxkb3B0aW9ucyddKSl7CgkJJHRhYmxlbmFtZSA9ICJmaWVsZG9wdGlvbnMiOwoJCSRwcm9jZWVkID0gdHJ1ZTsKCQkkaGlnaGVzdGlkID0gMDsKCQlpZigkZGVsZXRlKQkkZGItPkV4ZWN1dGUoIlRSVU5DQVRFIFRBQkxFICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCSRpID0gMDsKCQl3aGlsZSgkcHJvY2VlZCAmJiAkaSA8IGNvdW50KCR0YWJsZSkpewoJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJJHF1ZXJ5ID0gJyc7CgkJCWZvcmVhY2goJHRhYmxlWyRpXSBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJJHF1ZXJ5IC49ICgkcXVlcnk9PScnPycnOicsICcpLiJgIi4ka2V5LiJgPT8iOwoJCQkJCSR2YWx1ZXNbXSA9ICgkdmFsdWU9PT1OVUxMPycnOiR2YWx1ZSk7CgkJCQl9CgkJCX0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuIiBTRVQgIi4kcXVlcnk7CgkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJaWYoaXNzZXQoJHRhYmxlWyRpXVsnaWQnXSkgJiYgJHRhYmxlWyRpXVsnaWQnXSA+ICRoaWdoZXN0aWQpCSRoaWdoZXN0aWQgPSAkdGFibGVbJGldWydpZCddOwoJCQkJJGFkZGVkKys7CgkJCX1lbHNlewoJCQkJZWNobyBteXNxbF9lcnJvcigpOwoJCQkJJHByb2NlZWQgPSBmYWxzZTsKCQkJCSRlcnJvcnMgLj0gKCRlcnJvcnM9PScnPycnOicsICcpLiR0YWJsZW5hbWU7CgkJCX0JCgkJCSRpKys7CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9CQkKCQkKCX0KCQoJdW5zZXQoJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXSk7CgkKCSRtZXNzYWdlID0gJHRoaXMtPkxhbmcoJ2ltcG9ydF9kb25lJywkYWRkZWQpOwoJaWYoJGVycm9ycyAhPSAnJykgJG1lc3NhZ2UgLj0gJzxici8+Jy4kdGhpcy0+TGFuZygnY291bGRub3RpbXBvcnQnKS4kZXJyb3JzOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21vZHVsZV9tZXNzYWdlJz0+JG1lc3NhZ2UpICk7Cgp9ZWxzZXsKCgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfZmlsZXByb21wdCcpLic8L3A+JzsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdpbXBvcnQnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3htbGZpbGUnKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwkKCQp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.movesomething.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokbmV3cGFyYW1zID0gaXNzZXQoJHBhcmFtc1snbGV2ZWxuYW1lJ10pP2FycmF5KCdhY3RpdmVfdGFiJz0+JHBhcmFtc1snbGV2ZWxuYW1lJ10pOmFycmF5KCk7CgppZiAoIWlzc2V0KCRwYXJhbXNbJ21vdmUnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ3RhYmxlbmFtZSddKSB8fCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pIHx8ICFpc3NldCgkcGFyYW1zWydjdXJyZW50b3JkZXInXSkgKQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKJGRidGFibGUgPSBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV8nLiRwYXJhbXNbJ3RhYmxlbmFtZSddOwokb3JkZXIgPSAkcGFyYW1zWydjdXJyZW50b3JkZXInXTsKJGl0ZW1pZCA9ICRwYXJhbXNbJHBhcmFtc1sncHJlZml4J10uJ2lkJ107CiR3cGFyZW50ID0gaXNzZXQoJHBhcmFtc1sncGFyZW50J10pPyIgQU5EIHBhcmVudD0nIi4kcGFyYW1zWydwYXJlbnQnXS4iJyI6Jyc7Cgpzd2l0Y2goJHBhcmFtc1snbW92ZSddKXsKCQoJY2FzZSAnZGVsZXRlJzoKCQlpZihpc3NldCgkcGFyYW1zWydzaGFyZWNoaWxkcmVuJ10pICYmICRwYXJhbXNbJ3NoYXJlY2hpbGRyZW4nXSl7CgkJCS8vIHRoaXMgbGV2ZWwgc2hhcmUgaXRzIGNoaWxkcmVuLi4uIHdlIGRlbGV0ZSB0aGUgaXRlbSdzIGxpbmtzIHRvIGNoaWxkcmVuCgkJCWlmKCRjaGlsZGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHBhcmFtc1snbGV2ZWxuYW1lJ10pKXsKCQkJCSRsaW5rdGFibGUgPSAkZGJ0YWJsZS4nX2hhc18nLiRjaGlsZGxldmVsOwoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRsaW5rdGFibGUgV0hFUkUgIi4kcGFyYW1zWydsZXZlbG5hbWUnXS4iX2lkPT8iOwoJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOwoJCQl9CgkJfWVsc2VpZihpc3NldCgkcGFyYW1zWydjaGlsZCddKSAmJiAkcGFyYW1zWydjaGlsZCddICE9ICcnKXsKCQkJLy8gdGhpcyBsZXZlbCBkb2Vzbid0IHNoYXJlIGl0cyBjaGlsZHJlbi4uLiB3ZSBkZWxldGUgdGhlIGl0ZW0ncyBjaGlsZHJlbgoJCQkkY2hpbGR0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycuJHBhcmFtc1snY2hpbGQnXTsKCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRjaGlsZHRhYmxlIFdIRVJFIHBhcmVudCA9ID8iOwoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbWlkKSk7CgkJfQoJCWlmKGlzc2V0KCRwYXJhbXNbJ3NoYXJlZGJ5cGFyZW50cyddKSAmJiAkcGFyYW1zWydzaGFyZWRieXBhcmVudHMnXSl7CgkJCS8vIHRoaXMgaXRlbSBpcyBzaGFyZWQgYnkgaXRzIHBhcmVudHMuLi4gd2UgZGVsZXRlIGxpbmtzIGZyb20gcGFyZW50cyB0byB0aGlzIGNoaWxkCgkJCWlmKCRwYXJlbnRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCRwYXJhbXNbJ2xldmVsbmFtZSddLCBmYWxzZSkpewoJCQkJJGxpbmt0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycuJHRoaXMtPkdldE5hbWUoKS4nXycuJHBhcmVudGxldmVsLidfaGFzXycuJHBhcmFtc1snbGV2ZWxuYW1lJ107CgkJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gJGxpbmt0YWJsZSBXSEVSRSAiLiRwYXJhbXNbJ2xldmVsbmFtZSddLiJfaWQ9PyI7CgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbWlkKSk7CgkJCX0KCQl9CgkJJGZpbGVmaWVsZHMgPSAkdGhpcy0+Z2V0X2xldmVsZmlsZWZpZWxkcygkcGFyYW1zWydsZXZlbG5hbWUnXSk7CgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlbGV0ZV9maWxlcycsZmFsc2UpICYmIGNvdW50KCRmaWxlZmllbGRzKSA+IDApewoJCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAkZGJ0YWJsZSBXSEVSRSBpZCA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbWlkKSk7CgkJCWlmKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsKCQkJCWZvcmVhY2goJGZpbGVmaWVsZHMgYXMgJGZpZWxkKXsKCQkJCQlpZigkcm93WyRmaWVsZF0gIT0gJycgJiYgJHJvd1skZmllbGRdICE9ICcvJyl7CgkJCQkJCSRmaWxlcGF0aCA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLihzdWJzdHIoJHJvd1snZmlsZXBhdGgnXSwwLDEpPT0nLyc/Jyc6Jy8nKS4kcm93WyRmaWVsZF07CgkJCQkJCSR0bXBleHAgPSBleHBsb2RlKCcvJywkcm93WyRmaWVsZF0pOwoJCQkJCQkkZmlsZW5hbWUgPSAkdG1wZXhwW2NvdW50KCR0bXBleHApIC0xXTsKCQkJCQkJJHRodW1icGF0aCA9IHN0cl9yZXBsYWNlKCRmaWxlbmFtZSwncGx0aHVtYl8nLiRmaWxlbmFtZSwkZmlsZXBhdGgpOwoJCQkJCQlpZihmaWxlX2V4aXN0cygkdGh1bWJwYXRoKSkJdW5saW5rKCR0aHVtYnBhdGgpOwoJCQkJCQlpZihmaWxlX2V4aXN0cygkZmlsZXBhdGgpKQl1bmxpbmsoJGZpbGVwYXRoKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJJGZpbGVmaWVsZHMgPSAkdGhpcy0+Z2V0X2xldmVsYWRkZmlsZWZpZWxkcygkcGFyYW1zWydsZXZlbG5hbWUnXSk7CgkJaWYoY291bnQoJGZpbGVmaWVsZHMpID4gMCl7CgkJCWlmKGNvdW50KCRmaWVsZHMpID4gMCl7CgkJCQkkd2hlcmUgPSAnJzsKCQkJCSR2YWx1ZXMgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCgkZmlsZWZpZWxkcyBhcyAkZmllbGQpewoJCQkJCSR3aGVyZSAuPSAoJHdoZXJlID09ICcnPycnOicgT1IgJykuJyBmaWVsZG5hbWU9Pyc7CgkJCQkJJHZhbHVlc1tdID0gJGZpZWxkOwoJCQkJfQoJCQkJJGFkZGZpbGVzdGFibGUgPSBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV8nLiR0aGlzLT5HZXROYW1lKCkuJ19tdWx0aXBsZWZpbGVzZmllbGRzJzsKCgkJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVsZXRlX2ZpbGVzJyxmYWxzZSkpewoJCQkJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICRhZGRmaWxlc3RhYmxlIFdIRVJFICgkd2hlcmUpIEFORCBpdGVtaWQ9Ii4kaXRlbWlkOwoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOwoJCQkJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsKCQkJCQkJJGZpbGVwYXRoID0gJGdDbXMtPmNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uKHN1YnN0cigkcm93WydmaWxlcGF0aCddLDAsMSk9PScvJz8nJzonLycpLiRyb3dbJ2ZpbGVwYXRoJ107CgkJCQkJCWlmKGZpbGVfZXhpc3RzKCRmaWxlcGF0aCkpCXVubGluaygkZmlsZXBhdGgpOwoJCQkJCX0KCQkJCX0KCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAkYWRkZmlsZXN0YWJsZSBXSEVSRSAoJHdoZXJlKSBBTkQgaXRlbWlkPSIuJGl0ZW1pZDsKCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOwoJCQl9CgkJfQoJCQoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAkZGJ0YWJsZSBXSEVSRSBpZCA9ID8gTElNSVQgMSI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOwoKCQkvLyBVUERBVEUgVEhFIE9SREVSIE9GIFRIRSBJVEVNUwoJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA+ID8gIi4kd3BhcmVudDsKCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkb3JkZXIpKTsKCgkJaWYoaXNzZXQoJHBhcmFtc1snbGV2ZWxuYW1lJ10pKQkkdGhpcy0+U2VuZEV2ZW50KCR0aGlzLT5HZXROYW1lKCkuJ19kZWxldGVkJywgYXJyYXkoJ3doYXQnPT4kcGFyYW1zWydsZXZlbG5hbWUnXSkpOwoJCSRuZXdwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbWVzc2FnZV9kZWxldGVkJyk7CgkJYnJlYWs7CQoKCWNhc2UgJ3VwJzoKCQlpZiAoJG9yZGVyICE9IDEpewoJCQkkcXVlcnkgPSAiVVBEQVRFICRkYnRhYmxlIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIGl0ZW1fb3JkZXIgPSA/ICR3cGFyZW50IExJTUlUIDE7IjsKCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG9yZGVyLTEpKTsKCQkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpZCA9ID8gTElNSVQgMTsiOwoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbWlkKSk7CgkJfQoJCWJyZWFrOwoJCQoJY2FzZSAnZG93bic6CgkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID0gPyAkd3BhcmVudCBMSU1JVCAxOyI7CgkJaWYoICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRvcmRlcisxKSkgKXsKCQkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlcisxKSBXSEVSRSBpZCA9ID8gTElNSVQgMTsiOwoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbWlkKSk7CgkJfQoJCWJyZWFrOwp9CgokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.reorder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRkYiA9ICR0aGlzLT5HZXREYigpOwokbGV2ZWxhcnJheSA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOwoKJG9yZGVyZWRieXBhcmVudCA9IGFycmF5KCJjYXRlZ29yeSIsInZpZGVvcyIpOwppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkpewoJJHRoaXMtPlJlZGlyZWN0KCRpZCwiZGVmYXVsdGFkbWluIiwkcmV0dXJuaWQpOwp9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHJlb3JkZXIiXSkpewoJJG9yZGVyID0gYXJyYXkoKTsKCSRsYXN0aWQgPSBhcnJheSgpOwoJZm9yZWFjaChleHBsb2RlKCIsIiwkcGFyYW1zWyJuZXdvcmRlciJdKSBhcyAkaXRlbSl7CgkJbGlzdCgkbGV2ZWwsJGl0ZW1pZCkgPSBleHBsb2RlKCJfX18iLCRpdGVtKTsKCQkkbGFzdGlkWyRsZXZlbF0gPSAkaXRlbWlkOwoJCWlmKCFpc3NldCgkb3JkZXJbJGxldmVsXSkpCSRvcmRlclskbGV2ZWxdPWFycmF5KCk7CgkJaWYoJGxldmVsPT0xKXsKCQkJJG9yZGVyWzFdW109JGl0ZW1pZDsKCQl9ZWxzZXsKCQkJaWYoIWlzc2V0KCRvcmRlclskbGV2ZWxdWyRsYXN0aWRbJGxldmVsLTFdXSkpCSRvcmRlclskbGV2ZWxdWyRsYXN0aWRbJGxldmVsLTFdXT1hcnJheSgpOwoJCQkkb3JkZXJbJGxldmVsXVskbGFzdGlkWyRsZXZlbC0xXV1bXSA9ICRpdGVtaWQ7CgkJfQoJfQoJZm9yZWFjaCgkb3JkZXIgYXMgJGtleT0+JGl0ZW1zKXsKCQkkbGV2ZWwgPSAkbGV2ZWxhcnJheVska2V5LTFdOwoJCSRpdGVtX29yZGVyID0gMTsKCQlpZigka2V5PT0xKXsKCQkJZm9yZWFjaCgkaXRlbXMgYXMgJGl0ZW0pewoJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfIi4kbGV2ZWwuIiBTRVQgaXRlbV9vcmRlcj0/IFdIRVJFIGlkPT8gTElNSVQgMSI7CgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRpdGVtX29yZGVyLCRpdGVtKSk7CgkJCQkkaXRlbV9vcmRlcisrOwoJCQl9CgkJfWVsc2V7CgkJCWZvcmVhY2goJGl0ZW1zIGFzICRwYXJlbnQ9PiRjaGlsZHJlbil7CgkJCQlpZihpbl9hcnJheSgkbGV2ZWwsICRvcmRlcmVkYnlwYXJlbnQpKQkkaXRlbV9vcmRlciA9IDE7CgkJCQlmb3JlYWNoKCRjaGlsZHJlbiBhcyAkY2hpbGQpewoJCQkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyXyIuJGxldmVsLiIgU0VUIGl0ZW1fb3JkZXI9PyBXSEVSRSBpZD0/IExJTUlUIDEiOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGl0ZW1fb3JkZXIsJGNoaWxkKSk7CgkJCQkJJGl0ZW1fb3JkZXIrKzsKCQkJCX0KCQkJfQkJCQoJCQkJCgkJfQoJCQoJfQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwiZGVmYXVsdGFkbWluIiwkcmV0dXJuaWQsYXJyYXkoIm1vZHVsZV9tZXNzYWdlIj0+JHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSkpOwp9CgplY2hvICI8aDE+Ii4kdGhpcy0+TGFuZygicmVvcmRlciIpLiI8L2gxPiI7CiRpID0gMDsKJHNlbGVjdCA9ICIiOwokdGFibGVzID0gIiI7CiRvcmRlciA9ICIiOwp3aGlsZSgkaSA8IGNvdW50KCRsZXZlbGFycmF5KSl7CgkkbGV2ZWwgPSAkbGV2ZWxhcnJheVskaV07CgkkaSsrOwoJJHNlbGVjdCAuPSAoJHNlbGVjdD09IiI/IiI6IiwgIikuInRhYmxlIi4kaS4iLmlkIHRhYmxlIi4kaS4iX2lkLCB0YWJsZSIuJGkuIi5uYW1lIHRhYmxlIi4kaS4iX25hbWUiOwoJaWYoJGkgPT0gMSl7CgkJJHRhYmxlcyA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfIi4kbGV2ZWwuIiB0YWJsZSIuJGk7Cgl9ZWxzZXsKCQkkdGFibGVzIC49ICIgTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl8iLiRsZXZlbC4iIHRhYmxlIi4kaS4gIiBPTiB0YWJsZSIuKCRpLTEpLiIuaWQ9dGFibGUiLiRpLiIucGFyZW50IjsKCX0KCSRvcmRlciAuPSAoJG9yZGVyPT0iIj8iIjoiLCAiKS4idGFibGUiLiRpLiIuaXRlbV9vcmRlciI7Cn0KJHF1ZXJ5ID0gIlNFTEVDVCAkc2VsZWN0IEZST00gJHRhYmxlcyBPUkRFUiBCWSAkb3JkZXIiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCiRsYXN0ID0gYXJyYXkoKTsKJGxpc3RzID0gYXJyYXkoKTsKJGNvbnRhaW5tZW50ID0gYXJyYXkoKTsKJHBhcnNlbGV2ZWwgPSAxOwplY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAicmVvcmRlciIsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnJywgZmFsc2UsICcnLCBhcnJheSgpLCAnIG9uc3VibWl0PSJyZXR1cm4gY3RsbW1fc3VibWl0X3Jlb3JkZXIoKTsiJyk7CndoaWxlKCRwYXJzZWxldmVsIDw9ICRpKXsKCSRsYXN0WyRwYXJzZWxldmVsXSA9IGZhbHNlOwoJJGxpc3RzWyRwYXJzZWxldmVsXSA9IGFycmF5KCk7CgkkY29udGFpbm1lbnRbJHBhcnNlbGV2ZWxdID0gIiI7CgkkcGFyc2VsZXZlbCsrOwp9CmVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwic3VibWl0cmVvcmRlciIsbGFuZygic3VibWl0IikpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJyZXNldG9yZGVyIiwkdGhpcy0+TGFuZygicmVzZXRvcmRlciIpKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwiY2FuY2VsIixsYW5nKCJjYW5jZWwiKSkuIjwvcD4iOwokY3VycmVudGxldmVsID0gMTsKZWNobyAnPHVsIGNsYXNzPSJzb3J0YWJsZUxpc3QiIGlkPSJjdGxtbV9iaWdzb3J0bGlzdCI+JzsKd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpewoJJHBhcnNlbGV2ZWwgPSAxOwoJd2hpbGUoJHBhcnNlbGV2ZWwgPD0gJGkpewoJCWlmKCRyb3dbInRhYmxlIi4kcGFyc2VsZXZlbC4iX2lkIl0gIT0gJGxhc3RbJHBhcnNlbGV2ZWxdKXsKCQkJaWYoJGN1cnJlbnRsZXZlbCA9PSAkcGFyc2VsZXZlbCl7CgkJCQlpZigkbGFzdFskY3VycmVudGxldmVsXSkJZWNobyAiPC9saT4iOwoJCQl9ZWxzZWlmKCRjdXJyZW50bGV2ZWwgPiAkcGFyc2VsZXZlbCl7CgkJCQl3aGlsZSgkY3VycmVudGxldmVsID4gJHBhcnNlbGV2ZWwpewoJCQkJCWVjaG8gIjwvbGk+PC91bD48L2xpPiI7CgkJCQkJJGN1cnJlbnRsZXZlbC0tOwoJCQkJfQoJCQl9ZWxzZWlmKCRjdXJyZW50bGV2ZWwgPCAkcGFyc2VsZXZlbCl7CgkJCQkkbGlzdGlkID0gImxpc3RfIi4kbGV2ZWxhcnJheVskcGFyc2VsZXZlbF0uIl8iLiRyb3dbInRhYmxlIi4kcGFyc2VsZXZlbC4iX2lkIl07CgkJCQkkY3VycmVudGxldmVsKys7CgkJCQllY2hvICc8dWwgaWQ9IicuJGxpc3RpZC4nIiBjbGFzcz0ic29ydGFibGVMaXN0Ij4nOwoJCQkJJGxpc3RzWyRwYXJzZWxldmVsXVtdID0gJGxpc3RpZDsKCQkJCSRjb250YWlubWVudFskcGFyc2VsZXZlbF0gLj0gKCRjb250YWlubWVudFskcGFyc2VsZXZlbF09PSIiPyIiOiIsIikuJyInLiRsaXN0aWQuJyInOwoJCQl9CgkJCWVjaG8gJzxsaSBpZD0iY3RsbW1sZXZlbCcuJHBhcnNlbGV2ZWwuJ19fXycuJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfaWQiXS4nIj4nLiRyb3dbInRhYmxlIi4kcGFyc2VsZXZlbC4iX25hbWUiXTsKCQkJJGxhc3RbJHBhcnNlbGV2ZWxdID0gJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfaWQiXTsKCQl9CgkJJHBhcnNlbGV2ZWwrKzsKCX0KfQplY2hvICI8L2xpPiI7CndoaWxlKCRjdXJyZW50bGV2ZWwgPiAxKXsKCWVjaG8gIjwvdWw+PC9saT4iOwoJJGN1cnJlbnRsZXZlbC0tOwp9CmVjaG8gIjwvdWw+IjsKZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJzdWJtaXRyZW9yZGVyIixsYW5nKCJzdWJtaXQiKSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInJlc2V0b3JkZXIiLCR0aGlzLT5MYW5nKCJyZXNldG9yZGVyIikpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJjYW5jZWwiLGxhbmcoImNhbmNlbCIpKS4iPC9wPiI7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwibmV3b3JkZXIiLCIiLCcgaWQ9ImN0bG1tX25ld29yZGVyIicpOwppZihpc3NldCgkcmVvcmRlcl9sZXZlbCkgJiYgJHJlb3JkZXJfbGV2ZWwpCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwicmVvcmRlcl9sZXZlbCIsJHJlb3JkZXJfbGV2ZWwpOwplY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgokcmVzdHJpY3RlZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpOwppZigkcmVzdHJpY3RlZCAmJiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX2FkdmFuY2VkIikpCSRyZXN0cmljdGVkID0gZmFsc2U7CgplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cic7CmlmKCEkcmVzdHJpY3RlZCB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJwcm9kY2F0YWxvZ3VlX21hbmFnZV8iLiRsZXZlbGFycmF5WzBdKSkJZWNobyAnU29ydGFibGUuY3JlYXRlKCJjdGxtbV9iaWdzb3J0bGlzdCIpOwonOwoKZm9yZWFjaCgkbGlzdHMgYXMgJGxldmVsbnVtYmVyPT4kbGV2ZWwpewoJaWYoISRyZXN0cmljdGVkIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oInlvdXR1YmVwbGF5ZXJfbWFuYWdlXyIuJGxldmVsYXJyYXlbJGxldmVsbnVtYmVyLTFdKSl7CgkJZm9yZWFjaCgkbGV2ZWwgYXMgJGxpc3QpewoJCQkvKgoJCQkgKiB3ZSBkb24ndCB1c2UgY29udGFpbm1lbnQgeWV0IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBkZWFsIHdpdGggY2hhbmdpbmcgcGFyZW50cy4uLiB5ZXQuLi4KCQkJICogZWNobyAnU29ydGFibGUuY3JlYXRlKCInLiRsaXN0LiciJy4oY291bnQoJGxldmVsKT4xPyIse2NvbnRhaW5tZW50OlsiLiRjb250YWlubWVudFskbGV2ZWxudW1iZXJdLiJdLCBkcm9wT25FbXB0eTpmYWxzZX0iOiIiKS4iKTsKCQkJICogIjsKCQkJICovCgkJCWVjaG8gJ1NvcnRhYmxlLmNyZWF0ZSgiJy4kbGlzdC4nIik7CgknOwoJCX0KCX0KfQplY2hvICcKZnVuY3Rpb24gY3RsbW1fc3VibWl0X3Jlb3JkZXIoKXsKCXZhciBuZXdvcmRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjdGxtbV9uZXdvcmRlciIpOwoJdmFyIGxpc3Rub2RlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjdGxtbV9iaWdzb3J0bGlzdCIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaSIpOwoJZm9yKGk9MDtpPGxpc3Rub2Rlcy5sZW5ndGg7aSsrKXsKCQlpZihuZXdvcmRlci52YWx1ZSAhPSAiIikgbmV3b3JkZXIudmFsdWUgKz0gIiwiOwoJCW5ld29yZGVyLnZhbHVlICs9IGxpc3Rub2Rlc1tpXS5pZC5zdWJzdHIoMTApOwoJfQoJcmV0dXJuIHRydWU7CQp9CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCInLiRpZC4nbW9kdWxlZm9ybV8xIikub25zdWJtaXQgPSBmdW5jdGlvbigpewoJcmV0dXJuIGN0bG1tX3N1Ym1pdF9yZW9yZGVyKCk7Cn0KPC9zY3JpcHQ+JzsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.search.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7CiRmaW5hbGxldmVsID0gInZpZGVvcyI7CgokbGlua3JldHVybmlkID0gKGlzc2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkpPyR0aGlzLT5nZXRfcGFnZWlkKCRwYXJhbXNbImRldGFpbHBhZ2UiXSk6ZmFsc2U7CiRzZWFyY2htb2RlID0gKGlzc2V0KCRwYXJhbXNbInNlYXJjaG1vZGUiXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1sic2VhcmNobW9kZSJdLCBhcnJheSgic2ltcGxlIiwiYWR2YW5jZWQiKSkpPyRwYXJhbXNbInNlYXJjaG1vZGUiXToiYWR2YW5jZWQiOwoKaWYoaXNzZXQoJHBhcmFtc1sic3VibWl0c2VhcmNoIl0pKXsKCS8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCS8vICMgU0VBUkNIIFJFU1VMVFMKCSRpbmxpbmUgPSAoaXNzZXQoJHBhcmFtc1siaW5saW5lIl0pICYmICRwYXJhbXNbImlubGluZSJdKT90cnVlOmZhbHNlOwoJaWYoISRsaW5rcmV0dXJuaWQpCSRsaW5rcmV0dXJuaWQgPSAkcmV0dXJuaWQ7Cgkkd2hhdCA9ICRwYXJhbXNbIndoYXQiXTsKCSRsaW1pdCA9IGlzc2V0KCRwYXJhbXNbImxpbWl0Il0pPyRwYXJhbXNbImxpbWl0Il06MDsKCWlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSAmJiAkcGFyYW1zWyJuYnBlcnBhZ2UiXSA+IDApewoJCSRuYnBlcnBhZ2UgPSAoaW50KSAkcGFyYW1zWyJuYnBlcnBhZ2UiXTsKCQkkbGltaXQgPSAoKChpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSk/JHBhcmFtc1sicGFnZWluZGV4Il06MSktMSkgKiAkbmJwZXJwYWdlKS4iLCIuJG5icGVycGFnZTsKCX1lbHNlewoJCSRuYnBlcnBhZ2UgPSBmYWxzZTsKCX0KCQoJJGVtcHR5dGVtcGxhdGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZW1wdHl0ZW1wbGF0ZSIsIioqIik7CgkKCS8vIHdlIHByZXBhcmUgdGhlICJkbyBhbm90aGVyIHNlYXJjaCIgbGluaywga2VlcGluZyB0aGUgc2VhcmNoIHBhcmFtZXRlcnMKCSRuZXdwYXJhbXMgPSBhcnJheSgid2hhdCI9PiR3aGF0LCAic2VhcmNobW9kZSI9PiRzZWFyY2htb2RlKTsKCWlmKGlzc2V0KCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdKSkJJG5ld3BhcmFtc1sibGlzdHRlbXBsYXRlIl0gPSAkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXTsKCWlmKGlzc2V0KCRwYXJhbXNbImxpbWl0Il0pKQkJCSRuZXdwYXJhbXNbImxpbWl0Il0gPSAkcGFyYW1zWyJsaW1pdCJdOwoJaWYoaXNzZXQoJHBhcmFtc1siaW5saW5lIl0pKQkJJG5ld3BhcmFtc1siaW5saW5lIl0gPSAkcGFyYW1zWyJpbmxpbmUiXTsKCWlmKGlzc2V0KCRwYXJhbXNbIm9yZGVyYnkiXSkpCQkkbmV3cGFyYW1zWyJvcmRlcmJ5Il0gPSAkcGFyYW1zWyJvcmRlcmJ5Il07CglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkpCQkkbmV3cGFyYW1zWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbIm5icGVycGFnZSJdOwoJaWYoaXNzZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSkJJG5ld3BhcmFtc1siZGV0YWlscGFnZSJdID0gJHBhcmFtc1siZGV0YWlscGFnZSJdOwoJJGJhY2tsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAic2VhcmNoIiwgJGxpbmtyZXR1cm5pZCwgJHRoaXMtPkxhbmcoInNlYXJjaGFnYWluIiksICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCBmYWxzZSk7CQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJiYWNrbGluayIsJGJhY2tsaW5rKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYnJlYWRjcnVtYnMiLGZhbHNlKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFyZW50b2JqIixmYWxzZSk7CgkKCSRtdWx0aXBsZWxpc3RmaWVsZHMgPSBhcnJheSgpOwoJCglpZigkc2VhcmNobW9kZSA9PSAiYWR2YW5jZWQiKXsKCQkvLyBBRFZBTkNFRCBTRUFSQ0gKCQkKCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCQkKCQkvLyB3ZSBwYXJzZSB0aGUga2V5d29yZHMKCQkkd2hlcmUgPSAkdGhpcy0+Z2V0V2hlcmVGcm9tUGFyYW1zKCRwYXJhbXMsIHRydWUpOwoJCWxpc3QoJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMpID0gJHRoaXMtPmJ1aWxkV2hlcmUoJHdoZXJlLCAkd2hhdCk7CgkJCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0OwoJCS8vIHdlIGRvIHRoZSBxdWVyeQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKT8kcGFyYW1zWyJvcmRlcmJ5Il06MCwgJGxpbWl0LCAkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcyk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtY291bnQiLGNvdW50KCRpdGVtbGlzdCkpOwoJCQoJCWlmKGNvdW50KCRpdGVtbGlzdCkgPiAwKXsKCQkKCQkJJHRvdGFsID0gJG5icGVycGFnZT8kdGhpcy0+Y291bnRzb21ldGhpbmcoJHdoYXQsImlkIixhcnJheSgpLCR3aGVyZWNsYXVzZSwgJHdoZXJldmFsdWVzKTpmYWxzZTsKCQkJJHRoaXMtPnBhZ2luYXRlKCR3aGF0LCR0b3RhbCwkaWQsJHJldHVybmlkLCRwYXJhbXMsInNlYXJjaCIpOwoJCQkKCQkJLy8gd2UgbXVzdCBidWlsZCBhIGRldGFpbCBsaW5rIGZvciBlYWNoIHJlc3VsdCBlbGVtZW50CgkJCSRuZXdsaXN0ID0gYXJyYXkoKTsKCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pewoJCQkJJGl0ZW0gPSAkdGhpcy0+YWRkZnJvbnRlbmR1cmxzKCRpdGVtLCRwYXJhbXMsJGlkLCRsaW5rcmV0dXJuaWQpOwoJCQkJJGl0ZW0tPmlzX3NlbGVjdGVkID0gZmFsc2U7CgkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7CgkJCX0KCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRuZXdsaXN0KTsKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkd2hhdC4iX3BsdXJhbCIpKTsKCQkJCgkJfWVsc2V7CgkJCSR0aGlzLT5wYWdpbmF0ZSgkd2hhdCwwLCRpZCwkbGlua3JldHVybmlkLCRwYXJhbXMsInNlYXJjaCIpOwoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkbmV3bGlzdCk7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZXJyb3JfbXNnIiwkdGhpcy0+TGFuZygiZXJyb3Jfbm9pdGVtZm91bmQiKSk7CgkJfQoJCQoJCS8vIHdlIHJldHJpZXZlIHRoZSBkaXNwbGF5IHRlbXBsYXRlCgkJaWYoY291bnQoJGl0ZW1saXN0KSA9PSAwICYmICRlbXB0eXRlbXBsYXRlICE9ICIqKiIpewoJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJGVtcHR5dGVtcGxhdGUpOwoJCX1lbHNlewoJCQlpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkpCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0sICR0aGlzLT5HZXROYW1lKCkpOwoJCQlpZighaXNzZXQoJHRlbXBsYXRlKSB8fCAhJHRlbXBsYXRlKXsKCQkJCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNocmVzdWx0c3RlbXBsYXRlIiwiKioiKTsKCQkJCWlmKCR0ZW1wbGF0ZW5hbWUgPT0gIioqIikJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfIi4kd2hhdCk7CgkJCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCX0JCQoJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOwoJCX0KCQkKCX1lbHNlewoJCS8vIFNJTVBMRSBTRUFSQ0gKCQkKCQkkdGVtcGxhdGUgPSBmYWxzZTsKCQkkbGV2ZWxzID0gKCR3aGF0ID09ICItYWxsIik/JGxldmVsYXJyYXk6YXJyYXkoJHdoYXQpOwoJCQoJCS8vIHdlIHJldHJpZXZlIHRoZSBkaXNwbGF5IHRlbXBsYXRlCgkJLy8gaWYgdGhlIHVzZXIgaGFzIGFza2VkIGZvciBhIHNwZWNpZmljIGRpc3BsYXkgdGVtcGxhdGUsIHdlIHdpbGwgdXNlIGl0IGZvciBldmVyeSBjYXRlZ29yeSA6CgkJaWYoaXNzZXQoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pKQkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQlpZighaXNzZXQoJHRlbXBsYXRlKSB8fCAhJHRlbXBsYXRlKXsKCQkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2hyZXN1bHRzdGVtcGxhdGUiLCIqKiIpOwoJCQlpZigkdGVtcGxhdGVuYW1lID09ICIqKiIpewoJCQkJaWYoY291bnQoJGxldmVscykgPT0gMSl7CgkJCQkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfIi4kbGV2ZWxzWzBdKTsKCQkJCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCQl9ZWxzZXsKCQkJCQkkdGVtcGxhdGUgPSBmYWxzZTsKCQkJCX0KCQkJfWVsc2V7CgkJCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCX0KCQl9CgoJCQoJCWZvcmVhY2goJGxldmVscyBhcyAkbGV2ZWwpewoJCQkkd2hlcmVjbGF1c2UgPSAiIjsKCQkJJGZpZWxkcyA9ICR0aGlzLT5nZXRfbGV2ZWxzZWFyY2hmaWVsZHMoJGxldmVsKTsKCQkJJGtleXdvcmRzID0gJHRoaXMtPnBhcnNla2V5d29yZHMoaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbInNlYXJjaGZpZWxkIl0pKTsKCQkJZm9yZWFjaCgkZmllbGRzIGFzICRmaWVsZCl7CgkJCQlmb3JlYWNoKCRrZXl3b3JkcyBhcyAka2V5d29yZCl7CgkJCQkJJHdoZXJlY2xhdXNlIC49ICgkd2hlcmVjbGF1c2UgPT0gIiI/IiI6IiBPUiAiKS4iQS4iLiRmaWVsZC4iIExJS0UgJyUiLmFkZHNsYXNoZXMoJGtleXdvcmQpLiIlJyI7CgkJCQl9CgkJCX0KCQkJJHdoZXJlY2xhdXNlID0gIkEuYWN0aXZlPTEiLigkd2hlcmVjbGF1c2UgPT0gIiI/IiI6IiBBTkQgKCIuJHdoZXJlY2xhdXNlLiIpIik7CgkJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kbGV2ZWw7CgkJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKT8kcGFyYW1zWyJvcmRlcmJ5Il06MCwgJGxpbWl0LCAkd2hlcmVjbGF1c2UpOwoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1jb3VudCIsY291bnQoJGl0ZW1saXN0KSk7CgkJCQoJCQlpZihjb3VudCgkaXRlbWxpc3QpID4gMCl7CgoJCQkJJHRvdGFsID0gJG5icGVycGFnZT8kdGhpcy0+Y291bnRzb21ldGhpbmcoJGxldmVsLCJpZCIsYXJyYXkoKSwkd2hlcmVjbGF1c2UsIGFycmF5KCkpOmZhbHNlOwoJCQkJJHRoaXMtPnBhZ2luYXRlKCR3aGF0LCR0b3RhbCwkaWQsJHJldHVybmlkLCRwYXJhbXMsInNlYXJjaCIpOwoJCQkJCgkJCQkvLyB3ZSBtdXN0IGJ1aWxkIGEgZGV0YWlsIGxpbmsgZm9yIGVhY2ggcmVzdWx0IGVsZW1lbnQKCQkJCSRuZXdsaXN0ID0gYXJyYXkoKTsKCQkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsKCQkJCQkkaXRlbSA9ICR0aGlzLT5hZGRmcm9udGVuZHVybHMoJGl0ZW0sJHBhcmFtcywkaWQsJGxpbmtyZXR1cm5pZCk7CgkJCQkJJGl0ZW0tPmlzX3NlbGVjdGVkID0gZmFsc2U7CgkJCQkJYXJyYXlfcHVzaCgkbmV3bGlzdCwgJGl0ZW0pOwoJCQkJfQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtbGlzdCIsJG5ld2xpc3QpOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkbGV2ZWwuIl9wbHVyYWwiKSk7CgkJCQkJCQkKCQkJCWlmKCR0ZW1wbGF0ZSA9PSBGQUxTRSl7CgkJCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJzZWFyY2hfZ2VuZXJhbHJlc3VsdHMudHBsIik7CgkJCQl9ZWxzZXsKCQkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOwkJCQkKCQkJCX0KCQkJCQoJCQl9ZWxzZXsKCQkJCSR0aGlzLT5wYWdpbmF0ZSgkd2hhdCwwLCRpZCwkcmV0dXJuaWQsJHBhcmFtcywic2VhcmNoIik7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkaXRlbWxpc3QpOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlcnJvcl9tc2ciLCR0aGlzLT5MYW5nKCJlcnJvcl9ub2l0ZW1mb3VuZCIpKTsKCQkJfQoJCQlpZihjb3VudCgkaXRlbWxpc3QpID09IDAgJiYgJGVtcHR5dGVtcGxhdGUgIT0gIioqIil7CgkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJGVtcHR5dGVtcGxhdGUpOwkJCQkKCQkJfWVsc2VpZigkdGVtcGxhdGUgPT0gRkFMU0UpewoJCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJzZWFyY2hfZ2VuZXJhbHJlc3VsdHMudHBsIik7CgkJCX1lbHNlewoJCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsKCQkJfQoJCX0KCQkKCX0KCQoJLy8gIyBFTkQgU0VBUkNIIFJFU1VMVFMKCS8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCn1lbHNlewoJCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgkvLyAjIFNFQVJDSCBGT1JNCQoJCgkkd2hhdCA9IChpc3NldCgkcGFyYW1zWyJ3aGF0Il0pICYmIGluX2FycmF5KCRwYXJhbXNbIndoYXQiXSwkbGV2ZWxhcnJheSkpPyRwYXJhbXNbIndoYXQiXToiLWFsbCI7CglpZigkc2VhcmNobW9kZSA9PSAiYWR2YW5jZWQiICYmICR3aGF0ID09ICItYWxsIikJCSR3aGF0ID0gJGZpbmFsbGV2ZWw7CgoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgInNlYXJjaCIsICRsaW5rcmV0dXJuaWQpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAid2hhdCIsICR3aGF0KTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgInNlYXJjaG1vZGUiLCAkc2VhcmNobW9kZSk7CglpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkpCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImxpc3R0ZW1wbGF0ZSIsICRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdKTsKCWlmKGlzc2V0KCRwYXJhbXNbImxpbWl0Il0pKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJsaW1pdCIsICRwYXJhbXNbImxpbWl0Il0pOwoJaWYoaXNzZXQoJHBhcmFtc1siaW5saW5lIl0pKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJpbmxpbmUiLCAkcGFyYW1zWyJpbmxpbmUiXSk7CglpZihpc3NldCgkcGFyYW1zWyJvcmRlcmJ5Il0pKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJvcmRlcmJ5IiwgJHBhcmFtc1sib3JkZXJieSJdKTsKCWlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSkJCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm5icGVycGFnZSIsICRwYXJhbXNbIm5icGVycGFnZSJdKTsKCWlmKGlzc2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkpCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImRldGFpbHBhZ2UiLCAkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzZWFyY2h0aXRsZSIsICR0aGlzLT5MYW5nKCJzZWFyY2h0aXRsZSIpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigid2hhdCIsICgkd2hhdCA9PSAiLWFsbCIpP2ZhbHNlOiR0aGlzLT5MYW5nKCR3aGF0KSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInN1Ym1pdCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJzdWJtaXRzZWFyY2giLCAkdGhpcy0+TGFuZygic2VhcmNoYnRuIikpKTsKCglpZigkc2VhcmNobW9kZSA9PSAic2ltcGxlIil7CgkJLy8gV0UgQVJFIERPSU5HIEEgU0lNUExFIFNFQVJDSAoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigic2VhcmNoZmllbGQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwic2VhcmNoZmllbGQiLCIiLDUwKSk7CgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJzZWFyY2gudHBsIik7CgkJCgl9ZWxzZXsKCQkvLyBXRSBBUkUgRE9JTkcgQU4gQURWQU5DRUQgU0VBUkNICgoJCSR0aGlzLT5jcmVhdGVGaWVsZEZvcm0oJHdoYXQsICRpZCwgdHJ1ZSk7CgoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgic2VhcmNoXyIuJHdoYXQuIi50cGwiKTsKCQkKCX0KCQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwoJCgkvLyAjIEVORCBTRUFSQ0ggRk9STQoJLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwkKCQp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.sitemap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7CiRtb2RlID0gKGlzc2V0KCRwYXJhbXNbIm1vZGUiXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1sibW9kZSJdLGFycmF5KCJnb29nbGUiLCJ1cmxsaXN0IiwiZnJvbnRlbmQiKSkpPyRwYXJhbXNbIm1vZGUiXToiZnJvbnRlbmQiOwokd2hhdCA9IGlzc2V0KCRwYXJhbXNbIndoYXQiXSk/ZXhwbG9kZSgnfCcsJHBhcmFtc1sid2hhdCJdKTokbGV2ZWxhcnJheTsKJGxpbmtyZXR1cm5pZCA9IChpc3NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pKT8kdGhpcy0+Z2V0X3BhZ2VpZCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOiRyZXR1cm5pZDsKJGlubGluZSA9IChpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkgJiYgJHBhcmFtc1siaW5saW5lIl0pP3RydWU6ZmFsc2U7CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGkgPSAwOwokc2VsZWN0ID0gIiI7CiR0YWJsZXMgPSAiIjsKJG9yZGVyID0gIiI7CndoaWxlKCRpIDwgY291bnQoJGxldmVsYXJyYXkpKXsKCSRsZXZlbCA9ICRsZXZlbGFycmF5WyRpXTsKCSRpKys7Cgkkc2VsZWN0IC49ICgkc2VsZWN0PT0iIj8iIjoiLCAiKS4idGFibGUiLiRpLiIuYWxpYXMgdGFibGUiLiRpLiJfYWxpYXMsIHRhYmxlIi4kaS4iLm5hbWUgdGFibGUiLiRpLiJfbmFtZSI7CglpZigkaSA9PSAxKXsKCQkkdGFibGVzID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0YWJsZSIuJGk7Cgl9ZWxzZXsKCQkkdGFibGVzIC49ICIgTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0YWJsZSIuJGkuICIgT04gdGFibGUiLigkaS0xKS4iLmlkPXRhYmxlIi4kaS4iLnBhcmVudCI7Cgl9Cgkkb3JkZXIgLj0gKCRvcmRlcj09IiI/IiI6IiwgIikuInRhYmxlIi4kaS4iLml0ZW1fb3JkZXIiOwp9CiRxdWVyeSA9ICJTRUxFQ1QgJHNlbGVjdCBGUk9NICR0YWJsZXMgT1JERVIgQlkgJG9yZGVyIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgokbGFzdCA9IGFycmF5KCk7CiRjdXJyZW50bGV2ZWwgPSAxOwppZigkbW9kZSA9PSAnZnJvbnRlbmQnKQllY2hvICc8dWwgaWQ9IicuJHRoaXMtPkdldE5hbWUoKS4nX21hcCI+JzsKd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpewoJJHBhcnNlbGV2ZWwgPSAxOwoJd2hpbGUoJHBhcnNlbGV2ZWwgPD0gJGkpewoJCWlmKGluX2FycmF5KCRsZXZlbGFycmF5WyRwYXJzZWxldmVsLTFdLCR3aGF0KSAmJiAoIWlzc2V0KCRsYXN0WyRwYXJzZWxldmVsXSkgfHwgJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfYWxpYXMiXSAhPSAkbGFzdFskcGFyc2VsZXZlbF0pICl7CgkJCSR3YW50ZWR3aGF0ID0gKCRwYXJzZWxldmVsPT0kaSk/JGxldmVsYXJyYXlbJGktMV06JGxldmVsYXJyYXlbJHBhcnNlbGV2ZWxdOwoJCQkkd2FudGVkcGFyYW0gPSAoJHBhcnNlbGV2ZWw9PSRpKT8iYWxpYXMiOiJwYXJlbnQiOwoJCQkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kd2FudGVkd2hhdCwgJHdhbnRlZHBhcmFtPT4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9hbGlhcyJdKTsKCQkJJHByZXR0eXVybCA9ICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJGxpbmtyZXR1cm5pZCk7CgkJCWlmKCRtb2RlID09ICdmcm9udGVuZCcpewoJCQkJaWYoJGN1cnJlbnRsZXZlbCA9PSAkcGFyc2VsZXZlbCl7CgkJCQkJaWYoJGxhc3RbJGN1cnJlbnRsZXZlbF0pCWVjaG8gIjwvbGk+IjsKCQkJCX1lbHNlaWYoJGN1cnJlbnRsZXZlbCA+ICRwYXJzZWxldmVsKXsKCQkJCQl3aGlsZSgkY3VycmVudGxldmVsID4gJHBhcnNlbGV2ZWwpewoJCQkJCQllY2hvICI8L2xpPjwvdWw+PC9saT4iOwoJCQkJCQkkY3VycmVudGxldmVsLS07CgkJCQkJfQoJCQkJfWVsc2VpZigkY3VycmVudGxldmVsIDwgJHBhcnNlbGV2ZWwpewoJCQkJCSRjdXJyZW50bGV2ZWwrKzsKCQkJCQllY2hvICc8dWw+JzsKCQkJCX0KCQkJCWVjaG8gJzxsaT4nLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkbGlua3JldHVybmlkLCAkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9uYW1lIl0sICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkcHJldHR5dXJsKTsKCQkJfWVsc2VpZigkbW9kZSA9PSAndXJsbGlzdCcpewoJCQkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJGxpbmtyZXR1cm5pZCwgIiIsICRuZXdwYXJhbXMsICIiLCB0cnVlLCAkaW5saW5lLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpLicKJzsKCQkJfWVsc2VpZigkbW9kZSA9PSAnZ29vZ2xlJyl7CgkJCQkkcHJpb3JpdHkgPSA5IC0gJHBhcnNlbGV2ZWw7CgkJCQlpZigkcHJpb3JpdHkgPCAwKQkkcHJpb3JpdHkgPSAxOwoJCQkJJHByaW9yaXR5ID0gIjAuIi4kcHJpb3JpdHk7CgkJCQllY2hvICcKCTx1cmw+CgkJPGxvYz4nLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkbGlua3JldHVybmlkLCAiIiwgJG5ld3BhcmFtcywgIiIsIHRydWUsICRpbmxpbmUsICIiLCBmYWxzZSwgJHByZXR0eXVybCkuJzwvbG9jPgoJCTxwcmlvcml0eT4nLiRwcmlvcml0eS4nPC9wcmlvcml0eT4KCTwvdXJsPic7CgkJCX0KCQkJCgkJCSRsYXN0WyRwYXJzZWxldmVsXSA9ICRyb3dbInRhYmxlIi4kcGFyc2VsZXZlbC4iX2FsaWFzIl07CgkJfQoJCSRwYXJzZWxldmVsKys7Cgl9Cn0KaWYoJG1vZGUgPT0gJ2Zyb250ZW5kJyl7CgllY2hvICI8L2xpPiI7Cgl3aGlsZSgkY3VycmVudGxldmVsID4gMSl7CgkJZWNobyAiPC91bD48L2xpPiI7CgkJJGN1cnJlbnRsZXZlbC0tOwoJfQoJZWNobyAiPC91bD4iOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.toggle.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qIFBBUkFNUyA6DQp3aGF0KiA6ICdhY3RpdmUnIHx8ICdkZWZhdWx0Jw0KdGFibGVuYW1lKg0KcHJlZml4DQpwcmVmaXguaWQNCm5ld3ZhbCA6IG5ldyB2YWx1ZSBmb3IgYWN0aXZlICggMCB8fCAxICkNCiovDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokbmV3cGFyYW1zID0gaXNzZXQoJHBhcmFtc1snbGV2ZWxuYW1lJ10pP2FycmF5KCdhY3RpdmVfdGFiJz0+JHBhcmFtc1snbGV2ZWxuYW1lJ10pOmFycmF5KCk7DQoNCmlmKCAhaXNzZXQoJHBhcmFtc1snd2hhdCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pICkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQoNCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCiRkYnRhYmxlID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kcGFyYW1zWyd0YWJsZW5hbWUnXTsNCiRmaWVsZCA9ICRwYXJhbXNbJ3doYXQnXTsNCiRpdGVtaWQgPSBpc3NldCgkcGFyYW1zWydwcmVmaXgnXSk/JHBhcmFtc1skcGFyYW1zWydwcmVmaXgnXS4naWQnXTpmYWxzZTsNCiR2YWx1ZSA9IGlzc2V0KCRwYXJhbXNbJ25ld3ZhbCddKT8kcGFyYW1zWyduZXd2YWwnXToxOw0KDQppZigkZmllbGQgPT0gJ2FjdGl2ZScpew0KCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGFjdGl2ZT0/IFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdmFsdWUsICRpdGVtaWQpKTsNCn1lbHNlaWYoJGZpZWxkID09ICdkZWZhdWx0Jyl7DQoJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pICYmIGlzc2V0KCRwYXJhbXNbInBhcmVudGRlZmF1bHQiXSkgJiYgJHBhcmFtc1sicGFyZW50ZGVmYXVsdCJdKSB7DQoJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGlzZGVmYXVsdD0wIFdIRVJFIHBhcmVudD0/IjsNCgkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJwYXJlbnQiXSkpOw0KCX1lbHNlew0KCQkkcXVlcnkgPSAiVVBEQVRFICRkYnRhYmxlIFNFVCBpc2RlZmF1bHQ9MCI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCX0NCglpZigkaXRlbWlkKXsNCgkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXNkZWZhdWx0PTEgV0hFUkUgaWQ9PyI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGl0ZW1pZCkpOw0KCX0NCn0NCg0KDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/faq.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkNUTE1vZHVsZU1ha2VyIEZBUTwvdGl0bGU+CQoJPHN0eWxlPgoJCWEgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCQlhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KCQlkaXYucWRpdiB7IG1hcmdpbjogMjVweCAyNXB4IDgwcHggMjVweDsgfQoJCWgxIHsKCQkJdGV4dC1hbGlnbjogcmlnaHQ7CgkJCW1hcmdpbi1ib3R0b206IDA7CgkJfQoJCWRpdiNub3RpY2UgewoJCQl0ZXh0LWFsaWduOiByaWdodDsKCQl9CgkJI21lbnUgewoJCQlmb250LWZhbWlseTogVmVyZGFuYTsKCQkJcGFkZGluZzogMjVweCAwIDI1cHggNzVweDsKCQkJZm9udC13ZWlnaHQ6IGJvbGQ7CgkJfQoJCSNtZW51IGxpIHsKCQkJbWFyZ2luOiAycHg7CgkJfQoJCWRpdi5hbnN3ZXIgewoJCQliYWNrZ3JvdW5kLWNvbG9yIDogI2UxZWNmZTsKCQkJcGFkZGluZzogMTBweDsKCQkJYm9yZGVyOiAxcHggc29saWQgRGFya2JsdWU7CgkJCWJvcmRlci10b3A6IG5vbmU7CgkJfQoJCWRpdi5xdWVzdGlvbiB7IAoJCQlmb250LXdlaWdodDogYm9sZDsKCQkJYmFja2dyb3VuZC1jb2xvciA6ICNhNGM1ZmY7CgkJCXBhZGRpbmc6IDEwcHg7CgkJCWJvcmRlcjogMXB4IHNvbGlkIERhcmtibHVlOwoJCQlib3JkZXItYm90dG9tOiBub25lOwoJCX0KCQkuY29kZSB7CgkJCWRpc3BsYXk6IGJsb2NrOwoJCQliYWNrZ3JvdW5kLWNvbG9yOiBMaWdodEdyZXk7CgkJCWJvcmRlcjogMXB4IHNvbGlkIERhcmtHcmV5OwoJCQlwYWRkaW5nOiA1cHg7CgkJCW1hcmdpbjogMTBweDsKCQl9CgkJCgkJCQoJPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGgxPkNUTE1vZHVsZU1ha2VyIEZBUTwvaDE+CjxkaXYgaWQ9Im5vdGljZSI+Q292ZXJzIHRoZSBjcmVhdGVkIG1vZHVsZXMsIG5vdCBDVExNb2R1bGVNYWtlciBpdHNlbGYuLi48YnIvPmNsaWNrIDxhIGhyZWY9ImhlbHAuaHRtbCI+aGVyZTwvYT4gZm9yIGhlbHAgYWJvdXQgdGhlIG1vZHVsZSBjcmVhdGlvbi48L2Rpdj4KPHVsIGlkPSJtZW51Ij4KCgk8bGk+PGEgaHJlZj0iI3ExMCI+TW9kaWZ5aW5nIHRoZSBtb2R1bGUgLSB3aGVyZSB0byBzdGFydD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTkiPkNhbiBJIHB1dCA8aT5zbWFydHkgdGFnczwvaT4gaW4gdGhlIGl0ZW0ncyBmaWVsZHM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E1Ij5Ib3cgY2FuIEkgcmV0cmlldmUgPGk+aW1hZ2VzPC9pPiBpbiB0aGUgZGlzcGxheSB0ZW1wbGF0ZXM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMiI+SG93IGNhbiBJIGRpc3BsYXkgdmFsdWVzIGluc2lkZSBhbiA8aT5BcnJheTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExNSI+SG93IGNhbiBJIGNoYW5nZSB0aGUgPGk+ZGF0ZXMgZGlzcGxheSBmb3JtYXQ8L2k+PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMTgiPkhvdyBjYW4gSSBmb3JtYXQgdGhlIDxpPnBhZ2UgbWVudTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyMiI+SG93IGNhbiBJIGRpc3BsYXkgYSBsaXN0IG9mIGVsZW1lbnRzIHNvcnRlZCBpbiBhIGNlcnRhaW4gd2F5PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjQiPkhvdyBjYW4gSSBnZXQgdGhlIDxpPm51bWJlciBvZiBlbGVtZW50czwvaT4gaW4gYSBjYXRlZ29yeT88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTYiPkknbSB0cnlpbmcgdG8gZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMsIGJ1dCB0aGUgZGV0YWlsIHRlbXBsYXRlIGlzIHVzZWQgaW5zdGVhZC4gV2hhdCdzIGdvaW5nIG9uPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjMiPkFkbWluIHBhbmVsIGJyZWFrcyB3aGVuIEkgYWRkIGFuIGltYWdlIHRvIGFuIGl0ZW0uIFdoYXQncyBnb2luZyBvbj88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTIxIj5DYW4gSSBpbnRlZ3JhdGUgdGhlIDxpPkNvbW1lbnRzPC9pPiBtb2R1bGU/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMSI+V2FybmluZzogbW9kdWxlIDxpPiJpcyBub3QgcHJvcGVybHkgY2xlYW5pbmcgaW5wdXQgcGFyYW1zLiI8L2k+IFdoYXQncyBnb2luZyBvbj88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTEzIj5Ib3cgY2FuIEkgcmV0cmlldmUgaW5mb3JtYXRpb25zIGFib3V0IGFuIG9iamVjdCBvdGhlciB0aGFuIHRoZSBvbmUgSSdtIHdhdGNoaW5nPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMSI+Q2FuIEkgY2hhbmdlIHRoZSBmaWVsZCBpbnB1dHMgdGhhdCBhcmUgZGlzcGxheWVkIGluIHRoZSBtb2R1bGUncyA8aT5zZWFyY2ggZm9ybTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E0Ij5DYW4gSSBjaGFuZ2UgdGhlIDxpPmVkaXQgZm9ybTwvaT4gZm9yIGEgbGV2ZWw/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExNyI+SG93IGNhbiBJIGFkZCBhIDxpPmNvbmRpdGlvbjwvaT4gZm9yIGFuZCBlbGVtZW50J3MgaW5wdXQgdG8gYmUgYWNjZXB0ZWQ/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E3Ij5Ib3cgYXJlIHRoZSA8aT5kZWZhdWx0YWRtaW4gcGFuZWxzPC9pPiBnZW5lcmF0ZWQ/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyIj5Db3VsZCBJIHNob3cgdGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gaW4sIHNheSwgdGhlIHBhZ2UncyA8PC8+dGl0bGU+IHRhZz88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTE2Ij5Ib3cgY2FuIEkgYWRkIG1vZHVsZSBlbGVtZW50cyB0byBteSA8aT5nb29nbGUgc2l0ZW1hcDwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExOSI+SG93IGNhbiBJIGFkZCBhbiBleHBpcmF0aW9uIGZpZWxkPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjAiPkhvdyBjYW4gSSBzZXR1cCB0aGUgZnJvbnRlbmQgZWRpdCBhY3Rpb24gd2l0aCB0aGUgRnJvbnQgRW5kIFVzZXJzIG1vZHVsZT88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTMiPkNhbiBJIGNoYW5nZSBob3cgdGhlIDxpPnByZXR0eSB1cmxzPC9pPiBhcmUgZ2VuZXJhdGVkIGFuZCBpbnRlcnByZXRlZD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTgiPkNhbiBJIG1ha2UgbXkgbW9kdWxlIGFsd2F5cyBhY3QgYXMgaWYgdGhlICJmb3JjZWxpc3QiIHBhcmFtZXRlciB3YXMgZW5hYmxlZD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTE0Ij5XaGF0J3Mgd2l0aCB0aGlzIGdldF9tb2R1bGVHZXRWYXJzKCkgZnVuY3Rpb24/PC9hPjwvbGk+CgkKPC91bD4KCjxkaXYgaWQ9InF1ZXN0aW9ucyI+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTAiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Nb2RpZnlpbmcgdGhlIG1vZHVsZSAtIHdoZXJlIHRvIHN0YXJ0PzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+VG8gZ2V0IHlvdSBzdGFydGVkLCBoZXJlJ3MgYSBiYXNpYyBleHBsYW5hdGlvbiBvZiB0aGUgc3RydWN0dXJlIG9mIHRoZSBjcmVhdGVkIG1vZHVsZS48L3A+CgkJPHA+PGI+VGhlIGxhbmd1YWdlIGZpbGVzPC9iPjwvcD4KCQk8cD5JbiB0aGUgbGFuZy8gZm9sZGVyLCB5b3Ugd2lsbCBmaW5kIG9uZSBmaWxlIGZvciBlYWNoIHN1cHBvcnRlZCBsYW5ndWFnZS4gSW5zaWRlIGVhY2ggZmlsZSwgeW91IHNob3VsZCBoYXZlIHNldmVyYWwgbGluZXMgdGhhdCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+JGxhbmdbInBvc3RpbnN0YWxsIl0gPSAiTW9kdWxlIHN1Y2Nlc3NmdWxseSBhZGRlZC4iOzwvcHJlPgoJCTxwPlRoaXMgbGluZSBkZWZpbmVzIGEgc3RyaW5nIHJlZmVycmVkIHRvIGFzICJwb3N0aW5zdGFsbCIuIEluIGV2ZXJ5IGxhbmd1YWdlIGZpbGUsIHRoZXJlIHNob3VsZCBiZSBhIHN0cmluZyBmb3IgdGhpcyBrZXkuIFdoZW4gdGhlIG1vZHVsZXMgd2lzaGVzIHRvIGRpc3BsYXkgc29tZSB0ZXh0LCBpdCB3aWxsIGxvb2sgZm9yIHRoZSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUga2V5IGluIHRoZSBsYW5ndWFnZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVzZXIncyBsYW5ndWFnZS4gWW91IHdpbGwgbW9zdCBsaWtlbHkgd2lzaCB0byBjaGFuZ2UgdGhlc2UgZmlsZXMsIGJ1dCBiZSBjYXJlZnVsLiBFYWNoIHN0cmluZyBpcyBkZWxpbWl0ZWQgd2l0aCBxdW90ZXMgKGVpdGhlciAnIG9yICIpLCBhbmQgb2J2aW91c2x5IHlvdSBjYW4ndCB1c2UgdGhlc2UgZGVsaW1pdGVycyBpbnNpZGUgdGhlIHN0cmluZy4gSWYgeW91IHdpc2ggdG8gZG8gc28sIHlvdSdsbCBoYXZlIHRvIHVzZSBhbiBlc2NhcGUgc2lnbiA6IFwiIHdpbGwgZGlzcGxheSBhIHF1b3RlIHdpdGhvdXQgYmVpbmcgY29uc2lkZXJlZCBhcyBhIGRlbGltaXRlci48L3A+CgkJPHA+PGI+VGhlIHRlbXBsYXRlczwvYj48L3A+CgkJPHA+VGhlIGZpbGVzIGluIHRoZSB0ZW1wbGF0ZXMvIGZvbGRlciBjb250YWluIG5vIHBocCAtIGp1c3QgcGxhaW4gaHRtbCBhbmQgc21hcnR5IHRhZ3MuIFRoZXkgYXJlIHVzZWQgZm9yIHRoZSBsYXlvdXQgb2YgbW9zdCBhY3Rpb25zLjxici8+CgkJPHA+PGk+YWRtaW5wYW5lbC50cGw8L2k+IGlzIHRoZSBsYXlvdXQgZm9yIHRoZSBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggbGV2ZWwgaW4gdGhlIGFkbWluIHBhbmVsICh0byBtb2RpZnkgdGhpcywgc2VlIDxhIGhyZWY9IiNxNyI+dGhpcyB0b3BpYzwvYT4pPGJyLz4KCQk8aT5ub3Jlc3VsdC50cGw8L2k+IGlzIHVzZWQgd2hlbiB0aGVyZSBhcmUgbm8gaXRlbSB0byBkaXNwbGF5LiBUeXBpY2FsbHksIHRoaXMgaXMganVzdCBhIG1lc3NhZ2Ugc2F5aW5nIHRoYXQgbm90aGluZyB3YXMgZm91bmQuPGJyLz4KCQk8aT5zZWFyY2gudHBsPC9pPiBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBzaW1wbGUgc2VhcmNoIGZvcm0gKHdoZW4gY2FsbGluZyB0aGUgc2VhcmNoIGFjdGlvbiB3aXRoIHNlYXJjaG1vZGU9InNpbXBsZSIpLCB3aGljaCBzZWFyY2hlcyBpbiBhbGwgbGV2ZWxzLjxici8+CgkJPGk+c2VhcmNoX2dlbmVyYWxyZXN1bHRzLnRwbDwvaT4gaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgc2VhcmNoIHJlc3VsdHMgd2hlbiB5b3UgYXJlIHNlYXJjaGluZyBpbiBtb3JlIHRoYW4gb25lIGxldmVsIChvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGxpc3QgdGVtcGxhdGUgZm9yIHRoYXQgbGV2ZWwgaXMgdXNlZCkuPGJyLz4KCQk8aT5icm93c2VmaWxlcy50cGw8L2k+IGlzIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciB0aGUgZmlsZSBzZWxlY3Rpb24gcGFnZSAod2hlbiB1c2luZyB0YWJsZSBkaXNwbGF5KS48YnIvPgoJCUZvciBlYWNoIGxldmVsLCB5b3Ugc2hvdWxkIGhhdmUgYSA8aT5lZGl0TEVWRUxQUkVGSVgudHBsPC9pPiwgYSA8aT5zZWFyY2hfTEVWRUxOQU1FLnRwbDwvaT4gYW5kIHBvc3NpYmx5IGEgPGk+ZnJvbnRlbmRfYWRkX0xFVkVMUFJFRklYLnRwbDwvaT4uIFRoZSBmaXJzdCBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBhZG1pbiBmb3JtLCB3aGVuIGFuIGl0ZW0gb2YgdGhpcyBsZXZlbCBpcyBhZGRlZCBvciBlZGl0ZWQuIFRoZSBzZWNvbmQgaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgYWR2YW5jZWQgc2VhcmNoIGZvcm0uIFRoZSBsYXN0IGlzIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGZyb250ZW5kIGFkZCBhY3Rpb24gZm9yIHRoaXMgbGV2ZWwgKGlmIHlvdSBjaG9zZSB0byBjcmVhdGUgb25lKS48L3A+CgkJPHA+PGI+VGhlIGFjdGlvbiBmaWxlczwvYj48L3A+CgkJPHA+SW4gdGhlIHJvb3Qgb2YgdGhlIG1vZHVsZSBmb2xkZXJzLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCBmaWxlcyBoYXZlIGEgcHJlZml4IChlaXRoZXIgImFjdGlvbiIgb3IgIm1ldGhvZCIpLCBleGNlcHQgZm9yIHRoZSBtb2R1bGUgZmlsZSAoPGk+bW9kdWxlbmFtZS5tb2R1bGUucGhwPC9pPiksIHdoaWNoIGNvbnRhaW5zIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0cyBvZiB0aGUgY29kZS4gTWV0aG9kcyBhcmUgY2FsbGVkIHdoZW4gdGhlIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHVuaW5zdGFsbGVkLCBvciB1cGdyYWRlZCAtIGFuZCBhdCBubyBvdGhlciBtb21lbnQuIEFjdGlvbnMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgY21zIGFza3MgdGhlIG1vZHVsZSB0byBkbyBzb21ldGhpbmcgLSBlaXRoZXIgaW4gdGhlIGZyb250ZW5kIG9yIHRoZSBhZG1pbi4gQnV0IHRoZSBtb2R1bGUgaGFzIG1vcmUgYWN0aW9ucyB0aGFuIHRoZSBmaWxlcyB5b3Ugc2VlIHRoZXJlLiBPcGVuIHRoZSBtb2R1bGUgZmlsZSAoPGk+bW9kdWxlbmFtZS5tb2R1bGUucGhwPC9pPiksIGFuZCBsb29rIGZvciB0aGUgZnVuY3Rpb24gPGI+RG9BY3Rpb248L2I+IChzaG91bGQgYmUgYXJvdW5kIHRoZSA0MDB0aCBsaW5lKS4gWW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CWZ1bmN0aW9uIERvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkPS0xKXsKCQlnbG9iYWwgJGdDbXM7CgkJc3dpdGNoKCRhY3Rpb24pewoJCQljYXNlICJsaW5rIjoKCQkJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCJkZWZhdWx0IiwkcmV0dXJuaWQsIiIsJHBhcmFtcywiIix0cnVlKTsKCQkJCWJyZWFrOwoJCQljYXNlICJjaGFuZ2VkZWZ0ZW1wbGF0ZXMiOgoJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRrZXk9PiR2YWx1ZSl7CgkJCQkgICAgaWYoJGtleSAhPSAic3VibWl0IikJICAgJHRoaXMtPnNldFByZWZlcmVuY2UoJGtleSwgJHZhbHVlKTsKCQkJCX0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+InRlbXBsYXRlcyIsICJtb2R1bGVfbWVzc2FnZSI9PiJtZXNzYWdlX21vZGlmaWVkIikpOwoJCQkJYnJlYWs7CgkJCWNhc2UgImRlbGV0ZXRwbCI6CgkJCQkkbmV3cGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiPT4idGVtcGxhdGVzIik7CgkJCQkkZGVmdGVtcGxhdGVzID0gJHRoaXMtPmdldERlZmF1bHRUZW1wbGF0ZXMoKTsKCQkJICAgIGlmKGlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgJiYgIWluX2FycmF5KCRwYXJhbXNbInRwbG5hbWUiXSwgJGRlZnRlbXBsYXRlcykpewoJCQkJICAgIGlmKCR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1zWyJ0cGxuYW1lIl0pKQkgICAkbmV3cGFyYW1zWyJtb2R1bGVfbWVzc2FnZT4iXSA9ICR0aGlzLT5sYW5nKCJtZXNzYWdlX21vZGlmaWVkIik7CgkJCQl9CgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsKCQkJCWJyZWFrOzwvcHJlPgoJCTxwPmFuZCBzbyBvbi4uLjxici8+CgkJU29tZSBhY3Rpb25zIChtb3N0bHkgYmVjYXVzZSB0aGV5IGFyZSBzbWFsbCkgZG9uJ3QgaGF2ZSB0aGVpciBvd24gZmlsZS4gRWFjaCAiY2FzZSIsIGhlcmUsIGlzIHN1Y2ggYW4gYWN0aW9uLiBXaGVuIGFza2VkIGZvciBhbiBhY3Rpb24gdGhhdCBpcyBub3QgaW4gdGhlIGxpc3QsIHRoZSBtb2R1bGUgd2lsbCBsb29rIGZvciB0aGUgYWNjb3JkaW5nIGZpbGUgKGFjdGlvbi5BQ1RJT05OQU1FLnBocCkuPC9wPgoJCTxwPlNvIGhlcmUncyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBhY3Rpb25zIHlvdSBtaWdodCBub3RpY2UgaW4geW91ciBtb2R1bGU6CgkJPHVsPgoJCTxsaT48aT5saW5rPC9pPjogdGhlIGZyb250ZW5kICJsaW5rIiBhY3Rpb24sIHdoaWNoIGNyZWF0ZXMgYSBsaW5rIHRvIGFub3RoZXIgYWN0aW9uPC9saT4KCQk8bGk+PGk+ZGVmYXVsdDwvaT46IHRoZSBmcm9udGVuZCBkZWZhdWx0IGFjdGlvbiwgd2hpY2ggZGlzcGxheXMgZWxlbWVudHMgb3IgbGlzdCBvZiBlbGVtZW50czwvbGk+CgkJPGxpPjxpPnNlYXJjaDwvaT46IHRoZSBmcm9udGVuZCAic2VhcmNoIiBhY3Rpb24sIHdoaWNoIGRpc3BsYXlzIHRoZSBzZWFyY2ggZm9ybSBhbmQgc2VhcmNoIHJlc3VsdHM8L2xpPgoJCTxsaT48aT5mcm9udGVuZF9lZGl0PC9pPjogdGhlIGZyb250ZW5kIGFjdGlvbiB0byBhZGQvZWRpdCBlbGVtZW50cyAoYnJlYWtzIGludG8gRkVhZGRfKiBhY3Rpb25zKTwvbGk+CgkJPGxpPjxpPmRlZmF1bHRhZG1pbjwvaT46IHRoZSBhY3Rpb24gZm9yIHRoZSBhZG1pbiBwYW5lbCB3aGljaCBkaXNwbGF5cyB0aGUgbGlzdCBvZiBsZXZlbHMsIGVsZW1lbnRzLCB0ZW1wbGF0ZXMgYW5kIHNvIG9uPC9saT4KCQk8bGk+PGk+ZWRpdFRlbXBsYXRlPC9pPjogd2hlbiBhIG1vZHVsZSB0ZW1wbGF0ZSBpcyBlZGl0ZWQ8L2xpPgoJCTxsaT48aT5kZWxldGV0cGw8L2k+OiB3aGVuIGEgbW9kdWxlIHRlbXBsYXRlIGlzIGRlbGV0ZWQ8L2xpPgoJCTxsaT48aT5hZGRfb3B0aW9udmFsdWU8L2k+LDxpPnJlbmFtZV9vcHRpb252YWx1ZTwvaT4sPGk+bW92ZV9vcHRpb252YWx1ZTwvaT4gYW5kIDxpPmRlbGV0ZV9vcHRpb252YWx1ZTwvaT4gbWFuYWdlIHRoZSBvcHRpb25zIGZvciB0aGUgZHluYW1pYyBsaXN0IGZpZWxkczwvbGk+CgkJPGxpPjxpPmVkaXRMRVZFTFBSRUZJWDwvaT46IGZvciBlYWNoIGxldmVsLCB0aGUgYWN0aW9uIHRvIGFkZCBvciBlZGl0IGFuIGVsZW1lbnQgb2YgdGhlIGxldmVsPC9saT4KCQk8bGk+PGk+dG9nZ2xlPC9pPjogdXNlZCB3aGVuIGEgbGluayBpbiB0aGUgYWRtaW5wYW5lbCBpcyBjbGlja2VkIHRvIGNoYW5nZSB0aGUgImFjdGl2ZSIgb3IgImRlZmF1bHQiIHZhbHVlIG9mIGFuIGVsZW1lbnQ8L2xpPgoJCTxsaT48aT5tb3Zlc29tZXRoaW5nPC9pPjogdXNlZCB3aGVuIHRoZSBvcmRlciBvZiBlbGVtZW50cyBpcyBjaGFuZ2VkIGluIHRoZSBhZG1pbiBwYW5lbCwgb3Igd2hlbiBhbiBlbGVtZW50IGlzIGRlbGV0ZWQ8L2xpPgoJCTxsaT48aT5icm93c2VmaWxlczwvaT46IHVzZWQgd2hlbiB5b3Ugc2VsZWN0IGEgZmlsZSBmb3IgYW4gZWxlbWVudC4gSXQgZGlzcGxheXMgYSBsaXN0IG9mIHRoZSBjdXJyZW50IGZpbGVzIGFuZCB0aGUgdXBsb2FkIGZvcm0uPC9saT4KCQk8bGk+PGk+YWRkZmlsZXM8L2k+OiB1c2VkIHdoZW4gbmV3IGZpbGUocykgaXMoYXJlKSB1cGxvYWRlZC4gVGhpcyBhY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIGJyb3dzZWZpbGVzIGFjdGlvbiAoaW1hZ2VzIGFyZSByZXNpemVkIGhlcmUpLjwvbGk+CgkJPGxpPjxpPmFzc2lnbmZpbGU8L2k+OiBhc3NpZ25zIGFuIGV4aXN0aW5nIGZpbGUgdG8gdGhlIGl0ZW0gaW4gdGhlIGRhdGFiYXNlPC9saT4KCQk8L3VsPgoJCTxwPjxiPlRoZSBmdW5jdGlvbnM8L2I+PC9wPgoJCTxwPkFzaWRlIGZyb20gRG9BY3Rpb24sIHRoZSBtb2R1bGUgZmlsZSBjb250YWlucyBhIGxvdCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCBpbiBhbnkgYWN0aW9uLiBNb3N0IG9mIHRoZW0gYXJlIHNpbXBseSBwcm9jZWR1cmVzIHRoYXQgdGhlIG1vZHVsZSBuZWVkcyB0byBkbyBxdWl0ZSBvZnRlbi4gSSd2ZSB0cmllZCB0byBjb21tZW50IHRoZW0gYXQgbGVhc3QgdG8gc2F5IHdoYXQgdGhleSdyZSB0aGVyZSBmb3IsIGJ1dCBoZXJlIEknbGwgdHJ5IHRvIGRlc2NyaWJlIHNvbWUgb2YgdGhlIG1vc3QgaW1wb3J0YW50IG9uZXMuPC9wPgoJCTx1bD4KCQk8bGk+VGhlIDxpPkJ1aWxkUHJldHR5VXJscygpPC9pPiBhbmQgPGk+U2V0UGFyYW1ldGVycygpPC9pPiBmdW5jdGlvbnMgY29udHJvbCBhcmUgbW9zdGx5IHVzZWQgZm9yIHByZXR0eSB1cmxzIChtb3JlIGluZm9ybWF0aW9ucyA8YSBocmVmPSIjcTMiPmhlcmU8L2E+KTwvbGk+CgkJPGxpPlRoZSA8aT5nZXRfbW9kdWxlR2V0VmFycygpPC9pPiBpcyB1c2VkIHRvIHJldHJpZXZlIGluZm9ybWF0aW9ucyBmcm9tIHRoZSB1cmwgYWJvdXQgb3RoZXIgY2FsbHMgb2YgdGhlIG1vZHVsZS4gSW4gbW9zdCBjYXNlcywgdGhpcyBpcyB3aGF0IHByb3ZpZGVzIHRoZSAkaXRlbS0+aXNfc2VsZWN0ZWQgYXR0cmlidXRlIG9mIGl0ZW1zLjwvbGk+CgkJPGxpPlRoZSA8aT5wbFJlc2l6ZSgpPC9pPiBmdW5jdGlvbiAobG9jYXRlZCBpbiBmdW5jdGlvbi5wbHJlc2l6ZS5waHApIGlzIHVzZWQgdG8gcmVzaXplIGltYWdlcyBhbmQgY3JlYXRlIHRodW1ibmFpbHM8L2xpPgoJCTxsaT5Gb3IgZWFjaCBsZXZlbCwgeW91IHdpbGwgaGF2ZSBhIDxpPmdldF9sZXZlbF9OQU1FT0ZMRVZFTCgpPC9pPi4gVGhlcmUgYXJlIGFtb25nIHRoZSBtb3N0IGltcG9ydGFudCwgYXMgdGhleSBhcmUgY2FsbCBldmVyeXRoaW5nIGFuIGVsZW1lbnQgKG9yIGxpc3Qgb2YgZWxlbWVudHMpIGlzIHJlcXVlc3RlZC4gSXQgd2lsbCBiZSBleHBsYWluZWQgYmVsb3cuPC9saT4KCQk8bGk+VGhlIDxpPmFkZGFkbWlubGlua3MoKTwvaT4gZnVuY3Rpb24gaXMgdXNlZCBmb3IgdGhlIGFkbWluIHBhbmVsIGFuZCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gYSA8aT5nZXRfbGV2ZWxfTkFNRU9GTEVWRUwoKTwvaT4gZnVuY3Rpb24uIEl0IHRha2VzIGV2ZXJ5IGl0ZW0gYW5kIGFkZCBsaW5rcyB0byBlZGl0LCBtb3ZlLCBkZWxldGUgdGhlIGl0ZW0gYW5kIHNvIG9uLjwvbGk+CgkJPC91bD4KCQk8cD48Yj5UaGUgZ2V0X2xldmVsIGZ1bmN0aW9uczwvYj48L3A+CgkJPHA+RWFjaCA8aT5nZXRfbGV2ZWxfTkFNRU9GTEVWRUwoKTwvaT4gZnVuY3Rpb24gcXVlcmllcyBlbGVtZW50cyBmcm9tIHRoZSBkYXRhYmFzZSwgY3JlYXRlcyBhbiBvYmplY3QgZm9yIGVhY2gsIGFuZCByZXR1cm4gYW4gYXJyYXkgb2YgdGhlc2Ugb2JqZWN0cyAoYmFzaWNhbGx5LCB0aGUgJGl0ZW1saXN0IHlvdSdyZSB1c2luZyBpbiB0ZW1wbGF0ZXMpLjxici8+CgkJVGhlIGZ1bmN0aW9uIGFjY2VwdHMgc2V2ZXJhbCBwYXJhbWV0ZXJzLCB3aGljaCBJJ2xsIGV4bGFpbiBoZXJlOjwvcD4KCQk8dWw+CgkJPGxpPjxpPiR3aGVyZTwvaT4gaXMgYW4gYXJyYXkgb2YgY29uZGl0aW9ucywgaW4gdGhlIGZvcm0gJGZpZWxkPT4kdmFsdWUuIEZvciBleGFtcGxlLCA8Y29kZT4kd2hlcmU9YXJyYXkoImFjdGl2ZSI9PjEpPC9jb2RlPiB3b3VsZCBtZWFuIHRoYXQgb25seSB0aGUgaXRlbXMgd2VyZSB0aGUgImFjdGl2ZSIgZmllbGQgaXMgZXF1YWwgdG8gMSBhcmUgcXVlcmllZC48L2xpPgoJCTxsaT48aT4kYWRtaW48L2k+IGNvbnRyb2xzIHdoZXRoZXIgdGhlIGFkZGFkbWlubGlua3MoKSBqdXN0IGRpc2N1c3NlZCBzaG91bGQgYmUgY2FsbGVkLiBJZiBpdCBpcywgdGhlICRpZCBhbmQgJHJldHVybmlkIHBhcmFtZXRlcnMgYXJlIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlIHRoZXkgYXJlbid0LjwvbGk+CgkJPGxpPjxpPiRvcmRlcjwvaT4gY29udHJvbHMgdGhlIHdheSB0aGUgbGlzdCBvZiBlbGVtZW50cyBzaG91bGQgYmUgb3JkZXJlZC4gUG9zc2libGUgdmFsdWVzIGFyZSAibW9kaWZpZWQiLCAiY3JlYXRlZCIsICJuYW1lIiBvciBmYWxzZSAoaW4gd2hpY2ggY2FzZSB0aGUgaXRlbSBvcmRlciBkZWZpbmVkIGluIHRoZSBhZG1pbiBwYW5lbCBpcyB1c2VkKTwvbGk+CgkJPGxpPjxpPiRsaW1pdDwvaT4gY29udHJvbHMgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkPC9saT4KCQk8bGk+PGk+JGN1c3RvbXdoZXJlPC9pPiBhbmQgPGk+JGN1c3RvbXZhbHVlczwvaT4gYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlICR3aGVyZSBwYXJhbWV0ZXIuIFdoZW4geW91IHdhbnQgdG8gY3JlYXRlIGEgcXVlcnkgbW9yZSBjb21wbGljYXRlZCB0aGFuIHRoZSAkd2hlcmUgcGFyYW1ldGVyIGFsbG93cywgeW91IGNhbiBwcm92aWRlIHRoZSBzdHJpbmcgcXVlcnkgaW4gJGN1c3RvbXdoZXJlIGFuZCB0aGUgYXJyYXkgb2YgdmFsdWVzIGluICRjdXN0b212YWx1ZXMuPC9saT4KCQk8L3VsPgoJCTxwPkhvcGUgdGhpcyBnZXRzIHlvdSBnb2luZy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9uLCBvciB3aXNoIHRvIHNoYXJlIHRoZSBtb2RpZmljYXRpb25zIHlvdSd2ZSBkb25lLCBmZWVsIHRvIGNvbnRhY3QgbWUsIGVpdGhlciBhdCB0aGUgZm9yZ2Ugb3Igb24gdGhlIGZvcnVtLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTkiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBwdXQgc21hcnR5IHRhZ3MgaW4gdGhlIGl0ZW0ncyBmaWVsZHM/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5ZZXMuPC9wPgoJCTxwPkxldCdzIHNheSB5b3UgaGF2ZSBwcm9kdWN0cyB3aGljaCBoYXZlIGEgZGVzY3JpcHRpb24gZmllbGQsIGFuZCBpbiB0aGF0IGRlc2NyaXB0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIHB1dCBzb21lIHNtYXJ0eSBjb2RlLiBJZiB5b3UgdHJ5IGFuZCBwdXQsIHNheSwge3RpdGxlfSBpbiBhbiBhdHRlbXB0IHRvIGRpc3BsYXkgdGhlIHBhZ2UgdGl0bGUsIHlvdSBzaG91bGQgbm90aWNlIHRoYXQgInt0aXRsZX0iIHdpbGwgYmUgZGlzcGxheWVkIGV4YWN0bHkgbGlrZSB0aGF0IGluIHRoZSBwcm9kdWN0J3MgZGVzY3JpcHRpb24uIFRoYXQgaXMgYmVjYXVzZSBpdGVtcycgZmllbGRzIGFyZW4ndCBldmFsdWF0ZWQuPC9wPgoJCTxwPkhvd2V2ZXIsIGluIHlvdXIgdGVtcGxhdGUsIHlvdSBtYXkgY2hvb3NlIHRvIGV2YWx1YXRlIHRoZSBmaWVsZHMuIEZvciBleGFtcGxlLCBpbiB5b3VyIHRlbXBsYXRlLCBpZiBpbnN0ZWFkIG9mIHRoZSBzaW1wbGUgPGNvZGU+eyRpdGVtLT5kZXNjcmlwdGlvbn08L2NvZGU+IHlvdSB3cml0ZTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+e2V2YWwgdmFyPSRpdGVtLT5kZXNjcmlwdGlvbn08L3ByZT4KCQk8cD5Zb3Ugd2lsbCB0aGVuIG5vdGljZSB0aGF0IHt0aXRsZX0gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIHBhZ2UncyB0aXRsZSBpcyBkaXNwbGF5ZWQuPGJyLz4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTUiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgcmV0cmlldmUgaW1hZ2VzIGluIHRoZSBkaXNwbGF5IHRlbXBsYXRlcz88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPllvdSBwdXQgeyRpdGVtLT5pbWFnZWZpZWxkfSBpbiB5b3VyIHRlbXBsYXRlLCBhbmQgdGhlIGltYWdlIGRvZXNuJ3Qgc2hvdyB1cC4uLjwvcD4KCQk8cD5UaGF0J3MgcHJldHR5IG11Y2ggbm9ybWFsLiAkaXRlbS0+aW1hZ2VmaWVsZCBpcyBpdHNlbGYgYW4gb2JqZWN0LCB0aGF0IGhhcyBzZXZlcmFsIGF0dHJpYnV0ZXM6PC9wPgoJCTx1bD4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtmaWxlcGF0aCAocmVsYXRpdmUgdXJsKTwvbGk+CgkJCTxsaT4kaXRlbS0+aW1hZ2VmaWVsZC0mZ3Q7ZXh0ICh0aGUgZmlsZSBleHRlbnNpb24pPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDt1cmwgKGFic29sdXRlIHVybCk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3NpemUgKHNpemUgaW4gYnl0ZXMpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtzaXplX3dmb3JtYXQgKGZvcm1hdGVkIHNpemUpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtpbWFnZXNpemUgKGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3dpZHRoIChmb3IgaW1hZ2VzIG9ubHkpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtoZWlnaHQgKGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O2ltYWdlIChpbWFnZSB0YWc7IGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3RodW1ibmFpbCAodGh1bWJuYWlsIHVybCwgaWYgYXBwbGljYWJsZSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O2ZpbGVtdGltZSAobGFzdCBtb2RpZmllZCwgdW5peCB0aW1lKTwvbGk+CgkJCTxsaT4kaXRlbS0+aW1hZ2VmaWVsZC0mZ3Q7bW9kaWZpZWQgKGxhc3QgbW9kaWZpZWQsIGZvcm1hdGVkIHRpbWUpPC9saT4KCQk8L3VsPgoJCTxwPlRvIGRpc3BsYXkgdGhlIGltYWdlLCB5b3UgY2FuIHVzZSB7JGl0ZW0tPmltYWdlZmllbGQtPmltYWdlfSwgb3IgaWYgeW91IHdpc2ggbW9yZSBvcHRpb25zLCB5b3UgY2FuIGNyZWF0ZSB0aGUgaW1hZ2UgdGFnIHlvdXJzZWxmOjxici8+CgkJPHByZSBjbGFzcz0iY29kZSI+PDwvPmltZyBzcmM9InVwbG9hZHMveyRpdGVtLT5pbWFnZWZpZWxkLT5maWxlcGF0aH0iIGFsdD0iIi8+PC9wcmU+PC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTIiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgZGlzcGxheSB2YWx1ZXMgaW5zaWRlIGFuIEFycmF5PzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+SWYgeW91IGhhdmUgYSBsaXN0IGZpZWxkIHRoYXQgYWxsb3dzIG11bHRpcGxlIGNob2ljZXMgKGNoZWNrYm94ZXMgb3Igc2VsZWN0IGxpc3QpIGFuZCBzaW1wbHkgdXNlIHskaXRlbS0+ZmllbGRuYW1lfSBvciB7JGl0ZW0tPmZpZWxkbmFtZV9uYW1ldmFsdWV9IGluIHlvdXIgdGVtcGxhdGUsIHlvdSdsbCBwcm9iYWJseSBlbmQgdXAgd2l0aCB0aGlzIGJlaW5nIGRpc3BsYXllZDo8L3A+PHByZSBjbGFzcz0iY29kZSI+QXJyYXk8L3ByZT4KCQk8cD5UaGlzIGlzIG5vcm1hbC4gQXMgdGhlIGZpZWxkIGNvbnRhaW5zIChvciBjYW4gY29udGFpbikgbXVsdGlwbGUgdmFsdWVzLCBpdCBpcyBpbmRlZWQgYW4gYXJyYXkgb2YgdmFsdWVzLiBUbyBnZXQgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLCB5b3UgaGF2ZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcyBpbiBhIHdheSBsaWtlIHRoaXM6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPjw8Lz51bD4KCXtmb3JlYWNoIGZyb209JGl0ZW0tPmZpZWxkbmFtZV9uYW1ldmFsdWUgaXRlbT0ib25ldmFsdWUifQoJCTw8Lz5saT57JG9uZXZhbHVlfTw8Lz4vbGk+Cgl7L2ZvcmVhY2h9Cjw8Lz4vdWw+PC9wcmU+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTUiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgY2hhbmdlIHRoZSA8aT5kYXRlcyBkaXNwbGF5IGZvcm1hdDwvaT4/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5Qb3N0ZWQgQnk6IFNvbHV0aWMgb24gRGF0ZTogMjAwOS0wNS0wNyAxMDozMTxici8+CgkJVXNlOiA8Y29kZT57JGl0ZW0tPnlvdXJWYXJ8ZGF0ZV9mb3JtYXQ6IiVIOiVNIn08L2NvZGU+PC9wPgoJCTxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hcnR5Lm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubW9kaWZpZXIuZGF0ZS5mb3JtYXQucGhwIj5TZWUgdGhlIHNtYXJ0eSBlbnRyeSBhYm91dCBkYXRlIGZvcm1hdCBtb2RpZmllcjwvYT4gb3IgdGhlIG1vc3QgdXNlZnVsIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hcnR5Lm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubW9kaWZpZXJzLnBocCI+c21hcnR5IGxpc3Qgb2YgdmFyaWFibGUgbW9kaWZpZXJzPC9hPi48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTgiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgZm9ybWF0IHRoZSBwYWdlIG1lbnU/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5UaGUgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIHBhZ2VtZW51IGlzIHNwbGl0X2ludG9fcGFnZXMgKGluIG1vZHVsZSBmaWxlKSwgYnV0IHlvdSBzaG91bGQgYmUgYWJsZSB0byBmb3JtYXQgaXQgdGhlIHdheSB5b3UgbGlrZSB3aXRob3V0IG1vZGlmeWluZyB0aGUgZnVuY3Rpb24uPC9wPgoJCTxwPjxiPkNsYXNzZXMgYW5kIENTUzwvYj48YnIvPgoJCVRoZSBwYWdlbWVudSBpcyBpbiBhIGRpdiB3aXRoIGNsYXNzICJwYWdpbmF0aW9uIi4gRWFjaCBwYWdlIG51bWJlciBpcyBhbiBhbmNob3IoPDwvPmE+KSB3aXRoIGNsYXNzICJwYWdlbnVtYmVyIiwgYW5kIHRoZSBjdXJyZW50IHBhZ2UgYWxzbyBoYXMgdGhlIGNsYXNzICJjdXJyZW50Ii4gVGhlICIuLi4iIHNob3duIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IHBhZ2VzIGFyZSBzcGFucyB3aXRoIHRoZSBjbGFzcyAicGFnZW1lbnVvdmVyZmxvdyIsIGFuZCB0aGUgbGVmdCBhbmQgcmlnaHQgYXJyb3dzIGFyZSBhbmNob3JzIHJlc3BlY3RpdmVseSB3aXRoIGNsYXNzZXMgInByZXZpb3VzbGluayIgYW5kICJuZXh0bGluayIuPGJyLz4KCQlZb3UgbWF5IHVzZSB0aGVzZSBjbGFzc2VzIHRvIHN0eWxlIHlvdXIgcGFnZSBtZW51LiBZb3UgY2FuIGZpbmQgZXhhbXBsZXMgb2Ygc3R5bGVzIDxhIGhyZWY9Imh0dHA6Ly93d3cubWlzLWFsZ29yaXRtb3MuY29tLzIwMDcvMDMvMTYvc29tZS1zdHlsZXMtZm9yLXlvdXItcGFnaW5hdGlvbi8iIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiAoSSB0cmllZCB0byB1c2UgdGhlIHNhbWUgY2xhc3NlcywgYnV0IGZvciB1bmlmb3JtaXR5IHJlYXNvbnMgSSBkaWRuJ3QgdXNlIHNwYW5zLCBzbyBkb3VibGUtY2hlY2sgdGhlIGNzcykuPC9wPgoJCTxwPjxiPlN0cmluZ3M8L2I+PGJyLz4KCQlUbyBjaGFuZ2UgdGhlIHBhZ2UgZGVsaW1pdGVyICgifCIpIG9yIHRoZSAiLi4uIiwgbG9vayBhdCB0aGUgZmlyc3QgbGluZXMgbGFuZ3VhZ2UgZmlsZXMsIHJlc3BlY3RpdmVseSBhdCB0aGUgZW50cmllcyAicGFnZW1lbnVkZWxpbWl0ZXIiIGFuZCAicGFnZW1lbnVvdmVyZmxvdyIuPGJyLz4KCQlBcyBmb3IgdGhlICZsdDsgYW5kICZndDssIHRoZXkgYXJlIGhhcmQtY29kZWQgaW4gdGhlIGZ1bmN0aW9uIHNwbGl0X2ludG9fcGFnZXMsIGJ1dCBpdCBzaG91bGRuJ3QgYmUgdG9vIGRpZmZpY3VsdCB0byBjaGFuZ2UuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyMiI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBkaXNwbGF5IGEgbGlzdCBvZiBlbGVtZW50cyBzb3J0ZWQgaW4gYSBjZXJ0YWluIHdheT88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPldlIHdpbGwgbG9vayBhdCBob3cgdG8gY3JlYXRlIGEgbGlzdCBvZiBzb3J0ZWQgZWxlbWVudHMgaW4gdGhlIGZvbGxvd2luZyB3YXk6PC9wPgoJCTx1bD4KCQkJPGxpPltTb3J0aW5nIGZpZWxkXTx1bD4KCQkJCTxsaT5bZWxlbWVudF08L2xpPgoJCQkJPGxpPltlbGVtZW50XTwvbGk+CgkJCQk8bGk+W2VsZW1lbnRdPC9saT4KCQkJPC91bD48L2xpPgoJCQk8bGk+W1NvcnRpbmcgZmllbGRdPHVsPgoJCQkJPGxpPltlbGVtZW50XTwvbGk+CgkJCQk8bGk+Li4uPC9saT4KCQkJPC91bD48L2xpPgoJCTwvdWw+CgkJPHA+VGhlIGJhc2ljIGlkZWEgd2lsbCBiZSB0byBvcmRlciBlbGVtZW50cyBieSB0aGUgc29ydGluZyBmaWVsZCwgYW5kIG5vdGljZSB3aGVuIHRoZXJlJ3MgYSBjaGFuZ2UuPC9wPjxici8+CgkJPHA+PGI+T3JkZXIgYnkgcGFyZW50czwvYj48YnIvPgoJCUNyZWF0ZSB0aGUgZm9sbG93aW5nIHRlbXBsYXRlICh3aGljaCBJJ2xsIGNhbGwgIm9yZGVyX2J5X3BhcmVudHMiKTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJCTw8Lz51bD4KCQkJe2Fzc2lnbiB2YXI9InBhcmVudGZsYWciIHZhbHVlPWZhbHNlfQoJCQl7Zm9yZWFjaCBmcm9tPSRpdGVtbGlzdCBpdGVtPSJpdGVtIn0KCQkJCXtpZiAkaXRlbS0+cGFyZW50X25hbWUgIT0gJHBhcmVudGZsYWd9CgkJCQkJe2lmICRwYXJlbnRmbGFnfTw8Lz4vdWw+PDwvPi9saT57L2lmfQoJCQkJCTw8Lz5saT57JGl0ZW0tPnBhcmVudF9uYW1lfTw8Lz51bD4KCQkJCQl7YXNzaWduIHZhcj0icGFyZW50ZmxhZyIgdmFsdWU9JGl0ZW0tPnBhcmVudF9uYW1lfQoJCQkJey9pZn0KCQkJCTw8Lz5saT57JGl0ZW0tPm5hbWV9PDwvPi9saT4KCQkJey9mb3JlYWNofQoJCQk8PC8+L3VsPgoJCTwvcHJlPgoJCTxwPmFuZCBjYWxsIGl0IHVzaW5nIHtjbXNfbW9kdWxlIG1vZHVsZT0ibXltb2R1bGUiIHdoYXQ9Iml0ZW0iIGxpc3R0ZW1wbGF0ZT0ib3JkZXJfYnlfcGFyZW50cyJ9PC9wPgoJCTxwPjxiPk9yZGVyIGJ5IGZpZWxkPC9iPjxici8+CgkJTGV0J3Mgc2F5IHlvdXIgbGV2ZWwgaGFzIGEgZHJvcGRvd24gZmllbGQgbmFtZWQgIm15ZmllbGQiLCBhbmQgeW91IHdpc2ggdG8gbGlzdCBlbGVtZW50cyBzb3J0ZWQgb24gdGhhdCBmaWVsZC4gQ3JlYXRlIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUgKHdoaWNoIEknbGwgY2FsbCAib3JkZXJfYnlfbXlmaWVsZCIpOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkJPDwvPnVsPgoJCQl7YXNzaWduIHZhcj0iZmllbGRmbGFnIiB2YWx1ZT1mYWxzZX0KCQkJe2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9CgkJCQl7aWYgJGl0ZW0tPm15ZmllbGQgIT0gJGZpZWxkZmxhZ30KCQkJCQl7aWYgJGZpZWxkZmxhZ308PC8+L3VsPjw8Lz4vbGk+ey9pZn0KCQkJCQk8PC8+bGk+eyRpdGVtLT5teWZpZWxkfTw8Lz51bD4KCQkJCQl7YXNzaWduIHZhcj0iZmllbGRmbGFnIiB2YWx1ZT0kaXRlbS0+bXlmaWVsZH0KCQkJCXsvaWZ9CgkJCQk8PC8+bGk+eyRpdGVtLT5uYW1lfTw8Lz4vbGk+CgkJCXsvZm9yZWFjaH0KCQkJPDwvPi91bD4KCQk8L3ByZT4KCQk8cD5hbmQgY2FsbCBpdCB1c2luZyB7Y21zX21vZHVsZSBtb2R1bGU9Im15bW9kdWxlIiB3aGF0PSJpdGVtIiBsaXN0dGVtcGxhdGU9Im9yZGVyX2J5X215ZmllbGQiIG9yZGVyYnk9Im15ZmllbGQifTwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTI0Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIGdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY2F0ZWdvcnk/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3UncmUgZGlzcGxheWluZyBhIGxpc3QgdmlldyBvZiBoaWdoZXItbGV2ZWwgb2JqZWN0cyAobGlrZSBjYXRlZ29yaWVzKSwgeW91IGNhbiBzaW1wbHkgdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JGl0ZW0tPm5iY2hpbGRyZW59PC9wcmU+CgkJPHA+KHByb3ZpZGVkIGl0IGlzIGxvYWRlZCAtIHNlZSB0aGUgc2V0dGluZ3MgdGFiKTwvcD4KCQk8cD4kaXRlbS0+bmJjaGlsZHJlbiBnaXZlcyB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoaXMgdmVyeSAkaXRlbSBoYXMgKG5vdCB0aGUgY2F0ZWdvcnkgdGhpcyBpdGVtIGlzIGluKS4gSW4gb3RoZXIgd29yZHMsIGlmIHlvdSdyZSBvbiB0aGUgZmluYWwgbGV2ZWwsIHlvdSBjYW5ub3QgdXNlIHRoaXMgYXR0cmlidXRlIChmb3IgZmluYWwgbGV2ZWwgaXRlbXMgaGF2ZSBubyBjaGlsZHJlbikuPC9wPgoJCTxwPklmIHRoYXQncyB0aGUgY2FzZSwgYW5kIHlvdSB3aXNoIHRvIGdldCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHlvdXIgYXJlIGRpc3BsYXlpbmcsIHlvdSBjYW4gdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JGl0ZW1jb3VudH08L3ByZT4KCQk8cD5JZiB5b3Ugc2VwYXJhdGUgeW91ciBjb250ZW50IGludG8gcGFnZXMsICRpdGVtY291bnQgd2lsbCBzaG93IHRoZSBudW1iZXIgb2YgaXRlbXMgY3VycmVudGx5IGRpc3BsYXllZCBvbiB0aGUgcGFnZS4gVG8gZ2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgd2hlbiBzZXBhcmF0aW5nIGludG8gcGFnZXMsIHlvdSBjYW4gdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JHBhZ2VfdG90YWxpdGVtc308L3ByZT4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InE2Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SSdtIHRyeWluZyB0byBkaXNwbGF5IGEgbGlzdCBvZiBpdGVtcywgYnV0IHRoZSBkZXRhaWwgdGVtcGxhdGUgaXMgdXNlZCBpbnN0ZWFkLiBXaGF0J3MgZ29pbmcgb24/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3UncmUgb24gdGhlIGZpbmFsIGxldmVsIGFuZCB0aGVyZSdzIG9ubHkgb25lIGl0ZW0gdG8gc2hvdywgdGhlIG1vZHVsZSB3b24ndCBkaXNwbGF5IHRoZSBsaXN0IHZpZXcgYnV0IHdpbGwgaW1tZWRpYXRlbHkgc2hvdyB0aGUgZGV0YWlscyBvZiB0aGlzIGl0ZW0sIHNvIHRoYXQgdGhlIHVzZXIgZG9lc24ndCBoYXZlIHRvIGNsaWNrIHR3aWNlIGZvciBubyByZWFzb24uPC9wPgoJCTxwPklmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGxpc3QgdmlldyBhbnl3YXksIHRoZXJlIGlzIG5vdyAgYSAiZm9yY2VsaXN0IiBwYXJhbWV0ZXIgdGhhdCB3aWxsIGRvIHRoZSBqb2IgKHNlZSB0aGUgaGVscCBvZiB5b3VyIG1vZHVsZSkuIFlvdXIgdGFnIHNob3VsZCBiZWNvbWU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPntjbXNfbW9kdWxlIG1vZHVsZT0icHJvZHVjdHMiIHdoYXQ9InByb2R1Y3QiIGZvcmNlbGlzdD0iMSJ9PC9wcmU+CgkJPHA+VG8gc2V0IGZvcmNlbGlzdCB0byB0cnVlIGJ5IGRlZmF1bHQsIDxhIGhyZWY9IiNxOCI+bG9vayBoZXJlPC9hPi48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMjMiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5BZG1pbiBwYW5lbCBicmVha3Mgd2hlbiBJIGFkZCBhbiBpbWFnZSB0byBhbiBpdGVtLiBXaGF0J3MgZ29pbmcgb24/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5EdXJpbmcgbW9kdWxlIGNyZWF0aW9uLCB5b3UgY2hvc2UgZm9yIGVhY2ggbGV2ZWwgd2hpY2ggZmllbGRzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgYWRtaW4gcGFuZWwgbGlzdCBvZiBpdGVtcy4gSW4gdGhlIGhlbHAgdGFiIG9uIHRoaXMgc3RlcCBvZiB0aGUgbW9kdWxlIGNyZWF0aW9uLCBpdCB3YXMgc3BlY2lmaWNhbGx5IHdyaXR0ZW4gdGhhdCB5b3UgY2Fubm90IG5vcm1hbGx5IHVzZSBmaWxlIGZpZWxkcyBpbiB0aGUgYWRtaW4gcGFuZWwgbGlzdHMgKHRvIGRvIHNvLCB5b3Ugd291bGQgaGF2ZSB0byBhZGQgYSBjb25kaXRpb24gaW4gYWRtaW5wYW5lbC50cGwgYXMgZXhwbGFpbmVkIDxhIGhyZWY9IiNxNyI+aGVyZTwvYT4pLjwvcD4KCQk8cD5SZW1vdmUgdGhlIGZpbGUgZmllbGQgZnJvbSB0aGUgYWRtaW4gcGFuZWwgdmlldy48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4JCgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMjEiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBpbnRlZ3JhdGUgdGhlIDxpPkNvbW1lbnRzPC9pPiBtb2R1bGU/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD48Yj5ZZXMuPC9iPiBJbiBmYWN0LCB0aGUgQ29tbWVudHMgbW9kdWxlIG1ha2VzIHRoaXMgdmVyeSBlYXN5IGZvciBhbnkgb3RoZXIgbW9kdWxlLjwvcD4KCQk8cD5PcGVuIHRoZSBkZXRhaWwgdGVtcGxhdGUgZm9yIHlvdXIgbGFzdCBsZXZlbCBlbGVtZW50cywgYW5kIHNpbXBseSBhZGQgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+e2Ntc19tb2R1bGUgbW9kdWxlPSJjb21tZW50cyIgbW9kdWxlbmFtZT0iTkFNRU9GWU9VUk1PRFVMRSIgcGFnZWlkPSRpdGVtLT5pZH08L3ByZT4KCQk8cD5XaGVyZSBOQU1FT0ZZT1VSTU9EVUxFIGlzLCBvZiBjb3Vyc2UsIHRoZSBuYW1lIG9mIHlvdXIgbW9kdWxlLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExMSI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPldhcm5pbmc6IG1vZHVsZSAiaXMgbm90IHByb3Blcmx5IGNsZWFuaW5nIGlucHV0IHBhcmFtcy4iIFdoYXQncyBnb2luZyBvbj88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlsqKiogVGhhbmtzIHRvIGlrdWxpcywgdGhpcyB3YXMgZGVmaW5pdGVseSBmaXhlZCBpbiAxLjguNC4yIGFuZCBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtIGFueW1vcmUgKioqXTwvcD4KCQk8cD5UaGUgYWR2YW5jZWQgc2VhcmNoIGZvcm0gd291bGQgbmVlZCB0byByZWdpc3RlciBhIHBhcmFtIGZvciBlYWNoIGZpZWxkIG9mIGVhY2ggbGV2ZWwsIHdoaWNoIEkgZmluZCByYXRoZXIgaW5lbGVnYW50LiBGb3IgdGhhdCByZWFzb24gdGhlIFJlc3RyaWN0VW5rbm93blBhcmFtcyBvcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQuPC9wPgoJCTxwPjxiPklmIHlvdSBhcmUgbm90IHVzaW5nIHRoZSBhZHZhbmNlZCBzZWFyY2ggZm9ybTwvYj4sIHlvdSBjYW4gc2FmZWx5IGFjdGl2YXRlIHRoZSBSZXN0cmljdFVua25vd25QYXJhbXMoKSBvcHRpb24uIEVkaXQgdGhlIG1vZHVsZSBmaWxlIChtb2R1bGVuYW1lLm1vZHVsZS5waHApLCBmaW5kIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24sIGFuZCBlZGl0IHRoZSBmb2xsb3dpbmcgbGluZSA6CgkJPHByZSBjbGFzcz0iY29kZSI+CQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKGZhbHNlKTs8L3ByZT4KCQl0bzoKCQk8cHJlIGNsYXNzPSJjb2RlIj4JCSR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTs8L3ByZT48L3A+CgkJPHA+PGI+SWYgeW91IGRvIHVzZSB0aGUgYWR2YW5jZWQgc2VhcmNoPC9iPiwgSSB3b3VsZCBzdWdnZXN0IGRpc2FibGluZyB0aGUgIkFsbG93IHBhcmFtZXRlciBjaGVja3MgdG8gY3JlYXRlIHdhcm5pbmcgbWVzc2FnZXMiIGluIHRoZSBDTVMgR2xvYmFsIFNldHRpbmdzLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExMyI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSByZXRyaWV2ZSBpbmZvcm1hdGlvbnMgYWJvdXQgYW4gb2JqZWN0IG90aGVyIHRoYW4gdGhlIG9uZSBJJ20gd2F0Y2hpbmc/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JbiBhbnkgbW9kdWxlIHRlbXBsYXRlLCB5b3UgY2FuIHJldHJpZXZlIGEgd2hvbGUgaXRlbSBvYmplY3QgdXNpbmcgdGhlIGZvbGxvd2luZyBzbWFydHkgdGFnOiA8Y29kZT57TU9EVUxFTkFNRV9nZXRfbGV2ZWxpdGVtfTwvY29kZT4uPC9wPgoJCTxwPlRoZSB0YWcgcmVxdWlyZXMgMyBwYXJhbWV0ZXJzIDogd2hhdCAocmV0cmlldmUgYW4gaXRlbSBmcm9tIHdoaWNoIGxldmVsKSwgYWxpYXMgKHRoZSBpdGVtJ3MgYWxpYXMpIGFuZCBhc3NpZ24gKGluIHdoaWNoIHNtYXJ0eSB2YXJpYWJsZSB0aGlzIHNob3VsZCBiZSBzdG9yZWQpLjxici8+CgkJU28gYSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgkJe215bW9kdWxlX2dldF9sZXZlbGl0ZW0gd2hhdD0iY2F0ZWdvcnkiIGFsaWFzPSJteWZpcnN0Y2F0ZWdvcnkiIGFzc2lnbj0iY2F0b2JqZWN0In08L3ByZT4KCQk8cD5BbmQgeW91IGNhbiB0aGVuIHVzZSB0aGUgYXNzaWduZWQgb2JqZWN0IHRvIGRpc3BsYXkgaW5mb3JtYXRpb246PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgkJeyRjYXRvYmplY3QtPm5hbWV9PC9wcmU+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQkKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTEiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgdGhlIGZpZWxkIGlucHV0cyB0aGF0IGFyZSBkaXNwbGF5ZWQgaW4gdGhlIG1vZHVsZSdzIGFkdmFuY2VkIHNlYXJjaCBmb3JtPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+WWVzLjwvYj48L3A+CgkJPHA+RnJvbSBDVExNb2R1bGVNYWtlciAxLjguMywgaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIHdoaWNoIGZpZWxkcyB3aWxsIGJlIHNob3duIGluIHRoZSBhZHZhbmNlZCBzZWFyY2ggZm9ybSB1cG9uIGZpZWxkIGNyZWF0aW9uLiBJZiB5b3UgaGF2ZSBjcmVhdGVkIHlvdXIgbW9kdWxlIHdpdGggYW4gZWFybGllciB2ZXJzaW9uIG9yIGRvIG5vdCB3YW50IHRvIGNyZWF0ZSBpdCBhZ2FpbiwgdGhlcmUncyBhbm90aGVyIHdheSBhcm91bmQuPC9wPgoJCTxwPlRoZSBzZWFyY2ggZm9ybSBmb3IgdGhlIG1vZHVsZSdzIHNlYXJjaCBhY3Rpb24gYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgInRlbXBsYXRlcyIgZm9sZGVyIG9mIHlvdXIgbW9kdWxlLjwvcD4KCQk8cD5UaGUgInNlYXJjaC50cGwiIGZpbGUgaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgc2VhcmNoIGZvcm0gd2hlbiB0aGUgInNpbXBsZSIgc2VhcmNobW9kZSBpcyBjaG9zZW4uPC9wPgoJCTxwPlRoZSAic2VhcmNoX2dlbmVyYWxyZXN1bHRzLnRwbCIgZmlsZSBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIHdlIGFyZSBzZWFyY2hpbmcgaW4gbW9yZSB0aGFuIG9uZSBsZXZlbCBhdCB0aGUgc2FtZSB0aW1lLiBPdGhlcndpc2UsIHRoZSBsZXZlbCdzIGRlZmF1bHQgbGlzdCBtb2R1bGUgaXMgdXNlZC48L3A+CgkJPHA+Rm9yIGVhY2ggbGV2ZWwgb2YgeW91ciBtb2R1bGUsIHRoZXJlIHNob3VsZCBiZSBhIGZpbGUgbmFtZWQgInNlYXJjaF9OQU1FT0ZUSEVMRVZFTC50cGwiLiBUaGlzIGNvbnRhaW5zIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGFkdmFuY2VkIHNlYXJjaCBmb3JtIGZvciB0aGlzIGxldmVsLiBJZiB5b3Ugd2FudCB0byByZW1vdmUgYSBmaWVsZCBpbnB1dCBmcm9tIHRoZSBzZWFyY2ggZm9ybSwgeW91IGNhbiBzaW1wbHkgZGVsZXRlIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIHRoZSB0ZW1wbGF0ZS4gKEkgd291bGQgcmVjb21tYW5kIHRvIG1ha2UgYSBiYWNrdXAgb2YgdGhlIG9yaWdpbmFsIHRlbXBsYXRlLCBpZiB5b3UgZXZlciBjaGFuZ2UgeW91ciBtaW5kISk8L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTQiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgdGhlIGVkaXQgZm9ybSBmb3IgYSBsZXZlbD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPjxiPlllcy48L2I+PC9wPgoJCTxwPlRoZSBlZGl0IGZvcm1zIGZvciBlYWNoIGxldmVsIGFyZSBnZW5lcmF0ZWQgZnJvbSB0ZW1wbGF0ZXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlICJ0ZW1wbGF0ZXMiIGZvbGRlciBvZiB5b3VyIG1vZHVsZS4gRm9yIGVhY2ggbGV2ZWwgb2YgeW91ciBtb2R1bGUsIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGVkaXQgZm9ybXJlIHNob3VsZCBiZSBpbiBhIGZpbGUgbmFtZWQgImVkaXRQUkVGSVhPRlRIRUxFVkVMLnRwbCIuPC9wPgoJCTxwPllvdSBjYW4gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSwgYnV0IGtlZXAgdHdvIHRoaW5ncyBpbiBtaW5kOjxici8+CgkJLSBJZiB5b3UgcmVtb3ZlIGFuIGlucHV0LCB0aGUgZm9ybSBtaWdodCBub3Qgd29yayBhbnltb3JlLjxici8+CgkJLSBJZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhlIGZpZWxkIGxhYmVscywgeW91IHNob3VsZCBwcmVmZXJhYmx5IGRvIHNvIGluIHRoZSBsYW5ndWFnZSBmaWxlLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgkKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTciPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBhZGQgYSBjb25kaXRpb24gZm9yIGFuZCBlbGVtZW50J3MgaW5wdXQgdG8gYmUgYWNjZXB0ZWQ/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5PbmUgb2YgeW91ciBsZXZlbCBoYXMsIGZvciBleGFtcGxlLCBhIG51bWVyaWMgZmllbGQgKHdoaWNoIHdlJ2xsIGNhbGwgIm15ZmllbGQiKSwgYW5kIHlvdSB3aXNoIHRvIG1ha2Ugc3VyZSBpdCdzIGJldHdlZW4sIHNheSwgMCBhbmQgMTAwPyBPZiBjb3Vyc2UgaXQncyBwb3NzaWJsZSwgYnV0IHlvdSdsbCBuZWVkIHRvIGVkaXQgdGhlIGNvZGUuPC9wPgoJCTxwPk9wZW4gdGhlIGVkaXQgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxldmVsIChhY3Rpb24uZWRpdExFVkVMUFJFRklYLnBocCkuIFNvbWV3aGVyZSBub3Qgc28gZmFyIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSwgeW91IHdpbGwgZmluZCB0aGUgZm9sbG93aW5nIGNvZGUgOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkvLyBDSEVDSyBJRiBUSEUgTkVFREVEIFZBTFVFUyBBUkUgVEhFUkUKIzEJCWlmKAkhaXNzZXQoJHBhcmFtc1siaXRlbW5hbWUiXSkgfHwgJHBhcmFtc1siaXRlbW5hbWUiXSA9PSAiIiApewojMgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsKIzMJCX1lbHNlaWYoZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9tb2R1bGVuYW1lX2l0ZW0iLCAkaXRlbS0+YWxpYXMsIGlzc2V0KCRwYXJhbXNbIml0ZW1pZCJdKT8kcGFyYW1zWyJpdGVtaWQiXTpmYWxzZSkpewojNAkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7CiM1CQl9ZWxzZXsKCQkjIyMjIyMjIyMjIyMgRE9JTkcgVEhFIFVQREFURQoJCTwvcHJlPgoJCTxwPkhlcmUgdHdvIGNvbmRpdGlvbnMgYXJlIGNoZWNrZWQgYmVmb3JlIHVwZGF0aW5nL2FkZGluZyB0aGUgZWxlbWVudDogZmlyc3QsIG9uIGxpbmUgIzEsIHdlIGNoZWNrIGlmIGEgbmFtZSB3YXMgZ2l2ZW4gKGFuZCBhbnkgb3RoZXIgbWFuZGF0b3J5IHZhbHVlLCBpZiBhbnkpLCBhbmQgaWYgaXQgd2Fzbid0LCB3ZSBkaXNwbGF5IGFuIGVycm9yIChsaW5lICMyKS4gT24gbGluZSAjMywgd2UgY2hlY2sgaWYgYW5vdGhlciBlbGVtZW50IGFscmVhZHkgaGFzIHRoZSBzYW1lIGFsaWFzIGFuZCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgKGxpbmUgIzQpIGlmIGl0IGlzIHRoZSBjYXNlLiBJZiBubyBwcm9ibGVtIGlzIG1ldCwgd2UgZ2V0IHRvIGxpbmUgIzUgYW5kIGdvIG9uIHdpdGggdGhlIHVwZGF0ZS48L3A+CgkJPHA+QmFzaWNhbGx5LCB5b3UgY2FuIGFkZCBhbnkgY29uZGl0aW9uIHlvdSBsaWtlIHRvIHRoZXNlLiBTbyB3aXRoIG91ciBleGFtcGxlLCBpdCBjb3VsZCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJLy8gQ0hFQ0sgSUYgVEhFIE5FRURFRCBWQUxVRVMgQVJFIFRIRVJFCgkJaWYoCSFpc3NldCgkcGFyYW1zWyJpdGVtbmFtZSJdKSB8fCAkcGFyYW1zWyJpdGVtbmFtZSJdID09ICIiICl7CgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsKCQl9ZWxzZWlmKGZhbHNlID09ICR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfbW9kdWxlbmFtZV9pdGVtIiwgJGl0ZW0tPmFsaWFzLCBpc3NldCgkcGFyYW1zWyJpdGVtaWQiXSk/JHBhcmFtc1siaXRlbWlkIl06ZmFsc2UpKXsKCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfYWxyZWFkeWV4aXN0cyIpKTsKCQl9ZWxzZWlmKCBmYWxzZSA9PSAoJGl0ZW0tPm15ZmllbGQgPiAwICYmICRpdGVtLT5teWZpZWxkIDw9IDEwMCkgKXsKCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygibXlfY3VzdG9tX2Vycm9yX21lc3NhZ2UiKSk7CgkJfWVsc2V7CgkJIyMjIyMjIyMjIyMjIERPSU5HIFRIRSBVUERBVEUKCQk8L3ByZT4KCQk8cD5XZSBqdXN0IGNoZWNrIGlmIHRoZSBmaWVsZCBpcyBvdmVyIDAgYW5kIGJlbG93L2VxdWFsIHRvIDEwMC4gSWYgaXQgaXMsIHdlIGdvIG9uIHdpdGggdGhlIHN1Ym1pc3Npb24uIE90aGVyd2lzZSB3ZSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgKHdoaWNoIHlvdSdkIG5lZWQgdG8gYWRkIHRvIHRoZSBsYW5ndWFnZSBmaWxlcywgb3RoZXJ3aXNlIHlvdSBjYW4gaGFyZGNvZGUgdGhlIGVycm9yIG1lc3NhZ2UuLi4pPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InE3Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGFyZSB0aGUgZGVmYXVsdGFkbWluIHBhbmVscyBnZW5lcmF0ZWQ/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3Ugb3BlbiB0aGUgL3RlbXBsYXRlcy8gZm9sZGVyLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCB0aGVyZSdzIG9ubHkgb25lIHRlbXBsYXRlIGZvciB0aGUgZGVmYXVsdGFkbWluIDogYWRtaW5wYW5lbC50cGwuIFRoaXMgaXMgdXNlZCBmb3IgYWxsIGxldmVscy4gU28gdGhlIGRpZmZlcmVuY2UgaXMgdGhlIGluZm9ybWF0aW9uIHBhc3NlZCB0byB0aGUgdGVtcGxhdGUuIEJlZm9yZSB0YWtpbmcgYSBsb29rIGF0IGl0LCBsZXQncyBzZWUgdGhhdCBpbmZvcm1hdGlvbi48YnIvPgoJCU9wZW4gdGhlIGFjdGlvbi5kZWZhdWx0YWRtaW4ucGhwIG9mIHlvdXIgbW9kdWxlLiBZb3Ugd2lsbCBub3RpY2UgdGhhdCBpdCBpcyBkaXZpZGVkIGludG8gdGFicyAoZGVsaW1pdGVkIGJ5IDxjb2RlPmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJuYW1lb2ZsZXZlbCIpOzwvY29kZT4gYW5kIDxjb2RlPmVjaG8gJHRoaXMtPkVuZFRhYigpOzwvY29kZT4pLiBGb3IgZWFjaCBsZXZlbCB0YWIsIHRoZSBsaXN0IG9mIGl0cyBpdGVtcyBpcyBmZXRjaGVkIGFuZCBzdG9yZWQgaW50byA8Y29kZT4kaXRlbWxpc3Q8L2NvZGU+LCB3aGljaCBpcyB0aGVuIHBhc3NlZCB0byBzbWFydHkuICRpdGVtbGlzdCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIGhhdmluZyB5b3VyIGZpZWxkcyBhcyBhdHRyaWJ1dGVzICgkaXRlbS0+ZmllbGQpLjxici8+CgkJSnVzdCBiZWxvdyB0aGF0LCB5b3Ugd2lsbCBub3RpY2UgbGluZXMgdGhhdCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJJGFkbWluc2hvdyA9IGFycmF5KAoJCQlhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpLAoJCQlhcnJheSgkdGhpcy0+TGFuZygiYWxpYXMiKSwiYWxpYXMiLGZhbHNlKSwKCQkJYXJyYXkoJHRoaXMtPkxhbmcoImFjdGl2ZSIpLCJ0b2dnbGVhY3RpdmUiLHRydWUpLAoJCQlhcnJheSgkdGhpcy0+TGFuZygibmJjaGlsZHJlbiIpLCJuYmNoaWxkcmVuIixmYWxzZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJyZW9yZGVyIiksIm1vdmVsaW5rcyIsdHJ1ZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksImRlbGV0ZWxpbmsiLHRydWUpCQkKCQkJKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidGFibGVpZCIsICJsZXZlbG5hbWVfdGFibGUiKTsKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImFkbWlucGFuZWwudHBsIik7PC9wcmU+CgkJPHA+VGhlIDxjb2RlPiRhZG1pbnNob3c8L2NvZGU+IHZhcmlhYmxlIGNvbnRhaW5zIHdoYXQgc2hvdWxkIGJlIHNob3duIGluIHRoZSBhZG1pbnBhbmVsIG9mIHRoYXQgbGV2ZWwuIFdlIHRoZW4gcGFzcyB0aGlzIHZhcmlhYmxlIHRvIHNtYXJ0eSAoYW5kIGFsc28gYSBuYW1lIGZvciB0aGUgdGFibGUpLCBhbmQgdGhlIGxhc3QgbGluZSB0ZWxscyBzbWFydHkgdG8gZGlzcGxheSB0aGUgdGVtcGxhdGUgImFkbWlucGFuZWwudHBsIi48YnIvPgoJCSRhZG1pbnNob3cgaXMgYW4gYXJyYXksIHdoZXJlIGVhY2ggZWxlbWVudCByZXByZXNlbnRzIGEgY29sdW1uIG9mIHRoZSBhZG1pbnBhbmVsLiBFYWNoIGNvbHVtbiwgaW4gdHVybiwgaXMgYW4gYXJyYXkgY29udGFpbmluZyB0aHJlZSB2YWx1ZXM6IHRoZSBmaXJzdCAocG9zaXRpb24gMCkgaXMgdGhlIHRpdGxlIG9mIHRoZSBjb2x1bW4sIGFuZCB0aGUgc2Vjb25kIChwb3NpdGlvbiAxKSBpcyB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0J3MgZmllbGQgdGhhdCBzaG91bGQgYmUgc2hvd24gaW4gdGhpcyBjb2x1bW4sIGFuZCB0aGUgdGhpcmQgKHBvc2l0aW9uIDIpIGlzIHdoZXRoZXIgdGhlIGluc3RhbnQgc2VhcmNoICh0aGUgc2VhcmNoYm94IGp1c3QgYXQgdGhlIHRvcCBvZiB0aGUgYWRtaW5wYW5lbCkgc2hvdWxkIHNraXAgdGhpcyBjb2x1bW4uPC9wPgoJCTxwPkZvciBleGFtcGxlLCA8Y29kZT5hcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpPC9jb2RlPiBtZWFucywgaGVyZSwgdGhhdCB3ZSB0YWtlICR0aGlzLT5MYW5nKCJuYW1lIikgKCJuYW1lIiBpbiB0aGUgbGFuZ3VhZ2UgdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWVkKSB0byBiZSB0aGUgdGl0bGUgb2YgdGhlIGNvbHVtbiwgYW5kIHRoYXQgZm9yIGVhY2ggcm93IG9mIHRoZSB0YWJsZSwgd2hhdGV2ZXIgaXMgaW4gJG9uZWl0ZW0tPmVkaXRsaW5rIHdpbGwgYmUgZGlzcGxheWVkICh0aGlzIHBhcnRpY3VsYXIgdmFsdWUgaXMgbm90IHN0cmljdGx5IHNwZWFraW5nIGEgZmllbGQgb2YgdGhlIGxldmVsLCBidXQgYW4gYXR0cmlidXRlIGNyZWF0ZWQgYnkgdGhlIGFkZGFkbWlubGlua3MoKSBmdW5jdGlvbikuIEl0IGFsc28gbWVhbnMgdGhhdCB0aGUgaW5zdGFudCBzZWFyY2ggd2lsbCA8aT5ub3Q8L2k+IHNraXAgdGhpcyBjb2x1bW4sIHNvIHRoZSB0ZXh0IGRpc3BsYXllZCB3aWxsIGJlIHVzZWQgdG8gc2VlIGlmIHRoZSByb3cgbWF0Y2hlcyB0aGUgc2VhcmNoIHdvcmRzLjwvcD4KCQk8cD5Ob3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBhZG1pbnBhbmVsLnRwbCBmaWxlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KIzEJCTw8Lz5kaXY+CiMyCQk8PC8+dGFibGUge2lmICR0YWJsZWlkfWlkPSJ7JHRhYmxlaWR9IiB7L2lmfWNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIzMJCTw8Lz50aGVhZD48PC8+dHI+CiM0CQkJe2ZvcmVhY2ggZnJvbT0kYWRtaW5zaG93IGl0ZW09Y29sdW1ufQojNQkJCQk8PC8+dGg+eyRjb2x1bW5bMF19PDwvPi90aD4KIzYJCQl7L2ZvcmVhY2h9CiM3CQk8PC8+L3RyPjw8Lz4vdGhlYWQ+CiM4CQk8PC8+dGJvZHk+CiM5CQl7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzcyByZXNldD10cnVlfQojMTAJCXtmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09b25laXRlbX0KIzExCQl7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzc30KIzEyCQk8PC8+dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgojMTMJCQl7Zm9yZWFjaCBmcm9tPSRhZG1pbnNob3cgaXRlbT1jb2x1bW59CiMxNAkJCQl7YXNzaWduIHZhcj1vbmV2YWwgdmFsdWU9JGNvbHVtblsxXX0KIzE1CQkJCTw8Lz50ZHtpZiAkY29sdW1uWzJdfSBjbGFzcz0iY3RsbW1fbm9zZWFyY2giey9pZn0+eyRvbmVpdGVtLT4kb25ldmFsfTw8Lz4vdGQ+CiMxNgkJCXsvZm9yZWFjaH0KIzE3CQk8PC8+L3RyPgojMTgJCXsvZm9yZWFjaH0KIzE5CQk8PC8+L3Rib2R5PgojMjAJCTw8Lz4vdGFibGU+CiMyMQkJPDwvPi9kaXY+PC9wcmU+CgkJPHA+Tm93LCBJIHdpbGwgYXNzdW1lIHRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhlIGh0bWwgdGFncywgYW5kIHdpbGwgbGVhdmUgYWxvbmUgdGhlIGNvZGUgY29uY2VybmluZyB0aGUgY2xhc3Nlcy4gSSB3aWxsIGV4cGxhaW4gbGluZXMgIzQgdG8gIzYsIHdoaWNoIHdyaXRlIHRoZSB0YWJsZSBoZWFkZXIgKHRoZSB0aXRsZXMgb2YgdGhlIGNvbHVtbnMpLCBhbmQgbGluZXMgIzkgdG8gIzE4LCB3aGljaCB3cml0ZSB0aGUgdGFibGUgcm93cy48L3A+CgkJPHA+TGluZSAjNSBpcyBleGVjdXRlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSAkYWRtaW5zaG93IHZhcmlhYmxlOyBpbiBvdGhlciB3b3JkcywgZm9yIGVhY2ggY29sdW1uIG9mIHRoZSB0YWJsZS4gTm93LCByZW1lbWJlciB0aGF0IGVhY2ggZWxlbWVudCBvZiB0aGUgJGFkbWluc2hvdyB2YXJpYWJsZSBpcyBhbiBhcnJheSBvZiB0d28gZWxlbWVudHMsIHNvIHdoYXQgbGluZSAjNSBkb2VzIGlzIGRpc3BsYXkgdGhlIGZpcnN0IChwb3NpdGlvbiBbMF0pIG9mIHRoZXNlIHR3byBlbGVtZW50cyBhcyB0aGUgY29sdW1uIGhlYWRlci48L3A+CgkJPHA+TGluZXMgIzExIHRvICMxNyBhcmUgcmVwZWF0ZWQgZm9yIGVhY2ggaXRlbSBpbiAkaXRlbWxpc3QgKGZvciBlYWNoIHJvdyBvZiB0aGUgdGFibGUpLiBGb3IgZWFjaCByb3csIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlICRhZG1pbnNob3cgdmFyaWFibGUsIGxpbmVzICMxNCBhbmQgIzE1IGFyZSByZXBlYXRlZC4gTGluZSAjMTQgZmV0Y2ggdGhlIG5hbWUgb2YgdGhlIG9iamVjdCdzIGF0dHJpYnV0ZSB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgKHBvc2l0aW9uIFsxXSBvZiB0aGUgYWRtaW5zaG93IGVsZW1lbnQpLCBhbmQgbGluZSAjMTUgZGlzcGxheXMgdGhpcyBhdHRyaWJ1dGUgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LjwvcD4KCQk8cD5BcyBvZiB0aGUgPGNvZGU+Y3RsbW1fbm9zZWFyY2g8L2NvZGU+IGNsYXNzLCBpdCBvbmx5IG1lYW5zIHRoYXQgdGhlIGluc3RhbnQgc2VhcmNoIHdpbGwgbm90IGNoZWNrIGludG8gdGhpcyBjb2x1bW4uPC9wPgoJCTxwPjxiPkFscmlnaHQuLi4gaG93IGNhbiBJIGNoYW5nZSB0aGlzPzwvYj48L3A+CgkJPHA+SWYgeW91IHdhbnQgdG8gbWFrZSBtYWpvciBjaGFuZ2VzLCB0aGUgYmVzdCB0aGluZyB0byBkbyB3b3VsZCBiZSB0byBjcmVhdGUgYW4gaW5kaXZpZHVhbCB0ZW1wbGF0ZSBmb3IgeW91ciBsZXZlbC4gSW4gdGhlIHRlbXBsYXRlcy8gZm9sZGVyLCBjcmVhdGUgYSBmaWxlIChsaWtlICJhZG1pbnBhbmVsX25hbWVvZmxldmVsLnRwbCIpLCBwdXQgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBpbiBpdCwgYW5kIGluIHRoZSBhY2NvcmRpbmcgdGFiIG9mIHRoZSBhY3Rpb24uZGVmYXVsdGFkbWluLnBocCBmaWxlLCBjaGFuZ2U8YnIvPgoJCTxjb2RlPmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTs8L2NvZGU+PGJyLz4KCQl0bzxici8+CgkJPGNvZGU+ZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsX25hbWVvZmxldmVsLnRwbCIpOzwvY29kZT48L3A+CgkJPHA+Tm93LCBsZXQncyBzYXkgeW91IHdpc2ggdG8gbWFrZSBhIHZlcnkgc2ltcGxlIG1vZGlmaWNhdGlvbi4gRm9yIGV4YW1wbGUsIHlvdSBhcmUgZGlzcGxheWluZyBhIGZpbGUgZmllbGQgKHdoaWNoIHdlJ2xsIGNhbGwgIm15ZmllbGQiKSBvbiB0aGUgYWRtaW5wYW5lbCwgYnV0IGluc3RlYWQgb2Ygc2hvd2luZyB0aGUgZmlsZXBhdGggeW91IHdvdWxkIGxpa2UgdG8gc2hvdyB0aGUgcGljdHVyZS4gV2hhdCB5b3UgY291bGQgZG8gaXMgdGhpczo8YnIvPgoJCUluIHRoZSBhZG1pbnBhbmVsLnRwbCB0ZW1wbGF0ZSBmaWxlLCB5b3UgY291bGQgY2hhbmdlIGxpbmUgIzE1IHRvIHNvbWV0aGluZyBsaWtlIHRoaXM6CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJCTw8Lz50ZHtpZiAkY29sdW1uWzJdfSBjbGFzcz0iY3RsbW1fbm9zZWFyY2giey9pZn0+CgkJCXtpZiAkb25ldmFsID09ICdteWZpZWxkJ30KCQkJCXtpZiAkb25laXRlbS0+JG9uZXZhbCAhPSAiIn08PC8+aW1nIHNyYz0ie3Jvb3RfdXJsfS91cGxvYWRzL3skb25laXRlbS0+JG9uZXZhbH0iIC8+ey9pZn0KCQkJe2Vsc2V9CgkJCQl7JG9uZWl0ZW0tPiRvbmV2YWx9CgkJCXsvaWZ9PDwvPi90ZD48L3ByZT4KCQk8cD5UaGlzIG1lYW5zIHRoYXQgc21hcnR5IGNoZWNrcyBpZiB0aGUgZmllbGQgd2UncmUgZGlzcGxheWluZyBpcyAnbXlmaWVsZCcsIGlmIGl0IGlzLCBhbmQgaWYgdGhlIHZhbHVlIGlzbid0IGVtcHR5LCBpdCBkaXNwbGF5cyB0aGUgaW1hZ2UuIElmIGl0IGlzbid0LCBpdCBqdXN0IGRpc3BsYXlzIHRoZSBmaWVsZCB2YWx1ZSBub3JtYWxseS48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4JCgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyIj4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+Q291bGQgSSBzaG93IHRoZSBuYW1lIG9mIHRoZSBzZWxlY3RlZCBpdGVtIGluLCBzYXksIHRoZSBwYWdlJ3MgPDwvPnRpdGxlPiB0YWc/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5bKioqIFNlZSB1cGRhdGUgYmVsb3cuLi4gKioqXTwvcD4KCQk8cD48Yj5UaGUgc2hvcnQgYW5zd2VyOjwvYj4gbm8uPC9wPgoJCTxwPjxiPlRoZSBsb25nIGFuc3dlcjo8L2I+IHllcywgbW9zdCBvZiB0aGUgdGltZS48L3A+CgkJPHA+VGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gb3IgY2F0ZWdvcnkgaXMgcmV0cmlldmVkIG9ubHkgd2hlbiB0aGUgPGNvZGU+e2Ntc19tb2R1bGUgbW9kdWxlPSJ5b3VybW9kdWxlIn08L2NvZGU+IHRhZyBpcyBlbmNvdW50ZXJlZCBpbiB0aGUgdGVtcGxhdGUgLSB3aGljaCBpcyBxdWl0ZSBhbHdheXMgd2F5IGFmdGVyIHRoZSBwYWdlJ3MgaGVhZC4gSG93ZXZlciwgaW4gbW9zdCBjYXNlcyBpbiBjb3VsZCBiZSByZXRyaWV2ZWQgYnkgYSB1c2VyLWRlZmluZWQgdGFnIChVRFQpLjwvcD4KCQk8cCBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5Ob3RlIHRoYXQgdGhpcyB3aWxsIG5vIHdvcmsgd2hlbiB0aGUgdGFnIGlzIGRpcmVjdGx5IGNhbGxlZCBvbiB0aGUgcGFnZSwgYW5kIHdpbGwgb25seSB3b3JrIHdoZW4gd2UgYXJlIGZvbGxvd2luZyBhIG1vZHVsZSBhY3Rpb24gKHdoZW4geW91IGhhdmUgY2xpY2tlZCBvbiBhIGxpbmspPC9wPgoJCTxwPkNyZWF0ZSB0aGUgZm9sbG93aW5nIFVEVCwgcmVwbGFjaW5nIE5BTUVfT0ZfWU9VUl9NT0RVTEUgd2l0aCB5b3VyIG1vZHVsZSdzIG5hbWU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPiRtb2R1bGVuYW1lID0gJ05BTUVfT0ZfWU9VUl9NT0RVTEUnOwpnbG9iYWwgJGdDbXM7CmlmKCBpc3NldCgkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV0pICYmCiAgICAkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV1bJ2FjdGl2ZSddICYmCiAgICBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKXsKCWdsb2JhbCAkc21hcnR5OwoJJGluc3RhbmNlID0gJGdDbXMtPm1vZHVsZXNbJG1vZHVsZW5hbWVdWydvYmplY3QnXTsKCSRnbG9iID0gJGluc3RhbmNlLT5nZXRfbW9kdWxlR2V0VmFycygpOwoJJHdhbnRlZGxldmVsID0gZmFsc2U7CgkkbW9kbGV2ZWxzID0gJGluc3RhbmNlLT5nZXRfbGV2ZWxhcnJheSgpOwoJaWYoaXNzZXQoJGdsb2JbJ2FsaWFzJ10pKXsKCQkkd2FudGVkbGV2ZWwgPSBpc3NldCgkZ2xvYlsnd2hhdCddKT8kZ2xvYlsnd2hhdCddOiRtb2RsZXZlbHNbY291bnQoJG1vZGxldmVscyktMV07CgkJJGFsaWFzID0gJGdsb2JbJ2FsaWFzJ107Cgl9ZWxzZWlmKGlzc2V0KCRnbG9iWydwYXJlbnQnXSkpewoJCWlmKGlzc2V0KCRnbG9iWyd3aGF0J10pKXsKCQkJJHdhbnRlZGxldmVsID0gJGluc3RhbmNlLT5nZXRfbmV4dGxldmVsKCRnbG9iWyd3aGF0J10sIGZhbHNlKTsKCQl9ZWxzZXsKCQkJJHdhbnRlZGxldmVsID0kbW9kbGV2ZWxzW2NvdW50KCRtb2RsZXZlbHMpLTJdOwoJCX0KCQkkYWxpYXMgPSAkZ2xvYlsncGFyZW50J107Cgl9CglpZigkd2FudGVkbGV2ZWwpewoJCSRnZXRmdW5jdGlvbiA9ICdnZXRfbGV2ZWxfJy4kd2FudGVkbGV2ZWw7CgkJJGl0ZW0gPSAkaW5zdGFuY2UtPiRnZXRmdW5jdGlvbihhcnJheSgnYWxpYXMnPT4kYWxpYXMpKTsKCQlpZihpc3NldCgkaXRlbVswXSkpCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkaXRlbVswXSk7Cgl9Cn0KCTwvcHJlPgoJPHA+TGV0J3Mgc2F5IHlvdSd2ZSBuYW1lZCB5b3VyIHRhZyAicmV0cmlldmVtb2RpbmZvIi4gVGhlbiwgYXQgdGhlIGJlZ2lubmluZyBvZiB5b3VyIHBhZ2UncyB0ZW1wbGF0ZSwgeW91IHJldHJpZXZlIHRoZSBtb2R1bGUgaW5mb3JtYXRpb25zIGJ5IHVzaW5nIHRoZSB0YWcgPGNvZGU+e3JldHJpZXZlbW9kaW5mbyBhc3NpZ249ImN1cnJlbnRlbGVtZW50In08L2NvZGU+LiBUaGlzIG1lYW5zIHRoYXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGl0ZW0gYXJlIHN0b3JlZCBpbiB0aGUgdmFyaWFibGUgJGN1cnJlbnRlbGVtZW50ICh3aGljaCBjb3VsZCBoYXZlIGJlZW4gYW55dGhpbmcpLiBTbyBpbiB0aGUgPDwvPnRpdGxlPiB0YWcgb2YgeW91ciB0ZW1wbGF0ZSwgeW91IGNvdWxkIHdyaXRlOiA8Y29kZT57aWYgJGN1cnJlbnRlbGVtZW50fXskY3VycmVudGVsZW1lbnQtPm5hbWV9ey9pZn08L2NvZGU+LCB3aGljaCB3b3VsZCBkaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgaWYgaXQgY291bGQgaGF2ZSBiZWVuIHJldHJpZXZlZC48L3A+Cgk8cCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5VUERBVEU6IHNpbmNlIHZlcnNpb24gMS44LCB5b3UgY2FuIGRvIHRoZSBzYW1lIHRoaW5nIG11Y2ggbW9yZSBlYXNpbHkganVzdCBieSB1c2luZyB0aGUgImJyZWFkY3J1bWJzIiBhY3Rpb24gYW5kIGl0cyBwYXJhbWV0ZXJzLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExNiI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBhZGQgbW9kdWxlIGVsZW1lbnRzIHRvIG15IGdvb2dsZSBzaXRlbWFwPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+Cgk8cD5UaGlzIHdpbGwgaGVscCB5b3UgaW5jbHVkZSB0aGUgbW9kdWxlIGVudHJpZXMgdG8gYSBnb29nbGUgc2l0ZW1hcCwgPHU+cHJvdmlkZWQgdGhhdCB5b3VyIG1vZHVsZSBlbGVtZW50cyBhcmUgYWxsIGRpc3BsYXllZCBvbiB0aGUgc2FtZSBwYWdlPC91Pi48L3A+PGJyLz4KCTxwPjxiPklmIHlvdSBhcmUgdXNpbmcgdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ3NnZW5lcmF0b3IiPmdvb2dsZSBzaXRlbWFwIGdlbmVyYXRvciBtb2R1bGU8L2E+OjwvYj48L3A+Cgk8L3A+T3BlbiB5b3VyIHNpdGVtYXAgZ2VuZXJhdG9yIChnc2l0ZW1hcC5waHApLCBhbmQganVzdCBiZWZvcmUgdGhlIGNsb3N1cmUgb2YgdGhlIHVybHNldCAoPGNvZGU+ZWNobyAnICA8PC8+L3VybHNldD4nLiAiXG4iOzwvY29kZT4pLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lczo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCSRtb2R1bGVuYW1lID0gIk5BTUVPRk1PRFVMRSI7CS8vIENIQU5HRSBUSElTIFRPIFRIRSBOQU1FIE9GIFlPVVIgTU9EVUxFCglpZiggIGlzc2V0KCRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXSkKCQkmJiAkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV1bImFjdGl2ZSJdCgkJJiYgJHRoZW1vZHVsZSA9ICRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXVsib2JqZWN0Il0KCQkpewoJCQkKCQkvLyBIRVJFIFlPVSBNVVNUIFBVVCBUSEUgSUQgT1IgQUxJQVMgT0YgVEhFIFBBR0UgVVNFRCBUTyBESVNQTEFZIFRIRSBNT0RVTEUgRUxFTUVOVFM6CgkJJGRldGFpbHBhZ2UgPSAiTVlQQUdFIjsKCQkKCQkkcGFyYW1zID0gYXJyYXkoIm1vZGUiPT4iZ29vZ2xlIiwgImRldGFpbHBhZ2UiPT4kZGV0YWlscGFnZSk7CgkJJHRoZW1vZHVsZS0+RG9BY3Rpb24oInNpdGVtYXAiLCAiIiwgJHBhcmFtcyk7Cgl9Cgk8L3ByZT4KCTxwPk9mIGNvdXJzZSwgcmVwbGFjZSBOQU1FT0ZNT0RVTEUgaW4gdGhlIGZpcnN0IGxpbmUgd2l0aCB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZSwgYW5kIGVudGVyIGEgZGV0YWlscGFnZSwgYmUgaXQgYW4gaWQgb3IgcGFnZSBhbGlhcy48L3A+Cgk8cD5Ob3RlIHRoYXQgeW91IGNvdWxkIGFsc28gdXNlIHRoZSAid2hhdCIgcGFyYW1ldGVyIHRvIHNwZWNpZnkgd2hpY2ggbGV2ZWxzIHlvdSB3aXNoIHRvIHNlZSBkaXNwbGF5ZWQgKHlvdSBjYW4gc3BlY2lmeSBzZXZlcmFsIGxldmVscyB3aXRoICJsZXZlbDF8bGV2ZWwyIiBhbmQgc28gb24pLiBPdGhlcndpc2UsIGFsbCBsZXZlbHMgd2lsbCBiZSBkaXNwbGF5ZWQuPC9wPjwvYnI+Cgk8cD48Yj5JZiB5b3UgYXJlIHVzaW5nIHRoZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NpdGVtYXBtcyI+U2l0ZU1hcCBNYWRlIFNpbXBsZTwvYT4gbW9kdWxlOjwvYj48L3A+Cgk8cD5TaW1wbHkgcHV0IHRoZSBjb2RlIGFib3ZlIGluIGEgVURUICh1c2VyLWRlZmluZWQtdGFnKSwgYW5kIGNhbGwgdGhlIFVEVCBhdCB0aGUgZW5kIG9mIHlvdXIgc2l0ZW1hcCdzIHRlbXBsYXRlLCBqdXN0IGJlZm9yZSA8Y29kZT48PC8+L3VybHNldD48L2NvZGU+LjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTE5Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIGFkZCBhbiBleHBpcmF0aW9uIGZpZWxkPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+Cgk8cD5Zb3Ugd2lzaCB0byBhZGQgYSBkYXRlIGZpZWxkIHRoYXQgd2lsbCBkZWNpZGUgd2hlbiB0aGUgaXRlbSB3aWxsIGJlIGRpc3BsYXllZCBvciBub3QgKGxpa2UgaW4gdGhlIG5ld3MgbW9kdWxlKS4gSXQgc2hvdWxkbid0IGJlIHZlcnkgaGFyZC48L3A+Cgk8cD5UbyBkbyB0aGlzLCB5b3Ugd2lsbCBuZWVkIHR3byBmaWVsZHMgKG9yIHRocmVlKTo8L3A+Cgk8dWw+CgkJPGxpPkEgImNoZWNrYm94IiB0eXBlIGZpZWxkIHRvIGNob29zZSB3aGV0aGVyIHRoZSBleHBpcmF0aW9uIGRhdGUgd2lsbCBiZSB1c2VkIG9yIG5vdCAod2UnbGwgY2FsbCBpdCAidXNlX2V4cGlyYXRpb24iKTwvbGk+CgkJPGxpPkEgImRhdGUiIHR5cGUgZmllbGQgdG8gY2hvb3NlIHRoZSBleHBpcmF0aW9uIGRhdGUgKHdlJ2xsIGNhbGwgaXQgImV4cGlyYXRpb25fZGF0ZSIpPC9saT4KCQk8bGk+KG9wdGlvbmFsbHkpIEFub3RoZXIgZGF0ZSBmaWVsZCAoZm9yIGJlZ2luIGRhdGUpPC9saT4KCTwvdWw+Cgk8cD5Gb3Igc2ltcGxpY2l0eSwgSSB3aWxsIGFzc3VtZSB3ZSBuZWVkIG9ubHkgb25lIGRhdGUgKHlvdSBzaG91bGQgZmlndXJlIG91dCB0aGUgcGFydCBmb3IgdGhlIHNlY29uZCBkYXRlKS48L3A+Cgk8cD5JbiB5b3VyIGxpc3QgdGVtcGxhdGUsIHVzZSB0aGUgZm9sbG93aW5nIGNvZGU6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+Cgl7Zm9yZWFjaCBmcm9tPSRpdGVtbGlzdCBpdGVtPSJpdGVtIn0KCQl7aWYgJGl0ZW0tPnVzZV9leHBpcmF0aW9uICYmICgkaXRlbS0+ZXhwaXJhdGlvbl9kYXRlfGRhdGVfZm9ybWF0OiIlcyIgJmx0OyAkc21hcnR5Lm5vdyl9CgkJCXRoZSBjb2RlIHRvIGRpc3BsYXkgdGhlIGl0ZW0uLi4KCQl7L2lmfQoJey9mb3JlYWNofQoJPC9wcmU+Cgk8cD5CYXNpY2FsbHksIHdlIG9ubHkgZGlzcGxheSB0aGUgaXRlbSB3aGVuIGEgY29uZGl0aW9uIGlzIG1ldCwgbmFtZWx5IHRoYXQgdXNlX2V4cGlyYXRpb24gaXMgb24sIGFuZCB0aGF0IHRoZSBleHBpcmF0aW9uIGRhdGUgaXMgbG93ZXIgKGJlZm9yZSkgdGhlIGN1cnJlbnQgZGF0ZS4gVG8gZG8gdGhlIG9wcG9zaXRlLCB5b3UgY2FuIGp1c3QgY2hhbmdlIHRoZSAmbHQ7IHRvIGEgJmd0Oy48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyMCI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBzZXR1cCB0aGUgZnJvbnRlbmQgZWRpdCBhY3Rpb24gd2l0aCB0aGUgRnJvbnQgRW5kIFVzZXJzIG1vZHVsZT88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJPHA+VGhpcyBpcyBkb25lIGluIHR3byBwYXJ0cy4gVGhlIGZpcnN0IHBhcnQgaXMgdG8gZGlzcGxheSB0aGUgZWRpdCBsaW5rIG9yIGVkaXQgZm9ybSBvbmx5IHRvIHNlbGVjdGVkIHVzZXJzIChvciBsb2dnZWQgaW4gdXNlcnMpLiBUaGlzIGlzIHRvIGJlIGRvbmUgd2l0aCB0aGUgRkVVIG1vZHVsZSAoYW5kIHBvc3NpYmx5IEN1c3RvbSBDb250ZW50KSwgYW5kIGFzIHN1Y2ggd2lsbCBub3QgYmUgY292ZXJlZCBoZXJlLiBUaGlzIGlzIG9ubHkgYWJvdXQgPGk+aGlkaW5nPC9pPiB0aGUgZWRpdGlvbiBmcm9tIG90aGVyIHVzZXJzLiBUaGUgc2Vjb25kIHBhcnQsIHdoaWNoIHdpbGwgYmUgY292ZXJlZCBoZXJlLCBpcyBhYm91dCB0aGUgcmVhbCBwcm90ZWN0aW9uLiBTYWRseSwgdGhpcyB3aWxsIHJlcXVpcmUgYSBsaXR0bGUgcHJvZ3JhbW1pbmcsIGJ1dCBldmVyeW9uZSBzaG91bGQgYmUgYWJsZSB0byBnZXQgdGhyb3VnaCB0aGlzIGVhc2lseS48L3A+Cgk8cD5JZiB5b3UncmUgd29uZGVyaW5nIGhvdyB0byBjaGFuZ2UgdGhlIGxvb2sgb2YgdGhlIGZvcm0sIHNlZSB0aGUgZnJvbnRlbmRfYWRkXyoudHBsIHRlbXBsYXRlcyBpbiB0aGUgdGVtcGxhdGVzIGZvbGRlci48L3A+Cgk8cD5CZWZvcmUgZWRpdGluZyBhbiBpdGVtIHRocm91Z2ggdGhlIGZyb250ZW5kLCB0aGUgZnVuY3Rpb24gZmVhZGRfcGVybWNoZWNrICh3aG9zZSBjb250ZW50IGlzIGluIHRoZSBmaWxlIGZ1bmN0aW9uLmZlYWRkX3Blcm1jaGVjay5waHApIGlzIGNhbGxlZC4gSWYgaXQgcmV0dXJucyB0cnVlIChpZiB0aGUgdmFsdWUgb2YgdGhlICRyZXR1cm4gdmFyaWFibGUgaXMgc2V0IHRvIHRydWUpLCB0aGUgdXNlciBoYXMgcGVybWlzc2lvbiB0byBlZGl0IHRoZSBpdGVtLCBvdGhlcndpc2UgKGlmIGl0IHJldHVybnMgZmFsc2UpLCB0aGUgYWNjZXNzIGlzIGRlbmllZC48YnIvPgoJSWYgeW91IG9wZW4gdGhlIGZpbGUgZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCwgeW91IHdpbGwgbm90aWNlIHRoYXQgYXNpZGUgZnJvbSBjb21tZW50cywgdGhlIGZ1bmN0aW9uIGlzIGVtcHR5LiBXZSB3aWxsIGhhdmUgdG8gZmlsbCBpdCBvdXQgZGVwZW5kaW5nIG9uIHdoYXQgd2Ugd2lzaCB0byBkby48L3A+Cgk8cD5UaGUgdmFyaWFibGVzIGF0IG91ciBkaXNwb3NpdGlvbiBhcmUgdGhlIGZvbGxvd2luZzo8dWw+CgkJPGxpPiRnQ21zICh0aGUgZ2xvYmFsIGNtcyBvYmplY3QsIHRocm91Z2ggd2hpY2ggd2Ugd2lsbCBiZSBhYmxlIHRvIGNhbGwgdGhlIEZFVSBtb2R1bGUpPC9saT4KCQk8bGk+JHdoYXQgKHRoZSBsZXZlbCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LCBhcyBnaXZlbiBieSB0aGUgIndoYXQiIHBhcmFtZXRlcik8L2xpPgoJCTxsaT4kYWxpYXMgKHRoZSBhbGlhcyBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LiBJZiBpdCBpcyBhIG5ldyBpdGVtLCAkYWxpYXMgc2hvdWxkIGJlIGZhbHNlKTwvbGk+CgkJPGxpPiRpdGVtaWQgKHRoZSBpZCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LiBJZiBpdCBpcyBhIG5ldyBpdGVtLCAkaXRlbWlkIHNob3VsZCBiZSBmYWxzZSk8L2xpPgoJPC91bD48L3A+Cgk8cD5Zb3UgbWlnaHQgbmVlZCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBvZiB0aGUgRkVVIG1vZHVsZTo8dWw+CgkJPGxpPkxvZ2dlZEluKCkgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4sIGFuZCBmYWxzZSBvdGhlcndpc2UuPC9saT4KCQk8bGk+TG9nZ2VkSW5JZCgpIHdpbGwgcmV0dXJuIHRoZSBpZCBvZiB0aGUgdXNlcjwvbGk+CgkJPGxpPkxvZ2dlZEluTmFtZSgpCXdpbGwgcmV0dXJuIHRoZSB1c2VybmFtZSBvZiB0aGUgdXNlcjwvbGk+CgkJPGxpPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwkZ3JvdXBpZCkJCXJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlciBpcyBhIG1lbWJlciBvZiB0aGUgZ3JvdXAsIGZhbHNlIG90aGVyd2lzZTwvbGk+CgkJPGxpPkdldEdyb3VwSUQoJGdyb3VwbmFtZSkJcmV0dXJucyB0aGUgZ3JvdXAgaWQgYXNzb2NpYXRlZCB0byBhIGdyb3VwIG5hbWU8L2xpPgoJPC91bD48L3A+PGJyLz4KCTxwPk5vdywgaGVyZSBhcmUgdGhyZWUgYmFzaWMgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLjwvcD4KCTxwPjxiPkFsbG93aW5nIG9ubHkgbG9nZ2VkIGluIHVzZXJzPC9iPjxici8+CglIZXJlJ3MgaG93IHRvIGFsbG93IG9ubHkgbG9nZ2VkIGluIHVzZXJzIHRvIGVkaXQgaXRlbXM6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVICYmICRGRVUtPkxvZ2dlZEluKCkpewoJCSRyZXR1cm4gPSB0cnVlOwoJfQoJPC9wcmU+PGJyLz4KCTxwPjxiPkFsbG93aW5nIG9ubHkgbWVtYmVycyBvZiBhIGdyb3VwPC9iPjxici8+CglIZXJlJ3MgaG93IHRvIGFsbG93IG9ubHkgbWVtYmVycyBvZiB0aGUgZ3JvdXAgIm15Z3JvdXAiIHRvIGVkaXQgaXRlbXM6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVKXsKCQlpZigkRkVVLT5Mb2dnZWRJbigpKXsKCQkJJHVzZXJpZCA9ICRGRVUtPkxvZ2dlZEluSWQoKTsKCQkJJGdyb3VwaWQgPSAkRkVVLT5HZXRHcm91cElEKCJteWdyb3VwIik7CgkJCWlmKCRGRVUtPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwgJGdyb3VwaWQpKXsKCQkJCSRyZXR1cm4gPSB0cnVlOwoJCQl9CgkJfQoJfQoJPC9wcmU+PGJyLz4KCTxwPjxiPkFsbG93aW5nIG1lbWJlcnMgdG8gZWRpdCBvbmx5IGEgc2luZ2xlIGVsZW1lbnQ8L2I+PGJyLz4KCVN1cHBvc2UgeW91IGhhdmUgYSBGRVUgbWVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBvZiB5b3VyIGl0ZW0sIGFuZCB0aGF0IHRoZSB1c2VybmFtZSBvZiB0aGF0IG1lbWJlciBpcyB0aGUgYWxpYXMgb2YgdGhlIGl0ZW0gKHNlZSBiZWxvdyBvbiBob3cgdG8gZG8gdGhpcykuIFlvdSBjb3VsZCByZXN0cmljdCBhY2Nlc3MgaW4gdGhlIGZvbGxvd2luZyB3YXk6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVKXsKCQlpZigkRkVVLT5Mb2dnZWRJbigpKXsKCQkJJHVzZXJuYW1lID0gJEZFVS0+TG9nZ2VkSW5OYW1lKCk7CgkJCWlmKCR1c2VybmFtZSA9PSAkYWxpYXMpewoJCQkJJHJldHVybiA9IHRydWU7CgkJCX0KCQl9Cgl9Cgk8L3ByZT4KCTxwPlVzaW5nICRGRVUtPkdldFVzZXJQcm9wZXJ0eSgkcHJvcGVydHluYW1lKSwgeW91IGNvdWxkIHVzZSBzb21ldGhpbmcgZWxzZSB0aGFuIHRoZSB1c2VybmFtZS48YnIvPgoJSWYgcGVybWlzc2lvbnMgZGVwZW5kIG9uIHRoZSBhbGlhcyBvZiB0aGUgaXRlbSwgeW91IHNob3VsZCBtYWtlIHN1cmUgKHNlZSBTZXR0aW5ncykgdGhhdCB5b3VyIGZyb250ZW5kIHVzZXJzIGNhbid0IGNoYW5nZSBpdC48L3A+PGJyLz4KCTxwPlNob3VsZCB5b3UgbmVlZCBtb3JlIGluZm9ybWF0aW9ucyBhYm91dCB0aGUgaXRlbSwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzbmlwcGV0IHRvIGxvYWQgdGhlIGZ1bGwgaXRlbSBvYmplY3Q6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7CgkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCJpZCI9PiRpdGVtaWQpKTsKCSRpdGVtID0gaXNzZXQoJGl0ZW1saXN0WzBdKT8kaXRlbWxpc3RbMF06ZmFsc2U7PC9wcmU+PGJyLz4KCTxwPkZpbmFsbHksIHlvdSBtYXkgdXNlICR3aGF0IHZhcmlhYmxlIHRvIGhhdmUgZGlmZmVyZW50IHBlcm1pc3Npb24gbWFuYWdlbWVudCBmb3IgZWFjaCBsZXZlbC4gQSBzd2l0Y2ggd291bGQgYmUgdGhlIHR5cGljYWwgc29sdXRpb246PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+Cglzd2l0Y2goJHdoYXQpewoJCWNhc2UgImxldmVsMSI6CgkJCS8vIGNvZGUKCQkJYnJlYWs7CgkJY2FzZSAibGV2ZWwyIjoKCQkJLy9jb2RlCgkJCWJyZWFrOwoJCS4uLihhbmQgc28gb24pCgl9PC9wcmU+PGJyLz4KCTxwPjxiPlRyaWdnZXJpbmcgdGhlIGNyZWF0aW9uIG9mIGEgRkVVIG1lbWJlciBmb3IgZWFjaCBpdGVtPC9iPjxici8+CglJZiB5b3UncmUgdXNpbmcgc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhlIGxhc3QgZXhhbXBsZSwgeW91IG5lZWQgdG8gaGF2ZSBhIEZFVSB1c2VyIGZvciBlYWNoIGl0ZW0uIFRoaXMgY2FuIGJlIGRvbmUgdXNpbmcgZXZlbnRzLjxici8+CglFdmVyeXRpbWUgYW4gaXRlbSBpcyBhZGRlZCwgbW9kaWZpZWQgb3IgZGVsZXRlZCwgdGhlIG1vZHVsZXMgc2VuZHMgYW4gPGk+ZXZlbnQ8L2k+IHRvIHRoZSBjbXMuIElmIHlvdSBnbyBpbnRvIEV4dGVuc2lvbnMgLT4gRXZlbnQgTWFuYWdlciwgeW91IHNob3VsZCBmaW5kIHRoZSBldmVudHMgc2VudCBieSB5b3VyIG1vZHVsZSBpbiB0aGUgbGlzdC4gQ2xpY2ssIGZvciBleGFtcGxlLCBvbiB0aGUgbW9kdWxlbmFtZV9hZGRlZCBldmVudC4gWW91IHdpbGwgbm90aWNlIHRoYXQgaGVyZSwgeW91IGNhbiBzZWxlY3QgYSBVc2VyIERlZmluZWQgVGFnIChVRFQpIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLiBTbyB3ZSBzaW1wbHkgbmVlZCB0byBkZXNpZ24gYW4gVURUIHRoYXQgd2lsbCBhZGQgYSBtZW1iZXIgd2hlbiBhIG5ldyBpdGVtIGlzIGNyZWF0ZWQuPC9wPgoJPHA+V2Ugd2lsbCBhc3N1bWUgeW91ciBpdGVtIGhhcyBhIGZpZWxkIG5hbWVkICJwYXNzd29yZCIsIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyB0aGUgRkVVIHBhc3N3b3JkLCB0aGF0IHlvdXIgbW9kdWxlIGlzIG5hbWVkICJOQU1FT0ZNT0RVTEUiLCBhbmQgdGhlIGxldmVsIGlzIG5hbWVkICJNWUxFVkVMIi4gTG9vayBhdCB0aGUgZm9sbG93aW5nIFVEVDo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkvLyBmaXJzdCwgd2UgY2hlY2sgaWYgYW4gaXRlbSBoYXMgYmVlbiBhZGRlZCBvbiB0aGUgbGV2ZWwgd2UncmUgY29uY2VybmVkIHdpdGgKCWlmKCRwYXJhbXNbIndoYXQiXSAhPSAiTVlMRVZFTCIpCXJldHVybiBmYWxzZTsKCQoJLy8gd2UgcmV0cmlldmUgdGhlIHR3byBtb2R1bGVzCgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CgkkbXltb2QgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ05BTUVPRk1PRFVMRScpOwoJaWYoISRGRVUgfHwgISRteW1vZCkJcmV0dXJuIGZhbHNlOwoJCgkvLyB3ZSB0aGVuIHJldHJpZXZlIHRoZSBpdGVtCgkkaXRlbWxpc3QgPSAkbXltb2QtPmdldF9NWUxFVkVMKGFycmF5KCJpZCI9PiRwYXJhbXNbIml0ZW1pZCJdKSk7CglpZighaXNzZXQoJGl0ZW1saXN0WzBdKSkJcmV0dXJuIGZhbHNlOwoJJGl0ZW0gPSAkaXRlbWxpc3RbMF07CgkKCS8vIHdlIHRoZW4gYWRkIHRoZSBGRVUgdXNlcgoJJGV4cGlyZXNfaW4gPSAzNjU7IC8vIHNldHMgdGhlIG51bWJlciBvZiBkYXlzIHVudGlsIGV4cGlyYXRpb24KCSRleHBpcmVzID0gc3RydG90aW1lKHNwcmludGYoIislZCBkYXlzIiwkZXhwaXJlc19pbiksIHRpbWUoKSk7CgkkRkVVLT5BZGRVc2VyKCRpdGVtLT5uYW1lLCAkaXRlbS0+cGFzc3dvcmQsICRleHBpcmVzKTsKCQk8L3ByZT4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTMiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgaG93IHRoZSBwcmV0dHkgdXJscyBhcmUgZ2VuZXJhdGVkIGFuZCBpbnRlcnByZXRlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPjxiPlllcywgdG8gc29tZSBleHRlbnQuPC9iPjwvcD4KCQk8cD5JJ2xsIHRyeSB0byBtYWtlIHRoaXMgdmVyeSBjb21wcmVoZW5zaXZlLiBCZWZvcmUgdGFsa2luZyBvZiBtb2R5aW5nIGl0LCBsZXQncyBzZWUgaG93IHRoaXMgd29ya3MuPC9wPgoJCTxwPkJhc2ljYWxseSwgdGhlIG1vZHVsZSBoYXMgdHdvIGtpbmRzIG9mIHVybHM6PGJyPgoJCVR5cGUgQTogPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL2RldGFpbC9uYW1lb2ZvYmplY3QvNS88L2NvZGU+PGJyLz4KCQlhbmQ8YnIvPgoJCVR5cGUgQjogPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL25hbWVvZmxldmVsL25hbWVvZnBhcmVudC81LzwvY29kZT48YnIvPgoJCShpZiB5b3UgYXJlIHNlcGFyYXRpbmcgZWxlbWVudHMgaW50byBwYWdlcywgeW91IHdpbGwgbm90aWNlIHRoYXQgdHlwZSBCIGhhcyBzb21lIHZhcmlhdGlvbnMuLi4gd2Ugd2lsbCBkaXNjdXNzIHRoaXMgbGF0ZXIuKTwvcD4KCQk8cD5UeXBlIEEgaXMgdXNlZCB3aGVuIHdlIGFyZSBsb29raW5nIGF0IHRoZSBkZXRhaWxzIG9mIGEgbGFzdC1sZXZlbCBvYmplY3QuIFR5cGUgQiBpcyB1c2VkIHdoZW4gd2UgZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMuIE5vdywgcmVtZW1iZXIgdGhhdCB0aGUgdXJsIGhhcyB0byBjb250YWluIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzaG91bGQgYmUgZGlzcGxheWVkLiBTbyBsZXQncyB0YWtlIGEgbG9vayBhYm91dCB3aGF0J3MgY29tbW9uIHRvIGJvdGggdHlwZXMgb2YgdXJsczo8L3A+CgkJPHA+VGhlIDxiPm5hbWVvZm1vZHVsZS88L2I+IHRlbGxzIHVzIHRoYXQgdGhlIG1vZHVsZSBzaG91bGQgYmUgY2FsbGVkLjxici8+CgkJVGhlIDxiPjUvPC9iPiAodGhhdCBhbm5veWluZyBudW1iZXIpIGlzIHRoZSByZXR1cm5pZCBvZiB0aGUgcGFnZS4gSW4gb3RoZXIgd29yZHMsIGl0IHRlbGxzIHVzIG9uIHdoYXQgcGFnZSBvZiB0aGUgY21zIHRoZSBpbmZvcm1hdGlvbnMgb2YgdGhlIG1vZHVsZSBzaG91bGQgYmUgc2hvd24uIEV2ZW4gdGhvdWdoIHRoZSBwYWdlIGNvbnRlbnQgaXMgcmVwbGFjZWQgYnkgd2hhdCB0aGUgbW9kdWxlIGhhcyB0byBkaXNwbGF5LCB0aGlzIGlzIHZlcnkgaW1wb3J0YW50IGFzIGl0IGRldGVybWluZXMsIGZvciBpbnN0YW5jZSwgd2hhdCBwYWdlIHRlbXBsYXRlIHNob3VsZCBiZSB1c2VkLjwvcD4KCQk8cD5XaGVuIHRoZSA8Yj4vZGV0YWlsLzwvYj4gaXMgaW4gdGhlIHVybCwgdGhlIG1vZHVsZSBrbm93cyB0aGF0IHdlJ3JlIGRpc3BsYXlpbmcgdGhlIGRldGFpbHMgb2YgYSBsYXN0IGxldmVsIGl0ZW0uIEFsbCB3ZSBuZWVkIHRvIHNwZWNpZnkgaXMgd2hpY2ggaXRlbSB0byBkaXNwbGF5LCBhbmQgdGhhdHMgdGhlIDxiPm5hbWVvZm9iamVjdDwvYj4gcGFydC48L3A+CgkJPHA+V2hlbiB0aGUgPGI+L2RldGFpbC88L2I+IDxpPmlzbid0PC9pPiBpbiB0aGUgdXJsLCB0aGUgbW9kdWxlIGNvbmNsdWRlcyB0aGF0IHdlIGFyZSBkaXNwbGF5aW5nIGEgbGlzdCBvZiBzb21ldGhpbmcqLiBUaGUgZWxlbWVudHMgb2Ygd2hhdCBsZXZlbCBhcmUgZGlzcGxheWVkIGlzIGRldGVybWluZWQgYnkgd2hhdGV2ZXIgaXMgaW4gdGhlIHBsYWNlIG9mICIvZGV0YWlsLyI6IGluIG91ciBjYXNlLCA8Yj5uYW1lb2ZsZXZlbC88L2I+LiBBIHVybCBsaWtlIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9wcm9kdWN0LzUvPC9jb2RlPiB3b3VsZCBiZSB2YWxpZCwgYW5kIHdvdWxkIHRlbGwgdGhlIG1vZHVsZSB0byBkaXNwbGF5IGFsbCBlbGVtZW50cyBvZiB0aGUgInByb2R1Y3QiIGxldmVsLjxici8+CgkJVGhlIDxiPi9uYW1lb2ZwYXJlbnQvPC9iPiBwYXJ0IHRlbGxzIHRoZSBtb2R1bGUgdG8gZGlzcGxheSBvbmx5IHRoZSBpdGVtcyBvZiB0aGUgY2hvc2VuIGxldmVsIHRoYXQgaGF2ZSAibmFtZW9mcGFyZW50IiBhcyBhIHBhcmVudC48L3A+CgkJPHA+VGhlIHByZXR0eSB1cmxzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24gb2YgdGhlIG1haW4gbW9kdWxlIGZpbGUgKHdoaWNoIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBOQU1FT0ZZT1VSTU9EVUxFLm1vZHVsZS5waHApLiBPcGVuIHRoaXMgZmlsZSwgYW5kIGRvIGEgc2VhcmNoIHRvIGZpbmQgdGhlIGZ1bmN0aW9uLiBXaGF0IG1hdHRlcnMgaW4gdGhlcmUgaXMgdGhlIGxpbmVzIHRoYXQgbG9vayBsaWtlIHRoaXMgKHdpdGhvdXQgdGhlIG51bWJlcnMgb24gdGhlIGxlZnQpIDo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CiMxCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oW0RkXWV0YWlsKVwvKD9QPGFsaWFzPlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzIJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzMJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIpOwojNAkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzUJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTs8L3ByZT4KCQk8cD5FYWNoIGxpbmUgaGVyZSByZWdpc3RlciBhIGRpZmZlcmVudCB1cmwgc3RydWN0dXJlLjxici8+CgkJTGluZSAjMSByZWdpc3RlcnMgdGhlIFR5cGUgQSB1cmxzLjxici8+CgkJQWxsIHRoZSBvdGhlciBsaW5lcyByZWdpc3RlciBUeXBlIEIgdXJsczo8YnIvPgoJCUxpbmUgIzIgaXMgZm9yIHdoZW4gbm8gcGFyZW50IGlzIHNwZWNpZmllZCwgbGlrZSBpbiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvbmFtZW9mbGV2ZWwvNTwvY29kZT48YnIvPgoJCUxpbmUgIzMgaXMgdXNlZCB3aGVuIGEgcGFyZW50IGlzIHNwZWNpZmllZCwgbGlrZSBpbiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvbmFtZW9mbGV2ZWwvbmFtZW9mcGFyZW50LzU8L2NvZGU+PGJyLz4KCQlMaW5lICM0IGlzIGEgdmFyaWF0aW9uIG9mIGxpbmUgIzIgdGhhdCBoYW5kbGVzIHNlcGFyYXRpb24gaW50byBwYWdlcyAod2hlbiB3ZSBzZXBhcmF0ZSBpbnRvIHBhZ2VzLCB3ZSBuZWVkIHRvIGtub3cgd2hpY2ggcGFnZSB3ZSdyZSBsb29raW5nIGF0KS4gRm9yIGV4YW1wbGUsIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9wcm9kdWN0LzIvMTAvNTwvY29kZT4gd291bGQgbWVhbiB0aGF0IHdlIGFyZSBsb29raW5nIGF0IHRoZSBsaXN0IG9mIGFsbCBpdGVtcyBvZiB0aGUgInByb2R1Y3QiIGxldmVsLCB0aGF0IHdlIGFyZSBzZXBhcmF0aW5nIGluIHBhZ2VzIHdpdGggIjEwIiBlbGVtZW50cyBwZXIgcGFnZSwgYW5kIHRoYXQgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIHBhZ2UgIjIiLjxici8+CgkJSW4gcHJldHR5IG11Y2ggdGhlIHNhbWUgd2F5LCBsaW5lICM1IGlzIGEgdmFyaWF0aW9uIG9mIGxpbmUgIzMuPC9wPgoJCTxwPlRoZSA8PC8+cGFyYW1uYW1lPiB0aGluZyBtZWFucyB0aGF0IHdoYXRldmVyIGlzIGluIHRoYXQgcGxhY2UgaW4gdGhlIHVybCB3aWxsIGJlIGludGVycHJldGVkIGFzIHRoZSAicGFyYW1uYW1lIiBwYXJhbWV0ZXIuIEluIG90aGVyIHdvcmRzLCBlYWNoIHVybCBzdHJ1Y3R1cmUgb3V0cHV0IGRpZmZlcmVudCBwYXJhbWV0ZXJzIHRoYXQgd2lsbCB0ZWxsIHRoZSBtb2R1bGUgd2hhdCB0byBkby48L3A+CgkJPHA+PGI+TW9kaWZ5aW5nIGFsbCB0aGlzLi4uPC9iPjxici8+CgkJVGhlcmUgYXJlIHNvbWUgdGhpbmdzIHRoYXQgeW91IGNhbiBjaGFuZ2UsIHNvbWUgdGhhdCB5b3UgY2FuJ3QsIGFuZCBzb21lIHRoYXQgeW91IGNhbiBhdCBhIHByaWNlLjwvcD4KCQk8cD5MZXQncyBzYXkgeW91IGRvbid0IGxpa2UgdGhlIHdvcmQgIjxiPmRldGFpbDwvYj4iIGluIHRoZSB1cmwsIGFuZCB3b3VsZCBsaWtlIHRvIGNoYW5nZSBpdCB0byBzb21ldGhpbmcgZWxzZSoqLiBGaXJzdCwgbGV0J3Mgbm90IHRoYXQgdGhlICJbRGRdIiBwYXJ0IGluIHRoZSB1cmwgc3RydWN0dXJlIHNheXMgdGhhdCB0aGVyZSBjYW4gYmUgZWl0aGVyIGEgIkQiIG9yIGEgImQiIGhlcmUuIAoJCUluIG90aGVyIHdvcmRzLCA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvZGV0YWlsL25hbWVvZm9iamVjdC81LzwvY29kZT4gaXMgdGhlIHNhbWUgdGhpbmcgYXMgPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL0RldGFpbC9uYW1lb2ZvYmplY3QvNS88L2NvZGU+Ljxici8+CgkJWW91IGNhbiBjaGFuZ2UgdGhlIHdvcmQgImRldGFpbCIgZm9yIHNvbWV0aGluZyBlbHNlLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBhbmQgcmVtZW1iZXIgdGhhdCB0aGUgdXJsIGNhcnJ5IGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzaG91bGQgYmUgc2hvd24uIEZvciBleGFtcGxlLCBpZiBvbmUgb2YgeW91ciBsZXZlbCBpcyBuYW1lZCAicHJvZHVjdCIsIHlvdSBjb3VsZG4ndCByZXBsYWNlIHRoZSB3b3JkICJkZXRhaWwiIGJ5IHRoZSB3b3JkICJwcm9kdWN0Ii4gSWYgeW91IGRpZCwgdGhlIG1vZHVsZSBjb3VsZG4ndCBrbm93IGlmIHRoZSB3b3JkICJwcm9kdWN0IiBpdCBlbmNvdW50ZXJzIG1lYW5zIHRoYXQgd2UncmUgd2F0Y2hpbmcgdGhlIGRldGFpbHMgb2YgYW4gaXRlbSwgb3IgaWYgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgd2F0Y2hpbmcgYSBsaXN0IG9mIHRoZSBpdGVtcyBpbiB0aGUgInByb2R1Y3QiIGxldmVsLjwvcD4KCQk8cD5TbyBsZXQncyBzYXkgd2Ugd2FudCB0byBjaGFuZ2UgImRldGFpbCIgZm9yICJ2aWV3IiAocHJvdmlkZWQgdGhhdCB5b3UgZG9uJ3QgaGF2ZSBhIGxldmVsIGNhbGxlZCAidmlldyIpLiBJbiBsaW5lICMxLCB3ZSB3b3VsZCByZXBsYWNlIDxjb2RlPihbRGRdZXRhaWwpPC9jb2RlPiB3aXRoIDxjb2RlPih2aWV3KTwvY29kZT4gKG9yIDxjb2RlPihbVnZdaWV3KTwvY29kZT4sIGlmIHlvdSB3YW50IGl0IHRvIGFjY2VwdCBib3RoICJWaWV3IiBhbmQgInZpZXciKS48L3A+CgkJPHA+PHU+QnV0IHRoaXMgaXMgbm90IGVub3VnaC48L3U+IFlvdSd2ZSBjaGFuZ2VkIHRoZSB3YXkgdGhlIHVybHMgYXJlIGludGVycHJldGVkLCBidXQgbm90IHRoZSB3YXkgdGhleSBhcmUgY3JlYXRlZC4gSW4gdGhlIHNhbWUgZmlsZSwgc2VhcmNoIGZvciB0aGUgQnVpbGRQcmV0dHlVUkxzIGZ1bmN0aW9uLiBJdCBzaG91bGQgY29udGFpbiBzb21ldGhpbmcgbGlrZSB0aGlzOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KIzEJCSRwcmV0dHl1cmwgPSAibmFtZW9mbW9kdWxlLyI7CiMyCQlpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSl7CiMzCQkJJHByZXR0eXVybCAuPSAiZGV0YWlsLyIuJHBhcmFtc1siYWxpYXMiXTsKIzQJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pKXsKIzUJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXS4iLyIuJHBhcmFtc1sicGFyZW50Il07CiM2CQl9ZWxzZXsKIzcJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXTsKIzgJCX0KIzkJCWlmKCFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiBpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSkgJiYgaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkkcHJldHR5dXJsIC49ICIvIi4kcGFyYW1zWyJwYWdlaW5kZXgiXS4iLyIuJHBhcmFtc1sibmJwZXJwYWdlIl07CiMxMAkJJHByZXR0eXVybCAuPSAiLyIuJHJldHVybmlkOwojMTEJCXJldHVybiAkcHJldHR5dXJsOzwvcHJlPgoJCTxwPlRoaXMgZnVuY3Rpb24gdHJhbnNmb3JtcyB0aGUgcGFyYW1ldGVycyBpbnRvIGEgdXJsLjxici8+CgkJTGluZSAjMSBzdGFydHMgd2l0aCB0aGUgbW9kdWxlJ3MgbmFtZS48YnIvPgoJCUluIGxpbmVzICMyLSMzLCBpZiB3ZSB3YW50IHRvIHdhdGNoIHRoZSBkZXRhaWxzIG9mIGFuIGl0ZW0sIHdlIGFkZCB0aGUgImRldGFpbC8iIGJsb2NrIHRvIHRoZSB1cmwuPGJyLz4KCQlJZiB0aGlzIGlzbid0IHRoZSBjYXNlLCB3ZSBhZGQgdGhlIGxldmVsIG9mIHRoZSBpdGVtcyB3ZSB3YW50IHRvIHNob3cgYW5kLCBpZiBzcGVjaWZpZWQsIHRoZSBwYXJlbnQgKGxpbmVzICM0IHRvICM4KS4gSW4gbGluZSAjOSwgaWYgd2UncmUgc2VwYXJhdGluZyBpbnRvIHBhZ2VzIHdlIGFkZCB0aGUgcGFnZSB3ZSB3aXNoIHRvIGxvb2sgYW5kIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcGVyIHBhZ2UuCgkJRmluYWxseSwgaW4gbGluZSAjMTAsIHdlIGFkZCB0aGUgaWQgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggaXQgc2hvdWxkIGJlIGRpc3BsYXllZC48L3A+CgkJPHA+SWYgd2UgY2hhbmdlZCAiW0RkXWV0YWlsIiB0byAiW1Z2XWlldyIgaW4gdGhlIFNldFBhcmFtZXRlcnMoKSBmdW5jdGlvbiwgd2UgbXVzdCBhbHNvIGNoYW5nZSB0aGUgImRldGFpbC8iIGluIGxpbmUgIzMgZm9yICJ2aWV3LyIuPGJyLz5Ob3csIHRoaXMgc2hvdWxkIGRvIHRoZSB0cmljay48L3A+CgkJPHA+PGI+Q2FuIEkgZ2V0IHJpZCBvZiB0aGUgcmV0dXJuaWQ/PC9iPjxici8+Tm8sIG5vdCByZWFsbHkuIEhvd2V2ZXIsIGlmIHlvdSB0aGUgbW9kdWxlIGlzIDx1PmFsd2F5czwvdT4gZGlzcGxheWVkIGluIHRoZSBzYW1lIHBhZ2UgKGkuZS4sIGlmIGl0J3MgPHU+YWx3YXlzPC91PiB0aGUgc2FtZSBudW1iZXIpLCB3ZSBjb3VsZCByZW1vdmUgaXQgZnJvbSB0aGUgdXJsIGFuZCBwcm92aWRlIGl0IGluIGFub3RoZXIgd2F5LiBIZXJlJ3MgaG93IHRvIGRvIGl0OjwvcD4KCQk8cD5MZXQncyBzYXkgdGhlIGlkIG9mIHRoZSBwYWdlIGluIHdoaWNoIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGNhbGxlZCAodGhlIG51bWJlciB3ZSdyZSB0cnlpbmcgdG8gZ2V0IHJpZCBvZikgaXMgNS48YnIvPgoJCTEuIGluIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24gb2YgeW91ciBtb2R1bGUsIHJlbW92ZSBhbGwgPGNvZGU+XC8oP1A8cmV0dXJuaWQ+WzAtOV0rKTwvY29kZT4gcGFydHMuIChpdCB3b3VsZCBiZSBhIGdvb2QgaWRlYSB0byBjb3B5IGFuZCBwYXN0ZSB0aGUgb3JpZ2luYWwgbGluZXMganVzdCBpbiBjYXNlLi4uIHlvdSBjYW4gY29tbWVudCBsaW5lcyB1c2luZyA8Y29kZT4vLzwvY29kZT4pLjxici8+CgkJMi4gaW4gdGhlIEJ1aWxkUHJldHR5VVJMcygpIGZ1bmN0aW9uIG9mIHlvdXIgbW9kdWxlLCBjb21tZW50IChhZGQgPGNvZGU+Ly88L2NvZGU+IGJlZm9yZSBpdCkgdGhlIGxpbmUgIzEwICg8Y29kZT4vLyAkcHJldHR5dXJsIC49ICIvIi4kcmV0dXJuaWQ7PC9jb2RlPikuPGJyLz4KCQkzLiB3ZSBub3cgbmVlZCB0byBwcm92aWRlIHRoZSBpZC4gR28gYmFjayB0byB0aGUgU2V0UGFyYW1ldGVycygpIGZ1bmN0aW9uLCBhbmQgZm9yIGVhY2ggbGluZSwganVzdCBhZnRlciB0aGUgPGNvZGU+JCIvPC9jb2RlPiBwYXJ0IChhbmQgYmVmb3JlIHRoZSBjbG9zdXJlIG9mIHRoZSBwYXJlbnRoZXNpcyksIGFkZCA8Y29kZT4sIGFycmF5KCJyZXR1cm5pZCI9PjUpPC9jb2RlPiAod2l0aCB0aGUgY29tbWEpLCB3aGVyZSAiNSIgaXMgeW91ciBpZC4gRm9yIGV4YW1wbGUsIHRoaXM6PGJyLz4KCQk8Y29kZT4kdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspJC8iKTs8L2NvZGU+PGJyLz4KCQlzaG91bGQgYmVjb21lOjxici8+CgkJPGNvZGU+JHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyhbRGRdZXRhaWwpXC8oP1A8YWxpYXM+W15cL10rKSQvIiwgYXJyYXkoInJldHVybmlkIj0+NSkpOzwvY29kZT48YnIvPgoJCShSZW1lbWJlciBub3QganVzdCB0byBjb3B5IGFuZCBwYXN0ZSBsaW5lcyBmcm9tIHRoaXMgaGVscCwgYmVjYXVzZSB5b3VyIG1vZHVsZSBpcyBwcm9iYWJseSA8aT5ub3Q8L2k+IG5hbWVkICJuYW1lb2Ztb2R1bGUiKTxici8+CgkJVGhpcyBzaG91bGQgZG8gdGhlIHRyaWNrLCBidXQgdGhlIG1vZHVsZSB3aWxsIG5ldmVyIHVzZSBhbm90aGVyIHBhZ2UgdG8gZGlzcGxheSBpdHMgY29udGVudC48L3A+CgkJPHA+PHU+RmluYWwgbm90aWNlOjwvdT4gSWYgeW91IGNoYW5nZSB0aGUgcHJldHR5IHVybHMgYW5kIG1ha2UgdXNlIG9mIHRoZSAiaXNfc2VsZWN0ZWQiIGF0dHJpYnV0ZXMgaW4geW91ciB0ZW1wbGF0ZXMsIHlvdSBtaWdodCBhbHNvIGhhdmUgdG8gY2hhbmdlIHRoZSBnZXRfbW9kdWxlR2V0VmFycygpIGZ1bmN0aW9uICh0YWtlIGEgbG9vayA8YSBocmVmPSIjcTE0Ij5oZXJlPC9hPikuPC9wPgoJCTxwIHN0eWxlPSJmb250LXNpemU6IDExcHg7Ij48YnIvPiogaWYgdGhlcmUgaXMgb25seSBvbmUgaXRlbSB0byBkaXNwbGF5LCBhbmQgaWYgeW91IGFyZW4ndCB1c2luZyB0aGUgImZvcmNlbGlzdCIgcGFyYW1ldGVyLCB0aGUgZGV0YWlscyB3aWxsIGJlIGRpc3BsYXllZCBpbnN0ZWFkIG9mIGEgbGlzdC48YnIvPgoJCSoqIG5vLCB5b3UgY2FuJ3QganVzdCBnZXQgcmlkIG9mIGl0LCB1bmxlc3MgeW91IGNoYW5nZSBhbGwgcmVnaXN0ZXJlZCB1cmxzLi4uIGZvciBleGFtcGxlLCBpbnN0ZWFkIG9mIGhhdmluZyBhICIvZGV0YWlsLyIsIGFsbCBvdGhlciB1cmxzIGNvdWxkIGhhdmUgYSAiL2xpc3QvIiBibG9jay48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxOCI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkNhbiBJIG1ha2UgbXkgbW9kdWxlIGFsd2F5cyBhY3QgYXMgaWYgdGhlICJmb3JjZWxpc3QiIHBhcmFtZXRlciB3YXMgZW5hYmxlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlNpbmNlIDEuOC42LCB0aGlzIGhhcyBiZWNvbWUgYSBzaW1wbGUgb3B0aW9uIHRvIHR1cm4gb24gaW4gdGhlICJTZXR0aW5ncyIgdGFiLi4uPC9wPgoJCTxwPjxiPlllcy48L2I+PC9wPgoJCTxwPk9wZW4gdGhlIGFjdGlvbi5kZWZhdWx0LnBocCBmaWxlLiBBcm91bmQgdGhlIGxpbmUgIzE2IHlvdSBzaG91bGQgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgoJCSRmb3JjZWxpc3QgPSBpc3NldCgkcGFyYW1zWyJmb3JjZWxpc3QiXSk/JHBhcmFtc1siZm9yY2VsaXN0Il06ZmFsc2U7PC9wcmU+CgkJPHA+V2hhdCB0aGlzIHNheXMgaXMgdGhhdCBpZiB0aGUgZm9yY2VsaXN0IHBhcmFtZXRlciBoYXMgYmVlbiBzZXQsIHdlIHVzZSB0aGlzIHZhbHVlLCBhbmQgaWYgaXQgaGFzbid0LCB3ZSB1c2UgdGhlIHZhbHVlICJmYWxzZSIuPGJyLz4KCQlDaGFuZ2luZyB0aGlzIDxjb2RlPmZhbHNlPC9jb2RlPiB0byBhIDxjb2RlPnRydWU8L2NvZGU+IHdvdWxkIG1lYW4gdGhhdCB0aGUgZm9yY2VsaXN0IG1vZGUgaXMgYWx3YXlzIGVuYWJsZWQsIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLjxici8+CgkJQnV0IHRoYXQncyBub3QgZXhhY3RseSB3aGF0IHdlIHdhbnQsIGZvciB0aGlzIHdvdWxkIG1lYW4gdGhhdCB3ZSBhbHdheXMgZGlzcGxheSBhIGxpc3QsIGV2ZW4gd2hlbiB3ZSdyZSB0cnlpbmcgdG8gZGlzcGxheSBhbiBpdGVtJ3MgZGV0YWlscy4gU28gdGhlIHByb3BlciBjb2RlIHdvdWxkIGJlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkkZm9yY2VsaXN0ID0gaXNzZXQoJHBhcmFtc1siZm9yY2VsaXN0Il0pPyRwYXJhbXNbImZvcmNlbGlzdCJdOihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKT9mYWxzZTp0cnVlKTs8L3ByZT4KCQk8cD5UaGlzIHdheSwgJGZvcmNlbGlzdCB3aWxsIGJlIGZhbHNlIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLCBhbmQgdW5sZXNzIGFuIGFsaWFzICh1c2VkIGluIGRldGFpbCBsaW5rcykgaXMgc3BlY2lmaWVkLjwvcD4KCQk8cD4oVHdvIGxpbmVzIGJlbG93LCB5b3UgY291bGQgZG8gdGhlIHNhbWUga2luZCBvZiB0aGluZyBmb3IgdGhlICJpbmxpbmUiIHBhcmFtZXRlci4uLik8L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTE0Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+V2hhdCdzIHdpdGggdGhpcyBnZXRfbW9kdWxlR2V0VmFycygpIGZ1bmN0aW9uPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+V2hhdCBpcyBpdCBmb3I/IEFuZCB3aHkgaXMgaXQgc3VjaCBhIG1lc3M/PC9iPjwvcD4KCQk8cD5JbiB0aGUgbWFpbiBtb2R1bGUgZmlsZSwgdGhlcmUgaXMgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0X21vZHVsZUdldFZhcnMoKS4gQmFzaWNhbGx5LCB0aGUgZnVuY3Rpb24gcmV0cmlldmUgdGhlIG1vZHVsZSBhY3Rpb24gcGFyYW1ldGVycyBmcm9tIHRoZSB1cmwuPGJyLz4KCQlJbWFnaW5lIHRoYXQgaW4geW91ciB0ZW1wbGF0ZSwgaW4gYSBjb2x1bW4gb24gdGhlIGxlZnQsIHlvdSBjYWxsIHRoZSBtb2R1bGUgdG8gZGlzcGxheSBhIGNhdGVnb3J5IGxpc3QuIFdoZW4geW91IGNsaWNrIG9uIGFuIGNhdGVnb3J5LCB0aGUgbGlzdCBzdGF5cyB0aGVyZSwgYnV0IHRoZSBtYWluIGNvbnRlbnQgYmxvY2sgZGlzcGxheXMgdGhlIGNoaWxkcmVuIHdpdGhpbiB0aGF0IGNhdGVnb3J5LiBOb3csIGluIHRoZSBjYXRlZ29yeSBsaXN0LCB5b3UgbWlnaHQgd2FudCB0byBzaG93IHdoaWNoIGNhdGVnb3J5IGlzIHNlbGVjdGVkICh1c2luZyB0aGUgJGl0ZW0tPmlzX3NlbGVjdGVkIGF0dHJpYnV0ZSkuIEJ1dCB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBjYXRlZ29yeSBsaXN0IGlzIGNhbGxlZCA8aT5iZWZvcmU8L2k+IHRoZSBtYWluIG1vZHVsZSBhY3Rpb24gKHRoZSBsaXN0IG9mIGNoaWxkcmVuKSwgYW5kIHRodXMgdGhlIGFjdGlvbiBwYXJhbWV0ZXJzIGFyZW4ndCB5ZXQgcGFyc2VkLjxici8+CgkJVGhpcyBzdWJqZWN0IGhhcyBiZWVuIGRpc2N1c3NlZCBpbiB0aGUgZm9ydW1zICg8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL3RvcGljLDMzMzM0LjAuaHRtbCI+aGVyZTwvYT4pLCBhbmQgSSBjaG9zZSB0aGUgc29sdXRpb24gdGhhdCBpcyB0aGUgZWFzaWVzdCB0byBpbXBsZW1lbnQgZm9yIHRoZSB1c2VyOiByZXRyaWV2ZSB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSB1cmwgZXZlbiBiZWZvcmUgdGhleSBhcmUgcGFyc2VkIGJ5IHRoZSBjbXMuIEl0J3MgYSByYXRoZXIgY29tcGxpY2F0ZWQgZnVuY3Rpb24gYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgcHJldHR5dXJscyBhbmQgcmV3cml0dGVuIHVybHMuLi48YnIvPgoJCU9mIGNvdXJzZSwgaXQgbWVhbnMgdGhhdCBpZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhlIHdheSBwcmV0dHl1cmxzIGFyZSBtYWRlIGFuZCBzdGlsbCB1c2UgdGhlIGlzX3NlbGVjdGVkIGF0dHJpYnV0ZSwgeW91J3JlIGdvbm5hIGhhdmUgdG8gcGxheSBpbiB0aGlzIGluZWxlZ2FudCBjb2RlLiBCdXQgaGV5LCBJJ20gd3JpdGluZyB0aGlzIGp1c3QgdG8gbWFrZSBpdCBjbGVhcmVyLi4uPC9wPgoJCTxici8+PHA+PGI+SG93IGRvZXMgaXQgd29yaywgYW5kIGhvdyB0byBjaGFuZ2UgaXQ/PC9iPjwvcD4KCQk8cD5CZWZvcmUgd2UgZ28sIGhlcmUncyBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCWZ1bmN0aW9uIGdldF9tb2R1bGVHZXRWYXJzKCl7CiMxCQkvLyB1bm9ydGhvZG94IGhhY2sgc28gdGhhdCBkaWZmZXJlbnQgY2FsbHMgb2YgdGhlIG1vZHVsZSBzcGVhayB3aXRoIGVhY2ggb3RoZXIKIzIJCS8vIGJhc2ljYWxseSwgd2UgcmV0cmlldmUgcGFyYW1ldGVycyBpbiB0aGUgdXJsIHRoYXQgd2VyZSBtZWFudCBmb3Igb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBtb2R1bGUKIzMJCWdsb2JhbCAkX0dFVDsKIzQJCWdsb2JhbCAkZ0NtczsKIzUJCSRnbG9iYWxtb2R1bGV2YXJzID0gYXJyYXkoKTsKIzYJCWlmKGlzc2V0KCRfR0VUWyJtYWN0Il0pKXsKIzcJCQkvLyBpZiB3ZSBhcmVuJ3QgdXNpbmcgcHJldHR5IHVybHMuLi4KIzgJCQkkbW9kaW5mbyA9IGV4cGxvZGUoIiwiLCRfR0VUWyJtYWN0Il0pOwojOQkJCWlmKGlzc2V0KCRtb2RpbmZvKSAmJiAkbW9kaW5mb1swXSA9PSAkdGhpcy0+R2V0TmFtZSgpKXsKIzEwCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXSkpCiMxMQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhcmVudCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXTsKIzEyCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJ3aGF0Il0pKQojMTMJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJ3aGF0Il09JF9HRVRbJG1vZGluZm9bMV0uIndoYXQiXTsKIzE0CQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJhbGlhcyJdKSkKIzE1CQkJCQkkZ2xvYmFsbW9kdWxldmFyc1siYWxpYXMiXT0kX0dFVFskbW9kaW5mb1sxXS4iYWxpYXMiXTsKIzE2CQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXSkpCiMxNwkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXTsKIzE4CQkJfQojMTkJCX1lbHNlaWYoJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSB8fCAkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSl7CiMyMAkJCSRwYXJhbXMgPSBhcnJheSgpOwojMjEJCQlpZigkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSAmJiBpc3NldCgkX0dFVFsicGFnZSJdKSl7CiMyMgkJCQkvLyBpZiB3ZSBhcmUgdXNpbmcgYW4gZXh0ZXJuYWwgbW9kX3Jld3JpdGUsIGFzc3VtaW5nIHlvdSBhcmUgdXNpbmcgdGhlIHZlcnkKIzIzCQkJCS8vIGJhc2ljIHJld3JpdGUgd2hpY2ggcHV0cyB0aGUgbW9kdWxlIGluZm9ybWF0aW9ucyBpbnNpZGUgdGhlIHBhZ2UgdmFyaWFibGUKIzI0CQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi8iLCRfR0VUWyJwYWdlIl0pOwojMjUJCQkJZm9yZWFjaCgkcGFydHMgYXMgJHBhcnQpewojMjYJCQkJCWlmKCRwYXJ0ICE9ICIiKQkkcGFyYW1zW10gPSAkcGFydDsKIzI3CQkJCX0KIzI4CQkJfWVsc2VpZighJGdDbXMtPmNvbmZpZ1siYXNzdW1lX21vZF9yZXdyaXRlIl0gJiYgJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSAmJiBpc3NldCgkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSkpewojMjkJCQkJLy8gaWYgd2UgYXJlIHVzaW5nIHRoZSBpbnRlcm5hbCBwcmV0dHkgdXJscwojMzAJCQkJJHBhcnRzID0gZXhwbG9kZSgiLyIsJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pOwojMzEJCQkJJHN0YXJ0ZWQgPSBmYWxzZTsKIzMyCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsKIzMzCQkJCQlpZigkc3RhcnRlZCAmJiAkcGFydCAhPSAiIikJJHBhcmFtc1tdID0gJHBhcnQ7CiMzNAkJCQkJaWYoc3RydG9sb3dlcigkcGFydCkgPT0gImluZGV4LnBocCIpCSRzdGFydGVkID0gdHJ1ZTsKIzM1CQkJCX0KIzM2CQkJfQojMzcJCQlpZihpc3NldCgkcGFyYW1zWzBdKSAmJiBzdHJ0b2xvd2VyKCRwYXJhbXNbMF0pID09IHN0cnRvbG93ZXIoJHRoaXMtPkdldE5hbWUoKSkpewojMzgJCQkJIC8vIHdlIGFyZSBpbiBhIG1vZHVsZSBhY3Rpb24KIzM5CQkJCWlmKCFpc3NldCgkcGFyYW1zWzFdKSB8fCBzdHJ0b2xvd2VyKCRwYXJhbXNbMV0pID09ICJxdWVyeSIpewojNDAKIzQxCQkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sxXSkgJiYgc3RydG9sb3dlcigkcGFyYW1zWzFdKSA9PSAiZGV0YWlsIil7CiM0MgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICJ0c3ViYSI7CiM0MwkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbImFsaWFzIl0gPSAkcGFyYW1zWzJdOwojNDQJCQkJfWVsc2V7CiM0NQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICRwYXJhbXNbMV07CiM0NgkJCQkJc3dpdGNoKGNvdW50KCRwYXJhbXMpKXsKIzQ3CQkJCQkJY2FzZSA2OgojNDgJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1szXTsKIzQ5CQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbNF07CiM1MAkJCQkJCWNhc2UgNDoKIzUxCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYXJlbnQiXSA9ICRwYXJhbXNbMl07CiM1MgkJCQkJCQlicmVhazsKIzUzCQkJCQkJY2FzZSA1OgojNTQJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1syXTsKIzU1CQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbM107CiM1NgkJCQkJCQlicmVhazsKIzU3CQkJCQl9CiM1OAkJCQl9CiM1OQkJCX0KIzYwCQl9CiM2MQkJcmV0dXJuICRnbG9iYWxtb2R1bGV2YXJzOwoJfTwvcHJlPgoJCTxwPk5vdyB0aGVyZSBhcmUgZm91ciBwb3NzaWJsZSBzY2VuYXJpb3M6PGJyLz4KCQkxLiBUaGVyZSBpcyBubyByZXdyaXRlIG9yIHByZXR0eXVybHMgYXQgYWxsICh0aGF0J3MgdGhlIGVhc2llc3QuLi4gbGluZXMgNyB0byAxOCBkZWFsIHdpdGggdGhpcyk8YnIvPgoJCTIuIFdlIGFyZSB1c2luZyBpbnRlcm5hbCBwcmV0dHl1cmxzIHdpdGhvdXQgbW9kX3Jld3JpdGUgKGxpbmVzIDI5IHRvIDM1LCBhbmQgMzcgdG8gNTkpPGJyLz4KCQkzLiBXZSBhcmUgdXNpbmcgaW50ZXJuYWwgcHJldHR5dXJscyBhbG9uZyB3aXRoIHRoZSBzdGFuZGFyZCBhc3N1bWVkIG1vZF9yZXdyaXRlIChsaW5lcyAyMiB0byAzNywgYW5kIDM3IHRvIDU5KTxici8+CgkJNC4gV2UgYXJlIHVzaW5nIGEgbm9uLXN0YW5kYXJkIG1vZF9yZXdyaXRlLi4uIGluIHRoYXQgY2FzZSwgeW91J2xsIGVpdGhlciBoYXZlIHRvIGZvcmdldCBhYm91dCB0aGUgaXNfc2VsZWN0ZWQgYXR0cmlidXRlIG9yIHRvIHdyaXRlIHRoZSBjb2RlIHlvdXJzZWxmLjwvcD4KCQk8cD48Yj5DYXNlIDE6IGdvb2Qgb2wnIHVybHM8L2I+PGJyLz4KCQlJZiB3ZSBmaW5kIHRoZSAibWFjdCIgaW4gdGhlIEdFVCBwYXJhbWV0ZXJzLCB0aGVuIHdlIGFyZSBkZWFsaW5nIHdpdGggc3RhbmRhcmQgdXJscy4gV2UganVzdCBoYXZlIHRvIGJyZWFrIHRoZSBtYWN0IHZhbHVlIGludG8gcGllY2VzLCBtYWtlIHN1cmUgaXQncyBhbiBhY3Rpb24gb2Ygb3VyIG1vZHVsZSwgYW5kIHJldHJpZXZlIHRoZSBkaWZmZXJlbnQgcGFyYW1ldGVycyBieSB0aGVpciBuYW1lIChhbG9uZyB3aXRoIHRoZSAkaWQpLjwvcD4KCQk8cD48Yj5DYXNlIDI6IGludGVybmFsIHByZXR0eSB1cmxzPC9iPjxici8+CgkJTGluZXMgMjkgdG8gMzUgcmV0cmlldmUgdGhlIHVybCwgc2VwYXJhdGUgaXQgaW50byBwYXJ0cyAoZWFjaCBwYXJ0IGJlaW5nIGEgZmFrZSBmb2xkZXIgaW4gdGhlIHVybCksIGFuZCBvbmx5IGtlZXAgdGhlIHBhcnRzIHRoYXQgYXJlIGFmdGVyIHRoZSAiaW5kZXgucGhwLyIuPC9wPgoJCTxwPkxpbmVzIDM3IHRvIDU5IHRyeSB0byBmaWd1cmUganVzdCB3aGF0IHBhcmFtZXRlcnMgdGhlc2UgcGFydHMgY291bGQgYmUuIFJlbWVtYmVyIHRoYXQgd2UgaGFkIHRoZSBmb2xsb3dpbmcgcm91dGVzIHJlZ2lzdGVyZWQ6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgojMQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiMyCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiMzCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzQJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiM1CSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7PC9wcmU+CgkJPHA+Um91dGUgIzEgaXMgaGFuZGxlZCBieSB0aGUgbGluZXMgNDEtNDMuIE90aGVyd2lzZSwgaXQgd2lsbCBkZXBlbmQgb24gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzLiBJZiB0aGVyZSBhcmUgNiwgd2Uga25vdyB3ZSdyZSB1c2luZyByb3V0ZSAjNSA6ICRwYXJhbXNbMF0gaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSwgJHBhcmFtc1sxXSB0aGUgbmFtZSBvZiB0aGUgbGV2ZWwgKHdoYXQpLCAkcGFyYW1zWzJdIHRoZSBuYW1lIG9mIHRoZSBwYXJlbnQsICRwYXJhbXNbM10gdGhlIHBhZ2VpbmRleCwgYW5kIHNvIG9uLi4uPGJyLz4KCQlMaWtld2lzZSwgaWYgd2UgaGF2ZSA1IHBhcmFtcywgd2Uga25vdyB3ZSdyZSB1c2luZyByb3V0ZSAjNCwgYW5kIHdpdGggNCBwYXJhbXMsIHdlIGtub3cgd2UncmUgdXNpbmcgcm91dGUgIzMuIElmIHdlIHdlcmUgdXNpbmcgcm91dGUgIzIsIHRoZXJlIHdvdWxkbid0IGJlIGFueXRoaW5nIHRvIHJldHJpZXZlIGFueXdheS48YnIvPgoJCUlmIHRoZSBtb2R1bGUgYWN0aW9uIGlzIGEgcXVlcnkgKGxpbmVzIDM5LTQwKSwgd2UgZG9uJ3QgcmV0cmlldmUgYW55dGhpbmcuLi48L3A+CgkJPHA+U28gYmFzaWNhbGx5LCBpZiB5b3UgY2hhbmdlIHRoZSByb3V0ZXMsIHlvdSd2ZSBnb3QgdG8gY2hhbmdlIGxpbmVzIDM3IHRvIDU5LjwvcD4KCQk8cD48Yj5DYXNlIDM6IGludGVybmFsIHByZXR0eSB1cmxzIHdpdGggc3RhbmRhcmQgbW9kX3Jld3JpdGU8L2I+PGJyLz4JCQoJCUluIHRoaXMgY2FzZSwgdGhlIHBhdGggdGhhdCdzIGFmdGVyICJpbmRleC5waHAvIiBpbiBjYXNlIDIgaXMgc2ltcGx5IHBhc3NlZCB0aHJvdWdoIHRoZSAicGFnZSIgR0VUIHBhcmFtZXRlci4gU28gb25jZSB3ZSd2ZSByZXRyaWV2ZWQgaXQsIHRoZSB0YXNrIGlzIGp1c3QgbGlrZSBjYXNlIDIuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CQkKCQkKPC9kaXY+CjxwIGFsaWduPSJyaWdodCI+UGllcnJlLUx1YyBHZXJtYWluPC9wPgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/function.createFieldForm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjw/cGhwCgkJJGNvbXBhcmVjaG9pY2VzID0gYXJyYXkoJHRoaXMtPkxhbmcoImNvbnRhaW5zIikgPT4xLCAkdGhpcy0+TGFuZygiaXNleGFjdGx5IikgPT4wLCAkdGhpcy0+TGFuZygiaXNub3QiKSA9PjIsICR0aGlzLT5MYW5nKCJpc2hpZ2hlcnRoYW4iKSA9PjMsICR0aGlzLT5MYW5nKCJpc2xvd2VydGhhbiIpID0+NCk7CgkJJGRhdGVjb21wYXJlY2hvaWNlcyA9IGFycmF5KCR0aGlzLT5MYW5nKCJxdWVyeXVzZSIpID0+ICJOQSIsICR0aGlzLT5MYW5nKCJpc2FmdGVyIikgPT4zLCAkdGhpcy0+TGFuZygiaXNiZWZvcmUiKSA9PjQsICR0aGlzLT5MYW5nKCJpc2JldHdlZW4iKSA9PjUpOwoJCSRvcmRlcmNob2ljZXMgPSBhcnJheSgiQVNDIj0+IkFTQyIsIkRFU0MiPT4iREVTQyIpOwoKCQkkb3V0cHV0ID0gYXJyYXkoKTsKCgkJc3dpdGNoKCR3aGF0KXsKCQkJY2FzZSAiY2F0ZWdvcnkiOgoJCQkJJG91dHB1dFsiZGVzY3JpcHRpb24iXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJjYXRlZ29yeV9kZXNjcmlwdGlvbiIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfZGVzY3JpcHRpb24iLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX2Rlc2NyaXB0aW9uIiwiIiwzMCkpOwoJCQkJJG91dHB1dFsibmFtZSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm5hbWUiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX25hbWUiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX25hbWUiLCIiLDMwKSk7CgkJCQkKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wdGltZSIsIHRpbWUoKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNfYW5kIiwgJHRoaXMtPkxhbmcoInRoaXNhbmR0aGlzIikpOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXBfcHJlZml4IiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfIik7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgyIiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfcGFydDJfIik7CgkJCQkkdG1wdGVtcGxhdGUgPSAne2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgfTxkaXYgaWQ9IicuJGlkLidkYXRlX21vZGlmaWVkX3BhcnQyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPiB7JHNfYW5kfSB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4MiB0aW1lPSR0bXB0aW1lIH08L2Rpdj4nOwoJCQkJJHRtcG91dCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiY29tcGFyZV9kYXRlX21vZGlmaWVkIiwkZGF0ZWNvbXBhcmVjaG9pY2VzLC0xLCJOQSIsIiBvbmNoYW5nZT1cImRhdGVpbnB1dF9jaGFuZ2Vjb21wYXJlKCciLiRpZC4iZGF0ZV9tb2RpZmllZCcsIHRoaXMudmFsdWUpO1wiIikuIiAiLiR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdG1wdGVtcGxhdGUpOwoJCQkJJHRtcG91dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCJmaWVsZF9kYXRlX21vZGlmaWVkIiwgIl9fZGF0ZV9maWVsZCIpOwoJCQkJJG91dHB1dFsiZGF0ZV9tb2RpZmllZCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoImRhdGVfbW9kaWZpZWQiKSwgJHRtcG91dCk7CgkJCQkkb3JkZXJmaWVsZG9wdGlvbnMgPSBhcnJheSgiIj0+IiIsImRlc2NyaXB0aW9uIj0+ImRlc2NyaXB0aW9uIiwiaWQiPT4iaWQiLCJuYW1lIj0+Im5hbWUiLCJhbGlhcyI9PiJhbGlhcyIsIml0ZW1fb3JkZXIiPT4iaXRlbV9vcmRlciIsImRhdGVfbW9kaWZpZWQiPT4iZGF0ZV9tb2RpZmllZCIpOwoJCQkJJG91dHB1dFsib3JkZXJieSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm9yZGVyYnlmaWVsZCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyIiwkb3JkZXJmaWVsZG9wdGlvbnMpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyX3R5cGUiLCRvcmRlcmNob2ljZXMpKTsKCQkJCWJyZWFrOwoJCQljYXNlICJ2aWRlb3MiOgoJCQkJJG91dHB1dFsidmlkZW9pZCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInZpZGVvc192aWRlb2lkIiksICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiY29tcGFyZV92aWRlb2lkIiwkY29tcGFyZWNob2ljZXMsLTEsMSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJmaWVsZF92aWRlb2lkIiwiIiwzMCkpOwoJCQkJJG91dHB1dFsiZGVzY3JpcHRpb24iXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJ2aWRlb3NfZGVzY3JpcHRpb24iKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX2Rlc2NyaXB0aW9uIiwkY29tcGFyZWNob2ljZXMsLTEsMSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJmaWVsZF9kZXNjcmlwdGlvbiIsIiIsMzApKTsKCQkJCSRvdXRwdXRbInBhcmVudCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInBhcmVudCIpKTsKCQkJCSRwYXJlbnRvcHRpb25zID0gJHRoaXMtPmdldF9oaWVyYXJjaHlvcHRpb25zKCJ2aWRlb3MiKTsKCQkJCSRvdXRwdXRbInBhcmVudCJdW10gPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImZpZWxkX3BhcmVudCIsJHBhcmVudG9wdGlvbnMpOwoJCQkJJG91dHB1dFsibmFtZSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm5hbWUiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX25hbWUiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX25hbWUiLCIiLDMwKSk7CgkJCQkKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wdGltZSIsIHRpbWUoKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNfYW5kIiwgJHRoaXMtPkxhbmcoInRoaXNhbmR0aGlzIikpOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXBfcHJlZml4IiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfIik7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgyIiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfcGFydDJfIik7CgkJCQkkdG1wdGVtcGxhdGUgPSAne2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgfTxkaXYgaWQ9IicuJGlkLidkYXRlX21vZGlmaWVkX3BhcnQyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPiB7JHNfYW5kfSB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4MiB0aW1lPSR0bXB0aW1lIH08L2Rpdj4nOwoJCQkJJHRtcG91dCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiY29tcGFyZV9kYXRlX21vZGlmaWVkIiwkZGF0ZWNvbXBhcmVjaG9pY2VzLC0xLCJOQSIsIiBvbmNoYW5nZT1cImRhdGVpbnB1dF9jaGFuZ2Vjb21wYXJlKCciLiRpZC4iZGF0ZV9tb2RpZmllZCcsIHRoaXMudmFsdWUpO1wiIikuIiAiLiR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdG1wdGVtcGxhdGUpOwoJCQkJJHRtcG91dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCJmaWVsZF9kYXRlX21vZGlmaWVkIiwgIl9fZGF0ZV9maWVsZCIpOwoJCQkJJG91dHB1dFsiZGF0ZV9tb2RpZmllZCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoImRhdGVfbW9kaWZpZWQiKSwgJHRtcG91dCk7CgkJCQkkb3JkZXJmaWVsZG9wdGlvbnMgPSBhcnJheSgiIj0+IiIsInZpZGVvaWQiPT4idmlkZW9pZCIsImRlc2NyaXB0aW9uIj0+ImRlc2NyaXB0aW9uIiwicGFyZW50Ij0+InBhcmVudCIsImlkIj0+ImlkIiwibmFtZSI9PiJuYW1lIiwiYWxpYXMiPT4iYWxpYXMiLCJpdGVtX29yZGVyIj0+Iml0ZW1fb3JkZXIiLCJkYXRlX21vZGlmaWVkIj0+ImRhdGVfbW9kaWZpZWQiKTsKCQkJCSRvdXRwdXRbIm9yZGVyYnkiXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJvcmRlcmJ5ZmllbGQiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJvcmRlciIsJG9yZGVyZmllbGRvcHRpb25zKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJvcmRlcl90eXBlIiwkb3JkZXJjaG9pY2VzKSk7CgkJCQlicmVhazsKCQkJCgkJfQoJCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWZ1bmN0aW9uIGRhdGVpbnB1dF9jaGFuZ2Vjb21wYXJlKGZpZWxkbmFtZSwgbmV3dmFsdWUpewoJCWlmKG5ld3ZhbHVlID09IDUpewoJCQl2YXIgbmV3c3RhdGUgPSAiaW5saW5lIjsKCQl9ZWxzZXsKCQkJdmFyIG5ld3N0YXRlID0gIm5vbmUiOwoJCX0KCQlpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWVsZG5hbWUrIl9wYXJ0MiIpKQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWVsZG5hbWUrIl9wYXJ0MiIpLnN0eWxlLmRpc3BsYXkgPSBuZXdzdGF0ZTsKCQlyZXR1cm4gdHJ1ZTsKCX0KPC9zY3JpcHQ+Cic7CgkJaWYoJGFzc2lnbil7CgkJCWZvcmVhY2goJG91dHB1dCBhcyAka2V5PT4kdmFsdWUpewoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCRrZXkuIl9sYWJlbCIsICR2YWx1ZVswXSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJGtleS4iX2lucHV0IiwgJHZhbHVlWzFdKTsKCQkJfQoJCX1lbHNlewoJCQllY2hvICI8dGFibGUgc3R5bGU9XCJib3JkZXItbGVmdDogMXB4IHNvbGlkIExpZ2h0R3JheTsgcGFkZGluZy1sZWZ0OiAxMHB4O1wiPiI7CgkJCWZvcmVhY2goJG91dHB1dCBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoJGtleSAhPSAib3JkZXJieSIpCWVjaG8gIgoJCQkJPHRyPjx0ZD4iLiR2YWx1ZVswXS4iPC90ZD48dGQ+Ii4kdmFsdWVbMV0uIjwvdGQ+PC90cj4iOwoJCQl9CgkJCQllY2hvICIKCQkJPC90YWJsZT48YnIvPiI7CgkJCWVjaG8gIjxwPiIuJG91dHB1dFsib3JkZXJieSJdWzBdLiI6ICIuJG91dHB1dFsib3JkZXJieSJdWzFdLiI8L3A+IjsKCQl9Cj8+]]></data>
	</file>
	<file>
	  <filename>/function.plGetFileInfo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCWlmKCFpc3NldCgkZmlsZXBhdGgpKQlleGl0OwoJCgkkaW5mbyA9IGFycmF5KCk7CgkKCSRpbmZvWyJmaWxlbmFtZSJdID0gYmFzZW5hbWUoJGZpbGVwYXRoKTsKCQoJJHNpemUgPSBmaWxlc2l6ZSgkZmlsZXBhdGgpOwoJJGluZm9bInNpemUiXSA9ICRzaXplOwoJaWYoJHNpemUgPiAxMDczNzQxODI0KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDczNzQxODI0KSwyKS4nIEdCJzsKCX1lbHNlaWYoJHNpemUgPiAxMDQ4NTc2KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDQ4NTc2KSwyKS4nIE1CJzsKCX1lbHNlaWYoJHNpemUgPiAxMDI0KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDI0KSwyKS4nIEtCJzsKCX1lbHNlewoJCSRzaXplIC49ICcgYnl0ZXMnOwoJfQoJJGluZm9bInNpemVfd2Zvcm1hdCJdID0gJHNpemU7CgkKCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlcGF0aCwgIi4iKSwgMSkpOwoJJGluZm9bImV4dCJdID0gJGV4dGVuc2lvbjsKCWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdmbHYnLCdzd2YnLCd3bXYnLCdtb3YnKSkpewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mbWVkaWEuZ2lmIjsKCX1lbHNlaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2pwZWcnLCdqcGcnLCdwbmcnLCdnaWYnKSkpewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIjsKCX1lbHNlewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mZG9jLmdpZiI7Cgl9CgkKCSRpbmZvWyJpbWFnZXNpemUiXSA9IGZhbHNlOwoJJGltZ2luZiA9IGdldGltYWdlc2l6ZSgkZmlsZXBhdGgpOwoJaWYoaXNzZXQoJGltZ2luZlsxXSkpewoJCSRpbmZvWyJ3aWR0aCJdID0gJGltZ2luZlswXTsKCQkkaW5mb1siaGVpZ2h0Il0gPSAkaW1naW5mWzFdOwoJCSRpbmZvWyJpbWFnZXNpemUiXSA9ICRpbWdpbmZbMF0uJ3gnLiRpbWdpbmZbMV07CgkJaWYoaXNzZXQoJGltZ2luZlsibWltZSJdKSkJJGluZm9bIm1pbWUiXSA9ICRpbWdpbmZbIm1pbWUiXTsKCX0KCQoJJGluZm9bIm93bmVyIl0gPSBmaWxlb3duZXIoJGZpbGVwYXRoKTsKCSRpbmZvWyJwZXJtaXNzaW9ucyJdID0gZmlsZXBlcm1zKCRmaWxlcGF0aCk7CgkKCSRpbmZvWyJmaWxlbXRpbWUiXSA9IGZpbGVtdGltZSgkZmlsZXBhdGgpOwoJJGluZm9bIm1vZGlmaWVkIl0gPSBkYXRlKCJZLW0tZCBHOmkiLCAkaW5mb1siZmlsZW10aW1lIl0pOwoJCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.plresize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gZnVuY3Rpb24gcGxSZXNpemUoJGZ1bGxwYXRoLCAkbmV3cGF0aCwgJG5ld3dpZHRoLCAkbmV3aGVpZ2h0PWZhbHNlLCAkdHJhbnNwYXJlbmN5PWZhbHNlLCAkY3JvcD1mYWxzZSkgewoJJG5hbWUgPSBzdHJfcmVwbGFjZSgnLy8nLCcvJywkZnVsbHBhdGgpOwoJaWYoIWZpbGVfZXhpc3RzKCRuYW1lKSkJcmV0dXJuIGZhbHNlOwoJJGltYWdlX2luZm9zID0gZ2V0aW1hZ2VzaXplKCRuYW1lKTsKCQoJJGRvcmVzaXplID0gdHJ1ZTsKCWlmKCAkaW1hZ2VfaW5mb3NbMF0gPD0gJG5ld3dpZHRoICYmICgkbmV3aGVpZ2h0ID09IGZhbHNlIHx8ICRpbWFnZV9pbmZvc1sxXSA8PSAkbmV3aGVpZ2h0KSApewoJCSRyZXR1cm4gPSBmYWxzZTsKCX1lbHNlewoJCSRuZXduYW1lID0gKCRuZXdwYXRoID09ICcnPyRmdWxscGF0aDokbmV3cGF0aCk7CgkJJGFyciA9IHNwbGl0KCJcLiIsJG5hbWUpOwoJCSRleHQgPSBzdHJ0b2xvd2VyKCRhcnJbY291bnQoJGFyciktMV0pOwoKCQlpZigkZXh0PT0ianBlZyIgfHwgJGV4dD09ImpwZyIpewoJCQkkaW1nID0gQGltYWdlY3JlYXRlZnJvbWpwZWcoJG5hbWUpOwoJCX0gZWxzZWlmKCRleHQ9PSJwbmciKXsKCQkJJGltZyA9IEBpbWFnZWNyZWF0ZWZyb21wbmcoJG5hbWUpOwoJCX0gZWxzZWlmKCRleHQ9PSJnaWYiKSB7CgkJCSRpbWcgPSBAaW1hZ2VjcmVhdGVmcm9tZ2lmKCRuYW1lKTsKCQl9CgkJaWYoISRpbWcpICAgcmV0dXJuIGZhbHNlOwoKCQkkb2xkX3ggPSBpbWFnZVNYKCRpbWcpOwoJCSRvbGRfeSA9IGltYWdlU1koJGltZyk7CgoJCWlmKCRuZXdoZWlnaHQgJiYgJGNyb3ApewoJCQkvLyBmaW5kIHRoZSB3YW50ZWQgcmF0aW8KCQkJJHdhbnRlZHJhdGlvID0gJG5ld3dpZHRoLyRuZXdoZWlnaHQ7CgkJCSRjdXJyZW50cmF0aW8gPSAkb2xkX3gvJG9sZF95OwoJCQlpZigkY3VycmVudHJhdGlvID4gJHdhbnRlZHJhdGlvKXsKCQkJCS8vIHdpZHRoIGlzIHRvbyBsYXJnZQoJCQkJJGNyb3BfeCA9IChpbnQpICgkb2xkX3kgKiAkd2FudGVkcmF0aW8pOwoJCQkJJGNyb3BfeSA9ICRvbGRfeTsKCQkJCSRpbnRfdyA9IChpbnQpICgoJG9sZF94IC0gJGNyb3BfeCkgLyAyKTsKCQkJCSRpbnRfaCA9IDA7CgkJCX1lbHNlaWYoJGN1cnJlbnRyYXRpbyA8ICR3YW50ZWRyYXRpbyl7CgkJCQkvLyBoZWlnaHQgaXMgdG9vIGxhcmdlCgkJCQkkY3JvcF94ID0gJG9sZF94OwoJCQkJJGNyb3BfeSA9IChpbnQpICgkb2xkX3ggLyAkd2FudGVkcmF0aW8pOwoJCQkJJGludF9oID0gKGludCkgKCgkb2xkX3kgLSAkY3JvcF95KSAvIDIpOwoJCQkJJGludF93ID0gMDsKCQkJfQoJCQlpZigkY3VycmVudHJhdGlvICE9ICR3YW50ZWRyYXRpbyl7CgkJCQkvLyB3ZSBmaXJzdCBjcm9wCgkJCQkkZGltZyA9IEltYWdlQ3JlYXRlVHJ1ZUNvbG9yKCRjcm9wX3gsICRjcm9wX3kpOwoJCQkJaWYoaW1hZ2Vjb3B5cmVzYW1wbGVkKCRkaW1nLCRpbWcsMCwwLCRpbnRfdywkaW50X2gsJGNyb3BfeCwkY3JvcF95LCRjcm9wX3gsJGNyb3BfeSkpewoJCQkJCWltYWdlZGVzdHJveSgkaW1nKTsKCQkJCQkkaW1nID0gJGRpbWc7CgkJCQl9CgkJCX0KCQkJJG9sZF94ID0gJGNyb3BfeDsKCQkJJG9sZF95ID0gJGNyb3BfeTsKCQkJJHRodW1iX2ggPSAkbmV3aGVpZ2h0OwoJCQkkdGh1bWJfdyA9ICRuZXd3aWR0aDsKCQl9ZWxzZXsKCQkJJHJhdGlvID0gJG5ld2hlaWdodD9taW4oJG5ld3dpZHRoIC8gJGltYWdlX2luZm9zWzBdLCAkbmV3aGVpZ2h0IC8gJGltYWdlX2luZm9zWzFdKTooJG5ld3dpZHRoIC8gJGltYWdlX2luZm9zWzBdKTsKCQkJJHRodW1iX2ggPSAkaW1hZ2VfaW5mb3NbMV0gKiAkcmF0aW87CgkJCSR0aHVtYl93ID0gJGltYWdlX2luZm9zWzBdICogJHJhdGlvOwoJCX0KCgkJJG5ld19pbWcgPSBJbWFnZUNyZWF0ZVRydWVDb2xvcigkdGh1bWJfdywgJHRodW1iX2gpOwoJICAgCgkJaWYoJHRyYW5zcGFyZW5jeSkgewoJCQlpZigkZXh0PT0icG5nIikgewoJCQkJaW1hZ2VhbHBoYWJsZW5kaW5nKCRuZXdfaW1nLCBmYWxzZSk7CgkJCQkkY29sb3JUcmFuc3BhcmVudCA9IGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCRuZXdfaW1nLCAwLCAwLCAwLCAxMjcpOwoJCQkJaW1hZ2VmaWxsKCRuZXdfaW1nLCAwLCAwLCAkY29sb3JUcmFuc3BhcmVudCk7CgkJCQlpbWFnZXNhdmVhbHBoYSgkbmV3X2ltZywgdHJ1ZSk7CgkJCX0gZWxzZWlmKCRleHQ9PSJnaWYiKSB7CgkJCQkkdHJucHJ0X2luZHggPSBpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJGltZyk7CgkJCQlpZiAoJHRybnBydF9pbmR4ID49IDApIHsKCQkJCQkvL2l0cyB0cmFuc3BhcmVudAoJCQkJCSR0cm5wcnRfY29sb3IgPSBpbWFnZWNvbG9yc2ZvcmluZGV4KCRpbWcsICR0cm5wcnRfaW5keCk7CgkJCQkJJHRybnBydF9pbmR4ID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRuZXdfaW1nLCAkdHJucHJ0X2NvbG9yWydyZWQnXSwgJHRybnBydF9jb2xvclsnZ3JlZW4nXSwgJHRybnBydF9jb2xvclsnYmx1ZSddKTsKCQkJCQlpbWFnZWZpbGwoJG5ld19pbWcsIDAsIDAsICR0cm5wcnRfaW5keCk7CgkJCQkJaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCRuZXdfaW1nLCAkdHJucHJ0X2luZHgpOwoJCQkJfQoJCQl9CgkJfSBlbHNlIHsKCQkJSW1hZ2VmaWxsKCRuZXdfaW1nLCAwLCAwLCBpbWFnZWNvbG9yYWxsb2NhdGUoJG5ld19pbWcsIDI1NSwgMjU1LCAyNTUpKTsKCQl9CgkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCRuZXdfaW1nLCAkaW1nLCAwLDAsMCwwLCAkdGh1bWJfdywgJHRodW1iX2gsICRvbGRfeCwgJG9sZF95KTsKCgkJaWYoZmlsZV9leGlzdHMoJG5ld25hbWUpKQlAdW5saW5rKCRuZXduYW1lKTsKCgkJaWYoJGV4dD09ImpwZWciIHx8ICRleHQ9PSJqcGciKXsKCQkJaW1hZ2VqcGVnKCRuZXdfaW1nLCAkbmV3bmFtZSk7CgkJCSRyZXR1cm4gPSB0cnVlOwoJCX0gZWxzZWlmKCRleHQ9PSJwbmciKXsKCQkJaW1hZ2VwbmcoJG5ld19pbWcsICRuZXduYW1lKTsKCQkJJHJldHVybiA9IHRydWU7CgkJfSBlbHNlaWYoJGV4dD09ImdpZiIpIHsKCQkJaW1hZ2VnaWYoJG5ld19pbWcsICRuZXduYW1lKTsKCQkJJHJldHVybiA9IHRydWU7CgkJfQoJCWltYWdlZGVzdHJveSgkbmV3X2ltZyk7CgkJaW1hZ2VkZXN0cm95KCRpbWcpOwoJCWlmKCRyZXR1cm4pICRyZXR1cm4gPSAkbmV3bmFtZTsKCX0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQABAAOf/AA0PCw4OEwMRKgoRIwUXNxkcIxweGxYfMA8kTSgmKhgqQycpJhotMSQrPCgsLhEyay4wLTU3NDM3Ois6PkM1Kjo4OxtBUjs9OhdAjh4/hwtElydEg0JDQWQ+MFFDOhNMpR9MmU5IQkhKSEFKXhdUszhWXnxIKlFST09TVhFbwiVYqAFhxC9dpFZZW1hZV4ZROG5XShtkyF1fXBhpyVRkbGFjYKZULjdnumFlaEVseGZla2NleZddMFBpl2doZh510mVmmWxua0JzuaRhTGxuem1vcmNyeDt3ylJ0rW1xi1p4f3FzcDh/rHd1eXJ3eXV3dG14hGp5i05+wi2I2UGD1Xt9ertuVXN+kXt+gXt+iF6Gkk2FztNtP319nmKCvKh3YG2Ejsl0MYCCf5d9bcB4N3OGqtN1PYSGg7F/U36B2oGFrDWX3vZvO1+N0m6Luk+R2oWJi4SJlomKh0ObzlaYtGWSzm2QzY2PjIuPkomPmVKdsnuTnqSLd/x4NIWOv1qZ3J+OhJCSj/N9P4aUqdqHM4yQ5Tuo55aWmoWYvfqDOO+HMZaYlYKaxHybzJaYoaaXknag3P6KM82VX5yem5WY7mum4FGv6eOVPqGfo5uho++TQaCin6CirmWu5pmju/GWO42l0PCVTIem2Y+osZKmvOGaTMOfdbmikVC57KOoqqaopWG40vqbM6mnq6GpsYOv4qyuq6yuuaap/66vs2PB4bevqGq/7Xm76c+sh4q457GzsKW1yJu32qS205a+zLGy/ba4tWfK8be4u7a4w7i07MG5soDJ8L2+u76+yKnC47LA3ozK8ZjH7MDAw7y/6cHDwL6/+4HS9ILU747S58TE277I2cbJxcjIy8fI0rjM5ZXW9KLU7qTV4svNyc7QzczM/tDQ05/c8dDS3NPV0tDT/bXd7M3X6dfZ1tja5Nvd2tzb89/h3uDj7eXj5+Dl6OPj/uTn4+Dn9+rm+Ojq5+zt8Ovt9+zv6/Dx/fH08O/19/j1+vb49Pn7+Pv6/vv9+v3//CH+EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAQABAAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjEvTnj5/Fi/woStzY0N/FffhCisS3b59FfwZTqlzJsqA/fvvw2UvX7ZkuYMeseVsHb549fPssthxKtKA/fvvsjVMlp+mdQIHuSA20Cdi4dfPw7ePnr6jXlfz22TsmR0ygRWjTTtrEdtKiQLC6pZuHbx8/f1/z/vPHb9+4O3LSnglSZRGwZ9a6eevWzdoxWJt0eVs3D98+fv70EvXHDx8wMYEWBfLBYYmqbuPGeVvNOvU4b9aOPRu3zh4+fv40s/THz96mM4smPYEgQ1dqxoxZr352x0eVY+O6PbN2Dp69ffz86U3pzyK+TXLQ/p6AEMjbOGvHjlnrxnqct0UcIkSAIGJRt3HdjnVLZw8fP3/bDeQPPyXZA8wZiwRywQWqjPPMEyJwIEINqqyW2iQXyKfhBWd4c844xzxzzjz48OOPVwX50489cqxjTRVoLQjMOceIAIGGEVwQSGrWnICjhhdscs4546Q3Djz48OMPigLxo083IlTxRBVonQABMOdY48OP8nEAzDiwXMClfEuck0464xwDzDjz4MNPSnAKxM8+1nBwxzh3yLDIEguock43wFwwZgRyjDPJoBEEcc6Z6YwDyzHn2LOPP3EaxM8+1nAgRibCwPKEDAtUcQ5jkyAaxDmwICpGOuuks046/tao8sw69vDjj0C45oqrP/zs84wIcIxSziiZVHEBBM+Mw9giiC5xjjUijMmBLutUW206wMDSDTz48KPrt/7wo48qJ8AxyjbhhLMHChxwEAhyulwwaCBDBsLlBWKcAw881q4zzibHnGMPP/58i6s//OBziAhwkMIMM8toM40SLQDDwSHXdGONDGOe8AyjgXCgIQdnnLPvyfCsk44uqlgDDz78GPyPP/zgI8cJeJDySi633GJMNNMo0YwPAGTCGDAn/CgCLOcwuk43mwSyiTXrzDNPOs8cM86+63izCDDn2MOPP7niyg8+criAhyegQFJJJZ3cYkswq5QQgAsQbMLY/jFVnCDCCU8Ic86Z1u4Lj9XzpHOHCAuKIMY48KSziSrdzLOPP2X/ww8+csiQxyCNNFJHG3/8UYklqASzSgnHBLLAJtasZs0z1oxzDqPpnOPOvlbbs04QXNaQzjrALPLMOvjwU7Y/+9TgQyuDMNJIHW1sQcUWb6xhCCrBrELDCQYAwIEYz6Q25DlntgPMCZO4Y7U99iwyaCDwWBMIMOfYw0/Z/OAThDXjyEMZ3OAFKQjhCD/4wRTWYAhUBEMPDACABCPgAmu45hlBgAEaxiADWFgNfvBwwaBksA5v3AEW47AHP/yRK37g4xlPeMYsiNADJAjhBjeYQQx+MIU1GAIV/sHQQwEgsIACSEAO47BGLQDxAjMkAg3HcIc74AG/dHBgUCc4xzgCoYpuzGMf/sgVP/ABD1XUQA4oGEEPWKACFZAgBTH4ARXWYAhU0GICDohAAgxwgmM84gtcEEQiIhGKU4BDBnewBz7SwYEISEACFZCAhlxwpkBswhrw2Ic/cuWPfdjjHIfgwBKwMIINgEADHyBBCmLwgymsYQ4WYEAOJLCAWi7CCmzogyAiEYlQSKIYLliEPfDhDkyAAx3iEMcwmiCBCFQBHukIxCasAQ988CNX/uAHPuABDjigIBBFUMAGNPCBD5AgBTH4gRAUcAA6SEMLDogABE4wBDb0IRGR/lBEKD5hCnDAwx70QEc92IGMVhgUG5xAwTHscQ45TOIZ68AHP8rmj33YYx3dEIMIghAAAmRAA+UkwQpUQAABMAEVwZCGFiRQgxp4gAt9SEQkPqEJVpSiFvZoBzruwQ5MBOIJQQiCE1rRDKuNQwyTeMY68MGPzPFjH/ZYhzeCAAAIoAABGdBAOTMgAAKwYAqdsIUxpKEFPFShAh0QRCIioYlPsOISuJjHNdBRD0wEYgk4qIEPnlCEVoCDHt2owiSsAQ988CNz/+DHPuyxjm7IQARyQAECMqCBBwiAACCYwQ/+0AlbRGMaYGiBHEJgg0QoQhOf+EQpSnEKTLRDGJlY/kINZOCCE9TgCU5ohjuA8YRNWAMe+/AHYv/Bj33YYx3dOMEJxFAABDxgAAQAAQlSMIM3VOIWxohGOPZwjE10wAyKIIR4JYEGPmCiHZiQQxBwoAMZyMAFPngCHsARiCqoAhzz2Ic/hvsPfuzDHuvoxgkMYIAKBIAAGfgACUiwAir8oRK3MIY2wgGGFoTABGEIAxn4oANMHAIczVBFE3awAx34oAYycMETnNAMJ4gBFuOwBz/8wV9/8GMf9liHNS7gAjhUAAEY0MAHFnyEN1SiE7dYRji4YYQWUIAHPBhDCxyRCkzoIxWHUEMh0gCEIvigBi4IQhVSUYQz6OIc9uAH/n8F4g9+7MMe6zjGBZyAhQI8AAMaKOcR2vCHStxiGdoIBzeMsAAKnMIFRIhFK4RhD1VwAhq/kAUlklAEHMigBmLAAxzkAIxz2IMfaxaIP/ixD3ukQxgOkAAADvAADGjgA1Jowx8q8YpbLEMb5fCFCJqACQ5wAhOxAEc3hEENcnzjG9DwQxOCUAMZNAELmICDLs5hD36EWiD+4Ac+5pEOYBjgBFhowAM0AAIp1MEOkKhELh62jVG0IBVwEAEyDoGMdhyjGep4h77l4YwsLMEHOFgCFloBB1iMwx78uLZA/MEPfMwjHaqAgBiacIAHsMALdqgDJCDxilwwgxQ4aEIz/oqAA2w4Ahv0EAY44vGOe/SjH/LIgxOCUIMlYCEVVVDFOOzBD4ULxB/8wMc8zrEJCMggAAPogRvc0IhGiOIVvCBFFozgina0AAvoyLo+dNGOe9yjHwLRByecEIQaLAELraiCKrwxj334w+f/8Ac/8DGPcywCABwowg7K4IamiwIUg8jDHqKADHec4AxZj0c/dNGOl/dDIP2IhROCUIMgYKEVTthEN+axD3/A/R/+4Ac+4HGOM0TgDk6IQhmaDopB5IEUvYgCMtxxAjFkPR790EU79PFygfQjFk4IQg2CUIVWOGET3ZjHPvzx+X/4gx/4gMc4zuADORThCohAxCDy/kAKXvDiCq5ARwuqgI7y60MX7fD6y/+hD044IQg4WEIVWvGETVxjHvvwR/P/YRF8wGMcclADT+AEcZAHeeAJvJAMvTAIWdAMTVAD4tAK2EAPwAAO8vAOXtcP8hAHS+ADNbAEVZAKTrAJ3TAP++AP+/cP/LAP9rAO41AFVXAHWAAHntALvaAMyUAKUIAJeCACzXAIyNAOz9AM6qBv+uYMWRAEPiADS4AFrfAEm9AN87AP/pCC/8AP+2AP69ANS3AGdwAHnNALyqAMydALg5AHmMABmIAJsQAO3iAM1EAOxwYNftAEQVADMlAFYiAMQbAJ3TAP++APVugP/LAP9rAO/tYQBHIQCHAQC2OYDdmwC3HQCjWAA62ACbNAD5jgCMTwC7JQCEkQBD4gAzUgBniACU6wCd0wD/vgD1YoEPywD/awDtawBIEgB3gwDNVQDeZgDsPgCFiAAngwC5hAD6mACV2QBmkABEXgAzXgAkHwBLOABU/QCt4wD/vgD6/4D/7AD/tgD+vwDE+wCHKACdXQi+hgDtXgCniAA4dwCNdwDarQBDqgA0WAAzXgXk/gBNeAA2IwC+NgD/ywjbjCD/hgD+lwDE+wCcIwC+JgDvEQD+yADtcgDE2BCfSQCXcQBD5QAzjgAi4QBE+ACbPgA3cgDOmAD/xAkALhD/yAD/OQ/g7AUAWbAAetgA7swA71UA/0QA/XcAitwA7IgAlPUAMy4AIt4ANP4ATg0ARPkAnXAA/4wA8sKRD+wA/4MA/pAAtiMAly0AzsUA/0kA/5wA/24AQ6gA710AqH8AQ+4ANB8ARFIAx4gAN3oAvgYA/74A9VKRD+wA/4MA/nAAuHoArekA70kA8vxw9iYAASgA072QqHgAVBUAROIAytgANioArWsA74wA8sWTb+wA/4MA/noAqtcAyBMA784A/4EAQQcAInoAPXsJPYMAzDIAzYkAk1UAWTcAznYA/54A+hWTb+wA/4AA/nwBaLcAfwgA8+AAEysARN8ARBcAjNgA3a/jkMTYADVbAIwDAO84AP/FCcmWMR+AAP47AIqjAJ3eACFxAEYrAIqgALm3AHVRAEbxkEVXAHm3AM4wAP+MAP/mCemWMR+AAP47AIuiCbZ3AHmwAM1jAO3fAMwKAKmzAJk6AKuvAM5wAP+MAP/jBcJFqiw8UP+2AP8DAOVeADbAELzzAO6zAP8LAO49AN1pCj3TAO6zAP+MAP/mCiQjqk/8AP+2AP8DAO1nAMx9AN6TAP+LAPIWEP8wAPVjoP9oAP+8AP/kCkXlqi/LAP+AAP6XAO6bAO9oAPF2ERJYEPJWER/vClckqi/LAP+AA/9oAP+8AP/oArFHERFDGngjpcG/5gESXBD/4wqIo6pxRBEYv6qJAaqZI6qZkTEAA7]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif.old</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQABAAOf/AAABAAIABQADDwAECAAIJAQJGAcKBgIMHwMNLAANOwAFkgAPNwwQEwARMw8RDgAQRw0JegATTBcZFwcaTwEdUAscPxwbHgQeXhIfMh4fHQAiaQoaoQAhiAEjdwAjfAAjhA4mWSUmJCclKQApeCUmLRcoZCIqQAEskRYtUAAuiissLBEwdws0bTIyNTIzMRQwrQc7hSU3YQA+lhM8fBg8cDY4Qzk4Ozg6NwA/rBY/kzA+Xj89QCdBbD4+TDtAQhFFlCxBeCZBikFCPwBKsSZDuzRHbRFKwEZIS0dJRjtNawRYv0tPUlFOUjVRiE5QTU1PYDFSmylWiw9ctVJSWyZVy0hWhFhWWVZXVQBg/1NYWlhWaD1bjCpbzD9dmF1aaVleYFxccV1eW19dYV5faAFs/xll/yRm1lFigU1jkABx/19kckVjyV5kemRmY2RnajdwpVBpomhpcjNv2B914z9ytWttagZ8/2tsgW9tcTB24WdviGFxjl9yll1yoXFye3BygVh2rXV0dzt73nV2cyeB/kJ/zieF7Ex/vHl6d3x7f3h9fyiJ/zyG6Xp9liON/3yAjm+Dq0WK54GCi2WGwC6T/4aFiGmF4YWHhFmNzUmQ7TGX/0CU9oaMpkWZ9YqOnI2Ol4+OkkCe/5CSj1Gb8XSU45CSp4mVsZSVnpeVmU+i+Eal/06k82Gi5lui/ZmbmHyf1Fan/Zydpp+doZGfvE6t/5efs3Gm+W2q9p+js2et/lyx/6Smo6emqqansWO3/5es06urqW21/6ystq+tsXq5/rKvwHC9/4628quzxYu3/LW1v7i1ura4tX/B/4fG/r68wLm+wb2/y8HBvsPAxZnH/5TM/6rH+KfJ/8bIxcXH0srIzKbQ/8HR5NHP09DQ283S1dLT0K7b/7zY/dLX2tHX59rY3NjZ47/f/eTe3eDf497f6c/k/8To/+Pl4uPk7tzm9Ofk6efp5uvo7d3s/+nq9O/s8eTy/+/w+vPx9fH08O32/vf1+fz5/vf9//7//P///yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAABAAEAAAAj+AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNiVJEBgMaPBzO0G9cCAMiT/wYA87fPmxgAKDUCYFIJlTdyYgDExAjARqIvSLLsAABgp0UAPkCFcYIkA1GjFkPEwycriwqiUCs6wOavnrtYA4hmnQggUb996rK1IDpWIoAjiQLx8saEaNuIAEQkcuMEiQ2iCh2EAKDwxIkUJ1XwquMEiQqiCQGowNZOAoCDJ3J0gXIixUcH4PxpC+TCAFGEAL7k8+ePlwGDKYI0QiULzokRGQGI8ofPnTcRRBECsPIsHT9++3YAKJhCj6RPsnr9+IDgIgAf+Pi5MxdnAACEDAL+CQM1CFQ3VCIAEEzRx8+jT7GWQfpw4aKFRINkefs0AMBBAEJMs4widYThggigLMMAAAJ5MIknfkjySSzDKBNEBxYNgAceVyDBBANEGSTBJfn4U88wX4RwwzL4+AMKAP94AAg3avwhySexCCMNIB80QJEBoChyhRM3GEBUQQC0MA1r+/AjjxhilINPPfj0E0YCUOiDixeVyBJLLMJMM0sKE0wEgCj+lFPJEQ4QVRAAYggjiyvd7DONFaDUg089fPpjygfH9PMHHqIAw0wvvTwTDQwXSARAG/7s4w45TBBFEAAhgMILKIOE4UQWYjyDD5987oPMCHPYQ84Yg4iyCzP+ywjzjDZddCCRCNrsQw85khBFEABXtOMPNHVcIUQGeKSDD6n17JPNClxU4080YiAiyi7MYDOMMuBA0sEBEDEQiBuJKBPLAAAQZIAorO3DTzc+qMALPvjwyec+6gBhhC7n+IPLFYiIsgsz2DyjDDimdIDAQwCIEUgYSNzAAFECASDCJ8+Uww8/5eCRSDn42MsnPvVUgQMtzazTzyNXICLKLsxgo80y3SAzwgIOAQAKL1kgIYQDRAkEABO9yKKIG6DIYoUs9IpcDz778JFCK804Y489cVyBiCi7MIPNN89ok80KCTQEQB3+7COMGBIQ9Q8AEuwijyx1tIGEBExog4/+03zyw0kHmxjTTDD6vJNFGIiIsgsz2IAzjTbdzDABQwAg4c8+7rjjB1H/AIAEOKzJw4sQGVQiDz5818OPMBoYYkwzsDiiDzlHhIGIKLswgw042mjTTRMTMMQAKunQo84pBhA1gBjl+MMPPvzwcsQy+6Rezz7ZlCCHL8boQgYl/URzRBiIiLILM9iA03s5W0SwEABiBNJGL9mIQNQAeCgDCi/w7IOKD93Ah/XwUY8iDEEXvvAFIbDQCn8gwwdZQIQodsEMbICjG9ooBxoioBAA7CARYXCCEERAlBCAgheVGEQYsiAGPJQDHyKj1z74sQ953EEGqkjgIshQBlv4Axf+NehBDfAADGZgAxzf0EY5+PCAhABgCcNogxOQkAGihCEe/RhGHa7gghCgoh74qAc+9sGPfcijHMrwxBliAINQ+CIYlEiDHciQDH/U4gl30IIFKiENbICjG9pABx8ekBAX5MMf0wiECgDgAFewZmPTaMERtLGPetArHc/whB6KwIIZ5EAJc8iFL3ShCTsQghB2oEY/aqEFZcgjDi1gBjbA0Q1toIMPD0AIAFzQjX24oxcGEMEptBGPjZUDD4mABz7qgY90sCEGM/iBFASxiVDQgha+aIYuQrEIR3jTEdfoRyn+4I16dMMCosAGOMahDXTw4QEJAYADYpENETChF7L+UEQdZCELK/ACH/bihyd+sIpgNMMZzfCFLmihCl3oQhOUoIQmJkqJbejDFHcoRjbSsQM3gAMc49AGOviQAIUAYAAtAEY6UFGHNiBBAl/oBj5Etg89FIId4mhGMGDRilCEYhOwgIUmNuHTom7DHqYAQymK4Q0rLOGj49AGOvaQAIYYQBr+SAcqbiACUNQDH07bhx4wwY5mFDUUqkgrLWARilak9a3bsIcpwNCIUmTDCkj46Di0gY49JKAhGUiHP3ixhGfsw2l82scfMMEOYrw1qEGlBSzSCllYqGIb9jAFGPTAiWgwwQkfHYc2ynGGBTQEAEsIxAAC4Q/E8okfjzj+xDmMAYtr2va2uKVFNeZhCjDogRPFsEEdPjoObZTjDA04yEGIAgADPKMfrt3HKd4QDmPk9rq2rcY8ZuGFOzSiFBZwBTbA0Q1tlCMJCFCuegEggnjsA7H4GEYUwtGM66aCFrrIrTPWMQsv3KERT3ABM7ABjm5ooxs6IIB61QuAL/ADH/aShzzq0Q0eOKMZtAiqhmHRiVHYVsOpIMY6fuGFO4DBApeABjbA0Q1tdAMFB1iwegGACn/UQ8I4hkcSWOGMUaRiFJ0IciciEYlUGNnIo+jELc7xix7UgARtAAYzsAGO3kWjAgWQsXozAI994Bge8MCHGujgjFFk4syZILL+IAQh5E6geRTi+IUNbFAHV+yCGdgAR++E0YABaFm5ABADP+oBZni4ox6ooEEzRrHmRudBDlxgRCQYQWlGCCIS1rDGEsKACFHsghnYAMc0uuEJBAzgz8oFACr6AQ93wCNz5TBBIUZhBi7Ymgq4JoIZ8iAIOfja18m4hhrCgAhR7IIZ2PjGM7rxBwIMANXKZYA29gFmdaiDHpVAAAgmwO0JUODbIADBEKhgay5QwQik2IYeroAIUeyCGdjQxjO68YQCQFu5ALBBPeRh7X5XIgx4wEMgElGJSsgCGEIQgAaIQIQXOHwN24DEFRAhil0wAxvTeMY0TCCAeysXAHjgh7X+zUFydXjj5CinRzeYQJQBNCAFL9iAAjaQjFd8ARGi2AUzsLGMZ/TiAAHwuHIBwIt9kPzoSFfHPYYhAqIIZAACoAAHFKAASxxDDYMQxS6YAQ1hTMMPBRiA0JVrgXLQA+nm8IY56AGPQBiAKAUZwAEuAAEiJIMPgxAFL5gxDGE8owcCGLtyAXAEfKjj6N4wxz2G0QLmHiQAA0CABmwxCTyIAhjDiIUwYnGAAQheuQBIxD7McXJ3wCMQBiCKjAcwgCbYQg+JQMUnYqGMMQQAAKjOvQGWcQ9z3EMbO2AuqgcQhUn44RGf6MUpCjCA3DtfBOnYByoYQBTn/wMAGFCDJ041EYsaBAAA1kc1AJggBuaG/x8AYMAU4tAC1p8f1cx9/0AAMACiyP/++M+//vfP//77//8LFhAAOw==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/instantsearch.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gY3RsbW1fc2VhcmNoKHdoYXQsaW53aGF0KXsKCXZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlud2hhdCk7CglpZighZGVzdGluYXRpb24pIHJldHVybjsKCXZhciBldmVuID0gZmFsc2U7Cgl2YXIgdGhlcm93cyA9IGRlc3RpbmF0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ciIpOwoJZm9yKGk9MDtpPHRoZXJvd3MubGVuZ3RoO2krKyl7CgkJdmFyIHRoZWNsYXNzID0gKGV2ZW4/InJvdzIiOiJyb3cxIik7CgkJdmFyIG5ld3N0eWxlID0gIm5vbmUiOwoJCXZhciB0aGVjb2x1bW5zID0gdGhlcm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKCQlmb3Ioaj0wO2o8dGhlY29sdW1ucy5sZW5ndGg7aisrKXsKCQkJaWYodGhlY29sdW1uc1tqXS5jbGFzc05hbWUgIT0gImN0bG1tX25vc2VhcmNoIil7CgkJCQl2YXIgdG1wYSA9IHRoZWNvbHVtbnNbal0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTsKCQkJCWlmKHRtcGEgJiYgdG1wYS5pbm5lckhUTUwudG9Mb3dlckNhc2UoKS5pbmRleE9mKHdoYXQudG9Mb3dlckNhc2UoKSkgPj0gMCkJbmV3c3R5bGUgPSAidGFibGUtcm93IjsKCQkJCWlmKCF0bXBhICYmIHRoZWNvbHVtbnNbal0uaW5uZXJIVE1MLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih3aGF0LnRvTG93ZXJDYXNlKCkpID49IDApCQluZXdzdHlsZSA9ICJ0YWJsZS1yb3ciOwoJCQl9CgkJfQoJCXRoZXJvd3NbaV0uc3R5bGUuZGlzcGxheSA9IG5ld3N0eWxlOwoJCWlmKG5ld3N0eWxlICE9ICJub25lIil7CgkJCXRoZXJvd3NbaV0uY2xhc3NOYW1lID0gdGhlY2xhc3M7CgkJCXRoZXJvd3NbaV0ub25tb3VzZW92ZXIgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSArPSAiaG92ZXIiOyB9OwoJCQl0aGVyb3dzW2ldLm9ubW91c2VvdXQgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnN1YnN0cigwLDQpOyB9OwoJCQlldmVuID0gIWV2ZW47CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/instantsort.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gY3RsbW1fc29ydFJvd3ModGFibGVpZCxjb2xpbmRleCxkZXNjLG51bWVyaWMpewoJLy8gdGFibGVpZCBpcyB0aGUgaWQgb2YgdGhlIHRhYmxlIHRvIHNvcnQKCS8vIGNvbGluZGV4IGlzIGFnYWluc3Qgd2hpY2ggY29sdW1uIHRvIHNvcnQgKDAtPiBmaXJzdCwgMS0+IHNlY29uZC4uLikKCS8vIGRlc2MgbWFrZXMgdGhlIHNvcnQgZGVzY2VuZGluZwoJLy8gbnVtZXJpYyBtYWtlcyB0aGUgc29ydCBudW1lcmljCglpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVpZCkpCXJldHVybiBmYWxzZTsKCXZhciB0aGVyb3dzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVpZCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRyIik7CglpZighdGhlcm93c1swXSB8fCAhdGhlcm93c1swXS5jZWxsc1tjb2xpbmRleF0pCXJldHVybiBmYWxzZTsKCQoJdmFyIHNvcnRlZCA9IG5ldyBBcnJheSgpOwoJZm9yKGk9MDsgaTx0aGVyb3dzLmxlbmd0aDsgaSsrKXsKCQl2YXIgdGhlYXMgPSB0aGVyb3dzW2ldLmNlbGxzW2NvbGluZGV4XS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOwoJCWlmKHRoZWFzWzBdKXsKCQkJdmFyIHNvcnRkYXRhID0gdGhlYXNbMF0uaW5uZXJIVE1MOwoJCX1lbHNlewoJCQl2YXIgc29ydGRhdGEgPSB0aGVyb3dzW2ldLmNlbGxzW2NvbGluZGV4XS5pbm5lckhUTUw7CgkJfQoJCXNvcnRlZC5wdXNoKFtzb3J0ZGF0YSwgdGhlcm93c1tpXV0pOwoJCXRoZXJvd3NbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGVyb3dzW2ldKTsKCQlpLS07Cgl9CglpZihudW1lcmljKXsKCQlpZihkZXNjKXsKCQkJc29ydGVkLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGJbMF0tYVswXTsgfSk7CgkJfWVsc2V7CgkJCXNvcnRlZC5zb3J0KGZ1bmN0aW9uKGEsYil7IHJldHVybiBhWzBdLWJbMF07IH0pOwoJCX0KCX1lbHNlewoJCWlmKGRlc2MpewoJCQlzb3J0ZWQuc29ydChmdW5jdGlvbihhLGIpeyByZXR1cm4gYVswXS50b0xvd2VyQ2FzZSgpIDwgYlswXS50b0xvd2VyQ2FzZSgpOyB9KTsKCQl9ZWxzZXsKCQkJc29ydGVkLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGFbMF0udG9Mb3dlckNhc2UoKSA+IGJbMF0udG9Mb3dlckNhc2UoKTsgfSk7CgkJfQoJfQoKCXZhciB0YWJsZWJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZWlkKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXTsKCXZhciBldmVuID0gdHJ1ZTsKCWZvcihpPTA7IGk8c29ydGVkLmxlbmd0aDsgaSsrKXsKCQlldmVuID0gIWV2ZW47CgkJdmFyIHRoZWNsYXNzID0gKGV2ZW4/InJvdzIiOiJyb3cxIik7CgkJc29ydGVkW2ldWzFdLmNsYXNzTmFtZSA9IHRoZWNsYXNzOwoJCXNvcnRlZFtpXVsxXS5vbm1vdXNlb3ZlciA9IGZ1bmN0aW9uKCl7IHRoaXMuY2xhc3NOYW1lICs9ICJob3ZlciI7IH07CgkJc29ydGVkW2ldWzFdLm9ubW91c2VvdXQgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnN1YnN0cigwLDQpOyB9OwoJCXRhYmxlYm9keS5hcHBlbmRDaGlsZChzb3J0ZWRbaV1bMV0pOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCgkkbGFuZ1siZnJpZW5kbHluYW1lIl0gPSAiWW91VHViZVBsYXllciI7DQoJJGxhbmdbIm1vZGRlc2NyaXB0aW9uIl0gPSAiRW1iZWQgWW91VHViZSBQbGF5ZXIiOw0KCSRsYW5nWyJhZG1pbmRlc2NyaXB0aW9uIl0gPSAiRW1iZWQgWW91VHViZSBQbGF5ZXIiOw0KDQoJJGxhbmdbInBhZ2VtZW51ZGVsaW1pdGVyIl0gPSAiJm5ic3A7JiMxMjQ7Jm5ic3A7IjsNCgkkbGFuZ1sicGFnZW1lbnVvdmVyZmxvdyJdID0gIiZuYnNwOy4uLiZuYnNwOyI7DQoJDQovLyBzdHJpbmdzIGZvciBjYXRlZ29yeQ0KCSRsYW5nWyJjYXRlZ29yeSJdID0gIkNhdGVnb3J5IjsNCgkkbGFuZ1siY2F0ZWdvcnlfcGx1cmFsIl0gPSAiQ2F0ZWdvcmllcyI7DQoJJGxhbmdbImFkZF9jYXRlZ29yeSJdID0gIkFkZCBDYXRlZ29yeSI7DQoJJGxhbmdbImVkaXRfY2F0ZWdvcnkiXSA9ICJFZGl0IENhdGVnb3J5IjsNCgkkbGFuZ1siZmlsdGVyYnlfY2F0ZWdvcnkiXSA9ICJGaWx0ZXIgYnkgQ2F0ZWdvcnkiOw0KCSRsYW5nWyJjYXRlZ29yeV9kZXNjcmlwdGlvbiJdID0gIkRlc2NyaXB0aW9uIjsNCgkkbGFuZ1sicHJvbXB0X2RlbGV0ZWNhdGVnb3J5Il0gPSAiWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhpcyBDYXRlZ29yeSAoJXMpPyBBbGwgY2hpbGRyZW4gd2lsbCBiZSBsb3N0LiBEbyB5b3Ugd2lzaCB0byBjb250aW51ZT8iOw0KCQ0KLy8gc3RyaW5ncyBmb3IgdmlkZW9zDQoJJGxhbmdbInZpZGVvcyJdID0gIlZpZGVvIjsNCgkkbGFuZ1sidmlkZW9zX3BsdXJhbCJdID0gIlZpZGVvcyI7DQoJJGxhbmdbImFkZF92aWRlb3MiXSA9ICJBZGQgVmlkZW8iOw0KCSRsYW5nWyJlZGl0X3ZpZGVvcyJdID0gIkVkaXQgVmlkZW8iOw0KCSRsYW5nWyJmaWx0ZXJieV92aWRlb3MiXSA9ICJGaWx0ZXIgYnkgVmlkZW8iOw0KCSRsYW5nWyJ2aWRlb3NfdmlkZW9pZCJdID0gIlZpZGVvIElEIjsNCgkkbGFuZ1sidmlkZW9zX2Rlc2NyaXB0aW9uIl0gPSAiVmlkZW8gRGVzY3JpcHRpb24iOw0KCSRsYW5nWyJwcm9tcHRfZGVsZXRldmlkZW9zIl0gPSAiWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhpcyBWaWRlbyAoJXMpPyBEbyB5b3Ugd2lzaCB0byBjb250aW51ZT8iOw0KCSRsYW5nWyJ0ZW1wbGF0ZWhlbHAiXSA9ICc8ZGl2PjxoMyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fZGlzcGxheXRvZ2dsZSh0aGlzKTsiPiZndDsgU21hcnR5IHZhcmlhYmxlcyBmb3IgbGlzdCB0ZW1wbGF0ZSBvZjogY2F0ZWdvcnk8L2gzPjxkaXYgY2xhc3M9InRwbHZhcnNfaGlkZSI+PHVsPg0KCTxsaT4kbGV2ZWx0aXRsZTwvbGk+DQoJPGxpPiRwYXJlbnRvYmogKGlmIHBhcmVudCBpcyBzcGVjaWZpZWQpPC9saT4NCgk8bGk+JGl0ZW1saXN0IChhcnJheSBvZiBpdGVtcyk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNfc2VsZWN0ZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bmJjaGlsZHJlbiAoaWYgbG9hZGVkKTwvbGk+DQoJPGxpPiRpdGVtLSZndDtuYW1lPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2FsaWFzPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RldGFpbGxpbms8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsdXJsPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2Rlc2NyaXB0aW9uPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2lzZGVmYXVsdDwvbGk+DQoJPGxpPiRpdGVtLSZndDtkYXRlX21vZGlmaWVkPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfY3JlYXRlZDwvbGk+DQoJPC91bD48YnIvPjxici8+PC9kaXY+PC9kaXY+PGRpdj48aDMgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX2Rpc3BsYXl0b2dnbGUodGhpcyk7Ij4mZ3Q7IFNtYXJ0eSB2YXJpYWJsZXMgZm9yIGxpc3QgdGVtcGxhdGUgb2Y6IHZpZGVvczwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj48dWw+DQoJPGxpPiRsZXZlbHRpdGxlPC9saT4NCgk8bGk+JHBhcmVudG9iaiAoaWYgcGFyZW50IGlzIHNwZWNpZmllZCk8L2xpPg0KCTxsaT4kaXRlbWxpc3QgKGFycmF5IG9mIGl0ZW1zKTwvbGk+DQoJPGxpPiRpdGVtLSZndDtpc19zZWxlY3RlZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtuYW1lPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2FsaWFzPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RldGFpbGxpbms8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsdXJsPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3ZpZGVvaWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGVzY3JpcHRpb248L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X2lkPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9hbGlhczwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfbmFtZTwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRsaW5rPC9saT4NCgk8bGk+JHRpZW0tJmd0O3BhcmVudHVybDwvbGk+DQoJPGxpPiRpdGVtLSZndDtpc2RlZmF1bHQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9tb2RpZmllZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtkYXRlX2NyZWF0ZWQ8L2xpPg0KCTwvdWw+PGJyLz48YnIvPjwvZGl2PjwvZGl2PjxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBTbWFydHkgdmFyaWFibGVzIGZvciB0aGUgZGV0YWlsIHRlbXBsYXRlPC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPjx1bD4NCgk8bGk+JGxldmVsdGl0bGU8L2xpPg0KCTxsaT4kcHJldmlvdXNfaXRlbSAoaWYgbG9hZGVkKTwvbGk+DQoJPGxpPiRuZXh0X2l0ZW0gKGlmIGxvYWRlZCk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bmFtZTwvbGk+DQoJPGxpPiRpdGVtLSZndDthbGlhczwvbGk+DQoJPGxpPiRpdGVtLSZndDt2aWRlb2lkPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2Rlc2NyaXB0aW9uPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9pZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfYWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50bGluazwvbGk+DQoJPGxpPiR0aWVtLSZndDtwYXJlbnR1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8bGk+JGxhYmVscy0+Li4uPC9saT4NCgk8L3VsPjxici8+PHA+SW4gdGhlIGZpbmFsIGxldmVsIGRldGFpbCB0ZW1wbGF0ZSwgdXNlIHRoZSBvYmplY3QgJGxhYmVscyB0byBwcmludCBsYW5ndWFnZS1zZW5zaWJsZSBmaWVsZCBsYWJlbHMgKCRsYWJlbHMtPmZpZWxkbmFtZSkuPC9wPjxwPllvdSBtYXkgcmVhY2ggdGhlIHBhcmVudCBvYmplY3RzIHVzaW5nICRpdGVtLT5wYXJlbnRfb2JqZWN0LT5wYXJlbnRfb2JqZWN0LT4uLi4gYW5kIHNvIG9uLjwvcD48YnIvPjwvZGl2PjwvZGl2Pg0KPGRpdj48aDMgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX2Rpc3BsYXl0b2dnbGUodGhpcyk7Ij4mZ3Q7IEZpbGUgT2JqZWN0PC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPg0KPHVsPg0KPGxpPiRmaWxlLSZndDtmaWxlcGF0aCAocmVsYXRpdmUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7ZXh0PC9saT4NCjxsaT4kZmlsZS0mZ3Q7dXJsIChhYnNvbHV0ZSB1cmwpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7c2l6ZSAoc2l6ZSBpbiBieXRlcyk8L2xpPg0KPGxpPiRmaWxlLSZndDtzaXplX3dmb3JtYXQgKGZvcm1hdGVkIHNpemUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7aW1hZ2VzaXplIChmb3IgaW1hZ2VzIG9ubHkpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7d2lkdGggKGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDtoZWlnaHQgKGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDtpbWFnZSAoaW1hZ2UgdGFnOyBmb3IgaW1hZ2VzIG9ubHkpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7dGh1bWJuYWlsICh0aHVtYm5haWwgdXJsLCBpZiBhcHBsaWNhYmxlKTwvbGk+DQo8bGk+JGZpbGUtJmd0O2ZpbGVtdGltZSAobGFzdCBtb2RpZmllZCwgdW5peCB0aW1lKTwvbGk+DQo8bGk+JGZpbGUtJmd0O21vZGlmaWVkIChsYXN0IG1vZGlmaWVkLCBmb3JtYXRlZCB0aW1lKTwvbGk+DQo8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj4NCjxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBCcmVhZGNydW1iczwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj4NCgkJCQk8cD5XaGVuIHlvdSBhcmUgaW4gYSBtb2R1bGUgdGVtcGxhdGUsIHlvdSBtYXkgY2FsbCB0aGUgYnJlYWRjcnVtYnMgdXNpbmcgdGhlIHt5b3V0dWJlcGxheWVyX2JyZWFkY3J1bWJzfSB0YWcuIFlvdSBtYXkgdXNlIHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgdGhlIGNtcyBjb3JlIGJyZWFkY3J1bWJzIHRhZyAoaW5pdGlhbCwgZGVsaW1pdGVyLCBjbGFzc2lkLCBjdXJyZW50Y2xhc3NpZCksIGFzIHdlbGwgYXMgdGhlICJzdGFydGxldmVsIiBwYXJhbWV0ZXIuPGJyLz4NCgkJCQlPdXRzaWRlIG1vZHVsZSB0ZW1wbGF0ZXMsIGFueXdoZXJlIG9uIHRoZSBwYWdlLCB5b3UgbWF5IGNhbGwgdGhlIGJyZWFkY3J1bWJzIGFjdGlvbiB7Y21zX21vZHVsZSBtb2R1bGU9InlvdXR1YmVwbGF5ZXIiIGFjdGlvbj0iYnJlYWRjcnVtYnMifSwgb25jZSBhZ2FpbiB1c2luZyB0aGUgc2FtZSBwYXJhbWV0ZXJzLjwvcD48L2Rpdj48L2Rpdj4nOw0KDQovLyBGb3IgZmlsZSBmaWVsZHMNCiRsYW5nWyJSZW1vdmUiXSA9ICJSZW1vdmUiOw0KJGxhbmdbImRlbGV0ZSJdID0gIkRlbGV0ZSI7DQokbGFuZ1siYnJvd3NlZmlsZXN0aXRsZSJdID0gIlVwbG9hZCBhIG5ldyBmaWxlIG9yIHNlbGVjdCBhIGZpbGUgYmVsb3cuIjsNCiRsYW5nWyJzaG93aW5nZGlyIl0gPSAiU2hvd2luZyBkaXJlY3RvcnkiOw0KJGxhbmdbImJyb3dzZWZpbGVzcmVzaXplIl0gPSAiVGhlIHBpY3R1cmUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJlc2l6ZWQgZm9yIHRoZSBtb2R1bGUuIjsNCiRsYW5nWyJicm93c2VmaWxlY3VycmVudHBhdGgiXSA9ICJDdXJyZW50bHkgc2VlaW5nIGZpbGVzIGluIDogIjsNCiRsYW5nWyJwYXJlbnRkaXIiXSA9ICJQYXJlbnQgRGlyZWN0b3J5IjsNCiRsYW5nWyJhZGRhZmlsZSJdID0gIkFkZCBmaWxlKHMpIjsNCiRsYW5nWyJzdWJtaXR0aW5nX2ZpbGUiXSA9ICJQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgZmlsZSBpcyBiZWluZyB1cGxvYWRlZC4uLiI7DQokbGFuZ1siZmlsZW5hbWUiXSA9ICJGaWxlbmFtZSI7DQokbGFuZ1siaW1hZ2VzaXplIl0gPSAiSW1hZ2Ugc2l6ZSI7DQokbGFuZ1siZmlsZWV4dCJdID0gIkV4dCI7DQokbGFuZ1siZmlsZXNpemUiXSA9ICJGaWxlIHNpemUiOw0KJGxhbmdbImxhc3Rtb2QiXSA9ICJMYXN0IG1vZGlmaWVkIjsNCiRsYW5nWyJmaWxlb3duZXIiXSA9ICJPd25lciI7DQokbGFuZ1siZmlsZXBlcm1zIl0gPSAiUGVybWlzc2lvbnMiOw0KJGxhbmdbInZpZXdhbGxpbWFnZXMiXSA9ICJWaWV3IGFsbCBpbWFnZXMiOw0KJGxhbmdbInBvc3RtYXhzaXplIl0gPSAiTm90aWNlOiB0aGUgcG9zdCBtYXggc2l6ZSBpcyAiOw0KJGxhbmdbImFkZGZpbGVpbnB1dCJdID0gIkFkZCBhbm90aGVyIGZpbGUiOw0KJGxhbmdbInppcGZpbGVub3RpY2UiXSA9ICJUaGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoZSByb290IG9mIHRoZSBhcmNoaXZlLiI7DQokbGFuZ1sidXBsb2FkemlwZmlsZSJdID0gIlVwbG9hZCB6aXAgYXJjaGl2ZSI7DQoNCi8vIHN0cmluZ3MgZm9yIGdlbmVyYWwgZmllbGRzDQokbGFuZ1siaWQiXSA9ICJpZCI7DQokbGFuZ1sibmFtZSJdID0gIk5hbWUiOw0KJGxhbmdbImFsaWFzIl0gPSAiQWxpYXMiOw0KJGxhbmdbImlzZGVmYXVsdCJdID0gIklzIGRlZmF1bHQ/IjsNCiRsYW5nWyJhY3RpdmUiXSA9ICJBY3RpdmUiOw0KJGxhbmdbInBhcmVudCJdID0gIlBhcmVudCI7DQokbGFuZ1sic3VibWl0Il0gPSAiU3VibWl0IjsNCiRsYW5nWyJjYW5jZWwiXSA9ICJDYW5jZWwiOw0KJGxhbmdbIm5iY2hpbGRyZW4iXSA9ICJOYiBvZiBpdGVtcyI7DQokbGFuZ1siZGF0ZV9tb2RpZmllZCJdID0gIkxhc3QgbW9kaWZpY2F0aW9uIjsNCiRsYW5nWyJkYXRlX2NyZWF0ZWQiXSA9ICJDcmVhdGlvbiI7DQoJDQovLyBHRU5FUkFMDQokbGFuZ1sicGFnZXMiXSA9ICJQYWdlczogIjsNCiRsYW5nWyJuZXh0cGFnZSJdID0gIk5leHQgcGFnZSI7DQokbGFuZ1sicHJldmlvdXNwYWdlIl0gPSAiUHJldmlvdXMgcGFnZSI7DQokbGFuZ1siYWN0aXZhdGUiXSA9ICJBY3RpdmF0ZSI7DQokbGFuZ1sidW5hY3RpdmF0ZSJdID0gIlR1cm4gb2ZmIjsNCiRsYW5nWyJzZWFyY2h0aGlzdGFibGUiXSA9ICJTZWFyY2ggdGhpcyB0YWJsZSBmb3I6IjsNCiRsYW5nWyJyZXNldG9yZGVyIl0gPSAiUmVzZXQgb3JkZXIiOw0KJGxhbmdbIlllcyJdID0gIlllcyI7DQokbGFuZ1siTm8iXSA9ICJObyI7DQokbGFuZ1siQWN0aW9ucyJdID0gIkFjdGlvbnMiOw0KJGxhbmdbInJlb3JkZXIiXSA9ICJSZW9yZGVyIjsNCiRsYW5nWyJsaXN0dGVtcGxhdGUiXSA9ICJMaXN0IHRlbXBsYXRlIGZvciI7DQokbGFuZ1sidGVtcGxhdGVzIl0gPSAiVGVtcGxhdGVzIjsNCiRsYW5nWyJ0ZW1wbGF0ZSJdID0gIlRlbXBsYXRlIjsNCiRsYW5nWyJkZWZhdWx0dGVtcGxhdGVzIl0gPSAiRGVmYXVsdCB0ZW1wbGF0ZXMiOw0KJGxhbmdbInRlbXBsYXRldmFycyJdID0gIlRlbXBsYXRlIHZhcmlhYmxlcyI7DQokbGFuZ1siZWRpdHRlbXBsYXRlIl0gPSAiRWRpdCB0ZW1wbGF0ZSI7DQokbGFuZ1siZGVmdGVtcGxhdGVmb3IiXSA9ICJEZWZhdWx0IGxpc3QgdGVtcGxhdGUgZm9yIGxldmVsICI7DQokbGFuZ1siZGVmZGV0YWlsdGVtcGxhdGUiXSA9ICJEZWZhdWx0IGRldGFpbCB0ZW1wbGF0ZSI7DQokbGFuZ1siZGVmc2VhcmNocmVzdWx0c3RlbXBsYXRlIl0gPSAiRGVmYXVsdCB0ZW1wbGF0ZSBmb3Igc2VhcmNoIHJlc3VsdHMiOw0KJGxhbmdbImRlZmVtcHR5dGVtcGxhdGUiXSA9ICJUZW1wbGF0ZSBmb3IgZW1wdHkgcmVzdWx0IHNldHMiOw0KJGxhbmdbInVzZWxldmVsbGlzdHRwbCJdID0gIlVzZSB0aGUgbGlzdCB0ZW1wbGF0ZSBvZiB0aGUgYXBwcm9wcmlhdGUgbGV2ZWwiOw0KJGxhbmdbImFkZHRlbXBsYXRlIl0gPSAiQWRkIHRlbXBsYXRlIjsNCiRsYW5nWyJmaWx0ZXJieSJdID0gIkZpbHRlciBieSI7DQokbGFuZ1sic2hvd2luZ29ubHkiXSA9ICJGaWx0ZXI6ICI7DQokbGFuZ1sic2hvd2FsbCJdID0gIlNob3cgYWxsIChubyBmaWx0ZXIpIjsNCiRsYW5nWyJmaWVsZG9wdGlvbnMiXSA9ICJGaWVsZCBvcHRpb25zIjsNCiRsYW5nWyJhZGRvcHRpb24iXSA9ICJBZGQgYW4gb3B0aW9uIjsNCiRsYW5nWyJtb2RpZnlhbm9wdGlvbiJdID0gIk1vZGlmeSBhbiBvcHRpb24iOw0KJGxhbmdbIm1lc3NhZ2VfZGVsZXRlZCJdID0gIkVsZW1lbnQgZGVsZXRlZCI7DQokbGFuZ1sibWVzc2FnZV9tb2RpZmllZCJdID0gIk1vZGlmaWNhdGlvbiBzYXZlZCI7DQokbGFuZ1sid2FybmluZ190YWIiXSA9ICJOb3RpY2U6IFNhdmUgY2hhbmdlcyBpbiBvdGhlciB0YWJzIGJlZm9yZSB3b3JraW5nIGluIHRoaXMgb25lLi4uIjsNCiRsYW5nWyJlcnJvcl9taXNzZ2ludmFsdWUiXSA9ICJPbmUgb3IgbW9yZSBuZWNlc3NhcnkgdmFsdWVzIGhhdmUgbm90IGJlZW4gZW50ZXJlZC4iOw0KJGxhbmdbImVycm9yX2FscmVhZHlleGlzdHMiXSA9ICJUaGVyZSBpcyBhbHJlYWR5IGFuIGVsZW1lbnQgYmVhcmluZyB0aGF0IG5hbWUuIjsNCiRsYW5nWyJlcnJvcl9kYXRlIl0gPSAiVGhlIGRhdGUgeW91IGhhdmUgZW50ZXJlZCBpcyBpbnZhbGlkLiI7DQokbGFuZ1siZXJyb3Jfbm9wYXJlbnQiXSA9ICJObyBwYXJlbnQgaXMgZGVmaW5lZCEiOw0KJGxhbmdbImVycm9yX25vdGZvdW5kIl0gPSAiVGhlIGl0ZW0gY291bGQgbm90IGJlIGZvdW5kLiI7DQokbGFuZ1siZXJyb3Jfbm9pdGVtZm91bmQiXSA9ICJObyBpdGVtIGZvdW5kLiI7DQokbGFuZ1siZXJyb3JfZGVuaWVkIl0gPSAiUGVybWlzc2lvbiBkZW5pZWQiOw0KJGxhbmdbImVycm9yX3dyb25ncXVlcnkiXSA9ICJJbnZhbGlkIHF1ZXJ5LiI7DQokbGFuZ1siZXJyb3JfZmVhZGRkZW5pZWQiXSA9ICJZb3UgZG8gbm90IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gY29udGludWUuIjsNCiRsYW5nWyJlcnJvcl93cm9uZ2ZpbGV0eXBlIl0gPSAiVGhpcyB0eXBlIG9mIGZpbGUgaXMgbm90IGFsbG93ZWQgaGVyZS4iOw0KJGxhbmdbImVycm9yX2NhcHRjaGEiXSA9ICJUaGUgdGV4dCBnaXZlbiBkb2VzIG5vdCBtYXRjaCB0aGUgY2FwdGNoYSBpbWFnZS4iOw0KJGxhbmdbImVycm9yX2ZpbGV0b29iaWciXSA9ICJUaGUgZmlsZSBpcyB0byBiaWcgdG8gYmUgdXBsb2FkZWQgaGVyZS4iOw0KJGxhbmdbImdpdmVuZXJyb3IiXSA9ICJFcnJvcjogIjsNCiRsYW5nWyJmaW5hbHRlbXBsYXRlIl0gPSAiRGlzcGxheSB0ZW1wbGF0ZSBmb3IgZmluYWwgbGV2ZWwgKHZpZGVvcykiOw0KJGxhbmdbInByb21wdF9kZWxldGVvcHRpb24iXSA9ICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgb3B0aW9uPyI7DQokbGFuZ1sicHJvbXB0X2dlbmVyYWxkZWxldGUiXSA9ICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXM/IjsNCiRsYW5nWyJwcm9tcHRfY2FwdGNoYSJdID0gIkVudGVyIHRoZSB0ZXh0IGZyb20gdGhlIGltYWdlLiI7DQokbGFuZ1sicXVlcmllcyJdID0gIlF1ZXJpZXMiOw0KJGxhbmdbInF1ZXJ5Il0gPSAiUXVlcnkiOw0KJGxhbmdbInJlc3VsdHMiXSA9ICJSZXN1bHRzIjsNCiRsYW5nWyJjcmVhdGVxdWVyeSJdID0gIkNyZWF0ZSBhIG5ldyBxdWVyeSI7DQokbGFuZ1sicHJvbXB0X3F1ZXJ5Il0gPSAiQ3JlYXRlIGEgcXVlcnkgZm9yIHdoaWNoIGxldmVsPyI7DQokbGFuZ1sib3JkZXJieWZpZWxkIl0gPSAiT3JkZXIgYnkiOw0KJGxhbmdbImRhdGVfbW9kaWZpZWQiXSA9ICJEYXRlIG1vZGlmaWVkIjsNCiRsYW5nWyJmcm9udGVuZF9zdWJtaXQiXSA9ICJTdWJtaXQiOw0KDQoNCi8vIEJSRUFEQ1JVTUJTIDoNCiRsYW5nWyJ5b3VhcmVoZXJlIl0gPSAiWW91IGFyZSBoZXJlOiAiOw0KJGxhbmdbImJyZWFkY3J1bWJzX2RlbGltaXRlciJdID0gIiAmZ3Q7ICI7DQoNCi8vIFNFQVJDSCA6DQokbGFuZ1sic2VhcmNodGl0bGUiXSA9ICJTZWFyY2giOw0KJGxhbmdbInNlYXJjaGFnYWluIl0gPSAiRG8gYW5vdGhlciBzZWFyY2giOw0KJGxhbmdbInNlYXJjaGJ0biJdID0gIlNlYXJjaCEiOw0KJGxhbmdbImNvbnRhaW5zIl0gPSAiQ29udGFpbnMiOw0KJGxhbmdbImlzZXhhY3RseSJdID0gIklzIGV4YWN0bHkiOw0KJGxhbmdbImlzbm90Il0gPSAiSXMgbm90IjsNCiRsYW5nWyJpc2hpZ2hlcnRoYW4iXSA9ICJJcyBoaWdoZXIgdGhhbiI7DQokbGFuZ1siaXNsb3dlcnRoYW4iXSA9ICJJcyBsb3dlciB0aGFuIjsNCiRsYW5nWyJpc2FmdGVyIl0gPSAiSXMgYWZ0ZXIiOw0KJGxhbmdbImlzYmVmb3JlIl0gPSAiSXMgYmVmb3JlIjsNCiRsYW5nWyJpc2JldHdlZW4iXSA9ICJJcyBiZXR3ZWVuIjsNCiRsYW5nWyJ0aGlzYW5kdGhpcyJdID0gImFuZCI7DQokbGFuZ1sicXVlcnl1c2UiXSA9ICJOb3QgdXNlZCI7DQokbGFuZ1sicXVlcnluYW1lIl0gPSAiUXVlcnkgbmFtZSI7DQoNCi8vIElNUE9SVCAvIEVYUE9SVA0KJGxhbmdbImV4cG9ydF90aXRsZSJdID0gIkV4cG9ydCBpdGVtcyB0byB4bWwiOw0KJGxhbmdbImV4cG9ydHdoaWNobGV2ZWxzIl0gPSAiV2hpY2ggdGFibGVzIHNob3VsZCBiZSBleHBvcnRlZD8iOw0KJGxhbmdbImV4cG9ydF90ZW1wbGF0ZXMiXSA9ICJFeHBvcnQgdGVtcGxhdGVzIHRvbz8iOw0KJGxhbmdbImltcG9ydF90aXRsZSJdID0gIkltcG9ydCBmcm9tIHhtbCBmaWxlIjsNCiRsYW5nWyJpbXBvcnRfZmlsZXByb21wdCJdID0gIlNlbGVjdCB4bWwgZmlsZSBmcm9tIHdoaWNoIHRvIGltcG9ydC4iOw0KJGxhbmdbImltcG9ydF9kb25lIl0gPSAiSW1wb3J0IGRvbmUuICVzIHJlY29yZHMgd2hlcmUgaW1wb3J0ZWQuIjsNCiRsYW5nWyJpbXBvcnRfZW50cmllcyJdID0gIlRoZSBmaWxlIGNvbnRhaW5zICVzIHJlY29yZHMuIjsNCiRsYW5nWyJpbXBvcnRfZGVsZXRlIl0gPSAiRGVsZXRlIHRhYmxlIGNvbnRlbnQgYmVmb3JlIGltcG9ydGluZz8iOw0KJGxhbmdbImltcG9ydHdoaWNobGV2ZWxzIl0gPSAiV2hpY2ggdGFibGVzIHNob3VsZCBiZSBpbXBvcnRlZD8iOw0KJGxhbmdbImltcG9ydF90ZW1wbGF0ZXMiXSA9ICJJbXBvcnQgdGVtcGxhdGVzIHRvbz8iOw0KJGxhbmdbImNvdWxkbm90aW1wb3J0Il0gPSAiVGhlcmUgd2FzIGFuIGVycm9yIGltcG9ydGluZyByZWNvcmRzIGZvcjogIjsNCiRsYW5nWyJlcnJvcl9pbnZhbGlkeG1sIl0gPSAiVGhlIGZpbGUgeW91IHByb3ZpZGVkIGlzIG5vdCBhIHZhbGlkIHhtbCBleHBvcnQgZm9yIHRoaXMgbW9kdWxlLiI7DQoNCi8vIE1PRFVMRSBJTlRFUkFDVElPTg0KJGxhbmdbInBvc3RpbnN0YWxsIl0gPSAiTW9kdWxlIHN1Y2Nlc3NmdWxseSBhZGRlZC48YnIvPklmIHRoaXMgbW9kdWxlIGhhcyBhbnkgZmlsZSBmaWVsZHMsIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgZXhpc3QgaW4gdGhlIHVwbG9hZHMgZm9sZGVyLiBEb24ndCBmb3JnZXQgdG8gZ2l2ZSB5b3VyIHVzZXJzIHRoZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGlzIG1vZHVsZSEiOw0KJGxhbmdbInBvc3R1bmluc3RhbGwiXSA9ICJNb2R1bGUgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuIjsNCiRsYW5nWyJyZWFsbHlfdW5pbnN0YWxsIl0gPSAiQWxsIG9mIHRoaXMgbW9kdWxlJ3MgY29udGVudCB3aWxsIGJlIGxvc3QuIENvbnRpbnVlPyI7DQokbGFuZ1sidW5pbnN0YWxsZWQiXSA9ICJNb2R1bGUgVW5pbnN0YWxsZWQuIjsNCiRsYW5nWyJpbnN0YWxsZWQiXSA9ICJNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuIjsNCiRsYW5nWyJoZWxwIl0gPSAiPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQoJCQkJVGhpcyBpcyBhIHNpbXBsZSBtb2R1bGUgdGhhdCBtYW5hZ2VzIGFuZCBkaXNwbGF5cyBhIFZpZGVvIGNhdGFsb2d1ZSBmcm9tIFlvdVR1YmUuDQoJCQkJPGJyPiBJdCBpcyBzaW1pbGFyIHRvIG15IG90aGVyIG1vZHVsZSAnQVZQbGF5ZXInIGV4Y2VwdCB3aXRoIHRoaXMgbW9kdWxlIG9mIGNvdXJzZSB5b3UgZG8gbm90IG5lZWQgdG8gdXBsb2FkIGFueXRoaW5nIDxiciAvPg0KCQkJPGJyLz48aDM+SG93IERvIEkgVXNlIEl0PzwvaDM+DQoJCQkJPGJyLz48aDQ+R2V0IHRoZSBWaWRlbyBJRDwvaDQ+DQoJCQkJPGJyIC8+IGNvcHkgdGhlIFZpZGVvIElEIGZyb20gYSBZb3V0dWJlIFVSTCBsaWtlIHRoaXM6IGh0dHA6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj08Zm9udCBjb2xvcj0nUmVkJz56Z0otVnNueFp6VSA8YnIgLz48L2ZvbnQ+DQoJCQkJVGhlIFZpZGVvIElEIGlzIHRoZSBzdHJpbmcgYWZ0ZXIgP3Y9IDxiciAvPg0KCQkJCTxici8+PGg0PlBlcm1pc3Npb25zPC9oND4NCgkJCQkJPHA+TWFrZSBzdXJlIHlvdXIgdXNlcnMgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgcGVybWlzc2lvbnMuIElmIHlvdSBhcmUgbm90IHVzaW5nIHRoZSBhY2Nlc3MgcmVzdHJpY3Rpb24gb3B0aW9uIChzZWUgc2V0dGluZ3MpLCB0aGUgXCJ5b3V0dWJlcGxheWVyOiBOb3JtYWwgdXNlclwiIHBlcm1pc3Npb24gd2lsbCBiZSBlbm91Z2ggdG8gdXNlIHRoZSBtb2R1bGUuIEluIHRoZSBzZXR0aW5ncyB0YWIsIHlvdSBjYW4gY2hvb3NlIHdoaWNoIHRhYnMgd2lsbCBiZSBkaXNwbGF5ZWQgZm9yIHRoZSBub3JtYWwgdXNlci4gT25seSB0aGUgYWRtaW5pc3RyYXRvciBhbmQgdXNlcnMgd2l0aCB0aGUgXCJ5b3V0dWJlcGxheWVyOiBBZHZhbmNlZFwiIHBlcm1pc3Npb24gd2lsbCBoYXZlIGFjY2VzcyB0byBzZXR0aW5ncyB0YWIuPGJyLz4NCgkJCQkJSWYgeW91IHdpc2ggdG8gZGVmaW5lIGxldmVsLXNwZWNpZmljIHBlcm1pc3Npb25zLCBhY3RpdmF0ZSB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiBpbiB0aGUgc2V0dGluZ3MgdGFiIGFuZCBnaXZlIHRoZSBcInlvdXR1YmVwbGF5ZXI6IE1hbmFnZSBuYW1lX29mX2xldmVsXCIgcGVybWlzc2lvbiB0byB0aGUgYXBwcm9wcmlhdGUgdXNlcnMuPC9wPg0KCQkJCTxici8+PGg0PkJhc2ljczwvaDQ+DQoJCQkJCTxwPlRvIGNhbGwgdGhlIG1vZHVsZSwgc2ltcGx5IHVzZSB0aGUgZm9sbG93aW5nIHRhZzo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJ5b3V0dWJlcGxheWVyXCJ9PC9wPg0KCQkJCQk8cD5JbiB0aGlzIGNhc2UgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgbGV2ZWwgZWxlbWVudHMgKHZpZGVvcykgd2lsbCBiZSBkaXNwbGF5ZWQuIFRvIHNlbGVjdCBhIGxldmVsLCB1c2UgdGhlIFwid2hhdFwiIHBhcmFtZXRlcjo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJ5b3V0dWJlcGxheWVyXCIgd2hhdD1cInZpZGVvc1wifTxici8+DQoJCQkJCTxpPlRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBcIndoYXRcIiBwYXJhbWV0ZXIgYXJlIDogY2F0ZWdvcnksIHZpZGVvczwvaT48L3A+DQoJCQkJCTxwPllvdSBtYXkgYWxzbyBhc2sgZm9yIGVsZW1lbnRzIHdobyBiZWxvbmcgdG8gYSBzcGVjaWZpYyBwYXJlbnQ6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwieW91dHViZXBsYXllclwiIHBhcmVudD1cImFsaWFzX29mX3BhcmVudFwifTwvcD4NCgkJCQkJPHA+WW91IG1heSBmaW5hbGx5IGFzayBmb3IgYSBzcGVjaWZpYyBlbGVtZW50Ojxicj4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwieW91dHViZXBsYXllclwiIGFsaWFzPVwiYWxpYXNfb2ZfaXRlbVwifTwvcD4NCgkJCQk8YnIvPjxoND5TZXBhcmF0aW5nIGludG8gcGFnZXM8L2g0Pg0KCQkJCQk8cD5Zb3UgbWF5IGxpbWl0IHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgc2hvd24gb24gb25lIHBhZ2U6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwieW91dHViZXBsYXllclwiIG5icGVycGFnZT1cIjVcIn08YnIvPg0KCQkJCQlJbiB0aGUgdGVtcGxhdGUsIHlvdSBjYW4gYnVpbGQgdGhlIHBhZ2UgbWVudSB1c2luZyB0aGUgZm9sbG93aW5nIHRhZ3M6PGJyLz4NCgkJCQkJeyIuJyQnLiJwYWdlX3Nob3dpbmd9LCB7Ii4nJCcuInBhZ2VfdG90YWxpdGVtc30sIHsiLickJy4icGFnZV9wYWdlbnVtYmVyc30sIHsiLickJy4icGFnZV9uZXh0fSwgeyIuJyQnLiJwYWdlX3ByZXZpb3VzfTwvcD4NCgkJCQk8YnIvPjxoND5Vc2luZyBxdWVyaWVzPC9oND4NCgkJCQkJPHA+VG8gZ2V0IGEgbGlzdCBvZiBpdGVtIHRoYXQgbWVldCBzcGVjaWZpYyBjcml0ZXJpYSwgeW91IGNhbiBjcmVhdGUgYSBxdWVyeSB1c2luZyB0aGUgcXVlcmllcyB0YWIgb2YgdGhlIGFkbWluIHBhbmVsLCBhbmQgY2FsbCB0aGVtIHVzaW5nIHRoZSBcInF1ZXJ5XCIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cInlvdXR1YmVwbGF5ZXJcIiBxdWVyeT1cIjVcIn08L3A+DQoJCQkJCTxwPjxpPklmIHRoZSBvcHRpb24gdG8gYWxsb3cgbWFudWVsIHNxbCBxdWVyaWVzIGlzIGVuYWJsZWQ8L2k+IChzZWUgXCJTZXR0aW5nc1wiIHRhYiksIHlvdSBtYXkgYWxzbyBwcm92aWRlIHRoZSBzcWwgcXVlcnkgZGlyZWN0bHkgd2l0aCB0aGUgcXVlcnkgcGFyYW1ldGVyLiBGb3IgZXhhbXBsZTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJ5b3V0dWJlcGxheWVyXCIgd2hhdD1cInZpZGVvc1wiIHF1ZXJ5PVwiQS5kYXRlX21vZGlmaWVkID4gJzIwMDktMDMtMTUnIEFORCBBLmFjdGl2ZSA9IDFcIn08YnIvPg0KCQkJCQlUaGUgcXVlcnkgcGFyYW1ldGVyIGNhbiBvbmx5IGhvbGQgdGhlIFdIRVJFIGNsYXVzZSBvZiB0aGUgcXVlcnksIGFuZCBzaG91bGQgbm90IGluY2x1ZGUgdGhlIFdIRVJFIGNvbW1hbmQgaXRzZWxmLiBUbyBhdm9pZCBwcm9ibGVtcywgdGhlIHByZWZpeCBcIkEuXCIgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIGZpZWxkIG5hbWVzICh3aGVyZSBhcHBsaWNhYmxlLCB0aGUgXCJCLlwiIHByZWZpeCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNyaXRlcmlhIG9uIHRoZSBwYXJlbnQncyBmaWVsZHMpLjxici8+DQoJCQkJCUFsdGhvdWdoIHRoZSBhYnN0cmFjdGlvbiBsYXllciBpcyBub3QgZWFzaWx5IHByb25lIHRvIGluamVjdGlvbnMsIHJlbWVtYmVyIHRoYXQgYWN0aXZhdGluZyB0aGlzIG9wdGlvbiBtZWFucyBnaXZpbmcgYSBzcWwgb3BlbmluZyB3aXRoaW4gdGhlIHRlbXBsYXRlcyBhbmQgYmUgY2FyZWZ1bC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGxpbmsgYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj5cImxpbmtcIjwvYj4gdG8gY3JlYXRlIGEgbGluayB0byB0aGUgZGVmYXVsdCBhY3Rpb24sIHVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnM6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwieW91dHViZXBsYXllclwiIGFjdGlvbj1cImxpbmtcIiB3aGF0PVwidmlkZW9zXCIgcmFuZG9tPVwiMVwifTxici8+DQoJCQkJCXdvdWxkIGNyZWF0ZSBhIGxpbmsgdG8gYSByYW5kb20gZWxlbWVudCBvZiB0aGlzIGxldmVsLjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2l0ZW1hcCBhY3Rpb248L2g0Pg0KCQkJCQk8cD5JZiB5b3VyIG1vZHVsZSBpcyBub3Qgc2hhcmluZyBjaGlsZHJlbiwgeW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj5cInNpdGVtYXBcIjwvYj4gdG8gY3JlYXRlIGEgbW9kdWxlIHNpdGVtYXA6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwieW91dHViZXBsYXllclwiIGFjdGlvbj1cInNpdGVtYXBcIn08YnIvPg0KCQkJCQlZb3UgY2FuIHNlbGVjdCB0aGUgbGV2ZWxzIHVzaW5nIHRoZSBcIndoYXRcIiBwYXJhbWV0ZXIsIGFuZCBtYXkgc2VsZWN0IG1vcmUgdGhhbiBvbmUgdXNpbmcgXCJ8XCIgOiB3aGF0PVwibGV2ZWwxfGxldmVsMlwiLjxici8+DQoJCQkJCU90aGVyIGF2YWlsYWJsZSBwYXJhbWV0ZXJzIGZvciB0aGlzIGFjdGlvbiBhcmUgXCJkZXRhaWxwYWdlXCIgYW5kIFwiaW5saW5lXCIuPGJyLz4NCgkJCQkJVG8gY3JlYXRlIGEgZ29vZ2xlIHNpdGVtYXAsIHNlZSB0aGUgPGEgaHJlZj1cIi4uL21vZHVsZXMveW91dHViZXBsYXllci9kb2MvZmFxLmh0bWwjcTE2XCIgdGFyZ2V0PVwiX2JsYW5rXCI+RkFRPC9hPi48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIHNlYXJjaCBhY3Rpb248L2g0Pg0KCQkJCQk8cD5Zb3UgbWF5IHVzZSB0aGUgYWN0aW9uIDxiPlwic2VhcmNoXCI8L2I+IHRvIGRpc3BsYXkgYSBzZWFyY2ggZm9ybTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJ5b3V0dWJlcGxheWVyXCIgYWN0aW9uPVwic2VhcmNoXCJ9PGJyLz4NCgkJCQkJVXNlIHRoZSBcInNlYXJjaG1vZGVcIiBwYXJhbWV0ZXIgdG8gc3dpdGNoIGJldHdlZW4gYWR2YW5jZWQgKGRlZmF1bHQpIGFuZCBzaW1wbGUgbW9kZS4gWW91IG1heSBzcGVjaWZ5IHRoZSBsZXZlbCBpbiB3aGljaCB0byBzZWFyY2ggdXNpbmcgdGhlIFwid2hhdFwiIHBhcmFtZXRlci4gWW91IGNhbm5vdCB1c2UgdGhlIGFkdmFuY2VkIHNlYXJjaCBtb2RlIGluIGFsbCBsZXZlbHMgYXQgdGhlIHNhbWUgdGltZS48YnIvPg0KCQkJCQlUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgY2FuIGJlIHVzZWQgd2l0aCB0aGUgc2VhcmNoIGFjdGlvbjogd2hhdCwgbGltaXQsIG5icGVycGFnZSwgb3JkZXJieSwgZGV0YWlscGFnZSwgbGlzdHRlbXBsYXRlLCBpbmxpbmUsIHNlYXJjaG1vZGUuPGJyLz4NCgkJCQkJU2VlIHlvdXR1YmVwbGF5ZXIvdGVtcGxhdGVzL3NlYXJjaC50cGwgdG8gbW9kaWZ5IHRoZSBzZWFyY2ggZm9ybS48L3A+PGJyLz4NCgkJCQk8cD5Gb3IgbW9yZSBoZWxwLCB5b3UgbWF5IHRha2UgYSBsb29rIGF0IHRoZSA8YSBocmVmPVwiLi4vbW9kdWxlcy95b3V0dWJlcGxheWVyL2RvYy9mYXEuaHRtbFwiIHRhcmdldD1cIl9ibGFua1wiPkZBUTwvYT4uPC9wPg0KCQkJPGJyLz48aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCgkJCQk8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiBjcmVhdGVkIHdpdGggQ1RMTW9kdWxlTWFrZXIsIGFuZCBpcyByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLjwvcD48YnIvPjxici8+IjsNCg0KLy9FVkVOVFMNCiRsYW5nWyJldmVudGRlc2NfbW9kaWZpZWQiXSA9ICJDYWxsZWQgYWZ0ZXIgYW4gZWxlbWVudCBoYXMgYmVlbiBtb2RpZmllZC4gUGFyYW1zOiBcIndoYXRcIj0+bGV2ZWwgb2YgdGhlIGVsZW1lbnQsIFwiaXRlbWlkXCI9PmlkIG9mIHRoZSBlbGVtZW50LCBcImFsaWFzXCI9PmFsaWFzIG9mIHRoZSBlbGVtZW50LiI7DQokbGFuZ1siZXZlbnRkZXNjX2RlbGV0ZWQiXSA9ICJDYWxsZWQgYWZ0ZXIgYW4gZWxlbWVudCBoYXMgYmVlbiBkZWxldGVkLiBQYXJhbXM6IFwid2hhdFwiPT5sZXZlbCBvZiB0aGUgZWxlbWVudC4iOw0KJGxhbmdbImV2ZW50ZGVzY19hZGRlZCJdID0gIkNhbGxlZCBhZnRlciBhbiBlbGVtZW50IGhhcyBiZWVuIGFkZGVkLiBQYXJhbXM6IFwid2hhdFwiPT5sZXZlbCBvZiB0aGUgZWxlbWVudCwgXCJpdGVtaWRcIj0+aWQgb2YgdGhlIGVsZW1lbnQsIFwiYWxpYXNcIj0+YWxpYXMgb2YgdGhlIGVsZW1lbnQuIjsNCg0KLy9QUkVGRVJFTkNFUw0KJGxhbmdbInByZWZlcmVuY2VzIl0gPSAiU2V0dGluZ3MiOw0KJGxhbmdbInByZWZfdGFiZGlzcGxheSJdID0gIkFkbWluIHRhYnMgc2hvd24gdG8gdGhlIG5vcm1hbCB1c2VyIjsNCiRsYW5nWyJoZWxwX3RhYmRpc3BsYXkiXSA9ICIoTm9ybWFsIHVzZXJzIGFyZSB0aG9zZSB3aG8gaGF2ZSBiZWVuIGdpdmVuIHRoZSBcInlvdXR1YmVwbGF5ZXI6IG5vcm1hbCB1c2VyXCIgcGVybWlzc2lvbi4gVGhlIGxldmVsLXNwZWNpZmljIG1hbmFnZSBwZXJtaXNzaW9ucyBvdmVycmlkZSB0aGUgdmlzaWJsZSB0YWJzIHNlbGVjdGVkIGhlcmUuKSI7DQokbGFuZ1sicHJlZl9zZWFyY2htb2R1bGVfaW5kZXgiXSA9ICJJbmRleCB0aGUgZm9sbG93aW5nIGxldmVscyBmb3IgdGhlIHNlYXJjaCBtb2R1bGUiOw0KJGxhbmdbImhlbHBfc2VhcmNobW9kdWxlX2luZGV4Il0gPSAiKFRoaXMgaGFzIG5vIGVmZmVjdCBvbiB0aGlzIG1vZHVsZSBvd24gaW50ZXJuYWwgc2VhcmNoIGFjdGlvbi4gQWxzbyBub3RlIHRoYXQgYWZ0ZXIgY2hhbmdpbmcgdGhlc2Ugc2V0dGluZ3MgeW91IHNob3VsZCByZWluZGV4IGluIEV4dGVuc2lvbi0mZ3Q7U2VhcmNoLikiOw0KJGxhbmdbInByZWZfbmV3aXRlbXNmaXJzdCJdID0gIk5ldyBpdGVtcyBzaG91bGQgYXBwZWFyIG9uIHRvcCBmb3IgdGhlIGZvbGxvd2luZyBsZXZlbHMiOw0KJGxhbmdbImhlbHBfbmV3aXRlbXNmaXJzdCJdID0gIihPYnZpb3VzbHksIGlmIHRoZSBsZXZlbCBpcyBub3QgY2hlY2tlZCBoZXJlLCBuZXcgaXRlbXMgd2lsbCBhcHBlYXIgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdCkiOw0KJGxhbmdbInByZWZfcmVzdHJpY3RfcGVybWlzc2lvbnMiXSA9ICJTaG91bGQgd2UgPGI+cmVzdHJpY3Q8L2I+IHRoZSBtYW5hZ2VtZW50IG9mIGl0ZW1zIHRvIHRoZSB1c2VycyB3aG8gaGF2ZSBzcGVjaWZpYyBtYW5hZ2VtZW50IHBlcm1pc3Npb25zIGZvciB0aGUgbGV2ZWw/IChpZiB5b3UgZG8gbm90IHdpc2ggdG8gc3BlY2lmeSBkaWZmZXJlbnQgcGVybWlzc2lvbnMgZm9yIGRpZmZlcmVudCBsZXZlbHMsIHlvdSBjYW4gdW5jaGVjayB0aGlzIGFuZCBzaW1wbHkgdXNlIHRoZSBcInlvdXR1YmVwbGF5ZXI6IG5vcm1hbCB1c2VyXCIgcGVybWlzc2lvbi4pIjsNCiRsYW5nWyJwcmVmX2Rpc3BsYXlfZmlsdGVyIl0gPSAiRGlzcGxheSA8Yj5maWx0ZXI8L2I+IG9uIHRoZSBtb2R1bGUgYWRtaW4gcGFuZWw/IjsNCiRsYW5nWyJwcmVmX2Rpc3BsYXlfaW5zdGFudHNlYXJjaCJdID0gIkRpc3BsYXkgPGI+aW5zdGFudCBzZWFyY2g8L2I+IG9uIHRoZSBtb2R1bGUgYWRtaW4gcGFuZWw/IjsNCiRsYW5nWyJwcmVmX2Rpc3BsYXlfaW5zdGFudHNvcnQiXSA9ICJEaXNwbGF5IDxiPmluc3RhbnQgc29ydDwvYj4gYnkgY29sdW1uIGxpbmtzPyI7DQokbGFuZ1sicHJlZl9lZGl0YWJsZV9hbGlhc2VzIl0gPSAiU2hvdWxkIHRoZSA8Yj5hbGlhczwvYj4gb2YgaXRlbXMgYmUgbWFudWFsbHkgZWRpdGFibGU/IjsNCiRsYW5nWyJwcmVmX2ZvcmNlX2xpc3QiXSA9ICJTaG91bGQgdGhlIDxiPmZvcmNlbGlzdDwvYj4gcGFyYW1ldGVyIGJlIGVuYWJsZWQgYnkgZGVmYXVsdD8gKGxpc3QgdmlldyB3aWxsIGJlIHNob3duIGV2ZW4gd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBpdGVtKSI7DQokbGFuZ1sicHJlZl9kZWxldGVfZmlsZXMiXSA9ICJXaGVuIGFuIGl0ZW0gaXMgPGI+ZGVsZXRlZDwvYj4sIHNob3VsZCB0aGUgYXNzb2NpYXRlZCBmaWxlcyBiZSBhbHNvIGRlbGV0ZWQ/IChwcm92aWRlZCB0aGUgaXRlbSBoYXMgYW55IGZpbGUgZmllbGRzLi4uKSI7DQokbGFuZ1sicHJlZl9hbGxvd19zcWwiXSA9ICJBbGxvdyBtYW51YWwgU1FMIHF1ZXJpZXM/ICh3aXRoIHRoZSBcInF1ZXJ5XCIgcGFyYW1ldGVyKSI7DQokbGFuZ1sicHJlZl91c2VfaGllcmFyY2h5Il0gPSAiRGlzcGxheSBmdWxsIGhpZXJhcmNoeSBpbiBmaWx0ZXIgYW5kIHBhcmVudCBkcm9wZG93bj8gKGFkbWluIHBhbmVsKSI7DQokbGFuZ1sicHJlZl9vcmRlcmJ5bmFtZSJdID0gIk9yZGVyIHBhcmVudCBkcm9wZG93bnMgYnkgbmFtZT8iOw0KJGxhbmdbInByZWZfc2hvd3RodW1ibmFpbHMiXSA9ICJEaXNwbGF5IGFsbCB0aHVtYm5haWxzIGluc3RlYWQgb2YgYSB0YWJsZSB3aGVuIHNlbGVjdGVkIGltYWdlIGZpbGVzPyI7DQokbGFuZ1sicHJlZl9tYXhzaG93bnBhZ2VzIl0gPSAiTWF4IG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgaW4gdGhlIHBhZ2UgbWVudTogIjsNCiRsYW5nWyJwcmVmX2F1dG9pbmNyZW1lbnRfYWxpYXMiXSA9ICJBdXRvLWluY3JlbWVudCBhbGlhc2VzIGluIGNhc2Ugb2YgaWRlbnRpY2FsIG5hbWVzPyI7DQokbGFuZ1sicHJlZl9kZWNvZGVlbnRpdGllcyJdID0gIkRlY29kZSBodG1sIGVudGl0aWVzIG9uIGZyb250ZW5kIGZvcm0gc3VibWlzc2lvbi4iOw0KJGxhbmdbInByZWZfZnJvbnRlbmQiXSA9ICJGcm9udGVuZCBlZGl0IjsNCiRsYW5nWyJoZWxwX2Zyb250ZW5kIl0gPSAiRm9yIHNlY3VyaXR5LCBmcm9udGVuZCBlZGl0aW9uIHNob3VsZCBiZSB1c2VkIHdpdGggdGhlIEZyb250IEVuZCBVc2VycyBtb2R1bGUuIFNlZSA8YSBocmVmPVwibW9kdWxlcy95b3V0dWJlcGxheWVyL2RvYy9mYXEuaHRtbCNxMjBcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GYXE8L2E+IGZvciBoZWxwIG9uIHBlcm1pc3Npb24gaW50ZWdyYXRpb24uIjsNCiRsYW5nWyJwcmVmX2ZlX3d5c2l3eWciXSA9ICJFbmFibGUgd3lzaXd5ZyBpbiB0aGUgZnJvbnRlbmQgKG11c3QgYmUgZW5hYmxlZCBpbiB0aGUgR2xvYmFsIFNldHRpbmdzIHRvbykiOw0KJGxhbmdbInByZWZfZmVfZGVjb2RlZW50aXRpZXMiXSA9ICJEZWNvZGUgaHRtbCBlbnRpdGllcyBmcm9tIGZyb250ZW5kIGZvcm1zLiBUaGlzIGlzIG5vdCByZWNvbW1hbmRlZC4iOw0KJGxhbmdbInByZWZfZmVfYWxsb3dmaWxlcyJdID0gIkFsbG93IGZpbGUgdXBsb2FkIGZyb20gdGhlIGZyb250ZW5kLiI7DQokbGFuZ1sicHJlZl9mZV9hbGxvd25hbWVjaGFuZ2UiXSA9ICJBbGxvdyBmcm9udGVuZCB1c2VycyB0byBjaGFuZ2UgdGhlIG5hbWUgKGFuZCB0aHJvdWdoIGl0IHRoZSBhbGlhcykgb2YgdGhlIGl0ZW0gdGhleSBhcmUgZWRpdGluZy4iOw0KJGxhbmdbInByZWZfZmVfYWxsb3dhZGRuZXciXSA9ICJBbGxvdyBmcm9udGVuZCB1c2VycyB0byBhZGQgbmV3IGVsZW1lbnRzLiI7DQokbGFuZ1sicHJlZl9mZV91c2VjYXB0Y2hhIl0gPSAiVXNlIGNhcHRjaGE/IChtb2R1bGUgQ2FwdGNoYSByZXF1aXJlZCkiOw0KJGxhbmdbInByZWZfZmVfYWZ0ZXJzdWJtaXQiXSA9ICJPbmNlIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCwgcmVkaXJlY3QgdG8gIjsNCiRsYW5nWyJwcmVmX2ZlX21heGZpbGVzaXplIl0gPSAiTWF4aW11bSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGZpbGVzIHVwbG9hZGVkIHRocm91Z2ggdGhlIGZyb250ZW5kIChjYW5ub3QgYmUgb3ZlciBwaHAuaW5pIGxpbWl0KSI7DQokbGFuZ1sicHJlZl9hbGxvd19jb21wbGV4X29yZGVyIl0gPSAiQWxsb3cgY29tcGxleCBcIm9yZGVyYnlcIiBwYXJhbWV0ZXJzLiI7DQokbGFuZ1sicHJlZl9hZG1pbnBhZ2VzIl0gPSAiTnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGluIHRoZSBhZG1pbiBwYW5lbCAoMCA9IHBhcyBkZSBwYWdpbmF0aW9uKS4iOw0KJGxhbmdbInByZWZfbG9hZF9uYmNoaWxkcmVuIl0gPSAiTG9hZCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIChpdGVtLSZndDtuYmNoaWxkcmVuKSBmb3IgYWxsIGl0ZW1zPyI7DQokbGFuZ1sicHJlZl9sb2FkX25leHRwcmV2aW91cyJdID0gIkxvYWQgbmV4dC9wcmV2aW91cyBsaW5rcz8gKGRldGFpbCB2aWV3IG9ubHkpIjsNCiRsYW5nWyJwcmVmX3VzZV9zZXNzaW9uIl0gPSAiVXNlIHNlc3Npb24gdG8gc3RvcmUgYWRtaW4gcGFuZWwgZmlsdGVycy4iOw0KJGxhbmdbInByZWZfbGV2ZWxwYWdpbmF0aW9uIl0gPSAiRGVmYXVsdCBudW1iZXIgb2YgZWxlbWVudCBwZXIgcGFnZSBmb3IgdGhlIGZyb250ZW5kIjsNCiRsYW5nWyJoZWxwX2xldmVscGFnaW5hdGlvbiJdID0gIihFbXB0eSBvciAwIGZvciB3aWxsIGRpc2FibGUgZGVmYXVsdCBwYWdpbmF0aW9uLiBUaGUgbmJwZXJwYWdlIHBhcmFtZXRlciBvdmVycmlkZXMgdGhlc2Ugc2V0dGluZ3MuKSI7DQoNCi8vUEFSQU1FVEVSUw0KJGxhbmdbInBoZWxwX2FjdGlvbiJdID0gIlBvc3NpYmxlIGFjdGlvbnM6IFwibGlua1wiLCBcInNlYXJjaFwiLCBcImJyZWFkY3J1bWJzXCIsIFwiZGVmYXVsdFwiLCBcInNpdGVtYXBcIi4iOw0KJGxhbmdbInBoZWxwX3doYXQiXSA9ICJBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIGxldmVsIHlvdSB3aXNoIHRvIGRpc3BsYXkuIFBvc3NpYmxlIHZhbHVlcyBhcmUgOiA8aT5jYXRlZ29yeSwgdmlkZW9zPC9pPiI7DQokbGFuZ1sicGhlbHBfYWxpYXMiXSA9ICJBbGlhcyBvZiB0aGUgaXRlbSB5b3Ugd2lzaCB0byBkaXNwbGF5LiI7DQokbGFuZ1sicGhlbHBfcGFyZW50Il0gPSAiSWYgeW91IHdpc2ggdG8gbGltaXQgdGhlIGRpc3BsYXllZCBlbGVtZW50cyB0byB0aG9zZSB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50LCBlbnRlciB0aGUgcGFyZW50IGFsaWFzIGhlcmUuIjsNCiRsYW5nWyJwaGVscF9saW1pdCJdID0gIkxpbWl0IHRoZSBudW1iZXIgb2YgaXRlbSByZXR1cm5lZCBieSB0aGUgcXVlcnkgKDAgPSBubyBsaW1pdCkiOw0KJGxhbmdbInBoZWxwX25icGVycGFnZSJdID0gIlNldCB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2UuIjsNCiRsYW5nWyJwaGVscF9vcmRlcmJ5Il0gPSAiWW91IGNhbiBzZXQgdG8gXCJtb2RpZmllZFwiLCBcImNyZWF0ZWRcIiBvciB0aGUgbmFtZSBvZiBhIGZpZWxkIHRvIG9yZGVyIGl0ZW1zIGluIHRoaXMgd2F5LiBBbnkgb3RoZXIgdmFsdWUgd2lsbCBvcmRlciB3aXRoIHRoZSBpdGVtIG9yZGVyLiI7DQokbGFuZ1sicGhlbHBfZGV0YWlscGFnZSJdID0gIlNwZWNpZnkgdGhlIGFsaWFzIG9mIHRoZSBwYWdlIGluIHdoaWNoIGxpbmtzIHRvIGNoaWxkIGVsZW1lbnRzIHNob3VsZCBiZSBzZW50IChpZiBub25lIGlzIHNwZWNpZmllZCwgY3VycmVudCBwYWdlIGlzIHVzZWQpIjsNCiRsYW5nWyJwaGVscF9zaG93ZGVmYXVsdCJdID0gIlNldCB0byBcInRydWVcIiBpZiB5b3Ugd2lzaCB0byBkaXNwbGF5IHRoZSBkZWZhdWx0IGVsZW1lbnQuIjsNCiRsYW5nWyJwaGVscF9yYW5kb20iXSA9ICJTZXQgdG8gYSBudW1iZXIgdG8gc2hvdyBhIG51bWJlciBvZiByYW5kb20gZWxlbWVudHMgZnJvbSB5b3VyIHF1ZXJ5LiI7DQokbGFuZ1sicGhlbHBfZmluYWx0ZW1wbGF0ZSJdID0gIlNwZWNpZnkgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBmb3IgdGhlIGRldGFpbCB2aWV3IG9mIHRoZSBmaW5hbCBsZXZlbC4iOw0KJGxhbmdbInBoZWxwX2xpc3R0ZW1wbGF0ZSJdID0gIlNwZWNpZnkgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBmb3IgdGhlIGxpc3Qgdmlldy4iOw0KJGxhbmdbInBoZWxwX2ZvcmNlbGlzdCJdID0gIlNldCB0byAxIGlmIHlvdSB3aXNoIHRvIGRpc3BsYXkgYSBsaXN0IHZpZXcgZXZlbiB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGVsZW1lbnQuIjsNCiRsYW5nWyJwaGVscF9pbnRlcm5hbCJdID0gIkZvciBpbnRlcm5hbCB1c2U7IHNwZWNpZnkgdGhlIHBhZ2UgKHdoZW4gdXNpbmcgbmJwZXJwYWdlKS4iOw0KJGxhbmdbInBoZWxwX3F1ZXJ5Il0gPSAiRm9yIG9wdGlvbmFsIHVzZSB3aXRoIHRoZSBcImRlZmF1bHRcIiBhY3Rpb24uIFNwZWNpZmllcyB0aGUgaWQgb2YgdGhlIHF1ZXJ5IHRvIHVzZS4iOw0KJGxhbmdbInBoZWxwX2lubGluZSJdID0gIk1ha2VzIHRoZSBsaW5rcyBpbmxpbmUuIjsNCiRsYW5nWyJwaGVscF9zZWFyY2htb2RlIl0gPSAiRm9yIHVzZSB3aXRoIHRoZSBcInNlYXJjaFwiIGFjdGlvbi4gU2V0IHRvIFwic2ltcGxlXCIgdG8gc2VhcmNoIGluIGFsbCB0ZXh0IGZpZWxkcywgYW5kIFwiYWR2YW5jZWRcIiB0byBzZWFyY2ggaW4gc3BlY2lmaWMgZmllbGRzLiI7DQokbGFuZ1sicGhlbHBfdG9hY3Rpb24iXSA9ICJGb3IgdXNlIHdpdGggdGhlIFwibGlua1wiIGFjdGlvbi4gU2V0cyB0aGUgYWN0aW9uIHRvIHdoaWNoIHRoZSBsaW5rIHNob3VsZCByZWRpcmVjdC4iOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCgkJDQovLyBteXNxbC1zcGVjaWZpYywgYnV0IGlnbm9yZWQgYnkgb3RoZXIgZGF0YWJhc2UNCiR0YWJvcHRhcnJheSA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7DQoJCQ0KDQovLyBDcmVhdGVzIHRoZSBjYXRlZ29yeSB0YWJsZQ0KJGZsZHMgPSAiDQoJZGVzY3JpcHRpb24gQygyNTUpLA0KCWlkIEkgS0VZLA0KCW5hbWUgQyg2NCksDQoJYWxpYXMgQyg2NCksDQoJaXRlbV9vcmRlciBJLA0KCWFjdGl2ZSBMLA0KCWlzZGVmYXVsdCBMLA0KICAgIGRhdGVfbW9kaWZpZWQgIi5DTVNfQURPREJfRFQuIiwNCglkYXRlX2NyZWF0ZWQgIi5DTVNfQURPREJfRFQuIg0KCSI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX2NhdGVnb3J5IiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfY2F0ZWdvcnlfc2VxIik7DQoNCg0KLy8gQ3JlYXRlcyB0aGUgdmlkZW9zIHRhYmxlDQokZmxkcyA9ICINCgl2aWRlb2lkIEMoMjU1KSwNCglkZXNjcmlwdGlvbiBDKDI1NSksDQoJcGFyZW50IEksDQoJaWQgSSBLRVksDQoJbmFtZSBDKDY0KSwNCglhbGlhcyBDKDY0KSwNCglpdGVtX29yZGVyIEksDQoJYWN0aXZlIEwsDQoJaXNkZWZhdWx0IEwsDQogICAgZGF0ZV9tb2RpZmllZCAiLkNNU19BRE9EQl9EVC4iLA0KCWRhdGVfY3JlYXRlZCAiLkNNU19BRE9EQl9EVC4iDQoJIjsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfdmlkZW9zIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfdmlkZW9zX3NlcSIpOw0KDQoNCg0KLy8gQ3JlYXRlcyB0aGUgcXVlcmllcyB0YWJsZQ0KJGZsZHMgPSAiDQogICAgaWQgSSwNCgluYW1lIEMoNjQpLA0KCXdoYXQgQygzMiksDQoJd2hlcmVjbGF1c2UgQygyNTUpLA0KCXdoZXJldmFsdWVzIEMoMjU1KSwNCglxdWVyeW9yZGVyIEMoMzIpDQoJIjsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfc2F2ZWRfcXVlcmllcyIsICRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KJGRiLT5DcmVhdGVTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3NhdmVkX3F1ZXJpZXNfc2VxIik7DQoNCg0KLy8gSU5TRVJUSU5HIERFRkFVTFQgVEVNUExBVEVTDQoJJHRlbXBsYXRlID0gJzxoMj57JGxldmVsdGl0bGV9PC9oMj4NCntpZiAkaXRlbWNvdW50ID4gMH0NCjx1bD4NCntmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09Iml0ZW0ifQ0KCTxsaSB7aWYgJGl0ZW0tPmlzX3NlbGVjdGVkfWNsYXNzPSJhY3RpdmUiey9pZn0+eyRpdGVtLT5kZXRhaWxsaW5rfQ0KPGJyIC8+DQo8YSBocmVmPSJ7JGl0ZW0tPmRldGFpbHVybH0iPg0KPGltZyBzcmM9Imh0dHA6Ly9pbWcueW91dHViZS5jb20vdmkveyRpdGVtLT52aWRlb2lkfS8xLmpwZyIgd2lkdGg9IjEzMCIgaGVpZ2h0PSI5NyIgYm9yZGVyPSIwIiBhbHQ9InskaXRlbS0+bmFtZX0iIHRpdGxlPSJ7JGl0ZW0tPm5hbWV9Ij4gDQo8L0E+DQo8YnIgLz48YnIgLz4NCjwvbGk+DQp7L2ZvcmVhY2h9DQo8L3VsPg0Ke2lmICRwYWdlX3BhZ2VudW1iZXJzfQ0KPGRpdiBpZD0icGFnZW1lbnUiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4NCnskcGFnZV9wcmV2aW91c30mbmJzcDsgeyRwYWdlX3Nob3dpbmd9L3skcGFnZV90b3RhbGl0ZW1zfSAmbmJzcDt7JHBhZ2VfbmV4dH08YnIvPg0KeyRwYWdlX3BhZ2VudW1iZXJzfQ0KPC9kaXY+DQp7L2lmfQ0Ke2Vsc2V9DQo8cD57JGVycm9yX21zZ308L3A+DQp7L2lmfQ0KJzsNCiR0aGlzLT5TZXRUZW1wbGF0ZSgibGlzdF9kZWZhdWx0IiwkdGVtcGxhdGUsJHRoaXMtPkdldE5hbWUoKSk7DQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV9jYXRlZ29yeSIsImxpc3RfZGVmYXVsdCIpOw0KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfdmlkZW9zIiwibGlzdF9kZWZhdWx0Iik7DQoNCiR0ZW1wbGF0ZSA9ICc8aDM+eyRpdGVtLT5uYW1lfTwvaDM+DQo8cD57JGxhYmVscy0+dmlkZW9pZH06IHskaXRlbS0+dmlkZW9pZH08L3A+DQo8cD57JGxhYmVscy0+ZGVzY3JpcHRpb259OiB7JGl0ZW0tPmRlc2NyaXB0aW9ufTwvcD4NCjxvYmplY3Qgd2lkdGg9IjQyNSIgaGVpZ2h0PSIzNDQiPjxwYXJhbSBuYW1lPSJtb3ZpZSIgdmFsdWU9Imh0dHA6Ly93d3cueW91dHViZS5jb20vdi97JGl0ZW0tPnZpZGVvaWR9P3JlbD0wJmZzPTEmbG9vcD0wIj48L3BhcmFtPjxwYXJhbSBuYW1lPSJ3bW9kZSIgdmFsdWU9InRyYW5zcGFyZW50Ij48L3BhcmFtPjxwYXJhbSBuYW1lPSJhbGxvd0Z1bGxTY3JlZW4iIHZhbHVlPSJ0cnVlIj48ZW1iZWQgc3JjPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YveyRpdGVtLT52aWRlb2lkfT9yZWw9MCZmcz0xJmxvb3A9MCIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd21vZGU9InRyYW5zcGFyZW50IiB3aWR0aD0iNDI1IiBoZWlnaHQ9IjM0NCI+PC9lbWJlZD48L29iamVjdD4NCic7DQokdGhpcy0+U2V0VGVtcGxhdGUoImZpbmFsX2RlZmF1bHQiLCR0ZW1wbGF0ZSwkdGhpcy0+R2V0TmFtZSgpKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJmaW5hbHRlbXBsYXRlIiwiZmluYWxfZGVmYXVsdCIpOw0KDQokdGVtcGxhdGUgPSAnPHA+eyRlcnJvcl9tc2d9PC9wPg0Ke2lmICRiYWNrbGlua308cD57JGJhY2tsaW5rfTwvcD57L2lmfSc7DQokdGhpcy0+U2V0VGVtcGxhdGUoIm5vX3Jlc3VsdCIsJHRlbXBsYXRlLCR0aGlzLT5HZXROYW1lKCkpOw0KDQovLyBDUkVBVElORyBQRVJNSVNTSU9OUyA6DQoNCi8vIHBlcm1pc3Npb25zDQokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigieW91dHViZXBsYXllcl9ub3JtYWx1c2VyIiwgInlvdXR1YmVwbGF5ZXI6IE5vcm1hbCB1c2VyIik7DQokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigieW91dHViZXBsYXllcl9hZHZhbmNlZCIsICJ5b3V0dWJlcGxheWVyOiBBZHZhbmNlZCIpOw0KCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX21hbmFnZV9jYXRlZ29yeSIsICJ5b3V0dWJlcGxheWVyOiBNYW5hZ2UgY2F0ZWdvcnkiKTsNCgkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigieW91dHViZXBsYXllcl9tYW5hZ2VfdmlkZW9zIiwgInlvdXR1YmVwbGF5ZXI6IE1hbmFnZSB2aWRlb3MiKTsNCi8vIGFjdGl2YXRpbmcgZGVmYXVsdCBwcmVmZXJlbmNlcw0KCSRkZWZwcmVmcyA9IGFycmF5KCJ0YWJkaXNwbGF5X2NhdGVnb3J5Iiwic2VhcmNobW9kdWxlX2luZGV4X2NhdGVnb3J5IiwibmV3aXRlbXNmaXJzdF9jYXRlZ29yeSIsInRhYmRpc3BsYXlfdmlkZW9zIiwic2VhcmNobW9kdWxlX2luZGV4X3ZpZGVvcyIsInJlc3RyaWN0X3Blcm1pc3Npb25zIiwib3JkZXJieW5hbWUiLCJkaXNwbGF5X2ZpbHRlciIsImRpc3BsYXlfaW5zdGFudHNlYXJjaCIsImRpc3BsYXlfaW5zdGFudHNvcnQiLCJzaG93dGh1bWJuYWlscyIsImxvYWRfbmJjaGlsZHJlbiIsInVzZV9zZXNzaW9uIik7DQoJZm9yZWFjaCgkZGVmcHJlZnMgYXMgJG9uZXByZWYpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRvbmVwcmVmLHRydWUpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJlbXB0eXRlbXBsYXRlIiwiKioiKTsNCg0KLy8gZXZlbnRzDQoJJHRoaXMtPkNyZWF0ZUV2ZW50KCJ5b3V0dWJlcGxheWVyX2FkZGVkIik7DQoJJHRoaXMtPkNyZWF0ZUV2ZW50KCJ5b3V0dWJlcGxheWVyX21vZGlmaWVkIik7DQoJJHRoaXMtPkNyZWF0ZUV2ZW50KCJ5b3V0dWJlcGxheWVyX2RlbGV0ZWQiKTsNCgkNCi8vIHByZXBhcmUgaW5mb3JtYXRpb24gZm9yIGFuIGV2ZW50dWFsIHVwZ3JhZGUNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgibWFrZXJ2ZXJzaW9uIiwiMS44LjkuNCIpOw0KDQovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cNCgkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCJmcmllbmRseW5hbWUiKSwgJHRoaXMtPkxhbmcoImluc3RhbGxlZCIsJHRoaXMtPkdldFZlcnNpb24oKSkpOw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCg0KDQoNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfY2F0ZWdvcnkiKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl9jYXRlZ29yeV9zZXEiKTsNCgkNCg0KCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl92aWRlb3MiKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl92aWRlb3Nfc2VxIik7DQoJDQoNCgkvLyRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl90ZW1wbGF0ZXMiKTsNCgkvLyRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkkdGhpcy0+RGVsZXRlVGVtcGxhdGUoIiIsJHRoaXMtPkdldE5hbWUoKSk7DQoJDQoJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3NhdmVkX3F1ZXJpZXMiKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl9zYXZlZF9xdWVyaWVzX3NlcSIpOw0KDQovLyBwZXJtaXNzaW9ucw0KCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX21hbmFnZV9jYXRlZ29yeSIpOw0KCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX21hbmFnZV92aWRlb3MiKTsNCgkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbigieW91dHViZXBsYXllcl9hZHZhbmNlZCIpOw0KCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7DQoJDQovLyBldmVudHMNCgkkdGhpcy0+UmVtb3ZlRXZlbnQoInlvdXR1YmVwbGF5ZXJfYWRkZWQiKTsNCgkkdGhpcy0+UmVtb3ZlRXZlbnQoInlvdXR1YmVwbGF5ZXJfbW9kaWZpZWQiKTsNCgkkdGhpcy0+UmVtb3ZlRXZlbnQoInlvdXR1YmVwbGF5ZXJfZGVsZXRlZCIpOw0KDQovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cNCgkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCJmcmllbmRseW5hbWUiKSwgJHRoaXMtPkxhbmcoInVuaW5zdGFsbGVkIikpOw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKJHRhYm9wdCA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7CgovLyBQQVJUIDE6IFRoaXMgZG9lcyB0aGUgdXBncmFkZSBmb3IgdGhlIENUTE1vZHVsZU1ha2VyIHBhcnQKLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBvbmx5IGJhY2t3YXJkIGNvbXBhdGlibGUgdG8gQ1RMTW9kdWxlTWFrZXIgMS42LjMuIEkgY291bGRuJ3QgZ28gYW55IGZ1cnRoZXIgYmVoaW5kIGJlY2F1c2UgYXQgdGhhdCB0aW1lIHRoZSBtYWtlciB2ZXJzaW9uIHdhc24ndCBzYXZlZCBhbnl3aGVyZQoKJG9sZG1ha2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoIm1ha2VydmVyc2lvbiIsICJ2ZXJ5b2xkIik7Cgpzd2l0Y2goJG9sZG1ha2VyKXsKCS8vIEJFR0lOIFNXSVRDSCgkb2xkbWFrZXIpCgoJY2FzZSAidmVyeW9sZCI6CgkJLy8gdGhlIG1vZHVsZSB3YXMgY3JlYXRlZCB3aXRoIHZlcnNpb24gMS42LjMgb3IgcHJpb3IuCgkJJHRoaXMtPkNyZWF0ZUV2ZW50KCJ5b3V0dWJlcGxheWVyX2FkZGVkIik7CgkJJHRoaXMtPkNyZWF0ZUV2ZW50KCJ5b3V0dWJlcGxheWVyX21vZGlmaWVkIik7CgkJJHRoaXMtPkNyZWF0ZUV2ZW50KCJ5b3V0dWJlcGxheWVyX2RlbGV0ZWQiKTsKCQlicmVhazsKCWNhc2UgIjEuNi40IjoKCWNhc2UgIjEuNyI6CgljYXNlICIxLjcuMSI6CgljYXNlICIxLjcuMiI6CgljYXNlICIxLjcuMyI6CgljYXNlICIxLjcuNCI6CgkJOwoJY2FzZSAiMS44LjEiOgoJY2FzZSAiMS44LjIiOgoJY2FzZSAiMS44LjIuMiI6CgljYXNlICIxLjguMyI6CgljYXNlICIxLjguMy4xIjoKCQkvLyBDcmVhdGVzIHRoZSBxdWVyaWVzIHRhYmxlCgkJJGZsZHMgPSAiCgkJCWlkIEksCgkJCW5hbWUgQyg2NCksCgkJCXdoYXQgQygzMiksCgkJCXdoZXJlY2xhdXNlIEMoMjU1KSwKCQkJd2hlcmV2YWx1ZXMgQygyNTUpLAoJCQlxdWVyeW9yZGVyIEMoMzIpCgkJCSI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfc2F2ZWRfcXVlcmllcyIsICRmbGRzLCAkdGFib3B0KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJGRiLT5DcmVhdGVTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3NhdmVkX3F1ZXJpZXNfc2VxIik7CgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oInlvdXR1YmVwbGF5ZXJfYWR2YW5jZWQiLCAieW91dHViZXBsYXllcjogQWR2YW5jZWQiKTsKCWNhc2UgIjEuOC40IjoKCWNhc2UgIjEuOC40LjEiOgoJY2FzZSAiMS44LjUiOgoJY2FzZSAiMS44LjUuMSI6CgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oInlvdXR1YmVwbGF5ZXJfbm9ybWFsdXNlciIsICJ5b3V0dWJlcGxheWVyOiBOb3JtYWwgdXNlciIpOwoJCS8vIGFjdGl2YXRpbmcgZGVmYXVsdCBwcmVmZXJlbmNlcwoJCSRkZWZwcmVmcyA9IGFycmF5KCJ0YWJkaXNwbGF5X2NhdGVnb3J5Iiwic2VhcmNobW9kdWxlX2luZGV4X2NhdGVnb3J5IiwibmV3aXRlbXNmaXJzdF9jYXRlZ29yeSIsInRhYmRpc3BsYXlfdmlkZW9zIiwic2VhcmNobW9kdWxlX2luZGV4X3ZpZGVvcyIsInJlc3RyaWN0X3Blcm1pc3Npb25zIiwiZGlzcGxheV9maWx0ZXIiLCJkaXNwbGF5X2luc3RhbnRzZWFyY2giKTsKCQlmb3JlYWNoKCRkZWZwcmVmcyBhcyAkb25lcHJlZikJJHRoaXMtPlNldFByZWZlcmVuY2UoJG9uZXByZWYsdHJ1ZSk7CgljYXNlICIxLjguNiI6CgljYXNlICIxLjguNi4xIjoKCWNhc2UgIjEuOC43IjoKCWNhc2UgIjEuOC43LjEiOgoJCWlmKCRkYi0+ZGJ0eXBlID09ICJteXNxbCIgfHwgJGRiLT5kYnR5cGUgPT0gIm15c3FsaSIpewoJCQkvLyBtc3lxbAoJCQkkcXVlcmllcyA9IGFycmF5KCk7CgkJCSRxdWVyaWVzW10gPSAiQUxURVIgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX2NhdGVnb3J5IEFERCBDT0xVTU4gZGF0ZV9jcmVhdGVkIERBVEVUSU1FIjsKCQkJJHF1ZXJpZXNbXSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX2NhdGVnb3J5IFNFVCBkYXRlX2NyZWF0ZWQ9ZGF0ZV9tb2RpZmllZCI7CgkJCSRxdWVyaWVzW10gPSAiQUxURVIgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3ZpZGVvcyBBREQgQ09MVU1OIGRhdGVfY3JlYXRlZCBEQVRFVElNRSI7CgkJCSRxdWVyaWVzW10gPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl92aWRlb3MgU0VUIGRhdGVfY3JlYXRlZD1kYXRlX21vZGlmaWVkIjsKCQkJZm9yZWFjaCgkcXVlcmllcyBhcyAkcXVlcnkpCQlteXNxbF9xdWVyeSgkcXVlcnkpOwoKCQl9ZWxzZXsKCQkJLy8gbm9uLW15c3FsCgkJCSRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeW91dHViZXBsYXllcl9jYXRlZ29yeSIsICJkYXRlX2NyZWF0ZWQgIi5DTVNfQURPREJfRFQpOwoJCQkkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfdmlkZW9zIiwgImRhdGVfY3JlYXRlZCAiLkNNU19BRE9EQl9EVCk7CgkJCQoJCX0KCWNhc2UgIjEuOC43LjIiOgoJY2FzZSAiMS44LjgiOgoJY2FzZSAiMS44LjguMSI6CgljYXNlICIxLjguOC4yIjoKCWNhc2UgIjEuOC44LjMiOgoJY2FzZSAiMS44LjguNCI6CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoImFkbWlucGFnZXMiLDApOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsb2FkX25iY2hpbGRyZW4iLHRydWUpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsb2FkX25leHRwcmV2aW91cyIsZmFsc2UpOwoJY2FzZSAiMS44LjkiOgoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ1c2Vfc2Vzc2lvbiIsdHJ1ZSk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoImRlZmVtcHR5dGVtcGxhdGUiLCIqKiIpOwoJCQoJLy8gRU5EIFNXSVRDSCgkb2xkbWFrZXIpCn0KCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJtYWtlcnZlcnNpb24iLCAiMS44LjkuNCIpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRmaWx0ZXIgfHwgJGluc3RhbnRzZWFyY2h9PGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB0ZXh0LWFsaWduOiByaWdodDsiPnskZmlsdGVyfXtpZiAkZmlsdGVyICYmICRpbnN0YW50c2VhcmNofTxici8+ey9pZn17JGluc3RhbnRzZWFyY2h9PC9kaXY+ey9pZn0KPHA+eyRhZGRuZXd9IHskcmVvcmRlcn08L3A+CntpZiBjb3VudCgkaXRlbWxpc3QpID4gMH0KPGRpdiBzdHlsZT0iY2xlYXI6IHJpZ2h0OyI+Cjx0YWJsZSB7aWYgJHRhYmxlaWR9aWQ9InskdGFibGVpZH0iIHsvaWZ9Y2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgo8dGhlYWQ+PHRyPgoJe2ZvcmVhY2ggZnJvbT0kYWRtaW5zaG93IGl0ZW09Y29sdW1ufQoJCTx0aD57JGNvbHVtblswXX08L3RoPgoJey9mb3JlYWNofQo8L3RyPjwvdGhlYWQ+Cjx0Ym9keT4Ke2N5Y2xlIHZhbHVlcz0icm93Mixyb3cxIiBhc3NpZ249cm93Y2xhc3MgcmVzZXQ9dHJ1ZX0Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT1vbmVpdGVtfQp7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzc30KPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KCXtmb3JlYWNoIGZyb209JGFkbWluc2hvdyBpdGVtPWNvbHVtbn0KCQl7YXNzaWduIHZhcj1vbmV2YWwgdmFsdWU9JGNvbHVtblsxXX0KCQk8dGR7aWYgJGNvbHVtblsyXX0gY2xhc3M9ImN0bG1tX25vc2VhcmNoInsvaWZ9Pnskb25laXRlbS0+JG9uZXZhbH08L3RkPgoJey9mb3JlYWNofQo8L3RyPgp7L2ZvcmVhY2h9CjwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgp7aWYgJHBhZ2VpbmZvfQo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+e2lmICRwcmV2aW91c3BhZ2V9eyRwcmV2aW91c3BhZ2V9ICZuYnNwOyB7L2lmfXskcGFnZWluZm99e2lmICRuZXh0cGFnZX0gJm5ic3A7IHskbmV4dHBhZ2V9ey9pZn08YnIvPgp7JHBhZ2VzfTwvcD4Key9pZn0KPHA+eyRhZGRuZXd9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/browsefiles.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskYnJvd3NldGl0bGV9PC9oMj4Ke2lmICRwb3N0bWF4c2l6ZX08cCBhbGlnbj0icmlnaHQiPnskcG9zdG1heHNpemV9PC9wPnsvaWZ9CnskZm9ybXN0YXJ0fQoKe2lmICRhZGRmaWxlaW5wdXR9CjxmaWVsZHNldCBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMzAlOyBtYXJnaW46IDE1cHg7IHBhZGRpbmc6IDVweDsiPjxsZWdlbmQ+PGI+eyR6aXB0aXRsZX08L2I+PC9sZWdlbmQ+CjxwPnskemlwbm90aWNlfTwvcD4Ke2lmICRyZXNpemVub3RpY2V9PHA+eyRyZXNpemVub3RpY2V9PC9wPnsvaWZ9CjxwPnskemlwaW5wdXR9IHskemlwc3VibWl0fTwvcD4KPC9maWVsZHNldD4Key9pZn0KPGZpZWxkc2V0IHN0eWxlPSJtYXJnaW46IDE1cHg7IHBhZGRpbmc6IDVweDsiPjxsZWdlbmQ+PGI+eyR1cGxvYWR0aXRsZX08L2I+PC9sZWdlbmQ+CntpZiAkcmVzaXplbm90aWNlfTxwPnskcmVzaXplbm90aWNlfTwvcD57L2lmfQp7JGZpbGVpbnB1dH0Ke2lmICRhZGRmaWxlaW5wdXR9PHA+eyRhZGRmaWxlaW5wdXR9PC9wPnsvaWZ9CjxwPnskc3VibWl0fTwvcD4KPC9maWVsZHNldD4KCnskZm9ybWVuZH0KCjxici8+CntpZiAkaW5zdGFudHNlYXJjaH08ZGl2IHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij57JGluc3RhbnRzZWFyY2h9PC9kaXY+ey9pZn0KPHA+eyRzaG93aW5nZGlyfTwvcD4KPGRpdiBzdHlsZT0iY2xlYXI6IHJpZ2h0OyI+Cjx0YWJsZSBpZD0iZmlsZWxpc3RfdGFibGUiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KPHRoZWFkPjx0cj4KCTx0aD57JHNvcnRsaW5rc1swXX17JGhlYWRlcnMtPmZpbGVuYW1lfTwvdGg+Cgk8dGg+eyRudW1lcmljX3NvcnRsaW5rc1sxXX17JGhlYWRlcnMtPmltYWdlc2l6ZX08L3RoPgoJPHRoPnskc29ydGxpbmtzWzJdfXskaGVhZGVycy0+ZXh0fTwvdGg+Cgk8dGg+eyRudW1lcmljX3NvcnRsaW5rc1szXX17JGhlYWRlcnMtPnNpemV9PC90aD4KCTx0aD57JG51bWVyaWNfc29ydGxpbmtzWzRdfXskaGVhZGVycy0+bW9kaWZpZWR9PC90aD4KCTx0aCB3aWR0aD0iMTI4Ij57JGhlYWRlcnMtPmRlbGV0ZWxpbmt9PC90aD4KPC90cj48L3RoZWFkPgo8dGJvZHk+CntjeWNsZSB2YWx1ZXM9InJvdzIscm93MSIgYXNzaWduPXJvd2NsYXNzIHJlc2V0PXRydWV9Cntmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09b25laXRlbX0Ke2N5Y2xlIHZhbHVlcz0icm93Mixyb3cxIiBhc3NpZ249cm93Y2xhc3N9Cjx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+Cgk8dGQ+eyRvbmVpdGVtLT5waWN9IHskb25laXRlbS0+dGhlbGlua308L3RkPgoJPHRkIGNsYXNzPSJjdGxtbV9ub3NlYXJjaCI+eyRvbmVpdGVtLT5pbWFnZXNpemV9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+ZXh0fTwvdGQ+Cgk8dGQgY2xhc3M9ImN0bG1tX25vc2VhcmNoIj57JG9uZWl0ZW0tPnNpemV9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+bW9kaWZpZWR9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+ZGVsZXRlbGlua308L3RkPgo8L3RyPgp7L2ZvcmVhY2h9CjwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/editA.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7aWYgJGl0ZW1hbGlhc308c3BhbiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBmb250LXNpemU6IDgwJSI+eyRpdGVtYWxpYXN9PC9zcGFuPnsvaWZ9DQo8aDE+eyRlZGl0dGl0bGV9PC9oMT4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo8YnIvPjxici8+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlc2NyaXB0aW9uX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRlc2NyaXB0aW9uX2lucHV0fTwvcD4NCgk8L2Rpdj4NCjxici8+DQo8cD57JHN1Ym1pdH0geyRhcHBseX0geyRjYW5jZWx9PC9wPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/editB.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7aWYgJGl0ZW1hbGlhc308c3BhbiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBmb250LXNpemU6IDgwJSI+eyRpdGVtYWxpYXN9PC9zcGFuPnsvaWZ9DQo8aDE+eyRlZGl0dGl0bGV9PC9oMT4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo8YnIvPjxici8+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBhcmVudF9sYWJlbH0qIDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGFyZW50X2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdmlkZW9pZF9sYWJlbH0qIDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdmlkZW9pZF9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlc2NyaXB0aW9uX2xhYmVsfSogOjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRkZXNjcmlwdGlvbl9pbnB1dH08L3A+DQoJPC9kaXY+DQo8YnIvPg0KPHA+eyRzdWJtaXR9IHskYXBwbHl9IHskY2FuY2VsfTwvcD4NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/search.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9e2lmICR3aGF0fTogeyR3aGF0fXsvaWZ9PC9oMj4KPHA+eyRzZWFyY2hmaWVsZH17JHN1Ym1pdH08L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_category.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskZGVzY3JpcHRpb25fbGFiZWx9PC90ZD48dGQ+eyRkZXNjcmlwdGlvbl9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRuYW1lX2xhYmVsfTwvdGQ+PHRkPnskbmFtZV9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRkYXRlX21vZGlmaWVkX2xhYmVsfTwvdGQ+PHRkPnskZGF0ZV9tb2RpZmllZF9pbnB1dH08L3RkPjwvdHI+CjwvdGFibGU+CjxwPnskc3VibWl0fTwvcD4=]]></data>
	</file>
	<file>
	  <filename>/templates/search_generalresults.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskbGV2ZWx0aXRsZX08L2gyPgo8dWwgY2xhc3M9ImN0bF9zZWFyY2hyZXN1bHRzIj4Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9CjxsaT57JGl0ZW0tPmRldGFpbGxpbmt9PC9saT4Key9mb3JlYWNofQo8L3VsPgp7aWYgJHBhZ2VtZW51fTxwPnskcGFnZW1lbnV9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_videos.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskdmlkZW9pZF9sYWJlbH08L3RkPjx0ZD57JHZpZGVvaWRfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskZGVzY3JpcHRpb25fbGFiZWx9PC90ZD48dGQ+eyRkZXNjcmlwdGlvbl9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRwYXJlbnRfbGFiZWx9PC90ZD48dGQ+eyRwYXJlbnRfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskbmFtZV9sYWJlbH08L3RkPjx0ZD57JG5hbWVfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskZGF0ZV9tb2RpZmllZF9sYWJlbH08L3RkPjx0ZD57JGRhdGVfbW9kaWZpZWRfaW5wdXR9PC90ZD48L3RyPgo8L3RhYmxlPgo8cD57JHN1Ym1pdH08L3A+]]></data>
	</file>
	<file>
	  <filename>/youtubeplayer.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogeW91dHViZXBsYXllcg0KIyBWZXJzaW9uOiAxLjAsIA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA4IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0InMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMNCiMgVGhpcyBtb2R1bGUgd2FzIGNyZWF0ZWQgd2l0aCBDVExNb2R1bGVNYWtlciAxLjguOS40DQojIENUTE1vZHVsZU1ha2VyIHdhcyBjcmVhdGVkIGJ5IFBpZXJyZS1MdWMgR2VybWFpbiBhbmQgaXMgcmVsZWFzZWQgdW5kZXIgR05VDQojIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY3RsbW9kdWxlbWFrZXINCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCmNsYXNzIHlvdXR1YmVwbGF5ZXIgZXh0ZW5kcyBDTVNNb2R1bGUNCnsNCgl2YXIgJGN1cnJlbnR0cmVlID0gZmFsc2U7DQoJdmFyICRjdXJyZW50cGFnZWluZGV4ID0gMTsNCgl2YXIgJHBsY3VycmVudCA9IGFycmF5KCk7DQoNCglmdW5jdGlvbiBHZXROYW1lKCkNCgl7DQoJCXJldHVybiAieW91dHViZXBsYXllciI7DQoJfQ0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBHZXRGcmllbmRseU5hbWUoKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUNCgkgICBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQicyBzaG93biBpbiB0aGUNCgkgICBBZG1pbiBNZW51cyBhbmQgc2VjdGlvbiBwYWdlcyAoaWYgdGhlIG1vZHVsZSBoYXMgYW4gYWRtaW4NCgkgICBjb21wb25lbnQpLg0KCSAgIA0KCSAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpOw0KCX0NCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldFZlcnNpb24oKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yDQoJICAgc29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgZm9yIGRlc2lnbmF0aW5nIGEgdmVyc2lvbi4NCgkgICBUaGUgQ01TIHdpbGwgdXNlIHRoaXMgdG8gaWRlbnRpZnkgd2hldGhlciBvciBub3QNCgkgICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQNCgkgICB0aGUgbW9kdWxlIHdpbGwgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHVwZ3JhZGUNCgkgICBpdHNlbGYgaWYgcmVxdWVzdGVkLgkgICANCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0VmVyc2lvbigpDQoJew0KCQlyZXR1cm4gIjEuMCI7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldERlcGVuZGVuY2llcygpDQoJICAgWW91ciBtb2R1bGUgbWF5IG5lZWQgYW5vdGhlciBtb2R1bGUgdG8gYWxyZWFkeSBiZSBpbnN0YWxsZWQNCgkgICBiZWZvcmUgeW91IGNhbiBpbnN0YWxsIGl0Lg0KCSAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIHRob3NlIGRlcGVuZGVuY2llcyBhbmQNCgkgICBtaW5pbXVtIHZlcnNpb24gbnVtYmVycyB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLg0KCSAgIA0KCSAgIEl0IHNob3VsZCByZXR1cm4gYW4gaGFzaCwgZWcuDQoJICAgcmV0dXJuIGFycmF5KCJzb21lbW9kdWxlIj0+IjEuMCIsICJvdGhlcm1vZHVsZSI9PiIxLjEiKTsNCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkNCgl7DQoJCXJldHVybiBhcnJheSgpOw0KCX0NCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgR2V0SGVscCgpDQoJICAgVGhpcyByZXR1cm5zIEhUTUwgaW5mb3JtYXRpb24gb24gdGhlIG1vZHVsZS4NCgkgICBUeXBpY2FsbHksIHlvdSJsbCB3YW50IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gb24gaG93IHRvDQoJICAgdXNlIHRoZSBtb2R1bGUuDQoJICAgDQoJICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0SGVscCgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoImhlbHAiKTsNCgl9DQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldEF1dGhvcigpDQoJICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUNCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0QXV0aG9yKCkNCgl7DQoJCXJldHVybiAiQnkgTWFydGluIChtdykiOw0KCQkvLyBvZiBjb3Vyc2UgeW91IG1heSBjaGFuZ2UgdGhpcywgYnV0IGl0IHdvdWxkIGJlIG5pY2UNCgkJLy8gdG8ga2VlcCBhIG1lbnRpb24gb2YgdGhlIENUTE1vZHVsZU1ha2VyIHNvbWV3aGVyZQ0KCX0NCg0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBHZXRBdXRob3JFbWFpbCgpDQoJICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUNCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4gSXQgaGVscHMgdXNlcnMNCgkgICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywNCgkgICBxdWVzdGlvbnMsIGNhc2VzIG9mIGJlZXIsIGFuZC9vciBsYXJnZSBzdW1zIG9mIG1vbmV5Lg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpDQoJew0KCQlyZXR1cm4gIiI7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIElzUGx1Z2luTW9kdWxlKCkNCgkgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvciBmYWxzZSwgZGVwZW5kaW5nIHVwb24NCgkgICB3aGV0aGVyIHVzZXJzIGNhbiBpbmNsdWRlIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yDQoJICAgdGVtcGxhdGUgdXNpbmcgYSBzbWFydHkgdGFnIG9mIHRoZSBmb3JtDQoJICAge2Ntc19tb2R1bGUgbW9kdWxlPSJQcm9kIiBwYXJhbTE9dmFsIHBhcmFtMj12YWwuLi59DQoJICAgDQoJICAgSWYgeW91ciBtb2R1bGUgZG9lcyBub3QgZ2V0IGluY2x1ZGVkIGluIHBhZ2VzIG9yDQoJICAgdGVtcGxhdGVzLCByZXR1cm4gImZhbHNlIiBoZXJlLg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpDQoJew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgSGFzQWRtaW4oKQ0KCSAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUsIGRlcGVuZGluZyBvbg0KCSAgIHdoZXRoZXIgeW91ciBtb2R1bGUgYWRkcyBhbnl0aGluZyB0byB0aGUgQWRtaW4gYXJlYSBvZg0KCSAgIHRoZSBzaXRlLiBGb3IgdGhlIHJlc3Qgb2YgdGhlc2UgY29tbWVudHMsIEkibGwgYmUgY2FsbGluZw0KCSAgIHRoZSBhZG1pbiBwYXJ0IG9mIHlvdXIgbW9kdWxlIHRoZSAiQWRtaW4gUGFuZWwiIGZvcg0KCSAgIHdhbnQgb2YgYSBiZXR0ZXIgdGVybS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gSGFzQWRtaW4oKSB7CXJldHVybiB0cnVlOwl9DQoJZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkge3JldHVybiAiY29udGVudCI7fQ0KCWZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7cmV0dXJuICR0aGlzLT5MYW5nKCJhZG1pbmRlc2NyaXB0aW9uIik7fQ0KDQoJZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCl7DQoJCXJldHVybiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbigieW91dHViZXBsYXllcl9ub3JtYWx1c2VyIikgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigieW91dHViZXBsYXllcl9hZHZhbmNlZCIpKTsNCgl9DQoJDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBNb2R1bGUgQ29uc3RydWN0b3IgDQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiB5b3V0dWJlcGxheWVyKCkNCgl7DQoJCWdsb2JhbCAkZ0NtczsNCiAgICAJJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7DQoJCSRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCJ5b3V0dWJlcGxheWVyX2JyZWFkY3J1bWJzIiwgYXJyYXkoJiR0aGlzLCJmdW5jdGlvbl9tb2RicmVhZGNydW1icyIpKTsNCgkJJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oInlvdXR1YmVwbGF5ZXJfZ2V0X2xldmVsaXRlbSIsIGFycmF5KCYkdGhpcywiZnVuY3Rpb25fZ2V0X2xldmVsaXRlbSIpKTsNCgkJcGFyZW50OjpDTVNNb2R1bGUoKTsNCgl9DQoJDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBTZXRQYXJhbWV0ZXJzKCkNCgkgICBUaGlzIGZ1bmN0aW9uIGVuYWJsZXMgeW91IHRvIGNyZWF0ZSBtYXBwaW5ncyBmb3INCgkgICB5b3VyIG1vZHVsZSB3aGVuIHVzaW5nICJQcmV0dHkgVXJscyIuDQoJICAgDQoJICAgVHlwaWNhbGx5LCBtb2R1bGVzIGNyZWF0ZSBpbnRlcm5hbCBsaW5rcyB0aGF0IGhhdmUNCgkgICBiaWcgdWdseSBzdHJpbmdzIGFsb25nIHRoZSBsaW5lcyBvZjoNCgkgICBpbmRleC5waHA/bWFjdD1Nb2ROYW1lLGNudG50MDEsYWN0aW9uTmFtZSwwJmNudG50MDFwYXJhbTE9MSZjbnRudDAxcGFyYW0yPTImY250bnQwMXJldHVybmlkPTMNCgkgICANCgkgICBZb3UgbWlnaHQgcHJlZmVyIHRoZXNlIHRvIGxvb2sgbGlrZToNCgkgICAvTW9kdWxlRnVuY3Rpb24vMi8zDQoJICAgDQoJICAgVG8gZG8gdGhpcywgeW91IGhhdmUgdG8gcmVnaXN0ZXIgcm91dGVzIGFuZCBtYXANCgkgICB5b3VyIHBhcmFtZXRlcnMgaW4gYSB3YXkgdGhhdCB0aGUgQVBJIHdpbGwgYmUgYWJsZQ0KCSAgIHRvIHVuZGVyc3RhbmQuDQoNCgkgICBBbHNvIG5vdGUgdGhhdCBhbnkgY2FsbHMgdG8gQ3JlYXRlTGluayB3aWxsIG5lZWQgdG8NCgkgICBiZSB1cGRhdGVkIHRvIHBhc3MgdGhlIHByZXR0eSB1cmwgcGFyYW1ldGVyLg0KCSAgIA0KCSAgIFNpbmNlIHRoZSBTa2VsZXRvbiBkb2VzbiJ0IHJlYWxseSBjcmVhdGUgYW55IGxpbmtzLA0KCSAgIHRoZSBzZWN0aW9uIGJlbG93IGlzIGNvbW1lbnRlZCBvdXQsIGJ1dCB5b3UgY2FuDQoJICAgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgcHJldHR5IHVybHMuDQoJICAgDQoJICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkNCgl7DQoNCgkJLy8gdGhlc2UgYXJlIGZvciBpbnRlcm5hbCBwcmV0dHkgVVJMUy4NCgkJLy8geW91IG1heSBjaGFuZ2UgdGhlc2UsIGJ1dCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gY2hhbmdlIHRoZSBCdWlsZFByZXR0eVVSTHMgZnVuY3Rpb24gYmVsb3cgYWNjb3JkaW5nbHkNCgkJLy8gc2VlIEZBUSBmb3IgbW9yZSBpbmZvIG9uIHRoaXMNCgkJJGRlZmFjdCA9IGFycmF5KCJhY3Rpb24iPT4iZGVmYXVsdCIpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1t5WV1vdXR1YmVwbGF5ZXJcLyhbUXFddWVyeSlcLyg/UDxxdWVyeT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW3lZXW91dHViZXBsYXllclwvKFtRcV11ZXJ5KVwvKD9QPHF1ZXJ5PlswLTldKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW3lZXW91dHViZXBsYXllclwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW3lZXW91dHViZXBsYXllclwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1t5WV1vdXR1YmVwbGF5ZXJcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1t5WV1vdXR1YmVwbGF5ZXJcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW3lZXW91dHViZXBsYXllclwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhcmVudD5bXlwvXSspXC8oP1A8cGFnZWluZGV4PlswLTldKylcLyg/UDxuYnBlcnBhZ2U+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQ0KCQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7DQoJCQ0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJhY3Rpb24iLCAiZGVmYXVsdCIsICR0aGlzLT5MYW5nKCJwaGVscF9hY3Rpb24iKSk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoIndoYXQiLCAiIiwgJHRoaXMtPkxhbmcoInBoZWxwX3doYXQiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJ3aGF0IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJhbGlhcyIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfYWxpYXMiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJhbGlhcyIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigic2hvd2RlZmF1bHQiLCBmYWxzZSwgJHRoaXMtPkxhbmcoInBoZWxwX3Nob3dkZWZhdWx0IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgic2hvd2RlZmF1bHQiLENMRUFOX0lOVCk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInBhcmVudCIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfcGFyZW50IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgicGFyZW50IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJsaW1pdCIsIDAsICR0aGlzLT5MYW5nKCJwaGVscF9saW1pdCIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoImxpbWl0IixDTEVBTl9JTlQpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJuYnBlcnBhZ2UiLCAwLCAkdGhpcy0+TGFuZygicGhlbHBfbmJwZXJwYWdlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgibmJwZXJwYWdlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJvcmRlcmJ5IiwgMCwgJHRoaXMtPkxhbmcoInBoZWxwX29yZGVyYnkiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJvcmRlcmJ5IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJkZXRhaWxwYWdlIiwgIiIsICR0aGlzLT5MYW5nKCJwaGVscF9kZXRhaWxwYWdlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiZGV0YWlscGFnZSIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigicmFuZG9tIiwgMCwgJHRoaXMtPkxhbmcoInBoZWxwX3JhbmRvbSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInJhbmRvbSIsQ0xFQU5fSU5UKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigibGlzdHRlbXBsYXRlIiwgIiIsICR0aGlzLT5sYW5nKCJwaGVscF9saXN0dGVtcGxhdGUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJsaXN0dGVtcGxhdGUiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoImZpbmFsdGVtcGxhdGUiLCAiIiwgJHRoaXMtPmxhbmcoInBoZWxwX2ZpbmFsdGVtcGxhdGUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJmaW5hbHRlbXBsYXRlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJmb3JjZWxpc3QiLCAiMCIsICR0aGlzLT5sYW5nKCJwaGVscF9mb3JjZWxpc3QiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJmb3JjZWxpc3QiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoImlubGluZSIsIDAsICR0aGlzLT5sYW5nKCJwaGVscF9pbmxpbmUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJpbmxpbmUiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInNlYXJjaG1vZGUiLCAiYWR2YW5jZWQiLCAkdGhpcy0+bGFuZygicGhlbHBfc2VhcmNobW9kZSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInNlYXJjaG1vZGUiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInF1ZXJ5IiwgMCwgJHRoaXMtPmxhbmcoInBoZWxwX3F1ZXJ5IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgicXVlcnkiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInRvYWN0aW9uIiwgIiIsICR0aGlzLT5MYW5nKCJwaGVscF90b2FjdGlvbiIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInRvYWN0aW9uIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgicGFnZWluZGV4IixDTEVBTl9JTlQpOw0KDQoJCS8vIGZvciB0aGUgc2VhcmNoIGZvcm0gKHRyaWNrIGZyb20gaWt1bGlzKSA6DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUC4iL2RhdGVfLiovIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAuIi9maWVsZF8uKi8iLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUC4iL2NvbXBhcmVfLiovIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgic3VibWl0c2VhcmNoIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgic2VhcmNoZmllbGQiLENMRUFOX1NUUklORyk7DQoJCQ0KCX0NCg0KICAgIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24oJGV2ZW50bmFtZSkNCiAgICB7DQoJCSRldmVudG5hbWUgPSBzdHJfcmVwbGFjZSgieW91dHViZXBsYXllciIsICIiLCAkZXZlbnRuYW1lKTsNCgkJcmV0dXJuICR0aGlzLT5sYW5nKCJldmVudGRlc2MiLiRldmVudG5hbWUpOw0KICAgIH0NCiAgICANCglmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KCXsNCgkJcmV0dXJuICR0aGlzLT5MYW5nKCJwb3N0aW5zdGFsbCIpOw0KCX0NCglmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoInBvc3R1bmluc3RhbGwiKTsNCgl9DQoJZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoInJlYWxseV91bmluc3RhbGwiKTsNCgl9DQoNCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgSW5zdGFsbCgpDQoJICAgV2hlbiB5b3VyIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHlvdSBtYXkgbmVlZCB0byBkbyBzb21lDQoJICAgc2V0dXAuIFR5cGljYWwgdGhpbmdzIHRoYXQgaGFwcGVuIGhlcmUgYXJlIHRoZSBjcmVhdGlvbg0KCSAgIGFuZCBwcmVwb3B1bGF0aW9uIG9mIGRhdGFiYXNlIHRhYmxlcywgZGF0YWJhc2Ugc2VxdWVuY2VzLA0KCSAgIHBlcm1pc3Npb25zLCBwcmVmZXJlbmNlcywgZXRjLg0KCSAgIAkgICANCgkgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIGNyZWF0aW9uIG9mIGRhdGFiYXNlIHRhYmxlcywNCgkgICBjaGVjayBvdXQgdGhlIEFET0RCIERhdGEgRGljdGlvbmFyeSBwYWdlIGF0DQoJICAgaHR0cDovL3BocGxlbnMuY29tL2xlbnMvYWRvZGIvZG9jcy1kYXRhZGljdC5odG0NCgkgICANCgkgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYSBzdHJpbmcgaW4gY2FzZSBvZiBhbnkgZXJyb3IsDQoJICAgYW5kIENNUyB3aWxsIG5vdCBjb25zaWRlciB0aGUgbW9kdWxlIGluc3RhbGxlZC4NCgkgICBTdWNjZXNzZnVsIGluc3RhbGxzIHNob3VsZCByZXR1cm4gRkFMU0Ugb3Igbm90aGluZyBhdCBhbGwuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIEluc3RhbGwoKQ0KCXsNCgkJZ2xvYmFsICRnQ21zOw0KCQlyZXF1aXJlICJtZXRob2QuaW5zdGFsbC5waHAiOw0KCX0NCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgVW5pbnN0YWxsKCkNCgkgICBTb21ldGltZXMsIGFuIGV4Y2VwdGlvbmFsbHkgdW5lbmxpZ2h0ZW5lZCBvciBpZ25vcmFudA0KCSAgIGFkbWluIHdpbGwgd2lzaCB0byB1bmluc3RhbGwgeW91ciBtb2R1bGUuIFdoaWxlIGl0DQoJICAgd291bGQgYmUgYmVzdCB0byBsYXkgaW50byB0aGVzZSBpZGlvdHMgd2l0aCBhIGNsdWVzdGljaywNCgkgICB3ZSB3aWxsIGRvIHRoZSBtYWduYW5pbW91cyB0aGluZyBhbmQgcmVtb3ZlIHRoZSBtb2R1bGUNCgkgICBhbmQgY2xlYW4gdXAgdGhlIGRhdGFiYXNlLCBwZXJtaXNzaW9ucywgYW5kIHByZWZlcmVuY2VzDQoJICAgdGhhdCBhcmUgc3BlY2lmaWMgdG8gaXQuDQoJICAgVGhpcyBpcyB0aGUgbWV0aG9kIHdoZXJlIHdlIGRvIHRoaXMuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIFVuaW5zdGFsbCgpDQoJew0KCQlnbG9iYWwgJGdDbXM7DQoJCXJlcXVpcmUgIm1ldGhvZC51bmluc3RhbGwucGhwIjsNCgl9DQoNCg0KICAgIGZ1bmN0aW9uIFNlYXJjaFJlc3VsdCgkcmV0dXJuaWQsICRpdGVtaWQsICRsZXZlbCA9ICIiKQ0KICAgIHsNCgkJJHJlc3VsdCA9IGFycmF5KCk7DQoJCSR3YW50ZWRwYXJhbSA9IGZhbHNlOw0KCQkkbmV3cGFyYW1zID0gYXJyYXkoKTsNCgkJaWYoJGxldmVsID09ICJ2aWRlb3MiKXsNCgkJCS8vIHdlIHNlZWsgYW4gZWxlbWVudCBvZiB0aGUgbGFzdCBsZXZlbCwgYW5kIHdpbGwgZGlzcGxheSB0aGUgZGV0YWlsIHZpZXcNCgkJCSR3YW50ZWRwYXJhbSA9ICJhbGlhcyI7DQoJCX1lbHNlew0KCQkJaWYoJG5ld3BhcmFtc1sid2hhdCJdID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJGxldmVsKSl7DQoJCQkvLyB3ZSBzZWVrIGFuIGVsZW1lbnQgb2YgYW5vdGhlciBsZXZlbCwgYW5kIHdpbGwgZGlzcGxheSB0aGUgbGlzdCB2aWV3IG9mIGl0cyBjaGlsZHJlbg0KCQkJCSR3YW50ZWRwYXJhbSA9ICJwYXJlbnQiOw0KCQkJfQ0KCQl9DQoJCWlmICgkd2FudGVkcGFyYW0pew0KCQkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfIi4kbGV2ZWw7DQoJCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCQkkcXVlcnkgPSAiU0VMRUNUIG5hbWUsIGFsaWFzIEZST00gJHRhYmxlbmFtZSBXSEVSRSBpZCA9ID8iOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkaXRlbWlkICkgKTsNCgkJCWlmICgkZGJyZXN1bHQpew0KCQkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7DQoJCQkJJG5ld3BhcmFtc1skd2FudGVkcGFyYW1dID0gJHJvd1siYWxpYXMiXTsNCg0KCQkJCS8vMCBwb3NpdGlvbiBpcyB0aGUgcHJlZml4IGRpc3BsYXllZCBpbiB0aGUgbGlzdCByZXN1bHRzLg0KCQkJCSRyZXN1bHRbMF0gPSAkdGhpcy0+R2V0RnJpZW5kbHlOYW1lKCk7DQoNCgkJCQkvLzEgcG9zaXRpb24gaXMgdGhlIHRpdGxlDQoJCQkJJHJlc3VsdFsxXSA9ICRyb3dbIm5hbWUiXTsNCgkJDQoJCQkJLy8yIHBvc2l0aW9uIGlzIHRoZSBVUkwgdG8gdGhlIHRpdGxlLg0KCQkJCSRyZXN1bHRbMl0gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJHJldHVybmlkLCAiIiwgJG5ld3BhcmFtcywgIiIsIHRydWUsIGZhbHNlLCAiIiwgZmFsc2UsICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9DQoJDQoJZnVuY3Rpb24gU2VhcmNoUmVpbmRleCgmJG1vZHVsZSkNCiAgICB7DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaG1vZHVsZV9pbmRleF9jYXRlZ29yeSIsZmFsc2UpKXsNCgkJCSRpdGVtbGlzdCA9ICR0aGlzLT5nZXRfbGV2ZWxfY2F0ZWdvcnkoKTsNCgkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJJG1vZHVsZS0+QWRkV29yZHMoJHRoaXMtPkdldE5hbWUoKSwgJGl0ZW0tPmlkLCAiY2F0ZWdvcnkiLCAkdGV4dCwgTlVMTCk7DQoJCQl9DQoJCX0NCgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaG1vZHVsZV9pbmRleF92aWRlb3MiLGZhbHNlKSl7DQoJCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X2xldmVsX3ZpZGVvcygpOw0KCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pew0KCQkJCSR0ZXh0ID0gIiRpdGVtLT5uYW1lIjsNCgkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJ2aWRlb3MiLCAkdGV4dCwgTlVMTCk7DQoJCQl9DQoJCX0NCgkJDQogICAgfQkNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpOT1QgUEFSVCBPRiBUSEUgTk9STUFMIE1PRFVMRSBBUEkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQogICAgZnVuY3Rpb24gZ2V0RGVmYXVsdFRlbXBsYXRlcygpew0KICAgIAkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSB0ZW1wbGF0ZXMgdGhhdCBhcmUgc2VsZWN0ZWQgYXMgZGVmYXVsdCAoanVzdCBzbyB0aGF0IHdlIGRvbid0IGRlbGV0ZSB0aGVtKQ0KCSAgICRyZXN1bHQgPSBhcnJheSgpOw0KCSAgICRyZXN1bHRbXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmaW5hbHRlbXBsYXRlIik7DQoJICAgJHJlc3VsdFtdID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIpOw0KCSAgICRyZXN1bHRbXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfY2F0ZWdvcnkiKTsNCgkgICAkcmVzdWx0W10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlX3ZpZGVvcyIpOw0KCSAgIHJldHVybiAkcmVzdWx0Ow0KICAgIH0NCgkNCiAgICBmdW5jdGlvbiBnZXRPcmRlclR5cGUoJHdoYXQpew0KCQkvLyByZXR1cm5zIHdoZXRoZXIgYSBsZXZlbCBpcyBvcmRlcmVkIGJ5IHBhcmVudCBvciBub3QNCgkJJHJldHVybiA9IGFycmF5KCJjYXRlZ29yeSI9PnRydWUsInZpZGVvcyI9PnRydWUpOw0KCQlyZXR1cm4gKGlzc2V0KCRyZXR1cm5bJHdoYXRdKT8kcmV0dXJuWyR3aGF0XTpmYWxzZSk7DQogICAgfQ0KDQoJZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpew0KCQlnbG9iYWwgJGdDbXM7DQoJCQ0KCQlzd2l0Y2goJGFjdGlvbil7DQoJCQljYXNlICJsaW5rIjoNCgkJCQkkdG9hY3Rpb24gPSBpc3NldCgkcGFyYW1zWyJ0b2FjdGlvbiJdKT8kcGFyYW1zWyJ0b2FjdGlvbiJdOiJkZWZhdWx0IjsNCgkJCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwkdG9hY3Rpb24sJHJldHVybmlkLCIiLCRwYXJhbXMsIiIsdHJ1ZSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJicmVhZGNydW1icyI6DQoJCQkJJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7DQoJCQkJJHRoaXMtPmZ1bmN0aW9uX21vZGJyZWFkY3J1bWJzKCRwYXJhbXMsICRzbWFydHkpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiY2hhbmdlcHJlZmVyZW5jZXMiOg0KCQkJCWlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ5b3V0dWJlcGxheWVyX2FkdmFuY2VkIikpew0KCQkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygiZXJyb3JfZGVuaWVkIikpKTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJCSRwcmVmcyA9IGFycmF5KCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsInVzZV9oaWVyYXJjaHkiLCJvcmRlcmJ5bmFtZSIsImRpc3BsYXlfZmlsdGVyIiwiZGlzcGxheV9pbnN0YW50c2VhcmNoIiwiZGlzcGxheV9pbnN0YW50c29ydCIsImVkaXRhYmxlX2FsaWFzZXMiLCJhdXRvaW5jcmVtZW50X2FsaWFzIiwiYWxsb3dfc3FsIiwiZm9yY2VfbGlzdCIsImRlbGV0ZV9maWxlcyIsInRhYmRpc3BsYXlfdGVtcGxhdGVzIiwidGFiZGlzcGxheV9maWVsZG9wdGlvbnMiLCJ0YWJkaXNwbGF5X3F1ZXJpZXMiLCJzaG93dGh1bWJuYWlscyIsImZlX3d5c2l3eWciLCJmZV9kZWNvZGVlbnRpdGllcyIsImZlX2FsbG93ZmlsZXMiLCJmZV9hbGxvd25hbWVjaGFuZ2UiLCJmZV9hbGxvd2FkZG5ldyIsImZlX3VzZWNhcHRjaGEiLCJhbGxvd19jb21wbGV4X29yZGVyIiwibG9hZF9uZXh0cHJldmlvdXMiLCJsb2FkX25iY2hpbGRyZW4iLCJ1c2Vfc2Vzc2lvbiIsInJldHJpZXZldHJlZSIpOw0KCQkJCWZvcmVhY2goJHRoaXMtPmdldF9sZXZlbGFycmF5KCkgYXMgJGxldmVsKXsNCgkJCQkJJHByZWZzW10gPSAibmV3aXRlbXNmaXJzdF8iLiRsZXZlbDsNCgkJCQkJJHByZWZzW10gPSAic2VhcmNobW9kdWxlX2luZGV4XyIuJGxldmVsOw0KCQkJCQkkcHJlZnNbXSA9ICJ0YWJkaXNwbGF5XyIuJGxldmVsOw0KCQkJCX0NCgkJCQlmb3JlYWNoKCRwcmVmcyBhcyAkcHJlZikJJHRoaXMtPlNldFByZWZlcmVuY2UoJHByZWYsIGlzc2V0KCRwYXJhbXNbJHByZWZdKSk7DQoJCQkJaWYoaXNzZXQoJHBhcmFtc1siZmVfYWZ0ZXJzdWJtaXQiXSkpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJmZV9hZnRlcnN1Ym1pdCIsICRwYXJhbXNbImZlX2FmdGVyc3VibWl0Il0pOw0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbImZlX21heGZpbGVzaXplIl0pKQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiZmVfbWF4ZmlsZXNpemUiLCAkcGFyYW1zWyJmZV9tYXhmaWxlc2l6ZSJdKTsNCgkJCQkkbWF4c2hvd25wYWdlcyA9IChpbnQpJHBhcmFtc1sibWF4c2hvd25wYWdlcyJdOw0KCQkJCSRhZG1pbnBhZ2VzID0gKGludCkkcGFyYW1zWyJhZG1pbnBhZ2VzIl07DQoJCQkJZm9yZWFjaCgkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSBhcyAkbGV2ZWwpew0KCQkJCQkkbmJwZXJwYWdlID0gKGludCkgKGlzc2V0KCRwYXJhbXNbJGxldmVsLiJfcGFnaW5hdGlvbiJdKT8kcGFyYW1zWyRsZXZlbC4iX3BhZ2luYXRpb24iXTowKTsNCgkJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoJGxldmVsLiJfcGFnaW5hdGlvbiIsICRuYnBlcnBhZ2UpOw0KCQkJCX0NCgkJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgibWF4c2hvd25wYWdlcyIsICRtYXhzaG93bnBhZ2VzKTsNCgkJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiYWRtaW5wYWdlcyIsICRhZG1pbnBhZ2VzKTsNCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJwcmVmZXJlbmNlcyIsICJtb2R1bGVfbWVzc2FnZSI9PiR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikpKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgImNoYW5nZWRlZnRlbXBsYXRlcyI6DQoJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJICAgIGlmKCRrZXkgIT0gInN1Ym1pdCIpCSAgICR0aGlzLT5zZXRQcmVmZXJlbmNlKCRrZXksICR2YWx1ZSk7DQoJCQkJfQ0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+InRlbXBsYXRlcyIsICJtb2R1bGVfbWVzc2FnZSI9PiR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikpKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgImRlbGV0ZXRwbCI6DQoJCQkJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIj0+InRlbXBsYXRlcyIpOw0KCQkJCSRkZWZ0ZW1wbGF0ZXMgPSAkdGhpcy0+Z2V0RGVmYXVsdFRlbXBsYXRlcygpOw0KCQkJICAgIGlmKGlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgJiYgIWluX2FycmF5KCRwYXJhbXNbInRwbG5hbWUiXSwgJGRlZnRlbXBsYXRlcykpew0KCQkJCSAgICBpZigkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJHBhcmFtc1sidHBsbmFtZSJdKSkJICAgJG5ld3BhcmFtc1sibW9kdWxlX21lc3NhZ2U+Il0gPSAkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpOw0KCQkJCX0NCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgImRlbGV0ZXF1ZXJ5IjoNCgkJCQkkbmV3cGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiPT4icXVlcmllcyIpOw0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbInF1ZXJ5aWQiXSkpew0KCQkJCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCQkJCWlmKCRkYi0+RXhlY3V0ZSgiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3NhdmVkX3F1ZXJpZXMgV0hFUkUgaWQ9PyBMSU1JVCAxIiwgYXJyYXkoJHBhcmFtc1sicXVlcnlpZCJdKSkpew0KCQkJCQkJJG5ld3BhcmFtc1sibW9kdWxlX21lc3NhZ2UiXSA9ICR0aGlzLT5MYW5nKCJtZXNzYWdlX2RlbGV0ZWQiKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgInRlc3RxdWVyeSI6DQoJCQkJaWYoaXNzZXQoJHBhcmFtc1sicXVlcnlpZCJdKSAmJiAkcXVlcnkgPSAkdGhpcy0+Z2V0X3F1ZXJpZXMoYXJyYXkoImlkIj0+JHBhcmFtc1sicXVlcnlpZCJdKSkpew0KCQkJCQkkcXVlcnkgPSAkcXVlcnlbMF07DQoJCQkJCWVjaG8gIjxwPjxiPiIuJHRoaXMtPkxhbmcoInF1ZXJ5IikuIjo8L2I+ICIuJHF1ZXJ5LT5uYW1lOw0KCQkJCQlpZigkcXVlcnktPm9yZGVyICE9ICIiKQllY2hvICIgT1JERVIgQlkgIi4kcXVlcnktPm9yZGVyOw0KCQkJCQllY2hvICI8L3A+IjsNCgkJCQkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiRxdWVyeS0+d2hhdDsNCgkJCQkJJGl0ZW1saXN0ID0gJHRoaXMtPiRnZXRmdW5jdGlvbihhcnJheSgpLCBmYWxzZSwgIiIsICIiLCAwLCAwLCAkcXVlcnktPndoZXJlY2xhdXNlLCAkcXVlcnktPndoZXJldmFsdWVzLCAoJHF1ZXJ5LT5xdWVyeW9yZGVyID09ICIiP2ZhbHNlOiRxdWVyeS0+cXVlcnlvcmRlcikpOw0KCQkJCQllY2hvICI8cD48Yj4iLiR0aGlzLT5MYW5nKCJyZXN1bHRzIikuIiAoIi5jb3VudCgkaXRlbWxpc3QpLiIpIDo8L2I+PC9wPiI7DQoJCQkJCWVjaG8gIjx1bD4iOw0KCQkJCQlmb3JlYWNoKCRpdGVtbGlzdCBhcyAkaXRlbSkJZWNobyAiPGxpPiIuJGl0ZW0tPm5hbWUuIjwvbGk+IjsNCgkJCQkJZWNobyAiPC91bD4iOw0KCQkJCX0NCgkJCQllY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgbGFuZygiYmFjayIpLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJxdWVyaWVzIikpLiI8L3A+IjsNCgkJCQlicmVhazsNCgkJCQkJDQoNCgkJCWNhc2UgImRlZmF1bHQiOg0KCQkJZGVmYXVsdDoNCgkJCQlwYXJlbnQ6OkRvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsNCgkJCQlicmVhazsNCgkJfQ0KDQoNCgl9DQoJZnVuY3Rpb24gcGxjcmVhdGVhbGlhcygkbmFtZSl7DQoJCS8vIHRyYW5zZm9ybXMgJG5hbWUgaW50byBhIHVybC1mcmllbmRseSBhbGlhcw0KCQkNCgkJLy8gYXMgYSBzdWdnZXN0aW9uIGZyb20gQU1ULCB0aGUgZmlyc3QgcGFydCBkZWFscyB3aXRoIHNtYXJ0IHF1b3Rlcw0KIAkJJHNlYXJjaCA9IGFycmF5KGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDk4KSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OTkpLA0KCQkJCQkJICBjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5YyksDQoJCQkJCQkgIGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDlkKSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OTMpLA0KCQkJCQkJICBjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5NCkpOw0KIAkJJG5hbWUgPSBzdHJfcmVwbGFjZSgkc2VhcmNoLCAiIiwgJG5hbWUpOw0KCQkNCiAJCS8vIHRoZSBzZWNvbmQgcGFydCB1c2VzIHRoZSBjbXMgdmVyc2lvbg0KIAkJJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkbmFtZSwgZmFsc2UpOw0KIAkJcmV0dXJuICRhbGlhczsNCgl9DQoNCglmdW5jdGlvbiBjaGVja2FsaWFzKCRkYnRhYmxlLCAkYWxpYXMsICRpdGVtaWQ9ZmFsc2UsICRpZGZpZWxkPSJpZCIsICRhbGlhc2ZpZWxkPSJhbGlhcyIpew0KCQkvLyBjaGVja3MgaWYgdGhpcyBhbGlhcyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgbGV2ZWwNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAiLiRpZGZpZWxkLiIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4kZGJ0YWJsZS4iIFdIRVJFICIuJGFsaWFzZmllbGQuIiA9ID8iOw0KCQlpZigkaXRlbWlkKSAkcXVlcnkgLj0gIiBBTkQgIi4kaWRmaWVsZC4iIT0iLiRpdGVtaWQ7DQoJCSRkYiA9ICR0aGlzLT5HZXREYigpOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRhbGlhcykpOw0KCQkkdGFyZ2V0aWQgPSAwOw0KCQlpZigkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgJHRhcmdldGlkID0gJHJvd1siaWQiXTsNCgkJcmV0dXJuICgkdGFyZ2V0aWQgPT0gMCk7DQoJfQ0KCWZ1bmN0aW9uIEJ1aWxkUHJldHR5VXJscygkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpew0KCQkvLyB0cmFuc2Zvcm1zIGdpdmVuIHBhcmFtcyBpbnRvIGEgcHJldHR5IHVybA0KCQkkcHJldHR5dXJsID0gJHRoaXMtPkdldE5hbWUoKS4iLyI7DQoJCWlmKGlzc2V0KCRwYXJhbXNbInF1ZXJ5Il0pKXsNCgkJCSRwcmV0dHl1cmwgLj0gInF1ZXJ5LyIuJHBhcmFtc1sicXVlcnkiXTsJDQoJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1siYWxpYXMiXSkpew0KCQkJJHByZXR0eXVybCAuPSAiZGV0YWlsLyIuJHBhcmFtc1siYWxpYXMiXTsNCgkJfWVsc2VpZihpc3NldCgkcGFyYW1zWyJwYXJlbnQiXSkpew0KCQkJJHByZXR0eXVybCAuPSAkcGFyYW1zWyJ3aGF0Il0uIi8iLiRwYXJhbXNbInBhcmVudCJdOw0KCQl9ZWxzZXsNCgkJCSRwcmV0dHl1cmwgLj0gJHBhcmFtc1sid2hhdCJdOw0KCQl9DQoJCWlmKCFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiBpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSkgJiYgaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkkcHJldHR5dXJsIC49ICIvIi4kcGFyYW1zWyJwYWdlaW5kZXgiXS4iLyIuJHBhcmFtc1sibmJwZXJwYWdlIl07DQoJCSRwcmV0dHl1cmwgLj0gIi8iLiRyZXR1cm5pZDsNCgkJcmV0dXJuICRwcmV0dHl1cmw7DQoJfQ0KCWZ1bmN0aW9uIERvQ2hlY2tib3hlcygkaWQsICRuYW1lLCAkY2hvaWNlcywgJHNlbGVjdGVkPWFycmF5KCksICRkZWxpbWl0ZXI9Ijxici8+Iil7DQoJCS8vIHByZXR0eSBtdWNoIGxpa2UgQ3JlYXRlSW5wdXRSYWRpb0dyb3VwLCBidXQgdXNpbmcgY2hlY2tib3hlcw0KCQlpZighaXNfYXJyYXkoJHNlbGVjdGVkKSkJJHNlbGVjdGVkID0gYXJyYXkoKTsNCgkJJG91dHB1dCA9ICIiOw0KCQlmb3JlYWNoKCRjaG9pY2VzIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkkb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJG5hbWUuIltdIiwgJHZhbHVlLCAoaW5fYXJyYXkoJHZhbHVlLCAkc2VsZWN0ZWQpPyR2YWx1ZTowKSkuIiAiLiRrZXkuJGRlbGltaXRlcjsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJZnVuY3Rpb24gcGFyc2VrZXl3b3Jkcygkc3RyaW5nKXsNCgkJLy8gY3V0cyB0aGUgc2VhcmNod29yZHMgb2YgdGhlIHNlYXJjaCBmb3JtIGludG8gcGllY2VzDQoJCS8vIGJhc2NpYWxseSwgdGhpcyBleHBsb2RlcyB0aGUgJHN0cmluZywgYnV0IHRha2VzIG5vdGljZSBvZiB0aGUgcXVvdGVzDQoJCQ0KCQkkaW5zaWRlID0gKHN1YnN0cigkc3RyaW5nLDAsMSkgPT0gJyInKTsNCgkJJHBhcnRzID0gZXhwbG9kZSgnIicsJHN0cmluZyk7DQoJDQoJCWlmKGNvdW50KCRwYXJ0cykgPCAyKXsNCgkJCWlmKCRpbnNpZGUpew0KCQkJCXJldHVybiBhcnJheShzdHJfcmVwbGFjZSgnIicsIiIsJHN0cmluZykpOw0KCQkJfWVsc2V7DQoJCQkJcmV0dXJuIGV4cGxvZGUoIiAiLCRzdHJpbmcpOw0KCQkJfQ0KCQl9DQoJDQoJCSRrZXl3b3JkcyA9IGFycmF5KCk7DQoJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsNCgkJCWlmKCRwYXJ0ICE9ICIiKXsNCgkJCQlpZigkaW5zaWRlKXsNCgkJCQkJJGtleXdvcmRzW10gPSAkcGFydDsNCgkJCQl9ZWxzZXsNCgkJCQkJJHdvcmRzID0gZXhwbG9kZSgiICIsdHJpbSgkcGFydCkpOw0KCQkJCQlmb3JlYWNoKCR3b3JkcyBhcyAkd29yZCl7DQoJCQkJCQlpZih0cmltKCR3b3JkKSAhPSAiIikJJGtleXdvcmRzW10gPSAkd29yZDsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkaW5zaWRlID0gISRpbnNpZGU7DQoJCQl9DQoJCX0NCgkJcmV0dXJuICRrZXl3b3JkczsNCgl9DQoNCg0KCWZ1bmN0aW9uIGdldF9sZXZlbGFycmF5KCl7DQoJCS8vIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIGxldmVscyAodG9wIHRvIGJvdHRvbSkNCgkJcmV0dXJuIGFycmF5KCJjYXRlZ29yeSIsInZpZGVvcyIpOw0KCX0NCg0KCWZ1bmN0aW9uIGdldF9tb2R1bGVoaWVyYXJjaHkoJGxldmVsPWZhbHNlKXsNCgkJJGhpZXJhcmNoeSA9IGFycmF5KCk7DQoJCQkkaGllcmFyY2h5WzFdID0gImNhdGVnb3J5IjsNCgkJCSRoaWVyYXJjaHlbMl0gPSAidmlkZW9zIjsNCgkJcmV0dXJuICRoaWVyYXJjaHk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldF9sZXZlbHNlYXJjaGZpZWxkcygkbGV2ZWwpew0KCQkvLyByZXR1cm5zIHRoZSBmaWVsZHMgb2YgYSBsZXZlbCB3aGljaCBhcmUgc2VhcmNoYWJsZSAoZm9yIHRoZSBzaW1wbGUgc2VhcmNoIGFjdGlvbikNCgkJJGZpZWxkcyA9IGFycmF5KCk7DQoJCXN3aXRjaCgkbGV2ZWwpew0KCQkJY2FzZSAiY2F0ZWdvcnkiOg0KCQkJCSRmaWVsZHMgPSBhcnJheSgiZGVzY3JpcHRpb24iLCJuYW1lIik7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJ2aWRlb3MiOg0KCQkJCSRmaWVsZHMgPSBhcnJheSgidmlkZW9pZCIsImRlc2NyaXB0aW9uIiwibmFtZSIpOw0KCQkJCWJyZWFrOw0KCQkJCQkJDQoJCX0NCgkJcmV0dXJuICRmaWVsZHM7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldF9sZXZlbGZpbGVmaWVsZHMoJGxldmVsKXsNCgkJLy8gcmV0dXJucyB0aGUgZmlsZSBmaWVsZHMgb2YgYSBsZXZlbA0KCQkkZmllbGRzID0gYXJyYXkoKTsNCgkJc3dpdGNoKCRsZXZlbCl7DQoJCQljYXNlICJjYXRlZ29yeSI6DQoJCQkJJGZpZWxkcyA9IGFycmF5KCk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJ2aWRlb3MiOg0KCQkJCSRmaWVsZHMgPSBhcnJheSgpOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoNCgkJCSRmaWVsZHMgPSBhcnJheSgpOw0KCQl9DQoJCXJldHVybiAkZmllbGRzOw0KCX0NCgkNCglmdW5jdGlvbiBnZXRfbGV2ZWxhZGRmaWxlc2ZpZWxkcygkbGV2ZWwpew0KCQkvLyByZXR1cm5zIHRoZSAidW5kZWZpbmVkIGFtb3VudCBvZiBmaWxlcyIgZmlsZWRzIG9mIGEgbGV2ZWwNCgkJJGZpZWxkcyA9IGFycmF5KCk7DQoJCXN3aXRjaCgkbGV2ZWwpew0KCQkJY2FzZSAiY2F0ZWdvcnkiOg0KCQkJCSRmaWVsZHMgPSBhcnJheSgpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAidmlkZW9zIjoNCgkJCQkkZmllbGRzID0gYXJyYXkoKTsNCgkJCQlicmVhazsNCgkJCWRlZmF1bHQ6DQoJCQkkZmllbGRzID0gYXJyYXkoKTsNCgkJfQ0KCQlyZXR1cm4gJGZpZWxkczsNCgl9DQoJZnVuY3Rpb24gZ2V0X2hpZXJhcmNoeW9wdGlvbnMoJGVuZD1mYWxzZSwgJHdpdGhlbXB0eXJvdz10cnVlLCAkZGVwdGhzeW1ib2w9IiZuYnNwOy0mbmJzcDsiKXsNCgkJLy8gcmV0dXJucyBhbiBhcnJheSBvZiBwYXJlbnQgb3B0aW9ucyBmb3IgYSBsaW5rZWQgdG8gYSBzZWxlY3RlZCBsZXZlbA0KCQkvLyB1c2VkIGZvciB0aGUgaGllcmFyY2h5IGRyb3Bkb3duIGxpc3QgaW4gc2VhcmNoIGFjdGlvbg0KCQkkbGV2ZWxhcnJheSA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQkgaWYoIWluX2FycmF5KCRlbmQsICRsZXZlbGFycmF5KSkJJGVuZCA9ICRsZXZlbGFycmF5W2NvdW50KCRsZXZlbGFycmF5KS0xXTsNCgkJDQoJCS8vIGJ1aWxkaW5nIHRoZSBqb2luZWQgcXVlcnkNCgkJJHRhYmxlcyA9ICIiOw0KCQkkZmllbGRzID0gIiI7DQoJCSRvcmRlcmJ5ID0gIiI7DQoJCSR3aGVyZSA9ICIiOw0KCQkkZmluaXNoZWQgPSBmYWxzZTsNCgkJJGkgPSAxOw0KCQlmb3JlYWNoKCRsZXZlbGFycmF5IGFzICRsZXZlbCl7DQoJCQlpZigkbGV2ZWwgPT0gJGVuZCkJJGZpbmlzaGVkID0gdHJ1ZTsNCgkJCWlmKCEkZmluaXNoZWQpew0KCQkJCSR0YWJsZXMgLj0gKCR0YWJsZXMgPT0gIiI/IiI6IiwgIikuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0Ii4kaS4iICI7DQoJCQkJJGZpZWxkcyAuPSAoJGZpZWxkcyA9PSAiIj8iIjoiLCAiKS4idCIuJGkuIi5pZCBpZCIuJGkuIiwgdCIuJGkuIi5uYW1lIG5hbWUiLiRpOw0KCQkJCSRvcmRlcmJ5IC49ICgkb3JkZXJieSA9PSAiIj8iIjoiLCAiKS4idCIuJGkuIi5pdGVtX29yZGVyIERFU0MiOw0KCQkJCWlmKCRpID4gMSkgJHdoZXJlIC49ICIgQU5EIHQiLigkaS0xKS4iLmlkID0gdCIuJGkuIi5wYXJlbnQgIjsNCgkJCQkkd2hlcmUgLj0gKCR3aGVyZSA9PSAiIj8iIjoiIEFORCAiKS4iIHQiLiRpLiIuYWN0aXZlPTEiOw0KCQkJCSRpKys7DQoJCQl9DQoJCX0NCgkJaWYoJGZpZWxkcyA9PSAiIikJcmV0dXJuIGZhbHNlOw0KCQkNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICIuJGZpZWxkcy4iIEZST00gIi4kdGFibGVzLiIgV0hFUkUgIi4kd2hlcmUuIiBPUkRFUiBCWSAiLiRvcmRlcmJ5Ow0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCg0KCQkvLyBwYXJzaW5nIHJlc3VsdHMNCgkJJGN1cnJlbnQgPSBhcnJheSgpOw0KCQkkdG1wbGFzdGxldmVsID0gYXJyYXkoKTsNCgkJJHJlc3VsdHMgPSBhcnJheSgpOw0KCQkkZmluYWwgPSAkaSAtMTsNCgkJd2hpbGUoJGogPCAkZmluYWwgKXsNCgkJCSRjdXJyZW50WyRqXSA9IGFycmF5KCJpZCI9PmZhbHNlLCJuYW1lIj0+IiIpOw0KCQkJJGorKzsNCgkJfQ0KCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkvLyBlYWNoIHJvdyBoYXMgYSBmdWxsIGhpZXJhcmNoeSwgZnJvbSB0b3AgcGFyZW50IHRvIGZpbmFsIGNoaWxkDQoJCQkkaiA9ICRmaW5hbDsNCgkJCXdoaWxlKCRqID4gMCApew0KCQkJCWlmKCRyb3dbImlkIi4kal0gIT0gJGN1cnJlbnRbJGpdWyJpZCJdKXsNCgkJCQkJaWYoJGN1cnJlbnRbJGpdWyJpZCJdICYmIGNvdW50KCRjdXJyZW50WyRqXVsicmVzIl0pID4gMCl7DQoJCQkJCQkka2V5ID0gc3RyX3JlcGVhdCgkZGVwdGhzeW1ib2wsICgkaiAtMSkpLiRjdXJyZW50WyRqXVsibmFtZSJdOw0KCQkJCQkJJHJlc3VsdHNbJGtleV0gPSBpbXBsb2RlKCIsIiwkY3VycmVudFskal1bInJlcyJdKTsNCgkJCQkJfQ0KCQkJCQkkY3VycmVudFskal0gPSBhcnJheSgiaWQiPT4kcm93WyJpZCIuJGpdLCAibmFtZSI9PiRyb3dbIm5hbWUiLiRqXSwgInJlcyI9PmFycmF5KCkpOw0KCQkJCX0NCgkJCQkkY3VycmVudFskal1bInJlcyJdW10gPSAkcm93WyJpZCIuJGZpbmFsXTsNCgkJCQkkai0tOw0KCQkJfQ0KCQkJJHJlc3VsdHNbc3RyX3JlcGVhdCgkZGVwdGhzeW1ib2wsICgkZmluYWwgLTEpKS4kcm93WyJuYW1lIi4kZmluYWxdXSA9ICRyb3dbImlkIi4kZmluYWxdOw0KCQl9DQoJCS8vIHdlIGNsb3NlIHRoZSByZW1haW5pbmcgc2V0cw0KCQkkaiA9ICRmaW5hbCAtMTsNCgkJd2hpbGUoJGogPiAwICl7DQoJCQkka2V5ID0gc3RyX3JlcGVhdCgkZGVwdGhzeW1ib2wsICgkaiAtMSkpLiRjdXJyZW50WyRqXVsibmFtZSJdOw0KCQkJJHJlc3VsdHNbJGtleV0gPSBpbXBsb2RlKCIsIiwkY3VycmVudFskal1bInJlcyJdKTsNCgkJCSRqLS07DQoJCX0NCgkJaWYoJHdpdGhlbXB0eXJvdykJJHJlc3VsdHNbIiJdID0gIiI7DQoJCXJldHVybiBhcnJheV9yZXZlcnNlKCRyZXN1bHRzKTsNCgl9DQoJZnVuY3Rpb24gZ2V0X2FkbWluX2hpZXJhcmNoeW9wdGlvbnMoJGVuZD1mYWxzZSwgJHdpdGhlbXB0eXJvdz10cnVlLCAkc2VwYXJhdG9yPSIgJmd0OyAiLCAkb3JkZXJieW5hbWU9ZmFsc2Upew0KCQkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHBhcmVudCBvcHRpb25zIGxpbmtlZCB0byBhIHNlbGVjdGVkIGxldmVsDQoJCS8vIHVzZWQgZm9yIHRoZSBwYXJlbnQgYW5kIGZpbHRlciBkcm9wZG93biBpbiB0aGUgYWRtaW4NCgkJLy8gc2hvd3MgZW1wdHkgcGFyZW50cyB0b28NCgkJJGxldmVsYXJyYXkgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJaWYoIWluX2FycmF5KCRlbmQsICRsZXZlbGFycmF5KSkJJGVuZCA9ICJpdGVtIjsNCgkJDQoJCS8vIGJ1aWxkaW5nIHRoZSBqb2luZWQgcXVlcnkNCgkJJHRhYmxlcyA9ICIiOw0KCQkkZmllbGRzID0gIiI7DQoJCSRvcmRlcmJ5ID0gIiI7DQoJCSRmaW5pc2hlZCA9IGZhbHNlOw0KCQkkaSA9IDE7DQoJCWZvcmVhY2goJGxldmVsYXJyYXkgYXMgJGxldmVsKXsNCgkJCWlmKCRsZXZlbCA9PSAkZW5kKQkkZmluaXNoZWQgPSB0cnVlOw0KCQkJaWYoISRmaW5pc2hlZCl7DQoJCQkJJHRhYmxlcyAuPSAoJGk9PTE/IiI6IiBMRUZUIEpPSU4gIikuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0Ii4kaS4iICI7DQoJCQkJaWYoJGk+MSkJJHRhYmxlcyAuPSAiT04gdCIuKCRpLTEpLiIuaWQgPSB0Ii4kaS4iLnBhcmVudCAiOw0KCQkJCSRmaWVsZHMgLj0gKCRmaWVsZHMgPT0gIiI/IiI6IiwgIikuInQiLiRpLiIuaWQgaWQiLiRpLiIsIHQiLiRpLiIubmFtZSBuYW1lIi4kaTsNCgkJCQlpZigkb3JkZXJieW5hbWUpew0KCQkJCQkkb3JkZXJieSAuPSAoJG9yZGVyYnkgPT0gIiI/IiI6IiwgIikuInQiLiRpLiIubmFtZSI7DQoJCQkJfWVsc2V7DQoJCQkJCSRvcmRlcmJ5IC49ICgkb3JkZXJieSA9PSAiIj8iIjoiLCAiKS4idCIuJGkuIi5pdGVtX29yZGVyLCB0Ii4kaS4iLm5hbWUiOw0KCQkJCX0NCgkJCQkkaSsrOw0KCQkJfQ0KCQl9DQoJCWlmKCRmaWVsZHMgPT0gIiIpCXJldHVybiBhcnJheSgpOw0KCQkNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICIuJGZpZWxkcy4iIEZST00gIi4kdGFibGVzLiIgT1JERVIgQlkgIi4kb3JkZXJieTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCSRvcHRpb25zID0gYXJyYXkoKTsNCgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJLy8gZWFjaCByb3cgaGFzIGEgZnVsbCBoaWVyYXJjaHksIGZyb20gdG9wIHBhcmVudCB0byBmaW5hbCBjaGlsZA0KCQkJJHZhbHVlID0gJHJvd1siaWQiLigkaS0xKV07DQoJCQkkaiA9IDE7DQoJCQkkb3B0aW9uX25hbWUgPSAiIjsNCgkJCXdoaWxlKCRqIDwgJGkpew0KCQkJCSRvcHRpb25fbmFtZSAuPSAoJGo9PTE/IiI6JHNlcGFyYXRvcikuJHJvd1sibmFtZSIuJGpdOw0KCQkJCSRqKys7DQoJCQl9DQoJCQkkb3B0aW9uc1skb3B0aW9uX25hbWVdID0gJHZhbHVlOw0KCQl9DQoJCWlmKCR3aXRoZW1wdHlyb3cpCSRvcHRpb25zWyIiXSA9ICIiOw0KCQlyZXR1cm4gJG9wdGlvbnM7DQoJfQ0KCWZ1bmN0aW9uIGdldF9tb2R1bGVHZXRWYXJzKCl7DQoJCS8vIHVub3J0aG9kb3ggaGFjayBzbyB0aGF0IGRpZmZlcmVudCBjYWxscyBvZiB0aGUgbW9kdWxlIHNwZWFrIHdpdGggZWFjaCBvdGhlcg0KCQkvLyBiYXNpY2FsbHksIHdlIHJldHJpZXZlIHBhcmFtZXRlcnMgaW4gdGhlIHVybCB0aGF0IHdlcmUgbWVhbnQgZm9yIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgbW9kdWxlDQoJCS8vIHNlZSBGQVEgZm9yIG1vcmUgaW5mbyBvbiB0aGlzDQoJCWdsb2JhbCAkX0dFVDsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkcmVkaXJlY3Rpb24gPSBmYWxzZTsNCgkJaWYoaXNzZXQoJGdDbXMtPmNvbmZpZ1sidXJsX3Jld3JpdGluZyJdKSl7DQoJCQkvLyBjb3JlIDEuNiBvciBtb3JlDQoJCQkkcmVkaXJlY3Rpb24gPSAkZ0Ntcy0+Y29uZmlnWyJ1cmxfcmV3cml0aW5nIl07DQoJCX1lbHNlew0KCQkJLy8gY29yZSBiZWxvdyAxLjYNCgkJCWlmKCRnQ21zLT5jb25maWdbImFzc3VtZV9tb2RfcmV3cml0ZSJdICYmIGlzc2V0KCRfR0VUWyJwYWdlIl0pKXsNCgkJCQkkcmVkaXJlY3Rpb24gPSAibW9kX3Jld3JpdGUiOw0KCQkJfWVsc2VpZighJGdDbXMtPmNvbmZpZ1siYXNzdW1lX21vZF9yZXdyaXRlIl0gJiYgJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSAmJiBpc3NldCgkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSkpew0KCQkJCSRyZWRpcmVjdGlvbiA9ICJpbnRlcm5hbCI7DQoJCQl9DQoJCX0NCgkJJHBhcmFtcyA9IGFycmF5KCk7DQoJCSRnbG9iYWxtb2R1bGV2YXJzID0gYXJyYXkoKTsNCgkJaWYoaXNzZXQoJF9HRVRbIm1hY3QiXSkpew0KCQkJLy8gaWYgd2UgYXJlbid0IHVzaW5nIHByZXR0eSB1cmxzLi4uDQoJCQkkbW9kaW5mbyA9IGV4cGxvZGUoIiwiLCRfR0VUWyJtYWN0Il0pOw0KCQkJaWYoaXNzZXQoJG1vZGluZm8pICYmICRtb2RpbmZvWzBdID09ICR0aGlzLT5HZXROYW1lKCkpew0KCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXSkpDQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYXJlbnQiXT0kX0dFVFskbW9kaW5mb1sxXS4icGFyZW50Il07DQoJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uIndoYXQiXSkpDQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJ3aGF0Il09JF9HRVRbJG1vZGluZm9bMV0uIndoYXQiXTsNCgkJCQlpZihpc3NldCgkX0dFVFskbW9kaW5mb1sxXS4iYWxpYXMiXSkpDQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJhbGlhcyJdPSRfR0VUWyRtb2RpbmZvWzFdLiJhbGlhcyJdOw0KCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXSkpDQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYWdlaW5kZXgiXT0kX0dFVFskbW9kaW5mb1sxXS4icGFnZWluZGV4Il07DQoJCQl9DQoJCX1lbHNlaWYoJHJlZGlyZWN0aW9uID09ICJtb2RfcmV3cml0ZSIgfHwgJHJlZGlyZWN0aW9uID09ICJpbnRlcm5hbCIpew0KCQkJJHBhcmFtcyA9IGFycmF5KCk7DQoJCQlpZigkcmVkaXJlY3Rpb24gPT0gIm1vZF9yZXdyaXRlIiAmJiBpc3NldCgkX0dFVFsicGFnZSJdKSl7DQoJCQkJLy8gaWYgd2UgYXJlIHVzaW5nIGFuIGV4dGVybmFsIG1vZF9yZXdyaXRlLCBhc3N1bWluZyB5b3UgYXJlIHVzaW5nIHRoZSB2ZXJ5DQoJCQkJLy8gYmFzaWMgcmV3cml0ZSB3aGljaCBwdXRzIHRoZSBtb2R1bGUgaW5mb3JtYXRpb25zIGluc2lkZSB0aGUgcGFnZSB2YXJpYWJsZQ0KCQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi8iLCRfR0VUWyJwYWdlIl0pOw0KCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsNCgkJCQkJaWYoJHBhcnQgIT0gIiIpCSRwYXJhbXNbXSA9ICRwYXJ0Ow0KCQkJCX0NCgkJCX1lbHNlaWYoJHJlZGlyZWN0aW9uID09ICJpbnRlcm5hbCIpew0KCQkJCS8vIGlmIHdlIGFyZSB1c2luZyB0aGUgaW50ZXJuYWwgcHJldHR5IHVybHMNCgkJCQkkcGFydHMgPSBleHBsb2RlKCIvIiwkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSk7DQoJCQkJJHN0YXJ0ZWQgPSBmYWxzZTsNCgkJCQlmb3JlYWNoKCRwYXJ0cyBhcyAkcGFydCl7DQoJCQkJCWlmKCRzdGFydGVkICYmICRwYXJ0ICE9ICIiKQkkcGFyYW1zW10gPSAkcGFydDsNCgkJCQkJaWYoc3RydG9sb3dlcigkcGFydCkgPT0gImluZGV4LnBocCIpCSRzdGFydGVkID0gdHJ1ZTsNCgkJCQl9DQoJCQl9DQoJCQlpZihpc3NldCgkcGFyYW1zWzBdKSAmJiBzdHJ0b2xvd2VyKCRwYXJhbXNbMF0pID09IHN0cnRvbG93ZXIoJHRoaXMtPkdldE5hbWUoKSkpew0KCQkJCSAvLyB3ZSBhcmUgaW4gYSBtb2R1bGUgYWN0aW9uDQoJCQkJIC8vIHRoaXMgcGFydCBzaG91bGQgYmUgY2hhbmdlZCBpZiB5b3UgY2hhbmdlIHRoZSBwcmV0dHkgdXJscyBzdHJ1Y3R1cmUNCgkJCQlpZighaXNzZXQoJHBhcmFtc1sxXSkgfHwgc3RydG9sb3dlcigkcGFyYW1zWzFdKSA9PSAicXVlcnkiKXsNCg0KCQkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sxXSkgJiYgc3RydG9sb3dlcigkcGFyYW1zWzFdKSA9PSAiZGV0YWlsIil7DQoJCQkJCSRsZXZlbHMgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICRsZXZlbHNbY291bnQoJGxldmVscyktMV07DQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJhbGlhcyJdID0gJHBhcmFtc1syXTsNCgkJCQl9ZWxzZXsNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICRwYXJhbXNbMV07DQoJCQkJCXN3aXRjaChjb3VudCgkcGFyYW1zKSl7DQoJCQkJCQljYXNlIDY6DQoJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1szXTsNCgkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWzRdOw0KCQkJCQkJY2FzZSA0Og0KCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYXJlbnQiXSA9ICRwYXJhbXNbMl07DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQljYXNlIDU6DQoJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1syXTsNCgkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWzNdOw0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiAkZ2xvYmFsbW9kdWxldmFyczsNCgl9DQoJZnVuY3Rpb24gZ2V0X29ianRyZWUoJGN1cmlkLCAkY3VybGV2ZWw9ZmFsc2UsICRmaWVsZD0iaWQiKXsNCgkJLy8gdGhpcyBidWlsZHMgYW4gb2JqZWN0IHRyZWUgKCRpdGVtLT5wYXJlbnRfb2JqZWN0LT5wYXJlbnRfb2JqZWN0Li4uKQ0KCQkvLyB3ZSBmaXJzdCBwdXQgYWxsIHRoZSBwYXJlbnRzIGluIGFuIGFycmF5DQoJCSRwYXJlbnRzID0gYXJyYXkoKTsNCgkJJGxldmVscyA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQlpZighJGN1cmxldmVsKQkkY3VybGV2ZWwgPSAkbGV2ZWxzW2NvdW50KCRsZXZlbHMpLTFdOw0KCQkkaSA9IGNvdW50KCRsZXZlbHMpOw0KCQkkc3RhcnRlZCA9IGZhbHNlOw0KCQl3aGlsZSgkY3VyaWQgJiYgJGkgPiAwKXsNCgkJCWlmKCRsZXZlbHNbJGkgLTFdID09ICRjdXJsZXZlbCkJJHN0YXJ0ZWQgPSB0cnVlOw0KCQkJaWYoJHN0YXJ0ZWQpew0KCQkJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kbGV2ZWxzWyRpIC0xXTsNCgkJCQkkaXRlbSA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoJGZpZWxkPT4kY3VyaWQpKTsNCgkJCQkkaXRlbSA9IGlzX2FycmF5KCRpdGVtKT8kaXRlbVswXTokaXRlbTsNCgkJCQkkaXRlbS0+X193aGF0ID0gJGxldmVsc1skaS0xXTsNCgkJCQkkcGFyZW50c1tdID0gJGl0ZW07DQoJCQkJJGZpZWxkID0gImlkIjsNCgkJCQkkY3VyaWQgPSBpc3NldCgkaXRlbS0+cGFyZW50X2lkKT8kaXRlbS0+cGFyZW50X2lkOmZhbHNlOw0KCQkJfQ0KCQkJJGktLTsNCgkJfQ0KCQkNCgkJLy8gbmV4dCwgd2UgcHJvY2VzcyB0aGUgYXJyYXkgb2YgcGFyZW50cyB0byBidWlsZCB0aGUgcGFyZW50IHRyZWUNCgkJJHBhcmVudHRyZWUgPSBmYWxzZTsNCgkJJGkgPSBjb3VudCgkcGFyZW50cykgLSAxOw0KCQl3aGlsZSgkaSA+PSAwKXsNCgkJCWlmKCRwYXJlbnR0cmVlKXsNCgkJCQkkbmV3dHJlZSA9ICRwYXJlbnRzWyRpXTsNCgkJCQkkbmV3dHJlZS0+cGFyZW50X29iamVjdCA9ICRwYXJlbnR0cmVlOw0KCQkJCSRwYXJlbnR0cmVlID0gJG5ld3RyZWU7DQoJCQl9ZWxzZXsNCgkJCQkkcGFyZW50dHJlZSA9ICRwYXJlbnRzWyRpXTsNCgkJCX0NCgkJCSRpLS07DQoJCX0NCgkJJHRoaXMtPmN1cnJlbnR0cmVlID0gJHBhcmVudHRyZWU7DQoJCXJldHVybiAkcGFyZW50dHJlZTsNCgl9DQoJZnVuY3Rpb24gYnVpbGRHbG9iYWxUcmVlKCl7DQoJCS8vIHRoaXMgc2F2ZXMgdGhlIGN1cnJlbnQgdHJlZSBpbiB0aGUgbW9kdWxlLi4uDQoJCSRsZXZlbHMgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJJGdsb2IgPSAkdGhpcy0+Z2V0X21vZHVsZUdldFZhcnMoKTsNCgkJaWYoaXNzZXQoJGdsb2JbInBhZ2VpbmRleCJdKSkJJHRoaXMtPmN1cnJlbnRwYWdlaW5kZXggPSAkZ2xvYlsicGFnZWluZGV4Il07DQoJCWlmKGlzc2V0KCRnbG9iWyJhbGlhcyJdKSl7DQoJCQkkdHJlZSA9ICR0aGlzLT5nZXRfb2JqdHJlZSgkZ2xvYlsiYWxpYXMiXSwgJGxldmVsc1tjb3VudCgkbGV2ZWxzKS0xXSwgImFsaWFzIik7DQoJCX1lbHNlaWYoaXNzZXQoJGdsb2JbInBhcmVudCJdKSAmJiBpc3NldCgkZ2xvYlsid2hhdCJdKSl7DQoJCQkkdHJlZSA9ICR0aGlzLT5nZXRfb2JqdHJlZSgkZ2xvYlsicGFyZW50Il0sICR0aGlzLT5nZXRfbmV4dGxldmVsKCRnbG9iWyJ3aGF0Il0sZmFsc2UpLCAiYWxpYXMiKTsNCgkJfQ0KCQkNCgkJaWYoaXNzZXQoJHRyZWUpICYmICR0cmVlKXsNCgkJCSR0aGlzLT5jdXJyZW50dHJlZSA9ICR0cmVlOw0KCQkJLy8gdGhpcyBzYXZlcyB0aGUgc2VsZWN0ZWQgaXRlbSBmb3IgZWFjaCBsZXZlbA0KCQkJJHRoaXMtPnBsY3VycmVudFskdHJlZS0+X193aGF0XSA9ICR0cmVlLT5hbGlhczsNCgkJCXdoaWxlKGlzc2V0KCR0cmVlLT5wYXJlbnRfb2JqZWN0KSl7DQoJCQkJJHRyZWUgPSAkdHJlZS0+cGFyZW50X29iamVjdDsNCgkJCQkkdGhpcy0+cGxjdXJyZW50WyR0cmVlLT5fX3doYXRdID0gJHRyZWUtPmFsaWFzOw0KCQkJfQ0KCQl9DQoJfQ0KCWZ1bmN0aW9uIGZ1bmN0aW9uX21vZGJyZWFkY3J1bWJzKCRwYXJhbXMsICYkc21hcnR5KXsNCgkJLy8gcmVnaXN0ZXJlZCBzbWFydHkgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgYnJlYWRjcnVtYnMNCgkJLy8gdXNlcyBzaW1pbGFyIHBhcmFtZXRlcnMgdG8gdGhlIGNvcmUgYnJlYWRjcnVtYnMgZnVuY3Rpb24NCgkJaWYoISR0aGlzLT5jdXJyZW50dHJlZSkJCSR0aGlzLT5idWlsZEdsb2JhbFRyZWUoKTsNCgkJDQoJCWlmKCR0aGlzLT5jdXJyZW50dHJlZSl7DQoJCQlnbG9iYWwgJGdDbXM7DQoJCQkkcmV0dXJuaWQgPSAkZ0Ntcy0+dmFyaWFibGVzWyJjb250ZW50X2lkIl07DQoJCQkvLyB3ZSBjcmVhdGUgdGhlIGJyZWFkY3J1bWJzDQoJCQkkY2xhc3NpZCA9IGlzc2V0KCRwYXJhbXNbImNsYXNzaWQiXSk/IiBjbGFzcz1cIiIuJHBhcmFtc1siY2xhc3NpZCJdLiJcIiI6IiI7DQoJCQkkY3VycmVudGNsYXNzaWQgPSBpc3NldCgkcGFyYW1zWyJjdXJyZW50Y2xhc3NpZCJdKT8iIGNsYXNzPVwiIi4kcGFyYW1zWyJjdXJyZW50Y2xhc3NpZCJdLiJcIiI6IiBjbGFzcz1cImxhc3RpdGVtXCIiOw0KCQkJJHN0YXJ0bGV2ZWwgPSBpc3NldCgkcGFyYW1zWyJzdGFydGxldmVsIl0pPyR0aGlzLT5nZXRfbmV4dGxldmVsKCRwYXJhbXNbInN0YXJ0bGV2ZWwiXSwgZmFsc2UpOmZhbHNlOw0KCQkJJGRlbGltaXRlciA9IGlzc2V0KCRwYXJhbXNbImRlbGltaXRlciJdKT8kcGFyYW1zWyJkZWxpbWl0ZXIiXTokdGhpcy0+TGFuZygiYnJlYWRjcnVtYnNfZGVsaW1pdGVyIik7DQoJCQkkaW5pdGlhbCA9IGlzc2V0KCRwYXJhbXNbImluaXRpYWwiXSk/JHBhcmFtc1siaW5pdGlhbCJdOiR0aGlzLT5MYW5nKCJ5b3VhcmVoZXJlIik7DQoNCgkJCSRvdXRwdXQgPSAiIjsNCgkJCSRjdXJyZW50ID0gJHRoaXMtPmN1cnJlbnR0cmVlOw0KCQkJJGdvaW5nb24gPSBmYWxzZTsNCgkJCXdoaWxlKGlzc2V0KCRjdXJyZW50LT5wYXJlbnRfb2JqZWN0KSl7DQoJCQkJJGN1cnJlbnQgPSAkY3VycmVudC0+cGFyZW50X29iamVjdDsNCgkJCQlpZigkY3VycmVudC0+X193aGF0ID09ICRzdGFydGxldmVsKQkkZW5kZWQgPSB0cnVlOw0KCQkJCWlmKCEkZW5kZWQpew0KCQkJCQkkcGFyYW1zID0gYXJyYXkoIndoYXQiPT4kdGhpcy0+Z2V0X25leHRsZXZlbCgkY3VycmVudC0+X193aGF0KSwgInBhcmVudCI9PiRjdXJyZW50LT5hbGlhcyk7DQoJCQkJCSRwcmV0dHl1cmwgPSAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRwYXJhbXMsICRyZXR1cm5pZCk7DQoJCQkJCSRvdXRwdXQgPSAiPHNwYW4iLiRjbGFzc2lkLiI+Ii4kdGhpcy0+Q3JlYXRlTGluaygiIiwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICRjdXJyZW50LT5uYW1lLCAkcGFyYW1zLCAiIiwgZmFsc2UsIGZhbHNlLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpLiI8L3NwYW4+Ii4kZGVsaW1pdGVyLiRvdXRwdXQ7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYoJG91dHB1dCAhPSAiIikgJG91dHB1dCA9ICRpbml0aWFsLiRvdXRwdXQuIjxzcGFuIi4kY3VycmVudGNsYXNzaWQuIj4iLiR0aGlzLT5jdXJyZW50dHJlZS0+bmFtZS4iPC9zcGFuPiI7DQoJCQkNCgkJCWlmKGlzc2V0KCRwYXJhbXNbImFzc2lnbiJdKSAmJiAkcGFyYW1zWyJhc3NpZ24iXSAhPSAiIil7DQoJCQkJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbImFzc2lnbiJdLCAkb3V0cHV0KTsNCgkJCX1lbHNlew0KCQkJCWVjaG8gJG91dHB1dDsNCgkJCX0NCgkJfQ0KCX0NCglmdW5jdGlvbiBmdW5jdGlvbl9nZXRfbGV2ZWxpdGVtKCRwYXJhbXMsICYkc21hcnR5KXsNCgkJLy8gcmVnaXN0ZXJlZCBzbWFydHkgZnVuY3Rpb24gdGhhdCByZXRyaWV2ZXMgYSBnaXZlbiBpdGVtIChhbGlhcykgb2YgYSBnaXZlbiBsZXZlbCAod2hhdCkNCgkJaWYoCSFpc3NldCgkcGFyYW1zWyJhc3NpZ24iXSkgfHwgJHBhcmFtc1siYXNzaWduIl0gPT0gIiIgfHwgIWlzc2V0KCRwYXJhbXNbIndoYXQiXSkgfHwgIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICkJcmV0dXJuIGZhbHNlOw0KCQlpZighaW5fYXJyYXkoJHBhcmFtc1sid2hhdCJdLCAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSkpCXJldHVybiBmYWxzZTsNCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiRwYXJhbXNbIndoYXQiXTsNCgkJJHJlc3VsdHMgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbImFsaWFzIl0pKTsNCgkJJGl0ZW0gPSBpc3NldCgkcmVzdWx0c1swXSk/JHJlc3VsdHNbMF06ZmFsc2U7DQoJCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWyJhc3NpZ24iXSwgJGl0ZW0pOw0KCX0NCglmdW5jdGlvbiBjb3VudHNvbWV0aGluZygkdGFibGVuYW1lLCR3aGF0PSJpZCIsJHdoZXJlPWFycmF5KCksJHdoZXJlc3RyaW5nPWZhbHNlLCR3aGVyZXZhbHVlcz1hcnJheSgpLCRwYXJlbnQ9ZmFsc2Upew0KCQkvLyByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB0YWJsZSBjb3JyZXNwb25kaW5nIHRvIGNyaXRlcmlhcw0KCQlpZighJHBhcmVudCAmJiBpc3NldCgkd2hlcmVbInBhcmVudCJdKSkJdW5zZXQoJHdoZXJlWyJwYXJlbnQiXSk7DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJaWYoJHdoZXJlc3RyaW5nKXsNCgkJCSR3aGVyZXN0cmluZyA9ICIgV0hFUkUgIi4kd2hlcmVzdHJpbmc7DQoJCX1lbHNlew0KCQkJJHdoZXJlc3RyaW5nID0gIiI7DQoJCQkkd2hlcmV2YWx1ZXMgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCgkd2hlcmUgYXMgJGtleT0+JHZhbHVlKXsNCgkJCQlpZigka2V5ID09ICJwYXJlbnQiKXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiBXSEVSRSAiOiIgQU5EICIpLiJBLnBhcmVudD1CLmlkIEFORCBCLmFsaWFzPT8iOw0KCQkJCX1lbHNlew0KCQkJCQkkd2hlcmVzdHJpbmcgLj0gKCR3aGVyZXN0cmluZyA9PSAiIj8iIFdIRVJFICI6IiBBTkQgIikuIkEuIi4ka2V5LiI9PyI7DQoJCQkJfQ0KCQkJCSR3aGVyZXZhbHVlc1tdID0gJHZhbHVlOw0KCQkJfQ0KCQl9DQoJCSRxdWVyeSA9ICJTRUxFQ1QgQ09VTlQoQS4kd2hhdCkgb3VyY291bnQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJHRhYmxlbmFtZS4iIEEiOw0KCQlpZigkcGFyZW50ICYmIGlzc2V0KCR3aGF0WyJwYXJlbnQiXSkpCSRxdWVyeSAuPSAiLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJHBhcmVudC4iIEIiOw0KCQkkcXVlcnkgLj0gJHdoZXJlc3RyaW5nOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR3aGVyZXZhbHVlcyk7DQoJCWlmICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQlyZXR1cm4gJHJvd1sib3VyY291bnQiXTsNCgkJfWVsc2V7DQoJCQlyZXR1cm4gMDsNCgkJfQ0KCX0NCgkNCgkNCglmdW5jdGlvbiBhZG1pbl9wYWdpbmF0ZSgkbGV2ZWwsJG5icGVycGFnZSwkaWQsJHJldHVybmlkLCRwYXJhbXMpew0KCQkvLyBzYW1lIGFzIHBhZ2luYXRlLCBidXQgZm9yIHRoZSBhZG1pbiBwYW5lbHMNCgkJJHdoZXJlY2xhdXNlID0gYXJyYXkoKTsNCgkJaWYoaXNzZXQoJHBhcmFtc1skbGV2ZWwuIl9zaG93b25seSJdKSAmJiAkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il0gIT0gIiIpCSR3aGVyZWNsYXVzZVsicGFyZW50Il0gPSAkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il07DQoJCSR0b3RhbCA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygkbGV2ZWwsImlkIiwkd2hlcmVjbGF1c2UpOw0KCQkkbmV4dHBhZ2UgPSBmYWxzZTsNCgkJJHByZXZpb3VzcGFnZSA9IGZhbHNlOw0KCQkkcGFnZWluZm8gPSBmYWxzZTsNCgkJJHBhZ2VzID0gZmFsc2U7DQoJCWlmKCRuYnBlcnBhZ2UgPiAwICYmICR0b3RhbCA+ICRuYnBlcnBhZ2Upew0KCQkJJGN1cnBhZ2UgPSBpc3NldCgkcGFyYW1zWyRsZXZlbC4iX3BhZ2UiXSk/JHBhcmFtc1skbGV2ZWwuIl9wYWdlIl06MDsNCgkJCSRuYnBhZ2VzID0gY2VpbCgkdG90YWwvJG5icGVycGFnZSk7DQoJCQkkcGFnZWluZm8gPSAoKCRjdXJwYWdlICogJG5icGVycGFnZSkgKyAxKTsNCgkJCSR0bXBlbmQgPSAkcGFnZWluZm8gKyAkbmJwZXJwYWdlIC0gMTsNCgkJCWlmKCR0bXBlbmQgPiAkdG90YWwpCSR0bXBlbmQgPSAkdG90YWw7DQoJCQlpZigkdG1wZW5kICE9ICRwYWdlaW5mbykJJHBhZ2VpbmZvIC49ICItIi4kdG1wZW5kOw0KCQkJJHBhZ2VpbmZvIC49ICIgLyAiLiR0b3RhbDsNCgkJCSRwYWdlcGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiPT4kbGV2ZWwpOw0KCQkJaWYoaXNzZXQoJHBhcmFtc1skbGV2ZWwuIl9zaG93b25seSJdKSAmJiAkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il0gIT0gIiIpew0KCQkJCSRwYWdlcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il0gPSAkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il07DQoJCQl9DQoJCQlpZigkY3VycGFnZSA+IDApew0KCQkJCSRwYWdlcGFyYW1zWyRsZXZlbC4iX3BhZ2UiXSA9ICRjdXJwYWdlIC0gMTsNCgkJCQkkcHJldmlvdXNwYWdlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygicHJldmlvdXNwYWdlIiksICRwYWdlcGFyYW1zKTsNCgkJCX0NCgkJCWlmKCRjdXJwYWdlIDwgKCRuYnBhZ2VzLTEpKXsNCgkJCQkkcGFnZXBhcmFtc1skbGV2ZWwuIl9wYWdlIl0gPSAkY3VycGFnZSArIDE7DQoJCQkJJG5leHRwYWdlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygibmV4dHBhZ2UiKSwgJHBhZ2VwYXJhbXMpOw0KCQkJfQ0KCQkJJGkgPSAwOw0KCQkJJHBhZ2VzID0gJHRoaXMtPkxhbmcoInBhZ2VzIik7DQoJCQl3aGlsZSgkaSA8ICRuYnBhZ2VzKXsNCgkJCQlpZigkaSA+IDApCSRwYWdlcyAuPSAiJm5ic3A7ICI7DQoJCQkJaWYoJGkgPT0gJGN1cnBhZ2Upew0KCQkJCQkkcGFnZXMgLj0gJGk7DQoJCQkJfWVsc2V7DQoJCQkJCSRwYWdlcGFyYW1zWyRsZXZlbC4iX3BhZ2UiXSA9ICRpOw0KCQkJCQkkcGFnZXMgLj0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkaSwgJHBhZ2VwYXJhbXMpOw0KCQkJCX0NCgkJCQkkaSsrOw0KCQkJfQ0KCQl9DQoJCXJldHVybiBhcnJheSgkcGFnZWluZm8sICRuZXh0cGFnZSwgJHByZXZpb3VzcGFnZSwgJHBhZ2VzKTsNCgl9DQoNCglmdW5jdGlvbiBwYWdpbmF0ZSgkd2hhdCwkdG90YWwsJGlkLCRyZXR1cm5pZCwkcGFyYW1zLCRhY3Rpb249ImRlZmF1bHQiKXsNCgkJLy8gZm9yIGZyb250ZW5kIHVzYWdlDQoJCS8vIHRoaXMgYXNzaWducyB0aGUgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBwYWdlIG1lbnUNCgkJDQoJCSRuYnBlcnBhZ2UgPSBpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSk/JHBhcmFtc1sibmJwZXJwYWdlIl06MDsNCgkJJG5icGVycGFnZSA9IChpbnQpICRuYnBlcnBhZ2U7DQoJCWlmKCRuYnBlcnBhZ2UgPT0gMCB8fCAkbmJwZXJwYWdlID49ICR0b3RhbCl7DQoJCQkvLyB3ZSdyZSBub3QgdXNpbmcgcGFnaW5hdGlvbg0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKGFycmF5KCJwYWdlX3Nob3dpbmciPT5mYWxzZSwicGFnZV90b3RhbGl0ZW1zIj0+ZmFsc2UsInBhZ2VfcGFnZW51bWJlcnMiPT5mYWxzZSwicGFnZV9uZXh0Ij0+ZmFsc2UsInBhZ2VfcHJldmlvdXMiPT5mYWxzZSkpOw0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCQ0KCQkvLyB3ZSdyZSB1c2luZyBwYWdpbmF0aW9uDQoJCSRjdXJwYWdlID0gaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pPyRwYXJhbXNbInBhZ2VpbmRleCJdOjE7DQoJCSRuYnBhZ2VzID0gY2VpbCgkdG90YWwvJG5icGVycGFnZSk7DQoJCSRzaG93aW5nID0gKCgoJGN1cnBhZ2UgLTEpICogJG5icGVycGFnZSkgKyAxKTsNCgkJJHRtcGVuZCA9ICRzaG93aW5nICsgJG5icGVycGFnZSAtIDE7DQoJCWlmKCR0bXBlbmQgPiAkdG90YWwpCSR0bXBlbmQgPSAkdG90YWw7DQoJCWlmKCR0bXBlbmQgIT0gJHNob3dpbmcpCSRzaG93aW5nIC49ICItIi4kdG1wZW5kOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2Vfc2hvd2luZyIsJHNob3dpbmcpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VfdG90YWxpdGVtcyIsJHRvdGFsKTsNCg0KCQkkbmV3cGFyYW1zID0gJHBhcmFtczsNCgkJJHByZXZpb3VzbGluayA9IGZhbHNlOw0KCQkkbmV4dGxpbmsgPSBmYWxzZTsNCgkJaWYoJGN1cnBhZ2UgPiAxKXsNCgkJCS8vIHdlIGNyZWF0ZSB0aGUgbGluayB0byB0aGUgcHJldmlvdXMgcGFnZQ0KCQkJJG5ld3BhcmFtc1sicGFnZWluZGV4Il0gPSAkY3VycGFnZSAtIDE7DQoJCQkkcHJldmlvdXNsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsICImbHQ7IiwgJG5ld3BhcmFtcywgIiIsIGZhbHNlLCB0cnVlLCAiIGNsYXNzPVwicHJldmlvdXNsaW5rXCIiLCBmYWxzZSwgKCRhY3Rpb24gIT0gImRlZmF1bHQiKT8iIjokdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQl9DQoJCWlmKCRjdXJwYWdlIDwgJG5icGFnZXMpew0KCQkJLy8gd2UgY3JlYXRlIHRoZSBsaW5rIHRvIHRoZSBuZXh0IHBhZ2UNCgkJCSRuZXdwYXJhbXNbInBhZ2VpbmRleCJdID0gJGN1cnBhZ2UgKyAxOw0KCQkJJG5leHRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsICImZ3Q7IiwgJG5ld3BhcmFtcywgIiIsIGZhbHNlLCB0cnVlLCAiIGNsYXNzPVwibmV4dGxpbmtcIiIsIGZhbHNlLCAoJGFjdGlvbiAhPSAiZGVmYXVsdCIpPyIiOiR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCX0NCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlX25leHQiLCRuZXh0bGluayk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZV9wcmV2aW91cyIsJHByZXZpb3VzbGluayk7CQ0KCQkJCQ0KCQkvLyB3ZSBjcmVhdGUgbGlua3MgZm9yIGVhY2ggcGFnZSBudW1iZXINCgkJJGkgPSAxOw0KCQkkbGlua3MgPSBhcnJheSgpOw0KCQl3aGlsZSgkaSA8PSAkbmJwYWdlcyAmJiAkbmJwYWdlcyA+IDEpew0KCQkJJG5ld3BhcmFtc1sicGFnZWluZGV4Il0gPSAkaTsNCgkJCWlmKCRpID09ICRjdXJwYWdlKXsNCgkJCQkkbGlua3NbXSA9ICI8YSBjbGFzcz1cInBhZ2VudW1iZXIgY3VycmVudFwiPiIuJGkuIjwvYT4iOw0KCQkJfWVsc2V7DQoJCQkJJGxpbmtzW10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICRhY3Rpb24sICRyZXR1cm5pZCwgJGksICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgdHJ1ZSwgIiBjbGFzcz1cInBhZ2VudW1iZXJcIiIsIGZhbHNlLCAoJGFjdGlvbiAhPSAiZGVmYXVsdCIpPyIiOiR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCQl9DQoJCQkkaSsrOw0KCQl9DQoJCSRpID0gMDsNCgkJJHRtcGZsYWcgPSB0cnVlOw0KCQkkbWF4cGFnZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibWF4c2hvd25wYWdlcyIsNyk7DQoJCSRtYXhwYWdlcyA9IChpbnQpICRtYXhwYWdlczsNCgkJJHBhZ2VtZW51ID0gIiI7DQoJCWlmKCRtYXhwYWdlcyA8IDEpCSRtYXhwYWdlcyA9IDk5OTsNCgkJd2hpbGUoJGkgPCBjb3VudCgkbGlua3MpKXsNCgkJCWlmKCRpIDwgKCRtYXhwYWdlcy0xKSB8fCAkbmJwYWdlcyA8PSAkbWF4cGFnZXMpew0KCQkJCSRwYWdlbWVudSAuPSAoJHBhZ2VtZW51ID09ICIiPyIiOiR0aGlzLT5MYW5nKCJwYWdlbWVudWRlbGltaXRlciIpKS4kbGlua3NbJGldOw0KCQkJfWVsc2VpZigkaSA9PSBjb3VudCgkbGlua3MpKXsNCgkJCQkkcGFnZW1lbnUgLj0gJGxpbmtzWyRpXTsNCgkJCX1lbHNlaWYoJHRtcGZsYWcpew0KCQkJCSR0bXBmbGFnID0gZmFsc2U7DQoJCQkJJHBhZ2VtZW51IC49ICI8c3BhbiBjbGFzcz1cInBhZ2VtZW51b3ZlcmZsb3dcIj4iLiR0aGlzLT5MYW5nKCJwYWdlbWVudW92ZXJmbG93IikuIjwvc3Bhbj4iOw0KCQkJfQ0KCQkJJGkrKzsNCgkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VfcGFnZW51bWJlcnMiLCRwYWdlbWVudSk7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X2Rpc3RhbmNldG9sZXZlbCgkcGFyZW50bmFtZSwkY2hpbGRuYW1lPWZhbHNlKXsNCgkJLy8gZ2V0IHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBsZXZlbHMgKG1vc3QgbGlrZWx5IGJldHdlZW4gYSBsZXZlbCBhbmQgdGhlIGZpbmFsIGxldmVsKQ0KCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCWlmKCEkY2hpbGRuYW1lKQkkY2hpbGRuYW1lID0gJGxldmVsc1tjb3VudCgkbGV2ZWxzKS0xXTsNCgkJJHBhcmVudHBvc2l0aW9uID0gZmFsc2U7DQoJCSRjaGlsZHBvc2l0aW9uID0gZmFsc2U7DQoJCSRjb3VudGVyID0gMDsNCgkJZm9yZWFjaCgkbGV2ZWxzIGFzICRsZXZlbCl7DQoJCQkkY291bnRlcisrOw0KCQkJaWYoJGxldmVsID09ICRwYXJlbnRuYW1lKSAkcGFyZW50cG9zaXRpb24gPSAkY291bnRlcjsNCgkJCWlmKCRsZXZlbCA9PSAkY2hpbGRuYW1lKSAkY2hpbGRwb3NpdGlvbiA9ICRjb3VudGVyOw0KCQl9DQoJCWlmKCRjaGlsZHBvc2l0aW9uICYmICRwYXJlbnRwb3NpdGlvbil7DQoJCQlyZXR1cm4gYWJzKCRwYXJlbnRwb3NpdGlvbiAtICRjaGlsZHBvc2l0aW9uKTsNCgkJfQ0KCX0NCglmdW5jdGlvbiBnZXRfbmV4dGxldmVsKCRjdXJsZXZlbCwkZmluZGNoaWxkPXRydWUpew0KCQkvLyByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGxldmVsIGJlbG93ICgkZmluZGNoaWxkPXRydWUpIG9yIGFib3ZlICgkZmluZGNoaWxkPWZhbHNlKQ0KCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCSRpID0gMDsNCgkJJHdhbnRlZGxldmVsID0gZmFsc2U7DQoJCXdoaWxlKCRpIDwgY291bnQoJGxldmVscykpew0KCQkJJG5leHQgPSAkZmluZGNoaWxkPyRpKzE6JGktMTsNCgkJCWlmKCRsZXZlbHNbJGldID09ICRjdXJsZXZlbCAmJiBpc3NldCgkbGV2ZWxzWyRuZXh0XSkpICR3YW50ZWRsZXZlbCA9ICRsZXZlbHNbJG5leHRdOw0KCQkJJGkrKzsNCgkJfQ0KCQlyZXR1cm4gJHdhbnRlZGxldmVsOw0KCX0NCglmdW5jdGlvbiBnZXRfcGFyZW50cygkcGFyZW50bmFtZSwkY2hpbGRuYW1lLCRjaGlsZGlkKXsNCgkJLy8gd2hlbiB1c2luZyB0aGUgc2hhcmVjaGlsZHJlbiBvcHRpb24sIHJldHJpZXZlcyB0aGUgcGFyZW50cyBvZiBhIGdpdmVuIGVsZW1lbnQNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICIuJHBhcmVudG5hbWUuIl9pZCBwYXJlbnRpZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kcGFyZW50bmFtZS4iX2hhc18iLiRjaGlsZG5hbWUuIiBXSEVSRSAiLiRjaGlsZG5hbWUuIl9pZD0/IjsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkY2hpbGRpZCkpOw0KCQkkcGFyZW50cyA9IGFycmF5KCk7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkkcGFyZW50c1tdID0gJHJvd1sicGFyZW50aWQiXTsNCgkJfQ0KCQlyZXR1cm4gJHBhcmVudHM7DQoJfQ0KCWZ1bmN0aW9uIGdldF9vcHRpb25zKCR0YWJsZW5hbWUsJG9ubHlhY3RpdmU9ZmFsc2UsJGZ1bGxvYmplY3Q9ZmFsc2Upew0KCQkvLyByZXR1cm5zIHRoZSBlbGVtZW50cyBvZiBhbnkgdGFibGUgYXMgb3B0aW9ucyB0byB1c2UgZm9yIGEgZHJvcGRvd24gbGlzdA0KCQkvLyByZXR1cm5zIGFuIGFycmF5IG9mICRsYWJlbD0+JHZhbHVlDQoJCSRvcmRlcmJ5bmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJvcmRlcmJ5bmFtZSIsZmFsc2UpOw0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgIi4oJGZ1bGxvYmplY3Q/IioiOiJpZCwgbmFtZSIpLiIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJHRhYmxlbmFtZTsNCgkJaWYoJG9ubHlhY3RpdmUpCSRxdWVyeSAuPSAiIFdIRVJFIGFjdGl2ZT0xIjsNCgkJJHF1ZXJ5IC49ICIgT1JERVIgQlkgIi4oJG9yZGVyYnluYW1lPyJuYW1lIjoiaXRlbV9vcmRlciIpOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCgkJJG9wdGlvbnMgPSBhcnJheSgpOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJaWYoJGZ1bGxvYmplY3Qpew0KCQkJCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkJCQlmb3JlYWNoKCRyb3cgYXMgJGtleT0+JHZhbHVlKQkkb2JqLT4ka2V5ID0gJHZhbHVlOw0KCQkJCSRvcHRpb25zW10gPSAkb2JqOw0KCQkJfWVsc2V7DQoJCQkJJG9wdGlvbnNbJHJvd1sibmFtZSJdXSA9ICRyb3dbImlkIl07DQoJCQl9DQoJCX0NCgkJDQoJCXJldHVybiAkb3B0aW9uczsNCgl9DQoJZnVuY3Rpb24gZ2V0X2ZpZWxkb3B0aW9ucygkZmllbGQsJGZ1bGxvYmplY3Q9ZmFsc2Upew0KCQkvLyByZXR1cm5zIGZpZWxkIG9wdGlvbnMgYXMgb3B0aW9ucyB0byB1c2UgZm9yIGEgZHJvcGRvd24gbGlzdA0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfZmllbGRvcHRpb25zIFdIRVJFIGZpZWxkPT8gT1JERVIgQlkgaXRlbV9vcmRlciI7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGZpZWxkKSk7DQoJCSRvcHRpb25zID0gYXJyYXkoKTsNCgkJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCWlmKCRmdWxsb2JqZWN0KXsNCgkJCQkkb2JqID0gbmV3IFN0ZENsYXNzKCk7DQoJCQkJZm9yZWFjaCgkcm93IGFzICRrZXk9PiR2YWx1ZSkJJG9iai0+JGtleSA9ICR2YWx1ZTsNCgkJCQkkb3B0aW9uc1tdID0gJG9iajsNCgkJCX1lbHNlew0KCQkJCSRvcHRpb25zWyRyb3dbIm5hbWUiXV0gPSAkcm93WyJpZCJdOw0KCQkJfQ0KCQl9DQoJCQ0KCQlyZXR1cm4gJG9wdGlvbnM7DQoJfQ0KCWZ1bmN0aW9uIGdldF9wYWdlaWQoJGFsaWFzKXsNCgkJLy8gcmV0dXJucyB0aGUgcGFnZSBpZCBmcm9tIGFuIGFsaWFzDQoJCWdsb2JhbCAkZ0NtczsNCgkJJG1hbmFnZXIgPSYgJGdDbXMtPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsNCgkJJG5vZGUgPSYgJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkYWxpYXMpOw0KCQlpZiAoaXNzZXQoJG5vZGUpKSB7DQoJCQkkY29udGVudCA9JiAkbm9kZS0+R2V0Q29udGVudCgpOwkNCgkJCWlmIChpc3NldCgkY29udGVudCkpCXJldHVybiAkY29udGVudC0+SWQoKTsNCgkJfWVsc2V7DQoJCQkkbm9kZSA9JiAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUlkKCRhbGlhcyk7DQoJCQlpZiAoaXNzZXQoJG5vZGUpKSByZXR1cm4gJGFsaWFzOw0KCQl9DQoJfQ0KCWZ1bmN0aW9uIGFkZGZyb250ZW5kdXJscygkaXRlbSwkcGFyYW1zLCRpZCwkcmV0dXJuaWQpew0KCQkvLyBhZGRzICRpdGVtLT5kZXRhaWxsaW5rIGFuZCAkaXRlbS0+ZGV0YWlsdXJsIHRvIGEgZ2l2ZW4gJGl0ZW0NCgkJJG5leHRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCRpdGVtLT5fX3doYXQpOw0KCQlpZighJG5leHRsZXZlbCl7DQoJCQkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kaXRlbS0+X193aGF0LCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpOw0KCQl9ZWxzZXsNCgkJCSRuZXdwYXJhbXMgPSBhcnJheSgid2hhdCI9PiRuZXh0bGV2ZWwsICJwYXJlbnQiPT4kaXRlbS0+YWxpYXMpOw0KCQkJaWYoaXNzZXQoJHBhcmFtc1siZm9yY2VsaXN0Il0pICYmICRwYXJhbXNbImZvcmNlbGlzdCJdKQkkbmV3cGFyYW1zWyJmb3JjZWxpc3QiXSA9IHRydWU7DQoJCQlpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkgJiYgJHBhcmFtc1sibmJwZXJwYWdlIl0gPiAwKQkkbmV3cGFyYW1zWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbIm5icGVycGFnZSJdOw0KCQkJaWYoaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pICYmICRwYXJhbXNbInBhZ2VpbmRleCJdID4gMSkJJG5ld3BhcmFtc1sicGFnZWluZGV4Il0gPSAkcGFyYW1zWyJwYWdlaW5kZXgiXTsNCgkJfQ0KCQkkaW5saW5lID0gKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSAmJiAkcGFyYW1zWyJpbmxpbmUiXSk/dHJ1ZTpmYWxzZTsNCgkJaWYoJGlubGluZSkJJG5ld3BhcmFtc1siaW5saW5lIl0gPSB0cnVlOw0KCQkkaXRlbS0+ZGV0YWlsbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICRpdGVtLT5uYW1lLCAkbmV3cGFyYW1zLCAiIiwgZmFsc2UsICRpbmxpbmUsICIiLCBmYWxzZSwgJHRoaXMtPkJ1aWxkUHJldHR5VXJscygkbmV3cGFyYW1zLCAkcmV0dXJuaWQpKTsNCgkJJGl0ZW0tPmRldGFpbHVybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICIiLCAkbmV3cGFyYW1zLCAiIiwgdHJ1ZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQlpZihpc3NldCgkaXRlbS0+cGFyZW50X2FsaWFzKSl7DQoJCQkkbmV3cGFyYW1zWyJ3aGF0Il0gPSAkaXRlbS0+X193aGF0Ow0KCQkJJG5ld3BhcmFtc1sicGFyZW50Il0gPSAkaXRlbS0+cGFyZW50X2FsaWFzOw0KCQkJJGl0ZW0tPnBhcmVudGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJHJldHVybmlkLCAkaXRlbS0+cGFyZW50X25hbWUsICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQkJJGl0ZW0tPnBhcmVudHVybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICIiLCAkbmV3cGFyYW1zLCAiIiwgdHJ1ZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQl9DQoJCXJldHVybiAkaXRlbTsNCgl9DQoJZnVuY3Rpb24gYWRkQ2FydFVybHMoJGl0ZW1saXN0LCRpZCwkcmV0dXJuaWQpew0KCQkvLyBmb3IgZXZlbnR1YWwgdXNlIHdpdGggQ2FydE1hZGVTaW1wbGUNCgkJLy8gaG93ZXZlciwgaW50ZWdyYXRpb24gcmVxdWlyZXMgY2hhbmdlcyB0byBDYXJ0TWFkZVNpbXBsZQ0KCQkkQ2FydE1hZGVTaW1wbGUgPSBmYWxzZTsNCgkJaWYgKGlzc2V0KCRnQ21zLT5tb2R1bGVzWyJDYXJ0TWFkZVNpbXBsZSJdKSAmJiAkZ0Ntcy0+bW9kdWxlc1siQ2FydE1hZGVTaW1wbGUiXVsiYWN0aXZlIl0pCSRDYXJ0TWFkZVNpbXBsZSA9ICRnQ21zLT5tb2R1bGVzWyJDYXJ0TWFkZVNpbXBsZSJdWyJvYmplY3QiXTsNCgkJaWYoISRDYXJ0TWFkZVNpbXBsZSkJcmV0dXJuICRpdGVtbGlzdDsNCgkJJGNhcnRwYXJhbXMgPSBhcnJheSgicGVyZmFjdGlvbiI9PiJhZGRfcHJvZHVjdCIsICJxdHkiPT4xLCAicmV0dXJubW9kIj0+JHRoaXMtPkdldE5hbWUoKSk7DQoJCSRuZXdsaXN0ID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pew0KCQkJJGNhcnRwYXJhbXNbInByb2R1Y3RfaWQiXSA9ICRpdGVtLT5pZDsNCgkJCSRjYXJ0cGFyYW1zWyJuYW1lIl0gPSAkaXRlbS0+bmFtZTsNCgkJCSRpdGVtLT5hZGR0b2NhcnRsaW5rID0gJENhcnRNYWRlU2ltcGxlLT5DcmVhdGVMaW5rKCRpZCwgImNhcnQiLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJhZGR0b2NhcnQiKSwgJGNhcnRwYXJhbXMpOw0KCQkJJGl0ZW0tPmFkZHRvY2FydHVybCA9ICRDYXJ0TWFkZVNpbXBsZS0+Q3JlYXRlTGluaygkaWQsICJjYXJ0IiwgJHJldHVybmlkLCAiIiwgJGNhcnRwYXJhbXMsICIiLCB0cnVlKTsNCgkJCWFycmF5X3B1c2goJG5ld2xpc3QsICRpdGVtKTsNCgkJfQ0KCQlyZXR1cm4gJG5ld2xpc3Q7DQoJfQ0KCWZ1bmN0aW9uIGFkZGFkbWlubGlua3MoJGl0ZW0sJHBhcmFtcywkaWQsJHJldHVybmlkKXsNCgkJLy8gYWRkcyB0aGUgYWRtaW4gbGlua3MgdG8gdGhlIGxldmVsIGl0ZW1zLi4uDQoJCS8qICRwYXJhbXMgOiB0aGUgYmFzZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWRtaW4gbGlua3MNCgkJCQlwcmVmaXgNCgkJCQl0YWJsZW5hbWUNCgkJCQljaGlsZCAoaWYgdGhlIGxldmVsIGhhcyBhIGNoaWxkIGxldmVsLCB0aGUgbmFtZSBvZiB0aGUgY2hpbGQgbGV2ZWwpDQoJCQkJbGV2ZWxuYW1lDQoJCQkJcGFyZW50ZGVmYXVsdCAoYm9vbC4uLiB3aGV0aGVyIG9yIG5vdCB0aGVyZSBpcyBhIGRlZmF1bHQgZWxlbWVudCBmb3IgZWFjaCBwYXJlbnQpDQoJCQkJb3JkZXJieXBhcmVudCAoYm9vbCkNCgkJCQlhZGRmaWxlcw0KCQkJCXNoYXJlY2hpbGRyZW4gKGJvb2wpDQoJCQkJc2hhcmVkYnlwYXJlbnRzIChib29sKQ0KCQkJCWZpbGVzIChzdHJpbmcsY3N2KQ0KCQkqLw0KDQoJCWdsb2JhbCAkZ0NtczsNCgkJJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJCQ0KCQlpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoInJlc3RyaWN0X3Blcm1pc3Npb25zIixmYWxzZSkgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXMtPkdldE5hbWUoKS4iX2FkdmFuY2VkIikgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXMtPkdldE5hbWUoKS4iX21hbmFnZV8iLiRwYXJhbXNbImxldmVsbmFtZSJdKSApew0KCQkJLy8gbm8gYWNjZXNzIC0gd2UgZG9uJ3QgY3JlYXRlIGxpbmtzDQoJCQkkaXRlbS0+ZWRpdGxpbmsgPSAkaXRlbS0+bmFtZTsNCgkJCSRpdGVtLT5kZWxldGVsaW5rID0gIiI7DQoJCQkkaXRlbS0+bW92ZWxpbmtzID0gIiI7DQoJCQkkaXRlbS0+dG9nZ2xlYWN0aXZlID0gJGl0ZW0tPmFjdGl2ZT09MT8kYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdHJ1ZS5naWYiLCIiLCIiLCIiLCJzeXN0ZW1pY29uIik6JGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZiIsIiIsIiIsIiIsInN5c3RlbWljb24iKTsNCgkJCSRpdGVtLT50b2dnbGVkZWZhdWx0ID0gJGl0ZW0tPmlzZGVmYXVsdD09MT8kYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdHJ1ZS5naWYiLCIiLCIiLCIiLCJzeXN0ZW1pY29uIik6JGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZiIsIiIsIiIsIiIsInN5c3RlbWljb24iKTsNCgkJCXJldHVybiAkaXRlbTsNCgkJfQ0KCQkNCgkJJHByZWZpeCA9ICRwYXJhbXNbInByZWZpeCJdOw0KCQkkbW92ZXBhcmFtcyA9ICRwYXJhbXM7DQoJCSRtb3ZlcGFyYW1zWyRwcmVmaXguImlkIl0gPSAkaXRlbS0+aWQ7DQoJCSRtb3ZlcGFyYW1zWyJjdXJyZW50b3JkZXIiXSA9ICRpdGVtLT5pdGVtX29yZGVyOw0KCQlpZihpc3NldCgkbW92ZXBhcmFtc1siZmlsZXMiXSkpCXVuc2V0KCRtb3ZlcGFyYW1zWyJmaWxlcyJdKTsNCgkJaWYoJG1vdmVwYXJhbXNbIm9yZGVyYnlwYXJlbnQiXSAmJiBpc3NldCgkaXRlbS0+cGFyZW50X2lkKSkgJG1vdmVwYXJhbXNbInBhcmVudCJdID0gJGl0ZW0tPnBhcmVudF9pZDsNCg0KCQkkaXRlbS0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJlZGl0Ii4kcHJlZml4LCAkcmV0dXJuaWQsICRpdGVtLT5uYW1lLCBhcnJheSgkcHJlZml4LiJpZCI9PiRpdGVtLT5pZCkpOw0KCQkkaXRlbS0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgIm1vdmVzb21ldGhpbmciLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIixsYW5nKCJkZWxldGUiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgibW92ZSI9PiJkZWxldGUiKSwkbW92ZXBhcmFtcyksJHRoaXMtPkxhbmcoInByb21wdF9kZWxldGUiLiRwYXJhbXNbImxldmVsbmFtZSJdLCBzdHJfcmVwbGFjZSgiJyIsIlwnIiwkaXRlbS0+bmFtZSkpKTsNCgkJJGl0ZW0tPm1vdmV1cGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJtb3Zlc29tZXRoaW5nIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYiLGxhbmcoInVwIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIm1vdmUiPT4idXAiKSwkbW92ZXBhcmFtcykpOw0KCQkkaXRlbS0+bW92ZWRvd25saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAibW92ZXNvbWV0aGluZyIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmIixsYW5nKCJkb3duIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIm1vdmUiPT4iZG93biIpLCRtb3ZlcGFyYW1zKSk7DQoJCSRpdGVtLT5tb3ZlbGlua3MgPSAkaXRlbS0+bW92ZXVwbGluayAuIiAiLiAkaXRlbS0+bW92ZWRvd25saW5rOw0KCQkNCgkJLy8gd2UgcmVidWlsZCB0aGUgcGFyYW1zLCBiZWNhdXNlIHdlIGRvbid0IG5lZWQgc28gbWFueSBmb3IgdGhlIHRvZ2dsZSBhY3Rpb24NCgkJJHRvZ2dsZXBhcmFtcyA9IGFycmF5KCRwcmVmaXguImlkIj0+JGl0ZW0tPmlkLCAicHJlZml4Ij0+JHByZWZpeCwgInRhYmxlbmFtZSI9PiRwYXJhbXNbInRhYmxlbmFtZSJdLCAibGV2ZWxuYW1lIj0+JHBhcmFtc1sibGV2ZWxuYW1lIl0pOw0KCQlpZigkcGFyYW1zWyJwYXJlbnRkZWZhdWx0Il0gJiYgaXNzZXQoJGl0ZW0tPnBhcmVudF9pZCkpew0KCQkJJHRvZ2dsZXBhcmFtc1sicGFyZW50Il0gPSAkaXRlbS0+cGFyZW50X2lkOw0KCQkJJHRvZ2dsZXBhcmFtc1sicGFyZW50ZGVmYXVsdCJdID0gMTsNCgkJfQ0KCQlpZiAoJGl0ZW0tPmFjdGl2ZSA9PSAxKXsNCgkJCSRpdGVtLT50b2dnbGVhY3RpdmUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0b2dnbGUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS90cnVlLmdpZiIsbGFuZygic2V0ZmFsc2UiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgid2hhdCI9PiJhY3RpdmUiLCJuZXd2YWwiPT4wKSwkdG9nZ2xlcGFyYW1zKSk7DQoJCX1lbHNlew0KCQkJJGl0ZW0tPnRvZ2dsZWFjdGl2ZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInRvZ2dsZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZiIsbGFuZygic2V0dHJ1ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKGFycmF5KCJ3aGF0Ij0+ImFjdGl2ZSIsIm5ld3ZhbCI9PjEpLCR0b2dnbGVwYXJhbXMpKTsNCgkJfQ0KDQoJCWlmICgkaXRlbS0+aXNkZWZhdWx0ID09IDEpew0KCQkJJGl0ZW0tPnRvZ2dsZWRlZmF1bHQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0b2dnbGUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS90cnVlLmdpZiIsbGFuZygic2V0ZmFsc2UiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgid2hhdCI9PiJkZWZhdWx0IiwibmV3dmFsIj0+MCksJHRvZ2dsZXBhcmFtcykpOw0KCQl9ZWxzZXsNCgkJCSRpdGVtLT50b2dnbGVkZWZhdWx0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAidG9nZ2xlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIixsYW5nKCJzZXR0cnVlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIndoYXQiPT4iZGVmYXVsdCIsIm5ld3ZhbCI9PjEpLCR0b2dnbGVwYXJhbXMpKTsNCgkJfQ0KCQlyZXR1cm4gJGl0ZW07DQoJfQ0KCWZ1bmN0aW9uIHNwbGl0X2ludG9fcGFnZXMoJGl0ZW1saXN0LCAkaWQsICRyZXR1cm5pZCwgJHBhcmFtcywgJGFjdGlvbj0iZGVmYXVsdCIsICRwcmV0dHl1cmxzPXRydWUpew0KCQkvLyBkZXByZWNhdGVkIC0gc2hvdWxkIHVzZSBmdW5jdGlvbiBwYWdpbmF0ZSBpbnN0ZWFkDQoJCXJldHVybiAkaXRlbWxpc3Q7DQoJfQ0KCWZ1bmN0aW9uIGdldF9xdWVyaWVzKCR3aGVyZT1hcnJheSgpLCAkYWRtaW49ZmFsc2UsICRpZD1mYWxzZSwgJHJldHVybmlkPWZhbHNlKXsNCgkJLy8gcmV0cml2ZXMgcXVlcmllcyBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBvYmplY3RzDQoJCWdsb2JhbCAkZ0NtczsNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX3NhdmVkX3F1ZXJpZXMiOw0KCQkkd2hlcmVjbGF1c2UgPSAiIjsNCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJaWYoY291bnQoJHdoZXJlKT4wKXsNCgkJCWZvcmVhY2goJHdoZXJlIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJJHdoZXJlY2xhdXNlIC49ICgkd2hlcmVjbGF1c2UgPT0gIiI/IiBXSEVSRSAiOiIgQU5EICIpLiRrZXkuIj0/IjsNCgkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCX0NCgkJfQ0KCQkkcXVlcnkgLj0gJHdoZXJlY2xhdXNlOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR3aGVyZXZhbHVlcyk7DQoJCSRpdGVtbGlzdCA9IGFycmF5KCk7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCQkJZm9yZWFjaCgkcm93IGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJJGl0ZW0tPiRrZXkgPSAkdmFsdWU7DQoJCQl9DQoJCQkkaXRlbS0+d2hlcmV2YWx1ZXMgPSB1bnNlcmlhbGl6ZSgkaXRlbS0+d2hlcmV2YWx1ZXMpOw0KCQkJaWYoIWlzX2FycmF5KCRpdGVtLT52YWx1ZXMpKQkkaXRlbS0+dmFsdWVzID0gYXJyYXkoKTsNCgkJCWlmKCRhZG1pbil7DQoJCQkJJGl0ZW0tPmFjdGlvbnMgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWxldGVxdWVyeSIsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIixsYW5nKCJkZWxldGUiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheSgicXVlcnlpZCI9PiRpdGVtLT5pZCkpOw0KCQkJCSRpdGVtLT5hY3Rpb25zIC49ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInRlc3RxdWVyeSIsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS92aWV3LmdpZiIsbGFuZygidmlldyIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5KCJxdWVyeWlkIj0+JGl0ZW0tPmlkKSk7DQoJCQl9DQoJCQkkaXRlbWxpc3RbXSA9ICRpdGVtOw0KCQl9DQoJCXJldHVybiAoY291bnQoJGl0ZW1saXN0KT4wPyRpdGVtbGlzdDpmYWxzZSk7DQoJfQ0KDQoJZnVuY3Rpb24gY3JlYXRlRmllbGRGb3JtKCR3aGF0LCRpZCwkYXNzaWduPXRydWUpew0KCQlyZXF1aXJlICJmdW5jdGlvbi5jcmVhdGVGaWVsZEZvcm0ucGhwIjsNCgl9DQoJDQoNCglmdW5jdGlvbiBidWlsZFdoZXJlKCR3aGVyZT1hcnJheSgpLCR3aGF0PSIiKXsNCgkJJG11bHRpcGxlbGlzdGZpZWxkcyA9IGFycmF5KCk7DQoJCSR3aGVyZWNsYXVzZSA9ICJBLmFjdGl2ZT0xIjsNCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkd2hlcmUgYXMgJGNsYXVzZSl7DQoJCQlpZihpbl9hcnJheSgkd2hhdC4iXyIuJGNsYXVzZVswXSwgJG11bHRpcGxlbGlzdGZpZWxkcykpew0KCQkJCS8vIGxpc3Qgd2l0aCBtdWx0aXBsZSBzZWxlY3RlZCB2YWx1ZXMgYXJlIHNhdmVkIGluIGEgc2VyaWFsaXplZCBhcnJheSwgc28gd2UgaGF2ZSB0byB0d2VhayB0aGUgdmFsdWUNCgkJCQkkY2xhdXNlWzFdID0gJyInLiRjbGF1c2VbMV0uJyInOw0KCQkJCSRjbGF1c2VbMl0gPSAxOw0KCQkJfQ0KCQkJaWYoJGNsYXVzZVswXSA9PSAicGFyZW50Iil7DQoJCQkJCSRjcml0ZXJpYSA9IGV4cGxvZGUoIiwiLCRjbGF1c2VbMV0pOw0KCQkJCQlpZihjb3VudCgkY3JpdGVyaWEpID4gMSl7DQoJCQkJCQkkdG1wID0gIiI7DQoJCQkJCQlmb3JlYWNoKCRjcml0ZXJpYSBhcyAkY3JpdCl7DQoJCQkJCQkJJHRtcCA9ICgkdG1wPT0iIj8iIjoiIE9SICIpLiJBLnBhcmVudD0iLiRjcml0Ow0KCQkJCQkJfQ0KCQkJCQkJJHRtcCA9ICIgQU5EICgiLiR0bXAuIikiOw0KCQkJCQl9ZWxzZXsNCgkJCQkJCSR0bXAgPSAiIEFORCBBLnBhcmVudD0/IjsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gJGNsYXVzZVsxXTsNCgkJCQkJfQ0KCQkJCQkkd2hlcmVjbGF1c2UgLj0gJHRtcDsNCgkJCQkNCgkJCX1lbHNlew0KCQkJCXN3aXRjaCgkY2xhdXNlWzJdKXsNCgkJCQkJY2FzZSAwOg0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIEEuIi4kY2xhdXNlWzBdLiI9PyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXSk7CQkJCQkNCgkJCQkJCWJyZWFrOw0KCQkJCQkNCgkJCQkJY2FzZSAxOg0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIEEuIi4kY2xhdXNlWzBdLiIgTElLRSAnJSIuYWRkc2xhc2hlcygkY2xhdXNlWzFdKS4iJSciOw0KCQkJCQkJYnJlYWs7DQoJCQkJCQ0KCQkJCQljYXNlIDI6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgQS4iLiRjbGF1c2VbMF0uIiAhPSA/IjsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gYWRkc2xhc2hlcygkY2xhdXNlWzFdKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQkJDQoJCQkJCWNhc2UgMzoNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCBBLiIuJGNsYXVzZVswXS4iID4gPyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXSk7CQkJCQkNCgkJCQkJCWJyZWFrOw0KCQkJCQkJDQoJCQkJCWNhc2UgNDoNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCBBLiIuJGNsYXVzZVswXS4iIDwgPyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXSk7CQkJCQkNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlIDU6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgKEEuIi4kY2xhdXNlWzBdLiIgPiA/IEFORCBBLiIuJGNsYXVzZVswXS4iIDwgPykiOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV1bMF0pOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV1bMV0pOw0KCQkJCQkJYnJlYWs7CQkJCQkNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGFycmF5KCR3aGVyZWNsYXVzZSwgJHdoZXJldmFsdWVzKTsNCgl9DQoJZnVuY3Rpb24gZ2V0V2hlcmVGcm9tUGFyYW1zKCRwYXJhbXMsICRodG1sZW5jb2RlZD1mYWxzZSl7DQoJCS8vIHVzZWQgZm9yIHF1ZXJ5IGNyZWF0aW9uIGFuZCBmcm9udGVuZCBhZHZhbmNlZCBzZWFyY2ggYWN0aW9uDQoJCS8vIHRyYW5zZm9ybXMgcGFyYW1ldGVycyBpbnRvICR3aGVyZSAtIGFuIGFycmF5IG9mIGNyaXRlcmlhOg0KCQkvLyAkd2hlcmVbXSA9IGFycmF5KCRmaWVsZG5hbWUsICRzZWFyY2h2YWx1ZSwgJGNvbXBhcmlzb25fdHlwZSkNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkd2hlcmUgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCRwYXJhbXMgYXMgJGtleT0+JHZhbHVlKXsNCgkJCWlmKHN1YnN0cigka2V5LDAsNikgPT0gImZpZWxkXyIgJiYgdHJpbSgkdmFsdWUpICE9ICIiKXsNCgkJCQkka2V5ID0gc3Vic3RyKCRrZXksNik7DQoJCQkJaWYoaXNfYXJyYXkoJHZhbHVlKSAmJiBjb3VudCgkdmFsdWUpPT0xKQkkdmFsdWUgPSAkdmFsdWVbMF07DQoJCQkJJGNvbXBhcmUgPSBpc3NldCgkcGFyYW1zWyJjb21wYXJlXyIuJGtleV0pPyRwYXJhbXNbImNvbXBhcmVfIi4ka2V5XTowOw0KCQkJCWlmKCR2YWx1ZSA9PSAiX19kYXRlX2ZpZWxkIil7DQoJCQkJCWlmKCRjb21wYXJlICE9ICJOQSIpew0KCQkJCQkJLy8gVGhlIGNvZGUgaXMgc3VjaCB0aGF0IHJlbW92aW5nIGFueSBwYXJ0IG9mIHRoZSB0aW1lIGlucHV0IGZyb20gdGhlIGZvcm0gd2lsbCByZXN1bHQgaW4gdXNpbmcgdGhlIGRlZmF1bHQgdmFsdWUNCgkJCQkJCSR0aW1laW5wdXRzID0gYXJyYXkoIkhvdXIiPT4iSCIsIk1pbnV0ZSI9PiJpIiwiU2Vjb25kIj0+InMiLCJNb250aCI9PiJuIiwiRGF5Ij0+ImoiLCJZZWFyIj0+IlkiKTsNCgkJCQkJCSRwYXJ0cyA9IGFycmF5KCk7DQoJCQkJCQlmb3JlYWNoKCR0aW1laW5wdXRzIGFzICRpbnB1dG5hbWU9PiRkYXRlcGFydCl7CQ0KCQkJCQkJCSRwYXJ0c1tdID0gKGlzc2V0KCRwYXJhbXNbImRhdGVfIi4ka2V5LiJfIi4kaW5wdXRuYW1lXSkpPyRwYXJhbXNbImRhdGVfIi4ka2V5LiJfIi4kaW5wdXRuYW1lXTpkYXRlKCRkYXRlcGFydCk7DQoJCQkJCQl9DQoJCQkJCQkkdmFsdWUgPSBta3RpbWUoJHBhcnRzWzBdLCRwYXJ0c1sxXSwkcGFydHNbMl0sJHBhcnRzWzNdLCRwYXJ0c1s0XSwkcGFydHNbNV0pOw0KCQkJCQkJJHZhbHVlID0gc3RyX3JlcGxhY2UoIlwnIiwiIiwkZGItPkRCVGltZVN0YW1wKCR2YWx1ZSkpOw0KCQkJCQkJDQoJCQkJCQlpZigkY29tcGFyZSA9PSA1KXsNCgkJCQkJCQkkcGFydHMgPSBhcnJheSgpOw0KCQkJCQkJCWZvcmVhY2goJHRpbWVpbnB1dHMgYXMgJGlucHV0bmFtZT0+JGRhdGVwYXJ0KXsJDQoJCQkJCQkJCSRwYXJ0c1tdID0gKGlzc2V0KCRwYXJhbXNbImRhdGVfIi4ka2V5LiJfcGFydDJfIi4kaW5wdXRuYW1lXSkpPyRwYXJhbXNbImRhdGVfIi4ka2V5LiJfcGFydDJfIi4kaW5wdXRuYW1lXTpkYXRlKCRkYXRlcGFydCk7DQoJCQkJCQkJfQ0KCQkJCQkJCSR2YWx1ZTIgPSBta3RpbWUoJHBhcnRzWzBdLCRwYXJ0c1sxXSwkcGFydHNbMl0sJHBhcnRzWzNdLCRwYXJ0c1s0XSwkcGFydHNbNV0pOw0KCQkJCQkJCSR2YWx1ZTIgPSBzdHJfcmVwbGFjZSgiXCciLCIiLCRkYi0+REJUaW1lU3RhbXAoJHZhbHVlMikpOw0KCQkJCQkJCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgYXJyYXkoJHZhbHVlLCR2YWx1ZTIpLCAkY29tcGFyZSk7DQoJCQkJCQl9ZWxzZXsJDQoJCQkJCQkJJHdoZXJlW10gPSBhcnJheSgka2V5LCAkdmFsdWUsICRjb21wYXJlKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX1lbHNlew0KCQkJCQlpZihpc19hcnJheSgkdmFsdWUpKXsNCgkJCQkJCWZvcmVhY2goJHZhbHVlIGFzICRvbmV2YWx1ZSkJJHdoZXJlW10gPSBhcnJheSgka2V5LCAkb25ldmFsdWUsIDEpOw0KCQkJCQl9ZWxzZWlmKCRjb21wYXJlID09IDEpew0KCQkJCQkJJGtleXdvcmRzID0gJHRoaXMtPnBhcnNla2V5d29yZHMoJHZhbHVlKTsNCgkJCQkJCWZvcmVhY2goJGtleXdvcmRzIGFzICR2YWx1ZSl7DQoJCQkJCQkJaWYoJGh0bWxlbmNvZGVkKQkkdmFsdWUgPSBodG1sX2VudGl0eV9kZWNvZGUoJHZhbHVlKTsNCgkJCQkJCQkkdmFsdWUgPSBhZGRzbGFzaGVzKCR2YWx1ZSk7CQkJCQkJCQ0KCQkJCQkJCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJHZhbHVlLCAkY29tcGFyZSk7DQoJCQkJCQl9DQoJCQkJCX1lbHNlew0KCQkJCQkJaWYoJGh0bWxlbmNvZGVkKQkkdmFsdWUgPSBodG1sX2VudGl0eV9kZWNvZGUoJHZhbHVlKTsNCgkJCQkJCSR2YWx1ZSA9IGFkZHNsYXNoZXMoJHZhbHVlKTsNCgkJCQkJCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJHZhbHVlLCAkY29tcGFyZSk7DQoJCQkJCX0NCgkJCQl9CQkJCQ0KCQkJfQ0KCQl9CQkNCgkJcmV0dXJuICR3aGVyZTsNCgl9DQoNCglmdW5jdGlvbiBnZXRfbGV2ZWxfY2F0ZWdvcnkoJHdoZXJlPWFycmF5KCksJGFkbWluPWZhbHNlLCRpZD0iIiwkcmV0dXJuaWQ9IiIsJG9yZGVyPWZhbHNlLCRsaW1pdD0wLCRjdXN0b213aGVyZT1mYWxzZSwkY3VzdG9tdmFsdWVzPWFycmF5KCksJGN1c3RvbW9yZGVyPWZhbHNlKXsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkbG9hZF9uYmNoaWxkcmVuID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxvYWRfbmJjaGlsZHJlbiIsdHJ1ZSk7DQoJCWlmKCRhZG1pbikJJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJCWlmKCEkb3JkZXIpCSRvcmRlciA9ICIiOw0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRmaWVsZHMgPSBhcnJheSgiZGVzY3JpcHRpb24iLCJpZCIsIm5hbWUiLCJhbGlhcyIsIml0ZW1fb3JkZXIiLCJhY3RpdmUiLCJpc2RlZmF1bHQiKTsNCgkJDQoJCSR3aGVyZXN0cmluZyA9ICIiOw0KCQkkd2hlcmV2YWx1ZXMgPSBhcnJheSgpOw0KCQkNCg0KCQlpZigkY3VzdG9td2hlcmUpew0KCQkJJHdoZXJlc3RyaW5nID0gJGN1c3RvbXdoZXJlOw0KCQkJJHdoZXJldmFsdWVzID0gJGN1c3RvbXZhbHVlczsNCgkJfWVsc2V7DQoJCQlmb3JlYWNoKCR3aGVyZSBhcyAka2V5PT4kdmFsdWUpew0KCQkJCWlmKGluX2FycmF5KHN0cnRvbG93ZXIoJGtleSksICRmaWVsZHMpKXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBBTkQgIikuJGtleS4iPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX2NhdGVnb3J5IEEgIi4oJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgV0hFUkUgIi4kd2hlcmVzdHJpbmcpOw0KCQlpZigkY3VzdG9tb3JkZXIpew0KCQkJJHF1ZXJ5IC49ICIgT1JERVIgQlkgQS4iLiRjdXN0b21vcmRlcjsNCgkJfWVsc2VpZigkb3JkZXIgPT0gIm1vZGlmaWVkIil7DQoJCQkkcXVlcnkgLj0gIiBPUkRFUiBCWSBBLmRhdGVfbW9kaWZpZWQgREVTQyI7DQoJCX1lbHNlaWYoJG9yZGVyID09ICJjcmVhdGVkIil7DQoJCQkkcXVlcnkgLj0gIiBPUkRFUiBCWSBBLmlkIERFU0MiOwkNCgkJfWVsc2VpZiggJG9yZGVyICE9ICIiICYmIGluX2FycmF5KHN0cnRvbG93ZXIoJG9yZGVyKSwgJGZpZWxkcykgKXsNCgkJCSRxdWVyeSAuPSAiIE9SREVSIEJZIEEuIi4kb3JkZXI7DQoJCX1lbHNlaWYoICRvcmRlciAhPSAiIiAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWxsb3dfY29tcGxleF9vcmRlciIsZmFsc2UpICl7DQoJCQkkcXVlcnkgLj0gIiBPUkRFUiBCWSAiLiRvcmRlcjsNCgkJfWVsc2V7DQoJCQkkcXVlcnkgLj0gIiBPUkRFUiBCWSBBLml0ZW1fb3JkZXIiOw0KCQl9CQ0KDQoJCWlmKCRsaW1pdCAmJiAkbGltaXQgIT0gIjAiICYmICRsaW1pdCAhPSAiIikJJHF1ZXJ5IC49ICIgTElNSVQgIi4kbGltaXQ7DQoNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkd2hlcmV2YWx1ZXMpOw0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCQkkaWRsaXN0ID0gIiI7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCQkJJGl0ZW0tPl9fd2hhdCA9ICJjYXRlZ29yeSI7DQoJCQlmb3JlYWNoKCRyb3cgYXMgJGtleT0+JHZhbHVlKXsNCgkJCQkkaXRlbS0+JGtleSA9ICR2YWx1ZTsNCgkJCX0NCgkJCSRpdGVtLT5kZXNjcmlwdGlvbiA9IHN0cmlwc2xhc2hlcygkaXRlbS0+ZGVzY3JpcHRpb24pOw0KCQkJJGl0ZW0tPm5hbWUgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPm5hbWUpOw0KCQkJJGl0ZW0tPmFsaWFzID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5hbGlhcyk7DQoNCgkJCWlmKCRhZG1pbiA9PSB0cnVlKXsNCgkJCQkvLyAkcGFybXMgd2lsbCBiZSB0aGUgYmFzZSBmb3IgcGFyYW1ldGVycyBvZiB0aGUgYWRtaW4gbGlua3MNCgkJCQkkcGFybXMgPSBhcnJheSgNCgkJCQkJInByZWZpeCI9PiJBIiwNCgkJCQkJInRhYmxlbmFtZSI9PiJ5b3V0dWJlcGxheWVyX2NhdGVnb3J5IiwNCgkJCQkJImxldmVsbmFtZSI9PiJjYXRlZ29yeSIsDQoJCQkJCSJjaGlsZCI9PiJ5b3V0dWJlcGxheWVyX3ZpZGVvcyIsDQoJCQkJCSJwYXJlbnRkZWZhdWx0Ij0+ZmFsc2UsDQoJCQkJCSJvcmRlcmJ5cGFyZW50Ij0+dHJ1ZSwNCgkJCQkJInNoYXJlY2hpbGRyZW4iPT5mYWxzZSwNCgkJCQkJInNoYXJlZGJ5cGFyZW50cyI9PmZhbHNlDQoJCQkJCSk7DQoJCQkJJGl0ZW0gPSAkdGhpcy0+YWRkYWRtaW5saW5rcygkaXRlbSwkcGFybXMsJGlkLCRyZXR1cm5pZCk7DQoJCQl9DQoJCQkkaWRsaXN0IC49ICgkaWRsaXN0PT0iIj8iIjoiIE9SICIpLiIgcGFyZW50PSciLiRpdGVtLT5pZC4iJyI7DQoJCQlhcnJheV9wdXNoKCRpdGVtbGlzdCwkaXRlbSk7DQoJCX0NCg0KCQlpZigkYWRtaW4gfHwgJGxvYWRfbmJjaGlsZHJlbil7DQoJCQkkbmJjaGlsZHJlbnMgPSBhcnJheSgpOw0KCQkJJHF1ZXJ5ID0gIlNFTEVDVCBwYXJlbnQsIGNvdW50KGlkKSBuYmNoaWxkcmVuIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3ZpZGVvcyBXSEVSRSAoIi4kaWRsaXN0LiIpICIuKCRhZG1pbj8iIjoiQU5EIGFjdGl2ZT0xICIpLiJHUk9VUCBCWSBwYXJlbnQiOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkJJG5iY2hpbGRyZW5zWyRyb3dbInBhcmVudCJdXSA9ICRyb3dbIm5iY2hpbGRyZW4iXTsNCgkJCSRuZXdsaXN0ID0gYXJyYXkoKTsNCgkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJCQkkaXRlbS0+bmJjaGlsZHJlbiA9IGlzc2V0KCRuYmNoaWxkcmVuc1skaXRlbS0+aWRdKT8kbmJjaGlsZHJlbnNbJGl0ZW0tPmlkXTpmYWxzZTsNCgkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7DQoJCQl9DQoJCQkkaXRlbWxpc3QgPSAkbmV3bGlzdDsNCgkJfQ0KCQlyZXR1cm4gJGl0ZW1saXN0Ow0KCX0NCg0KCWZ1bmN0aW9uIGdldF9sZXZlbF92aWRlb3MoJHdoZXJlPWFycmF5KCksJGFkbWluPWZhbHNlLCRpZD0iIiwkcmV0dXJuaWQ9IiIsJG9yZGVyPWZhbHNlLCRsaW1pdD0wLCRjdXN0b213aGVyZT1mYWxzZSwkY3VzdG9tdmFsdWVzPWFycmF5KCksJGN1c3RvbW9yZGVyPWZhbHNlKXsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkbG9hZF9uYmNoaWxkcmVuID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxvYWRfbmJjaGlsZHJlbiIsdHJ1ZSk7DQoJCWlmKCRhZG1pbikJJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJCWlmKCEkb3JkZXIpCSRvcmRlciA9ICIiOw0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRmaWVsZHMgPSBhcnJheSgidmlkZW9pZCIsImRlc2NyaXB0aW9uIiwicGFyZW50IiwiaWQiLCJuYW1lIiwiYWxpYXMiLCJpdGVtX29yZGVyIiwiYWN0aXZlIiwiaXNkZWZhdWx0Iik7DQoJCQ0KCQkkd2hlcmVzdHJpbmcgPSAiIjsNCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJDQoNCgkJaWYoJGN1c3RvbXdoZXJlKXsNCgkJCSR3aGVyZXN0cmluZyA9ICRjdXN0b213aGVyZTsNCgkJCSR3aGVyZXZhbHVlcyA9ICRjdXN0b212YWx1ZXM7DQoJCX1lbHNlew0KCQkJZm9yZWFjaCgkd2hlcmUgYXMgJGtleT0+JHZhbHVlKXsNCgkJCQlpZigka2V5ID09ICJwYXJlbnQiKXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBBTkQgIikuIkIuYWxpYXM9PyI7DQoJCQkJCSR3aGVyZXZhbHVlc1tdID0gJHZhbHVlOw0KCQkJCX1lbHNlaWYoJGtleSA9PSAicGFyZW50X2lkIil7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiJCLmlkPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9ZWxzZWlmKGluX2FycmF5KHN0cnRvbG93ZXIoJGtleSksICRmaWVsZHMpKXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBBTkQgIikuIkEuIi4ka2V5LiI9PyI7DQoJCQkJCSR3aGVyZXZhbHVlc1tdID0gJHZhbHVlOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkNCgkJJHF1ZXJ5ID0gIlNFTEVDVCBBLiosIEIuaWQgcGFyZW50X2lkLCBCLm5hbWUgcGFyZW50X25hbWUsIEIuYWxpYXMgcGFyZW50X2FsaWFzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV95b3V0dWJlcGxheWVyX3ZpZGVvcyBBLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3lvdXR1YmVwbGF5ZXJfY2F0ZWdvcnkgQiBXSEVSRSBBLnBhcmVudCA9IEIuaWQgIi4oJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiR3aGVyZXN0cmluZzsNCgkJaWYoJGN1c3RvbW9yZGVyKXsNCgkJCSAkcXVlcnkgLj0gIiBPUkRFUiBCWSBBLiIuJGN1c3RvbW9yZGVyOw0KCQl9ZWxzZWlmKCRvcmRlciA9PSAibW9kaWZpZWQiKXsNCgkJCSAkcXVlcnkgLj0gIiBPUkRFUiBCWSBBLmRhdGVfbW9kaWZpZWQgREVTQyI7DQoJCX1lbHNlaWYoJG9yZGVyID09ICJjcmVhdGVkIil7DQoJCQkgJHF1ZXJ5IC49ICIgT1JERVIgQlkgQS5pZCBERVNDIjsNCgkJfWVsc2VpZiggJG9yZGVyICE9ICIiICYmIGluX2FycmF5KHN0cnRvbG93ZXIoJG9yZGVyKSwgJGZpZWxkcykgKXsNCgkJCSRxdWVyeSAuPSAiIE9SREVSIEJZIEEuIi4kb3JkZXI7DQoJCX1lbHNlaWYoICRvcmRlciAhPSAiIiAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWxsb3dfY29tcGxleF9vcmRlciIsZmFsc2UpICl7DQoJCQkkcXVlcnkgLj0gIiBPUkRFUiBCWSAiLiRvcmRlcjsNCgkJfWVsc2V7DQoJCQkgJHF1ZXJ5IC49ICIgT1JERVIgQlkgQi5pdGVtX29yZGVyLCBBLml0ZW1fb3JkZXIiOw0KCQl9DQoJCWlmKCRsaW1pdCAmJiAkbGltaXQgIT0gIjAiICYmICRsaW1pdCAhPSAiIikJJHF1ZXJ5IC49ICIgTElNSVQgIi4kbGltaXQ7DQoNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkd2hlcmV2YWx1ZXMpOw0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCQkkaWRsaXN0ID0gIiI7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCQkJJGl0ZW0tPl9fd2hhdCA9ICJ2aWRlb3MiOw0KCQkJZm9yZWFjaCgkcm93IGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJJGl0ZW0tPiRrZXkgPSAkdmFsdWU7DQoJCQl9DQoJCQkkaXRlbS0+dmlkZW9pZCA9IHN0cmlwc2xhc2hlcygkaXRlbS0+dmlkZW9pZCk7DQoJCQkkaXRlbS0+ZGVzY3JpcHRpb24gPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPmRlc2NyaXB0aW9uKTsNCgkJCSRpdGVtLT5uYW1lID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5uYW1lKTsNCgkJCSRpdGVtLT5hbGlhcyA9IHN0cmlwc2xhc2hlcygkaXRlbS0+YWxpYXMpOw0KCQkkaXRlbS0+bmJjaGlsZHJlbiA9IGZhbHNlOw0KCQkNCgkJCWlmKCRhZG1pbiA9PSB0cnVlKXsNCgkJCQkvLyAkcGFybXMgd2lsbCBiZSB0aGUgYmFzZSBmb3IgcGFyYW1ldGVycyBvZiB0aGUgYWRtaW4gbGlua3MNCgkJCQkkcGFybXMgPSBhcnJheSgNCgkJCQkJInByZWZpeCI9PiJCIiwNCgkJCQkJInRhYmxlbmFtZSI9PiJ5b3V0dWJlcGxheWVyX3ZpZGVvcyIsDQoJCQkJCSJsZXZlbG5hbWUiPT4idmlkZW9zIiwNCgkJCQkJImNoaWxkIj0+ZmFsc2UsDQoJCQkJCSJwYXJlbnRkZWZhdWx0Ij0+ZmFsc2UsDQoJCQkJCSJvcmRlcmJ5cGFyZW50Ij0+dHJ1ZSwNCgkJCQkJInNoYXJlY2hpbGRyZW4iPT5mYWxzZSwNCgkJCQkJInNoYXJlZGJ5cGFyZW50cyI9PmZhbHNlDQoJCQkJCSk7DQoJCQkJJGl0ZW0gPSAkdGhpcy0+YWRkYWRtaW5saW5rcygkaXRlbSwkcGFybXMsJGlkLCRyZXR1cm5pZCk7DQoJCQl9DQoJCQkkaWRsaXN0IC49ICgkaWRsaXN0PT0iIj8iIjoiIE9SICIpLiIgcGFyZW50PSciLiRpdGVtLT5pZC4iJyI7DQoJCQlhcnJheV9wdXNoKCRpdGVtbGlzdCwkaXRlbSk7DQoJCX0NCg0KCQlyZXR1cm4gJGl0ZW1saXN0Ow0KCX0NCglmdW5jdGlvbiBwbFJlc2l6ZSgkZnVsbHBhdGgsICRuZXdwYXRoLCAkbmV3d2lkdGgsICRuZXdoZWlnaHQ9ZmFsc2UsICR0cmFuc3BhcmVuY3k9ZmFsc2UsICRjcm9wPWZhbHNlKSB7DQoJCXJlcXVpcmUgImZ1bmN0aW9uLnBscmVzaXplLnBocCI7DQoJCXJldHVybiAkcmV0dXJuOw0KCX0NCgkNCglmdW5jdGlvbiBwbEdldEZpbGVJbmZvKCRmaWxlcGF0aCl7DQoJCWlmKCFmaWxlX2V4aXN0cygkZmlsZXBhdGgpKQlyZXR1cm4gZmFsc2U7DQoJCXJlcXVpcmUgImZ1bmN0aW9uLnBsR2V0RmlsZUluZm8ucGhwIjsNCgkJcmV0dXJuICRpbmZvOw0KCX0NCgkNCglmdW5jdGlvbiB1cGxvYWRfY2hlY2tmaWxlbmFtZSgkZmlsZW5hbWUsICRkaXIpew0KCQkvLyBpZiBhIGZpbGUgb2YgdGhhdCBuYW1lIGV4aXN0cywgYXBwZW5kcyBudW1iZXIgdG8gdGhlIGZpbGVuYW1lDQoJCSR0bXBmaWxlbmFtZSA9IHN0cl9yZXBsYWNlKCIgIiwiXyIsJGZpbGVuYW1lKTsNCgkJJGV4dGVuc2lvbiA9IHN0cnJjaHIoJHRtcGZpbGVuYW1lLCAiLiIpOw0KCQkkY2xlYW5maWxlbmFtZSA9IHN0cl9yZXBsYWNlKCRleHRlbnNpb24sICIiLCAkdG1wZmlsZW5hbWUpOw0KDQoJCSRkZXN0ZGlyID0gJGRpci4kdG1wZmlsZW5hbWU7DQoJCSRpID0gMTsNCgkJd2hpbGUoZmlsZV9leGlzdHMoJGRlc3RkaXIpKXsNCgkJCSR0bXBmaWxlbmFtZSA9ICRjbGVhbmZpbGVuYW1lLiJfIi4kaS4kZXh0ZW5zaW9uOw0KCQkJJGRlc3RkaXIgPSAkZGlyLiR0bXBmaWxlbmFtZTsNCgkJCSRpKys7DQoJCX0NCgkJcmV0dXJuICR0bXBmaWxlbmFtZTsNCgl9DQoJDQoJZnVuY3Rpb24gcGxVcGxvYWRGaWxlKCRmaWxlLCAkZGVzdGluYXRpb249IiIsICRyZXNpemU9ZmFsc2UsICRjcm9wPWZhbHNlKXsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkZGlyID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uc3RyX3JlcGxhY2UoIi8vIiwiLyIsIi8iLiRkZXN0aW5hdGlvbi4iLyIpOw0KCQkNCgkJJGZpbGVuYW1lID0gJHRoaXMtPnVwbG9hZF9jaGVja2ZpbGVuYW1lKCRmaWxlWyJuYW1lIl0sJGRpcik7DQoJCQ0KCQlpZiAoY21zX21vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZVsidG1wX25hbWUiXSwgJGRpci4kZmlsZW5hbWUpKSB7DQoJCQlpZigkcmVzaXplICYmICFpc19hcnJheSgkcmVzaXplKSkJJHJlc2l6ZSA9IGV4cGxvZGUoIngiLCRyZXNpemUpOw0KCQkJaWYoJHJlc2l6ZSAmJiBjb3VudCgkcmVzaXplKSA9PSAyKSAkdGhpcy0+cGxSZXNpemUoJGRpci4kZmlsZW5hbWUsICcnLCAkcmVzaXplWzBdLCAkcmVzaXplWzFdLHRydWUsJGNyb3ApOw0KCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCIvLyIsIi8iLCIvIi4kZGVzdGluYXRpb24uIi8iLiRmaWxlbmFtZSk7DQoJCX1lbHNlew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJfQ0KCQ0KCWZ1bmN0aW9uIHBsQXNzaWduRmlsZSgkZmlsZXBhdGgsICR0YWJsZSwgJGl0ZW1pZCwgJGZpZWxkLCAkdGh1bWJzaXplPWZhbHNlLCAkY3JvcHRodW1iPWZhbHNlKXsNCgkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycuJHRhYmxlOw0KCQkkZmlsZXBhdGggPSBzdHJfcmVwbGFjZSgiLy8iLCIvIiwkZmlsZXBhdGgpOw0KDQoJCWlmKCR0aHVtYnNpemUgJiYgIWlzX2FycmF5KCR0aHVtYnNpemUpKQkkdGh1bWJzaXplID0gZXhwbG9kZSgieCIsJHRodW1ic2l6ZSk7DQoJCWlmKCAkZmlsZXBhdGggIT0gIiIgJiYgJHRodW1ic2l6ZSAmJiBjb3VudCgkdGh1bWJzaXplKSA9PTIgKSB7DQoJCQlnbG9iYWwgJGdDbXM7DQoJCQkkYmFzZXBhdGggPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXTsNCgkJCSRleHBsb2RlZCA9IGV4cGxvZGUoIi8iLCRmaWxlcGF0aCk7DQoJCQkkZXhwbG9kZWRbY291bnQoJGV4cGxvZGVkKS0xXSA9ICJwbHRodW1iXyIuJGV4cGxvZGVkW2NvdW50KCRleHBsb2RlZCktMV07DQoJCQkkdGh1bWJwYXRoID0gaW1wbG9kZSgiLyIsJGV4cGxvZGVkKTsNCgkJCSR0aGlzLT5wbFJlc2l6ZSgkYmFzZXBhdGguIi8iLiRmaWxlcGF0aCwgJGJhc2VwYXRoLiIvIi4kdGh1bWJwYXRoLCAkdGh1bWJzaXplWzBdLCAkdGh1bWJzaXplWzFdLCB0cnVlLCAkY3JvcHRodW1iKTsNCgkJfQ0KDQoJCSRkYiA9ICR0aGlzLT5HZXREYigpOw0KDQoJCWlmKCAkdGFibGUgPT0gJHRoaXMtPkdldE5hbWUoKS4iX211bHRpcGxlZmlsZXNmaWVsZHMiICkgew0KCQkJJG5ld2lkID0gJGRiLT5HZW5JRCgkdGFibGVuYW1lLiJfc2VxIik7DQoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gJHRhYmxlbmFtZSBTRVQgZmlsZWlkPT8sIGl0ZW1pZD0/LCBmaWVsZG5hbWU9PywgZmlsZXBhdGg9PyI7DQoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoJG5ld2lkLCAkaXRlbWlkLCAkZmllbGQsICRmaWxlcGF0aCkgKTsNCgkJfWVsc2V7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUICRmaWVsZD0/IFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRmaWxlcGF0aCwkaXRlbWlkKSk7DQoJCX0NCgkJDQoJCXJldHVybiAkZGJyZXN1bHQ7DQoJfQ0KCWZ1bmN0aW9uIGdldEZpbGVDb250ZW50KCRmaWxlbmFtZSl7DQoJCS8vIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgYSBmaWxlDQoJCSRmaWxlcGF0aCA9IGRpcm5hbWUoX19GSUxFX18pLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGVuYW1lOw0KCQlpZihmaWxlX2V4aXN0cygkZmlsZXBhdGgpKXsNCgkJCSRmaGFuZGxlID0gZm9wZW4oJGZpbGVwYXRoLCAicisiKTsNCgkJCSRjb250ZW50ID0gZnJlYWQoJGZoYW5kbGUsIGZpbGVzaXplKCRmaWxlcGF0aCkpOw0KCQkJcmV0dXJuICRjb250ZW50Ow0KCQl9ZWxzZXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCX0NCg0KfQ0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/youtubeplayer_auto_export.dna</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YToyOntzOjU6ImluZm9zIjthOjE0OntzOjQ6Im5hbWUiO3M6MTM6InlvdXR1YmVwbGF5ZXIiO3M6MTI6ImZyaWVuZGx5bmFtZSI7czoxMzoiWW91VHViZVBsYXllciI7czoxMToiZGVzY3JpcHRpb24iO3M6MjA6IkVtYmVkIFlvdVR1YmUgUGxheWVyIjtzOjg6Im5ibGV2ZWxzIjtzOjE6IjIiO3M6MTM6InRlbXBsYXRlbGV2ZWwiO3M6MToiMCI7czo5OiJkb3VwZ3JhZGUiO2I6MDtzOjE0OiJ1cGdyYWRlcXVlcmllcyI7YTowOnt9czoxMzoibW9kaWZpY2F0aW9ucyI7YTowOnt9czoxMjoibmFtZW9mbW9kdWxlIjtzOjEzOiJ5b3V0dWJlcGxheWVyIjtzOjc6InZlcnNpb24iO3M6MzoiMS4wIjtzOjExOiJkZWxldGVmaWxlcyI7YjowO3M6MTM6ImVkaXRhYmxlYWxpYXMiO2I6MDtzOjc6ImRvZmVhZGQiO3M6MToiMCI7czo5OiJsYW5nZmlsZXMiO2E6MTp7aTowO3M6OToiZW5fVVMucGhwIjt9fXM6NjoibGV2ZWxzIjthOjI6e2k6MDthOjEwOntpOjA7czo4OiJjYXRlZ29yeSI7aToxO3M6MToiQSI7aToyO3M6MToiMCI7aTozO3M6MToiMSI7aTo2O3M6MToiMSI7aTo3O3M6MToiMCI7aTo4O3M6MToiMSI7aTo5O2E6Mjp7aTowO3M6ODoiQ2F0ZWdvcnkiO2k6MTtzOjEwOiJDYXRlZ29yaWVzIjt9aTo0O2E6MTp7aTowO2E6ODp7aTowO3M6MTE6ImRlc2NyaXB0aW9uIjtpOjc7czoxMToiRGVzY3JpcHRpb24iO2k6MTtzOjE6IjQiO2k6MjtzOjE6IjAiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6MDoiIjtzOjU6InRodW1iIjtzOjA6IiI7czo0OiJzaXplIjtzOjA6IiI7czoxMToiaW5uZXJzZWFyY2giO3M6MToiMSI7czo0OiJjcm9wIjtzOjE6IjAiO3M6NzoiZmlsZWV4dCI7czowOiIiO3M6OToiY3JvcHRodW1iIjtzOjE6IjAiO31pOjY7YTowOnt9fX1pOjU7czoyMToibmFtZSxhY3RpdmUsbW92ZWxpbmtzIjt9aToxO2E6MTA6e2k6MDtzOjY6InZpZGVvcyI7aToxO3M6MToiQiI7aToyO2k6MDtpOjM7czoxOiIyIjtpOjY7czoxOiIxIjtpOjc7czoxOiIwIjtpOjg7czoxOiIwIjtpOjk7YToyOntpOjA7czo1OiJWaWRlbyI7aToxO3M6NjoiVmlkZW9zIjt9aTo0O2E6Mjp7aTowO2E6ODp7aTowO3M6NzoidmlkZW9pZCI7aTo3O3M6ODoiVmlkZW8gSUQiO2k6MTtzOjE6IjQiO2k6MjtzOjE6IjEiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6MDoiIjtzOjU6InRodW1iIjtzOjA6IiI7czo0OiJzaXplIjtzOjA6IiI7czoxMToiaW5uZXJzZWFyY2giO3M6MToiMSI7czo0OiJjcm9wIjtzOjE6IjAiO3M6NzoiZmlsZWV4dCI7czowOiIiO3M6OToiY3JvcHRodW1iIjtzOjE6IjAiO31pOjY7YTowOnt9fWk6MTthOjg6e2k6MDtzOjExOiJkZXNjcmlwdGlvbiI7aTo3O3M6MTc6IlZpZGVvIERlc2NyaXB0aW9uIjtpOjE7czoxOiI0IjtpOjI7czoxOiIxIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czowOiIiO3M6MTE6ImlubmVyc2VhcmNoIjtzOjE6IjEiO3M6NDoiY3JvcCI7czoxOiIwIjtzOjc6ImZpbGVleHQiO3M6MDoiIjtzOjk6ImNyb3B0aHVtYiI7czoxOiIwIjt9aTo2O2E6MDp7fX19aTo1O3M6MzE6Im5hbWUsYWN0aXZlLGlzZGVmYXVsdCxtb3ZlbGlua3MiO319fQ==]]></data>
	</file>
</module>
