<?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>UpCoupon</name>
	<version>0.0.9</version>
  <mincmsversion>1.10.3</mincmsversion>
	<help><![CDATA[PGgyPkRvY3VtZW50YXRpb248L2gyPgoKVGhlIFVwQ291cG9uIG1vZHVsZSBoYXMgYmVlbiBkZXZlbG9wZWQgZm9yIGEgc2hvcCBvd25lcnMgYXNzb2NpYXRpb24uIEVhY2ggeWVhciB0aGUgYXNzb2NpYXRpb24gb3JnYW5pemVzIGEgbG90dGVyeSBhbW9uZ3N0IGl0cyBjdXN0b21lcnMuIFdoZW4gb25lIHNwZW5kcyBhbiB4IGFtb3VudCBpbiBhIHBhcnRpY2lwYXRpbmcgc2hvcCwgb25lIHJlY2VpdmVzIGEgdm91Y2hlciB3aXRoIGEgJ0NvdXBvbiBDb2RlJy4gCgpUbyBqb2luIHRoZSBsb3R0ZXJ5LCB0aGUgY3VzdG9tZXIgaGFzIHRvIGVudGVyIHRoZSAnQ291cG9uIENvZGUnIG9uIHRoZSBhc3Nvc2lhdGlvbi13ZWJzaXRlLCB0b2dldGhlciB3aXRoIG90aGVyIGRldGFpbHMsIHN1Y2ggYXMgbmFtZSBhbmQgYWRkcmVzcy4gPGJyIC8+PGJyIC8+Cgo8aDI+VGhlIGFkbWluIGludGVyZmFjZSBvZiB0aGlzIG1vZHVsZSBoYXMgdmFyaW91cyBmdW5jdGlvbmFsaXRpZXM6PC9oMj48YnIgLz4KCjxiPkNvdXBvbiBBY3Rpb25zPC9iPiAtIHRhYiA8YnIgLz4KCkhlcmUgeW91IGNhbiBhZGQgc2V2ZXJhbCBsb3R0ZXJpZXMuIDxiciAvPgoKU3VjaCBhcyBhIHN1bW1lciBsb3R0ZXJ5IG9yIGEgd2ludGVyIGxvdHRlcnkuIEVhY2ggbG90dGVyeSBuZWVkcyB0byBoYXZlIGEgdGl0bGUsIGFsaWFzLCBkZXNjcmlwdGlvbiwgc3RhcnRkYXRlLCBlbmRkYXRlIGFuZCBzdGF0dXMuIDxiciAvPjxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVGhlIHN0YXJ0ZGF0ZSBvZiB0aGUgJ0NvdXBvbiBBY3Rpb24nIGFsd2F5cyBoYXMgdG8gYmUgYW4gZWFybGllciBkYXRlIHRoYW4gdGhlIGVuZGRhdGUuIDxiciAvPjxiciAvPgoKPGI+Q291cG9uIFBlcmlvZHM8L2I+IC0gdGFiIDxiciAvPgoKSGVyZSB0aGUgcGVyaW9kcyBpbiB3aGljaCB0aGUgZHJhdyhzKSB0YWtlKHMpIHBsYWNlIGNhbiBiZSBhZGRlZC4gPGJyIC8+CgpUaGUgc3VtbWVyIGxvdHRlcnkgY291bGQgZm9yIGluc3RhbmNlIGhhdmUgZm91ciB3ZWVrbHkgZHJhd3MgYW5kIGEgZmluYWwgZHJhdyBhdCB0aGUgZW5kIG9mIHRoZSBwZXJpb2QuIEVhY2ggJyBDb3Vwb24gUGVyaW9kJyBuZWVkcyB0byBoYXZlIGEgY291cG9uX2FjdGllIChhcyBzdWJtaXR0ZWQgdW5kZXIgJyBDb3Vwb24gQWN0aW9ucycpLCB0aXRsZSwgc3RhcnRkYXRlLCBlbmRkYXRlLCBGaW5hbCBkcmF3ICh5ZXMvbm8pIGFuZCBzdGF0dXMuIDxiciAvPjxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVGhlIHN0YXJ0ZGF0ZSBvZiB0aGUgJ0NvdXBvbiBQZXJpb2QnIGFsd2F5cyBoYXMgdG8gYmUgYW4gZWFybGllciBkYXRlIHRoYW4gdGhlIGVuZGRhdGUgYW5kIGhhcyB0byBvY2N1ciB3aXRoaW4gdGhlIHN0YXJ0LSBhbmQgZW5kZGF0ZSBvZiB0aGUgJyBDb3Vwb24gQWN0aW9uJy48YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IFVzdWFsbHkgYWxsIGN1c3RvbWVycyBwYXJ0aWNpcGF0aW5nIGluIHRoZSBsb3R0ZXJ5IGhhdmUgYSBjaGFuY2Ugb24gd2lubmluZyB0aGUgZmluYWwgZHJhdy4gVGhlcmVmb3JlIHRoZSBwZXJpb2Qgb2YgdGhlICdGaW5hbCBkcmF3JyB1c3VhbGx5IHN0YXJ0cyBhdCB0aGUgc3RhcnRkYXRlIG9mIHRoZSAnQ291cG9uIEFjdGlvbicgdXAgYW5kIHVudGlsIHRoZSBlbmRkYXRlIG9mIHRoZSAnQ291cG9uIEFjdGlvbicuICA8YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+VGlwPC9iPjwvZm9udD4gTWFrZSBzdXJlIHRoYXQgdGhlIHN0YXJ0ZGF0ZSBzdGFydHMgYXQgMDA6MDA6MDAgYW5kIGVuZHMgYXQgMjM6NTk6NTkuIEluIGRvaW5nIHNvLCBhIGxvdHRlcnkgb3IgcGVyaW9kIHJ1bnMgZm9yIDI0IGhvdXJzIChhbiBlbnRpcmUgY2FsZW5kZXIgZGF5KS48YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+VGlwPC9iPjwvZm9udD4gVGhlICdDb3Vwb24gUGVyaW9kJyBpcyBieSBkZWZhdWx0IHNvcnRlZCBieSBlbmRkYXRlLiBCeSBhZGp1c3RpbmcgdGhlIGVuZGRhdGUtdGltZSB3aXRoIGp1c3Qgb25lIHNlY29uZCwgdGhlIG9yZGVyIGlzIGFkanVzdGVkIGFzIHdlbGwuIEl0IHdvdWxkIGJlIHN0cmFuZ2UgaWYgLSBhdCB0aGUgZnJvbnRlbmQgLSB0aGUgRmluYWwgZHJhdyBpcyBzaG93biBwcmlvciB0byB0aGUgbGFzdCBkcmF3KG5vdCB0aGUgRmluYWwgZHJhdykuIFRoZXJlZm9yZSBpdCBpcyBhZHZpc2VkIHRvIC0gaWYgdGhlIEZpbmFsIGRyYXcgaGFzIHRoZSBzYW1lIGVuZGRhdGUgYXMgdGhlIGxhc3QgKG5vbi1maW5hbCkgZHJhdyAtIGFkanVzdCB0aGUgZW5kZGF0ZS10aW1lIG9mIG9uZSBvZiB0aGVtLCBpbiBvcmRlciB0byBoYXZlIHRvIHJpZ2h0IG9yZGVyIHNob3duIGF0IHRoZSBmcm9udGVuZC48YnIgLz48YnIgLz4KCjxiPlByaXplczwvYj4gLSB0YWIgPGJyIC8+CgpQcml6ZXMgY2FuIGJlIGNvbm5lY3RlZCB0byBlYWNoICdDb3Vwb24gQWN0aW9uJyBvciAnQ291cG9uIFBlcmlvZCcuIFdoZW4gYWRkaW5nIGEgcHJpemUsIENvdXBvbiBDb2RlLCBDb3Vwb24gQWN0aW9uLCBQcml6ZSBjb2RlLCB0aXRsZSwgZGVzY3JpcHRpb24sIG51bWJlciBhbmQgc3RhdHVzIGhhdmUgdG8gYmUgZW50ZXJlZC4gPGJyIC8+PGJyIC8+Cgo8Yj5XaW5uZXJzPC9iPiAtIHRhYiA8YnIgLz4KCk91dCBvZiB0aGUgcmVnaXN0ZXJlZCBjb3Vwb24gY29kZXMsIG9uZSBvciBtb3JlIHdpbm5lcnMgY2FuIGJlIGRyYXduLiBBZnRlciBzZWxlY3RpbmcgJ0NvdXBvbiBBY3Rpb24nLCAnQ291cG9uIFBlcmlvZCcgYW5kIHByaXplLCBvbmUgY2FuIGNsaWNrIG9uIHRoZSAiIERyYXcgY291cG9uJyBidXR0b24uIFRoZSB3aW5uZXIgaXMgcmFuZG9tbHkgZHJhd24gZnJvbSB0aGUgZGF0YWJhc2Ugd2l0aCByZWdpc3RlcmVkIGNvdXBvbiBjb2RlcyBhbmQgaXMgc2hvd24uIDxiciAvPjxiciAvPgoKPGI+U3RhdGlzdGljczwvYj4gLSB0YWIgPGJyIC8+CgpXaGVuIHJlZ2lzdGVyaW5nIGEgY291cG9uIGNvZGUsIGEgdGltZXN0YW1wIGlzIGdlbmVyYXRlZCBhbmQgc2F2ZWQuIEJ5IHVzaW5nIHRoaXMgdGltZXN0YW1wIHRvZ2V0aGVyIHdpdGggdGhlIHN0YXJ0LSBhbmQgZW5kZGF0ZSBvZiBhICcgQ291cG9uIEFjdGlvbicgYW5kICdDb3Vwb24gUGVyaW9kIHRoZSBzdGF0aXN0aWNzIGFyZSBjcmVhdGVkLiA8YnIgLz48YnIgLz4KCjxiPlRlbXBsYXRlczwvYj4gLSB0YWIgPGJyIC8+CgpUaGUgVXBDb3Vwb24gbW9kdWxlIGhhcyB2YXJpb3VzIHRlbXBsYXRlcywgc3VjaCBhcyB0aGUgdGVtcGxhdGUgUmVnaXN0cmF0aW9uLCBXaW5uZXIgYW5kIFByaXplcy4gVGhlIHRlbXBsYXRlcyBhcmUgdXNlZCBmb3IgdGhlIGZyb250ZW5kLiBXaGVuIGFkZGluZyBhIHRlbXBsYXRlcywgYSBuYW1lLCB0ZW1wbGF0ZSB0eXBlIGFuZCB0ZW1wbGF0ZSBjb2RlIGNhbiBiZSBlbnRlcmVkLiA8YnIgLz48YnIgLz4KCkJ5IHVzaW5nIHRoZSBmYWN0b3J5IHNldHRpbmdzIGJ1dHRvbiwgdGhlIHRlbXBsYXRlIGNvZGUgZmllbGQgYXV0b21hdGljYWxseSBpcyBzZXQgdG8gdXNlIHRoZSBkZWZhdWx0IHRlbXBsYXRlLiA8YnIgLz48YnIgLz4KCjxiPlByZWZlcmVuY2VzPC9iPiAtIHRhYiA8YnIgLz4KCkEgY3VzdG9tZXIgd2hvIGhhcyByZWdpc3RlcmVkIGhpcyAnQ291cG9uIENvZGUnLCB3aWxsIHJlY2VpdmUgYSBjb25maXJtYXRpb24gYnkgZS1tYWlsLCBpZiBhbGwgZS1tYWlsIHByZWZlcmVuY2VzIGFyZSBjb3JyZWNsdHkgY29tcGxldGVkLiA8YnIgLz48YnIgLz4KCjxoMj5BY3Rpb25zPC9oMj4KCjxjb2RlPntVcENvdXBvbiBhY3Rpb249J3Nob3dfcmVnaXN0ZXInfTwvY29kZT4gLSBTaG93IHRoZSByZWdpc3RyYXRpb24gcGFnZS4gPGJyIC8+Cjxjb2RlPntVcENvdXBvbiBhY3Rpb249J3Nob3dfcHJpemUnfTwvY29kZT4gLSBTaG93IHRoZSBwcml6ZSBwYWdlLiA8YnIgLz4KPGNvZGU+e1VwQ291cG9uIGFjdGlvbj0nc2hvd193aW5uZXInfTwvY29kZT4gLSBTaG93IHRoZSB3aW5uZXIgcGFnZS4gPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyBhY3Rpb24gaXMgc3BlY2lmaWVkLCBhIHdhcm5pbmcgd2lsbCBiZSBzaG93bi4gPGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBGb3IgdGhlICdzaG93X3JlZ2lzdGVyJyBhY3Rpb24gaXQncyBwb3NzaWJsZSB0byBjaGVjayBmaWVsZCB2YWx1ZXMgdmlhIEphdmFTY3JpcHQuIFRvZG8gc28gYmUgc3VyZSB0byBsb2FkIGpxdWVyeS52YWxpZGF0ZS5qcyBiZWZvcmUgeW91IGNhbGwgdGhlIFVwQ291cG9uIG1vZHVsZS4gWW91IGNhbiBmaW5kIHRoaXMgZmlsZSBpbnRvIHRoZSBtb2R1bGVzL1VwQ291cG9uL2pzIGZvbGRlci48YnIgLz48YnIgLz4KCjxiPiogQmVmb3JlIHRoZSBjb3Vwb24gYWN0aW9uIHRha2VzIHBsYWNlIHRoZSB1cGNvdXBvbl9jb2RlIGRhdGFiYXNlIG11c3QgYmUgZmlsbGVkIHdpdGggY29kZXMuIFRoZSB3ZWJkZXZlbG9wZXIgc2hvdWxkIHdyaXRlIGEgcXVlcnkgdG8gc2V0IGNvdXBvbl9wcml6ZV9pZCB0byAnMCcgYW5kIGNvdXBvbl9jb2RlIHRvIGEgMTYgZGlnaXQgY29kZS4gRm9yIGV4YW1wbGU6IElOU0VSVCBJTlRPIGNtc19tb2R1bGVfdXBjb3Vwb25fY29kZSBWQUxVRVMgKCcnLCAnMCcsICcnLCAnMDAwMDAwMDAwMDAwMDAwMCcsICcnKTwvYj48YnIgLz4KCjxiciAvPgoKPGgyPlRlbXBsYXRlczwvaDI+Cgo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSdzaG93X3JlZ2lzdGVyJyB0ZW1wbGF0ZT0nbmFtZV9vZl9yZWdpc3Rlcl90ZW1wbGF0ZSd9PC9jb2RlPiA8YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IElmIG5vIHRlbXBsYXRlIGlzIHNwZWNpZmllZCwgb3IgdGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlIGlzIHVua25vd24sIHRoZSBkZWZhdWx0IHRlbXBsYXRlIHdpbGwgYmUgdXNlZC4gPC9iciA+PC9iciA+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyBzdGFuZGFyZCB0ZW1wbGF0ZSBjYW4gYmUgZm91bmQsIHRoZSBkZWZhdWx0IHRlbXBsYXRlIChmYWN0b3J5IHNldHRpbmdzKSBzaGFsbCBiZSB1c2VkLiA8YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IFRoZSBhdmFpbGFibGUgdGVtcGxhdGVzIGNhbiBiZSBmb3VuZCB1bmRlciB0aGUgJ1RlbXBsYXRlcycgIHRhYi4gPGJyIC8+Cgo8aDI+Y291cG9uX2FjdGlvbl9pZDwvaDI+Cgo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSdzaG93X3ByaXplJyBjb3Vwb25fYWN0aW9uX2lkPScxJ308L2NvZGU+IC0gU2hvdyBhbGwgcHJpemVzIGJlbG9uZ2luZyB0byBjb3Vwb25fYWN0aW9uX2lkICcxJy4gPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBUaGUgJ2NvdXBvbl9hY3Rpb25faWQnIGNhbiBiZSBmb3VuZCB1bmRlciAnQ291cG9uIEFjdGlvbnMnIHRhYi4gSXQgaXMgc2hvd24gaW4gZnJvbnQgb2YgdGhlIHRpdGxlIG9mIGVhY2ggc3BlY2lmaWMgYWN0aW9uLiAnQ291cG9uIEFjdGlvbnMnIHdoaWNoIGFyZSBzZXQgdG8gaW5hY3RpdmUgYXJlIG5vdCBzaG93bi4KPGJyIC8+Cgo8aDI+U3VwcG9ydDwvaDI+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yKHMpLCBhcm5vdWQgZXQgYWxsIGNhbiBzb21ldGltZXMgYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIAo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQKb2YgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+bGljZW5zZTwvYT4gZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoKPGgyPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDI+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMS0yMDEyLCBBcm5vdWQgdmFuIFN1c3RlcmVuIDxhIGhyZWY9Im1haWx0bzphcm5vdWRAdXBzZXJ2aWNlLm5sIj4mbHQ7YXJub3VkQHVwc2VydmljZS5ubCZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+Cgo8YnIvPjxzdHJvbmc+U3VwcG9ydCBtb3JlIG1vZHMgbGlrZSB0aGlzOjwvc3Ryb25nPgoKPHA+Cjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZW5jcnlwdGVkIiB2YWx1ZT0iLS0tLS1CRUdJTiBQS0NTNy0tLS0tTUlJSFR3WUpLb1pJaHZjTkFRY0VvSUlIUURDQ0J6d0NBUUV4Z2dFd01JSUJMQUlCQURDQmxEQ0JqakVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnVEFrTkJNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01SUXdFZ1lEVlFRS0V3dFFZWGxRWVd3Z1NXNWpMakVUTUJFR0ExVUVDeFFLYkdsMlpWOWpaWEowY3pFUk1BOEdBMVVFQXhRSWJHbDJaVjloY0dreEhEQWFCZ2txaGtpRzl3MEJDUUVXRFhKbFFIQmhlWEJoYkM1amIyMENBUUF3RFFZSktvWklodmNOQVFFQkJRQUVnWUFuTFd2allpMmNRWUM0VHhZbFNobWI4TDhtVGYzeHdWaUpVNWt5emFKVlJrQm5XL0pCRlQwUkNvN1JGR1dRWUxPSzZCQjZuZzk2bmMxSE9hQ3htSDZpcTJNSnFTditFODExaENNZUE4eFo3cXpKdHdDODZOaEZzbnlZbm1veFl0VFlxLzBOZ3BkL2ozVDlON0U5WFUzMENFSXZWbzZDMGZ4T3ZlQW5LSitqWWpFTE1Ba0dCU3NPQXdJYUJRQXdnY3dHQ1NxR1NJYjNEUUVIQVRBVUJnZ3Foa2lHOXcwREJ3UUlFbVpWb1RoNklVV0FnYWd4eXpYOVN6d295T2E0ZmR6OTJzN1pybXcxNUdidGVMaXpBbWhyQ0JhVU9zM1MxaVYzZU5TTiswSGtUcUF2b0RKYnZoMGsxeW1qWmFQazA1YlVhWTE0anN0WThLK2pxMWlTVlRpSWNIWXN5Y2pWQUpPRjdGdk52ZFBodmZyTGN3MGRXRDJaaTZuckNCZnVRd2pwdmJTOUJ3K3p1d2prLytVRHVCbDNQc0ttUUxUMU03a0JJaVJTcDFtVFh1eUQrdjNhYzZLL0VIem9ucFpnck9qUHQvcGZpTGY2R3RYeEhXMmdnZ09ITUlJRGd6Q0NBdXlnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQ0JqakVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnVEFrTkJNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01SUXdFZ1lEVlFRS0V3dFFZWGxRWVd3Z1NXNWpMakVUTUJFR0ExVUVDeFFLYkdsMlpWOWpaWEowY3pFUk1BOEdBMVVFQXhRSWJHbDJaVjloY0dreEhEQWFCZ2txaGtpRzl3MEJDUUVXRFhKbFFIQmhlWEJoYkM1amIyMHdIaGNOTURRd01qRXpNVEF4TXpFMVdoY05NelV3TWpFek1UQXhNekUxV2pDQmpqRUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWtOQk1SWXdGQVlEVlFRSEV3MU5iM1Z1ZEdGcGJpQldhV1YzTVJRd0VnWURWUVFLRXd0UVlYbFFZV3dnU1c1akxqRVRNQkVHQTFVRUN4UUtiR2wyWlY5alpYSjBjekVSTUE4R0ExVUVBeFFJYkdsMlpWOWhjR2t4SERBYUJna3Foa2lHOXcwQkNRRVdEWEpsUUhCaGVYQmhiQzVqYjIwd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNRkhUdDM4Uk14TFhKeU8yU21TK05kbDcyVDdvS0o0dTR1dys2YXdudEFMV2gwM1Bld21JSnV6YkFMU2NzVFM0c1pvUzFmS2NpQkdvaDExZ0lmSHp5bHZrZE5lL2hKbDY2L1JHcXJqNXJGYjA4c0FBQk5UekRUaXFxTnBKZUJzWXMvYzJhaUdvenB0WDJSbG5Ca3RIK1NVTnBBYWpXNzI0TnYyV3ZoaWY2c0ZBZ01CQUFHamdlNHdnZXN3SFFZRFZSME9CQllFRkphZmZMdkdieGU5V1Q5UzF3b2I3QkRXWkpSck1JRzdCZ05WSFNNRWdiTXdnYkNBRkphZmZMdkdieGU5V1Q5UzF3b2I3QkRXWkpScm9ZR1VwSUdSTUlHT01Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQk1DUTBFeEZqQVVCZ05WQkFjVERVMXZkVzUwWVdsdUlGWnBaWGN4RkRBU0JnTlZCQW9UQzFCaGVWQmhiQ0JKYm1NdU1STXdFUVlEVlFRTEZBcHNhWFpsWDJObGNuUnpNUkV3RHdZRFZRUURGQWhzYVhabFgyRndhVEVjTUJvR0NTcUdTSWIzRFFFSkFSWU5jbVZBY0dGNWNHRnNMbU52YllJQkFEQU1CZ05WSFJNRUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUlGZk9sYWFnRnJsNzEranE2T0tpZGJXRlNFK1E0RnFST3ZkZ0lPTnRoKzhrU0svL1kvNGlodUU0WW12em41Y2VFM1MvaUJTUVFNanl2YitzMlRXYlFZRHdjcDEyOU9QSWJEOWVwZHI0dEpPVU5pU29qdzdCSHdZUmlQaDU4UzF4R2xGZ0hGWHdyRUJiM2RnTmJNVWErdTRxZWN0c01BWHBWSG5EOXdJeWZtSE1ZSUJtakNDQVpZQ0FRRXdnWlF3Z1k0eEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlFd0pEUVRFV01CUUdBMVVFQnhNTlRXOTFiblJoYVc0Z1ZtbGxkekVVTUJJR0ExVUVDaE1MVUdGNVVHRnNJRWx1WXk0eEV6QVJCZ05WQkFzVUNteHBkbVZmWTJWeWRITXhFVEFQQmdOVkJBTVVDR3hwZG1WZllYQnBNUnd3R2dZSktvWklodmNOQVFrQkZnMXlaVUJ3WVhsd1lXd3VZMjl0QWdFQU1Ba0dCU3NPQXdJYUJRQ2dYVEFZQmdrcWhraUc5dzBCQ1FNeEN3WUpLb1pJaHZjTkFRY0JNQndHQ1NxR1NJYjNEUUVKQlRFUEZ3MHhNVEV3TWpJeE1USXdNelJhTUNNR0NTcUdTSWIzRFFFSkJERVdCQlJsRjd2Vlg1TFgyWDVJdFk3Y213QS9SWlRBdFRBTkJna3Foa2lHOXcwQkFRRUZBQVNCZ0lyeVlla0hoU3IrZldIZW1VL1g2c1lxZmRCdVk0OWQ3K2tDSXBtZGJ0S1JaUyt6Qy84MVdoejlQTGhodU5sV1NyeFNjeW1RZXgrVm5GZ1NnZnJHUDE3NE56d0tJczhyZEtZeUhwQ2hOWmxWUDdwSmVBcmJ0dW5kVWlzdnJwYzh3UHhscmpOQ014UkUvck5YSGVQbUd1dUtidlJqaTNqMG5JV2ZrRjZ1QnpjTy0tLS0tRU5EIFBLQ1M3LS0tLS0KIj4KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbG9iamVjdHMuY29tL2VuX1VTL2kvYnRuL2J0bl9kb25hdGVDQ19MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lISI+CjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9ubF9OTC9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgo8L2Zvcm0+PGJyLz48YnIvPgoKPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4KCjxiciAvPgo8aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPlVwVXRpbHMgPSZndDsgMC4wLjU8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBBcm5vdWQgdmFuIFN1c3RlcmVuICZsdDthcm5vdWRAdXBzZXJ2aWNlLm5sJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDAuMC45PGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PGJyLz4KCjxiPjAuMC45IHZlcnNpb248L2I+IC0gMTcganVsIDIwMTI8YnIgLz4KCjx1bD4KPGxpPk1ha2UgZGVwZW5kZW5kIG9uIFVwVXRpbHMnPT4nMC4wLjUnPC9saT4KPGxpPlJlbW92ZSBkZXByZWNhdGVkIE1heGltdW1DTVNWZXJzaW9uKCk8L2xpPgo8bGk+U2V0IE1pbmltdW1DTVNWZXJzaW9uKCkgdG8gMS4xMC4zPC9saT4KPGxpPmpRdWVyeSBWYWxpZGF0aW9uIFBsdWdpbiAxLjguMCB0byAxLjkuMCArIGluY2x1ZGUganF1ZXJ5LnZhbGlkYXRlLm1pbi5qczwvbGk+CjxsaT5SZW1vdmUganF1ZXJ5LTEuNi4xLm1pbi5qcyBhZGQganF1ZXJ5LTEuNy4xLm1pbi5qczwvbGk+IAo8bGk+SW5pdGlhbGl6ZUZyb250ZW5kKCkgYW5kIEluaXRpYWxpemVBZG1pbigpIGluIGZhdm9yIG9mIFNldFBhcmFtZXRlcnMoKTwvbGk+CjxsaT5SZW1vdmUgaGVscCBmaWxlIGZyb20gbGFuZyB0byBleHRlcm5hbCBoZWxwLmluYyArIHNvbWUgdHdlYWtzIHRvIHRoZSBkb2N1bWVudGF0aW9uPC9saT4KPGxpPkZpeCBlcnJvci1sb2dzIG9uIG1pc3NpbmcgeyR4eHhfbWVzc2FnZX0gc3RyaW5nIGluIHRlbXBsYXRlczwvbGk+CjxsaT5DTVNNUyAxLjExIGNvbXBhdGlibGU8L2xpPgo8L3VsPgoKPGI+MC4wLjggdmVyc2lvbjwvYj4gLSAyMiBva3QgMjAxMSA8YnIgLz4KCjx1bD4KPGxpPk1ha2UgZGVwZW5kZW5kIG9uIFVwVXRpbHMnPT4nMC4wLjQnPC9saT4KPGxpPkFkZCBQYXlQYWwgZG9uYXRpb24gYnV0dG9uIHRvIGRvY3VtZW50YXRpb248L2xpPgo8bGk+Q01TTVMgMS4xMCBjb21wYXRpYmxlPC9saT4KPC91bD4KCjxiPjAuMC43IHZlcnNpb248L2I+IC0gMTIgYXVnIDIwMTEgPGJyIC8+Cgo8dWw+CjxsaT5BZGQgYXV0b2xvYWRlcjwvbGk+CjxsaT5QbGFjZSBjb25zdGFudHMgb3V0c2lkZSBtb2R1bGUgY2xhc3M8L2xpPgo8bGk+TWFrZSBkZXBlbmRlbmQgb24gVXBVdGlscyc9PicwLjAuMzwvbGk+CjwvdWw+CgoKPGI+MC4wLjYgdmVyc2lvbjwvYj4gLSAyMCBqdW4gMjAxMSA8YnIgLz4KCjx1bD4KPGxpPk1ha2UgY291cG9uX2FjdGlvbl9pZCBvcHRpb25hbCBmb3Igc2hvd19wcml6ZSBhY3Rpb248L2xpPgo8bGk+VHdlYWsgdXNlciBub3RpZmljYXRpb24gZm9yIHBlcmlvZCBhZGQsIGVkaXQsIGRlbGV0ZTwvbGk+CjxsaT5SZW1vdmUgYW5jaG9yIGZyb20gZmFjdG9yeSB0ZW1wbGF0ZSBwcml6ZTwvbGk+CjxsaT5Nb2R1bGUgYWRkZWQgdG8gdHJhbnNsYXRpb24gY2VudGVyPC9saT4KPGxpPkFkZGVkIGR1dGNoIHRyYW5zbGF0aW9uIGxhbmcvZXh0L25sX05MLnBocDwvbGk+CjwvdWw+Cgo8Yj4wLjAuNSB2ZXJzaW9uIGluaXRpYWwgdmVyc2lvbjwvYj4gLSA5IGp1biAyMDExCgoKCgoKCjxiciAvPg==]]></about>
	<description><![CDATA[A module to setup an online lottery, coupon code registration system.]]></description>
	<requires>
	  <requiredname>UpUtils</requiredname>
	  <requiredversion>0.0.5</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.action_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uYWN0aW9uX2FkZF9lZGl0LnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENoZWNrUGVybWlzc2lvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgnYWN0aW9uJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGFwcGx5IGFuZCBjYW5jZWwKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFwcGx5X2J1dHRvbl9jbGlja2VkID0gJzAnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkgewogICAgaWYgKCRwYXJhbXNbJ3N1Ym1pdCddID09ICR0aGlzLT5MYW5nKCdhcHBseScpKSB7CiAgICAgICAgJGFwcGx5X2J1dHRvbl9jbGlja2VkID0gJzEnOwogICAgfQp9CgppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7CiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdhY3Rpb24nKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT2JqZWN0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgZmV0Y2ggcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CiRtb2R1cyA9ICdhZGQnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwogICAgJG1vZHVzID0gJ2VkaXQnOwogICAgCiAgICAkcm93cyA9ICRhY3Rpb25kYi0+ZmV0Y2goJHBrZXkpOwogICAgCiAgICBmb3JlYWNoICgkcm93c1swXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgIAogICAgICAgIGlmIChwcmVnX21hdGNoKCIvZGF0ZS9pIiwgJGtleSkpIHsKICAgICAgICAgICAgJHska2V5fSA9ICRhY3Rpb25kYi0+dW5peF90aW1lX3N0YW1wKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHska2V5fSA9ICR2YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAgICAgCn0gZWxzZSB7CgogICAgJG1vZHVzID0gJ2FkZCc7CiAgICAKICAgICR0aXRsZSA9ICcnOwogICAgJGFsaWFzID0gJyc7CiAgICAkZGVzY3JpcHRpb24gPSAnJzsKICAgICRzdGFydF9kYXRlID0gdGltZSgpOwogICAgJGVuZF9kYXRlID0gdGltZSgpOwogICAgJHN0YXR1cyA9ICcxJzsKICAgIAp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ3RpdGxlJ10pICkgeyAgICAKICAgICR0aXRsZSA9IHRyaW0oJHBhcmFtc1sndGl0bGUnXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkgKSB7CiAgICAkYWxpYXMgPSBVcEhlbHBlcjo6YWxwaGFfbnVtZXJpY19sb3dlcigkcGFyYW1zWydhbGlhcyddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydkZXNjcmlwdGlvbiddKSApIHsKICAgICRkZXNjcmlwdGlvbiA9IHRyaW0oJHBhcmFtc1snZGVzY3JpcHRpb24nXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snc3RhcnRfZGF0ZV9Nb250aCddKSApIHsKICAgICRzdGFydF9kYXRlID0gbWt0aW1lKCRwYXJhbXNbJ3N0YXJ0X2RhdGVfSG91ciddLCAkcGFyYW1zWydzdGFydF9kYXRlX01pbnV0ZSddLCAkcGFyYW1zWydzdGFydF9kYXRlX1NlY29uZCddLCAkcGFyYW1zWydzdGFydF9kYXRlX01vbnRoJ10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfRGF5J10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfWWVhciddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydlbmRfZGF0ZV9Nb250aCddKSApIHsKICAgICRlbmRfZGF0ZSA9IG1rdGltZSgkcGFyYW1zWydlbmRfZGF0ZV9Ib3VyJ10sICRwYXJhbXNbJ2VuZF9kYXRlX01pbnV0ZSddLCAkcGFyYW1zWydlbmRfZGF0ZV9TZWNvbmQnXSwgJHBhcmFtc1snZW5kX2RhdGVfTW9udGgnXSwgJHBhcmFtc1snZW5kX2RhdGVfRGF5J10sICRwYXJhbXNbJ2VuZF9kYXRlX1llYXInXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snc3RhdHVzJ10pICkgewogICAgJHN0YXR1cyA9IHRyaW0oJHBhcmFtc1snc3RhdHVzJ10pOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2hlY2sgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkgewogICAgJGVycm9yID0gRkFMU0U7CiAgICAKICAgIGlmICggZW1wdHkoJHRpdGxlKSApIHsKICAgICAgICAkZXJyb3IgLj0gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vX3NfZ2l2ZW4nLCBhcnJheSgkdGhpcy0+TGFuZygndGl0bGUnKSkpKTsKICAgIH0KCiAgICBpZiAoIGVtcHR5KCRhbGlhcykgKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub19zX2dpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ2FsaWFzJykpKSk7CiAgICB9IAogICAgCiAgICBpZiAoIGVtcHR5KCRkZXNjcmlwdGlvbikgKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub19zX2dpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9uJykpKSk7CiAgICB9IAogICAgCiAgICBpZiAoJHN0YXJ0X2RhdGUgPj0gJGVuZF9kYXRlKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkZGF0ZXMnKSk7ICAgICAgCiAgICB9CiAgICAKICAgIGlmICggJGVycm9yID09IEZBTFNFICkgewogICAgICAgICRyb3dzID0gJGFjdGlvbmRiLT5mZXRjaCgkYWxpYXMsICdhbGlhcycpOwogICAgICAgIAogICAgICAgIGlmIChpc3NldCgkcm93c1swXSkpIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkcm93c1swXVsnY291cG9uX2FjdGlvbl9pZCddICE9ICRwa2V5KSB7IAogICAgICAgICAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdzX3NfYWxyZWFkeWdpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ2FsaWFzJyksICRyb3dzWzBdWydhbGlhcyddKSkpOwogICAgICAgICAgICAgICAgJGFsaWFzID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGlmICggJGVycm9yICE9PSBGQUxTRSApIHsKICAgICAgICBlY2hvICRlcnJvcjsKICAgIH0gZWxzZSB7CgogICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+ICR0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJyA9PiAkYWxpYXMsCiAgICAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicgPT4gJGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnRfZGF0ZScgPT4gJGFjdGlvbmRiLT5kYl90aW1lX3N0YW1wKCRzdGFydF9kYXRlKSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZF9kYXRlJyA9PiAkYWN0aW9uZGItPmRiX3RpbWVfc3RhbXAoJGVuZF9kYXRlKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnID0+ICRzdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9hY3Rpb25faWQnXSA9ICRwa2V5OyAKICAgICAgICAgICAgJGFjdGlvbmRiLT51cGRhdGUoJGRiX2FycmF5KTsgICAgICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY291cG9uX2FjdGlvbl9pZCA9ICRhY3Rpb25kYi0+aW5zZXJ0KCRkYl9hcnJheSk7IAogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9hY3Rpb25faWQnXSA9ICRjb3Vwb25fYWN0aW9uX2lkOwogICAgICAgIH0KICAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICggISRlcnJvciApIHsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICBAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25BY3Rpb25FZGl0ZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGlvbl9tZXNzYWdlJz0+ICdzX2VkaXRlZCxhY3Rpb25fcycsICdhY3RpdmVfdGFiJyA9PiAnYWN0aW9uJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uQWN0aW9uQWRkZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGlvbl9tZXNzYWdlJz0+ICdzX2FkZGVkLGFjdGlvbl9zJywgJ2FjdGl2ZV90YWInID0+ICdhY3Rpb24nKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCRhcHBseV9idXR0b25fY2xpY2tlZCA9PSAnMScpIHsKICAgICAgICAgICAgJHBhcmFtc1sncGtleSddID0gJGRiX2FycmF5Wydjb3Vwb25fYWN0aW9uX2lkJ107CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdhY3Rpb25fYWRkX2VkaXQnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKfSAvLyBzdWJtaXQgCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGJ1aWxkIGFuZCBwcm9jY2VzcyB0ZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWN0aW9uX2FkZF9lZGl0JywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0aXRsZScsICR0aXRsZSwgMjAsIDEwMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhbGlhc190ZXh0JywgJHRoaXMtPkxhbmcoJ2FsaWFzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FsaWFzX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhcycsICRhbGlhcywgMjAsIDQ1KSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Rlc2NyaXB0aW9uX3RleHQnLCAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb24nKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZGVzY3JpcHRpb25faW5wdXQnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEodHJ1ZSwgJGlkLCAkZGVzY3JpcHRpb24sICdkZXNjcmlwdGlvbicpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXJ0X2RhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZV9wcmVmaXgnLCAkaWQuJ3N0YXJ0X2RhdGVfJyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZScsICRzdGFydF9kYXRlKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2RhdGVfdGV4dCcsICR0aGlzLT5MYW5nKCdlbmRfZGF0ZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZGF0ZV9wcmVmaXgnLCAkaWQuJ2VuZF9kYXRlXycpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9kYXRlJywgJGVuZF9kYXRlKTsKCiRzdGF0dXNkcm9wZG93biA9IGFycmF5KCk7CiRzdGF0dXNkcm9wZG93blskdGhpcy0+TGFuZygnaW5hY3RpdmUnKV0gPSAnMCc7CiRzdGF0dXNkcm9wZG93blskdGhpcy0+TGFuZygnYWN0aXZlJyldID0gJzEnOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGF0dXNfdGV4dCcsICR0aGlzLT5MYW5nKCdzdGF0dXMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhdHVzX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnc3RhdHVzJywgJHN0YXR1c2Ryb3Bkb3duLCAtMSwgJHN0YXR1cykpOwoKaWYgKCRtb2R1cyA9PSAnZWRpdCcpIHsgICAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdwa2V5JywgJHBrZXkpKTsKfSBlbHNlIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywgJycpOwp9ICAgIAoKaWYgKCRtb2R1cyA9PSAnZWRpdCcpIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdlZGl0JykpKTsKfSBlbHNlIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdhZGQnKSkpOwp9ICAgIAogICAgCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsICR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhcHBseScsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnYXBwbHknKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FjdGlvbl9hZGRfZWRpdC50cGwnKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.action_change_status.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uYWN0aW9uX2NoYW5nZV9zdGF0dXMucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcsIGFycmF5KCdhY3Rpb24nKSkpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGtleSddKSkgewogICAgJHBrZXkgPSAkcGFyYW1zWydwa2V5J107Cn0KCiRzdGF0dXMgPSAkcGFyYW1zWydzdGF0dXMnXSA9PSAnMScgPyAnMScgOiAnMCc7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZGJfYXJyYXkgPSBhcnJheSgnY291cG9uX2FjdGlvbl9pZCcgPT4gJHBrZXksICdzdGF0dXMnID0+ICRzdGF0dXMpOwoKJGFjdGlvbmRiID0gbmV3IGNvdXBvbl9hY3Rpb25EQU8oKTsKJGFjdGlvbmRiLT51cGRhdGUoJGRiX2FycmF5KTsKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvbkFjdGlvbkVkaXRlZCcsICRkYl9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgnYWN0aW9uX21lc3NhZ2UnPT4gJ3NfY2hhbmdlZF9zdGF0dXMsYWN0aW9uX3MnLCAnYWN0aXZlX3RhYicgPT4gJ2FjdGlvbicpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.action_delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uYWN0aW9uX2RlbGV0ZS5waHAgMTIgMjAxMi0wNy0xMiAxMDowMjoyOVogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEtMjAxMiBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ2FjdGlvbicpKSk7CiAgICByZXR1cm47ICAKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokcGtleSA9ICcnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwp9IGVsc2UgewogICAgJHBhcmFtc1snZXJyb3InXSA9ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5sYW5nKCdub3RfYWxsb3dlZCcpKTsKCSRwYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICdhY3Rpb24nOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFjdGlvbmRiID0gbmV3IGNvdXBvbl9hY3Rpb25EQU8oKTsKCi8vIGZldGNoIGluZm9ybWF0aW9uIGFib3V0IGFjdGlvbiAodG8gYmUgdXNlZCBpbiBTZW5kRXZlbnQpCiRhY3Rpb25fZGF0YSA9ICRhY3Rpb25kYi0+ZmV0Y2goJHBrZXkpOwoKLy8gZGVsZXRlIGFjdGlvbgokYWN0aW9uZGItPmRlbGV0ZSgkcGtleSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGNhbGwgZXZlbnQgLyByZWRpcmVjdAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGV2ZW50X2FycmF5ID0gYXJyYXkoKTsKCmZvcmVhY2ggKCRhY3Rpb25fZGF0YVswXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgJGV2ZW50X2FycmF5WyRrZXldID0gJHZhbHVlOyAgICAKfQoKQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uQWN0aW9uRGVsZXRlZCcsICRldmVudF9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgnYWN0aW9uX21lc3NhZ2UnID0+ICdzX2RlbGV0ZWQsYWN0aW9uX3MnLCAnYWN0aXZlX3RhYicgPT4gJ2FjdGlvbicpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uZGVmYXVsdC5waHAgMTIgMjAxMi0wNy0xMiAxMDowMjoyOVogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEtMjAxMiBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCmVjaG8gJHRoaXMtPkxhbmcoJ25vdF9hbGxvd2VkJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uZGVmYXVsdGFkbWluLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVGFiSGVhZGVycwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CgppZiAoRkFMU0UgPT0gZW1wdHkoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgewogICAgJHRhYiA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsKfSBlbHNlIHsKICAgICR0YWIgPSAnJzsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignYWN0aW9uJywkdGhpcy0+TGFuZygnYWN0aW9uX3AnKSwgKCdhY3Rpb24nID09ICR0YWIpID8gdHJ1ZTpmYWxzZSk7Cn0KCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykgKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3BlcmlvZCcsJHRoaXMtPkxhbmcoJ3BlcmlvZF9wJyksICgncGVyaW9kJyA9PSAkdGFiKSA/IHRydWU6ZmFsc2UpOwp9CgppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpICkgewogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcml6ZScsJHRoaXMtPkxhbmcoJ3ByaXplX3AnKSwgKCdwcml6ZScgPT0gJHRhYikgPyB0cnVlOmZhbHNlKTsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignd2lubmVyJywkdGhpcy0+TGFuZygnd2lubmVyX3AnKSwgKCd3aW5uZXInID09ICR0YWIpID8gdHJ1ZTpmYWxzZSk7Cn0KCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykgKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3N0YXRpc3RpY3MnLCR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX3AnKSwgKCdzdGF0aXN0aWNzJyA9PSAkdGFiKSA/IHRydWU6ZmFsc2UpOwp9CgppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigndGVtcGxhdGVzJywkdGhpcy0+TGFuZygndGVtcGxhdGVzX3AnKSwgKCd0ZW1wbGF0ZXMnID09ICR0YWIpPyB0cnVlOmZhbHNlKTsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgewogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcmVmZXJlbmNlcycsJHRoaXMtPkxhbmcoJ3ByZWZlcmVuY2VzX3AnKSwgKCdwcmVmZXJlbmNlcycgPT0gJHRhYik/IHRydWU6ZmFsc2UpOwp9CgplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIG9iamVjdHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhZG1pbnRoZW1lID0gY21zbXMoKS0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ107CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRhYkNvbnRlbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSApIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdhY3Rpb24nLCAkcGFyYW1zKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl90YWJfYWN0aW9uLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykgKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigncGVyaW9kJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3BlcmlvZC5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpICkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3ByaXplJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3ByaXplLnBocCcpOyAgICAKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpICkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3dpbm5lcicsICRwYXJhbXMpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3RhYl93aW5uZXIucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSApIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzdGF0aXN0aWNzJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3N0YXRpc3RpY3MucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigndGVtcGxhdGVzJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3RlbXBsYXRlcy5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9ICAgIAoKaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3ByZWZlcmVuY2VzJywgJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdGFiX3ByZWZlcmVuY2VzLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0gICAgCiAgICAKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.period_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucGVyaW9kX2FkZF9lZGl0LnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENoZWNrUGVybWlzc2lvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgncGVyaW9kJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGFwcGx5IGFuZCBjYW5jZWwKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFwcGx5X2J1dHRvbl9jbGlja2VkID0gJzAnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkgewogICAgaWYgKCRwYXJhbXNbJ3N1Ym1pdCddID09ICR0aGlzLT5MYW5nKCdhcHBseScpKSB7CiAgICAgICAgJGFwcGx5X2J1dHRvbl9jbGlja2VkID0gJzEnOwogICAgfQp9CgppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7CiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdwZXJpb2QnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT2JqZWN0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CiRwZXJpb2RkYiA9IG5ldyBjb3Vwb25fcGVyaW9kREFPKCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgZmV0Y2ggcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CiRtb2R1cyA9ICdhZGQnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwogICAgJG1vZHVzID0gJ2VkaXQnOwogICAgCiAgICAkcm93cyA9ICRwZXJpb2RkYi0+ZmV0Y2goJHBrZXkpOwogICAgCiAgICBmb3JlYWNoICgkcm93c1swXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgIAogICAgICAgIGlmIChwcmVnX21hdGNoKCIvZGF0ZS9pIiwgJGtleSkpIHsKICAgICAgICAgICAgJHska2V5fSA9ICRwZXJpb2RkYi0+dW5peF90aW1lX3N0YW1wKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHska2V5fSA9ICR2YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAgICAgCn0gZWxzZSB7CgogICAgJG1vZHVzID0gJ2FkZCc7CgogICAgJGNvdXBvbl9hY3Rpb25faWQgPSAnJzsgICAgCiAgICAkdGl0bGUgPSAnJzsKICAgICRzdGFydF9kYXRlID0gdGltZSgpOwogICAgJGVuZF9kYXRlID0gdGltZSgpOwogICAgJGlzX2ZpbmFsID0gJzAnOwogICAgJHN0YXR1cyA9ICcxJzsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ10pICkgewogICAgJGNvdXBvbl9hY3Rpb25faWQgPSAkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ107Cn0KCmlmICggaXNzZXQoJHBhcmFtc1sndGl0bGUnXSkgKSB7ICAgIAogICAgJHRpdGxlID0gdHJpbSgkcGFyYW1zWyd0aXRsZSddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydzdGFydF9kYXRlX01vbnRoJ10pICkgewogICAgJHN0YXJ0X2RhdGUgPSBta3RpbWUoJHBhcmFtc1snc3RhcnRfZGF0ZV9Ib3VyJ10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfTWludXRlJ10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfU2Vjb25kJ10sICRwYXJhbXNbJ3N0YXJ0X2RhdGVfTW9udGgnXSwgJHBhcmFtc1snc3RhcnRfZGF0ZV9EYXknXSwgJHBhcmFtc1snc3RhcnRfZGF0ZV9ZZWFyJ10pOwp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ2VuZF9kYXRlX01vbnRoJ10pICkgewogICAgJGVuZF9kYXRlID0gbWt0aW1lKCRwYXJhbXNbJ2VuZF9kYXRlX0hvdXInXSwgJHBhcmFtc1snZW5kX2RhdGVfTWludXRlJ10sICRwYXJhbXNbJ2VuZF9kYXRlX1NlY29uZCddLCAkcGFyYW1zWydlbmRfZGF0ZV9Nb250aCddLCAkcGFyYW1zWydlbmRfZGF0ZV9EYXknXSwgJHBhcmFtc1snZW5kX2RhdGVfWWVhciddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydpc19maW5hbCddKSApIHsKICAgICRpc19maW5hbCA9IHRyaW0oJHBhcmFtc1snaXNfZmluYWwnXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snc3RhdHVzJ10pICkgewogICAgJHN0YXR1cyA9IHRyaW0oJHBhcmFtc1snc3RhdHVzJ10pOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2hlY2sgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkgewogICAgJGVycm9yID0gRkFMU0U7CiAgICAKICAgIGlmICggZW1wdHkoJGNvdXBvbl9hY3Rpb25faWQpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdhY3Rpb24nKSkpKTsKICAgIH0KICAgIAogICAgaWYgKCBlbXB0eSgkdGl0bGUpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCd0aXRsZScpKSkpOwogICAgfQogICAgCiAgICBpZiAoJHN0YXJ0X2RhdGUgPj0gJGVuZF9kYXRlKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkZGF0ZXMnKSk7ICAgICAgCiAgICB9CiAgICAKICAgIGlmICggJGVycm9yID09IEZBTFNFICkgewogICAgCiAgICAgICAgJGFjdGlvbl9kYXRhICAgICAgICA9ICRhY3Rpb25kYi0+ZmV0Y2goJGNvdXBvbl9hY3Rpb25faWQpOwogICAgICAgICRhY3Rpb25fc3RhcnRfZGF0ZSAgPSAkYWN0aW9uZGItPnVuaXhfdGltZV9zdGFtcCgkYWN0aW9uX2RhdGFbJzAnXVsnc3RhcnRfZGF0ZSddKTsKICAgICAgICAkYWN0aW9uX2VuZF9kYXRlICAgID0gJGFjdGlvbmRiLT51bml4X3RpbWVfc3RhbXAoJGFjdGlvbl9kYXRhWycwJ11bJ2VuZF9kYXRlJ10pOwogICAgCiAgICAgICAgaWYgKCRzdGFydF9kYXRlIDwgJGFjdGlvbl9zdGFydF9kYXRlIHx8ICRlbmRfZGF0ZSA+ICRhY3Rpb25fZW5kX2RhdGUpIHsKICAgICAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdzX3NfY291cG9ucGVyaW9kX21pc21hdGNoJywgYXJyYXkoJGFjdGlvbl9kYXRhWycwJ11bJ3N0YXJ0X2RhdGUnXSwgJGFjdGlvbl9kYXRhWycwJ11bJ2VuZF9kYXRlJ10pKSk7ICAgCiAgICAgICAgfQogICAgCiAgICB9CiAgICAKICAgIGlmICggJGVycm9yICE9PSBGQUxTRSApIHsKICAgICAgICBlY2hvICRlcnJvcjsKICAgIH0gZWxzZSB7CgogICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAnY291cG9uX2FjdGlvbl9pZCcgPT4gJGNvdXBvbl9hY3Rpb25faWQsCiAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZScgPT4gJHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnRfZGF0ZScgPT4gJHBlcmlvZGRiLT5kYl90aW1lX3N0YW1wKCRzdGFydF9kYXRlKSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZF9kYXRlJyA9PiAkcGVyaW9kZGItPmRiX3RpbWVfc3RhbXAoJGVuZF9kYXRlKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICdpc19maW5hbCcgPT4gJGlzX2ZpbmFsLAogICAgICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJyA9PiAkc3RhdHVzCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgCiAgICAgICAKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9wZXJpb2RfaWQnXSA9ICRwa2V5OyAKICAgICAgICAgICAgJHBlcmlvZGRiLT51cGRhdGUoJGRiX2FycmF5KTsgICAgICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY291cG9uX3BlcmlvZF9pZCA9ICRwZXJpb2RkYi0+aW5zZXJ0KCRkYl9hcnJheSk7IAogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9wZXJpb2RfaWQnXSA9ICRjb3Vwb25fcGVyaW9kX2lkOwogICAgICAgIH0KICAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICggISRlcnJvciApIHsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICBAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25QZXJpb2RFZGl0ZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ3BlcmlvZF9tZXNzYWdlJz0+ICdzX2VkaXRlZCxwZXJpb2RfcycsICdhY3RpdmVfdGFiJyA9PiAncGVyaW9kJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uUGVyaW9kQWRkZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ3BlcmlvZF9tZXNzYWdlJz0+ICdzX2FkZGVkLHBlcmlvZF9zJywgJ2FjdGl2ZV90YWInID0+ICdwZXJpb2QnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCRhcHBseV9idXR0b25fY2xpY2tlZCA9PSAnMScpIHsKICAgICAgICAgICAgJHBhcmFtc1sncGtleSddID0gJGRiX2FycmF5Wydjb3Vwb25fcGVyaW9kX2lkJ107CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdwZXJpb2RfYWRkX2VkaXQnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKfSAvLyBzdWJtaXQgCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGJ1aWxkIGFuZCBwcm9jY2VzcyB0ZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAncGVyaW9kX2FkZF9lZGl0JywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoKJGFjdGlvbmRyb3Bkb3duID0gYXJyYXkoKTsKJGFjdGlvbmRyb3Bkb3duID0gJGFjdGlvbmRiLT5mZXRjaF9hY3Rpb25kcm9wZG93bigpOwoKaWYgKGVtcHR5KCRhY3Rpb25kcm9wZG93bikpIHsKICAgICRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ2NvdXBvbl9hY3Rpb25fbWlzc2luZycsICdhY3RpdmVfdGFiJyA9PiAnYWN0aW9uJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKfQoKJGFjdGlvbl9pbnB1dCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2NvdXBvbl9hY3Rpb25faWQnLCBhcnJheSgpLCAtMSwgJGNvdXBvbl9hY3Rpb25faWQpOwokYWN0aW9uX2lucHV0ID0gVXBIZWxwZXI6Om1vZGlmeV9pbnB1dF9kcm9wZG93bigkYWN0aW9uX2lucHV0LCAkYWN0aW9uZHJvcGRvd24sICRjb3Vwb25fYWN0aW9uX2lkKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9uX3RleHQnLCAkdGhpcy0+TGFuZygnYWN0aW9uJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FjdGlvbl9pbnB1dCcsICRhY3Rpb25faW5wdXQpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0aXRsZScsICR0aXRsZSwgMjAsIDEwMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhcnRfZGF0ZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX3ByZWZpeCcsICRpZC4nc3RhcnRfZGF0ZV8nKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlJywgJHN0YXJ0X2RhdGUpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ2VuZF9kYXRlJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9kYXRlX3ByZWZpeCcsICRpZC4nZW5kX2RhdGVfJyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2RhdGUnLCAkZW5kX2RhdGUpOwoKJGlzX2ZpbmFsZHJvcGRvd24gPSBhcnJheSgpOwokaXNfZmluYWxkcm9wZG93blskdGhpcy0+TGFuZygnbm8nKV0gPSAnMCc7CiRpc19maW5hbGRyb3Bkb3duWyR0aGlzLT5MYW5nKCd5ZXMnKV0gPSAnMSc7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lzX2ZpbmFsX3RleHQnLCAkdGhpcy0+TGFuZygnaXNfZmluYWwnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXNfZmluYWxfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpc19maW5hbCcsICRpc19maW5hbGRyb3Bkb3duLCAtMSwgJGlzX2ZpbmFsKSk7Cgokc3RhdHVzZHJvcGRvd24gPSBhcnJheSgpOwokc3RhdHVzZHJvcGRvd25bJHRoaXMtPkxhbmcoJ2luYWN0aXZlJyldID0gJzAnOwokc3RhdHVzZHJvcGRvd25bJHRoaXMtPkxhbmcoJ2FjdGl2ZScpXSA9ICcxJzsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhdHVzX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhdHVzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXR1c19pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3N0YXR1cycsICRzdGF0dXNkcm9wZG93biwgLTEsICRzdGF0dXMpKTsKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7ICAgIAogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAncGtleScsICRwa2V5KSk7Cn0gZWxzZSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICcnKTsKfSAgICAKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnZWRpdCcpKSk7Cn0gZWxzZSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnYWRkJykpKTsKfSAgICAKICAgIAokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXBwbHknLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ2FwcGx5JykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwZXJpb2RfYWRkX2VkaXQudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.period_change_status.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucGVyaW9kX2NoYW5nZV9zdGF0dXMucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcsIGFycmF5KCdwZXJpb2QnKSkpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGtleSddKSkgewogICAgJHBrZXkgPSAkcGFyYW1zWydwa2V5J107Cn0KCiRzdGF0dXMgPSAkcGFyYW1zWydzdGF0dXMnXSA9PSAnMScgPyAnMScgOiAnMCc7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZGJfYXJyYXkgPSBhcnJheSgnY291cG9uX3BlcmlvZF9pZCcgPT4gJHBrZXksICdzdGF0dXMnID0+ICRzdGF0dXMpOwoKJHBlcmlvZGRiID0gbmV3IGNvdXBvbl9wZXJpb2REQU8oKTsKJHBlcmlvZGRiLT51cGRhdGUoJGRiX2FycmF5KTsKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblBlcmlvZEVkaXRlZCcsICRkYl9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgncGVyaW9kX21lc3NhZ2UnPT4gJ3NfY2hhbmdlZF9zdGF0dXMscGVyaW9kX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3BlcmlvZCcpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.period_delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucGVyaW9kX2RlbGV0ZS5waHAgMTIgMjAxMi0wNy0xMiAxMDowMjoyOVogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEtMjAxMiBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3BlcmlvZCcpKSk7CiAgICByZXR1cm47ICAKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokcGtleSA9ICcnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwp9IGVsc2UgewogICAgJHBhcmFtc1snZXJyb3InXSA9ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5sYW5nKCdub3RfYWxsb3dlZCcpKTsKCSRwYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICdwZXJpb2QnOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHBlcmlvZGRiID0gbmV3IGNvdXBvbl9wZXJpb2REQU8oKTsKCi8vIGZldGNoIGluZm9ybWF0aW9uIGFib3V0IHBlcmlvZCAodG8gYmUgdXNlZCBpbiBTZW5kRXZlbnQpCiRwZXJpb2RfZGF0YSA9ICRwZXJpb2RkYi0+ZmV0Y2goJHBrZXkpOwoKLy8gZGVsZXRlIGFjdGlvbgokcGVyaW9kZGItPmRlbGV0ZSgkcGtleSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGNhbGwgZXZlbnQgLyByZWRpcmVjdAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGV2ZW50X2FycmF5ID0gYXJyYXkoKTsKCmZvcmVhY2ggKCRhY3Rpb25fZGF0YVswXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgJGV2ZW50X2FycmF5WyRrZXldID0gJHZhbHVlOyAgICAKfQoKQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uUGVyaW9kRGVsZXRlZCcsICRldmVudF9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgncGVyaW9kX21lc3NhZ2UnID0+ICdzX2RlbGV0ZWQscGVyaW9kX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3BlcmlvZCcpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.preferences_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucHJlZmVyZW5jZXNfYWRkX2VkaXQucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgncHJlZmVyZW5jZXMnKSkpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUmVkaXJlY3Qgb24gY2FuY2VsCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsKICAgICRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ3ByZWZlcmVuY2VzJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGVtYWlsX3JlZ2lzdGVyZWRfY2hlY2sgPSBpc3NldCgkcGFyYW1zWydlbWFpbF9yZWdpc3RlcmVkX2NoZWNrJ10pID8gMSA6IDA7CgokZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0ID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXkEtWmEtejAtOVxzLV0vJywgJycsICRwYXJhbXNbJ2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdCddKSk7CgokZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsID0gaXNfZW1haWwodHJpbSgkcGFyYW1zWydlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnXSkpICA/IHRyaW0oJHBhcmFtc1snZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJ10pIDogJyc7CgokZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teQS1aYS16MC05XHMtXS8nLCAnJywgJHBhcmFtc1snZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUnXSkpOwoKJGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZSA9IHRyaW0oJHBhcmFtc1snZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlJ10pOwoKJGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXIgPSB0cmltKCRwYXJhbXNbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXInXSk7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9jaGVjaycsICRlbWFpbF9yZWdpc3RlcmVkX2NoZWNrKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdCcsICRlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJywgJGVtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19lbWFpbCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZScsICRlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZSk7CiR0aGlzLT5TZXRUZW1wbGF0ZSgnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlJywgJGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZSk7CiR0aGlzLT5TZXRUZW1wbGF0ZSgnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcicsICRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyKTsKCmlmICggKCRlbWFpbF9yZWdpc3RlcmVkX2NoZWNrID09IDEgKSAmJgogICAgICgkZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0ICE9ICcnKSAmJgogICAgICgkZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsICE9ICcnKSAmJgogICAgICgkZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUgIT0gJycpICYmCiAgICAgKCRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UgIT0gJycpICYmCiAgICAgKCRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyICE9ICcnKSApIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2UnLCAxKTsKfSBlbHNlIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2UnLCAwKTsgCn0KCi8vIGJhc2VkIG9uIHRoZSBuZXcgc2V0dGluZ3Mgd2UgbWlnaHQgdHJpZ2dlciBzb21lIGFjdGlvbnMKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByZWZlcmVuY2VzRWRpdGVkJywgJHBhcmFtcyk7CiRwYXJhbXMgPSBhcnJheSgncHJlZmVyZW5jZXNfbWVzc2FnZSc9PiAnc19lZGl0ZWQscHJlZmVyZW5jZXNfcycsICdhY3RpdmVfdGFiJyA9PiAncHJlZmVyZW5jZXMnKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.prize_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucHJpemVfYWRkX2VkaXQucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJykpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcsIGFycmF5KCdwcml6ZScpKSk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBhcHBseSBhbmQgY2FuY2VsCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhcHBseV9idXR0b25fY2xpY2tlZCA9ICcwJzsKCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkpIHsKICAgIGlmICgkcGFyYW1zWydzdWJtaXQnXSA9PSAkdGhpcy0+TGFuZygnYXBwbHknKSkgewogICAgICAgICRhcHBseV9idXR0b25fY2xpY2tlZCA9ICcxJzsKICAgIH0KfQoKaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkgewogICAgJHBhcmFtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAncHJpemUnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT2JqZWN0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwcml6ZWRiID0gbmV3IGNvdXBvbl9wcml6ZURBTygpOwokYWN0aW9uZGIgPSBuZXcgY291cG9uX2FjdGlvbkRBTygpOwokcGVyaW9kZGIgPSBuZXcgY291cG9uX3BlcmlvZERBTygpOwokbWl4ZWRkYiA9IG5ldyBjb3Vwb25fbWl4ZWREQU8oKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBmZXRjaCBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHBrZXkgPSAnJzsKJG1vZHVzID0gJ2FkZCc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGtleSddKSkgewogICAgJHBrZXkgPSAkcGFyYW1zWydwa2V5J107CiAgICAkbW9kdXMgPSAnZWRpdCc7CiAgICAKICAgICRyb3dzID0gJHByaXplZGItPmZldGNoKCRwa2V5KTsKICAgIAogICAgZm9yZWFjaCAoJHJvd3NbMF0gYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAKICAgICAgICBpZiAocHJlZ19tYXRjaCgiL2RhdGUvaSIsICRrZXkpKSB7CiAgICAgICAgICAgICR7JGtleX0gPSAkcHJpemVkYi0+dW5peF90aW1lX3N0YW1wKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHska2V5fSA9ICR2YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKfSBlbHNlIHsKCiAgICAkbW9kdXMgPSAnYWRkJzsKICAgIAogICAgJGNvdXBvbl9hY3Rpb25faWQgPSAnJzsKICAgICRjb3Vwb25fcGVyaW9kX2lkID0gJyc7CiAgICAkcHJpemVfY29kZSA9ICcnOwogICAgJHRpdGxlID0gJyc7CiAgICAkZGVzY3JpcHRpb24gPSAnJzsKICAgICRudW1iZXIgPSAnJzsKICAgICRzdGF0dXMgPSAnMSc7CiAgICAKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ10pICkgeyAgICAKICAgICRjb3Vwb25fYWN0aW9uX2lkID0gcHJlZ19yZXBsYWNlKCcvW14wLTldKi8nLCAnJywgJHBhcmFtc1snY291cG9uX2FjdGlvbl9pZCddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fcGVyaW9kX2lkJ10pICkgeyAgICAKICAgICRjb3Vwb25fcGVyaW9kX2lkID0gcHJlZ19yZXBsYWNlKCcvW14wLTldKi8nLCAnJywgJHBhcmFtc1snY291cG9uX3BlcmlvZF9pZCddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydwcml6ZV9jb2RlJ10pICkgewogICAgJHByaXplX2NvZGUgPSBVcEhlbHBlcjo6YWxwaGFfbnVtZXJpY19sb3dlcigkcGFyYW1zWydwcml6ZV9jb2RlJ10pOwp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ3RpdGxlJ10pICkgeyAgICAKICAgICR0aXRsZSA9IHRyaW0oJHBhcmFtc1sndGl0bGUnXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1snZGVzY3JpcHRpb24nXSkgKSB7ICAgIAogICAgJGRlc2NyaXB0aW9uID0gdHJpbSgkcGFyYW1zWydkZXNjcmlwdGlvbiddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydudW1iZXInXSkgKSB7ICAgIAogICAgJG51bWJlciA9IHByZWdfcmVwbGFjZSgnL1teMC05XSovJywgJycsICRwYXJhbXNbJ251bWJlciddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydzdGF0dXMnXSkgKSB7CiAgICAkc3RhdHVzID0gdHJpbSgkcGFyYW1zWydzdGF0dXMnXSk7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBjaGVjayBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAkZXJyb3IgPSBGQUxTRTsKICAgIAogICAgaWYgKCBlbXB0eSgkY291cG9uX2FjdGlvbl9pZCkgKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub19zX2dpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ2FjdGlvbicpKSkpOyAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICggZW1wdHkoJGNvdXBvbl9wZXJpb2RfaWQpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdwZXJpb2QnKSkpKTsgICAgICAgIAogICAgfQoKICAgIGlmICggZW1wdHkoJHByaXplX2NvZGUpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdwcml6ZV9jb2RlJykpKSk7CiAgICB9IAogICAgCiAgICBpZiAoIGVtcHR5KCR0aXRsZSkgKSB7CiAgICAgICAgJGVycm9yIC49ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub19zX2dpdmVuJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3RpdGxlJykpKSk7CiAgICB9CgogICAgaWYgKCBlbXB0eSgkZGVzY3JpcHRpb24pICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdkZXNjcmlwdGlvbicpKSkpOwogICAgfQogICAgCiAgICBpZiAoIGVtcHR5KCRudW1iZXIpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCdudW1iZXInKSkpKTsKICAgIH0KICAgICAgICAKICAgIGlmICggJGVycm9yICE9PSBGQUxTRSApIHsKICAgICAgICBlY2hvICRlcnJvcjsKICAgIH0gZWxzZSB7CgogICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAncHJpemVfY29kZScgPT4gJHByaXplX2NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZScgPT4gJHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+ICRkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcicgPT4gJG51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cycgPT4gJHN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvdXBvbl9hY3Rpb25faWQnID0+ICRjb3Vwb25fYWN0aW9uX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAnY291cG9uX3BlcmlvZF9pZCcgPT4gJGNvdXBvbl9wZXJpb2RfaWQKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICAkZGJfYXJyYXlbJ2NvdXBvbl9wcml6ZV9pZCddID0gJHBrZXk7ICAgICAgICAgICAgCiAgICAgICAgICAgICRwcml6ZWRiLT51cGRhdGUoJGRiX2FycmF5KTsgICAgICAgICAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY291cG9uX3ByaXplX2lkID0gJHByaXplZGItPmluc2VydCgkZGJfYXJyYXkpOyAKICAgICAgICAgICAgJGRiX2FycmF5Wydjb3Vwb25fcHJpemVfaWQnXSA9ICRjb3Vwb25fcHJpemVfaWQ7CiAgICAgICAgfQogICAgICAgICAKICAgIH0KICAgIAogICAgaWYgKCAhJGVycm9yICkgewogICAgICAgIAogICAgICAgIGlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAgICAgICAgIEAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByaXplRWRpdGVkJywgJGRiX2FycmF5KTsKICAgICAgICAgICAgJHBhcmFtcyA9IGFycmF5KCdwcml6ZV9tZXNzYWdlJz0+ICdzX2VkaXRlZCxwcml6ZV9zJywgJ2FjdGl2ZV90YWInID0+ICdwcml6ZScpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIEAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByaXplQWRkZWQnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ3ByaXplX21lc3NhZ2UnPT4gJ3NfYWRkZWQscHJpemVfcycsICdhY3RpdmVfdGFiJyA9PiAncHJpemUnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCRhcHBseV9idXR0b25fY2xpY2tlZCA9PSAnMScpIHsKICAgICAgICAgICAgJHBhcmFtc1sncGtleSddID0gJGRiX2FycmF5Wydjb3Vwb25fcHJpemVfaWQnXTsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ3ByaXplX2FkZF9lZGl0JywgJHJldHVybmlkLCAkcGFyYW1zKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIAogICAgfQogICAgCn0gLy8gc3VibWl0IAoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBidWlsZCBhbmQgcHJvY2Nlc3MgdGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3ByaXplX2FkZF9lZGl0JywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoKJGFjdGlvbmRyb3Bkb3duID0gYXJyYXkoKTsKJGFjdGlvbmRyb3Bkb3duID0gJGFjdGlvbmRiLT5mZXRjaF9hY3Rpb25kcm9wZG93bigpOwoKaWYgKGVtcHR5KCRhY3Rpb25kcm9wZG93bikpIHsKICAgICRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ2NvdXBvbl9hY3Rpb25fbWlzc2luZycsICdhY3RpdmVfdGFiJyA9PiAnYWN0aW9uJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKfQoKJGFjdGlvbl9pbnB1dCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2NvdXBvbl9hY3Rpb25faWQnLCBhcnJheSgpLCAtMSwgJGNvdXBvbl9hY3Rpb25faWQsICdpZD0iYWN0aW9uZHJvcGRvd24iJyk7CiRhY3Rpb25faW5wdXQgPSBVcEhlbHBlcjo6bW9kaWZ5X2lucHV0X2Ryb3Bkb3duKCRhY3Rpb25faW5wdXQsICRhY3Rpb25kcm9wZG93biwgJGNvdXBvbl9hY3Rpb25faWQpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhY3Rpb25fdGV4dCcsICR0aGlzLT5MYW5nKCdhY3Rpb24nKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9uX2lucHV0JywgJGFjdGlvbl9pbnB1dCk7CgokcGVyaW9kZHJvcGRvd24gPSBhcnJheSgpOwokcGVyaW9kZHJvcGRvd24gPSAkcGVyaW9kZGItPmZldGNoX3BlcmlvZGRyb3Bkb3duKCk7CgppZiAoZW1wdHkoJHBlcmlvZGRyb3Bkb3duKSkgewogICAgJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnY291cG9uX3BlcmlvZF9taXNzaW5nJywgJ2FjdGl2ZV90YWInID0+ICdwZXJpb2QnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwp9CgokcGVyaW9kX2lucHV0ID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnY291cG9uX3BlcmlvZF9pZCcsIGFycmF5KCksIC0xLCAkY291cG9uX3BlcmlvZF9pZCwgJ2lkPSJwZXJpb2Rkcm9wZG93biInKTsKJHBlcmlvZF9pbnB1dCA9IFVwSGVscGVyOjptb2RpZnlfaW5wdXRfZHJvcGRvd24oJHBlcmlvZF9pbnB1dCwgJHBlcmlvZGRyb3Bkb3duLCAkY291cG9uX3BlcmlvZF9pZCk7CgokYWN0aW9uX3BlcmlvZF9qcyA9ICRtaXhlZGRiLT5mZXRjaF9hY3Rpb25fcGVyaW9kX2pzKCk7CiRwZXJpb2RfanMgPSBVcEhlbHBlcjo6YXJyYXlfb2ZfYXJyYXlfdG9fanNvbigkYWN0aW9uX3BlcmlvZF9qcyk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BlcmlvZF90ZXh0JywgJHRoaXMtPkxhbmcoJ3BlcmlvZCcpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwZXJpb2RfaW5wdXQnLCAkcGVyaW9kX2lucHV0KTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwZXJpb2RfanMnLCAkcGVyaW9kX2pzKTsKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7ICAKICAgICRzZWxlY3RlZF9wZXJpb2RfanMgPSAkcm93c1snMCddWydjb3Vwb25fcGVyaW9kX2lkJ107Cn0gZWxzZSB7CiAgICAkc2VsZWN0ZWRfcGVyaW9kX2pzID0gJyc7ICAgIAp9CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NlbGVjdGVkX3BlcmlvZF9qcycsICRzZWxlY3RlZF9wZXJpb2RfanMpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcml6ZV9jb2RlX3RleHQnLCAkdGhpcy0+TGFuZygncHJpemVfY29kZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcml6ZV9jb2RlX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwcml6ZV9jb2RlJywgJHByaXplX2NvZGUsIDIwLCA0NSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0aXRsZScsICR0aXRsZSwgMjAsIDEwMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZXNjcmlwdGlvbl90ZXh0JywgJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9uJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Rlc2NyaXB0aW9uX2lucHV0JywgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKHRydWUsICRpZCwgJGRlc2NyaXB0aW9uLCAnZGVzY3JpcHRpb24nKSk7CgokbnVtYmVyZHJvcGRvd24gPSBhcnJheSgpOwoKZm9yICgkaSA9IDE7ICRpIDw9IDI1OyAkaSsrKSB7CiAgICAkbnVtYmVyZHJvcGRvd25bJGldID0gJGk7ICAgIAp9CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ251bWJlcl90ZXh0JywgJHRoaXMtPkxhbmcoJ251bWJlcicpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdudW1iZXJfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdudW1iZXInLCAkbnVtYmVyZHJvcGRvd24sIC0xLCAkbnVtYmVyKSk7CgoKJHN0YXR1c2Ryb3Bkb3duID0gYXJyYXkoKTsKJHN0YXR1c2Ryb3Bkb3duWyR0aGlzLT5MYW5nKCdpbmFjdGl2ZScpXSA9ICcwJzsKJHN0YXR1c2Ryb3Bkb3duWyR0aGlzLT5MYW5nKCdhY3RpdmUnKV0gPSAnMSc7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXR1c190ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXR1cycpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGF0dXNfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzdGF0dXMnLCAkc3RhdHVzZHJvcGRvd24sIC0xLCAkc3RhdHVzKSk7CgppZiAoJG1vZHVzID09ICdlZGl0JykgeyAgICAKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3BrZXknLCAkcGtleSkpOwp9IGVsc2UgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAnJyk7Cn0gICAgCgppZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ2VkaXQnKSkpOwp9IGVsc2UgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ2FkZCcpKSk7Cn0gICAgCiAgICAKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FwcGx5JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdhcHBseScpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncHJpemVfYWRkX2VkaXQudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.prize_change_status.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucHJpemVfY2hhbmdlX3N0YXR1cy5waHAgMTIgMjAxMi0wNy0xMiAxMDowMjoyOVogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEtMjAxMiBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3ByaXplJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokcGtleSA9ICcnOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3BrZXknXSkpIHsKICAgICRwa2V5ID0gJHBhcmFtc1sncGtleSddOwp9Cgokc3RhdHVzID0gJHBhcmFtc1snc3RhdHVzJ10gPT0gJzEnID8gJzEnIDogJzAnOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGRiX2FycmF5ID0gYXJyYXkoJ2NvdXBvbl9wcml6ZV9pZCcgPT4gJHBrZXksICdzdGF0dXMnID0+ICRzdGF0dXMpOwoKJHByaXplZGIgPSBuZXcgY291cG9uX3ByaXplREFPKCk7CiRwcml6ZWRiLT51cGRhdGUoJGRiX2FycmF5KTsKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByaXplRWRpdGVkJywgJGRiX2FycmF5KTsKJHBhcmFtcyA9IGFycmF5KCdwcml6ZV9tZXNzYWdlJz0+ICdzX2NoYW5nZWRfc3RhdHVzLHByaXplX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3ByaXplJyk7CiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.prize_delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ucHJpemVfZGVsZXRlLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENoZWNrUGVybWlzc2lvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgncHJpemUnKSkpOwogICAgcmV0dXJuOyAgCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHBrZXkgPSAnJzsKCmlmIChpc3NldCgkcGFyYW1zWydwa2V5J10pKSB7CiAgICAkcGtleSA9ICRwYXJhbXNbJ3BrZXknXTsKfSBlbHNlIHsKICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+bGFuZygnbm90X2FsbG93ZWQnKSk7CgkkcGFyYW1zWydhY3RpdmVfdGFiJ10gPSAncHJpemUnOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHByaXplZGIgPSBuZXcgY291cG9uX3ByaXplREFPKCk7CgovLyBmZXRjaCBpbmZvcm1hdGlvbiBhYm91dCBwcml6ZSAodG8gYmUgdXNlZCBpbiBTZW5kRXZlbnQpCiRwcml6ZV9kYXRhID0gJHByaXplZGItPmZldGNoKCRwa2V5KTsKCi8vIGRlbGV0ZSBwcml6ZQokcHJpemVkYi0+ZGVsZXRlKCRwa2V5KTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2FsbCBldmVudCAvIHJlZGlyZWN0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZXZlbnRfYXJyYXkgPSBhcnJheSgpOwoKZm9yZWFjaCAoJHByaXplX2RhdGFbMF0gYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICRldmVudF9hcnJheVska2V5XSA9ICR2YWx1ZTsgICAgCn0KCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblByaXplRGVsZXRlZCcsICRldmVudF9hcnJheSk7CiRwYXJhbXMgPSBhcnJheSgncHJpemVfbWVzc2FnZScgPT4gJ3NfZGVsZXRlZCxwcml6ZV9zJywgJ2FjdGl2ZV90YWInID0+ICdwcml6ZScpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.show_delete_cookie.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uc2hvd19kZWxldGVfY29va2llLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIG9iamVjdHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKLy9yZXF1aXJlKGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksICdsaWInLCAnY2xhc3NlcycsICdVcENvb2tpZS5jbGFzcy5waHAnKSk7CgokY29va2llID0gbmV3IFVwQ29va2llKCczMTUzNjAwMCcpOwokY29va2llLT5kZWxldGUoJ3Rva2VuJyk7IAoKJHRoaXMtPlJlZGlyZWN0Rm9yRnJvbnRFbmQoJGlkLCAkcmV0dXJuaWQsICdzaG93X3JlZ2lzdGVyJyk7CnJldHVybjsKCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/action.show_prize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uc2hvd19wcml6ZS5waHAgMTIgMjAxMi0wNy0xMiAxMDowMjoyOVogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEtMjAxMiBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBmZXRjaCBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFsbF90ZW1wbGF0ZXMgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygpOwoKJHRlbXBsYXRlID0gJzAnOwoKaWYgKCBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSApIHsgICAgICAKICAgICR0ZW1wbGF0ZSA9IFVwSGVscGVyOjphbHBoYV9udW1lcmljX2xvd2VyKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwogICAgJHRlbXBsYXRlID0gJ3ByaXplXycuICR0ZW1wbGF0ZTsKICAgIAogICAgJHRtcCA9ICcwJzsKICAgIAogICAgZm9yZWFjaCAoJGFsbF90ZW1wbGF0ZXMgYXMgJGsgPT4gJHYpIHsKICAgICAgICBpZiAoJHRlbXBsYXRlID09ICR2KSB7CiAgICAgICAgICAgICR0bXAgPSAnMSc7CiAgICAgICAgfQogICAgfQogICAgCiAgICAkdGVtcGxhdGUgPSAoJHRtcCA9PSAnMScpID8gJHRlbXBsYXRlIDogJzAnOwogICAgCn0KCmlmICggaXNzZXQoJHBhcmFtc1snY291cG9uX2FjdGlvbl9pZCddKSApIHsgICAgCiAgICAkY291cG9uX2FjdGlvbl9pZCA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ10pKTsgICAgCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9ncmFtCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRxdWVyeSA9ICJTRUxFQ1QgdDEudGl0bGUgQVMgYWN0aW9uX3RpdGxlLAogICAgICAgICAgICB0MS5hbGlhcyBBUyBhY3Rpb25fYWxpYXMsCiAgICAgICAgICAgIHQxLmRlc2NyaXB0aW9uIEFTIGFjdGlvbl9kZXNjcmlwdGlvbiwKICAgICAgICAgICAgdDEuc3RhcnRfZGF0ZSBBUyBhY3Rpb25fc3RhcnRfZGF0ZSwKICAgICAgICAgICAgdDEuZW5kX2RhdGUgQVMgYWN0aW9uX2VuZF9kYXRlLAogICAgICAgICAgICB0Mi50aXRsZSBBUyBwZXJpb2RfdGl0bGUsCiAgICAgICAgICAgIHQyLnN0YXJ0X2RhdGUgQVMgIHBlcmlvZF9zdGFydF9kYXRlLAogICAgICAgICAgICB0Mi5lbmRfZGF0ZSBBUyBwZXJpb2RfZW5kX2RhdGUsCiAgICAgICAgICAgIHQyLmlzX2ZpbmFsIEFTIHBlcmlvZF9maW5hbCwKICAgICAgICAgICAgdDMucHJpemVfY29kZSBBUyBwcml6ZV9jb2RlLCAKICAgICAgICAgICAgdDMudGl0bGUgQVMgcHJpemVfdGl0bGUsCiAgICAgICAgICAgIHQzLmRlc2NyaXB0aW9uIEFTIHByaXplX2Rlc2NyaXB0aW9uLAogICAgICAgICAgICB0My5udW1iZXIgQVMgcHJpemVfbnVtYmVyCiAgICAgICAgRlJPTSAiLiBVUENPVVBPTl9BQ1RJT05fVEFCTEUuICIgdDEsCiAgICAgICAgICAgICIuIFVQQ09VUE9OX1BFUklPRF9UQUJMRS4gIiB0MiwgICAgCiAgICAgICAgICAgICIuIFVQQ09VUE9OX1BSSVpFX1RBQkxFLiAiIHQzCiAgICAgICAgV0hFUkUgdDEuY291cG9uX2FjdGlvbl9pZCA9IHQyLmNvdXBvbl9hY3Rpb25faWQKICAgICAgICBBTkQgdDIuY291cG9uX3BlcmlvZF9pZCA9IHQzLmNvdXBvbl9wZXJpb2RfaWQKICAgICAgICBBTkQgdDEuc3RhdHVzID0gMQogICAgICAgIEFORCB0Mi5zdGF0dXMgPSAxCiAgICAgICAgQU5EIHQzLnN0YXR1cyA9IDEiOwoKaWYgKHByZWdfbWF0Y2goIi9eWzAtOV17MSw1fSQvIix0cmltKCRjb3Vwb25fYWN0aW9uX2lkKSkgKSB7CiAgICAkcXVlcnkgLj0gIiBBTkQgdDEuY291cG9uX2FjdGlvbl9pZCA9ID8iOwp9CiAgICAgICAgCiRxdWVyeSAuPSAiIE9SREVSIEJZIHQyLmVuZF9kYXRlIjsKCiRkYiA9IGNtc21zKCktPkdldERiKCk7CgppZiAocHJlZ19tYXRjaCgiL15bMC05XXsxLDV9JC8iLHRyaW0oJGNvdXBvbl9hY3Rpb25faWQpKSApIHsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb3Vwb25fYWN0aW9uX2lkKSk7Cn0gZWxzZSB7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsgICAgCn0KCiRkYl9yZXN1bHQgPSBhcnJheSgpOwoKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAKICAgICRvYmogPSBuZXcgc3RkY2xhc3M7CiAgICAKICAgIGZvcmVhY2ggKCRyb3cgYXMgJGsgPT4gJHYpIHsKICAgICAgICAkb2JqLT4kayA9ICRyb3dbJGtdOwogICAgfQogICAgICAgIAogICAgJGRiX3Jlc3VsdFtdID0gJG9iajsKICAgIAp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgYXNzaWduIHNtYXJ0eSB2YXJpYWJsZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRkYl9yZXN1bHQpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRkYl9yZXN1bHQpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9uX3NfdGV4dCcsICR0aGlzLT5MYW5nKCdhY3Rpb25fcycpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhY3Rpb25fcF90ZXh0JywgJHRoaXMtPkxhbmcoJ2FjdGlvbl9wJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwZXJpb2Rfc190ZXh0JywgJHRoaXMtPkxhbmcoJ3BlcmlvZF9zJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BlcmlvZF9wX3RleHQnLCAkdGhpcy0+TGFuZygncGVyaW9kX3AnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByaXplX3NfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9zJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByaXplX3BfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9wJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhcnRfZGF0ZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ2VuZF9kYXRlJykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFByb2Nlc3NUZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoJHRlbXBsYXRlICE9ICcwJykgewogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCR0ZW1wbGF0ZSk7IAp9IGVsc2UgewogICAgJHRlbXBsYXRlX3R5cGVfa2V5ID0gJ2RlZmF1bHRfcHJpemVfdGVtcGxhdGUnOwogICAgJHRlbXBsYXRlICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCR0ZW1wbGF0ZV90eXBlX2tleSk7CiAgICAKICAgICR0bXAgPSAnMCc7CiAgICAKICAgIGZvcmVhY2ggKCRhbGxfdGVtcGxhdGVzIGFzICRrID0+ICR2KSB7CiAgICAgICAgaWYgKCR0ZW1wbGF0ZSAgPT0gJHYpIHsKICAgICAgICAgICAgJHRtcCA9ICcxJzsKICAgICAgICB9CiAgICB9CiAgICAKICAgICR0ZW1wbGF0ZSA9ICgkdG1wID09ICcxJykgPyAkdGVtcGxhdGUgOiAnMCc7CgogICAgaWYgKCR0ZW1wbGF0ZSA9PSAnMCcpIHsKICAgICAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2ZhY3RvcnlfdGVtcGxhdGVfcHJpemUudHBsJyk7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOyAKICAgIH0KICAgICAKfQoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.show_register.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uc2hvd19yZWdpc3Rlci5waHAgMTIgMjAxMi0wNy0xMiAxMDowMjoyOVogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEtMjAxMiBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBvYmplY3RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi8vcmVxdWlyZShjbXNfam9pbl9wYXRoKGRpcm5hbWUoX19GSUxFX18pLCAnbGliJywgJ2NsYXNzZXMnLCAnVXBDb29raWUuY2xhc3MucGhwJykpOwoKJGNvb2tpZSA9IG5ldyBVcENvb2tpZSgnMzE1MzYwMDAnKTsKJGlwID0gVXBIZWxwZXI6OmdldF9pcCgpOwokY3VzdG9tZXJkYiA9IG5ldyBjb3Vwb25fY3VzdG9tZXJEQU8oKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyByZXRyaWV2ZSBleGlzdGluZyBjdXN0b21lcl9kYXRhCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRtb2R1cyA9ICdpbnNlcnQnOwoKaWYgKCAhIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApIHsKICAgICRjaGVja3N1bSA9ICRjb29raWUtPmdldCgndG9rZW4nKTsKICAgIAogICAgJGN1c3RvbWVyX2RhdGEgPSBhcnJheSgpOwogICAgCiAgICBpZiAoc3RybGVuKCRjaGVja3N1bSkgPT0gJzMyJykgewogICAgICAgICRjdXN0b21lcl9kYXRhID0gJGN1c3RvbWVyZGItPmZldGNoX2J5X2lwX2NoZWNrc3VtKCRpcCwgJGNoZWNrc3VtKTsKICAgICAgICAKICAgICAgICBpZiAoJGN1c3RvbWVyX2RhdGFbJzAnXVsnY2hlY2tzdW0nXSA9PSAkY2hlY2tzdW0pIHsKICAgICAgICAgICAgJG1vZHVzID0gJ2VkaXQnOwogICAgICAgICAgICAKICAgICAgICAgICAgZm9yZWFjaCAoJGN1c3RvbWVyX2RhdGFbMF0gYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgICAgICQkayA9ICR2OyAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGZldGNoIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokYWxsX3RlbXBsYXRlcyA9ICR0aGlzLT5MaXN0VGVtcGxhdGVzKCk7CgokdGVtcGxhdGUgPSAnMCc7CgppZiAoIGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkgeyAgICAgIAogICAgJHRlbXBsYXRlID0gVXBIZWxwZXI6OmFscGhhX251bWVyaWNfbG93ZXIoJHBhcmFtc1sndGVtcGxhdGUnXSk7CiAgICAkdGVtcGxhdGUgPSAncmVnaXN0ZXJfJy4gJHRlbXBsYXRlOwogICAgCiAgICAkdG1wID0gJzAnOwogICAgCiAgICBmb3JlYWNoICgkYWxsX3RlbXBsYXRlcyBhcyAkayA9PiAkdikgewogICAgICAgIGlmICgkdGVtcGxhdGUgPT0gJHYpIHsKICAgICAgICAgICAgJHRtcCA9ICcxJzsKICAgICAgICB9CiAgICB9CiAgICAKICAgICR0ZW1wbGF0ZSA9ICgkdG1wID09ICcxJykgPyAkdGVtcGxhdGUgOiAnMCc7CiAgICAKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydmaXJzdF9uYW1lJ10pICkgeyAKICAgICRmaXJzdF9uYW1lID0gdHJpbShmaWx0ZXJfdmFyKCRwYXJhbXNbJ2ZpcnN0X25hbWUnXSwgRklMVEVSX1NBTklUSVpFX1NUUklORywgRklMVEVSX0ZMQUdfTk9fRU5DT0RFX1FVT1RFUykpOwp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ2xhc3RfbmFtZSddKSApIHsKICAgICRsYXN0X25hbWUgPSB0cmltKGZpbHRlcl92YXIoJHBhcmFtc1snbGFzdF9uYW1lJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcsIEZJTFRFUl9GTEFHX05PX0VOQ09ERV9RVU9URVMpKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydlbWFpbCddKSApIHsgICAgCiAgICAkZW1haWwgPSB0cmltKGZpbHRlcl92YXIoJHBhcmFtc1snZW1haWwnXSwgRklMVEVSX1NBTklUSVpFX0VNQUlMKSk7ICAgCn0KCmlmICggaXNzZXQoJHBhcmFtc1sncGhvbmUnXSkgKSB7ICAgIAogICAgJHBob25lID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICRwYXJhbXNbJ3Bob25lJ10pKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fY29kZV8wMSddKSApIHsgICAgCiAgICAkY291cG9uX2NvZGVfMDEgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHBhcmFtc1snY291cG9uX2NvZGVfMDEnXSkpOyAgICAKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fY29kZV8wMiddKSApIHsgICAgCiAgICAkY291cG9uX2NvZGVfMDIgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHBhcmFtc1snY291cG9uX2NvZGVfMDInXSkpOyAgCn0KCmlmICggaXNzZXQoJHBhcmFtc1snY291cG9uX2NvZGVfMDMnXSkgKSB7ICAgIAogICAgJGNvdXBvbl9jb2RlXzAzID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICRwYXJhbXNbJ2NvdXBvbl9jb2RlXzAzJ10pKTsgIAp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ2NvdXBvbl9jb2RlXzA0J10pICkgeyAgICAKICAgICRjb3Vwb25fY29kZV8wNCA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkcGFyYW1zWydjb3Vwb25fY29kZV8wNCddKSk7ICAKfQoKJGNvdXBvbl9jb2RlID0gJGNvdXBvbl9jb2RlXzAxLiAkY291cG9uX2NvZGVfMDIuICRjb3Vwb25fY29kZV8wMy4gJGNvdXBvbl9jb2RlXzA0OwoKaWYgKCBpc3NldCgkcGFyYW1zWyd0ZXJtc19hbmRfY29uZGl0aW9ucyddKSApIHsgICAgCiAgICAkdGVybXNfYW5kX2NvbmRpdGlvbnMgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teMV0vJywgJycsICRwYXJhbXNbJ3Rlcm1zX2FuZF9jb25kaXRpb25zJ10pKTsgCn0KCmlmICggaXNzZXQoJHBhcmFtc1snbmV3c2xldHRlciddKSApIHsgICAgCiAgICAkbmV3c2xldHRlciA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvW14xXS8nLCAnJywgJHBhcmFtc1snbmV3c2xldHRlciddKSk7Cn0KCmlmICggISBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgJiYgJG1vZHVzICE9ICdlZGl0JykgewogICAgJG5ld3NsZXR0ZXIgPSAnMSc7Cn0gICAgCiAgICAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGNoZWNrIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZXJyb3JfYXJyYXkgPSBhcnJheSgnMScpOwoKaWYgKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAKICAgICRlcnJvcl9hcnJheSA9IGFycmF5KCk7CiAgICAKICAgIGlmICggZW1wdHkoJGZpcnN0X25hbWUpICkgewogICAgICAgICRlcnJvcl9hcnJheVsnZmlyc3RfbmFtZSddID0gJzEnOwogICAgfQogICAgICAgIAogICAgaWYgKCBlbXB0eSgkbGFzdF9uYW1lKSApIHsKICAgICAgICAkZXJyb3JfYXJyYXlbJ2xhc3RfbmFtZSddID0gJzEnOwogICAgfQogICAgCiAgICBpZiAoICFpc19lbWFpbCgkZW1haWwpICkgewogICAgICAgICRlcnJvcl9hcnJheVsnZW1haWwnXSA9ICcxJzsKICAgIH0KICAgIAogICAgaWYgKCBzdHJsZW4oJHBob25lKSAhPSAnMTAnICkgewogICAgICAgICRlcnJvcl9hcnJheVsncGhvbmUnXSA9ICAnMSc7CiAgICB9CiAgICAKICAgIGlmICggc3RybGVuKCRjb3Vwb25fY29kZSkgIT0gJzE2JyApIHsKICAgICAgICAkZXJyb3JfYXJyYXlbJ2NvdXBvbl9jb2RlJ10gPSAnMSc7CiAgICB9CiAgICAKICAgIGlmICggZW1wdHkoJHRlcm1zX2FuZF9jb25kaXRpb25zKSApIHsKICAgICAgICAkZXJyb3JfYXJyYXlbJ3Rlcm1zX2FuZF9jb25kaXRpb25zJ10gPSAnMSc7CiAgICB9CiAgICAKfQoKICAgIGlmICggY291bnQoJGVycm9yX2FycmF5KSA+PSAxICkgewogICAgICAgICRzbWFydHktPmFzc2lnbignZXJyb3JfYXJyYXknLCAkZXJyb3JfYXJyYXkpOwogICAgfSBlbHNlIHsKIAogICAgICAgICRjaGVja3N1bSA9ICRjb29raWUtPmdldCgndG9rZW4nKTsKICAgICAgICAgICAgICAgIAogICAgICAgIGlmIChzdHJsZW4oJGNoZWNrc3VtKSA9PSAnMzInKSB7CiAgICAgICAgICAgICRjdXN0b21lcl9kYXRhID0gJGN1c3RvbWVyZGItPmZldGNoX2J5X2lwX2NoZWNrc3VtKCRpcCwgJGNoZWNrc3VtKTsKCiAgICAgICAgICAgIGlmICgkY3VzdG9tZXJfZGF0YVsnMCddWydjaGVja3N1bSddID09ICRjaGVja3N1bSkgewogICAgICAgICAgICAgICAgJG1vZHVzID0gJ2VkaXQnOwogICAgICAgICAgICAgICAgJGNvdXBvbl9jdXN0b21lcl9pZCA9ICRjdXN0b21lcl9kYXRhWycwJ11bJ2NvdXBvbl9jdXN0b21lcl9pZCddOwogICAgICAgICAgICB9CiAgICAgICAgfSAgICAgCiAgICAgICAgCiAgICAgICAgaWYgKCRtb2R1cyA9PSAnZWRpdCcpIHsKICAgICAgICAgICAgCiAgICAgICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgJ2ZpcnN0X25hbWUnID0+ICRmaXJzdF9uYW1lLAogICAgICAgICAgICAgICAgJ2xhc3RfbmFtZScgPT4gJGxhc3RfbmFtZSwKICAgICAgICAgICAgICAgICdlbWFpbCcgPT4gJGVtYWlsLAogICAgICAgICAgICAgICAgJ3Bob25lJyA9PiAkcGhvbmUsCiAgICAgICAgICAgICAgICAnbmV3c2xldHRlcicgPT4gJG5ld3NsZXR0ZXIsCiAgICAgICAgICAgICAgICAndGltZXN0YW1wJyA9PiAkY3VzdG9tZXJkYi0+dW5peF90aW1lX3N0YW1wKCksCiAgICAgICAgICAgICAgICAnY291cG9uX2N1c3RvbWVyX2lkJyA9PiAkY291cG9uX2N1c3RvbWVyX2lkCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkY3VzdG9tZXJkYi0+dXBkYXRlKCRkYl9hcnJheSk7CiAgICAgICAgCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgCiAgICAgICAgICAgICRwYXNzd29yZCA9IFVwSGVscGVyOjpyYW5kb21fcGFzc3dvcmQoKTsKICAgICAgICAgICAgJHNhbHQgPSByYW5kKDEwMDAwMDAsOTk5OTk5OTkpOwogICAgICAgICAgICAkY2hlY2tzdW0gPSBtZDUoJHBhc3N3b3JkLiRzYWx0KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgJ2ZpcnN0X25hbWUnID0+ICRmaXJzdF9uYW1lLAogICAgICAgICAgICAgICAgJ2xhc3RfbmFtZScgPT4gJGxhc3RfbmFtZSwKICAgICAgICAgICAgICAgICdlbWFpbCcgPT4gJGVtYWlsLAogICAgICAgICAgICAgICAgJ3Bob25lJyA9PiAkcGhvbmUsCiAgICAgICAgICAgICAgICAnbmV3c2xldHRlcicgPT4gJG5ld3NsZXR0ZXIsCiAgICAgICAgICAgICAgICAnaXAnID0+ICRpcCwgCiAgICAgICAgICAgICAgICAnc3RhdHVzJyA9PiAxLAogICAgICAgICAgICAgICAgJ3Bhc3N3b3JkJyA9PiAkcGFzc3dvcmQsCiAgICAgICAgICAgICAgICAnc2FsdCcgPT4gJHNhbHQsCiAgICAgICAgICAgICAgICAnY2hlY2tzdW0nID0+ICRjaGVja3N1bSwKICAgICAgICAgICAgICAgICdyZWdpc3RyYXRpb25fZGF0ZScgPT4gJGN1c3RvbWVyZGItPmRiX3RpbWVfc3RhbXAoKSwKICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnID0+ICRjdXN0b21lcmRiLT51bml4X3RpbWVfc3RhbXAoKQogICAgICAgICAgICApOwogICAgICAgICAgICAKICAgICAgICAgICAgJGRiX2FycmF5Wydjb3Vwb25fY3VzdG9tZXJfaWQnXSA9ICRjdXN0b21lcmRiLT5pbnNlcnQoJGRiX2FycmF5KTsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgICRjb29raWUtPnNldCgndG9rZW4nLCAkY2hlY2tzdW0pOyAKCiAgICAgICAgJGNvZGVkYiA9IG5ldyBjb3Vwb25fY29kZURBTygpOyAgICAgICAgCiAgICAgICAgJGNvdXBvbl9kYXRhID0gJGNvZGVkYi0+ZmV0Y2goJGNvdXBvbl9jb2RlLCAnY291cG9uX2NvZGUnKTsKICAgICAgICAKICAgICAgICBpZiAoJGNvdXBvbl9kYXRhWycwJ11bJ2NvdXBvbl9jdXN0b21lcl9pZCddID09IDApIHsKICAgICAgICAgICAgJGlzX3Rha2VuID0gJzAnOyAgIAogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpc190YWtlbiA9ICcxJzsKICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICBpZiAoICgkY291cG9uX2RhdGFbJzAnXVsnY291cG9uX2NvZGUnXSA9PSAkY291cG9uX2NvZGUpICYmICghJGlzX3Rha2VuKSApIHsKCiAgICAgICAgICAgICRkYl9hcnJheV8wMiA9IGFycmF5KAogICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCcgPT4gJGNvZGVkYi0+dW5peF90aW1lX3N0YW1wKCksCiAgICAgICAgICAgICAgICAnY291cG9uX2N1c3RvbWVyX2lkJyA9PiAkZGJfYXJyYXlbJ2NvdXBvbl9jdXN0b21lcl9pZCddLAogICAgICAgICAgICAgICAgJ2NvdXBvbl9jb2RlX2lkJyA9PiAkY291cG9uX2RhdGFbJzAnXVsnY291cG9uX2NvZGVfaWQnXQogICAgICAgICAgICApOwogICAgICAgICAgICAKICAgICAgICAgICAgJGNvZGVkYi0+dXBkYXRlKCRkYl9hcnJheV8wMik7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VtYWlsX3JlZ2lzdGVyZWRfdHJ1ZV9mYWxzZScsMCkgPT0gMSkgewogICAgICAgICAgICAgICAgJG1haWwgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NNU01haWxlcicpOwogICAgICAgICAgICAgICAgaWYgKCRtYWlsICE9PSBGQUxTRSkgewogICAgICAgICAgICAgICAgICAgICRtYWlsLT5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICRtYWlsLT5TZXRTdWJqZWN0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkZW1haWxfYXJyYXkgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0X25hbWUnID0+ICRmaXJzdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAnbGFzdF9uYW1lJyA9PiAkbGFzdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAnZW1haWwnID0+ICRlbWFpbCwKICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob25lJyA9PiAkcGhvbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICduZXdzbGV0dGVyJyA9PiAkbmV3c2xldHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCcgPT4gJGNvZGVkYi0+dW5peF90aW1lX3N0YW1wKCksIAogICAgICAgICAgICAgICAgICAgICAgICAnZGJfdGltZXN0YW1wJyA9PiAkY29kZWRiLT5kYl90aW1lX3N0YW1wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICdkYXNoZWRfY291cG9uX2NvZGUnID0+IGltcGxvZGUoJy0nLCBzdHJfc3BsaXQoJGNvdXBvbl9jb2RlLCA0KSksCiAgICAgICAgICAgICAgICAgICAgICAgICdjb3Vwb25fY29kZScgPT4gJGNvdXBvbl9jb2RlCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZW1haWwnLCAkZW1haWxfYXJyYXkpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICRib2R5ID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aGlzLT5HZXRUZW1wbGF0ZSgnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlJykpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICRtYWlsLT5TZXRCb2R5KCRib2R5KTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkbWFpbC0+U2V0RnJvbSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJykpOwogICAgICAgICAgICAgICAgICAgICRtYWlsLT5TZXRGcm9tTmFtZSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkZnVsbF9uYW1lID0gJGRiX2FycmF5WydmaXJzdF9uYW1lJ10gLiAnICcuICRkYl9hcnJheVsnbGFzdF9uYW1lJ107IAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICRtYWlsLT5BZGRBZGRyZXNzKCRkYl9hcnJheVsnZW1haWwnXSwgJGZ1bGxfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgJHJlcyA9ICRtYWlsLT5TZW5kKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpc19yZWdpc3RlcmVkJywgJzEnKTsKICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nfc19jb3Vwb25fY29kZV9yZWdpc3RlcmVkX3RleHQnLCAkdGhpcy0+TGFuZygnc19zX2NvdXBvbl9jb2RlX3JlZ2lzdGVyZWQnLCBhcnJheSgkZmlyc3RfbmFtZSwgJGxhc3RfbmFtZSkpKTsKICAgICAgICAKICAgICAgICAkdGVybXNfYW5kX2NvbmRpdGlvbnMgPSAnMCc7CiAgICAgICAgJGNvdXBvbl9jb2RlXzAxID0gJyc7CiAgICAgICAgJGNvdXBvbl9jb2RlXzAyID0gJyc7CiAgICAgICAgJGNvdXBvbl9jb2RlXzAzID0gJyc7CiAgICAgICAgJGNvdXBvbl9jb2RlXzA0ID0gJyc7CiAgICAgICAgICAgCiAgICB9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgYnVpbGQgYW5kIHByb2Nlc3MgdGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtX2lkJywgJGlkKTsKCiRzdGFydGZvcm0gPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3Nob3dfcmVnaXN0ZXInLCAkcmV0dXJuaWQsICdwb3N0Jyk7CgpwcmVnX21hdGNoX2FsbCgnLyhpZCk9KCJbXiJdKiIpL2knLCAkc3RhcnRmb3JtLCAkbWF0Y2hlcyk7CiRmdWxsX2Zvcm1faWQgPSBzdHJfcmVwbGFjZSgnIicsICcnLCAkbWF0Y2hlc1syXVswXSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Z1bGxfZm9ybV9pZCcsICRmdWxsX2Zvcm1faWQpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkc3RhcnRmb3JtKTsKCiRkZWxldGVfY291cG9uX2NvZGVfY29va2llX2xpbmsgPSAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnc2hvd19kZWxldGVfY29va2llJywgJ2NvbnRlbnRzJywgJycsICcnLCAndHJ1ZScsICd0cnVlJywgJ2FkZHRleHQnLCAnZmFsc2UnKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZGVsZXRlX2NvdXBvbl9jb2RlX2Nvb2tpZV9saW5rJywgJGRlbGV0ZV9jb3Vwb25fY29kZV9jb29raWVfbGluayk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2RlbGV0ZV9jb3Vwb25fY29kZV9jb29raWVfdGV4dCcsICR0aGlzLT5MYW5nKCdzX2RlbGV0ZV9jb3Vwb25fY29kZV9jb29raWUnLCBhcnJheSgkZGVsZXRlX2NvdXBvbl9jb2RlX2Nvb2tpZV9saW5rKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWxldGVfdGV4dCcsICR0aGlzLT5MYW5nKCdkZWxldGUnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlZ2lzdGVyX2NvdXBvbl9jb2RlX3RleHQnLCAkdGhpcy0+TGFuZygncmVnaXN0ZXJfY291cG9uX2NvZGUnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpcnN0X25hbWVfdGV4dCcsICR0aGlzLT5MYW5nKCdmaXJzdF9uYW1lJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpcnN0X25hbWVfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2ZpcnN0X25hbWUnLCAkZmlyc3RfbmFtZSwgNDAsIDEwMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdsYXN0X25hbWVfdGV4dCcsICR0aGlzLT5MYW5nKCdsYXN0X25hbWUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignbGFzdF9uYW1lX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdsYXN0X25hbWUnLCAkbGFzdF9uYW1lLCA0MCwgMTAwKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VtYWlsX3RleHQnLCAkdGhpcy0+TGFuZygnZW1haWwnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZW1haWxfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2VtYWlsJywgJGVtYWlsLCA0MCwgNDUpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigncGhvbmVfdGV4dCcsICR0aGlzLT5MYW5nKCdwaG9uZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwaG9uZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAncGhvbmUnLCAkcGhvbmUsIDQwLCAxMCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb3Vwb25fY29kZV90ZXh0JywgJHRoaXMtPkxhbmcoJ2NvdXBvbl9jb2RlJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb3Vwb25fY29kZV8wMV9pbnB1dCcsIHByZWdfcmVwbGFjZSgnL2NsYXNzPSJjbXNfdGV4dGZpZWxkIi8nLCAnY2xhc3M9ImNtc190ZXh0ZmllbGRfc21hbGwiJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjb3Vwb25fY29kZV8wMScsICRjb3Vwb25fY29kZV8wMSwgMTAsIDQpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NvdXBvbl9jb2RlXzAyX2lucHV0JywgcHJlZ19yZXBsYWNlKCcvY2xhc3M9ImNtc190ZXh0ZmllbGQiLycsICdjbGFzcz0iY21zX3RleHRmaWVsZF9zbWFsbCInLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2NvdXBvbl9jb2RlXzAyJywgJGNvdXBvbl9jb2RlXzAyLCAxMCwgNCkpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignY291cG9uX2NvZGVfMDNfaW5wdXQnLCBwcmVnX3JlcGxhY2UoJy9jbGFzcz0iY21zX3RleHRmaWVsZCIvJywgJ2NsYXNzPSJjbXNfdGV4dGZpZWxkX3NtYWxsIicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY291cG9uX2NvZGVfMDMnLCAkY291cG9uX2NvZGVfMDMsIDEwLCA0KSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb3Vwb25fY29kZV8wNF9pbnB1dCcsIHByZWdfcmVwbGFjZSgnL2NsYXNzPSJjbXNfdGV4dGZpZWxkIi8nLCAnY2xhc3M9ImNtc190ZXh0ZmllbGRfc21hbGwiJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjb3Vwb25fY29kZV8wNCcsICRjb3Vwb25fY29kZV8wNCwgMTAsIDQpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Rlcm1zX2FuZF9jb25kaXRpb25zX3RleHQnLCAkdGhpcy0+TGFuZygndGVybXNfYW5kX2NvbmRpdGlvbnMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVybXNfYW5kX2NvbmRpdGlvbnNfYWdyZWVfdGV4dCcsICR0aGlzLT5MYW5nKCd0ZXJtc19hbmRfY29uZGl0aW9uc19hZ3JlZScpKTsKJHNtYXJ0eS0+YXNzaWduKCd0ZXJtc19hbmRfY29uZGl0aW9uc19pbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCd0ZXJtc19hbmRfY29uZGl0aW9ucycsJzEnLCAkdGVybXNfYW5kX2NvbmRpdGlvbnMpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignbmV3c2xldHRlcl90ZXh0JywgJHRoaXMtPkxhbmcoJ25ld3NsZXR0ZXInKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignbmV3c2xldHRlcl9hZ3JlZV90ZXh0JywgJHRoaXMtPkxhbmcoJ25ld3NsZXR0ZXJfYWdyZWUnKSk7CiRzbWFydHktPmFzc2lnbignbmV3c2xldHRlcl9pbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCduZXdzbGV0dGVyJywnMScsICRuZXdzbGV0dGVyKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywgJHRoaXMtPkNyZWF0ZUlucHV0UmVzZXQoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CgoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUHJvY2Vzc1RlbXBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICgkdGVtcGxhdGUgIT0gJzAnKSB7CiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRlbXBsYXRlKTsgCn0gZWxzZSB7CiAgICAkdGVtcGxhdGVfdHlwZV9rZXkgPSAnZGVmYXVsdF9yZWdpc3Rlcl90ZW1wbGF0ZSc7CiAgICAkdGVtcGxhdGUgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJHRlbXBsYXRlX3R5cGVfa2V5KTsKICAgIAogICAgJHRtcCA9ICcwJzsKICAgIAogICAgZm9yZWFjaCAoJGFsbF90ZW1wbGF0ZXMgYXMgJGsgPT4gJHYpIHsKICAgICAgICBpZiAoJHRlbXBsYXRlICA9PSAkdikgewogICAgICAgICAgICAkdG1wID0gJzEnOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJHRlbXBsYXRlID0gKCR0bXAgPT0gJzEnKSA/ICR0ZW1wbGF0ZSA6ICcwJzsKCiAgICBpZiAoJHRlbXBsYXRlID09ICcwJykgewogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmFjdG9yeV90ZW1wbGF0ZV9yZWdpc3Rlci50cGwnKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCR0ZW1wbGF0ZSk7IAogICAgfQogICAgIAp9CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.show_winner.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24uc2hvd193aW5uZXIucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKLyoKCi0gY29sbGVjdCB3aW5uZXIgZGF0YQotIHNobWx6OiBpbXBsZW1lbnQKCiovCgoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBmZXRjaCBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGFsbF90ZW1wbGF0ZXMgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygpOwoKJHRlbXBsYXRlID0gJzAnOwoKaWYgKCBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSApIHsgICAgICAKICAgICR0ZW1wbGF0ZSA9IFVwSGVscGVyOjphbHBoYV9udW1lcmljX2xvd2VyKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwogICAgJHRlbXBsYXRlID0gJ3dpbm5lcl8nLiAkdGVtcGxhdGU7CiAgICAKICAgICR0bXAgPSAnMCc7CiAgICAKICAgIGZvcmVhY2ggKCRhbGxfdGVtcGxhdGVzIGFzICRrID0+ICR2KSB7CiAgICAgICAgaWYgKCR0ZW1wbGF0ZSA9PSAkdikgewogICAgICAgICAgICAkdG1wID0gJzEnOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJHRlbXBsYXRlID0gKCR0bXAgPT0gJzEnKSA/ICR0ZW1wbGF0ZSA6ICcwJzsKICAgIAp9CgokY291cG9uX2FjdGlvbl9pZCA9ICcnOwoKaWYgKCBpc3NldCgkcGFyYW1zWydjb3Vwb25fYWN0aW9uX2lkJ10pICkgeyAgICAKICAgICRjb3Vwb25fYWN0aW9uX2lkID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICRwYXJhbXNbJ2NvdXBvbl9hY3Rpb25faWQnXSkpOyAgICAKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJG1peGVkZGIgPSBuZXcgY291cG9uX21peGVkREFPKCk7Cgokd2lubmVyc19kYXRhID0gYXJyYXkoKTsKCmlmICgkY291cG9uX2FjdGlvbl9pZCA9PSAnJykgewogICAgJHdpbm5lcnNfZGF0YSA9ICRtaXhlZGRiLT5mZXRjaF93aW5uZXJzKCk7ICAgIAp9IGVsc2UgewogICAgJHdpbm5lcnNfZGF0YSA9ICRtaXhlZGRiLT5mZXRjaF93aW5uZXJzKCRjb3Vwb25fYWN0aW9uX2lkLCAndDEuY291cG9uX2FjdGlvbl9pZCcpOwp9ICAgIAogICAgCiR3aW5uZXJhcnJheSA9IGFycmF5KCk7CgkKZm9yZWFjaCAoJHdpbm5lcnNfZGF0YSBhcyAka2V5ID0+ICR2YWx1ZSkgewoKICAgICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsKICAgIAogICAgZm9yZWFjaCAoJHZhbHVlIGFzICRzdWJfa2V5ID0+ICRzdWJfdmFsdWUpIHsKICAgICAgICAkb25lcm93LT4kc3ViX2tleSA9ICR2YWx1ZVskc3ViX2tleV07ICAgCiAgICB9CiAgICAKICAgICRvbmVyb3ctPmRhc2hlZF9jb3Vwb25fY29kZSA9ICBpbXBsb2RlKCctJywgc3RyX3NwbGl0KCRvbmVyb3ctPmNvdXBvbl9jb2RlLCA0KSk7CiAgICAKICAgICRvbmVyb3ctPmRhc2hlZF9waG9uZSA9ICBpbXBsb2RlKCcgJywgc3RyX3NwbGl0KCRvbmVyb3ctPnBob25lLCAzKSk7CiAgICAgICAgCiAgICAkd2lubmVyYXJyYXlbXSA9ICRvbmVyb3c7CiAgICAKfQoKJHNtYXJ0eS0+YXNzaWduKCd3aW5uZXJfcF90ZXh0JywgJHRoaXMtPkxhbmcoJ3dpbm5lcl9wJykpOwokc21hcnR5LT5hc3NpZ24oJ3ByaXplX2NvZGVfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9jb2RlJykpOwokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RleHQnLCAkdGhpcy0+TGFuZygndGl0bGUnKSk7CiRzbWFydHktPmFzc2lnbignbmFtZV90ZXh0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfdGV4dCcsICR0aGlzLT5MYW5nKCdlbWFpbCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdwaG9uZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3Bob25lJykpOwokc21hcnR5LT5hc3NpZ24oJ2NvdXBvbl9jb2RlX3RleHQnLCAkdGhpcy0+TGFuZygnY291cG9uX2NvZGUnKSk7CiRzbWFydHktPmFzc2lnbignd2l0aGRyYXdfY291cG9uX3RleHQnLCAkdGhpcy0+TGFuZygnd2l0aGRyYXdfY291cG9uJykpOwoJCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3dpbm5lcml0ZW1zJywgJHdpbm5lcmFycmF5KTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd3aW5uZXJpdGVtY291bnQnLCBjb3VudCgkd2lubmVyYXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBQcm9jZXNzVGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCR0ZW1wbGF0ZSAhPSAnMCcpIHsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOyAKfSBlbHNlIHsKICAgICR0ZW1wbGF0ZV90eXBlX2tleSA9ICdkZWZhdWx0X3dpbm5lcl90ZW1wbGF0ZSc7CiAgICAkdGVtcGxhdGUgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJHRlbXBsYXRlX3R5cGVfa2V5KTsKICAgIAogICAgJHRtcCA9ICcwJzsKICAgIAogICAgZm9yZWFjaCAoJGFsbF90ZW1wbGF0ZXMgYXMgJGsgPT4gJHYpIHsKICAgICAgICBpZiAoJHRlbXBsYXRlICA9PSAkdikgewogICAgICAgICAgICAkdG1wID0gJzEnOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJHRlbXBsYXRlID0gKCR0bXAgPT0gJzEnKSA/ICR0ZW1wbGF0ZSA6ICcwJzsKCiAgICBpZiAoJHRlbXBsYXRlID09ICcwJykgewogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmFjdG9yeV90ZW1wbGF0ZV93aW5uZXIudHBsJyk7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOyAKICAgIH0KICAgICAKfQoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.template_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24udGVtcGxhdGVfYWRkX2VkaXQucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3RlbXBsYXRlcycpKSk7CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgZmFjdG9yeSwgYXBwbHkgYW5kIGNhbmNlbAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2ZhY3RvcnknXSkpIHsKICAgICRmYWN0b3J5X3RlbXBsYXRlID0gJ2ZhY3RvcnlfdGVtcGxhdGVfJy4gJHBhcmFtc1sndGVtcGxhdGVfdHlwZSddOwogICAgJHBhcmFtc1sndGVtcGxhdGVfY29kZSddID0gJHRoaXMtPkdldFRlbXBsYXRlRnJvbUZpbGUoJGZhY3RvcnlfdGVtcGxhdGUpOwp9CgokYXBwbHlfYnV0dG9uX2NsaWNrZWQgPSAnMCc7CgppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKSB7CiAgICBpZiAoJHBhcmFtc1snc3VibWl0J10gPT0gJHRoaXMtPkxhbmcoJ2FwcGx5JykpIHsKICAgICAgICAkYXBwbHlfYnV0dG9uX2NsaWNrZWQgPSAnMSc7CiAgICB9Cn0KCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsKICAgICRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBmZXRjaCBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiR0ZW1wbGF0ZV90eXBlX2xpc3QgPSAkdGhpcy0+X2dldF90ZW1wbGF0ZV90eXBlKCk7CgokcGtleSA9ICcnOwokbW9kdXMgPSAnYWRkJzsKCmlmIChpc3NldCgkcGFyYW1zWydwa2V5J10pKSB7CiAgICAkcGtleSA9ICRwYXJhbXNbJ3BrZXknXTsKICAgICRtb2R1cyA9ICdlZGl0JzsKICAgICAgICAKICAgICRuYW1lID0gcHJlZ19yZXBsYWNlKCcvXignIC4gam9pbigifCIsIGFycmF5X2tleXMoJHRlbXBsYXRlX3R5cGVfbGlzdCkpIC4gJylfLycsICcnLCAkcGtleSk7CiAgICAgIAogICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkdGVtcGxhdGVfdHlwZV9saXN0KSBhcyAkaykgIHsKICAgICAgICBpZiAoIHByZWdfbWF0Y2goIi9eJGsvIiwgJHBrZXksICRtYXRjaGVzKSApIHsKICAgICAgICAgICAgJHRlbXBsYXRlX3R5cGUgPSAkdGVtcGxhdGVfdHlwZV9saXN0WyRrXTsKICAgICAgICAgICAgJHRlbXBsYXRlX3R5cGVfZWRpdCA9ICRrOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAKICAgICR0ZW1wbGF0ZV9jb2RlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwa2V5KTsKICAgIAp9IGVsc2UgewogICAgCiAgICAkbW9kdXMgPSAnYWRkJzsKICAgIAogICAgJG5hbWUgPSAnJzsKICAgICR0ZW1wbGF0ZV90eXBlID0gJ3JlZ2lzdGVyJzsKICAgICR0ZW1wbGF0ZV9jb2RlID0gJyc7CiAgICAKfQoKaWYgKCBpc3NldCgkcGFyYW1zWyduYW1lJ10pICkgeyAgICAgIAogICAgJG5hbWUgPSBVcEhlbHBlcjo6YWxwaGFfbnVtZXJpY19sb3dlcigkcGFyYW1zWyduYW1lJ10pOwp9CgppZiAoIGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlX3R5cGUnXSkgKSB7ICAgIAogICAgJHRlbXBsYXRlX3R5cGUgPSB0cmltKCRwYXJhbXNbJ3RlbXBsYXRlX3R5cGUnXSk7Cn0KCmlmICggaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVfY29kZSddKSApIHsgICAgCiAgICAkdGVtcGxhdGVfY29kZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGVfY29kZSddKTsKfQoKaWYgKCBpc3NldCgkcGFyYW1zWydlcnJvciddKSApIHsKICAgICRlcnJvcl9tc2cgPSAkdGhpcy0+TGFuZygkcGFyYW1zWydlcnJvciddKTsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGVycm9yX21zZyk7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2hlY2sgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApIHsKICAgICRlcnJvciA9IEZBTFNFOwogICAgCiAgICBpZiAoIGVtcHR5KCRuYW1lKSApIHsKICAgICAgICAkZXJyb3IgLj0gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vX3NfZ2l2ZW4nLCBhcnJheSgkdGhpcy0+TGFuZygnbmFtZScpKSkpOwogICAgfQoKICAgIGlmICggZW1wdHkoJHRlbXBsYXRlX2NvZGUpICkgewogICAgICAgICRlcnJvciAuPSAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9fc19naXZlbicsIGFycmF5KCR0aGlzLT5MYW5nKCd0ZW1wbGF0ZV9jb2RlJykpKSk7CiAgICB9IAoKICAgIGlmICggJGVycm9yICE9PSBGQUxTRSApIHsKICAgICAgICBlY2hvICRlcnJvcjsKICAgIH0gZWxzZSB7CgogICAgICAgICRkYl9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAnbmFtZScgPT4gJG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICd0ZW1wbGF0ZV90eXBlJyA9PiAkdGVtcGxhdGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbXBsYXRlX2NvZGUnID0+ICR0ZW1wbGF0ZV9jb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgCiAgICAgICAgLy8gc3RyaXAgdW53YW50ZWQgY2hhcnMgZnJvbSAkbmFtZQogICAgICAgIAogICAgICAgICR0ZW1wbGF0ZV9uYW1lID0gJHRlbXBsYXRlX3R5cGUgLiAnXycgLiAkbmFtZTsKICAgICAgICAgICAgICAgIAogICAgICAgIGlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBvbmx5IHZlcmlmeSB0aGUgdGVtcGxhdGUgd2hlbiB0aGUgbmFtZSB3aWxsIGNoYW5nZSEKICAgICAgICAgICAgCiAgICAgICAgICAgICR0eHQgPSAnJzsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkcGtleSAhPSAkdGVtcGxhdGVfbmFtZSkgewogICAgICAgICAgICAgICAgJHR4dCA9IHRyaW0oJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZV9uYW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkdHh0ICE9ICIiKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJGRiX2FycmF5WyduYW1lJ10gPSAnJzsKICAgICAgICAgICAgICAgICRkYl9hcnJheVsncGtleSddID0gJHBrZXk7CiAgICAgICAgICAgICAgICAkZGJfYXJyYXlbJ2Vycm9yJ10gPSAndGVtcGxhdGVfZXhpc3RzJzsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwndGVtcGxhdGVfYWRkX2VkaXQnLCcnLCAkZGJfYXJyYXkpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJHBrZXkpOwogICAgICAgICAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJHRlbXBsYXRlX25hbWUsICR0ZW1wbGF0ZV9jb2RlKTsKICAgICAgICAgICAgCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICR0eHQgPSB0cmltKCR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVfbmFtZSkpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCR0eHQgIT0gIiIpIHsKCiAgICAgICAgICAgICAgICAkZGJfYXJyYXlbJ25hbWUnXSA9ICcnOwogICAgICAgICAgICAgICAgJGRiX2FycmF5WydlcnJvciddID0gJ3RlbXBsYXRlX2V4aXN0cyc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ3RlbXBsYXRlX2FkZF9lZGl0JywnJywgJGRiX2FycmF5KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgJGRiX2FycmF5Wydwa2V5J10gPSAkdGVtcGxhdGVfbmFtZTsKICAgICAgICAgICAgJHRoaXMtPlNldFRlbXBsYXRlKCR0ZW1wbGF0ZV9uYW1lLCAkdGVtcGxhdGVfY29kZSk7CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICggISRlcnJvciApIHsKICAgICAgICAKICAgICAgICBpZiAoJG1vZHVzID09ICdlZGl0JykgewogICAgICAgICAgICBAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZUVkaXRlZCcsICRkYl9hcnJheSk7CiAgICAgICAgICAgICRwYXJhbXMgPSBhcnJheSgndGVtcGxhdGVzX21lc3NhZ2UnPT4gJ3NfZWRpdGVkLHRlbXBsYXRlc19zJywgJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZUFkZGVkJywgJGRiX2FycmF5KTsKICAgICAgICAgICAgJHBhcmFtcyA9IGFycmF5KCd0ZW1wbGF0ZXNfbWVzc2FnZSc9PiAnc19hZGRlZCx0ZW1wbGF0ZXNfcycsICdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICgkYXBwbHlfYnV0dG9uX2NsaWNrZWQgPT0gJzEnKSB7CiAgICAgICAgICAgICRwYXJhbXNbJ3BrZXknXSA9ICR0ZW1wbGF0ZV9uYW1lOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAndGVtcGxhdGVfYWRkX2VkaXQnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgfQogICAgICAgIAogCn0gLy8gc3VibWl0IAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBidWlsZCBhbmQgcHJvY2VzcyB0ZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3RlbXBsYXRlX2FkZF9lZGl0JywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1lX3RleHQnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1lX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICduYW1lJywgJG5hbWUsIDIwLCAxMDApKTsKCiR0ZW1wbGF0ZV90eXBlX2Ryb3Bkb3duID0gYXJyYXkoKTsKJHRlbXBsYXRlX3R5cGVfZHJvcGRvd25bJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX3JlZ2lzdGVyJyldID0gJ3JlZ2lzdGVyJzsKJHRlbXBsYXRlX3R5cGVfZHJvcGRvd25bJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX3dpbm5lcicpXSA9ICd3aW5uZXInOwokdGVtcGxhdGVfdHlwZV9kcm9wZG93blskdGhpcy0+TGFuZygndGVtcGxhdGVfcHJpemUnKV0gPSAncHJpemUnOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZV90eXBlX3RleHQnLCAkdGhpcy0+TGFuZygndGVtcGxhdGVfdHlwZScpKTsKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAKICAgIGlmIChpc3NldCgkcGFyYW1zWydmYWN0b3J5J10pKSB7CiAgICAgICAgJHRlbXBsYXRlX3R5cGVfZWRpdCA9ICR0ZW1wbGF0ZV90eXBlOyAgICAgICAgCiAgICB9CiAgICAKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfdHlwZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3RlbXBsYXRlX3R5cGUnLCAkdGVtcGxhdGVfdHlwZV9kcm9wZG93biwgLTEsICR0ZW1wbGF0ZV90eXBlX2VkaXQpKTsKfSBlbHNlIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfdHlwZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3RlbXBsYXRlX3R5cGUnLCAkdGVtcGxhdGVfdHlwZV9kcm9wZG93biwgLTEsICR0ZW1wbGF0ZV90eXBlKSk7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfY29kZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX2NvZGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfY29kZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgJGlkLCAkdGVtcGxhdGVfY29kZSwgJ3RlbXBsYXRlX2NvZGUnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZhY3RvcnknLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnZmFjdG9yeScsICR0aGlzLT5MYW5nKCdmYWN0b3J5JykpKTsKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7ICAgIAogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAncGtleScsICRwa2V5KSk7Cn0gZWxzZSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICcnKTsKfSAgICAKCmlmICgkbW9kdXMgPT0gJ2VkaXQnKSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnZWRpdCcpKSk7Cn0gZWxzZSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnYWRkJykpKTsKfSAgICAKICAgIAokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXBwbHknLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ2FwcGx5JykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZW1wbGF0ZV9hZGRfZWRpdC50cGwnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.template_change_default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24udGVtcGxhdGVfY2hhbmdlX2RlZmF1bHQucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2hlY2tQZXJtaXNzaW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3RlbXBsYXRlJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRlbXBsYXRlX3R5cGUgPSAkdGhpcy0+X2dldF90ZW1wbGF0ZV90eXBlKCk7CgokbmFtZSA9IHByZWdfcmVwbGFjZSgnL14oJyAuIGpvaW4oInwiLCBhcnJheV9rZXlzKCR0ZW1wbGF0ZV90eXBlKSkgLiAnKV8vJywgJycsICRwYXJhbXNbJ3BrZXknXSk7Cgpmb3JlYWNoIChhcnJheV9rZXlzKCR0ZW1wbGF0ZV90eXBlKSBhcyAkaykgIHsKICAgIGlmICggcHJlZ19tYXRjaCgiL14kay8iLCAkcGFyYW1zWydwa2V5J10sICRtYXRjaGVzKSApIHsKICAgICAgICAkdGVtcGxhdGVfdHlwZSA9ICRrOwogICAgICAgIGJyZWFrOwogICAgfQp9CgokcHJlZmVyZW5jZV9uYW1lID0gJ2RlZmF1bHRfJy4gJHRlbXBsYXRlX3R5cGUuICdfdGVtcGxhdGUnOwokcHJlZmVyZW5jZV92YWx1ZSA9ICRwYXJhbXNbJ3BrZXknXTsKCmlmICgkcGFyYW1zWydkZWZhdWx0J10gPT0gJzEnKSB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgkcHJlZmVyZW5jZV9uYW1lLCAkcHJlZmVyZW5jZV92YWx1ZSk7Cn0gZWxzZSB7CiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJHByZWZlcmVuY2VfbmFtZSkgPT0gJHByZWZlcmVuY2VfdmFsdWUpIHsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgkcHJlZmVyZW5jZV9uYW1lKTsKICAgIH0KfQogICAgCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvblRlbXBsYXRlRWRpdGVkJywgYXJyYXkoJHByZWZlcmVuY2VfbmFtZSwgJHByZWZlcmVuY2VfdmFsdWUpKTsKJHBhcmFtcyA9IGFycmF5KCd0ZW1wbGF0ZXNfbWVzc2FnZSc9PiAnc19jaGFuZ2VkX2RlZmF1bHQsdGVtcGxhdGVzX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.template_delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24udGVtcGxhdGVfZGVsZXRlLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgndGVtcGxhdGVzJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwYXJhbXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwa2V5ID0gJyc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGtleSddKSkgewogICAgJHBrZXkgPSAkcGFyYW1zWydwa2V5J107Cn0gZWxzZSB7CiAgICAkcGFyYW1zWydlcnJvciddID0gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPmxhbmcoJ25vdF9hbGxvd2VkJykpOwoJJHBhcmFtc1snYWN0aXZlX3RhYiddID0gJ3RlbXBsYXRlcyc7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9ncmFtCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGVtcGxhdGVfdHlwZSA9ICR0aGlzLT5fZ2V0X3RlbXBsYXRlX3R5cGUoKTsKCmZvcmVhY2ggKGFycmF5X2tleXMoJHRlbXBsYXRlX3R5cGUpIGFzICRrKSAgewogICAgaWYgKCBwcmVnX21hdGNoKCIvXiRrLyIsICRwa2V5LCAkbWF0Y2hlcykgKSB7CiAgICAgICAgJHRlbXBsYXRlX3R5cGUgPSAkazsKICAgICAgICBicmVhazsKICAgIH0KfQoKJHByZWZlcmVuY2VfbmFtZSA9ICdkZWZhdWx0XycuICR0ZW1wbGF0ZV90eXBlIC4gJ190ZW1wbGF0ZSc7CiRwcmVmZXJlbmNlX3ZhbHVlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJHByZWZlcmVuY2VfbmFtZSk7CgppZiAoJHByZWZlcmVuY2VfdmFsdWUgPT0gJHBrZXkpIHsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCRwcmVmZXJlbmNlX25hbWUpOwp9CgokdGVtcGxhdGUgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKCRwa2V5KTsKCiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkdGVtcGxhdGUpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBjYWxsIGV2ZW50IC8gcmVkaXJlY3QKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRldmVudF9hcnJheVsncGtleSddID0gJHBrZXk7CgpAJHRoaXMtPlNlbmRFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZURlbGV0ZWQnLCAkZXZlbnRfYXJyYXkpOwokcGFyYW1zID0gYXJyYXkoJ3RlbXBsYXRlc19tZXNzYWdlJz0+ICdzX2RlbGV0ZWQsdGVtcGxhdGVzX3MnLCAnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKcmV0dXJuOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.winner_draw_coupon.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ud2lubmVyX2RyYXdfY291cG9uLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENoZWNrUGVybWlzc2lvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBVcENvdXBvbicpKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnLCBhcnJheSgncHJpemUnKSkpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcGFyYW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRjb3Vwb25fcHJpemVfaWQgPSAnJzsKCmlmIChpc3NldCgkcGFyYW1zWydjb3Vwb25fcHJpemVfaWQnXSkpIHsKICAgICRjb3Vwb25fcHJpemVfaWQgPSB0cmltKHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHBhcmFtc1snY291cG9uX3ByaXplX2lkJ10pKTsKfQoKJGNvdXBvbl9wZXJpb2RfaWQgPSAnJzsKCmlmIChpc3NldCgkcGFyYW1zWydjb3Vwb25fcGVyaW9kX2lkJ10pKSB7CiAgICAkY291cG9uX3BlcmlvZF9pZCA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkcGFyYW1zWydjb3Vwb25fcGVyaW9kX2lkJ10pKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGNvZGVkYiA9IG5ldyBjb3Vwb25fY29kZURBTygpOwokbWl4ZWRkYiA9IG5ldyBjb3Vwb25fbWl4ZWREQU8oKTsKJHBlcmlvZGRiID0gbmV3IGNvdXBvbl9wZXJpb2REQU8oKTsKCi8vIGZpZ3VyZSBvdXQgdGhlIHN0YXJ0X3RzIGFuZCBlbmRfdHMgdmlhIHRoZSBjb3Vwb25fcGVyaW9kX2lkCiRwZXJpb2Rfcm93ID0gJHBlcmlvZGRiLT5mZXRjaCgkY291cG9uX3BlcmlvZF9pZCk7CiRzdGFydF90cyA9ICRwZXJpb2RkYi0+dW5peF90aW1lX3N0YW1wKCRwZXJpb2Rfcm93WzBdWydzdGFydF9kYXRlJ10pOwokZW5kX3RzID0gJHBlcmlvZGRiLT51bml4X3RpbWVfc3RhbXAoJHBlcmlvZF9yb3dbMF1bJ2VuZF9kYXRlJ10pOwoKLy8gZHJhdyBhIGNvdXBvbiAKJGNvdXBvbl9yb3cgPSAkY29kZWRiLT5kcmF3X2NvdXBvbigkc3RhcnRfdHMsICRlbmRfdHMpOwoKaWYgKGVtcHR5KCRjb3Vwb25fcm93KSkgewogICAgJHBhcmFtcyA9IGFycmF5KCd3aW5uZXJfbWVzc2FnZSc9PiAnbmVlZF9yZWdpc3RlcmVkX2N1c3RvbWVyLCcsICdhY3RpdmVfdGFiJyA9PiAnd2lubmVyJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKICAgIHJldHVybjsKfQoKLy8gYXNzaWduIHByaXplIHRvIHVzZXIKJGRiX2FycmF5ID0gYXJyYXkoJ2NvdXBvbl9wcml6ZV9pZCcgPT4gJGNvdXBvbl9wcml6ZV9pZCwgJ2NvdXBvbl9jb2RlX2lkJyA9PiAkY291cG9uX3Jvd1snY291cG9uX2NvZGVfaWQnXSk7CiRjb2RlZGItPnVwZGF0ZSgkZGJfYXJyYXkpOwoKLy8gZmV0Y2ggaW5mb3JtYXRpb24gb2YgdGhlIHdpbm5lciB0byBiZSB1c2VkIGluIHRoZSB3aW5uZXIgbm90aWZpY2F0aW9uIGUtbWFpbAokd2lubmVyX2FycmF5ID0gJG1peGVkZGItPmZldGNoX3dpbm5lcnMoJGNvdXBvbl9yb3dbJ2NvdXBvbl9jb2RlX2lkJ10sICd0NS5jb3Vwb25fY29kZV9pZCcpOwoKaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2UnLDApID09IDEpIHsKICAgICRtYWlsID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdDTVNNYWlsZXInKTsKICAgIGlmICgkbWFpbCAhPT0gRkFMU0UpIHsKICAgICAgICAkbWFpbC0+cmVzZXQoKTsKICAgICAgICAkbWFpbC0+U2V0U3ViamVjdCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0JykpOwogICAgICAgIAogICAgICAgICRlbWFpbF9hcnJheSA9IGFycmF5KAogICAgICAgICAgICAnYWN0aW9uX3RpdGxlJyAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydhY3Rpb25fdGl0bGUnXSwgCiAgICAgICAgICAgICdjb3Vwb25fYWN0aW9uX2lkJyAgICAgID0+ICR3aW5uZXJfYXJyYXlbMF1bJ2NvdXBvbl9hY3Rpb25faWQnXSwKICAgICAgICAgICAgJ3BlcmlvZF90aXRsZScgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsncGVyaW9kX3RpdGxlJ10sCiAgICAgICAgICAgICdjb3Vwb25fcGVyaW9kX2lkJyAgICAgID0+ICR3aW5uZXJfYXJyYXlbMF1bJ2NvdXBvbl9wZXJpb2RfaWQnXSwKICAgICAgICAgICAgJ3ByaXplX3RpdGxlJyAgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsncHJpemVfdGl0bGUnXSwKICAgICAgICAgICAgJ3ByaXplX2NvZGUnICAgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsncHJpemVfY29kZSddLAogICAgICAgICAgICAnbnVtYmVyJyAgICAgICAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydudW1iZXInXSwKICAgICAgICAgICAgJ2NvdXBvbl9wcml6ZV9pZCcgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsnY291cG9uX3ByaXplX2lkJ10sCiAgICAgICAgICAgICdjb3Vwb25fY3VzdG9tZXJfaWQnICAgID0+ICR3aW5uZXJfYXJyYXlbMF1bJ2NvdXBvbl9jdXN0b21lcl9pZCddLAogICAgICAgICAgICAnZmlyc3RfbmFtZScgICAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydmaXJzdF9uYW1lJ10sCiAgICAgICAgICAgICdsYXN0X25hbWUnICAgICAgICAgICAgID0+ICR3aW5uZXJfYXJyYXlbMF1bJ2xhc3RfbmFtZSddLAogICAgICAgICAgICAnZW1haWwnICAgICAgICAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydlbWFpbCddLAogICAgICAgICAgICAnZGFzaGVkX3Bob25lJyAgICAgICAgICA9PiBpbXBsb2RlKCctJywgc3RyX3NwbGl0KCR3aW5uZXJfYXJyYXlbMF1bJ3Bob25lJ10sIDMpKSwKICAgICAgICAgICAgJ3Bob25lJyAgICAgICAgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsncGhvbmUnXSwKICAgICAgICAgICAgJ2NvdXBvbl9jb2RlX2lkJyAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsnY291cG9uX2NvZGVfaWQnXSwKICAgICAgICAgICAgJ2RiX3RpbWVzdGFtcCcgICAgICAgICAgPT4gJHdpbm5lcl9hcnJheVswXVsndGltZXN0YW1wJ10sCiAgICAgICAgICAgICdkYXNoZWRfY291cG9uX2NvZGUnICAgID0+IGltcGxvZGUoJy0nLCBzdHJfc3BsaXQoJHdpbm5lcl9hcnJheVswXVsnY291cG9uX2NvZGUnXSwgNCkpLAogICAgICAgICAgICAnY291cG9uX2NvZGUnICAgICAgICAgICA9PiAkd2lubmVyX2FycmF5WzBdWydjb3Vwb25fY29kZSddCiAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbWFpbCcsICRlbWFpbF9hcnJheSk7CiAgICAgICAgCiAgICAgICAgJGJvZHkgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRoaXMtPkdldFRlbXBsYXRlKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJykpOwogICAgICAgICAgICAgICAgCiAgICAgICAgJG1haWwtPlNldEJvZHkoJGJvZHkpOwogICAgICAgICRtYWlsLT5TZXRGcm9tKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnKSk7CiAgICAgICAgJG1haWwtPlNldEZyb21OYW1lKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZScpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICRmdWxsX25hbWUgPSAkd2lubmVyX2FycmF5WzBdWydmaXJzdF9uYW1lJ10gLiAnICcuICR3aW5uZXJfYXJyYXlbMF1bJ2xhc3RfbmFtZSddOyAKICAgICAgICAKICAgICAgICAkbWFpbC0+QWRkQWRkcmVzcygkd2lubmVyX2FycmF5WzBdWydlbWFpbCddLCAkZnVsbF9uYW1lKTsKICAgICAgICAKICAgICAgICAkcmVzID0gJG1haWwtPlNlbmQoKTsKICAgIH0KfQoKQCR0aGlzLT5TZW5kRXZlbnQoJ1VwQ291cG9uV2lubmVyQWRkZWQnLCAkZGJfYXJyYXkpOwokcGFyYW1zID0gYXJyYXkoJ3dpbm5lcl9tZXNzYWdlJz0+ICdzX2FkZGVkLHdpbm5lcl9zJywgJ2FjdGl2ZV90YWInID0+ICd3aW5uZXInKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.winner_withdraw_coupon.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBhY3Rpb24ud2lubmVyX3dpdGhkcmF3X2NvdXBvbi5waHAgMTIgMjAxMi0wNy0xMiAxMDowMjoyOVogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEtMjAxMiBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDaGVja1Blcm1pc3Npb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKSkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJywgYXJyYXkoJ3ByaXplJykpKTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHBhcmFtcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokY291cG9uX2NvZGVfaWQgPSAnJzsKCmlmIChpc3NldCgkcGFyYW1zWydjb3Vwb25fY29kZV9pZCddKSkgewogICAgJGNvdXBvbl9jb2RlX2lkID0gdHJpbShwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICRwYXJhbXNbJ2NvdXBvbl9jb2RlX2lkJ10pKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGRiX2FycmF5ID0gYXJyYXkoJ2NvdXBvbl9jb2RlX2lkJyA9PiAkY291cG9uX2NvZGVfaWQsICdjb3Vwb25fcHJpemVfaWQnID0+ICcwJyk7CgokY29kZWRiID0gbmV3IGNvdXBvbl9jb2RlREFPKCk7CgokY29kZWRiLT51cGRhdGUoJGRiX2FycmF5KTsKCkAkdGhpcy0+U2VuZEV2ZW50KCdVcENvdXBvbldpbm5lckFkZGVkJywgJGRiX2FycmF5KTsKJHBhcmFtcyA9IGFycmF5KCd3aW5uZXJfbWVzc2FnZSc9PiAnc19kZWxldGVkLHdpbm5lcl9zJywgJ2FjdGl2ZV90YWInID0+ICd3aW5uZXInKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGJyLz4KCjxiPjAuMC45IHZlcnNpb248L2I+IC0gMTcganVsIDIwMTI8YnIgLz4KCjx1bD4KPGxpPk1ha2UgZGVwZW5kZW5kIG9uIFVwVXRpbHMnPT4nMC4wLjUnPC9saT4KPGxpPlJlbW92ZSBkZXByZWNhdGVkIE1heGltdW1DTVNWZXJzaW9uKCk8L2xpPgo8bGk+U2V0IE1pbmltdW1DTVNWZXJzaW9uKCkgdG8gMS4xMC4zPC9saT4KPGxpPmpRdWVyeSBWYWxpZGF0aW9uIFBsdWdpbiAxLjguMCB0byAxLjkuMCArIGluY2x1ZGUganF1ZXJ5LnZhbGlkYXRlLm1pbi5qczwvbGk+CjxsaT5SZW1vdmUganF1ZXJ5LTEuNi4xLm1pbi5qcyBhZGQganF1ZXJ5LTEuNy4xLm1pbi5qczwvbGk+IAo8bGk+SW5pdGlhbGl6ZUZyb250ZW5kKCkgYW5kIEluaXRpYWxpemVBZG1pbigpIGluIGZhdm9yIG9mIFNldFBhcmFtZXRlcnMoKTwvbGk+CjxsaT5SZW1vdmUgaGVscCBmaWxlIGZyb20gbGFuZyB0byBleHRlcm5hbCBoZWxwLmluYyArIHNvbWUgdHdlYWtzIHRvIHRoZSBkb2N1bWVudGF0aW9uPC9saT4KPGxpPkZpeCBlcnJvci1sb2dzIG9uIG1pc3NpbmcgeyR4eHhfbWVzc2FnZX0gc3RyaW5nIGluIHRlbXBsYXRlczwvbGk+CjxsaT5DTVNNUyAxLjExIGNvbXBhdGlibGU8L2xpPgo8L3VsPgoKPGI+MC4wLjggdmVyc2lvbjwvYj4gLSAyMiBva3QgMjAxMSA8YnIgLz4KCjx1bD4KPGxpPk1ha2UgZGVwZW5kZW5kIG9uIFVwVXRpbHMnPT4nMC4wLjQnPC9saT4KPGxpPkFkZCBQYXlQYWwgZG9uYXRpb24gYnV0dG9uIHRvIGRvY3VtZW50YXRpb248L2xpPgo8bGk+Q01TTVMgMS4xMCBjb21wYXRpYmxlPC9saT4KPC91bD4KCjxiPjAuMC43IHZlcnNpb248L2I+IC0gMTIgYXVnIDIwMTEgPGJyIC8+Cgo8dWw+CjxsaT5BZGQgYXV0b2xvYWRlcjwvbGk+CjxsaT5QbGFjZSBjb25zdGFudHMgb3V0c2lkZSBtb2R1bGUgY2xhc3M8L2xpPgo8bGk+TWFrZSBkZXBlbmRlbmQgb24gVXBVdGlscyc9PicwLjAuMzwvbGk+CjwvdWw+CgoKPGI+MC4wLjYgdmVyc2lvbjwvYj4gLSAyMCBqdW4gMjAxMSA8YnIgLz4KCjx1bD4KPGxpPk1ha2UgY291cG9uX2FjdGlvbl9pZCBvcHRpb25hbCBmb3Igc2hvd19wcml6ZSBhY3Rpb248L2xpPgo8bGk+VHdlYWsgdXNlciBub3RpZmljYXRpb24gZm9yIHBlcmlvZCBhZGQsIGVkaXQsIGRlbGV0ZTwvbGk+CjxsaT5SZW1vdmUgYW5jaG9yIGZyb20gZmFjdG9yeSB0ZW1wbGF0ZSBwcml6ZTwvbGk+CjxsaT5Nb2R1bGUgYWRkZWQgdG8gdHJhbnNsYXRpb24gY2VudGVyPC9saT4KPGxpPkFkZGVkIGR1dGNoIHRyYW5zbGF0aW9uIGxhbmcvZXh0L25sX05MLnBocDwvbGk+CjwvdWw+Cgo8Yj4wLjAuNSB2ZXJzaW9uIGluaXRpYWwgdmVyc2lvbjwvYj4gLSA5IGp1biAyMDExCgoKCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/show_register.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogKiAjIGZvcm1zCiAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgKi8KCi8qIG1haW5mb3JtICovIAoKLmZvcm1kaXYgewogICAgY29sb3I6ICMwMDAwMDA7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICBmbG9hdDogbGVmdDsgCiAgICB3aWR0aDogNzIwcHg7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIHsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwOwp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93eCwKZmllbGRzZXQubWFpbmZvcm0gLnJvdyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDk5JTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBjbGVhcjogYm90aDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLmhlYWRlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDk5JTsKICAgIGNvbG9yOiAjMDBhNWYwOwogICAgZm9udC1zaXplOiAxLjVlbTsKICAgIGxpbmUtaGVpZ2h0OiAxZW07CiAgICBtYXJnaW4tYm90dG9tOiAzNnB4OwogICAgY2xlYXI6IGJvdGg7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IGxhYmVsLApmaWVsZHNldC5tYWluZm9ybSAucm93IGxhYmVsIHsKICAgIGZvbnQtc2l6ZTogNzUlOwogICAgY29sb3I6ICMwMDAwMDA7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZzogNHB4IDRweCA0cHggNHB4OwogICAgd2lkdGg6IDE0OHB4OyAvKiAxNjAgLSA0IC0gNCAtIDQgZXh0cmEgKi8KICAgIG1hcmdpbi1ib3R0b206IDFweDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBzcGFuLnJlcXVpcmVkLApmaWVsZHNldC5tYWluZm9ybSAucm93eCBzcGFuLnJlcXVpcmVkIHsKICAgIGZsb2F0OiByaWdodDsKICAgIGNvbG9yOiAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IHNwYW4uZXJyb3IsCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IHNwYW4uZXJyb3IgewogICAgZGlzcGxheTogaW5saW5lOwogICAgZmxvYXQ6IHJpZ2h0OwogICAgY29sb3I6ICNlNDAwNzQ7CiAgICBmb250LXNpemU6IDUwJTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL21vZHVsZXMvVXBDb3Vwb24vaW1hZ2VzL2Fycm93X2Zvcm1fZXJyb3IuZ2lmJyk7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyNHB4IGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBwYWRkaW5nOiA0cHggMHB4IDRweCAzOXB4OwogICAgd2lkdGg6IDI1MHB4OyAvKiAyNDAgLSA0IC0gMTQgICovCiAgICBoZWlnaHQ6IDI0cHg7CiAgICBsaW5lLWhlaWdodDogMjRweDsKfSAgICAKCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgbGFiZWwuY2hlY2tib3hfdHh0LApmaWVsZHNldC5tYWluZm9ybSAucm93eCBsYWJlbC5jaGVja2JveF90eHQgewogICAgd2lkdGg6IDIwMHB4OyAKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBzcGFuLmJnLCAKZmllbGRzZXQubWFpbmZvcm0gLnJvd3ggc3Bhbi5iZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZzogNHB4IDRweCA0cHggNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvbW9kdWxlcy9pbWFnZXMvcGF0dGVybi1ncmV5LmdpZicpOwp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IHNwYW4udHh0LCAKZmllbGRzZXQubWFpbmZvcm0gLnJvd3ggc3Bhbi50eHQgewogICAgZm9udC1zaXplOiA1MCU7CiAgICBjb2xvcjogIzAwMDAwMDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nOiA0cHggNHB4IDRweCA0cHg7CiAgICBtYXJnaW4tYm90dG9tOiA0cHg7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IHNwYW4uYmctcmFkaW8sCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IHNwYW4uYmctY2hlY2tib3ggewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDRweDsKICAgIG1hcmdpbi1ib3R0b206IDRweDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBzZWxlY3QgewogICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKICAgIHdpZHRoOiAyMzBweDsKICAgIGhlaWdodDogMjBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGE1ZjA7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQgewogICAgd2lkdGg6IDIzMHB4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzAwYTVmMDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBpbnB1dC5jbXNfdGV4dGZpZWxkX3NtYWxsIHsKICAgIHdpZHRoOiA1M3B4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzAwYTVmMDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuaW5wdXRmaWxlIHsKICAgIHdpZHRoOiAyMzBweDsKICAgIGhlaWdodDogMjRweDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuaW5wdXRmaWxlOmhvdmVyIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IC0yNHB4Owp9CgovKiBmaWxlX2lucHV0ICovCgpmaWVsZHNldC5tYWluZm9ybSAucm93IC5maWxlX2lucHV0X3RleHRib3ggewogICAgZGlzcGxheTogaW5saW5lOwogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogMTcwcHg7CiAgICBmbG9hdDogbGVmdDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuZmlsZV9pbnB1dF90ZXh0Ym94X2Vycm9yIHsKICAgIGRpc3BsYXk6IGlubGluZTsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDE3MHB4OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0OwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IC5maWxlX2lucHV0X2RpdiB7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICBmbG9hdDogbGVmdDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgCiAgICB3aWR0aDogNjBweDsgCiAgICBoZWlnaHQ6IDI0cHg7IAogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuZmlsZV9pbnB1dF9idXR0b24gewogICAgZGlzcGxheTogaW5saW5lOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAogICAgdG9wOiAwcHg7CiAgICB3aWR0aDogNjBweDsgCiAgICBoZWlnaHQ6IDI0cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTAwOwogICAgZm9udC1zaXplOiA4MCU7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGNvbG9yOiAjMDAwMDAwOwogICAgYm9yZGVyOiAwOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IC5maWxlX2lucHV0X2hpZGRlbiwKZmllbGRzZXQubWFpbmZvcm0gLnJvdyAuY21zX2Jyb3dzZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMHB4OyAKICAgIHRvcDogMHB4OyAKICAgIHdpZHRoOiA2MHB4OwogICAgaGVpZ2h0OiAyNHB4OwogICAgZm9udC1zaXplOiA0NXB4OwogICAgb3BhY2l0eTogMC4wOyAKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsgCiAgICAtbXMtZmlsdGVyOiAiYWxwaGEob3BhY2l0eT0wKSI7IAogICAgLWtodG1sLW9wYWNpdHk6IDA7IAogICAgLW1vei1vcGFjaXR5OiAwOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgoKLyogL2ZpbGVfaW5wdXQgKi8KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQuZXJyb3IgewogICAgYm9yZGVyOiAxcHggc29saWQgI2U0MDA3NDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBpbnB1dDpob3ZlciwgCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQ6Zm9jdXMsCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQuZmlsZTpob3ZlciwgCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQuZmlsZTpmb2N1cyB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IHNlbGVjdDpob3ZlciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IHNlbGVjdC5lcnJvciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IG9wdGlvbjpob3ZlciwgCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgb3B0aW9uOmZvY3VzIHsKICAgIGJhY2tncm91bmQ6ICNjY2VkZmM7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgdGV4dGFyZWEgewogICAgd2lkdGg6IDIzMHB4OwogICAgaGVpZ2h0OiAxMDZweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGE1ZjA7CiAgICBvdmVyZmxvdzogYXV0bzsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyB0ZXh0YXJlYTpob3ZlciwgCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgdGV4dGFyZWE6Zm9jdXMgewogICAgYm9yZGVyOiAxcHggc29saWQgI2U0MDA3NDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyB0ZXh0YXJlYS5lcnJvciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTQwMDc0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93eCBsYWJlbC5yYWRpbyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIC8qIHdpZHRoOiA5N3B4OyAqLwogICAgdGV4dC1pbmRlbnQ6IC0xNXB4OwogICAgcGFkZGluZzogNHB4IDRweCA0cHggMTVweDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL21vZHVsZXMvVXBDb3Vwb24vaW1hZ2VzL21haW5mb3JtLXJhZGlvLWJnLmdpZicpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93eCBsYWJlbC5jaGVja2JveCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIC8qIHdpZHRoOiA5OSU7ICovCiAgICB0ZXh0LWluZGVudDogLTE1cHg7CiAgICBwYWRkaW5nOiA0cHggNHB4IDRweCAxNXB4OwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvbW9kdWxlcy9VcENvdXBvbi9pbWFnZXMvbWFpbmZvcm0tY2hlY2tib3gtYmcuZ2lmJyk7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IGxhYmVsLnJhZGlvLWJpZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxNXB4OwogICAgdGV4dC1pbmRlbnQ6IC0xNXB4OwogICAgcGFkZGluZzogNHB4IDRweCA0cHggMTVweDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL21vZHVsZXMvVXBDb3Vwb24vaW1hZ2VzL21haW5mb3JtLXJhZGlvLWJnLmdpZicpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93eCBsYWJlbC5jaGVja2JveC1iaWcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTVweDsKICAgIHRleHQtaW5kZW50OiAtMTVweDsKICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDE1cHg7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9tb2R1bGVzL1VwQ291cG9uL2ltYWdlcy9tYWluZm9ybS1jaGVja2JveC1iZy5naWYnKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvd3ggc3Bhbi5yYWRpby1iaWcsCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IHNwYW4uY2hlY2tib3gtYmlnIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogMjA1cHg7ICAgIAp9ICAgIAoKZmllbGRzZXQubWFpbmZvcm0gLnJvd3ggaW5wdXQucmFkaW8sCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3d4IGlucHV0LmNoZWNrYm94IHsKICAgIHdpZHRoOiAxM3B4OwogICAgaGVpZ2h0OiAxM3B4OwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMHB4IDBweCAwcHggNHB4OwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogLTFweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3JkZXI6IDA7Cn0KCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgLmJ1dHRvbi1jb250YWluZXIgewogICAgZGlzcGxheTogYmxvY2s7IAogICAgZmxvYXQ6IGxlZnQ7IAogICAgd2lkdGg6IDEyMHB4Owp9CgpmaWVsZHNldC5tYWluZm9ybSAucm93IGlucHV0LmNtc19zdWJtaXQsCmZpZWxkc2V0Lm1haW5mb3JtIC5yb3cgaW5wdXQuY21zX3Jlc2V0IHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICB3aWR0aDogMTE1cHg7CiAgICBoZWlnaHQ6IDI0cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGZvbnQtc2l6ZTogODAlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwMDsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCB0b3A7CiAgICBib3JkZXI6IDAgbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDBweDsKICAgIC8qIHBhZGRpbmc6IDI0cHggMHB4IDBweCAwcHg7ICovICAvKiA8LS0tIHJlbW92ZSB0ZXh0ICovIAogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKfQoKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBpbnB1dFt0eXBlPXN1Ym1pdF06aG92ZXIuY21zX3N1Ym1pdCwKZmllbGRzZXQubWFpbmZvcm0gLnJvdyBpbnB1dFt0eXBlPXJlc2V0XTpob3Zlci5jbXNfcmVzZXQgewogICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/docs/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAp0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCnRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQpzb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNvIHRvCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91CndhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CmZyZWUgcHJvZ3JhbXMsIGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgp5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKa25vdyB0aGVpciByaWdodHMuCgogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKZ2l2aW5nIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KCiAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCnRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwpjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KYXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KCiAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgptb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgc29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVyZXIKY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0aWMKcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUgYXJlYSBvZiBwcm9kdWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCmhhdmUgZGVzaWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQpwcm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxseSBpbiBvdGhlciBkb21haW5zLCB3ZQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCgogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuClN0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBvZgpzb2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4gdGhvc2UgdGhhdCBkbywgd2Ugd2lzaCB0bwphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKcGF0ZW50cyBjYW5ub3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCgogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuCgogICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCgogIDAuIERlZmluaXRpb25zLgoKICAiVGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKd29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KCiAgIlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCkxpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCgogIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KCiAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKb24gdGhlIFByb2dyYW0uCgogIFRvICJwcm9wYWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgoKICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQpmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikKdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQp3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQptZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgoKICAxLiBTb3VyY2UgQ29kZS4KCiAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQpmb3JtIG9mIGEgd29yay4KCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KCiAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgpDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCmltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCiJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCihpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCnByb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgoKICBUaGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCnRoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bwpjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKU3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJlZQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCmluY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQpsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWlyZSwKc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgoKICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuCgogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdApzYW1lIHdvcmsuCgogIDIuIEJhc2ljIFBlcm1pc3Npb25zLgoKICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZApjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCnBlcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwpjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgpyaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KCiAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCm1ha2VzIGl0IHVubmVjZXNzYXJ5LgoKICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgoKICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCjExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBvcgpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCm1lYXN1cmVzLgoKICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCgogIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCgogIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlvdQpyZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQpub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCnJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCmFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCgogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCgogIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCgogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgogICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bwogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KCiAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcwogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCiAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwogICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCiAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CiAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgoKICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgoKICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCm1hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwKaW4gb25lIG9mIHRoZXNlIHdheXM6CgogICAgYSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgoKICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAogICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCiAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAogICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubwogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCiAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgoKICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLgoKICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCiAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCiAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhlIHBsYWNlIHRvCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQogICAgdGhhdCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgoKICAgIGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQKICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCiAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCiAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4KCiAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCmZyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KCiAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLApwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKYW5kIGV4ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCgogIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCnBhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQpVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9yIGZvciBhCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCkNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCmJ5IHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAptb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCmJlZW4gaW5zdGFsbGVkIGluIFJPTSkuCgogIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCgogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAppbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5CmRvY3VtZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgp1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4KCiAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgpBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCmJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRlbnQKdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQp1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5CnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KCiAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQphZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCnRoYXQgbWF0ZXJpYWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgoKICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQogICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKCiAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCgogICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCiAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCiAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgoKICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgpyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCgogIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwp3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgoKICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQpmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwp0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCgogIDguIFRlcm1pbmF0aW9uLgoKICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCgogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCmxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQpwcm92aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKaG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CmNvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMgYWZ0ZXIKeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KCiAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCgogIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgpydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCnRvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCm5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwpub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KCiAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoKICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CnJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4Kb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKd29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCmxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZApnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKdGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KCiAgMTEuIFBhdGVudHMuCgogIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCgogIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCmhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZApieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCmNvbnNlcXVlbmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCnB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdodCB0byBncmFudApwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKdGhpcyBMaWNlbnNlLgoKICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQpwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCgogIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKdG8gY29weSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAp0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCmF2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudApsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMgeW91IGhhdmUKYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCmNvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKaW4gYSBjb3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0CmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCgogIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCgogIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgp0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcwpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAp3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcwppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50CnRvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCnRoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawpjb252ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdApjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCm9yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKYW55IGltcGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgoKICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KCiAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCmNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKdG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5CnRoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCgogIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCnBlcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQpjb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLApidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCnNlY3Rpb24gMTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKY29tYmluYXRpb24gYXMgc3VjaC4KCiAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgp0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBhdXRob3JpemVzIHlvdQp0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KCiAgTGF0ZXIgbGljZW5zZSB2ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQKcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBpbXBvc2VkIG9uIGFueQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCmxhdGVyIHZlcnNpb24uCgogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgoKICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWQpPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTQpJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCgogIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQpHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUKVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRApQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1TKSwKRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgpTVUNIIERBTUFHRVMuCgogIDE3LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCgogIElmIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAphYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJtcywKcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCmFuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwgbGlhYmlsaXR5IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUKUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCgogIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0CnRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgoKICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCm1pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwKaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUKPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQptYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKdGhlIGxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAo8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+Lgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_action.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfYWN0aW9uLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CgppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0X21hc3NkZWxldGVfYWN0aW9uJ10pKSB7CiAgICAKICAgIGlmKCBpc3NldCgkcGFyYW1zWydwa2V5cyddKSAmJiBpc19hcnJheSgkcGFyYW1zWydwa2V5cyddKSAmJgogICAgY291bnQoJHBhcmFtc1sncGtleXMnXSkgPiAwICkgewogICAgCiAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1sncGtleXMnXSBhcyAkcGtleSkgewogICAgICAgICAgICAkYWN0aW9uZGItPmRlbGV0ZSgkcGtleSk7ICAKICAgICAgICB9ICAgIAogICAgICAgIAogICAgICAgICRwYXJhbXMgPSBhcnJheSgnYWN0aW9uX21lc3NhZ2UnPT4gJ3NfZGVsZXRlZCxhY3Rpb25fcycsICdhY3RpdmVfdGFiJyA9PiAnYWN0aW9uJyk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAKICAgIH0KICAgIAp9CgokYWN0aW9uX2RhdGEgPSAkYWN0aW9uZGItPmZldGNoX2FsbCgpOwoKJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKZm9yZWFjaCAoJGFjdGlvbl9kYXRhIGFzICRrZXkgPT4gJHZhbHVlKSB7CgogICAgJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOwogICAgCiAgICBmb3JlYWNoICgkdmFsdWUgYXMgJHN1Yl9rZXkgPT4gJHN1Yl92YWx1ZSkgewogICAgICAgICRvbmVyb3ctPiRzdWJfa2V5ID0gJHZhbHVlWyRzdWJfa2V5XTsgICAKICAgIH0KICAgICAgICAKICAgICRvbmVyb3ctPmVkaXR1cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhY3Rpb25fYWRkX2VkaXQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgncGtleSc9PiR2YWx1ZVsnY291cG9uX2FjdGlvbl9pZCddKSwgJycsICd0cnVlJyk7CiAgICAKICAgICRvbmVyb3ctPmVkaXRfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ2FjdGlvbl9hZGRfZWRpdCcsIAogICAgICAgICRyZXR1cm5pZCwKICAgICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLAogICAgICAgICR0aGlzLT5MYW5nKCdlZGl0JyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICBhcnJheSgncGtleSc9PiR2YWx1ZVsnY291cG9uX2FjdGlvbl9pZCddKQogICAgKTsKCiAgICAkb25lcm93LT5kZWxldGVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ2FjdGlvbl9kZWxldGUnLCAKICAgICAgICAkcmV0dXJuaWQsIAogICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnZGVsZXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICBhcnJheSgncGtleSc9PiR2YWx1ZVsnY291cG9uX2FjdGlvbl9pZCddKSwgCiAgICAgICAgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKQogICAgKTsKICAgIAogICAgJG9uZXJvdy0+c2VsZWN0ID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAncGtleXNbXScsICR2YWx1ZVsnY291cG9uX2FjdGlvbl9pZCddKTsKCiAgICBpZiAoICR2YWx1ZVsnc3RhdHVzJ10gPT0gJzEnICkgewogICAgICAgICRvbmVyb3ctPmFwcHJvdmVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FjdGlvbl9jaGFuZ2Vfc3RhdHVzJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygncmV2ZXJ0X3N0YXR1cycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdzdGF0dXMnID0+IDAsICdwa2V5JyA9PiAkdmFsdWVbJ2NvdXBvbl9hY3Rpb25faWQnXSkpOwogICAgfSBlbHNlIHsKICAgICAgICAkb25lcm93LT5hcHByb3ZlX2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhY3Rpb25fY2hhbmdlX3N0YXR1cycsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdhcHByb3ZlX3N0YXR1cycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdzdGF0dXMnID0+IDEsICdwa2V5JyA9PiAkdmFsdWVbJ2NvdXBvbl9hY3Rpb25faWQnXSkpOyAgICAKICAgIH0KCiAgICAkZW50cnlhcnJheVtdID0gJG9uZXJvdzsKCn0KCQkKJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBkZWZpbmUgdGV4dCBmb3IgbGFiZWxzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgkKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOwkKJHNtYXJ0eS0+YXNzaWduKCdhbGlhc190ZXh0JywgJHRoaXMtPkxhbmcoJ2FsaWFzJykpOwkKJHNtYXJ0eS0+YXNzaWduKCdzdGFydF9kYXRlX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhcnRfZGF0ZScpKTsJCiRzbWFydHktPmFzc2lnbignZW5kX2RhdGVfdGV4dCcsICR0aGlzLT5MYW5nKCdlbmRfZGF0ZScpKTsJCiRzbWFydHktPmFzc2lnbignc3RhdHVzX3RleHQnLCAkdGhpcy0+TGFuZygnc3RhdHVzJykpOwkKJHNtYXJ0eS0+YXNzaWduKCdzZWxlY3RfdGV4dCcsICR0aGlzLT5MYW5nKCdzZWxlY3QnKSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc2V0dXAgYnV0dG9ucyBhbmQgbGlua3MKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGZvcm1fcGFyYW1zID0gYXJyYXkoKTsKJGZvcm1fcGFyYW1zWydhY3RpdmVfdGFiJ10gPSAnYWN0aW9uJzsKCmlmIChpc3NldCgkcGFyYW1zWydhY3Rpb25fbWVzc2FnZSddKSkgewogICAgICAgICRhY3Rpb25fbWVzc2FnZSA9IGV4cGxvZGUoIiwiLCAkcGFyYW1zWydhY3Rpb25fbWVzc2FnZSddKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2FjdGlvbl9tZXNzYWdlJywkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJGFjdGlvbl9tZXNzYWdlWzBdLCBhcnJheSgkdGhpcy0+TGFuZygkYWN0aW9uX21lc3NhZ2VbMV0pKSkpKTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAncG9zdCcsICcnLCBmYWxzZSwgJycsICRmb3JtX3BhcmFtcywgJycpKTsKCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzZGVsZXRlJywKJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdF9tYXNzZGVsZXRlX2FjdGlvbicsICR0aGlzLT5MYW5nKCdkZWxldGVfc2VsZWN0ZWRfaXRlbXMnKSwgJycsICcnLCAkdGhpcy0+TGFuZygnYXJleW91c3VyZScpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZF9saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAkaWQsIAogICAgJ2FjdGlvbl9hZGRfZWRpdCcsIAogICAgJHJldHVybmlkLCAKICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgCiAgICAkdGhpcy0+TGFuZygnc19hZGQnLCBhcnJheSgkdGhpcy0+TGFuZygnYWN0aW9uX3MnKSkpLAogICAgJycsCiAgICAnJywKICAgICdzeXN0ZW1pY29uJyksIAogICAgYXJyYXkoKSwgCiAgICAnJywgCiAgICBmYWxzZSwgCiAgICBmYWxzZSwgCiAgICAnJykgLicgJy4gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAnYWN0aW9uX2FkZF9lZGl0JywgCiAgICAgICAgJHJldHVybmlkLAogICAgICAgICR0aGlzLT5MYW5nKCdzX2FkZCcsIGFycmF5KCR0aGlzLT5MYW5nKCdhY3Rpb25fcycpKSksIAogICAgICAgIGFycmF5KCksCiAgICAgICAgJycsIAogICAgICAgIGZhbHNlLCAKICAgICAgICBmYWxzZSwgCiAgICAgICAgJ2NsYXNzPSJwYWdlb3B0aW9ucyInKQogICAgKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9uJywgJHRoaXMtPkxhbmcoJ2FjdGlvbl9zJykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFByb2Nlc3NUZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FjdGlvbl9saXN0LnRwbCcpOwoJCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_period.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfcGVyaW9kLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwZXJpb2RkYiA9IG5ldyBjb3Vwb25fcGVyaW9kREFPKCk7CiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CgppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0X21hc3NkZWxldGVfcGVyaW9kJ10pKSB7CiAgICAKICAgIGlmKCBpc3NldCgkcGFyYW1zWydwa2V5cyddKSAmJiBpc19hcnJheSgkcGFyYW1zWydwa2V5cyddKSAmJgogICAgY291bnQoJHBhcmFtc1sncGtleXMnXSkgPiAwICkgewogICAgCiAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1sncGtleXMnXSBhcyAkcGtleSkgewogICAgICAgICAgICAkcGVyaW9kZGItPmRlbGV0ZSgkcGtleSk7ICAKICAgICAgICB9ICAgIAogICAgICAgIAogICAgICAgICRwYXJhbXMgPSBhcnJheSgncGVyaW9kX21lc3NhZ2UnPT4gJ3NfZGVsZXRlZCxwZXJpb2RfcycsICdhY3RpdmVfdGFiJyA9PiAncGVyaW9kJyk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAKICAgIH0KICAgIAp9CgokYWN0aW9uX2Ryb3Bkb3duID0gJGFjdGlvbmRiLT5mZXRjaF9hY3Rpb25kcm9wZG93bigpOwokcGVyaW9kX2Ryb3Bkb3duID0gJHBlcmlvZGRiLT5mZXRjaF9wZXJpb2Rkcm9wZG93bigpOwokcGVyaW9kX2RhdGEgPSAkcGVyaW9kZGItPmZldGNoX2FsbCgpOwoKJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKJHRydWVpbWFnZSA9ICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdzZXRmYWxzZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7CiRmYWxzZWltYWdlID0gJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdzZXR0cnVlJyksJycsJycsJ3N5c3RlbWljb24nKTsKCQpmb3JlYWNoICgkcGVyaW9kX2RhdGEgYXMgJGtleSA9PiAkdmFsdWUpIHsKCiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CiAgICAKICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAkc3ViX2tleSA9PiAkc3ViX3ZhbHVlKSB7CiAgICAgICAgJG9uZXJvdy0+JHN1Yl9rZXkgPSAkdmFsdWVbJHN1Yl9rZXldOwogICAgICAgIAogICAgICAgIGlmICgkc3ViX2tleSA9PSAnY291cG9uX3BlcmlvZF9pZCcpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRwZXJpb2RfZHJvcGRvd25bJHZhbHVlWyRzdWJfa2V5XV0pKSB7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRvbmVyb3ctPmNvdXBvbl9wZXJpb2RfdGl0bGUgPSAkcGVyaW9kX2Ryb3Bkb3duWyRvbmVyb3ctPmNvdXBvbl9wZXJpb2RfaWRdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICgkc3ViX2tleSA9PSAnY291cG9uX2FjdGlvbl9pZCcpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRhY3Rpb25fZHJvcGRvd25bJHZhbHVlWyRzdWJfa2V5XV0pKSB7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRvbmVyb3ctPmNvdXBvbl9hY3Rpb25fdGl0bGUgPSAkYWN0aW9uX2Ryb3Bkb3duWyRvbmVyb3ctPmNvdXBvbl9hY3Rpb25faWRdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgfQogICAgICAgIAogICAgJG9uZXJvdy0+ZWRpdHVybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3BlcmlvZF9hZGRfZWRpdCcsICRyZXR1cm5pZCwgJycsIGFycmF5KCdwa2V5Jz0+JHZhbHVlWydjb3Vwb25fcGVyaW9kX2lkJ10pLCAnJywgJ3RydWUnKTsKICAgIAogICAgJG9uZXJvdy0+ZWRpdF9saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAncGVyaW9kX2FkZF9lZGl0JywgCiAgICAgICAgJHJldHVybmlkLAogICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsCiAgICAgICAgJHRoaXMtPkxhbmcoJ2VkaXQnKSwnJywnJywnc3lzdGVtaWNvbicpLAogICAgICAgIGFycmF5KCdwa2V5Jz0+JHZhbHVlWydjb3Vwb25fcGVyaW9kX2lkJ10pCiAgICApOwoKICAgICRvbmVyb3ctPmRlbGV0ZV9saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAncGVyaW9kX2RlbGV0ZScsIAogICAgICAgICRyZXR1cm5pZCwgCiAgICAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAogICAgICAgICR0aGlzLT5MYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpLAogICAgICAgIGFycmF5KCdwa2V5Jz0+JHZhbHVlWydjb3Vwb25fcGVyaW9kX2lkJ10pLCAKICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZScpCiAgICApOwogICAgCiAgICAkb25lcm93LT5zZWxlY3QgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdwa2V5c1tdJywgJHZhbHVlWydjb3Vwb25fcGVyaW9kX2lkJ10pOwogICAgCiAgICAkb25lcm93LT5pc19maW5hbCA9ICRvbmVyb3ctPmlzX2ZpbmFsID09ICcxJyA/ICR0aGlzLT5MYW5nKCd5ZXMnKSA6ICR0aGlzLT5MYW5nKCdubycpOwogICAgCiAgICAgICAgCiAgICBpZiAoICR2YWx1ZVsnc3RhdHVzJ10gPT0gJzEnICkgewogICAgICAgICRvbmVyb3ctPmFwcHJvdmVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3BlcmlvZF9jaGFuZ2Vfc3RhdHVzJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygncmV2ZXJ0X3N0YXR1cycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdzdGF0dXMnID0+IDAsICdwa2V5JyA9PiAkdmFsdWVbJ2NvdXBvbl9wZXJpb2RfaWQnXSkpOwogICAgfSBlbHNlIHsKICAgICAgICAkb25lcm93LT5hcHByb3ZlX2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdwZXJpb2RfY2hhbmdlX3N0YXR1cycsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdhcHByb3ZlX3N0YXR1cycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdzdGF0dXMnID0+IDEsICdwa2V5JyA9PiAkdmFsdWVbJ2NvdXBvbl9wZXJpb2RfaWQnXSkpOyAgICAKICAgIH0KCiAgICAkZW50cnlhcnJheVtdID0gJG9uZXJvdzsKCn0KCQkKJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBkZWZpbmUgdGV4dCBmb3IgbGFiZWxzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbl90ZXh0JywgJHRoaXMtPkxhbmcoJ2FjdGlvbicpKTsJCiRzbWFydHktPmFzc2lnbigndGl0bGVfdGV4dCcsICR0aGlzLT5MYW5nKCd0aXRsZScpKTsJCiRzbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXJ0X2RhdGUnKSk7CQokc21hcnR5LT5hc3NpZ24oJ2VuZF9kYXRlX3RleHQnLCAkdGhpcy0+TGFuZygnZW5kX2RhdGUnKSk7CQokc21hcnR5LT5hc3NpZ24oJ2lzX2ZpbmFsX3RleHQnLCAkdGhpcy0+TGFuZygnaXNfZmluYWwnKSk7CQokc21hcnR5LT5hc3NpZ24oJ3N0YXR1c190ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXR1cycpKTsJCiRzbWFydHktPmFzc2lnbignc2VsZWN0X3RleHQnLCAkdGhpcy0+TGFuZygnc2VsZWN0JykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNldHVwIGJ1dHRvbnMgYW5kIGxpbmtzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRmb3JtX3BhcmFtcyA9IGFycmF5KCk7CiRmb3JtX3BhcmFtc1snYWN0aXZlX3RhYiddID0gJ3BlcmlvZCc7CgppZiAoaXNzZXQoJHBhcmFtc1sncGVyaW9kX21lc3NhZ2UnXSkpIHsKICAgICAgICAkcGVyaW9kX21lc3NhZ2UgPSBleHBsb2RlKCIsIiwgJHBhcmFtc1sncGVyaW9kX21lc3NhZ2UnXSk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdwZXJpb2RfbWVzc2FnZScsJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCRwZXJpb2RfbWVzc2FnZVswXSwgYXJyYXkoJHRoaXMtPkxhbmcoJHBlcmlvZF9tZXNzYWdlWzFdKSkpKSk7Cn0KCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnJywgZmFsc2UsICcnLCAkZm9ybV9wYXJhbXMsICcnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2RlbGV0ZScsCiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXRfbWFzc2RlbGV0ZV9wZXJpb2QnLCAkdGhpcy0+TGFuZygnZGVsZXRlX3NlbGVjdGVkX2l0ZW1zJyksICcnLCAnJywgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRfbGluaycsICR0aGlzLT5DcmVhdGVMaW5rKAogICAgJGlkLCAKICAgICdwZXJpb2RfYWRkX2VkaXQnLCAKICAgICRyZXR1cm5pZCwgCiAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsIAogICAgJHRoaXMtPkxhbmcoJ3NfYWRkJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3BlcmlvZF9zJykpKSwKICAgICcnLAogICAgJycsCiAgICAnc3lzdGVtaWNvbicpLCAKICAgIGFycmF5KCksIAogICAgJycsIAogICAgZmFsc2UsIAogICAgZmFsc2UsIAogICAgJycpIC4nICcuICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ3BlcmlvZF9hZGRfZWRpdCcsIAogICAgICAgICRyZXR1cm5pZCwKICAgICAgICAkdGhpcy0+TGFuZygnc19hZGQnLCBhcnJheSgkdGhpcy0+TGFuZygncGVyaW9kX3MnKSkpLCAKICAgICAgICBhcnJheSgpLAogICAgICAgICcnLCAKICAgICAgICBmYWxzZSwgCiAgICAgICAgZmFsc2UsIAogICAgICAgICdjbGFzcz0icGFnZW9wdGlvbnMiJykKICAgICk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BlcmlvZCcsICR0aGlzLT5MYW5nKCdwZXJpb2RfcycpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBQcm9jZXNzVGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwZXJpb2RfbGlzdC50cGwnKTsKCQojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_preferences.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfcHJlZmVyZW5jZXMucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc2V0dXAgZm9ybQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiAoaXNzZXQoJHBhcmFtc1sncHJlZmVyZW5jZXNfbWVzc2FnZSddKSkgewogICAgICAgICRwcmVmZXJlbmNlc19tZXNzYWdlID0gZXhwbG9kZSgiLCIsICRwYXJhbXNbJ3ByZWZlcmVuY2VzX21lc3NhZ2UnXSk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdwcmVmZXJlbmNlc19tZXNzYWdlJywkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJHByZWZlcmVuY2VzX21lc3NhZ2VbMF0sIGFycmF5KCR0aGlzLT5MYW5nKCRwcmVmZXJlbmNlc19tZXNzYWdlWzFdKSkpKSk7Cn0KCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwncHJlZmVyZW5jZXNfYWRkX2VkaXQnLCRyZXR1cm5pZCkpOwoKLy8kc21hcnR5LT5hc3NpZ24oJ3VuZGVyY29uc3RydWN0aW9uX3RleHQnLCAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJ3ByZWZlcmVuY2VzX3VuZGVyY29uc3RydWN0aW9uJykpKTsKCi8vIGVtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXIKCiRzbWFydHktPmFzc2lnbignc2VjdGlvbl9lbWFpbF9yZWdpc3RlcmVkX2N1c3RvbWVyJywkdGhpcy0+TGFuZygncF9zZWN0aW9uX2VtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXInKSk7CgppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VtYWlsX3JlZ2lzdGVyZWRfdHJ1ZV9mYWxzZScsMCkgPT0gMSkgewogICAgJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2VfdGV4dCcsJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfdHJ1ZScpKSk7ICAgIAp9IGVsc2UgewogICAgJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2VfdGV4dCcsJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ3BfZW1haWxfcmVnaXN0ZXJlZF9mYWxzZScpKSk7ICAgIAp9Cgokc21hcnR5LT5hc3NpZ24oJ2VtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXJfdGV4dCcsJHRoaXMtPkxhbmcoJ3BfZW1haWxfcmVnaXN0ZXJlZF9jaGVjaycpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX2N1c3RvbWVyX2lucHV0JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2VtYWlsX3JlZ2lzdGVyZWRfY2hlY2snLCcxJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9jaGVjaycsMCkpKTsKCiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0X3RleHQnLCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3RfaW5wdXQnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnLCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdF9kZWZhdWx0JykpLDMwLDUwKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19lbWFpbF90ZXh0JywkdGhpcy0+TGFuZygncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsX2lucHV0JywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsJywnJyksMzAsMTAwKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsX2hlbHAnLCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19lbWFpbF9oZWxwJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZV90ZXh0JywkdGhpcy0+TGFuZygncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZV9pbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19uYW1lJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX25hbWUnLCcnKSwzMCwxMDApKTsKCiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3RleHQnLCR0aGlzLT5MYW5nKCdwX2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHRoaXMtPkdldFRlbXBsYXRlKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UnKSwgJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZScpKTsKCiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnMnLCR0aGlzLT5MYW5nKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFycycpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFyc19saXN0JywkdGhpcy0+TGFuZygnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnNfbGlzdCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFyc19saW5rJywkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW5mby5naWYnLCAkdGhpcy0+TGFuZygnZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnMnKSwnJywnJywnc3lzdGVtaWNvbicpKTsKCiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcl90ZXh0JywkdGhpcy0+TGFuZygncF9lbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJykpOwokc21hcnR5LT5hc3NpZ24oJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHRoaXMtPkdldFRlbXBsYXRlKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJyksICdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnMnLCR0aGlzLT5MYW5nKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnMnKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcl92YXJzX2xpc3QnLCR0aGlzLT5MYW5nKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnNfbGlzdCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnNfbGluaycsJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2luZm8uZ2lmJywgJHRoaXMtPkxhbmcoJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFycycpLCcnLCcnLCdzeXN0ZW1pY29uJykpOwoKLyoKCiRzbWFydHktPmFzc2lnbignc2VjdGlvbl90aXRsZV8wMl90ZXh0JywkdGhpcy0+TGFuZygncHJlZmVyZW5jZXNfc2VjdGlvbl90aXRsZV8wMicpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZG91YmxlX3RleHQnLCR0aGlzLT5MYW5nKCdwcmVmZXJlbmNlc19kb3VibGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZG91YmxlX2lucHV0JywKCQkkdGhpcy0+TGFuZygncHJlZmVyZW5jZXNfZG91YmxlX3dpZHRoJykgLiAnOiZuYnNwOycgLgoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2RvdWJsZV9hJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RvdWJsZV9hJyw4MDApLCA0LCA0ICkgLgoJCSdweCAmbmJzcDsmbmJzcDsnIC4gJHRoaXMtPkxhbmcoJ3ByZWZlcmVuY2VzX2RvdWJsZV9oZWlnaHQnKSAuICc6Jm5ic3A7JyAuCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnZG91YmxlX2InLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZG91YmxlX2InLDgwMCksIDQsIDQgKSAuICdweCcKKTsKCiovCgokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kICgpKTsKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUHJvY2Vzc1RlbXBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSAoJ3ByZWZlcmVuY2VzX2xpc3QudHBsJyk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_prize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfcHJpemUucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJvZ3JhbSBzdGFydCAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHByaXplZGIgPSBuZXcgY291cG9uX3ByaXplREFPKCk7CiRhY3Rpb25kYiA9IG5ldyBjb3Vwb25fYWN0aW9uREFPKCk7CiRwZXJpb2RkYiA9IG5ldyBjb3Vwb25fcGVyaW9kREFPKCk7CiRtaXhlZGRiID0gbmV3IGNvdXBvbl9taXhlZERBTygpOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdF9tYXNzZGVsZXRlX3ByaXplJ10pKSB7CiAgICAKICAgIGlmKCBpc3NldCgkcGFyYW1zWydwa2V5cyddKSAmJiBpc19hcnJheSgkcGFyYW1zWydwa2V5cyddKSAmJgogICAgY291bnQoJHBhcmFtc1sncGtleXMnXSkgPiAwICkgewogICAgCiAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1sncGtleXMnXSBhcyAkcGtleSkgewogICAgICAgICAgICAkcHJpemVkYi0+ZGVsZXRlKCRwa2V5KTsgIAogICAgICAgIH0gICAgCiAgICAgICAgCiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCdwcml6ZV9tZXNzYWdlJz0+ICdzX2RlbGV0ZWQscHJpemVfcycsICdhY3RpdmVfdGFiJyA9PiAncHJpemUnKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKICAgIAogICAgfQogICAgCn0KCiRwcml6ZV9kYXRhID0gJG1peGVkZGItPmZldGNoX3ByaXplcygpOwokYWN0aW9uZHJvcGRvd24gPSAkYWN0aW9uZGItPmZldGNoX2FjdGlvbmRyb3Bkb3duKCk7CiRwZXJpb2Rkcm9wZG93biA9ICRwZXJpb2RkYi0+ZmV0Y2hfcGVyaW9kZHJvcGRvd24oKTsKCiRlbnRyeWFycmF5ID0gYXJyYXkoKTsKCmZvcmVhY2ggKCRwcml6ZV9kYXRhIGFzICRrZXkgPT4gJHZhbHVlKSB7CgogICAgJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOwogICAgCiAgICBmb3JlYWNoICgkdmFsdWUgYXMgJHN1Yl9rZXkgPT4gJHN1Yl92YWx1ZSkgewogICAgICAgICRvbmVyb3ctPiRzdWJfa2V5ID0gJHZhbHVlWyRzdWJfa2V5XTsgICAgCiAgICB9CiAgICAKICAgICRvbmVyb3ctPmNvdXBvbl9hY3Rpb25fdmFsdWUgPSAkYWN0aW9uZHJvcGRvd25bJG9uZXJvdy0+Y291cG9uX2FjdGlvbl9pZF07CiAgICAkb25lcm93LT5jb3Vwb25fcGVyaW9kX3ZhbHVlID0gJHBlcmlvZGRyb3Bkb3duWyRvbmVyb3ctPmNvdXBvbl9wZXJpb2RfaWRdOwogICAgCiAgICAkb25lcm93LT5lZGl0dXJsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncHJpemVfYWRkX2VkaXQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgncGtleSc9PiR2YWx1ZVsnY291cG9uX3ByaXplX2lkJ10pLCAnJywgJ3RydWUnKTsKICAgIAogICAgJG9uZXJvdy0+ZWRpdF9saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAncHJpemVfYWRkX2VkaXQnLCAKICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnZWRpdCcpLCcnLCcnLCdzeXN0ZW1pY29uJyksCiAgICAgICAgYXJyYXkoJ3BrZXknPT4kdmFsdWVbJ2NvdXBvbl9wcml6ZV9pZCddKQogICAgKTsKCiAgICAkb25lcm93LT5kZWxldGVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ3ByaXplX2RlbGV0ZScsIAogICAgICAgICRyZXR1cm5pZCwgCiAgICAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAogICAgICAgICR0aGlzLT5MYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpLAogICAgICAgIGFycmF5KCdwa2V5Jz0+JHZhbHVlWydjb3Vwb25fcHJpemVfaWQnXSksIAogICAgICAgICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykKICAgICk7CiAgICAKICAgICRvbmVyb3ctPnNlbGVjdCA9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3BrZXlzW10nLCAkdmFsdWVbJ2NvdXBvbl9wcml6ZV9pZCddKTsKCiAgICBpZiAoICR2YWx1ZVsnc3RhdHVzJ10gPT0gJzEnICkgewogICAgICAgICRvbmVyb3ctPmFwcHJvdmVfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3ByaXplX2NoYW5nZV9zdGF0dXMnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdyZXZlcnRfc3RhdHVzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3N0YXR1cycgPT4gMCwgJ3BrZXknID0+ICR2YWx1ZVsnY291cG9uX3ByaXplX2lkJ10pKTsgICAgICAgIAogICAgfSBlbHNlIHsKICAgICAgICAkb25lcm93LT5hcHByb3ZlX2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdwcml6ZV9jaGFuZ2Vfc3RhdHVzJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ2FwcHJvdmVfc3RhdHVzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3N0YXR1cycgPT4gMSwgJ3BrZXknID0+ICR2YWx1ZVsnY291cG9uX3ByaXplX2lkJ10pKTsgICAgICAgIAogICAgfQoKICAgICRlbnRyeWFycmF5W10gPSAkb25lcm93OwoKfQoJCQokdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdpdGVtcycsICRlbnRyeWFycmF5KTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkZW50cnlhcnJheSkpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGRlZmluZSB0ZXh0IGZvciBsYWJlbHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwkKCQokc21hcnR5LT5hc3NpZ24oJ3ByaXplX2NvZGVfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9jb2RlJykpOwokc21hcnR5LT5hc3NpZ24oJ251bWJlcl90ZXh0JywgJHRoaXMtPkxhbmcoJ251bWJlcicpKTsKCiRzbWFydHktPmFzc2lnbigndGl0ZWxfdGV4dCcsICR0aGlzLT5MYW5nKCd0aXRlbCcpKTsJCiRzbWFydHktPmFzc2lnbignYWN0aW9uX3BlcmlvZF90ZXh0JywgJHRoaXMtPkxhbmcoJ2FjdGlvbl9wZXJpb2QnKSk7CQokc21hcnR5LT5hc3NpZ24oJ3N0YXR1c190ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXR1cycpKTsJCiRzbWFydHktPmFzc2lnbignc2VsZWN0X3RleHQnLCAkdGhpcy0+TGFuZygnc2VsZWN0JykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNldHVwIGJ1dHRvbnMgYW5kIGxpbmtzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRmb3JtX3BhcmFtcyA9IGFycmF5KCk7CiRmb3JtX3BhcmFtc1snYWN0aXZlX3RhYiddID0gJ3ByaXplJzsKCmlmIChpc3NldCgkcGFyYW1zWydwcml6ZV9tZXNzYWdlJ10pKSB7CiAgICAgICAgJHByaXplX21lc3NhZ2UgPSBleHBsb2RlKCIsIiwgJHBhcmFtc1sncHJpemVfbWVzc2FnZSddKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3ByaXplX21lc3NhZ2UnLCR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygkcHJpemVfbWVzc2FnZVswXSwgYXJyYXkoJHRoaXMtPkxhbmcoJHByaXplX21lc3NhZ2VbMV0pKSkpKTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAncG9zdCcsICcnLCBmYWxzZSwgJycsICRmb3JtX3BhcmFtcywgJycpKTsKCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzZGVsZXRlJywKJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdF9tYXNzZGVsZXRlX3ByaXplJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9zZWxlY3RlZF9pdGVtcycpLCAnJywgJycsICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkX2xpbmsnLCAkdGhpcy0+Q3JlYXRlTGluaygKICAgICRpZCwgCiAgICAncHJpemVfYWRkX2VkaXQnLCAKICAgICRyZXR1cm5pZCwgCiAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsIAogICAgJHRoaXMtPkxhbmcoJ3NfYWRkJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3ByaXplX3MnKSkpLAogICAgJycsCiAgICAnJywKICAgICdzeXN0ZW1pY29uJyksIAogICAgYXJyYXkoKSwgCiAgICAnJywgCiAgICBmYWxzZSwgCiAgICBmYWxzZSwgCiAgICAnJykgLicgJy4gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAncHJpemVfYWRkX2VkaXQnLCAKICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgJHRoaXMtPkxhbmcoJ3NfYWRkJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3ByaXplX3MnKSkpLCAKICAgICAgICBhcnJheSgpLAogICAgICAgICcnLCAKICAgICAgICBmYWxzZSwgCiAgICAgICAgZmFsc2UsIAogICAgICAgICdjbGFzcz0icGFnZW9wdGlvbnMiJykKICAgICk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByaXplJywgJHRoaXMtPkxhbmcoJ3ByaXplX3MnKSk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUHJvY2Vzc1RlbXBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncHJpemVfbGlzdC50cGwnKTsKCQojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_statistics.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfc3RhdGlzdGljcy5waHAgMTIgMjAxMi0wNy0xMiAxMDowMjoyOVogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEtMjAxMiBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9ncmFtCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRxdWVyeSA9ICJTRUxFQ1QgdDEudGl0bGUgQVMgYWN0aW9uX3RpdGxlLAogICAgICAgICAgICAgICAgdDEuY291cG9uX2FjdGlvbl9pZCwKICAgICAgICAgICAgICAgIHQxLnN0YXJ0X2RhdGUgQVMgYWN0aW9uX3N0YXJ0X2RhdGUsCiAgICAgICAgICAgICAgICB0MS5lbmRfZGF0ZSBBUyBhY3Rpb25fZW5kX2RhdGUsCiAgICAgICAgICAgICAgICBVTklYX1RJTUVTVEFNUCh0MS5zdGFydF9kYXRlKSBBUyBhY3Rpb25fc3RhcnRfdHMsCiAgICAgICAgICAgICAgICBVTklYX1RJTUVTVEFNUCh0MS5lbmRfZGF0ZSkgQVMgYWN0aW9uX2VuZF90cywKICAgICAgICAgICAgICAgIHQyLnRpdGxlIEFTIHBlcmlvZF90aXRsZSwKICAgICAgICAgICAgICAgIHQyLmNvdXBvbl9wZXJpb2RfaWQsCiAgICAgICAgICAgICAgICB0Mi5zdGFydF9kYXRlIEFTIHBlcmlvZF9zdGFydF9kYXRlLAogICAgICAgICAgICAgICAgdDIuZW5kX2RhdGUgQVMgcGVyaW9kX2VuZF9kYXRlLAogICAgICAgICAgICAgICAgVU5JWF9USU1FU1RBTVAodDIuc3RhcnRfZGF0ZSkgQVMgcGVyaW9kX3N0YXJ0X3RzLAogICAgICAgICAgICAgICAgVU5JWF9USU1FU1RBTVAodDIuZW5kX2RhdGUpIEFTIHBlcmlvZF9lbmRfdHMKICAgICAgICAgICAgRlJPTSAiLlVQQ09VUE9OX0FDVElPTl9UQUJMRS4iIHQxLCAKICAgICAgICAgICAgICAgICIuVVBDT1VQT05fUEVSSU9EX1RBQkxFLiIgdDIKICAgICAgICAgICAgV0hFUkUgdDEuY291cG9uX2FjdGlvbl9pZCA9IHQyLmNvdXBvbl9hY3Rpb25faWQKICAgICAgICAgICAgQU5EIHQxLnN0YXR1cyA9ICcxJwogICAgICAgICAgICBBTkQgdDIuc3RhdHVzID0gJzEnCiAgICAgICAgICAgIE9SREVSIEJZIHQyLmVuZF9kYXRlIEFTQyI7CgokZGIgPSBjbXNtcygpLT5HZXREYigpOwoKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgokcXVlcnlfcGFydCA9ICJTRUxFQ1QgY291bnQoMSkgQVMgY291bnQsIAogICAgY29uY2F0KCd7bXlfa2V5fScpIEFTIG15X2tleSAKICAgIEZST00gIi5VUENPVVBPTl9DT0RFX1RBQkxFLiIgdDUsCiAgICAgICAgIi5VUENPVVBPTl9DVVNUT01FUl9UQUJMRS4iIHQ0IAogICAgV0hFUkUgdDUuY291cG9uX2N1c3RvbWVyX2lkID0gdDQuY291cG9uX2N1c3RvbWVyX2lkCiAgICBBTkQgdDQuc3RhdHVzID0gJzEnCiAgICBBTkQgdDUudGltZXN0YW1wID49ICd7cGVyaW9kX3N0YXJ0X3RzfScgCiAgICBBTkQgdDUudGltZXN0YW1wIDw9ICd7cGVyaW9kX2VuZF90c30nIjsKCiRxdWVyeSA9ICcnOwokZGJfcmVzdWx0ID0gYXJyYXkoKTsKCndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgCiAgICAkb2JqID0gbmV3IHN0ZGNsYXNzOwogICAgCiAgICBmb3JlYWNoICgkcm93IGFzICRrID0+ICR2KSB7CiAgICAgICAgJG9iai0+JGsgPSAkcm93WyRrXTsKICAgIH0KICAgICAgICAKICAgICRkYl9yZXN1bHRbXSA9ICRvYmo7CiAgICAKICAgIC8vIGJ1aWxkIHF1ZXJ5CiAgICAKICAgICR0ZW1wID0gJHF1ZXJ5X3BhcnQ7CiAgICAKICAgICR0ZW1wID0gc3RyX3JlcGxhY2UoJ3twZXJpb2Rfc3RhcnRfdHN9JywgJHJvd1sncGVyaW9kX3N0YXJ0X3RzJ10sICR0ZW1wKTsKICAgICR0ZW1wID0gc3RyX3JlcGxhY2UoJ3twZXJpb2RfZW5kX3RzfScsICRyb3dbJ3BlcmlvZF9lbmRfdHMnXSwgJHRlbXApOwogICAgJHRlbXAgPSBzdHJfcmVwbGFjZSgne215X2tleX0nLCAoJGRicmVzdWx0LT5DdXJyZW50Um93KCkgLTEpLCAkdGVtcCk7CiAgICAKICAgIGlmICgkZGJyZXN1bHQtPkN1cnJlbnRSb3coKSAhPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkpIHsKICAgICAgICAkdGVtcCAuPSAiXG5VTklPTiBBTExcbiI7CiAgICB9CgogICAgJHF1ZXJ5IC49ICR0ZW1wOwogICAgCn0KCi8vIGFkZCBjb3Vwb25fcGVyaW9kX2NvdW50CgokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCiRjb3Vwb25fYWN0aW9uX2NvdW50ID0gYXJyYXkoKTsKCndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgeyAgICAKICAgICRkYl9yZXN1bHRbJHJvd1snbXlfa2V5J11dLT5wZXJpb2RfY291bnQgPSAkcm93Wydjb3VudCddOwogICAgCiAgICAkY291cG9uX2FjdGlvbl9pZCA9ICRkYl9yZXN1bHRbJHJvd1snbXlfa2V5J11dLT5jb3Vwb25fYWN0aW9uX2lkOwogICAgICAgIAogICAgaWYgKGlzc2V0KCRjb3Vwb25fYWN0aW9uX2NvdW50WyRjb3Vwb25fYWN0aW9uX2lkXSkpIHsKICAgICAgICAkY291cG9uX2FjdGlvbl9jb3VudFskY291cG9uX2FjdGlvbl9pZF0gPSAoJGNvdXBvbl9hY3Rpb25fY291bnRbJGNvdXBvbl9hY3Rpb25faWRdICsgJHJvd1snY291bnQnXSk7ICAgICAKICAgIH0gZWxzZSB7CiAgICAgICAgJGNvdXBvbl9hY3Rpb25fY291bnRbJGNvdXBvbl9hY3Rpb25faWRdID0gJHJvd1snY291bnQnXTsgICAgICAgCiAgICB9CiAgICAgICAgCn0KCi8vIGFkZCBjb3Vwb25fYWN0aW9uX2NvdW50CgokY291cG9uX2FjdGlvbl9tYXRjaCA9ICcnOwoKZm9yZWFjaCAoJGRiX3Jlc3VsdCBhcyAkayA9PiAkdikgewogICAgJGFjdGlvbl9pZCA9ICRkYl9yZXN1bHRbJGtdLT5jb3Vwb25fYWN0aW9uX2lkOwogICAgJGRiX3Jlc3VsdFska10tPmFjdGlvbl9jb3VudCA9ICRjb3Vwb25fYWN0aW9uX2NvdW50WyRhY3Rpb25faWRdOwogICAgCiAgICBpZiAoJGNvdXBvbl9hY3Rpb25fbWF0Y2ggIT0gJGFjdGlvbl9pZCkgewogICAgICAgICRjb3Vwb25fYWN0aW9uX21hdGNoID0gJGFjdGlvbl9pZDsKICAgICAgICAkZGJfcmVzdWx0WyRrXS0+c2hvd19hY3Rpb25fdGl0bGUgPSAnMSc7CiAgICB9IGVsc2UgewogICAgICAgICRkYl9yZXN1bHRbJGtdLT5zaG93X2FjdGlvbl90aXRsZSA9ICcwJzsgICAgICAgIAogICAgfQogICAgCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBhc3NpZ24gc21hcnR5IHZhcmlhYmxlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJGRiX3Jlc3VsdCk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGRiX3Jlc3VsdCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RleHQnLCAkdGhpcy0+TGFuZygndGl0bGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZGF0ZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXJ0X2RhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2RhdGVfdGV4dCcsICR0aGlzLT5MYW5nKCdlbmRfZGF0ZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdyZWdpc3RyYXRpb25zX3RleHQnLCAkdGhpcy0+TGFuZygncmVnaXN0cmF0aW9ucycpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBQcm9jZXNzVGVtcGxhdGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnc3RhdGlzdGljc19saXN0LnRwbCcpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_templates.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfdGVtcGxhdGVzLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiR0ZW1wbGF0ZV90eXBlID0gJHRoaXMtPl9nZXRfdGVtcGxhdGVfdHlwZSgpOwoKJGRlZmF1bHRfdGVtcGxhdGVzID0gYXJyYXkoKTsKJGRlZmF1bHRfdGVtcGxhdGVfdHlwZXMgPSBhcnJheSgpOwoKZm9yZWFjaCAoYXJyYXlfa2V5cygkdGVtcGxhdGVfdHlwZSkgYXMgJGspIHsKICAgICR0ZW1wbGF0ZV90eXBlX2tleSA9ICdkZWZhdWx0XycuICRrIC4gJ190ZW1wbGF0ZSc7CiAgICAkdGVtcGxhdGVfdHlwZV92YWx1ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCR0ZW1wbGF0ZV90eXBlX2tleSk7CiAgICAKICAgICRkZWZhdWx0X3RlbXBsYXRlX3R5cGVzWyRrXSA9ICRrOwogICAgCiAgICBpZiAoaXNzZXQoJHRlbXBsYXRlX3R5cGVfdmFsdWUpKSB7CiAgICAgICAgJGRlZmF1bHRfdGVtcGxhdGVzWyR0ZW1wbGF0ZV90eXBlX3ZhbHVlXSA9ICR0ZW1wbGF0ZV90eXBlX2tleTsgCiAgICB9CiAgICAKfQoKLy8gZGVsZXRlIGRlcHJlY2F0ZWQgdGVtcGxhdGUgcHJlZmVyZW5jZXMKCmZvcmVhY2ggKCRkZWZhdWx0X3RlbXBsYXRlX3R5cGVzIGFzICRrKSB7CiAgICAkX3ByZWZfbmFtZSA9ICdkZWZhdWx0XycuICRrIC4gJ190ZW1wbGF0ZSc7ICAgIAogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJF9wcmVmX25hbWUpOwp9Cgpmb3JlYWNoICgkZGVmYXVsdF90ZW1wbGF0ZXMgYXMgJGsgPT4gJHYpIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCR2LCAkayk7Cn0KCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRfbWFzc2RlbGV0ZV90ZW1wbGF0ZXMnXSkpIHsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1sncGtleXMnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1sncGtleXMnXSkgJiYKY291bnQoJHBhcmFtc1sncGtleXMnXSkgPiAwICkgewoKICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydwa2V5cyddIGFzICRwa2V5KSB7ICAgICAgICAgICAgCiAgICAgICAgICAgICR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGtleSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoaXNzZXQoJGRlZmF1bHRfdGVtcGxhdGVzWyRwa2V5XSkpIHsKICAgICAgICAgICAgICAgICR0ZW1wbGF0ZV90eXBlX2tleSA9ICRkZWZhdWx0X3RlbXBsYXRlc1skcGtleV07ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJHRlbXBsYXRlX3R5cGVfa2V5KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCd0ZW1wbGF0ZXNfbWVzc2FnZSc9PiAnc19kZWxldGVkLHRlbXBsYXRlc19zJywgJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCiAgICB9Cgp9CgokYWxsdGVtcGxhdGVzID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKTsKCi8vIHJlbW92ZSBlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UgaXMgdXNlZCBpbiB0aGUgc2V0dGluZ3MgdGFiCi8vIHJlbW92ZSBlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyIGlzIHVzZWQgaW4gdGhlIHNldHRpbmdzIHRhYgoKZm9yZWFjaCAoJGFsbHRlbXBsYXRlcyBhcyAkayA9PiAkdikgewogICAgaWYgKCR2ID09ICdlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UnKSB7CiAgICAgICAgdW5zZXQoJGFsbHRlbXBsYXRlc1ska10pOyAgICAgICAgCiAgICB9CiAgICBpZiAoJHYgPT0gJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXInKSB7CiAgICAgICAgdW5zZXQoJGFsbHRlbXBsYXRlc1ska10pOyAgICAgICAgCiAgICB9Cn0KCm5hdGNhc2Vzb3J0KCRhbGx0ZW1wbGF0ZXMpOwoKJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKZm9yZWFjaCggJGFsbHRlbXBsYXRlcyBhcyAkdHBsICkgewogICAgCiAgICAkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CiAgICAKICAgICRwa2V5ID0gJHRwbDsKICAgIAogICAgJG9uZXJvdy0+bmFtZSA9IHByZWdfcmVwbGFjZSgnL14oJyAuIGpvaW4oInwiLCBhcnJheV9rZXlzKCR0ZW1wbGF0ZV90eXBlKSkgLiAnKV8vJywgJycsICR0cGwpOwoKICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJHRlbXBsYXRlX3R5cGUpIGFzICRrKSAgewogICAgICAgIGlmICggcHJlZ19tYXRjaCgiL14kay8iLCAkcGtleSwgJG1hdGNoZXMpICkgewogICAgICAgICAgICAkb25lcm93LT50ZW1wbGF0ZV90eXBlID0gJHRlbXBsYXRlX3R5cGVbJGtdOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAKICAgICRvbmVyb3ctPmVkaXR1cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd0ZW1wbGF0ZV9hZGRfZWRpdCcsICRyZXR1cm5pZCwgJycsIGFycmF5KCdwa2V5Jz0+JHBrZXkpLCAnJywgJ3RydWUnKTsKICAgIAogICAgJG9uZXJvdy0+ZWRpdF9saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAndGVtcGxhdGVfYWRkX2VkaXQnLCAKICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnZWRpdCcpLCcnLCcnLCdzeXN0ZW1pY29uJyksCiAgICAgICAgYXJyYXkoJ3BrZXknPT4kcGtleSkKICAgICk7CgogICAgJG9uZXJvdy0+ZGVsZXRlX2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAkaWQsIAogICAgICAgICd0ZW1wbGF0ZV9kZWxldGUnLCAKICAgICAgICAkcmV0dXJuaWQsIAogICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnZGVsZXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICBhcnJheSgncGtleSc9PiRwa2V5KSwgCiAgICAgICAgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKQogICAgKTsKICAgIAogICAgJG9uZXJvdy0+c2VsZWN0ID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAncGtleXNbXScsICRwa2V5KTsKICAgIAogICAgLy8gY2hhbmdlX2RlZmF1bHQKICAgIAogICAgJGRlZmF1bHQgPSBpc3NldCgkZGVmYXVsdF90ZW1wbGF0ZXNbJHBrZXldKSA/ICcxJyA6ICcwJzsKICAgIAogICAgaWYgKCAkZGVmYXVsdCA9PSAnMScgKSB7CiAgICAgICAgJG9uZXJvdy0+ZGVmYXVsdCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3RlbXBsYXRlX2NoYW5nZV9kZWZhdWx0JywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygncmV2ZXJ0X2RlZmF1bHQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZGVmYXVsdCcgPT4gMCwgJ3BrZXknID0+ICRwa2V5KSk7CiAgICB9IGVsc2UgewogICAgICAgICRvbmVyb3ctPmRlZmF1bHQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd0ZW1wbGF0ZV9jaGFuZ2VfZGVmYXVsdCcsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdhcHByb3ZlX2RlZmF1bHQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZGVmYXVsdCcgPT4gMSwgJ3BrZXknID0+ICRwa2V5KSk7ICAgIAogICAgfQogICAgCQkJICAgIAogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7CgkKfQoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBkZWZpbmUgdGV4dCBmb3IgbGFiZWxzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgokc21hcnR5LT5hc3NpZ24oJ25hbWVfdGV4dCcsICR0aGlzLT5MYW5nKCduYW1lJykpOwkKJHNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0X3RleHQnLCAkdGhpcy0+TGFuZygnZGVmYXVsdCcpKTsJCiRzbWFydHktPmFzc2lnbigndGVtcGxhdGVfdHlwZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX3R5cGUnKSk7CQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNldHVwIGJ1dHRvbnMgYW5kIGxpbmtzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRmb3JtX3BhcmFtcyA9IGFycmF5KCk7CiRmb3JtX3BhcmFtc1snYWN0aXZlX3RhYiddID0gJ3RlbXBsYXRlcyc7CgppZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVzX21lc3NhZ2UnXSkpIHsKICAgICAgICAkdGVtcGxhdGVzX21lc3NhZ2UgPSBleHBsb2RlKCIsIiwgJHBhcmFtc1sndGVtcGxhdGVzX21lc3NhZ2UnXSk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZXNfbWVzc2FnZScsJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCR0ZW1wbGF0ZXNfbWVzc2FnZVswXSwgYXJyYXkoJHRoaXMtPkxhbmcoJHRlbXBsYXRlc19tZXNzYWdlWzFdKSkpKSk7Cn0KCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnJywgZmFsc2UsICcnLCAkZm9ybV9wYXJhbXMsICcnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2RlbGV0ZScsCiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXRfbWFzc2RlbGV0ZV90ZW1wbGF0ZXMnLCAkdGhpcy0+TGFuZygnZGVsZXRlX3NlbGVjdGVkX2l0ZW1zJyksICcnLCAnJywgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRfbGluaycsICR0aGlzLT5DcmVhdGVMaW5rKAogICAgJGlkLCAKICAgICd0ZW1wbGF0ZV9hZGRfZWRpdCcsIAogICAgJHJldHVybmlkLCAKICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgCiAgICAkdGhpcy0+TGFuZygnc19hZGQnLCBhcnJheSgkdGhpcy0+TGFuZygndGVtcGxhdGVzX3MnKSkpLAogICAgJycsCiAgICAnJywKICAgICdzeXN0ZW1pY29uJyksIAogICAgYXJyYXkoKSwgCiAgICAnJywgCiAgICBmYWxzZSwgCiAgICBmYWxzZSwgCiAgICAnJykgLicgJy4gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAKICAgICAgICAndGVtcGxhdGVfYWRkX2VkaXQnLCAKICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgJHRoaXMtPkxhbmcoJ3NfYWRkJywgYXJyYXkoJHRoaXMtPkxhbmcoJ3RlbXBsYXRlc19zJykpKSwKICAgICAgICBhcnJheSgpLAogICAgICAgICcnLCAKICAgICAgICBmYWxzZSwgCiAgICAgICAgZmFsc2UsIAogICAgICAgICdjbGFzcz0icGFnZW9wdGlvbnMiJykKICAgICk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUHJvY2Vzc1RlbXBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgndGVtcGxhdGVzX2xpc3QudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/function.admin_tab_winner.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBmdW5jdGlvbi5hZG1pbl90YWJfd2lubmVyLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwcml6ZWRiID0gbmV3IGNvdXBvbl9wcml6ZURBTygpOwokYWN0aW9uZGIgPSBuZXcgY291cG9uX2FjdGlvbkRBTygpOwokcGVyaW9kZGIgPSBuZXcgY291cG9uX3BlcmlvZERBTygpOwokY29kZWRiID0gbmV3IGNvdXBvbl9jb2RlREFPKCk7CiRtaXhlZGRiID0gbmV3IGNvdXBvbl9taXhlZERBTygpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2dyYW0gc3RhcnQgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcml6ZXMgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRwcml6ZV9kYXRhID0gJG1peGVkZGItPmZldGNoX2FjdGlvbl9wZXJpb2RfcHJpemVzKCk7CiRnaXZlbl9wcml6ZV9jb3VudCA9ICRjb2RlZGItPmZldGNoX2dpdmVuX3ByaXplX2NvdW50KCk7CgokcHJpemVhcnJheSA9IGFycmF5KCk7Cgpmb3JlYWNoICgkcHJpemVfZGF0YSBhcyAka2V5ID0+ICR2YWx1ZSkgewoKICAgICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsKICAgIAogICAgZm9yZWFjaCAoJHZhbHVlIGFzICRzdWJfa2V5ID0+ICRzdWJfdmFsdWUpIHsKICAgICAgICAkb25lcm93LT4kc3ViX2tleSA9ICR2YWx1ZVskc3ViX2tleV07IAogICAgICAgIAogICAgICAgIGlmICgkc3ViX2tleSA9PSAnY291cG9uX3ByaXplX2lkJykgewogICAgICAgICAgICBpZiAoaXNzZXQoJGdpdmVuX3ByaXplX2NvdW50WyR2YWx1ZVskc3ViX2tleV1dKSkgewogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkY3VycmVudF9jb3VudCA9ICRnaXZlbl9wcml6ZV9jb3VudFskdmFsdWVbJHN1Yl9rZXldXTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJG9uZXJvdy0+ZnJlZSA9ICgkdmFsdWVbJ251bWJlciddIC0gJGN1cnJlbnRfY291bnQpOwogICAgICAgICAgICAgICAgJG9uZXJvdy0+Z2l2ZW4gPSAkY3VycmVudF9jb3VudDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRvbmVyb3ctPmZyZWUgPSAkdmFsdWVbJ251bWJlciddOwogICAgICAgICAgICAgICAgJG9uZXJvdy0+Z2l2ZW4gPSAnMCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKICAgIGlmICgkb25lcm93LT5mcmVlKSB7CiAgICAgICAKICAgICAgICAkb25lcm93LT5kcmF3X2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICAgJGlkLCAKICAgICAgICAgICAgJ3dpbm5lcl9kcmF3X2NvdXBvbicsIAogICAgICAgICAgICAkcmV0dXJuaWQsIAogICAgICAgICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vcnVuLmdpZicsCiAgICAgICAgICAgICR0aGlzLT5MYW5nKCdkcmF3X2NvdXBvbicpLCcnLCcnLCdzeXN0ZW1pY29uJyksCiAgICAgICAgICAgIGFycmF5KCdjb3Vwb25fcHJpemVfaWQnPT4kdmFsdWVbJ2NvdXBvbl9wcml6ZV9pZCddLCAnY291cG9uX3BlcmlvZF9pZCc9PiR2YWx1ZVsnY291cG9uX3BlcmlvZF9pZCddKSwgCiAgICAgICAgICAgICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykKICAgICAgICApOwogICAgICAgIAogICAgfSBlbHNlIHsKICAgICAgICAkb25lcm93LT5kcmF3X2xpbmsgPSAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9leHRyYS95ZWxsb3cuZ2lmJywKICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ2dpdmVuX251bWJlcicpLCcnLCcnLCdzeXN0ZW1pY29uJyk7CiAgICB9CiAgICAKICAgICRwcml6ZWFycmF5W10gPSAkb25lcm93OwogICAgCn0gICAgCgokdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdwcml6ZWl0ZW1zJywgJHByaXplYXJyYXkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByaXplaXRlbWNvdW50JywgY291bnQoJHByaXplYXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB3aW5uZXJzIAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokd2lubmVyc19kYXRhID0gJG1peGVkZGItPmZldGNoX3dpbm5lcnMoKTsKJHdpbm5lcmFycmF5ID0gYXJyYXkoKTsKCmZvcmVhY2ggKCR3aW5uZXJzX2RhdGEgYXMgJGtleSA9PiAkdmFsdWUpIHsKCiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CiAgICAKICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAkc3ViX2tleSA9PiAkc3ViX3ZhbHVlKSB7CiAgICAgICAgJG9uZXJvdy0+JHN1Yl9rZXkgPSAkdmFsdWVbJHN1Yl9rZXldOyAgIAogICAgfQogICAgCiAgICAkb25lcm93LT5kYXNoZWRfY291cG9uX2NvZGUgPSAgaW1wbG9kZSgnLScsIHN0cl9zcGxpdCgkb25lcm93LT5jb3Vwb25fY29kZSwgNCkpOwogICAgCiAgICAkb25lcm93LT5kYXNoZWRfcGhvbmUgPSAgaW1wbG9kZSgnICcsIHN0cl9zcGxpdCgkb25lcm93LT5waG9uZSwgMykpOwogICAgICAgIAogICAgJG9uZXJvdy0+d2l0aGRyYXdfbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICRpZCwgCiAgICAgICAgJ3dpbm5lcl93aXRoZHJhd19jb3Vwb24nLCAKICAgICAgICAkcmV0dXJuaWQsIAogICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywKICAgICAgICAkdGhpcy0+TGFuZygnd2l0aGRyYXdfY291cG9uJyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICBhcnJheSgnY291cG9uX2NvZGVfaWQnPT4kdmFsdWVbJ2NvdXBvbl9jb2RlX2lkJ10pLCAKICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZScpCiAgICApOwogICAgCiAgICAkd2lubmVyYXJyYXlbXSA9ICRvbmVyb3c7CiAgICAKfQoJCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3dpbm5lcml0ZW1zJywgJHdpbm5lcmFycmF5KTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd3aW5uZXJpdGVtY291bnQnLCBjb3VudCgkd2lubmVyYXJyYXkpKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBkZWZpbmUgdGV4dCBmb3IgbGFiZWxzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgokc21hcnR5LT5hc3NpZ24oJ3ByaXplX3BfdGV4dCcsICR0aGlzLT5MYW5nKCdwcml6ZV9wJykpOwokc21hcnR5LT5hc3NpZ24oJ2ZyZWVfbnVtYmVyX3RleHQnLCAkdGhpcy0+TGFuZygnZnJlZV9udW1iZXInKSk7CiRzbWFydHktPmFzc2lnbignZ2l2ZW5fbnVtYmVyX3RleHQnLCAkdGhpcy0+TGFuZygnZ2l2ZW5fbnVtYmVyJykpOwokc21hcnR5LT5hc3NpZ24oJ2RyYXdfY291cG9uX3RleHQnLCAkdGhpcy0+TGFuZygnZHJhd19jb3Vwb24nKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3dpbm5lcl9wX3RleHQnLCAkdGhpcy0+TGFuZygnd2lubmVyX3AnKSk7CiRzbWFydHktPmFzc2lnbignbmFtZV90ZXh0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiRzbWFydHktPmFzc2lnbignZW1haWxfdGV4dCcsICR0aGlzLT5MYW5nKCdlbWFpbCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdwaG9uZV90ZXh0JywgJHRoaXMtPkxhbmcoJ3Bob25lJykpOwokc21hcnR5LT5hc3NpZ24oJ2NvdXBvbl9jb2RlX3RleHQnLCAkdGhpcy0+TGFuZygnY291cG9uX2NvZGUnKSk7CiRzbWFydHktPmFzc2lnbignd2l0aGRyYXdfY291cG9uX3RleHQnLCAkdGhpcy0+TGFuZygnd2l0aGRyYXdfY291cG9uJykpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNldHVwIGZvcm0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGZvcm1fcGFyYW1zID0gYXJyYXkoKTsKJGZvcm1fcGFyYW1zWydhY3RpdmVfdGFiJ10gPSAnd2lubmVyJzsKCmlmIChpc3NldCgkcGFyYW1zWyd3aW5uZXJfbWVzc2FnZSddKSkgewogICAgICAgICR3aW5uZXJfbWVzc2FnZSA9IGV4cGxvZGUoIiwiLCAkcGFyYW1zWyd3aW5uZXJfbWVzc2FnZSddKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3dpbm5lcl9tZXNzYWdlJywkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJHdpbm5lcl9tZXNzYWdlWzBdLCBhcnJheSgkdGhpcy0+TGFuZygkd2lubmVyX21lc3NhZ2VbMV0pKSkpKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFByb2Nlc3NUZW1wbGF0ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3dpbm5lcl9saXN0LnRwbCcpOwoJCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPkRvY3VtZW50YXRpb248L2gyPgoKVGhlIFVwQ291cG9uIG1vZHVsZSBoYXMgYmVlbiBkZXZlbG9wZWQgZm9yIGEgc2hvcCBvd25lcnMgYXNzb2NpYXRpb24uIEVhY2ggeWVhciB0aGUgYXNzb2NpYXRpb24gb3JnYW5pemVzIGEgbG90dGVyeSBhbW9uZ3N0IGl0cyBjdXN0b21lcnMuIFdoZW4gb25lIHNwZW5kcyBhbiB4IGFtb3VudCBpbiBhIHBhcnRpY2lwYXRpbmcgc2hvcCwgb25lIHJlY2VpdmVzIGEgdm91Y2hlciB3aXRoIGEgJ0NvdXBvbiBDb2RlJy4gCgpUbyBqb2luIHRoZSBsb3R0ZXJ5LCB0aGUgY3VzdG9tZXIgaGFzIHRvIGVudGVyIHRoZSAnQ291cG9uIENvZGUnIG9uIHRoZSBhc3Nvc2lhdGlvbi13ZWJzaXRlLCB0b2dldGhlciB3aXRoIG90aGVyIGRldGFpbHMsIHN1Y2ggYXMgbmFtZSBhbmQgYWRkcmVzcy4gPGJyIC8+PGJyIC8+Cgo8aDI+VGhlIGFkbWluIGludGVyZmFjZSBvZiB0aGlzIG1vZHVsZSBoYXMgdmFyaW91cyBmdW5jdGlvbmFsaXRpZXM6PC9oMj48YnIgLz4KCjxiPkNvdXBvbiBBY3Rpb25zPC9iPiAtIHRhYiA8YnIgLz4KCkhlcmUgeW91IGNhbiBhZGQgc2V2ZXJhbCBsb3R0ZXJpZXMuIDxiciAvPgoKU3VjaCBhcyBhIHN1bW1lciBsb3R0ZXJ5IG9yIGEgd2ludGVyIGxvdHRlcnkuIEVhY2ggbG90dGVyeSBuZWVkcyB0byBoYXZlIGEgdGl0bGUsIGFsaWFzLCBkZXNjcmlwdGlvbiwgc3RhcnRkYXRlLCBlbmRkYXRlIGFuZCBzdGF0dXMuIDxiciAvPjxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVGhlIHN0YXJ0ZGF0ZSBvZiB0aGUgJ0NvdXBvbiBBY3Rpb24nIGFsd2F5cyBoYXMgdG8gYmUgYW4gZWFybGllciBkYXRlIHRoYW4gdGhlIGVuZGRhdGUuIDxiciAvPjxiciAvPgoKPGI+Q291cG9uIFBlcmlvZHM8L2I+IC0gdGFiIDxiciAvPgoKSGVyZSB0aGUgcGVyaW9kcyBpbiB3aGljaCB0aGUgZHJhdyhzKSB0YWtlKHMpIHBsYWNlIGNhbiBiZSBhZGRlZC4gPGJyIC8+CgpUaGUgc3VtbWVyIGxvdHRlcnkgY291bGQgZm9yIGluc3RhbmNlIGhhdmUgZm91ciB3ZWVrbHkgZHJhd3MgYW5kIGEgZmluYWwgZHJhdyBhdCB0aGUgZW5kIG9mIHRoZSBwZXJpb2QuIEVhY2ggJyBDb3Vwb24gUGVyaW9kJyBuZWVkcyB0byBoYXZlIGEgY291cG9uX2FjdGllIChhcyBzdWJtaXR0ZWQgdW5kZXIgJyBDb3Vwb24gQWN0aW9ucycpLCB0aXRsZSwgc3RhcnRkYXRlLCBlbmRkYXRlLCBGaW5hbCBkcmF3ICh5ZXMvbm8pIGFuZCBzdGF0dXMuIDxiciAvPjxiciAvPgoKPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVGhlIHN0YXJ0ZGF0ZSBvZiB0aGUgJ0NvdXBvbiBQZXJpb2QnIGFsd2F5cyBoYXMgdG8gYmUgYW4gZWFybGllciBkYXRlIHRoYW4gdGhlIGVuZGRhdGUgYW5kIGhhcyB0byBvY2N1ciB3aXRoaW4gdGhlIHN0YXJ0LSBhbmQgZW5kZGF0ZSBvZiB0aGUgJyBDb3Vwb24gQWN0aW9uJy48YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IFVzdWFsbHkgYWxsIGN1c3RvbWVycyBwYXJ0aWNpcGF0aW5nIGluIHRoZSBsb3R0ZXJ5IGhhdmUgYSBjaGFuY2Ugb24gd2lubmluZyB0aGUgZmluYWwgZHJhdy4gVGhlcmVmb3JlIHRoZSBwZXJpb2Qgb2YgdGhlICdGaW5hbCBkcmF3JyB1c3VhbGx5IHN0YXJ0cyBhdCB0aGUgc3RhcnRkYXRlIG9mIHRoZSAnQ291cG9uIEFjdGlvbicgdXAgYW5kIHVudGlsIHRoZSBlbmRkYXRlIG9mIHRoZSAnQ291cG9uIEFjdGlvbicuICA8YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+VGlwPC9iPjwvZm9udD4gTWFrZSBzdXJlIHRoYXQgdGhlIHN0YXJ0ZGF0ZSBzdGFydHMgYXQgMDA6MDA6MDAgYW5kIGVuZHMgYXQgMjM6NTk6NTkuIEluIGRvaW5nIHNvLCBhIGxvdHRlcnkgb3IgcGVyaW9kIHJ1bnMgZm9yIDI0IGhvdXJzIChhbiBlbnRpcmUgY2FsZW5kZXIgZGF5KS48YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+VGlwPC9iPjwvZm9udD4gVGhlICdDb3Vwb24gUGVyaW9kJyBpcyBieSBkZWZhdWx0IHNvcnRlZCBieSBlbmRkYXRlLiBCeSBhZGp1c3RpbmcgdGhlIGVuZGRhdGUtdGltZSB3aXRoIGp1c3Qgb25lIHNlY29uZCwgdGhlIG9yZGVyIGlzIGFkanVzdGVkIGFzIHdlbGwuIEl0IHdvdWxkIGJlIHN0cmFuZ2UgaWYgLSBhdCB0aGUgZnJvbnRlbmQgLSB0aGUgRmluYWwgZHJhdyBpcyBzaG93biBwcmlvciB0byB0aGUgbGFzdCBkcmF3KG5vdCB0aGUgRmluYWwgZHJhdykuIFRoZXJlZm9yZSBpdCBpcyBhZHZpc2VkIHRvIC0gaWYgdGhlIEZpbmFsIGRyYXcgaGFzIHRoZSBzYW1lIGVuZGRhdGUgYXMgdGhlIGxhc3QgKG5vbi1maW5hbCkgZHJhdyAtIGFkanVzdCB0aGUgZW5kZGF0ZS10aW1lIG9mIG9uZSBvZiB0aGVtLCBpbiBvcmRlciB0byBoYXZlIHRvIHJpZ2h0IG9yZGVyIHNob3duIGF0IHRoZSBmcm9udGVuZC48YnIgLz48YnIgLz4KCjxiPlByaXplczwvYj4gLSB0YWIgPGJyIC8+CgpQcml6ZXMgY2FuIGJlIGNvbm5lY3RlZCB0byBlYWNoICdDb3Vwb24gQWN0aW9uJyBvciAnQ291cG9uIFBlcmlvZCcuIFdoZW4gYWRkaW5nIGEgcHJpemUsIENvdXBvbiBDb2RlLCBDb3Vwb24gQWN0aW9uLCBQcml6ZSBjb2RlLCB0aXRsZSwgZGVzY3JpcHRpb24sIG51bWJlciBhbmQgc3RhdHVzIGhhdmUgdG8gYmUgZW50ZXJlZC4gPGJyIC8+PGJyIC8+Cgo8Yj5XaW5uZXJzPC9iPiAtIHRhYiA8YnIgLz4KCk91dCBvZiB0aGUgcmVnaXN0ZXJlZCBjb3Vwb24gY29kZXMsIG9uZSBvciBtb3JlIHdpbm5lcnMgY2FuIGJlIGRyYXduLiBBZnRlciBzZWxlY3RpbmcgJ0NvdXBvbiBBY3Rpb24nLCAnQ291cG9uIFBlcmlvZCcgYW5kIHByaXplLCBvbmUgY2FuIGNsaWNrIG9uIHRoZSAiIERyYXcgY291cG9uJyBidXR0b24uIFRoZSB3aW5uZXIgaXMgcmFuZG9tbHkgZHJhd24gZnJvbSB0aGUgZGF0YWJhc2Ugd2l0aCByZWdpc3RlcmVkIGNvdXBvbiBjb2RlcyBhbmQgaXMgc2hvd24uIDxiciAvPjxiciAvPgoKPGI+U3RhdGlzdGljczwvYj4gLSB0YWIgPGJyIC8+CgpXaGVuIHJlZ2lzdGVyaW5nIGEgY291cG9uIGNvZGUsIGEgdGltZXN0YW1wIGlzIGdlbmVyYXRlZCBhbmQgc2F2ZWQuIEJ5IHVzaW5nIHRoaXMgdGltZXN0YW1wIHRvZ2V0aGVyIHdpdGggdGhlIHN0YXJ0LSBhbmQgZW5kZGF0ZSBvZiBhICcgQ291cG9uIEFjdGlvbicgYW5kICdDb3Vwb24gUGVyaW9kIHRoZSBzdGF0aXN0aWNzIGFyZSBjcmVhdGVkLiA8YnIgLz48YnIgLz4KCjxiPlRlbXBsYXRlczwvYj4gLSB0YWIgPGJyIC8+CgpUaGUgVXBDb3Vwb24gbW9kdWxlIGhhcyB2YXJpb3VzIHRlbXBsYXRlcywgc3VjaCBhcyB0aGUgdGVtcGxhdGUgUmVnaXN0cmF0aW9uLCBXaW5uZXIgYW5kIFByaXplcy4gVGhlIHRlbXBsYXRlcyBhcmUgdXNlZCBmb3IgdGhlIGZyb250ZW5kLiBXaGVuIGFkZGluZyBhIHRlbXBsYXRlcywgYSBuYW1lLCB0ZW1wbGF0ZSB0eXBlIGFuZCB0ZW1wbGF0ZSBjb2RlIGNhbiBiZSBlbnRlcmVkLiA8YnIgLz48YnIgLz4KCkJ5IHVzaW5nIHRoZSBmYWN0b3J5IHNldHRpbmdzIGJ1dHRvbiwgdGhlIHRlbXBsYXRlIGNvZGUgZmllbGQgYXV0b21hdGljYWxseSBpcyBzZXQgdG8gdXNlIHRoZSBkZWZhdWx0IHRlbXBsYXRlLiA8YnIgLz48YnIgLz4KCjxiPlByZWZlcmVuY2VzPC9iPiAtIHRhYiA8YnIgLz4KCkEgY3VzdG9tZXIgd2hvIGhhcyByZWdpc3RlcmVkIGhpcyAnQ291cG9uIENvZGUnLCB3aWxsIHJlY2VpdmUgYSBjb25maXJtYXRpb24gYnkgZS1tYWlsLCBpZiBhbGwgZS1tYWlsIHByZWZlcmVuY2VzIGFyZSBjb3JyZWNsdHkgY29tcGxldGVkLiA8YnIgLz48YnIgLz4KCjxoMj5BY3Rpb25zPC9oMj4KCjxjb2RlPntVcENvdXBvbiBhY3Rpb249J3Nob3dfcmVnaXN0ZXInfTwvY29kZT4gLSBTaG93IHRoZSByZWdpc3RyYXRpb24gcGFnZS4gPGJyIC8+Cjxjb2RlPntVcENvdXBvbiBhY3Rpb249J3Nob3dfcHJpemUnfTwvY29kZT4gLSBTaG93IHRoZSBwcml6ZSBwYWdlLiA8YnIgLz4KPGNvZGU+e1VwQ291cG9uIGFjdGlvbj0nc2hvd193aW5uZXInfTwvY29kZT4gLSBTaG93IHRoZSB3aW5uZXIgcGFnZS4gPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyBhY3Rpb24gaXMgc3BlY2lmaWVkLCBhIHdhcm5pbmcgd2lsbCBiZSBzaG93bi4gPGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBGb3IgdGhlICdzaG93X3JlZ2lzdGVyJyBhY3Rpb24gaXQncyBwb3NzaWJsZSB0byBjaGVjayBmaWVsZCB2YWx1ZXMgdmlhIEphdmFTY3JpcHQuIFRvZG8gc28gYmUgc3VyZSB0byBsb2FkIGpxdWVyeS52YWxpZGF0ZS5qcyBiZWZvcmUgeW91IGNhbGwgdGhlIFVwQ291cG9uIG1vZHVsZS4gWW91IGNhbiBmaW5kIHRoaXMgZmlsZSBpbnRvIHRoZSBtb2R1bGVzL1VwQ291cG9uL2pzIGZvbGRlci48YnIgLz48YnIgLz4KCjxiPiogQmVmb3JlIHRoZSBjb3Vwb24gYWN0aW9uIHRha2VzIHBsYWNlIHRoZSB1cGNvdXBvbl9jb2RlIGRhdGFiYXNlIG11c3QgYmUgZmlsbGVkIHdpdGggY29kZXMuIFRoZSB3ZWJkZXZlbG9wZXIgc2hvdWxkIHdyaXRlIGEgcXVlcnkgdG8gc2V0IGNvdXBvbl9wcml6ZV9pZCB0byAnMCcgYW5kIGNvdXBvbl9jb2RlIHRvIGEgMTYgZGlnaXQgY29kZS4gRm9yIGV4YW1wbGU6IElOU0VSVCBJTlRPIGNtc19tb2R1bGVfdXBjb3Vwb25fY29kZSBWQUxVRVMgKCcnLCAnMCcsICcnLCAnMDAwMDAwMDAwMDAwMDAwMCcsICcnKTwvYj48YnIgLz4KCjxiciAvPgoKPGgyPlRlbXBsYXRlczwvaDI+Cgo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSdzaG93X3JlZ2lzdGVyJyB0ZW1wbGF0ZT0nbmFtZV9vZl9yZWdpc3Rlcl90ZW1wbGF0ZSd9PC9jb2RlPiA8YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IElmIG5vIHRlbXBsYXRlIGlzIHNwZWNpZmllZCwgb3IgdGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlIGlzIHVua25vd24sIHRoZSBkZWZhdWx0IHRlbXBsYXRlIHdpbGwgYmUgdXNlZC4gPC9iciA+PC9iciA+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyBzdGFuZGFyZCB0ZW1wbGF0ZSBjYW4gYmUgZm91bmQsIHRoZSBkZWZhdWx0IHRlbXBsYXRlIChmYWN0b3J5IHNldHRpbmdzKSBzaGFsbCBiZSB1c2VkLiA8YnIgLz48YnIgLz4KCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IFRoZSBhdmFpbGFibGUgdGVtcGxhdGVzIGNhbiBiZSBmb3VuZCB1bmRlciB0aGUgJ1RlbXBsYXRlcycgIHRhYi4gPGJyIC8+Cgo8aDI+Y291cG9uX2FjdGlvbl9pZDwvaDI+Cgo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSdzaG93X3ByaXplJyBjb3Vwb25fYWN0aW9uX2lkPScxJ308L2NvZGU+IC0gU2hvdyBhbGwgcHJpemVzIGJlbG9uZ2luZyB0byBjb3Vwb25fYWN0aW9uX2lkICcxJy4gPGJyIC8+PGJyIC8+Cgo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBUaGUgJ2NvdXBvbl9hY3Rpb25faWQnIGNhbiBiZSBmb3VuZCB1bmRlciAnQ291cG9uIEFjdGlvbnMnIHRhYi4gSXQgaXMgc2hvd24gaW4gZnJvbnQgb2YgdGhlIHRpdGxlIG9mIGVhY2ggc3BlY2lmaWMgYWN0aW9uLiAnQ291cG9uIEFjdGlvbnMnIHdoaWNoIGFyZSBzZXQgdG8gaW5hY3RpdmUgYXJlIG5vdCBzaG93bi4KPGJyIC8+Cgo8aDI+U3VwcG9ydDwvaDI+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yKHMpLCBhcm5vdWQgZXQgYWxsIGNhbiBzb21ldGltZXMgYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIAo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQKb2YgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+bGljZW5zZTwvYT4gZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoKPGgyPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDI+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMS0yMDEyLCBBcm5vdWQgdmFuIFN1c3RlcmVuIDxhIGhyZWY9Im1haWx0bzphcm5vdWRAdXBzZXJ2aWNlLm5sIj4mbHQ7YXJub3VkQHVwc2VydmljZS5ubCZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+Cgo8YnIvPjxzdHJvbmc+U3VwcG9ydCBtb3JlIG1vZHMgbGlrZSB0aGlzOjwvc3Ryb25nPgoKPHA+Cjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZW5jcnlwdGVkIiB2YWx1ZT0iLS0tLS1CRUdJTiBQS0NTNy0tLS0tTUlJSFR3WUpLb1pJaHZjTkFRY0VvSUlIUURDQ0J6d0NBUUV4Z2dFd01JSUJMQUlCQURDQmxEQ0JqakVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnVEFrTkJNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01SUXdFZ1lEVlFRS0V3dFFZWGxRWVd3Z1NXNWpMakVUTUJFR0ExVUVDeFFLYkdsMlpWOWpaWEowY3pFUk1BOEdBMVVFQXhRSWJHbDJaVjloY0dreEhEQWFCZ2txaGtpRzl3MEJDUUVXRFhKbFFIQmhlWEJoYkM1amIyMENBUUF3RFFZSktvWklodmNOQVFFQkJRQUVnWUFuTFd2allpMmNRWUM0VHhZbFNobWI4TDhtVGYzeHdWaUpVNWt5emFKVlJrQm5XL0pCRlQwUkNvN1JGR1dRWUxPSzZCQjZuZzk2bmMxSE9hQ3htSDZpcTJNSnFTditFODExaENNZUE4eFo3cXpKdHdDODZOaEZzbnlZbm1veFl0VFlxLzBOZ3BkL2ozVDlON0U5WFUzMENFSXZWbzZDMGZ4T3ZlQW5LSitqWWpFTE1Ba0dCU3NPQXdJYUJRQXdnY3dHQ1NxR1NJYjNEUUVIQVRBVUJnZ3Foa2lHOXcwREJ3UUlFbVpWb1RoNklVV0FnYWd4eXpYOVN6d295T2E0ZmR6OTJzN1pybXcxNUdidGVMaXpBbWhyQ0JhVU9zM1MxaVYzZU5TTiswSGtUcUF2b0RKYnZoMGsxeW1qWmFQazA1YlVhWTE0anN0WThLK2pxMWlTVlRpSWNIWXN5Y2pWQUpPRjdGdk52ZFBodmZyTGN3MGRXRDJaaTZuckNCZnVRd2pwdmJTOUJ3K3p1d2prLytVRHVCbDNQc0ttUUxUMU03a0JJaVJTcDFtVFh1eUQrdjNhYzZLL0VIem9ucFpnck9qUHQvcGZpTGY2R3RYeEhXMmdnZ09ITUlJRGd6Q0NBdXlnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQ0JqakVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnVEFrTkJNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01SUXdFZ1lEVlFRS0V3dFFZWGxRWVd3Z1NXNWpMakVUTUJFR0ExVUVDeFFLYkdsMlpWOWpaWEowY3pFUk1BOEdBMVVFQXhRSWJHbDJaVjloY0dreEhEQWFCZ2txaGtpRzl3MEJDUUVXRFhKbFFIQmhlWEJoYkM1amIyMHdIaGNOTURRd01qRXpNVEF4TXpFMVdoY05NelV3TWpFek1UQXhNekUxV2pDQmpqRUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWtOQk1SWXdGQVlEVlFRSEV3MU5iM1Z1ZEdGcGJpQldhV1YzTVJRd0VnWURWUVFLRXd0UVlYbFFZV3dnU1c1akxqRVRNQkVHQTFVRUN4UUtiR2wyWlY5alpYSjBjekVSTUE4R0ExVUVBeFFJYkdsMlpWOWhjR2t4SERBYUJna3Foa2lHOXcwQkNRRVdEWEpsUUhCaGVYQmhiQzVqYjIwd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNRkhUdDM4Uk14TFhKeU8yU21TK05kbDcyVDdvS0o0dTR1dys2YXdudEFMV2gwM1Bld21JSnV6YkFMU2NzVFM0c1pvUzFmS2NpQkdvaDExZ0lmSHp5bHZrZE5lL2hKbDY2L1JHcXJqNXJGYjA4c0FBQk5UekRUaXFxTnBKZUJzWXMvYzJhaUdvenB0WDJSbG5Ca3RIK1NVTnBBYWpXNzI0TnYyV3ZoaWY2c0ZBZ01CQUFHamdlNHdnZXN3SFFZRFZSME9CQllFRkphZmZMdkdieGU5V1Q5UzF3b2I3QkRXWkpSck1JRzdCZ05WSFNNRWdiTXdnYkNBRkphZmZMdkdieGU5V1Q5UzF3b2I3QkRXWkpScm9ZR1VwSUdSTUlHT01Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQk1DUTBFeEZqQVVCZ05WQkFjVERVMXZkVzUwWVdsdUlGWnBaWGN4RkRBU0JnTlZCQW9UQzFCaGVWQmhiQ0JKYm1NdU1STXdFUVlEVlFRTEZBcHNhWFpsWDJObGNuUnpNUkV3RHdZRFZRUURGQWhzYVhabFgyRndhVEVjTUJvR0NTcUdTSWIzRFFFSkFSWU5jbVZBY0dGNWNHRnNMbU52YllJQkFEQU1CZ05WSFJNRUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUlGZk9sYWFnRnJsNzEranE2T0tpZGJXRlNFK1E0RnFST3ZkZ0lPTnRoKzhrU0svL1kvNGlodUU0WW12em41Y2VFM1MvaUJTUVFNanl2YitzMlRXYlFZRHdjcDEyOU9QSWJEOWVwZHI0dEpPVU5pU29qdzdCSHdZUmlQaDU4UzF4R2xGZ0hGWHdyRUJiM2RnTmJNVWErdTRxZWN0c01BWHBWSG5EOXdJeWZtSE1ZSUJtakNDQVpZQ0FRRXdnWlF3Z1k0eEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlFd0pEUVRFV01CUUdBMVVFQnhNTlRXOTFiblJoYVc0Z1ZtbGxkekVVTUJJR0ExVUVDaE1MVUdGNVVHRnNJRWx1WXk0eEV6QVJCZ05WQkFzVUNteHBkbVZmWTJWeWRITXhFVEFQQmdOVkJBTVVDR3hwZG1WZllYQnBNUnd3R2dZSktvWklodmNOQVFrQkZnMXlaVUJ3WVhsd1lXd3VZMjl0QWdFQU1Ba0dCU3NPQXdJYUJRQ2dYVEFZQmdrcWhraUc5dzBCQ1FNeEN3WUpLb1pJaHZjTkFRY0JNQndHQ1NxR1NJYjNEUUVKQlRFUEZ3MHhNVEV3TWpJeE1USXdNelJhTUNNR0NTcUdTSWIzRFFFSkJERVdCQlJsRjd2Vlg1TFgyWDVJdFk3Y213QS9SWlRBdFRBTkJna3Foa2lHOXcwQkFRRUZBQVNCZ0lyeVlla0hoU3IrZldIZW1VL1g2c1lxZmRCdVk0OWQ3K2tDSXBtZGJ0S1JaUyt6Qy84MVdoejlQTGhodU5sV1NyeFNjeW1RZXgrVm5GZ1NnZnJHUDE3NE56d0tJczhyZEtZeUhwQ2hOWmxWUDdwSmVBcmJ0dW5kVWlzdnJwYzh3UHhscmpOQ014UkUvck5YSGVQbUd1dUtidlJqaTNqMG5JV2ZrRjZ1QnpjTy0tLS0tRU5EIFBLQ1M3LS0tLS0KIj4KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbG9iamVjdHMuY29tL2VuX1VTL2kvYnRuL2J0bl9kb25hdGVDQ19MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lISI+CjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9ubF9OTC9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgo8L2Zvcm0+PGJyLz48YnIvPgoKPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4KCjxiciAvPgo=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/arrow_form_error.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhBQAJAIAAAOQAdP///yH5BAEAAAEALAAAAAAFAAkAAAIMjAMHidsLXTRQMVoAADs=]]></data>
	</file>
	<file>
	  <filename>/images/mainform-checkbox-bg.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFgAWAJEAAP///8zMzP///wAAACH5BAEAAAIALAAAAAAWABYAAAIkBGJ4yesKW3yy0juz1Xj7DnLiN4bkaablirJqC7+yS8f1bFcFADs=]]></data>
	</file>
	<file>
	  <filename>/images/mainform-radio-bg.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFgAWALMAAP////n5+fb29uXl5dvb29jY2NTU1MzMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAWABYAAARTEMgppLGyzj2HPF8IBNxEiCCQpmWBvoC7nSq8SiTg1fzdZ7YgQOMrCo0/3iWJTC2bx2jyKXVWr0wREbvNJnc5KI82kYllJTGZE4btShQMYKnZRAAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/pattern-grey.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhAwADAIAAAP///8zMzCwAAAAAAwADAAACBARyCQUAOw==]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jquery-1.7.1.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSB2MS43LjEganF1ZXJ5LmNvbSB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwooZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjeShhKXtyZXR1cm4gZi5pc1dpbmRvdyhhKT9hOmEubm9kZVR5cGU9PT05P2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OiExfWZ1bmN0aW9uIGN2KGEpe2lmKCFja1thXSl7dmFyIGI9Yy5ib2R5LGQ9ZigiPCIrYSsiPiIpLmFwcGVuZFRvKGIpLGU9ZC5jc3MoImRpc3BsYXkiKTtkLnJlbW92ZSgpO2lmKGU9PT0ibm9uZSJ8fGU9PT0iIil7Y2x8fChjbD1jLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLGNsLmZyYW1lQm9yZGVyPWNsLndpZHRoPWNsLmhlaWdodD0wKSxiLmFwcGVuZENoaWxkKGNsKTtpZighY218fCFjbC5jcmVhdGVFbGVtZW50KWNtPShjbC5jb250ZW50V2luZG93fHxjbC5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGNtLndyaXRlKChjLmNvbXBhdE1vZGU9PT0iQ1NTMUNvbXBhdCI/IjwhZG9jdHlwZSBodG1sPiI6IiIpKyI8aHRtbD48Ym9keT4iKSxjbS5jbG9zZSgpO2Q9Y20uY3JlYXRlRWxlbWVudChhKSxjbS5ib2R5LmFwcGVuZENoaWxkKGQpLGU9Zi5jc3MoZCwiZGlzcGxheSIpLGIucmVtb3ZlQ2hpbGQoY2wpfWNrW2FdPWV9cmV0dXJuIGNrW2FdfWZ1bmN0aW9uIGN1KGEsYil7dmFyIGM9e307Zi5lYWNoKGNxLmNvbmNhdC5hcHBseShbXSxjcS5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2NbdGhpc109YX0pO3JldHVybiBjfWZ1bmN0aW9uIGN0KCl7Y3I9Yn1mdW5jdGlvbiBjcygpe3NldFRpbWVvdXQoY3QsMCk7cmV0dXJuIGNyPWYubm93KCl9ZnVuY3Rpb24gY2ooKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1mdW5jdGlvbiBjaSgpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiBjYyhhLGMpe2EuZGF0YUZpbHRlciYmKGM9YS5kYXRhRmlsdGVyKGMsYS5kYXRhVHlwZSkpO3ZhciBkPWEuZGF0YVR5cGVzLGU9e30sZyxoLGk9ZC5sZW5ndGgsaixrPWRbMF0sbCxtLG4sbyxwO2ZvcihnPTE7ZzxpO2crKyl7aWYoZz09PTEpZm9yKGggaW4gYS5jb252ZXJ0ZXJzKXR5cGVvZiBoPT0ic3RyaW5nIiYmKGVbaC50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbaF0pO2w9ayxrPWRbZ107aWYoaz09PSIqIilrPWw7ZWxzZSBpZihsIT09IioiJiZsIT09ayl7bT1sKyIgIitrLG49ZVttXXx8ZVsiKiAiK2tdO2lmKCFuKXtwPWI7Zm9yKG8gaW4gZSl7aj1vLnNwbGl0KCIgIik7aWYoalswXT09PWx8fGpbMF09PT0iKiIpe3A9ZVtqWzFdKyIgIitrXTtpZihwKXtvPWVbb10sbz09PSEwP249cDpwPT09ITAmJihuPW8pO2JyZWFrfX19fSFuJiYhcCYmZi5lcnJvcigiTm8gY29udmVyc2lvbiBmcm9tICIrbS5yZXBsYWNlKCIgIiwiIHRvICIpKSxuIT09ITAmJihjPW4/bihjKTpwKG8oYykpKX19cmV0dXJuIGN9ZnVuY3Rpb24gY2IoYSxjLGQpe3ZhciBlPWEuY29udGVudHMsZj1hLmRhdGFUeXBlcyxnPWEucmVzcG9uc2VGaWVsZHMsaCxpLGosaztmb3IoaSBpbiBnKWkgaW4gZCYmKGNbZ1tpXV09ZFtpXSk7d2hpbGUoZlswXT09PSIqIilmLnNoaWZ0KCksaD09PWImJihoPWEubWltZVR5cGV8fGMuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpKTtpZihoKWZvcihpIGluIGUpaWYoZVtpXSYmZVtpXS50ZXN0KGgpKXtmLnVuc2hpZnQoaSk7YnJlYWt9aWYoZlswXWluIGQpaj1mWzBdO2Vsc2V7Zm9yKGkgaW4gZCl7aWYoIWZbMF18fGEuY29udmVydGVyc1tpKyIgIitmWzBdXSl7aj1pO2JyZWFrfWt8fChrPWkpfWo9anx8a31pZihqKXtqIT09ZlswXSYmZi51bnNoaWZ0KGopO3JldHVybiBkW2pdfX1mdW5jdGlvbiBjYShhLGIsYyxkKXtpZihmLmlzQXJyYXkoYikpZi5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxiRS50ZXN0KGEpP2QoYSxlKTpjYShhKyJbIisodHlwZW9mIGU9PSJvYmplY3QifHxmLmlzQXJyYXkoZSk/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoIWMmJmIhPW51bGwmJnR5cGVvZiBiPT0ib2JqZWN0Iilmb3IodmFyIGUgaW4gYiljYShhKyJbIitlKyJdIixiW2VdLGMsZCk7ZWxzZSBkKGEsYil9ZnVuY3Rpb24gYl8oYSxjKXt2YXIgZCxlLGc9Zi5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihkIGluIGMpY1tkXSE9PWImJigoZ1tkXT9hOmV8fChlPXt9KSlbZF09Y1tkXSk7ZSYmZi5leHRlbmQoITAsYSxlKX1mdW5jdGlvbiBiJChhLGMsZCxlLGYsZyl7Zj1mfHxjLmRhdGFUeXBlc1swXSxnPWd8fHt9LGdbZl09ITA7dmFyIGg9YVtmXSxpPTAsaj1oP2gubGVuZ3RoOjAsaz1hPT09YlQsbDtmb3IoO2k8aiYmKGt8fCFsKTtpKyspbD1oW2ldKGMsZCxlKSx0eXBlb2YgbD09InN0cmluZyImJigha3x8Z1tsXT9sPWI6KGMuZGF0YVR5cGVzLnVuc2hpZnQobCksbD1iJChhLGMsZCxlLGwsZykpKTsoa3x8IWwpJiYhZ1siKiJdJiYobD1iJChhLGMsZCxlLCIqIixnKSk7cmV0dXJuIGx9ZnVuY3Rpb24gYlooYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7dHlwZW9mIGIhPSJzdHJpbmciJiYoYz1iLGI9IioiKTtpZihmLmlzRnVuY3Rpb24oYykpe3ZhciBkPWIudG9Mb3dlckNhc2UoKS5zcGxpdChiUCksZT0wLGc9ZC5sZW5ndGgsaCxpLGo7Zm9yKDtlPGc7ZSsrKWg9ZFtlXSxqPS9eXCsvLnRlc3QoaCksaiYmKGg9aC5zdWJzdHIoMSl8fCIqIiksaT1hW2hdPWFbaF18fFtdLGlbaj8idW5zaGlmdCI6InB1c2giXShjKX19fWZ1bmN0aW9uIGJDKGEsYixjKXt2YXIgZD1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGU9Yj09PSJ3aWR0aCI/Yng6YnksZz0wLGg9ZS5sZW5ndGg7aWYoZD4wKXtpZihjIT09ImJvcmRlciIpZm9yKDtnPGg7ZysrKWN8fChkLT1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK2VbZ10pKXx8MCksYz09PSJtYXJnaW4iP2QrPXBhcnNlRmxvYXQoZi5jc3MoYSxjK2VbZ10pKXx8MDpkLT1wYXJzZUZsb2F0KGYuY3NzKGEsImJvcmRlciIrZVtnXSsiV2lkdGgiKSl8fDA7cmV0dXJuIGQrInB4In1kPWJ6KGEsYixiKTtpZihkPDB8fGQ9PW51bGwpZD1hLnN0eWxlW2JdfHwwO2Q9cGFyc2VGbG9hdChkKXx8MDtpZihjKWZvcig7ZzxoO2crKylkKz1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK2VbZ10pKXx8MCxjIT09InBhZGRpbmciJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJib3JkZXIiK2VbZ10rIldpZHRoIikpfHwwKSxjPT09Im1hcmdpbiImJihkKz1wYXJzZUZsb2F0KGYuY3NzKGEsYytlW2ddKSl8fDApO3JldHVybiBkKyJweCJ9ZnVuY3Rpb24gYnAoYSxiKXtiLnNyYz9mLmFqYXgoe3VybDpiLnNyYyxhc3luYzohMSxkYXRhVHlwZToic2NyaXB0In0pOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmYsIi8qJDAqLyIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBibyhhKXt2YXIgYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2JoLmFwcGVuZENoaWxkKGIpLGIuaW5uZXJIVE1MPWEub3V0ZXJIVE1MO3JldHVybiBiLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gYm4oYSl7dmFyIGI9KGEubm9kZU5hbWV8fCIiKS50b0xvd2VyQ2FzZSgpO2I9PT0iaW5wdXQiP2JtKGEpOmIhPT0ic2NyaXB0IiYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiJiZmLmdyZXAoYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKSxibSl9ZnVuY3Rpb24gYm0oYSl7aWYoYS50eXBlPT09ImNoZWNrYm94Inx8YS50eXBlPT09InJhZGlvIilhLmRlZmF1bHRDaGVja2VkPWEuY2hlY2tlZH1mdW5jdGlvbiBibChhKXtyZXR1cm4gdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTp0eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsIT0idW5kZWZpbmVkIj9hLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKTpbXX1mdW5jdGlvbiBiayhhLGIpe3ZhciBjO2lmKGIubm9kZVR5cGU9PT0xKXtiLmNsZWFyQXR0cmlidXRlcyYmYi5jbGVhckF0dHJpYnV0ZXMoKSxiLm1lcmdlQXR0cmlidXRlcyYmYi5tZXJnZUF0dHJpYnV0ZXMoYSksYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoYz09PSJvYmplY3QiKWIub3V0ZXJIVE1MPWEub3V0ZXJIVE1MO2Vsc2UgaWYoYyE9PSJpbnB1dCJ8fGEudHlwZSE9PSJjaGVja2JveCImJmEudHlwZSE9PSJyYWRpbyIpe2lmKGM9PT0ib3B0aW9uIiliLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkO2Vsc2UgaWYoYz09PSJpbnB1dCJ8fGM9PT0idGV4dGFyZWEiKWIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlfWVsc2UgYS5jaGVja2VkJiYoYi5kZWZhdWx0Q2hlY2tlZD1iLmNoZWNrZWQ9YS5jaGVja2VkKSxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSk7Yi5yZW1vdmVBdHRyaWJ1dGUoZi5leHBhbmRvKX19ZnVuY3Rpb24gYmooYSxiKXtpZihiLm5vZGVUeXBlPT09MSYmISFmLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxnPWYuX2RhdGEoYSksaD1mLl9kYXRhKGIsZyksaT1nLmV2ZW50cztpZihpKXtkZWxldGUgaC5oYW5kbGUsaC5ldmVudHM9e307Zm9yKGMgaW4gaSlmb3IoZD0wLGU9aVtjXS5sZW5ndGg7ZDxlO2QrKylmLmV2ZW50LmFkZChiLGMrKGlbY11bZF0ubmFtZXNwYWNlPyIuIjoiIikraVtjXVtkXS5uYW1lc3BhY2UsaVtjXVtkXSxpW2NdW2RdLmRhdGEpfWguZGF0YSYmKGguZGF0YT1mLmV4dGVuZCh7fSxoLmRhdGEpKX19ZnVuY3Rpb24gYmkoYSxiKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJ0YWJsZSIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24gVShhKXt2YXIgYj1WLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfWZ1bmN0aW9uIFQoYSxiLGMpe2I9Ynx8MDtpZihmLmlzRnVuY3Rpb24oYikpcmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7dmFyIGU9ISFiLmNhbGwoYSxkLGEpO3JldHVybiBlPT09Y30pO2lmKGIubm9kZVR5cGUpcmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGE9PT1iPT09Y30pO2lmKHR5cGVvZiBiPT0ic3RyaW5nIil7dmFyIGQ9Zi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZVR5cGU9PT0xfSk7aWYoTy50ZXN0KGIpKXJldHVybiBmLmZpbHRlcihiLGQsIWMpO2I9Zi5maWx0ZXIoYixkKX1yZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gZi5pbkFycmF5KGEsYik+PTA9PT1jfSl9ZnVuY3Rpb24gUyhhKXtyZXR1cm4hYXx8IWEucGFyZW50Tm9kZXx8YS5wYXJlbnROb2RlLm5vZGVUeXBlPT09MTF9ZnVuY3Rpb24gSygpe3JldHVybiEwfWZ1bmN0aW9uIEooKXtyZXR1cm4hMX1mdW5jdGlvbiBuKGEsYixjKXt2YXIgZD1iKyJkZWZlciIsZT1iKyJxdWV1ZSIsZz1iKyJtYXJrIixoPWYuX2RhdGEoYSxkKTtoJiYoYz09PSJxdWV1ZSJ8fCFmLl9kYXRhKGEsZSkpJiYoYz09PSJtYXJrInx8IWYuX2RhdGEoYSxnKSkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXshZi5fZGF0YShhLGUpJiYhZi5fZGF0YShhLGcpJiYoZi5yZW1vdmVEYXRhKGEsZCwhMCksaC5maXJlKCkpfSwwKX1mdW5jdGlvbiBtKGEpe2Zvcih2YXIgYiBpbiBhKXtpZihiPT09ImRhdGEiJiZmLmlzRW1wdHlPYmplY3QoYVtiXSkpY29udGludWU7aWYoYiE9PSJ0b0pTT04iKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGwoYSxjLGQpe2lmKGQ9PT1iJiZhLm5vZGVUeXBlPT09MSl7dmFyIGU9ImRhdGEtIitjLnJlcGxhY2UoaywiLSQxIikudG9Mb3dlckNhc2UoKTtkPWEuZ2V0QXR0cmlidXRlKGUpO2lmKHR5cGVvZiBkPT0ic3RyaW5nIil7dHJ5e2Q9ZD09PSJ0cnVlIj8hMDpkPT09ImZhbHNlIj8hMTpkPT09Im51bGwiP251bGw6Zi5pc051bWVyaWMoZCk/cGFyc2VGbG9hdChkKTpqLnRlc3QoZCk/Zi5wYXJzZUpTT04oZCk6ZH1jYXRjaChnKXt9Zi5kYXRhKGEsYyxkKX1lbHNlIGQ9Yn1yZXR1cm4gZH1mdW5jdGlvbiBoKGEpe3ZhciBiPWdbYV09e30sYyxkO2E9YS5zcGxpdCgvXHMrLyk7Zm9yKGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspYlthW2NdXT0hMDtyZXR1cm4gYn12YXIgYz1hLmRvY3VtZW50LGQ9YS5uYXZpZ2F0b3IsZT1hLmxvY2F0aW9uLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBKKCl7aWYoIWUuaXNSZWFkeSl7dHJ5e2MuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7c2V0VGltZW91dChKLDEpO3JldHVybn1lLnJlYWR5KCl9fXZhciBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBlLmZuLmluaXQoYSxiLGgpfSxmPWEualF1ZXJ5LGc9YS4kLGgsaT0vXig/OlteIzxdKig8W1x3XFddKz4pW14+XSokfCMoW1x3XC1dKikkKS8saj0vXFMvLGs9L15ccysvLGw9L1xzKyQvLG09L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxuPS9eW1xdLDp7fVxzXSokLyxvPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cscD0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2cscT0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHI9Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8scz0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8sdD0vKG1zaWUpIChbXHcuXSspLyx1PS8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8sdj0vLShbYS16XXxbMC05XSkvaWcsdz0vXi1tcy0vLHg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYisiIikudG9VcHBlckNhc2UoKX0seT1kLnVzZXJBZ2VudCx6LEEsQixDPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEU9QXJyYXkucHJvdG90eXBlLnB1c2gsRj1BcnJheS5wcm90b3R5cGUuc2xpY2UsRz1TdHJpbmcucHJvdG90eXBlLnRyaW0sSD1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixJPXt9O2UuZm49ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsaW5pdDpmdW5jdGlvbihhLGQsZil7dmFyIGcsaCxqLGs7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFkJiZjLmJvZHkpe3RoaXMuY29udGV4dD1jLHRoaXNbMF09Yy5ib2R5LHRoaXMuc2VsZWN0b3I9YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ic3RyaW5nIil7YS5jaGFyQXQoMCkhPT0iPCJ8fGEuY2hhckF0KGEubGVuZ3RoLTEpIT09Ij4ifHxhLmxlbmd0aDwzP2c9aS5leGVjKGEpOmc9W251bGwsYSxudWxsXTtpZihnJiYoZ1sxXXx8IWQpKXtpZihnWzFdKXtkPWQgaW5zdGFuY2VvZiBlP2RbMF06ZCxrPWQ/ZC5vd25lckRvY3VtZW50fHxkOmMsaj1tLmV4ZWMoYSksaj9lLmlzUGxhaW5PYmplY3QoZCk/KGE9W2MuY3JlYXRlRWxlbWVudChqWzFdKV0sZS5mbi5hdHRyLmNhbGwoYSxkLCEwKSk6YT1bay5jcmVhdGVFbGVtZW50KGpbMV0pXTooaj1lLmJ1aWxkRnJhZ21lbnQoW2dbMV1dLFtrXSksYT0oai5jYWNoZWFibGU/ZS5jbG9uZShqLmZyYWdtZW50KTpqLmZyYWdtZW50KS5jaGlsZE5vZGVzKTtyZXR1cm4gZS5tZXJnZSh0aGlzLGEpfWg9Yy5nZXRFbGVtZW50QnlJZChnWzJdKTtpZihoJiZoLnBhcmVudE5vZGUpe2lmKGguaWQhPT1nWzJdKXJldHVybiBmLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWh9dGhpcy5jb250ZXh0PWMsdGhpcy5zZWxlY3Rvcj1hO3JldHVybiB0aGlzfXJldHVybiFkfHxkLmpxdWVyeT8oZHx8ZikuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGQpLmZpbmQoYSl9aWYoZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBmLnJlYWR5KGEpO2Euc2VsZWN0b3IhPT1iJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpO3JldHVybiBlLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNy4xIixsZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIEYuY2FsbCh0aGlzLDApfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/dGhpcy50b0FycmF5KCk6YTwwP3RoaXNbdGhpcy5sZW5ndGgrYV06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmNvbnN0cnVjdG9yKCk7ZS5pc0FycmF5KGEpP0UuYXBwbHkoZCxhKTplLm1lcmdlKGQsYSksZC5wcmV2T2JqZWN0PXRoaXMsZC5jb250ZXh0PXRoaXMuY29udGV4dCxiPT09ImZpbmQiP2Quc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK2M6YiYmKGQuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrYisiKCIrYysiKSIpO3JldHVybiBkfSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGUuZWFjaCh0aGlzLGEsYil9LHJlYWR5OmZ1bmN0aW9uKGEpe2UuYmluZFJlYWR5KCksQS5hZGQoYSk7cmV0dXJuIHRoaXN9LGVxOmZ1bmN0aW9uKGEpe2E9K2E7cmV0dXJuIGE9PT0tMT90aGlzLnNsaWNlKGEpOnRoaXMuc2xpY2UoYSxhKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhGLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLEYuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOkUsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGUuZm4uaW5pdC5wcm90b3R5cGU9ZS5mbixlLmV4dGVuZD1lLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsZCxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT0iYm9vbGVhbiImJihsPWksaT1hcmd1bWVudHNbMV18fHt9LGo9MiksdHlwZW9mIGkhPSJvYmplY3QiJiYhZS5pc0Z1bmN0aW9uKGkpJiYoaT17fSksaz09PWomJihpPXRoaXMsLS1qKTtmb3IoO2o8aztqKyspaWYoKGE9YXJndW1lbnRzW2pdKSE9bnVsbClmb3IoYyBpbiBhKXtkPWlbY10sZj1hW2NdO2lmKGk9PT1mKWNvbnRpbnVlO2wmJmYmJihlLmlzUGxhaW5PYmplY3QoZil8fChnPWUuaXNBcnJheShmKSkpPyhnPyhnPSExLGg9ZCYmZS5pc0FycmF5KGQpP2Q6W10pOmg9ZCYmZS5pc1BsYWluT2JqZWN0KGQpP2Q6e30saVtjXT1lLmV4dGVuZChsLGgsZikpOmYhPT1iJiYoaVtjXT1mKX1yZXR1cm4gaX0sZS5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oYil7YS4kPT09ZSYmKGEuJD1nKSxiJiZhLmpRdWVyeT09PWUmJihhLmpRdWVyeT1mKTtyZXR1cm4gZX0saXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9lLnJlYWR5V2FpdCsrOmUucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITAmJiEtLWUucmVhZHlXYWl0fHxhIT09ITAmJiFlLmlzUmVhZHkpe2lmKCFjLmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtlLmlzUmVhZHk9ITA7aWYoYSE9PSEwJiYtLWUucmVhZHlXYWl0PjApcmV0dXJuO0EuZmlyZVdpdGgoYyxbZV0pLGUuZm4udHJpZ2dlciYmZShjKS50cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKX19LGJpbmRSZWFkeTpmdW5jdGlvbigpe2lmKCFBKXtBPWUuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpO2lmKGMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtpZihjLmFkZEV2ZW50TGlzdGVuZXIpYy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGUucmVhZHksITEpO2Vsc2UgaWYoYy5hdHRhY2hFdmVudCl7Yy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixCKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLGUucmVhZHkpO3ZhciBiPSExO3RyeXtiPWEuZnJhbWVFbGVtZW50PT1udWxsfWNhdGNoKGQpe31jLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYiYmSigpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJmdW5jdGlvbiJ9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJhcnJheSJ9LGlzV2luZG93OmZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09Im9iamVjdCImJiJzZXRJbnRlcnZhbCJpbiBhfSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQoYSkpJiZpc0Zpbml0ZShhKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD9TdHJpbmcoYSk6SVtDLmNhbGwoYSldfHwib2JqZWN0In0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtpZighYXx8ZS50eXBlKGEpIT09Im9iamVjdCJ8fGEubm9kZVR5cGV8fGUuaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFELmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIUQuY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfXZhciBkO2ZvcihkIGluIGEpO3JldHVybiBkPT09Ynx8RC5jYWxsKGEsZCl9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcihhKX0scGFyc2VKU09OOmZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nInx8IWIpcmV0dXJuIG51bGw7Yj1lLnRyaW0oYik7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKTtpZihuLnRlc3QoYi5yZXBsYWNlKG8sIkAiKS5yZXBsYWNlKHAsIl0iKS5yZXBsYWNlKHEsIiIpKSlyZXR1cm4obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitiKSkoKTtlLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LHBhcnNlWE1MOmZ1bmN0aW9uKGMpe3ZhciBkLGY7dHJ5e2EuRE9NUGFyc2VyPyhmPW5ldyBET01QYXJzZXIsZD1mLnBhcnNlRnJvbVN0cmluZyhjLCJ0ZXh0L3htbCIpKTooZD1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLGQuYXN5bmM9ImZhbHNlIixkLmxvYWRYTUwoYykpfWNhdGNoKGcpe2Q9Yn0oIWR8fCFkLmRvY3VtZW50RWxlbWVudHx8ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGgpJiZlLmVycm9yKCJJbnZhbGlkIFhNTDogIitjKTtyZXR1cm4gZH0sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZqLnRlc3QoYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UodywibXMtIikucmVwbGFjZSh2LHgpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1iLnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGQpe3ZhciBmLGc9MCxoPWEubGVuZ3RoLGk9aD09PWJ8fGUuaXNGdW5jdGlvbihhKTtpZihkKXtpZihpKXtmb3IoZiBpbiBhKWlmKGMuYXBwbHkoYVtmXSxkKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuYXBwbHkoYVtnKytdLGQpPT09ITEpYnJlYWt9ZWxzZSBpZihpKXtmb3IoZiBpbiBhKWlmKGMuY2FsbChhW2ZdLGYsYVtmXSk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmNhbGwoYVtnXSxnLGFbZysrXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpHP2Z1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOkcuY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6KGErIiIpLnJlcGxhY2UoaywiIikucmVwbGFjZShsLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107aWYoYSE9bnVsbCl7dmFyIGQ9ZS50eXBlKGEpO2EubGVuZ3RoPT1udWxsfHxkPT09InN0cmluZyJ8fGQ9PT0iZnVuY3Rpb24ifHxkPT09InJlZ2V4cCJ8fGUuaXNXaW5kb3coYSk/RS5jYWxsKGMsYSk6ZS5tZXJnZShjLGEpfXJldHVybiBjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihIKXJldHVybiBILmNhbGwoYixhLGMpO2Q9Yi5sZW5ndGgsYz1jP2M8MD9NYXRoLm1heCgwLGQrYyk6YzowO2Zvcig7YzxkO2MrKylpZihjIGluIGImJmJbY109PT1hKXJldHVybiBjfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGMpe3ZhciBkPWEubGVuZ3RoLGU9MDtpZih0eXBlb2YgYy5sZW5ndGg9PSJudW1iZXIiKWZvcih2YXIgZj1jLmxlbmd0aDtlPGY7ZSsrKWFbZCsrXT1jW2VdO2Vsc2Ugd2hpbGUoY1tlXSE9PWIpYVtkKytdPWNbZSsrXTthLmxlbmd0aD1kO3JldHVybiBhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlO2M9ISFjO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKyllPSEhYihhW2ZdLGYpLGMhPT1lJiZkLnB1c2goYVtmXSk7cmV0dXJuIGR9LG1hcDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZyxoPVtdLGk9MCxqPWEubGVuZ3RoLGs9YSBpbnN0YW5jZW9mIGV8fGohPT1iJiZ0eXBlb2Ygaj09Im51bWJlciImJihqPjAmJmFbMF0mJmFbai0xXXx8aj09PTB8fGUuaXNBcnJheShhKSk7aWYoaylmb3IoO2k8ajtpKyspZj1jKGFbaV0saSxkKSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7ZWxzZSBmb3IoZyBpbiBhKWY9YyhhW2ddLGcsZCksZiE9bnVsbCYmKGhbaC5sZW5ndGhdPWYpO3JldHVybiBoLmNvbmNhdC5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYyl7aWYodHlwZW9mIGM9PSJzdHJpbmciKXt2YXIgZD1hW2NdO2M9YSxhPWR9aWYoIWUuaXNGdW5jdGlvbihhKSlyZXR1cm4gYjt2YXIgZj1GLmNhbGwoYXJndW1lbnRzLDIpLGc9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShjLGYuY29uY2F0KEYuY2FsbChhcmd1bWVudHMpKSl9O2cuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxnLmd1aWR8fGUuZ3VpZCsrO3JldHVybiBnfSxhY2Nlc3M6ZnVuY3Rpb24oYSxjLGQsZixnLGgpe3ZhciBpPWEubGVuZ3RoO2lmKHR5cGVvZiBjPT0ib2JqZWN0Iil7Zm9yKHZhciBqIGluIGMpZS5hY2Nlc3MoYSxqLGNbal0sZixnLGQpO3JldHVybiBhfWlmKGQhPT1iKXtmPSFoJiZmJiZlLmlzRnVuY3Rpb24oZCk7Zm9yKHZhciBrPTA7azxpO2srKylnKGFba10sYyxmP2QuY2FsbChhW2tdLGssZyhhW2tdLGMpKTpkLGgpO3JldHVybiBhfXJldHVybiBpP2coYVswXSxjKTpifSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0sdWFNYXRjaDpmdW5jdGlvbihhKXthPWEudG9Mb3dlckNhc2UoKTt2YXIgYj1yLmV4ZWMoYSl8fHMuZXhlYyhhKXx8dC5leGVjKGEpfHxhLmluZGV4T2YoImNvbXBhdGlibGUiKTwwJiZ1LmV4ZWMoYSl8fFtdO3JldHVybnticm93c2VyOmJbMV18fCIiLHZlcnNpb246YlsyXXx8IjAifX0sc3ViOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybiBuZXcgYS5mbi5pbml0KGIsYyl9ZS5leHRlbmQoITAsYSx0aGlzKSxhLnN1cGVyY2xhc3M9dGhpcyxhLmZuPWEucHJvdG90eXBlPXRoaXMoKSxhLmZuLmNvbnN0cnVjdG9yPWEsYS5zdWI9dGhpcy5zdWIsYS5mbi5pbml0PWZ1bmN0aW9uKGQsZil7ZiYmZiBpbnN0YW5jZW9mIGUmJiEoZiBpbnN0YW5jZW9mIGEpJiYoZj1hKGYpKTtyZXR1cm4gZS5mbi5pbml0LmNhbGwodGhpcyxkLGYsYil9LGEuZm4uaW5pdC5wcm90b3R5cGU9YS5mbjt2YXIgYj1hKGMpO3JldHVybiBhfSxicm93c2VyOnt9fSksZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7SVsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KSx6PWUudWFNYXRjaCh5KSx6LmJyb3dzZXImJihlLmJyb3dzZXJbei5icm93c2VyXT0hMCxlLmJyb3dzZXIudmVyc2lvbj16LnZlcnNpb24pLGUuYnJvd3Nlci53ZWJraXQmJihlLmJyb3dzZXIuc2FmYXJpPSEwKSxqLnRlc3QoIsKgIikmJihrPS9eW1xzXHhBMF0rLyxsPS9bXHNceEEwXSskLyksaD1lKGMpLGMuYWRkRXZlbnRMaXN0ZW5lcj9CPWZ1bmN0aW9uKCl7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCLCExKSxlLnJlYWR5KCl9OmMuYXR0YWNoRXZlbnQmJihCPWZ1bmN0aW9uKCl7Yy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIiYmKGMuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQiksZS5yZWFkeSgpKX0pO3JldHVybiBlfSgpLGc9e307Zi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT1hP2dbYV18fGgoYSk6e307dmFyIGM9W10sZD1bXSxlLGksaixrLGwsbT1mdW5jdGlvbihiKXt2YXIgZCxlLGcsaCxpO2ZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWc9YltkXSxoPWYudHlwZShnKSxoPT09ImFycmF5Ij9tKGcpOmg9PT0iZnVuY3Rpb24iJiYoIWEudW5pcXVlfHwhby5oYXMoZykpJiZjLnB1c2goZyl9LG49ZnVuY3Rpb24oYixmKXtmPWZ8fFtdLGU9IWEubWVtb3J5fHxbYixmXSxpPSEwLGw9anx8MCxqPTAsaz1jLmxlbmd0aDtmb3IoO2MmJmw8aztsKyspaWYoY1tsXS5hcHBseShiLGYpPT09ITEmJmEuc3RvcE9uRmFsc2Upe2U9ITA7YnJlYWt9aT0hMSxjJiYoYS5vbmNlP2U9PT0hMD9vLmRpc2FibGUoKTpjPVtdOmQmJmQubGVuZ3RoJiYoZT1kLnNoaWZ0KCksby5maXJlV2l0aChlWzBdLGVbMV0pKSl9LG89e2FkZDpmdW5jdGlvbigpe2lmKGMpe3ZhciBhPWMubGVuZ3RoO20oYXJndW1lbnRzKSxpP2s9Yy5sZW5ndGg6ZSYmZSE9PSEwJiYoaj1hLG4oZVswXSxlWzFdKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe2lmKGMpe3ZhciBiPWFyZ3VtZW50cyxkPTAsZT1iLmxlbmd0aDtmb3IoO2Q8ZTtkKyspZm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspaWYoYltkXT09PWNbZl0pe2kmJmY8PWsmJihrLS0sZjw9bCYmbC0tKSxjLnNwbGljZShmLS0sMSk7aWYoYS51bmlxdWUpYnJlYWt9fXJldHVybiB0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7aWYoYyl7dmFyIGI9MCxkPWMubGVuZ3RoO2Zvcig7YjxkO2IrKylpZihhPT09Y1tiXSlyZXR1cm4hMH1yZXR1cm4hMX0sZW1wdHk6ZnVuY3Rpb24oKXtjPVtdO3JldHVybiB0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7Yz1kPWU9YjtyZXR1cm4gdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hY30sbG9jazpmdW5jdGlvbigpe2Q9YiwoIWV8fGU9PT0hMCkmJm8uZGlzYWJsZSgpO3JldHVybiB0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZH0sZmlyZVdpdGg6ZnVuY3Rpb24oYixjKXtkJiYoaT9hLm9uY2V8fGQucHVzaChbYixjXSk6KCFhLm9uY2V8fCFlKSYmbihiLGMpKTtyZXR1cm4gdGhpc30sZmlyZTpmdW5jdGlvbigpe28uZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZX19O3JldHVybiBvfTt2YXIgaT1bXS5zbGljZTtmLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYz1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkPWYuQ2FsbGJhY2tzKCJtZW1vcnkiKSxlPSJwZW5kaW5nIixnPXtyZXNvbHZlOmIscmVqZWN0OmMsbm90aWZ5OmR9LGg9e2RvbmU6Yi5hZGQsZmFpbDpjLmFkZCxwcm9ncmVzczpkLmFkZCxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBlfSxpc1Jlc29sdmVkOmIuZmlyZWQsaXNSZWplY3RlZDpjLmZpcmVkLHRoZW46ZnVuY3Rpb24oYSxiLGMpe2kuZG9uZShhKS5mYWlsKGIpLnByb2dyZXNzKGMpO3JldHVybiB0aGlzfSxhbHdheXM6ZnVuY3Rpb24oKXtpLmRvbmUuYXBwbHkoaSxhcmd1bWVudHMpLmZhaWwuYXBwbHkoaSxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxwaXBlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5EZWZlcnJlZChmdW5jdGlvbihkKXtmLmVhY2goe2RvbmU6W2EsInJlc29sdmUiXSxmYWlsOltiLCJyZWplY3QiXSxwcm9ncmVzczpbYywibm90aWZ5Il19LGZ1bmN0aW9uKGEsYil7dmFyIGM9YlswXSxlPWJbMV0sZztmLmlzRnVuY3Rpb24oYyk/aVthXShmdW5jdGlvbigpe2c9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyksZyYmZi5pc0Z1bmN0aW9uKGcucHJvbWlzZSk/Zy5wcm9taXNlKCkudGhlbihkLnJlc29sdmUsZC5yZWplY3QsZC5ub3RpZnkpOmRbZSsiV2l0aCJdKHRoaXM9PT1pP2Q6dGhpcyxbZ10pfSk6aVthXShkW2VdKX0pfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpYT1oO2Vsc2UgZm9yKHZhciBiIGluIGgpYVtiXT1oW2JdO3JldHVybiBhfX0saT1oLnByb21pc2Uoe30pLGo7Zm9yKGogaW4gZylpW2pdPWdbal0uZmlyZSxpW2orIldpdGgiXT1nW2pdLmZpcmVXaXRoO2kuZG9uZShmdW5jdGlvbigpe2U9InJlc29sdmVkIn0sYy5kaXNhYmxlLGQubG9jaykuZmFpbChmdW5jdGlvbigpe2U9InJlamVjdGVkIn0sYi5kaXNhYmxlLGQubG9jayksYSYmYS5jYWxsKGksaSk7cmV0dXJuIGl9LHdoZW46ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gbShhKXtyZXR1cm4gZnVuY3Rpb24oYil7ZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/aS5jYWxsKGFyZ3VtZW50cywwKTpiLGoubm90aWZ5V2l0aChrLGUpfX1mdW5jdGlvbiBsKGEpe3JldHVybiBmdW5jdGlvbihjKXtiW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9pLmNhbGwoYXJndW1lbnRzLDApOmMsLS1nfHxqLnJlc29sdmVXaXRoKGosYil9fXZhciBiPWkuY2FsbChhcmd1bWVudHMsMCksYz0wLGQ9Yi5sZW5ndGgsZT1BcnJheShkKSxnPWQsaD1kLGo9ZDw9MSYmYSYmZi5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YTpmLkRlZmVycmVkKCksaz1qLnByb21pc2UoKTtpZihkPjEpe2Zvcig7YzxkO2MrKyliW2NdJiZiW2NdLnByb21pc2UmJmYuaXNGdW5jdGlvbihiW2NdLnByb21pc2UpP2JbY10ucHJvbWlzZSgpLnRoZW4obChjKSxqLnJlamVjdCxtKGMpKTotLWc7Z3x8ai5yZXNvbHZlV2l0aChqLGIpfWVsc2UgaiE9PWEmJmoucmVzb2x2ZVdpdGgoaixkP1thXTpbXSk7cmV0dXJuIGt9fSksZi5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIGIsZCxlLGcsaCxpLGosayxsLG0sbixvLHAscT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHI9Yy5kb2N1bWVudEVsZW1lbnQ7cS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxxLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0ndG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9cS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGU9cS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdO2lmKCFkfHwhZC5sZW5ndGh8fCFlKXJldHVybnt9O2c9Yy5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxoPWcuYXBwZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksaT1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLGI9e2xlYWRpbmdXaGl0ZXNwYWNlOnEuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTMsdGJvZHk6IXEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGh0bWxTZXJpYWxpemU6ISFxLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLHN0eWxlOi90b3AvLnRlc3QoZS5nZXRBdHRyaWJ1dGUoInN0eWxlIikpLGhyZWZOb3JtYWxpemVkOmUuZ2V0QXR0cmlidXRlKCJocmVmIik9PT0iL2EiLG9wYWNpdHk6L14wLjU1Ly50ZXN0KGUuc3R5bGUub3BhY2l0eSksY3NzRmxvYXQ6ISFlLnN0eWxlLmNzc0Zsb2F0LGNoZWNrT246aS52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6aC5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6cS5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWMuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsaHRtbDVDbG9uZTpjLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MIT09Ijw6bmF2PjwvOm5hdj4iLHN1Ym1pdEJ1YmJsZXM6ITAsY2hhbmdlQnViYmxlczohMCxmb2N1c2luQnViYmxlczohMSxkZWxldGVFeHBhbmRvOiEwLG5vQ2xvbmVFdmVudDohMCxpbmxpbmVCbG9ja05lZWRzTGF5b3V0OiExLHNocmlua1dyYXBCbG9ja3M6ITEscmVsaWFibGVNYXJnaW5SaWdodDohMH0saS5jaGVja2VkPSEwLGIubm9DbG9uZUNoZWNrZWQ9aS5jbG9uZU5vZGUoITApLmNoZWNrZWQsZy5kaXNhYmxlZD0hMCxiLm9wdERpc2FibGVkPSFoLmRpc2FibGVkO3RyeXtkZWxldGUgcS50ZXN0fWNhdGNoKHMpe2IuZGVsZXRlRXhwYW5kbz0hMX0hcS5hZGRFdmVudExpc3RlbmVyJiZxLmF0dGFjaEV2ZW50JiZxLmZpcmVFdmVudCYmKHEuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7Yi5ub0Nsb25lRXZlbnQ9ITF9KSxxLmNsb25lTm9kZSghMCkuZmlyZUV2ZW50KCJvbmNsaWNrIikpLGk9Yy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGkudmFsdWU9InQiLGkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxiLnJhZGlvVmFsdWU9aS52YWx1ZT09PSJ0IixpLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxxLmFwcGVuZENoaWxkKGkpLGs9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksay5hcHBlbmRDaGlsZChxLmxhc3RDaGlsZCksYi5jaGVja0Nsb25lPWsuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGIuYXBwZW5kQ2hlY2tlZD1pLmNoZWNrZWQsay5yZW1vdmVDaGlsZChpKSxrLmFwcGVuZENoaWxkKHEpLHEuaW5uZXJIVE1MPSIiLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGo9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxqLnN0eWxlLndpZHRoPSIwIixqLnN0eWxlLm1hcmdpblJpZ2h0PSIwIixxLnN0eWxlLndpZHRoPSIycHgiLHEuYXBwZW5kQ2hpbGQoaiksYi5yZWxpYWJsZU1hcmdpblJpZ2h0PShwYXJzZUludCgoYS5nZXRDb21wdXRlZFN0eWxlKGosbnVsbCl8fHttYXJnaW5SaWdodDowfSkubWFyZ2luUmlnaHQsMTApfHwwKT09PTApO2lmKHEuYXR0YWNoRXZlbnQpZm9yKG8gaW57c3VibWl0OjEsY2hhbmdlOjEsZm9jdXNpbjoxfSluPSJvbiIrbyxwPW4gaW4gcSxwfHwocS5zZXRBdHRyaWJ1dGUobiwicmV0dXJuOyIpLHA9dHlwZW9mIHFbbl09PSJmdW5jdGlvbiIpLGJbbysiQnViYmxlcyJdPXA7ay5yZW1vdmVDaGlsZChxKSxrPWc9aD1qPXE9aT1udWxsLGYoZnVuY3Rpb24oKXt2YXIgYSxkLGUsZyxoLGksaixrLG0sbixvLHI9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdOyFyfHwoaj0xLGs9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDttYXJnaW46MDsiLG09InZpc2liaWxpdHk6aGlkZGVuO2JvcmRlcjowOyIsbj0ic3R5bGU9JyIraysiYm9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDsnIixvPSI8ZGl2ICIrbisiPjxkaXY+PC9kaXY+PC9kaXY+IisiPHRhYmxlICIrbisiIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+IisiPHRyPjx0ZD48L3RkPjwvdHI+PC90YWJsZT4iLGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLnN0eWxlLmNzc1RleHQ9bSsid2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bWFyZ2luLXRvcDoiK2orInB4IixyLmluc2VydEJlZm9yZShhLHIuZmlyc3RDaGlsZCkscT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGEuYXBwZW5kQ2hpbGQocSkscS5pbm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkIHN0eWxlPSdwYWRkaW5nOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lJz48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixsPXEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIikscD1sWzBdLm9mZnNldEhlaWdodD09PTAsbFswXS5zdHlsZS5kaXNwbGF5PSIiLGxbMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsYi5yZWxpYWJsZUhpZGRlbk9mZnNldHM9cCYmbFswXS5vZmZzZXRIZWlnaHQ9PT0wLHEuaW5uZXJIVE1MPSIiLHEuc3R5bGUud2lkdGg9cS5zdHlsZS5wYWRkaW5nTGVmdD0iMXB4IixmLmJveE1vZGVsPWIuYm94TW9kZWw9cS5vZmZzZXRXaWR0aD09PTIsdHlwZW9mIHEuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihxLnN0eWxlLmRpc3BsYXk9ImlubGluZSIscS5zdHlsZS56b29tPTEsYi5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PXEub2Zmc2V0V2lkdGg9PT0yLHEuc3R5bGUuZGlzcGxheT0iIixxLmlubmVySFRNTD0iPGRpdiBzdHlsZT0nd2lkdGg6NHB4Oyc+PC9kaXY+IixiLnNocmlua1dyYXBCbG9ja3M9cS5vZmZzZXRXaWR0aCE9PTIpLHEuc3R5bGUuY3NzVGV4dD1rK20scS5pbm5lckhUTUw9byxkPXEuZmlyc3RDaGlsZCxlPWQuZmlyc3RDaGlsZCxoPWQubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkLGk9e2RvZXNOb3RBZGRCb3JkZXI6ZS5vZmZzZXRUb3AhPT01LGRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzOmgub2Zmc2V0VG9wPT09NX0sZS5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGUuc3R5bGUudG9wPSIyMHB4IixpLmZpeGVkUG9zaXRpb249ZS5vZmZzZXRUb3A9PT0yMHx8ZS5vZmZzZXRUb3A9PT0xNSxlLnN0eWxlLnBvc2l0aW9uPWUuc3R5bGUudG9wPSIiLGQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGkuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPWUub2Zmc2V0VG9wPT09LTUsaS5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldD1yLm9mZnNldFRvcCE9PWosci5yZW1vdmVDaGlsZChhKSxxPWE9bnVsbCxmLmV4dGVuZChiLGkpKX0pO3JldHVybiBifSgpO3ZhciBqPS9eKD86XHsuKlx9fFxbLipcXSkkLyxrPS8oW0EtWl0pL2c7Zi5leHRlbmQoe2NhY2hlOnt9LHV1aWQ6MCxleHBhbmRvOiJqUXVlcnkiKyhmLmZuLmpxdWVyeStNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0RhdGE6e2VtYmVkOiEwLG9iamVjdDoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIixhcHBsZXQ6ITB9LGhhc0RhdGE6ZnVuY3Rpb24oYSl7YT1hLm5vZGVUeXBlP2YuY2FjaGVbYVtmLmV4cGFuZG9dXTphW2YuZXhwYW5kb107cmV0dXJuISFhJiYhbShhKX0sZGF0YTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWYuYWNjZXB0RGF0YShhKSl7dmFyIGcsaCxpLGo9Zi5leHBhbmRvLGs9dHlwZW9mIGM9PSJzdHJpbmciLGw9YS5ub2RlVHlwZSxtPWw/Zi5jYWNoZTphLG49bD9hW2pdOmFbal0mJmosbz1jPT09ImV2ZW50cyI7aWYoKCFufHwhbVtuXXx8IW8mJiFlJiYhbVtuXS5kYXRhKSYmayYmZD09PWIpcmV0dXJuO258fChsP2Fbal09bj0rK2YudXVpZDpuPWopLG1bbl18fChtW25dPXt9LGx8fChtW25dLnRvSlNPTj1mLm5vb3ApKTtpZih0eXBlb2YgYz09Im9iamVjdCJ8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWU/bVtuXT1mLmV4dGVuZChtW25dLGMpOm1bbl0uZGF0YT1mLmV4dGVuZChtW25dLmRhdGEsYyk7Zz1oPW1bbl0sZXx8KGguZGF0YXx8KGguZGF0YT17fSksaD1oLmRhdGEpLGQhPT1iJiYoaFtmLmNhbWVsQ2FzZShjKV09ZCk7aWYobyYmIWhbY10pcmV0dXJuIGcuZXZlbnRzO2s/KGk9aFtjXSxpPT1udWxsJiYoaT1oW2YuY2FtZWxDYXNlKGMpXSkpOmk9aDtyZXR1cm4gaX19LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiLGMpe2lmKCEhZi5hY2NlcHREYXRhKGEpKXt2YXIgZCxlLGcsaD1mLmV4cGFuZG8saT1hLm5vZGVUeXBlLGo9aT9mLmNhY2hlOmEsaz1pP2FbaF06aDtpZighaltrXSlyZXR1cm47aWYoYil7ZD1jP2pba106altrXS5kYXRhO2lmKGQpe2YuaXNBcnJheShiKXx8KGIgaW4gZD9iPVtiXTooYj1mLmNhbWVsQ2FzZShiKSxiIGluIGQ/Yj1bYl06Yj1iLnNwbGl0KCIgIikpKTtmb3IoZT0wLGc9Yi5sZW5ndGg7ZTxnO2UrKylkZWxldGUgZFtiW2VdXTtpZighKGM/bTpmLmlzRW1wdHlPYmplY3QpKGQpKXJldHVybn19aWYoIWMpe2RlbGV0ZSBqW2tdLmRhdGE7aWYoIW0oaltrXSkpcmV0dXJufWYuc3VwcG9ydC5kZWxldGVFeHBhbmRvfHwhai5zZXRJbnRlcnZhbD9kZWxldGUgaltrXTpqW2tdPW51bGwsaSYmKGYuc3VwcG9ydC5kZWxldGVFeHBhbmRvP2RlbGV0ZSBhW2hdOmEucmVtb3ZlQXR0cmlidXRlP2EucmVtb3ZlQXR0cmlidXRlKGgpOmFbaF09bnVsbCl9fSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGF0YShhLGIsYywhMCl9LGFjY2VwdERhdGE6ZnVuY3Rpb24oYSl7aWYoYS5ub2RlTmFtZSl7dmFyIGI9Zi5ub0RhdGFbYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtpZihiKXJldHVybiBiIT09ITAmJmEuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT1ifXJldHVybiEwfX0pLGYuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYyl7dmFyIGQsZSxnLGg9bnVsbDtpZih0eXBlb2YgYT09InVuZGVmaW5lZCIpe2lmKHRoaXMubGVuZ3RoKXtoPWYuZGF0YSh0aGlzWzBdKTtpZih0aGlzWzBdLm5vZGVUeXBlPT09MSYmIWYuX2RhdGEodGhpc1swXSwicGFyc2VkQXR0cnMiKSl7ZT10aGlzWzBdLmF0dHJpYnV0ZXM7Zm9yKHZhciBpPTAsaj1lLmxlbmd0aDtpPGo7aSsrKWc9ZVtpXS5uYW1lLGcuaW5kZXhPZigiZGF0YS0iKT09PTAmJihnPWYuY2FtZWxDYXNlKGcuc3Vic3RyaW5nKDUpKSxsKHRoaXNbMF0sZyxoW2ddKSk7Zi5fZGF0YSh0aGlzWzBdLCJwYXJzZWRBdHRycyIsITApfX1yZXR1cm4gaH1pZih0eXBlb2YgYT09Im9iamVjdCIpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGF0YSh0aGlzLGEpfSk7ZD1hLnNwbGl0KCIuIiksZFsxXT1kWzFdPyIuIitkWzFdOiIiO2lmKGM9PT1iKXtoPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK2RbMV0rIiEiLFtkWzBdXSksaD09PWImJnRoaXMubGVuZ3RoJiYoaD1mLmRhdGEodGhpc1swXSxhKSxoPWwodGhpc1swXSxhLGgpKTtyZXR1cm4gaD09PWImJmRbMV0/dGhpcy5kYXRhKGRbMF0pOmh9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksZT1bZFswXSxjXTtiLnRyaWdnZXJIYW5kbGVyKCJzZXREYXRhIitkWzFdKyIhIixlKSxmLmRhdGEodGhpcyxhLGMpLGIudHJpZ2dlckhhbmRsZXIoImNoYW5nZURhdGEiK2RbMV0rIiEiLGUpfSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSksZi5leHRlbmQoe19tYXJrOmZ1bmN0aW9uKGEsYil7YSYmKGI9KGJ8fCJmeCIpKyJtYXJrIixmLl9kYXRhKGEsYiwoZi5fZGF0YShhLGIpfHwwKSsxKSl9LF91bm1hcms6ZnVuY3Rpb24oYSxiLGMpe2EhPT0hMCYmKGM9YixiPWEsYT0hMSk7aWYoYil7Yz1jfHwiZngiO3ZhciBkPWMrIm1hcmsiLGU9YT8wOihmLl9kYXRhKGIsZCl8fDEpLTE7ZT9mLl9kYXRhKGIsZCxlKTooZi5yZW1vdmVEYXRhKGIsZCwhMCksbihiLGMsIm1hcmsiKSl9fSxxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYSl7Yj0oYnx8ImZ4IikrInF1ZXVlIixkPWYuX2RhdGEoYSxiKSxjJiYoIWR8fGYuaXNBcnJheShjKT9kPWYuX2RhdGEoYSxiLGYubWFrZUFycmF5KGMpKTpkLnB1c2goYykpO3JldHVybiBkfHxbXX19LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9Zi5xdWV1ZShhLGIpLGQ9Yy5zaGlmdCgpLGU9e307ZD09PSJpbnByb2dyZXNzIiYmKGQ9Yy5zaGlmdCgpKSxkJiYoYj09PSJmeCImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGYuX2RhdGEoYSxiKyIucnVuIixlKSxkLmNhbGwoYSxmdW5jdGlvbigpe2YuZGVxdWV1ZShhLGIpfSxlKSksYy5sZW5ndGh8fChmLnJlbW92ZURhdGEoYSxiKyJxdWV1ZSAiK2IrIi5ydW4iLCEwKSxuKGEsYiwicXVldWUiKSl9fSksZi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYyl7dHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9ImZ4Iik7aWYoYz09PWIpcmV0dXJuIGYucXVldWUodGhpc1swXSxhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Zi5xdWV1ZSh0aGlzLGEsYyk7YT09PSJmeCImJmJbMF0hPT0iaW5wcm9ncmVzcyImJmYuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlbGF5OmZ1bmN0aW9uKGEsYil7YT1mLmZ4P2YuZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiO3JldHVybiB0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gbSgpey0taHx8ZC5yZXNvbHZlV2l0aChlLFtlXSl9dHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9YiksYT1hfHwiZngiO3ZhciBkPWYuRGVmZXJyZWQoKSxlPXRoaXMsZz1lLmxlbmd0aCxoPTEsaT1hKyJkZWZlciIsaj1hKyJxdWV1ZSIsaz1hKyJtYXJrIixsO3doaWxlKGctLSlpZihsPWYuZGF0YShlW2ddLGksYiwhMCl8fChmLmRhdGEoZVtnXSxqLGIsITApfHxmLmRhdGEoZVtnXSxrLGIsITApKSYmZi5kYXRhKGVbZ10saSxmLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwhMCkpaCsrLGwuYWRkKG0pO20oKTtyZXR1cm4gZC5wcm9taXNlKCl9fSk7dmFyIG89L1tcblx0XHJdL2cscD0vXHMrLyxxPS9cci9nLHI9L14oPzpidXR0b258aW5wdXQpJC9pLHM9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksdD0vXmEoPzpyZWEpPyQvaSx1PS9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLHY9Zi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSx3LHgseTtmLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGEsYiwhMCxmLmF0dHIpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLnJlbW92ZUF0dHIodGhpcyxhKX0pfSxwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGYuYWNjZXNzKHRoaXMsYSxiLCEwLGYucHJvcCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7YT1mLnByb3BGaXhbYV18fGE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2FdPWIsZGVsZXRlIHRoaXNbYV19Y2F0Y2goYyl7fX0pfSxhZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxnLGgsaTtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGEmJnR5cGVvZiBhPT0ic3RyaW5nIil7Yj1hLnNwbGl0KHApO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtlPXRoaXNbY107aWYoZS5ub2RlVHlwZT09PTEpaWYoIWUuY2xhc3NOYW1lJiZiLmxlbmd0aD09PTEpZS5jbGFzc05hbWU9YTtlbHNle2c9IiAiK2UuY2xhc3NOYW1lKyIgIjtmb3IoaD0wLGk9Yi5sZW5ndGg7aDxpO2grKyl+Zy5pbmRleE9mKCIgIitiW2hdKyIgIil8fChnKz1iW2hdKyIgIik7ZS5jbGFzc05hbWU9Zi50cmltKGcpfX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnLGgsaSxqO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmcifHxhPT09Yil7Yz0oYXx8IiIpLnNwbGl0KHApO2ZvcihkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtnPXRoaXNbZF07aWYoZy5ub2RlVHlwZT09PTEmJmcuY2xhc3NOYW1lKWlmKGEpe2g9KCIgIitnLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobywiICIpO2ZvcihpPTAsaj1jLmxlbmd0aDtpPGo7aSsrKWg9aC5yZXBsYWNlKCIgIitjW2ldKyIgIiwiICIpO2cuY2xhc3NOYW1lPWYudHJpbShoKX1lbHNlIGcuY2xhc3NOYW1lPSIifX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYSxkPXR5cGVvZiBiPT0iYm9vbGVhbiI7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7Zih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLHRoaXMuY2xhc3NOYW1lLGIpLGIpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKGM9PT0ic3RyaW5nIil7dmFyIGUsZz0wLGg9Zih0aGlzKSxpPWIsaj1hLnNwbGl0KHApO3doaWxlKGU9altnKytdKWk9ZD9pOiFoLmhhc0NsYXNzKGUpLGhbaT8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKGUpfWVsc2UgaWYoYz09PSJ1bmRlZmluZWQifHxjPT09ImJvb2xlYW4iKXRoaXMuY2xhc3NOYW1lJiZmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8YT09PSExPyIiOmYuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIn0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7Zm9yKDtjPGQ7YysrKWlmKHRoaXNbY10ubm9kZVR5cGU9PT0xJiYoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZShvLCIgIikuaW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnPXRoaXNbMF07e2lmKCEhYXJndW1lbnRzLmxlbmd0aCl7ZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZz1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2U/aD1hLmNhbGwodGhpcyxkLGcudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9aWYoZyl7Yz1mLnZhbEhvb2tzW2cubm9kZU5hbWUudG9Mb3dlckNhc2UoKV18fGYudmFsSG9va3NbZy50eXBlXTtpZihjJiYiZ2V0ImluIGMmJihkPWMuZ2V0KGcsInZhbHVlIikpIT09YilyZXR1cm4gZDtkPWcudmFsdWU7cmV0dXJuIHR5cGVvZiBkPT0ic3RyaW5nIj9kLnJlcGxhY2UocSwiIik6ZD09bnVsbD8iIjpkfX19fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZz1hLnNlbGVjdGVkSW5kZXgsaD1bXSxpPWEub3B0aW9ucyxqPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihnPDApcmV0dXJuIG51bGw7Yz1qP2c6MCxkPWo/ZysxOmkubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1pW2NdO2lmKGUuc2VsZWN0ZWQmJihmLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9ZihlKS52YWwoKTtpZihqKXJldHVybiBiO2gucHVzaChiKX19aWYoaiYmIWgubGVuZ3RoJiZpLmxlbmd0aClyZXR1cm4gZihpW2ddKS52YWwoKTtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9Zi5tYWtlQXJyYXkoYik7ZihhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1mLmluQXJyYXkoZih0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKTtyZXR1cm4gY319fSxhdHRyRm46e3ZhbDohMCxjc3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEwLG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZyxoLGksaj1hLm5vZGVUeXBlO2lmKCEhYSYmaiE9PTMmJmohPT04JiZqIT09Mil7aWYoZSYmYyBpbiBmLmF0dHJGbilyZXR1cm4gZihhKVtjXShkKTtpZih0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PSJ1bmRlZmluZWQiKXJldHVybiBmLnByb3AoYSxjLGQpO2k9aiE9PTF8fCFmLmlzWE1MRG9jKGEpLGkmJihjPWMudG9Mb3dlckNhc2UoKSxoPWYuYXR0ckhvb2tzW2NdfHwodS50ZXN0KGMpP3g6dykpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJufWlmKGgmJiJzZXQiaW4gaCYmaSYmKGc9aC5zZXQoYSxkLGMpKSE9PWIpcmV0dXJuIGc7YS5zZXRBdHRyaWJ1dGUoYywiIitkKTtyZXR1cm4gZH1pZihoJiYiZ2V0ImluIGgmJmkmJihnPWguZ2V0KGEsYykpIT09bnVsbClyZXR1cm4gZztnPWEuZ2V0QXR0cmlidXRlKGMpO3JldHVybiBnPT09bnVsbD9iOmd9fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGcsaD0wO2lmKGImJmEubm9kZVR5cGU9PT0xKXtkPWIudG9Mb3dlckNhc2UoKS5zcGxpdChwKSxnPWQubGVuZ3RoO2Zvcig7aDxnO2grKyllPWRbaF0sZSYmKGM9Zi5wcm9wRml4W2VdfHxlLGYuYXR0cihhLGUsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHY/ZTpjKSx1LnRlc3QoZSkmJmMgaW4gYSYmKGFbY109ITEpKX19LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoci50ZXN0KGEubm9kZU5hbWUpJiZhLnBhcmVudE5vZGUpZi5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7ZWxzZSBpZighZi5zdXBwb3J0LnJhZGlvVmFsdWUmJmI9PT0icmFkaW8iJiZmLm5vZGVOYW1lKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7YS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpO3JldHVybiBifX19LHZhbHVlOntnZXQ6ZnVuY3Rpb24oYSxiKXtpZih3JiZmLm5vZGVOYW1lKGEsImJ1dHRvbiIpKXJldHVybiB3LmdldChhLGIpO3JldHVybiBiIGluIGE/YS52YWx1ZTpudWxsfSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuc2V0KGEsYixjKTthLnZhbHVlPWJ9fX0scHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifSxwcm9wOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaT1hLm5vZGVUeXBlO2lmKCEhYSYmaSE9PTMmJmkhPT04JiZpIT09Mil7aD1pIT09MXx8IWYuaXNYTUxEb2MoYSksaCYmKGM9Zi5wcm9wRml4W2NdfHxjLGc9Zi5wcm9wSG9va3NbY10pO3JldHVybiBkIT09Yj9nJiYic2V0ImluIGcmJihlPWcuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYmluZGV4Iik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP3BhcnNlSW50KGMudmFsdWUsMTApOnMudGVzdChhLm5vZGVOYW1lKXx8dC50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDpifX19fSksZi5hdHRySG9va3MudGFiaW5kZXg9Zi5wcm9wSG9va3MudGFiSW5kZXgseD17Z2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQsZT1mLnByb3AoYSxjKTtyZXR1cm4gZT09PSEwfHx0eXBlb2YgZSE9ImJvb2xlYW4iJiYoZD1hLmdldEF0dHJpYnV0ZU5vZGUoYykpJiZkLm5vZGVWYWx1ZSE9PSExP2MudG9Mb3dlckNhc2UoKTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2I9PT0hMT9mLnJlbW92ZUF0dHIoYSxjKTooZD1mLnByb3BGaXhbY118fGMsZCBpbiBhJiYoYVtkXT0hMCksYS5zZXRBdHRyaWJ1dGUoYyxjLnRvTG93ZXJDYXNlKCkpKTtyZXR1cm4gY319LHZ8fCh5PXtuYW1lOiEwLGlkOiEwfSx3PWYudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZDtkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtyZXR1cm4gZCYmKHlbY10/ZC5ub2RlVmFsdWUhPT0iIjpkLnNwZWNpZmllZCk/ZC5ub2RlVmFsdWU6Yn0sc2V0OmZ1bmN0aW9uKGEsYixkKXt2YXIgZT1hLmdldEF0dHJpYnV0ZU5vZGUoZCk7ZXx8KGU9Yy5jcmVhdGVBdHRyaWJ1dGUoZCksYS5zZXRBdHRyaWJ1dGVOb2RlKGUpKTtyZXR1cm4gZS5ub2RlVmFsdWU9YisiIn19LGYuYXR0ckhvb2tzLnRhYmluZGV4LnNldD13LnNldCxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5hdHRySG9va3NbYl09Zi5leHRlbmQoZi5hdHRySG9va3NbYl0se3NldDpmdW5jdGlvbihhLGMpe2lmKGM9PT0iIil7YS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpO3JldHVybiBjfX19KX0pLGYuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17Z2V0OncuZ2V0LHNldDpmdW5jdGlvbihhLGIsYyl7Yj09PSIiJiYoYj0iZmFsc2UiKSx3LnNldChhLGIsYyl9fSksZi5zdXBwb3J0LmhyZWZOb3JtYWxpemVkfHxmLmVhY2goWyJocmVmIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGMpe2YuYXR0ckhvb2tzW2NdPWYuZXh0ZW5kKGYuYXR0ckhvb2tzW2NdLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGUoYywyKTtyZXR1cm4gZD09PW51bGw/YjpkfX0pfSksZi5zdXBwb3J0LnN0eWxlfHwoZi5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0LnRvTG93ZXJDYXNlKCl8fGJ9LHNldDpmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9IiIrYn19KSxmLnN1cHBvcnQub3B0U2VsZWN0ZWR8fChmLnByb3BIb29rcy5zZWxlY3RlZD1mLmV4dGVuZChmLnByb3BIb29rcy5zZWxlY3RlZCx7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtiJiYoYi5zZWxlY3RlZEluZGV4LGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpO3JldHVybiBudWxsfX0pKSxmLnN1cHBvcnQuZW5jdHlwZXx8KGYucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpLGYuc3VwcG9ydC5jaGVja09ufHxmLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtmLnZhbEhvb2tzW3RoaXNdPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPT09bnVsbD8ib24iOmEudmFsdWV9fX0pLGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109Zi5leHRlbmQoZi52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGEsYil7aWYoZi5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9Zi5pbkFycmF5KGYoYSkudmFsKCksYik+PTB9fSl9KTt2YXIgej0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksQT0vXihbXlwuXSopPyg/OlwuKC4rKSk/JC8sQj0vXGJob3ZlcihcLlxTKyk/XGIvLEM9L15rZXkvLEQ9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLEU9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLEY9L14oXHcqKSg/OiMoW1x3XC1dKykpPyg/OlwuKFtcd1wtXSspKT8kLyxHPWZ1bmN0aW9uKGEpe3ZhciBiPUYuZXhlYyhhKTtiJiYoYlsxXT0oYlsxXXx8IiIpLnRvTG93ZXJDYXNlKCksYlszXT1iWzNdJiZuZXcgUmVnRXhwKCIoPzpefFxccykiK2JbM10rIig/Olxcc3wkKSIpKTtyZXR1cm4gYn0sSD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuYXR0cmlidXRlc3x8e307cmV0dXJuKCFiWzFdfHxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iWzFdKSYmKCFiWzJdfHwoYy5pZHx8e30pLnZhbHVlPT09YlsyXSkmJighYlszXXx8YlszXS50ZXN0KChjWyJjbGFzcyJdfHx7fSkudmFsdWUpKX0sST1mdW5jdGlvbihhKXtyZXR1cm4gZi5ldmVudC5zcGVjaWFsLmhvdmVyP2E6YS5yZXBsYWNlKEIsIm1vdXNlZW50ZXIkMSBtb3VzZWxlYXZlJDEiKX07CmYuZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlLGcpe3ZhciBoLGksaixrLGwsbSxuLG8scCxxLHIscztpZighKGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBlPT09OHx8IWN8fCFkfHwhKGg9Zi5fZGF0YShhKSkpKXtkLmhhbmRsZXImJihwPWQsZD1wLmhhbmRsZXIpLGQuZ3VpZHx8KGQuZ3VpZD1mLmd1aWQrKyksaj1oLmV2ZW50cyxqfHwoaC5ldmVudHM9aj17fSksaT1oLmhhbmRsZSxpfHwoaC5oYW5kbGU9aT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGYhPSJ1bmRlZmluZWQiJiYoIWF8fGYuZXZlbnQudHJpZ2dlcmVkIT09YS50eXBlKT9mLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGkuZWxlbSxhcmd1bWVudHMpOmJ9LGkuZWxlbT1hKSxjPWYudHJpbShJKGMpKS5zcGxpdCgiICIpO2ZvcihrPTA7azxjLmxlbmd0aDtrKyspe2w9QS5leGVjKGNba10pfHxbXSxtPWxbMV0sbj0obFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLHM9Zi5ldmVudC5zcGVjaWFsW21dfHx7fSxtPShnP3MuZGVsZWdhdGVUeXBlOnMuYmluZFR5cGUpfHxtLHM9Zi5ldmVudC5zcGVjaWFsW21dfHx7fSxvPWYuZXh0ZW5kKHt0eXBlOm0sb3JpZ1R5cGU6bFsxXSxkYXRhOmUsaGFuZGxlcjpkLGd1aWQ6ZC5ndWlkLHNlbGVjdG9yOmcscXVpY2s6RyhnKSxuYW1lc3BhY2U6bi5qb2luKCIuIil9LHApLHI9alttXTtpZighcil7cj1qW21dPVtdLHIuZGVsZWdhdGVDb3VudD0wO2lmKCFzLnNldHVwfHxzLnNldHVwLmNhbGwoYSxlLG4saSk9PT0hMSlhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKG0saSwhMSk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib24iK20saSl9cy5hZGQmJihzLmFkZC5jYWxsKGEsbyksby5oYW5kbGVyLmd1aWR8fChvLmhhbmRsZXIuZ3VpZD1kLmd1aWQpKSxnP3Iuc3BsaWNlKHIuZGVsZWdhdGVDb3VudCsrLDAsbyk6ci5wdXNoKG8pLGYuZXZlbnQuZ2xvYmFsW21dPSEwfWE9bnVsbH19LGdsb2JhbDp7fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZz1mLmhhc0RhdGEoYSkmJmYuX2RhdGEoYSksaCxpLGosayxsLG0sbixvLHAscSxyLHM7aWYoISFnJiYhIShvPWcuZXZlbnRzKSl7Yj1mLnRyaW0oSShifHwiIikpLnNwbGl0KCIgIik7Zm9yKGg9MDtoPGIubGVuZ3RoO2grKyl7aT1BLmV4ZWMoYltoXSl8fFtdLGo9az1pWzFdLGw9aVsyXTtpZighail7Zm9yKGogaW4gbylmLmV2ZW50LnJlbW92ZShhLGorYltoXSxjLGQsITApO2NvbnRpbnVlfXA9Zi5ldmVudC5zcGVjaWFsW2pdfHx7fSxqPShkP3AuZGVsZWdhdGVUeXBlOnAuYmluZFR5cGUpfHxqLHI9b1tqXXx8W10sbT1yLmxlbmd0aCxsPWw/bmV3IFJlZ0V4cCgiKF58XFwuKSIrbC5zcGxpdCgiLiIpLnNvcnQoKS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58JCkiKTpudWxsO2ZvcihuPTA7bjxyLmxlbmd0aDtuKyspcz1yW25dLChlfHxrPT09cy5vcmlnVHlwZSkmJighY3x8Yy5ndWlkPT09cy5ndWlkKSYmKCFsfHxsLnRlc3Qocy5uYW1lc3BhY2UpKSYmKCFkfHxkPT09cy5zZWxlY3Rvcnx8ZD09PSIqKiImJnMuc2VsZWN0b3IpJiYoci5zcGxpY2Uobi0tLDEpLHMuc2VsZWN0b3ImJnIuZGVsZWdhdGVDb3VudC0tLHAucmVtb3ZlJiZwLnJlbW92ZS5jYWxsKGEscykpO3IubGVuZ3RoPT09MCYmbSE9PXIubGVuZ3RoJiYoKCFwLnRlYXJkb3dufHxwLnRlYXJkb3duLmNhbGwoYSxsKT09PSExKSYmZi5yZW1vdmVFdmVudChhLGosZy5oYW5kbGUpLGRlbGV0ZSBvW2pdKX1mLmlzRW1wdHlPYmplY3QobykmJihxPWcuaGFuZGxlLHEmJihxLmVsZW09bnVsbCksZi5yZW1vdmVEYXRhKGEsWyJldmVudHMiLCJoYW5kbGUiXSwhMCkpfX0sY3VzdG9tRXZlbnQ6e2dldERhdGE6ITAsc2V0RGF0YTohMCxjaGFuZ2VEYXRhOiEwfSx0cmlnZ2VyOmZ1bmN0aW9uKGMsZCxlLGcpe2lmKCFlfHxlLm5vZGVUeXBlIT09MyYmZS5ub2RlVHlwZSE9PTgpe3ZhciBoPWMudHlwZXx8YyxpPVtdLGosayxsLG0sbixvLHAscSxyLHM7aWYoRS50ZXN0KGgrZi5ldmVudC50cmlnZ2VyZWQpKXJldHVybjtoLmluZGV4T2YoIiEiKT49MCYmKGg9aC5zbGljZSgwLC0xKSxrPSEwKSxoLmluZGV4T2YoIi4iKT49MCYmKGk9aC5zcGxpdCgiLiIpLGg9aS5zaGlmdCgpLGkuc29ydCgpKTtpZigoIWV8fGYuZXZlbnQuY3VzdG9tRXZlbnRbaF0pJiYhZi5ldmVudC5nbG9iYWxbaF0pcmV0dXJuO2M9dHlwZW9mIGM9PSJvYmplY3QiP2NbZi5leHBhbmRvXT9jOm5ldyBmLkV2ZW50KGgsYyk6bmV3IGYuRXZlbnQoaCksYy50eXBlPWgsYy5pc1RyaWdnZXI9ITAsYy5leGNsdXNpdmU9ayxjLm5hbWVzcGFjZT1pLmpvaW4oIi4iKSxjLm5hbWVzcGFjZV9yZT1jLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitpLmpvaW4oIlxcLig/Oi4qXFwuKT8iKSsiKFxcLnwkKSIpOm51bGwsbz1oLmluZGV4T2YoIjoiKTwwPyJvbiIraDoiIjtpZighZSl7aj1mLmNhY2hlO2ZvcihsIGluIGopaltsXS5ldmVudHMmJmpbbF0uZXZlbnRzW2hdJiZmLmV2ZW50LnRyaWdnZXIoYyxkLGpbbF0uaGFuZGxlLmVsZW0sITApO3JldHVybn1jLnJlc3VsdD1iLGMudGFyZ2V0fHwoYy50YXJnZXQ9ZSksZD1kIT1udWxsP2YubWFrZUFycmF5KGQpOltdLGQudW5zaGlmdChjKSxwPWYuZXZlbnQuc3BlY2lhbFtoXXx8e307aWYocC50cmlnZ2VyJiZwLnRyaWdnZXIuYXBwbHkoZSxkKT09PSExKXJldHVybjtyPVtbZSxwLmJpbmRUeXBlfHxoXV07aWYoIWcmJiFwLm5vQnViYmxlJiYhZi5pc1dpbmRvdyhlKSl7cz1wLmRlbGVnYXRlVHlwZXx8aCxtPUUudGVzdChzK2gpP2U6ZS5wYXJlbnROb2RlLG49bnVsbDtmb3IoO207bT1tLnBhcmVudE5vZGUpci5wdXNoKFttLHNdKSxuPW07biYmbj09PWUub3duZXJEb2N1bWVudCYmci5wdXNoKFtuLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvd3x8YSxzXSl9Zm9yKGw9MDtsPHIubGVuZ3RoJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2wrKyltPXJbbF1bMF0sYy50eXBlPXJbbF1bMV0scT0oZi5fZGF0YShtLCJldmVudHMiKXx8e30pW2MudHlwZV0mJmYuX2RhdGEobSwiaGFuZGxlIikscSYmcS5hcHBseShtLGQpLHE9byYmbVtvXSxxJiZmLmFjY2VwdERhdGEobSkmJnEuYXBwbHkobSxkKT09PSExJiZjLnByZXZlbnREZWZhdWx0KCk7Yy50eXBlPWgsIWcmJiFjLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYoIXAuX2RlZmF1bHR8fHAuX2RlZmF1bHQuYXBwbHkoZS5vd25lckRvY3VtZW50LGQpPT09ITEpJiYoaCE9PSJjbGljayJ8fCFmLm5vZGVOYW1lKGUsImEiKSkmJmYuYWNjZXB0RGF0YShlKSYmbyYmZVtoXSYmKGghPT0iZm9jdXMiJiZoIT09ImJsdXIifHxjLnRhcmdldC5vZmZzZXRXaWR0aCE9PTApJiYhZi5pc1dpbmRvdyhlKSYmKG49ZVtvXSxuJiYoZVtvXT1udWxsKSxmLmV2ZW50LnRyaWdnZXJlZD1oLGVbaF0oKSxmLmV2ZW50LnRyaWdnZXJlZD1iLG4mJihlW29dPW4pKTtyZXR1cm4gYy5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihjKXtjPWYuZXZlbnQuZml4KGN8fGEuZXZlbnQpO3ZhciBkPShmLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYy50eXBlXXx8W10sZT1kLmRlbGVnYXRlQ291bnQsZz1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSxoPSFjLmV4Y2x1c2l2ZSYmIWMubmFtZXNwYWNlLGk9W10saixrLGwsbSxuLG8scCxxLHIscyx0O2dbMF09YyxjLmRlbGVnYXRlVGFyZ2V0PXRoaXM7aWYoZSYmIWMudGFyZ2V0LmRpc2FibGVkJiYoIWMuYnV0dG9ufHxjLnR5cGUhPT0iY2xpY2siKSl7bT1mKHRoaXMpLG0uY29udGV4dD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXM7Zm9yKGw9Yy50YXJnZXQ7bCE9dGhpcztsPWwucGFyZW50Tm9kZXx8dGhpcyl7bz17fSxxPVtdLG1bMF09bDtmb3Ioaj0wO2o8ZTtqKyspcj1kW2pdLHM9ci5zZWxlY3RvcixvW3NdPT09YiYmKG9bc109ci5xdWljaz9IKGwsci5xdWljayk6bS5pcyhzKSksb1tzXSYmcS5wdXNoKHIpO3EubGVuZ3RoJiZpLnB1c2goe2VsZW06bCxtYXRjaGVzOnF9KX19ZC5sZW5ndGg+ZSYmaS5wdXNoKHtlbGVtOnRoaXMsbWF0Y2hlczpkLnNsaWNlKGUpfSk7Zm9yKGo9MDtqPGkubGVuZ3RoJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2orKyl7cD1pW2pdLGMuY3VycmVudFRhcmdldD1wLmVsZW07Zm9yKGs9MDtrPHAubWF0Y2hlcy5sZW5ndGgmJiFjLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7aysrKXtyPXAubWF0Y2hlc1trXTtpZihofHwhYy5uYW1lc3BhY2UmJiFyLm5hbWVzcGFjZXx8Yy5uYW1lc3BhY2VfcmUmJmMubmFtZXNwYWNlX3JlLnRlc3Qoci5uYW1lc3BhY2UpKWMuZGF0YT1yLmRhdGEsYy5oYW5kbGVPYmo9cixuPSgoZi5ldmVudC5zcGVjaWFsW3Iub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxyLmhhbmRsZXIpLmFwcGx5KHAuZWxlbSxnKSxuIT09YiYmKGMucmVzdWx0PW4sbj09PSExJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCkpKX19cmV0dXJuIGMucmVzdWx0fSxwcm9wczoiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7YS53aGljaD09bnVsbCYmKGEud2hpY2g9Yi5jaGFyQ29kZSE9bnVsbD9iLmNoYXJDb2RlOmIua2V5Q29kZSk7cmV0dXJuIGF9fSxtb3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50Ii5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGQpe3ZhciBlLGYsZyxoPWQuYnV0dG9uLGk9ZC5mcm9tRWxlbWVudDthLnBhZ2VYPT1udWxsJiZkLmNsaWVudFghPW51bGwmJihlPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fGMsZj1lLmRvY3VtZW50RWxlbWVudCxnPWUuYm9keSxhLnBhZ2VYPWQuY2xpZW50WCsoZiYmZi5zY3JvbGxMZWZ0fHxnJiZnLnNjcm9sbExlZnR8fDApLShmJiZmLmNsaWVudExlZnR8fGcmJmcuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1kLmNsaWVudFkrKGYmJmYuc2Nyb2xsVG9wfHxnJiZnLnNjcm9sbFRvcHx8MCktKGYmJmYuY2xpZW50VG9wfHxnJiZnLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmkmJihhLnJlbGF0ZWRUYXJnZXQ9aT09PWEudGFyZ2V0P2QudG9FbGVtZW50OmkpLCFhLndoaWNoJiZoIT09YiYmKGEud2hpY2g9aCYxPzE6aCYyPzM6aCY0PzI6MCk7cmV0dXJuIGF9fSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtmLmV4cGFuZG9dKXJldHVybiBhO3ZhciBkLGUsZz1hLGg9Zi5ldmVudC5maXhIb29rc1thLnR5cGVdfHx7fSxpPWgucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoaC5wcm9wcyk6dGhpcy5wcm9wczthPWYuRXZlbnQoZyk7Zm9yKGQ9aS5sZW5ndGg7ZDspZT1pWy0tZF0sYVtlXT1nW2VdO2EudGFyZ2V0fHwoYS50YXJnZXQ9Zy5zcmNFbGVtZW50fHxjKSxhLnRhcmdldC5ub2RlVHlwZT09PTMmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9PT1iJiYoYS5tZXRhS2V5PWEuY3RybEtleSk7cmV0dXJuIGguZmlsdGVyP2guZmlsdGVyKGEsZyk6YX0sc3BlY2lhbDp7cmVhZHk6e3NldHVwOmYuYmluZFJlYWR5fSxsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e2RlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e2RlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxiZWZvcmV1bmxvYWQ6e3NldHVwOmZ1bmN0aW9uKGEsYixjKXtmLmlzV2luZG93KHRoaXMpJiYodGhpcy5vbmJlZm9yZXVubG9hZD1jKX0sdGVhcmRvd246ZnVuY3Rpb24oYSxiKXt0aGlzLm9uYmVmb3JldW5sb2FkPT09YiYmKHRoaXMub25iZWZvcmV1bmxvYWQ9bnVsbCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Zi5leHRlbmQobmV3IGYuRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP2YuZXZlbnQudHJpZ2dlcihlLG51bGwsYik6Zi5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sZi5ldmVudC5oYW5kbGU9Zi5ldmVudC5kaXNwYXRjaCxmLnJlbW92ZUV2ZW50PWMucmVtb3ZlRXZlbnRMaXN0ZW5lcj9mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLCExKX06ZnVuY3Rpb24oYSxiLGMpe2EuZGV0YWNoRXZlbnQmJmEuZGV0YWNoRXZlbnQoIm9uIitiLGMpfSxmLkV2ZW50PWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgZi5FdmVudCkpcmV0dXJuIG5ldyBmLkV2ZW50KGEsYik7YSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8YS5yZXR1cm5WYWx1ZT09PSExfHxhLmdldFByZXZlbnREZWZhdWx0JiZhLmdldFByZXZlbnREZWZhdWx0KCk/SzpKKTp0aGlzLnR5cGU9YSxiJiZmLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxmLm5vdygpLHRoaXNbZi5leHBhbmRvXT0hMH0sZi5FdmVudC5wcm90b3R5cGU9e3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9Szt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1LO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDshYXx8KGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1LLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9LGlzRGVmYXVsdFByZXZlbnRlZDpKLGlzUHJvcGFnYXRpb25TdG9wcGVkOkosaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6Sn0sZi5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0sZnVuY3Rpb24oYSxiKXtmLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMsZD1hLnJlbGF0ZWRUYXJnZXQsZT1hLmhhbmRsZU9iaixnPWUuc2VsZWN0b3IsaDtpZighZHx8ZCE9PWMmJiFmLmNvbnRhaW5zKGMsZCkpYS50eXBlPWUub3JpZ1R5cGUsaD1lLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iO3JldHVybiBofX19KSxmLnN1cHBvcnQuc3VibWl0QnViYmxlc3x8KGYuZXZlbnQuc3BlY2lhbC5zdWJtaXQ9e3NldHVwOmZ1bmN0aW9uKCl7aWYoZi5ub2RlTmFtZSh0aGlzLCJmb3JtIikpcmV0dXJuITE7Zi5ldmVudC5hZGQodGhpcywiY2xpY2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0IixmdW5jdGlvbihhKXt2YXIgYz1hLnRhcmdldCxkPWYubm9kZU5hbWUoYywiaW5wdXQiKXx8Zi5ub2RlTmFtZShjLCJidXR0b24iKT9jLmZvcm06YjtkJiYhZC5fc3VibWl0X2F0dGFjaGVkJiYoZi5ldmVudC5hZGQoZCwic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZmLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKX0pLGQuX3N1Ym1pdF9hdHRhY2hlZD0hMCl9KX0sdGVhcmRvd246ZnVuY3Rpb24oKXtpZihmLm5vZGVOYW1lKHRoaXMsImZvcm0iKSlyZXR1cm4hMTtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX3N1Ym1pdCIpfX0pLGYuc3VwcG9ydC5jaGFuZ2VCdWJibGVzfHwoZi5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtpZih6LnRlc3QodGhpcy5ub2RlTmFtZSkpe2lmKHRoaXMudHlwZT09PSJjaGVja2JveCJ8fHRoaXMudHlwZT09PSJyYWRpbyIpZi5ldmVudC5hZGQodGhpcywicHJvcGVydHljaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7YS5vcmlnaW5hbEV2ZW50LnByb3BlcnR5TmFtZT09PSJjaGVja2VkIiYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMCl9KSxmLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fY2hhbmdlIixmdW5jdGlvbihhKXt0aGlzLl9qdXN0X2NoYW5nZWQmJiFhLmlzVHJpZ2dlciYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMSxmLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCkpfSk7cmV0dXJuITF9Zi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7ei50ZXN0KGIubm9kZU5hbWUpJiYhYi5fY2hhbmdlX2F0dGFjaGVkJiYoZi5ldmVudC5hZGQoYiwiY2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmIWEuaXNTaW11bGF0ZWQmJiFhLmlzVHJpZ2dlciYmZi5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxiLl9jaGFuZ2VfYXR0YWNoZWQ9ITApfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtpZih0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fGIudHlwZSE9PSJyYWRpbyImJmIudHlwZSE9PSJjaGVja2JveCIpcmV0dXJuIGEuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2YuZXZlbnQucmVtb3ZlKHRoaXMsIi5fY2hhbmdlIik7cmV0dXJuIHoudGVzdCh0aGlzLm5vZGVOYW1lKX19KSxmLnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXN8fGYuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXt2YXIgZD0wLGU9ZnVuY3Rpb24oYSl7Zi5ldmVudC5zaW11bGF0ZShiLGEudGFyZ2V0LGYuZXZlbnQuZml4KGEpLCEwKX07Zi5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe2QrKz09PTAmJmMuYWRkRXZlbnRMaXN0ZW5lcihhLGUsITApfSx0ZWFyZG93bjpmdW5jdGlvbigpey0tZD09PTAmJmMucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGUsITApfX19KSxmLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxjLGQsZSxnKXt2YXIgaCxpO2lmKHR5cGVvZiBhPT0ib2JqZWN0Iil7dHlwZW9mIGMhPSJzdHJpbmciJiYoZD1jLGM9Yik7Zm9yKGkgaW4gYSl0aGlzLm9uKGksYyxkLGFbaV0sZyk7cmV0dXJuIHRoaXN9ZD09bnVsbCYmZT09bnVsbD8oZT1jLGQ9Yz1iKTplPT1udWxsJiYodHlwZW9mIGM9PSJzdHJpbmciPyhlPWQsZD1iKTooZT1kLGQ9YyxjPWIpKTtpZihlPT09ITEpZT1KO2Vsc2UgaWYoIWUpcmV0dXJuIHRoaXM7Zz09PTEmJihoPWUsZT1mdW5jdGlvbihhKXtmKCkub2ZmKGEpO3JldHVybiBoLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5ndWlkPWguZ3VpZHx8KGguZ3VpZD1mLmd1aWQrKykpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LmFkZCh0aGlzLGEsZSxkLGMpfSl9LG9uZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbi5jYWxsKHRoaXMsYSxiLGMsZCwxKX0sb2ZmOmZ1bmN0aW9uKGEsYyxkKXtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iail7dmFyIGU9YS5oYW5kbGVPYmo7ZihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZS5uYW1lc3BhY2U/ZS50eXBlKyIuIitlLm5hbWVzcGFjZTplLnR5cGUsZS5zZWxlY3RvcixlLmhhbmRsZXIpO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ib2JqZWN0Iil7Zm9yKHZhciBnIGluIGEpdGhpcy5vZmYoZyxjLGFbZ10pO3JldHVybiB0aGlzfWlmKGM9PT0hMXx8dHlwZW9mIGM9PSJmdW5jdGlvbiIpZD1jLGM9YjtkPT09ITEmJihkPUopO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLGEsZCxjKX0pfSxiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sbGl2ZTpmdW5jdGlvbihhLGIsYyl7Zih0aGlzLmNvbnRleHQpLm9uKGEsdGhpcy5zZWxlY3RvcixiLGMpO3JldHVybiB0aGlzfSxkaWU6ZnVuY3Rpb24oYSxiKXtmKHRoaXMuY29udGV4dCkub2ZmKGEsdGhpcy5zZWxlY3Rvcnx8IioqIixiKTtyZXR1cm4gdGhpc30sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT0xP3RoaXMub2ZmKGEsIioqIik6dGhpcy5vZmYoYixhLGMpfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXtpZih0aGlzWzBdKXJldHVybiBmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXNbMF0sITApfSx0b2dnbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLGM9YS5ndWlkfHxmLmd1aWQrKyxkPTAsZT1mdW5jdGlvbihjKXt2YXIgZT0oZi5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQpfHwwKSVkO2YuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkLGUrMSksYy5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBiW2VdLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8ITF9O2UuZ3VpZD1jO3doaWxlKGQ8Yi5sZW5ndGgpYltkKytdLmd1aWQ9YztyZXR1cm4gdGhpcy5jbGljayhlKX0saG92ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoYnx8YSl9fSksZi5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7Zi5mbltiXT1mdW5jdGlvbihhLGMpe2M9PW51bGwmJihjPWEsYT1udWxsKTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfSxmLmF0dHJGbiYmKGYuYXR0ckZuW2JdPSEwKSxDLnRlc3QoYikmJihmLmV2ZW50LmZpeEhvb2tzW2JdPWYuZXZlbnQua2V5SG9va3MpLEQudGVzdChiKSYmKGYuZXZlbnQuZml4SG9va3NbYl09Zi5ldmVudC5tb3VzZUhvb2tzKX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24geChhLGIsYyxlLGYsZyl7Zm9yKHZhciBoPTAsaT1lLmxlbmd0aDtoPGk7aCsrKXt2YXIgaj1lW2hdO2lmKGope3ZhciBrPSExO2o9althXTt3aGlsZShqKXtpZihqW2RdPT09Yyl7az1lW2ouc2l6c2V0XTticmVha31pZihqLm5vZGVUeXBlPT09MSl7Z3x8KGpbZF09YyxqLnNpenNldD1oKTtpZih0eXBlb2YgYiE9InN0cmluZyIpe2lmKGo9PT1iKXtrPSEwO2JyZWFrfX1lbHNlIGlmKG0uZmlsdGVyKGIsW2pdKS5sZW5ndGg+MCl7az1qO2JyZWFrfX1qPWpbYV19ZVtoXT1rfX19ZnVuY3Rpb24gdyhhLGIsYyxlLGYsZyl7Zm9yKHZhciBoPTAsaT1lLmxlbmd0aDtoPGk7aCsrKXt2YXIgaj1lW2hdO2lmKGope3ZhciBrPSExO2o9althXTt3aGlsZShqKXtpZihqW2RdPT09Yyl7az1lW2ouc2l6c2V0XTticmVha31qLm5vZGVUeXBlPT09MSYmIWcmJihqW2RdPWMsai5zaXpzZXQ9aCk7aWYoai5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yil7az1qO2JyZWFrfWo9althXX1lW2hdPWt9fX12YXIgYT0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXlxbXF1dKlxdfFsnIl1bXiciXSpbJyJdfFteXFtcXSciXSspK1xdfFxcLnxbXiA+K34sKFxbXFxdKykrfFs+K35dKShccyosXHMqKT8oKD86LnxccnxcbikqKS9nLGQ9InNpemNhY2hlIisoTWF0aC5yYW5kb20oKSsiIikucmVwbGFjZSgiLiIsIiIpLGU9MCxnPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsaD0hMSxpPSEwLGo9L1xcL2csaz0vXHJcbi9nLGw9L1xXLztbMCwwXS5zb3J0KGZ1bmN0aW9uKCl7aT0hMTtyZXR1cm4gMH0pO3ZhciBtPWZ1bmN0aW9uKGIsZCxlLGYpe2U9ZXx8W10sZD1kfHxjO3ZhciBoPWQ7aWYoZC5ub2RlVHlwZSE9PTEmJmQubm9kZVR5cGUhPT05KXJldHVybltdO2lmKCFifHx0eXBlb2YgYiE9InN0cmluZyIpcmV0dXJuIGU7dmFyIGksaixrLGwsbixxLHIsdCx1PSEwLHY9bS5pc1hNTChkKSx3PVtdLHg9Yjtkb3thLmV4ZWMoIiIpLGk9YS5leGVjKHgpO2lmKGkpe3g9aVszXSx3LnB1c2goaVsxXSk7aWYoaVsyXSl7bD1pWzNdO2JyZWFrfX19d2hpbGUoaSk7aWYody5sZW5ndGg+MSYmcC5leGVjKGIpKWlmKHcubGVuZ3RoPT09MiYmby5yZWxhdGl2ZVt3WzBdXSlqPXkod1swXSt3WzFdLGQsZik7ZWxzZXtqPW8ucmVsYXRpdmVbd1swXV0/W2RdOm0ody5zaGlmdCgpLGQpO3doaWxlKHcubGVuZ3RoKWI9dy5zaGlmdCgpLG8ucmVsYXRpdmVbYl0mJihiKz13LnNoaWZ0KCkpLGo9eShiLGosZil9ZWxzZXshZiYmdy5sZW5ndGg+MSYmZC5ub2RlVHlwZT09PTkmJiF2JiZvLm1hdGNoLklELnRlc3Qod1swXSkmJiFvLm1hdGNoLklELnRlc3Qod1t3Lmxlbmd0aC0xXSkmJihuPW0uZmluZCh3LnNoaWZ0KCksZCx2KSxkPW4uZXhwcj9tLmZpbHRlcihuLmV4cHIsbi5zZXQpWzBdOm4uc2V0WzBdKTtpZihkKXtuPWY/e2V4cHI6dy5wb3AoKSxzZXQ6cyhmKX06bS5maW5kKHcucG9wKCksdy5sZW5ndGg9PT0xJiYod1swXT09PSJ+Inx8d1swXT09PSIrIikmJmQucGFyZW50Tm9kZT9kLnBhcmVudE5vZGU6ZCx2KSxqPW4uZXhwcj9tLmZpbHRlcihuLmV4cHIsbi5zZXQpOm4uc2V0LHcubGVuZ3RoPjA/az1zKGopOnU9ITE7d2hpbGUody5sZW5ndGgpcT13LnBvcCgpLHI9cSxvLnJlbGF0aXZlW3FdP3I9dy5wb3AoKTpxPSIiLHI9PW51bGwmJihyPWQpLG8ucmVsYXRpdmVbcV0oayxyLHYpfWVsc2Ugaz13PVtdfWt8fChrPWopLGt8fG0uZXJyb3IocXx8Yik7aWYoZy5jYWxsKGspPT09IltvYmplY3QgQXJyYXldIilpZighdSllLnB1c2guYXBwbHkoZSxrKTtlbHNlIGlmKGQmJmQubm9kZVR5cGU9PT0xKWZvcih0PTA7a1t0XSE9bnVsbDt0Kyspa1t0XSYmKGtbdF09PT0hMHx8a1t0XS5ub2RlVHlwZT09PTEmJm0uY29udGFpbnMoZCxrW3RdKSkmJmUucHVzaChqW3RdKTtlbHNlIGZvcih0PTA7a1t0XSE9bnVsbDt0Kyspa1t0XSYma1t0XS5ub2RlVHlwZT09PTEmJmUucHVzaChqW3RdKTtlbHNlIHMoayxlKTtsJiYobShsLGgsZSxmKSxtLnVuaXF1ZVNvcnQoZSkpO3JldHVybiBlfTttLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7aWYodSl7aD1pLGEuc29ydCh1KTtpZihoKWZvcih2YXIgYj0xO2I8YS5sZW5ndGg7YisrKWFbYl09PT1hW2ItMV0mJmEuc3BsaWNlKGItLSwxKX1yZXR1cm4gYX0sbS5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG0oYSxudWxsLG51bGwsYil9LG0ubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG0oYixudWxsLG51bGwsW2FdKS5sZW5ndGg+MH0sbS5maW5kPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7aWYoIWEpcmV0dXJuW107Zm9yKGU9MCxmPW8ub3JkZXIubGVuZ3RoO2U8ZjtlKyspe2g9by5vcmRlcltlXTtpZihnPW8ubGVmdE1hdGNoW2hdLmV4ZWMoYSkpe2k9Z1sxXSxnLnNwbGljZSgxLDEpO2lmKGkuc3Vic3RyKGkubGVuZ3RoLTEpIT09IlxcIil7Z1sxXT0oZ1sxXXx8IiIpLnJlcGxhY2UoaiwiIiksZD1vLmZpbmRbaF0oZyxiLGMpO2lmKGQhPW51bGwpe2E9YS5yZXBsYWNlKG8ubWF0Y2hbaF0sIiIpO2JyZWFrfX19fWR8fChkPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIj9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik6W10pO3JldHVybntzZXQ6ZCxleHByOmF9fSxtLmZpbHRlcj1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLHAscT1hLHI9W10scz1jLHQ9YyYmY1swXSYmbS5pc1hNTChjWzBdKTt3aGlsZShhJiZjLmxlbmd0aCl7Zm9yKGggaW4gby5maWx0ZXIpaWYoKGY9by5sZWZ0TWF0Y2hbaF0uZXhlYyhhKSkhPW51bGwmJmZbMl0pe2s9by5maWx0ZXJbaF0sbD1mWzFdLGc9ITEsZi5zcGxpY2UoMSwxKTtpZihsLnN1YnN0cihsLmxlbmd0aC0xKT09PSJcXCIpY29udGludWU7cz09PXImJihyPVtdKTtpZihvLnByZUZpbHRlcltoXSl7Zj1vLnByZUZpbHRlcltoXShmLHMsZCxyLGUsdCk7aWYoIWYpZz1pPSEwO2Vsc2UgaWYoZj09PSEwKWNvbnRpbnVlfWlmKGYpZm9yKG49MDsoaj1zW25dKSE9bnVsbDtuKyspaiYmKGk9ayhqLGYsbixzKSxwPWVeaSxkJiZpIT1udWxsP3A/Zz0hMDpzW25dPSExOnAmJihyLnB1c2goaiksZz0hMCkpO2lmKGkhPT1iKXtkfHwocz1yKSxhPWEucmVwbGFjZShvLm1hdGNoW2hdLCIiKTtpZighZylyZXR1cm5bXTticmVha319aWYoYT09PXEpaWYoZz09bnVsbCltLmVycm9yKGEpO2Vsc2UgYnJlYWs7cT1hfXJldHVybiBzfSxtLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX07dmFyIG49bS5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1hLm5vZGVUeXBlLGU9IiI7aWYoZCl7aWYoZD09PTF8fGQ9PT05KXtpZih0eXBlb2YgYS50ZXh0Q29udGVudD09InN0cmluZyIpcmV0dXJuIGEudGV4dENvbnRlbnQ7aWYodHlwZW9mIGEuaW5uZXJUZXh0PT0ic3RyaW5nIilyZXR1cm4gYS5pbm5lclRleHQucmVwbGFjZShrLCIiKTtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpZSs9bihhKX1lbHNlIGlmKGQ9PT0zfHxkPT09NClyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoYj0wO2M9YVtiXTtiKyspYy5ub2RlVHlwZSE9PTgmJihlKz1uKGMpKTtyZXR1cm4gZX0sbz1tLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5BTUUiLCJUQUciXSxtYXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLENMQVNTOi9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sTkFNRTovXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspWyciXSpcXS8sQVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylccyooPzooXFM/PSlccyooPzooWyciXSkoLio/KVwzfCgjPyg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSopfCl8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKFxzKihldmVufG9kZHwoPzpbK1wtXT9cZCt8KD86WytcLV0/XGQqKT9uXHMqKD86WytcLV1ccypcZCspPykpXHMqXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W15cLV18JCkvLFBTRVVETzovOigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNoOnt9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBiPT0ic3RyaW5nIixkPWMmJiFsLnRlc3QoYiksZT1jJiYhZDtkJiYoYj1iLnRvTG93ZXJDYXNlKCkpO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGgsaDtmPGc7ZisrKWlmKGg9YVtmXSl7d2hpbGUoKGg9aC5wcmV2aW91c1NpYmxpbmcpJiZoLm5vZGVUeXBlIT09MSk7YVtmXT1lfHxoJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2h8fCExOmg9PT1ifWUmJm0uZmlsdGVyKGIsYSwhMCl9LCI+IjpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9dHlwZW9mIGI9PSJzdHJpbmciLGU9MCxmPWEubGVuZ3RoO2lmKGQmJiFsLnRlc3QoYikpe2I9Yi50b0xvd2VyQ2FzZSgpO2Zvcig7ZTxmO2UrKyl7Yz1hW2VdO2lmKGMpe3ZhciBnPWMucGFyZW50Tm9kZTthW2VdPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/ZzohMX19fWVsc2V7Zm9yKDtlPGY7ZSsrKWM9YVtlXSxjJiYoYVtlXT1kP2MucGFyZW50Tm9kZTpjLnBhcmVudE5vZGU9PT1iKTtkJiZtLmZpbHRlcihiLGEsITApfX0sIiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwYXJlbnROb2RlIixiLGYsYSxkLGMpfSwifiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwcmV2aW91c1NpYmxpbmciLGIsZixhLGQsYyl9fSxmaW5kOntJRDpmdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhYyl7dmFyIGQ9Yi5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LE5BTUU6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5TmFtZSE9InVuZGVmaW5lZCIpe3ZhciBjPVtdLGQ9Yi5nZXRFbGVtZW50c0J5TmFtZShhWzFdKTtmb3IodmFyIGU9MCxmPWQubGVuZ3RoO2U8ZjtlKyspZFtlXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PWFbMV0mJmMucHVzaChkW2VdKTtyZXR1cm4gYy5sZW5ndGg9PT0wP251bGw6Y319LFRBRzpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIilyZXR1cm4gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9IiAiK2FbMV0ucmVwbGFjZShqLCIiKSsiICI7aWYoZilyZXR1cm4gYTtmb3IodmFyIGc9MCxoOyhoPWJbZ10pIT1udWxsO2crKyloJiYoZV4oaC5jbGFzc05hbWUmJigiICIraC5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKC9bXHRcblxyXS9nLCIgIikuaW5kZXhPZihhKT49MCk/Y3x8ZC5wdXNoKGgpOmMmJihiW2ddPSExKSk7cmV0dXJuITF9LElEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIil9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIikudG9Mb3dlckNhc2UoKX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7aWYoYVsxXT09PSJudGgiKXthWzJdfHxtLmVycm9yKGFbMF0pLGFbMl09YVsyXS5yZXBsYWNlKC9eXCt8XHMqL2csIiIpO3ZhciBiPS8oLT8pKFxkKikoPzpuKFsrXC1dP1xkKikpPy8uZXhlYyhhWzJdPT09ImV2ZW4iJiYiMm4ifHxhWzJdPT09Im9kZCImJiIybisxInx8IS9cRC8udGVzdChhWzJdKSYmIjBuKyIrYVsyXXx8YVsyXSk7YVsyXT1iWzFdKyhiWzJdfHwxKS0wLGFbM109YlszXS0wfWVsc2UgYVsyXSYmbS5lcnJvcihhWzBdKTthWzBdPWUrKztyZXR1cm4gYX0sQVRUUjpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YVsxXT1hWzFdLnJlcGxhY2UoaiwiIik7IWYmJm8uYXR0ck1hcFtnXSYmKGFbMV09by5hdHRyTWFwW2ddKSxhWzRdPShhWzRdfHxhWzVdfHwiIikucmVwbGFjZShqLCIiKSxhWzJdPT09In49IiYmKGFbNF09IiAiK2FbNF0rIiAiKTtyZXR1cm4gYX0sUFNFVURPOmZ1bmN0aW9uKGIsYyxkLGUsZil7aWYoYlsxXT09PSJub3QiKWlmKChhLmV4ZWMoYlszXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChiWzNdKSliWzNdPW0oYlszXSxudWxsLG51bGwsYyk7ZWxzZXt2YXIgZz1tLmZpbHRlcihiWzNdLGMsZCwhMF5mKTtkfHxlLnB1c2guYXBwbHkoZSxnKTtyZXR1cm4hMX1lbHNlIGlmKG8ubWF0Y2guUE9TLnRlc3QoYlswXSl8fG8ubWF0Y2guQ0hJTEQudGVzdChiWzBdKSlyZXR1cm4hMDtyZXR1cm4gYn0sUE9TOmZ1bmN0aW9uKGEpe2EudW5zaGlmdCghMCk7cmV0dXJuIGF9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITEmJmEudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNoZWNrZWQ9PT0hMH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtyZXR1cm4gYS5zZWxlY3RlZD09PSEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuISFhLmZpcnN0Q2hpbGR9LGVtcHR5OmZ1bmN0aW9uKGEpe3JldHVybiFhLmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuISFtKGNbM10sYSkubGVuZ3RofSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuL2hcZC9pLnRlc3QoYS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSxjPWEudHlwZTtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInRleHQiPT09YyYmKGI9PT1jfHxiPT09bnVsbCl9LHJhZGlvOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYicmFkaW8iPT09YS50eXBlfSxjaGVja2JveDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImNoZWNrYm94Ij09PWEudHlwZX0sZmlsZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImZpbGUiPT09YS50eXBlfSxwYXNzd29yZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInBhc3N3b3JkIj09PWEudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJzdWJtaXQiPT09YS50eXBlfSxpbWFnZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImltYWdlIj09PWEudHlwZX0scmVzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihiPT09ImlucHV0Inx8Yj09PSJidXR0b24iKSYmInJlc2V0Ij09PWEudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYj09PSJpbnB1dCImJiJidXR0b24iPT09YS50eXBlfHxiPT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybi9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKX0sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1hLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudH19LHNldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0wfSxsYXN0OmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiPT09ZC5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MX0sbHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPGNbM10tMH0sZ3Q6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPmNbM10tMH0sbnRoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn0sZXE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsxXSxmPW8uZmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpO2lmKGU9PT0iY29udGFpbnMiKXJldHVybihhLnRleHRDb250ZW50fHxhLmlubmVyVGV4dHx8bihbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIpe3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdbaF09PT1hKXJldHVybiExO3JldHVybiEwfW0uZXJyb3IoZSl9LENISUxEOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz1iWzFdLGw9YTtzd2l0Y2goayl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShsPWwucHJldmlvdXNTaWJsaW5nKWlmKGwubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGs9PT0iZmlyc3QiKXJldHVybiEwO2w9YTtjYXNlImxhc3QiOndoaWxlKGw9bC5uZXh0U2libGluZylpZihsLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMDtjYXNlIm50aCI6Yz1iWzJdLGU9YlszXTtpZihjPT09MSYmZT09PTApcmV0dXJuITA7Zj1iWzBdLGc9YS5wYXJlbnROb2RlO2lmKGcmJihnW2RdIT09Znx8IWEubm9kZUluZGV4KSl7aT0wO2ZvcihsPWcuZmlyc3RDaGlsZDtsO2w9bC5uZXh0U2libGluZylsLm5vZGVUeXBlPT09MSYmKGwubm9kZUluZGV4PSsraSk7Z1tkXT1mfWo9YS5ub2RlSW5kZXgtZTtyZXR1cm4gYz09PTA/aj09PTA6aiVjPT09MCYmai9jPj0wfX0sSUQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0iKiImJmEubm9kZVR5cGU9PT0xfHwhIWEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNTOmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9bS5hdHRyP20uYXR0cihhLGMpOm8uYXR0ckhhbmRsZVtjXT9vLmF0dHJIYW5kbGVbY10oYSk6YVtjXSE9bnVsbD9hW2NdOmEuZ2V0QXR0cmlidXRlKGMpLGU9ZCsiIixmPWJbMl0sZz1iWzRdO3JldHVybiBkPT1udWxsP2Y9PT0iIT0iOiFmJiZtLmF0dHI/ZCE9bnVsbDpmPT09Ij0iP2U9PT1nOmY9PT0iKj0iP2UuaW5kZXhPZihnKT49MDpmPT09In49Ij8oIiAiK2UrIiAiKS5pbmRleE9mKGcpPj0wOmc/Zj09PSIhPSI/ZSE9PWc6Zj09PSJePSI/ZS5pbmRleE9mKGcpPT09MDpmPT09IiQ9Ij9lLnN1YnN0cihlLmxlbmd0aC1nLmxlbmd0aCk9PT1nOmY9PT0ifD0iP2U9PT1nfHxlLnN1YnN0cigwLGcubGVuZ3RoKzEpPT09ZysiLSI6ITE6ZSYmZCE9PSExfSxQT1M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsyXSxmPW8uc2V0RmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpfX19LHA9by5tYXRjaC5QT1MscT1mdW5jdGlvbihhLGIpe3JldHVybiJcXCIrKGItMCsxKX07Zm9yKHZhciByIGluIG8ubWF0Y2gpby5tYXRjaFtyXT1uZXcgUmVnRXhwKG8ubWF0Y2hbcl0uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSksby5sZWZ0TWF0Y2hbcl09bmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291cmNlK28ubWF0Y2hbcl0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykvZyxxKSk7dmFyIHM9ZnVuY3Rpb24oYSxiKXthPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCk7aWYoYil7Yi5wdXNoLmFwcGx5KGIsYSk7cmV0dXJuIGJ9cmV0dXJuIGF9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKHQpe3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9Ynx8W107aWYoZy5jYWxsKGEpPT09IltvYmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGEpO2Vsc2UgaWYodHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGU9YS5sZW5ndGg7YzxlO2MrKylkLnB1c2goYVtjXSk7ZWxzZSBmb3IoO2FbY107YysrKWQucHVzaChhW2NdKTtyZXR1cm4gZH19dmFyIHUsdjtjLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj91PWZ1bmN0aW9uKGEsYil7aWYoYT09PWIpe2g9ITA7cmV0dXJuIDB9aWYoIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb258fCFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjE7cmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmND8tMToxfToodT1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtoPSEwO3JldHVybiAwfWlmKGEuc291cmNlSW5kZXgmJmIuc291cmNlSW5kZXgpcmV0dXJuIGEuc291cmNlSW5kZXgtYi5zb3VyY2VJbmRleDt2YXIgYyxkLGU9W10sZj1bXSxnPWEucGFyZW50Tm9kZSxpPWIucGFyZW50Tm9kZSxqPWc7aWYoZz09PWkpcmV0dXJuIHYoYSxiKTtpZighZylyZXR1cm4tMTtpZighaSlyZXR1cm4gMTt3aGlsZShqKWUudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtqPWk7d2hpbGUoailmLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaz0wO2s8YyYmazxkO2srKylpZihlW2tdIT09ZltrXSlyZXR1cm4gdihlW2tdLGZba10pO3JldHVybiBrPT09Yz92KGEsZltrXSwtMSk6dihlW2tdLGIsMSl9LHY9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBjO3ZhciBkPWEubmV4dFNpYmxpbmc7d2hpbGUoZCl7aWYoZD09PWIpcmV0dXJuLTE7ZD1kLm5leHRTaWJsaW5nfXJldHVybiAxfSksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZT1jLmRvY3VtZW50RWxlbWVudDthLmlubmVySFRNTD0iPGEgbmFtZT0nIitkKyInLz4iLGUuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKSxjLmdldEVsZW1lbnRCeUlkKGQpJiYoby5maW5kLklEPWZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYy5nZXRFbGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFkKXt2YXIgZT1jLmdldEVsZW1lbnRCeUlkKGFbMV0pO3JldHVybiBlP2UuaWQ9PT1hWzFdfHx0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZT09PWFbMV0/W2VdOmI6W119fSxvLmZpbHRlci5JRD1mdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmluZWQiJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZjJiZjLm5vZGVWYWx1ZT09PWJ9KSxlLnJlbW92ZUNoaWxkKGEpLGU9YT1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKGMuY3JlYXRlQ29tbWVudCgiIikpLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCYmKG8uZmluZC5UQUc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pO2lmKGFbMV09PT0iKiIpe3ZhciBkPVtdO2Zvcih2YXIgZT0wO2NbZV07ZSsrKWNbZV0ubm9kZVR5cGU9PT0xJiZkLnB1c2goY1tlXSk7Yz1kfXJldHVybiBjfSksYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLGEuZmlyc3RDaGlsZCYmdHlwZW9mIGEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPSJ1bmRlZmluZWQiJiZhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0iIyImJihvLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSksYT1udWxsfSgpLGMucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYT1tLGI9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJfX3NpenpsZV9fIjtiLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKCFiLnF1ZXJ5U2VsZWN0b3JBbGx8fGIucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGghPT0wKXttPWZ1bmN0aW9uKGIsZSxmLGcpe2U9ZXx8YztpZighZyYmIW0uaXNYTUwoZSkpe3ZhciBoPS9eKFx3KyQpfF5cLihbXHdcLV0rJCl8XiMoW1x3XC1dKyQpLy5leGVjKGIpO2lmKGgmJihlLm5vZGVUeXBlPT09MXx8ZS5ub2RlVHlwZT09PTkpKXtpZihoWzFdKXJldHVybiBzKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYiksZik7aWYoaFsyXSYmby5maW5kLkNMQVNTJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHMoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGhbMl0pLGYpfWlmKGUubm9kZVR5cGU9PT05KXtpZihiPT09ImJvZHkiJiZlLmJvZHkpcmV0dXJuIHMoW2UuYm9keV0sZik7aWYoaCYmaFszXSl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChoWzNdKTtpZighaXx8IWkucGFyZW50Tm9kZSlyZXR1cm4gcyhbXSxmKTtpZihpLmlkPT09aFszXSlyZXR1cm4gcyhbaV0sZil9dHJ5e3JldHVybiBzKGUucXVlcnlTZWxlY3RvckFsbChiKSxmKX1jYXRjaChqKXt9fWVsc2UgaWYoZS5ub2RlVHlwZT09PTEmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJvYmplY3QiKXt2YXIgaz1lLGw9ZS5nZXRBdHRyaWJ1dGUoImlkIiksbj1sfHxkLHA9ZS5wYXJlbnROb2RlLHE9L15ccypbK35dLy50ZXN0KGIpO2w/bj1uLnJlcGxhY2UoLycvZywiXFwkJiIpOmUuc2V0QXR0cmlidXRlKCJpZCIsbikscSYmcCYmKGU9ZS5wYXJlbnROb2RlKTt0cnl7aWYoIXF8fHApcmV0dXJuIHMoZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWQ9JyIrbisiJ10gIitiKSxmKX1jYXRjaChyKXt9ZmluYWxseXtsfHxrLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBhKGIsZSxmLGcpfTtmb3IodmFyIGUgaW4gYSltW2VdPWFbZV07Yj1udWxsfX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuZG9jdW1lbnRFbGVtZW50LGI9YS5tYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcjtpZihiKXt2YXIgZD0hYi5jYWxsKGMuY3JlYXRlRWxlbWVudCgiZGl2IiksImRpdiIpLGU9ITE7dHJ5e2IuY2FsbChjLmRvY3VtZW50RWxlbWVudCwiW3Rlc3QhPScnXTpzaXp6bGUiKX1jYXRjaChmKXtlPSEwfW0ubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYyl7Yz1jLnJlcGxhY2UoL1w9XHMqKFteJyJcXV0qKVxzKlxdL2csIj0nJDEnXSIpO2lmKCFtLmlzWE1MKGEpKXRyeXtpZihlfHwhby5tYXRjaC5QU0VVRE8udGVzdChjKSYmIS8hPS8udGVzdChjKSl7dmFyIGY9Yi5jYWxsKGEsYyk7aWYoZnx8IWR8fGEuZG9jdW1lbnQmJmEuZG9jdW1lbnQubm9kZVR5cGUhPT0xMSlyZXR1cm4gZn19Y2F0Y2goZyl7fXJldHVybiBtKGMsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9fX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J3Rlc3QgZSc+PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+IjtpZighIWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MCl7YS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0xKXJldHVybjtvLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIiksby5maW5kLkNMQVNTPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT0idW5kZWZpbmVkIiYmIWMpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhWzFdKX0sYT1udWxsfX0oKSxjLmRvY3VtZW50RWxlbWVudC5jb250YWlucz9tLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1iJiYoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOiEwKX06Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/bS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTptLmNvbnRhaW5zPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG0uaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9KGE/YS5vd25lckRvY3VtZW50fHxhOjApLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1bXSxmPSIiLGc9Yi5ub2RlVHlwZT9bYl06Yjt3aGlsZShkPW8ubWF0Y2guUFNFVURPLmV4ZWMoYSkpZis9ZFswXSxhPWEucmVwbGFjZShvLm1hdGNoLlBTRVVETywiIik7YT1vLnJlbGF0aXZlW2FdP2ErIioiOmE7Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKW0oYSxnW2hdLGUsYyk7cmV0dXJuIG0uZmlsdGVyKGYsZSl9O20uYXR0cj1mLmF0dHIsbS5zZWxlY3RvcnMuYXR0ck1hcD17fSxmLmZpbmQ9bSxmLmV4cHI9bS5zZWxlY3RvcnMsZi5leHByWyI6Il09Zi5leHByLmZpbHRlcnMsZi51bmlxdWU9bS51bmlxdWVTb3J0LGYudGV4dD1tLmdldFRleHQsZi5pc1hNTERvYz1tLmlzWE1MLGYuY29udGFpbnM9bS5jb250YWluc30oKTt2YXIgTD0vVW50aWwkLyxNPS9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLE49LywvLE89L14uW146I1xbXC4sXSokLyxQPUFycmF5LnByb3RvdHlwZS5zbGljZSxRPWYuZXhwci5tYXRjaC5QT1MsUj17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGMsZDtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuIGYoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoZi5jb250YWlucyhiW2NdLHRoaXMpKXJldHVybiEwfSk7dmFyIGU9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGcsaCxpO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtnPWUubGVuZ3RoLGYuZmluZChhLHRoaXNbY10sZSk7aWYoYz4wKWZvcihoPWc7aDxlLmxlbmd0aDtoKyspZm9yKGk9MDtpPGc7aSsrKWlmKGVbaV09PT1lW2hdKXtlLnNwbGljZShoLS0sMSk7YnJlYWt9fXJldHVybiBlfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZihhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxjPWIubGVuZ3RoO2E8YzthKyspaWYoZi5jb250YWlucyh0aGlzLGJbYV0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVCh0aGlzLGEsITEpLCJub3QiLGEpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFQodGhpcyxhLCEwKSwiZmlsdGVyIixhKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYodHlwZW9mIGE9PSJzdHJpbmciP1EudGVzdChhKT9mKGEsdGhpcy5jb250ZXh0KS5pbmRleCh0aGlzWzBdKT49MDpmLmZpbHRlcihhLHRoaXMpLmxlbmd0aD4wOnRoaXMuZmlsdGVyKGEpLmxlbmd0aD4wKX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQsZSxnPXRoaXNbMF07aWYoZi5pc0FycmF5KGEpKXt2YXIgaD0xO3doaWxlKGcmJmcub3duZXJEb2N1bWVudCYmZyE9PWIpe2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspZihnKS5pcyhhW2RdKSYmYy5wdXNoKHtzZWxlY3RvcjphW2RdLGVsZW06ZyxsZXZlbDpofSk7Zz1nLnBhcmVudE5vZGUsaCsrfXJldHVybiBjfXZhciBpPVEudGVzdChhKXx8dHlwZW9mIGEhPSJzdHJpbmciP2YoYSxifHx0aGlzLmNvbnRleHQpOjA7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2c9dGhpc1tkXTt3aGlsZShnKXtpZihpP2kuaW5kZXgoZyk+LTE6Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihnLGEpKXtjLnB1c2goZyk7YnJlYWt9Zz1nLnBhcmVudE5vZGU7aWYoIWd8fCFnLm93bmVyRG9jdW1lbnR8fGc9PT1ifHxnLm5vZGVUeXBlPT09MTEpYnJlYWt9fWM9Yy5sZW5ndGg+MT9mLnVuaXF1ZShjKTpjO3JldHVybiB0aGlzLnB1c2hTdGFjayhjLCJjbG9zZXN0IixhKX0saW5kZXg6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLnByZXZBbGwoKS5sZW5ndGg6LTE7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBmLmluQXJyYXkodGhpc1swXSxmKGEpKTtyZXR1cm4gZi5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE9PSJzdHJpbmciP2YoYSxiKTpmLm1ha2VBcnJheShhJiZhLm5vZGVUeXBlP1thXTphKSxkPWYubWVyZ2UodGhpcy5nZXQoKSxjKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhjWzBdKXx8UyhkWzBdKT9kOmYudW5pcXVlKGQpKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfX0pLGYuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5ub2RlVHlwZSE9PTExP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZi5udGgoYSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Zi5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPWYubWFwKHRoaXMsYixjKTtMLnRlc3QoYSl8fChkPWMpLGQmJnR5cGVvZiBkPT0ic3RyaW5nIiYmKGU9Zi5maWx0ZXIoZCxlKSksZT10aGlzLmxlbmd0aD4xJiYhUlthXT9mLnVuaXF1ZShlKTplLCh0aGlzLmxlbmd0aD4xfHxOLnRlc3QoZCkpJiZNLnRlc3QoYSkmJihlPWUucmV2ZXJzZSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSxhLFAuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9fSksZi5leHRlbmQoe2ZpbHRlcjpmdW5jdGlvbihhLGIsYyl7YyYmKGE9Ijpub3QoIithKyIpIik7cmV0dXJuIGIubGVuZ3RoPT09MT9mLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGJbMF0sYSk/W2JbMF1dOltdOmYuZmluZC5tYXRjaGVzKGEsYil9LGRpcjpmdW5jdGlvbihhLGMsZCl7dmFyIGU9W10sZz1hW2NdO3doaWxlKGcmJmcubm9kZVR5cGUhPT05JiYoZD09PWJ8fGcubm9kZVR5cGUhPT0xfHwhZihnKS5pcyhkKSkpZy5ub2RlVHlwZT09PTEmJmUucHVzaChnKSxnPWdbY107cmV0dXJuIGV9LG50aDpmdW5jdGlvbihhLGIsYyxkKXtiPWJ8fDE7dmFyIGU9MDtmb3IoO2E7YT1hW2NdKWlmKGEubm9kZVR5cGU9PT0xJiYrK2U9PT1iKWJyZWFrO3JldHVybiBhfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9W107Zm9yKDthO2E9YS5uZXh0U2libGluZylhLm5vZGVUeXBlPT09MSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY319KTt2YXIgVj0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGNhbnZhc3xkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsVz0vIGpRdWVyeVxkKz0iKD86XGQrfG51bGwpIi9nLFg9L15ccysvLFk9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9pZyxaPS88KFtcdzpdKykvLCQ9Lzx0Ym9keS9pLF89Lzx8JiM/XHcrOy8sYmE9LzwoPzpzY3JpcHR8c3R5bGUpL2ksYmI9LzwoPzpzY3JpcHR8b2JqZWN0fGVtYmVkfG9wdGlvbnxzdHlsZSkvaSxiYz1uZXcgUmVnRXhwKCI8KD86IitWKyIpIiwiaSIpLGJkPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGJlPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksYmY9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKS8sYmc9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX0sYmg9VShjKTtiZy5vcHRncm91cD1iZy5vcHRpb24sYmcudGJvZHk9YmcudGZvb3Q9YmcuY29sZ3JvdXA9YmcuY2FwdGlvbj1iZy50aGVhZCxiZy50aD1iZy50ZCxmLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8KGJnLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdKSxmLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MudGV4dChhLmNhbGwodGhpcyxiLGMudGV4dCgpKSl9KTtpZih0eXBlb2YgYSE9Im9iamVjdCImJmEhPT1iKXJldHVybiB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGMpLmNyZWF0ZVRleHROb2RlKGEpKTtyZXR1cm4gZi50ZXh0KHRoaXMpfSx3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcEFsbChhLmNhbGwodGhpcyxiKSl9KTtpZih0aGlzWzBdKXt2YXIgYj1mKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXM7d2hpbGUoYS5maXJzdENoaWxkJiZhLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0xKWE9YS5maXJzdENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7Zih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Yubm9kZU5hbWUodGhpcywiYm9keSIpfHxmKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmFwcGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhpcy5maXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPWYuY2xlYW4oYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSx0aGlzLnRvQXJyYXkoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGEsImJlZm9yZSIsYXJndW1lbnRzKX19LGFmdGVyOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT10aGlzLnB1c2hTdGFjayh0aGlzLCJhZnRlciIsYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxmLmNsZWFuKGFyZ3VtZW50cykpO3JldHVybiBhfX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZDsoZD10aGlzW2NdKSE9bnVsbDtjKyspaWYoIWF8fGYuZmlsdGVyKGEsW2RdKS5sZW5ndGgpIWImJmQubm9kZVR5cGU9PT0xJiYoZi5jbGVhbkRhdGEoZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSxmLmNsZWFuRGF0YShbZF0pKSxkLnBhcmVudE5vZGUmJmQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKQp7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09YilyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShXLCIiKTpudWxsO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJhLnRlc3QoYSkmJihmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCFYLnRlc3QoYSkpJiYhYmdbKFouZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKFksIjwkMT48LyQyPiIpO3RyeXtmb3IodmFyIGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspdGhpc1tjXS5ub2RlVHlwZT09PTEmJihmLmNsZWFuRGF0YSh0aGlzW2NdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLHRoaXNbY10uaW5uZXJIVE1MPWEpfWNhdGNoKGUpe3RoaXMuZW1wdHkoKS5hcHBlbmQoYSl9fWVsc2UgZi5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MuaHRtbChhLmNhbGwodGhpcyxiLGMuaHRtbCgpKSl9KTp0aGlzLmVtcHR5KCkuYXBwZW5kKGEpO3JldHVybiB0aGlzfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihhKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyksZD1jLmh0bWwoKTtjLnJlcGxhY2VXaXRoKGEuY2FsbCh0aGlzLGIsZCkpfSk7dHlwZW9mIGEhPSJzdHJpbmciJiYoYT1mKGEpLmRldGFjaCgpKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5uZXh0U2libGluZyxjPXRoaXMucGFyZW50Tm9kZTtmKHRoaXMpLnJlbW92ZSgpLGI/ZihiKS5iZWZvcmUoYSk6ZihjKS5hcHBlbmQoYSl9KX1yZXR1cm4gdGhpcy5sZW5ndGg/dGhpcy5wdXNoU3RhY2soZihmLmlzRnVuY3Rpb24oYSk/YSgpOmEpLCJyZXBsYWNlV2l0aCIsYSk6dGhpc30sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGcsaCxpLGo9YVswXSxrPVtdO2lmKCFmLnN1cHBvcnQuY2hlY2tDbG9uZSYmYXJndW1lbnRzLmxlbmd0aD09PTMmJnR5cGVvZiBqPT0ic3RyaW5nIiYmYmQudGVzdChqKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zih0aGlzKS5kb21NYW5pcChhLGMsZCwhMCl9KTtpZihmLmlzRnVuY3Rpb24oaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgZz1mKHRoaXMpO2FbMF09ai5jYWxsKHRoaXMsZSxjP2cuaHRtbCgpOmIpLGcuZG9tTWFuaXAoYSxjLGQpfSk7aWYodGhpc1swXSl7aT1qJiZqLnBhcmVudE5vZGUsZi5zdXBwb3J0LnBhcmVudE5vZGUmJmkmJmkubm9kZVR5cGU9PT0xMSYmaS5jaGlsZE5vZGVzLmxlbmd0aD09PXRoaXMubGVuZ3RoP2U9e2ZyYWdtZW50Oml9OmU9Zi5idWlsZEZyYWdtZW50KGEsdGhpcyxrKSxoPWUuZnJhZ21lbnQsaC5jaGlsZE5vZGVzLmxlbmd0aD09PTE/Zz1oPWguZmlyc3RDaGlsZDpnPWguZmlyc3RDaGlsZDtpZihnKXtjPWMmJmYubm9kZU5hbWUoZywidHIiKTtmb3IodmFyIGw9MCxtPXRoaXMubGVuZ3RoLG49bS0xO2w8bTtsKyspZC5jYWxsKGM/YmkodGhpc1tsXSxnKTp0aGlzW2xdLGUuY2FjaGVhYmxlfHxtPjEmJmw8bj9mLmNsb25lKGgsITAsITApOmgpfWsubGVuZ3RoJiZmLmVhY2goayxicCl9cmV0dXJuIHRoaXN9fSksZi5idWlsZEZyYWdtZW50PWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxnLGgsaSxqPWFbMF07YiYmYlswXSYmKGk9YlswXS5vd25lckRvY3VtZW50fHxiWzBdKSxpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnR8fChpPWMpLGEubGVuZ3RoPT09MSYmdHlwZW9mIGo9PSJzdHJpbmciJiZqLmxlbmd0aDw1MTImJmk9PT1jJiZqLmNoYXJBdCgwKT09PSI8IiYmIWJiLnRlc3QoaikmJihmLnN1cHBvcnQuY2hlY2tDbG9uZXx8IWJkLnRlc3QoaikpJiYoZi5zdXBwb3J0Lmh0bWw1Q2xvbmV8fCFiYy50ZXN0KGopKSYmKGc9ITAsaD1mLmZyYWdtZW50c1tqXSxoJiZoIT09MSYmKGU9aCkpLGV8fChlPWkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGYuY2xlYW4oYSxpLGUsZCkpLGcmJihmLmZyYWdtZW50c1tqXT1oP2U6MSk7cmV0dXJue2ZyYWdtZW50OmUsY2FjaGVhYmxlOmd9fSxmLmZyYWdtZW50cz17fSxmLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYyl7dmFyIGQ9W10sZT1mKGMpLGc9dGhpcy5sZW5ndGg9PT0xJiZ0aGlzWzBdLnBhcmVudE5vZGU7aWYoZyYmZy5ub2RlVHlwZT09PTExJiZnLmNoaWxkTm9kZXMubGVuZ3RoPT09MSYmZS5sZW5ndGg9PT0xKXtlW2JdKHRoaXNbMF0pO3JldHVybiB0aGlzfWZvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9KGg+MD90aGlzLmNsb25lKCEwKTp0aGlzKS5nZXQoKTtmKGVbaF0pW2JdKGopLGQ9ZC5jb25jYXQoail9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQsYSxlLnNlbGVjdG9yKX19KSxmLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZyxoPWYuc3VwcG9ydC5odG1sNUNsb25lfHwhYmMudGVzdCgiPCIrYS5ub2RlTmFtZSk/YS5jbG9uZU5vZGUoITApOmJvKGEpO2lmKCghZi5zdXBwb3J0Lm5vQ2xvbmVFdmVudHx8IWYuc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCkmJihhLm5vZGVUeXBlPT09MXx8YS5ub2RlVHlwZT09PTExKSYmIWYuaXNYTUxEb2MoYSkpe2JrKGEsaCksZD1ibChhKSxlPWJsKGgpO2ZvcihnPTA7ZFtnXTsrK2cpZVtnXSYmYmsoZFtnXSxlW2ddKX1pZihiKXtiaihhLGgpO2lmKGMpe2Q9YmwoYSksZT1ibChoKTtmb3IoZz0wO2RbZ107KytnKWJqKGRbZ10sZVtnXSl9fWQ9ZT1udWxsO3JldHVybiBofSxjbGVhbjpmdW5jdGlvbihhLGIsZCxlKXt2YXIgZztiPWJ8fGMsdHlwZW9mIGIuY3JlYXRlRWxlbWVudD09InVuZGVmaW5lZCImJihiPWIub3duZXJEb2N1bWVudHx8YlswXSYmYlswXS5vd25lckRvY3VtZW50fHxjKTt2YXIgaD1bXSxpO2Zvcih2YXIgaj0wLGs7KGs9YVtqXSkhPW51bGw7aisrKXt0eXBlb2Ygaz09Im51bWJlciImJihrKz0iIik7aWYoIWspY29udGludWU7aWYodHlwZW9mIGs9PSJzdHJpbmciKWlmKCFfLnRlc3Qoaykpaz1iLmNyZWF0ZVRleHROb2RlKGspO2Vsc2V7az1rLnJlcGxhY2UoWSwiPCQxPjwvJDI+Iik7dmFyIGw9KFouZXhlYyhrKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxtPWJnW2xdfHxiZy5fZGVmYXVsdCxuPW1bMF0sbz1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2I9PT1jP2JoLmFwcGVuZENoaWxkKG8pOlUoYikuYXBwZW5kQ2hpbGQobyksby5pbm5lckhUTUw9bVsxXStrK21bMl07d2hpbGUobi0tKW89by5sYXN0Q2hpbGQ7aWYoIWYuc3VwcG9ydC50Ym9keSl7dmFyIHA9JC50ZXN0KGspLHE9bD09PSJ0YWJsZSImJiFwP28uZmlyc3RDaGlsZCYmby5maXJzdENoaWxkLmNoaWxkTm9kZXM6bVsxXT09PSI8dGFibGU+IiYmIXA/by5jaGlsZE5vZGVzOltdO2ZvcihpPXEubGVuZ3RoLTE7aT49MDstLWkpZi5ub2RlTmFtZShxW2ldLCJ0Ym9keSIpJiYhcVtpXS5jaGlsZE5vZGVzLmxlbmd0aCYmcVtpXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHFbaV0pfSFmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJlgudGVzdChrKSYmby5pbnNlcnRCZWZvcmUoYi5jcmVhdGVUZXh0Tm9kZShYLmV4ZWMoaylbMF0pLG8uZmlyc3RDaGlsZCksaz1vLmNoaWxkTm9kZXN9dmFyIHI7aWYoIWYuc3VwcG9ydC5hcHBlbmRDaGVja2VkKWlmKGtbMF0mJnR5cGVvZiAocj1rLmxlbmd0aCk9PSJudW1iZXIiKWZvcihpPTA7aTxyO2krKylibihrW2ldKTtlbHNlIGJuKGspO2subm9kZVR5cGU/aC5wdXNoKGspOmg9Zi5tZXJnZShoLGspfWlmKGQpe2c9ZnVuY3Rpb24oYSl7cmV0dXJuIWEudHlwZXx8YmUudGVzdChhLnR5cGUpfTtmb3Ioaj0wO2hbal07aisrKWlmKGUmJmYubm9kZU5hbWUoaFtqXSwic2NyaXB0IikmJighaFtqXS50eXBlfHxoW2pdLnR5cGUudG9Mb3dlckNhc2UoKT09PSJ0ZXh0L2phdmFzY3JpcHQiKSllLnB1c2goaFtqXS5wYXJlbnROb2RlP2hbal0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoW2pdKTpoW2pdKTtlbHNle2lmKGhbal0ubm9kZVR5cGU9PT0xKXt2YXIgcz1mLmdyZXAoaFtqXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksZyk7aC5zcGxpY2UuYXBwbHkoaCxbaisxLDBdLmNvbmNhdChzKSl9ZC5hcHBlbmRDaGlsZChoW2pdKX19cmV0dXJuIGh9LGNsZWFuRGF0YTpmdW5jdGlvbihhKXt2YXIgYixjLGQ9Zi5jYWNoZSxlPWYuZXZlbnQuc3BlY2lhbCxnPWYuc3VwcG9ydC5kZWxldGVFeHBhbmRvO2Zvcih2YXIgaD0wLGk7KGk9YVtoXSkhPW51bGw7aCsrKXtpZihpLm5vZGVOYW1lJiZmLm5vRGF0YVtpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKWNvbnRpbnVlO2M9aVtmLmV4cGFuZG9dO2lmKGMpe2I9ZFtjXTtpZihiJiZiLmV2ZW50cyl7Zm9yKHZhciBqIGluIGIuZXZlbnRzKWVbal0/Zi5ldmVudC5yZW1vdmUoaSxqKTpmLnJlbW92ZUV2ZW50KGksaixiLmhhbmRsZSk7Yi5oYW5kbGUmJihiLmhhbmRsZS5lbGVtPW51bGwpfWc/ZGVsZXRlIGlbZi5leHBhbmRvXTppLnJlbW92ZUF0dHJpYnV0ZSYmaS5yZW1vdmVBdHRyaWJ1dGUoZi5leHBhbmRvKSxkZWxldGUgZFtjXX19fX0pO3ZhciBicT0vYWxwaGFcKFteKV0qXCkvaSxicj0vb3BhY2l0eT0oW14pXSopLyxicz0vKFtBLVpdfF5tcykvZyxidD0vXi0/XGQrKD86cHgpPyQvaSxidT0vXi0/XGQvLGJ2PS9eKFtcLStdKT0oW1wtKy5cZGVdKykvLGJ3PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxieD1bIkxlZnQiLCJSaWdodCJdLGJ5PVsiVG9wIiwiQm90dG9tIl0sYnosYkEsYkI7Zi5mbi5jc3M9ZnVuY3Rpb24oYSxjKXtpZihhcmd1bWVudHMubGVuZ3RoPT09MiYmYz09PWIpcmV0dXJuIHRoaXM7cmV0dXJuIGYuYWNjZXNzKHRoaXMsYSxjLCEwLGZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZCE9PWI/Zi5zdHlsZShhLGMsZCk6Zi5jc3MoYSxjKX0pfSxmLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPWJ6KGEsIm9wYWNpdHkiLCJvcGFjaXR5Iik7cmV0dXJuIGM9PT0iIj8iMSI6Y31yZXR1cm4gYS5zdHlsZS5vcGFjaXR5fX19LGNzc051bWJlcjp7ZmlsbE9wYWNpdHk6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOmYuc3VwcG9ydC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFhJiZhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgmJiEhYS5zdHlsZSl7dmFyIGcsaCxpPWYuY2FtZWxDYXNlKGMpLGo9YS5zdHlsZSxrPWYuY3NzSG9va3NbaV07Yz1mLmNzc1Byb3BzW2ldfHxpO2lmKGQ9PT1iKXtpZihrJiYiZ2V0ImluIGsmJihnPWsuZ2V0KGEsITEsZSkpIT09YilyZXR1cm4gZztyZXR1cm4galtjXX1oPXR5cGVvZiBkLGg9PT0ic3RyaW5nIiYmKGc9YnYuZXhlYyhkKSkmJihkPSsoZ1sxXSsxKSorZ1syXStwYXJzZUZsb2F0KGYuY3NzKGEsYykpLGg9Im51bWJlciIpO2lmKGQ9PW51bGx8fGg9PT0ibnVtYmVyIiYmaXNOYU4oZCkpcmV0dXJuO2g9PT0ibnVtYmVyIiYmIWYuY3NzTnVtYmVyW2ldJiYoZCs9InB4Iik7aWYoIWt8fCEoInNldCJpbiBrKXx8KGQ9ay5zZXQoYSxkKSkhPT1iKXRyeXtqW2NdPWR9Y2F0Y2gobCl7fX19LGNzczpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZztjPWYuY2FtZWxDYXNlKGMpLGc9Zi5jc3NIb29rc1tjXSxjPWYuY3NzUHJvcHNbY118fGMsYz09PSJjc3NGbG9hdCImJihjPSJmbG9hdCIpO2lmKGcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxkKSkhPT1iKXJldHVybiBlO2lmKGJ6KXJldHVybiBieihhLGMpfSxzd2FwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fTtmb3IodmFyIGUgaW4gYilkW2VdPWEuc3R5bGVbZV0sYS5zdHlsZVtlXT1iW2VdO2MuY2FsbChhKTtmb3IoZSBpbiBiKWEuc3R5bGVbZV09ZFtlXX19KSxmLmN1ckNTUz1mLmNzcyxmLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7Zi5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXt2YXIgZTtpZihjKXtpZihhLm9mZnNldFdpZHRoIT09MClyZXR1cm4gYkMoYSxiLGQpO2Yuc3dhcChhLGJ3LGZ1bmN0aW9uKCl7ZT1iQyhhLGIsZCl9KTtyZXR1cm4gZX19LHNldDpmdW5jdGlvbihhLGIpe2lmKCFidC50ZXN0KGIpKXJldHVybiBiO2I9cGFyc2VGbG9hdChiKTtpZihiPj0wKXJldHVybiBiKyJweCJ9fX0pLGYuc3VwcG9ydC5vcGFjaXR5fHwoZi5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYnIudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpP3BhcnNlRmxvYXQoUmVnRXhwLiQxKS8xMDArIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHlsZSxlPWYuaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrYioxMDArIikiOiIiLGc9ZCYmZC5maWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MTtpZihiPj0xJiZmLnRyaW0oZy5yZXBsYWNlKGJxLCIiKSk9PT0iIil7Yy5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpO2lmKGQmJiFkLmZpbHRlcilyZXR1cm59Yy5maWx0ZXI9YnEudGVzdChnKT9nLnJlcGxhY2UoYnEsZSk6ZysiICIrZX19KSxmKGZ1bmN0aW9uKCl7Zi5zdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHR8fChmLmNzc0hvb2tzLm1hcmdpblJpZ2h0PXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYztmLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sZnVuY3Rpb24oKXtiP2M9YnooYSwibWFyZ2luLXJpZ2h0IiwibWFyZ2luUmlnaHQiKTpjPWEuc3R5bGUubWFyZ2luUmlnaHR9KTtyZXR1cm4gY319KX0pLGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGJBPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlO2I9Yi5yZXBsYWNlKGJzLCItJDEiKS50b0xvd2VyQ2FzZSgpLChkPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykmJihlPWQuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpKSYmKGM9ZS5nZXRQcm9wZXJ0eVZhbHVlKGIpLGM9PT0iIiYmIWYuY29udGFpbnMoYS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhKSYmKGM9Zi5zdHlsZShhLGIpKSk7cmV0dXJuIGN9KSxjLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihiQj1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxnPWEuc3R5bGU7Zj09PW51bGwmJmcmJihlPWdbYl0pJiYoZj1lKSwhYnQudGVzdChmKSYmYnUudGVzdChmKSYmKGM9Zy5sZWZ0LGQ9YS5ydW50aW1lU3R5bGUmJmEucnVudGltZVN0eWxlLmxlZnQsZCYmKGEucnVudGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksZy5sZWZ0PWI9PT0iZm9udFNpemUiPyIxZW0iOmZ8fDAsZj1nLnBpeGVsTGVmdCsicHgiLGcubGVmdD1jLGQmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWQpKTtyZXR1cm4gZj09PSIiPyJhdXRvIjpmfSksYno9YkF8fGJCLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0O3JldHVybiBiPT09MCYmYz09PTB8fCFmLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYoYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxmLmNzcyhhLCJkaXNwbGF5IikpPT09Im5vbmUifSxmLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFmLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9KTt2YXIgYkQ9LyUyMC9nLGJFPS9cW1xdJC8sYkY9L1xyP1xuL2csYkc9LyMuKiQvLGJIPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvbWcsYkk9L14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWspJC9pLGJKPS9eKD86YWJvdXR8YXBwfGFwcFwtc3RvcmFnZXwuK1wtZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sYks9L14oPzpHRVR8SEVBRCkkLyxiTD0vXlwvXC8vLGJNPS9cPy8sYk49LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksYk89L14oPzpzZWxlY3R8dGV4dGFyZWEpL2ksYlA9L1xzKy8sYlE9LyhbPyZdKV89W14mXSovLGJSPS9eKFtcd1wrXC5cLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKykpPyk/LyxiUz1mLmZuLmxvYWQsYlQ9e30sYlU9e30sYlYsYlcsYlg9WyIqLyJdK1siKiJdO3RyeXtiVj1lLmhyZWZ9Y2F0Y2goYlkpe2JWPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJWLmhyZWY9IiIsYlY9YlYuaHJlZn1iVz1iUi5leGVjKGJWLnRvTG93ZXJDYXNlKCkpfHxbXSxmLmZuLmV4dGVuZCh7bG9hZDpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZiUylyZXR1cm4gYlMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2YXIgZz1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBoPSJHRVQiO2MmJihmLmlzRnVuY3Rpb24oYyk/KGQ9YyxjPWIpOnR5cGVvZiBjPT0ib2JqZWN0IiYmKGM9Zi5wYXJhbShjLGYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxoPSJQT1NUIikpO3ZhciBpPXRoaXM7Zi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yyxjb21wbGV0ZTpmdW5jdGlvbihhLGIsYyl7Yz1hLnJlc3BvbnNlVGV4dCxhLmlzUmVzb2x2ZWQoKSYmKGEuZG9uZShmdW5jdGlvbihhKXtjPWF9KSxpLmh0bWwoZz9mKCI8ZGl2PiIpLmFwcGVuZChjLnJlcGxhY2UoYk4sIiIpKS5maW5kKGcpOmMpKSxkJiZpLmVhY2goZCxbYyxiLGFdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGYucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9mLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGJPLnRlc3QodGhpcy5ub2RlTmFtZSl8fGJJLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1mKHRoaXMpLnZhbCgpO3JldHVybiBjPT1udWxsP251bGw6Zi5pc0FycmF5KGMpP2YubWFwKGMsZnVuY3Rpb24oYSxjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGJGLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShiRiwiXHJcbiIpfX0pLmdldCgpfX0pLGYuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSksZi5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGEsYyl7ZltjXT1mdW5jdGlvbihhLGQsZSxnKXtmLmlzRnVuY3Rpb24oZCkmJihnPWd8fGUsZT1kLGQ9Yik7cmV0dXJuIGYuYWpheCh7dHlwZTpjLHVybDphLGRhdGE6ZCxzdWNjZXNzOmUsZGF0YVR5cGU6Z30pfX0pLGYuZXh0ZW5kKHtnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZi5nZXQoYSxiLGMsInNjcmlwdCIpfSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5nZXQoYSxiLGMsImpzb24iKX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7Yj9iXyhhLGYuYWpheFNldHRpbmdzKTooYj1hLGE9Zi5hamF4U2V0dGluZ3MpLGJfKGEsYik7cmV0dXJuIGF9LGFqYXhTZXR0aW5nczp7dXJsOmJWLGlzTG9jYWw6YkoudGVzdChiV1sxXSksZ2xvYmFsOiEwLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsYWNjZXB0czp7eG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixodG1sOiJ0ZXh0L2h0bWwiLHRleHQ6InRleHQvcGxhaW4iLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIsIioiOmJYfSxjb250ZW50czp7eG1sOi94bWwvLGh0bWw6L2h0bWwvLGpzb246L2pzb24vfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0In0sY29udmVydGVyczp7IiogdGV4dCI6YS5TdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6Zi5wYXJzZUpTT04sInRleHQgeG1sIjpmLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7Y29udGV4dDohMCx1cmw6ITB9fSxhamF4UHJlZmlsdGVyOmJaKGJUKSxhamF4VHJhbnNwb3J0OmJaKGJVKSxhamF4OmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gdyhhLGMsbCxtKXtpZihzIT09Mil7cz0yLHEmJmNsZWFyVGltZW91dChxKSxwPWIsbj1tfHwiIix2LnJlYWR5U3RhdGU9YT4wPzQ6MDt2YXIgbyxyLHUsdz1jLHg9bD9jYihkLHYsbCk6Yix5LHo7aWYoYT49MjAwJiZhPDMwMHx8YT09PTMwNCl7aWYoZC5pZk1vZGlmaWVkKXtpZih5PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSlmLmxhc3RNb2RpZmllZFtrXT15O2lmKHo9di5nZXRSZXNwb25zZUhlYWRlcigiRXRhZyIpKWYuZXRhZ1trXT16fWlmKGE9PT0zMDQpdz0ibm90bW9kaWZpZWQiLG89ITA7ZWxzZSB0cnl7cj1jYyhkLHgpLHc9InN1Y2Nlc3MiLG89ITB9Y2F0Y2goQSl7dz0icGFyc2VyZXJyb3IiLHU9QX19ZWxzZXt1PXc7aWYoIXd8fGEpdz0iZXJyb3IiLGE8MCYmKGE9MCl9di5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9IiIrKGN8fHcpLG8/aC5yZXNvbHZlV2l0aChlLFtyLHcsdl0pOmgucmVqZWN0V2l0aChlLFt2LHcsdV0pLHYuc3RhdHVzQ29kZShqKSxqPWIsdCYmZy50cmlnZ2VyKCJhamF4Iisobz8iU3VjY2VzcyI6IkVycm9yIiksW3YsZCxvP3I6dV0pLGkuZmlyZVdpdGgoZSxbdix3XSksdCYmKGcudHJpZ2dlcigiYWpheENvbXBsZXRlIixbdixkXSksLS1mLmFjdGl2ZXx8Zi5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKX19dHlwZW9mIGE9PSJvYmplY3QiJiYoYz1hLGE9YiksYz1jfHx7fTt2YXIgZD1mLmFqYXhTZXR1cCh7fSxjKSxlPWQuY29udGV4dHx8ZCxnPWUhPT1kJiYoZS5ub2RlVHlwZXx8ZSBpbnN0YW5jZW9mIGYpP2YoZSk6Zi5ldmVudCxoPWYuRGVmZXJyZWQoKSxpPWYuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGo9ZC5zdGF0dXNDb2RlfHx7fSxrLGw9e30sbT17fSxuLG8scCxxLHIscz0wLHQsdSx2PXtyZWFkeVN0YXRlOjAsc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhLGIpe2lmKCFzKXt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7YT1tW2NdPW1bY118fGEsbFthXT1ifXJldHVybiB0aGlzfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gcz09PTI/bjpudWxsfSxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYztpZihzPT09Mil7aWYoIW8pe289e307d2hpbGUoYz1iSC5leGVjKG4pKW9bY1sxXS50b0xvd2VyQ2FzZSgpXT1jWzJdfWM9b1thLnRvTG93ZXJDYXNlKCldfXJldHVybiBjPT09Yj9udWxsOmN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7c3x8KGQubWltZVR5cGU9YSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe2E9YXx8ImFib3J0IixwJiZwLmFib3J0KGEpLHcoMCxhKTtyZXR1cm4gdGhpc319O2gucHJvbWlzZSh2KSx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLHYuY29tcGxldGU9aS5hZGQsdi5zdGF0dXNDb2RlPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiO2lmKHM8Milmb3IoYiBpbiBhKWpbYl09W2pbYl0sYVtiXV07ZWxzZSBiPWFbdi5zdGF0dXNdLHYudGhlbihiLGIpfXJldHVybiB0aGlzfSxkLnVybD0oKGF8fGQudXJsKSsiIikucmVwbGFjZShiRywiIikucmVwbGFjZShiTCxiV1sxXSsiLy8iKSxkLmRhdGFUeXBlcz1mLnRyaW0oZC5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLnNwbGl0KGJQKSxkLmNyb3NzRG9tYWluPT1udWxsJiYocj1iUi5leGVjKGQudXJsLnRvTG93ZXJDYXNlKCkpLGQuY3Jvc3NEb21haW49ISghcnx8clsxXT09YldbMV0mJnJbMl09PWJXWzJdJiYoclszXXx8KHJbMV09PT0iaHR0cDoiPzgwOjQ0MykpPT0oYldbM118fChiV1sxXT09PSJodHRwOiI/ODA6NDQzKSkpKSxkLmRhdGEmJmQucHJvY2Vzc0RhdGEmJnR5cGVvZiBkLmRhdGEhPSJzdHJpbmciJiYoZC5kYXRhPWYucGFyYW0oZC5kYXRhLGQudHJhZGl0aW9uYWwpKSxiJChiVCxkLGMsdik7aWYocz09PTIpcmV0dXJuITE7dD1kLmdsb2JhbCxkLnR5cGU9ZC50eXBlLnRvVXBwZXJDYXNlKCksZC5oYXNDb250ZW50PSFiSy50ZXN0KGQudHlwZSksdCYmZi5hY3RpdmUrKz09PTAmJmYuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iik7aWYoIWQuaGFzQ29udGVudCl7ZC5kYXRhJiYoZC51cmwrPShiTS50ZXN0KGQudXJsKT8iJiI6Ij8iKStkLmRhdGEsZGVsZXRlIGQuZGF0YSksaz1kLnVybDtpZihkLmNhY2hlPT09ITEpe3ZhciB4PWYubm93KCkseT1kLnVybC5yZXBsYWNlKGJRLCIkMV89Iit4KTtkLnVybD15Kyh5PT09ZC51cmw/KGJNLnRlc3QoZC51cmwpPyImIjoiPyIpKyJfPSIreDoiIil9fShkLmRhdGEmJmQuaGFzQ29udGVudCYmZC5jb250ZW50VHlwZSE9PSExfHxjLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGQuY29udGVudFR5cGUpLGQuaWZNb2RpZmllZCYmKGs9a3x8ZC51cmwsZi5sYXN0TW9kaWZpZWRba10mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGYubGFzdE1vZGlmaWVkW2tdKSxmLmV0YWdba10mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsZi5ldGFnW2tdKSksdi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGQuZGF0YVR5cGVzWzBdJiZkLmFjY2VwdHNbZC5kYXRhVHlwZXNbMF1dP2QuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0rKGQuZGF0YVR5cGVzWzBdIT09IioiPyIsICIrYlgrIjsgcT0wLjAxIjoiIik6ZC5hY2NlcHRzWyIqIl0pO2Zvcih1IGluIGQuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIodSxkLmhlYWRlcnNbdV0pO2lmKGQuYmVmb3JlU2VuZCYmKGQuYmVmb3JlU2VuZC5jYWxsKGUsdixkKT09PSExfHxzPT09Mikpe3YuYWJvcnQoKTtyZXR1cm4hMX1mb3IodSBpbntzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZToxfSl2W3VdKGRbdV0pO3A9YiQoYlUsZCxjLHYpO2lmKCFwKXcoLTEsIk5vIFRyYW5zcG9ydCIpO2Vsc2V7di5yZWFkeVN0YXRlPTEsdCYmZy50cmlnZ2VyKCJhamF4U2VuZCIsW3YsZF0pLGQuYXN5bmMmJmQudGltZW91dD4wJiYocT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7di5hYm9ydCgidGltZW91dCIpfSxkLnRpbWVvdXQpKTt0cnl7cz0xLHAuc2VuZChsLHcpfWNhdGNoKHope2lmKHM8Mil3KC0xLHopO2Vsc2UgdGhyb3cgen19cmV0dXJuIHZ9LHBhcmFtOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9Zi5pc0Z1bmN0aW9uKGIpP2IoKTpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpfTtjPT09YiYmKGM9Zi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpO2lmKGYuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFmLmlzUGxhaW5PYmplY3QoYSkpZi5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHZhciBnIGluIGEpY2EoZyxhW2ddLGMsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoYkQsIisiKX19KSxmLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e319KTt2YXIgY2Q9Zi5ub3coKSxjZT0vKFw9KVw/KCZ8JCl8XD9cPy9pO2YuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZi5leHBhbmRvKyJfIitjZCsrfX0pLGYuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlPWIuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiYmdHlwZW9mIGIuZGF0YT09InN0cmluZyI7aWYoYi5kYXRhVHlwZXNbMF09PT0ianNvbnAifHxiLmpzb25wIT09ITEmJihjZS50ZXN0KGIudXJsKXx8ZSYmY2UudGVzdChiLmRhdGEpKSl7dmFyIGcsaD1iLmpzb25wQ2FsbGJhY2s9Zi5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGk9YVtoXSxqPWIudXJsLGs9Yi5kYXRhLGw9IiQxIitoKyIkMiI7Yi5qc29ucCE9PSExJiYoaj1qLnJlcGxhY2UoY2UsbCksYi51cmw9PT1qJiYoZSYmKGs9ay5yZXBsYWNlKGNlLGwpKSxiLmRhdGE9PT1rJiYoais9KC9cPy8udGVzdChqKT8iJiI6Ij8iKStiLmpzb25wKyI9IitoKSkpLGIudXJsPWosYi5kYXRhPWssYVtoXT1mdW5jdGlvbihhKXtnPVthXX0sZC5hbHdheXMoZnVuY3Rpb24oKXthW2hdPWksZyYmZi5pc0Z1bmN0aW9uKGkpJiZhW2hdKGdbMF0pfSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7Z3x8Zi5lcnJvcihoKyIgd2FzIG5vdCBjYWxsZWQiKTtyZXR1cm4gZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24iO3JldHVybiJzY3JpcHQifX0pLGYuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdHxlY21hc2NyaXB0L30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtmLmdsb2JhbEV2YWwoYSk7cmV0dXJuIGF9fX0pLGYuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXthLmNhY2hlPT09YiYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSksZi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBkLGU9Yy5oZWFkfHxjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGMuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGYsZyl7ZD1jLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGQuYXN5bmM9ImFzeW5jIixhLnNjcmlwdENoYXJzZXQmJihkLmNoYXJzZXQ9YS5zY3JpcHRDaGFyc2V0KSxkLnNyYz1hLnVybCxkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihhLGMpe2lmKGN8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGUmJmQucGFyZW50Tm9kZSYmZS5yZW1vdmVDaGlsZChkKSxkPWIsY3x8ZygyMDAsInN1Y2Nlc3MiKX0sZS5pbnNlcnRCZWZvcmUoZCxlLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQub25sb2FkKDAsMSl9fX19KTt2YXIgY2Y9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGNoKWNoW2FdKDAsMSl9OiExLGNnPTAsY2g7Zi5hamF4U2V0dGluZ3MueGhyPWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJmNpKCl8fGNqKCl9OmNpLGZ1bmN0aW9uKGEpe2YuZXh0ZW5kKGYuc3VwcG9ydCx7YWpheDohIWEsY29yczohIWEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYX0pfShmLmFqYXhTZXR0aW5ncy54aHIoKSksZi5zdXBwb3J0LmFqYXgmJmYuYWpheFRyYW5zcG9ydChmdW5jdGlvbihjKXtpZighYy5jcm9zc0RvbWFpbnx8Zi5zdXBwb3J0LmNvcnMpe3ZhciBkO3JldHVybntzZW5kOmZ1bmN0aW9uKGUsZyl7dmFyIGg9Yy54aHIoKSxpLGo7Yy51c2VybmFtZT9oLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMsYy51c2VybmFtZSxjLnBhc3N3b3JkKTpoLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMpO2lmKGMueGhyRmllbGRzKWZvcihqIGluIGMueGhyRmllbGRzKWhbal09Yy54aHJGaWVsZHNbal07Yy5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYy5taW1lVHlwZSksIWMuY3Jvc3NEb21haW4mJiFlWyJYLVJlcXVlc3RlZC1XaXRoIl0mJihlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e2ZvcihqIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGosZVtqXSl9Y2F0Y2goayl7fWguc2VuZChjLmhhc0NvbnRlbnQmJmMuZGF0YXx8bnVsbCksZD1mdW5jdGlvbihhLGUpe3ZhciBqLGssbCxtLG47dHJ5e2lmKGQmJihlfHxoLnJlYWR5U3RhdGU9PT00KSl7ZD1iLGkmJihoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mLm5vb3AsY2YmJmRlbGV0ZSBjaFtpXSk7aWYoZSloLnJlYWR5U3RhdGUhPT00JiZoLmFib3J0KCk7ZWxzZXtqPWguc3RhdHVzLGw9aC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxtPXt9LG49aC5yZXNwb25zZVhNTCxuJiZuLmRvY3VtZW50RWxlbWVudCYmKG0ueG1sPW4pLG0udGV4dD1oLnJlc3BvbnNlVGV4dDt0cnl7az1oLnN0YXR1c1RleHR9Y2F0Y2gobyl7az0iIn0haiYmYy5pc0xvY2FsJiYhYy5jcm9zc0RvbWFpbj9qPW0udGV4dD8yMDA6NDA0Omo9PT0xMjIzJiYoaj0yMDQpfX19Y2F0Y2gocCl7ZXx8ZygtMSxwKX1tJiZnKGosayxtLGwpfSwhYy5hc3luY3x8aC5yZWFkeVN0YXRlPT09ND9kKCk6KGk9KytjZyxjZiYmKGNofHwoY2g9e30sZihhKS51bmxvYWQoY2YpKSxjaFtpXT1kKSxoLm9ucmVhZHlzdGF0ZWNoYW5nZT1kKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkKDAsMSl9fX19KTt2YXIgY2s9e30sY2wsY20sY249L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNvPS9eKFsrXC1dPSk/KFtcZCsuXC1dKykoW2EteiVdKikkL2ksY3AsY3E9W1siaGVpZ2h0IiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxbIndpZHRoIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxbIm9wYWNpdHkiXV0sY3I7Zi5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdSgic2hvdyIsMyksYSxiLGMpO2Zvcih2YXIgZz0wLGg9dGhpcy5sZW5ndGg7ZzxoO2crKylkPXRoaXNbZ10sZC5zdHlsZSYmKGU9ZC5zdHlsZS5kaXNwbGF5LCFmLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSYmZT09PSJub25lIiYmKGU9ZC5zdHlsZS5kaXNwbGF5PSIiKSxlPT09IiImJmYuY3NzKGQsImRpc3BsYXkiKT09PSJub25lIiYmZi5fZGF0YShkLCJvbGRkaXNwbGF5IixjdihkLm5vZGVOYW1lKSkpO2ZvcihnPTA7ZzxoO2crKyl7ZD10aGlzW2ddO2lmKGQuc3R5bGUpe2U9ZC5zdHlsZS5kaXNwbGF5O2lmKGU9PT0iInx8ZT09PSJub25lIilkLnN0eWxlLmRpc3BsYXk9Zi5fZGF0YShkLCJvbGRkaXNwbGF5Iil8fCIifX1yZXR1cm4gdGhpc30saGlkZTpmdW5jdGlvbihhLGIsYyl7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdSgiaGlkZSIsMyksYSxiLGMpO3ZhciBkLGUsZz0wLGg9dGhpcy5sZW5ndGg7Zm9yKDtnPGg7ZysrKWQ9dGhpc1tnXSxkLnN0eWxlJiYoZT1mLmNzcyhkLCJkaXNwbGF5IiksZSE9PSJub25lIiYmIWYuX2RhdGEoZCwib2xkZGlzcGxheSIpJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGUpKTtmb3IoZz0wO2c8aDtnKyspdGhpc1tnXS5zdHlsZSYmKHRoaXNbZ10uc3R5bGUuZGlzcGxheT0ibm9uZSIpO3JldHVybiB0aGlzfSxfdG9nZ2xlOmYuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dHlwZW9mIGE9PSJib29sZWFuIjtmLmlzRnVuY3Rpb24oYSkmJmYuaXNGdW5jdGlvbihiKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOmE9PW51bGx8fGQ/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZD9hOmYodGhpcykuaXMoIjpoaWRkZW4iKTtmKHRoaXMpW2I/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZShjdSgidG9nZ2xlIiwzKSxhLGIsYyk7cmV0dXJuIHRoaXN9LGZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBnKCl7ZS5xdWV1ZT09PSExJiZmLl9tYXJrKHRoaXMpO3ZhciBiPWYuZXh0ZW5kKHt9LGUpLGM9dGhpcy5ub2RlVHlwZT09PTEsZD1jJiZmKHRoaXMpLmlzKCI6aGlkZGVuIiksZyxoLGksaixrLGwsbSxuLG87Yi5hbmltYXRlZFByb3BlcnRpZXM9e307Zm9yKGkgaW4gYSl7Zz1mLmNhbWVsQ2FzZShpKSxpIT09ZyYmKGFbZ109YVtpXSxkZWxldGUgYVtpXSksaD1hW2ddLGYuaXNBcnJheShoKT8oYi5hbmltYXRlZFByb3BlcnRpZXNbZ109aFsxXSxoPWFbZ109aFswXSk6Yi5hbmltYXRlZFByb3BlcnRpZXNbZ109Yi5zcGVjaWFsRWFzaW5nJiZiLnNwZWNpYWxFYXNpbmdbZ118fGIuZWFzaW5nfHwic3dpbmciO2lmKGg9PT0iaGlkZSImJmR8fGg9PT0ic2hvdyImJiFkKXJldHVybiBiLmNvbXBsZXRlLmNhbGwodGhpcyk7YyYmKGc9PT0iaGVpZ2h0Inx8Zz09PSJ3aWR0aCIpJiYoYi5vdmVyZmxvdz1bdGhpcy5zdHlsZS5vdmVyZmxvdyx0aGlzLnN0eWxlLm92ZXJmbG93WCx0aGlzLnN0eWxlLm92ZXJmbG93WV0sZi5jc3ModGhpcywiZGlzcGxheSIpPT09ImlubGluZSImJmYuY3NzKHRoaXMsImZsb2F0Iik9PT0ibm9uZSImJighZi5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXR8fGN2KHRoaXMubm9kZU5hbWUpPT09ImlubGluZSI/dGhpcy5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siOnRoaXMuc3R5bGUuem9vbT0xKSl9Yi5vdmVyZmxvdyE9bnVsbCYmKHRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpO2ZvcihpIGluIGEpaj1uZXcgZi5meCh0aGlzLGIsaSksaD1hW2ldLGNuLnRlc3QoaCk/KG89Zi5fZGF0YSh0aGlzLCJ0b2dnbGUiK2kpfHwoaD09PSJ0b2dnbGUiP2Q/InNob3ciOiJoaWRlIjowKSxvPyhmLl9kYXRhKHRoaXMsInRvZ2dsZSIraSxvPT09InNob3ciPyJoaWRlIjoic2hvdyIpLGpbb10oKSk6altoXSgpKTooaz1jby5leGVjKGgpLGw9ai5jdXIoKSxrPyhtPXBhcnNlRmxvYXQoa1syXSksbj1rWzNdfHwoZi5jc3NOdW1iZXJbaV0/IiI6InB4IiksbiE9PSJweCImJihmLnN0eWxlKHRoaXMsaSwobXx8MSkrbiksbD0obXx8MSkvai5jdXIoKSpsLGYuc3R5bGUodGhpcyxpLGwrbikpLGtbMV0mJihtPShrWzFdPT09Ii09Ij8tMToxKSptK2wpLGouY3VzdG9tKGwsbSxuKSk6ai5jdXN0b20obCxoLCIiKSk7cmV0dXJuITB9dmFyIGU9Zi5zcGVlZChiLGMsZCk7aWYoZi5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZS5jb21wbGV0ZSxbITFdKTthPWYuZXh0ZW5kKHt9LGEpO3JldHVybiBlLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZS5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGMsZCl7dHlwZW9mIGEhPSJzdHJpbmciJiYoZD1jLGM9YSxhPWIpLGMmJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChhLGIsYyl7dmFyIGU9YltjXTtmLnJlbW92ZURhdGEoYSxjLCEwKSxlLnN0b3AoZCl9dmFyIGIsYz0hMSxlPWYudGltZXJzLGc9Zi5fZGF0YSh0aGlzKTtkfHxmLl91bm1hcmsoITAsdGhpcyk7aWYoYT09bnVsbClmb3IoYiBpbiBnKWdbYl0mJmdbYl0uc3RvcCYmYi5pbmRleE9mKCIucnVuIik9PT1iLmxlbmd0aC00JiZoKHRoaXMsZyxiKTtlbHNlIGdbYj1hKyIucnVuIl0mJmdbYl0uc3RvcCYmaCh0aGlzLGcsYik7Zm9yKGI9ZS5sZW5ndGg7Yi0tOyllW2JdLmVsZW09PT10aGlzJiYoYT09bnVsbHx8ZVtiXS5xdWV1ZT09PWEpJiYoZD9lW2JdKCEwKTplW2JdLnNhdmVTdGF0ZSgpLGM9ITAsZS5zcGxpY2UoYiwxKSk7KCFkfHwhYykmJmYuZGVxdWV1ZSh0aGlzLGEpfSl9fSksZi5lYWNoKHtzbGlkZURvd246Y3UoInNob3ciLDEpLHNsaWRlVXA6Y3UoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOmN1KCJ0b2dnbGUiLDEpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLGYuZXh0ZW5kKHtzcGVlZDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmdHlwZW9mIGE9PSJvYmplY3QiP2YuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8Zi5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFmLmlzRnVuY3Rpb24oYikmJmJ9O2QuZHVyYXRpb249Zi5meC5vZmY/MDp0eXBlb2YgZC5kdXJhdGlvbj09Im51bWJlciI/ZC5kdXJhdGlvbjpkLmR1cmF0aW9uIGluIGYuZnguc3BlZWRzP2YuZnguc3BlZWRzW2QuZHVyYXRpb25dOmYuZnguc3BlZWRzLl9kZWZhdWx0O2lmKGQucXVldWU9PW51bGx8fGQucXVldWU9PT0hMClkLnF1ZXVlPSJmeCI7ZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKGEpe2YuaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZT9mLmRlcXVldWUodGhpcyxkLnF1ZXVlKTphIT09ITEmJmYuX3VubWFyayh0aGlzKX07cmV0dXJuIGR9LGVhc2luZzp7bGluZWFyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjK2QqYX0sc3dpbmc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuKC1NYXRoLmNvcyhhKk1hdGguUEkpLzIrLjUpKmQrY319LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsYyl7dGhpcy5vcHRpb25zPWIsdGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsYi5vcmlnPWIub3JpZ3x8e319fSksZi5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSwoZi5meC5zdGVwW3RoaXMucHJvcF18fGYuZnguc3RlcC5fZGVmYXVsdCkodGhpcyl9LGN1cjpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMuZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTt2YXIgYSxiPWYuY3NzKHRoaXMuZWxlbSx0aGlzLnByb3ApO3JldHVybiBpc05hTihhPXBhcnNlRmxvYXQoYikpPyFifHxiPT09ImF1dG8iPzA6YjphfSxjdXN0b206ZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9uIGgoYSl7cmV0dXJuIGUuc3RlcChhKX12YXIgZT10aGlzLGc9Zi5meDt0aGlzLnN0YXJ0VGltZT1jcnx8Y3MoKSx0aGlzLmVuZD1jLHRoaXMubm93PXRoaXMuc3RhcnQ9YSx0aGlzLnBvcz10aGlzLnN0YXRlPTAsdGhpcy51bml0PWR8fHRoaXMudW5pdHx8KGYuY3NzTnVtYmVyW3RoaXMucHJvcF0/IiI6InB4IiksaC5xdWV1ZT10aGlzLm9wdGlvbnMucXVldWUsaC5lbGVtPXRoaXMuZWxlbSxoLnNhdmVTdGF0ZT1mdW5jdGlvbigpe2Uub3B0aW9ucy5oaWRlJiZmLl9kYXRhKGUuZWxlbSwiZnhzaG93IitlLnByb3ApPT09YiYmZi5fZGF0YShlLmVsZW0sImZ4c2hvdyIrZS5wcm9wLGUuc3RhcnQpfSxoKCkmJmYudGltZXJzLnB1c2goaCkmJiFjcCYmKGNwPXNldEludGVydmFsKGcudGljayxnLmludGVydmFsKSl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgYT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApO3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09YXx8Zi5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKSx0aGlzLm9wdGlvbnMuc2hvdz0hMCxhIT09Yj90aGlzLmN1c3RvbSh0aGlzLmN1cigpLGEpOnRoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0aCJ8fHRoaXMucHJvcD09PSJoZWlnaHQiPzE6MCx0aGlzLmN1cigpKSxmKHRoaXMuZWxlbSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApfHxmLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5oaWRlPSEwLHRoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9Y3J8fGNzKCksZz0hMCxoPXRoaXMuZWxlbSxpPXRoaXMub3B0aW9ucztpZihhfHxlPj1pLmR1cmF0aW9uK3RoaXMuc3RhcnRUaW1lKXt0aGlzLm5vdz10aGlzLmVuZCx0aGlzLnBvcz10aGlzLnN0YXRlPTEsdGhpcy51cGRhdGUoKSxpLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdPSEwO2ZvcihiIGluIGkuYW5pbWF0ZWRQcm9wZXJ0aWVzKWkuYW5pbWF0ZWRQcm9wZXJ0aWVzW2JdIT09ITAmJihnPSExKTtpZihnKXtpLm92ZXJmbG93IT1udWxsJiYhZi5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MmJmYuZWFjaChbIiIsIlgiLCJZIl0sZnVuY3Rpb24oYSxiKXtoLnN0eWxlWyJvdmVyZmxvdyIrYl09aS5vdmVyZmxvd1thXX0pLGkuaGlkZSYmZihoKS5oaWRlKCk7aWYoaS5oaWRlfHxpLnNob3cpZm9yKGIgaW4gaS5hbmltYXRlZFByb3BlcnRpZXMpZi5zdHlsZShoLGIsaS5vcmlnW2JdKSxmLnJlbW92ZURhdGEoaCwiZnhzaG93IitiLCEwKSxmLnJlbW92ZURhdGEoaCwidG9nZ2xlIitiLCEwKTtkPWkuY29tcGxldGUsZCYmKGkuY29tcGxldGU9ITEsZC5jYWxsKGgpKX1yZXR1cm4hMX1pLmR1cmF0aW9uPT1JbmZpbml0eT90aGlzLm5vdz1lOihjPWUtdGhpcy5zdGFydFRpbWUsdGhpcy5zdGF0ZT1jL2kuZHVyYXRpb24sdGhpcy5wb3M9Zi5lYXNpbmdbaS5hbmltYXRlZFByb3BlcnRpZXNbdGhpcy5wcm9wXV0odGhpcy5zdGF0ZSxjLDAsMSxpLmR1cmF0aW9uKSx0aGlzLm5vdz10aGlzLnN0YXJ0Kyh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0aGlzLnBvcyksdGhpcy51cGRhdGUoKTtyZXR1cm4hMH19LGYuZXh0ZW5kKGYuZngse3RpY2s6ZnVuY3Rpb24oKXt2YXIgYSxiPWYudGltZXJzLGM9MDtmb3IoO2M8Yi5sZW5ndGg7YysrKWE9YltjXSwhYSgpJiZiW2NdPT09YSYmYi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxmLmZ4LnN0b3AoKX0saW50ZXJ2YWw6MTMsc3RvcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoY3ApLGNwPW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLCJvcGFjaXR5IixhLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2EuZWxlbS5zdHlsZSYmYS5lbGVtLnN0eWxlW2EucHJvcF0hPW51bGw/YS5lbGVtLnN0eWxlW2EucHJvcF09YS5ub3crYS51bml0OmEuZWxlbVthLnByb3BdPWEubm93fX19KSxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5meC5zdGVwW2JdPWZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLGIsTWF0aC5tYXgoMCxhLm5vdykrYS51bml0KX19KSxmLmV4cHImJmYuZXhwci5maWx0ZXJzJiYoZi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZ3JlcChmLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH0pO3ZhciBjdz0vXnQoPzphYmxlfGR8aCkkL2ksY3g9L14oPzpib2R5fGh0bWwpJC9pOyJnZXRCb3VuZGluZ0NsaWVudFJlY3QiaW4gYy5kb2N1bWVudEVsZW1lbnQ/Zi5mbi5vZmZzZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXSxjO2lmKGEpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7aWYoIWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7aWYoYj09PWIub3duZXJEb2N1bWVudC5ib2R5KXJldHVybiBmLm9mZnNldC5ib2R5T2Zmc2V0KGIpO3RyeXtjPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goZCl7fXZhciBlPWIub3duZXJEb2N1bWVudCxnPWUuZG9jdW1lbnRFbGVtZW50O2lmKCFjfHwhZi5jb250YWlucyhnLGIpKXJldHVybiBjP3t0b3A6Yy50b3AsbGVmdDpjLmxlZnR9Ont0b3A6MCxsZWZ0OjB9O3ZhciBoPWUuYm9keSxpPWN5KGUpLGo9Zy5jbGllbnRUb3B8fGguY2xpZW50VG9wfHwwLGs9Zy5jbGllbnRMZWZ0fHxoLmNsaWVudExlZnR8fDAsbD1pLnBhZ2VZT2Zmc2V0fHxmLnN1cHBvcnQuYm94TW9kZWwmJmcuc2Nyb2xsVG9wfHxoLnNjcm9sbFRvcCxtPWkucGFnZVhPZmZzZXR8fGYuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxMZWZ0fHxoLnNjcm9sbExlZnQsbj1jLnRvcCtsLWosbz1jLmxlZnQrbS1rO3JldHVybnt0b3A6bixsZWZ0Om99fTpmLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO2lmKGEpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7aWYoIWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7aWYoYj09PWIub3duZXJEb2N1bWVudC5ib2R5KXJldHVybiBmLm9mZnNldC5ib2R5T2Zmc2V0KGIpO3ZhciBjLGQ9Yi5vZmZzZXRQYXJlbnQsZT1iLGc9Yi5vd25lckRvY3VtZW50LGg9Zy5kb2N1bWVudEVsZW1lbnQsaT1nLmJvZHksaj1nLmRlZmF1bHRWaWV3LGs9aj9qLmdldENvbXB1dGVkU3R5bGUoYixudWxsKTpiLmN1cnJlbnRTdHlsZSxsPWIub2Zmc2V0VG9wLG09Yi5vZmZzZXRMZWZ0O3doaWxlKChiPWIucGFyZW50Tm9kZSkmJmIhPT1pJiZiIT09aCl7aWYoZi5zdXBwb3J0LmZpeGVkUG9zaXRpb24mJmsucG9zaXRpb249PT0iZml4ZWQiKWJyZWFrO2M9aj9qLmdldENvbXB1dGVkU3R5bGUoYixudWxsKTpiLmN1cnJlbnRTdHlsZSxsLT1iLnNjcm9sbFRvcCxtLT1iLnNjcm9sbExlZnQsYj09PWQmJihsKz1iLm9mZnNldFRvcCxtKz1iLm9mZnNldExlZnQsZi5zdXBwb3J0LmRvZXNOb3RBZGRCb3JkZXImJighZi5zdXBwb3J0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzfHwhY3cudGVzdChiLm5vZGVOYW1lKSkmJihsKz1wYXJzZUZsb2F0KGMuYm9yZGVyVG9wV2lkdGgpfHwwLG0rPXBhcnNlRmxvYXQoYy5ib3JkZXJMZWZ0V2lkdGgpfHwwKSxlPWQsZD1iLm9mZnNldFBhcmVudCksZi5zdXBwb3J0LnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90VmlzaWJsZSYmYy5vdmVyZmxvdyE9PSJ2aXNpYmxlIiYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGs9Y31pZihrLnBvc2l0aW9uPT09InJlbGF0aXZlInx8ay5wb3NpdGlvbj09PSJzdGF0aWMiKWwrPWkub2Zmc2V0VG9wLG0rPWkub2Zmc2V0TGVmdDtmLnN1cHBvcnQuZml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCImJihsKz1NYXRoLm1heChoLnNjcm9sbFRvcCxpLnNjcm9sbFRvcCksbSs9TWF0aC5tYXgoaC5zY3JvbGxMZWZ0LGkuc2Nyb2xsTGVmdCkpO3JldHVybnt0b3A6bCxsZWZ0Om19fSxmLm9mZnNldD17Ym9keU9mZnNldDpmdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFRvcCxjPWEub2Zmc2V0TGVmdDtmLnN1cHBvcnQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQmJihiKz1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjKz1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDApO3JldHVybnt0b3A6YixsZWZ0OmN9fSxzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWYuY3NzKGEsInBvc2l0aW9uIik7ZD09PSJzdGF0aWMiJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKTt2YXIgZT1mKGEpLGc9ZS5vZmZzZXQoKSxoPWYuY3NzKGEsInRvcCIpLGk9Zi5jc3MoYSwibGVmdCIpLGo9KGQ9PT0iYWJzb2x1dGUifHxkPT09ImZpeGVkIikmJmYuaW5BcnJheSgiYXV0byIsW2gsaV0pPi0xLGs9e30sbD17fSxtLG47aj8obD1lLnBvc2l0aW9uKCksbT1sLnRvcCxuPWwubGVmdCk6KG09cGFyc2VGbG9hdChoKXx8MCxuPXBhcnNlRmxvYXQoaSl8fDApLGYuaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxnKSksYi50b3AhPW51bGwmJihrLnRvcD1iLnRvcC1nLnRvcCttKSxiLmxlZnQhPW51bGwmJihrLmxlZnQ9Yi5sZWZ0LWcubGVmdCtuKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxrKTplLmNzcyhrKX19LGYuZm4uZXh0ZW5kKHtwb3NpdGlvbjpmdW5jdGlvbigpe2lmKCF0aGlzWzBdKXJldHVybiBudWxsO3ZhciBhPXRoaXNbMF0sYj10aGlzLm9mZnNldFBhcmVudCgpLGM9dGhpcy5vZmZzZXQoKSxkPWN4LnRlc3QoYlswXS5ub2RlTmFtZSk/e3RvcDowLGxlZnQ6MH06Yi5vZmZzZXQoKTtjLnRvcC09cGFyc2VGbG9hdChmLmNzcyhhLCJtYXJnaW5Ub3AiKSl8fDAsYy5sZWZ0LT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDAsZC50b3ArPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyVG9wV2lkdGgiKSl8fDAsZC5sZWZ0Kz1wYXJzZUZsb2F0KGYuY3NzKGJbMF0sImJvcmRlckxlZnRXaWR0aCIpKXx8MDtyZXR1cm57dG9wOmMudG9wLWQudG9wLGxlZnQ6Yy5sZWZ0LWQubGVmdH19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjLmJvZHk7d2hpbGUoYSYmIWN4LnRlc3QoYS5ub2RlTmFtZSkmJmYuY3NzKGEsInBvc2l0aW9uIik9PT0ic3RhdGljIilhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfSl9fSksZi5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKGEsYyl7dmFyIGQ9InNjcm9sbCIrYztmLmZuW2RdPWZ1bmN0aW9uKGMpe3ZhciBlLGc7aWYoYz09PWIpe2U9dGhpc1swXTtpZighZSlyZXR1cm4gbnVsbDtnPWN5KGUpO3JldHVybiBnPyJwYWdlWE9mZnNldCJpbiBnP2dbYT8icGFnZVlPZmZzZXQiOiJwYWdlWE9mZnNldCJdOmYuc3VwcG9ydC5ib3hNb2RlbCYmZy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbZF18fGcuZG9jdW1lbnQuYm9keVtkXTplW2RdfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtnPWN5KHRoaXMpLGc/Zy5zY3JvbGxUbyhhP2YoZykuc2Nyb2xsTGVmdCgpOmMsYT9jOmYoZykuc2Nyb2xsVG9wKCkpOnRoaXNbZF09Y30pfX0pLGYuZWFjaChbIkhlaWdodCIsIldpZHRoIl0sZnVuY3Rpb24oYSxjKXt2YXIgZD1jLnRvTG93ZXJDYXNlKCk7Zi5mblsiaW5uZXIiK2NdPWZ1bmN0aW9uKCl7dmFyIGE9dGhpc1swXTtyZXR1cm4gYT9hLnN0eWxlP3BhcnNlRmxvYXQoZi5jc3MoYSxkLCJwYWRkaW5nIikpOnRoaXNbZF0oKTpudWxsfSxmLmZuWyJvdXRlciIrY109ZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXTtyZXR1cm4gYj9iLnN0eWxlP3BhcnNlRmxvYXQoZi5jc3MoYixkLGE/Im1hcmdpbiI6ImJvcmRlciIpKTp0aGlzW2RdKCk6bnVsbH0sZi5mbltkXT1mdW5jdGlvbihhKXt2YXIgZT10aGlzWzBdO2lmKCFlKXJldHVybiBhPT1udWxsP251bGw6dGhpcztpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2NbZF0oYS5jYWxsKHRoaXMsYixjW2RdKCkpKX0pO2lmKGYuaXNXaW5kb3coZSkpe3ZhciBnPWUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2NdLGg9ZS5kb2N1bWVudC5ib2R5O3JldHVybiBlLmRvY3VtZW50LmNvbXBhdE1vZGU9PT0iQ1NTMUNvbXBhdCImJmd8fGgmJmhbImNsaWVudCIrY118fGd9aWYoZS5ub2RlVHlwZT09PTkpcmV0dXJuIE1hdGgubWF4KGUuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2NdLGUuYm9keVsic2Nyb2xsIitjXSxlLmRvY3VtZW50RWxlbWVudFsic2Nyb2xsIitjXSxlLmJvZHlbIm9mZnNldCIrY10sZS5kb2N1bWVudEVsZW1lbnRbIm9mZnNldCIrY10pO2lmKGE9PT1iKXt2YXIgaT1mLmNzcyhlLGQpLGo9cGFyc2VGbG9hdChpKTtyZXR1cm4gZi5pc051bWVyaWMoaik/ajppfXJldHVybiB0aGlzLmNzcyhkLHR5cGVvZiBhPT0ic3RyaW5nIj9hOmErInB4Iil9fSksYS5qUXVlcnk9YS4kPWYsdHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZCYmZGVmaW5lLmFtZC5qUXVlcnkmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBmfSl9KSh3aW5kb3cpOw==]]></data>
	</file>
	<file>
	  <filename>/js/jquery.validate.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpRdWVyeSBWYWxpZGF0aW9uIFBsdWdpbiAxLjkuMAogKgogKiBodHRwOi8vYmFzc2lzdGFuY2UuZGUvanF1ZXJ5LXBsdWdpbnMvanF1ZXJ5LXBsdWdpbi12YWxpZGF0aW9uLwogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDExIErDtnJuIFphZWZmZXJlcgogKgogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoKICogICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogKiAgIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbAogKi8KCihmdW5jdGlvbigkKSB7CgokLmV4dGVuZCgkLmZuLCB7CgkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi92YWxpZGF0ZQoJdmFsaWRhdGU6IGZ1bmN0aW9uKCBvcHRpb25zICkgewoKCQkvLyBpZiBub3RoaW5nIGlzIHNlbGVjdGVkLCByZXR1cm4gbm90aGluZzsgY2FuJ3QgY2hhaW4gYW55d2F5CgkJaWYgKCF0aGlzLmxlbmd0aCkgewoJCQlvcHRpb25zICYmIG9wdGlvbnMuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKCAibm90aGluZyBzZWxlY3RlZCwgY2FuJ3QgdmFsaWRhdGUsIHJldHVybmluZyBub3RoaW5nIiApOwoJCQlyZXR1cm47CgkJfQoKCQkvLyBjaGVjayBpZiBhIHZhbGlkYXRvciBmb3IgdGhpcyBmb3JtIHdhcyBhbHJlYWR5IGNyZWF0ZWQKCQl2YXIgdmFsaWRhdG9yID0gJC5kYXRhKHRoaXNbMF0sICd2YWxpZGF0b3InKTsKCQlpZiAoIHZhbGlkYXRvciApIHsKCQkJcmV0dXJuIHZhbGlkYXRvcjsKCQl9CgoJCS8vIEFkZCBub3ZhbGlkYXRlIHRhZyBpZiBIVE1MNS4KCQl0aGlzLmF0dHIoJ25vdmFsaWRhdGUnLCAnbm92YWxpZGF0ZScpOwoKCQl2YWxpZGF0b3IgPSBuZXcgJC52YWxpZGF0b3IoIG9wdGlvbnMsIHRoaXNbMF0gKTsKCQkkLmRhdGEodGhpc1swXSwgJ3ZhbGlkYXRvcicsIHZhbGlkYXRvcik7CgoJCWlmICggdmFsaWRhdG9yLnNldHRpbmdzLm9uc3VibWl0ICkgewoKCQkJdmFyIGlucHV0c0FuZEJ1dHRvbnMgPSB0aGlzLmZpbmQoImlucHV0LCBidXR0b24iKTsKCgkJCS8vIGFsbG93IHN1cHByZXNpbmcgdmFsaWRhdGlvbiBieSBhZGRpbmcgYSBjYW5jZWwgY2xhc3MgdG8gdGhlIHN1Ym1pdCBidXR0b24KCQkJaW5wdXRzQW5kQnV0dG9ucy5maWx0ZXIoIi5jYW5jZWwiKS5jbGljayhmdW5jdGlvbiAoKSB7CgkJCQl2YWxpZGF0b3IuY2FuY2VsU3VibWl0ID0gdHJ1ZTsKCQkJfSk7CgoJCQkvLyB3aGVuIGEgc3VibWl0SGFuZGxlciBpcyB1c2VkLCBjYXB0dXJlIHRoZSBzdWJtaXR0aW5nIGJ1dHRvbgoJCQlpZiAodmFsaWRhdG9yLnNldHRpbmdzLnN1Ym1pdEhhbmRsZXIpIHsKCQkJCWlucHV0c0FuZEJ1dHRvbnMuZmlsdGVyKCI6c3VibWl0IikuY2xpY2soZnVuY3Rpb24gKCkgewoJCQkJCXZhbGlkYXRvci5zdWJtaXRCdXR0b24gPSB0aGlzOwoJCQkJfSk7CgkJCX0KCgkJCS8vIHZhbGlkYXRlIHRoZSBmb3JtIG9uIHN1Ym1pdAoJCQl0aGlzLnN1Ym1pdCggZnVuY3Rpb24oIGV2ZW50ICkgewoJCQkJaWYgKCB2YWxpZGF0b3Iuc2V0dGluZ3MuZGVidWcgKQoJCQkJCS8vIHByZXZlbnQgZm9ybSBzdWJtaXQgdG8gYmUgYWJsZSB0byBzZWUgY29uc29sZSBvdXRwdXQKCQkJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKCQkJCWZ1bmN0aW9uIGhhbmRsZSgpIHsKCQkJCQlpZiAoIHZhbGlkYXRvci5zZXR0aW5ncy5zdWJtaXRIYW5kbGVyICkgewoJCQkJCQlpZiAodmFsaWRhdG9yLnN1Ym1pdEJ1dHRvbikgewoJCQkJCQkJLy8gaW5zZXJ0IGEgaGlkZGVuIGlucHV0IGFzIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBtaXNzaW5nIHN1Ym1pdCBidXR0b24KCQkJCQkJCXZhciBoaWRkZW4gPSAkKCI8aW5wdXQgdHlwZT0naGlkZGVuJy8+IikuYXR0cigibmFtZSIsIHZhbGlkYXRvci5zdWJtaXRCdXR0b24ubmFtZSkudmFsKHZhbGlkYXRvci5zdWJtaXRCdXR0b24udmFsdWUpLmFwcGVuZFRvKHZhbGlkYXRvci5jdXJyZW50Rm9ybSk7CgkJCQkJCX0KCQkJCQkJdmFsaWRhdG9yLnNldHRpbmdzLnN1Ym1pdEhhbmRsZXIuY2FsbCggdmFsaWRhdG9yLCB2YWxpZGF0b3IuY3VycmVudEZvcm0gKTsKCQkJCQkJaWYgKHZhbGlkYXRvci5zdWJtaXRCdXR0b24pIHsKCQkJCQkJCS8vIGFuZCBjbGVhbiB1cCBhZnRlcndhcmRzOyB0aGFua3MgdG8gbm8tYmxvY2stc2NvcGUsIGhpZGRlbiBjYW4gYmUgcmVmZXJlbmNlZAoJCQkJCQkJaGlkZGVuLnJlbW92ZSgpOwoJCQkJCQl9CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9CgoJCQkJLy8gcHJldmVudCBzdWJtaXQgZm9yIGludmFsaWQgZm9ybXMgb3IgY3VzdG9tIHN1Ym1pdCBoYW5kbGVycwoJCQkJaWYgKCB2YWxpZGF0b3IuY2FuY2VsU3VibWl0ICkgewoJCQkJCXZhbGlkYXRvci5jYW5jZWxTdWJtaXQgPSBmYWxzZTsKCQkJCQlyZXR1cm4gaGFuZGxlKCk7CgkJCQl9CgkJCQlpZiAoIHZhbGlkYXRvci5mb3JtKCkgKSB7CgkJCQkJaWYgKCB2YWxpZGF0b3IucGVuZGluZ1JlcXVlc3QgKSB7CgkJCQkJCXZhbGlkYXRvci5mb3JtU3VibWl0dGVkID0gdHJ1ZTsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCQlyZXR1cm4gaGFuZGxlKCk7CgkJCQl9IGVsc2UgewoJCQkJCXZhbGlkYXRvci5mb2N1c0ludmFsaWQoKTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0pOwoJCX0KCgkJcmV0dXJuIHZhbGlkYXRvcjsKCX0sCgkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi92YWxpZAoJdmFsaWQ6IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICggJCh0aGlzWzBdKS5pcygnZm9ybScpKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKCkuZm9ybSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciB2YWxpZCA9IHRydWU7CiAgICAgICAgICAgIHZhciB2YWxpZGF0b3IgPSAkKHRoaXNbMF0uZm9ybSkudmFsaWRhdGUoKTsKICAgICAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJdmFsaWQgJj0gdmFsaWRhdG9yLmVsZW1lbnQodGhpcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gdmFsaWQ7CiAgICAgICAgfQogICAgfSwKCS8vIGF0dHJpYnV0ZXM6IHNwYWNlIHNlcGVyYXRlZCBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gcmV0cmlldmUgYW5kIHJlbW92ZQoJcmVtb3ZlQXR0cnM6IGZ1bmN0aW9uKGF0dHJpYnV0ZXMpIHsKCQl2YXIgcmVzdWx0ID0ge30sCgkJCSRlbGVtZW50ID0gdGhpczsKCQkkLmVhY2goYXR0cmlidXRlcy5zcGxpdCgvXHMvKSwgZnVuY3Rpb24oaW5kZXgsIHZhbHVlKSB7CgkJCXJlc3VsdFt2YWx1ZV0gPSAkZWxlbWVudC5hdHRyKHZhbHVlKTsKCQkJJGVsZW1lbnQucmVtb3ZlQXR0cih2YWx1ZSk7CgkJfSk7CgkJcmV0dXJuIHJlc3VsdDsKCX0sCgkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9ydWxlcwoJcnVsZXM6IGZ1bmN0aW9uKGNvbW1hbmQsIGFyZ3VtZW50KSB7CgkJdmFyIGVsZW1lbnQgPSB0aGlzWzBdOwoKCQlpZiAoY29tbWFuZCkgewoJCQl2YXIgc2V0dGluZ3MgPSAkLmRhdGEoZWxlbWVudC5mb3JtLCAndmFsaWRhdG9yJykuc2V0dGluZ3M7CgkJCXZhciBzdGF0aWNSdWxlcyA9IHNldHRpbmdzLnJ1bGVzOwoJCQl2YXIgZXhpc3RpbmdSdWxlcyA9ICQudmFsaWRhdG9yLnN0YXRpY1J1bGVzKGVsZW1lbnQpOwoJCQlzd2l0Y2goY29tbWFuZCkgewoJCQljYXNlICJhZGQiOgoJCQkJJC5leHRlbmQoZXhpc3RpbmdSdWxlcywgJC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShhcmd1bWVudCkpOwoJCQkJc3RhdGljUnVsZXNbZWxlbWVudC5uYW1lXSA9IGV4aXN0aW5nUnVsZXM7CgkJCQlpZiAoYXJndW1lbnQubWVzc2FnZXMpCgkJCQkJc2V0dGluZ3MubWVzc2FnZXNbZWxlbWVudC5uYW1lXSA9ICQuZXh0ZW5kKCBzZXR0aW5ncy5tZXNzYWdlc1tlbGVtZW50Lm5hbWVdLCBhcmd1bWVudC5tZXNzYWdlcyApOwoJCQkJYnJlYWs7CgkJCWNhc2UgInJlbW92ZSI6CgkJCQlpZiAoIWFyZ3VtZW50KSB7CgkJCQkJZGVsZXRlIHN0YXRpY1J1bGVzW2VsZW1lbnQubmFtZV07CgkJCQkJcmV0dXJuIGV4aXN0aW5nUnVsZXM7CgkJCQl9CgkJCQl2YXIgZmlsdGVyZWQgPSB7fTsKCQkJCSQuZWFjaChhcmd1bWVudC5zcGxpdCgvXHMvKSwgZnVuY3Rpb24oaW5kZXgsIG1ldGhvZCkgewoJCQkJCWZpbHRlcmVkW21ldGhvZF0gPSBleGlzdGluZ1J1bGVzW21ldGhvZF07CgkJCQkJZGVsZXRlIGV4aXN0aW5nUnVsZXNbbWV0aG9kXTsKCQkJCX0pOwoJCQkJcmV0dXJuIGZpbHRlcmVkOwoJCQl9CgkJfQoKCQl2YXIgZGF0YSA9ICQudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGVzKAoJCSQuZXh0ZW5kKAoJCQl7fSwKCQkJJC52YWxpZGF0b3IubWV0YWRhdGFSdWxlcyhlbGVtZW50KSwKCQkJJC52YWxpZGF0b3IuY2xhc3NSdWxlcyhlbGVtZW50KSwKCQkJJC52YWxpZGF0b3IuYXR0cmlidXRlUnVsZXMoZWxlbWVudCksCgkJCSQudmFsaWRhdG9yLnN0YXRpY1J1bGVzKGVsZW1lbnQpCgkJKSwgZWxlbWVudCk7CgoJCS8vIG1ha2Ugc3VyZSByZXF1aXJlZCBpcyBhdCBmcm9udAoJCWlmIChkYXRhLnJlcXVpcmVkKSB7CgkJCXZhciBwYXJhbSA9IGRhdGEucmVxdWlyZWQ7CgkJCWRlbGV0ZSBkYXRhLnJlcXVpcmVkOwoJCQlkYXRhID0gJC5leHRlbmQoe3JlcXVpcmVkOiBwYXJhbX0sIGRhdGEpOwoJCX0KCgkJcmV0dXJuIGRhdGE7Cgl9Cn0pOwoKLy8gQ3VzdG9tIHNlbGVjdG9ycwokLmV4dGVuZCgkLmV4cHJbIjoiXSwgewoJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vYmxhbmsKCWJsYW5rOiBmdW5jdGlvbihhKSB7cmV0dXJuICEkLnRyaW0oIiIgKyBhLnZhbHVlKTt9LAoJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vZmlsbGVkCglmaWxsZWQ6IGZ1bmN0aW9uKGEpIHtyZXR1cm4gISEkLnRyaW0oIiIgKyBhLnZhbHVlKTt9LAoJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vdW5jaGVja2VkCgl1bmNoZWNrZWQ6IGZ1bmN0aW9uKGEpIHtyZXR1cm4gIWEuY2hlY2tlZDt9Cn0pOwoKLy8gY29uc3RydWN0b3IgZm9yIHZhbGlkYXRvcgokLnZhbGlkYXRvciA9IGZ1bmN0aW9uKCBvcHRpb25zLCBmb3JtICkgewoJdGhpcy5zZXR0aW5ncyA9ICQuZXh0ZW5kKCB0cnVlLCB7fSwgJC52YWxpZGF0b3IuZGVmYXVsdHMsIG9wdGlvbnMgKTsKCXRoaXMuY3VycmVudEZvcm0gPSBmb3JtOwoJdGhpcy5pbml0KCk7Cn07CgokLnZhbGlkYXRvci5mb3JtYXQgPSBmdW5jdGlvbihzb3VyY2UsIHBhcmFtcykgewoJaWYgKCBhcmd1bWVudHMubGVuZ3RoID09IDEgKQoJCXJldHVybiBmdW5jdGlvbigpIHsKCQkJdmFyIGFyZ3MgPSAkLm1ha2VBcnJheShhcmd1bWVudHMpOwoJCQlhcmdzLnVuc2hpZnQoc291cmNlKTsKCQkJcmV0dXJuICQudmFsaWRhdG9yLmZvcm1hdC5hcHBseSggdGhpcywgYXJncyApOwoJCX07CglpZiAoIGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHBhcmFtcy5jb25zdHJ1Y3RvciAhPSBBcnJheSAgKSB7CgkJcGFyYW1zID0gJC5tYWtlQXJyYXkoYXJndW1lbnRzKS5zbGljZSgxKTsKCX0KCWlmICggcGFyYW1zLmNvbnN0cnVjdG9yICE9IEFycmF5ICkgewoJCXBhcmFtcyA9IFsgcGFyYW1zIF07Cgl9CgkkLmVhY2gocGFyYW1zLCBmdW5jdGlvbihpLCBuKSB7CgkJc291cmNlID0gc291cmNlLnJlcGxhY2UobmV3IFJlZ0V4cCgiXFx7IiArIGkgKyAiXFx9IiwgImciKSwgbik7Cgl9KTsKCXJldHVybiBzb3VyY2U7Cn07CgokLmV4dGVuZCgkLnZhbGlkYXRvciwgewoKCWRlZmF1bHRzOiB7CgkJbWVzc2FnZXM6IHt9LAoJCWdyb3Vwczoge30sCgkJcnVsZXM6IHt9LAoJCWVycm9yQ2xhc3M6ICJlcnJvciIsCgkJdmFsaWRDbGFzczogInZhbGlkIiwKCQllcnJvckVsZW1lbnQ6ICJsYWJlbCIsCgkJZm9jdXNJbnZhbGlkOiB0cnVlLAoJCWVycm9yQ29udGFpbmVyOiAkKCBbXSApLAoJCWVycm9yTGFiZWxDb250YWluZXI6ICQoIFtdICksCgkJb25zdWJtaXQ6IHRydWUsCgkJaWdub3JlOiAiOmhpZGRlbiIsCgkJaWdub3JlVGl0bGU6IGZhbHNlLAoJCW9uZm9jdXNpbjogZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQpIHsKCQkJdGhpcy5sYXN0QWN0aXZlID0gZWxlbWVudDsKCgkJCS8vIGhpZGUgZXJyb3IgbGFiZWwgYW5kIHJlbW92ZSBlcnJvciBjbGFzcyBvbiBmb2N1cyBpZiBlbmFibGVkCgkJCWlmICggdGhpcy5zZXR0aW5ncy5mb2N1c0NsZWFudXAgJiYgIXRoaXMuYmxvY2tGb2N1c0NsZWFudXAgKSB7CgkJCQl0aGlzLnNldHRpbmdzLnVuaGlnaGxpZ2h0ICYmIHRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQuY2FsbCggdGhpcywgZWxlbWVudCwgdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLCB0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MgKTsKCQkJCXRoaXMuYWRkV3JhcHBlcih0aGlzLmVycm9yc0ZvcihlbGVtZW50KSkuaGlkZSgpOwoJCQl9CgkJfSwKCQlvbmZvY3Vzb3V0OiBmdW5jdGlvbihlbGVtZW50LCBldmVudCkgewoJCQlpZiAoICF0aGlzLmNoZWNrYWJsZShlbGVtZW50KSAmJiAoZWxlbWVudC5uYW1lIGluIHRoaXMuc3VibWl0dGVkIHx8ICF0aGlzLm9wdGlvbmFsKGVsZW1lbnQpKSApIHsKCQkJCXRoaXMuZWxlbWVudChlbGVtZW50KTsKCQkJfQoJCX0sCgkJb25rZXl1cDogZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQpIHsKCQkJaWYgKCBlbGVtZW50Lm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQgfHwgZWxlbWVudCA9PSB0aGlzLmxhc3RFbGVtZW50ICkgewoJCQkJdGhpcy5lbGVtZW50KGVsZW1lbnQpOwoJCQl9CgkJfSwKCQlvbmNsaWNrOiBmdW5jdGlvbihlbGVtZW50LCBldmVudCkgewoJCQkvLyBjbGljayBvbiBzZWxlY3RzLCByYWRpb2J1dHRvbnMgYW5kIGNoZWNrYm94ZXMKCQkJaWYgKCBlbGVtZW50Lm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQgKQoJCQkJdGhpcy5lbGVtZW50KGVsZW1lbnQpOwoJCQkvLyBvciBvcHRpb24gZWxlbWVudHMsIGNoZWNrIHBhcmVudCBzZWxlY3QgaW4gdGhhdCBjYXNlCgkJCWVsc2UgaWYgKGVsZW1lbnQucGFyZW50Tm9kZS5uYW1lIGluIHRoaXMuc3VibWl0dGVkKQoJCQkJdGhpcy5lbGVtZW50KGVsZW1lbnQucGFyZW50Tm9kZSk7CgkJfSwKCQloaWdobGlnaHQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGVycm9yQ2xhc3MsIHZhbGlkQ2xhc3MpIHsKCQkJaWYgKGVsZW1lbnQudHlwZSA9PT0gJ3JhZGlvJykgewoJCQkJdGhpcy5maW5kQnlOYW1lKGVsZW1lbnQubmFtZSkuYWRkQ2xhc3MoZXJyb3JDbGFzcykucmVtb3ZlQ2xhc3ModmFsaWRDbGFzcyk7CgkJCX0gZWxzZSB7CgkJCQkkKGVsZW1lbnQpLmFkZENsYXNzKGVycm9yQ2xhc3MpLnJlbW92ZUNsYXNzKHZhbGlkQ2xhc3MpOwoJCQl9CgkJfSwKCQl1bmhpZ2hsaWdodDogZnVuY3Rpb24oZWxlbWVudCwgZXJyb3JDbGFzcywgdmFsaWRDbGFzcykgewoJCQlpZiAoZWxlbWVudC50eXBlID09PSAncmFkaW8nKSB7CgkJCQl0aGlzLmZpbmRCeU5hbWUoZWxlbWVudC5uYW1lKS5yZW1vdmVDbGFzcyhlcnJvckNsYXNzKS5hZGRDbGFzcyh2YWxpZENsYXNzKTsKCQkJfSBlbHNlIHsKCQkJCSQoZWxlbWVudCkucmVtb3ZlQ2xhc3MoZXJyb3JDbGFzcykuYWRkQ2xhc3ModmFsaWRDbGFzcyk7CgkJCX0KCQl9Cgl9LAoKCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL1ZhbGlkYXRvci9zZXREZWZhdWx0cwoJc2V0RGVmYXVsdHM6IGZ1bmN0aW9uKHNldHRpbmdzKSB7CgkJJC5leHRlbmQoICQudmFsaWRhdG9yLmRlZmF1bHRzLCBzZXR0aW5ncyApOwoJfSwKCgltZXNzYWdlczogewoJCXJlcXVpcmVkOiAiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iLAoJCXJlbW90ZTogIlBsZWFzZSBmaXggdGhpcyBmaWVsZC4iLAoJCWVtYWlsOiAiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4iLAoJCXVybDogIlBsZWFzZSBlbnRlciBhIHZhbGlkIFVSTC4iLAoJCWRhdGU6ICJQbGVhc2UgZW50ZXIgYSB2YWxpZCBkYXRlLiIsCgkJZGF0ZUlTTzogIlBsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUgKElTTykuIiwKCQludW1iZXI6ICJQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXIuIiwKCQlkaWdpdHM6ICJQbGVhc2UgZW50ZXIgb25seSBkaWdpdHMuIiwKCQljcmVkaXRjYXJkOiAiUGxlYXNlIGVudGVyIGEgdmFsaWQgY3JlZGl0IGNhcmQgbnVtYmVyLiIsCgkJZXF1YWxUbzogIlBsZWFzZSBlbnRlciB0aGUgc2FtZSB2YWx1ZSBhZ2Fpbi4iLAoJCWFjY2VwdDogIlBsZWFzZSBlbnRlciBhIHZhbHVlIHdpdGggYSB2YWxpZCBleHRlbnNpb24uIiwKCQltYXhsZW5ndGg6ICQudmFsaWRhdG9yLmZvcm1hdCgiUGxlYXNlIGVudGVyIG5vIG1vcmUgdGhhbiB7MH0gY2hhcmFjdGVycy4iKSwKCQltaW5sZW5ndGg6ICQudmFsaWRhdG9yLmZvcm1hdCgiUGxlYXNlIGVudGVyIGF0IGxlYXN0IHswfSBjaGFyYWN0ZXJzLiIpLAoJCXJhbmdlbGVuZ3RoOiAkLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gezB9IGFuZCB7MX0gY2hhcmFjdGVycyBsb25nLiIpLAoJCXJhbmdlOiAkLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gezB9IGFuZCB7MX0uIiksCgkJbWF4OiAkLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB7MH0uIiksCgkJbWluOiAkLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB7MH0uIikKCX0sCgoJYXV0b0NyZWF0ZVJhbmdlczogZmFsc2UsCgoJcHJvdG90eXBlOiB7CgoJCWluaXQ6IGZ1bmN0aW9uKCkgewoJCQl0aGlzLmxhYmVsQ29udGFpbmVyID0gJCh0aGlzLnNldHRpbmdzLmVycm9yTGFiZWxDb250YWluZXIpOwoJCQl0aGlzLmVycm9yQ29udGV4dCA9IHRoaXMubGFiZWxDb250YWluZXIubGVuZ3RoICYmIHRoaXMubGFiZWxDb250YWluZXIgfHwgJCh0aGlzLmN1cnJlbnRGb3JtKTsKCQkJdGhpcy5jb250YWluZXJzID0gJCh0aGlzLnNldHRpbmdzLmVycm9yQ29udGFpbmVyKS5hZGQoIHRoaXMuc2V0dGluZ3MuZXJyb3JMYWJlbENvbnRhaW5lciApOwoJCQl0aGlzLnN1Ym1pdHRlZCA9IHt9OwoJCQl0aGlzLnZhbHVlQ2FjaGUgPSB7fTsKCQkJdGhpcy5wZW5kaW5nUmVxdWVzdCA9IDA7CgkJCXRoaXMucGVuZGluZyA9IHt9OwoJCQl0aGlzLmludmFsaWQgPSB7fTsKCQkJdGhpcy5yZXNldCgpOwoKCQkJdmFyIGdyb3VwcyA9ICh0aGlzLmdyb3VwcyA9IHt9KTsKCQkJJC5lYWNoKHRoaXMuc2V0dGluZ3MuZ3JvdXBzLCBmdW5jdGlvbihrZXksIHZhbHVlKSB7CgkJCQkkLmVhY2godmFsdWUuc3BsaXQoL1xzLyksIGZ1bmN0aW9uKGluZGV4LCBuYW1lKSB7CgkJCQkJZ3JvdXBzW25hbWVdID0ga2V5OwoJCQkJfSk7CgkJCX0pOwoJCQl2YXIgcnVsZXMgPSB0aGlzLnNldHRpbmdzLnJ1bGVzOwoJCQkkLmVhY2gocnVsZXMsIGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKCQkJCXJ1bGVzW2tleV0gPSAkLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKHZhbHVlKTsKCQkJfSk7CgoJCQlmdW5jdGlvbiBkZWxlZ2F0ZShldmVudCkgewoJCQkJdmFyIHZhbGlkYXRvciA9ICQuZGF0YSh0aGlzWzBdLmZvcm0sICJ2YWxpZGF0b3IiKSwKCQkJCQlldmVudFR5cGUgPSAib24iICsgZXZlbnQudHlwZS5yZXBsYWNlKC9edmFsaWRhdGUvLCAiIik7CgkJCQl2YWxpZGF0b3Iuc2V0dGluZ3NbZXZlbnRUeXBlXSAmJiB2YWxpZGF0b3Iuc2V0dGluZ3NbZXZlbnRUeXBlXS5jYWxsKHZhbGlkYXRvciwgdGhpc1swXSwgZXZlbnQpOwoJCQl9CgkJCSQodGhpcy5jdXJyZW50Rm9ybSkKCQkJICAgICAgIC52YWxpZGF0ZURlbGVnYXRlKCJbdHlwZT0ndGV4dCddLCBbdHlwZT0ncGFzc3dvcmQnXSwgW3R5cGU9J2ZpbGUnXSwgc2VsZWN0LCB0ZXh0YXJlYSwgIiArCgkJCQkJCSJbdHlwZT0nbnVtYmVyJ10sIFt0eXBlPSdzZWFyY2gnXSAsW3R5cGU9J3RlbCddLCBbdHlwZT0ndXJsJ10sICIgKwoJCQkJCQkiW3R5cGU9J2VtYWlsJ10sIFt0eXBlPSdkYXRldGltZSddLCBbdHlwZT0nZGF0ZSddLCBbdHlwZT0nbW9udGgnXSwgIiArCgkJCQkJCSJbdHlwZT0nd2VlayddLCBbdHlwZT0ndGltZSddLCBbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSwgIiArCgkJCQkJCSJbdHlwZT0ncmFuZ2UnXSwgW3R5cGU9J2NvbG9yJ10gIiwKCQkJCQkJImZvY3VzaW4gZm9jdXNvdXQga2V5dXAiLCBkZWxlZ2F0ZSkKCQkJCS52YWxpZGF0ZURlbGVnYXRlKCJbdHlwZT0ncmFkaW8nXSwgW3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdCwgb3B0aW9uIiwgImNsaWNrIiwgZGVsZWdhdGUpOwoKCQkJaWYgKHRoaXMuc2V0dGluZ3MuaW52YWxpZEhhbmRsZXIpCgkJCQkkKHRoaXMuY3VycmVudEZvcm0pLmJpbmQoImludmFsaWQtZm9ybS52YWxpZGF0ZSIsIHRoaXMuc2V0dGluZ3MuaW52YWxpZEhhbmRsZXIpOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL1ZhbGlkYXRvci9mb3JtCgkJZm9ybTogZnVuY3Rpb24oKSB7CgkJCXRoaXMuY2hlY2tGb3JtKCk7CgkJCSQuZXh0ZW5kKHRoaXMuc3VibWl0dGVkLCB0aGlzLmVycm9yTWFwKTsKCQkJdGhpcy5pbnZhbGlkID0gJC5leHRlbmQoe30sIHRoaXMuZXJyb3JNYXApOwoJCQlpZiAoIXRoaXMudmFsaWQoKSkKCQkJCSQodGhpcy5jdXJyZW50Rm9ybSkudHJpZ2dlckhhbmRsZXIoImludmFsaWQtZm9ybSIsIFt0aGlzXSk7CgkJCXRoaXMuc2hvd0Vycm9ycygpOwoJCQlyZXR1cm4gdGhpcy52YWxpZCgpOwoJCX0sCgoJCWNoZWNrRm9ybTogZnVuY3Rpb24oKSB7CgkJCXRoaXMucHJlcGFyZUZvcm0oKTsKCQkJZm9yICggdmFyIGkgPSAwLCBlbGVtZW50cyA9ICh0aGlzLmN1cnJlbnRFbGVtZW50cyA9IHRoaXMuZWxlbWVudHMoKSk7IGVsZW1lbnRzW2ldOyBpKysgKSB7CgkJCQl0aGlzLmNoZWNrKCBlbGVtZW50c1tpXSApOwoJCQl9CgkJCXJldHVybiB0aGlzLnZhbGlkKCk7CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vVmFsaWRhdG9yL2VsZW1lbnQKCQllbGVtZW50OiBmdW5jdGlvbiggZWxlbWVudCApIHsKCQkJZWxlbWVudCA9IHRoaXMudmFsaWRhdGlvblRhcmdldEZvciggdGhpcy5jbGVhbiggZWxlbWVudCApICk7CgkJCXRoaXMubGFzdEVsZW1lbnQgPSBlbGVtZW50OwoJCQl0aGlzLnByZXBhcmVFbGVtZW50KCBlbGVtZW50ICk7CgkJCXRoaXMuY3VycmVudEVsZW1lbnRzID0gJChlbGVtZW50KTsKCQkJdmFyIHJlc3VsdCA9IHRoaXMuY2hlY2soIGVsZW1lbnQgKTsKCQkJaWYgKCByZXN1bHQgKSB7CgkJCQlkZWxldGUgdGhpcy5pbnZhbGlkW2VsZW1lbnQubmFtZV07CgkJCX0gZWxzZSB7CgkJCQl0aGlzLmludmFsaWRbZWxlbWVudC5uYW1lXSA9IHRydWU7CgkJCX0KCQkJaWYgKCAhdGhpcy5udW1iZXJPZkludmFsaWRzKCkgKSB7CgkJCQkvLyBIaWRlIGVycm9yIGNvbnRhaW5lcnMgb24gbGFzdCBlcnJvcgoJCQkJdGhpcy50b0hpZGUgPSB0aGlzLnRvSGlkZS5hZGQoIHRoaXMuY29udGFpbmVycyApOwoJCQl9CgkJCXRoaXMuc2hvd0Vycm9ycygpOwoJCQlyZXR1cm4gcmVzdWx0OwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL1ZhbGlkYXRvci9zaG93RXJyb3JzCgkJc2hvd0Vycm9yczogZnVuY3Rpb24oZXJyb3JzKSB7CgkJCWlmKGVycm9ycykgewoJCQkJLy8gYWRkIGl0ZW1zIHRvIGVycm9yIGxpc3QgYW5kIG1hcAoJCQkJJC5leHRlbmQoIHRoaXMuZXJyb3JNYXAsIGVycm9ycyApOwoJCQkJdGhpcy5lcnJvckxpc3QgPSBbXTsKCQkJCWZvciAoIHZhciBuYW1lIGluIGVycm9ycyApIHsKCQkJCQl0aGlzLmVycm9yTGlzdC5wdXNoKHsKCQkJCQkJbWVzc2FnZTogZXJyb3JzW25hbWVdLAoJCQkJCQllbGVtZW50OiB0aGlzLmZpbmRCeU5hbWUobmFtZSlbMF0KCQkJCQl9KTsKCQkJCX0KCQkJCS8vIHJlbW92ZSBpdGVtcyBmcm9tIHN1Y2Nlc3MgbGlzdAoJCQkJdGhpcy5zdWNjZXNzTGlzdCA9ICQuZ3JlcCggdGhpcy5zdWNjZXNzTGlzdCwgZnVuY3Rpb24oZWxlbWVudCkgewoJCQkJCXJldHVybiAhKGVsZW1lbnQubmFtZSBpbiBlcnJvcnMpOwoJCQkJfSk7CgkJCX0KCQkJdGhpcy5zZXR0aW5ncy5zaG93RXJyb3JzCgkJCQk/IHRoaXMuc2V0dGluZ3Muc2hvd0Vycm9ycy5jYWxsKCB0aGlzLCB0aGlzLmVycm9yTWFwLCB0aGlzLmVycm9yTGlzdCApCgkJCQk6IHRoaXMuZGVmYXVsdFNob3dFcnJvcnMoKTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9WYWxpZGF0b3IvcmVzZXRGb3JtCgkJcmVzZXRGb3JtOiBmdW5jdGlvbigpIHsKCQkJaWYgKCAkLmZuLnJlc2V0Rm9ybSApCgkJCQkkKCB0aGlzLmN1cnJlbnRGb3JtICkucmVzZXRGb3JtKCk7CgkJCXRoaXMuc3VibWl0dGVkID0ge307CgkJCXRoaXMubGFzdEVsZW1lbnQgPSBudWxsOwoJCQl0aGlzLnByZXBhcmVGb3JtKCk7CgkJCXRoaXMuaGlkZUVycm9ycygpOwoJCQl0aGlzLmVsZW1lbnRzKCkucmVtb3ZlQ2xhc3MoIHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcyApOwoJCX0sCgoJCW51bWJlck9mSW52YWxpZHM6IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gdGhpcy5vYmplY3RMZW5ndGgodGhpcy5pbnZhbGlkKTsKCQl9LAoKCQlvYmplY3RMZW5ndGg6IGZ1bmN0aW9uKCBvYmogKSB7CgkJCXZhciBjb3VudCA9IDA7CgkJCWZvciAoIHZhciBpIGluIG9iaiApCgkJCQljb3VudCsrOwoJCQlyZXR1cm4gY291bnQ7CgkJfSwKCgkJaGlkZUVycm9yczogZnVuY3Rpb24oKSB7CgkJCXRoaXMuYWRkV3JhcHBlciggdGhpcy50b0hpZGUgKS5oaWRlKCk7CgkJfSwKCgkJdmFsaWQ6IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gdGhpcy5zaXplKCkgPT0gMDsKCQl9LAoKCQlzaXplOiBmdW5jdGlvbigpIHsKCQkJcmV0dXJuIHRoaXMuZXJyb3JMaXN0Lmxlbmd0aDsKCQl9LAoKCQlmb2N1c0ludmFsaWQ6IGZ1bmN0aW9uKCkgewoJCQlpZiggdGhpcy5zZXR0aW5ncy5mb2N1c0ludmFsaWQgKSB7CgkJCQl0cnkgewoJCQkJCSQodGhpcy5maW5kTGFzdEFjdGl2ZSgpIHx8IHRoaXMuZXJyb3JMaXN0Lmxlbmd0aCAmJiB0aGlzLmVycm9yTGlzdFswXS5lbGVtZW50IHx8IFtdKQoJCQkJCS5maWx0ZXIoIjp2aXNpYmxlIikKCQkJCQkuZm9jdXMoKQoJCQkJCS8vIG1hbnVhbGx5IHRyaWdnZXIgZm9jdXNpbiBldmVudDsgd2l0aG91dCBpdCwgZm9jdXNpbiBoYW5kbGVyIGlzbid0IGNhbGxlZCwgZmluZExhc3RBY3RpdmUgd29uJ3QgaGF2ZSBhbnl0aGluZyB0byBmaW5kCgkJCQkJLnRyaWdnZXIoImZvY3VzaW4iKTsKCQkJCX0gY2F0Y2goZSkgewoJCQkJCS8vIGlnbm9yZSBJRSB0aHJvd2luZyBlcnJvcnMgd2hlbiBmb2N1c2luZyBoaWRkZW4gZWxlbWVudHMKCQkJCX0KCQkJfQoJCX0sCgoJCWZpbmRMYXN0QWN0aXZlOiBmdW5jdGlvbigpIHsKCQkJdmFyIGxhc3RBY3RpdmUgPSB0aGlzLmxhc3RBY3RpdmU7CgkJCXJldHVybiBsYXN0QWN0aXZlICYmICQuZ3JlcCh0aGlzLmVycm9yTGlzdCwgZnVuY3Rpb24obikgewoJCQkJcmV0dXJuIG4uZWxlbWVudC5uYW1lID09IGxhc3RBY3RpdmUubmFtZTsKCQkJfSkubGVuZ3RoID09IDEgJiYgbGFzdEFjdGl2ZTsKCQl9LAoKCQllbGVtZW50czogZnVuY3Rpb24oKSB7CgkJCXZhciB2YWxpZGF0b3IgPSB0aGlzLAoJCQkJcnVsZXNDYWNoZSA9IHt9OwoKCQkJLy8gc2VsZWN0IGFsbCB2YWxpZCBpbnB1dHMgaW5zaWRlIHRoZSBmb3JtIChubyBzdWJtaXQgb3IgcmVzZXQgYnV0dG9ucykKCQkJcmV0dXJuICQodGhpcy5jdXJyZW50Rm9ybSkKCQkJLmZpbmQoImlucHV0LCBzZWxlY3QsIHRleHRhcmVhIikKCQkJLm5vdCgiOnN1Ym1pdCwgOnJlc2V0LCA6aW1hZ2UsIFtkaXNhYmxlZF0iKQoJCQkubm90KCB0aGlzLnNldHRpbmdzLmlnbm9yZSApCgkJCS5maWx0ZXIoZnVuY3Rpb24oKSB7CgkJCQkhdGhpcy5uYW1lICYmIHZhbGlkYXRvci5zZXR0aW5ncy5kZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKCAiJW8gaGFzIG5vIG5hbWUgYXNzaWduZWQiLCB0aGlzKTsKCgkJCQkvLyBzZWxlY3Qgb25seSB0aGUgZmlyc3QgZWxlbWVudCBmb3IgZWFjaCBuYW1lLCBhbmQgb25seSB0aG9zZSB3aXRoIHJ1bGVzIHNwZWNpZmllZAoJCQkJaWYgKCB0aGlzLm5hbWUgaW4gcnVsZXNDYWNoZSB8fCAhdmFsaWRhdG9yLm9iamVjdExlbmd0aCgkKHRoaXMpLnJ1bGVzKCkpICkKCQkJCQlyZXR1cm4gZmFsc2U7CgoJCQkJcnVsZXNDYWNoZVt0aGlzLm5hbWVdID0gdHJ1ZTsKCQkJCXJldHVybiB0cnVlOwoJCQl9KTsKCQl9LAoKCQljbGVhbjogZnVuY3Rpb24oIHNlbGVjdG9yICkgewoJCQlyZXR1cm4gJCggc2VsZWN0b3IgKVswXTsKCQl9LAoKCQllcnJvcnM6IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gJCggdGhpcy5zZXR0aW5ncy5lcnJvckVsZW1lbnQgKyAiLiIgKyB0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsIHRoaXMuZXJyb3JDb250ZXh0ICk7CgkJfSwKCgkJcmVzZXQ6IGZ1bmN0aW9uKCkgewoJCQl0aGlzLnN1Y2Nlc3NMaXN0ID0gW107CgkJCXRoaXMuZXJyb3JMaXN0ID0gW107CgkJCXRoaXMuZXJyb3JNYXAgPSB7fTsKCQkJdGhpcy50b1Nob3cgPSAkKFtdKTsKCQkJdGhpcy50b0hpZGUgPSAkKFtdKTsKCQkJdGhpcy5jdXJyZW50RWxlbWVudHMgPSAkKFtdKTsKCQl9LAoKCQlwcmVwYXJlRm9ybTogZnVuY3Rpb24oKSB7CgkJCXRoaXMucmVzZXQoKTsKCQkJdGhpcy50b0hpZGUgPSB0aGlzLmVycm9ycygpLmFkZCggdGhpcy5jb250YWluZXJzICk7CgkJfSwKCgkJcHJlcGFyZUVsZW1lbnQ6IGZ1bmN0aW9uKCBlbGVtZW50ICkgewoJCQl0aGlzLnJlc2V0KCk7CgkJCXRoaXMudG9IaWRlID0gdGhpcy5lcnJvcnNGb3IoZWxlbWVudCk7CgkJfSwKCgkJY2hlY2s6IGZ1bmN0aW9uKCBlbGVtZW50ICkgewoJCQllbGVtZW50ID0gdGhpcy52YWxpZGF0aW9uVGFyZ2V0Rm9yKCB0aGlzLmNsZWFuKCBlbGVtZW50ICkgKTsKCgkJCXZhciBydWxlcyA9ICQoZWxlbWVudCkucnVsZXMoKTsKCQkJdmFyIGRlcGVuZGVuY3lNaXNtYXRjaCA9IGZhbHNlOwoJCQlmb3IgKHZhciBtZXRob2QgaW4gcnVsZXMgKSB7CgkJCQl2YXIgcnVsZSA9IHsgbWV0aG9kOiBtZXRob2QsIHBhcmFtZXRlcnM6IHJ1bGVzW21ldGhvZF0gfTsKCQkJCXRyeSB7CgkJCQkJdmFyIHJlc3VsdCA9ICQudmFsaWRhdG9yLm1ldGhvZHNbbWV0aG9kXS5jYWxsKCB0aGlzLCBlbGVtZW50LnZhbHVlLnJlcGxhY2UoL1xyL2csICIiKSwgZWxlbWVudCwgcnVsZS5wYXJhbWV0ZXJzICk7CgoJCQkJCS8vIGlmIGEgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBmaWVsZCBpcyBvcHRpb25hbCBhbmQgdGhlcmVmb3JlIHZhbGlkLAoJCQkJCS8vIGRvbid0IG1hcmsgaXQgYXMgdmFsaWQgd2hlbiB0aGVyZSBhcmUgbm8gb3RoZXIgcnVsZXMKCQkJCQlpZiAoIHJlc3VsdCA9PSAiZGVwZW5kZW5jeS1taXNtYXRjaCIgKSB7CgkJCQkJCWRlcGVuZGVuY3lNaXNtYXRjaCA9IHRydWU7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQlkZXBlbmRlbmN5TWlzbWF0Y2ggPSBmYWxzZTsKCgkJCQkJaWYgKCByZXN1bHQgPT0gInBlbmRpbmciICkgewoJCQkJCQl0aGlzLnRvSGlkZSA9IHRoaXMudG9IaWRlLm5vdCggdGhpcy5lcnJvcnNGb3IoZWxlbWVudCkgKTsKCQkJCQkJcmV0dXJuOwoJCQkJCX0KCgkJCQkJaWYoICFyZXN1bHQgKSB7CgkJCQkJCXRoaXMuZm9ybWF0QW5kQWRkKCBlbGVtZW50LCBydWxlICk7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQl9IGNhdGNoKGUpIHsKCQkJCQl0aGlzLnNldHRpbmdzLmRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUubG9nKCJleGNlcHRpb24gb2NjdXJlZCB3aGVuIGNoZWNraW5nIGVsZW1lbnQgIiArIGVsZW1lbnQuaWQKCQkJCQkJICsgIiwgY2hlY2sgdGhlICciICsgcnVsZS5tZXRob2QgKyAiJyBtZXRob2QiLCBlKTsKCQkJCQl0aHJvdyBlOwoJCQkJfQoJCQl9CgkJCWlmIChkZXBlbmRlbmN5TWlzbWF0Y2gpCgkJCQlyZXR1cm47CgkJCWlmICggdGhpcy5vYmplY3RMZW5ndGgocnVsZXMpICkKCQkJCXRoaXMuc3VjY2Vzc0xpc3QucHVzaChlbGVtZW50KTsKCQkJcmV0dXJuIHRydWU7CgkJfSwKCgkJLy8gcmV0dXJuIHRoZSBjdXN0b20gbWVzc2FnZSBmb3IgdGhlIGdpdmVuIGVsZW1lbnQgYW5kIHZhbGlkYXRpb24gbWV0aG9kCgkJLy8gc3BlY2lmaWVkIGluIHRoZSBlbGVtZW50J3MgIm1lc3NhZ2VzIiBtZXRhZGF0YQoJCWN1c3RvbU1ldGFNZXNzYWdlOiBmdW5jdGlvbihlbGVtZW50LCBtZXRob2QpIHsKCQkJaWYgKCEkLm1ldGFkYXRhKQoJCQkJcmV0dXJuOwoKCQkJdmFyIG1ldGEgPSB0aGlzLnNldHRpbmdzLm1ldGEKCQkJCT8gJChlbGVtZW50KS5tZXRhZGF0YSgpW3RoaXMuc2V0dGluZ3MubWV0YV0KCQkJCTogJChlbGVtZW50KS5tZXRhZGF0YSgpOwoKCQkJcmV0dXJuIG1ldGEgJiYgbWV0YS5tZXNzYWdlcyAmJiBtZXRhLm1lc3NhZ2VzW21ldGhvZF07CgkJfSwKCgkJLy8gcmV0dXJuIHRoZSBjdXN0b20gbWVzc2FnZSBmb3IgdGhlIGdpdmVuIGVsZW1lbnQgbmFtZSBhbmQgdmFsaWRhdGlvbiBtZXRob2QKCQljdXN0b21NZXNzYWdlOiBmdW5jdGlvbiggbmFtZSwgbWV0aG9kICkgewoJCQl2YXIgbSA9IHRoaXMuc2V0dGluZ3MubWVzc2FnZXNbbmFtZV07CgkJCXJldHVybiBtICYmIChtLmNvbnN0cnVjdG9yID09IFN0cmluZwoJCQkJPyBtCgkJCQk6IG1bbWV0aG9kXSk7CgkJfSwKCgkJLy8gcmV0dXJuIHRoZSBmaXJzdCBkZWZpbmVkIGFyZ3VtZW50LCBhbGxvd2luZyBlbXB0eSBzdHJpbmdzCgkJZmluZERlZmluZWQ6IGZ1bmN0aW9uKCkgewoJCQlmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CgkJCQlpZiAoYXJndW1lbnRzW2ldICE9PSB1bmRlZmluZWQpCgkJCQkJcmV0dXJuIGFyZ3VtZW50c1tpXTsKCQkJfQoJCQlyZXR1cm4gdW5kZWZpbmVkOwoJCX0sCgoJCWRlZmF1bHRNZXNzYWdlOiBmdW5jdGlvbiggZWxlbWVudCwgbWV0aG9kKSB7CgkJCXJldHVybiB0aGlzLmZpbmREZWZpbmVkKAoJCQkJdGhpcy5jdXN0b21NZXNzYWdlKCBlbGVtZW50Lm5hbWUsIG1ldGhvZCApLAoJCQkJdGhpcy5jdXN0b21NZXRhTWVzc2FnZSggZWxlbWVudCwgbWV0aG9kICksCgkJCQkvLyB0aXRsZSBpcyBuZXZlciB1bmRlZmluZWQsIHNvIGhhbmRsZSBlbXB0eSBzdHJpbmcgYXMgdW5kZWZpbmVkCgkJCQkhdGhpcy5zZXR0aW5ncy5pZ25vcmVUaXRsZSAmJiBlbGVtZW50LnRpdGxlIHx8IHVuZGVmaW5lZCwKCQkJCSQudmFsaWRhdG9yLm1lc3NhZ2VzW21ldGhvZF0sCgkJCQkiPHN0cm9uZz5XYXJuaW5nOiBObyBtZXNzYWdlIGRlZmluZWQgZm9yICIgKyBlbGVtZW50Lm5hbWUgKyAiPC9zdHJvbmc+IgoJCQkpOwoJCX0sCgoJCWZvcm1hdEFuZEFkZDogZnVuY3Rpb24oIGVsZW1lbnQsIHJ1bGUgKSB7CgkJCXZhciBtZXNzYWdlID0gdGhpcy5kZWZhdWx0TWVzc2FnZSggZWxlbWVudCwgcnVsZS5tZXRob2QgKSwKCQkJCXRoZXJlZ2V4ID0gL1wkP1x7KFxkKylcfS9nOwoJCQlpZiAoIHR5cGVvZiBtZXNzYWdlID09ICJmdW5jdGlvbiIgKSB7CgkJCQltZXNzYWdlID0gbWVzc2FnZS5jYWxsKHRoaXMsIHJ1bGUucGFyYW1ldGVycywgZWxlbWVudCk7CgkJCX0gZWxzZSBpZiAodGhlcmVnZXgudGVzdChtZXNzYWdlKSkgewoJCQkJbWVzc2FnZSA9IGpRdWVyeS5mb3JtYXQobWVzc2FnZS5yZXBsYWNlKHRoZXJlZ2V4LCAneyQxfScpLCBydWxlLnBhcmFtZXRlcnMpOwoJCQl9CgkJCXRoaXMuZXJyb3JMaXN0LnB1c2goewoJCQkJbWVzc2FnZTogbWVzc2FnZSwKCQkJCWVsZW1lbnQ6IGVsZW1lbnQKCQkJfSk7CgoJCQl0aGlzLmVycm9yTWFwW2VsZW1lbnQubmFtZV0gPSBtZXNzYWdlOwoJCQl0aGlzLnN1Ym1pdHRlZFtlbGVtZW50Lm5hbWVdID0gbWVzc2FnZTsKCQl9LAoKCQlhZGRXcmFwcGVyOiBmdW5jdGlvbih0b1RvZ2dsZSkgewoJCQlpZiAoIHRoaXMuc2V0dGluZ3Mud3JhcHBlciApCgkJCQl0b1RvZ2dsZSA9IHRvVG9nZ2xlLmFkZCggdG9Ub2dnbGUucGFyZW50KCB0aGlzLnNldHRpbmdzLndyYXBwZXIgKSApOwoJCQlyZXR1cm4gdG9Ub2dnbGU7CgkJfSwKCgkJZGVmYXVsdFNob3dFcnJvcnM6IGZ1bmN0aW9uKCkgewoJCQlmb3IgKCB2YXIgaSA9IDA7IHRoaXMuZXJyb3JMaXN0W2ldOyBpKysgKSB7CgkJCQl2YXIgZXJyb3IgPSB0aGlzLmVycm9yTGlzdFtpXTsKCQkJCXRoaXMuc2V0dGluZ3MuaGlnaGxpZ2h0ICYmIHRoaXMuc2V0dGluZ3MuaGlnaGxpZ2h0LmNhbGwoIHRoaXMsIGVycm9yLmVsZW1lbnQsIHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcywgdGhpcy5zZXR0aW5ncy52YWxpZENsYXNzICk7CgkJCQl0aGlzLnNob3dMYWJlbCggZXJyb3IuZWxlbWVudCwgZXJyb3IubWVzc2FnZSApOwoJCQl9CgkJCWlmKCB0aGlzLmVycm9yTGlzdC5sZW5ndGggKSB7CgkJCQl0aGlzLnRvU2hvdyA9IHRoaXMudG9TaG93LmFkZCggdGhpcy5jb250YWluZXJzICk7CgkJCX0KCQkJaWYgKHRoaXMuc2V0dGluZ3Muc3VjY2VzcykgewoJCQkJZm9yICggdmFyIGkgPSAwOyB0aGlzLnN1Y2Nlc3NMaXN0W2ldOyBpKysgKSB7CgkJCQkJdGhpcy5zaG93TGFiZWwoIHRoaXMuc3VjY2Vzc0xpc3RbaV0gKTsKCQkJCX0KCQkJfQoJCQlpZiAodGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodCkgewoJCQkJZm9yICggdmFyIGkgPSAwLCBlbGVtZW50cyA9IHRoaXMudmFsaWRFbGVtZW50cygpOyBlbGVtZW50c1tpXTsgaSsrICkgewoJCQkJCXRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQuY2FsbCggdGhpcywgZWxlbWVudHNbaV0sIHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcywgdGhpcy5zZXR0aW5ncy52YWxpZENsYXNzICk7CgkJCQl9CgkJCX0KCQkJdGhpcy50b0hpZGUgPSB0aGlzLnRvSGlkZS5ub3QoIHRoaXMudG9TaG93ICk7CgkJCXRoaXMuaGlkZUVycm9ycygpOwoJCQl0aGlzLmFkZFdyYXBwZXIoIHRoaXMudG9TaG93ICkuc2hvdygpOwoJCX0sCgoJCXZhbGlkRWxlbWVudHM6IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gdGhpcy5jdXJyZW50RWxlbWVudHMubm90KHRoaXMuaW52YWxpZEVsZW1lbnRzKCkpOwoJCX0sCgoJCWludmFsaWRFbGVtZW50czogZnVuY3Rpb24oKSB7CgkJCXJldHVybiAkKHRoaXMuZXJyb3JMaXN0KS5tYXAoZnVuY3Rpb24oKSB7CgkJCQlyZXR1cm4gdGhpcy5lbGVtZW50OwoJCQl9KTsKCQl9LAoKCQlzaG93TGFiZWw6IGZ1bmN0aW9uKGVsZW1lbnQsIG1lc3NhZ2UpIHsKCQkJdmFyIGxhYmVsID0gdGhpcy5lcnJvcnNGb3IoIGVsZW1lbnQgKTsKCQkJaWYgKCBsYWJlbC5sZW5ndGggKSB7CgkJCQkvLyByZWZyZXNoIGVycm9yL3N1Y2Nlc3MgY2xhc3MKCQkJCWxhYmVsLnJlbW92ZUNsYXNzKCB0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MgKS5hZGRDbGFzcyggdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzICk7CgoJCQkJLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIGdlbmVyYXRlZCBsYWJlbCwgcmVwbGFjZSB0aGUgbWVzc2FnZSB0aGVuCgkJCQlsYWJlbC5hdHRyKCJnZW5lcmF0ZWQiKSAmJiBsYWJlbC5odG1sKG1lc3NhZ2UpOwoJCQl9IGVsc2UgewoJCQkJLy8gY3JlYXRlIGxhYmVsCgkJCQlsYWJlbCA9ICQoIjwiICsgdGhpcy5zZXR0aW5ncy5lcnJvckVsZW1lbnQgKyAiLz4iKQoJCQkJCS5hdHRyKHsiZm9yIjogIHRoaXMuaWRPck5hbWUoZWxlbWVudCksIGdlbmVyYXRlZDogdHJ1ZX0pCgkJCQkJLmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcykKCQkJCQkuaHRtbChtZXNzYWdlIHx8ICIiKTsKCQkJCWlmICggdGhpcy5zZXR0aW5ncy53cmFwcGVyICkgewoJCQkJCS8vIG1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyB2aXNpYmxlLCBldmVuIGluIElFCgkJCQkJLy8gYWN0dWFsbHkgc2hvd2luZyB0aGUgd3JhcHBlZCBlbGVtZW50IGlzIGhhbmRsZWQgZWxzZXdoZXJlCgkJCQkJbGFiZWwgPSBsYWJlbC5oaWRlKCkuc2hvdygpLndyYXAoIjwiICsgdGhpcy5zZXR0aW5ncy53cmFwcGVyICsgIi8+IikucGFyZW50KCk7CgkJCQl9CgkJCQlpZiAoICF0aGlzLmxhYmVsQ29udGFpbmVyLmFwcGVuZChsYWJlbCkubGVuZ3RoICkKCQkJCQl0aGlzLnNldHRpbmdzLmVycm9yUGxhY2VtZW50CgkJCQkJCT8gdGhpcy5zZXR0aW5ncy5lcnJvclBsYWNlbWVudChsYWJlbCwgJChlbGVtZW50KSApCgkJCQkJCTogbGFiZWwuaW5zZXJ0QWZ0ZXIoZWxlbWVudCk7CgkJCX0KCQkJaWYgKCAhbWVzc2FnZSAmJiB0aGlzLnNldHRpbmdzLnN1Y2Nlc3MgKSB7CgkJCQlsYWJlbC50ZXh0KCIiKTsKCQkJCXR5cGVvZiB0aGlzLnNldHRpbmdzLnN1Y2Nlc3MgPT0gInN0cmluZyIKCQkJCQk/IGxhYmVsLmFkZENsYXNzKCB0aGlzLnNldHRpbmdzLnN1Y2Nlc3MgKQoJCQkJCTogdGhpcy5zZXR0aW5ncy5zdWNjZXNzKCBsYWJlbCApOwoJCQl9CgkJCXRoaXMudG9TaG93ID0gdGhpcy50b1Nob3cuYWRkKGxhYmVsKTsKCQl9LAoKCQllcnJvcnNGb3I6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQkJdmFyIG5hbWUgPSB0aGlzLmlkT3JOYW1lKGVsZW1lbnQpOwogICAgCQlyZXR1cm4gdGhpcy5lcnJvcnMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7CgkJCQlyZXR1cm4gJCh0aGlzKS5hdHRyKCdmb3InKSA9PSBuYW1lOwoJCQl9KTsKCQl9LAoKCQlpZE9yTmFtZTogZnVuY3Rpb24oZWxlbWVudCkgewoJCQlyZXR1cm4gdGhpcy5ncm91cHNbZWxlbWVudC5uYW1lXSB8fCAodGhpcy5jaGVja2FibGUoZWxlbWVudCkgPyBlbGVtZW50Lm5hbWUgOiBlbGVtZW50LmlkIHx8IGVsZW1lbnQubmFtZSk7CgkJfSwKCgkJdmFsaWRhdGlvblRhcmdldEZvcjogZnVuY3Rpb24oZWxlbWVudCkgewoJCQkvLyBpZiByYWRpby9jaGVja2JveCwgdmFsaWRhdGUgZmlyc3QgZWxlbWVudCBpbiBncm91cCBpbnN0ZWFkCgkJCWlmICh0aGlzLmNoZWNrYWJsZShlbGVtZW50KSkgewoJCQkJZWxlbWVudCA9IHRoaXMuZmluZEJ5TmFtZSggZWxlbWVudC5uYW1lICkubm90KHRoaXMuc2V0dGluZ3MuaWdub3JlKVswXTsKCQkJfQoJCQlyZXR1cm4gZWxlbWVudDsKCQl9LAoKCQljaGVja2FibGU6IGZ1bmN0aW9uKCBlbGVtZW50ICkgewoJCQlyZXR1cm4gL3JhZGlvfGNoZWNrYm94L2kudGVzdChlbGVtZW50LnR5cGUpOwoJCX0sCgoJCWZpbmRCeU5hbWU6IGZ1bmN0aW9uKCBuYW1lICkgewoJCQkvLyBzZWxlY3QgYnkgbmFtZSBhbmQgZmlsdGVyIGJ5IGZvcm0gZm9yIHBlcmZvcm1hbmNlIG92ZXIgZm9ybS5maW5kKCJbbmFtZT0uLi5dIikKCQkJdmFyIGZvcm0gPSB0aGlzLmN1cnJlbnRGb3JtOwoJCQlyZXR1cm4gJChkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShuYW1lKSkubWFwKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7CgkJCQlyZXR1cm4gZWxlbWVudC5mb3JtID09IGZvcm0gJiYgZWxlbWVudC5uYW1lID09IG5hbWUgJiYgZWxlbWVudCAgfHwgbnVsbDsKCQkJfSk7CgkJfSwKCgkJZ2V0TGVuZ3RoOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCkgewoJCQlzd2l0Y2goIGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHsKCQkJY2FzZSAnc2VsZWN0JzoKCQkJCXJldHVybiAkKCJvcHRpb246c2VsZWN0ZWQiLCBlbGVtZW50KS5sZW5ndGg7CgkJCWNhc2UgJ2lucHV0JzoKCQkJCWlmKCB0aGlzLmNoZWNrYWJsZSggZWxlbWVudCkgKQoJCQkJCXJldHVybiB0aGlzLmZpbmRCeU5hbWUoZWxlbWVudC5uYW1lKS5maWx0ZXIoJzpjaGVja2VkJykubGVuZ3RoOwoJCQl9CgkJCXJldHVybiB2YWx1ZS5sZW5ndGg7CgkJfSwKCgkJZGVwZW5kOiBmdW5jdGlvbihwYXJhbSwgZWxlbWVudCkgewoJCQlyZXR1cm4gdGhpcy5kZXBlbmRUeXBlc1t0eXBlb2YgcGFyYW1dCgkJCQk/IHRoaXMuZGVwZW5kVHlwZXNbdHlwZW9mIHBhcmFtXShwYXJhbSwgZWxlbWVudCkKCQkJCTogdHJ1ZTsKCQl9LAoKCQlkZXBlbmRUeXBlczogewoJCQkiYm9vbGVhbiI6IGZ1bmN0aW9uKHBhcmFtLCBlbGVtZW50KSB7CgkJCQlyZXR1cm4gcGFyYW07CgkJCX0sCgkJCSJzdHJpbmciOiBmdW5jdGlvbihwYXJhbSwgZWxlbWVudCkgewoJCQkJcmV0dXJuICEhJChwYXJhbSwgZWxlbWVudC5mb3JtKS5sZW5ndGg7CgkJCX0sCgkJCSJmdW5jdGlvbiI6IGZ1bmN0aW9uKHBhcmFtLCBlbGVtZW50KSB7CgkJCQlyZXR1cm4gcGFyYW0oZWxlbWVudCk7CgkJCX0KCQl9LAoKCQlvcHRpb25hbDogZnVuY3Rpb24oZWxlbWVudCkgewoJCQlyZXR1cm4gISQudmFsaWRhdG9yLm1ldGhvZHMucmVxdWlyZWQuY2FsbCh0aGlzLCAkLnRyaW0oZWxlbWVudC52YWx1ZSksIGVsZW1lbnQpICYmICJkZXBlbmRlbmN5LW1pc21hdGNoIjsKCQl9LAoKCQlzdGFydFJlcXVlc3Q6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQkJaWYgKCF0aGlzLnBlbmRpbmdbZWxlbWVudC5uYW1lXSkgewoJCQkJdGhpcy5wZW5kaW5nUmVxdWVzdCsrOwoJCQkJdGhpcy5wZW5kaW5nW2VsZW1lbnQubmFtZV0gPSB0cnVlOwoJCQl9CgkJfSwKCgkJc3RvcFJlcXVlc3Q6IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbGlkKSB7CgkJCXRoaXMucGVuZGluZ1JlcXVlc3QtLTsKCQkJLy8gc29tZXRpbWVzIHN5bmNocm9uaXphdGlvbiBmYWlscywgbWFrZSBzdXJlIHBlbmRpbmdSZXF1ZXN0IGlzIG5ldmVyIDwgMAoJCQlpZiAodGhpcy5wZW5kaW5nUmVxdWVzdCA8IDApCgkJCQl0aGlzLnBlbmRpbmdSZXF1ZXN0ID0gMDsKCQkJZGVsZXRlIHRoaXMucGVuZGluZ1tlbGVtZW50Lm5hbWVdOwoJCQlpZiAoIHZhbGlkICYmIHRoaXMucGVuZGluZ1JlcXVlc3QgPT0gMCAmJiB0aGlzLmZvcm1TdWJtaXR0ZWQgJiYgdGhpcy5mb3JtKCkgKSB7CgkJCQkkKHRoaXMuY3VycmVudEZvcm0pLnN1Ym1pdCgpOwoJCQkJdGhpcy5mb3JtU3VibWl0dGVkID0gZmFsc2U7CgkJCX0gZWxzZSBpZiAoIXZhbGlkICYmIHRoaXMucGVuZGluZ1JlcXVlc3QgPT0gMCAmJiB0aGlzLmZvcm1TdWJtaXR0ZWQpIHsKCQkJCSQodGhpcy5jdXJyZW50Rm9ybSkudHJpZ2dlckhhbmRsZXIoImludmFsaWQtZm9ybSIsIFt0aGlzXSk7CgkJCQl0aGlzLmZvcm1TdWJtaXR0ZWQgPSBmYWxzZTsKCQkJfQoJCX0sCgoJCXByZXZpb3VzVmFsdWU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQkJcmV0dXJuICQuZGF0YShlbGVtZW50LCAicHJldmlvdXNWYWx1ZSIpIHx8ICQuZGF0YShlbGVtZW50LCAicHJldmlvdXNWYWx1ZSIsIHsKCQkJCW9sZDogbnVsbCwKCQkJCXZhbGlkOiB0cnVlLAoJCQkJbWVzc2FnZTogdGhpcy5kZWZhdWx0TWVzc2FnZSggZWxlbWVudCwgInJlbW90ZSIgKQoJCQl9KTsKCQl9CgoJfSwKCgljbGFzc1J1bGVTZXR0aW5nczogewoJCXJlcXVpcmVkOiB7cmVxdWlyZWQ6IHRydWV9LAoJCWVtYWlsOiB7ZW1haWw6IHRydWV9LAoJCXVybDoge3VybDogdHJ1ZX0sCgkJZGF0ZToge2RhdGU6IHRydWV9LAoJCWRhdGVJU086IHtkYXRlSVNPOiB0cnVlfSwKCQlkYXRlREU6IHtkYXRlREU6IHRydWV9LAoJCW51bWJlcjoge251bWJlcjogdHJ1ZX0sCgkJbnVtYmVyREU6IHtudW1iZXJERTogdHJ1ZX0sCgkJZGlnaXRzOiB7ZGlnaXRzOiB0cnVlfSwKCQljcmVkaXRjYXJkOiB7Y3JlZGl0Y2FyZDogdHJ1ZX0KCX0sCgoJYWRkQ2xhc3NSdWxlczogZnVuY3Rpb24oY2xhc3NOYW1lLCBydWxlcykgewoJCWNsYXNzTmFtZS5jb25zdHJ1Y3RvciA9PSBTdHJpbmcgPwoJCQl0aGlzLmNsYXNzUnVsZVNldHRpbmdzW2NsYXNzTmFtZV0gPSBydWxlcyA6CgkJCSQuZXh0ZW5kKHRoaXMuY2xhc3NSdWxlU2V0dGluZ3MsIGNsYXNzTmFtZSk7Cgl9LAoKCWNsYXNzUnVsZXM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQl2YXIgcnVsZXMgPSB7fTsKCQl2YXIgY2xhc3NlcyA9ICQoZWxlbWVudCkuYXR0cignY2xhc3MnKTsKCQljbGFzc2VzICYmICQuZWFjaChjbGFzc2VzLnNwbGl0KCcgJyksIGZ1bmN0aW9uKCkgewoJCQlpZiAodGhpcyBpbiAkLnZhbGlkYXRvci5jbGFzc1J1bGVTZXR0aW5ncykgewoJCQkJJC5leHRlbmQocnVsZXMsICQudmFsaWRhdG9yLmNsYXNzUnVsZVNldHRpbmdzW3RoaXNdKTsKCQkJfQoJCX0pOwoJCXJldHVybiBydWxlczsKCX0sCgoJYXR0cmlidXRlUnVsZXM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQl2YXIgcnVsZXMgPSB7fTsKCQl2YXIgJGVsZW1lbnQgPSAkKGVsZW1lbnQpOwoKCQlmb3IgKHZhciBtZXRob2QgaW4gJC52YWxpZGF0b3IubWV0aG9kcykgewoJCQl2YXIgdmFsdWU7CgkJCS8vIElmIC5wcm9wIGV4aXN0cyAoalF1ZXJ5ID49IDEuNiksIHVzZSBpdCB0byBnZXQgdHJ1ZS9mYWxzZSBmb3IgcmVxdWlyZWQKCQkJaWYgKG1ldGhvZCA9PT0gJ3JlcXVpcmVkJyAmJiB0eXBlb2YgJC5mbi5wcm9wID09PSAnZnVuY3Rpb24nKSB7CgkJCQl2YWx1ZSA9ICRlbGVtZW50LnByb3AobWV0aG9kKTsKCQkJfSBlbHNlIHsKCQkJCXZhbHVlID0gJGVsZW1lbnQuYXR0cihtZXRob2QpOwoJCQl9CgkJCWlmICh2YWx1ZSkgewoJCQkJcnVsZXNbbWV0aG9kXSA9IHZhbHVlOwoJCQl9IGVsc2UgaWYgKCRlbGVtZW50WzBdLmdldEF0dHJpYnV0ZSgidHlwZSIpID09PSBtZXRob2QpIHsKCQkJCXJ1bGVzW21ldGhvZF0gPSB0cnVlOwoJCQl9CgkJfQoKCQkvLyBtYXhsZW5ndGggbWF5IGJlIHJldHVybmVkIGFzIC0xLCAyMTQ3NDgzNjQ3IChJRSkgYW5kIDUyNDI4OCAoc2FmYXJpKSBmb3IgdGV4dCBpbnB1dHMKCQlpZiAocnVsZXMubWF4bGVuZ3RoICYmIC8tMXwyMTQ3NDgzNjQ3fDUyNDI4OC8udGVzdChydWxlcy5tYXhsZW5ndGgpKSB7CgkJCWRlbGV0ZSBydWxlcy5tYXhsZW5ndGg7CgkJfQoKCQlyZXR1cm4gcnVsZXM7Cgl9LAoKCW1ldGFkYXRhUnVsZXM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQlpZiAoISQubWV0YWRhdGEpIHJldHVybiB7fTsKCgkJdmFyIG1ldGEgPSAkLmRhdGEoZWxlbWVudC5mb3JtLCAndmFsaWRhdG9yJykuc2V0dGluZ3MubWV0YTsKCQlyZXR1cm4gbWV0YSA/CgkJCSQoZWxlbWVudCkubWV0YWRhdGEoKVttZXRhXSA6CgkJCSQoZWxlbWVudCkubWV0YWRhdGEoKTsKCX0sCgoJc3RhdGljUnVsZXM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKCQl2YXIgcnVsZXMgPSB7fTsKCQl2YXIgdmFsaWRhdG9yID0gJC5kYXRhKGVsZW1lbnQuZm9ybSwgJ3ZhbGlkYXRvcicpOwoJCWlmICh2YWxpZGF0b3Iuc2V0dGluZ3MucnVsZXMpIHsKCQkJcnVsZXMgPSAkLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKHZhbGlkYXRvci5zZXR0aW5ncy5ydWxlc1tlbGVtZW50Lm5hbWVdKSB8fCB7fTsKCQl9CgkJcmV0dXJuIHJ1bGVzOwoJfSwKCglub3JtYWxpemVSdWxlczogZnVuY3Rpb24ocnVsZXMsIGVsZW1lbnQpIHsKCQkvLyBoYW5kbGUgZGVwZW5kZW5jeSBjaGVjawoJCSQuZWFjaChydWxlcywgZnVuY3Rpb24ocHJvcCwgdmFsKSB7CgkJCS8vIGlnbm9yZSBydWxlIHdoZW4gcGFyYW0gaXMgZXhwbGljaXRseSBmYWxzZSwgZWcuIHJlcXVpcmVkOmZhbHNlCgkJCWlmICh2YWwgPT09IGZhbHNlKSB7CgkJCQlkZWxldGUgcnVsZXNbcHJvcF07CgkJCQlyZXR1cm47CgkJCX0KCQkJaWYgKHZhbC5wYXJhbSB8fCB2YWwuZGVwZW5kcykgewoJCQkJdmFyIGtlZXBSdWxlID0gdHJ1ZTsKCQkJCXN3aXRjaCAodHlwZW9mIHZhbC5kZXBlbmRzKSB7CgkJCQkJY2FzZSAic3RyaW5nIjoKCQkJCQkJa2VlcFJ1bGUgPSAhISQodmFsLmRlcGVuZHMsIGVsZW1lbnQuZm9ybSkubGVuZ3RoOwoJCQkJCQlicmVhazsKCQkJCQljYXNlICJmdW5jdGlvbiI6CgkJCQkJCWtlZXBSdWxlID0gdmFsLmRlcGVuZHMuY2FsbChlbGVtZW50LCBlbGVtZW50KTsKCQkJCQkJYnJlYWs7CgkJCQl9CgkJCQlpZiAoa2VlcFJ1bGUpIHsKCQkJCQlydWxlc1twcm9wXSA9IHZhbC5wYXJhbSAhPT0gdW5kZWZpbmVkID8gdmFsLnBhcmFtIDogdHJ1ZTsKCQkJCX0gZWxzZSB7CgkJCQkJZGVsZXRlIHJ1bGVzW3Byb3BdOwoJCQkJfQoJCQl9CgkJfSk7CgoJCS8vIGV2YWx1YXRlIHBhcmFtZXRlcnMKCQkkLmVhY2gocnVsZXMsIGZ1bmN0aW9uKHJ1bGUsIHBhcmFtZXRlcikgewoJCQlydWxlc1tydWxlXSA9ICQuaXNGdW5jdGlvbihwYXJhbWV0ZXIpID8gcGFyYW1ldGVyKGVsZW1lbnQpIDogcGFyYW1ldGVyOwoJCX0pOwoKCQkvLyBjbGVhbiBudW1iZXIgcGFyYW1ldGVycwoJCSQuZWFjaChbJ21pbmxlbmd0aCcsICdtYXhsZW5ndGgnLCAnbWluJywgJ21heCddLCBmdW5jdGlvbigpIHsKCQkJaWYgKHJ1bGVzW3RoaXNdKSB7CgkJCQlydWxlc1t0aGlzXSA9IE51bWJlcihydWxlc1t0aGlzXSk7CgkJCX0KCQl9KTsKCQkkLmVhY2goWydyYW5nZWxlbmd0aCcsICdyYW5nZSddLCBmdW5jdGlvbigpIHsKCQkJaWYgKHJ1bGVzW3RoaXNdKSB7CgkJCQlydWxlc1t0aGlzXSA9IFtOdW1iZXIocnVsZXNbdGhpc11bMF0pLCBOdW1iZXIocnVsZXNbdGhpc11bMV0pXTsKCQkJfQoJCX0pOwoKCQlpZiAoJC52YWxpZGF0b3IuYXV0b0NyZWF0ZVJhbmdlcykgewoJCQkvLyBhdXRvLWNyZWF0ZSByYW5nZXMKCQkJaWYgKHJ1bGVzLm1pbiAmJiBydWxlcy5tYXgpIHsKCQkJCXJ1bGVzLnJhbmdlID0gW3J1bGVzLm1pbiwgcnVsZXMubWF4XTsKCQkJCWRlbGV0ZSBydWxlcy5taW47CgkJCQlkZWxldGUgcnVsZXMubWF4OwoJCQl9CgkJCWlmIChydWxlcy5taW5sZW5ndGggJiYgcnVsZXMubWF4bGVuZ3RoKSB7CgkJCQlydWxlcy5yYW5nZWxlbmd0aCA9IFtydWxlcy5taW5sZW5ndGgsIHJ1bGVzLm1heGxlbmd0aF07CgkJCQlkZWxldGUgcnVsZXMubWlubGVuZ3RoOwoJCQkJZGVsZXRlIHJ1bGVzLm1heGxlbmd0aDsKCQkJfQoJCX0KCgkJLy8gVG8gc3VwcG9ydCBjdXN0b20gbWVzc2FnZXMgaW4gbWV0YWRhdGEgaWdub3JlIHJ1bGUgbWV0aG9kcyB0aXRsZWQgIm1lc3NhZ2VzIgoJCWlmIChydWxlcy5tZXNzYWdlcykgewoJCQlkZWxldGUgcnVsZXMubWVzc2FnZXM7CgkJfQoKCQlyZXR1cm4gcnVsZXM7Cgl9LAoKCS8vIENvbnZlcnRzIGEgc2ltcGxlIHN0cmluZyB0byBhIHtzdHJpbmc6IHRydWV9IHJ1bGUsIGUuZy4sICJyZXF1aXJlZCIgdG8ge3JlcXVpcmVkOnRydWV9Cglub3JtYWxpemVSdWxlOiBmdW5jdGlvbihkYXRhKSB7CgkJaWYoIHR5cGVvZiBkYXRhID09ICJzdHJpbmciICkgewoJCQl2YXIgdHJhbnNmb3JtZWQgPSB7fTsKCQkJJC5lYWNoKGRhdGEuc3BsaXQoL1xzLyksIGZ1bmN0aW9uKCkgewoJCQkJdHJhbnNmb3JtZWRbdGhpc10gPSB0cnVlOwoJCQl9KTsKCQkJZGF0YSA9IHRyYW5zZm9ybWVkOwoJCX0KCQlyZXR1cm4gZGF0YTsKCX0sCgoJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vVmFsaWRhdG9yL2FkZE1ldGhvZAoJYWRkTWV0aG9kOiBmdW5jdGlvbihuYW1lLCBtZXRob2QsIG1lc3NhZ2UpIHsKCQkkLnZhbGlkYXRvci5tZXRob2RzW25hbWVdID0gbWV0aG9kOwoJCSQudmFsaWRhdG9yLm1lc3NhZ2VzW25hbWVdID0gbWVzc2FnZSAhPSB1bmRlZmluZWQgPyBtZXNzYWdlIDogJC52YWxpZGF0b3IubWVzc2FnZXNbbmFtZV07CgkJaWYgKG1ldGhvZC5sZW5ndGggPCAzKSB7CgkJCSQudmFsaWRhdG9yLmFkZENsYXNzUnVsZXMobmFtZSwgJC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShuYW1lKSk7CgkJfQoJfSwKCgltZXRob2RzOiB7CgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvcmVxdWlyZWQKCQlyZXF1aXJlZDogZnVuY3Rpb24odmFsdWUsIGVsZW1lbnQsIHBhcmFtKSB7CgkJCS8vIGNoZWNrIGlmIGRlcGVuZGVuY3kgaXMgbWV0CgkJCWlmICggIXRoaXMuZGVwZW5kKHBhcmFtLCBlbGVtZW50KSApCgkJCQlyZXR1cm4gImRlcGVuZGVuY3ktbWlzbWF0Y2giOwoJCQlzd2l0Y2goIGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHsKCQkJY2FzZSAnc2VsZWN0JzoKCQkJCS8vIGNvdWxkIGJlIGFuIGFycmF5IGZvciBzZWxlY3QtbXVsdGlwbGUgb3IgYSBzdHJpbmcsIGJvdGggYXJlIGZpbmUgdGhpcyB3YXkKCQkJCXZhciB2YWwgPSAkKGVsZW1lbnQpLnZhbCgpOwoJCQkJcmV0dXJuIHZhbCAmJiB2YWwubGVuZ3RoID4gMDsKCQkJY2FzZSAnaW5wdXQnOgoJCQkJaWYgKCB0aGlzLmNoZWNrYWJsZShlbGVtZW50KSApCgkJCQkJcmV0dXJuIHRoaXMuZ2V0TGVuZ3RoKHZhbHVlLCBlbGVtZW50KSA+IDA7CgkJCWRlZmF1bHQ6CgkJCQlyZXR1cm4gJC50cmltKHZhbHVlKS5sZW5ndGggPiAwOwoJCQl9CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9yZW1vdGUKCQlyZW1vdGU6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50LCBwYXJhbSkgewoJCQlpZiAoIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgKQoJCQkJcmV0dXJuICJkZXBlbmRlbmN5LW1pc21hdGNoIjsKCgkJCXZhciBwcmV2aW91cyA9IHRoaXMucHJldmlvdXNWYWx1ZShlbGVtZW50KTsKCQkJaWYgKCF0aGlzLnNldHRpbmdzLm1lc3NhZ2VzW2VsZW1lbnQubmFtZV0gKQoJCQkJdGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tlbGVtZW50Lm5hbWVdID0ge307CgkJCXByZXZpb3VzLm9yaWdpbmFsTWVzc2FnZSA9IHRoaXMuc2V0dGluZ3MubWVzc2FnZXNbZWxlbWVudC5uYW1lXS5yZW1vdGU7CgkJCXRoaXMuc2V0dGluZ3MubWVzc2FnZXNbZWxlbWVudC5uYW1lXS5yZW1vdGUgPSBwcmV2aW91cy5tZXNzYWdlOwoKCQkJcGFyYW0gPSB0eXBlb2YgcGFyYW0gPT0gInN0cmluZyIgJiYge3VybDpwYXJhbX0gfHwgcGFyYW07CgoJCQlpZiAoIHRoaXMucGVuZGluZ1tlbGVtZW50Lm5hbWVdICkgewoJCQkJcmV0dXJuICJwZW5kaW5nIjsKCQkJfQoJCQlpZiAoIHByZXZpb3VzLm9sZCA9PT0gdmFsdWUgKSB7CgkJCQlyZXR1cm4gcHJldmlvdXMudmFsaWQ7CgkJCX0KCgkJCXByZXZpb3VzLm9sZCA9IHZhbHVlOwoJCQl2YXIgdmFsaWRhdG9yID0gdGhpczsKCQkJdGhpcy5zdGFydFJlcXVlc3QoZWxlbWVudCk7CgkJCXZhciBkYXRhID0ge307CgkJCWRhdGFbZWxlbWVudC5uYW1lXSA9IHZhbHVlOwoJCQkkLmFqYXgoJC5leHRlbmQodHJ1ZSwgewoJCQkJdXJsOiBwYXJhbSwKCQkJCW1vZGU6ICJhYm9ydCIsCgkJCQlwb3J0OiAidmFsaWRhdGUiICsgZWxlbWVudC5uYW1lLAoJCQkJZGF0YVR5cGU6ICJqc29uIiwKCQkJCWRhdGE6IGRhdGEsCgkJCQlzdWNjZXNzOiBmdW5jdGlvbihyZXNwb25zZSkgewoJCQkJCXZhbGlkYXRvci5zZXR0aW5ncy5tZXNzYWdlc1tlbGVtZW50Lm5hbWVdLnJlbW90ZSA9IHByZXZpb3VzLm9yaWdpbmFsTWVzc2FnZTsKCQkJCQl2YXIgdmFsaWQgPSByZXNwb25zZSA9PT0gdHJ1ZTsKCQkJCQlpZiAoIHZhbGlkICkgewoJCQkJCQl2YXIgc3VibWl0dGVkID0gdmFsaWRhdG9yLmZvcm1TdWJtaXR0ZWQ7CgkJCQkJCXZhbGlkYXRvci5wcmVwYXJlRWxlbWVudChlbGVtZW50KTsKCQkJCQkJdmFsaWRhdG9yLmZvcm1TdWJtaXR0ZWQgPSBzdWJtaXR0ZWQ7CgkJCQkJCXZhbGlkYXRvci5zdWNjZXNzTGlzdC5wdXNoKGVsZW1lbnQpOwoJCQkJCQl2YWxpZGF0b3Iuc2hvd0Vycm9ycygpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXZhciBlcnJvcnMgPSB7fTsKCQkJCQkJdmFyIG1lc3NhZ2UgPSByZXNwb25zZSB8fCB2YWxpZGF0b3IuZGVmYXVsdE1lc3NhZ2UoIGVsZW1lbnQsICJyZW1vdGUiICk7CgkJCQkJCWVycm9yc1tlbGVtZW50Lm5hbWVdID0gcHJldmlvdXMubWVzc2FnZSA9ICQuaXNGdW5jdGlvbihtZXNzYWdlKSA/IG1lc3NhZ2UodmFsdWUpIDogbWVzc2FnZTsKCQkJCQkJdmFsaWRhdG9yLnNob3dFcnJvcnMoZXJyb3JzKTsKCQkJCQl9CgkJCQkJcHJldmlvdXMudmFsaWQgPSB2YWxpZDsKCQkJCQl2YWxpZGF0b3Iuc3RvcFJlcXVlc3QoZWxlbWVudCwgdmFsaWQpOwoJCQkJfQoJCQl9LCBwYXJhbSkpOwoJCQlyZXR1cm4gInBlbmRpbmciOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvbWlubGVuZ3RoCgkJbWlubGVuZ3RoOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCwgcGFyYW0pIHsKCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgdGhpcy5nZXRMZW5ndGgoJC50cmltKHZhbHVlKSwgZWxlbWVudCkgPj0gcGFyYW07CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9tYXhsZW5ndGgKCQltYXhsZW5ndGg6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50LCBwYXJhbSkgewoJCQlyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KSB8fCB0aGlzLmdldExlbmd0aCgkLnRyaW0odmFsdWUpLCBlbGVtZW50KSA8PSBwYXJhbTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL3JhbmdlbGVuZ3RoCgkJcmFuZ2VsZW5ndGg6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50LCBwYXJhbSkgewoJCQl2YXIgbGVuZ3RoID0gdGhpcy5nZXRMZW5ndGgoJC50cmltKHZhbHVlKSwgZWxlbWVudCk7CgkJCXJldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpIHx8ICggbGVuZ3RoID49IHBhcmFtWzBdICYmIGxlbmd0aCA8PSBwYXJhbVsxXSApOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvbWluCgkJbWluOiBmdW5jdGlvbiggdmFsdWUsIGVsZW1lbnQsIHBhcmFtICkgewoJCQlyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KSB8fCB2YWx1ZSA+PSBwYXJhbTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL21heAoJCW1heDogZnVuY3Rpb24oIHZhbHVlLCBlbGVtZW50LCBwYXJhbSApIHsKCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgdmFsdWUgPD0gcGFyYW07CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9yYW5nZQoJCXJhbmdlOiBmdW5jdGlvbiggdmFsdWUsIGVsZW1lbnQsIHBhcmFtICkgewoJCQlyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KSB8fCAoIHZhbHVlID49IHBhcmFtWzBdICYmIHZhbHVlIDw9IHBhcmFtWzFdICk7CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9lbWFpbAoJCWVtYWlsOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCkgewoJCQkvLyBjb250cmlidXRlZCBieSBTY290dCBHb256YWxlejogaHR0cDovL3Byb2plY3RzLnNjb3R0c3BsYXlncm91bmQuY29tL2VtYWlsX2FkZHJlc3NfdmFsaWRhdGlvbi8KCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgL14oKChbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKFwuKFthLXpdfFxkfFshI1wkJSYnXCpcK1wtXC89XD9cXl9ge1x8fX5dfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSspKil8KChceDIyKSgoKChceDIwfFx4MDkpKihceDBkXHgwYSkpPyhceDIwfFx4MDkpKyk/KChbXHgwMS1ceDA4XHgwYlx4MGNceDBlLVx4MWZceDdmXXxceDIxfFtceDIzLVx4NWJdfFtceDVkLVx4N2VdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoXFwoW1x4MDEtXHgwOVx4MGJceDBjXHgwZC1ceDdmXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKSkqKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPyhceDIyKSkpQCgoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4pKygoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSkkL2kudGVzdCh2YWx1ZSk7CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy91cmwKCQl1cmw6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50KSB7CgkJCS8vIGNvbnRyaWJ1dGVkIGJ5IFNjb3R0IEdvbnphbGV6OiBodHRwOi8vcHJvamVjdHMuc2NvdHRzcGxheWdyb3VuZC5jb20vaXJpLwoJCQlyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KSB8fCAvXihodHRwcz98ZnRwKTpcL1wvKCgoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6KSpAKT8oKChcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pKXwoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4/KSg6XGQqKT8pKFwvKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCkrKFwvKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKSopKik/KT8oXD8oKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxbXHVFMDAwLVx1RjhGRl18XC98XD8pKik/KFwjKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCl8XC98XD8pKik/JC9pLnRlc3QodmFsdWUpOwoJCX0sCgoJCS8vIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lucy9WYWxpZGF0aW9uL01ldGhvZHMvZGF0ZQoJCWRhdGU6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50KSB7CgkJCXJldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpIHx8ICEvSW52YWxpZHxOYU4vLnRlc3QobmV3IERhdGUodmFsdWUpKTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL2RhdGVJU08KCQlkYXRlSVNPOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCkgewoJCQlyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KSB8fCAvXlxkezR9W1wvLV1cZHsxLDJ9W1wvLV1cZHsxLDJ9JC8udGVzdCh2YWx1ZSk7CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9udW1iZXIKCQludW1iZXI6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50KSB7CgkJCXJldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpIHx8IC9eLT8oPzpcZCt8XGR7MSwzfSg/OixcZHszfSkrKSg/OlwuXGQrKT8kLy50ZXN0KHZhbHVlKTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL2RpZ2l0cwoJCWRpZ2l0czogZnVuY3Rpb24odmFsdWUsIGVsZW1lbnQpIHsKCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgL15cZCskLy50ZXN0KHZhbHVlKTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL2NyZWRpdGNhcmQKCQkvLyBiYXNlZCBvbiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0x1aG4KCQljcmVkaXRjYXJkOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCkgewoJCQlpZiAoIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgKQoJCQkJcmV0dXJuICJkZXBlbmRlbmN5LW1pc21hdGNoIjsKCQkJLy8gYWNjZXB0IG9ubHkgc3BhY2VzLCBkaWdpdHMgYW5kIGRhc2hlcwoJCQlpZiAoL1teMC05IC1dKy8udGVzdCh2YWx1ZSkpCgkJCQlyZXR1cm4gZmFsc2U7CgkJCXZhciBuQ2hlY2sgPSAwLAoJCQkJbkRpZ2l0ID0gMCwKCQkJCWJFdmVuID0gZmFsc2U7CgoJCQl2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xEL2csICIiKTsKCgkJCWZvciAodmFyIG4gPSB2YWx1ZS5sZW5ndGggLSAxOyBuID49IDA7IG4tLSkgewoJCQkJdmFyIGNEaWdpdCA9IHZhbHVlLmNoYXJBdChuKTsKCQkJCXZhciBuRGlnaXQgPSBwYXJzZUludChjRGlnaXQsIDEwKTsKCQkJCWlmIChiRXZlbikgewoJCQkJCWlmICgobkRpZ2l0ICo9IDIpID4gOSkKCQkJCQkJbkRpZ2l0IC09IDk7CgkJCQl9CgkJCQluQ2hlY2sgKz0gbkRpZ2l0OwoJCQkJYkV2ZW4gPSAhYkV2ZW47CgkJCX0KCgkJCXJldHVybiAobkNoZWNrICUgMTApID09IDA7CgkJfSwKCgkJLy8gaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24vTWV0aG9kcy9hY2NlcHQKCQlhY2NlcHQ6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50LCBwYXJhbSkgewoJCQlwYXJhbSA9IHR5cGVvZiBwYXJhbSA9PSAic3RyaW5nIiA/IHBhcmFtLnJlcGxhY2UoLywvZywgJ3wnKSA6ICJwbmd8anBlP2d8Z2lmIjsKCQkJcmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCkgfHwgdmFsdWUubWF0Y2gobmV3IFJlZ0V4cCgiLigiICsgcGFyYW0gKyAiKSQiLCAiaSIpKTsKCQl9LAoKCQkvLyBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbi9NZXRob2RzL2VxdWFsVG8KCQllcXVhbFRvOiBmdW5jdGlvbih2YWx1ZSwgZWxlbWVudCwgcGFyYW0pIHsKCQkJLy8gYmluZCB0byB0aGUgYmx1ciBldmVudCBvZiB0aGUgdGFyZ2V0IGluIG9yZGVyIHRvIHJldmFsaWRhdGUgd2hlbmV2ZXIgdGhlIHRhcmdldCBmaWVsZCBpcyB1cGRhdGVkCgkJCS8vIFRPRE8gZmluZCBhIHdheSB0byBiaW5kIHRoZSBldmVudCBqdXN0IG9uY2UsIGF2b2lkaW5nIHRoZSB1bmJpbmQtcmViaW5kIG92ZXJoZWFkCgkJCXZhciB0YXJnZXQgPSAkKHBhcmFtKS51bmJpbmQoIi52YWxpZGF0ZS1lcXVhbFRvIikuYmluZCgiYmx1ci52YWxpZGF0ZS1lcXVhbFRvIiwgZnVuY3Rpb24oKSB7CgkJCQkkKGVsZW1lbnQpLnZhbGlkKCk7CgkJCX0pOwoJCQlyZXR1cm4gdmFsdWUgPT0gdGFyZ2V0LnZhbCgpOwoJCX0KCgl9Cgp9KTsKCi8vIGRlcHJlY2F0ZWQsIHVzZSAkLnZhbGlkYXRvci5mb3JtYXQgaW5zdGVhZAokLmZvcm1hdCA9ICQudmFsaWRhdG9yLmZvcm1hdDsKCn0pKGpRdWVyeSk7CgovLyBhamF4IG1vZGU6IGFib3J0Ci8vIHVzYWdlOiAkLmFqYXgoeyBtb2RlOiAiYWJvcnQiWywgcG9ydDogInVuaXF1ZXBvcnQiXX0pOwovLyBpZiBtb2RlOiJhYm9ydCIgaXMgdXNlZCwgdGhlIHByZXZpb3VzIHJlcXVlc3Qgb24gdGhhdCBwb3J0IChwb3J0IGNhbiBiZSB1bmRlZmluZWQpIGlzIGFib3J0ZWQgdmlhIFhNTEh0dHBSZXF1ZXN0LmFib3J0KCkKOyhmdW5jdGlvbigkKSB7Cgl2YXIgcGVuZGluZ1JlcXVlc3RzID0ge307CgkvLyBVc2UgYSBwcmVmaWx0ZXIgaWYgYXZhaWxhYmxlICgxLjUrKQoJaWYgKCAkLmFqYXhQcmVmaWx0ZXIgKSB7CgkJJC5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKHNldHRpbmdzLCBfLCB4aHIpIHsKCQkJdmFyIHBvcnQgPSBzZXR0aW5ncy5wb3J0OwoJCQlpZiAoc2V0dGluZ3MubW9kZSA9PSAiYWJvcnQiKSB7CgkJCQlpZiAoIHBlbmRpbmdSZXF1ZXN0c1twb3J0XSApIHsKCQkJCQlwZW5kaW5nUmVxdWVzdHNbcG9ydF0uYWJvcnQoKTsKCQkJCX0KCQkJCXBlbmRpbmdSZXF1ZXN0c1twb3J0XSA9IHhocjsKCQkJfQoJCX0pOwoJfSBlbHNlIHsKCQkvLyBQcm94eSBhamF4CgkJdmFyIGFqYXggPSAkLmFqYXg7CgkJJC5hamF4ID0gZnVuY3Rpb24oc2V0dGluZ3MpIHsKCQkJdmFyIG1vZGUgPSAoICJtb2RlIiBpbiBzZXR0aW5ncyA/IHNldHRpbmdzIDogJC5hamF4U2V0dGluZ3MgKS5tb2RlLAoJCQkJcG9ydCA9ICggInBvcnQiIGluIHNldHRpbmdzID8gc2V0dGluZ3MgOiAkLmFqYXhTZXR0aW5ncyApLnBvcnQ7CgkJCWlmIChtb2RlID09ICJhYm9ydCIpIHsKCQkJCWlmICggcGVuZGluZ1JlcXVlc3RzW3BvcnRdICkgewoJCQkJCXBlbmRpbmdSZXF1ZXN0c1twb3J0XS5hYm9ydCgpOwoJCQkJfQoJCQkJcmV0dXJuIChwZW5kaW5nUmVxdWVzdHNbcG9ydF0gPSBhamF4LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpOwoJCQl9CgkJCXJldHVybiBhamF4LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgkJfTsKCX0KfSkoalF1ZXJ5KTsKCi8vIHByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgZm9jdXNpbiBhbmQgZm9jdXNvdXQgZXZlbnRzCi8vIElFIGhhcyBuYXRpdmUgc3VwcG9ydCwgaW4gb3RoZXIgYnJvd3NlcnMsIHVzZSBldmVudCBjYXB1dHVyaW5nIChuZWl0aGVyIGJ1YmJsZXMpCgovLyBwcm92aWRlcyBkZWxlZ2F0ZSh0eXBlOiBTdHJpbmcsIGRlbGVnYXRlOiBTZWxlY3RvciwgaGFuZGxlcjogQ2FsbGJhY2spIHBsdWdpbiBmb3IgZWFzaWVyIGV2ZW50IGRlbGVnYXRpb24KLy8gaGFuZGxlciBpcyBvbmx5IGNhbGxlZCB3aGVuICQoZXZlbnQudGFyZ2V0KS5pcyhkZWxlZ2F0ZSksIGluIHRoZSBzY29wZSBvZiB0aGUganF1ZXJ5LW9iamVjdCBmb3IgZXZlbnQudGFyZ2V0CjsoZnVuY3Rpb24oJCkgewoJLy8gb25seSBpbXBsZW1lbnQgaWYgbm90IHByb3ZpZGVkIGJ5IGpRdWVyeSBjb3JlIChzaW5jZSAxLjQpCgkvLyBUT0RPIHZlcmlmeSBpZiBqUXVlcnkgMS40J3MgaW1wbGVtZW50YXRpb24gaXMgY29tcGF0aWJsZSB3aXRoIG9sZGVyIGpRdWVyeSBzcGVjaWFsLWV2ZW50IEFQSXMKCWlmICghalF1ZXJ5LmV2ZW50LnNwZWNpYWwuZm9jdXNpbiAmJiAhalF1ZXJ5LmV2ZW50LnNwZWNpYWwuZm9jdXNvdXQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewoJCSQuZWFjaCh7CgkJCWZvY3VzOiAnZm9jdXNpbicsCgkJCWJsdXI6ICdmb2N1c291dCcKCQl9LCBmdW5jdGlvbiggb3JpZ2luYWwsIGZpeCApewoJCQkkLmV2ZW50LnNwZWNpYWxbZml4XSA9IHsKCQkJCXNldHVwOmZ1bmN0aW9uKCkgewoJCQkJCXRoaXMuYWRkRXZlbnRMaXN0ZW5lciggb3JpZ2luYWwsIGhhbmRsZXIsIHRydWUgKTsKCQkJCX0sCgkJCQl0ZWFyZG93bjpmdW5jdGlvbigpIHsKCQkJCQl0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoIG9yaWdpbmFsLCBoYW5kbGVyLCB0cnVlICk7CgkJCQl9LAoJCQkJaGFuZGxlcjogZnVuY3Rpb24oZSkgewoJCQkJCWFyZ3VtZW50c1swXSA9ICQuZXZlbnQuZml4KGUpOwoJCQkJCWFyZ3VtZW50c1swXS50eXBlID0gZml4OwoJCQkJCXJldHVybiAkLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoJCQkJfQoJCQl9OwoJCQlmdW5jdGlvbiBoYW5kbGVyKGUpIHsKCQkJCWUgPSAkLmV2ZW50LmZpeChlKTsKCQkJCWUudHlwZSA9IGZpeDsKCQkJCXJldHVybiAkLmV2ZW50LmhhbmRsZS5jYWxsKHRoaXMsIGUpOwoJCQl9CgkJfSk7Cgl9OwoJJC5leHRlbmQoJC5mbiwgewoJCXZhbGlkYXRlRGVsZWdhdGU6IGZ1bmN0aW9uKGRlbGVnYXRlLCB0eXBlLCBoYW5kbGVyKSB7CgkJCXJldHVybiB0aGlzLmJpbmQodHlwZSwgZnVuY3Rpb24oZXZlbnQpIHsKCQkJCXZhciB0YXJnZXQgPSAkKGV2ZW50LnRhcmdldCk7CgkJCQlpZiAodGFyZ2V0LmlzKGRlbGVnYXRlKSkgewoJCQkJCXJldHVybiBoYW5kbGVyLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKCQkJCX0KCQkJfSk7CgkJfQoJfSk7Cn0pKGpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/js/jquery.validate.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpRdWVyeSBWYWxpZGF0aW9uIFBsdWdpbiAxLjkuMAogKgogKiBodHRwOi8vYmFzc2lzdGFuY2UuZGUvanF1ZXJ5LXBsdWdpbnMvanF1ZXJ5LXBsdWdpbi12YWxpZGF0aW9uLwogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVmFsaWRhdGlvbgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDExIErDtnJuIFphZWZmZXJlcgogKgogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoKICogICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogKiAgIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbAogKi8KKGZ1bmN0aW9uKGMpe2MuZXh0ZW5kKGMuZm4se3ZhbGlkYXRlOmZ1bmN0aW9uKGEpe2lmKHRoaXMubGVuZ3RoKXt2YXIgYj1jLmRhdGEodGhpc1swXSwidmFsaWRhdG9yIik7aWYoYilyZXR1cm4gYjt0aGlzLmF0dHIoIm5vdmFsaWRhdGUiLCJub3ZhbGlkYXRlIik7Yj1uZXcgYy52YWxpZGF0b3IoYSx0aGlzWzBdKTtjLmRhdGEodGhpc1swXSwidmFsaWRhdG9yIixiKTtpZihiLnNldHRpbmdzLm9uc3VibWl0KXthPXRoaXMuZmluZCgiaW5wdXQsIGJ1dHRvbiIpO2EuZmlsdGVyKCIuY2FuY2VsIikuY2xpY2soZnVuY3Rpb24oKXtiLmNhbmNlbFN1Ym1pdD10cnVlfSk7Yi5zZXR0aW5ncy5zdWJtaXRIYW5kbGVyJiZhLmZpbHRlcigiOnN1Ym1pdCIpLmNsaWNrKGZ1bmN0aW9uKCl7Yi5zdWJtaXRCdXR0b249dGhpc30pO3RoaXMuc3VibWl0KGZ1bmN0aW9uKGQpe2Z1bmN0aW9uIGUoKXtpZihiLnNldHRpbmdzLnN1Ym1pdEhhbmRsZXIpe2lmKGIuc3VibWl0QnV0dG9uKXZhciBmPWMoIjxpbnB1dCB0eXBlPSdoaWRkZW4nLz4iKS5hdHRyKCJuYW1lIiwKYi5zdWJtaXRCdXR0b24ubmFtZSkudmFsKGIuc3VibWl0QnV0dG9uLnZhbHVlKS5hcHBlbmRUbyhiLmN1cnJlbnRGb3JtKTtiLnNldHRpbmdzLnN1Ym1pdEhhbmRsZXIuY2FsbChiLGIuY3VycmVudEZvcm0pO2Iuc3VibWl0QnV0dG9uJiZmLnJlbW92ZSgpO3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX1iLnNldHRpbmdzLmRlYnVnJiZkLnByZXZlbnREZWZhdWx0KCk7aWYoYi5jYW5jZWxTdWJtaXQpe2IuY2FuY2VsU3VibWl0PWZhbHNlO3JldHVybiBlKCl9aWYoYi5mb3JtKCkpe2lmKGIucGVuZGluZ1JlcXVlc3Qpe2IuZm9ybVN1Ym1pdHRlZD10cnVlO3JldHVybiBmYWxzZX1yZXR1cm4gZSgpfWVsc2V7Yi5mb2N1c0ludmFsaWQoKTtyZXR1cm4gZmFsc2V9fSl9cmV0dXJuIGJ9ZWxzZSBhJiZhLmRlYnVnJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuKCJub3RoaW5nIHNlbGVjdGVkLCBjYW4ndCB2YWxpZGF0ZSwgcmV0dXJuaW5nIG5vdGhpbmciKX0sdmFsaWQ6ZnVuY3Rpb24oKXtpZihjKHRoaXNbMF0pLmlzKCJmb3JtIikpcmV0dXJuIHRoaXMudmFsaWRhdGUoKS5mb3JtKCk7CmVsc2V7dmFyIGE9dHJ1ZSxiPWModGhpc1swXS5mb3JtKS52YWxpZGF0ZSgpO3RoaXMuZWFjaChmdW5jdGlvbigpe2EmPWIuZWxlbWVudCh0aGlzKX0pO3JldHVybiBhfX0scmVtb3ZlQXR0cnM6ZnVuY3Rpb24oYSl7dmFyIGI9e30sZD10aGlzO2MuZWFjaChhLnNwbGl0KC9ccy8pLGZ1bmN0aW9uKGUsZil7YltmXT1kLmF0dHIoZik7ZC5yZW1vdmVBdHRyKGYpfSk7cmV0dXJuIGJ9LHJ1bGVzOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpc1swXTtpZihhKXt2YXIgZT1jLmRhdGEoZC5mb3JtLCJ2YWxpZGF0b3IiKS5zZXR0aW5ncyxmPWUucnVsZXMsZz1jLnZhbGlkYXRvci5zdGF0aWNSdWxlcyhkKTtzd2l0Y2goYSl7Y2FzZSAiYWRkIjpjLmV4dGVuZChnLGMudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGUoYikpO2ZbZC5uYW1lXT1nO2lmKGIubWVzc2FnZXMpZS5tZXNzYWdlc1tkLm5hbWVdPWMuZXh0ZW5kKGUubWVzc2FnZXNbZC5uYW1lXSxiLm1lc3NhZ2VzKTticmVhaztjYXNlICJyZW1vdmUiOmlmKCFiKXtkZWxldGUgZltkLm5hbWVdOwpyZXR1cm4gZ312YXIgaD17fTtjLmVhY2goYi5zcGxpdCgvXHMvKSxmdW5jdGlvbihqLGkpe2hbaV09Z1tpXTtkZWxldGUgZ1tpXX0pO3JldHVybiBofX1kPWMudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGVzKGMuZXh0ZW5kKHt9LGMudmFsaWRhdG9yLm1ldGFkYXRhUnVsZXMoZCksYy52YWxpZGF0b3IuY2xhc3NSdWxlcyhkKSxjLnZhbGlkYXRvci5hdHRyaWJ1dGVSdWxlcyhkKSxjLnZhbGlkYXRvci5zdGF0aWNSdWxlcyhkKSksZCk7aWYoZC5yZXF1aXJlZCl7ZT1kLnJlcXVpcmVkO2RlbGV0ZSBkLnJlcXVpcmVkO2Q9Yy5leHRlbmQoe3JlcXVpcmVkOmV9LGQpfXJldHVybiBkfX0pO2MuZXh0ZW5kKGMuZXhwclsiOiJdLHtibGFuazpmdW5jdGlvbihhKXtyZXR1cm4hYy50cmltKCIiK2EudmFsdWUpfSxmaWxsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuISFjLnRyaW0oIiIrYS52YWx1ZSl9LHVuY2hlY2tlZDpmdW5jdGlvbihhKXtyZXR1cm4hYS5jaGVja2VkfX0pO2MudmFsaWRhdG9yPWZ1bmN0aW9uKGEsCmIpe3RoaXMuc2V0dGluZ3M9Yy5leHRlbmQodHJ1ZSx7fSxjLnZhbGlkYXRvci5kZWZhdWx0cyxhKTt0aGlzLmN1cnJlbnRGb3JtPWI7dGhpcy5pbml0KCl9O2MudmFsaWRhdG9yLmZvcm1hdD1mdW5jdGlvbihhLGIpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PTEpcmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9Yy5tYWtlQXJyYXkoYXJndW1lbnRzKTtkLnVuc2hpZnQoYSk7cmV0dXJuIGMudmFsaWRhdG9yLmZvcm1hdC5hcHBseSh0aGlzLGQpfTtpZihhcmd1bWVudHMubGVuZ3RoPjImJmIuY29uc3RydWN0b3IhPUFycmF5KWI9Yy5tYWtlQXJyYXkoYXJndW1lbnRzKS5zbGljZSgxKTtpZihiLmNvbnN0cnVjdG9yIT1BcnJheSliPVtiXTtjLmVhY2goYixmdW5jdGlvbihkLGUpe2E9YS5yZXBsYWNlKFJlZ0V4cCgiXFx7IitkKyJcXH0iLCJnIiksZSl9KTtyZXR1cm4gYX07Yy5leHRlbmQoYy52YWxpZGF0b3Ise2RlZmF1bHRzOnttZXNzYWdlczp7fSxncm91cHM6e30scnVsZXM6e30sZXJyb3JDbGFzczoiZXJyb3IiLAp2YWxpZENsYXNzOiJ2YWxpZCIsZXJyb3JFbGVtZW50OiJsYWJlbCIsZm9jdXNJbnZhbGlkOnRydWUsZXJyb3JDb250YWluZXI6YyhbXSksZXJyb3JMYWJlbENvbnRhaW5lcjpjKFtdKSxvbnN1Ym1pdDp0cnVlLGlnbm9yZToiOmhpZGRlbiIsaWdub3JlVGl0bGU6ZmFsc2Usb25mb2N1c2luOmZ1bmN0aW9uKGEpe3RoaXMubGFzdEFjdGl2ZT1hO2lmKHRoaXMuc2V0dGluZ3MuZm9jdXNDbGVhbnVwJiYhdGhpcy5ibG9ja0ZvY3VzQ2xlYW51cCl7dGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodCYmdGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodC5jYWxsKHRoaXMsYSx0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsdGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKTt0aGlzLmFkZFdyYXBwZXIodGhpcy5lcnJvcnNGb3IoYSkpLmhpZGUoKX19LG9uZm9jdXNvdXQ6ZnVuY3Rpb24oYSl7aWYoIXRoaXMuY2hlY2thYmxlKGEpJiYoYS5uYW1lIGluIHRoaXMuc3VibWl0dGVkfHwhdGhpcy5vcHRpb25hbChhKSkpdGhpcy5lbGVtZW50KGEpfSwKb25rZXl1cDpmdW5jdGlvbihhKXtpZihhLm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWR8fGE9PXRoaXMubGFzdEVsZW1lbnQpdGhpcy5lbGVtZW50KGEpfSxvbmNsaWNrOmZ1bmN0aW9uKGEpe2lmKGEubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZCl0aGlzLmVsZW1lbnQoYSk7ZWxzZSBhLnBhcmVudE5vZGUubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZCYmdGhpcy5lbGVtZW50KGEucGFyZW50Tm9kZSl9LGhpZ2hsaWdodDpmdW5jdGlvbihhLGIsZCl7YS50eXBlPT09InJhZGlvIj90aGlzLmZpbmRCeU5hbWUoYS5uYW1lKS5hZGRDbGFzcyhiKS5yZW1vdmVDbGFzcyhkKTpjKGEpLmFkZENsYXNzKGIpLnJlbW92ZUNsYXNzKGQpfSx1bmhpZ2hsaWdodDpmdW5jdGlvbihhLGIsZCl7YS50eXBlPT09InJhZGlvIj90aGlzLmZpbmRCeU5hbWUoYS5uYW1lKS5yZW1vdmVDbGFzcyhiKS5hZGRDbGFzcyhkKTpjKGEpLnJlbW92ZUNsYXNzKGIpLmFkZENsYXNzKGQpfX0sc2V0RGVmYXVsdHM6ZnVuY3Rpb24oYSl7Yy5leHRlbmQoYy52YWxpZGF0b3IuZGVmYXVsdHMsCmEpfSxtZXNzYWdlczp7cmVxdWlyZWQ6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIixyZW1vdGU6IlBsZWFzZSBmaXggdGhpcyBmaWVsZC4iLGVtYWlsOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLiIsdXJsOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBVUkwuIixkYXRlOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBkYXRlLiIsZGF0ZUlTTzoiUGxlYXNlIGVudGVyIGEgdmFsaWQgZGF0ZSAoSVNPKS4iLG51bWJlcjoiUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtYmVyLiIsZGlnaXRzOiJQbGVhc2UgZW50ZXIgb25seSBkaWdpdHMuIixjcmVkaXRjYXJkOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBjcmVkaXQgY2FyZCBudW1iZXIuIixlcXVhbFRvOiJQbGVhc2UgZW50ZXIgdGhlIHNhbWUgdmFsdWUgYWdhaW4uIixhY2NlcHQ6IlBsZWFzZSBlbnRlciBhIHZhbHVlIHdpdGggYSB2YWxpZCBleHRlbnNpb24uIixtYXhsZW5ndGg6Yy52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgbm8gbW9yZSB0aGFuIHswfSBjaGFyYWN0ZXJzLiIpLAptaW5sZW5ndGg6Yy52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYXQgbGVhc3QgezB9IGNoYXJhY3RlcnMuIikscmFuZ2VsZW5ndGg6Yy52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuIHswfSBhbmQgezF9IGNoYXJhY3RlcnMgbG9uZy4iKSxyYW5nZTpjLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gezB9IGFuZCB7MX0uIiksbWF4OmMudmFsaWRhdG9yLmZvcm1hdCgiUGxlYXNlIGVudGVyIGEgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHswfS4iKSxtaW46Yy52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gezB9LiIpfSxhdXRvQ3JlYXRlUmFuZ2VzOmZhbHNlLHByb3RvdHlwZTp7aW5pdDpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoZSl7dmFyIGY9Yy5kYXRhKHRoaXNbMF0uZm9ybSwidmFsaWRhdG9yIiksZz0ib24iK2UudHlwZS5yZXBsYWNlKC9edmFsaWRhdGUvLAoiIik7Zi5zZXR0aW5nc1tnXSYmZi5zZXR0aW5nc1tnXS5jYWxsKGYsdGhpc1swXSxlKX10aGlzLmxhYmVsQ29udGFpbmVyPWModGhpcy5zZXR0aW5ncy5lcnJvckxhYmVsQ29udGFpbmVyKTt0aGlzLmVycm9yQ29udGV4dD10aGlzLmxhYmVsQ29udGFpbmVyLmxlbmd0aCYmdGhpcy5sYWJlbENvbnRhaW5lcnx8Yyh0aGlzLmN1cnJlbnRGb3JtKTt0aGlzLmNvbnRhaW5lcnM9Yyh0aGlzLnNldHRpbmdzLmVycm9yQ29udGFpbmVyKS5hZGQodGhpcy5zZXR0aW5ncy5lcnJvckxhYmVsQ29udGFpbmVyKTt0aGlzLnN1Ym1pdHRlZD17fTt0aGlzLnZhbHVlQ2FjaGU9e307dGhpcy5wZW5kaW5nUmVxdWVzdD0wO3RoaXMucGVuZGluZz17fTt0aGlzLmludmFsaWQ9e307dGhpcy5yZXNldCgpO3ZhciBiPXRoaXMuZ3JvdXBzPXt9O2MuZWFjaCh0aGlzLnNldHRpbmdzLmdyb3VwcyxmdW5jdGlvbihlLGYpe2MuZWFjaChmLnNwbGl0KC9ccy8pLGZ1bmN0aW9uKGcsaCl7YltoXT1lfSl9KTt2YXIgZD0KdGhpcy5zZXR0aW5ncy5ydWxlcztjLmVhY2goZCxmdW5jdGlvbihlLGYpe2RbZV09Yy52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShmKX0pO2ModGhpcy5jdXJyZW50Rm9ybSkudmFsaWRhdGVEZWxlZ2F0ZSgiW3R5cGU9J3RleHQnXSwgW3R5cGU9J3Bhc3N3b3JkJ10sIFt0eXBlPSdmaWxlJ10sIHNlbGVjdCwgdGV4dGFyZWEsIFt0eXBlPSdudW1iZXInXSwgW3R5cGU9J3NlYXJjaCddICxbdHlwZT0ndGVsJ10sIFt0eXBlPSd1cmwnXSwgW3R5cGU9J2VtYWlsJ10sIFt0eXBlPSdkYXRldGltZSddLCBbdHlwZT0nZGF0ZSddLCBbdHlwZT0nbW9udGgnXSwgW3R5cGU9J3dlZWsnXSwgW3R5cGU9J3RpbWUnXSwgW3R5cGU9J2RhdGV0aW1lLWxvY2FsJ10sIFt0eXBlPSdyYW5nZSddLCBbdHlwZT0nY29sb3InXSAiLCJmb2N1c2luIGZvY3Vzb3V0IGtleXVwIixhKS52YWxpZGF0ZURlbGVnYXRlKCJbdHlwZT0ncmFkaW8nXSwgW3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdCwgb3B0aW9uIiwiY2xpY2siLAphKTt0aGlzLnNldHRpbmdzLmludmFsaWRIYW5kbGVyJiZjKHRoaXMuY3VycmVudEZvcm0pLmJpbmQoImludmFsaWQtZm9ybS52YWxpZGF0ZSIsdGhpcy5zZXR0aW5ncy5pbnZhbGlkSGFuZGxlcil9LGZvcm06ZnVuY3Rpb24oKXt0aGlzLmNoZWNrRm9ybSgpO2MuZXh0ZW5kKHRoaXMuc3VibWl0dGVkLHRoaXMuZXJyb3JNYXApO3RoaXMuaW52YWxpZD1jLmV4dGVuZCh7fSx0aGlzLmVycm9yTWFwKTt0aGlzLnZhbGlkKCl8fGModGhpcy5jdXJyZW50Rm9ybSkudHJpZ2dlckhhbmRsZXIoImludmFsaWQtZm9ybSIsW3RoaXNdKTt0aGlzLnNob3dFcnJvcnMoKTtyZXR1cm4gdGhpcy52YWxpZCgpfSxjaGVja0Zvcm06ZnVuY3Rpb24oKXt0aGlzLnByZXBhcmVGb3JtKCk7Zm9yKHZhciBhPTAsYj10aGlzLmN1cnJlbnRFbGVtZW50cz10aGlzLmVsZW1lbnRzKCk7YlthXTthKyspdGhpcy5jaGVjayhiW2FdKTtyZXR1cm4gdGhpcy52YWxpZCgpfSxlbGVtZW50OmZ1bmN0aW9uKGEpe3RoaXMubGFzdEVsZW1lbnQ9CmE9dGhpcy52YWxpZGF0aW9uVGFyZ2V0Rm9yKHRoaXMuY2xlYW4oYSkpO3RoaXMucHJlcGFyZUVsZW1lbnQoYSk7dGhpcy5jdXJyZW50RWxlbWVudHM9YyhhKTt2YXIgYj10aGlzLmNoZWNrKGEpO2lmKGIpZGVsZXRlIHRoaXMuaW52YWxpZFthLm5hbWVdO2Vsc2UgdGhpcy5pbnZhbGlkW2EubmFtZV09dHJ1ZTtpZighdGhpcy5udW1iZXJPZkludmFsaWRzKCkpdGhpcy50b0hpZGU9dGhpcy50b0hpZGUuYWRkKHRoaXMuY29udGFpbmVycyk7dGhpcy5zaG93RXJyb3JzKCk7cmV0dXJuIGJ9LHNob3dFcnJvcnM6ZnVuY3Rpb24oYSl7aWYoYSl7Yy5leHRlbmQodGhpcy5lcnJvck1hcCxhKTt0aGlzLmVycm9yTGlzdD1bXTtmb3IodmFyIGIgaW4gYSl0aGlzLmVycm9yTGlzdC5wdXNoKHttZXNzYWdlOmFbYl0sZWxlbWVudDp0aGlzLmZpbmRCeU5hbWUoYilbMF19KTt0aGlzLnN1Y2Nlc3NMaXN0PWMuZ3JlcCh0aGlzLnN1Y2Nlc3NMaXN0LGZ1bmN0aW9uKGQpe3JldHVybiEoZC5uYW1lIGluIGEpfSl9dGhpcy5zZXR0aW5ncy5zaG93RXJyb3JzPwp0aGlzLnNldHRpbmdzLnNob3dFcnJvcnMuY2FsbCh0aGlzLHRoaXMuZXJyb3JNYXAsdGhpcy5lcnJvckxpc3QpOnRoaXMuZGVmYXVsdFNob3dFcnJvcnMoKX0scmVzZXRGb3JtOmZ1bmN0aW9uKCl7Yy5mbi5yZXNldEZvcm0mJmModGhpcy5jdXJyZW50Rm9ybSkucmVzZXRGb3JtKCk7dGhpcy5zdWJtaXR0ZWQ9e307dGhpcy5sYXN0RWxlbWVudD1udWxsO3RoaXMucHJlcGFyZUZvcm0oKTt0aGlzLmhpZGVFcnJvcnMoKTt0aGlzLmVsZW1lbnRzKCkucmVtb3ZlQ2xhc3ModGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzKX0sbnVtYmVyT2ZJbnZhbGlkczpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9iamVjdExlbmd0aCh0aGlzLmludmFsaWQpfSxvYmplY3RMZW5ndGg6ZnVuY3Rpb24oYSl7dmFyIGI9MCxkO2ZvcihkIGluIGEpYisrO3JldHVybiBifSxoaWRlRXJyb3JzOmZ1bmN0aW9uKCl7dGhpcy5hZGRXcmFwcGVyKHRoaXMudG9IaWRlKS5oaWRlKCl9LHZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZSgpPT0KMH0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVycm9yTGlzdC5sZW5ndGh9LGZvY3VzSW52YWxpZDpmdW5jdGlvbigpe2lmKHRoaXMuc2V0dGluZ3MuZm9jdXNJbnZhbGlkKXRyeXtjKHRoaXMuZmluZExhc3RBY3RpdmUoKXx8dGhpcy5lcnJvckxpc3QubGVuZ3RoJiZ0aGlzLmVycm9yTGlzdFswXS5lbGVtZW50fHxbXSkuZmlsdGVyKCI6dmlzaWJsZSIpLmZvY3VzKCkudHJpZ2dlcigiZm9jdXNpbiIpfWNhdGNoKGEpe319LGZpbmRMYXN0QWN0aXZlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5sYXN0QWN0aXZlO3JldHVybiBhJiZjLmdyZXAodGhpcy5lcnJvckxpc3QsZnVuY3Rpb24oYil7cmV0dXJuIGIuZWxlbWVudC5uYW1lPT1hLm5hbWV9KS5sZW5ndGg9PTEmJmF9LGVsZW1lbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXt9O3JldHVybiBjKHRoaXMuY3VycmVudEZvcm0pLmZpbmQoImlucHV0LCBzZWxlY3QsIHRleHRhcmVhIikubm90KCI6c3VibWl0LCA6cmVzZXQsIDppbWFnZSwgW2Rpc2FibGVkXSIpLm5vdCh0aGlzLnNldHRpbmdzLmlnbm9yZSkuZmlsdGVyKGZ1bmN0aW9uKCl7IXRoaXMubmFtZSYmCmEuc2V0dGluZ3MuZGVidWcmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLmVycm9yKCIlbyBoYXMgbm8gbmFtZSBhc3NpZ25lZCIsdGhpcyk7aWYodGhpcy5uYW1lIGluIGJ8fCFhLm9iamVjdExlbmd0aChjKHRoaXMpLnJ1bGVzKCkpKXJldHVybiBmYWxzZTtyZXR1cm4gYlt0aGlzLm5hbWVdPXRydWV9KX0sY2xlYW46ZnVuY3Rpb24oYSl7cmV0dXJuIGMoYSlbMF19LGVycm9yczpmdW5jdGlvbigpe3JldHVybiBjKHRoaXMuc2V0dGluZ3MuZXJyb3JFbGVtZW50KyIuIit0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsdGhpcy5lcnJvckNvbnRleHQpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuc3VjY2Vzc0xpc3Q9W107dGhpcy5lcnJvckxpc3Q9W107dGhpcy5lcnJvck1hcD17fTt0aGlzLnRvU2hvdz1jKFtdKTt0aGlzLnRvSGlkZT1jKFtdKTt0aGlzLmN1cnJlbnRFbGVtZW50cz1jKFtdKX0scHJlcGFyZUZvcm06ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCk7dGhpcy50b0hpZGU9dGhpcy5lcnJvcnMoKS5hZGQodGhpcy5jb250YWluZXJzKX0sCnByZXBhcmVFbGVtZW50OmZ1bmN0aW9uKGEpe3RoaXMucmVzZXQoKTt0aGlzLnRvSGlkZT10aGlzLmVycm9yc0ZvcihhKX0sY2hlY2s6ZnVuY3Rpb24oYSl7YT10aGlzLnZhbGlkYXRpb25UYXJnZXRGb3IodGhpcy5jbGVhbihhKSk7dmFyIGI9YyhhKS5ydWxlcygpLGQ9ZmFsc2UsZTtmb3IoZSBpbiBiKXt2YXIgZj17bWV0aG9kOmUscGFyYW1ldGVyczpiW2VdfTt0cnl7dmFyIGc9Yy52YWxpZGF0b3IubWV0aG9kc1tlXS5jYWxsKHRoaXMsYS52YWx1ZS5yZXBsYWNlKC9cci9nLCIiKSxhLGYucGFyYW1ldGVycyk7aWYoZz09ImRlcGVuZGVuY3ktbWlzbWF0Y2giKWQ9dHJ1ZTtlbHNle2Q9ZmFsc2U7aWYoZz09InBlbmRpbmciKXt0aGlzLnRvSGlkZT10aGlzLnRvSGlkZS5ub3QodGhpcy5lcnJvcnNGb3IoYSkpO3JldHVybn1pZighZyl7dGhpcy5mb3JtYXRBbmRBZGQoYSxmKTtyZXR1cm4gZmFsc2V9fX1jYXRjaChoKXt0aGlzLnNldHRpbmdzLmRlYnVnJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS5sb2coImV4Y2VwdGlvbiBvY2N1cmVkIHdoZW4gY2hlY2tpbmcgZWxlbWVudCAiKwphLmlkKyIsIGNoZWNrIHRoZSAnIitmLm1ldGhvZCsiJyBtZXRob2QiLGgpO3Rocm93IGg7fX1pZighZCl7dGhpcy5vYmplY3RMZW5ndGgoYikmJnRoaXMuc3VjY2Vzc0xpc3QucHVzaChhKTtyZXR1cm4gdHJ1ZX19LGN1c3RvbU1ldGFNZXNzYWdlOmZ1bmN0aW9uKGEsYil7aWYoYy5tZXRhZGF0YSl7dmFyIGQ9dGhpcy5zZXR0aW5ncy5tZXRhP2MoYSkubWV0YWRhdGEoKVt0aGlzLnNldHRpbmdzLm1ldGFdOmMoYSkubWV0YWRhdGEoKTtyZXR1cm4gZCYmZC5tZXNzYWdlcyYmZC5tZXNzYWdlc1tiXX19LGN1c3RvbU1lc3NhZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgZD10aGlzLnNldHRpbmdzLm1lc3NhZ2VzW2FdO3JldHVybiBkJiYoZC5jb25zdHJ1Y3Rvcj09U3RyaW5nP2Q6ZFtiXSl9LGZpbmREZWZpbmVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTA7YTxhcmd1bWVudHMubGVuZ3RoO2ErKylpZihhcmd1bWVudHNbYV0hPT11bmRlZmluZWQpcmV0dXJuIGFyZ3VtZW50c1thXX0sZGVmYXVsdE1lc3NhZ2U6ZnVuY3Rpb24oYSwKYil7cmV0dXJuIHRoaXMuZmluZERlZmluZWQodGhpcy5jdXN0b21NZXNzYWdlKGEubmFtZSxiKSx0aGlzLmN1c3RvbU1ldGFNZXNzYWdlKGEsYiksIXRoaXMuc2V0dGluZ3MuaWdub3JlVGl0bGUmJmEudGl0bGV8fHVuZGVmaW5lZCxjLnZhbGlkYXRvci5tZXNzYWdlc1tiXSwiPHN0cm9uZz5XYXJuaW5nOiBObyBtZXNzYWdlIGRlZmluZWQgZm9yICIrYS5uYW1lKyI8L3N0cm9uZz4iKX0sZm9ybWF0QW5kQWRkOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5kZWZhdWx0TWVzc2FnZShhLGIubWV0aG9kKSxlPS9cJD9ceyhcZCspXH0vZztpZih0eXBlb2YgZD09ImZ1bmN0aW9uIilkPWQuY2FsbCh0aGlzLGIucGFyYW1ldGVycyxhKTtlbHNlIGlmKGUudGVzdChkKSlkPWpRdWVyeS5mb3JtYXQoZC5yZXBsYWNlKGUsInskMX0iKSxiLnBhcmFtZXRlcnMpO3RoaXMuZXJyb3JMaXN0LnB1c2goe21lc3NhZ2U6ZCxlbGVtZW50OmF9KTt0aGlzLmVycm9yTWFwW2EubmFtZV09ZDt0aGlzLnN1Ym1pdHRlZFthLm5hbWVdPQpkfSxhZGRXcmFwcGVyOmZ1bmN0aW9uKGEpe2lmKHRoaXMuc2V0dGluZ3Mud3JhcHBlcilhPWEuYWRkKGEucGFyZW50KHRoaXMuc2V0dGluZ3Mud3JhcHBlcikpO3JldHVybiBhfSxkZWZhdWx0U2hvd0Vycm9yczpmdW5jdGlvbigpe2Zvcih2YXIgYT0wO3RoaXMuZXJyb3JMaXN0W2FdO2ErKyl7dmFyIGI9dGhpcy5lcnJvckxpc3RbYV07dGhpcy5zZXR0aW5ncy5oaWdobGlnaHQmJnRoaXMuc2V0dGluZ3MuaGlnaGxpZ2h0LmNhbGwodGhpcyxiLmVsZW1lbnQsdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcyk7dGhpcy5zaG93TGFiZWwoYi5lbGVtZW50LGIubWVzc2FnZSl9aWYodGhpcy5lcnJvckxpc3QubGVuZ3RoKXRoaXMudG9TaG93PXRoaXMudG9TaG93LmFkZCh0aGlzLmNvbnRhaW5lcnMpO2lmKHRoaXMuc2V0dGluZ3Muc3VjY2Vzcylmb3IoYT0wO3RoaXMuc3VjY2Vzc0xpc3RbYV07YSsrKXRoaXMuc2hvd0xhYmVsKHRoaXMuc3VjY2Vzc0xpc3RbYV0pOwppZih0aGlzLnNldHRpbmdzLnVuaGlnaGxpZ2h0KXthPTA7Zm9yKGI9dGhpcy52YWxpZEVsZW1lbnRzKCk7YlthXTthKyspdGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodC5jYWxsKHRoaXMsYlthXSx0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsdGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKX10aGlzLnRvSGlkZT10aGlzLnRvSGlkZS5ub3QodGhpcy50b1Nob3cpO3RoaXMuaGlkZUVycm9ycygpO3RoaXMuYWRkV3JhcHBlcih0aGlzLnRvU2hvdykuc2hvdygpfSx2YWxpZEVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudEVsZW1lbnRzLm5vdCh0aGlzLmludmFsaWRFbGVtZW50cygpKX0saW52YWxpZEVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcy5lcnJvckxpc3QpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnR9KX0sc2hvd0xhYmVsOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5lcnJvcnNGb3IoYSk7aWYoZC5sZW5ndGgpe2QucmVtb3ZlQ2xhc3ModGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MpOwpkLmF0dHIoImdlbmVyYXRlZCIpJiZkLmh0bWwoYil9ZWxzZXtkPWMoIjwiK3RoaXMuc2V0dGluZ3MuZXJyb3JFbGVtZW50KyIvPiIpLmF0dHIoeyJmb3IiOnRoaXMuaWRPck5hbWUoYSksZ2VuZXJhdGVkOnRydWV9KS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MpLmh0bWwoYnx8IiIpO2lmKHRoaXMuc2V0dGluZ3Mud3JhcHBlcilkPWQuaGlkZSgpLnNob3coKS53cmFwKCI8Iit0aGlzLnNldHRpbmdzLndyYXBwZXIrIi8+IikucGFyZW50KCk7dGhpcy5sYWJlbENvbnRhaW5lci5hcHBlbmQoZCkubGVuZ3RofHwodGhpcy5zZXR0aW5ncy5lcnJvclBsYWNlbWVudD90aGlzLnNldHRpbmdzLmVycm9yUGxhY2VtZW50KGQsYyhhKSk6ZC5pbnNlcnRBZnRlcihhKSl9aWYoIWImJnRoaXMuc2V0dGluZ3Muc3VjY2Vzcyl7ZC50ZXh0KCIiKTt0eXBlb2YgdGhpcy5zZXR0aW5ncy5zdWNjZXNzPT0ic3RyaW5nIj9kLmFkZENsYXNzKHRoaXMuc2V0dGluZ3Muc3VjY2Vzcyk6dGhpcy5zZXR0aW5ncy5zdWNjZXNzKGQpfXRoaXMudG9TaG93PQp0aGlzLnRvU2hvdy5hZGQoZCl9LGVycm9yc0ZvcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmlkT3JOYW1lKGEpO3JldHVybiB0aGlzLmVycm9ycygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBjKHRoaXMpLmF0dHIoImZvciIpPT1ifSl9LGlkT3JOYW1lOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdyb3Vwc1thLm5hbWVdfHwodGhpcy5jaGVja2FibGUoYSk/YS5uYW1lOmEuaWR8fGEubmFtZSl9LHZhbGlkYXRpb25UYXJnZXRGb3I6ZnVuY3Rpb24oYSl7aWYodGhpcy5jaGVja2FibGUoYSkpYT10aGlzLmZpbmRCeU5hbWUoYS5uYW1lKS5ub3QodGhpcy5zZXR0aW5ncy5pZ25vcmUpWzBdO3JldHVybiBhfSxjaGVja2FibGU6ZnVuY3Rpb24oYSl7cmV0dXJuL3JhZGlvfGNoZWNrYm94L2kudGVzdChhLnR5cGUpfSxmaW5kQnlOYW1lOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY3VycmVudEZvcm07cmV0dXJuIGMoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoYSkpLm1hcChmdW5jdGlvbihkLAplKXtyZXR1cm4gZS5mb3JtPT1iJiZlLm5hbWU9PWEmJmV8fG51bGx9KX0sZ2V0TGVuZ3RoOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7Y2FzZSAic2VsZWN0IjpyZXR1cm4gYygib3B0aW9uOnNlbGVjdGVkIixiKS5sZW5ndGg7Y2FzZSAiaW5wdXQiOmlmKHRoaXMuY2hlY2thYmxlKGIpKXJldHVybiB0aGlzLmZpbmRCeU5hbWUoYi5uYW1lKS5maWx0ZXIoIjpjaGVja2VkIikubGVuZ3RofXJldHVybiBhLmxlbmd0aH0sZGVwZW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZGVwZW5kVHlwZXNbdHlwZW9mIGFdP3RoaXMuZGVwZW5kVHlwZXNbdHlwZW9mIGFdKGEsYik6dHJ1ZX0sZGVwZW5kVHlwZXM6eyJib29sZWFuIjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3RyaW5nOmZ1bmN0aW9uKGEsYil7cmV0dXJuISFjKGEsYi5mb3JtKS5sZW5ndGh9LCJmdW5jdGlvbiI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYShiKX19LG9wdGlvbmFsOmZ1bmN0aW9uKGEpe3JldHVybiFjLnZhbGlkYXRvci5tZXRob2RzLnJlcXVpcmVkLmNhbGwodGhpcywKYy50cmltKGEudmFsdWUpLGEpJiYiZGVwZW5kZW5jeS1taXNtYXRjaCJ9LHN0YXJ0UmVxdWVzdDpmdW5jdGlvbihhKXtpZighdGhpcy5wZW5kaW5nW2EubmFtZV0pe3RoaXMucGVuZGluZ1JlcXVlc3QrKzt0aGlzLnBlbmRpbmdbYS5uYW1lXT10cnVlfX0sc3RvcFJlcXVlc3Q6ZnVuY3Rpb24oYSxiKXt0aGlzLnBlbmRpbmdSZXF1ZXN0LS07aWYodGhpcy5wZW5kaW5nUmVxdWVzdDwwKXRoaXMucGVuZGluZ1JlcXVlc3Q9MDtkZWxldGUgdGhpcy5wZW5kaW5nW2EubmFtZV07aWYoYiYmdGhpcy5wZW5kaW5nUmVxdWVzdD09MCYmdGhpcy5mb3JtU3VibWl0dGVkJiZ0aGlzLmZvcm0oKSl7Yyh0aGlzLmN1cnJlbnRGb3JtKS5zdWJtaXQoKTt0aGlzLmZvcm1TdWJtaXR0ZWQ9ZmFsc2V9ZWxzZSBpZighYiYmdGhpcy5wZW5kaW5nUmVxdWVzdD09MCYmdGhpcy5mb3JtU3VibWl0dGVkKXtjKHRoaXMuY3VycmVudEZvcm0pLnRyaWdnZXJIYW5kbGVyKCJpbnZhbGlkLWZvcm0iLFt0aGlzXSk7dGhpcy5mb3JtU3VibWl0dGVkPQpmYWxzZX19LHByZXZpb3VzVmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGMuZGF0YShhLCJwcmV2aW91c1ZhbHVlIil8fGMuZGF0YShhLCJwcmV2aW91c1ZhbHVlIix7b2xkOm51bGwsdmFsaWQ6dHJ1ZSxtZXNzYWdlOnRoaXMuZGVmYXVsdE1lc3NhZ2UoYSwicmVtb3RlIil9KX19LGNsYXNzUnVsZVNldHRpbmdzOntyZXF1aXJlZDp7cmVxdWlyZWQ6dHJ1ZX0sZW1haWw6e2VtYWlsOnRydWV9LHVybDp7dXJsOnRydWV9LGRhdGU6e2RhdGU6dHJ1ZX0sZGF0ZUlTTzp7ZGF0ZUlTTzp0cnVlfSxkYXRlREU6e2RhdGVERTp0cnVlfSxudW1iZXI6e251bWJlcjp0cnVlfSxudW1iZXJERTp7bnVtYmVyREU6dHJ1ZX0sZGlnaXRzOntkaWdpdHM6dHJ1ZX0sY3JlZGl0Y2FyZDp7Y3JlZGl0Y2FyZDp0cnVlfX0sYWRkQ2xhc3NSdWxlczpmdW5jdGlvbihhLGIpe2EuY29uc3RydWN0b3I9PVN0cmluZz90aGlzLmNsYXNzUnVsZVNldHRpbmdzW2FdPWI6Yy5leHRlbmQodGhpcy5jbGFzc1J1bGVTZXR0aW5ncywKYSl9LGNsYXNzUnVsZXM6ZnVuY3Rpb24oYSl7dmFyIGI9e307KGE9YyhhKS5hdHRyKCJjbGFzcyIpKSYmYy5lYWNoKGEuc3BsaXQoIiAiKSxmdW5jdGlvbigpe3RoaXMgaW4gYy52YWxpZGF0b3IuY2xhc3NSdWxlU2V0dGluZ3MmJmMuZXh0ZW5kKGIsYy52YWxpZGF0b3IuY2xhc3NSdWxlU2V0dGluZ3NbdGhpc10pfSk7cmV0dXJuIGJ9LGF0dHJpYnV0ZVJ1bGVzOmZ1bmN0aW9uKGEpe3ZhciBiPXt9O2E9YyhhKTtmb3IodmFyIGQgaW4gYy52YWxpZGF0b3IubWV0aG9kcyl7dmFyIGU7aWYoZT1kPT09InJlcXVpcmVkIiYmdHlwZW9mIGMuZm4ucHJvcD09PSJmdW5jdGlvbiI/YS5wcm9wKGQpOmEuYXR0cihkKSliW2RdPWU7ZWxzZSBpZihhWzBdLmdldEF0dHJpYnV0ZSgidHlwZSIpPT09ZCliW2RdPXRydWV9Yi5tYXhsZW5ndGgmJi8tMXwyMTQ3NDgzNjQ3fDUyNDI4OC8udGVzdChiLm1heGxlbmd0aCkmJmRlbGV0ZSBiLm1heGxlbmd0aDtyZXR1cm4gYn0sbWV0YWRhdGFSdWxlczpmdW5jdGlvbihhKXtpZighYy5tZXRhZGF0YSlyZXR1cm57fTsKdmFyIGI9Yy5kYXRhKGEuZm9ybSwidmFsaWRhdG9yIikuc2V0dGluZ3MubWV0YTtyZXR1cm4gYj9jKGEpLm1ldGFkYXRhKClbYl06YyhhKS5tZXRhZGF0YSgpfSxzdGF0aWNSdWxlczpmdW5jdGlvbihhKXt2YXIgYj17fSxkPWMuZGF0YShhLmZvcm0sInZhbGlkYXRvciIpO2lmKGQuc2V0dGluZ3MucnVsZXMpYj1jLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKGQuc2V0dGluZ3MucnVsZXNbYS5uYW1lXSl8fHt9O3JldHVybiBifSxub3JtYWxpemVSdWxlczpmdW5jdGlvbihhLGIpe2MuZWFjaChhLGZ1bmN0aW9uKGQsZSl7aWYoZT09PWZhbHNlKWRlbGV0ZSBhW2RdO2Vsc2UgaWYoZS5wYXJhbXx8ZS5kZXBlbmRzKXt2YXIgZj10cnVlO3N3aXRjaCh0eXBlb2YgZS5kZXBlbmRzKXtjYXNlICJzdHJpbmciOmY9ISFjKGUuZGVwZW5kcyxiLmZvcm0pLmxlbmd0aDticmVhaztjYXNlICJmdW5jdGlvbiI6Zj1lLmRlcGVuZHMuY2FsbChiLGIpfWlmKGYpYVtkXT1lLnBhcmFtIT09dW5kZWZpbmVkPwplLnBhcmFtOnRydWU7ZWxzZSBkZWxldGUgYVtkXX19KTtjLmVhY2goYSxmdW5jdGlvbihkLGUpe2FbZF09Yy5pc0Z1bmN0aW9uKGUpP2UoYik6ZX0pO2MuZWFjaChbIm1pbmxlbmd0aCIsIm1heGxlbmd0aCIsIm1pbiIsIm1heCJdLGZ1bmN0aW9uKCl7aWYoYVt0aGlzXSlhW3RoaXNdPU51bWJlcihhW3RoaXNdKX0pO2MuZWFjaChbInJhbmdlbGVuZ3RoIiwicmFuZ2UiXSxmdW5jdGlvbigpe2lmKGFbdGhpc10pYVt0aGlzXT1bTnVtYmVyKGFbdGhpc11bMF0pLE51bWJlcihhW3RoaXNdWzFdKV19KTtpZihjLnZhbGlkYXRvci5hdXRvQ3JlYXRlUmFuZ2VzKXtpZihhLm1pbiYmYS5tYXgpe2EucmFuZ2U9W2EubWluLGEubWF4XTtkZWxldGUgYS5taW47ZGVsZXRlIGEubWF4fWlmKGEubWlubGVuZ3RoJiZhLm1heGxlbmd0aCl7YS5yYW5nZWxlbmd0aD1bYS5taW5sZW5ndGgsYS5tYXhsZW5ndGhdO2RlbGV0ZSBhLm1pbmxlbmd0aDtkZWxldGUgYS5tYXhsZW5ndGh9fWEubWVzc2FnZXMmJmRlbGV0ZSBhLm1lc3NhZ2VzOwpyZXR1cm4gYX0sbm9ybWFsaXplUnVsZTpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09InN0cmluZyIpe3ZhciBiPXt9O2MuZWFjaChhLnNwbGl0KC9ccy8pLGZ1bmN0aW9uKCl7Ylt0aGlzXT10cnVlfSk7YT1ifXJldHVybiBhfSxhZGRNZXRob2Q6ZnVuY3Rpb24oYSxiLGQpe2MudmFsaWRhdG9yLm1ldGhvZHNbYV09YjtjLnZhbGlkYXRvci5tZXNzYWdlc1thXT1kIT11bmRlZmluZWQ/ZDpjLnZhbGlkYXRvci5tZXNzYWdlc1thXTtiLmxlbmd0aDwzJiZjLnZhbGlkYXRvci5hZGRDbGFzc1J1bGVzKGEsYy52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShhKSl9LG1ldGhvZHM6e3JlcXVpcmVkOmZ1bmN0aW9uKGEsYixkKXtpZighdGhpcy5kZXBlbmQoZCxiKSlyZXR1cm4iZGVwZW5kZW5jeS1taXNtYXRjaCI7c3dpdGNoKGIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7Y2FzZSAic2VsZWN0IjpyZXR1cm4oYT1jKGIpLnZhbCgpKSYmYS5sZW5ndGg+MDtjYXNlICJpbnB1dCI6aWYodGhpcy5jaGVja2FibGUoYikpcmV0dXJuIHRoaXMuZ2V0TGVuZ3RoKGEsCmIpPjA7ZGVmYXVsdDpyZXR1cm4gYy50cmltKGEpLmxlbmd0aD4wfX0scmVtb3RlOmZ1bmN0aW9uKGEsYixkKXtpZih0aGlzLm9wdGlvbmFsKGIpKXJldHVybiJkZXBlbmRlbmN5LW1pc21hdGNoIjt2YXIgZT10aGlzLnByZXZpb3VzVmFsdWUoYik7dGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tiLm5hbWVdfHwodGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tiLm5hbWVdPXt9KTtlLm9yaWdpbmFsTWVzc2FnZT10aGlzLnNldHRpbmdzLm1lc3NhZ2VzW2IubmFtZV0ucmVtb3RlO3RoaXMuc2V0dGluZ3MubWVzc2FnZXNbYi5uYW1lXS5yZW1vdGU9ZS5tZXNzYWdlO2Q9dHlwZW9mIGQ9PSJzdHJpbmciJiZ7dXJsOmR9fHxkO2lmKHRoaXMucGVuZGluZ1tiLm5hbWVdKXJldHVybiJwZW5kaW5nIjtpZihlLm9sZD09PWEpcmV0dXJuIGUudmFsaWQ7ZS5vbGQ9YTt2YXIgZj10aGlzO3RoaXMuc3RhcnRSZXF1ZXN0KGIpO3ZhciBnPXt9O2dbYi5uYW1lXT1hO2MuYWpheChjLmV4dGVuZCh0cnVlLHt1cmw6ZCwKbW9kZToiYWJvcnQiLHBvcnQ6InZhbGlkYXRlIitiLm5hbWUsZGF0YVR5cGU6Impzb24iLGRhdGE6ZyxzdWNjZXNzOmZ1bmN0aW9uKGgpe2Yuc2V0dGluZ3MubWVzc2FnZXNbYi5uYW1lXS5yZW1vdGU9ZS5vcmlnaW5hbE1lc3NhZ2U7dmFyIGo9aD09PXRydWU7aWYoail7dmFyIGk9Zi5mb3JtU3VibWl0dGVkO2YucHJlcGFyZUVsZW1lbnQoYik7Zi5mb3JtU3VibWl0dGVkPWk7Zi5zdWNjZXNzTGlzdC5wdXNoKGIpO2Yuc2hvd0Vycm9ycygpfWVsc2V7aT17fTtoPWh8fGYuZGVmYXVsdE1lc3NhZ2UoYiwicmVtb3RlIik7aVtiLm5hbWVdPWUubWVzc2FnZT1jLmlzRnVuY3Rpb24oaCk/aChhKTpoO2Yuc2hvd0Vycm9ycyhpKX1lLnZhbGlkPWo7Zi5zdG9wUmVxdWVzdChiLGopfX0sZCkpO3JldHVybiJwZW5kaW5nIn0sbWlubGVuZ3RoOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gdGhpcy5vcHRpb25hbChiKXx8dGhpcy5nZXRMZW5ndGgoYy50cmltKGEpLGIpPj1kfSxtYXhsZW5ndGg6ZnVuY3Rpb24oYSwKYixkKXtyZXR1cm4gdGhpcy5vcHRpb25hbChiKXx8dGhpcy5nZXRMZW5ndGgoYy50cmltKGEpLGIpPD1kfSxyYW5nZWxlbmd0aDpmdW5jdGlvbihhLGIsZCl7YT10aGlzLmdldExlbmd0aChjLnRyaW0oYSksYik7cmV0dXJuIHRoaXMub3B0aW9uYWwoYil8fGE+PWRbMF0mJmE8PWRbMV19LG1pbjpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIHRoaXMub3B0aW9uYWwoYil8fGE+PWR9LG1heDpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIHRoaXMub3B0aW9uYWwoYil8fGE8PWR9LHJhbmdlOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gdGhpcy5vcHRpb25hbChiKXx8YT49ZFswXSYmYTw9ZFsxXX0sZW1haWw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vcHRpb25hbChiKXx8L14oKChbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKFwuKFthLXpdfFxkfFshI1wkJSYnXCpcK1wtXC89XD9cXl9ge1x8fX5dfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSspKil8KChceDIyKSgoKChceDIwfFx4MDkpKihceDBkXHgwYSkpPyhceDIwfFx4MDkpKyk/KChbXHgwMS1ceDA4XHgwYlx4MGNceDBlLVx4MWZceDdmXXxceDIxfFtceDIzLVx4NWJdfFtceDVkLVx4N2VdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoXFwoW1x4MDEtXHgwOVx4MGJceDBjXHgwZC1ceDdmXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKSkqKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPyhceDIyKSkpQCgoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4pKygoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSkkL2kudGVzdChhKX0sCnVybDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9wdGlvbmFsKGIpfHwvXihodHRwcz98ZnRwKTpcL1wvKCgoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6KSpAKT8oKChcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pKXwoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4/KSg6XGQqKT8pKFwvKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCkrKFwvKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKSopKik/KT8oXD8oKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxbXHVFMDAwLVx1RjhGRl18XC98XD8pKik/KFwjKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCl8XC98XD8pKik/JC9pLnRlc3QoYSl9LApkYXRlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub3B0aW9uYWwoYil8fCEvSW52YWxpZHxOYU4vLnRlc3QobmV3IERhdGUoYSkpfSxkYXRlSVNPOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub3B0aW9uYWwoYil8fC9eXGR7NH1bXC8tXVxkezEsMn1bXC8tXVxkezEsMn0kLy50ZXN0KGEpfSxudW1iZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vcHRpb25hbChiKXx8L14tPyg/OlxkK3xcZHsxLDN9KD86LFxkezN9KSspKD86XC5cZCspPyQvLnRlc3QoYSl9LGRpZ2l0czpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9wdGlvbmFsKGIpfHwvXlxkKyQvLnRlc3QoYSl9LGNyZWRpdGNhcmQ6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLm9wdGlvbmFsKGIpKXJldHVybiJkZXBlbmRlbmN5LW1pc21hdGNoIjtpZigvW14wLTkgLV0rLy50ZXN0KGEpKXJldHVybiBmYWxzZTt2YXIgZD0wLGU9MCxmPWZhbHNlO2E9YS5yZXBsYWNlKC9cRC9nLCIiKTtmb3IodmFyIGc9YS5sZW5ndGgtMTtnPj0KMDtnLS0pe2U9YS5jaGFyQXQoZyk7ZT1wYXJzZUludChlLDEwKTtpZihmKWlmKChlKj0yKT45KWUtPTk7ZCs9ZTtmPSFmfXJldHVybiBkJTEwPT0wfSxhY2NlcHQ6ZnVuY3Rpb24oYSxiLGQpe2Q9dHlwZW9mIGQ9PSJzdHJpbmciP2QucmVwbGFjZSgvLC9nLCJ8Iik6InBuZ3xqcGU/Z3xnaWYiO3JldHVybiB0aGlzLm9wdGlvbmFsKGIpfHxhLm1hdGNoKFJlZ0V4cCgiLigiK2QrIikkIiwiaSIpKX0sZXF1YWxUbzpmdW5jdGlvbihhLGIsZCl7ZD1jKGQpLnVuYmluZCgiLnZhbGlkYXRlLWVxdWFsVG8iKS5iaW5kKCJibHVyLnZhbGlkYXRlLWVxdWFsVG8iLGZ1bmN0aW9uKCl7YyhiKS52YWxpZCgpfSk7cmV0dXJuIGE9PWQudmFsKCl9fX0pO2MuZm9ybWF0PWMudmFsaWRhdG9yLmZvcm1hdH0pKGpRdWVyeSk7CihmdW5jdGlvbihjKXt2YXIgYT17fTtpZihjLmFqYXhQcmVmaWx0ZXIpYy5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGQsZSxmKXtlPWQucG9ydDtpZihkLm1vZGU9PSJhYm9ydCIpe2FbZV0mJmFbZV0uYWJvcnQoKTthW2VdPWZ9fSk7ZWxzZXt2YXIgYj1jLmFqYXg7Yy5hamF4PWZ1bmN0aW9uKGQpe3ZhciBlPSgicG9ydCJpbiBkP2Q6Yy5hamF4U2V0dGluZ3MpLnBvcnQ7aWYoKCJtb2RlImluIGQ/ZDpjLmFqYXhTZXR0aW5ncykubW9kZT09ImFib3J0Iil7YVtlXSYmYVtlXS5hYm9ydCgpO3JldHVybiBhW2VdPWIuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSkoalF1ZXJ5KTsKKGZ1bmN0aW9uKGMpeyFqUXVlcnkuZXZlbnQuc3BlY2lhbC5mb2N1c2luJiYhalF1ZXJ5LmV2ZW50LnNwZWNpYWwuZm9jdXNvdXQmJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXImJmMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKGUpe2U9Yy5ldmVudC5maXgoZSk7ZS50eXBlPWI7cmV0dXJuIGMuZXZlbnQuaGFuZGxlLmNhbGwodGhpcyxlKX1jLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ1bmN0aW9uKCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKGEsZCx0cnVlKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxkLHRydWUpfSxoYW5kbGVyOmZ1bmN0aW9uKGUpe2FyZ3VtZW50c1swXT1jLmV2ZW50LmZpeChlKTthcmd1bWVudHNbMF0udHlwZT1iO3JldHVybiBjLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0pO2MuZXh0ZW5kKGMuZm4se3ZhbGlkYXRlRGVsZWdhdGU6ZnVuY3Rpb24oYSwKYixkKXtyZXR1cm4gdGhpcy5iaW5kKGIsZnVuY3Rpb24oZSl7dmFyIGY9YyhlLnRhcmdldCk7aWYoZi5pcyhhKSlyZXR1cm4gZC5hcHBseShmLGFyZ3VtZW50cyl9KX19KX0pKGpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBoZWFkZXJzIGFuZCBsYWJlbHMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLy8gLS0gY29tbW9uCgokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVXBDb3Vwb24gTW9kdWxlJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdBIG1vZHVsZSB0byBzZXR1cCBhbiBvbmxpbmUgbG90dGVyeSwgY291cG9uIGNvZGUgcmVnaXN0cmF0aW9uIHN5c3RlbS4nOwoKJGxhbmdbJ2FwcHJvdmVfc3RhdHVzJ10gPSAnU2V0IHN0YXR1cyB0byBcJ0FjdGl2ZVwnJzsKJGxhbmdbJ3JldmVydF9zdGF0dXMnXSA9ICdTZXQgc3RhdHVzIHRvIFwnSW5hY3RpdmVcJyc7CgokbGFuZ1snYXBwcm92ZV9kZWZhdWx0J10gPSAnU2V0IGRlZmF1bHQgdG8gXCdBY3RpdmVcJyc7CiRsYW5nWydyZXZlcnRfZGVmYXVsdCddID0gJ1NldCBkZWZhdWx0IHRvIFwnSW5hY3RpdmVcJyc7CgokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aXZlJzsKJGxhbmdbJ2luYWN0aXZlJ10gPSAnSW5hY3RpdmUnOwokbGFuZ1sneWVzJ10gPSAnWWVzJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwoKLy8gLS0gYWN0aW9uCgokbGFuZ1sndGl0bGUnXSA9ICdUaXRsZSc7CiRsYW5nWydhbGlhcyddID0gJ0FsaWFzJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ1N0YXJ0IGRhdGUnOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdFbmQgZGF0ZSc7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMnOwokbGFuZ1snc2VsZWN0J10gPSAnU2VsZWN0JzsKCi8vIC0tIHBlcmlvZAoKJGxhbmdbJ2FjdGlvbiddID0gJ0NvdXBvbiBhY3Rpb24nOwokbGFuZ1snaXNfZmluYWwnXSA9ICdGaW5hbCBEcmF3Pyc7CgovLyAtLSBwcml6ZQoKJGxhbmdbJ3BlcmlvZCddID0gJ0NvdXBvbiBwZXJpb2QnOwokbGFuZ1sncHJpemVfY29kZSddID0gJ1ByaXplIGNvZGUnOwokbGFuZ1snbnVtYmVyJ10gPSAnTnVtYmVyJzsKCiRsYW5nWyd0b3RhbF9udW1iZXInXSA9ICdUb3RhbCc7CiRsYW5nWydmcmVlX251bWJlciddID0gJ0F2YWlsYWJsZSc7CiRsYW5nWydnaXZlbl9udW1iZXInXSA9ICdBbGxvdHRlZCc7CgokbGFuZ1snYWN0aW9uX3BlcmlvZCddID0gJ0NvdXBvbiBBY3Rpb24gLyBDb3Vwb24gUGVyaW9kJzsKCi8vIC0tIHdpbm5lcgoKJGxhbmdbJ2RyYXdfY291cG9uJ109ICdEcmF3IENvdXBvbic7CiRsYW5nWyd3aXRoZHJhd19jb3Vwb24nXT0gJ1dpdGhkcmF3IENvdXBvbic7CgovLyAtLSBzdGF0aXN0aWNzCgokbGFuZ1sncmVnaXN0cmF0aW9ucyddID0gJ1JlZ2lzdHJhdGlvbnMnOwoKLy8gLS0gdGVtcGxhdGVzCgokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1snZGVmYXVsdCddID0gJ0RlZmF1bHQnOwokbGFuZ1sndGVtcGxhdGVfdHlwZSddID0gJ1RlbXBsYXRlIHR5cGUnOwokbGFuZ1sndGVtcGxhdGVfcmVnaXN0ZXInXSA9ICdUZW1wbGF0ZSByZWdpc3RyYXRpb24nOwokbGFuZ1sndGVtcGxhdGVfd2lubmVyJ10gPSAnVGVtcGxhdGUgd2lubmVyJzsKJGxhbmdbJ3RlbXBsYXRlX3ByaXplJ10gPSAnVGVtcGxhdGUgcHJpemUnOwokbGFuZ1sndGVtcGxhdGVfY29kZSddID0gJ1RlbXBsYXRlIGNvZGUnOwoKLy8gLS0gcHJlZmVyZW5jZXMKCiRsYW5nWydwcmVmZXJlbmNlc191bmRlcmNvbnN0cnVjdGlvbiddID0gJ0N1cnJlbnRseSBwcmVmZXJlbmNlcyBhcmUgbm90IGFwcGxpZWQsIHRoZSBhZG1pbiBpbnRlcmZhY2Ugd2lsbCBzYXZlIHRoZSBkYXRhLic7CgovLyBlbWFpbF9yZWdpc3RlcmVkX2N1c3RvbWVyCgokbGFuZ1sncF9zZWN0aW9uX2VtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXInXSA9ICdFLW1haWwgY3VzdG9tZXIgYWZ0ZXIgcmVnaXN0cmF0aW9uIG9mIGNvdXBvbiBjb2RlPyc7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3RydWUnXSA9ICdDdXJycmVudGx5IGN1c3RvbWVyIHJlY2VpdmUgZS1tYWlsIG1lc3NhZ2VzLCBhbGwgVXBDb3Vwb24gcHJlZmVyZW5jZXMgYXJlIGNvbXBsZXRlZCBjb3JyZWN0bHkuJzsKCiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfZmFsc2UnXSA9ICdDdXJyZW50bHkgY3VzdG9tZXIgZG9lcyA8dT5ub3Q8L3U+IHJlY2VpdmUgZS1tYWlsIG1lc3NhZ2VzLiBOb3QgYWxsIFVwQ291cG9uIHByZWZlcmVuY2VzIGFyZSBjb21wZXRlZCBjb3JyZWN0bHkuJzsKCiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfY2hlY2snXSA9ICdZZXMgaXMgb24sIG5vIGlzIG9mZic7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnXSA9ICdTdWJqZWN0IG9mIHRoZSBlLW1haWwgbWVzc2FnZSc7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfc3ViamVjdF9kZWZhdWx0J10gPSAnVGhhbmsgeW91IGZvciByZWdpc3RlcmluZyc7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnXSA9ICdFLW1haWwgYWRkcmVzcyBzZW5kZXInOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWxfaGVscCddID0gJ0JlIGF3YXJlISBTb21lIHByb3ZpZGVycyBvbmx5IGFsbG93IGFuIGUtbWFpbCBhZGRyZXNzIHdoaWNoIGNvcnJlc3BvbmRzIHdpdGggdGhlIGRvbWFpbiBuYW1lLic7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZSddID0gJ05hbWUgb2Ygc2VuZGVyJzsKCiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZSddID0gJ0UtbWFpbCAocmVnaXN0ZXJlZCB1c2VyKSBtZXNzYWdlJzsKCiRsYW5nWydlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFycyddID0gJ1doaWNoIHZhcmlhYmxlcyBtYXkgYmUgdXNlZCBpbiBhbiBlLW1haWwgKHJlZ2lzdGVyZWQgdXNlcikgbWVzc2FnZT8nOwoKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV92YXJzX2xpc3QnXSA9IDw8PEVPVAoKPGNvZGU+e1wkZW1haWwuZmlyc3RfbmFtZX08L2NvZGU+IC0gRmlyc3QgbmFtZTxiciAvPgo8Y29kZT57XCRlbWFpbC5sYXN0X25hbWV9PC9jb2RlPiAtIExhc3QgbmFtZTxiciAvPgo8Y29kZT57XCRlbWFpbC5lbWFpbH08L2NvZGU+IC0gRS1tYWlsPGJyIC8+Cjxjb2RlPntcJGVtYWlsLnBob25lfTwvY29kZT4gLSBUZWxlcGhvbmUgbnVtYmVyPGJyIC8+Cjxjb2RlPntcJGVtYWlsLm5ld3NsZXR0ZXJ9PC9jb2RlPiAtIE5ld3NsZXR0ZXIgMCA9IG5vIDEgPSB5ZXM8YnIgLz4KPGNvZGU+e1wkZW1haWwuY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIHdpdGhvdXQgZGFzaGVzPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmRhc2hlZF9jb3Vwb25fY29kZX08L2NvZGU+IC0gQ291cG9uIGNvZGUgd2l0aCBkYXNoZXM8YnIgLz4KPGNvZGU+e1wkZW1haWwudGltZXN0YW1wfTwvY29kZT4gLSBUaW1lc3RhbXAgaW4gdW5peCBmb3JtYXQ8YnIgLz4KPGNvZGU+e1wkZW1haWwuZGJfdGltZXN0YW1wfTwvY29kZT4gLSBUaW1lc3RhbXAgaW4gZGF0YWJhc2UgZm9ybWF0PGJyIC8+PGJyIC8+CgpJdCBpcyBwb3NzaWJsZSB0byB1c2UgU21hcnR5IG1vZGlmaWVycyBvciBmaWx0ZXJzIGZvciB0aGUgdmFyaWFibGUgaW4gdGhlIGUtbWFpbCBtZXNzYWdlLCBzdWNoIGFzOiA8YnIgLz4KPGNvZGU+e1wkZW1haWwuZGJfdGltZXN0YW1wfGRhdGVfZm9ybWF0OiIlZCAlQiAlWSJ9PC9jb2RlPjxiciAvPjxiciAvPgpFT1Q7CgokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJ10gPSAnRS1tYWlsICh3aW5uaW5nIHVzZXIpIG1lc3NhZ2UnOwoKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFycyddID0gJ1doaWNoIHZhcmlhYmxlcyBtYXkgYmUgdXNlZCBpbiBhbiBlLW1haWwgKHdpbm5pbmcgdXNlcikgbWVzc2FnZT8nOwoKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFyc19saXN0J10gPSA8PDxFT1QKCjxjb2RlPntcJGVtYWlsLmFjdGlvbl90aXRsZX08L2NvZGU+IC0gVGl0bGUgb2YgdGhlIGNvdXBvbiBhY3Rpb248YnIgLz4KPGNvZGU+e1wkZW1haWwuY291cG9uX2FjdGlvbl9pZH08L2NvZGU+IC0gVW5pcXVlIGlkIG9mIHRoZSBjb3Vwb24gYWN0aW9uPGJyIC8+Cjxjb2RlPntcJGVtYWlsLnBlcmlvZF90aXRsZX08L2NvZGU+IC0gVGl0bGUgb2YgdGhlIGNvdXBvbiBwZXJpb2Q8YnIgLz4KPGNvZGU+e1wkZW1haWwuY291cG9uX3BlcmlvZF9pZH08L2NvZGU+IC0gVW5pcXVlIGlkIG9mIHRoZSBjb3Vwb24gcGVyaW9kPGJyIC8+Cjxjb2RlPntcJGVtYWlsLnByaXplX3RpdGxlfTwvY29kZT4gLSBUaXRsZSBvZiB0aGUgcHJpemU8YnIgLz4KPGNvZGU+e1wkZW1haWwucHJpemVfY29kZX08L2NvZGU+IC0gQ29kZSBvZiB0aGUgcHJpemU8YnIgLz4KPGNvZGU+e1wkZW1haWwubnVtYmVyfTwvY29kZT4gLSBUb3RhbCBudW1iZXIgb2YgdGhpcyBwcml6ZTxiciAvPgo8Y29kZT57XCRlbWFpbC5jb3Vwb25fcHJpemVfaWR9PC9jb2RlPiAtIFVuaXF1ZSBpZCBvZiB0aGlzIHByaXplPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmNvdXBvbl9jdXN0b21lcl9pZH08L2NvZGU+IC0gVW5pcXVlIGlkIG9mIHdpbm5pbmcgY3VzdG9tZXI8YnIgLz4KPGNvZGU+e1wkZW1haWwuZmlyc3RfbmFtZX08L2NvZGU+IC0gRmlyc3QgbmFtZTxiciAvPgo8Y29kZT57XCRlbWFpbC5sYXN0X25hbWV9PC9jb2RlPiAtIExhc3QgbmFtZTxiciAvPgo8Y29kZT57XCRlbWFpbC5lbWFpbH08L2NvZGU+IC0gRW1haWw8YnIgLz4KPGNvZGU+e1wkZW1haWwuZGFzaGVkX3Bob25lfTwvY29kZT4gLSBQaG9uZSBudW1iZXIgd2l0aCBkYXNoZXMgZXZlcnkgMyBkaWdpdHM8YnIgLz4KPGNvZGU+e1wkZW1haWwucGhvbmV9PC9jb2RlPiAtIFBob25lIG51bWJlciAod2l0aG91dCBkYXNoZXMpPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmNvdXBvbl9jb2RlX2lkfTwvY29kZT4gLSBVbmlxdWUgaWQgb2YgdGhlIGNvdXBvbiBjb2RlPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmRiX3RpbWVzdGFtcH08L2NvZGU+IC0gVGltZXN0YW1wLCB3aGVuIHdhcyB0aGUgY291cG9uIGNvZGUgcmVnaXN0ZXJlZDxiciAvPgo8Y29kZT57XCRlbWFpbC5kYXNoZWRfY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIHdpdGggZGFzaGVzIGV2ZXJ5IDQgZGlnaXRzPGJyIC8+Cjxjb2RlPntcJGVtYWlsLmNvdXBvbl9jb2RlfTwvY29kZT4gLSBDb3Vwb24gY29kZSAod2l0aG91dCBkYXNoZXMpPGJyIC8+PGJyIC8+CgpJdCBpcyBwb3NzaWJsZSB0byB1c2UgU21hcnR5IG1vZGlmaWVycyBvciBmaWx0ZXJzIGZvciB0aGUgdmFyaWFibGUgaW4gdGhlIGUtbWFpbCBtZXNzYWdlLCBzdWNoIGFzOiA8YnIgLz4KPGNvZGU+e1wkZW1haWwuZGJfdGltZXN0YW1wfGRhdGVfZm9ybWF0OiIlZCAlQiAlWSJ9PC9jb2RlPjxiciAvPjxiciAvPgpFT1Q7CgovLyAtLSBmcm9udC1lbmQgCgokbGFuZ1sncmVnaXN0ZXJfY291cG9uX2NvZGUnXSA9ICdSZWdpc3RlciBjb3Vwb24gY29kZSc7CiRsYW5nWydmaXJzdF9uYW1lJ10gPSAnRmlyc3QgbmFtZSc7CiRsYW5nWydsYXN0X25hbWUnXSA9ICdMYXN0IG5hbWUnOwokbGFuZ1snZW1haWwnXSA9ICdFLW1haWwnOwokbGFuZ1sncGhvbmUnXSA9ICdUZWxlcGhvbmUgbnVtYmVyJzsKJGxhbmdbJ3Rlcm1zX2FuZF9jb25kaXRpb25zJ10gPSAnVGVybXMgYW5kIENvbmRpdGlvbnMnOwokbGFuZ1sndGVybXNfYW5kX2NvbmRpdGlvbnNfYWdyZWUnXSA9ICdZZXMsIEkgYWNjZXB0JzsKJGxhbmdbJ25ld3NsZXR0ZXInXSA9ICdOZXdzbGV0dGVyJzsKJGxhbmdbJ25ld3NsZXR0ZXJfYWdyZWUnXSA9ICdZZXMsIEkgbGlrZSB0byByZWNlaXZlIHRoZSBuZXdzbGV0dGVyJzsKJGxhbmdbJ2NvdXBvbl9jb2RlJ10gPSAnQ291cG9uIGNvZGUnOwoKJGxhbmdbJ3Nfc19jb3Vwb25fY29kZV9yZWdpc3RlcmVkJ10gPSAnRGVhciAlcyAlcywgPGJyIC8+PGJyIC8+IFlvdXIgY291cG9uIGNvZGUgaGFzIGJlZW4gcmVnaXN0ZXJlZC4gSWYgeW91IHdvdWxkIGxpa2UgdG8gcmVnaXN0ZXIgYW5vdGhlciBjb3Vwb24gY29kZSwgcGxlYXNlIGVudGVyIHRoZSBuZXh0IGNvdXBvbiBjb2RlIGFuZCBhY2NlcHQgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zLic7CgokbGFuZ1snc19kZWxldGVfY291cG9uX2NvZGVfY29va2llJ10gPSAnV291bGQgeW91IGxpa2UgdXMgdG8gZGVsZXRlIHRoZSBzYXZlZCBkYXRhIHRoYXQgd2FzIGVudGVyZWQgaW50byB0aGUgZm9ybSBvciB3b3VsZCB5b3UgbGlrZSB0byByZWdpc3RlciBhIGNvdXBvbiBjb2RlIGZvciBzb21lb25lIGVsc2U/IDxiciAvPjxiciAvPiAgQ2xpY2sgPGEgaHJlZj0iJXMiPmhlcmU8L2E+IHRvIGNsZWFyIHRoZSBmb3JtJzsKCiRsYW5nWydqc19yZXF1aXJlZCddID0gJ1JlcXVpcmVkJzsKJGxhbmdbJ2pzX29wdGlvbmFsJ10gPSAnT3B0aW9uYWwnOwokbGFuZ1snanNfZW1haWwnXSA9ICdFbnRlciBhIHZhbGlkZSBlLW1haWwgYWRkcmVzcyc7CiRsYW5nWydqc19udW1iZXInXSA9ICdPbmx5IGVudGVyIGRpZ2l0cyc7CiRsYW5nWydqc19taW5sZW5ndGgnXSA9ICdFbnRlciB7MH0gZGlnaXRzJzsgCiRsYW5nWydqc19taW5sZW5ndGhfbXVsdGlwbGUnXSA9ICdFbnRlciB7MH0gZGlnaXRzIHBlciBmaWVsZCc7CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogY29tbW9uIGVycm9yJ3MgYW5kIG1lc3NhZ2VzCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1BsZWFzZSwgbWFrZSBzdXJlIHRoYXQgdXNlcnMgd2hvIG1hbmFnZSBVcENvdXBvbiBhcmUgcHJvdmlkZWQgd2l0aCAmcXVvdDtVcENvdXBvbiZxdW90OyByaWdodHMuJzsKCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVXBDb3Vwb24gaXMgc3VjY2VzZnVsbHkgZGVpbnN0YWxsZWQuJzsKCiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlPyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgZGVuaWVkIChcJyVzXCcpJzsKJGxhbmdbJ2FjY2Vzc2FsbG93ZWQnXSA9ICdBY2Nlc3MgYWxsb3dlZCc7CiRsYW5nWydub3RfYWxsb3dlZCddID0gJ1RoaXMgaXMgbm90IGFsbG93ZWQnOwokbGFuZ1snbm9fc19naXZlbiddID0gJ1lvdSBkaWQgbm90IGVudGVyIGEgXCclc1wnICc7IAokbGFuZ1snc19ub3RnaXZlbiddID0gJ1wnJXNcJyBpcyBub3QgZmlsbGVkIGluJzsKJGxhbmdbJ3Nfc19hbHJlYWR5Z2l2ZW4nXSA9ICclczogXCclc1wnIGhhcyBhbHJlYWR5IGJlZW4gZW50ZXJlZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZGF0ZXMnXSA9ICdPbmUgb3IgbW9yZSBkYXRlIGZpZWxkcyBhcmUgaW52YWxpZCc7CgokbGFuZ1sndGVtcGxhdGVfZXhpc3RzJ10gPSAnVGhpcyB0ZW1wbGF0ZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydlcnJvcmluc2VydGluZ3RlbXBsYXRlJ10gPSAnVGhlIGZhY3Rvcnkgc2V0dGluZ3MgZGVmYXVsdCB0ZW1wbGF0ZSBjYW5ub3QgYmUgb3BlbmVkJzsgCgokbGFuZ1snY291cG9uX2FjdGlvbl9taXNzaW5nJ10gPSAnQmVmb3JlIFwnQ291cG9uIFBlcmlvZHNcJyBjYW4gYmUgZW50ZXJlZCwgYWN0aXZlIFwnQ291cG9uIEFjdGlvbnNcJyBzaG91bGQgYmUgYXZhaWxhYmxlJzsKCiRsYW5nWydjb3Vwb25fcGVyaW9kX21pc3NpbmcnXSA9ICdCZWZvcmUgXCdQcml6ZXNcJyBjYW4gYmUgZW50ZXJlZCwgYWN0aXZlIFwnQ291cG9uIFBlcmlvZHNcJyBzaG91bGQgYmUgYXZhaWxhYmxlJzsKCiRsYW5nWydzX3NfY291cG9ucGVyaW9kX21pc21hdGNoJ10gPSAnVGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZSBvZiB0aGUgXCdDb3Vwb24gUGVyaW9kXCcgaGFzIHRvIGJlIGJldHdlZW4gJXMgYW5kICVzJzsgCgokbGFuZ1snbmVlZF9yZWdpc3RlcmVkX2N1c3RvbWVyJ10gPSAnVG8gZHJhdyBhIGNvdXBvbiBmb3IgdGhpcyBwZXJpb2QgKG1vcmUpIHJlZ2lzdGVyZWQgY3VzdG9tZXJzIGFyZSBuZWVkZWQnOyAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBzaW5ndWxhciwgcGx1cmFsIG5vdW4KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKJGxhbmdbJ2FjdGlvbl9zJ10gPSAnQ291cG9uIEFjdGlvbic7CiRsYW5nWydhY3Rpb25fcCddID0gJ0NvdXBvbiBBY3Rpb25zJzsKCiRsYW5nWydwZXJpb2RfcyddID0gJ0NvdXBvbiBQZXJpb2QnOwokbGFuZ1sncGVyaW9kX3AnXSA9ICdDb3Vwb24gUGVyaW9kcyc7CgokbGFuZ1sncHJpemVfcyddID0gJ1ByaXplJzsKJGxhbmdbJ3ByaXplX3AnXSA9ICdQcml6ZXMnOwoKJGxhbmdbJ3dpbm5lcl9zJ10gPSAnV2lubmVyJzsKJGxhbmdbJ3dpbm5lcl9wJ10gPSAnV2lubmVycyc7CgokbGFuZ1snc3RhdGlzdGljc19zJ10gPSAnU3RhdGlzdGljJzsKJGxhbmdbJ3N0YXRpc3RpY3NfcCddID0gJ1N0YXRpc3RpY3MnOwoKJGxhbmdbJ3RlbXBsYXRlc19zJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1sndGVtcGxhdGVzX3AnXSA9ICdUZW1wbGF0ZXMnOwoKJGxhbmdbJ3ByZWZlcmVuY2VzX3MnXSA9ICdQcmVmZXJlbmNlJzsKJGxhbmdbJ3ByZWZlcmVuY2VzX3AnXSA9ICdQcmVmZXJlbmNlcyc7CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogYWN0aW9ucwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovLyAtLSBjb21tb24KCiRsYW5nWydhZGQnXSA9ICdBZGQnOwokbGFuZ1snZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWwnOwokbGFuZ1snYXBwbHknXSA9ICdBcHBseSc7CiRsYW5nWydmYWN0b3J5J10gPSAnRmFjdG9yeSBzZXR0aW5ncyc7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWRfaXRlbXMnXSA9ICdEZWxldGUgc2VsZWN0ZWQgaXRlbXMnOyAKCi8vIC0tIHNfCgokbGFuZ1snc19hZGQnXSA9ICdBZGQgJXMnOwokbGFuZ1snc19lZGl0J10gPSAnRWRpdCAlcyc7CiRsYW5nWydzX2RlbGV0ZSddID0gJ0RlbGV0ZSAlcyc7CiRsYW5nWydzX2NoYW5nZV9zdGF0dXMnXSA9ICdDaGFuZ2Ugc3RhdHVzICVzJzsKJGxhbmdbJ3NfY2hhbmdlX2RlZmF1bHQnXSA9ICdDaGFuZ2UgZGVmYXVsdCAlcyc7CgokbGFuZ1snc19hZGRlZCddID0gJyVzIGFkZGVkJzsKJGxhbmdbJ3NfZWRpdGVkJ10gPSAnJXMgZWRpdGVkJzsKJGxhbmdbJ3NfZGVsZXRlZCddID0gJyVzIGRlbGV0ZWQnOwokbGFuZ1snc19jaGFuZ2VkX3N0YXR1cyddID0gJyVzIHN0YXR1cyBjaGFuZ2VkJzsKJGxhbmdbJ3NfY2hhbmdlZF9kZWZhdWx0J10gPSAnJXMgZGVmYXVsdCBjaGFuZ2VkJzsKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBldmVudCBkZXNjcmlwdGlvbiBhbmQgaGVscAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uQWN0aW9uQWRkZWQnXSA9ICdTZW50IHdoZW4gYW4gYWN0aW9uIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbkFjdGlvbkFkZGVkJ10gPSA8PDxFT1QKPHA+eCBTZW50IHdoZW4gYW4gYWN0aW9uIGlzIGFkZGVkPC9wPgoKPGgzPlBhcmFtZXRlcnM8L2gzPgo8dWw+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uQWN0aW9uRWRpdGVkJ10gPSAnU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uQWN0aW9uRWRpdGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGFuIGFjdGlvbiBpcyBlZGl0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25BY3Rpb25EZWxldGVkJ10gPSAnU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbkFjdGlvbkRlbGV0ZWQnXSA9IDw8PEVPVAo8cD5TZW50IHdoZW4gYW4gYWN0aW9uIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUGVyaW9kQWRkZWQnXSA9ICdTZW50IHdoZW4gYSBwZXJpb2QgaXMgYWRkZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHBlcmlvZCBpcyBhZGRlZDwvcD4KCjxoMz5QYXJhbWV0ZXJzPC9oMz4KPHVsPgo8bGk+PC9saT4KPC91bD4KRU9UOwoKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblBlcmlvZEVkaXRlZCddID0gJ1NlbnQgd2hlbiBhIHBlcmlvZCBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kRWRpdGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGEgcGVyaW9kIGlzIGVkaXRlZDwvcD4KCjxoMz5QYXJhbWV0ZXJzPC9oMz4KPHVsPgo8bGk+PC9saT4KPC91bD4KRU9UOwoKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblBlcmlvZERlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSBwZXJpb2QgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QZXJpb2REZWxldGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGEgcGVyaW9kIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJpemVBZGRlZCddID0gJ1NlbnQgd2hlbiBhIHByaXplIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHByaXplIGlzIGFkZGVkPC9wPgoKPGgzPlBhcmFtZXRlcnM8L2gzPgo8dWw+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJpemVFZGl0ZWQnXSA9ICdTZW50IHdoZW4gYSBwcml6ZSBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJpemVFZGl0ZWQnXSA9IDw8PEVPVAo8cD5TZW50IHdoZW4gYSBwcml6ZSBpcyBlZGl0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25Qcml6ZURlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSBwcml6ZSBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplRGVsZXRlZCddID0gPDw8RU9UCjxwPlNlbnQgd2hlbiBhIHByaXplIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uV2lubmVyQWRkZWQnXSA9ICdTZW50IHdoZW4gYSB3aW5uZXIgaXMgYWRkZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uV2lubmVyQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHdpbm5lciBpcyBhZGRlZDwvcD4KCjxoMz5QYXJhbWV0ZXJzPC9oMz4KPHVsPgo8bGk+PC9saT4KPC91bD4KRU9UOwoKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbldpbm5lckVkaXRlZCddID0gJ1NlbnQgd2hlbiBhIHdpbm5lciBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uV2lubmVyRWRpdGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGEgd2lubmVyIGlzIGVkaXRlZDwvcD4KCjxoMz5QYXJhbWV0ZXJzPC9oMz4KPHVsPgo8bGk+PC9saT4KPC91bD4KRU9UOwoKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbldpbm5lckRlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSB3aW5uZXIgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25XaW5uZXJEZWxldGVkJ10gPSA8PDxFT1QKPHA+U2VudCB3aGVuIGEgd2lubmVyIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uVGVtcGxhdGVBZGRlZCddID0gJ1NlbnQgd2hlbiBhIHRlbXBsYXRlIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblRlbXBsYXRlQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHRlbXBsYXRlIGlzIGFkZGVkPC9wPgoKPGgzPlBhcmFtZXRlcnM8L2gzPgo8dWw+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uVGVtcGxhdGVFZGl0ZWQnXSA9ICdTZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uVGVtcGxhdGVFZGl0ZWQnXSA9IDw8PEVPVAo8cD5TZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBlZGl0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25UZW1wbGF0ZURlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblRlbXBsYXRlRGVsZXRlZCddID0gPDw8RU9UCjxwPlNlbnQgd2hlbiBhIHRlbXBsYXRlIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZUFkZGVkJ10gPSAnU2VudCB3aGVuIGEgcHJlZmVyZW5jZSBpcyBhZGRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QcmVmZXJlbmNlQWRkZWQnXSA9IDw8PEVPVAo8cD54IFNlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgYWRkZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjwvdWw+CkVPVDsKCiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QcmVmZXJlbmNlRWRpdGVkJ10gPSAnU2VudCB3aGVuIGEgcHJlZmVyZW5jZSBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJlZmVyZW5jZUVkaXRlZCddID0gPDw8RU9UCjxwPlNlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgZWRpdGVkPC9wPgoKPGgzPlBhcmFtZXRlcnM8L2gzPgo8dWw+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZURlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSBwcmVmZXJlbmNlIGlzIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJlZmVyZW5jZURlbGV0ZWQnXSA9IDw8PEVPVAo8cD5TZW50IHdoZW4gYSBwcmVmZXJlbmNlIGlzIGRlbGV0ZWQ8L3A+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjwvbGk+CjxsaT48L2xpPgo8L3VsPgpFT1Q7CgojCiMgRU9GCiMK]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/fa_FA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1VwQ291cG9uIE1vZHVsZSc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQSBtb2R1bGUgdG8gc2V0dXAgYW4gb25saW5lIGxvdHRlcnksIGNvdXBvbiBjb2RlIHJlZ2lzdHJhdGlvbiBzeXN0ZW0uJzsKJGxhbmdbJ2FwcHJvdmVfc3RhdHVzJ10gPSAnU2V0IHN0YXR1cyB0byAmIzAzOTtBY3RpdmUmIzAzOTsnOwokbGFuZ1sncmV2ZXJ0X3N0YXR1cyddID0gJ1NldCBzdGF0dXMgdG8gJiMwMzk7SW5hY3RpdmUmIzAzOTsnOwokbGFuZ1snYXBwcm92ZV9kZWZhdWx0J10gPSAnU2V0IGRlZmF1bHQgdG8gJiMwMzk7QWN0aXZlJiMwMzk7JzsKJGxhbmdbJ3JldmVydF9kZWZhdWx0J10gPSAnU2V0IGRlZmF1bHQgdG8gJiMwMzk7SW5hY3RpdmUmIzAzOTsnOwokbGFuZ1snYWN0aXZlJ10gPSAn2YHYudin2YQnOwokbGFuZ1snaW5hY3RpdmUnXSA9ICfYutuM2LEg2YHYudin2YQnOwokbGFuZ1sneWVzJ10gPSAn2KjZhNmHJzsKJGxhbmdbJ25vJ10gPSAn2K7bjNixJzsKJGxhbmdbJ3RpdGxlJ10gPSAn2LnZhtmI2KfZhic7CiRsYW5nWydhbGlhcyddID0gJ9mG2KfZhSDZhdiz2KrYudin2LEnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICfYqtmI2LbbjNit2KfYqic7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAn2KrYp9ix24zYriDYtNix2YjYuSc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ9iq2KfYsduM2K4g2b7Yp9uM2KfZhic7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMnOwokbGFuZ1snc2VsZWN0J10gPSAn2KfZhtiq2K7Yp9ioJzsKJGxhbmdbJ2FjdGlvbiddID0gJ0NvdXBvbiBhY3Rpb24nOwokbGFuZ1snaXNfZmluYWwnXSA9ICdGaW5hbCBEcmF3Pyc7CiRsYW5nWydwZXJpb2QnXSA9ICdDb3Vwb24gcGVyaW9kJzsKJGxhbmdbJ3ByaXplX2NvZGUnXSA9ICdQcml6ZSBjb2RlJzsKJGxhbmdbJ251bWJlciddID0gJ9i02YXYp9ix2YcnOwokbGFuZ1sndG90YWxfbnVtYmVyJ10gPSAnVG90YWwnOwokbGFuZ1snZnJlZV9udW1iZXInXSA9ICdBdmFpbGFibGUnOwokbGFuZ1snZ2l2ZW5fbnVtYmVyJ10gPSAnQWxsb3R0ZWQnOwokbGFuZ1snYWN0aW9uX3BlcmlvZCddID0gJ0NvdXBvbiBBY3Rpb24gLyBDb3Vwb24gUGVyaW9kJzsKJGxhbmdbJ2RyYXdfY291cG9uJ10gPSAnRHJhdyBDb3Vwb24nOwokbGFuZ1snd2l0aGRyYXdfY291cG9uJ10gPSAnV2l0aGRyYXcgQ291cG9uJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbnMnXSA9ICdSZWdpc3RyYXRpb25zJzsKJGxhbmdbJ25hbWUnXSA9ICfZhtin2YUnOwokbGFuZ1snZGVmYXVsdCddID0gJ9m+24zYtCZ6d25qO9mB2LHYtic7CiRsYW5nWyd0ZW1wbGF0ZV90eXBlJ10gPSAnVGVtcGxhdGUgdHlwZSc7CiRsYW5nWyd0ZW1wbGF0ZV9yZWdpc3RlciddID0gJ1RlbXBsYXRlIHJlZ2lzdHJhdGlvbic7CiRsYW5nWyd0ZW1wbGF0ZV93aW5uZXInXSA9ICdUZW1wbGF0ZSB3aW5uZXInOwokbGFuZ1sndGVtcGxhdGVfcHJpemUnXSA9ICdUZW1wbGF0ZSBwcml6ZSc7CiRsYW5nWyd0ZW1wbGF0ZV9jb2RlJ10gPSAnVGVtcGxhdGUgY29kZSc7CiRsYW5nWydwcmVmZXJlbmNlc191bmRlcmNvbnN0cnVjdGlvbiddID0gJ0N1cnJlbnRseSBwcmVmZXJlbmNlcyBhcmUgbm90IGFwcGxpZWQsIHRoZSBhZG1pbiBpbnRlcmZhY2Ugd2lsbCBzYXZlIHRoZSBkYXRhLic7CiRsYW5nWydwX3NlY3Rpb25fZW1haWxfcmVnaXN0ZXJlZF9jdXN0b21lciddID0gJ0UtbWFpbCBjdXN0b21lciBhZnRlciByZWdpc3RyYXRpb24gb2YgY291cG9uIGNvZGU/JzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF90cnVlJ10gPSAnQ3VycnJlbnRseSBjdXN0b21lciByZWNlaXZlIGUtbWFpbCBtZXNzYWdlcywgYWxsIHByZWZlcmVuY2VzIGFyZSBjb21wbGV0ZWQgY29ycmVjdGx5Lic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfZmFsc2UnXSA9ICdDdXJyZW50bHkgY3VzdG9tZXIgZG9lcyA8dT5ub3Q8L3U+IHJlY2VpdmUgZS1tYWlsIG1lc3NhZ2VzLiBOb3QgYWxsIHByZWZlcmVuY2VzIGFyZSBjb21wZXRlZCBjb3JyZWN0bHkuJzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF9jaGVjayddID0gJ1llcyBpcyBvbiwgbm8gaXMgb3V0JzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0J10gPSAnU3ViamVjdCBvZiB0aGUgZS1tYWlsIG1lc3NhZ2UnOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3N1YmplY3RfZGVmYXVsdCddID0gJ1RoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcnOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnXSA9ICdFLW1haWwgYWRkcmVzcyBzZW5kZXInOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWxfaGVscCddID0gJ0JlIGF3YXJlISBTb21lIHByb3ZpZGVycyBvbmx5IGFsbG93IGFuIGUtbWFpbCBhZGRyZXNzIHdoaWNoIGNvcnJlc3BvbmRzIHdpdGggdGhlIGRvbWFpbiBuYW1lLic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19uYW1lJ10gPSAnTmFtZSBvZiBzZW5kZXInOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2UnXSA9ICdFLW1haWwgKHJlZ2lzdGVyZWQgdXNlcikgbWVzc2FnZSc7CiRsYW5nWydlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFycyddID0gJ1doaWNoIHZhcmlhYmxlcyBtYXkgYmUgdXNlZCBpbiBhbiBlLW1haWwgKHJlZ2lzdGVyZWQgdXNlcikgbWVzc2FnZT8nOwokbGFuZ1snZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnNfbGlzdCddID0gJzxjb2RlPnskZW1haWwuZmlyc3RfbmFtZX08L2NvZGU+IC0gRmlyc3QgbmFtZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5sYXN0X25hbWV9PC9jb2RlPiAtIExhc3QgbmFtZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5lbWFpbH08L2NvZGU+IC0gRS1tYWlsPGJyIC8+DQo8Y29kZT57JGVtYWlsLnBob25lfTwvY29kZT4gLSBUZWxlcGhvbmUgbnVtYmVyPGJyIC8+DQo8Y29kZT57JGVtYWlsLm5ld3NsZXR0ZXJ9PC9jb2RlPiAtIE5ld3NsZXR0ZXIgMCA9IG5vIDEgPSB5ZXM8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIHdpdGhvdXQgZGFzaGVzPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRhc2hlZF9jb3Vwb25fY29kZX08L2NvZGU+IC0gQ291cG9uIGNvZGUgd2l0aCBkYXNoZXM8YnIgLz4NCjxjb2RlPnskZW1haWwudGltZXN0YW1wfTwvY29kZT4gLSBUaW1lc3RhbXAgaW4gdW5peCBmb3JtYXQ8YnIgLz4NCjxjb2RlPnskZW1haWwuZGJfdGltZXN0YW1wfTwvY29kZT4gLSBUaW1lc3RhbXAgaW4gZGF0YWJhc2UgZm9ybWF0PGJyIC8+PGJyIC8+DQoNCkl0IGlzIHBvc3NpYmxlIHRvIHVzZSBTbWFydHkgbW9kaWZpZXJzIG9yIGZpbHRlcnMgZm9yIHRoZSB2YXJpYWJsZSBpbiB0aGUgZS1tYWlsIG1lc3NhZ2UsIHN1Y2ggYXM6IDxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYl90aW1lc3RhbXB8ZGF0ZV9mb3JtYXQ6JnF1b3Q7JWQgJUIgJVkmcXVvdDt9PC9jb2RlPjxiciAvPjxiciAvPic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXInXSA9ICdFLW1haWwgKHdpbm5pbmcgdXNlcikgbWVzc2FnZSc7CiRsYW5nWydlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnMnXSA9ICdXaGljaCB2YXJpYWJsZXMgbWF5IGJlIHVzZWQgaW4gYW4gZS1tYWlsICh3aW5uaW5nIHVzZXIpIG1lc3NhZ2U/JzsKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFyc19saXN0J10gPSAnPGNvZGU+eyRlbWFpbC5hY3Rpb25fdGl0bGV9PC9jb2RlPiAtIFRpdGxlIG9mIHRoZSBjb3Vwb24gYWN0aW9uPGJyIC8+DQo8Y29kZT57JGVtYWlsLmNvdXBvbl9hY3Rpb25faWR9PC9jb2RlPiAtIFVuaXF1ZSBpZCBvZiB0aGUgY291cG9uIGFjdGlvbjxiciAvPg0KPGNvZGU+eyRlbWFpbC5wZXJpb2RfdGl0bGV9PC9jb2RlPiAtIFRpdGxlIG9mIHRoZSBjb3Vwb24gcGVyaW9kPGJyIC8+DQo8Y29kZT57JGVtYWlsLmNvdXBvbl9wZXJpb2RfaWR9PC9jb2RlPiAtIFVuaXF1ZSBpZCBvZiB0aGUgY291cG9uIHBlcmlvZDxiciAvPg0KPGNvZGU+eyRlbWFpbC5wcml6ZV90aXRsZX08L2NvZGU+IC0gVGl0bGUgb2YgdGhlIHByaXplPGJyIC8+DQo8Y29kZT57JGVtYWlsLnByaXplX2NvZGV9PC9jb2RlPiAtIENvZGUgb2YgdGhlIHByaXplPGJyIC8+DQo8Y29kZT57JGVtYWlsLm51bWJlcn08L2NvZGU+IC0gVG90YWwgbnVtYmVyIG9mIHRoaXMgcHJpemU8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX3ByaXplX2lkfTwvY29kZT4gLSBVbmlxdWUgaWQgb2YgdGhpcyBwcml6ZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fY3VzdG9tZXJfaWR9PC9jb2RlPiAtIFVuaXF1ZSBpZCBvZiB3aW5uaW5nIGN1c3RvbWVyPGJyIC8+DQo8Y29kZT57JGVtYWlsLmZpcnN0X25hbWV9PC9jb2RlPiAtIEZpcnN0IG5hbWU8YnIgLz4NCjxjb2RlPnskZW1haWwubGFzdF9uYW1lfTwvY29kZT4gLSBMYXN0IG5hbWU8YnIgLz4NCjxjb2RlPnskZW1haWwuZW1haWx9PC9jb2RlPiAtIEVtYWlsPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRhc2hlZF9waG9uZX08L2NvZGU+IC0gUGhvbmUgbnVtYmVyIHdpdGggZGFzaGVzIGV2ZXJ5IDMgZGlnaXRzPGJyIC8+DQo8Y29kZT57JGVtYWlsLnBob25lfTwvY29kZT4gLSBQaG9uZSBudW1iZXIgKHdpdGhvdXQgZGFzaGVzKTxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fY29kZV9pZH08L2NvZGU+IC0gVW5pcXVlIGlkIG9mIHRoZSBjb3Vwb24gY29kZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYl90aW1lc3RhbXB9PC9jb2RlPiAtIFRpbWVzdGFtcCwgd2hlbiB3YXMgdGhlIGNvdXBvbiBjb2RlIHJlZ2lzdGVyZWQ8YnIgLz4NCjxjb2RlPnskZW1haWwuZGFzaGVkX2NvdXBvbl9jb2RlfTwvY29kZT4gLSBDb3Vwb24gY29kZSB3aXRoIGRhc2hlcyBldmVyeSA0IGRpZ2l0czxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fY29kZX08L2NvZGU+IC0gQ291cG9uIGNvZGUgKHdpdGhvdXQgZGFzaGVzKTxiciAvPjxiciAvPg0KDQpJdCBpcyBwb3NzaWJsZSB0byB1c2UgU21hcnR5IG1vZGlmaWVycyBvciBmaWx0ZXJzIGZvciB0aGUgdmFyaWFibGUgaW4gdGhlIGUtbWFpbCBtZXNzYWdlLCBzdWNoIGFzOiA8YnIgLz4NCjxjb2RlPnskZW1haWwuZGJfdGltZXN0YW1wfGRhdGVfZm9ybWF0OiZxdW90OyVkICVCICVZJnF1b3Q7fTwvY29kZT48YnIgLz48YnIgLz4nOwokbGFuZ1sncmVnaXN0ZXJfY291cG9uX2NvZGUnXSA9ICdSZWdpc3RlciBjb3Vwb24gY29kZSc7CiRsYW5nWydmaXJzdF9uYW1lJ10gPSAnRmlyc3QgbmFtZSc7CiRsYW5nWydsYXN0X25hbWUnXSA9ICdMYXN0IG5hbWUnOwokbGFuZ1snZW1haWwnXSA9ICdFLW1haWwnOwokbGFuZ1sncGhvbmUnXSA9ICdUZWxlcGhvbmUgbnVtYmVyJzsKJGxhbmdbJ3Rlcm1zX2FuZF9jb25kaXRpb25zJ10gPSAnVGVybXMgYW5kIENvbmRpdGlvbnMnOwokbGFuZ1sndGVybXNfYW5kX2NvbmRpdGlvbnNfYWdyZWUnXSA9ICfYqNmE2YfYjCDZgtio2YjZhCDZhduMJnp3bmo72qnZhtmFJzsKJGxhbmdbJ25ld3NsZXR0ZXInXSA9ICfYrtio2LHZhtin2YXZhyc7CiRsYW5nWyduZXdzbGV0dGVyX2FncmVlJ10gPSAn2KjZhNmH2Iwg2YXbjCZ6d25qO9iu2YjYp9mH2YUg2K7YqNix2YbYp9mF2Ycg2LHYpyDYr9ix24zYp9mB2Kog2qnZhtmFJzsKJGxhbmdbJ2NvdXBvbl9jb2RlJ10gPSAnQ291cG9uIGNvZGUnOwokbGFuZ1snc19zX2NvdXBvbl9jb2RlX3JlZ2lzdGVyZWQnXSA9ICdEZWFyICVzICVzLCA8YnIgLz48YnIgLz4gWW91ciBjb3Vwb24gY29kZSBoYXMgYmVlbiByZWdpc3RlcmVkLiBJZiB5b3Ugd291bGQgbGlrZSB0byByZWdpc3RlciBhbm90aGVyIGNvdXBvbiBjb2RlLCBwbGVhc2UgZW50ZXIgdGhlIG5leHQgY291cG9uIGNvZGUgYW5kIGFjY2VwdCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMuJzsKJGxhbmdbJ3NfZGVsZXRlX2NvdXBvbl9jb2RlX2Nvb2tpZSddID0gJ1dvdWxkIHlvdSBsaWtlIHVzIHRvIGRlbGV0ZSB0aGUgc2F2ZWQgZGF0YSB0aGF0IHdhcyBlbnRlcmVkIGludG8gdGhlIGZvcm0gb3Igd291bGQgeW91IGxpa2UgdG8gcmVnaXN0ZXIgYSBjb3Vwb24gY29kZSBmb3Igc29tZW9uZSBlbHNlPyA8YnIgLz48YnIgLz4gIENsaWNrIDxhIGhyZWY9IiVzIj5oZXJlPC9hPiB0byBjbGVhciB0aGUgZm9ybSc7CiRsYW5nWydqc19yZXF1aXJlZCddID0gJ1JlcXVpcmVkJzsKJGxhbmdbJ2pzX29wdGlvbmFsJ10gPSAnT3B0aW9uYWwnOwokbGFuZ1snanNfZW1haWwnXSA9ICdFbnRlciBhIHZhbGlkZSBlLW1haWwgYWRkcmVzcyc7CiRsYW5nWydqc19udW1iZXInXSA9ICdPbmx5IGVudGVyIGRpZ2l0cyc7CiRsYW5nWydqc19taW5sZW5ndGgnXSA9ICdFbnRlciB7MH0gZGlnaXRzJzsKJGxhbmdbJ2pzX21pbmxlbmd0aF9tdWx0aXBsZSddID0gJ0VudGVyIHswfSBkaWdpdHMgcGVyIGZpZWxkJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnUGxlYXNlLCBtYWtlIHN1cmUgdGhhdCB1c2VycyB3aG8gbWFuYWdlIFVwQ291cG9uIGFyZSBwcm92aWRlZCB3aXRoICZxdW90O1VwQ291cG9uJnF1b3Q7IHJpZ2h0cy4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1VwQ291cG9uIGlzIHN1Y2Nlc2Z1bGx5IGRlaW5zdGFsbGVkLic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAn2KLbjNinINmF2LfZhdim2YYg2YfYs9iq24zYr9ifJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBkZW5pZWQgKCYjMDM5OyVzJiMwMzk7KSc7CiRsYW5nWydhY2Nlc3NhbGxvd2VkJ10gPSAnQWNjZXNzIGFsbG93ZWQnOwokbGFuZ1snbm90X2FsbG93ZWQnXSA9ICdUaGlzIGlzIG5vdCBhbGxvd2VkJzsKJGxhbmdbJ25vX3NfZ2l2ZW4nXSA9ICdZb3UgZGlkIG5vdCBlbnRlciBhICYjMDM5OyVzJiMwMzk7ICc7CiRsYW5nWydzX25vdGdpdmVuJ10gPSAnJiMwMzk7JXMmIzAzOTsgaXMgbm90IGZpbGxlZCBpbic7CiRsYW5nWydzX3NfYWxyZWFkeWdpdmVuJ10gPSAnJXM6ICYjMDM5OyVzJiMwMzk7IGhhcyBhbHJlYWR5IGJlZW4gZW50ZXJlZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZGF0ZXMnXSA9ICdPbmUgb3IgbW9yZSBkYXRlIGZpZWxkcyBhcmUgaW52YWxpZCc7CiRsYW5nWyd0ZW1wbGF0ZV9leGlzdHMnXSA9ICdUaGlzIHRlbXBsYXRlIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2Vycm9yaW5zZXJ0aW5ndGVtcGxhdGUnXSA9ICdUaGUgZmFjdG9yeSBzZXR0aW5ncyBkZWZhdWx0IHRlbXBsYXRlIGNhbm5vdCBiZSBvcGVuZWQnOwokbGFuZ1snY291cG9uX2FjdGlvbl9taXNzaW5nJ10gPSAnQmVmb3JlICYjMDM5O0NvdXBvbiBQZXJpb2RzJiMwMzk7IGNhbiBiZSBlbnRlcmVkLCBhY3RpdmUgJiMwMzk7Q291cG9uIEFjdGlvbnMmIzAzOTsgc2hvdWxkIGJlIGF2YWlsYWJsZSc7CiRsYW5nWydjb3Vwb25fcGVyaW9kX21pc3NpbmcnXSA9ICdCZWZvcmUgJiMwMzk7UHJpemVzJiMwMzk7IGNhbiBiZSBlbnRlcmVkLCBhY3RpdmUgJiMwMzk7Q291cG9uIFBlcmlvZHMmIzAzOTsgc2hvdWxkIGJlIGF2YWlsYWJsZSc7CiRsYW5nWydzX3NfY291cG9ucGVyaW9kX21pc21hdGNoJ10gPSAnVGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZSBvZiB0aGUgJiMwMzk7Q291cG9uIFBlcmlvZCYjMDM5OyBoYXMgdG8gYmUgYmV0d2VlbiAlcyBhbmQgJXMnOwokbGFuZ1snbmVlZF9yZWdpc3RlcmVkX2N1c3RvbWVyJ10gPSAnVG8gZHJhdyBhIGNvdXBvbiBmb3IgdGhpcyBwZXJpb2QgKG1vcmUpIHJlZ2lzdGVyZWQgY3VzdG9tZXJzIGFyZSBuZWVkZWQnOwokbGFuZ1snYWN0aW9uX3MnXSA9ICdDb3Vwb24gQWN0aW9uJzsKJGxhbmdbJ2FjdGlvbl9wJ10gPSAnQ291cG9uIEFjdGlvbnMnOwokbGFuZ1sncGVyaW9kX3MnXSA9ICdDb3Vwb24gUGVyaW9kJzsKJGxhbmdbJ3BlcmlvZF9wJ10gPSAnQ291cG9uIFBlcmlvZHMnOwokbGFuZ1sncHJpemVfcyddID0gJ1ByaXplJzsKJGxhbmdbJ3ByaXplX3AnXSA9ICdQcml6ZXMnOwokbGFuZ1snd2lubmVyX3MnXSA9ICdXaW5uZXInOwokbGFuZ1snd2lubmVyX3AnXSA9ICdXaW5uZXJzJzsKJGxhbmdbJ3N0YXRpc3RpY3NfcyddID0gJ1N0YXRpc3RpYyc7CiRsYW5nWydzdGF0aXN0aWNzX3AnXSA9ICdTdGF0aXN0aWNzJzsKJGxhbmdbJ3RlbXBsYXRlc19zJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1sndGVtcGxhdGVzX3AnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1sncHJlZmVyZW5jZXNfcyddID0gJ1ByZWZlcmVuY2UnOwokbGFuZ1sncHJlZmVyZW5jZXNfcCddID0gJ1ByZWZlcmVuY2VzJzsKJGxhbmdbJ2FkZCddID0gJ9in2LbYp9mB2YcnOwokbGFuZ1snZWRpdCddID0gJ9mI24zYsdin24zYtCc7CiRsYW5nWydkZWxldGUnXSA9ICfYrdiw2YEnOwokbGFuZ1snc3VibWl0J10gPSAn2KvYqNiqJzsKJGxhbmdbJ2NhbmNlbCddID0gJ9in2YbYtdix2KfZgSc7CiRsYW5nWydhcHBseSddID0gJ9in2KzYsdinJzsKJGxhbmdbJ2ZhY3RvcnknXSA9ICdGYWN0b3J5IHNldHRpbmdzJzsKJGxhbmdbJ2RlbGV0ZV9zZWxlY3RlZF9pdGVtcyddID0gJ9it2LDZgSDZhdmI2KfYsdivINin2YbYqtiu2KfYqCDYtNiv2YcnOwokbGFuZ1snc19hZGQnXSA9ICdBZGQgJXMnOwokbGFuZ1snc19lZGl0J10gPSAnRWRpdCAlcyc7CiRsYW5nWydzX2RlbGV0ZSddID0gJ0RlbGV0ZSAlcyc7CiRsYW5nWydzX2NoYW5nZV9zdGF0dXMnXSA9ICdDaGFuZ2Ugc3RhdHVzICVzJzsKJGxhbmdbJ3NfY2hhbmdlX2RlZmF1bHQnXSA9ICdDaGFuZ2UgZGVmYXVsdCAlcyc7CiRsYW5nWydzX2FkZGVkJ10gPSAnJXMgYWRkZWQnOwokbGFuZ1snc19lZGl0ZWQnXSA9ICclcyBlZGl0ZWQnOwokbGFuZ1snc19kZWxldGVkJ10gPSAnJXMgZGVsZXRlZCc7CiRsYW5nWydzX2NoYW5nZWRfc3RhdHVzJ10gPSAnJXMgc3RhdHVzIGNoYW5nZWQnOwokbGFuZ1snc19jaGFuZ2VkX2RlZmF1bHQnXSA9ICclcyBkZWZhdWx0IGNoYW5nZWQnOwokbGFuZ1snaGVscCddID0gJzxoMj5Eb2N1bWVudGF0aW9uPC9oMj48YnIgLz4NCg0KVGhlIFVwQ291cG9uIG1vZHVsZSBoYXMgYmVlbiBkZXZlbG9wZWQgZm9yIGEgc2hvcCBvd25lcnMgYXNzb2NpYXRpb24uIEVhY2ggeWVhciB0aGUgYXNzb2NpYXRpb24gb3JnYW5pemVzIGEgbG90dGVyeSBhbW9uZ3N0IGl0cyBjdXN0b21lcnMuIFdoZW4gb25lIHNwZW5kcyBhbiB4IGFtb3VudCBpbiBhIHBhcnRpY2lwYXRpbmcgc2hvcCwgb25lIHJlY2VpdmVzIGEgdm91Y2hlciB3aXRoIGEgJiMwMzk7Q291cG9uIENvZGUmIzAzOTsuIA0KDQpUbyBqb2luIHRoZSBsb3R0ZXJ5LCB0aGUgY3VzdG9tZXIgaGFzIHRvIGVudGVyIHRoZSAmIzAzOTtDb3Vwb24gQ29kZSYjMDM5OyBvbiB0aGUgYXNzb3NpYXRpb24td2Vic2l0ZSwgdG9nZXRoZXIgd2l0aCBvdGhlciBkZXRhaWxzLCBzdWNoIGFzIG5hbWUgYW5kIGFkZHJlc3MuIDxiciAvPjxiciAvPg0KDQo8aDI+VGhlIGFkbWluIGludGVyZmFjZSBvZiB0aGlzIG1vZHVsZSBoYXMgdmFyaW91cyBmdW5jdGlvbmFsaXRpZXM6PC9oMj48YnIgLz4NCg0KPGI+Q291cG9uIEFjdGlvbnM8L2I+IC0gdGFiIDxiciAvPg0KDQpIZXJlIHlvdSBjYW4gYWRkIHNldmVyYWwgbG90dGVyaWVzLiA8YnIgLz4NCg0KU3VjaCBhcyBhIHN1bW1lciBsb3R0ZXJ5IG9yIGEgd2ludGVyIGxvdHRlcnkuIEVhY2ggbG90dGVyeSBuZWVkcyB0byBoYXZlIGEgdGl0bGUsIGFsaWFzLCBkZXNjcmlwdGlvbiwgc3RhcnRkYXRlLCBlbmRkYXRlIGFuZCBzdGF0dXMuIDxiciAvPjxiciAvPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBUaGUgc3RhcnRkYXRlIG9mIHRoZSAmIzAzOTtDb3Vwb24gQWN0aW9uJiMwMzk7IGFsd2F5cyBoYXMgdG8gYmUgYW4gZWFybGllciBkYXRlIHRoYW4gdGhlIGVuZGRhdGUuIDxiciAvPjxiciAvPg0KDQo8Yj5Db3Vwb24gUGVyaW9kczwvYj4gLSB0YWIgPGJyIC8+DQoNCkhlcmUgdGhlIHBlcmlvZHMgaW4gd2hpY2ggdGhlIGRyYXcocykgdGFrZShzKSBwbGFjZSBjYW4gYmUgYWRkZWQuIDxiciAvPg0KDQpUaGUgc3VtbWVyIGxvdHRlcnkgY291bGQgZm9yIGluc3RhbmNlIGhhdmUgZm91ciB3ZWVrbHkgZHJhd3MgYW5kIGEgZmluYWwgZHJhdyBhdCB0aGUgZW5kIG9mIHRoZSBwZXJpb2QuIEVhY2ggJiMwMzk7IENvdXBvbiBQZXJpb2QmIzAzOTsgbmVlZHMgdG8gaGF2ZSBhIGNvdXBvbl9hY3RpZSAoYXMgc3VibWl0dGVkIHVuZGVyICYjMDM5OyBDb3Vwb24gQWN0aW9ucyYjMDM5OyksIHRpdGxlLCBzdGFydGRhdGUsIGVuZGRhdGUsIEZpbmFsIGRyYXcgKHllcy9ubykgYW5kIHN0YXR1cy4gPGJyIC8+PGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IFRoZSBzdGFydGRhdGUgb2YgdGhlICYjMDM5O0NvdXBvbiBQZXJpb2QmIzAzOTsgYWx3YXlzIGhhcyB0byBiZSBhbiBlYXJsaWVyIGRhdGUgdGhhbiB0aGUgZW5kZGF0ZSBhbmQgaGFzIHRvIG9jY3VyIHdpdGhpbiB0aGUgc3RhcnQtIGFuZCBlbmRkYXRlIG9mIHRoZSAmIzAzOTsgQ291cG9uIEFjdGlvbiYjMDM5Oy48YnIgLz48YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVXN1YWxseSBhbGwgY3VzdG9tZXJzIHBhcnRpY2lwYXRpbmcgaW4gdGhlIGxvdHRlcnkgaGF2ZSBhIGNoYW5jZSBvbiB3aW5uaW5nIHRoZSBmaW5hbCBkcmF3LiBUaGVyZWZvcmUgdGhlIHBlcmlvZCBvZiB0aGUgJiMwMzk7RmluYWwgZHJhdyYjMDM5OyB1c3VhbGx5IHN0YXJ0cyBhdCB0aGUgc3RhcnRkYXRlIG9mIHRoZSAmIzAzOTtDb3Vwb24gQWN0aW9uJiMwMzk7IHVwIGFuZCB1bnRpbCB0aGUgZW5kZGF0ZSBvZiB0aGUgJiMwMzk7Q291cG9uIEFjdGlvbiYjMDM5Oy4gIDxiciAvPjxiciAvPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPlRpcDwvYj48L2ZvbnQ+IE1ha2Ugc3VyZSB0aGF0IHRoZSBzdGFydGRhdGUgc3RhcnRzIGF0IDAwOjAwOjAwIGFuZCBlbmRzIGF0IDIzOjU5OjU5LiBJbiBkb2luZyBzbywgYSBsb3R0ZXJ5IG9yIHBlcmlvZCBydW5zIGZvciAyNCBob3VycyAoYW4gZW50aXJlIGNhbGVuZGVyIGRheSkuPGJyIC8+PGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+VGlwPC9iPjwvZm9udD4gVGhlICYjMDM5O0NvdXBvbiBQZXJpb2QmIzAzOTsgaXMgYnkgZGVmYXVsdCBzb3J0ZWQgYnkgZW5kZGF0ZS4gQnkgYWRqdXN0aW5nIHRoZSBlbmRkYXRlLXRpbWUgd2l0aCBqdXN0IG9uZSBzZWNvbmQsIHRoZSBvcmRlciBpcyBhZGp1c3RlZCBhcyB3ZWxsLiBJdCB3b3VsZCBiZSBzdHJhbmdlIGlmIC0gYXQgdGhlIGZyb250ZW5kIC0gdGhlIEZpbmFsIGRyYXcgaXMgc2hvd24gcHJpb3IgdG8gdGhlIGxhc3QgZHJhdyhub3QgdGhlIEZpbmFsIGRyYXcpLiBUaGVyZWZvcmUgaXQgaXMgYWR2aXNlZCB0byAtIGlmIHRoZSBGaW5hbCBkcmF3IGhhcyB0aGUgc2FtZSBlbmRkYXRlIGFzIHRoZSBsYXN0IChub24tZmluYWwpIGRyYXcgLSBhZGp1c3QgdGhlIGVuZGRhdGUtdGltZSBvZiBvbmUgb2YgdGhlbSwgaW4gb3JkZXIgdG8gaGF2ZSB0byByaWdodCBvcmRlciBzaG93biBhdCB0aGUgZnJvbnRlbmQuPGJyIC8+PGJyIC8+DQoNCjxiPlByaXplczwvYj4gLSB0YWIgPGJyIC8+DQoNClByaXplcyBjYW4gYmUgY29ubmVjdGVkIHRvIGVhY2ggJiMwMzk7Q291cG9uIEFjdGlvbiYjMDM5OyBvciAmIzAzOTtDb3Vwb24gUGVyaW9kJiMwMzk7LiBXaGVuIGFkZGluZyBhIHByaXplLCBDb3Vwb24gQ29kZSwgQ291cG9uIEFjdGlvbiwgUHJpemUgY29kZSwgdGl0bGUsIGRlc2NyaXB0aW9uLCBudW1iZXIgYW5kIHN0YXR1cyBoYXZlIHRvIGJlIGVudGVyZWQuIDxiciAvPjxiciAvPg0KDQo8Yj5XaW5uZXJzPC9iPiAtIHRhYiA8YnIgLz4NCg0KT3V0IG9mIHRoZSByZWdpc3RlcmVkIGNvdXBvbiBjb2Rlcywgb25lIG9yIG1vcmUgd2lubmVycyBjYW4gYmUgZHJhd24uIEFmdGVyIHNlbGVjdGluZyAmIzAzOTtDb3Vwb24gQWN0aW9uJiMwMzk7LCAmIzAzOTtDb3Vwb24gUGVyaW9kJiMwMzk7IGFuZCBwcml6ZSwgb25lIGNhbiBjbGljayBvbiB0aGUgJnF1b3Q7IERyYXcgY291cG9uJiMwMzk7IGJ1dHRvbi4gVGhlIHdpbm5lciBpcyByYW5kb21seSBkcmF3biBmcm9tIHRoZSBkYXRhYmFzZSB3aXRoIHJlZ2lzdGVyZWQgY291cG9uIGNvZGVzIGFuZCBpcyBzaG93bi4gPGJyIC8+PGJyIC8+DQoNCjxiPlN0YXRpc3RpY3M8L2I+IC0gdGFiIDxiciAvPg0KDQpXaGVuIHJlZ2lzdGVyaW5nIGEgY291cG9uIGNvZGUsIGEgdGltZXN0YW1wIGlzIGdlbmVyYXRlZCBhbmQgc2F2ZWQuIEJ5IHVzaW5nIHRoaXMgdGltZXN0YW1wIHRvZ2V0aGVyIHdpdGggdGhlIHN0YXJ0LSBhbmQgZW5kZGF0ZSBvZiBhICYjMDM5OyBDb3Vwb24gQWN0aW9uJiMwMzk7IGFuZCAmIzAzOTtDb3Vwb24gUGVyaW9kIHRoZSBzdGF0aXN0aWNzIGFyZSBjcmVhdGVkLiA8YnIgLz48YnIgLz4NCg0KPGI+VGVtcGxhdGVzPC9iPiAtIHRhYiA8YnIgLz4NCg0KVGhlIFVwQ291cG9uIG1vZHVsZSBoYXMgdmFyaW91cyB0ZW1wbGF0ZXMsIHN1Y2ggYXMgdGhlIHRlbXBsYXRlIFJlZ2lzdHJhdGlvbiwgV2lubmVyIGFuZCBQcml6ZXMuIFRoZSB0ZW1wbGF0ZXMgYXJlIHVzZWQgZm9yIHRoZSBmcm9udGVuZC4gV2hlbiBhZGRpbmcgYSB0ZW1wbGF0ZXMsIGEgbmFtZSwgdGVtcGxhdGUgdHlwZSBhbmQgdGVtcGxhdGUgY29kZSBjYW4gYmUgZW50ZXJlZC4gPGJyIC8+PGJyIC8+DQoNCkJ5IHVzaW5nIHRoZSBmYWN0b3J5IHNldHRpbmdzIGJ1dHRvbiwgdGhlIHRlbXBsYXRlIGNvZGUgZmllbGQgYXV0b21hdGljYWxseSBpcyBzZXQgdG8gdXNlIHRoZSBkZWZhdWx0IHRlbXBsYXRlLiA8YnIgLz48YnIgLz4NCg0KPGI+UHJlZmVyZW5jZXM8L2I+IC0gdGFiIDxiciAvPg0KDQpBIGN1c3RvbWVyIHdobyBoYXMgcmVnaXN0ZXJlZCBoaXMgJiMwMzk7Q291cG9uIENvZGUmIzAzOTssIHdpbGwgcmVjZWl2ZSBhIGNvbmZpcm1hdGlvbiBieSBlLW1haWwsIGlmIGFsbCBlLW1haWwgcHJlZmVyZW5jZXMgYXJlIGNvcnJlY2x0eSBjb21wbGV0ZWQuIDxiciAvPjxiciAvPg0KDQo8aDI+U3VwcG9ydDwvaDI+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IocyksIGFybm91ZCBldCBhbGwgY2FuIHNvbWV0aW1lcyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+bGljZW5zZTwvYT4gZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDI+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMj4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAxMSwgQXJub3VkIHZhbiBTdXN0ZXJlbiA8YSBocmVmPSJtYWlsdG86YXJub3VkQHVwc2VydmljZS5ubCI+PGFybm91ZEB1cHNlcnZpY2Uubmw+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+DQo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUw0KTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIA0Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+DQo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KT3IgcmVhZCBpdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPm9ubGluZTwvYT48L3A+DQoNCjxiciAvPg0KJzsKJGxhbmdbJ2hlbHBfYWN0aW9uJ10gPSAnPGJyIC8+DQo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSYjMDM5O3Nob3dfcmVnaXN0ZXImIzAzOTt9PC9jb2RlPiAtIFNob3cgdGhlIHJlZ2lzdHJhdGlvbiBwYWdlLiA8YnIgLz4NCjxjb2RlPntVcENvdXBvbiBhY3Rpb249JiMwMzk7c2hvd19wcml6ZSYjMDM5O308L2NvZGU+IC0gU2hvdyB0aGUgcHJpemUgcGFnZS4gPGJyIC8+DQo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSYjMDM5O3Nob3dfd2lubmVyJiMwMzk7fTwvY29kZT4gLSBTaG93IHRoZSB3aW5uZXIgcGFnZS4gPGJyIC8+PGJyIC8+DQoNCjxmb250IGNvbG9yPSNGRjAwMDA+PGI+ITwvYj48L2ZvbnQ+IElmIG5vIGFjdGlvbiBpcyBzcGVjaWZpZWQsIGEgd2FybmluZyB3aWxsIGJlIHNob3duLiA8YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gRm9yIHRoZSAmIzAzOTtzaG93X3JlZ2lzdGVyJiMwMzk7IGFjdGlvbiBpdCYjMDM5O3MgcG9zc2libGUgdG8gY2hlY2sgZmllbGQgdmFsdWVzIHZpYSBKYXZhU2NyaXB0LiBUb2RvIHNvIGJlIHN1cmUgdG8gbG9hZCBqcXVlcnkudmFsaWRhdGUuanMgeW91IGNhbiBmaW5kIHRoaXMgZmlsZSBpbnRvIHRoZSBtb2R1bGVzL1VwQ291cG9uL2pzIGZvbGRlci48YnIgLz48YnIgLz4NCg0KPGI+KiBCZWZvcmUgdGhlIGNvdXBvbiBhY3Rpb24gdGFrZXMgcGxhY2UgdGhlIHVwY291cG9uX2NvZGUgZGF0YWJhc2UgbXVzdCBiZSBmaWxsZWQgd2l0aCBjb2Rlcy4gVGhlIHdlYmRldmVsb3BlciBzaG91bGQgd3JpdGUgYSBxdWVyeSB0byBzZXQgY291cG9uX3ByaXplX2lkIHRvICYjMDM5OzAmIzAzOTsgYW5kIGNvdXBvbl9jb2RlIHRvIGEgMTYgZGlnaXQgY29kZS4gRm9yIGV4YW1wbGU6IElOU0VSVCBJTlRPIGNtc19tb2R1bGVfdXBjb3Vwb25fY29kZSBWQUxVRVMgKCYjMDM5OyYjMDM5OywgJiMwMzk7MCYjMDM5OywgJiMwMzk7JiMwMzk7LCAmIzAzOTswMDAwMDAwMDAwMDAwMDAwJiMwMzk7LCAmIzAzOTsmIzAzOTspPC9iPjxiciAvPg0KDQo8YnIgLz4NCic7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPGJyIC8+DQo8Y29kZT57VXBDb3Vwb24gYWN0aW9uPSYjMDM5O3Nob3dfcmVnaXN0ZXImIzAzOTsgdGVtcGxhdGU9JiMwMzk7bmFtZV9vZl9yZWdpc3Rlcl90ZW1wbGF0ZSYjMDM5O308L2NvZGU+IDxiciAvPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyB0ZW1wbGF0ZSBpcyBzcGVjaWZpZWQsIG9yIHRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSBpcyB1bmtub3duLCB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSB3aWxsIGJlIHVzZWQuIDwvYnIgPjwvYnIgPg0KDQo8Zm9udCBjb2xvcj0jRkYwMDAwPjxiPiE8L2I+PC9mb250PiBJZiBubyBzdGFuZGFyZCB0ZW1wbGF0ZSBjYW4gYmUgZm91bmQsIHRoZSBkZWZhdWx0IHRlbXBsYXRlIChmYWN0b3J5IHNldHRpbmdzKSBzaGFsbCBiZSB1c2VkLiA8YnIgLz48YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVGhlIGF2YWlsYWJsZSB0ZW1wbGF0ZXMgY2FuIGJlIGZvdW5kIHVuZGVyIHRoZSAmIzAzOTtUZW1wbGF0ZXMmIzAzOTsgIHRhYi4gPGJyIC8+DQoNCjxiciAvPic7CiRsYW5nWydoZWxwX2NvdXBvbl9hY3Rpb25faWQnXSA9ICc8YnIgLz4NCjxjb2RlPntVcENvdXBvbiBhY3Rpb249JiMwMzk7c2hvd19wcml6ZSYjMDM5OyBjb3Vwb25fYWN0aW9uX2lkPSYjMDM5OzEmIzAzOTt9PC9jb2RlPiAtIFNob3cgYWxsIHByaXplcyBiZWxvbmdpbmcgdG8gY291cG9uX2FjdGlvbl9pZCAmIzAzOTsxJiMwMzk7LiA8YnIgLz48YnIgLz4NCg0KPGZvbnQgY29sb3I9I0ZGMDAwMD48Yj4hPC9iPjwvZm9udD4gVGhlICYjMDM5O2NvdXBvbl9hY3Rpb25faWQmIzAzOTsgY2FuIGJlIGZvdW5kIHVuZGVyICYjMDM5O0NvdXBvbiBBY3Rpb25zJiMwMzk7IHRhYi4gSXQgaXMgc2hvd24gaW4gZnJvbnQgb2YgdGhlIHRpdGxlIG9mIGVhY2ggc3BlY2lmaWMgYWN0aW9uLiAmIzAzOTtDb3Vwb24gQWN0aW9ucyYjMDM5OyB3aGljaCBhcmUgc2V0IHRvIGluYWN0aXZlIGFyZSBub3Qgc2hvd24uDQoNCg0KPGJyIC8+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbkFjdGlvbkFkZGVkJ10gPSAnU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBhZGRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25BY3Rpb25BZGRlZCddID0gJzxwPnggU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBhZGRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25BY3Rpb25FZGl0ZWQnXSA9ICdTZW50IHdoZW4gYW4gYWN0aW9uIGlzIGVkaXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25BY3Rpb25FZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYW4gYWN0aW9uIGlzIGVkaXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25BY3Rpb25EZWxldGVkJ10gPSAnU2VudCB3aGVuIGFuIGFjdGlvbiBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbkFjdGlvbkRlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYW4gYWN0aW9uIGlzIGRlbGV0ZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QZXJpb2RBZGRlZCddID0gJ1NlbnQgd2hlbiBhIHBlcmlvZCBpcyBhZGRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QZXJpb2RBZGRlZCddID0gJzxwPnggU2VudCB3aGVuIGEgcGVyaW9kIGlzIGFkZGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblBlcmlvZEVkaXRlZCddID0gJ1NlbnQgd2hlbiBhIHBlcmlvZCBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kRWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgcGVyaW9kIGlzIGVkaXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QZXJpb2REZWxldGVkJ10gPSAnU2VudCB3aGVuIGEgcGVyaW9kIGlzIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kRGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIHBlcmlvZCBpcyBkZWxldGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJpemVBZGRlZCddID0gJ1NlbnQgd2hlbiBhIHByaXplIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplQWRkZWQnXSA9ICc8cD54IFNlbnQgd2hlbiBhIHByaXplIGlzIGFkZGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblByaXplRWRpdGVkJ10gPSAnU2VudCB3aGVuIGEgcHJpemUgaXMgZWRpdGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplRWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgcHJpemUgaXMgZWRpdGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblByaXplRGVsZXRlZCddID0gJ1NlbnQgd2hlbiBhIHByaXplIGlzIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJpemVEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgcHJpemUgaXMgZGVsZXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbldpbm5lckFkZGVkJ10gPSAnU2VudCB3aGVuIGEgd2lubmVyIGlzIGFkZGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbldpbm5lckFkZGVkJ10gPSAnPHA+eCBTZW50IHdoZW4gYSB3aW5uZXIgaXMgYWRkZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uV2lubmVyRWRpdGVkJ10gPSAnU2VudCB3aGVuIGEgd2lubmVyIGlzIGVkaXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25XaW5uZXJFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSB3aW5uZXIgaXMgZWRpdGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbldpbm5lckRlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSB3aW5uZXIgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25XaW5uZXJEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgd2lubmVyIGlzIGRlbGV0ZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25UZW1wbGF0ZUFkZGVkJ10gPSAnU2VudCB3aGVuIGEgdGVtcGxhdGUgaXMgYWRkZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uVGVtcGxhdGVBZGRlZCddID0gJzxwPnggU2VudCB3aGVuIGEgdGVtcGxhdGUgaXMgYWRkZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uVGVtcGxhdGVFZGl0ZWQnXSA9ICdTZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBlZGl0ZWQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uVGVtcGxhdGVFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBlZGl0ZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uVGVtcGxhdGVEZWxldGVkJ10gPSAnU2VudCB3aGVuIGEgdGVtcGxhdGUgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25UZW1wbGF0ZURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSB0ZW1wbGF0ZSBpcyBkZWxldGVkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZUFkZGVkJ10gPSAnU2VudCB3aGVuIGEgcHJlZmVyZW5jZSBpcyBhZGRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QcmVmZXJlbmNlQWRkZWQnXSA9ICc8cD54IFNlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgYWRkZWQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZUVkaXRlZCddID0gJ1NlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgZWRpdGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByZWZlcmVuY2VFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBwcmVmZXJlbmNlIGlzIGVkaXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QcmVmZXJlbmNlRGVsZXRlZCddID0gJ1NlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QcmVmZXJlbmNlRGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIHByZWZlcmVuY2UgaXMgZGVsZXRlZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTkyOTI0NjI4MC4xMzE4Nzk3NzA0LjEzMTg3OTc3MDQuMTMxODc5NzcwNC4xJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMS4xMC4xMzE4Nzk3NzA0JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzE4Nzk3NzA0LjEuMS51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPWNtcyBtYWRlIHNpbXBsZSc7CiRsYW5nWydxY2EnXSA9ICdQMC0xOTE4MDg1OTU2LTEzMTg3OTc3MDQwOTQnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1VwQ291cG9uIE1vZHVsZSAnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0VlbiBtb2R1bGUgd2Fhcm1lZSBlZW4gb25saW5lIGxvdHRlcmlqLCBjb3Vwb24gY29kZSByZWdpc3RyYXRpZSBzeXN0ZWVtIG9wZ2V6ZXQga2FuIHdvcmRlbi4nOwokbGFuZ1snYXBwcm92ZV9zdGF0dXMnXSA9ICdaZXQgZGUgc3RhdHVzIG9wICYjMDM5O0FjdGllZiYjMDM5Oyc7CiRsYW5nWydyZXZlcnRfc3RhdHVzJ10gPSAnWmV0IGRlIHN0YXR1cyBvcCAmIzAzOTtJbmFjdGllZiYjMDM5Oyc7CiRsYW5nWydhcHByb3ZlX2RlZmF1bHQnXSA9ICdaZXQgZGUgc3RhbmRhYXJkIG9wICYjMDM5O0FjdGllZiYjMDM5Oyc7CiRsYW5nWydyZXZlcnRfZGVmYXVsdCddID0gJ1pldCBkZSBzdGFuZGFhcmQgb3AgJiMwMzk7SW5hY3RpZWYmIzAzOTsnOwokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aWVmJzsKJGxhbmdbJ2luYWN0aXZlJ10gPSAnSW5hY3RpZWYnOwokbGFuZ1sneWVzJ10gPSAnSmEnOwokbGFuZ1snbm8nXSA9ICdOZWUnOwokbGFuZ1sndGl0bGUnXSA9ICdUaXRlbCc7CiRsYW5nWydhbGlhcyddID0gJ0FsaWFzICc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ09tc2NocmlqdmluZyc7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnU3RhcnRkYXR1bSc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0VpbmRkYXR1bSc7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMgJzsKJGxhbmdbJ3NlbGVjdCddID0gJ1NlbGVjdGVlcic7CiRsYW5nWydhY3Rpb24nXSA9ICdDb3Vwb24gYWN0aWUnOwokbGFuZ1snaXNfZmluYWwnXSA9ICdJcyBmaW5hbGU/JzsKJGxhbmdbJ3BlcmlvZCddID0gJ0NvdXBvbiBwZXJpb2RlJzsKJGxhbmdbJ3ByaXplX2NvZGUnXSA9ICdQcmlqcyBjb2RlJzsKJGxhbmdbJ251bWJlciddID0gJ0FhbnRhbCc7CiRsYW5nWyd0b3RhbF9udW1iZXInXSA9ICdUb3RhYWwgYWFudGFsJzsKJGxhbmdbJ2ZyZWVfbnVtYmVyJ10gPSAnQmVzY2hpa2JhYXInOwokbGFuZ1snZ2l2ZW5fbnVtYmVyJ10gPSAnVmVybG9vdCc7CiRsYW5nWydhY3Rpb25fcGVyaW9kJ10gPSAnQ291cG9uIEFjdGllIC8gQ291cG9uIFBlcmlvZGUnOwokbGFuZ1snZHJhd19jb3Vwb24nXSA9ICdUcmVrIGxvdCc7CiRsYW5nWyd3aXRoZHJhd19jb3Vwb24nXSA9ICdUcmVrIGxvdCBpbic7CiRsYW5nWydyZWdpc3RyYXRpb25zJ10gPSAnQWFubWVsZGluZ2VuJzsKJGxhbmdbJ25hbWUnXSA9ICdOYWFtJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdTdGFuZGFhcmQnOwokbGFuZ1sndGVtcGxhdGVfdHlwZSddID0gJ1NqYWJsb29uIHR5cGUnOwokbGFuZ1sndGVtcGxhdGVfcmVnaXN0ZXInXSA9ICdSZWdpc3RyZXJlbiBzamFibG9vbic7CiRsYW5nWyd0ZW1wbGF0ZV93aW5uZXInXSA9ICdXaW5uYWFyIHNqYWJsb29uJzsKJGxhbmdbJ3RlbXBsYXRlX3ByaXplJ10gPSAnUHJpanplbiBzamFibG9vbic7CiRsYW5nWyd0ZW1wbGF0ZV9jb2RlJ10gPSAnU2phYmxvb24gY29kZSc7CiRsYW5nWydwcmVmZXJlbmNlc191bmRlcmNvbnN0cnVjdGlvbiddID0gJ09wIGRpdCBtb21lbnQgd29yZGVuIGRlIHZvb3JrZXVyZW4gbm9nIG5pZXQgdG9lZ2VwYXN0LCBkZSBhZG1pbiBpbnRlcmZhY2Ugc2xhYXQgZGUgZ2VnZXZlbnMgd2VsIG9wLic7CiRsYW5nWydwX3NlY3Rpb25fZW1haWxfcmVnaXN0ZXJlZF9jdXN0b21lciddID0gJ0UtbWFpbCBrbGFudCBuYSBpbnZ1bGxlbiBjb3Vwb24gY29kZT8nOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3RydWUnXSA9ICdPcCBkaXQgbW9tZW50IHdvcmRlbiBlciBlLW1haWxzIHVpdGdlc3R1dXJkLCBhbGxlIFVwQ291cG9uIHZvb3JrZXVyZW4gemlqbiBjb3JyZWN0IGluZ2V2dWxkLic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfZmFsc2UnXSA9ICdPcCBkaXQgbW9tZW50IHdvcmRlbiBlciA8dT5nZWVuPC91PiBlLW1haWxzIHVpdGdlc3R1dXJkLiBOb2cgbmlldCBhbGxlIFVwQ291cG9uIHZvb3JrZXVyZW4gemlqbiBjb3JyZWN0IGluZ2V2dWxkLic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfY2hlY2snXSA9ICdKYSBpcyBhYW4sIG5lZSBpcyB1aXQnOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3N1YmplY3QnXSA9ICdUaXRlbCB2YW4gZS1tYWlsIGJlcmljaHQnOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX3N1YmplY3RfZGVmYXVsdCddID0gJ0JlZGFua3Qgdm9vciBoZXQgcmVnaXN0cmVyZW4nOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfZW1haWwnXSA9ICdFLW1haWwgYWRyZXMgemVuZGVyJzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsX2hlbHAnXSA9ICdMZXQgb3AhIEJpaiBzb21taWdlIHByb3ZpZGVycyBtYWcgYWxsZWVuIGVlbiBlLW1haWwgYWRyZXMgd29yZGVuIGdlYnJ1aWt0IGRpZSAgb3ZlcmVlbmtvbXQgbWV0IGRlIGRvbWVpbm5hYW0gZGllIGdlYnJ1aWt0IHdvcmR0Lic7CiRsYW5nWydwX2VtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19uYW1lJ10gPSAnTmFhbSB2YW4gZGUgemVuZGVyJzsKJGxhbmdbJ3BfZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlJ10gPSAnRS1tYWlsIChnZXJlZ2lzdHJlZXJkZSBnZWJydWlrZXIpIGJlcmljaHQnOwokbGFuZ1snZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnMnXSA9ICdXZWxrZSB2YXJpYWJlbGUga3VubmVuIGVyIGluIGhldCBFLW1haWwgKGdlcmVnaXN0cmVlcmRlIGdlYnJ1aWtlcikgYmVyaWNodCBnZWJydWlrdCB3b3JkZW4/JzsKJGxhbmdbJ2VtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV92YXJzX2xpc3QnXSA9ICc8Y29kZT57JGVtYWlsLmZpcnN0X25hbWV9PC9jb2RlPiAtIFZvb3JuYWFtPGJyIC8+DQo8Y29kZT57JGVtYWlsLmxhc3RfbmFtZX08L2NvZGU+IC0gQWNodGVybmFhbTxiciAvPg0KPGNvZGU+eyRlbWFpbC5lbWFpbH08L2NvZGU+IC0gRS1tYWlsPGJyIC8+DQo8Y29kZT57JGVtYWlsLnBob25lfTwvY29kZT4gLSBUZWxlZm9vbm51bW1lcjxiciAvPg0KPGNvZGU+eyRlbWFpbC5uZXdzbGV0dGVyfTwvY29kZT4gLSAgTmlldXdzYnJpZWYgMCA9IG5lZSAxID0gamE8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIHpvbmRlciBzdHJlZXBqZXM8YnIgLz4NCjxjb2RlPnskZW1haWwuZGFzaGVkX2NvdXBvbl9jb2RlfTwvY29kZT4gLSBDb3Vwb24gY29kZSBtZXQgc3RyZWVwamVzPGJyIC8+DQo8Y29kZT57JGVtYWlsLnRpbWVzdGFtcH08L2NvZGU+IC0gVGlqZHNzdGVtcGVsIGluIHVuaXggZm9ybWFhdDxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYl90aW1lc3RhbXB9PC9jb2RlPiAtIFRpamRzc3RlbXBlbCBpbiBkYXRhYmFzZSBmb3JtYWF0PGJyIC8+PGJyIC8+DQoNCkhldCBpcyBtb2dlbGlqayBvbSBvcCBkZSB2YXJpYWJlbGUgaW4gaGV0IEUtbWFpbCBiZXJpY2h0IFNtYXJ0eSBtb2RpZmllcnMgb2YgZmlsdGVycyB0b2UgdGUgcGFzc2VuIGFsczogPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRiX3RpbWVzdGFtcHxkYXRlX2Zvcm1hdDomcXVvdDslZCAlQiAlWSZxdW90O308L2NvZGU+PGJyIC8+PGJyIC8+DQonOwokbGFuZ1sncF9lbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyJ10gPSAnRS1tYWlsICh3aW5uZW5kZSBnZWJydWlrZXIpIGJlcmljaHQnOwokbGFuZ1snZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcl92YXJzJ10gPSAnV2Vsa2UgdmFyaWFiZWxlIGt1bm5lbiBlciBpbiBoZXQgRS1tYWlsICh3aW5uZW5kZSBnZWJydWlrZXIpIGJlcmljaHQgZ2VicnVpa3Qgd29yZGVuPyc7CiRsYW5nWydlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnNfbGlzdCddID0gJzxjb2RlPnskZW1haWwuYWN0aW9uX3RpdGxlfTwvY29kZT4gLSBUaXRlbCB2YW4gZGUgY291cG9uIGFjdGllPGJyIC8+DQo8Y29kZT57JGVtYWlsLmNvdXBvbl9hY3Rpb25faWR9PC9jb2RlPiAtIFVuaWVrIGlkIHZhbiBkZSBjb3Vwb24gYWN0aWU8YnIgLz4NCjxjb2RlPnskZW1haWwucGVyaW9kX3RpdGxlfTwvY29kZT4gLSBUaXRlbCB2YW4gZGUgY291cG9uIHBlcmlvZGU8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX3BlcmlvZF9pZH08L2NvZGU+IC0gVW5pZWsgaWQgdmFuIGRlIGNvdXBvbiBwZXJpb2RlPGJyIC8+DQo8Y29kZT57JGVtYWlsLnByaXplX3RpdGxlfTwvY29kZT4gLSBUaXRlbCB2YW4gZGUgcHJpanM8YnIgLz4NCjxjb2RlPnskZW1haWwucHJpemVfY29kZX08L2NvZGU+IC0gQ29kZSB2YW4gZGUgcHJpanM8YnIgLz4NCjxjb2RlPnskZW1haWwubnVtYmVyfTwvY29kZT4gLSBUb3RhYWwgYWFudGFsIGtlZXIgZGF0IGRlemUgcHJpanMgd29yZHQgdmVybG9vdDxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fcHJpemVfaWR9PC9jb2RlPiAtIFVuaWVrIGlkIHZhbiBkZXplIHByaWpzPGJyIC8+DQo8Y29kZT57JGVtYWlsLmNvdXBvbl9jdXN0b21lcl9pZH08L2NvZGU+IC0gVW5pZWsgaWQgdmFuIGRlIHdpbm5lbmRlIGNvbnN1bWVudDxiciAvPg0KPGNvZGU+eyRlbWFpbC5maXJzdF9uYW1lfTwvY29kZT4gLSBWb29ybmFhbTxiciAvPg0KPGNvZGU+eyRlbWFpbC5sYXN0X25hbWV9PC9jb2RlPiAtIEFjaHRlcm5hYW08YnIgLz4NCjxjb2RlPnskZW1haWwuZW1haWx9PC9jb2RlPiAtIEVtYWlsPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRhc2hlZF9waG9uZX08L2NvZGU+IC0gVGVsZWZvb25udW1tZXIgbWV0IHN0cmVlcGplcyBpZWRlcmUgMyBudW1tZXJzPGJyIC8+DQo8Y29kZT57JGVtYWlsLnBob25lfTwvY29kZT4gLSBUZWxlZm9vbm51bW1lciAoem9uZGVyIHN0cmVlcGplcyk8YnIgLz4NCjxjb2RlPnskZW1haWwuY291cG9uX2NvZGVfaWR9PC9jb2RlPiAtIFVuaWVrIGlkIHZhbiBkZSBjb3Vwb24gY29kZTxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYl90aW1lc3RhbXB9PC9jb2RlPiAtIFRpamRzc3RlbXBlbCwgd2FubmVlciB3YXMgZGUgY291cG9uIGNvZGUgZ2VyZWdpc3RyZWVyZDxiciAvPg0KPGNvZGU+eyRlbWFpbC5kYXNoZWRfY291cG9uX2NvZGV9PC9jb2RlPiAtIENvdXBvbiBjb2RlIG1ldCBzdHJlZXBqZXMgaWVkZXJlIDQgbnVtbWVyczxiciAvPg0KPGNvZGU+eyRlbWFpbC5jb3Vwb25fY29kZX08L2NvZGU+IC0gQ291cG9uIGNvZGUgKHpvbmRlciBzdHJlZXBqZXMpPGJyIC8+PGJyIC8+DQoNCkhldCBpcyBtb2dlbGlqayBvbSBvcCBkZSB2YXJpYWJlbGUgaW4gaGV0IEUtbWFpbCBiZXJpY2h0IFNtYXJ0eSBtb2RpZmllcnMgb2YgZmlsdGVycyB0b2UgdGUgcGFzc2VuIGFsczogPGJyIC8+DQo8Y29kZT57JGVtYWlsLmRiX3RpbWVzdGFtcHxkYXRlX2Zvcm1hdDomcXVvdDslZCAlQiAlWSZxdW90O308L2NvZGU+PGJyIC8+PGJyIC8+DQonOwokbGFuZ1sncmVnaXN0ZXJfY291cG9uX2NvZGUnXSA9ICdDb3Vwb24gY29kZSByZWdpc3RyZXJlbic7CiRsYW5nWydmaXJzdF9uYW1lJ10gPSAnVm9vcm5hYW0nOwokbGFuZ1snbGFzdF9uYW1lJ10gPSAnQWNodGVybmFhbSc7CiRsYW5nWydlbWFpbCddID0gJ0VtYWlsJzsKJGxhbmdbJ3Bob25lJ10gPSAnVGVsZWZvb25udW1tZXInOwokbGFuZ1sndGVybXNfYW5kX2NvbmRpdGlvbnMnXSA9ICdBY3RpZXZvb3J3YWFyZGVuJzsKJGxhbmdbJ3Rlcm1zX2FuZF9jb25kaXRpb25zX2FncmVlJ10gPSAnSmEsIGlrIGdhIGFjY29vcmQnOwokbGFuZ1snbmV3c2xldHRlciddID0gJ05pZXV3c2JyaWVmJzsKJGxhbmdbJ25ld3NsZXR0ZXJfYWdyZWUnXSA9ICdKYSwgaWsgd2lsIGRlIG5pZXV3c2JyaWVmIG9udHZhbmdlbic7CiRsYW5nWydjb3Vwb25fY29kZSddID0gJ0NvdXBvbiBjb2RlICc7CiRsYW5nWydzX3NfY291cG9uX2NvZGVfcmVnaXN0ZXJlZCddID0gJ0Jlc3RlICVzICVzLCA8YnIgLz48YnIgLz4gVXcgY291cG9uIGNvZGUgaXMgZ2VyZWdpc3RyZWVyZC4gSW5kaWVuIHUgbm9nIGVlbiBjb3Vwb24gY29kZSB3aWx0IHJlZ2lzdGVyZW4gdnVsIGRhbiBkZSB2b2xnZW5kZSBjb3Vwb24gY29kZSBpbiBlbiBnYSBhY2Nvb3JkIG1ldCBkZSBhY3RpZXZvb3J3YWFyZGVuLic7CiRsYW5nWydzX2RlbGV0ZV9jb3Vwb25fY29kZV9jb29raWUnXSA9ICdXaWx0IGRlIGZvcm11bGllcmdlZ2V2ZW5zIGRpZSB3aWogYmV3YWFyZCBoZWJiZW4gdmVyd2lqZGVyZW4sIG9mIHZvb3IgaWVtYW5kIGFuZGVycyBlZW4gY291cG9uIGNvZGUgcmVnaXN0ZXJlbj8gPGJyIC8+PGJyIC8+ICBLbGlrIGRhbiA8YSBocmVmPSIlcyI+aGllcjwvYT4gb20gaGV0IGZvcm11bGllciBsZWVnIHRlIG1ha2VuJzsKJGxhbmdbJ2pzX3JlcXVpcmVkJ10gPSAnSW52dWxsZW4gdmVycGxpY2h0JzsKJGxhbmdbJ2pzX29wdGlvbmFsJ10gPSAnSW52dWxsZW4gb3B0aW9uZWVsJzsKJGxhbmdbJ2pzX2VtYWlsJ10gPSAnVnVsIGVlbiBnZWxkaWcgRS1tYWlsYWRyZXMgaW4nOwokbGFuZ1snanNfbnVtYmVyJ10gPSAnVnVsIGFsbGVlbiBjaWpmZXJzIGluJzsKJGxhbmdbJ2pzX21pbmxlbmd0aCddID0gJ1Z1bCB7MH0gY2lqZmVycyBpbic7CiRsYW5nWydqc19taW5sZW5ndGhfbXVsdGlwbGUnXSA9ICdWdWwgezB9IGNpamZlcnMgcGVyIHZlbGQgaW4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdab3JnIGVydm9vciBkYXQgZ2VicnVpa2VycyBkaWUgVXBDb3Vwb24gYmVoZXJlbiAmIzAzOTtVcENvdXBvbiYjMDM5OyByZWNodGVuIGtyaWpnZW4uJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdVcENvdXBvbiBpcyBzdWNjZXN2b2wgZ2VkZWluc3RhbGxlZXJkLic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnV2VldCB1IGhldCB6ZWtlcj8nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIGRlbmllZCAoJiMwMzk7JXMmIzAzOTspJzsKJGxhbmdbJ2FjY2Vzc2FsbG93ZWQnXSA9ICdUb2VnYW5nIHRvZWdlc3RhYW4nOwokbGFuZ1snbm90X2FsbG93ZWQnXSA9ICdEZXplIGFjdGllIGlzIG5pZXQgdG9lZ2VzdGFhbic7CiRsYW5nWydub19zX2dpdmVuJ10gPSAnRXIgaXMgZ2VlbiAmIzAzOTslcyYjMDM5OyBpbmdlZ2V2ZW4gJzsKJGxhbmdbJ3Nfbm90Z2l2ZW4nXSA9ICcmIzAzOTslcyYjMDM5OyBpcyBuaWV0IGluZ2V2dWxkJzsKJGxhbmdbJ3Nfc19hbHJlYWR5Z2l2ZW4nXSA9ICclczogJiMwMzk7JXMmIzAzOTsgaXMgYWwgaW5nZXZ1bGQnOwokbGFuZ1snZXJyb3JfaW52YWxpZGRhdGVzJ10gPSAnRWVuIG9mIG1lZXJkZXJlIGRhdHVtIHZlbGRlbiB6aWpuIG9uZ2VsZGlnJzsKJGxhbmdbJ3RlbXBsYXRlX2V4aXN0cyddID0gJ0hldCBzamFibG9vbiBiZXN0YWF0IGFsJzsKJGxhbmdbJ2Vycm9yaW5zZXJ0aW5ndGVtcGxhdGUnXSA9ICdIZXQgZmFicmlla3NpbnN0ZWxsaW5nZW4gc2phYmxvb24ga2FuIG5pZXQgZ2VvcGVuZCB3b3JkZW4nOwokbGFuZ1snY291cG9uX2FjdGlvbl9taXNzaW5nJ10gPSAnVm9vcmRhdCAmIzAzOTtDb3Vwb24gUGVyaW9kZXMmIzAzOTsgaW5nZXZ1bGQga3VubmVuIHdvcmRlbiwgZGllbmVuIGVyIGFjdGlldmUgJiMwMzk7Q291cG9uIEFjdGllcyYjMDM5OyBhYW53ZXppZyB0ZSB6aWpuJzsKJGxhbmdbJ2NvdXBvbl9wZXJpb2RfbWlzc2luZyddID0gJ1Zvb3JkYXQgJiMwMzk7UHJpanplbiYjMDM5OyBpbmdldnVsZCBrdW5uZW4gd29yZGVuLCBkaWVuZW4gZXIgYWN0aWV2ZSAmIzAzOTtDb3Vwb24gUGVyaW9kZXMmIzAzOTsgYWFud2V6aWcgdGUgemlqbic7CiRsYW5nWydzX3NfY291cG9ucGVyaW9kX21pc21hdGNoJ10gPSAnRGUgc3RhcnQtIGVuIGVpbmRkYXR1bSB2YW4gZGUgJiMwMzk7Q291cG9uIFBlcmlvZGUmIzAzOTsgZGllbnQgYmlubmVuICVzIGVuICVzIHRlIHZhbGxlbic7CiRsYW5nWyduZWVkX3JlZ2lzdGVyZWRfY3VzdG9tZXInXSA9ICdPbSBlZW4gbG90IHRlIGt1bm5lbiB0cmVra2VuIGluIGRlemUgcGVyaW9kZSB6aWpuIGVyIChtZWVyKSBnZXJlZ2lzdHJlZXJkZSBnZWJydWlrZXJzIG5vZGlnJzsKJGxhbmdbJ2FjdGlvbl9zJ10gPSAnQ291cG9uIEFjdGllJzsKJGxhbmdbJ2FjdGlvbl9wJ10gPSAnQ291cG9uIEFjdGllcyc7CiRsYW5nWydwZXJpb2RfcyddID0gJ0NvdXBvbiBQZXJpb2RlJzsKJGxhbmdbJ3BlcmlvZF9wJ10gPSAnQ291cG9uIFBlcmlvZGVzJzsKJGxhbmdbJ3ByaXplX3MnXSA9ICdQcmlqcyc7CiRsYW5nWydwcml6ZV9wJ10gPSAnUHJpanplbic7CiRsYW5nWyd3aW5uZXJfcyddID0gJ1dpbm5hYXInOwokbGFuZ1snd2lubmVyX3AnXSA9ICdXaW5uYWFycyc7CiRsYW5nWydzdGF0aXN0aWNzX3MnXSA9ICdTdGF0aXN0aWVrZW4nOwokbGFuZ1snc3RhdGlzdGljc19wJ10gPSAnU3RhdGlzdGlla2VuJzsKJGxhbmdbJ3RlbXBsYXRlc19zJ10gPSAnU2phYmxvb24nOwokbGFuZ1sndGVtcGxhdGVzX3AnXSA9ICdTamFibG9uZW4nOwokbGFuZ1sncHJlZmVyZW5jZXNfcyddID0gJ1Zvb3JrZXVyJzsKJGxhbmdbJ3ByZWZlcmVuY2VzX3AnXSA9ICdWb29ya2V1cmVuJzsKJGxhbmdbJ2FkZCddID0gJ1RvZXZvZWdlbic7CiRsYW5nWydlZGl0J10gPSAnQmV3ZXJrZW4nOwokbGFuZ1snZGVsZXRlJ10gPSAnVmVyd2lqZGVyZW4nOwokbGFuZ1snc3VibWl0J10gPSAnVmVyc3R1cmVuJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZXJlbic7CiRsYW5nWydhcHBseSddID0gJ1RvZXBhc3Nlbic7CiRsYW5nWydmYWN0b3J5J10gPSAnRmFicmlla3NpbnN0ZWxsaW5nZW4nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkX2l0ZW1zJ10gPSAnVmVyd2lqZGVyIGdlc2VsZWN0ZWVyZGUgaXRlbXMnOwokbGFuZ1snc19hZGQnXSA9ICclcyB0b2V2b2VnZW4nOwokbGFuZ1snc19lZGl0J10gPSAnJXMgYmV3ZXJrZW4nOwokbGFuZ1snc19kZWxldGUnXSA9ICclcyB2ZXJ3aWpkZXJlbic7CiRsYW5nWydzX2NoYW5nZV9zdGF0dXMnXSA9ICclcyBzdGF0dXMgYWFucGFzc2VuJzsKJGxhbmdbJ3NfY2hhbmdlX2RlZmF1bHQnXSA9ICclcyBzdGFuZGFhcmQgYWFucGFzc2VuJzsKJGxhbmdbJ3NfYWRkZWQnXSA9ICclcyB0b2VnZXZvZWdkJzsKJGxhbmdbJ3NfZWRpdGVkJ10gPSAnJXMgYmV3ZXJrdCc7CiRsYW5nWydzX2RlbGV0ZWQnXSA9ICclcyB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ3NfY2hhbmdlZF9zdGF0dXMnXSA9ICclcyBzdGF0dXMgYWFuZ2VwYXN0JzsKJGxhbmdbJ3NfY2hhbmdlZF9kZWZhdWx0J10gPSAnJXMgc3RhbmRhYXJkIGFhbmdlcGFzdCc7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25BY3Rpb25BZGRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gYWN0aWUgaXMgdG9lZ2V2b2VnZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25BY3Rpb25BZGRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gYWN0aWUgaXMgdG9lZ2V2b2VnZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25BY3Rpb25FZGl0ZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIGFjdGllIGlzIGJld2Vya3QnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uQWN0aW9uRWRpdGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBhY3RpZSBpcyBiZXdlcmt0PC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvbkFjdGlvbkRlbGV0ZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIGFjdGllIGlzIHZlcndpamRlcmQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uQWN0aW9uRGVsZXRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gYWN0aWUgaXMgdmVyd2lqZGVyZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblBlcmlvZEFkZGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBwZXJpb2RlIGlzIHRvZWdldm9lZ2QnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kQWRkZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHBlcmlvZGUgaXMgdG9lZ2V2b2VnZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QZXJpb2RFZGl0ZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHBlcmlvZGUgaXMgYmV3ZXJrdCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25QZXJpb2RFZGl0ZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHBlcmlvZGUgaXMgYmV3ZXJrdDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QZXJpb2REZWxldGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBwZXJpb2RlIGlzIHZlcndpamRlcmQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUGVyaW9kRGVsZXRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gcGVyaW9kZSBpcyB2ZXJ3aWpkZXJkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJpemVBZGRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gcHJpanMgaXMgdG9lZ2V2b2VnZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25Qcml6ZUFkZGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBwcmlqcyBpcyB0b2VnZXZvZWdkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblByaXplRWRpdGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBwcmlqcyBpcyBiZXdlcmt0JzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByaXplRWRpdGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBwcmlqcyBpcyBiZXdlcmt0PC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblByaXplRGVsZXRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gcHJpanMgaXMgdmVyd2lqZGVyZCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25Qcml6ZURlbGV0ZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHByaWpzIGlzIHZlcndpamRlcmQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25XaW5uZXJBZGRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gd2lubmFhciBpcyB0b2VnZXZvZWdkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbldpbm5lckFkZGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB3aW5uYWFyIGlzIHRvZWdldm9lZ2Q8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uV2lubmVyRWRpdGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB3aW5uYWFyIGlzIGJld2Vya3QnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uV2lubmVyRWRpdGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB3aW5uYWFyIGlzIGJld2Vya3Q8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uV2lubmVyRGVsZXRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gd2lubmFhciBpcyB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvbldpbm5lckRlbGV0ZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHdpbm5hYXIgaXMgdmVyd2lqZGVyZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8bGk+PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50ZGVzYy1VcENvdXBvblRlbXBsYXRlQWRkZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHRlbXBsYXRlIGlzIHRvZWdldm9lZ2QnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uVGVtcGxhdGVBZGRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gdGVtcGxhdGUgaXMgdG9lZ2V2b2VnZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25UZW1wbGF0ZUVkaXRlZCddID0gJ1ZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gdGVtcGxhdGUgaXMgYmV3ZXJrdCc7CiRsYW5nWydldmVudGhlbHAtVXBDb3Vwb25UZW1wbGF0ZUVkaXRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gdGVtcGxhdGUgaXMgYmV3ZXJrdDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25UZW1wbGF0ZURlbGV0ZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHRlbXBsYXRlIGlzIHZlcndpamRlcmQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uVGVtcGxhdGVEZWxldGVkJ10gPSAnPHA+VmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB0ZW1wbGF0ZSBpcyB2ZXJ3aWpkZXJkPC9wPg0KDQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PC9saT4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZUFkZGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB2b29ya2V1ciBpcyB0b2VnZXZvZWdkJzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByZWZlcmVuY2VBZGRlZCddID0gJzxwPlZlcnN0dXVyZCBvcCBoZXQgbW9tZW50IGRhdCBlciBlZW4gdm9vcmtldXIgaXMgdG9lZ2V2b2VnZDwvcD4NCg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGRlc2MtVXBDb3Vwb25QcmVmZXJlbmNlRWRpdGVkJ10gPSAnVmVyc3R1dXJkIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiB2b29ya2V1ciBpcyBiZXdlcmt0JzsKJGxhbmdbJ2V2ZW50aGVscC1VcENvdXBvblByZWZlcmVuY2VFZGl0ZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHZvb3JrZXVyIGlzIGJld2Vya3Q8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRkZXNjLVVwQ291cG9uUHJlZmVyZW5jZURlbGV0ZWQnXSA9ICdWZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHZvb3JrZXVyIGlzIHZlcndpamRlcmQnOwokbGFuZ1snZXZlbnRoZWxwLVVwQ291cG9uUHJlZmVyZW5jZURlbGV0ZWQnXSA9ICc8cD5WZXJzdHV1cmQgb3AgaGV0IG1vbWVudCBkYXQgZXIgZWVuIHZvb3JrZXVyIGlzIHZlcndpamRlcmQ8L3A+DQoNCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48L2xpPg0KPGxpPjwvbGk+DQo8L3VsPic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPgo=]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/classes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/classes/UpCouponDAO.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBVcENvdXBvbkRBTy5jbGFzcy5waHAgMSAyMDExLTA2LTEyIDE1OjI1OjI3WiBhcm5vdWQgJAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDbGFzczogY2hpbGREQU8gKGMpIDIwMTEgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEltcGxlbWVudGF0aW9uIG9mIHNvbWUgdGFibGUgbWV0aG9kcwojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgY291cG9uX2FjdGlvbkRBTyBleHRlbmRzIGJhc2VEQU8gewoKICAgIHByb3RlY3RlZCAkX3RhYmxlbmFtZSA9IFVQQ09VUE9OX0FDVElPTl9UQUJMRTsKICAgIHByb3RlY3RlZCAkX3ByaW1hcnlrZXkgPSAgJ2NvdXBvbl9hY3Rpb25faWQnOwogICAgCiAgICAvKiogZmV0Y2hfYWN0aW9uZHJvcGRvd24KICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX2FjdGlvbmRyb3Bkb3duKCR2YWx1ZSA9IE5VTEwsICRkYl9rZXkgPSBOVUxMKSB7ICAKICAgIAogICAgICAgIGlmIChpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgdGl0bGUsIGNvdXBvbl9hY3Rpb25faWQgRlJPTSB7JHRoaXMtPl90YWJsZW5hbWV9IFdIRVJFIHN0YXR1cyA9ID8iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgdGl0bGUsIGNvdXBvbl9hY3Rpb25faWQgRlJPTSB7JHRoaXMtPl90YWJsZW5hbWV9IFdIRVJFIHN0YXR1cyA9ID8gQU5EIHskZGJfa2V5fSA9ID8iOwogICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAKICAgICAgICBpZiAoc2VsZjo6JGRlYnVnKSB7CiAgICAgICAgICAgIHByaW50ICIkcXVlcnkgXG4iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoaXNfbnVsbCgkZGJfa2V5KSkgeyAgICAgICAgCiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnMScpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJzEnLCAkdmFsdWUpKTsKICAgICAgICB9CiAgICAgIAogICAgICAgICRyb3dzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgJHJvd3NbJHJvd1snY291cG9uX2FjdGlvbl9pZCddXSA9ICRyb3dbJ3RpdGxlJ107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkcm93czsKICAgICAgICAKICAgIH0KICAgICAgICAgCn0gLy8gY291cG9uX2FjdGlvbkRBTwoKY2xhc3MgY291cG9uX3BlcmlvZERBTyBleHRlbmRzIGJhc2VEQU8gewoKICAgIHByb3RlY3RlZCAkX3RhYmxlbmFtZSA9IFVQQ09VUE9OX1BFUklPRF9UQUJMRTsKICAgIHByb3RlY3RlZCAkX3ByaW1hcnlrZXkgPSAgJ2NvdXBvbl9wZXJpb2RfaWQnOwogICAgCiAgICAvKiogZmV0Y2hfYWN0aW9uZHJvcGRvd24KICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX3BlcmlvZGRyb3Bkb3duKCR2YWx1ZSA9IE5VTEwsICRkYl9rZXkgPSBOVUxMKSB7ICAKICAgIAogICAgICAgIGlmIChpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgdGl0bGUsIGNvdXBvbl9wZXJpb2RfaWQgRlJPTSB7JHRoaXMtPl90YWJsZW5hbWV9IFdIRVJFIHN0YXR1cyA9ID8iOyAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIHRpdGxlLCBjb3Vwb25fcGVyaW9kX2lkIEZST00geyR0aGlzLT5fdGFibGVuYW1lfSBXSEVSRSBzdGF0dXMgPSA/IEFORCB7JGRiX2tleX0gPSA/IjsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnMScpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJzEnLCAkdmFsdWUpKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgJHJvd3MgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICRyb3dzWyRyb3dbJ2NvdXBvbl9wZXJpb2RfaWQnXV0gPSAkcm93Wyd0aXRsZSddOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHJvd3M7CiAgICAgICAgCiAgICB9CiAgICAgICAgICAgIAp9IC8vIGNvdXBvbl9wZXJpb2REQU8KCmNsYXNzIGNvdXBvbl9wcml6ZURBTyBleHRlbmRzIGJhc2VEQU8gewoKICAgIHByb3RlY3RlZCAkX3RhYmxlbmFtZSA9IFVQQ09VUE9OX1BSSVpFX1RBQkxFOwogICAgcHJvdGVjdGVkICRfcHJpbWFyeWtleSA9ICAnY291cG9uX3ByaXplX2lkJzsKICAgIAogICAgLyoqIGZldGNoX3ByaXplZHJvcGRvd24KICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX3ByaXplZHJvcGRvd24oJHZhbHVlID0gTlVMTCwgJGRiX2tleSA9IE5VTEwpIHsgIAogICAgCiAgICAgICAgaWYgKGlzX251bGwoJGRiX2tleSkpIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0aXRsZSwgY291cG9uX3ByaXplX2lkIEZST00geyR0aGlzLT5fdGFibGVuYW1lfSBXSEVSRSBzdGF0dXMgPSA/IjsgCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0aXRsZSwgY291cG9uX3ByaXplX2lkIEZST00geyR0aGlzLT5fdGFibGVuYW1lfSBXSEVSRSBzdGF0dXMgPSA/IEFORCB7JGRiX2tleX0gPSA/IjsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnMScpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJzEnLCAkdmFsdWUpKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgJHJvd3MgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICRyb3dzWyRyb3dbJ2NvdXBvbl9wcml6ZV9pZCddXSA9ICRyb3dbJ3RpdGxlJ107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkcm93czsKICAgICAgICAKICAgIH0KICAgIAp9IC8vIGNvdXBvbl9wcml6ZURBTwoKY2xhc3MgY291cG9uX2N1c3RvbWVyREFPIGV4dGVuZHMgYmFzZURBTyB7CgogICAgcHJvdGVjdGVkICRfdGFibGVuYW1lID0gVVBDT1VQT05fQ1VTVE9NRVJfVEFCTEU7CiAgICBwcm90ZWN0ZWQgJF9wcmltYXJ5a2V5ID0gICdjb3Vwb25fY3VzdG9tZXJfaWQnOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBmZXRjaF9ieV9pcF9jaGVja3N1bSgkaXAsICRjaGVja3N1bSkgewoKICAgICAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSB7JHRoaXMtPl90YWJsZW5hbWV9IAogICAgICAgICAgICAgICAgV0hFUkUgaXAgPSA/IEFORCBjaGVja3N1bSA9ID8iOwoKICAgICAgICBpZiAoc2VsZjo6JGRlYnVnKSB7CiAgICAgICAgICAgIHByaW50ICIkcXVlcnkgXG4iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlwLCAkY2hlY2tzdW0pKTsKICAgIAogICAgICAgICRyb3dzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgJHJvd3NbXSA9ICRyb3c7CiAgICAgICAgfQogICAgCiAgICAgICAgcmV0dXJuICRyb3dzOwogIAogICAgfQogIAp9IC8vIGNvdXBvbl9jdXN0b21lckRBTwoKY2xhc3MgY291cG9uX2NvZGVEQU8gZXh0ZW5kcyBiYXNlREFPIHsKCiAgICBwcm90ZWN0ZWQgJF90YWJsZW5hbWUgPSBVUENPVVBPTl9DT0RFX1RBQkxFOwogICAgcHJvdGVjdGVkICRfcHJpbWFyeWtleSA9ICAnY291cG9uX2NvZGVfaWQnOwogICAgCiAgICBmdW5jdGlvbiBkcmF3X2NvdXBvbigkc3RhcnRfdHMsICRlbmRfdHMpIHsKICAgICAgICAgICAgCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIAogICAgICAgICAgICAgICAgICAgIEZST00geyR0aGlzLT5fdGFibGVuYW1lfSAKICAgICAgICAgICAgICAgICAgICBXSEVSRSBjb3Vwb25fY3VzdG9tZXJfaWQgIT0gMCAKICAgICAgICAgICAgICAgICAgICBBTkQgY291cG9uX3ByaXplX2lkID0gMAogICAgICAgICAgICAgICAgICAgIEFORCB0aW1lc3RhbXAgPj0gPwogICAgICAgICAgICAgICAgICAgIEFORCB0aW1lc3RhbXAgPD0gPwogICAgICAgICAgICAgICAgICAgIE9SREVSIEJZIFJBTkQoICkgTElNSVQgMSI7CiAgICAgICAgCiAgICAgICAgaWYgKHNlbGY6OiRkZWJ1ZykgewogICAgICAgICAgICBwcmludCAiJHF1ZXJ5IFxuIjsKICAgICAgICAgICAgcHJpbnQgInN0YXJ0X3RzOiAkc3RhcnRfdHMgXG4iOwogICAgICAgICAgICBwcmludCAiZW5kX3RzOiAkZW5kX3RzIFxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHJvdyA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkdldFJvdygkcXVlcnksIGFycmF5KCRzdGFydF90cywgJGVuZF90cykpOwogICAgICAgICAgICAgICAgCiAgICAgICAgcmV0dXJuICRyb3c7CiAgICAgICAgCiAgICB9CiAgICAKICAgIC8qKiBmZXRjaF9naXZlbl9wcml6ZV9jb3VudCwgY29sbGVjdCB0aGUgKG51bWJlcikgb2YgZ2l2ZW4gcHJpemVzCiAgICAgKiAKICAgICAqIEByZXR1cm4gJHJvd3MgYXJyYXkgLSByZXN1bHQgc2V0IAogICAgICoKICAgICAqLwogICAgIAogICAgIHB1YmxpYyBmdW5jdGlvbiBmZXRjaF9naXZlbl9wcml6ZV9jb3VudCgpIHsKICAgICAgICAgCiAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgY291bnQoKikgYXMgY291bnQsIGNvdXBvbl9wcml6ZV9pZCAKICAgICAgICAgICAgICAgICAgICBGUk9NIHskdGhpcy0+X3RhYmxlbmFtZX0KICAgICAgICAgICAgICAgICAgICBHUk9VUCBCWSBjb3Vwb25fcHJpemVfaWQKICAgICAgICAgICAgICAgICAgICBIQVZJTkcgY291cG9uX3ByaXplX2lkID4gMCI7CiAgICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRyb3dzWyRyb3dbJ2NvdXBvbl9wcml6ZV9pZCddXSA9ICRyb3dbJ2NvdW50J107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkcm93czsKICAgICAgICAgCiAgICAgfQogICAgCn0gLy8gY291cG9uX2NvZGVEQU8KCmNsYXNzIGNvdXBvbl9taXhlZERBTyBleHRlbmRzIGJhc2VEQU8gewogICAgCiAgICBwcm90ZWN0ZWQgJF9hY3Rpb25fdGFibGUgICAgPSBVUENPVVBPTl9BQ1RJT05fVEFCTEU7CiAgICBwcm90ZWN0ZWQgJF9wZXJpb2RfdGFibGUgICAgPSBVUENPVVBPTl9QRVJJT0RfVEFCTEU7CiAgICBwcm90ZWN0ZWQgJF9wcml6ZV90YWJsZSAgICAgPSBVUENPVVBPTl9QUklaRV9UQUJMRTsKICAgIHByb3RlY3RlZCAkX2N1c3RvbWVyX3RhYmxlICA9IFVQQ09VUE9OX0NVU1RPTUVSX1RBQkxFOwogICAgcHJvdGVjdGVkICRfY29kZV90YWJsZSAgICAgID0gVVBDT1VQT05fQ09ERV9UQUJMRTsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX3dpbm5lcnMoJHZhbHVlID0gTlVMTCwgJGRiX2tleSA9IE5VTEwpIHsKCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0MS50aXRsZSBBUyBhY3Rpb25fdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgdDEuY291cG9uX2FjdGlvbl9pZCBBUyBjb3Vwb25fYWN0aW9uX2lkLAogICAgICAgICAgICAgICAgICAgIHQyLnRpdGxlIEFTIHBlcmlvZF90aXRsZSwKICAgICAgICAgICAgICAgICAgICB0Mi5jb3Vwb25fcGVyaW9kX2lkIEFTIGNvdXBvbl9wZXJpb2RfaWQsCiAgICAgICAgICAgICAgICAgICAgdDMudGl0bGUgQVMgcHJpemVfdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgdDMucHJpemVfY29kZSBBUyBwcml6ZV9jb2RlLAogICAgICAgICAgICAgICAgICAgIHQzLm51bWJlciBBUyBudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgdDMuY291cG9uX3ByaXplX2lkIEFTIGNvdXBvbl9wcml6ZV9pZCwKICAgICAgICAgICAgICAgICAgICB0NC5jb3Vwb25fY3VzdG9tZXJfaWQgQVMgY291cG9uX2N1c3RvbWVyX2lkLAogICAgICAgICAgICAgICAgICAgIHQ0LmZpcnN0X25hbWUgQVMgZmlyc3RfbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgdDQubGFzdF9uYW1lIEFTIGxhc3RfbmFtZSwKICAgICAgICAgICAgICAgICAgICB0NC5lbWFpbCBBUyBlbWFpbCwKICAgICAgICAgICAgICAgICAgICB0NC5waG9uZSBBUyBwaG9uZSwKICAgICAgICAgICAgICAgICAgICB0NS5jb3Vwb25fY29kZV9pZCBBUyBjb3Vwb25fY29kZV9pZCwKICAgICAgICAgICAgICAgICAgICB0NS50aW1lc3RhbXAgQVMgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgIHQ1LmNvdXBvbl9jb2RlIEFTIGNvdXBvbl9jb2RlCiAgICAgICAgICAgICAgICAgICAgRlJPTSB7JHRoaXMtPl9hY3Rpb25fdGFibGV9IHQxLAogICAgICAgICAgICAgICAgICAgICAgICB7JHRoaXMtPl9wZXJpb2RfdGFibGV9IHQyLAogICAgICAgICAgICAgICAgICAgICAgICB7JHRoaXMtPl9wcml6ZV90YWJsZX0gdDMsCiAgICAgICAgICAgICAgICAgICAgICAgIHskdGhpcy0+X2N1c3RvbWVyX3RhYmxlfSB0NCwKICAgICAgICAgICAgICAgICAgICAgICAgeyR0aGlzLT5fY29kZV90YWJsZX0gdDUKICAgICAgICAgICAgICAgICAgICBXSEVSRSB0MS5jb3Vwb25fYWN0aW9uX2lkID0gdDIuY291cG9uX2FjdGlvbl9pZAogICAgICAgICAgICAgICAgICAgIEFORCB0Mi5jb3Vwb25fcGVyaW9kX2lkID0gdDMuY291cG9uX3BlcmlvZF9pZAogICAgICAgICAgICAgICAgICAgIEFORCB0My5jb3Vwb25fcHJpemVfaWQgPSB0NS5jb3Vwb25fcHJpemVfaWQKICAgICAgICAgICAgICAgICAgICBBTkQgdDQuY291cG9uX2N1c3RvbWVyX2lkID0gdDUuY291cG9uX2N1c3RvbWVyX2lkCiAgICAgICAgICAgICAgICAgICAgQU5EIHQxLnN0YXR1cyA9ICcxJwogICAgICAgICAgICAgICAgICAgIEFORCB0Mi5zdGF0dXMgPSAnMScKICAgICAgICAgICAgICAgICAgICBBTkQgdDMuc3RhdHVzID0gJzEnCiAgICAgICAgICAgICAgICAgICAgQU5EIHQ0LnN0YXR1cyA9ICcxJyI7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgaWYgKCFpc19udWxsKCRkYl9rZXkpKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAiIEFORCB7JGRiX2tleX0gPSA/IjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHF1ZXJ5IC49ICIgT1JERVIgQlkgdDEuZW5kX2RhdGUsIHQyLmVuZF9kYXRlIjsgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgaWYgKHNlbGY6OiRkZWJ1ZykgewogICAgICAgICAgICBwcmludCAiJHF1ZXJ5IFxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKGlzX251bGwoJGRiX2tleSkpIHsKICAgICAgICAgICAgJGRicmVzdWx0ID0gJHRoaXMtPl9fY29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsdWUpKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgICRyb3dzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsgCiAgICAgICAgICAgICRyb3dzW10gPSAkcm93OwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHJvd3M7IAogICAgICAgICAgICAgICAgICAgIAogICAgfQogICAgCiAgICAvKiogZmV0Y2hfYWN0aW9uX3BlcmlvZF9wcml6ZXMKICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX2FjdGlvbl9wZXJpb2RfcHJpemVzKCR2YWx1ZSA9IE5VTEwsICRkYl9rZXkgPSBOVUxMKSB7IAogICAgICAgICAgICAKICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIHQzLiosCiAgICAgICAgICAgICAgICAgICAgdDEudGl0bGUgQVMgYWN0aW9uX3RpdGxlLAogICAgICAgICAgICAgICAgICAgIHQxLmNvdXBvbl9hY3Rpb25faWQgQVMgY291cG9uX2FjdGlvbl9pZCwKICAgICAgICAgICAgICAgICAgICB0Mi50aXRsZSBBUyBwZXJpb2RfdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgdDIuY291cG9uX3BlcmlvZF9pZCBBUyBjb3Vwb25fcGVyaW9kX2lkCiAgICAgICAgRlJPTSB7JHRoaXMtPl9hY3Rpb25fdGFibGV9IHQxLCAKICAgICAgICAgICAgeyR0aGlzLT5fcGVyaW9kX3RhYmxlfSB0MiwgCiAgICAgICAgICAgIHskdGhpcy0+X3ByaXplX3RhYmxlfSB0MwogICAgICAgIFdIRVJFIHQxLmNvdXBvbl9hY3Rpb25faWQgPSB0Mi5jb3Vwb25fYWN0aW9uX2lkCiAgICAgICAgQU5EIHQyLmNvdXBvbl9wZXJpb2RfaWQgPSB0My5jb3Vwb25fcGVyaW9kX2lkCiAgICAgICAgQU5EIHQxLnN0YXR1cyA9ICcxJwogICAgICAgIEFORCB0Mi5zdGF0dXMgPSAnMScKICAgICAgICBBTkQgdDMuc3RhdHVzID0gJzEnIjsKICAgICAgICAKICAgICAgICBpZiAoIWlzX251bGwoJGRiX2tleSkpIHsKICAgICAgICAgICAgJHF1ZXJ5IC49ICIgQU5EIHskZGJfa2V5fSA9ID8iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkcXVlcnkgLj0gIiBPUkRFUiBCWSB0Mi5lbmRfZGF0ZSI7IAogICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgaWYgKGlzX251bGwoJGRiX2tleSkpIHsKICAgICAgICAgICAgJGRicmVzdWx0ID0gJHRoaXMtPl9fY29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsdWUpKTsgICAgICAgICAgCiAgICAgICAgfQoKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRyb3dzW10gPSAkcm93OwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHJvd3M7CiAgICB9CiAgICAKICAgIC8qKiBmZXRjaF9wcml6ZXMKICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX3ByaXplcygpIHsgIAogICAgCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0My4qIAogICAgICAgIEZST00geyR0aGlzLT5fcGVyaW9kX3RhYmxlfSB0MiwgeyR0aGlzLT5fcHJpemVfdGFibGV9IHQzCiAgICAgICAgV0hFUkUgdDIuY291cG9uX3BlcmlvZF9pZCA9IHQzLmNvdXBvbl9wZXJpb2RfaWQKICAgICAgICBPUkRFUiBCWSB0Mi5lbmRfZGF0ZSI7IAogICAgICAgIAogICAgICAgIGlmIChzZWxmOjokZGVidWcpIHsKICAgICAgICAgICAgcHJpbnQgIiRxdWVyeSBcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRkYnJlc3VsdCA9ICR0aGlzLT5fX2Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRyb3dzW10gPSAkcm93OwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHJvd3M7CiAgICB9CgogICAgLyoqIGZldGNoX2FjdGlvbl9wZXJpb2RfanMKICAgICAqCiAgICAgKiAgQHJldHVybiAkcm93cyBhcnJheSAtIHJlc3VsdCBzZXQKICAgICAqCiAgICAgKi8KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoX2FjdGlvbl9wZXJpb2RfanMoKSB7ICAKICAgCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCB0MS5jb3Vwb25fYWN0aW9uX2lkIEFTIGNvdXBvbl9hY3Rpb25faWQsIAogICAgICAgICAgICAgICAgICAgIHQyLmNvdXBvbl9wZXJpb2RfaWQgQVMgY291cG9uX3BlcmlvZF9pZCwgCiAgICAgICAgICAgICAgICAgICAgdDIudGl0bGUgQVMgdGl0bGUgCiAgICAgICAgICAgICAgICAgICAgRlJPTSB7JHRoaXMtPl9hY3Rpb25fdGFibGV9IHQxLCB7JHRoaXMtPl9wZXJpb2RfdGFibGV9IHQyIAogICAgICAgICAgICAgICAgICAgIFdIRVJFIHQxLmNvdXBvbl9hY3Rpb25faWQgPSB0Mi5jb3Vwb25fYWN0aW9uX2lkCiAgICAgICAgICAgICAgICAgICAgQU5EIHQxLnN0YXR1cyA9ICcxJyAKICAgICAgICAgICAgICAgICAgICBBTkQgdDIuc3RhdHVzID0gJzEnIE9SREVSIEJZIHQyLmVuZF9kYXRlIEFTQyI7CiAgICAgICAgCiAgICAgICAgaWYgKHNlbGY6OiRkZWJ1ZykgewogICAgICAgICAgICBwcmludCAiJHF1ZXJ5IFxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGRicmVzdWx0ID0gJHRoaXMtPl9fY29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgICRtYWluX2tleSA9ICRyb3dbJ2NvdXBvbl9hY3Rpb25faWQnXTsKICAgICAgICAgICAgJHN1Yl9rZXkgPSAkcm93Wydjb3Vwb25fcGVyaW9kX2lkJ107CiAgICAgICAgICAgICRyb3dzWyRtYWluX2tleV1bJHN1Yl9rZXldID0gJHJvd1sndGl0bGUnXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuICRyb3dzOwogICAgICAgIAogICAgfQogICAgCiAgICAvKiogZmV0Y2hfYWN0aW9uX3BlcmlvZF9wcml6ZV9qcwogICAgICoKICAgICAqICBAcmV0dXJuICRyb3dzIGFycmF5IC0gcmVzdWx0IHNldAogICAgICoKICAgICAqLwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZmV0Y2hfYWN0aW9uX3BlcmlvZF9wcml6ZV9qcygpIHsgIAogICAKICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIHQxLmNvdXBvbl9hY3Rpb25faWQgQVMgY291cG9uX2FjdGlvbl9pZCwgCiAgICAgICAgICAgICAgICAgICAgdDIuY291cG9uX3BlcmlvZF9pZCBBUyBjb3Vwb25fcGVyaW9kX2lkLCAKICAgICAgICAgICAgICAgICAgICB0Mi50aXRsZSBBUyB0aXRsZSAKICAgICAgICAgICAgICAgICAgICBGUk9NIHskdGhpcy0+X2FjdGlvbl90YWJsZX0gdDEsIAogICAgICAgICAgICAgICAgICAgICAgICB7JHRoaXMtPl9wZXJpb2RfdGFibGV9IHQyLAogICAgICAgICAgICAgICAgICAgICAgICB7JHRoaXMtPl9wcml6ZV90YWJsZX0gdDMKICAgICAgICAgICAgICAgICAgICBXSEVSRSB0MS5jb3Vwb25fYWN0aW9uX2lkID0gdDIuY291cG9uX2FjdGlvbl9pZAogICAgICAgICAgICAgICAgICAgIEFORCB0Mi5jb3Vwb25fcGVyaW9kX2lkID0gdDMuY291cG9uX3BlcmlvZF9pZAogICAgICAgICAgICAgICAgICAgIEFORCB0MS5zdGF0dXMgPSAnMScgCiAgICAgICAgICAgICAgICAgICAgQU5EIHQyLnN0YXR1cyA9ICcxJyAKICAgICAgICAgICAgICAgICAgICBBTkQgdDMuc3RhdHVzID0gJzEnIAogICAgICAgICAgICAgICAgICAgIE9SREVSIEJZIHQyLmVuZF9kYXRlIEFTQyI7CiAgICAgICAgCiAgICAgICAgaWYgKHNlbGY6OiRkZWJ1ZykgewogICAgICAgICAgICBwcmludCAiJHF1ZXJ5IFxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGRicmVzdWx0ID0gJHRoaXMtPl9fY29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAKICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgICRtYWluX2tleSA9ICRyb3dbJ2NvdXBvbl9hY3Rpb25faWQnXTsKICAgICAgICAgICAgJHN1Yl9rZXkgPSAkcm93Wydjb3Vwb25fcGVyaW9kX2lkJ107CiAgICAgICAgICAgICRyb3dzWyRtYWluX2tleV1bJHN1Yl9rZXldID0gJHJvd1sndGl0bGUnXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuICRyb3dzOwogICAgICAgIAogICAgfQogICAgCiAgICAvKiogZmV0Y2hfcGVyaW9kX3ByaXplX2pzCiAgICAgKgogICAgICogIEByZXR1cm4gJHJvd3MgYXJyYXkgLSByZXN1bHQgc2V0CiAgICAgKgogICAgICovCiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBmZXRjaF9wZXJpb2RfcHJpemVfanMoKSB7IAogICAgICAgIAogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgdDIuY291cG9uX3BlcmlvZF9pZCBBUyBjb3Vwb25fcGVyaW9kX2lkLCAKICAgICAgICAgICAgICAgICAgICB0My5jb3Vwb25fcHJpemVfaWQgQVMgY291cG9uX3ByaXplX2lkLCAKICAgICAgICAgICAgICAgICAgICB0My50aXRsZSBBUyB0aXRsZSAKICAgICAgICAgICAgICAgICBGUk9NIHskdGhpcy0+X3BlcmlvZF90YWJsZX0gdDIsIHskdGhpcy0+X3ByaXplX3RhYmxlfSB0MyAKICAgICAgICAgICAgICAgICBXSEVSRSB0Mi5jb3Vwb25fcGVyaW9kX2lkID0gdDMuY291cG9uX3BlcmlvZF9pZCAKICAgICAgICAgICAgICAgICBBTkQgdDIuc3RhdHVzID0gJzEnIAogICAgICAgICAgICAgICAgIEFORCB0My5zdGF0dXMgPSAnMScgT1JERVIgQlkgdDIuZW5kX2RhdGUgQVNDIjsKICAgICAgICAgICAgICAgICAKICAgICAgICBpZiAoc2VsZjo6JGRlYnVnKSB7CiAgICAgICAgICAgIHByaW50ICIkcXVlcnkgXG4iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkZGJyZXN1bHQgPSAkdGhpcy0+X19jb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgIAogICAgICAgICRyb3dzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsgICAgICAgICAgICAKICAgICAgICAgICAgJG1haW5fa2V5ID0gJHJvd1snY291cG9uX3BlcmlvZF9pZCddOwogICAgICAgICAgICAkc3ViX2tleSA9ICRyb3dbJ2NvdXBvbl9wcml6ZV9pZCddOwogICAgICAgICAgICAkcm93c1skbWFpbl9rZXldWyRzdWJfa2V5XSA9ICRyb3dbJ3RpdGxlJ107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkcm93czsKICAgICAgICAKICAgIH0gCiAgICAKICAgICAKfSAvL2NvdXBvbl9taXhlZERBTwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBtZXRob2QuaW5zdGFsbC5waHAgMTIgMjAxMi0wNy0xMiAxMDowMjoyOVogYXJub3VkICQgCgojQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogVXBDb3Vwb24gKGMpIDIwMTEtMjAxMiBieSBBcm5vdWQgdmFuIFN1c3RlcmVuIChhcm5vdWRAdXBzZXJ2aWNlLm5sKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gc2V0dXAgYSBDb3Vwb24gQ29kZXMgTG90dGVyeQojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0YWJsZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJGRiID0gJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKCi8vIFVQQ09VUE9OX0FDVElPTl9UQUJMRQoKJGZsZHMgPSAnY291cG9uX2FjdGlvbl9pZCBJIEtFWSBBVVRPLAogICAgICAgIHRpdGxlIEMoMTAwKSwKICAgICAgICBhbGlhcyBDKDQ1KSwKICAgICAgICBkZXNjcmlwdGlvbiBYLAogICAgICAgIHN0YXJ0X2RhdGUgJy5DTVNfQURPREJfRFQuJywKICAgICAgICBlbmRfZGF0ZSAnLkNNU19BRE9EQl9EVC4nLCAKICAgICAgICBzdGF0dXMgSTEoMSknOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKFVQQ09VUE9OX0FDVElPTl9UQUJMRSwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIFVQQ09VUE9OX1BFUklPRF9UQUJMRQoKJGZsZHMgPSAnY291cG9uX3BlcmlvZF9pZCBJIEtFWSBBVVRPLAogICAgICAgIGNvdXBvbl9hY3Rpb25faWQgSSgxMSksCiAgICAgICAgdGl0bGUgQygxMDApLAogICAgICAgIHN0YXJ0X2RhdGUgJy5DTVNfQURPREJfRFQuJywKICAgICAgICBlbmRfZGF0ZSAnLkNNU19BRE9EQl9EVC4nLAogICAgICAgIGlzX2ZpbmFsIEkxKDEpLCAgICAgIAogICAgICAgIHN0YXR1cyBJMSgxKSc7Cgokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoVVBDT1VQT05fUEVSSU9EX1RBQkxFLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOyAgIAoKLy8gVVBDT1VQT05fUFJJWkVfVEFCTEUKCiRmbGRzID0gJ2NvdXBvbl9wcml6ZV9pZCBJIEtFWSBBVVRPLAogICAgICAgIGNvdXBvbl9wZXJpb2RfaWQgSSgxMSksCiAgICAgICAgY291cG9uX2FjdGlvbl9pZCBJKDExKSwgICAgICAgIAogICAgICAgIHByaXplX2NvZGUgQyg0NSksCiAgICAgICAgdGl0bGUgQygxMDApLAogICAgICAgIGRlc2NyaXB0aW9uIFgsCiAgICAgICAgbnVtYmVyIEkxKDMpLAogICAgICAgIHN0YXR1cyBJMSgxKSc7Cgokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoVVBDT1VQT05fUFJJWkVfVEFCTEUsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7ICAgCgovLyBVUENPVVBPTl9DVVNUT01FUl9UQUJMRQoKJGZsZHMgPSAnY291cG9uX2N1c3RvbWVyX2lkIEkgS0VZIEFVVE8sCiAgICAgICAgZmlyc3RfbmFtZSBDKDEwMCksCiAgICAgICAgbGFzdF9uYW1lIEMoMTAwKSwKICAgICAgICBlbWFpbCBDKDQ1KSwKICAgICAgICBwaG9uZSBDKDE1KSwKICAgICAgICBuZXdzbGV0dGVyIEkxKDEpLAogICAgICAgIGlwIEMoMTUpLAogICAgICAgIHN0YXR1cyBJMSgxKSwgCiAgICAgICAgcGFzc3dvcmQgQyg4KSwKICAgICAgICBzYWx0IEMoOCksCiAgICAgICAgY2hlY2tzdW0gQygzMiksCiAgICAgICAgcmVnaXN0cmF0aW9uX2RhdGUgJy5DTVNfQURPREJfRFQuJywKICAgICAgICB0aW1lc3RhbXAgSSgxMSknOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKFVQQ09VUE9OX0NVU1RPTUVSX1RBQkxFLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gVVBDT1VQT05fQ09ERV9UQUJMRQoKJGZsZHMgPSAnY291cG9uX2NvZGVfaWQgSSBLRVkgQVVUTywKICAgICAgICBjb3Vwb25fcHJpemVfaWQgSSwKICAgICAgICBjb3Vwb25fY3VzdG9tZXJfaWQgSSwKICAgICAgICBjb3Vwb25fY29kZSBDKDE2KSwKICAgICAgICB0aW1lc3RhbXAgSSgxMSknOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKFVQQ09VUE9OX0NPREVfVEFCTEUsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyBpbmRleGVzCgokZGJfcHJlZml4ID0gY21zX2RiX3ByZWZpeCgpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCRkYl9wcmVmaXguJ2luZGV4X21vZHVsZV91cGNvdXBvbl9jb2RlX2J5X2NvdXBvbl9jdXN0b21lcl9pZCcsIFVQQ09VUE9OX0NPREVfVEFCTEUsICdjb3Vwb25fY3VzdG9tZXJfaWQnKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCRkYl9wcmVmaXguJ2luZGV4X21vZHVsZV91cGNvdXBvbl9jb2RlX2J5X2NvdXBvbl9jb2RlJywgVVBDT1VQT05fQ09ERV9UQUJMRSwgJ2NvdXBvbl9jb2RlJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwZXJtaXNzaW9ucwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJywgJ01vZGlmeSBVcENvdXBvbicpOwkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBldmVudHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvbkFjdGlvbkFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25BY3Rpb25FZGl0ZWQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvbkFjdGlvbkRlbGV0ZWQnKTsKCiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25QZXJpb2RBZGRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uUGVyaW9kRWRpdGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25QZXJpb2REZWxldGVkJyk7CgokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uUHJpemVBZGRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uUHJpemVFZGl0ZWQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvblByaXplRGVsZXRlZCcpOwoKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvbldpbm5lckFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25XaW5uZXJFZGl0ZWQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdVcENvdXBvbldpbm5lckRlbGV0ZWQnKTsKCiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZUFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25UZW1wbGF0ZUVkaXRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uVGVtcGxhdGVEZWxldGVkJyk7CgokdGhpcy0+Q3JlYXRlRXZlbnQoJ1VwQ291cG9uUHJlZmVyZW5jZUFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25QcmVmZXJlbmNlRWRpdGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnVXBDb3Vwb25QcmVmZXJlbmNlRGVsZXRlZCcpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZWZlcmVuY2VzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi8vICRnQ21zLT5TZXRQcmVmZXJlbmNlKCdzaWdudXBfZW1haWxfc3ViamVjdCcsICRnQ21zLT5sYW5nKCdhY2NvdW50IGRldGFpbHMnKSk7CgokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpICk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBtZXRob2QudW5pbnN0YWxsLnBocCAxMiAyMDEyLTA3LTEyIDEwOjAyOjI5WiBhcm5vdWQgJCAKCiNCRUdJTl9MSUNFTlNFCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcENvdXBvbiAoYykgMjAxMS0yMDEyIGJ5IEFybm91ZCB2YW4gU3VzdGVyZW4gKGFybm91ZEB1cHNlcnZpY2UubmwpCiMKIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBzZXR1cCBhIENvdXBvbiBDb2RlcyBMb3R0ZXJ5CiMgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHRhYmxlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokZGIgPSAkdGhpcy0+R2V0RGIoKTsgCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoVVBDT1VQT05fQUNUSU9OX1RBQkxFKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChVUENPVVBPTl9QRVJJT0RfVEFCTEUpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKFVQQ09VUE9OX1BSSVpFX1RBQkxFKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChVUENPVVBPTl9DVVNUT01FUl9UQUJMRSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoVVBDT1VQT05fQ09ERV9UQUJMRSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwZXJtaXNzaW9ucwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTW9kaWZ5IFVwQ291cG9uJywgJ01vZGlmeSBVcENvdXBvbicpOwkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBldmVudHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvbkFjdGlvbkFkZGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25BY3Rpb25FZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvbkFjdGlvbkRlbGV0ZWQnKTsKCiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25QZXJpb2RBZGRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uUGVyaW9kRWRpdGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25QZXJpb2REZWxldGVkJyk7CgokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uUHJpY2VBZGRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uUHJpY2VFZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblByaWNlRGVsZXRlZCcpOwoKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvbldpbm5lckFkZGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25XaW5uZXJFZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvbldpbm5lckRlbGV0ZWQnKTsKCiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25TdGF0aXN0aWNzQWRkZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblN0YXRpc3RpY3NFZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblN0YXRpc3RpY3NEZWxldGVkJyk7CgokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uVGVtcGxhdGVzQWRkZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblRlbXBsYXRlc0VkaXRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnQoJ1VwQ291cG9uVGVtcGxhdGVzRGVsZXRlZCcpOwoKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblByZWZlcmVuY2VzQWRkZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdVcENvdXBvblByZWZlcmVuY2VzRWRpdGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnVXBDb3Vwb25QcmVmZXJlbmNlc0RlbGV0ZWQnKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcmVmZXJlbmNlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwoKJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpICk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/action_add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV90ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0aXRsZV9pbnB1dH08L3A+Cgk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRhbGlhc190ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRhbGlhc19pbnB1dH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlc2NyaXB0aW9uX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRlc2NyaXB0aW9uX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskc3RhcnRfZGF0ZV90ZXh0fTo8L3A+CiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSRzdGFydF9kYXRlX3ByZWZpeCB0aW1lPSRzdGFydF9kYXRlIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxNSJ9IHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kc3RhcnRfZGF0ZV9wcmVmaXggdGltZT0kc3RhcnRfZGF0ZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVuZF9kYXRlX3RleHR9OjwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JGVuZF9kYXRlX3ByZWZpeCB0aW1lPSRlbmRfZGF0ZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTUifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JGVuZF9kYXRlX3ByZWZpeCB0aW1lPSRlbmRfZGF0ZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHN0YXR1c190ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdGF0dXNfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/action_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKZnVuY3Rpb24gc2VsZWN0QWxsKCkgewogICAgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogICAgZm9yIChpPTA7IGk8Y2hlY2tib3hlcy5sZW5ndGggOyBpKyspIHsKICAgICAgICBpZiAoY2hlY2tib3hlc1tpXS50eXBlID09ICJjaGVja2JveCIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2hlY2tlZD0hY2hlY2tib3hlc1tpXS5jaGVja2VkOwogICAgICAgIH0KICAgIH0gIAp9Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgp7aWYgaXNzZXQoJGFjdGlvbl9tZXNzYWdlKSAmJiAkYWN0aW9uX21lc3NhZ2UgIT0gJyd9eyRhY3Rpb25fbWVzc2FnZX17L2lmfQoKe2lmICRpdGVtY291bnQgPiAwfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRfbGlua308L3A+CjwvZGl2Pgp7L2lmfQoKeyRzdGFydGZvcm19Cgp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdldzMwIj57JHRpdGxlX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRhbGlhc190ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdldzI1Ij57JHN0YXJ0X2RhdGVfdGV4dH08L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZXcyNSI+eyRlbmRfZGF0ZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdldzEwIj57JHN0YXR1c190ZXh0fTwvdGg+ICAgICAgICAKICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgICAgPHRoPjxhIGhyZWY9ImphdmFzY3JpcHQ6c2VsZWN0QWxsKCk7Ij57JHNlbGVjdF90ZXh0fTwvYT48L3RoPgogICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogICAge2NhcHR1cmUgYXNzaWduPSJjeWNsZSJ9e2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn17L2NhcHR1cmV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9JzsiPgogICAgICAgIDx0ZD4oeyRlbnRyeS0+Y291cG9uX2FjdGlvbl9pZH0pIDxhIGhyZWY9InskZW50cnktPmVkaXR1cmx9Ij57JGVudHJ5LT50aXRsZX08L2E+PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+YWxpYXN9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+c3RhcnRfZGF0ZX08L3RkPiAgICAgICAKICAgICAgICA8dGQ+eyRlbnRyeS0+ZW5kX2RhdGV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+YXBwcm92ZV9saW5rfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmVkaXRfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5zZWxlY3R9PC90ZD4KICAgPC90cj4KICAgey9mb3JlYWNofQogICA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoKPGRpdiBzdHlsZT0id2lkdGg6IDk3JTsiPgogICAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgo8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkX2xpbmt9PC9wPgogICAgPC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KICAgIDxkaXYgY2xhc3M9InBhZ2VvcHRpb24iIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KeyRzdWJtaXRfbWFzc2RlbGV0ZX0gICAKICAgIDwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/factory_template_prize.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjdG9yeV90ZW1wbGF0ZV9wcml6ZSAqfQoKeyogcmVtb3ZlIGlubGluZSBjc3MgKn0KCntsaXRlcmFsfQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKaW1nLmxlZnQgewogICAgZmxvYXQ6IGxlZnQ7CgltYXJnaW4tcmlnaHQ6IDIwcHg7CQp9CgppbWcucmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0OwoJbWFyZ2luLWxlZnQ6IDIwcHg7CQp9Cgo8L3N0eWxlPgp7L2xpdGVyYWx9Cgp7KiAvcmVtb3ZlIGlubGluZSBjc3MgKn0KCntjYXB0dXJlIGFzc2lnbj0ncGVyaW9kX3RpdGxlJ317L2NhcHR1cmV9ICAKCntjYXB0dXJlIGFzc2lnbj0nYnVsbGV0X2xpbmtzJ30KCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09Iml0ZW0iIG5hbWU9Imxvb3AifQogICAge2lmICRzbWFydHkuZm9yZWFjaC5sb29wLmluZGV4ID09IDB9Cgo8Yj57JGl0ZW0tPmFjdGlvbl90aXRsZX06IHskaXRlbS0+YWN0aW9uX3N0YXJ0X2RhdGV8ZGF0ZV9mb3JtYXQ6IiVkICVCICVZIn0gLSB7JGl0ZW0tPmFjdGlvbl9lbmRfZGF0ZXxkYXRlX2Zvcm1hdDoiJWQgJUIgJVkifTwvYj4KPHVsPgogICAgey9pZn0KICAgIAogICAge2lmICRwZXJpb2RfdGl0bGUgIT0gJGl0ZW0tPnBlcmlvZF90aXRsZX0gCjxsaT57JGl0ZW0tPnBlcmlvZF90aXRsZX06IHskaXRlbS0+cGVyaW9kX3N0YXJ0X2RhdGV8ZGF0ZV9mb3JtYXQ6IiVkICVCICVZIn0gLSB7JGl0ZW0tPnBlcmlvZF9lbmRfZGF0ZXxkYXRlX2Zvcm1hdDoiJWQgJUIgJVkifTwvbGk+CiAgICB7L2lmfQogICAge2NhcHR1cmUgYXNzaWduPSdwZXJpb2RfdGl0bGUnfXskaXRlbS0+cGVyaW9kX3RpdGxlfXsvY2FwdHVyZX0gCnsvZm9yZWFjaH0gICAgCjwvdWw+CnsvY2FwdHVyZX0KCntjYXB0dXJlIGFzc2lnbj0ncGVyaW9kX3RpdGxlJ317L2NhcHR1cmV9ICAKCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09Iml0ZW0iIG5hbWU9Imxvb3AifQoKICAgIHsqIGRpc3BsYXkgYWN0aW9uIGRhdGEgKn0KICAgIHtpZiAkc21hcnR5LmZvcmVhY2gubG9vcC5pbmRleCA9PSAwfQo8aDE+eyRpdGVtLT5hY3Rpb25fdGl0bGV9PC9oMT4Keyo8aDE+eyRpdGVtLT5hY3Rpb25fc3RhcnRfZGF0ZXxkYXRlX2Zvcm1hdDoiJWQgJUIgJVkifSAtIHskaXRlbS0+YWN0aW9uX2VuZF9kYXRlfGRhdGVfZm9ybWF0OiIlZCAlQiAlWSJ9PC9oMT4qfQoKPHA+CjxiciAvPjxiPnskaXRlbS0+YWN0aW9uX2Rlc2NyaXB0aW9ufTwvYj48YnIgLz48YnIgLz4KCgp7JGJ1bGxldF9saW5rc30KCjwvcD4KICAgIHsvaWZ9CiAKICAgIHsqIGRpc3BsYXkgcGVyaW9kIGRhdGEgKn0KICAgIHtpZiAkcGVyaW9kX3RpdGxlICE9ICRpdGVtLT5wZXJpb2RfdGl0bGV9IAo8YSBuYW1lPSJpdGVtLXskc21hcnR5LmZvcmVhY2gubG9vcC5pbmRleH0iPjwvYT4gIAo8YnIgLz48aDM+eyRpdGVtLT5wZXJpb2RfdGl0bGV9OiB7JGl0ZW0tPnBlcmlvZF9zdGFydF9kYXRlfGRhdGVfZm9ybWF0OiIlZCAlQiAlWSJ9IC0geyRpdGVtLT5wZXJpb2RfZW5kX2RhdGV8ZGF0ZV9mb3JtYXQ6IiVkICVCICVZIn08L2gzPgo8aHIgLz4KCiAgICB7L2lmfQoKICAgIHtjYXB0dXJlIGFzc2lnbj0ncGVyaW9kX3RpdGxlJ317JGl0ZW0tPnBlcmlvZF90aXRsZX17L2NhcHR1cmV9ICAgICAgCiAgICAKICAgIHsqIGRpc3BsYXkgcHJpemUgZGF0YSAqfQogICAgCjxoND57JGl0ZW0tPnByaXplX251bWJlcn14IHskaXRlbS0+cHJpemVfdGl0bGV9eyokaXRlbS0+cHJpemVfY29kZSp9PC9oND4gICAgCgp7aWYgJGl0ZW0tPnBlcmlvZF9maW5hbH0KPGJyIC8+PGZvbnQgY29sb3I9I0ZGMDAwMD48Yj5EaXQgaXMgZGUgZmluYWxlLCB3YXQgZWVuIHByaWpzITwvYj48L2ZvbnQ+PGJyIC8+CnsvaWZ9Cgo8cD4Ke2V2YWwgdmFyPSRpdGVtLT5wcml6ZV9kZXNjcmlwdGlvbn0gPGJyIC8+PGJyIC8+CjwvcD4KCnsvZm9yZWFjaH0KCjxiciAvPjxiciAvPgoKeyogL2ZhY3RvcnlfdGVtcGxhdGVfcHJpemUgKn0K]]></data>
	</file>
	<file>
	  <filename>/templates/factory_template_register.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjdG9yeV90ZW1wbGF0ZV9yZWdpc3RlciAqfQoKeyogdmFsaWRhdGlvbiBqcyAqfQoKe2NhcHR1cmUgYXNzaWduPSd2YWxpZGF0aW9uX3J1bGVzJ30Ke2xpdGVyYWx9CiAgICAkLmV4dGVuZCgkLnZhbGlkYXRvci5tZXNzYWdlcywgewogICAgICAgIHJlcXVpcmVkOiAiey9saXRlcmFsfXskdXBjb3Vwb24tPmxhbmcoJ2pzX3JlcXVpcmVkJyl9e2xpdGVyYWx9IiwKICAgICAgICBlbWFpbDogInsvbGl0ZXJhbH17JHVwY291cG9uLT5sYW5nKCdqc19lbWFpbCcpfXtsaXRlcmFsfSIsCiAgICAgICAgbnVtYmVyOiAiey9saXRlcmFsfXskdXBjb3Vwb24tPmxhbmcoJ2pzX251bWJlcicpfXtsaXRlcmFsfSIsCiAgICAgICAgbWlubGVuZ3RoOiAiey9saXRlcmFsfXskdXBjb3Vwb24tPmxhbmcoJ2pzX21pbmxlbmd0aCcpfXtsaXRlcmFsfSIgCiAgICB9KTsKICAgIAogICAgJCgiI3svbGl0ZXJhbH17JGZ1bGxfZm9ybV9pZH17bGl0ZXJhbH0iKS52YWxpZGF0ZSh7CiAgICAgICAgZXJyb3JFbGVtZW50OiAic3BhbiIsCiAgICAgICAgZXJyb3JQbGFjZW1lbnQ6IGZ1bmN0aW9uKGVycm9yLCBlbGVtZW50KSB7CiAgICAgICAgICAgICBlcnJvci5pbnNlcnRBZnRlcihlbGVtZW50LmNsb3Nlc3QoInNwYW4iKSk7ICAKICAgICAgICB9LAogICAgICAgIGdyb3VwczogewogICAgICAgICAgICBjb3Vwb25fY29kZV9wYXJ0czogInsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDEgey9saXRlcmFsfXskZm9ybV9pZH17bGl0ZXJhbH1jb3Vwb25fY29kZV8wMiB7L2xpdGVyYWx9eyRmb3JtX2lkfXtsaXRlcmFsfWNvdXBvbl9jb2RlXzAzIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDQiICAgCiAgICAgICAgfSwKICAgICAgICBtZXNzYWdlczogewogICAgICAgICAgICB7L2xpdGVyYWx9eyRmb3JtX2lkfXtsaXRlcmFsfWNvdXBvbl9jb2RlXzAxOiB7CiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICJ7L2xpdGVyYWx9eyR1cGNvdXBvbi0+bGFuZygnanNfbWlubGVuZ3RoX211bHRpcGxlJyl9e2xpdGVyYWx9IgogICAgICAgICAgICB9LAogICAgICAgICAgICB7L2xpdGVyYWx9eyRmb3JtX2lkfXtsaXRlcmFsfWNvdXBvbl9jb2RlXzAyOiB7CiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICJ7L2xpdGVyYWx9eyR1cGNvdXBvbi0+bGFuZygnanNfbWlubGVuZ3RoX211bHRpcGxlJyl9e2xpdGVyYWx9IgogICAgICAgICAgICB9LAogICAgICAgICAgICB7L2xpdGVyYWx9eyRmb3JtX2lkfXtsaXRlcmFsfWNvdXBvbl9jb2RlXzAzOiB7CiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICJ7L2xpdGVyYWx9eyR1cGNvdXBvbi0+bGFuZygnanNfbWlubGVuZ3RoX211bHRpcGxlJyl9e2xpdGVyYWx9IiAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgey9saXRlcmFsfXskZm9ybV9pZH17bGl0ZXJhbH1jb3Vwb25fY29kZV8wNDogewogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiAiey9saXRlcmFsfXskdXBjb3Vwb24tPmxhbmcoJ2pzX21pbmxlbmd0aF9tdWx0aXBsZScpfXtsaXRlcmFsfSIKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHJ1bGVzOiB7CiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Zmlyc3RfbmFtZTogInJlcXVpcmVkIiwKICAgICAgICAgICAgey9saXRlcmFsfXskZm9ybV9pZH17bGl0ZXJhbH1sYXN0X25hbWU6ICJyZXF1aXJlZCIsCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9ZW1haWw6IHsKICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICAgIGVtYWlsOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAgICAgey9saXRlcmFsfXskZm9ybV9pZH17bGl0ZXJhbH1waG9uZTogewogICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICAgICAgICBudW1iZXI6IHRydWUsCiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IDEwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDE6IHsKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgICAgICAgbnVtYmVyOiB0cnVlLAogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiA0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDI6IHsKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgICAgICAgbnVtYmVyOiB0cnVlLAogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiA0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDM6IHsKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgICAgICAgbnVtYmVyOiB0cnVlLAogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiA0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9Y291cG9uX2NvZGVfMDQ6IHsKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgICAgICAgbnVtYmVyOiB0cnVlLAogICAgICAgICAgICAgICAgbWlubGVuZ3RoOiA0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsvbGl0ZXJhbH17JGZvcm1faWR9e2xpdGVyYWx9dGVybXNfYW5kX2NvbmRpdGlvbnM6ICJyZXF1aXJlZCIKICAgICAgICB9CiAgICB9KTsKey9saXRlcmFsfQp7L2NhcHR1cmV9Cgp7bGl0ZXJhbH0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoKLy8kLnZhbGlkYXRvci5zZXREZWZhdWx0cyh7CgkvL3N1Ym1pdEhhbmRsZXI6IGZ1bmN0aW9uKCkgeyBhbGVydCgidmVyc3R1dXJkIik7IH0KLy99KTsKCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogICAgICAgIHsvbGl0ZXJhbH17JHZhbGlkYXRpb25fcnVsZXN9e2xpdGVyYWx9Cn0pOwoKPC9zY3JpcHQ+Cgp7L2xpdGVyYWx9Cgp7KiAvdmFsaWRhdGlvbiBqcyAqfQoKPGhyIC8+Cgp7JHN0YXJ0Zm9ybX0KeyRoaWRkZW59Cgp7aWYgJGlzX3JlZ2lzdGVyZWQgPT0gJzEnfQogICAgeyRzX3NfY291cG9uX2NvZGVfcmVnaXN0ZXJlZF90ZXh0fSA8YnIgLz48YnIgLz4KCnskZGVsZXRlX2NvdXBvbl9jb2RlX2Nvb2tpZV90ZXh0fSA8YnIgLz48YnIgLz4KCjxhIGhyZWY9InskZGVsZXRlX2NvdXBvbl9jb2RlX2Nvb2tpZV9saW5rfSI+eyRkZWxldGVfdGV4dH08L2E+PGJyIC8+PGJyIC8+CiAgICAKey9pZn0KCjxmaWVsZHNldCBjbGFzcz0ibWFpbmZvcm0iPgoKPHNwYW4gY2xhc3M9ImhlYWRlciI+eyRyZWdpc3Rlcl9jb3Vwb25fY29kZV90ZXh0fTxiciAvPjxiciAvPjwvc3Bhbj4KCjxkaXYgY2xhc3M9InJvdyI+CjxsYWJlbCBmb3I9ImZpcnN0X25hbWUiPnskZmlyc3RfbmFtZV90ZXh0fTo8L2xhYmVsPgo8c3BhbiBjbGFzcz0iYmciPnskZmlyc3RfbmFtZV9pbnB1dH08L3NwYW4+CntpZiBpc3NldCgkZXJyb3JfYXJyYXkuZmlyc3RfbmFtZSl9CjxzcGFuIGNsYXNzPSJlcnJvciI+eyR1cGNvdXBvbi0+bGFuZygnanNfcmVxdWlyZWQnKX08L3NwYW4+CnsvaWZ9CjwvZGl2PgoKPGRpdiBjbGFzcz0icm93Ij4KPGxhYmVsIGZvcj0ibGFzdF9uYW1lIj57JGxhc3RfbmFtZV90ZXh0fTo8L2xhYmVsPgo8c3BhbiBjbGFzcz0iYmciPnskbGFzdF9uYW1lX2lucHV0fTwvc3Bhbj4Ke2lmIGlzc2V0KCRlcnJvcl9hcnJheS5sYXN0X25hbWUpfQo8c3BhbiBjbGFzcz0iZXJyb3IiPnskdXBjb3Vwb24tPmxhbmcoJ2pzX3JlcXVpcmVkJyl9PC9zcGFuPgp7L2lmfQo8L2Rpdj4KCjxkaXYgY2xhc3M9InJvdyI+CjxsYWJlbCBmb3I9ImVtYWlsIj57JGVtYWlsX3RleHR9OjwvbGFiZWw+CjxzcGFuIGNsYXNzPSJiZyI+eyRlbWFpbF9pbnB1dH08L3NwYW4+CntpZiBpc3NldCgkZXJyb3JfYXJyYXkuZW1haWwpfQo8c3BhbiBjbGFzcz0iZXJyb3IiPnskdXBjb3Vwb24tPmxhbmcoJ2pzX2VtYWlsJyl9PC9zcGFuPgp7L2lmfQo8L2Rpdj4KCjxkaXYgY2xhc3M9InJvdyI+CjxsYWJlbCBmb3I9InBob25lIj57JHBob25lX3RleHR9OjwvbGFiZWw+CjxzcGFuIGNsYXNzPSJiZyI+eyRwaG9uZV9pbnB1dH08L3NwYW4+CntpZiBpc3NldCgkZXJyb3JfYXJyYXkucGhvbmUpfQo8c3BhbiBjbGFzcz0iZXJyb3IiPnskdXBjb3Vwb24tPmxhbmcoJ2pzX251bWJlcicpfTwvc3Bhbj4Key9pZn0KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJyb3ciPgo8bGFiZWwgZm9yPSJjb3Vwb25fY29kZSI+eyRjb3Vwb25fY29kZV90ZXh0fTo8L2xhYmVsPgo8c3BhbiBjbGFzcz0iYmciPnskY291cG9uX2NvZGVfMDFfaW5wdXR9eyRjb3Vwb25fY29kZV8wMl9pbnB1dH17JGNvdXBvbl9jb2RlXzAzX2lucHV0fSB7JGNvdXBvbl9jb2RlXzA0X2lucHV0fTwvc3Bhbj4Ke2lmIGlzc2V0KCRlcnJvcl9hcnJheS5jb3Vwb25fY29kZSl9CjxzcGFuIGNsYXNzPSJlcnJvciI+eyR1cGNvdXBvbi0+bGFuZygnanNfbnVtYmVyJyl9PC9zcGFuPgp7L2lmfQo8L2Rpdj4KCjxkaXYgY2xhc3M9InJvdyI+CjxsYWJlbCBmb3I9InRlcm1zX2FuZF9jb25kaXRpb25zIj57JHRlcm1zX2FuZF9jb25kaXRpb25zX3RleHR9OjwvbGFiZWw+CjxzcGFuIGNsYXNzPSJiZyI+eyR0ZXJtc19hbmRfY29uZGl0aW9uc19pbnB1dH08L3NwYW4+CjxzcGFuIGNsYXNzPSJ0eHQiPiZuYnNwOyA8YSBocmVmPSIjIj57JHRlcm1zX2FuZF9jb25kaXRpb25zX2FncmVlX3RleHR9PC9hPjwvc3Bhbj4Ke2lmIGlzc2V0KCRlcnJvcl9hcnJheS50ZXJtc19hbmRfY29uZGl0aW9ucyl9CjxzcGFuIGNsYXNzPSJlcnJvciI+eyR1cGNvdXBvbi0+bGFuZygnanNfcmVxdWlyZWQnKX08L3NwYW4+CnsvaWZ9CjwvZGl2PgoKPGRpdiBjbGFzcz0icm93Ij4KPGxhYmVsIGZvcj0ibmV3c2xldHRlciI+eyRuZXdzbGV0dGVyX3RleHR9OjwvbGFiZWw+CjxzcGFuIGNsYXNzPSJiZyI+eyRuZXdzbGV0dGVyX2lucHV0fTwvc3Bhbj4KPHNwYW4gY2xhc3M9InR4dCI+Jm5ic3A7IDxhIGhyZWY9IiMiPnskbmV3c2xldHRlcl9hZ3JlZV90ZXh0fTwvYT48L3NwYW4+CntpZiBpc3NldCgkZXJyb3JfYXJyYXkubmV3c2xldHRlcil9CjxzcGFuIGNsYXNzPSJlcnJvciI+eyR1cGNvdXBvbi0+bGFuZygnanNfb3B0aW9uYWwnKX08L3NwYW4+CnsvaWZ9CjwvZGl2PgoKPGRpdiBjbGFzcz0icm93Ij4KPGxhYmVsPiZuYnNwOzwvbGFiZWw+CjxzcGFuIGNsYXNzPSJidXR0b24tY29udGFpbmVyIj57JHN1Ym1pdH08L3NwYW4+CjwvZGl2PgoKPC9maWVsZHNldD4KCnskZW5kZm9ybX0KCjxociAvPgoKeyogL2ZhY3RvcnlfdGVtcGxhdGVfcmVnaXN0ZXIgKn0K]]></data>
	</file>
	<file>
	  <filename>/templates/factory_template_winner.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjdG9yeV90ZW1wbGF0ZV93aW5uZXIgKn0KCjxociAvPgoKe2NhcHR1cmUgYXNzaWduPSJucl9vZl9pdGVtcyJ9eyR3aW5uZXJpdGVtc3xAY291bnR9ey9jYXB0dXJlfQp7Y2FwdHVyZSBhc3NpZ249Im5yX29mX2l0ZW1zX21pbiJ9e21hdGggZXF1YXRpb249InggLSAxIiB4PSR3aW5uZXJpdGVtc3xAY291bnR9ey9jYXB0dXJlfQoKe2lmICRucl9vZl9pdGVtc30KPGgzPnskd2lubmVyX3BfdGV4dH08L2gzPjxiciAvPgp7L2lmfQoKe3NlY3Rpb24gbmFtZT0iaSIgc3RhcnQ9IjAiIGxvb3A9JG5yX29mX2l0ZW1zIHN0ZXA9IjEifQogICAge2Fzc2lnbiB2YXI9cHJldl9rZXkgdmFsdWU9JHNtYXJ0eS5zZWN0aW9uLmkuaW5kZXgtMX0KICAgIHthc3NpZ24gdmFyPWtleSB2YWx1ZT0kc21hcnR5LnNlY3Rpb24uaS5pbmRleH0KICAgIHthc3NpZ24gdmFyPW5leHRfa2V5IHZhbHVlPSRzbWFydHkuc2VjdGlvbi5pLmluZGV4KzF9CgoKeyogaGVhZGVyICp9CntpZiAka2V5ID09IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMiIgY2VsbHNwYWNpbmc9IjIiIGJvcmRlcj0iMCIgd2lkdGg9Ijk5JSI+CiAgICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgICAgPHRoPnskcHJpemVfY29kZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskdGl0bGVfdGV4dH08L3RoPgogICAgICAgIDx0aD57JG5hbWVfdGV4dH08L3RoPgogICAgICAgIHsqIDx0aD57JGVtYWlsX3RleHR9PC90aD4gKn0KICAgICAgICB7KiA8dGg+eyRwaG9uZV90ZXh0fTwvdGg+ICp9CiAgICAgICAgPHRoPnskY291cG9uX2NvZGVfdGV4dH08L3RoPgogICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CnsvaWZ9CntpZiAka2V5ID09IDAgfHwgJHdpbm5lcml0ZW1zWyRrZXldLT5wZXJpb2RfdGl0bGUgbmUgJHdpbm5lcml0ZW1zWyRwcmV2X2tleV0tPnBlcmlvZF90aXRsZX0KICAgIDx0cj4KICAgICAgICA8dGQgY29sc3Bhbj0iNiI+PHN0cm9uZz57JHdpbm5lcml0ZW1zWyRrZXldLT5hY3Rpb25fdGl0bGV9IC8geyR3aW5uZXJpdGVtc1ska2V5XS0+cGVyaW9kX3RpdGxlfTwvc3Ryb25nPjwvdGQ+CiAgICA8L3RyPiAgICAgICAgCnsvaWZ9CnsqIC9oZWFkZXIgKn0KCnsqIGJvZHkgKn0KICAgIDx0ciBiZ2NvbG9yPSJ7Y3ljbGUgdmFsdWVzPSIjODg4ODg4LCM5OTk5OTkifSI+CiAgICAgICAgPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPnByaXplX2NvZGV9PC90ZD4gIAogICAgICAgIDx0ZD57JHdpbm5lcml0ZW1zWyRrZXldLT5wcml6ZV90aXRsZX08L3RkPgogICAgICAgIDx0ZD57JHdpbm5lcml0ZW1zWyRrZXldLT5maXJzdF9uYW1lfSB7JHdpbm5lcml0ZW1zWyRrZXldLT5sYXN0X25hbWV9PC90ZD4KICAgICAgICB7KiA8dGQ+PGEgaHJlZj0ibWFpbHRvOnskd2lubmVyaXRlbXNbJGtleV0tPmVtYWlsfSI+eyR3aW5uZXJpdGVtc1ska2V5XS0+ZW1haWx9PC9hPjwvdGQ+ICp9CiAgICAgICAgeyogPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPmRhc2hlZF9waG9uZX08L3RkPiAqfQogICAgICAgIDx0ZD57JHdpbm5lcml0ZW1zWyRrZXldLT5kYXNoZWRfY291cG9uX2NvZGV9PC90ZD4KICAgPC90cj4KeyogL2JvZHkgKn0KCnsqIGZvb3RlciAqfQp7aWYgJGtleSA9PSAkbnJfb2ZfaXRlbXNfbWlufSAgIAogICAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0KeyogZm9vdGVyICp9Cgp7L3NlY3Rpb259Cgo8aHIgLz4KCnsqIC9mYWN0b3J5X3RlbXBsYXRlX3dpbm5lciAqfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/period_add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRhY3Rpb25fdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYWN0aW9uX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdGl0bGVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRzdGFydF9kYXRlX3RleHR9OjwvcD4KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHN0YXJ0X2RhdGVfcHJlZml4IHRpbWU9JHN0YXJ0X2RhdGUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzE1In0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSRzdGFydF9kYXRlX3ByZWZpeCB0aW1lPSRzdGFydF9kYXRlfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZW5kX2RhdGVfdGV4dH06PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPntodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kZW5kX2RhdGVfcHJlZml4IHRpbWU9JGVuZF9kYXRlIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxNSJ9IHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kZW5kX2RhdGVfcHJlZml4IHRpbWU9JGVuZF9kYXRlfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskaXNfZmluYWxfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaXNfZmluYWxfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRzdGF0dXNfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3RhdHVzX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGRlbn17JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/period_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKZnVuY3Rpb24gc2VsZWN0QWxsKCkgewogICAgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogICAgZm9yIChpPTA7IGk8Y2hlY2tib3hlcy5sZW5ndGggOyBpKyspIHsKICAgICAgICBpZiAoY2hlY2tib3hlc1tpXS50eXBlID09ICJjaGVja2JveCIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2hlY2tlZD0hY2hlY2tib3hlc1tpXS5jaGVja2VkOwogICAgICAgIH0KICAgIH0gIAp9Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgp7aWYgaXNzZXQoJHBlcmlvZF9tZXNzYWdlKSAmJiAkcGVyaW9kX21lc3NhZ2UgIT0gJyd9eyRwZXJpb2RfbWVzc2FnZX17L2lmfQoKe2lmICRpdGVtY291bnQgPiAwfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRfbGlua308L3A+CjwvZGl2Pgp7L2lmfQoKeyRzdGFydGZvcm19Cgp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgICAgPHRoPnskYWN0aW9uX3RleHR9PC90aD4KICAgICAgICA8dGg+eyR0aXRsZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskc3RhcnRfZGF0ZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskZW5kX2RhdGVfdGV4dH08L3RoPgogICAgICAgIDx0aD57JGlzX2ZpbmFsX3RleHR9PC90aD4gIAogICAgICAgIDx0aD57JHN0YXR1c190ZXh0fTwvdGg+ICAgICAgICAKICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgICAgPHRoPjxhIGhyZWY9ImphdmFzY3JpcHQ6c2VsZWN0QWxsKCk7Ij57JHNlbGVjdF90ZXh0fTwvYT48L3RoPgogICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogICAge2NhcHR1cmUgYXNzaWduPSJjeWNsZSJ9e2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn17L2NhcHR1cmV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9JzsiPgogICAgICAgIDx0ZD57JGVudHJ5LT5jb3Vwb25fYWN0aW9uX3RpdGxlfXsqKHskZW50cnktPmNvdXBvbl9hY3Rpb25faWR9KSp9PC90ZD4gICAKICAgICAgICA8dGQ+PGEgaHJlZj0ieyRlbnRyeS0+ZWRpdHVybH0iPnskZW50cnktPmNvdXBvbl9wZXJpb2RfdGl0bGV9PC9hPiB7Kih7JGVudHJ5LT5jb3Vwb25fcGVyaW9kX2lkfSkqfTwvdGQ+ICAgICAKICAgICAgICA8dGQ+eyRlbnRyeS0+c3RhcnRfZGF0ZX08L3RkPiAgICAgICAKICAgICAgICA8dGQ+eyRlbnRyeS0+ZW5kX2RhdGV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+aXNfZmluYWx9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+YXBwcm92ZV9saW5rfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmVkaXRfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVfbGlua308L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5zZWxlY3R9PC90ZD4KICAgPC90cj4KICAgey9mb3JlYWNofQogICA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoKPGRpdiBzdHlsZT0id2lkdGg6IDk3JTsiPgogICAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgo8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkX2xpbmt9PC9wPgogICAgPC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KICAgIDxkaXYgY2xhc3M9InBhZ2VvcHRpb24iIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KeyRzdWJtaXRfbWFzc2RlbGV0ZX0gICAKICAgIDwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/preferences_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRwcmVmZXJlbmNlc19tZXNzYWdlKSAmJiAkcHJlZmVyZW5jZXNfbWVzc2FnZSAhPSAnJ317JHByZWZlcmVuY2VzX21lc3NhZ2V9ey9pZn0KCnskc3RhcnRmb3JtfQoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskc2VjdGlvbl9lbWFpbF9yZWdpc3RlcmVkX2N1c3RvbWVyfTwvbGVnZW5kPgoKeyRlbWFpbF9yZWdpc3RlcmVkX3RydWVfZmFsc2VfdGV4dH0KCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRlbWFpbF9yZWdpc3RlcmVkX2N1c3RvbWVyX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfY3VzdG9tZXJfaW5wdXR9PC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRlbWFpbF9yZWdpc3RlcmVkX3N1YmplY3RfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZW1haWxfcmVnaXN0ZXJlZF9zdWJqZWN0X2lucHV0fTwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfYWRkcmVzc19lbWFpbF9pbnB1dH0gPGJyIC8+IAoJCXskZW1haWxfcmVnaXN0ZXJlZF9hZGRyZXNzX2VtYWlsX2hlbHB9CgkJPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZV90ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRlbWFpbF9yZWdpc3RlcmVkX2FkZHJlc3NfbmFtZV9pbnB1dH08L3A+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV9pbnB1dH08L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV92YXJzfSA8YSBocmVmPSIjIiBvbmNsaWNrPSJ0b2dnbGVjb2xsYXBzZSgndmFyaWFibGVzaW5mb19tZXNzYWdlJyk7IHJldHVybiBmYWxzZTsiPnskZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3ZhcnNfbGlua308L2E+PC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJ2YXJpYWJsZXNpbmZvX21lc3NhZ2UiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2VfdmFyc19saXN0fTwvcD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfaW5wdXR9PC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRlbWFpbF9yZWdpc3RlcmVkX21lc3NhZ2Vfd2lubmVyX3ZhcnN9IDxhIGhyZWY9IiMiIG9uY2xpY2s9InRvZ2dsZWNvbGxhcHNlKCd2YXJpYWJsZXNpbmZvX21lc3NhZ2Vfd2lubmVyJyk7IHJldHVybiBmYWxzZTsiPnskZW1haWxfcmVnaXN0ZXJlZF9tZXNzYWdlX3dpbm5lcl92YXJzX2xpbmt9PC9hPjwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBpZD0idmFyaWFibGVzaW5mb19tZXNzYWdlX3dpbm5lciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVtYWlsX3JlZ2lzdGVyZWRfbWVzc2FnZV93aW5uZXJfdmFyc19saXN0fTwvcD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgCiAgICA8YnIgLz4KPC9maWVsZHNldD4KPGJyIC8+CgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+Cgk8L2Rpdj4KCQp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/prize_add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRhY3Rpb25fdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYWN0aW9uX2lucHV0fTwvcD4KCTwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBlcmlvZF90ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwZXJpb2RfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcml6ZV9jb2RlX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHByaXplX2NvZGVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV90ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0aXRsZV9pbnB1dH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlc2NyaXB0aW9uX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRlc2NyaXB0aW9uX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbnVtYmVyX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG51bWJlcl9pbnB1dH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHN0YXR1c190ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdGF0dXNfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0KCntsaXRlcmFsfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKCiAgICAkKCcjYWN0aW9uZHJvcGRvd24nKS5jaGFuZ2UoZnVuY3Rpb24oKSB7ICAgICAgICAKICAgICAgICB2YXIgYWN0aXZlX2FjdGlvbl9vcHRpb24gPSAkKHRoaXMpLnZhbCgpOwogICAgICAgIGNoYW5nZV9wZXJpb2Rkcm9wZG93bihhY3RpdmVfYWN0aW9uX29wdGlvbik7CiAgICB9KTsKICAgIAogICAgdmFyIGFjdGl2ZV9hY3Rpb25fb3B0aW9uID0gJCgnI2FjdGlvbmRyb3Bkb3duJykudmFsKCk7CiAgICBjaGFuZ2VfcGVyaW9kZHJvcGRvd24oYWN0aXZlX2FjdGlvbl9vcHRpb24pOwoKfSk7CgpmdW5jdGlvbiBjaGFuZ2VfcGVyaW9kZHJvcGRvd24oYWN0aXZlX2FjdGlvbl9vcHRpb24pIHsKICAgICAgICAKICAgIHZhciBsaXN0ID0gWwp7L2xpdGVyYWx9CnskcGVyaW9kX2pzfSAgICAgICAgCntsaXRlcmFsfQogICAgXTsKICAgIAogICAgdmFyIGFjdGl2ZV9wZXJpb2QgPSAkLmdyZXAobGlzdCwgZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICByZXR1cm4gbi5wa2V5ID09IGFjdGl2ZV9hY3Rpb25fb3B0aW9uOwogICAgfSk7CgogICAgdmFyIG9wdGlvbnMgPSAnPG9wdGlvbiB2YWx1ZT0iIj4tLTwvb3B0aW9uPic7CgogICAgaWYgKGFjdGl2ZV9wZXJpb2QubGVuZ3RoID4gMCkgewogICAgICAgIG9wdGlvbnMgPSAnJzsKICAgICAgICBqUXVlcnkuZWFjaChhY3RpdmVfcGVyaW9kWzBdLCBmdW5jdGlvbihpLCB2YWwpIHsKICAgICAgICAgICAgaWYgKGkgPT0gJ3BrZXknKSB7IHJldHVybjsgfQogICAgICAgICAgICBvcHRpb25zICs9ICc8b3B0aW9uIHZhbHVlPSInK2krJyI+Jyt2YWwrJzwvb3B0aW9uPic7CiAgICAgICAgfSk7CiAgICB9CgogICAgJCgnI3BlcmlvZGRyb3Bkb3duJykuaHRtbChvcHRpb25zKTsKICAgIAogICAgdmFyIHNlbGVjdGVkX3BlcmlvZGRyb3Bkb3duID0gey9saXRlcmFsfSJ7JHNlbGVjdGVkX3BlcmlvZF9qc30ie2xpdGVyYWx9OwogICAgJCgiI3BlcmlvZGRyb3Bkb3duIikudmFsKCBzZWxlY3RlZF9wZXJpb2Rkcm9wZG93biApLmF0dHIoJ3NlbGVjdGVkJyx0cnVlKTsKICAgICAgIAp9CgovL11dPgo8L3NjcmlwdD4Key9saXRlcmFsfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/prize_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKZnVuY3Rpb24gc2VsZWN0QWxsKCkgewogICAgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogICAgZm9yIChpPTA7IGk8Y2hlY2tib3hlcy5sZW5ndGggOyBpKyspIHsKICAgICAgICBpZiAoY2hlY2tib3hlc1tpXS50eXBlID09ICJjaGVja2JveCIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2hlY2tlZD0hY2hlY2tib3hlc1tpXS5jaGVja2VkOwogICAgICAgIH0KICAgIH0gIAp9Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgp7aWYgaXNzZXQoJHByaXplX21lc3NhZ2UpICYmICRwcml6ZV9tZXNzYWdlICE9ICcnfXskcHJpemVfbWVzc2FnZX17L2lmfQoKe2lmICRpdGVtY291bnQgPiAwfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRfbGlua308L3A+CjwvZGl2Pgp7L2lmfQoKeyRzdGFydGZvcm19Cgp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgICAgPHRoPnskcHJpemVfY29kZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdldzEwIj57JG51bWJlcl90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskdGl0bGVfdGV4dH08L3RoPgogICAgICAgIDx0aD57JGFjdGlvbl9wZXJpb2RfdGV4dH08L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZXcxMCI+eyRzdGF0dXNfdGV4dH08L3RoPiAgICAgICAgCiAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICAgIDx0aD48YSBocmVmPSJqYXZhc2NyaXB0OnNlbGVjdEFsbCgpOyI+eyRzZWxlY3RfdGV4dH08L2E+PC90aD4KICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5PgogICAge2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAgIHtjYXB0dXJlIGFzc2lnbj0iY3ljbGUifXtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9ey9jYXB0dXJlfQogICAgPHRyIGNsYXNzPSJ7JGN5Y2xlfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGN5Y2xlfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JGN5Y2xlfSc7Ij4KICAgICAgICA8dGQ+PGEgaHJlZj0ieyRlbnRyeS0+ZWRpdHVybH0iPnskZW50cnktPnByaXplX2NvZGV9PC9hPjwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPm51bWJlcn14PC90ZD4gICAgCiAgICAgICAgPHRkPnskZW50cnktPnRpdGxlfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmNvdXBvbl9hY3Rpb25fdmFsdWV9eyooeyRlbnRyeS0+Y291cG9uX2FjdGlvbl9pZH0pKn0gLyB7JGVudHJ5LT5jb3Vwb25fcGVyaW9kX3ZhbHVlfXsqKHskZW50cnktPmNvdXBvbl9wZXJpb2RfaWR9KSp9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+YXBwcm92ZV9saW5rfXsqKHskZW50cnktPnN0YXR1c30pKn08L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5lZGl0X2xpbmt9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlX2xpbmt9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+c2VsZWN0fTwvdGQ+CiAgIDwvdHI+CiAgIHsvZm9yZWFjaH0KICAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCjxkaXYgc3R5bGU9IndpZHRoOiA5NyU7Ij4KICAgIDxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7Ij4KPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZF9saW5rfTwvcD4KICAgIDwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9uIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Cnskc3VibWl0X21hc3NkZWxldGV9ICAgCiAgICA8L2Rpdj4Key9pZn0KPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/statistics_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogICAgPHRoZWFkPgogICAgPHRyPgogICAgICAgIDx0aD57JHRpdGxlX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRzdGFydF9kYXRlX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRlbmRfZGF0ZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskcmVnaXN0cmF0aW9uc190ZXh0fTwvdGg+CiAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgIAogICAge2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAgIHtpZiAkY3ljbGUgPT0gJ3JvdzEnfQogICAgICAgIHthc3NpZ24gdmFyPSdjeWNsZScgdmFsdWU9J3JvdzInfQogICAge2Vsc2V9CiAgICAgICAge2Fzc2lnbiB2YXI9J2N5Y2xlJyB2YWx1ZT0ncm93MSd9CiAgICB7L2lmfQogICAgCiAgICB7aWYgJGVudHJ5LT5zaG93X2FjdGlvbl90aXRsZX0KICAgIDx0ciBjbGFzcz0ieyRjeWNsZX0iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX1ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX0nOyI+CiAgICAgICAgPHRkPjxiPnskZW50cnktPmFjdGlvbl90aXRsZX08L2I+PC90ZD4KICAgICAgICA8dGQ+PGI+eyRlbnRyeS0+YWN0aW9uX3N0YXJ0X2RhdGV9PC9iPjwvdGQ+CiAgICAgICAgPHRkPjxiPnskZW50cnktPmFjdGlvbl9lbmRfZGF0ZX08L2I+PC90ZD4KICAgICAgICA8dGQ+PGI+eyRlbnRyeS0+YWN0aW9uX2NvdW50fTwvYj48L3RkPiAgCiAgICA8L3RyPgogICAgICAgIHtpZiAkY3ljbGUgPT0gJ3JvdzEnfQogICAgICAgICAgICB7YXNzaWduIHZhcj0nY3ljbGUnIHZhbHVlPSdyb3cyJ30KICAgICAgICB7ZWxzZX0KICAgICAgICAgICAge2Fzc2lnbiB2YXI9J2N5Y2xlJyB2YWx1ZT0ncm93MSd9CiAgICAgICAgey9pZn0KICAgIHsvaWZ9CiAgICAKICAgIDx0ciBjbGFzcz0ieyRjeWNsZX0iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX1ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX0nOyI+CiAgICAgICAgPHRkPnskZW50cnktPnBlcmlvZF90aXRsZX08L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5wZXJpb2Rfc3RhcnRfZGF0ZX08L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5wZXJpb2RfZW5kX2RhdGV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+cGVyaW9kX2NvdW50fTwvdGQ+ICAgIAogICA8L3RyPgogICB7L2ZvcmVhY2h9CiAgIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/templates_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKZnVuY3Rpb24gc2VsZWN0QWxsKCkgewogICAgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogICAgZm9yIChpPTA7IGk8Y2hlY2tib3hlcy5sZW5ndGggOyBpKyspIHsKICAgICAgICBpZiAoY2hlY2tib3hlc1tpXS50eXBlID09ICJjaGVja2JveCIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGNoZWNrYm94ZXNbaV0uY2hlY2tlZD0hY2hlY2tib3hlc1tpXS5jaGVja2VkOwogICAgICAgIH0KICAgIH0gIAp9Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgp7aWYgaXNzZXQoJHRlbXBsYXRlc19tZXNzYWdlKSAmJiAkdGVtcGxhdGVzX21lc3NhZ2UgIT0nJ317JHRlbXBsYXRlc19tZXNzYWdlfXsvaWZ9Cgp7aWYgJGl0ZW1jb3VudCA+IDB9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkX2xpbmt9PC9wPgo8L2Rpdj4Key9pZn0KCnskc3RhcnRmb3JtfQoKe2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogICAgPHRoZWFkPgogICAgPHRyPgogICAgICAgIDx0aCBjbGFzcz0icGFnZXc1MCI+eyRuYW1lX3RleHR9PC90aD4KICAgICAgICA8dGggY2xhc3M9InBhZ2V3MTAiPnskZGVmYXVsdF90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskdGVtcGxhdGVfdHlwZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICAgIDx0aD48YSBocmVmPSJqYXZhc2NyaXB0OnNlbGVjdEFsbCgpOyI+eyRzZWxlY3RfdGV4dH08L2E+PC90aD4KICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQp7Y2FwdHVyZSBhc3NpZ249ImN5Y2xlIn17Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifXsvY2FwdHVyZX0KICAgIDx0ciBjbGFzcz0ieyRjeWNsZX0iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX1ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRjeWNsZX0nOyI+CiAgICAgICAgPHRkPjxhIGhyZWY9InskZW50cnktPmVkaXR1cmx9Ij57JGVudHJ5LT5uYW1lfTwvYT48L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5kZWZhdWx0fTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPnRlbXBsYXRlX3R5cGV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+ZWRpdF9saW5rfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmRlbGV0ZV9saW5rfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPnNlbGVjdH08L3RkPgogICAgPC90cj4Key9mb3JlYWNofQogICAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCjxkaXYgc3R5bGU9IndpZHRoOiA5NyU7Ij4KICAgIDxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7Ij4KPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZF9saW5rfTwvcD4KICAgIDwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9uIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Cnskc3VibWl0X21hc3NkZWxldGV9ICAgCiAgICA8L2Rpdj4Key9pZn0KPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/template_add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRuYW1lX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0ZW1wbGF0ZV90eXBlX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlX3R5cGVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0ZW1wbGF0ZV9jb2RlX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlX2NvZGVfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZmFjdG9yeX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyRzdWJtaXR9eyRjYW5jZWx9eyRhcHBseX08L3A+Cgk8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/winner_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCR3aW5uZXJfbWVzc2FnZSkgJiYgJHdpbm5lcl9tZXNzYWdlICE9ICcnfXskd2lubmVyX21lc3NhZ2V9ey9pZn0KCntpZiAkcHJpemVpdGVtY291bnQgPiAwfQoKPGgzPnskcHJpemVfcF90ZXh0fTwvaDM+Cgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogICAgPHRoZWFkPgogICAgPHRyPgogICAgICAgIDx0aCBjbGFzcz0icGFnZXcxMCI+eyRudW1iZXJfdGV4dH08L3RoPgogICAgICAgIDx0aD57JHRpdGxlX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRhY3Rpb25fcGVyaW9kX3RleHR9PC90aD4gCiAgICAgICAgPHRoPnskZ2l2ZW5fbnVtYmVyX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRmcmVlX251bWJlcl90ZXh0fTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+eyRkcmF3X2NvdXBvbl90ZXh0fTwvdGg+ICAgCiAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgIHtmb3JlYWNoIGZyb209JHByaXplaXRlbXMgaXRlbT1lbnRyeX0KICAgIAogICAge2NhcHR1cmUgYXNzaWduPSJjeWNsZSJ9e2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn17L2NhcHR1cmV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skY3ljbGV9JzsiPgogICAgICAgIDx0ZD57JGVudHJ5LT5udW1iZXJ9eDwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPnRpdGxlfSAoeyRlbnRyeS0+Y291cG9uX3ByaXplX2lkfSk8L3RkPgogICAgICAgIDx0ZD57JGVudHJ5LT5hY3Rpb25fdGl0bGV9IHsqKHskZW50cnktPmNvdXBvbl9hY3Rpb25faWR9KSp9IC8geyRlbnRyeS0+cGVyaW9kX3RpdGxlfSB7Kih7JGVudHJ5LT5jb3Vwb25fcGVyaW9kX2lkfSkqfTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmdpdmVufTwvdGQ+CiAgICAgICAgPHRkPnskZW50cnktPmZyZWV9PC90ZD4KICAgICAgICA8dGQ+eyRlbnRyeS0+ZHJhd19saW5rfTwvdGQ+CiAgIDwvdHI+CiAgIHsvZm9yZWFjaH0KICAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCjxiciAvPgoKe2NhcHR1cmUgYXNzaWduPSJucl9vZl9pdGVtcyJ9eyR3aW5uZXJpdGVtc3xAY291bnR9ey9jYXB0dXJlfQp7Y2FwdHVyZSBhc3NpZ249Im5yX29mX2l0ZW1zX21pbiJ9e21hdGggZXF1YXRpb249InggLSAxIiB4PSR3aW5uZXJpdGVtc3xAY291bnR9ey9jYXB0dXJlfQoKe2lmICRucl9vZl9pdGVtc30KPGgzPnskd2lubmVyX3BfdGV4dH08L2gzPgp7L2lmfQoKe3NlY3Rpb24gbmFtZT0iaSIgc3RhcnQ9IjAiIGxvb3A9JG5yX29mX2l0ZW1zIHN0ZXA9IjEifQogICAge2Fzc2lnbiB2YXI9cHJldl9rZXkgdmFsdWU9JHNtYXJ0eS5zZWN0aW9uLmkuaW5kZXgtMX0KICAgIHthc3NpZ24gdmFyPWtleSB2YWx1ZT0kc21hcnR5LnNlY3Rpb24uaS5pbmRleH0KICAgIHthc3NpZ24gdmFyPW5leHRfa2V5IHZhbHVlPSRzbWFydHkuc2VjdGlvbi5pLmluZGV4KzF9CiAgICB7Y2FwdHVyZSBhc3NpZ249ImN5Y2xlIn1yb3cxey9jYXB0dXJlfQoKeyogaGVhZGVyICp9CntpZiAka2V5ID09IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSIgYm9yZGVyPSIwIj4KICAgIDx0aGVhZD4KICAgIDx0cj4KICAgICAgICA8dGggY2xhc3M9InBhZ2V3MTAiPnskcHJpemVfY29kZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskdGl0bGVfdGV4dH08L3RoPgogICAgICAgIDx0aD57JG5hbWVfdGV4dH08L3RoPgogICAgICAgIDx0aD57JGVtYWlsX3RleHR9PC90aD4KICAgICAgICA8dGg+eyRwaG9uZV90ZXh0fTwvdGg+CiAgICAgICAgPHRoPnskY291cG9uX2NvZGVfdGV4dH08L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPnskd2l0aGRyYXdfY291cG9uX3RleHR9PC90aD4KICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5Pgp7L2lmfQp7aWYgJGtleSA9PSAwIHx8ICR3aW5uZXJpdGVtc1ska2V5XS0+cGVyaW9kX3RpdGxlIG5lICR3aW5uZXJpdGVtc1skcHJldl9rZXldLT5wZXJpb2RfdGl0bGV9CiAgICA8dHIgY2xhc3M9InskY3ljbGV9Ij4KICAgICAgICA8dGQgY29sc3Bhbj0iOSI+PHN0cm9uZz57JHdpbm5lcml0ZW1zWyRrZXldLT5hY3Rpb25fdGl0bGV9IC8geyR3aW5uZXJpdGVtc1ska2V5XS0+cGVyaW9kX3RpdGxlfTwvc3Ryb25nPjwvdGQ+CiAgICA8L3RyPiAgICAgICAgCnsvaWZ9CnsqIC9oZWFkZXIgKn0KCnsqIGJvZHkgKn0KICAgIHtpZiAkY3ljbGUgPT0gJ3JvdzEnfQogICAgICAgICAgICB7Y2FwdHVyZSBhc3NpZ249ImN5Y2xlIn1yb3cyey9jYXB0dXJlfQogICAge2Vsc2V9CiAgICAgICAgICAgIHtjYXB0dXJlIGFzc2lnbj0iY3ljbGUifXJvdzF7L2NhcHR1cmV9CiAgICB7L2lmfQogICAgPHRyIGNsYXNzPSJ7JGN5Y2xlfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGN5Y2xlfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JGN5Y2xlfSc7Ij4KICAgICAgICA8dGQ+eyR3aW5uZXJpdGVtc1ska2V5XS0+cHJpemVfY29kZX08L3RkPiAgCiAgICAgICAgPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPnByaXplX3RpdGxlfTwvdGQ+CiAgICAgICAgPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPmZpcnN0X25hbWV9IHskd2lubmVyaXRlbXNbJGtleV0tPmxhc3RfbmFtZX08L3RkPgogICAgICAgIDx0ZD48YSBocmVmPSJtYWlsdG86eyR3aW5uZXJpdGVtc1ska2V5XS0+ZW1haWx9Ij57JHdpbm5lcml0ZW1zWyRrZXldLT5lbWFpbH08L2E+PC90ZD4KICAgICAgICA8dGQ+eyR3aW5uZXJpdGVtc1ska2V5XS0+ZGFzaGVkX3Bob25lfTwvdGQ+CiAgICAgICAgPHRkPnskd2lubmVyaXRlbXNbJGtleV0tPmRhc2hlZF9jb3Vwb25fY29kZX08L3RkPgogICAgICAgIDx0ZD57JHdpbm5lcml0ZW1zWyRrZXldLT53aXRoZHJhd19saW5rfTwvdGQ+CiAgIDwvdHI+CnsqIC9ib2R5ICp9Cgp7KiBmb290ZXIgKn0Ke2lmICRrZXkgPT0gJG5yX29mX2l0ZW1zX21pbn0gICAKICAgIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9CnsqIGZvb3RlciAqfQoKey9zZWN0aW9ufQo=]]></data>
	</file>
	<file>
	  <filename>/UpCoupon.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgJElkOiBVcENvdXBvbi5tb2R1bGUucGhwIDEyIDIwMTItMDctMTIgMTA6MDI6MjlaIGFybm91ZCAkIAoKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwQ291cG9uIChjKSAyMDExLTIwMTIgYnkgQXJub3VkIHZhbiBTdXN0ZXJlbiAoYXJub3VkQHVwc2VydmljZS5ubCkKIwojIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHNldHVwIGEgQ291cG9uIENvZGVzIExvdHRlcnkKIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCiR1cHV0aWxzID0gY21zX2pvaW5fcGF0aCgkZ0Ntcy0+Y29uZmlnWydyb290X3BhdGgnXSwnbW9kdWxlcycsICdVcFV0aWxzJywnVXBVdGlscy5tb2R1bGUucGhwJyk7CgppZiAoICFpc19yZWFkYWJsZSgkdXB1dGlscykgKSB7CiAgICBlY2hvICc8aDE+PGZvbnQgY29sb3I9InJlZCI+RVJST1I6IFRoZSBVcFV0aWxzIG1vZHVsZSBjb3VsZCBub3QgYmUgZm91bmQuPC9mb250PjwvaDE+JzsKICAgIHJldHVybjsKfQoKcmVxdWlyZV9vbmNlKCR1cHV0aWxzKTsKCmRlZmluZSgnVVBDT1VQT05fQUNUSU9OX1RBQkxFJywgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdXBjb3Vwb25fYWN0aW9uJyk7CmRlZmluZSgnVVBDT1VQT05fUEVSSU9EX1RBQkxFJywgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdXBjb3Vwb25fcGVyaW9kJyk7CmRlZmluZSgnVVBDT1VQT05fUFJJWkVfVEFCTEUnLCBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV91cGNvdXBvbl9wcml6ZScpOwpkZWZpbmUoJ1VQQ09VUE9OX0NVU1RPTUVSX1RBQkxFJywgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdXBjb3Vwb25fY3VzdG9tZXInKTsKZGVmaW5lKCdVUENPVVBPTl9DT0RFX1RBQkxFJywgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdXBjb3Vwb25fY29kZScpOwoKY2xhc3MgVXBDb3Vwb24gZXh0ZW5kcyBDTVNNb2R1bGUgewogICAgICAgICAgICAgICAgCiAgICBwdWJsaWMgc3RhdGljICRmcm9udGVuZF9hY3Rpb25zID0gYXJyYXkgKAogICAgICAgICdzaG93X3JlZ2lzdGVyJyA9PiAnc2hvd19yZWdpc3RlcicsCiAgICAgICAgJ3Nob3dfcHJpemUnICAgID0+ICdzaG93X3ByaXplJywKICAgICAgICAnc2hvd193aW5uZXInICAgPT4gJ3Nob3dfd2lubmVyJwogICAgKTsKICAgIAogICAgcHVibGljIHN0YXRpYyAkZnJvbnRlbmRfdGVtcGxhdGUgPSBhcnJheSAoCiAgICAgICAgJ2RlZmF1bHQnICAgPT4gJ2RlZmF1bHQnLCAgICAgICAgCiAgICApOwogICAgICAgIAogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGNtc21zCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgICAgCiAgICAKICAgIC8qKgogICAgICogQ29uc3RydWN0b3IKICAgICAqIEBpZ25vcmUgCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewogICAgICAgIAogICAgICAgIHNwbF9hdXRvbG9hZF9yZWdpc3RlcihhcnJheSgkdGhpcywnYXV0b2xvYWQnKSk7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOwogICAgCiAgICAgICAgJG9iaiA9IG5ldyBVcFNtYXJ0eSgkdGhpcyk7CiAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgICAgICRzbWFydHktPmFzc2lnbigndXBjb3Vwb24nLCAkb2JqKTsKICAgICAgICAKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBhdXRvbG9hZCBtZXRob2QKICAgICAqIEBwYXJhbSAkY2xhc3NuYW1lIC0gc3RyaW5nCiAgICAgKiBAcmV0dXJuIHRydWV8ZmFsc2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGF1dG9sb2FkKCRjbGFzc25hbWUpIHsKICAgICAKICAgICAgICBpZiAoICFpc19vYmplY3QoJHRoaXMpICkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFVwVXRpbHMgbGlicwogICAgICAgIAogICAgICAgICRfbW9kdWxlX3BhdGggPSAkdGhpcy0+R2V0TW9kdWxlUGF0aCgpOwogICAgICAgICRfbW9kdWxlX3BhdGggPSBzdHJfcmVwbGFjZSgnVXBDb3Vwb24nLCAnVXBVdGlscycsICRfbW9kdWxlX3BhdGgpOwogICAgICAgICRmbiA9ICRfbW9kdWxlX3BhdGguIi9saWIvY2xhc3Nlcy97JGNsYXNzbmFtZX0uY2xhc3MucGhwIjsKICAgICAgICAKICAgICAgICBpZiAoIGZpbGVfZXhpc3RzKCRmbikgKSB7CiAgICAgICAgICAgIHJlcXVpcmVfb25jZSgkZm4pOyAgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gVXBDb3Vwb24gbGlicwogICAgICAgIAogICAgICAgIGlmIChwcmVnX21hdGNoKCcvREFPJC8nLCRjbGFzc25hbWUpICkgewogICAgICAgICAgICAkY2xhc3NuYW1lID0gJ1VwQ291cG9uREFPJzsKICAgICAgICB9CgogICAgICAgICRmbiA9ICR0aGlzLT5HZXRNb2R1bGVQYXRoKCkuIi9saWIvY2xhc3Nlcy97JGNsYXNzbmFtZX0uY2xhc3MucGhwIjsKICAgICAgICAKICAgICAgICBpZiAoIGZpbGVfZXhpc3RzKCRmbikgKSB7CiAgICAgICAgICAgIHJlcXVpcmVfb25jZSgkZm4pOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldE5hbWUKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKSB7IHJldHVybiAnVXBDb3Vwb24nOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldEZyaWVuZGx5TmFtZQogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldFZlcnNpb24KICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldFZlcnNpb24oKSB7IHJldHVybiAnMC4wLjknOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI01pbmltdW1DTVNWZXJzaW9uCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICcxLjEwLjMnOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI01heGltdW1DTVNWZXJzaW9uCiAgICAgKiBAaWdub3JlCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICAvL3B1YmxpYyBmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICIxLjEwLjkiOyB9CgogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjR2V0SGVscAogICAgICogQGlnbm9yZQogICAgICovCiAgICAgcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKSB7IAogICAgIAkgcmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKGRpcm5hbWUoX19GSUxFX18pLicvaGVscC5pbmMnKTsgCiAgICAgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNHZXRBdXRob3IKICAgICAqIEBpZ25vcmUKICAgICAqLyAgCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ0Fybm91ZCB2YW4gU3VzdGVyZW4nOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldEF1dGhvckVtYWlsCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdhcm5vdWRAdXBzZXJ2aWNlLm5sJzsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNHZXRDaGFuZ2VMb2cKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsgcmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKGRpcm5hbWUoX19GSUxFX18pLicvY2hhbmdlbG9nLmluYycpOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldEV2ZW50RGVzY3JpcHRpb24KICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24oJGV2ZW50bmFtZSkgeyByZXR1cm4gJHRoaXMtPmxhbmcoJ2V2ZW50ZGVzYy0nIC4gJGV2ZW50bmFtZSk7IH0KICAgIAogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjR2V0RXZlbnRIZWxwCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRFdmVudEhlbHAoJGV2ZW50bmFtZSkgeyByZXR1cm4gJHRoaXMtPmxhbmcoJ2V2ZW50aGVscC0nIC4gJGV2ZW50bmFtZSk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0lzUGx1Z2luTW9kdWxlCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgIAogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjSGFzQWRtaW4KICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNHZXRBZG1pblNlY3Rpb24KICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsgcmV0dXJuICdjb250ZW50JzsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNHZXRBZG1pbkRlc2NyaXB0aW9uCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNWaXNpYmxlVG9BZG1pblVzZXIKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpIHsgcmV0dXJuICR0aGlzLT5DaGVja0FjY2VzcygpOyB9CiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI21ldGhvZENoZWNrUGVybWlzc2lvbgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoKSB7IHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVXBDb3Vwb24nKTsgfQogICAgCiAgICAvKioKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNHZXREZXBlbmRlY2llcwogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgewogICAgICAgIHJldHVybiBhcnJheSgnVXBVdGlscyc9PicwLjAuNScpOwogICAgfQogICAgCiAgICAvL3B1YmxpYyBmdW5jdGlvbiBJbnN0YWxsKCkge30KICAgIAogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjSW5zdGFsbFBvc3RNZXNzYWdlCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsgfQogICAgCiAgICAvL3B1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGwoKSB7fQoKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI1VuaW5zdGFsbFBvc3RNZXNzYWdlCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7IH0KICAgIAogICAgLy9wdWJsaWMgZnVuY3Rpb24gVXBncmFkZSgkb2xkdmVyc2lvbiwgJG5ld3ZlcnNpb24pIHt9CiAgICAgICAgCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgYWN0aW9ucwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAKICAgIC8qKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0RvQWN0aW9uCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgICAKICAgICAvKgogICAgIAogICAgcHVibGljIGZ1bmN0aW9uIERvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkID0gJycpIHsgICAgCiAgICAgICAgJGFjdGlvbiA9IGlzc2V0KHNlbGY6OiRmcm9udGVuZF9hY3Rpb25zWyRhY3Rpb25dKSA/ICRhY3Rpb24gOiAnZGVmYXVsdCc7CiAgICAgICAgJHBhcmFtc1snYWN0aW9uJ10gPSAkYWN0aW9uOyAgICAgICAgCiAgICAgICAgcGFyZW50OjpEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7CiAgICB9CiAgICAKICAgICovCgogICAgLyoqCiAgICAgKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjU2V0UGFyYW1ldGVycwogICAgICoKICAgICAqIENhbGxlZCBmcm9tIHdpdGhpbiB0aGUgY29uc3RydWN0b3IsIE9ubHkgZm9yIGZyb250ZW5kIG1vZHVsZSBhY3Rpb25zCiAgICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgb3ZlcnJpZGRlbiB0byBjcmVhdGUgcm91dGVzLCBhbmQgc2V0IGhhbmRsZWQgcGFyYW1zCiAgICAgKiBhbmQgcGVyZm9ybXMgb3RoZXIgaW5pdGlhbGl6YXRpb24gdGFza3MgdGhhdCBuZWVkIHRvIGJlIHNldHVwIGZvciBhbGwKICAgICAqIGZyb250ZW5kIGFjdGlvbnMKICAgICAqCiAgICAgKi8KICAgICAvL3B1YmxpYyBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkge30KICAgICAgICAKICAgICAKCS8qKgoJKiBAbGluayBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwjSW5pdGlhbGl6ZUZyb250ZW5kCgkqCgkqIENhbGxlZCBmcm9tIHdpdGhpbiB0aGUgY29uc3RydWN0b3IsIE9OTFkgZm9yIGZyb250ZW5kIG1vZHVsZSBhY3Rpb25zLgoJKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgb3ZlcnJpZGRlbiB0byBjcmVhdGUgcm91dGVzLAoJKiBhbmQgc2V0IGhhbmRsZWQgcGFyYW1ldGVycywgYW5kIHBlcmZvcm0gb3RoZXIgaW5pdGlhbGl6YXRpb24gdGFza3MgdGhhdAoJKiBuZWVkIHRvIGJlIHNldHVwIGZvciBhbGwgZnJvbnRlbmQgYWN0aW9ucy4KCSoKCSovCglmdW5jdGlvbiBJbml0aWFsaXplRnJvbnRlbmQoKSB7CgkJCiAgICAgICAgLy8gbm8gdW5rbm93biBwYXJhbWV0ZXJzCiAgICAgICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogICAgICAgIAogICAgICAgIC8vIHJlZ2lzdGVyIHBsdWdpbiB0byBzbWFydHkgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlCiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAgICAgCiAgICAgICAgLy8gcm91dGVzCiAgICAgICAgLy8kdGhpcy0+U2V0dXBSb3V0ZXMoKTsKICAgICAgICAKICAgICAgICAvLyBjcmVhdGVwYXJhbWV0ZXJzCiAgICAgICAgLy8kdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnb3JpZ3JldHVybmlkJyxDTEVBTl9JTlQpOwogICAgICAgIAogICAgICAgIC8vIGNvbW1vbgogICAgICAgIAogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdvcmlncmV0dXJuaWQnLENMRUFOX0lOVCk7CiAgICAgICAgCiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignYWN0aW9uJywgJycsICR0aGlzLT5MYW5nKCdoZWxwX2FjdGlvbicpKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWN0aW9uJyxDTEVBTl9TVFJJTkcpOwogICAgICAgIAogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3RlbXBsYXRlJywgJycsICR0aGlzLT5MYW5nKCdoZWxwX3RlbXBsYXRlJykpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsKICAgICAgICAKICAgICAgICAvLyBzaG93X3JlZ2lzdGVyCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2ZpcnN0X25hbWUnLENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xhc3RfbmFtZScsQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZW1haWwnLENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Bob25lJyxDTEVBTl9TVFJJTkcpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb3Vwb25fY29kZV8wMScsQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY291cG9uX2NvZGVfMDInLENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvdXBvbl9jb2RlXzAzJyxDTEVBTl9TVFJJTkcpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb3Vwb25fY29kZV8wNCcsQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGVybXNfYW5kX2NvbmRpdGlvbnMnLENMRUFOX0lOVCk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ25ld3NsZXR0ZXInLENMRUFOX0lOVCk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N1Ym1pdCcsQ0xFQU5fU1RSSU5HKTsKICAgICAgICAKICAgICAgICAvLyBzaG93X3ByaXplCiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignY291cG9uX2FjdGlvbl9pZCcsICcnLCAkdGhpcy0+TGFuZygnaGVscF9jb3Vwb25fYWN0aW9uX2lkJykpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb3Vwb25fYWN0aW9uX2lkJyxDTEVBTl9JTlQpOwoKCX0KCQoJLyoqCgkqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNJbml0aWFsaXplQWRtaW4KCSoKCSogQ2FsbGVkIGZyb20gd2l0aGluIHRoZSBjb25zdHJ1Y3RvciwgT05MWSBmb3IgYWRtaW4gbW9kdWxlIGFjdGlvbnMuCgkqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBvdmVycmlkZGVuIHRvIGNyZWF0ZSByb3V0ZXMsIGFuZCBzZXQgaGFuZGxlZCBwYXJhbWV0ZXJzLAoJKiBhbmQgcGVyZm9ybSBvdGhlciBpbml0aWFsaXphdGlvbiB0YXNrcyB0aGF0IG5lZWQgdG8gYmUgc2V0dXAgZm9yIGFsbCBmcm9udGVuZCBhY3Rpb25zLgoJKgoJKi8KCWZ1bmN0aW9uIEluaXRpYWxpemVBZG1pbigpIHsKCX0KCQoJLyoqCgkqIEBsaW5rIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvYXBpZG9jL0NNUy9DTVNNb2R1bGUuaHRtbCNMYXp5TG9hZEZyb250ZW5kCgkqCgkqIFJldHVybnMgdHJ1ZSBpZiB0aGUgbW9kdWxlIG1heSBzdXBwb3J0IGxhenkgbG9hZGluZyBpbiB0aGUgZnJvbnQgZW5kCgkqCgkqIE5vdGU6IFRoZSByZXN1bHRzIG9mIHRoaXMgZnVuY3Rpb24gYXJlIG5vdCByZWFkIG9uIGVhY2ggcmVxdWVzdCwKCSogb25seSBkdXJpbmcgaW5zdGFsbCBhbmQgdXBncmFkZSB0aGVyZWZvcmUgaWYgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIGNoYW5nZXMKCSogdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGluY3JlYXNlZCB0byBmb3JjZSBhIHJlLWxvYWQKCSoKCSogSW4gQ01TTVMgMS4xMCByb3V0ZXMgYXJlIGxvYWRlZCB1cG9uIGVhY2ggcmVxdWVzdCwgaWYgYSBtb2R1bGUgcmVnaXN0ZXJzIHJvdXRlcyBpdCBjYW5ub3QgYmUgbGF6eSBsb2FkZWQuCgkqCgkqLwoJcHVibGljIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKSB7CgkJcmV0dXJuIEZBTFNFOwoJfQoJCgkvKioKCSogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0xhenlMb2FkQWRtaW4KCSoKCSogUmV0dXJucyB0cnVlIGlmIHRoZSBtb2R1bGUgbWF5IHN1cHBvcnQgbGF6eSBsb2FkaW5nIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuCgkqCgkqIE5vdGU6IFRoZSByZXN1bHRzIG9mIHRoaXMgZnVuY3Rpb24gYXJlIG5vdCByZWFkIG9uIGVhY2ggcmVxdWVzdCwKCSogb25seSBkdXJpbmcgaW5zdGFsbCBhbmQgdXBncmFkZSB0aGVyZWZvcmUgaWYgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIGNoYW5nZXMKCSogdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGluY3JlYXNlZCB0byBmb3JjZSBhIHJlLWxvYWQKCSoKCSogSW4gQ01TTVMgMS4xMCByb3V0ZXMgYXJlIGxvYWRlZCB1cG9uIGVhY2ggcmVxdWVzdCwgaWYgYSBtb2R1bGUgcmVnaXN0ZXJzIHJvdXRlcyBpdCBjYW5ub3QgYmUgbGF6eSBsb2FkZWQuCgkqLwoJcHVibGljIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKSB7CgkJcmV0dXJuIFRSVUU7Cgl9CgkKCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyB1dGlscwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfZ2V0X3RlbXBsYXRlX3R5cGUoKSB7CiAgICAgICAgCiAgICAgICAgJHRlbXBsYXRlX3R5cGUgPSBhcnJheSAoCiAgICAgICAgICAgICdyZWdpc3RlcicgID0+ICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZV9yZWdpc3RlcicpLAogICAgICAgICAgICAnd2lubmVyJyAgICA9PiAkdGhpcy0+TGFuZygndGVtcGxhdGVfd2lubmVyJyksCiAgICAgICAgICAgICdwcml6ZScgICAgID0+ICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZV9wcml6ZScpICAKICAgICAgICApOwogICAgICAgIAogICAgICAgIHJldHVybiAkdGVtcGxhdGVfdHlwZTsKICAgICAgICAKICAgIH0KICAgICAgIAoKfSAvLyBVcENvdXBvbgoKPz4K]]></data>
	</file>
</module>
