<?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>MAS_Security</name>
	<version>1.0.0</version>
    <mincmsversion>2.2.0</mincmsversion>
	<help><![CDATA[CjxkaXYgY2xhc3M9Im1hcy1zZWN1cml0eS1oZWxwIj4KPGgzPk1BUyBTZWN1cml0eSBNb2R1bGU8L2gzPgoKPHA+PHN0cm9uZz5NQVMgU2VjdXJpdHk8L3N0cm9uZz4gaXMgYSBjb21wcmVoZW5zaXZlIFZ1bG5lcmFiaWxpdHkgRGlzY2xvc3VyZSBQb2xpY3kgKFZEUCkgYW5kIFNlY3VyaXR5IEFja25vd2xlZGdtZW50cyBzeXN0ZW0gZm9yIENNUyBNYWRlIFNpbXBsZS4gSXQgcHJvdmlkZXMgc2VjdXJlIGZvcm1zIGZvciByZXNwb25zaWJsZSB2dWxuZXJhYmlsaXR5IHJlcG9ydGluZywgY29tcGxldGUgd2l0aCBDU1JGIHByb3RlY3Rpb24sIHJhdGUgbGltaXRpbmcsIGVtYWlsIG5vdGlmaWNhdGlvbnMsIGFuZCBjb21wcmVoZW5zaXZlIHNlY3VyaXR5IGV2ZW50IGxvZ2dpbmcuPC9wPgoKPGg0PkZlYXR1cmVzPC9oND4KPHVsPgogICAgPGxpPjxzdHJvbmc+VnVsbmVyYWJpbGl0eSBEaXNjbG9zdXJlIFBvbGljeTo8L3N0cm9uZz4gUHJvZmVzc2lvbmFsIFZEUCBwYWdlIHdpdGggc2VjdXJlIHN1Ym1pc3Npb24gZm9ybTwvbGk+CiAgICA8bGk+PHN0cm9uZz5TZWN1cml0eSBBY2tub3dsZWRnbWVudHM6PC9zdHJvbmc+IFB1YmxpYyBhY2tub3dsZWRnbWVudHMgcGFnZSB0byByZWNvZ25pemUgc2VjdXJpdHkgcmVzZWFyY2hlcnMgd2l0aCBjb21wYW55IGFuZCB3ZWJzaXRlIHN1cHBvcnQ8L2xpPgogICAgPGxpPjxzdHJvbmc+UmVwb3J0IE1hbmFnZW1lbnQ6PC9zdHJvbmc+IEFkbWluIGludGVyZmFjZSB0byB2aWV3LCBmaWx0ZXIsIGFuZCBtYXJrIHJlcG9ydHMgYXMgcmVzb2x2ZWQ8L2xpPgogICAgPGxpPjxzdHJvbmc+QWRkIHRvIEFja25vd2xlZGdtZW50czo8L3N0cm9uZz4gRWFzaWx5IGFkZCB2dWxuZXJhYmlsaXR5IHJlcG9ydHMgdG8gYWNrbm93bGVkZ21lbnRzIHdpdGggZWRpdGFibGUgZGV0YWlscyAobmFtZSwgY29tcGFueSwgd2Vic2l0ZSk8L2xpPgogICAgPGxpPjxzdHJvbmc+Q1NSRiBQcm90ZWN0aW9uOjwvc3Ryb25nPiBCdWlsdC1pbiBDU1JGIHRva2VuIHZhbGlkYXRpb24gZm9yIGFsbCBmb3JtIHN1Ym1pc3Npb25zPC9saT4KICAgIDxsaT48c3Ryb25nPlJhdGUgTGltaXRpbmc6PC9zdHJvbmc+IENvbmZpZ3VyYWJsZSByYXRlIGxpbWl0aW5nIChkZWZhdWx0OiAzIHN1Ym1pc3Npb25zIHBlciBob3VyIHBlciBJUCk8L2xpPgogICAgPGxpPjxzdHJvbmc+SW5wdXQgVmFsaWRhdGlvbjo8L3N0cm9uZz4gQ29tcHJlaGVuc2l2ZSBpbnB1dCBzYW5pdGl6YXRpb24gYW5kIHZhbGlkYXRpb248L2xpPgogICAgPGxpPjxzdHJvbmc+RW1haWwgTm90aWZpY2F0aW9uczo8L3N0cm9uZz4gQXV0b21hdGljIGVtYWlsIGFsZXJ0cyB0byBzZWN1cml0eSB0ZWFtIG9uIHJlcG9ydCBzdWJtaXNzaW9uPC9saT4KICAgIDxsaT48c3Ryb25nPlNlY3VyaXR5IExvZ2dpbmc6PC9zdHJvbmc+IERldGFpbGVkIGV2ZW50IGxvZ2dpbmcgZm9yIGFsbCBzZWN1cml0eS1yZWxhdGVkIGFjdGl2aXRpZXM8L2xpPgogICAgPGxpPjxzdHJvbmc+SG9uZXlwb3QgUHJvdGVjdGlvbjo8L3N0cm9uZz4gQm90IGRldGVjdGlvbiB2aWEgaGlkZGVuIGhvbmV5cG90IGZpZWxkczwvbGk+CiAgICA8bGk+PHN0cm9uZz5EeW5hbWljIENvbmZpZ3VyYXRpb246PC9zdHJvbmc+IEF1dG9tYXRpY2FsbHkgZGV0ZWN0cyBkb21haW4gYW5kIGFkbWluIGVtYWlsPC9saT4KICAgIDxsaT48c3Ryb25nPkFkbWluIFBsYWNlbWVudDo8L3N0cm9uZz4gQ29uZmlndXJlIHdoaWNoIGFkbWluIHNlY3Rpb24gdGhlIG1vZHVsZSBhcHBlYXJzIGluIChkZWZhdWx0OiBTaXRlIEFkbWluKTwvbGk+CiAgICA8bGk+PHN0cm9uZz5EYXRlLUJhc2VkIFNvcnRpbmc6PC9zdHJvbmc+IEFja25vd2xlZGdtZW50cyBhdXRvbWF0aWNhbGx5IHNvcnRlZCBieSBkYXRlIChuZXdlc3QgZmlyc3QpIHdpdGhpbiBlYWNoIHllYXI8L2xpPgogICAgPGxpPjxzdHJvbmc+SW4tQnJvd3NlciBFZGl0b3I6PC9zdHJvbmc+IEVkaXQgYWNrbm93bGVkZ21lbnRzIGRpcmVjdGx5IGZyb20gYWRtaW4gaW50ZXJmYWNlIHdpdGggc3ludGF4IGhpZ2hsaWdodGluZzwvbGk+CiAgICA8bGk+PHN0cm9uZz5SZXBvcnQgUmVzb2x1dGlvbiBUcmFja2luZzo8L3N0cm9uZz4gVHJhY2sgYW5kIG1hcmsgdnVsbmVyYWJpbGl0eSByZXBvcnRzIGFzIHJlc29sdmVkL3VucmVzb2x2ZWQ8L2xpPgo8L3VsPgoKPGg0PkdldHRpbmcgU3RhcnRlZDwvaDQ+CjxvbD4KICAgIDxsaT48c3Ryb25nPkluc3RhbGwgdGhlIG1vZHVsZTo8L3N0cm9uZz4gRXh0ZW5zaW9ucyDihpIgTW9kdWxlIE1hbmFnZXIg4oaSIE1BUyBTZWN1cml0eSDihpIgSW5zdGFsbDwvbGk+CiAgICA8bGk+PHN0cm9uZz5Db25maWd1cmUgc2V0dGluZ3M6PC9zdHJvbmc+IEdvIHRvIEV4dGVuc2lvbnMg4oaSIE1BUyBTZWN1cml0eSDihpIgU2V0dGluZ3MgdGFiIChvciBTaXRlIEFkbWluIOKGkiBNQVMgU2VjdXJpdHkg4oaSIFNldHRpbmdzLCBkZXBlbmRpbmcgb24gYWRtaW4gcGxhY2VtZW50KQogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPkNvbmZpZ3VyZSBhZG1pbiBwbGFjZW1lbnQ6IFNlbGVjdCB3aGljaCBhZG1pbiBzZWN0aW9uIHRoZSBtb2R1bGUgc2hvdWxkIGFwcGVhciBpbiAoZGVmYXVsdDogU2l0ZSBBZG1pbik8L2xpPgogICAgICAgICAgICA8bGk+VmVyaWZ5IHNlY3VyaXR5IGVtYWlsIChhdXRvbWF0aWNhbGx5IGRldGVjdGVkIGZyb20gYWRtaW4gdXNlciBvciBkb21haW4pPC9saT4KICAgICAgICAgICAgPGxpPkNvbmZpZ3VyZSByYXRlIGxpbWl0aW5nIGlmIG5lZWRlZCAoZGVmYXVsdDogMyByZXF1ZXN0cyBwZXIgaG91cik8L2xpPgogICAgICAgICAgICA8bGk+RW5hYmxlL2Rpc2FibGUgZG9uYXRpb25zIHRhYiBpZiBkZXNpcmVkPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT48c3Ryb25nPkNyZWF0ZSBWRFAgcGFnZTo8L3N0cm9uZz4gQ3JlYXRlIGEgY29udGVudCBwYWdlIHdpdGggYWxpYXMgInZ1bG5lcmFiaWxpdHktZGlzY2xvc3VyZSIgYW5kIGFkZDoKICAgICAgICA8cHJlPntjbXNfbW9kdWxlIG1vZHVsZT0nTUFTX1NlY3VyaXR5JyBhY3Rpb249J3ZkcCd9PC9wcmU+CiAgICA8L2xpPgogICAgPGxpPjxzdHJvbmc+Q3JlYXRlIEFja25vd2xlZGdtZW50cyBwYWdlOjwvc3Ryb25nPiBDcmVhdGUgYSBjb250ZW50IHBhZ2Ugd2l0aCBhbGlhcyAic2VjdXJpdHktYWNrbm93bGVkZ21lbnRzIiBhbmQgYWRkOgogICAgICAgIDxwcmU+e2Ntc19tb2R1bGUgbW9kdWxlPSdNQVNfU2VjdXJpdHknIGFjdGlvbj0nYWNrbm93bGVkZ21lbnRzJ308L3ByZT4KICAgIDwvbGk+CiAgICA8bGk+PHN0cm9uZz5TZXQgdXAgc2VjdXJpdHkudHh0IChvcHRpb25hbCk6PC9zdHJvbmc+IENyZWF0ZSBvciB1cGRhdGUgPGNvZGU+L3NlY3VyaXR5LnR4dDwvY29kZT4gd2l0aDoKICAgICAgICA8cHJlPkNvbnRhY3Q6IG1haWx0bzpzZWN1cml0eUB5b3VyLWRvbWFpbi5jb20KUG9saWN5OiBodHRwczovL3lvdXItZG9tYWluLmNvbS92dWxuZXJhYmlsaXR5LWRpc2Nsb3N1cmUKQWNrbm93bGVkZ21lbnRzOiBodHRwczovL3lvdXItZG9tYWluLmNvbS9zZWN1cml0eS1hY2tub3dsZWRnbWVudHM8L3ByZT4KICAgIDwvbGk+Cjwvb2w+Cgo8aDQ+TWFuYWdpbmcgQWNrbm93bGVkZ21lbnRzPC9oND4KPHA+WW91IGNhbiBhZGQgb3IgZWRpdCBzZWN1cml0eSBhY2tub3dsZWRnbWVudHMgaW4gbXVsdGlwbGUgd2F5czo8L3A+CjxvbD4KICAgIDxsaT48c3Ryb25nPkZyb20gVnVsbmVyYWJpbGl0eSBSZXBvcnRzIChSZWNvbW1lbmRlZCk6PC9zdHJvbmc+CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+R28gdG8gVnVsbmVyYWJpbGl0eSBSZXBvcnRzIHRhYjwvbGk+CiAgICAgICAgICAgIDxsaT5DbGljayAiQWRkIiBidXR0b24gbmV4dCB0byBhbnkgcmVzb2x2ZWQgdnVsbmVyYWJpbGl0eSByZXBvcnQ8L2xpPgogICAgICAgICAgICA8bGk+RmlsbCBpbiB0aGUgYWNrbm93bGVkZ21lbnQgZGV0YWlsczoKICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5OYW1lOjwvc3Ryb25nPiBSZXNlYXJjaGVyIG5hbWUgKGRlZmF1bHRzIHRvIHJlcG9ydGVyIG5hbWUpPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5Db21wYW55Ojwvc3Ryb25nPiBPcHRpb25hbCBjb21wYW55IG9yIG9yZ2FuaXphdGlvbiBuYW1lPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5XZWJzaXRlOjwvc3Ryb25nPiBPcHRpb25hbCB3ZWJzaXRlIFVSTCAobXVzdCB1c2UgaHR0cHM6Ly8pPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5WdWxuZXJhYmlsaXR5Ojwvc3Ryb25nPiBCcmllZiBkZXNjcmlwdGlvbiAoZGVmYXVsdHMgdG8gcmVwb3J0IHR5cGUpPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5EYXRlOjwvc3Ryb25nPiBEaXNjbG9zdXJlIGRhdGUgKGRlZmF1bHRzIHRvIHJlcG9ydCBkYXRlKTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+RGlzY2xvc3VyZSBUeXBlOjwvc3Ryb25nPiBDb29yZGluYXRlZCwgUHJpdmF0ZSwgb3IgUHVibGljPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5DcmVkaXQgTGluazo8L3N0cm9uZz4gT3B0aW9uYWwgVVJMIGZvciByZXNlYXJjaGVyIHByb2ZpbGU8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPkNsaWNrICJBZGQgdG8gQWNrbm93bGVkZ21lbnRzIiB0byBzYXZlPC9saT4KICAgICAgICAgICAgPGxpPkNsaWNrICJFZGl0IiBidXR0b24gbGF0ZXIgdG8gbW9kaWZ5IG9yICJSZW1vdmUgZnJvbSBBY2tub3dsZWRnbWVudHMiIHRvIGRlbGV0ZTwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PHN0cm9uZz5WaWEgQWRtaW4gSW50ZXJmYWNlIEVkaXRvcjo8L3N0cm9uZz4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5HbyB0byBBY2tub3dsZWRnbWVudHMgdGFiPC9saT4KICAgICAgICAgICAgPGxpPkNsaWNrICJFZGl0IEFja25vd2xlZGdtZW50cyIgYnV0dG9uPC9saT4KICAgICAgICAgICAgPGxpPkVkaXQgdGhlIFBIUCBjb2RlIHdpdGggc3ludGF4IGhpZ2hsaWdodGluZyBlbmFibGVkPC9saT4KICAgICAgICAgICAgPGxpPlNhdmUgY2hhbmdlcyAoUEhQIHN5bnRheCBpcyB2YWxpZGF0ZWQgYXV0b21hdGljYWxseSk8L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxzdHJvbmc+VmlhIEZpbGUgRWRpdG9yOjwvc3Ryb25nPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPkVkaXQgPGNvZGU+bW9kdWxlcy9NQVNfU2VjdXJpdHkvYWNrbm93bGVkZ21lbnRzLWRhdGEucGhwPC9jb2RlPjwvbGk+CiAgICAgICAgICAgIDxsaT5BZGQgZW50cmllcyB0byB0aGUgPGNvZGU+JGFja25vd2xlZGdtZW50czwvY29kZT4gYXJyYXkgd2l0aCBvcHRpb25hbCBjb21wYW55IGFuZCB3ZWJzaXRlIGZpZWxkczwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+Cjwvb2w+CjxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gQWNrbm93bGVkZ21lbnRzIGFyZSBhdXRvbWF0aWNhbGx5IHNvcnRlZCBieSBkYXRlIChuZXdlc3QgZmlyc3QpIHdpdGhpbiBlYWNoIHllYXIgZm9yIG9wdGltYWwgZGlzcGxheSBvbiB0aGUgcHVibGljIHBhZ2UuPC9wPgoKPGg0Pk1hbmFnaW5nIFZ1bG5lcmFiaWxpdHkgUmVwb3J0czwvaDQ+CjxwPkFsbCB2dWxuZXJhYmlsaXR5IHJlcG9ydHMgc3VibWl0dGVkIHRocm91Z2ggdGhlIFZEUCBmb3JtIGFyZSBsb2dnZWQgYW5kIGNhbiBiZSBtYW5hZ2VkIGluIHRoZSBhZG1pbiBpbnRlcmZhY2U6PC9wPgo8dWw+CiAgICA8bGk+PHN0cm9uZz5WaWV3IFJlcG9ydHM6PC9zdHJvbmc+IEdvIHRvIFZ1bG5lcmFiaWxpdHkgUmVwb3J0cyB0YWI8L2xpPgogICAgPGxpPjxzdHJvbmc+RmlsdGVyIFJlcG9ydHM6PC9zdHJvbmc+IFVzZSBmaWx0ZXJzIHRvIHNob3cgYWxsLCByZXNvbHZlZCwgb3IgdW5yZXNvbHZlZCByZXBvcnRzPC9saT4KICAgIDxsaT48c3Ryb25nPk1hcmsgUmVzb2x2ZWQ6PC9zdHJvbmc+IENsaWNrICJNYXJrIGFzIFJlc29sdmVkIiBidXR0b24gdG8gdHJhY2sgZml4ZWQgdnVsbmVyYWJpbGl0aWVzPC9saT4KICAgIDxsaT48c3Ryb25nPkFkZCB0byBBY2tub3dsZWRnbWVudHM6PC9zdHJvbmc+IENsaWNrICJBZGQiIGJ1dHRvbiBuZXh0IHRvIGFueSByZXBvcnQgdG8gcXVpY2tseSBhZGQgaXQgdG8gU2VjdXJpdHkgQWNrbm93bGVkZ21lbnRzIHdpdGggZWRpdGFibGUgZGV0YWlsczwvbGk+CiAgICA8bGk+PHN0cm9uZz5FZGl0IEFja25vd2xlZGdtZW50czo8L3N0cm9uZz4gQ2xpY2sgIkVkaXQiIGJ1dHRvbiAocmVwbGFjZXMgIkFkZCIgb25jZSBhZGRlZCkgdG8gbW9kaWZ5IGFja25vd2xlZGdtZW50IGRldGFpbHM8L2xpPgogICAgPGxpPjxzdHJvbmc+VmlldyBMb2dzOjwvc3Ryb25nPiBDaGVjayBTZWN1cml0eSBMb2dzIHRhYiBmb3IgZGV0YWlsZWQgZXZlbnQgbG9nczwvbGk+CjwvdWw+Cgo8aDQ+U2VjdXJpdHkgRmVhdHVyZXM8L2g0Pgo8cD5BbGwgc2VjdXJpdHkgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBhbmQgd29yayBhdXRvbWF0aWNhbGx5OjwvcD4KPHVsPgogICAgPGxpPjxzdHJvbmc+Q1NSRiBQcm90ZWN0aW9uOjwvc3Ryb25nPiBBbGwgZm9ybXMgaW5jbHVkZSBDU1JGIHRva2VucyB0aGF0IGFyZSB2YWxpZGF0ZWQgb24gc3VibWlzc2lvbjwvbGk+CiAgICA8bGk+PHN0cm9uZz5SYXRlIExpbWl0aW5nOjwvc3Ryb25nPiBQcmV2ZW50cyBhYnVzZSBieSBsaW1pdGluZyBzdWJtaXNzaW9ucyBwZXIgSVAgYWRkcmVzcyBwZXIgdGltZSB3aW5kb3c8L2xpPgogICAgPGxpPjxzdHJvbmc+SW5wdXQgU2FuaXRpemF0aW9uOjwvc3Ryb25nPiBBbGwgdXNlciBpbnB1dCBpcyBzYW5pdGl6ZWQgYW5kIHZhbGlkYXRlZCBiZWZvcmUgcHJvY2Vzc2luZzwvbGk+CiAgICA8bGk+PHN0cm9uZz5Ib25leXBvdCBGaWVsZHM6PC9zdHJvbmc+IEhpZGRlbiBmaWVsZHMgZGV0ZWN0IGFuZCBibG9jayBhdXRvbWF0ZWQgYm90IHN1Ym1pc3Npb25zPC9saT4KICAgIDxsaT48c3Ryb25nPlNlY3VyZSBFbWFpbDo8L3N0cm9uZz4gRW1haWwgbm90aWZpY2F0aW9ucyBhcmUgc2VudCB2aWEgQ01TTVMncyBzZWN1cmUgbWFpbGVyIHN5c3RlbTwvbGk+CiAgICA8bGk+PHN0cm9uZz5FdmVudCBMb2dnaW5nOjwvc3Ryb25nPiBBbGwgc2VjdXJpdHkgZXZlbnRzIGFyZSBsb2dnZWQgd2l0aCB0aW1lc3RhbXBzIGFuZCBJUCBhZGRyZXNzZXM8L2xpPgo8L3VsPgoKPGg0PkNvbmZpZ3VyYXRpb248L2g0Pgo8cD5UaGUgbW9kdWxlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB5b3VyIHNpdGUgY29uZmlndXJhdGlvbjo8L3A+Cjx1bD4KICAgIDxsaT48c3Ryb25nPkFkbWluIFBsYWNlbWVudDo8L3N0cm9uZz4gQ2hvb3NlIHdoaWNoIGFkbWluIHNlY3Rpb24gdGhlIG1vZHVsZSBhcHBlYXJzIGluIChFeHRlbnNpb25zLCBDb250ZW50LCBTaXRlIEFkbWluLCBvciBVc2VyIE1hbmFnZW1lbnQpLiBEZWZhdWx0OiBTaXRlIEFkbWluPC9saT4KICAgIDxsaT48c3Ryb25nPlNlY3VyaXR5IEVtYWlsOjwvc3Ryb25nPiBEZXRlY3RlZCBmcm9tIGFkbWluIHVzZXIgZW1haWwsIG9yIGNvbnN0cnVjdGVkIGFzIHNlY3VyaXR5QHlvdXItZG9tYWluLmNvbTwvbGk+CiAgICA8bGk+PHN0cm9uZz5Eb21haW46PC9zdHJvbmc+IEF1dG9tYXRpY2FsbHkgZXh0cmFjdGVkIGZyb20gQ01TTVMgcm9vdF91cmwgb3IgSFRUUF9IT1NUPC9saT4KICAgIDxsaT48c3Ryb25nPlNpdGUgTmFtZTo8L3N0cm9uZz4gVXNlcyBDTVNNUyBzaXRlbmFtZSBvciBkb21haW4gbmFtZTwvbGk+CiAgICA8bGk+PHN0cm9uZz5SYXRlIExpbWl0aW5nOjwvc3Ryb25nPiBDb25maWd1cmUgbWF4aW11bSBzdWJtaXNzaW9ucyBwZXIgSVAgYWRkcmVzcyBwZXIgdGltZSB3aW5kb3cgKGRlZmF1bHQ6IDMgcGVyIGhvdXIpPC9saT4KPC91bD4KPHA+WW91IGNhbiBvdmVycmlkZSB0aGVzZSBpbiB0aGUgU2V0dGluZ3MgdGFiIGlmIG5lZWRlZC48L3A+Cgo8aDQ+QmVzdCBQcmFjdGljZXM8L2g0Pgo8dWw+CiAgICA8bGk+UmVndWxhcmx5IHJldmlldyB2dWxuZXJhYmlsaXR5IHJlcG9ydHMgaW4gdGhlIGFkbWluIGludGVyZmFjZTwvbGk+CiAgICA8bGk+UmVzcG9uZCB0byByZXBvcnRzIHdpdGhpbiAyNC00OCBob3VycyBhcyBwZXIgeW91ciBWRFAgdGltZWxpbmU8L2xpPgogICAgPGxpPkFkZCByZXNvbHZlZCByZXBvcnRzIHRvIGFja25vd2xlZGdtZW50cyB1c2luZyB0aGUgIkFkZCIgYnV0dG9uIGZvciBlYXN5IG1hbmFnZW1lbnQ8L2xpPgogICAgPGxpPkluY2x1ZGUgY29tcGFueSBhbmQgd2Vic2l0ZSBpbmZvcm1hdGlvbiB3aGVuIGF2YWlsYWJsZSBmb3IgYmV0dGVyIHJlc2VhcmNoZXIgcmVjb2duaXRpb248L2xpPgogICAgPGxpPktlZXAgYWNrbm93bGVkZ21lbnRzIHVwIHRvIGRhdGUgdG8gcmVjb2duaXplIHJlc2VhcmNoZXJzIHdobyBoZWxwIHNlY3VyZSB5b3VyIHN5c3RlbXM8L2xpPgogICAgPGxpPk1vbml0b3Igc2VjdXJpdHkgbG9ncyBmb3Igc3VzcGljaW91cyBhY3Rpdml0eTwvbGk+CiAgICA8bGk+QWRqdXN0IHJhdGUgbGltaXRpbmcgYmFzZWQgb24geW91ciBzaXRlJ3MgdHJhZmZpYyBwYXR0ZXJuczwvbGk+CiAgICA8bGk+VXNlIGEgZGVkaWNhdGVkIHNlY3VyaXR5QHlvdXItZG9tYWluLmNvbSBlbWFpbCBhZGRyZXNzPC9saT4KICAgIDxsaT5Db25maWd1cmUgYWRtaW4gcGxhY2VtZW50IHRvIG1hdGNoIHlvdXIgcHJlZmVycmVkIHdvcmtmbG93IChkZWZhdWx0OiBTaXRlIEFkbWluKTwvbGk+CjwvdWw+Cgo8aDQ+U3VwcG9ydDwvaDQ+CjxwPjxzdHJvbmc+QXV0aG9yOjwvc3Ryb25nPiBtYXN0ZXIzMzk1PGJyLz4KPHN0cm9uZz5FbWFpbDo8L3N0cm9uZz4gaW5mbyBbYXRdIG5ld3N0YXJnZXRlZCBbZG90XSBjb208YnIvPgo8c3Ryb25nPldlYnNpdGU6PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vbmV3c3RhcmdldGVkLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5odHRwczovL25ld3N0YXJnZXRlZC5jb20vPC9hPjwvcD4KCjxoND5MaWNlbnNlPC9oND4KPHA+VGhpcyBtb2R1bGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMIHYzLiBGcmVlIHRvIHVzZSBmb3IgcGVyc29uYWwgYW5kIGNvbW1lcmNpYWwgcHJvamVjdHMuPC9wPgo8L2Rpdj48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGFjdGlvbj0iZGVmYXVsdCIgLSBBY3Rpb24gdG8gcGVyZm9ybTwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBtYXN0ZXIzMzk1ICZsdDtpbmZvQG5ld3N0YXJnZXRlZC5jb20mZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4wLjA8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+CjxsaT48c3Ryb25nPlZlcnNpb24gMS4wLjAsIDE4LjExLjIwMjUsIG1hc3RlcjMzOTU8L3N0cm9uZz46IEluaXRpYWwgcmVsZWFzZSB3aXRoIGNvbXByZWhlbnNpdmUgc2VjdXJpdHkgZmVhdHVyZXMKICAgIDx1bD4KICAgICAgICA8bGk+PHN0cm9uZz5WdWxuZXJhYmlsaXR5IERpc2Nsb3N1cmUgUG9saWN5Ojwvc3Ryb25nPiBQcm9mZXNzaW9uYWwgVkRQIHBhZ2Ugd2l0aCBzZWN1cmUgc3VibWlzc2lvbiBmb3JtPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5TZWN1cml0eSBBY2tub3dsZWRnbWVudHM6PC9zdHJvbmc+IFB1YmxpYyBhY2tub3dsZWRnbWVudHMgcGFnZSB0byByZWNvZ25pemUgc2VjdXJpdHkgcmVzZWFyY2hlcnM8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPlNlY3VyZSBGb3JtIFByb2Nlc3Npbmc6PC9zdHJvbmc+IENTUkYgcHJvdGVjdGlvbiwgcmF0ZSBsaW1pdGluZywgaW5wdXQgdmFsaWRhdGlvbiwgYW5kIGhvbmV5cG90IGZpZWxkczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+RW1haWwgTm90aWZpY2F0aW9uczo8L3N0cm9uZz4gQXV0b21hdGljIGVtYWlsIGFsZXJ0cyB0byBzZWN1cml0eSB0ZWFtIG9uIHJlcG9ydCBzdWJtaXNzaW9uPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5TZWN1cml0eSBFdmVudCBMb2dnaW5nOjwvc3Ryb25nPiBDb21wcmVoZW5zaXZlIGxvZ2dpbmcgb2YgYWxsIHNlY3VyaXR5LXJlbGF0ZWQgYWN0aXZpdGllczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+QWRtaW4gSW50ZXJmYWNlOjwvc3Ryb25nPiBDb21wbGV0ZSBhZG1pbiBpbnRlcmZhY2UgZm9yIG1hbmFnaW5nIHJlcG9ydHMsIGFja25vd2xlZGdtZW50cywgYW5kIHNldHRpbmdzPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5SZXBvcnQgTWFuYWdlbWVudDo8L3N0cm9uZz4gVmlldywgZmlsdGVyLCBhbmQgbWFyayB2dWxuZXJhYmlsaXR5IHJlcG9ydHMgYXMgcmVzb2x2ZWQvdW5yZXNvbHZlZDwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+SW4tQnJvd3NlciBFZGl0b3I6PC9zdHJvbmc+IEVkaXQgYWNrbm93bGVkZ21lbnRzIGRpcmVjdGx5IGZyb20gYWRtaW4gaW50ZXJmYWNlIHdpdGggUEhQIHN5bnRheCBoaWdobGlnaHRpbmc8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPkR5bmFtaWMgQ29uZmlndXJhdGlvbjo8L3N0cm9uZz4gQXV0b21hdGljYWxseSBkZXRlY3RzIGRvbWFpbiwgYWRtaW4gZW1haWwsIGFuZCBzaXRlIGNvbmZpZ3VyYXRpb248L2xpPgogICAgICAgIDxsaT48c3Ryb25nPlBvcnRhYmxlIERlc2lnbjo8L3N0cm9uZz4gTW9kdWxlIGNhbiBiZSBlYXNpbHkgZXhwb3J0ZWQgYW5kIGluc3RhbGxlZCBvbiBhbnkgQ01TTVMgc2l0ZTwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+Q2xlYW4gVVJMczo8L3N0cm9uZz4gRnVsbCBzdXBwb3J0IGZvciBDTVNNUyBjbGVhbiBVUkwgcm91dGluZyB3aXRob3V0IC5waHAgZXh0ZW5zaW9uczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+UmF0ZSBMaW1pdGluZzo8L3N0cm9uZz4gQ29uZmlndXJhYmxlIHJhdGUgbGltaXRpbmcgdG8gcHJldmVudCBhYnVzZSAoZGVmYXVsdDogMyByZXF1ZXN0cyBwZXIgaG91cik8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPlNlY3VyaXR5IEJlc3QgUHJhY3RpY2VzOjwvc3Ryb25nPiBJbnB1dCBzYW5pdGl6YXRpb24sIHNlY3VyZSBlbWFpbCBzZW5kaW5nLCBhbmQgZXZlbnQgbG9nZ2luZzwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+RG9uYXRpb25zIFRhYjo8L3N0cm9uZz4gT3B0aW9uYWwgZG9uYXRpb25zIHRhYiB0byBzdXBwb3J0IG1vZHVsZSBkZXZlbG9wbWVudDwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+UEhQIDcuNC04LjYgQ29tcGF0aWJsZTo8L3N0cm9uZz4gV29ya3Mgd2l0aCBhbGwgbW9kZXJuIFBIUCB2ZXJzaW9uczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+Q01TTVMgMi4yKzo8L3N0cm9uZz4gRnVsbCBpbnRlZ3JhdGlvbiB3aXRoIENNU01TIGVjb3N5c3RlbSBhbmQgU21hcnR5IHRlbXBsYXRpbmc8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPkFkZCB0byBBY2tub3dsZWRnbWVudHM6PC9zdHJvbmc+IFF1aWNrICJBZGQiIGJ1dHRvbiBpbiBWdWxuZXJhYmlsaXR5IFJlcG9ydHMgdG8gYWRkIGFja25vd2xlZGdtZW50cyB3aXRoIGVkaXRhYmxlIGZvcm08L2xpPgogICAgICAgIDxsaT48c3Ryb25nPkVuaGFuY2VkIEFja25vd2xlZGdtZW50czo8L3N0cm9uZz4gU3VwcG9ydCBmb3IgY29tcGFueSBhbmQgd2Vic2l0ZSBmaWVsZHMgaW4gYWNrbm93bGVkZ21lbnRzPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5EYXRlLUJhc2VkIFNvcnRpbmc6PC9zdHJvbmc+IEF1dG9tYXRpYyBzb3J0aW5nIGJ5IGRhdGUgKG5ld2VzdCBmaXJzdCkgd2l0aGluIGVhY2ggeWVhcjwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+QWRtaW4gUGxhY2VtZW50Ojwvc3Ryb25nPiBDb25maWd1cmFibGUgYWRtaW4gc2VjdGlvbiBwbGFjZW1lbnQgKGRlZmF1bHQ6IFNpdGUgQWRtaW4pPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5JbXByb3ZlZCBVSTo8L3N0cm9uZz4gRWRpdC9SZW1vdmUgYnV0dG9ucyBmb3IgYWNrbm93bGVkZ21lbnRzIGRpcmVjdGx5IGZyb20gcmVwb3J0czwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+V2Vic2l0ZSBWYWxpZGF0aW9uOjwvc3Ryb25nPiBBdXRvbWF0aWMgY29udmVyc2lvbiB0byBodHRwczovLyBmb3IgYWxsIHdlYnNpdGUgVVJMczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+QmV0dGVyIEludGVncmF0aW9uOjwvc3Ryb25nPiBTZWFtbGVzcyB3b3JrZmxvdyBmcm9tIHZ1bG5lcmFiaWxpdHkgcmVwb3J0IHRvIHB1YmxpYyBhY2tub3dsZWRnbWVudDwvbGk+CiAgICA8L3VsPgo8L2xpPgo8L3VsPjxiciAvPg==]]></about>
	<description><![CDATA[Complete Vulnerability Disclosure Policy (VDP) and Security Acknowledgments system for CMSMS. Provides secure forms for responsible vulnerability reporting, CSRF protection, rate limiting, email notifications, comprehensive security event logging, and easy acknowledgment management with company/website support.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/acknowledgments-data.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNlY3VyaXR5IEFja25vd2xlZGdtZW50cyBEYXRhCiAqIAogKiBTdG9yZXMgYWNrbm93bGVkZ21lbnRzIGRhdGEgaW4gYW4gZWFzaWx5IGVkaXRhYmxlIGZvcm1hdC4KICogVXBkYXRlIHRoaXMgZmlsZSB3aGVuIGFkZGluZyBuZXcgYWNrbm93bGVkZ21lbnRzLgogKiAKICogRm9ybWF0OiBhcnJheSgKICogICAgICd5ZWFyJyA9PiBhcnJheSgKICogICAgICAgICBhcnJheSgKICogICAgICAgICAgICAgJ25hbWUnID0+ICdSZXNlYXJjaGVyIE5hbWUgb3IgSGFuZGxlJywKICogICAgICAgICAgICAgJ2NvbXBhbnknID0+ICdDb21wYW55IE5hbWUgKG9wdGlvbmFsKScsCiAqICAgICAgICAgICAgICd3ZWJzaXRlJyA9PiAnV2Vic2l0ZSBVUkwgKG9wdGlvbmFsKScsCiAqICAgICAgICAgICAgICd2dWxuZXJhYmlsaXR5JyA9PiAnQnJpZWYgZGVzY3JpcHRpb24nLAogKiAgICAgICAgICAgICAnZGF0ZScgPT4gJ1lZWVktTU0tREQnLAogKiAgICAgICAgICAgICAnZGlzY2xvc3VyZScgPT4gJ3B1YmxpYyd8J3ByaXZhdGUnfCdjb29yZGluYXRlZCcsCiAqICAgICAgICAgICAgICdjcmVkaXRfbGluaycgPT4gJ09wdGlvbmFsIFVSTCcsCiAqICAgICAgICAgICAgICdyZXBvcnRfaWQnID0+ICdSZXBvcnQgSUQgZm9yIHJlZmVyZW5jZScKICogICAgICAgICApLAogKiAgICAgICAgIC4uLgogKiAgICAgKSwKICogICAgIC4uLgogKiApCiAqIAogKiBOb3RlOiBMaXN0IGl0ZW1zIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciAobmV3ZXN0IGZpcnN0KQogKi8KCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKJGFja25vd2xlZGdtZW50cyA9IGFycmF5ICgKKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.acknowledgments.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNlY3VyaXR5IEFja25vd2xlZGdtZW50cyBBY3Rpb24KICogCiAqIEFjdGlvbiBmaWxlIGZvciBDTVNNUyBNQVMgU2VjdXJpdHkgbW9kdWxlCiAqIFdvcmtzIHdoZW4gY2FsbGVkIGZyb20gQ01TTVMgY29udGVudCBwYWdlcyB1c2luZyB7Y21zX21vZHVsZSBtb2R1bGU9J01BU19TZWN1cml0eScgYWN0aW9uPSdhY2tub3dsZWRnbWVudHMnfQogKi8KCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKLy8gTG9hZCBhY2tub3dsZWRnbWVudHMgZGF0YQokYWNrbm93bGVkZ21lbnRzX2ZpbGUgPSBfX0RJUl9fIC4gJy9hY2tub3dsZWRnbWVudHMtZGF0YS5waHAnOwppZiAoZmlsZV9leGlzdHMoJGFja25vd2xlZGdtZW50c19maWxlKSkgewogICAgcmVxdWlyZV9vbmNlKCRhY2tub3dsZWRnbWVudHNfZmlsZSk7Cn0gZWxzZSB7CiAgICAkYWNrbm93bGVkZ21lbnRzID0gYXJyYXkoKTsKfQoKLy8gU29ydCBieSBkYXRlIHdpdGhpbiBlYWNoIHllYXIgKG5ld2VzdCBmaXJzdCksIHRoZW4gc29ydCB5ZWFycyAobmV3ZXN0IGZpcnN0KQpmb3JlYWNoICgkYWNrbm93bGVkZ21lbnRzIGFzICR5ZWFyID0+ICYkeWVhcl9hY2tzKSB7CiAgICB1c29ydCgkeWVhcl9hY2tzLCBmdW5jdGlvbigkYSwgJGIpIHsKICAgICAgICByZXR1cm4gc3RyY21wKCRiWydkYXRlJ10sICRhWydkYXRlJ10pOwogICAgfSk7Cn0KdW5zZXQoJHllYXJfYWNrcyk7CgovLyBTb3J0IHllYXJzIGluIGRlc2NlbmRpbmcgb3JkZXIgKG5ld2VzdCBmaXJzdCkKa3Jzb3J0KCRhY2tub3dsZWRnbWVudHMpOwoKLy8gQ2FsY3VsYXRlIHRvdGFsIGNvdW50CiR0b3RhbF9jb3VudCA9IDA7CmZvcmVhY2ggKCRhY2tub3dsZWRnbWVudHMgYXMgJHllYXJfZGF0YSkgewogICAgJHRvdGFsX2NvdW50ICs9IGNvdW50KCR5ZWFyX2RhdGEpOwp9CgovLyBHZXQgY29uZmlnCiRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKJHJvb3RfdXJsID0gaXNzZXQoJGNvbmZpZ1sncm9vdF91cmwnXSkgPyAkY29uZmlnWydyb290X3VybCddIDogKGlzc2V0KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSA9PT0gJ29uJyA/ICdodHRwcycgOiAnaHR0cCcpIC4gJzovLycgLiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICdsb2NhbGhvc3QnKTsKJHNpdGVfbmFtZSA9IGlzc2V0KCRjb25maWdbJ3NpdGVuYW1lJ10pID8gJGNvbmZpZ1snc2l0ZW5hbWUnXSA6IChpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pID8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIDogJ3lvdXItc2l0ZS5jb20nKTsKCi8vIEV4dHJhY3QgYmFzZSBkb21haW4gZnJvbSByb290X3VybAokcGFyc2VkX3VybCA9IHBhcnNlX3VybCgkcm9vdF91cmwpOwokYmFzZV9kb21haW4gPSBpc3NldCgkcGFyc2VkX3VybFsnaG9zdCddKSA/ICRwYXJzZWRfdXJsWydob3N0J10gOiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICd5b3VyLXNpdGUuY29tJyk7CgovLyBHZXQgYWRtaW4gZW1haWwgZm9yIGNvbnRhY3QgaW5mbwokYWRtaW5fZW1haWwgPSAnJzsKdHJ5IHsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAkYWRtaW5fdXNlciA9ICRkYi0+R2V0Um93KCdTRUxFQ1QgZW1haWwgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICd1c2VycyBXSEVSRSB1c2VyX2lkID0gMScpOwogICAgaWYgKCRhZG1pbl91c2VyICYmIGlzc2V0KCRhZG1pbl91c2VyWydlbWFpbCddKSkgewogICAgICAgICRhZG1pbl9lbWFpbCA9ICRhZG1pbl91c2VyWydlbWFpbCddOwogICAgfQp9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgIC8vIEZhbGxiYWNrIGlmIHF1ZXJ5IGZhaWxzCn0KaWYgKGVtcHR5KCRhZG1pbl9lbWFpbCkpIHsKICAgICRhZG1pbl9lbWFpbCA9ICdzZWN1cml0eUAnIC4gJGJhc2VfZG9tYWluOwp9CgovLyBHZXQgY3VycmVudCBjb250ZW50IHBhZ2UgVVJMIGlmIGNhbGxlZCBmcm9tIGEgY29udGVudCBwYWdlCiRjdXJyZW50X3BhZ2VfdXJsID0gJyc7CmlmIChpc3NldCgkcmV0dXJuaWQpICYmICRyZXR1cm5pZCA+IDApIHsKICAgICRjb250ZW50b3BzID0gQ29udGVudE9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpOwogICAgJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQoJHJldHVybmlkKTsKICAgIGlmICgkY29udGVudCkgewogICAgICAgICRjdXJyZW50X3BhZ2VfdXJsID0gJGNvbnRlbnQtPkdldFVSTCgpOwogICAgfQp9CmlmIChlbXB0eSgkY3VycmVudF9wYWdlX3VybCkgJiYgaXNzZXQoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pKSB7CiAgICAkY3VycmVudF9wYWdlX3VybCA9ICRyb290X3VybCAuIHBhcnNlX3VybCgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSwgUEhQX1VSTF9QQVRIKTsKfQoKLy8gTG9hZCB0ZW1wbGF0ZSB1c2luZyBkaXJlY3QgZmlsZSBwYXRoCi8vIFRoaXMgd29ya3MgcmVsaWFibHkgaW4gYm90aCBmcm9udGVuZCBhbmQgYWRtaW4gY29udGV4dHMKJHRlbXBsYXRlX2ZpbGUgPSBfX0RJUl9fIC4gJy90ZW1wbGF0ZXMvYWNrbm93bGVkZ21lbnRzLnRwbCc7CmlmICghZmlsZV9leGlzdHMoJHRlbXBsYXRlX2ZpbGUpKSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJzZWN1cml0eS1hY2stY29udGFpbmVyIj4nOwogICAgZWNobyAnPGgxPlNlY3VyaXR5IEFja25vd2xlZGdtZW50czwvaDE+JzsKICAgIGVjaG8gJzxwPlRlbXBsYXRlIGZpbGUgbm90IGZvdW5kIGF0OiAnIC4gaHRtbHNwZWNpYWxjaGFycygkdGVtcGxhdGVfZmlsZSkgLiAnPC9wPic7CiAgICBlY2hvICc8L2Rpdj4nOwogICAgcmV0dXJuOwp9CgovLyBVc2UgU21hcnR5IGRpcmVjdGx5IHdpdGggZmlsZSBwYXRoCiRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKdHJ5IHsKICAgICR0ZW1wbGF0ZSA9ICRzbWFydHktPmNyZWF0ZVRlbXBsYXRlKCR0ZW1wbGF0ZV9maWxlKTsKfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJzZWN1cml0eS1hY2stY29udGFpbmVyIj4nOwogICAgZWNobyAnPGgxPlNlY3VyaXR5IEFja25vd2xlZGdtZW50czwvaDE+JzsKICAgIGVjaG8gJzxwPkVycm9yIGxvYWRpbmcgdGVtcGxhdGU6ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD4nOwogICAgZWNobyAnPC9kaXY+JzsKICAgIHJldHVybjsKfQoKaWYgKCR0ZW1wbGF0ZSA9PT0gZmFsc2UgfHwgJHRlbXBsYXRlID09PSBudWxsKSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJzZWN1cml0eS1hY2stY29udGFpbmVyIj4nOwogICAgZWNobyAnPGgxPlNlY3VyaXR5IEFja25vd2xlZGdtZW50czwvaDE+JzsKICAgIGVjaG8gJzxwPlRlbXBsYXRlIGNvdWxkIG5vdCBiZSBsb2FkZWQuPC9wPic7CiAgICBlY2hvICc8L2Rpdj4nOwogICAgcmV0dXJuOwp9CgokdGVtcGxhdGUtPmFzc2lnbignYWNrbm93bGVkZ21lbnRzJywgJGFja25vd2xlZGdtZW50cyk7CiR0ZW1wbGF0ZS0+YXNzaWduKCd0b3RhbF9jb3VudCcsICR0b3RhbF9jb3VudCk7CiR0ZW1wbGF0ZS0+YXNzaWduKCdzaXRlX25hbWUnLCAkc2l0ZV9uYW1lKTsKJHRlbXBsYXRlLT5hc3NpZ24oJ2Jhc2VfZG9tYWluJywgJGJhc2VfZG9tYWluKTsKJHRlbXBsYXRlLT5hc3NpZ24oJ3Jvb3RfdXJsJywgJHJvb3RfdXJsKTsKJHRlbXBsYXRlLT5hc3NpZ24oJ2FkbWluX2VtYWlsJywgJGFkbWluX2VtYWlsKTsKJHRlbXBsYXRlLT5hc3NpZ24oJ2N1cnJlbnRfcGFnZV91cmwnLCAkY3VycmVudF9wYWdlX3VybCk7CgokdGVtcGxhdGUtPmRpc3BsYXkoKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/action.adminsavesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFkbWluIFNhdmUgU2V0dGluZ3MgQWN0aW9uIGZvciBNQVMgU2VjdXJpdHkKICovCgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY21zbXMnKSkgZXhpdDsKCmlmICghJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpKSB7CiAgICByZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCi8vIFRoaXMgYWN0aW9uIGp1c3QgcmVkaXJlY3RzIC0gYWN0dWFsIHByb2Nlc3NpbmcgaXMgaW4gZnVuY3Rpb24uYWRtaW5fc2V0dGluZ3MucGhwCnJlZGlyZWN0KCR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJycsIGFycmF5KCdhY3RpdmV0YWInID0+ICdzZXR0aW5ncycpKSk7Cgo/PgoK]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERlZmF1bHQgYWN0aW9uIC0gcmVkaXJlY3RzIHRvIFZEUAogKi8KCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKLy8gRGVmYXVsdCBhY3Rpb24gaXMgVkRQCnJlcXVpcmVfb25jZShfX0RJUl9fIC4gJy9hY3Rpb24udmRwLnBocCcpOwoKPz4KCg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERlZmF1bHQgQWRtaW4gSW50ZXJmYWNlIGZvciBNQVMgU2VjdXJpdHkKICogQ29tcGF0aWJsZSB3aXRoIFBIUCA3LjQtOC42CiAqLwoKaWYgKCFpc3NldCgkZ0NtcykpIHsKICAgIGV4aXQ7Cn0KCi8vIERlYnVnOiBUZXN0IGlmIGZpbGUgaXMgYmVpbmcgZXhlY3V0ZWQKLy8gUmVtb3ZlIHRoaXMgYWZ0ZXIgY29uZmlybWluZyBpdCB3b3JrcwovLyBlY2hvICI8IS0tIE1BUyBTZWN1cml0eSBhZG1pbiBpbnRlcmZhY2UgbG9hZGVkIC0tPiI7CgppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgewogICAgLy8gRGVidWc6IENoZWNrIHdoeSBwZXJtaXNzaW9uIGlzIGZhaWxpbmcKICAgIC8vIFJlbW92ZSB0aGlzIGFmdGVyIGNvbmZpcm1pbmcgaXQgd29ya3MKICAgIC8vICR1aWQgPSBnZXRfdXNlcmlkKGZhbHNlKTsKICAgIC8vIGVjaG8gIjwhLS0gVmlzaWJsZVRvQWRtaW5Vc2VyIGZhaWxlZC4gVXNlciBJRDogIiAuICR1aWQgLiAiIC0tPiI7CiAgICByZXR1cm47Cn0KCi8vIEFzc2lnbiBtb2R1bGUgdG8gU21hcnR5IGZvciB0ZW1wbGF0ZSB1c2UKaWYgKGlzc2V0KCRzbWFydHkpKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ21vZCcsICR0aGlzKTsKfQoKLy8gSGFuZGxlIGhpZGluZyBkb25hdGlvbnMgdGFiCmlmIChpc3NldCgkcGFyYW1zWyJoaWRlZG9uYXRpb25zc3VibWl0Il0pKSB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgiaGlkZWRvbmF0aW9uc3RhYiIsICR0aGlzLT5HZXRWZXJzaW9uKCkpOwogICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2RvbmF0aW9uc190YWJfaGlkZGVuJykpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZXRhYicgPT4gJ2RvbmF0aW9ucycsICdtc2cnID0+ICdkb25hdGlvbnNfdGFiX2hpZGRlbicpKTsKfQoKLy8gSGFuZGxlIHN1Y2Nlc3MgbWVzc2FnZXMKaWYgKCFlbXB0eSgkcGFyYW1zWydtc2cnXSkpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCRwYXJhbXNbJ21zZyddKSk7Cn0KCi8vIFByb2Nlc3MgZm9ybSBzdWJtaXNzaW9uIGZvciBzZXR0aW5ncwppZiAoaXNzZXQoJHBhcmFtc1snc2F2ZXNldHRpbmdzJ10pKSB7CiAgICAkc2VjdXJpdHlfZW1haWwgPSBpc3NldCgkcGFyYW1zWydzZWN1cml0eV9lbWFpbCddKSA/IHRyaW0oJHBhcmFtc1snc2VjdXJpdHlfZW1haWwnXSkgOiAnJzsKICAgIC8vIElmIGVtcHR5LCB0cnkgdG8gZ2V0IGFkbWluIGVtYWlsCiAgICBpZiAoZW1wdHkoJHNlY3VyaXR5X2VtYWlsKSkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgICAgICRhZG1pbl91c2VyID0gJGRiLT5HZXRSb3coJ1NFTEVDVCBlbWFpbCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ3VzZXJzIFdIRVJFIHVzZXJfaWQgPSAxJyk7CiAgICAgICAgICAgIGlmICgkYWRtaW5fdXNlciAmJiBpc3NldCgkYWRtaW5fdXNlclsnZW1haWwnXSkpIHsKICAgICAgICAgICAgICAgICRzZWN1cml0eV9lbWFpbCA9ICRhZG1pbl91c2VyWydlbWFpbCddOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIC8vIEZhbGxiYWNrIGlmIHF1ZXJ5IGZhaWxzCiAgICAgICAgfQogICAgfQogICAgCiAgICBpZiAoIWVtcHR5KCRzZWN1cml0eV9lbWFpbCkgJiYgZmlsdGVyX3Zhcigkc2VjdXJpdHlfZW1haWwsIEZJTFRFUl9WQUxJREFURV9FTUFJTCkpIHsKICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2VjdXJpdHlfZW1haWwnLCAkc2VjdXJpdHlfZW1haWwpOwogICAgfQogICAgCiAgICAkcmF0ZV9saW1pdCA9IGlzc2V0KCRwYXJhbXNbJ3JhdGVfbGltaXRfcmVxdWVzdHMnXSkgPyAoaW50KSRwYXJhbXNbJ3JhdGVfbGltaXRfcmVxdWVzdHMnXSA6IDM7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncmF0ZV9saW1pdF9yZXF1ZXN0cycsIG1heCgxLCBtaW4oMTAsICRyYXRlX2xpbWl0KSkpOwogICAgCiAgICAkcmF0ZV93aW5kb3cgPSBpc3NldCgkcGFyYW1zWydyYXRlX2xpbWl0X3dpbmRvdyddKSA/IChpbnQpJHBhcmFtc1sncmF0ZV9saW1pdF93aW5kb3cnXSA6IDM2MDA7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncmF0ZV9saW1pdF93aW5kb3cnLCBtYXgoNjAsIG1pbig4NjQwMCwgJHJhdGVfd2luZG93KSkpOwogICAgCiAgICAvLyBIYW5kbGUgYWRtaW4gc2VjdGlvbiBzZXR0aW5nCiAgICAkYWRtaW5fc2VjdGlvbnMgPSBhcnJheSgKICAgICAgICAnZXh0ZW5zaW9ucycgPT4gJ0V4dGVuc2lvbnMnLAogICAgICAgICdjb250ZW50JyA9PiAnQ29udGVudCcsCiAgICAgICAgJ3NpdGVhZG1pbicgPT4gJ1NpdGUgQWRtaW4nLAogICAgICAgICd1c2Vyc2dyb3VwcycgPT4gJ1VzZXIgTWFuYWdlbWVudCcKICAgICk7CiAgICAkYWRtaW5fc2VjdGlvbiA9IGlzc2V0KCRwYXJhbXNbJ2FkbWluX3NlY3Rpb24nXSkgPyB0cmltKCRwYXJhbXNbJ2FkbWluX3NlY3Rpb24nXSkgOiAnc2l0ZWFkbWluJzsKICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygkYWRtaW5fc2VjdGlvbiwgJGFkbWluX3NlY3Rpb25zKSkgewogICAgICAgICRhZG1pbl9zZWN0aW9uID0gJ3NpdGVhZG1pbic7CiAgICB9CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX3NlY3VyaXR5X2FkbWluX3NlY3Rpb24nLCAkYWRtaW5fc2VjdGlvbik7CiAgICAKICAgIC8vIEhhbmRsZSBzaG93IGRvbmF0aW9ucyB0YWIgc2V0dGluZwogICAgaWYgKGlzc2V0KCRwYXJhbXNbInNob3dkb25hdGlvbnN0YWIiXSkgJiYgJHBhcmFtc1sic2hvd2RvbmF0aW9uc3RhYiJdID09ICIxIikgewogICAgICAgIC8vIFJlbW92ZSB0aGUgcHJlZmVyZW5jZSB0byBzaG93IHRoZSBkb25hdGlvbnMgdGFiIGFnYWluCiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoImhpZGVkb25hdGlvbnN0YWIiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gSGlkZSB0aGUgZG9uYXRpb25zIHRhYgogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJoaWRlZG9uYXRpb25zdGFiIiwgJHRoaXMtPkdldFZlcnNpb24oKSk7CiAgICB9CiAgICAKICAgICR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdzZXR0aW5nc19zYXZlZCcpKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmV0YWInID0+ICdzZXR0aW5ncycsICdtc2cnID0+ICdzZXR0aW5nc19zYXZlZCcpKTsKfQoKLy8gSGFuZGxlIHJlcG9ydCByZXNvbHV0aW9uIHN0YXR1cyBjaGFuZ2UKaWYgKGlzc2V0KCRwYXJhbXNbJ21hcmtfcmVwb3J0X3Jlc29sdmVkJ10pIHx8IGlzc2V0KCRwYXJhbXNbJ21hcmtfcmVwb3J0X3VucmVzb2x2ZWQnXSkpIHsKICAgIHJlcXVpcmVfb25jZShfX0RJUl9fIC4gJy9zZWN1cml0eS1mdW5jdGlvbnMucGhwJyk7CiAgICAKICAgICRyZXBvcnRfaWQgPSBpc3NldCgkcGFyYW1zWydyZXBvcnRfaWQnXSkgPyB0cmltKCRwYXJhbXNbJ3JlcG9ydF9pZCddKSA6ICcnOwogICAgJHJlc29sdmVkID0gaXNzZXQoJHBhcmFtc1snbWFya19yZXBvcnRfcmVzb2x2ZWQnXSk7CiAgICAkdXNlcl9pZCA9IGdldF91c2VyaWQoZmFsc2UpOwogICAgCiAgICBpZiAoIWVtcHR5KCRyZXBvcnRfaWQpKSB7CiAgICAgICAgaWYgKHNlY3VyaXR5X3NldF9yZXBvcnRfc3RhdHVzKCRyZXBvcnRfaWQsICRyZXNvbHZlZCwgJHVzZXJfaWQpKSB7CiAgICAgICAgICAgICR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdyZXBvcnRzX3Jlc29sdXRpb25fc2F2ZWQnKSk7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmV0YWInID0+ICdyZXBvcnRzJywgJ21zZycgPT4gJ3JlcG9ydHNfcmVzb2x1dGlvbl9zYXZlZCcpKTsKICAgICAgICB9CiAgICB9Cn0KCi8vIEhhbmRsZSBhY2tub3dsZWRnbWVudHMgZmlsZSBzYXZlCmlmIChpc3NldCgkcGFyYW1zWydzYXZlX2Fja25vd2xlZGdtZW50cyddKSkgewogICAgJGFja19maWxlID0gX19ESVJfXyAuICcvYWNrbm93bGVkZ21lbnRzLWRhdGEucGhwJzsKICAgICRmaWxlX2NvbnRlbnQgPSBpc3NldCgkcGFyYW1zWydhY2tub3dsZWRnbWVudHNfY29udGVudCddKSA/ICRwYXJhbXNbJ2Fja25vd2xlZGdtZW50c19jb250ZW50J10gOiAnJzsKICAgIAogICAgaWYgKCFlbXB0eSgkZmlsZV9jb250ZW50KSkgewogICAgICAgIC8vIFZhbGlkYXRlIFBIUCBzeW50YXggYmVmb3JlIHNhdmluZwogICAgICAgICR0ZW1wX2ZpbGUgPSB0ZW1wbmFtKHN5c19nZXRfdGVtcF9kaXIoKSwgJ2Fja18nKTsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkdGVtcF9maWxlLCAkZmlsZV9jb250ZW50KTsKICAgICAgICAkc3ludGF4X2NoZWNrID0gc2hlbGxfZXhlYygicGhwIC1sICR0ZW1wX2ZpbGUgMj4mMSIpOwogICAgICAgIHVubGluaygkdGVtcF9maWxlKTsKICAgICAgICAKICAgICAgICBpZiAoc3RycG9zKCRzeW50YXhfY2hlY2ssICdObyBzeW50YXggZXJyb3JzJykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIC8vIEJhY2t1cCBleGlzdGluZyBmaWxlCiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkYWNrX2ZpbGUpKSB7CiAgICAgICAgICAgICAgICAkYmFja3VwX2ZpbGUgPSAkYWNrX2ZpbGUgLiAnLmJhY2t1cC4nIC4gZGF0ZSgnWS1tLWRfSC1pLXMnKTsKICAgICAgICAgICAgICAgIGNvcHkoJGFja19maWxlLCAkYmFja3VwX2ZpbGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBTYXZlIG5ldyBjb250ZW50CiAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRhY2tfZmlsZSwgJGZpbGVfY29udGVudCk7CiAgICAgICAgICAgIGNobW9kKCRhY2tfZmlsZSwgMDY0NCk7CiAgICAgICAgICAgIGNob3duKCRhY2tfZmlsZSwgJ25ld3N0MzkyMicpOwogICAgICAgICAgICAKICAgICAgICAgICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2Fja25vd2xlZGdtZW50c19zYXZlZCcpKTsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZXRhYicgPT4gJ2Fja25vd2xlZGdtZW50cycsICdtc2cnID0+ICdhY2tub3dsZWRnbWVudHNfc2F2ZWQnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJ1N5bnRheCBlcnJvciBpbiBhY2tub3dsZWRnbWVudHMgZmlsZTogJyAuICRzeW50YXhfY2hlY2spOwogICAgICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgnRXJyb3I6IFBIUCBzeW50YXggZXJyb3IuIEZpbGUgbm90IHNhdmVkLicpOwogICAgICAgIH0KICAgIH0KfQoKLy8gSGFuZGxlIGxvZyBjbGVhcmluZwppZiAoaXNzZXQoJHBhcmFtc1snY2xlYXJsb2dzJ10pKSB7CiAgICByZXF1aXJlX29uY2UoX19ESVJfXyAuICcvc2VjdXJpdHktZnVuY3Rpb25zLnBocCcpOwogICAgCiAgICAkbG9nX2ZpbGUgPSAnJzsKICAgIGlmIChkZWZpbmVkKCdUTVBfQ0FDSEVfTE9DQVRJT04nKSkgewogICAgICAgICRsb2dfZmlsZSA9IFRNUF9DQUNIRV9MT0NBVElPTiAuICcvdmRwX3NlY3VyaXR5LmxvZyc7CiAgICB9IGVsc2UgewogICAgICAgICRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ10pKSB7CiAgICAgICAgICAgICRsb2dfZmlsZSA9ICRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddIC4gJy92ZHBfc2VjdXJpdHkubG9nJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbG9nX2ZpbGUgPSBkaXJuYW1lKGRpcm5hbWUoX19ESVJfXykpIC4gJy90bXAvY2FjaGUvdmRwX3NlY3VyaXR5LmxvZyc7CiAgICAgICAgfQogICAgfQogICAgCiAgICBpZiAoZmlsZV9leGlzdHMoJGxvZ19maWxlKSkgewogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRsb2dfZmlsZSwgJycpOwogICAgICAgICR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdsb2dzX2NsZWFyZWQnKSk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZXRhYicgPT4gJ2xvZ3MnLCAnbXNnJyA9PiAnbG9nc19jbGVhcmVkJykpOwogICAgfQp9CgovLyBHZXQgY3VycmVudCB0YWIKJGFjdGl2ZXRhYiA9IGlzc2V0KCRwYXJhbXNbImFjdGl2ZXRhYiJdKSA/ICRwYXJhbXNbImFjdGl2ZXRhYiJdIDogInNldHRpbmdzIjsKCi8vIFN0YXJ0IHRhYnMKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigic2V0dGluZ3MiLCAkdGhpcy0+TGFuZygndGFiX3NldHRpbmdzJyksICgkYWN0aXZldGFiID09ICJzZXR0aW5ncyIpKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJhY2tub3dsZWRnbWVudHMiLCAkdGhpcy0+TGFuZygndGFiX2Fja25vd2xlZGdtZW50cycpLCAoJGFjdGl2ZXRhYiA9PSAiYWNrbm93bGVkZ21lbnRzIikpOwplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoInJlcG9ydHMiLCAkdGhpcy0+TGFuZygndGFiX3JlcG9ydHMnKSwgKCRhY3RpdmV0YWIgPT0gInJlcG9ydHMiKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigibG9ncyIsICR0aGlzLT5MYW5nKCd0YWJfbG9ncycpLCAoJGFjdGl2ZXRhYiA9PSAibG9ncyIpKTsKaWYgKCR0aGlzLT5TaG93RG9uYXRpb25zVGFiKCkpIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigiZG9uYXRpb25zIiwgJHRoaXMtPkxhbmcoJ3RhYl9kb25hdGlvbnMnKSwgKCRhY3RpdmV0YWIgPT0gImRvbmF0aW9ucyIpKTsKfQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoKLy8gU2V0dGluZ3MgVGFiCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJzZXR0aW5ncyIpOwovLyBHZXQgc2VjdXJpdHkgZW1haWwgd2l0aCBkeW5hbWljIGZhbGxiYWNrCiRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKJHNlY3VyaXR5X2VtYWlsID0gaXNzZXQoJGNvbmZpZ1snc2VjdXJpdHlfZW1haWwnXSkgPyAkY29uZmlnWydzZWN1cml0eV9lbWFpbCddIDogJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlY3VyaXR5X2VtYWlsJywgJycpOwoKLy8gSWYgZW1wdHksIHRyeSB0byBnZXQgYWRtaW4gZW1haWwKaWYgKGVtcHR5KCRzZWN1cml0eV9lbWFpbCkpIHsKICAgIHRyeSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkYWRtaW5fdXNlciA9ICRkYi0+R2V0Um93KCdTRUxFQ1QgZW1haWwgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICd1c2VycyBXSEVSRSB1c2VyX2lkID0gMScpOwogICAgICAgIGlmICgkYWRtaW5fdXNlciAmJiBpc3NldCgkYWRtaW5fdXNlclsnZW1haWwnXSkpIHsKICAgICAgICAgICAgJHNlY3VyaXR5X2VtYWlsID0gJGFkbWluX3VzZXJbJ2VtYWlsJ107CiAgICAgICAgfQogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgLy8gRmFsbGJhY2sgaWYgcXVlcnkgZmFpbHMKICAgIH0KfQoKLy8gRmluYWwgZmFsbGJhY2s6IGNvbnN0cnVjdCBmcm9tIGRvbWFpbgppZiAoZW1wdHkoJHNlY3VyaXR5X2VtYWlsKSkgewogICAgJHJvb3RfdXJsID0gaXNzZXQoJGNvbmZpZ1sncm9vdF91cmwnXSkgPyAkY29uZmlnWydyb290X3VybCddIDogKGlzc2V0KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSA9PT0gJ29uJyA/ICdodHRwcycgOiAnaHR0cCcpIC4gJzovLycgLiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICdsb2NhbGhvc3QnKTsKICAgICRwYXJzZWRfdXJsID0gcGFyc2VfdXJsKCRyb290X3VybCk7CiAgICAkYmFzZV9kb21haW4gPSBpc3NldCgkcGFyc2VkX3VybFsnaG9zdCddKSA/ICRwYXJzZWRfdXJsWydob3N0J10gOiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICd5b3VyLXNpdGUuY29tJyk7CiAgICAkc2VjdXJpdHlfZW1haWwgPSAnc2VjdXJpdHlAJyAuICRiYXNlX2RvbWFpbjsKfQokcmF0ZV9saW1pdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyYXRlX2xpbWl0X3JlcXVlc3RzJywgMyk7CiRyYXRlX3dpbmRvdyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyYXRlX2xpbWl0X3dpbmRvdycsIDM2MDApOwoKZWNobyAnPGgyPicgLiAkdGhpcy0+TGFuZygnc2V0dGluZ3NfdGl0bGUnKSAuICc8L2gyPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdhY3RpdmV0YWInLCAnc2V0dGluZ3MnKTsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ3NlY3VyaXR5X2VtYWlsJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnc2VjdXJpdHlfZW1haWwnLCAkc2VjdXJpdHlfZW1haWwsIDUwLCAyNTUpOwplY2hvICc8YnI+PGVtPicgLiAkdGhpcy0+TGFuZygnc2VjdXJpdHlfZW1haWxfaGVscCcpIC4gJzwvZW0+JzsKZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdyYXRlX2xpbWl0X3JlcXVlc3RzJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAncmF0ZV9saW1pdF9yZXF1ZXN0cycsICRyYXRlX2xpbWl0LCAzLCAyKTsKZWNobyAnPGJyPjxlbT4nIC4gJHRoaXMtPkxhbmcoJ3JhdGVfbGltaXRfcmVxdWVzdHNfaGVscCcpIC4gJzwvZW0+JzsKZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdyYXRlX2xpbWl0X3dpbmRvdycpIC4gJzo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3JhdGVfbGltaXRfd2luZG93JywgJHJhdGVfd2luZG93LCA2LCA1KTsKZWNobyAnPGJyPjxlbT4nIC4gJHRoaXMtPkxhbmcoJ3JhdGVfbGltaXRfd2luZG93X2hlbHAnKSAuICc8L2VtPic7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKLy8gQWRtaW4gcGxhY2VtZW50IHNlY3Rpb24KJGFkbWluX3NlY3Rpb25zID0gYXJyYXkoCiAgICAnZXh0ZW5zaW9ucycgPT4gJ0V4dGVuc2lvbnMnLAogICAgJ2NvbnRlbnQnID0+ICdDb250ZW50JywKICAgICdzaXRlYWRtaW4nID0+ICdTaXRlIEFkbWluJywKICAgICd1c2Vyc2dyb3VwcycgPT4gJ1VzZXIgTWFuYWdlbWVudCcKKTsKJGN1cnJlbnRfYWRtaW5fc2VjdGlvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfc2VjdXJpdHlfYWRtaW5fc2VjdGlvbicsICdzaXRlYWRtaW4nKTsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5BZG1pbiBwbGFjZW1lbnQ6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJzxsYWJlbD5BZG1pbiBzZWN0aW9uOjwvbGFiZWw+PGJyPic7CmVjaG8gJzxzZWxlY3QgbmFtZT0iJyAuICRpZCAuICdhZG1pbl9zZWN0aW9uIiBzdHlsZT0ibWFyZ2luLXRvcDogNXB4OyI+JzsKZm9yZWFjaCAoJGFkbWluX3NlY3Rpb25zIGFzICRrZXkgPT4gJGxhYmVsKSB7CiAgICAkc2VsZWN0ZWQgPSAoJGN1cnJlbnRfYWRtaW5fc2VjdGlvbiA9PSAka2V5KSA/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIicgOiAnJzsKICAgIGVjaG8gJzxvcHRpb24gdmFsdWU9IicgLiBodG1sc3BlY2lhbGNoYXJzKCRrZXksIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJyInIC4gJHNlbGVjdGVkIC4gJz4nIC4gaHRtbHNwZWNpYWxjaGFycygkbGFiZWwsIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJzwvb3B0aW9uPic7Cn0KZWNobyAnPC9zZWxlY3Q+JzsKZWNobyAnPGJyPjxlbT5TZWxlY3Qgd2hpY2ggYWRtaW4gc2VjdGlvbiB0aGlzIG1vZHVsZSBzaG91bGQgYXBwZWFyIGluLjwvZW0+JzsKZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgovLyBDaGVjayBpZiBkb25hdGlvbnMgdGFiIGlzIGN1cnJlbnRseSBoaWRkZW4KJGRvbmF0aW9uc0hpZGRlbiA9ICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgiaGlkZWRvbmF0aW9uc3RhYiIpID09ICR0aGlzLT5HZXRWZXJzaW9uKCkpOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnc2hvd2RvbmF0aW9uc3RhYicpIC4gJzo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdzaG93ZG9uYXRpb25zdGFiJywgJzEnLCAhJGRvbmF0aW9uc0hpZGRlbik7CmVjaG8gJzxicj48ZW0+JyAuICR0aGlzLT5MYW5nKCdzaG93ZG9uYXRpb25zdGFiX2hlbHAnKSAuICc8L2VtPic7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzYXZlc2V0dGluZ3MnLCAkdGhpcy0+TGFuZygnc3VibWl0JykpOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgovLyBBY2tub3dsZWRnbWVudHMgVGFiCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJhY2tub3dsZWRnbWVudHMiKTsKZWNobyAnPGgyPicgLiAkdGhpcy0+TGFuZygnYWNrbm93bGVkZ21lbnRzX3RpdGxlJykgLiAnPC9oMj4nOwoKJGFja19maWxlID0gX19ESVJfXyAuICcvYWNrbm93bGVkZ21lbnRzLWRhdGEucGhwJzsKJGZpbGVfZXhpc3RzID0gZmlsZV9leGlzdHMoJGFja19maWxlKTsKJGVkaXRfbW9kZSA9IGlzc2V0KCRwYXJhbXNbJ2VkaXRfYWNrbm93bGVkZ21lbnRzJ10pOwoKaWYgKCRlZGl0X21vZGUpIHsKICAgIC8vIEVkaXQgbW9kZSAtIHNob3cgZWRpdG9yCiAgICAkZmlsZV9jb250ZW50ID0gJyc7CiAgICBpZiAoJGZpbGVfZXhpc3RzKSB7CiAgICAgICAgJGZpbGVfY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRhY2tfZmlsZSk7CiAgICB9IGVsc2UgewogICAgICAgIC8vIERlZmF1bHQgdGVtcGxhdGUgaWYgZmlsZSBkb2Vzbid0IGV4aXN0CiAgICAgICAgJGZpbGVfY29udGVudCA9ICc8P3BocAovKioKICogU2VjdXJpdHkgQWNrbm93bGVkZ21lbnRzIERhdGEKICogCiAqIFN0b3JlcyBhY2tub3dsZWRnbWVudHMgZGF0YSBpbiBhbiBlYXNpbHkgZWRpdGFibGUgZm9ybWF0LgogKiBVcGRhdGUgdGhpcyBmaWxlIHdoZW4gYWRkaW5nIG5ldyBhY2tub3dsZWRnbWVudHMuCiAqIAogKiBGb3JtYXQ6IGFycmF5KAogKiAgICAgXCd5ZWFyXCcgPT4gYXJyYXkoCiAqICAgICAgICAgYXJyYXkoCiAqICAgICAgICAgICAgIFwnbmFtZVwnID0+IFwnUmVzZWFyY2hlciBOYW1lIG9yIEhhbmRsZVwnLAogKiAgICAgICAgICAgICBcJ3Z1bG5lcmFiaWxpdHlcJyA9PiBcJ0JyaWVmIGRlc2NyaXB0aW9uXCcsCiAqICAgICAgICAgICAgIFwnZGF0ZVwnID0+IFwnWVlZWS1NTS1ERFwnLAogKiAgICAgICAgICAgICBcJ2Rpc2Nsb3N1cmVcJyA9PiBcJ3B1YmxpY1wnfFwncHJpdmF0ZVwnfFwnY29vcmRpbmF0ZWRcJywKICogICAgICAgICAgICAgXCdjcmVkaXRfbGlua1wnID0+IFwnT3B0aW9uYWwgVVJMXCcgLy8gbnVsbCBpZiBub3QgcHJvdmlkZWQKICogICAgICAgICApLAogKiAgICAgICAgIC4uLgogKiAgICAgKSwKICogICAgIC4uLgogKiApCiAqIAogKiBOb3RlOiBMaXN0IGl0ZW1zIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciAobmV3ZXN0IGZpcnN0KQogKi8KCmlmICghZGVmaW5lZChcJ0NNU19WRVJTSU9OXCcpKSB7CiAgICBleGl0Owp9CgokYWNrbm93bGVkZ21lbnRzID0gYXJyYXkoCiAgICAvLyBBZGQgYWNrbm93bGVkZ21lbnRzIGhlcmUgYXMgdnVsbmVyYWJpbGl0aWVzIGFyZSByZXNvbHZlZAopOwoKPz4KJzsKICAgIH0KICAgIAogICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5GaWxlIExvY2F0aW9uOjwvcD4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKICAgIGVjaG8gJzxjb2RlPicgLiBodG1sc3BlY2lhbGNoYXJzKCRhY2tfZmlsZSwgRU5UX1FVT1RFUywgJ1VURi04JykgLiAnPC9jb2RlPic7CiAgICBpZiAoJGZpbGVfZXhpc3RzKSB7CiAgICAgICAgZWNobyAnICgnIC4gY291bnQoZmlsZSgkYWNrX2ZpbGUpKSAuICcgbGluZXMsICcgLiBudW1iZXJfZm9ybWF0KGZpbGVzaXplKCRhY2tfZmlsZSkpIC4gJyBieXRlcyknOwogICAgfQogICAgZWNobyAnPC9wPic7CiAgICBlY2hvICc8L2Rpdj4nOwogICAgCiAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkKTsKICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2FjdGl2ZXRhYicsICdhY2tub3dsZWRnbWVudHMnKTsKICAgIAogICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2Fja25vd2xlZGdtZW50c19maWxlX2NvbnRlbnQnKSAuICc6PC9wPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwogICAgLy8gVXNlIENyZWF0ZVRleHRBcmVhIHdpdGggUEhQIHN5bnRheCBoaWdobGlnaHRpbmcgYmFzZWQgb24gdXNlciBwcmVmZXJlbmNlcwogICAgZWNobyAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJGZpbGVfY29udGVudCwgJ2Fja25vd2xlZGdtZW50c19jb250ZW50JywgJycsICdhY2tub3dsZWRnbWVudHNfY29udGVudCcsICcnLCAnJywgJzEwMCcsICczMCcsICcnLCAncGhwJywgJ3N0eWxlPSJ3aWR0aDogMTAwJTsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsiJyk7CiAgICBlY2hvICc8YnI+PGVtPicgLiAkdGhpcy0+TGFuZygnYWNrbm93bGVkZ21lbnRzX2VkaXRfaGVscCcpIC4gJzwvZW0+JzsKICAgIGVjaG8gJzwvcD4nOwogICAgZWNobyAnPC9kaXY+JzsKICAgIAogICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsKICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CiAgICBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzYXZlX2Fja25vd2xlZGdtZW50cycsICR0aGlzLT5MYW5nKCdzYXZlJykpOwogICAgZWNobyAnICc7CiAgICAkY2FuY2VsX3VybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJycsIGFycmF5KCdhY3RpdmV0YWInID0+ICdhY2tub3dsZWRnbWVudHMnKSwgJycsIHRydWUpOwogICAgZWNobyAnPGEgaHJlZj0iJyAuICRjYW5jZWxfdXJsIC4gJyIgY2xhc3M9ImNtc19zdWJtaXQiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDZweCAxMnB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IG1hcmdpbi1sZWZ0OiA1cHg7Ij4nIC4gJHRoaXMtPkxhbmcoJ2NhbmNlbCcpIC4gJzwvYT4nOwogICAgZWNobyAnPC9wPic7CiAgICBlY2hvICc8L2Rpdj4nOwogICAgCiAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CiAgICAKfSBlbHNlIHsKICAgIC8vIFZpZXcgbW9kZSAtIHNob3cgZmlsZSBpbmZvIGFuZCBlZGl0IGJ1dHRvbgogICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2Fja25vd2xlZGdtZW50c19maWxlX2xvY2F0aW9uJykgLiAnOjwvcD4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKICAgIGVjaG8gJzxjb2RlPicgLiBodG1sc3BlY2lhbGNoYXJzKCRhY2tfZmlsZSwgRU5UX1FVT1RFUywgJ1VURi04JykgLiAnPC9jb2RlPic7CiAgICBlY2hvICc8L3A+JzsKICAgIGVjaG8gJzwvZGl2Pic7CiAgICAKICAgIGlmICgkZmlsZV9leGlzdHMpIHsKICAgICAgICByZXF1aXJlX29uY2UoJGFja19maWxlKTsKICAgICAgICAkdG90YWxfY291bnQgPSAwOwogICAgICAgIGlmIChpc3NldCgkYWNrbm93bGVkZ21lbnRzKSAmJiBpc19hcnJheSgkYWNrbm93bGVkZ21lbnRzKSkgewogICAgICAgICAgICBmb3JlYWNoICgkYWNrbm93bGVkZ21lbnRzIGFzICR5ZWFyX2RhdGEpIHsKICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkeWVhcl9kYXRhKSkgewogICAgICAgICAgICAgICAgICAgICR0b3RhbF9jb3VudCArPSBjb3VudCgkeWVhcl9kYXRhKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CiAgICAgICAgZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5GaWxlIFN0YXR1czo8L3A+JzsKICAgICAgICBlY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwogICAgICAgIGVjaG8gJ+KchSBGaWxlIGV4aXN0cyAoJyAuIGNvdW50KGZpbGUoJGFja19maWxlKSkgLiAnIGxpbmVzLCAnIC4gbnVtYmVyX2Zvcm1hdChmaWxlc2l6ZSgkYWNrX2ZpbGUpKSAuICcgYnl0ZXMpJzsKICAgICAgICBlY2hvICc8L3A+JzsKICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgICAgIAogICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKICAgICAgICBlY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPkN1cnJlbnQgQWNrbm93bGVkZ21lbnRzOjwvcD4nOwogICAgICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CiAgICAgICAgZWNobyAnPHN0cm9uZz4nIC4gJHRvdGFsX2NvdW50IC4gJzwvc3Ryb25nPiB0b3RhbCBhY2tub3dsZWRnbWVudHMnOwogICAgICAgIGlmIChpc3NldCgkYWNrbm93bGVkZ21lbnRzKSAmJiBpc19hcnJheSgkYWNrbm93bGVkZ21lbnRzKSAmJiBjb3VudCgkYWNrbm93bGVkZ21lbnRzKSA+IDApIHsKICAgICAgICAgICAgZWNobyAnIGFjcm9zcyA8c3Ryb25nPicgLiBjb3VudCgkYWNrbm93bGVkZ21lbnRzKSAuICc8L3N0cm9uZz4geWVhcihzKSc7CiAgICAgICAgICAgIAogICAgICAgICAgICBrcnNvcnQoJGFja25vd2xlZGdtZW50cyk7CiAgICAgICAgICAgICR5ZWFycyA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhY2tub3dsZWRnbWVudHMgYXMgJHllYXIgPT4gJHllYXJfYWNrcykgewogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR5ZWFyX2Fja3MpICYmIGNvdW50KCR5ZWFyX2Fja3MpID4gMCkgewogICAgICAgICAgICAgICAgICAgICR5ZWFyc1tdID0gJHllYXIgLiAnICgnIC4gY291bnQoJHllYXJfYWNrcykgLiAnKSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGNvdW50KCR5ZWFycykgPiAwKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8YnI+WWVhcnM6ICcgLiBpbXBsb2RlKCcsICcsICR5ZWFycyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWNobyAnPC9wPic7CiAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwogICAgICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+RmlsZSBTdGF0dXM6PC9wPic7CiAgICAgICAgZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKICAgICAgICBlY2hvICfinYwgRmlsZSBkb2VzIG5vdCBleGlzdC4gQ2xpY2sgIkVkaXQgQWNrbm93bGVkZ21lbnRzIiB0byBjcmVhdGUgaXQuJzsKICAgICAgICBlY2hvICc8L3A+JzsKICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgfQogICAgCiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPkFjdGlvbnM6PC9wPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwogICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7CiAgICBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdhY3RpdmV0YWInLCAnYWNrbm93bGVkZ21lbnRzJyk7CiAgICBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdlZGl0X2Fja25vd2xlZGdtZW50cycsICcxJyk7CiAgICBlY2hvICc8c3BhbiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+JyAuICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdlZGl0X2Fja25vd2xlZGdtZW50cycsICR0aGlzLT5MYW5nKCdhY2tub3dsZWRnbWVudHNfZWRpdF9idXR0b24nKSkgLiAnPC9zcGFuPic7CiAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CiAgICBlY2hvICc8L3A+JzsKICAgIGVjaG8gJzwvZGl2Pic7Cn0KCmVjaG8gJHRoaXMtPkVuZFRhYigpOwoKLy8gUmVwb3J0cyBUYWIKZWNobyAkdGhpcy0+U3RhcnRUYWIoInJlcG9ydHMiKTsKZWNobyAnPGgyPicgLiAkdGhpcy0+TGFuZygncmVwb3J0c190aXRsZScpIC4gJzwvaDI+JzsKCnJlcXVpcmVfb25jZShfX0RJUl9fIC4gJy9zZWN1cml0eS1mdW5jdGlvbnMucGhwJyk7CgokbG9nX2ZpbGUgPSAnJzsKaWYgKGRlZmluZWQoJ1RNUF9DQUNIRV9MT0NBVElPTicpKSB7CiAgICAkbG9nX2ZpbGUgPSBUTVBfQ0FDSEVfTE9DQVRJT04gLiAnL3ZkcF9zZWN1cml0eS5sb2cnOwp9IGVsc2UgewogICAgJGNvbmZpZyA9IGNtc191dGlsczo6Z2V0X2NvbmZpZygpOwogICAgaWYgKGlzc2V0KCRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddKSkgewogICAgICAgICRsb2dfZmlsZSA9ICRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddIC4gJy92ZHBfc2VjdXJpdHkubG9nJzsKICAgIH0gZWxzZSB7CiAgICAgICAgJGxvZ19maWxlID0gZGlybmFtZShkaXJuYW1lKF9fRElSX18pKSAuICcvdG1wL2NhY2hlL3ZkcF9zZWN1cml0eS5sb2cnOwogICAgfQp9CgovLyBHZXQgZmlsdGVyCiRmaWx0ZXIgPSBpc3NldCgkcGFyYW1zWydmaWx0ZXInXSkgPyAkcGFyYW1zWydmaWx0ZXInXSA6ICdhbGwnOyAvLyBhbGwsIHJlc29sdmVkLCB1bnJlc29sdmVkCgovLyBMb2FkIGFsbCByZXBvcnRzCiRyZXBvcnRzID0gYXJyYXkoKTsKJHJlcG9ydF9jb3VudCA9IDA7CiRyZXNvbHZlZF9jb3VudCA9IDA7CiR1bnJlc29sdmVkX2NvdW50ID0gMDsKCmlmIChmaWxlX2V4aXN0cygkbG9nX2ZpbGUpKSB7CiAgICAkbGluZXMgPSBmaWxlKCRsb2dfZmlsZSwgRklMRV9JR05PUkVfTkVXX0xJTkVTIHwgRklMRV9TS0lQX0VNUFRZX0xJTkVTKTsKICAgIGZvcmVhY2ggKCRsaW5lcyBhcyAkbGluZSkgewogICAgICAgICRlbnRyeSA9IGpzb25fZGVjb2RlKCRsaW5lLCB0cnVlKTsKICAgICAgICBpZiAoJGVudHJ5ICYmIGlzc2V0KCRlbnRyeVsnZXZlbnQnXSkgJiYgJGVudHJ5WydldmVudCddID09PSAndnVsbmVyYWJpbGl0eV9yZXBvcnRfc3VibWl0dGVkJykgewogICAgICAgICAgICAkcmVwb3J0X2lkID0gaXNzZXQoJGVudHJ5WydyZXBvcnRfaWQnXSkgPyAkZW50cnlbJ3JlcG9ydF9pZCddIDogJyc7CiAgICAgICAgICAgICRzdGF0dXMgPSBzZWN1cml0eV9nZXRfcmVwb3J0X3N0YXR1cygkcmVwb3J0X2lkKTsKICAgICAgICAgICAgCiAgICAgICAgICAgICRyZXBvcnRzW10gPSBhcnJheSgKICAgICAgICAgICAgICAgICdyZXBvcnRfaWQnID0+ICRyZXBvcnRfaWQsCiAgICAgICAgICAgICAgICAndGltZScgPT4gaXNzZXQoJGVudHJ5Wyd0aW1lJ10pID8gJGVudHJ5Wyd0aW1lJ10gOiAnJywKICAgICAgICAgICAgICAgICdkYXRhJyA9PiBpc3NldCgkZW50cnlbJ2RhdGEnXSkgPyAkZW50cnlbJ2RhdGEnXSA6IGFycmF5KCksCiAgICAgICAgICAgICAgICAnaXAnID0+IGlzc2V0KCRlbnRyeVsnaXAnXSkgPyAkZW50cnlbJ2lwJ10gOiAnJywKICAgICAgICAgICAgICAgICdyZXNvbHZlZCcgPT4gJHN0YXR1c1sncmVzb2x2ZWQnXSwKICAgICAgICAgICAgICAgICdyZXNvbHZlZF9kYXRlJyA9PiAkc3RhdHVzWydyZXNvbHZlZF9kYXRlJ10sCiAgICAgICAgICAgICAgICAncmVzb2x2ZWRfYnknID0+ICRzdGF0dXNbJ3Jlc29sdmVkX2J5J10KICAgICAgICAgICAgKTsKICAgICAgICAgICAgCiAgICAgICAgICAgICRyZXBvcnRfY291bnQrKzsKICAgICAgICAgICAgaWYgKCRzdGF0dXNbJ3Jlc29sdmVkJ10pIHsKICAgICAgICAgICAgICAgICRyZXNvbHZlZF9jb3VudCsrOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHVucmVzb2x2ZWRfY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKLy8gU29ydCByZXBvcnRzIGJ5IHRpbWUgKG5ld2VzdCBmaXJzdCkKdXNvcnQoJHJlcG9ydHMsIGZ1bmN0aW9uKCRhLCAkYikgewogICAgcmV0dXJuIHN0cnRvdGltZSgkYlsndGltZSddKSAtIHN0cnRvdGltZSgkYVsndGltZSddKTsKfSk7CgovLyBBcHBseSBmaWx0ZXIKaWYgKCRmaWx0ZXIgPT09ICdyZXNvbHZlZCcpIHsKICAgICRyZXBvcnRzID0gYXJyYXlfZmlsdGVyKCRyZXBvcnRzLCBmdW5jdGlvbigkcmVwb3J0KSB7CiAgICAgICAgcmV0dXJuICRyZXBvcnRbJ3Jlc29sdmVkJ10gPT09IHRydWU7CiAgICB9KTsKfSBlbHNlaWYgKCRmaWx0ZXIgPT09ICd1bnJlc29sdmVkJykgewogICAgJHJlcG9ydHMgPSBhcnJheV9maWx0ZXIoJHJlcG9ydHMsIGZ1bmN0aW9uKCRyZXBvcnQpIHsKICAgICAgICByZXR1cm4gJHJlcG9ydFsncmVzb2x2ZWQnXSA9PT0gZmFsc2U7CiAgICB9KTsKfQoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPlRvdGFsIFJlcG9ydHM6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJzxzdHJvbmc+JyAuICRyZXBvcnRfY291bnQgLiAnPC9zdHJvbmc+IHRvdGFsIHwgJzsKZWNobyAnPHN0cm9uZyBzdHlsZT0iY29sb3I6ICMyOGE3NDU7Ij4nIC4gJHJlc29sdmVkX2NvdW50IC4gJzwvc3Ryb25nPiByZXNvbHZlZCB8ICc7CmVjaG8gJzxzdHJvbmcgc3R5bGU9ImNvbG9yOiAjZGMzNTQ1OyI+JyAuICR1bnJlc29sdmVkX2NvdW50IC4gJzwvc3Ryb25nPiB1bnJlc29sdmVkJzsKZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgovLyBGaWx0ZXIgYnV0dG9ucwplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+RmlsdGVyOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwppZiAoJGZpbHRlciA9PT0gJ2FsbCcpIHsKICAgIGVjaG8gJzxzdHJvbmc+JyAuICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ3JlcG9ydHNfYWxsJyksIGFycmF5KCdhY3RpdmV0YWInID0+ICdyZXBvcnRzJywgJ2ZpbHRlcicgPT4gJ2FsbCcpKSAuICc8L3N0cm9uZz4gfCAnOwp9IGVsc2UgewogICAgZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdyZXBvcnRzX2FsbCcpLCBhcnJheSgnYWN0aXZldGFiJyA9PiAncmVwb3J0cycsICdmaWx0ZXInID0+ICdhbGwnKSkgLiAnIHwgJzsKfQoKaWYgKCRmaWx0ZXIgPT09ICdyZXNvbHZlZCcpIHsKICAgIGVjaG8gJzxzdHJvbmc+JyAuICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ3JlcG9ydHNfZmlsdGVyX3Jlc29sdmVkJyksIGFycmF5KCdhY3RpdmV0YWInID0+ICdyZXBvcnRzJywgJ2ZpbHRlcicgPT4gJ3Jlc29sdmVkJykpIC4gJzwvc3Ryb25nPiB8ICc7Cn0gZWxzZSB7CiAgICBlY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ3JlcG9ydHNfZmlsdGVyX3Jlc29sdmVkJyksIGFycmF5KCdhY3RpdmV0YWInID0+ICdyZXBvcnRzJywgJ2ZpbHRlcicgPT4gJ3Jlc29sdmVkJykpIC4gJyB8ICc7Cn0KCmlmICgkZmlsdGVyID09PSAndW5yZXNvbHZlZCcpIHsKICAgIGVjaG8gJzxzdHJvbmc+JyAuICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ3JlcG9ydHNfZmlsdGVyX3VucmVzb2x2ZWQnKSwgYXJyYXkoJ2FjdGl2ZXRhYicgPT4gJ3JlcG9ydHMnLCAnZmlsdGVyJyA9PiAndW5yZXNvbHZlZCcpKSAuICc8L3N0cm9uZz4nOwp9IGVsc2UgewogICAgZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdyZXBvcnRzX2ZpbHRlcl91bnJlc29sdmVkJyksIGFycmF5KCdhY3RpdmV0YWInID0+ICdyZXBvcnRzJywgJ2ZpbHRlcicgPT4gJ3VucmVzb2x2ZWQnKSk7Cn0KZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgovLyBEaXNwbGF5IHJlcG9ydHMgdGFibGUKaWYgKGNvdW50KCRyZXBvcnRzKSA+IDApIHsKICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+VnVsbmVyYWJpbGl0eSBSZXBvcnRzOjwvcD4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKICAgIGVjaG8gJzx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbi10b3A6IDEwcHg7Ij4nOwogICAgZWNobyAnPHRoZWFkPic7CiAgICBlY2hvICc8dHI+JzsKICAgIGVjaG8gJzx0aCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsiPkRhdGUvVGltZTwvdGg+JzsKICAgIGVjaG8gJzx0aCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsiPlJlcG9ydGVyPC90aD4nOwogICAgZWNobyAnPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyI+VHlwZTwvdGg+JzsKICAgIGVjaG8gJzx0aCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsiPkRvbWFpbjwvdGg+JzsKICAgIGVjaG8gJzx0aCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsiPicgLiAkdGhpcy0+TGFuZygncmVwb3J0c19zdGF0dXMnKSAuICc8L3RoPic7CiAgICBlY2hvICc8dGggc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7Ij5BY3Rpb25zPC90aD4nOwogICAgZWNobyAnPC90cj4nOwogICAgZWNobyAnPC90aGVhZD4nOwogICAgZWNobyAnPHRib2R5Pic7CiAgICAKICAgIGZvcmVhY2ggKCRyZXBvcnRzIGFzICRyZXBvcnQpIHsKICAgICAgICAkcmVwb3J0X2lkID0gJHJlcG9ydFsncmVwb3J0X2lkJ107CiAgICAgICAgJGRhdGEgPSAkcmVwb3J0WydkYXRhJ107CiAgICAgICAgJHJlcG9ydGVyX25hbWUgPSBpc3NldCgkZGF0YVsncmVwb3J0ZXJfbmFtZSddKSA/IGh0bWxzcGVjaWFsY2hhcnMoJGRhdGFbJ3JlcG9ydGVyX25hbWUnXSwgRU5UX1FVT1RFUywgJ1VURi04JykgOiAnQW5vbnltb3VzJzsKICAgICAgICAkcmVwb3J0ZXJfZW1haWwgPSBpc3NldCgkZGF0YVsncmVwb3J0ZXJfZW1haWwnXSkgPyBodG1sc3BlY2lhbGNoYXJzKCRkYXRhWydyZXBvcnRlcl9lbWFpbCddLCBFTlRfUVVPVEVTLCAnVVRGLTgnKSA6ICcnOwogICAgICAgICR2dWxuZXJhYmlsaXR5X3R5cGUgPSBpc3NldCgkZGF0YVsndnVsbmVyYWJpbGl0eV90eXBlJ10pID8gaHRtbHNwZWNpYWxjaGFycygkZGF0YVsndnVsbmVyYWJpbGl0eV90eXBlJ10sIEVOVF9RVU9URVMsICdVVEYtOCcpIDogJ1Vua25vd24nOwogICAgICAgICRhZmZlY3RlZF9kb21haW4gPSBpc3NldCgkZGF0YVsnYWZmZWN0ZWRfZG9tYWluJ10pID8gaHRtbHNwZWNpYWxjaGFycygkZGF0YVsnYWZmZWN0ZWRfZG9tYWluJ10sIEVOVF9RVU9URVMsICdVVEYtOCcpIDogJyc7CiAgICAgICAgJHRpbWUgPSBpc3NldCgkcmVwb3J0Wyd0aW1lJ10pID8gaHRtbHNwZWNpYWxjaGFycygkcmVwb3J0Wyd0aW1lJ10sIEVOVF9RVU9URVMsICdVVEYtOCcpIDogJyc7CiAgICAgICAgCiAgICAgICAgZWNobyAnPHRyPic7CiAgICAgICAgZWNobyAnPHRkPicgLiAkdGltZSAuICc8L3RkPic7CiAgICAgICAgZWNobyAnPHRkPic7CiAgICAgICAgaWYgKCRyZXBvcnRlcl9lbWFpbCkgewogICAgICAgICAgICBlY2hvICc8YSBocmVmPSJtYWlsdG86JyAuICRyZXBvcnRlcl9lbWFpbCAuICciPicgLiAkcmVwb3J0ZXJfbmFtZSAuICc8L2E+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICRyZXBvcnRlcl9uYW1lOwogICAgICAgIH0KICAgICAgICBlY2hvICc8L3RkPic7CiAgICAgICAgZWNobyAnPHRkPicgLiAkdnVsbmVyYWJpbGl0eV90eXBlIC4gJzwvdGQ+JzsKICAgICAgICBlY2hvICc8dGQ+JyAuICRhZmZlY3RlZF9kb21haW4gLiAnPC90ZD4nOwogICAgICAgIGVjaG8gJzx0ZD4nOwogICAgICAgIGlmICgkcmVwb3J0WydyZXNvbHZlZCddKSB7CiAgICAgICAgICAgIGVjaG8gJzxzcGFuIHN0eWxlPSJjb2xvcjogIzI4YTc0NTsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij4nIC4gJHRoaXMtPkxhbmcoJ3JlcG9ydHNfcmVzb2x2ZWQnKSAuICc8L3NwYW4+JzsKICAgICAgICAgICAgaWYgKCRyZXBvcnRbJ3Jlc29sdmVkX2RhdGUnXSkgewogICAgICAgICAgICAgICAgZWNobyAnPGJyPjxzbWFsbD4nIC4gJHRoaXMtPkxhbmcoJ3JlcG9ydHNfcmVzb2x2ZWRfZGF0ZScpIC4gJzogJyAuIGh0bWxzcGVjaWFsY2hhcnMoJHJlcG9ydFsncmVzb2x2ZWRfZGF0ZSddLCBFTlRfUVVPVEVTLCAnVVRGLTgnKSAuICc8L3NtYWxsPic7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICc8c3BhbiBzdHlsZT0iY29sb3I6ICNkYzM1NDU7IGZvbnQtd2VpZ2h0OiBib2xkOyI+JyAuICR0aGlzLT5MYW5nKCdyZXBvcnRzX3VucmVzb2x2ZWQnKSAuICc8L3NwYW4+JzsKICAgICAgICB9CiAgICAgICAgZWNobyAnPC90ZD4nOwogICAgICAgIGVjaG8gJzx0ZD4nOwogICAgICAgIAogICAgICAgIC8vIENoZWNrIGlmIGFscmVhZHkgaW4gYWNrbm93bGVkZ21lbnRzCiAgICAgICAgJGFja19maWxlID0gX19ESVJfXyAuICcvYWNrbm93bGVkZ21lbnRzLWRhdGEucGhwJzsKICAgICAgICAkaW5fYWNrbm93bGVkZ21lbnRzID0gZmFsc2U7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRhY2tfZmlsZSkpIHsKICAgICAgICAgICAgcmVxdWlyZV9vbmNlKCRhY2tfZmlsZSk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhY2tub3dsZWRnbWVudHMgYXMgJHllYXIgPT4gJHllYXJfYWNrcykgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHllYXJfYWNrcyBhcyAkYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRhY2tbJ3JlcG9ydF9pZCddKSAmJiAkYWNrWydyZXBvcnRfaWQnXSA9PT0gJHJlcG9ydF9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5fYWNrbm93bGVkZ21lbnRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gQWRkIHRvIEFja25vd2xlZGdtZW50cyBidXR0b24KICAgICAgICBpZiAoJGluX2Fja25vd2xlZGdtZW50cykgewogICAgICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfYWNrbm93bGVkZ21lbnQnLCAkcmV0dXJuaWQsICdFZGl0JywgYXJyYXkoJ3JlcG9ydF9pZCcgPT4gJHJlcG9ydF9pZCwgJ2FjdGlvbl90eXBlJyA9PiAnZWRpdCcpLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnY2xhc3M9ImNtc19idXR0b25saW5rIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1cHg7IGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogM3B4IDhweDsgZm9udC1zaXplOiAxMXB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1yYWRpdXM6IDNweDsiJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X2Fja25vd2xlZGdtZW50JywgJHJldHVybmlkLCAnQWRkJywgYXJyYXkoJ3JlcG9ydF9pZCcgPT4gJHJlcG9ydF9pZCwgJ2FjdGlvbl90eXBlJyA9PiAnYWRkJyksICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdjbGFzcz0iY21zX2J1dHRvbmxpbmsiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDVweDsgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsgY29sb3I6IHdoaXRlOyBwYWRkaW5nOiAzcHggOHB4OyBmb250LXNpemU6IDExcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLXJhZGl1czogM3B4OyInKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gUmVzb2x1dGlvbiBidXR0b25zCiAgICAgICAgaWYgKCRyZXBvcnRbJ3Jlc29sdmVkJ10pIHsKICAgICAgICAgICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7CiAgICAgICAgICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2FjdGl2ZXRhYicsICdyZXBvcnRzJyk7CiAgICAgICAgICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2ZpbHRlcicsICRmaWx0ZXIpOwogICAgICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdyZXBvcnRfaWQnLCAkcmVwb3J0X2lkKTsKICAgICAgICAgICAgZWNobyAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsiPicgLiAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnbWFya19yZXBvcnRfdW5yZXNvbHZlZCcsICR0aGlzLT5MYW5nKCdyZXBvcnRzX21hcmtfdW5yZXNvbHZlZCcpKSAuICc8L3NwYW4+JzsKICAgICAgICAgICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOwogICAgICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdhY3RpdmV0YWInLCAncmVwb3J0cycpOwogICAgICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdmaWx0ZXInLCAkZmlsdGVyKTsKICAgICAgICAgICAgZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAncmVwb3J0X2lkJywgJHJlcG9ydF9pZCk7CiAgICAgICAgICAgICRyZXNvbHZlZF9idXR0b24gPSAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnbWFya19yZXBvcnRfcmVzb2x2ZWQnLCAkdGhpcy0+TGFuZygncmVwb3J0c19tYXJrX3Jlc29sdmVkJykpOwogICAgICAgICAgICAvLyBBcHBseSBncmVlbiBzdHlsaW5nIGJ5IHJlcGxhY2luZyB0aGUgaW5wdXQgdGFnCiAgICAgICAgICAgICRyZXNvbHZlZF9idXR0b24gPSBzdHJfcmVwbGFjZSgnPGlucHV0JywgJzxpbnB1dCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDNweCA4cHg7IGZvbnQtc2l6ZTogMTFweDsiJywgJHJlc29sdmVkX2J1dHRvbik7CiAgICAgICAgICAgIGVjaG8gJzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij4nIC4gJHJlc29sdmVkX2J1dHRvbiAuICc8L3NwYW4+JzsKICAgICAgICAgICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwogICAgICAgIH0KICAgICAgICBlY2hvICc8L3RkPic7CiAgICAgICAgZWNobyAnPC90cj4nOwogICAgfQogICAgCiAgICBlY2hvICc8L3Rib2R5Pic7CiAgICBlY2hvICc8L3RhYmxlPic7CiAgICBlY2hvICc8L3A+JzsKICAgIGVjaG8gJzwvZGl2Pic7Cn0gZWxzZSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPlJlcG9ydHM6PC9wPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwogICAgaWYgKCRyZXBvcnRfY291bnQgPT0gMCkgewogICAgICAgIGVjaG8gJHRoaXMtPkxhbmcoJ3JlcG9ydHNfbm9uZScpOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICdObyByZXBvcnRzIG1hdGNoIHRoZSBzZWxlY3RlZCBmaWx0ZXIuJzsKICAgIH0KICAgIGVjaG8gJzwvcD4nOwogICAgZWNobyAnPC9kaXY+JzsKfQoKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgovLyBMb2dzIFRhYgplY2hvICR0aGlzLT5TdGFydFRhYigibG9ncyIpOwplY2hvICc8aDI+JyAuICR0aGlzLT5MYW5nKCdsb2dzX3RpdGxlJykgLiAnPC9oMj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnbG9nc19maWxlX2xvY2F0aW9uJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICc8Y29kZT4nIC4gaHRtbHNwZWNpYWxjaGFycygkbG9nX2ZpbGUsIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJzwvY29kZT4nOwppZiAoZmlsZV9leGlzdHMoJGxvZ19maWxlKSkgewogICAgJGxvZ19zaXplID0gZmlsZXNpemUoJGxvZ19maWxlKTsKICAgICRsb2dfbGluZXMgPSBjb3VudChmaWxlKCRsb2dfZmlsZSwgRklMRV9JR05PUkVfTkVXX0xJTkVTIHwgRklMRV9TS0lQX0VNUFRZX0xJTkVTKSk7CiAgICBlY2hvICcgKCcgLiAkbG9nX2xpbmVzIC4gJyBlbnRyaWVzLCAnIC4gbnVtYmVyX2Zvcm1hdCgkbG9nX3NpemUpIC4gJyBieXRlcyknOwogICAgCiAgICBpZiAoJGxvZ19zaXplID4gMCkgewogICAgICAgIGVjaG8gJzxicj48YnI+JzsKICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkKTsKICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdhY3RpdmV0YWInLCAnbG9ncycpOwogICAgICAgICRjbGVhcl9idG4gPSAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2xlYXJsb2dzJywgJHRoaXMtPkxhbmcoJ2xvZ3NfY2xlYXInKSk7CiAgICAgICAgJGNsZWFyX2J0biA9IHN0cl9yZXBsYWNlKCc8aW5wdXQnLCAnPGlucHV0IGlkPSJjbGVhcl9sb2dzX2J0biInLCAkY2xlYXJfYnRuKTsKICAgICAgICBlY2hvICRjbGVhcl9idG47CiAgICAgICAgZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbGVhcl9sb2dzX2J0biIpOwogICAgICAgICAgICBpZiAoYnRuKSB7CiAgICAgICAgICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25maXJtKCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xlYXIgYWxsIHNlY3VyaXR5IGxvZ3M/IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICA8L3NjcmlwdD4nOwogICAgICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKICAgIH0KfSBlbHNlIHsKICAgIGVjaG8gJyAoRmlsZSBkb2VzIG5vdCBleGlzdCB5ZXQpJzsKfQplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmlmIChmaWxlX2V4aXN0cygkbG9nX2ZpbGUpICYmIGZpbGVzaXplKCRsb2dfZmlsZSkgPiAwKSB7CiAgICAkbGluZXMgPSBmaWxlKCRsb2dfZmlsZSwgRklMRV9JR05PUkVfTkVXX0xJTkVTIHwgRklMRV9TS0lQX0VNUFRZX0xJTkVTKTsKICAgICRyZWNlbnRfbGluZXMgPSBhcnJheV9zbGljZSgkbGluZXMsIC01MCk7CiAgICAKICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+UmVjZW50IExvZyBFbnRyaWVzIChsYXN0IDUwKTo8L3A+JzsKICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CiAgICBlY2hvICc8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW4tdG9wOiAxMHB4OyI+JzsKICAgIGVjaG8gJzx0aGVhZD4nOwogICAgZWNobyAnPHRyPic7CiAgICBlY2hvICc8dGg+VGltZTwvdGg+JzsKICAgIGVjaG8gJzx0aD5FdmVudDwvdGg+JzsKICAgIGVjaG8gJzx0aD5JUCBBZGRyZXNzPC90aD4nOwogICAgZWNobyAnPHRoPkRldGFpbHM8L3RoPic7CiAgICBlY2hvICc8L3RyPic7CiAgICBlY2hvICc8L3RoZWFkPic7CiAgICBlY2hvICc8dGJvZHk+JzsKICAgIAogICAgZm9yZWFjaCAoYXJyYXlfcmV2ZXJzZSgkcmVjZW50X2xpbmVzKSBhcyAkbGluZSkgewogICAgICAgICRlbnRyeSA9IGpzb25fZGVjb2RlKCRsaW5lLCB0cnVlKTsKICAgICAgICBpZiAoJGVudHJ5ICYmIGlzX2FycmF5KCRlbnRyeSkpIHsKICAgICAgICAgICAgJHRpbWUgPSBpc3NldCgkZW50cnlbJ3RpbWUnXSkgPyAkZW50cnlbJ3RpbWUnXSA6ICdOL0EnOwogICAgICAgICAgICAkZXZlbnQgPSBpc3NldCgkZW50cnlbJ2V2ZW50J10pID8gJGVudHJ5WydldmVudCddIDogJ04vQSc7CiAgICAgICAgICAgICRpcCA9IGlzc2V0KCRlbnRyeVsnaXAnXSkgPyAkZW50cnlbJ2lwJ10gOiAnTi9BJzsKICAgICAgICAgICAgJHJlcG9ydF9pZCA9IGlzc2V0KCRlbnRyeVsncmVwb3J0X2lkJ10pID8gJGVudHJ5WydyZXBvcnRfaWQnXSA6ICcnOwogICAgICAgICAgICAKICAgICAgICAgICAgZWNobyAnPHRyPic7CiAgICAgICAgICAgIGVjaG8gJzx0ZD4nIC4gaHRtbHNwZWNpYWxjaGFycygkdGltZSwgRU5UX1FVT1RFUywgJ1VURi04JykgLiAnPC90ZD4nOwogICAgICAgICAgICBlY2hvICc8dGQ+JyAuIGh0bWxzcGVjaWFsY2hhcnMoJGV2ZW50LCBFTlRfUVVPVEVTLCAnVVRGLTgnKSAuICc8L3RkPic7CiAgICAgICAgICAgIGVjaG8gJzx0ZD4nIC4gaHRtbHNwZWNpYWxjaGFycygkaXAsIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJzwvdGQ+JzsKICAgICAgICAgICAgZWNobyAnPHRkPic7CiAgICAgICAgICAgIGlmIChpc3NldCgkZW50cnlbJ2RhdGEnXSkgJiYgaXNfYXJyYXkoJGVudHJ5WydkYXRhJ10pKSB7CiAgICAgICAgICAgICAgICAkZGV0YWlscyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZW50cnlbJ2RhdGEnXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICR2YWxfc3RyID0gaXNfc3RyaW5nKCR2YWx1ZSkgPyAkdmFsdWUgOiAoc3RyaW5nKSR2YWx1ZTsKICAgICAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCR2YWxfc3RyKSA+IDUwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR2YWxfc3RyID0gc3Vic3RyKCR2YWxfc3RyLCAwLCA1MCkgLiAnLi4uJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGRldGFpbHNbXSA9IGh0bWxzcGVjaWFsY2hhcnMoJGtleSwgRU5UX1FVT1RFUywgJ1VURi04JykgLiAnOiAnIC4gaHRtbHNwZWNpYWxjaGFycygkdmFsX3N0ciwgRU5UX1FVT1RFUywgJ1VURi04Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvIGltcGxvZGUoJywgJywgJGRldGFpbHMpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBTaG93IHJlc29sdXRpb24gc3RhdHVzIGZvciB2dWxuZXJhYmlsaXR5IHJlcG9ydHMKICAgICAgICAgICAgICAgIGlmICgkZXZlbnQgPT09ICd2dWxuZXJhYmlsaXR5X3JlcG9ydF9zdWJtaXR0ZWQnICYmICFlbXB0eSgkcmVwb3J0X2lkKSkgewogICAgICAgICAgICAgICAgICAgICRzdGF0dXMgPSBzZWN1cml0eV9nZXRfcmVwb3J0X3N0YXR1cygkcmVwb3J0X2lkKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJHN0YXR1c1sncmVzb2x2ZWQnXSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8YnI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMjhhNzQ1OyBmb250LXdlaWdodDogYm9sZDsiPuKckyAnIC4gJHRoaXMtPkxhbmcoJ3JlcG9ydHNfcmVzb2x2ZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdGF0dXNbJ3Jlc29sdmVkX2RhdGUnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnIC0gJyAuIGh0bWxzcGVjaWFsY2hhcnMoJHN0YXR1c1sncmVzb2x2ZWRfZGF0ZSddLCBFTlRfUVVPVEVTLCAnVVRGLTgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L3NwYW4+JzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8YnI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZGMzNTQ1OyI+4pePICcgLiAkdGhpcy0+TGFuZygncmVwb3J0c191bnJlc29sdmVkJykgLiAnPC9zcGFuPic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gJzwvdGQ+JzsKICAgICAgICAgICAgZWNobyAnPC90cj4nOwogICAgICAgIH0KICAgIH0KICAgIAogICAgZWNobyAnPC90Ym9keT4nOwogICAgZWNobyAnPC90YWJsZT4nOwogICAgZWNobyAnPC9wPic7CiAgICBlY2hvICc8L2Rpdj4nOwp9IGVsc2UgewogICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Mb2cgU3RhdHVzOjwvcD4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKICAgIGVjaG8gJ05vIGxvZyBlbnRyaWVzIHlldC4gTG9ncyB3aWxsIGFwcGVhciBoZXJlIG9uY2UgdnVsbmVyYWJpbGl0eSByZXBvcnRzIGFyZSBzdWJtaXR0ZWQuJzsKICAgIGVjaG8gJzwvcD4nOwogICAgZWNobyAnPC9kaXY+JzsKfQoKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgovLyBEb25hdGlvbnMgVGFiCmlmICgkdGhpcy0+U2hvd0RvbmF0aW9uc1RhYigpKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigiZG9uYXRpb25zIik7CiAgICBpbmNsdWRlKF9fRElSX18gLiAnL2Z1bmN0aW9uLmRvbmF0aW9ucy5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.edit_acknowledgment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEVkaXQgQWNrbm93bGVkZ21lbnQgQWN0aW9uCiAqIAogKiBBbGxvd3MgZWRpdGluZyBhY2tub3dsZWRnbWVudCBkZXRhaWxzIHdoZW4gYWRkaW5nIGZyb20gdnVsbmVyYWJpbGl0eSByZXBvcnRzCiAqLwoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovLyBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uCmlmICghJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpKSB7CiAgICByZXR1cm47Cn0KCnJlcXVpcmVfb25jZShfX0RJUl9fIC4gJy9zZWN1cml0eS1mdW5jdGlvbnMucGhwJyk7CgokcmVwb3J0X2lkID0gaXNzZXQoJHBhcmFtc1sncmVwb3J0X2lkJ10pID8gdHJpbSgkcGFyYW1zWydyZXBvcnRfaWQnXSkgOiAnJzsKJGFjdGlvbiA9IGlzc2V0KCRwYXJhbXNbJ2FjdGlvbl90eXBlJ10pID8gdHJpbSgkcGFyYW1zWydhY3Rpb25fdHlwZSddKSA6ICdhZGQnOyAvLyAnYWRkJyBvciAnZWRpdCcKCi8vIExvYWQgcmVwb3J0IGRhdGEKJHJlcG9ydF9kYXRhID0gbnVsbDsKaWYgKCFlbXB0eSgkcmVwb3J0X2lkKSkgewogICAgJGxvZ19maWxlID0gJyc7CiAgICBpZiAoZGVmaW5lZCgnVE1QX0NBQ0hFX0xPQ0FUSU9OJykpIHsKICAgICAgICAkbG9nX2ZpbGUgPSBUTVBfQ0FDSEVfTE9DQVRJT04gLiAnL3ZkcF9zZWN1cml0eS5sb2cnOwogICAgfSBlbHNlIHsKICAgICAgICAkY29uZmlnID0gY21zX3V0aWxzOjpnZXRfY29uZmlnKCk7CiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddKSkgewogICAgICAgICAgICAkbG9nX2ZpbGUgPSAkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSAuICcvdmRwX3NlY3VyaXR5LmxvZyc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGxvZ19maWxlID0gZGlybmFtZShkaXJuYW1lKF9fRElSX18pKSAuICcvdG1wL2NhY2hlL3ZkcF9zZWN1cml0eS5sb2cnOwogICAgICAgIH0KICAgIH0KICAgIAogICAgaWYgKGZpbGVfZXhpc3RzKCRsb2dfZmlsZSkpIHsKICAgICAgICAkbGluZXMgPSBmaWxlKCRsb2dfZmlsZSwgRklMRV9JR05PUkVfTkVXX0xJTkVTIHwgRklMRV9TS0lQX0VNUFRZX0xJTkVTKTsKICAgICAgICBmb3JlYWNoICgkbGluZXMgYXMgJGxpbmUpIHsKICAgICAgICAgICAgJGVudHJ5ID0ganNvbl9kZWNvZGUoJGxpbmUsIHRydWUpOwogICAgICAgICAgICBpZiAoJGVudHJ5ICYmIGlzc2V0KCRlbnRyeVsnZXZlbnQnXSkgJiYgJGVudHJ5WydldmVudCddID09PSAndnVsbmVyYWJpbGl0eV9yZXBvcnRfc3VibWl0dGVkJykgewogICAgICAgICAgICAgICAgJGVudHJ5X3JlcG9ydF9pZCA9IGlzc2V0KCRlbnRyeVsncmVwb3J0X2lkJ10pID8gJGVudHJ5WydyZXBvcnRfaWQnXSA6ICcnOwogICAgICAgICAgICAgICAgaWYgKCRlbnRyeV9yZXBvcnRfaWQgPT09ICRyZXBvcnRfaWQpIHsKICAgICAgICAgICAgICAgICAgICAkcmVwb3J0X2RhdGEgPSAkZW50cnk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmlmICghJHJlcG9ydF9kYXRhICYmICRhY3Rpb24gPT09ICdhZGQnKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JNZXNzYWdlKCdSZXBvcnQgbm90IGZvdW5kLicpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZXRhYicgPT4gJ3JlcG9ydHMnKSk7CiAgICByZXR1cm47Cn0KCi8vIExvYWQgZXhpc3RpbmcgYWNrbm93bGVkZ21lbnRzIHRvIGNoZWNrIGlmIGFscmVhZHkgYWRkZWQKJGFja19maWxlID0gX19ESVJfXyAuICcvYWNrbm93bGVkZ21lbnRzLWRhdGEucGhwJzsKJGFja25vd2xlZGdtZW50cyA9IGFycmF5KCk7CmlmIChmaWxlX2V4aXN0cygkYWNrX2ZpbGUpKSB7CiAgICByZXF1aXJlX29uY2UoJGFja19maWxlKTsKfQoKLy8gQ2hlY2sgaWYgdGhpcyByZXBvcnQgaXMgYWxyZWFkeSBpbiBhY2tub3dsZWRnbWVudHMKJGV4aXN0aW5nX2FjayA9IG51bGw7CiRleGlzdGluZ195ZWFyID0gbnVsbDsKZm9yZWFjaCAoJGFja25vd2xlZGdtZW50cyBhcyAkeWVhciA9PiAkeWVhcl9hY2tzKSB7CiAgICBmb3JlYWNoICgkeWVhcl9hY2tzIGFzICRpZHggPT4gJGFjaykgewogICAgICAgIGlmIChpc3NldCgkYWNrWydyZXBvcnRfaWQnXSkgJiYgJGFja1sncmVwb3J0X2lkJ10gPT09ICRyZXBvcnRfaWQpIHsKICAgICAgICAgICAgJGV4aXN0aW5nX2FjayA9ICRhY2s7CiAgICAgICAgICAgICRleGlzdGluZ195ZWFyID0gJHllYXI7CiAgICAgICAgICAgIGJyZWFrIDI7CiAgICAgICAgfQogICAgfQp9CgovLyBQcm9jZXNzIGZvcm0gc3VibWlzc2lvbgppZiAoaXNzZXQoJHBhcmFtc1snc2F2ZV9hY2tub3dsZWRnbWVudCddKSkgewogICAgJG5hbWUgPSBpc3NldCgkcGFyYW1zWyduYW1lJ10pID8gdHJpbSgkcGFyYW1zWyduYW1lJ10pIDogJyc7CiAgICAkY29tcGFueSA9IGlzc2V0KCRwYXJhbXNbJ2NvbXBhbnknXSkgPyB0cmltKCRwYXJhbXNbJ2NvbXBhbnknXSkgOiAnJzsKICAgICR3ZWJzaXRlID0gaXNzZXQoJHBhcmFtc1snd2Vic2l0ZSddKSA/IHRyaW0oJHBhcmFtc1snd2Vic2l0ZSddKSA6ICcnOwogICAgJHZ1bG5lcmFiaWxpdHkgPSBpc3NldCgkcGFyYW1zWyd2dWxuZXJhYmlsaXR5J10pID8gdHJpbSgkcGFyYW1zWyd2dWxuZXJhYmlsaXR5J10pIDogJyc7CiAgICAkZGF0ZSA9IGlzc2V0KCRwYXJhbXNbJ2RhdGUnXSkgPyB0cmltKCRwYXJhbXNbJ2RhdGUnXSkgOiAnJzsKICAgICRkaXNjbG9zdXJlID0gaXNzZXQoJHBhcmFtc1snZGlzY2xvc3VyZSddKSA/IHRyaW0oJHBhcmFtc1snZGlzY2xvc3VyZSddKSA6ICdjb29yZGluYXRlZCc7CiAgICAkY3JlZGl0X2xpbmsgPSBpc3NldCgkcGFyYW1zWydjcmVkaXRfbGluayddKSA/IHRyaW0oJHBhcmFtc1snY3JlZGl0X2xpbmsnXSkgOiAnJzsKICAgIAogICAgLy8gVmFsaWRhdGUgcmVxdWlyZWQgZmllbGRzCiAgICBpZiAoZW1wdHkoJG5hbWUpKSB7CiAgICAgICAgJG5hbWUgPSBpc3NldCgkcmVwb3J0X2RhdGFbJ2RhdGEnXVsncmVwb3J0ZXJfbmFtZSddKSA/IHRyaW0oJHJlcG9ydF9kYXRhWydkYXRhJ11bJ3JlcG9ydGVyX25hbWUnXSkgOiAnQW5vbnltb3VzJzsKICAgICAgICBpZiAoZW1wdHkoJG5hbWUpKSB7CiAgICAgICAgICAgICRuYW1lID0gJ0Fub255bW91cyc7CiAgICAgICAgfQogICAgfQogICAgCiAgICBpZiAoZW1wdHkoJHZ1bG5lcmFiaWxpdHkpICYmIGlzc2V0KCRyZXBvcnRfZGF0YVsnZGF0YSddWyd2dWxuZXJhYmlsaXR5X3R5cGUnXSkpIHsKICAgICAgICAkdnVsbmVyYWJpbGl0eSA9ICRyZXBvcnRfZGF0YVsnZGF0YSddWyd2dWxuZXJhYmlsaXR5X3R5cGUnXTsKICAgIH0KICAgIAogICAgaWYgKGVtcHR5KCRkYXRlKSkgewogICAgICAgICRkYXRlID0gaXNzZXQoJHJlcG9ydF9kYXRhWyd0aW1lJ10pID8gZGF0ZSgnWS1tLWQnLCBzdHJ0b3RpbWUoJHJlcG9ydF9kYXRhWyd0aW1lJ10pKSA6IGRhdGUoJ1ktbS1kJyk7CiAgICB9CiAgICAKICAgIC8vIFZhbGlkYXRlIGRhdGUgZm9ybWF0CiAgICBpZiAoIXByZWdfbWF0Y2goJy9eXGR7NH0tXGR7Mn0tXGR7Mn0kLycsICRkYXRlKSkgewogICAgICAgICRkYXRlID0gZGF0ZSgnWS1tLWQnKTsKICAgIH0KICAgIAogICAgJHllYXIgPSBkYXRlKCdZJywgc3RydG90aW1lKCRkYXRlKSk7CiAgICAKICAgIC8vIFZhbGlkYXRlIGRpc2Nsb3N1cmUgcHJlZmVyZW5jZQogICAgJGFsbG93ZWRfZGlzY2xvc3VyZXMgPSBhcnJheSgncHVibGljJywgJ3ByaXZhdGUnLCAnY29vcmRpbmF0ZWQnKTsKICAgIGlmICghaW5fYXJyYXkoJGRpc2Nsb3N1cmUsICRhbGxvd2VkX2Rpc2Nsb3N1cmVzKSkgewogICAgICAgICRkaXNjbG9zdXJlID0gJ2Nvb3JkaW5hdGVkJzsKICAgIH0KICAgIAogICAgLy8gVmFsaWRhdGUgY3JlZGl0X2xpbmsgaWYgcHJvdmlkZWQKICAgIGlmICghZW1wdHkoJGNyZWRpdF9saW5rKSAmJiAhZmlsdGVyX3ZhcigkY3JlZGl0X2xpbmssIEZJTFRFUl9WQUxJREFURV9VUkwpKSB7CiAgICAgICAgJGNyZWRpdF9saW5rID0gJyc7CiAgICB9CiAgICAKICAgIC8vIFZhbGlkYXRlIHdlYnNpdGUgaWYgcHJvdmlkZWQgLSBtdXN0IGJlIGh0dHBzOi8vCiAgICBpZiAoIWVtcHR5KCR3ZWJzaXRlKSkgewogICAgICAgIGlmICghZmlsdGVyX3Zhcigkd2Vic2l0ZSwgRklMVEVSX1ZBTElEQVRFX1VSTCkpIHsKICAgICAgICAgICAgJHdlYnNpdGUgPSAnJzsKICAgICAgICB9IGVsc2VpZiAoIXByZWdfbWF0Y2goJy9eaHR0cHM6XC9cLy9pJywgJHdlYnNpdGUpKSB7CiAgICAgICAgICAgIC8vIElmIGl0IHN0YXJ0cyB3aXRoIGh0dHA6Ly8sIGNvbnZlcnQgdG8gaHR0cHM6Ly8KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eaHR0cDpcL1wvL2knLCAkd2Vic2l0ZSkpIHsKICAgICAgICAgICAgICAgICR3ZWJzaXRlID0gcHJlZ19yZXBsYWNlKCcvXmh0dHA6XC9cLy9pJywgJ2h0dHBzOi8vJywgJHdlYnNpdGUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gSWYgbm8gcHJvdG9jb2wsIGFkZCBodHRwczovLwogICAgICAgICAgICAgICAgJHdlYnNpdGUgPSAnaHR0cHM6Ly8nIC4gbHRyaW0oJHdlYnNpdGUsICcvJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIExvYWQgY3VycmVudCBhY2tub3dsZWRnbWVudHMKICAgICRhY2tub3dsZWRnbWVudHMgPSBhcnJheSgpOwogICAgaWYgKGZpbGVfZXhpc3RzKCRhY2tfZmlsZSkpIHsKICAgICAgICByZXF1aXJlX29uY2UoJGFja19maWxlKTsKICAgIH0KICAgIAogICAgLy8gQ3JlYXRlIGFja25vd2xlZGdtZW50IGVudHJ5CiAgICAkYWNrX2VudHJ5ID0gYXJyYXkoCiAgICAgICAgJ25hbWUnID0+IGh0bWxzcGVjaWFsY2hhcnMoJG5hbWUsIEVOVF9RVU9URVMsICdVVEYtOCcpLAogICAgICAgICd2dWxuZXJhYmlsaXR5JyA9PiBodG1sc3BlY2lhbGNoYXJzKCR2dWxuZXJhYmlsaXR5LCBFTlRfUVVPVEVTLCAnVVRGLTgnKSwKICAgICAgICAnZGF0ZScgPT4gJGRhdGUsCiAgICAgICAgJ2Rpc2Nsb3N1cmUnID0+ICRkaXNjbG9zdXJlLAogICAgICAgICdyZXBvcnRfaWQnID0+ICRyZXBvcnRfaWQsCiAgICApOwogICAgCiAgICBpZiAoIWVtcHR5KCRjb21wYW55KSkgewogICAgICAgICRhY2tfZW50cnlbJ2NvbXBhbnknXSA9IGh0bWxzcGVjaWFsY2hhcnMoJGNvbXBhbnksIEVOVF9RVU9URVMsICdVVEYtOCcpOwogICAgfQogICAgCiAgICBpZiAoIWVtcHR5KCR3ZWJzaXRlKSkgewogICAgICAgICRhY2tfZW50cnlbJ3dlYnNpdGUnXSA9IGh0bWxzcGVjaWFsY2hhcnMoJHdlYnNpdGUsIEVOVF9RVU9URVMsICdVVEYtOCcpOwogICAgfQogICAgCiAgICBpZiAoIWVtcHR5KCRjcmVkaXRfbGluaykpIHsKICAgICAgICAkYWNrX2VudHJ5WydjcmVkaXRfbGluayddID0gaHRtbHNwZWNpYWxjaGFycygkY3JlZGl0X2xpbmssIEVOVF9RVU9URVMsICdVVEYtOCcpOwogICAgfQogICAgCiAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZW50cnkgaWYgZWRpdGluZwogICAgaWYgKCRleGlzdGluZ195ZWFyICE9PSBudWxsKSB7CiAgICAgICAgZm9yZWFjaCAoJGFja25vd2xlZGdtZW50c1skZXhpc3RpbmdfeWVhcl0gYXMgJGlkeCA9PiAkYWNrKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkYWNrWydyZXBvcnRfaWQnXSkgJiYgJGFja1sncmVwb3J0X2lkJ10gPT09ICRyZXBvcnRfaWQpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRhY2tub3dsZWRnbWVudHNbJGV4aXN0aW5nX3llYXJdWyRpZHhdKTsKICAgICAgICAgICAgICAgICRhY2tub3dsZWRnbWVudHNbJGV4aXN0aW5nX3llYXJdID0gYXJyYXlfdmFsdWVzKCRhY2tub3dsZWRnbWVudHNbJGV4aXN0aW5nX3llYXJdKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIFJlbW92ZSBlbXB0eSB5ZWFyIGFycmF5cwogICAgICAgIGlmIChjb3VudCgkYWNrbm93bGVkZ21lbnRzWyRleGlzdGluZ195ZWFyXSkgPT09IDApIHsKICAgICAgICAgICAgdW5zZXQoJGFja25vd2xlZGdtZW50c1skZXhpc3RpbmdfeWVhcl0pOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gQWRkIHRvIGFja25vd2xlZGdtZW50cwogICAgaWYgKCFpc3NldCgkYWNrbm93bGVkZ21lbnRzWyR5ZWFyXSkpIHsKICAgICAgICAkYWNrbm93bGVkZ21lbnRzWyR5ZWFyXSA9IGFycmF5KCk7CiAgICB9CiAgICAKICAgICRhY2tub3dsZWRnbWVudHNbJHllYXJdW10gPSAkYWNrX2VudHJ5OwogICAgCiAgICAvLyBTb3J0IGJ5IGRhdGUgd2l0aGluIGVhY2ggeWVhciAobmV3ZXN0IGZpcnN0KQogICAgZm9yZWFjaCAoJGFja25vd2xlZGdtZW50cyBhcyAkeXIgPT4gJiR5ZWFyX2Fja3MpIHsKICAgICAgICB1c29ydCgkeWVhcl9hY2tzLCBmdW5jdGlvbigkYSwgJGIpIHsKICAgICAgICAgICAgcmV0dXJuIHN0cmNtcCgkYlsnZGF0ZSddLCAkYVsnZGF0ZSddKTsKICAgICAgICB9KTsKICAgIH0KICAgIHVuc2V0KCR5ZWFyX2Fja3MpOwogICAgCiAgICAvLyBTb3J0IHllYXJzIChuZXdlc3QgZmlyc3QpCiAgICBrcnNvcnQoJGFja25vd2xlZGdtZW50cyk7CiAgICAKICAgIC8vIFNhdmUgdG8gZmlsZQogICAgJGZpbGVfY29udGVudCA9ICI8P3BocFxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIi8qKlxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqIFNlY3VyaXR5IEFja25vd2xlZGdtZW50cyBEYXRhXG4iOwogICAgJGZpbGVfY29udGVudCAuPSAiICogXG4iOwogICAgJGZpbGVfY29udGVudCAuPSAiICogU3RvcmVzIGFja25vd2xlZGdtZW50cyBkYXRhIGluIGFuIGVhc2lseSBlZGl0YWJsZSBmb3JtYXQuXG4iOwogICAgJGZpbGVfY29udGVudCAuPSAiICogVXBkYXRlIHRoaXMgZmlsZSB3aGVuIGFkZGluZyBuZXcgYWNrbm93bGVkZ21lbnRzLlxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqIFxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqIEZvcm1hdDogYXJyYXkoXG4iOwogICAgJGZpbGVfY29udGVudCAuPSAiICogICAgICd5ZWFyJyA9PiBhcnJheShcbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgICAgIGFycmF5KFxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqICAgICAgICAgICAgICduYW1lJyA9PiAnUmVzZWFyY2hlciBOYW1lIG9yIEhhbmRsZScsXG4iOwogICAgJGZpbGVfY29udGVudCAuPSAiICogICAgICAgICAgICAgJ2NvbXBhbnknID0+ICdDb21wYW55IE5hbWUgKG9wdGlvbmFsKScsXG4iOwogICAgJGZpbGVfY29udGVudCAuPSAiICogICAgICAgICAgICAgJ3dlYnNpdGUnID0+ICdXZWJzaXRlIFVSTCAob3B0aW9uYWwpJyxcbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgICAgICAgICAndnVsbmVyYWJpbGl0eScgPT4gJ0JyaWVmIGRlc2NyaXB0aW9uJyxcbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgICAgICAgICAnZGF0ZScgPT4gJ1lZWVktTU0tREQnLFxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqICAgICAgICAgICAgICdkaXNjbG9zdXJlJyA9PiAncHVibGljJ3wncHJpdmF0ZSd8J2Nvb3JkaW5hdGVkJyxcbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgICAgICAgICAnY3JlZGl0X2xpbmsnID0+ICdPcHRpb25hbCBVUkwnLFxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqICAgICAgICAgICAgICdyZXBvcnRfaWQnID0+ICdSZXBvcnQgSUQgZm9yIHJlZmVyZW5jZSdcbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgICAgICksXG4iOwogICAgJGZpbGVfY29udGVudCAuPSAiICogICAgICAgICAuLi5cbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgKSxcbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgLi4uXG4iOwogICAgJGZpbGVfY29udGVudCAuPSAiICogKVxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqIFxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqIE5vdGU6IExpc3QgaXRlbXMgaW4gcmV2ZXJzZSBjaHJvbm9sb2dpY2FsIG9yZGVyIChuZXdlc3QgZmlyc3QpXG4iOwogICAgJGZpbGVfY29udGVudCAuPSAiICovXG5cbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICJpZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHtcbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICIgICAgZXhpdDtcbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICJ9XG5cbiI7CiAgICAkZmlsZV9jb250ZW50IC49ICJcJGFja25vd2xlZGdtZW50cyA9ICIgLiB2YXJfZXhwb3J0KCRhY2tub3dsZWRnbWVudHMsIHRydWUpIC4gIjtcblxuIjsKICAgICRmaWxlX2NvbnRlbnQgLj0gIj8+XG4iOwogICAgCiAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJGFja19maWxlLCAkZmlsZV9jb250ZW50KSkgewogICAgICAgICR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICdBY2tub3dsZWRnbWVudCBzYXZlZCcpOwogICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmV0YWInID0+ICdyZXBvcnRzJywgJ21zZycgPT4gJ2Fja25vd2xlZGdtZW50X3NhdmVkJykpOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JNZXNzYWdlKCdGYWlsZWQgdG8gc2F2ZSBhY2tub3dsZWRnbWVudC4gUGxlYXNlIGNoZWNrIGZpbGUgcGVybWlzc2lvbnMuJyk7CiAgICB9CiAgICByZXR1cm47Cn0KCi8vIEhhbmRsZSByZW1vdmUgZnJvbSBhY2tub3dsZWRnbWVudHMKaWYgKGlzc2V0KCRwYXJhbXNbJ3JlbW92ZV9hY2tub3dsZWRnbWVudCddKSkgewogICAgaWYgKCRleGlzdGluZ195ZWFyICE9PSBudWxsKSB7CiAgICAgICAgJGFja25vd2xlZGdtZW50cyA9IGFycmF5KCk7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRhY2tfZmlsZSkpIHsKICAgICAgICAgICAgcmVxdWlyZV9vbmNlKCRhY2tfZmlsZSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENoZWNrIGlmIHllYXIga2V5IGV4aXN0cyBiZWZvcmUgcHJvY2Vzc2luZwogICAgICAgIGlmIChpc3NldCgkYWNrbm93bGVkZ21lbnRzWyRleGlzdGluZ195ZWFyXSkgJiYgaXNfYXJyYXkoJGFja25vd2xlZGdtZW50c1skZXhpc3RpbmdfeWVhcl0pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhY2tub3dsZWRnbWVudHNbJGV4aXN0aW5nX3llYXJdIGFzICRpZHggPT4gJGFjaykgewogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRhY2tbJ3JlcG9ydF9pZCddKSAmJiAkYWNrWydyZXBvcnRfaWQnXSA9PT0gJHJlcG9ydF9pZCkgewogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRhY2tub3dsZWRnbWVudHNbJGV4aXN0aW5nX3llYXJdWyRpZHhdKTsKICAgICAgICAgICAgICAgICAgICAkYWNrbm93bGVkZ21lbnRzWyRleGlzdGluZ195ZWFyXSA9IGFycmF5X3ZhbHVlcygkYWNrbm93bGVkZ21lbnRzWyRleGlzdGluZ195ZWFyXSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFJlbW92ZSBlbXB0eSB5ZWFyIGFycmF5cwogICAgICAgICAgICBpZiAoaXNzZXQoJGFja25vd2xlZGdtZW50c1skZXhpc3RpbmdfeWVhcl0pICYmIGNvdW50KCRhY2tub3dsZWRnbWVudHNbJGV4aXN0aW5nX3llYXJdKSA9PT0gMCkgewogICAgICAgICAgICAgICAgdW5zZXQoJGFja25vd2xlZGdtZW50c1skZXhpc3RpbmdfeWVhcl0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFNhdmUgdG8gZmlsZQogICAgICAgICRmaWxlX2NvbnRlbnQgPSAiPD9waHBcbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiLyoqXG4iOwogICAgICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqIFNlY3VyaXR5IEFja25vd2xlZGdtZW50cyBEYXRhXG4iOwogICAgICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqIFxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICIgKiBTdG9yZXMgYWNrbm93bGVkZ21lbnRzIGRhdGEgaW4gYW4gZWFzaWx5IGVkaXRhYmxlIGZvcm1hdC5cbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiICogVXBkYXRlIHRoaXMgZmlsZSB3aGVuIGFkZGluZyBuZXcgYWNrbm93bGVkZ21lbnRzLlxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICIgKiBcbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiICogRm9ybWF0OiBhcnJheShcbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiICogICAgICd5ZWFyJyA9PiBhcnJheShcbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiICogICAgICAgICBhcnJheShcbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiICogICAgICAgICAgICAgJ25hbWUnID0+ICdSZXNlYXJjaGVyIE5hbWUgb3IgSGFuZGxlJyxcbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiICogICAgICAgICAgICAgJ2NvbXBhbnknID0+ICdDb21wYW55IE5hbWUgKG9wdGlvbmFsKScsXG4iOwogICAgICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqICAgICAgICAgICAgICd3ZWJzaXRlJyA9PiAnV2Vic2l0ZSBVUkwgKG9wdGlvbmFsKScsXG4iOwogICAgICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqICAgICAgICAgICAgICd2dWxuZXJhYmlsaXR5JyA9PiAnQnJpZWYgZGVzY3JpcHRpb24nLFxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgICAgICAgICAnZGF0ZScgPT4gJ1lZWVktTU0tREQnLFxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgICAgICAgICAnZGlzY2xvc3VyZScgPT4gJ3B1YmxpYyd8J3ByaXZhdGUnfCdjb29yZGluYXRlZCcsXG4iOwogICAgICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqICAgICAgICAgICAgICdjcmVkaXRfbGluaycgPT4gJ09wdGlvbmFsIFVSTCcsXG4iOwogICAgICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqICAgICAgICAgICAgICdyZXBvcnRfaWQnID0+ICdSZXBvcnQgSUQgZm9yIHJlZmVyZW5jZSdcbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiICogICAgICAgICApLFxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgICAgIC4uLlxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICIgKiAgICAgKSxcbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiICogICAgIC4uLlxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICIgKiApXG4iOwogICAgICAgICRmaWxlX2NvbnRlbnQgLj0gIiAqIFxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICIgKiBOb3RlOiBMaXN0IGl0ZW1zIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciAobmV3ZXN0IGZpcnN0KVxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICIgKi9cblxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICJpZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHtcbiI7CiAgICAgICAgJGZpbGVfY29udGVudCAuPSAiICAgIGV4aXQ7XG4iOwogICAgICAgICRmaWxlX2NvbnRlbnQgLj0gIn1cblxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICJcJGFja25vd2xlZGdtZW50cyA9ICIgLiB2YXJfZXhwb3J0KCRhY2tub3dsZWRnbWVudHMsIHRydWUpIC4gIjtcblxuIjsKICAgICAgICAkZmlsZV9jb250ZW50IC49ICI/PlxuIjsKICAgICAgICAKICAgICAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJGFja19maWxlLCAkZmlsZV9jb250ZW50KSkgewogICAgICAgICAgICAkdGhpcy0+QXVkaXQoMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAnQWNrbm93bGVkZ21lbnQgcmVtb3ZlZCcpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnYWN0aXZldGFiJyA9PiAncmVwb3J0cycsICdtc2cnID0+ICdhY2tub3dsZWRnbWVudF9yZW1vdmVkJykpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvck1lc3NhZ2UoJ0ZhaWxlZCB0byByZW1vdmUgYWNrbm93bGVkZ21lbnQuIFBsZWFzZSBjaGVjayBmaWxlIHBlcm1pc3Npb25zLicpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKLy8gR2V0IGRlZmF1bHQgdmFsdWVzCiRkZWZhdWx0X25hbWUgPSAnJzsKJGRlZmF1bHRfY29tcGFueSA9ICcnOwokZGVmYXVsdF93ZWJzaXRlID0gJyc7CiRkZWZhdWx0X3Z1bG5lcmFiaWxpdHkgPSAnJzsKJGRlZmF1bHRfZGF0ZSA9ICcnOwokZGVmYXVsdF9kaXNjbG9zdXJlID0gJ2Nvb3JkaW5hdGVkJzsKJGRlZmF1bHRfY3JlZGl0X2xpbmsgPSAnJzsKCmlmICgkZXhpc3RpbmdfYWNrKSB7CiAgICAkZGVmYXVsdF9uYW1lID0gaXNzZXQoJGV4aXN0aW5nX2Fja1snbmFtZSddKSA/ICRleGlzdGluZ19hY2tbJ25hbWUnXSA6ICcnOwogICAgJGRlZmF1bHRfY29tcGFueSA9IGlzc2V0KCRleGlzdGluZ19hY2tbJ2NvbXBhbnknXSkgPyAkZXhpc3RpbmdfYWNrWydjb21wYW55J10gOiAnJzsKICAgICRkZWZhdWx0X3dlYnNpdGUgPSBpc3NldCgkZXhpc3RpbmdfYWNrWyd3ZWJzaXRlJ10pID8gJGV4aXN0aW5nX2Fja1snd2Vic2l0ZSddIDogJyc7CiAgICAkZGVmYXVsdF92dWxuZXJhYmlsaXR5ID0gaXNzZXQoJGV4aXN0aW5nX2Fja1sndnVsbmVyYWJpbGl0eSddKSA/ICRleGlzdGluZ19hY2tbJ3Z1bG5lcmFiaWxpdHknXSA6ICcnOwogICAgJGRlZmF1bHRfZGF0ZSA9IGlzc2V0KCRleGlzdGluZ19hY2tbJ2RhdGUnXSkgPyAkZXhpc3RpbmdfYWNrWydkYXRlJ10gOiAnJzsKICAgICRkZWZhdWx0X2Rpc2Nsb3N1cmUgPSBpc3NldCgkZXhpc3RpbmdfYWNrWydkaXNjbG9zdXJlJ10pID8gJGV4aXN0aW5nX2Fja1snZGlzY2xvc3VyZSddIDogJ2Nvb3JkaW5hdGVkJzsKICAgICRkZWZhdWx0X2NyZWRpdF9saW5rID0gaXNzZXQoJGV4aXN0aW5nX2Fja1snY3JlZGl0X2xpbmsnXSkgPyAkZXhpc3RpbmdfYWNrWydjcmVkaXRfbGluayddIDogJyc7Cn0gZWxzZWlmICgkcmVwb3J0X2RhdGEpIHsKICAgICRkZWZhdWx0X25hbWUgPSBpc3NldCgkcmVwb3J0X2RhdGFbJ2RhdGEnXVsncmVwb3J0ZXJfbmFtZSddKSA/IHRyaW0oJHJlcG9ydF9kYXRhWydkYXRhJ11bJ3JlcG9ydGVyX25hbWUnXSkgOiAnJzsKICAgIGlmIChlbXB0eSgkZGVmYXVsdF9uYW1lKSkgewogICAgICAgICRkZWZhdWx0X25hbWUgPSAnQW5vbnltb3VzJzsKICAgIH0KICAgICRkZWZhdWx0X3Z1bG5lcmFiaWxpdHkgPSBpc3NldCgkcmVwb3J0X2RhdGFbJ2RhdGEnXVsndnVsbmVyYWJpbGl0eV90eXBlJ10pID8gdHJpbSgkcmVwb3J0X2RhdGFbJ2RhdGEnXVsndnVsbmVyYWJpbGl0eV90eXBlJ10pIDogJyc7CiAgICAkZGVmYXVsdF9kYXRlID0gaXNzZXQoJHJlcG9ydF9kYXRhWyd0aW1lJ10pID8gZGF0ZSgnWS1tLWQnLCBzdHJ0b3RpbWUoJHJlcG9ydF9kYXRhWyd0aW1lJ10pKSA6IGRhdGUoJ1ktbS1kJyk7CiAgICAkZGVmYXVsdF9kaXNjbG9zdXJlID0gaXNzZXQoJHJlcG9ydF9kYXRhWydkYXRhJ11bJ2Rpc2Nsb3N1cmVfcHJlZmVyZW5jZSddKSA/IHRyaW0oJHJlcG9ydF9kYXRhWydkYXRhJ11bJ2Rpc2Nsb3N1cmVfcHJlZmVyZW5jZSddKSA6ICdjb29yZGluYXRlZCc7CiAgICBpZiAoIWluX2FycmF5KCRkZWZhdWx0X2Rpc2Nsb3N1cmUsIGFycmF5KCdwdWJsaWMnLCAncHJpdmF0ZScsICdjb29yZGluYXRlZCcpKSkgewogICAgICAgICRkZWZhdWx0X2Rpc2Nsb3N1cmUgPSAnY29vcmRpbmF0ZWQnOwogICAgfQp9CgovLyBEaXNwbGF5IGZvcm0KZWNobyAnPGgyPicgLiAoJGV4aXN0aW5nX2FjayA/ICdFZGl0IFNlY3VyaXR5IEFja25vd2xlZGdtZW50JyA6ICdBZGQgdG8gU2VjdXJpdHkgQWNrbm93bGVkZ21lbnRzJykgLiAnPC9oMj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnYWNrbm93bGVkZ21lbnRzX2luZm8nKSAuICc6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJ1VzZSB0aGlzIGZvcm0gdG8gYWRkIG9yIGVkaXQgYWNrbm93bGVkZ21lbnQgaW5mb3JtYXRpb24gdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgcHVibGljIFNlY3VyaXR5IEFja25vd2xlZGdtZW50cyBwYWdlLic7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2VkaXRfYWNrbm93bGVkZ21lbnQnLCAkcmV0dXJuaWQpOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdyZXBvcnRfaWQnLCAkcmVwb3J0X2lkKTsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnYWN0aXZldGFiJywgJ3JlcG9ydHMnKTsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5OYW1lIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+Kjwvc3Bhbj46PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICduYW1lJywgJGRlZmF1bHRfbmFtZSwgNTAsIDI1NSwgJ3N0eWxlPSJ3aWR0aDogNDAwcHg7IicpOwplY2hvICc8YnI+PGVtPlRoZSByZXNlYXJjaGVyXCdzIG5hbWUgb3IgaGFuZGxlIGFzIGl0IHNob3VsZCBhcHBlYXIgcHVibGljbHkuPC9lbT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Db21wYW55IChPcHRpb25hbCk6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjb21wYW55JywgJGRlZmF1bHRfY29tcGFueSwgNTAsIDI1NSwgJ3N0eWxlPSJ3aWR0aDogNDAwcHg7IicpOwplY2hvICc8YnI+PGVtPlRoZSByZXNlYXJjaGVyXCdzIGNvbXBhbnkgb3Igb3JnYW5pemF0aW9uIG5hbWUuPC9lbT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5XZWJzaXRlIChPcHRpb25hbCk6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd3ZWJzaXRlJywgJGRlZmF1bHRfd2Vic2l0ZSwgNTAsIDI1NSwgJ3N0eWxlPSJ3aWR0aDogNDAwcHg7IicpOwplY2hvICc8YnI+PGVtPldlYnNpdGUgVVJMIChlLmcuLCBodHRwczovL2V4YW1wbGUuY29tKS4gTXVzdCBzdGFydCB3aXRoIGh0dHBzOi8vPC9lbT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5WdWxuZXJhYmlsaXR5IDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+Kjwvc3Bhbj46PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd2dWxuZXJhYmlsaXR5JywgJGRlZmF1bHRfdnVsbmVyYWJpbGl0eSwgMTAwLCAyNTUsICdzdHlsZT0id2lkdGg6IDYwMHB4OyInKTsKZWNobyAnPGJyPjxlbT5CcmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgdnVsbmVyYWJpbGl0eS48L2VtPic7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPkRhdGUgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij4qPC9zcGFuPjo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2RhdGUnLCAkZGVmYXVsdF9kYXRlLCAyMCwgMjAsICdzdHlsZT0id2lkdGg6IDE1MHB4OyIgcGxhY2Vob2xkZXI9IllZWVktTU0tREQiJyk7CmVjaG8gJzxicj48ZW0+RGF0ZSBvZiB0aGUgdnVsbmVyYWJpbGl0eSBkaXNjbG9zdXJlIChmb3JtYXQ6IFlZWVktTU0tREQpLjwvZW0+JzsKZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+RGlzY2xvc3VyZSBUeXBlOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2Rpc2Nsb3N1cmUnLCBhcnJheSgKICAgICdjb29yZGluYXRlZCcgPT4gJ0Nvb3JkaW5hdGVkIERpc2Nsb3N1cmUnLAogICAgJ3ByaXZhdGUnID0+ICdQcml2YXRlIERpc2Nsb3N1cmUnLAogICAgJ3B1YmxpYycgPT4gJ1B1YmxpYyBEaXNjbG9zdXJlJwopLCAtMSwgJGRlZmF1bHRfZGlzY2xvc3VyZSk7CmVjaG8gJzxicj48ZW0+VGhlIHR5cGUgb2YgZGlzY2xvc3VyZSB0aGF0IG9jY3VycmVkLjwvZW0+JzsKZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+Q3JlZGl0IExpbmsgKE9wdGlvbmFsKTo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2NyZWRpdF9saW5rJywgJGRlZmF1bHRfY3JlZGl0X2xpbmssIDEwMCwgMjU1LCAnc3R5bGU9IndpZHRoOiA2MDBweDsiJyk7CmVjaG8gJzxicj48ZW0+T3B0aW9uYWwgVVJMIHRvIGxpbmsgdG8gdGhlIHJlc2VhcmNoZXJcJ3MgcHJvZmlsZSBvciB3ZWJzaXRlIChtdXN0IHN0YXJ0IHdpdGggaHR0cDovLyBvciBodHRwczovLykuPC9lbT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc2F2ZV9hY2tub3dsZWRnbWVudCcsICgkZXhpc3RpbmdfYWNrID8gJ1VwZGF0ZSBBY2tub3dsZWRnbWVudCcgOiAnQWRkIHRvIEFja25vd2xlZGdtZW50cycpLCAnJywgJycsICdzdHlsZT0ibWFyZ2luLXJpZ2h0OiAxMHB4OyInKTsKZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICdDYW5jZWwnLCBhcnJheSgnYWN0aXZldGFiJyA9PiAncmVwb3J0cycpLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJ2NsYXNzPSJjbXNfYnV0dG9ubGluayInKTsKaWYgKCRleGlzdGluZ19hY2spIHsKICAgIGVjaG8gJzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMjBweDsiPic7CiAgICAgICAgICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdlZGl0X2Fja25vd2xlZGdtZW50JywgJHJldHVybmlkKTsKICAgICAgICAgICAgZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAncmVwb3J0X2lkJywgJHJlcG9ydF9pZCk7CiAgICAgICAgICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2FjdGl2ZXRhYicsICdyZXBvcnRzJyk7CiAgICAgICAgICAgICRyZW1vdmVfYnRuID0gJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3JlbW92ZV9hY2tub3dsZWRnbWVudCcsICdSZW1vdmUgZnJvbSBBY2tub3dsZWRnbWVudHMnKTsKICAgICAgICAgICAgLy8gQWRkIG9uY2xpY2sgdmlhIEphdmFTY3JpcHQgYWZ0ZXIgY3JlYXRpb24gdG8gYXZvaWQgYXR0cmlidXRlIHBhcnNpbmcgaXNzdWVzCiAgICAgICAgICAgICRyZW1vdmVfYnRuID0gc3RyX3JlcGxhY2UoJzxpbnB1dCcsICc8aW5wdXQgaWQ9InJlbW92ZV9hY2tfYnRuXycgLiBodG1sc3BlY2lhbGNoYXJzKCRyZXBvcnRfaWQsIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7IGNvbG9yOiB3aGl0ZTsiJywgJHJlbW92ZV9idG4pOwogICAgICAgICAgICBlY2hvICRyZW1vdmVfYnRuOwogICAgICAgICAgICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVtb3ZlX2Fja19idG5fJyAuIGh0bWxzcGVjaWFsY2hhcnMoJHJlcG9ydF9pZCwgRU5UX1FVT1RFUywgJ1VURi04JykgLiAnIik7CiAgICAgICAgICAgICAgICBpZiAoYnRuKSB7CiAgICAgICAgICAgICAgICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpcm0oIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBmcm9tIFNlY3VyaXR5IEFja25vd2xlZGdtZW50cz8iKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICA8L3NjcmlwdD4nOwogICAgICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CiAgICBlY2hvICc8L3NwYW4+JzsKfQplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/action.vdp.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFZ1bG5lcmFiaWxpdHkgRGlzY2xvc3VyZSBQb2xpY3kgQWN0aW9uCiAqIAogKiBBY3Rpb24gZmlsZSBmb3IgQ01TTVMgTUFTIFNlY3VyaXR5IG1vZHVsZQogKi8KCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKLy8gTG9hZCBzZWN1cml0eSBmdW5jdGlvbnMKcmVxdWlyZV9vbmNlKF9fRElSX18gLiAnL3NlY3VyaXR5LWZ1bmN0aW9ucy5waHAnKTsKcmVxdWlyZV9vbmNlKF9fRElSX18gLiAnL3Z1bG5lcmFiaWxpdHktcmVwb3J0LWhhbmRsZXIucGhwJyk7CgovLyBTdGFydCBzZXNzaW9uCmlmIChzZXNzaW9uX3N0YXR1cygpID09PSBQSFBfU0VTU0lPTl9OT05FKSB7CiAgICBzZXNzaW9uX3N0YXJ0KCk7Cn0KCi8vIFByb2Nlc3MgZm9ybSBzdWJtaXNzaW9uCiRmb3JtX3Jlc3VsdCA9IG51bGw7CiRmb3JtX3N1Y2Nlc3MgPSBmYWxzZTsKJGZvcm1fbWVzc2FnZSA9ICcnOwoKaWYgKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09PSAnUE9TVCcgJiYgaXNzZXQoJF9QT1NUWydzdWJtaXRfdnVsbmVyYWJpbGl0eV9yZXBvcnQnXSkpIHsKICAgICRmb3JtX3Jlc3VsdCA9IHByb2Nlc3NfdnVsbmVyYWJpbGl0eV9yZXBvcnQoKTsKICAgICRmb3JtX3N1Y2Nlc3MgPSAkZm9ybV9yZXN1bHRbJ3N1Y2Nlc3MnXTsKICAgICRmb3JtX21lc3NhZ2UgPSAkZm9ybV9yZXN1bHRbJ21lc3NhZ2UnXTsKfQoKLy8gR2V0IENTUkYgdG9rZW4KJGNzcmZfdG9rZW4gPSBzZWN1cml0eV9nZW5lcmF0ZV9jc3JmX3Rva2VuKCk7CgovLyBHZXQgY29uZmlnCiRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKJHJvb3RfdXJsID0gaXNzZXQoJGNvbmZpZ1sncm9vdF91cmwnXSkgPyAkY29uZmlnWydyb290X3VybCddIDogKGlzc2V0KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSA9PT0gJ29uJyA/ICdodHRwcycgOiAnaHR0cCcpIC4gJzovLycgLiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICdsb2NhbGhvc3QnKTsKJHNpdGVfbmFtZSA9IGlzc2V0KCRjb25maWdbJ3NpdGVuYW1lJ10pID8gJGNvbmZpZ1snc2l0ZW5hbWUnXSA6IChpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pID8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIDogJ3lvdXItc2l0ZS5jb20nKTsKCi8vIEV4dHJhY3QgYmFzZSBkb21haW4gZnJvbSByb290X3VybCBmb3IgdXNlIGluIHRlbXBsYXRlcwokcGFyc2VkX3VybCA9IHBhcnNlX3VybCgkcm9vdF91cmwpOwokYmFzZV9kb21haW4gPSBpc3NldCgkcGFyc2VkX3VybFsnaG9zdCddKSA/ICRwYXJzZWRfdXJsWydob3N0J10gOiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICd5b3VyLXNpdGUuY29tJyk7CgovLyBHZXQgYWRtaW4gZW1haWwgZm9yIGRlZmF1bHQgc2VjdXJpdHkgZW1haWwKJGFkbWluX2VtYWlsID0gJyc7CnRyeSB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgJGFkbWluX3VzZXIgPSAkZGItPkdldFJvdygnU0VMRUNUIGVtYWlsIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAndXNlcnMgV0hFUkUgdXNlcl9pZCA9IDEnKTsKICAgIGlmICgkYWRtaW5fdXNlciAmJiBpc3NldCgkYWRtaW5fdXNlclsnZW1haWwnXSkpIHsKICAgICAgICAkYWRtaW5fZW1haWwgPSAkYWRtaW5fdXNlclsnZW1haWwnXTsKICAgIH0KfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAvLyBGYWxsYmFjayBpZiBxdWVyeSBmYWlscwp9CmlmIChlbXB0eSgkYWRtaW5fZW1haWwpKSB7CiAgICAkYWRtaW5fZW1haWwgPSAnc2VjdXJpdHlAJyAuICRiYXNlX2RvbWFpbjsKfQoKLy8gR2V0IGN1cnJlbnQgcGFnZSBVUkwgZm9yIGZvcm0gYWN0aW9uCi8vIFdoZW4gY2FsbGVkIGZyb20gYSBDTVNNUyBjb250ZW50IHBhZ2UsIHdlIG5lZWQgdG8gaW5jbHVkZSB0aGUgbWFjdCBwYXJhbWV0ZXIKLy8gdG8gZW5zdXJlIGZvcm0gc3VibWlzc2lvbnMgZ28gYmFjayB0byB0aGUgc2FtZSBtb2R1bGUgYWN0aW9uCiRjdXJyZW50X3VybCA9ICcnOwokZm9ybV9hY3Rpb25fdXJsID0gJyc7CgppZiAoaXNzZXQoJHJldHVybmlkKSAmJiAkcmV0dXJuaWQgPiAwKSB7CiAgICAkY29udGVudG9wcyA9IENvbnRlbnRPcGVyYXRpb25zOjpnZXRfaW5zdGFuY2UoKTsKICAgICRjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkKCRyZXR1cm5pZCk7CiAgICBpZiAoJGNvbnRlbnQpIHsKICAgICAgICAkY3VycmVudF91cmwgPSAkY29udGVudC0+R2V0VVJMKCk7CiAgICAgICAgLy8gQnVpbGQgZm9ybSBhY3Rpb24gVVJMIHdpdGggbWFjdCBwYXJhbWV0ZXIgZm9yIG1vZHVsZSBhY3Rpb24KICAgICAgICAvLyBGb3JtYXQ6ID9tYWN0PU1vZHVsZU5hbWUsYWN0aW9uLHJldHVybmlkLDEKICAgICAgICAkc2VwYXJhdG9yID0gKHN0cnBvcygkY3VycmVudF91cmwsICc/JykgIT09IGZhbHNlKSA/ICcmJyA6ICc/JzsKICAgICAgICAkZm9ybV9hY3Rpb25fdXJsID0gJGN1cnJlbnRfdXJsIC4gJHNlcGFyYXRvciAuICdtYWN0PScgLiB1cmxlbmNvZGUoJ01BU19TZWN1cml0eSx2ZHAsZGVmYXVsdCwnIC4gJHJldHVybmlkKTsKICAgIH0KfQoKaWYgKGVtcHR5KCRjdXJyZW50X3VybCkpIHsKICAgIC8vIEZhbGxiYWNrIHRvIFJFUVVFU1RfVVJJIG9yIGNyZWF0ZSBVUkwgZnJvbSBjdXJyZW50IHBhZ2UKICAgIGlmIChpc3NldCgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkpIHsKICAgICAgICAkcmVxdWVzdF91cmkgPSBwYXJzZV91cmwoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sIFBIUF9VUkxfUEFUSCk7CiAgICAgICAgJGN1cnJlbnRfdXJsID0gJHJvb3RfdXJsIC4gJHJlcXVlc3RfdXJpOwogICAgICAgIC8vIEJ1aWxkIGZvcm0gYWN0aW9uIFVSTCB3aXRoIG1hY3QgcGFyYW1ldGVyCiAgICAgICAgJHNlcGFyYXRvciA9IChzdHJwb3MoJGN1cnJlbnRfdXJsLCAnPycpICE9PSBmYWxzZSkgPyAnJicgOiAnPyc7CiAgICAgICAgLy8gVHJ5IHRvIGdldCByZXR1cm5pZCBmcm9tIHBhcmFtcyBpZiBhdmFpbGFibGUKICAgICAgICAkcmV0dXJuaWRfcGFyYW0gPSBpc3NldCgkcmV0dXJuaWQpICYmICRyZXR1cm5pZCA+IDAgPyAkcmV0dXJuaWQgOiAxOwogICAgICAgICRmb3JtX2FjdGlvbl91cmwgPSAkY3VycmVudF91cmwgLiAkc2VwYXJhdG9yIC4gJ21hY3Q9JyAuIHVybGVuY29kZSgnTUFTX1NlY3VyaXR5LHZkcCxkZWZhdWx0LCcgLiAkcmV0dXJuaWRfcGFyYW0pOwogICAgfSBlbHNlIHsKICAgICAgICAkY3VycmVudF91cmwgPSAkcm9vdF91cmwgLiAnL3Z1bG5lcmFiaWxpdHktZGlzY2xvc3VyZSc7CiAgICAgICAgJGZvcm1fYWN0aW9uX3VybCA9ICRjdXJyZW50X3VybCAuICc/bWFjdD0nIC4gdXJsZW5jb2RlKCdNQVNfU2VjdXJpdHksdmRwLGRlZmF1bHQsMScpOwogICAgfQp9CgovLyBJZiBmb3JtX2FjdGlvbl91cmwgaXMgc3RpbGwgZW1wdHksIHVzZSBjdXJyZW50X3VybCBhcyBmYWxsYmFjawppZiAoZW1wdHkoJGZvcm1fYWN0aW9uX3VybCkpIHsKICAgICRmb3JtX2FjdGlvbl91cmwgPSAkY3VycmVudF91cmw7Cn0KCi8vIEdlbmVyYXRlIGRvbWFpbiBvcHRpb25zIGZvciBkcm9wZG93bgovLyBHZXQgY3VycmVudCBkb21haW4gYW5kIGNvbW1vbiBzdWJkb21haW5zCiRkb21haW5fb3B0aW9ucyA9IGFycmF5KCk7CiRkb21haW5fb3B0aW9uc1tdID0gJGJhc2VfZG9tYWluIC4gJyAoTWFpbiknOwoKLy8gQ29tbW9uIHN1YmRvbWFpbiBwcmVmaXhlcyB0aGF0IG1pZ2h0IGV4aXN0CiRjb21tb25fc3ViZG9tYWlucyA9IGFycmF5KCd3d3cnLCAnYXBpJywgJ2FkbWluJywgJ21haWwnLCAnd2VibWFpbCcsICdhcHAnLCAnZGFzaGJvYXJkJywgJ3BvcnRhbCcpOwpmb3JlYWNoICgkY29tbW9uX3N1YmRvbWFpbnMgYXMgJHN1YmRvbWFpbikgewogICAgLy8gU2tpcCB3d3cgaWYgZG9tYWluIGFscmVhZHkgc3RhcnRzIHdpdGggd3d3CiAgICBpZiAoJHN1YmRvbWFpbiAhPT0gJ3d3dycgfHwgc3RycG9zKCRiYXNlX2RvbWFpbiwgJ3d3dy4nKSAhPT0gMCkgewogICAgICAgICRkb21haW5fb3B0aW9uc1tdID0gJHN1YmRvbWFpbiAuICcuJyAuICRiYXNlX2RvbWFpbjsKICAgIH0KfQokZG9tYWluX29wdGlvbnNbXSA9ICdNdWx0aXBsZSc7CiRkb21haW5fb3B0aW9uc1tdID0gJ090aGVyJzsKCi8vIExvYWQgdGVtcGxhdGUgdXNpbmcgZGlyZWN0IGZpbGUgcGF0aAovLyBUaGlzIHdvcmtzIHJlbGlhYmx5IGluIGJvdGggZnJvbnRlbmQgYW5kIGFkbWluIGNvbnRleHRzCiR0ZW1wbGF0ZV9maWxlID0gX19ESVJfXyAuICcvdGVtcGxhdGVzL3ZkcC50cGwnOwppZiAoIWZpbGVfZXhpc3RzKCR0ZW1wbGF0ZV9maWxlKSkgewogICAgZWNobyAnPGRpdiBjbGFzcz0ic2VjdXJpdHktdmRwLWNvbnRhaW5lciI+JzsKICAgIGVjaG8gJzxoMT5WdWxuZXJhYmlsaXR5IERpc2Nsb3N1cmUgUG9saWN5PC9oMT4nOwogICAgZWNobyAnPHA+VGVtcGxhdGUgZmlsZSBub3QgZm91bmQgYXQ6ICcgLiBodG1sc3BlY2lhbGNoYXJzKCR0ZW1wbGF0ZV9maWxlKSAuICc8L3A+JzsKICAgIGVjaG8gJzwvZGl2Pic7CiAgICByZXR1cm47Cn0KCi8vIFVzZSBTbWFydHkgZGlyZWN0bHkgd2l0aCBmaWxlIHBhdGgKJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwp0cnkgewogICAgJHRlbXBsYXRlID0gJHNtYXJ0eS0+Y3JlYXRlVGVtcGxhdGUoJHRlbXBsYXRlX2ZpbGUpOwp9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgIGVjaG8gJzxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1jb250YWluZXIiPic7CiAgICBlY2hvICc8aDE+VnVsbmVyYWJpbGl0eSBEaXNjbG9zdXJlIFBvbGljeTwvaDE+JzsKICAgIGVjaG8gJzxwPkVycm9yIGxvYWRpbmcgdGVtcGxhdGU6ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD4nOwogICAgZWNobyAnPC9kaXY+JzsKICAgIHJldHVybjsKfQoKaWYgKCR0ZW1wbGF0ZSA9PT0gZmFsc2UgfHwgJHRlbXBsYXRlID09PSBudWxsKSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJzZWN1cml0eS12ZHAtY29udGFpbmVyIj4nOwogICAgZWNobyAnPGgxPlZ1bG5lcmFiaWxpdHkgRGlzY2xvc3VyZSBQb2xpY3k8L2gxPic7CiAgICBlY2hvICc8cD5UZW1wbGF0ZSBjb3VsZCBub3QgYmUgbG9hZGVkLjwvcD4nOwogICAgZWNobyAnPC9kaXY+JzsKICAgIHJldHVybjsKfQoKJHRlbXBsYXRlLT5hc3NpZ24oJ2Zvcm1fc3VjY2VzcycsICRmb3JtX3N1Y2Nlc3MpOwokdGVtcGxhdGUtPmFzc2lnbignZm9ybV9tZXNzYWdlJywgJGZvcm1fbWVzc2FnZSk7CiR0ZW1wbGF0ZS0+YXNzaWduKCdjc3JmX3Rva2VuJywgJGNzcmZfdG9rZW4pOwokdGVtcGxhdGUtPmFzc2lnbignc2l0ZV9uYW1lJywgJHNpdGVfbmFtZSk7CiR0ZW1wbGF0ZS0+YXNzaWduKCdiYXNlX2RvbWFpbicsICRiYXNlX2RvbWFpbik7CiR0ZW1wbGF0ZS0+YXNzaWduKCdyb290X3VybCcsICRyb290X3VybCk7CiR0ZW1wbGF0ZS0+YXNzaWduKCdjdXJyZW50X3VybCcsICRjdXJyZW50X3VybCk7CiR0ZW1wbGF0ZS0+YXNzaWduKCdmb3JtX2FjdGlvbl91cmwnLCAkZm9ybV9hY3Rpb25fdXJsKTsKJHRlbXBsYXRlLT5hc3NpZ24oJ2RvbWFpbl9vcHRpb25zJywgJGRvbWFpbl9vcHRpb25zKTsKJHRlbXBsYXRlLT5hc3NpZ24oJ3Bvc3RfZGF0YScsIGlzc2V0KCRfUE9TVCkgPyAkX1BPU1QgOiBhcnJheSgpKTsKCiR0ZW1wbGF0ZS0+ZGlzcGxheSgpOwoKPz4KCg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_acknowledgments.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFkbWluIEFja25vd2xlZGdtZW50cyBGdW5jdGlvbiBmb3IgTUFTIFNlY3VyaXR5CiAqLwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIGV4aXQ7CgplY2hvICc8aDI+JyAuICR0aGlzLT5MYW5nKCdhY2tub3dsZWRnbWVudHNfdGl0bGUnKSAuICc8L2gyPic7CgokYWNrX2ZpbGUgPSBfX0RJUl9fIC4gJy9hY2tub3dsZWRnbWVudHMtZGF0YS5waHAnOwokZmlsZV9leGlzdHMgPSBmaWxlX2V4aXN0cygkYWNrX2ZpbGUpOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnYWNrbm93bGVkZ21lbnRzX2ZpbGVfbG9jYXRpb24nKSAuICc6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJzxjb2RlPicgLiBodG1sc3BlY2lhbGNoYXJzKCRhY2tfZmlsZSwgRU5UX1FVT1RFUywgJ1VURi04JykgLiAnPC9jb2RlPic7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKaWYgKCRmaWxlX2V4aXN0cykgewogICAgJGZpbGVfY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRhY2tfZmlsZSk7CiAgICAkZmlsZV9zaXplID0gZmlsZXNpemUoJGFja19maWxlKTsKICAgICRmaWxlX2xpbmVzID0gY291bnQoZmlsZSgkYWNrX2ZpbGUpKTsKICAgIAogICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5GaWxlIFN0YXR1czo8L3A+JzsKICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CiAgICBlY2hvICfinIUgRmlsZSBleGlzdHMgKCcgLiAkZmlsZV9saW5lcyAuICcgbGluZXMsICcgLiBudW1iZXJfZm9ybWF0KCRmaWxlX3NpemUpIC4gJyBieXRlcyknOwogICAgZWNobyAnPC9wPic7CiAgICBlY2hvICc8L2Rpdj4nOwogICAgCiAgICAvLyBMb2FkIGFuZCBkaXNwbGF5IGN1cnJlbnQgYWNrbm93bGVkZ21lbnRzCiAgICByZXF1aXJlX29uY2UoJGFja19maWxlKTsKICAgICR0b3RhbF9jb3VudCA9IDA7CiAgICBmb3JlYWNoICgkYWNrbm93bGVkZ21lbnRzIGFzICR5ZWFyX2RhdGEpIHsKICAgICAgICAkdG90YWxfY291bnQgKz0gY291bnQoJHllYXJfZGF0YSk7CiAgICB9CiAgICAKICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+Q3VycmVudCBBY2tub3dsZWRnbWVudHM6PC9wPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwogICAgZWNobyAnPHN0cm9uZz4nIC4gJHRvdGFsX2NvdW50IC4gJzwvc3Ryb25nPiB0b3RhbCBhY2tub3dsZWRnbWVudHMgYWNyb3NzIDxzdHJvbmc+JyAuIGNvdW50KCRhY2tub3dsZWRnbWVudHMpIC4gJzwvc3Ryb25nPiB5ZWFyKHMpJzsKICAgIGVjaG8gJzwvcD4nOwogICAgZWNobyAnPC9kaXY+JzsKICAgIAogICAgaWYgKCR0b3RhbF9jb3VudCA+IDApIHsKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CiAgICAgICAgZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5ZZWFycyB3aXRoIEFja25vd2xlZGdtZW50czo8L3A+JzsKICAgICAgICBlY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwogICAgICAgIGtyc29ydCgkYWNrbm93bGVkZ21lbnRzKTsKICAgICAgICAkeWVhcnMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRhY2tub3dsZWRnbWVudHMgYXMgJHllYXIgPT4gJHllYXJfYWNrcykgewogICAgICAgICAgICBpZiAoY291bnQoJHllYXJfYWNrcykgPiAwKSB7CiAgICAgICAgICAgICAgICAkeWVhcnNbXSA9ICR5ZWFyIC4gJyAoJyAuIGNvdW50KCR5ZWFyX2Fja3MpIC4gJyknOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVjaG8gaW1wbG9kZSgnLCAnLCAkeWVhcnMpOwogICAgICAgIGVjaG8gJzwvcD4nOwogICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICB9Cn0gZWxzZSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPkZpbGUgU3RhdHVzOjwvcD4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKICAgIGVjaG8gJ+KdjCBGaWxlIGRvZXMgbm90IGV4aXN0JzsKICAgIGVjaG8gJzwvcD4nOwogICAgZWNobyAnPC9kaXY+JzsKfQoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnYWNrbm93bGVkZ21lbnRzX2VkaXRfZmlsZScpIC4gJzo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAnPGVtPicgLiAkdGhpcy0+TGFuZygnYWNrbm93bGVkZ21lbnRzX2ZpbGVfaGVscCcpIC4gJzwvZW0+JzsKZWNobyAnPGJyPjxicj4nOwplY2hvICc8c3Ryb25nPkZvcm1hdDo8L3N0cm9uZz4nOwplY2hvICc8cHJlIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZjVmNWY1OyBwYWRkaW5nOiAxNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBvdmVyZmxvdy14OiBhdXRvOyI+JzsKZWNobyBodG1sc3BlY2lhbGNoYXJzKCckYWNrbm93bGVkZ21lbnRzID0gYXJyYXkoCiAgICAyMDI1ID0+IGFycmF5KAogICAgICAgIGFycmF5KAogICAgICAgICAgICBcJ25hbWVcJyA9PiBcJ1NlY3VyaXR5IFJlc2VhcmNoZXIgTmFtZVwnLAogICAgICAgICAgICBcJ3Z1bG5lcmFiaWxpdHlcJyA9PiBcJ0Nyb3NzLVNpdGUgU2NyaXB0aW5nIChYU1MpXCcsCiAgICAgICAgICAgIFwnZGF0ZVwnID0+IFwnMjAyNS0wMS0xNVwnLAogICAgICAgICAgICBcJ2Rpc2Nsb3N1cmVcJyA9PiBcJ2Nvb3JkaW5hdGVkXCcsCiAgICAgICAgICAgIFwnY3JlZGl0X2xpbmtcJyA9PiBudWxsIC8vIG9yIFVSTAogICAgICAgICksCiAgICApLAopOycsIEVOVF9RVU9URVMsICdVVEYtOCcpOwplY2hvICc8L3ByZT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_logs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFkbWluIExvZ3MgRnVuY3Rpb24gZm9yIE1BUyBTZWN1cml0eQogKi8KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKLy8gSGFuZGxlIGxvZyBjbGVhcmluZwppZiAoaXNzZXQoJHBhcmFtc1snY2xlYXJsb2dzJ10pKSB7CiAgICByZXF1aXJlX29uY2UoX19ESVJfXyAuICcvc2VjdXJpdHktZnVuY3Rpb25zLnBocCcpOwogICAgCiAgICAkbG9nX2ZpbGUgPSAnJzsKICAgIGlmIChkZWZpbmVkKCdUTVBfQ0FDSEVfTE9DQVRJT04nKSkgewogICAgICAgICRsb2dfZmlsZSA9IFRNUF9DQUNIRV9MT0NBVElPTiAuICcvdmRwX3NlY3VyaXR5LmxvZyc7CiAgICB9IGVsc2UgewogICAgICAgICRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ10pKSB7CiAgICAgICAgICAgICRsb2dfZmlsZSA9ICRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddIC4gJy92ZHBfc2VjdXJpdHkubG9nJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbG9nX2ZpbGUgPSBkaXJuYW1lKGRpcm5hbWUoX19ESVJfXykpIC4gJy90bXAvY2FjaGUvdmRwX3NlY3VyaXR5LmxvZyc7CiAgICAgICAgfQogICAgfQogICAgCiAgICBpZiAoZmlsZV9leGlzdHMoJGxvZ19maWxlKSkgewogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRsb2dfZmlsZSwgJycpOwogICAgICAgIHJlZGlyZWN0KCR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJycsIGFycmF5KCdhY3RpdmV0YWInID0+ICdsb2dzJywgJ21zZycgPT4gJ2xvZ3NfY2xlYXJlZCcpKSk7CiAgICB9Cn0KCmVjaG8gJzxoMj4nIC4gJHRoaXMtPkxhbmcoJ2xvZ3NfdGl0bGUnKSAuICc8L2gyPic7CgpyZXF1aXJlX29uY2UoX19ESVJfXyAuICcvc2VjdXJpdHktZnVuY3Rpb25zLnBocCcpOwoKJGxvZ19maWxlID0gJyc7CmlmIChkZWZpbmVkKCdUTVBfQ0FDSEVfTE9DQVRJT04nKSkgewogICAgJGxvZ19maWxlID0gVE1QX0NBQ0hFX0xPQ0FUSU9OIC4gJy92ZHBfc2VjdXJpdHkubG9nJzsKfSBlbHNlIHsKICAgICRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKICAgIGlmIChpc3NldCgkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSkpIHsKICAgICAgICAkbG9nX2ZpbGUgPSAkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSAuICcvdmRwX3NlY3VyaXR5LmxvZyc7CiAgICB9IGVsc2UgewogICAgICAgICRsb2dfZmlsZSA9IGRpcm5hbWUoZGlybmFtZShfX0RJUl9fKSkgLiAnL3RtcC9jYWNoZS92ZHBfc2VjdXJpdHkubG9nJzsKICAgIH0KfQoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnbG9nc19maWxlX2xvY2F0aW9uJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICc8Y29kZT4nIC4gaHRtbHNwZWNpYWxjaGFycygkbG9nX2ZpbGUsIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJzwvY29kZT4nOwppZiAoZmlsZV9leGlzdHMoJGxvZ19maWxlKSkgewogICAgJGxvZ19zaXplID0gZmlsZXNpemUoJGxvZ19maWxlKTsKICAgICRsb2dfbGluZXMgPSBjb3VudChmaWxlKCRsb2dfZmlsZSwgRklMRV9JR05PUkVfTkVXX0xJTkVTIHwgRklMRV9TS0lQX0VNUFRZX0xJTkVTKSk7CiAgICBlY2hvICcgKCcgLiAkbG9nX2xpbmVzIC4gJyBlbnRyaWVzLCAnIC4gbnVtYmVyX2Zvcm1hdCgkbG9nX3NpemUpIC4gJyBieXRlcyknOwp9IGVsc2UgewogICAgZWNobyAnIChGaWxlIGRvZXMgbm90IGV4aXN0IHlldCknOwp9CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKaWYgKGZpbGVfZXhpc3RzKCRsb2dfZmlsZSkgJiYgZmlsZXNpemUoJGxvZ19maWxlKSA+IDApIHsKICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKICAgIGVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwogICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWlubG9ncycsICRyZXR1cm5pZCk7CiAgICBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdhY3RpdmV0YWInLCAnbG9ncycpOwogICAgJGNsZWFyX2J0biA9ICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjbGVhcmxvZ3MnLCAkdGhpcy0+TGFuZygnbG9nc19jbGVhcicpKTsKICAgICRjbGVhcl9idG4gPSBzdHJfcmVwbGFjZSgnPGlucHV0JywgJzxpbnB1dCBpZD0iY2xlYXJfbG9nc19idG5fZnVuYyInLCAkY2xlYXJfYnRuKTsKICAgIGVjaG8gJGNsZWFyX2J0bjsKICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsZWFyX2xvZ3NfYnRuX2Z1bmMiKTsKICAgICAgICBpZiAoYnRuKSB7CiAgICAgICAgICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmICghY29uZmlybSgiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsZWFyIGFsbCBzZWN1cml0eSBsb2dzPyIpKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSk7CiAgICA8L3NjcmlwdD4nOwogICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwogICAgZWNobyAnPC9wPic7CiAgICBlY2hvICc8L2Rpdj4nOwogICAgCiAgICAvLyBEaXNwbGF5IHJlY2VudCBsb2cgZW50cmllcyAobGFzdCA1MCkKICAgICRsaW5lcyA9IGZpbGUoJGxvZ19maWxlLCBGSUxFX0lHTk9SRV9ORVdfTElORVMgfCBGSUxFX1NLSVBfRU1QVFlfTElORVMpOwogICAgJHJlY2VudF9saW5lcyA9IGFycmF5X3NsaWNlKCRsaW5lcywgLTUwKTsKICAgIAogICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5SZWNlbnQgTG9nIEVudHJpZXMgKGxhc3QgNTApOjwvcD4nOwogICAgZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKICAgIGVjaG8gJzx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbi10b3A6IDEwcHg7Ij4nOwogICAgZWNobyAnPHRoZWFkPic7CiAgICBlY2hvICc8dHI+JzsKICAgIGVjaG8gJzx0aD5UaW1lPC90aD4nOwogICAgZWNobyAnPHRoPkV2ZW50PC90aD4nOwogICAgZWNobyAnPHRoPklQIEFkZHJlc3M8L3RoPic7CiAgICBlY2hvICc8dGg+RGV0YWlsczwvdGg+JzsKICAgIGVjaG8gJzwvdHI+JzsKICAgIGVjaG8gJzwvdGhlYWQ+JzsKICAgIGVjaG8gJzx0Ym9keT4nOwogICAgCiAgICBmb3JlYWNoIChhcnJheV9yZXZlcnNlKCRyZWNlbnRfbGluZXMpIGFzICRsaW5lKSB7CiAgICAgICAgJGVudHJ5ID0ganNvbl9kZWNvZGUoJGxpbmUsIHRydWUpOwogICAgICAgIGlmICgkZW50cnkpIHsKICAgICAgICAgICAgZWNobyAnPHRyPic7CiAgICAgICAgICAgIGVjaG8gJzx0ZD4nIC4gaHRtbHNwZWNpYWxjaGFycygkZW50cnlbJ3RpbWUnXSA/PyAnTi9BJywgRU5UX1FVT1RFUywgJ1VURi04JykgLiAnPC90ZD4nOwogICAgICAgICAgICBlY2hvICc8dGQ+JyAuIGh0bWxzcGVjaWFsY2hhcnMoJGVudHJ5WydldmVudCddID8/ICdOL0EnLCBFTlRfUVVPVEVTLCAnVVRGLTgnKSAuICc8L3RkPic7CiAgICAgICAgICAgIGVjaG8gJzx0ZD4nIC4gaHRtbHNwZWNpYWxjaGFycygkZW50cnlbJ2lwJ10gPz8gJ04vQScsIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJzwvdGQ+JzsKICAgICAgICAgICAgZWNobyAnPHRkPic7CiAgICAgICAgICAgIGlmIChpc3NldCgkZW50cnlbJ2RhdGEnXSkgJiYgaXNfYXJyYXkoJGVudHJ5WydkYXRhJ10pKSB7CiAgICAgICAgICAgICAgICAkZGV0YWlscyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZW50cnlbJ2RhdGEnXSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc19zdHJpbmcoJHZhbHVlKSAmJiBzdHJsZW4oJHZhbHVlKSA+IDUwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9IHN1YnN0cigkdmFsdWUsIDAsIDUwKSAuICcuLi4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkZGV0YWlsc1tdID0gaHRtbHNwZWNpYWxjaGFycygka2V5LCBFTlRfUVVPVEVTLCAnVVRGLTgnKSAuICc6ICcgLiBodG1sc3BlY2lhbGNoYXJzKChzdHJpbmcpJHZhbHVlLCBFTlRfUVVPVEVTLCAnVVRGLTgnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gaW1wbG9kZSgnLCAnLCAkZGV0YWlscyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAnPC90ZD4nOwogICAgICAgICAgICBlY2hvICc8L3RyPic7CiAgICAgICAgfQogICAgfQogICAgCiAgICBlY2hvICc8L3Rib2R5Pic7CiAgICBlY2hvICc8L3RhYmxlPic7CiAgICBlY2hvICc8L3A+JzsKICAgIGVjaG8gJzwvZGl2Pic7Cn0gZWxzZSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPkxvZyBTdGF0dXM6PC9wPic7CiAgICBlY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwogICAgZWNobyAnTm8gbG9nIGVudHJpZXMgeWV0LiBMb2dzIHdpbGwgYXBwZWFyIGhlcmUgb25jZSB2dWxuZXJhYmlsaXR5IHJlcG9ydHMgYXJlIHN1Ym1pdHRlZC4nOwogICAgZWNobyAnPC9wPic7CiAgICBlY2hvICc8L2Rpdj4nOwp9Cgo/PgoK]]></data>
	</file>
	<file>
	  <filename>/function.admin_reports.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFkbWluIFJlcG9ydHMgRnVuY3Rpb24gZm9yIE1BUyBTZWN1cml0eQogKi8KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKZWNobyAnPGgyPicgLiAkdGhpcy0+TGFuZygncmVwb3J0c190aXRsZScpIC4gJzwvaDI+JzsKCi8vIExvYWQgc2VjdXJpdHkgZnVuY3Rpb25zIHRvIGNoZWNrIGxvZyBmaWxlCnJlcXVpcmVfb25jZShfX0RJUl9fIC4gJy9zZWN1cml0eS1mdW5jdGlvbnMucGhwJyk7CgokbG9nX2ZpbGUgPSAnJzsKaWYgKGRlZmluZWQoJ1RNUF9DQUNIRV9MT0NBVElPTicpKSB7CiAgICAkbG9nX2ZpbGUgPSBUTVBfQ0FDSEVfTE9DQVRJT04gLiAnL3ZkcF9zZWN1cml0eS5sb2cnOwp9IGVsc2UgewogICAgJGNvbmZpZyA9IGNtc191dGlsczo6Z2V0X2NvbmZpZygpOwogICAgaWYgKGlzc2V0KCRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddKSkgewogICAgICAgICRsb2dfZmlsZSA9ICRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddIC4gJy92ZHBfc2VjdXJpdHkubG9nJzsKICAgIH0gZWxzZSB7CiAgICAgICAgJGxvZ19maWxlID0gZGlybmFtZShkaXJuYW1lKF9fRElSX18pKSAuICcvdG1wL2NhY2hlL3ZkcF9zZWN1cml0eS5sb2cnOwogICAgfQp9CgokcmVwb3J0X2NvdW50ID0gMDsKaWYgKGZpbGVfZXhpc3RzKCRsb2dfZmlsZSkpIHsKICAgICRsaW5lcyA9IGZpbGUoJGxvZ19maWxlLCBGSUxFX0lHTk9SRV9ORVdfTElORVMgfCBGSUxFX1NLSVBfRU1QVFlfTElORVMpOwogICAgZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lKSB7CiAgICAgICAgJGVudHJ5ID0ganNvbl9kZWNvZGUoJGxpbmUsIHRydWUpOwogICAgICAgIGlmICgkZW50cnkgJiYgaXNzZXQoJGVudHJ5WydldmVudCddKSAmJiAkZW50cnlbJ2V2ZW50J10gPT09ICd2dWxuZXJhYmlsaXR5X3JlcG9ydF9zdWJtaXR0ZWQnKSB7CiAgICAgICAgICAgICRyZXBvcnRfY291bnQrKzsKICAgICAgICB9CiAgICB9Cn0KCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Ub3RhbCBSZXBvcnRzIFJlY2VpdmVkOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwppZiAoJHJlcG9ydF9jb3VudCA+IDApIHsKICAgIGVjaG8gJzxzdHJvbmc+JyAuICRyZXBvcnRfY291bnQgLiAnPC9zdHJvbmc+IHZ1bG5lcmFiaWxpdHkgcmVwb3J0KHMpIHN1Ym1pdHRlZCc7Cn0gZWxzZSB7CiAgICBlY2hvICR0aGlzLT5MYW5nKCdyZXBvcnRzX25vbmUnKTsKfQplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Mb2cgRmlsZSBMb2NhdGlvbjo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAnPGNvZGU+JyAuIGh0bWxzcGVjaWFsY2hhcnMoJGxvZ19maWxlLCBFTlRfUVVPVEVTLCAnVVRGLTgnKSAuICc8L2NvZGU+JzsKaWYgKGZpbGVfZXhpc3RzKCRsb2dfZmlsZSkpIHsKICAgICRsb2dfc2l6ZSA9IGZpbGVzaXplKCRsb2dfZmlsZSk7CiAgICBlY2hvICcgKCcgLiBudW1iZXJfZm9ybWF0KCRsb2dfc2l6ZSkgLiAnIGJ5dGVzKSc7Cn0KZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+SW5mb3JtYXRpb246PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJzxlbT4nIC4gJHRoaXMtPkxhbmcoJ3JlcG9ydHNfdmlld19sb2dzJykgLiAnPC9lbT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFkbWluIFNldHRpbmdzIEZ1bmN0aW9uIGZvciBNQVMgU2VjdXJpdHkKICovCgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY21zbXMnKSkgZXhpdDsKCi8vIFByb2Nlc3MgZm9ybSBzdWJtaXNzaW9uCmlmIChpc3NldCgkcGFyYW1zWydzYXZlc2V0dGluZ3MnXSkpIHsKICAgICRzZWN1cml0eV9lbWFpbCA9IGlzc2V0KCRwYXJhbXNbJ3NlY3VyaXR5X2VtYWlsJ10pID8gdHJpbSgkcGFyYW1zWydzZWN1cml0eV9lbWFpbCddKSA6ICcnOwogICAgCiAgICAvLyBJZiBlbXB0eSwgdHJ5IHRvIGdldCBhZG1pbiBlbWFpbAogICAgaWYgKGVtcHR5KCRzZWN1cml0eV9lbWFpbCkpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICAgICAkYWRtaW5fdXNlciA9ICRkYi0+R2V0Um93KCdTRUxFQ1QgZW1haWwgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICd1c2VycyBXSEVSRSB1c2VyX2lkID0gMScpOwogICAgICAgICAgICBpZiAoJGFkbWluX3VzZXIgJiYgaXNzZXQoJGFkbWluX3VzZXJbJ2VtYWlsJ10pKSB7CiAgICAgICAgICAgICAgICAkc2VjdXJpdHlfZW1haWwgPSAkYWRtaW5fdXNlclsnZW1haWwnXTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAvLyBGYWxsYmFjayBpZiBxdWVyeSBmYWlscwogICAgICAgIH0KICAgIH0KICAgIAogICAgaWYgKCFlbXB0eSgkc2VjdXJpdHlfZW1haWwpICYmIGZpbHRlcl92YXIoJHNlY3VyaXR5X2VtYWlsLCBGSUxURVJfVkFMSURBVEVfRU1BSUwpKSB7CiAgICAgICAgLy8gVXBkYXRlIGNvbmZpZy5waHAgaWYgbmVlZGVkLCBvciBzdG9yZSBpbiBwcmVmZXJlbmNlcwogICAgICAgICRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKICAgICAgICBpZiAoIWlzc2V0KCRjb25maWdbJ3NlY3VyaXR5X2VtYWlsJ10pKSB7CiAgICAgICAgICAgIC8vIE5vdGU6IEZvciBub3csIHdlJ2xsIHVzZSBwcmVmZXJlbmNlcy4gQ29uZmlnLnBocCB1cGRhdGVzIHNob3VsZCBiZSBkb25lIG1hbnVhbGx5LgogICAgICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2VjdXJpdHlfZW1haWwnLCAkc2VjdXJpdHlfZW1haWwpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJHJhdGVfbGltaXQgPSBpc3NldCgkcGFyYW1zWydyYXRlX2xpbWl0X3JlcXVlc3RzJ10pID8gKGludCkkcGFyYW1zWydyYXRlX2xpbWl0X3JlcXVlc3RzJ10gOiAzOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JhdGVfbGltaXRfcmVxdWVzdHMnLCBtYXgoMSwgbWluKDEwLCAkcmF0ZV9saW1pdCkpKTsKICAgIAogICAgJHJhdGVfd2luZG93ID0gaXNzZXQoJHBhcmFtc1sncmF0ZV9saW1pdF93aW5kb3cnXSkgPyAoaW50KSRwYXJhbXNbJ3JhdGVfbGltaXRfd2luZG93J10gOiAzNjAwOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JhdGVfbGltaXRfd2luZG93JywgbWF4KDYwLCBtaW4oODY0MDAsICRyYXRlX3dpbmRvdykpKTsKICAgIAogICAgcmVkaXJlY3QoJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAnJywgYXJyYXkoJ2FjdGl2ZXRhYicgPT4gJ3NldHRpbmdzJywgJ21zZycgPT4gJ3NldHRpbmdzX3NhdmVkJykpKTsKfQoKLy8gR2V0IGN1cnJlbnQgc2V0dGluZ3Mgd2l0aCBkeW5hbWljIGZhbGxiYWNrCiRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKJHNlY3VyaXR5X2VtYWlsID0gaXNzZXQoJGNvbmZpZ1snc2VjdXJpdHlfZW1haWwnXSkgPyAkY29uZmlnWydzZWN1cml0eV9lbWFpbCddIDogJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlY3VyaXR5X2VtYWlsJywgJycpOwoKLy8gSWYgZW1wdHksIHRyeSB0byBnZXQgYWRtaW4gZW1haWwKaWYgKGVtcHR5KCRzZWN1cml0eV9lbWFpbCkpIHsKICAgIHRyeSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkYWRtaW5fdXNlciA9ICRkYi0+R2V0Um93KCdTRUxFQ1QgZW1haWwgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICd1c2VycyBXSEVSRSB1c2VyX2lkID0gMScpOwogICAgICAgIGlmICgkYWRtaW5fdXNlciAmJiBpc3NldCgkYWRtaW5fdXNlclsnZW1haWwnXSkpIHsKICAgICAgICAgICAgJHNlY3VyaXR5X2VtYWlsID0gJGFkbWluX3VzZXJbJ2VtYWlsJ107CiAgICAgICAgfQogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgLy8gRmFsbGJhY2sgaWYgcXVlcnkgZmFpbHMKICAgIH0KfQoKLy8gRmluYWwgZmFsbGJhY2s6IGNvbnN0cnVjdCBmcm9tIGRvbWFpbgppZiAoZW1wdHkoJHNlY3VyaXR5X2VtYWlsKSkgewogICAgJHJvb3RfdXJsID0gaXNzZXQoJGNvbmZpZ1sncm9vdF91cmwnXSkgPyAkY29uZmlnWydyb290X3VybCddIDogKGlzc2V0KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSA9PT0gJ29uJyA/ICdodHRwcycgOiAnaHR0cCcpIC4gJzovLycgLiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICdsb2NhbGhvc3QnKTsKICAgICRwYXJzZWRfdXJsID0gcGFyc2VfdXJsKCRyb290X3VybCk7CiAgICAkYmFzZV9kb21haW4gPSBpc3NldCgkcGFyc2VkX3VybFsnaG9zdCddKSA/ICRwYXJzZWRfdXJsWydob3N0J10gOiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICd5b3VyLXNpdGUuY29tJyk7CiAgICAkc2VjdXJpdHlfZW1haWwgPSAnc2VjdXJpdHlAJyAuICRiYXNlX2RvbWFpbjsKfQokcmF0ZV9saW1pdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyYXRlX2xpbWl0X3JlcXVlc3RzJywgMyk7CiRyYXRlX3dpbmRvdyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyYXRlX2xpbWl0X3dpbmRvdycsIDM2MDApOwoKZWNobyAnPGgyPicgLiAkdGhpcy0+TGFuZygnc2V0dGluZ3NfdGl0bGUnKSAuICc8L2gyPic7CgplY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRtaW5zYXZlc2V0dGluZ3MnLCAkcmV0dXJuaWQpOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdhY3RpdmV0YWInLCAnc2V0dGluZ3MnKTsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ3NlY3VyaXR5X2VtYWlsJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnc2VjdXJpdHlfZW1haWwnLCAkc2VjdXJpdHlfZW1haWwsIDUwLCAyNTUpOwplY2hvICc8YnI+PGVtPicgLiAkdGhpcy0+TGFuZygnc2VjdXJpdHlfZW1haWxfaGVscCcpIC4gJzwvZW0+JzsKZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdyYXRlX2xpbWl0X3JlcXVlc3RzJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAncmF0ZV9saW1pdF9yZXF1ZXN0cycsICRyYXRlX2xpbWl0LCAzLCAyKTsKZWNobyAnPGJyPjxlbT4nIC4gJHRoaXMtPkxhbmcoJ3JhdGVfbGltaXRfcmVxdWVzdHNfaGVscCcpIC4gJzwvZW0+JzsKZWNobyAnPC9wPic7CmVjaG8gJzwvZGl2Pic7CgplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdyYXRlX2xpbWl0X3dpbmRvdycpIC4gJzo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3JhdGVfbGltaXRfd2luZG93JywgJHJhdGVfd2luZG93LCA2LCA1KTsKZWNobyAnPGJyPjxlbT4nIC4gJHRoaXMtPkxhbmcoJ3JhdGVfbGltaXRfd2luZG93X2hlbHAnKSAuICc8L2VtPic7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzYXZlc2V0dGluZ3MnLCAkdGhpcy0+TGFuZygnc3VibWl0JykpOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/function.donations.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERvbmF0aW9ucyBGdW5jdGlvbiBmb3IgTUFTIFNlY3VyaXR5CiAqLwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIGV4aXQ7CgppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgewogICAgcmV0dXJuOwp9CgovLyBHZXQgU21hcnR5IGluc3RhbmNlCiRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKCi8vIEFzc2lnbiBsYW5ndWFnZSBzdHJpbmdzIHRvIHRlbXBsYXRlCiRzbWFydHktPmFzc2lnbignc3BvbnNvcnN0ZXh0JywgJHRoaXMtPkxhbmcoJ3Nwb25zb3JzdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdkb25hdGlvbnN0ZXh0JywgJHRoaXMtPkxhbmcoJ2RvbmF0aW9uc3RleHQnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdoaWRlc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2hpZGVkb25hdGlvbnNzdWJtaXQnLCAkdGhpcy0+TGFuZygnaGlkZWRvbmF0aW9uc3N1Ym1pdCcpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKLy8gQXNzaWduIHRvIFNtYXJ0eQokc21hcnR5LT5hc3NpZ24oJ21vZHVsZScsICR0aGlzKTsKJHNtYXJ0eS0+YXNzaWduKCdpZCcsICRpZCk7CiRzbWFydHktPmFzc2lnbigncGFyYW1zJywgJHBhcmFtcyk7CiRzbWFydHktPmFzc2lnbigncmV0dXJuaWQnLCAkcmV0dXJuaWQpOwoKLy8gRGlzcGxheSB0ZW1wbGF0ZQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2RvbmF0aW9ucy50cGwnKTsKPz4KCg==]]></data>
	</file>
	<file>
	  <filename>/INSTALLATION.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBNQVMgU2VjdXJpdHkgTW9kdWxlIC0gSW5zdGFsbGF0aW9uIGFuZCBVc2FnZSBHdWlkZQoKIyMgSW1wb3J0YW50OiBEbyBOT1QgQ29weSBQSFAgQ29kZSBEaXJlY3RseSBpbnRvIENNU01TIENvbnRlbnQKCioqQ1JJVElDQUwqKjogVGhlIG9sZCBzdGFuZGFsb25lIGAucGhwYCBmaWxlcyAoYHZ1bG5lcmFiaWxpdHktZGlzY2xvc3VyZS5waHBgIGFuZCBgc2VjdXJpdHktYWNrbm93bGVkZ21lbnRzLnBocGApIHNob3VsZCBOT1QgYmUgdXNlZCBhbnltb3JlLiBEbyBOT1QgY29weSB0aGVpciBjb250ZW50IGludG8gQ01TTVMgY29udGVudCBwYWdlcy4KCiMjIEluc3RhbGxhdGlvbgoKMS4gVGhlIE1BUyBTZWN1cml0eSBtb2R1bGUgZmlsZXMgYXJlIGxvY2F0ZWQgaW4gYC9tb2R1bGVzL01BU19TZWN1cml0eS9gCjIuIEluc3RhbGwgdGhlIG1vZHVsZTogKipFeHRlbnNpb25zIOKGkiBNb2R1bGUgTWFuYWdlciDihpIgTUFTIFNlY3VyaXR5IOKGkiBJbnN0YWxsKioKMy4gQWZ0ZXIgaW5zdGFsbGF0aW9uLCB0aGUgbW9kdWxlIGlzIHJlYWR5IHRvIHVzZQo0LiBBY2Nlc3MgdGhlIGFkbWluIGludGVyZmFjZTogKipFeHRlbnNpb25zIOKGkiBNQVMgU2VjdXJpdHkqKgoKIyMgU2V0dGluZyBVcCBDb250ZW50IFBhZ2VzIGluIENNU01TCgojIyMgU3RlcCAxOiBDcmVhdGUgVnVsbmVyYWJpbGl0eSBEaXNjbG9zdXJlIFBvbGljeSBQYWdlCgoxLiBHbyB0byAqKkNvbnRlbnQg4oaSIFBhZ2VzIOKGkiBBZGQgTmV3IENvbnRlbnQqKgoyLiBTZXQgKipQYWdlIEFsaWFzKio6IGB2dWxuZXJhYmlsaXR5LWRpc2Nsb3N1cmVgCjMuIFNldCAqKlBhZ2UgVGl0bGUqKjogIlZ1bG5lcmFiaWxpdHkgRGlzY2xvc3VyZSBQb2xpY3kiCjQuIEluIHRoZSAqKkNvbnRlbnQqKiBmaWVsZCwgYWRkICoqT05MWSoqIHRoaXMgbGluZToKICAgYGBgCiAgIHtjbXNfbW9kdWxlIG1vZHVsZT0nTUFTX1NlY3VyaXR5JyBhY3Rpb249J3ZkcCd9CiAgIGBgYAo1LiAqKkRPIE5PVCoqIGFkZCBhbnkgb3RoZXIgY29udGVudCwgSFRNTCwgb3IgUEhQIGNvZGUKNi4gU2F2ZSBhbmQgcHVibGlzaCB0aGUgcGFnZQoKIyMjIFN0ZXAgMjogQ3JlYXRlIFNlY3VyaXR5IEFja25vd2xlZGdtZW50cyBQYWdlCgoxLiBHbyB0byAqKkNvbnRlbnQg4oaSIFBhZ2VzIOKGkiBBZGQgTmV3IENvbnRlbnQqKgoyLiBTZXQgKipQYWdlIEFsaWFzKio6IGBzZWN1cml0eS1hY2tub3dsZWRnbWVudHNgCjMuIFNldCAqKlBhZ2UgVGl0bGUqKjogIlNlY3VyaXR5IEFja25vd2xlZGdtZW50cyIKNC4gSW4gdGhlICoqQ29udGVudCoqIGZpZWxkLCBhZGQgKipPTkxZKiogdGhpcyBsaW5lOgogICBgYGAKICAge2Ntc19tb2R1bGUgbW9kdWxlPSdNQVNfU2VjdXJpdHknIGFjdGlvbj0nYWNrbm93bGVkZ21lbnRzJ30KICAgYGBgCjUuICoqRE8gTk9UKiogYWRkIGFueSBvdGhlciBjb250ZW50LCBIVE1MLCBvciBQSFAgY29kZQo2LiBTYXZlIGFuZCBwdWJsaXNoIHRoZSBwYWdlCgojIyBIb3cgSXQgV29ya3MKCi0gV2hlbiBDTVNNUyBwcm9jZXNzZXMgYHtjbXNfbW9kdWxlIG1vZHVsZT0nTUFTX1NlY3VyaXR5JyBhY3Rpb249J3ZkcCd9YCwgaXQ6CiAgMS4gTG9hZHMgdGhlIFNlY3VyaXR5IG1vZHVsZQogIDIuIENhbGxzIHRoZSBgdmRwYCBhY3Rpb24KICAzLiBUaGUgYGFjdGlvbi52ZHAucGhwYCBmaWxlIHByb2Nlc3NlcyB0aGUgZm9ybSBhbmQgbG9hZHMgdGhlIHRlbXBsYXRlCiAgNC4gVGhlIFNtYXJ0eSB0ZW1wbGF0ZSAoYHRlbXBsYXRlcy92ZHAudHBsYCkgZGlzcGxheXMgdGhlIHBhZ2UKCi0gQWxsIGZvcm0gcHJvY2Vzc2luZywgQ1NSRiBwcm90ZWN0aW9uLCByYXRlIGxpbWl0aW5nLCBhbmQgZW1haWwgc2VuZGluZyBpcyBoYW5kbGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIG1vZHVsZQoKIyMgQWRtaW4gSW50ZXJmYWNlCgpUaGUgbW9kdWxlIGluY2x1ZGVzIGEgZnVsbCBhZG1pbiBpbnRlcmZhY2UgYWNjZXNzaWJsZSB2aWEgKipFeHRlbnNpb25zIOKGkiBNQVMgU2VjdXJpdHkqKjoKCi0gKipTZXR0aW5ncyBUYWIqKjogQ29uZmlndXJlIHNlY3VyaXR5IGVtYWlsLCByYXRlIGxpbWl0aW5nIHNldHRpbmdzCi0gKipBY2tub3dsZWRnbWVudHMgVGFiKio6IFZpZXcgYW5kIG1hbmFnZSBzZWN1cml0eSBhY2tub3dsZWRnbWVudHMKLSAqKlJlcG9ydHMgVGFiKio6IFZpZXcgdnVsbmVyYWJpbGl0eSByZXBvcnQgc3RhdGlzdGljcwotICoqTG9ncyBUYWIqKjogVmlldyBhbmQgbWFuYWdlIHNlY3VyaXR5IGV2ZW50IGxvZ3MKCiMjIFRyb3VibGVzaG9vdGluZwoKIyMjIElmIHlvdSBzZWUgUEhQIGNvZGUgaW4gZm9ybSBmaWVsZHM6CgoqKlByb2JsZW0qKjogWW91IGNvcGllZCB0aGUgb2xkIHN0YW5kYWxvbmUgUEhQIGZpbGUgY29udGVudCBpbnRvIENNU01TLgoKKipTb2x1dGlvbioqOiAKMS4gRWRpdCB0aGUgY29udGVudCBwYWdlCjIuIERlbGV0ZSBhbGwgY29udGVudAozLiBBZGQgb25seTogYHtjbXNfbW9kdWxlIG1vZHVsZT0nTUFTX1NlY3VyaXR5JyBhY3Rpb249J3ZkcCd9YCBvciBge2Ntc19tb2R1bGUgbW9kdWxlPSdNQVNfU2VjdXJpdHknIGFjdGlvbj0nYWNrbm93bGVkZ21lbnRzJ31gCjQuIFNhdmUKCiMjIyBJZiB0aGUgbW9kdWxlIGRvZXNuJ3QgbG9hZDoKCjEuIENoZWNrIHRoYXQgdGhlIG1vZHVsZSBpcyBpbnN0YWxsZWQ6ICoqRXh0ZW5zaW9ucyDihpIgTW9kdWxlIE1hbmFnZXIg4oaSIE1BUyBTZWN1cml0eSoqCjIuIFZlcmlmeSB0aGUgbW9kdWxlIGZpbGVzIGV4aXN0IGluIGAvbW9kdWxlcy9NQVNfU2VjdXJpdHkvYAozLiBDaGVjayBmaWxlIHBlcm1pc3Npb25zIChzaG91bGQgYmUgNjQ0IGZvciBQSFAgZmlsZXMsIG93bmVkIGJ5IG5ld3N0MzkyMjpuZXdzdDM5MjIpCgojIyMgSWYgZm9ybXMgZG9uJ3Qgc3VibWl0OgoKMS4gRW5zdXJlIHRoZSBwYWdlIGFsaWFzIG1hdGNoZXMgZXhhY3RseTogYHZ1bG5lcmFiaWxpdHktZGlzY2xvc3VyZWAgb3IgYHNlY3VyaXR5LWFja25vd2xlZGdtZW50c2AKMi4gQ2hlY2sgdGhhdCB0aGUgbW9kdWxlJ3MgYWN0aW9uIGZpbGVzIGV4aXN0OiBgYWN0aW9uLnZkcC5waHBgIGFuZCBgYWN0aW9uLmFja25vd2xlZGdtZW50cy5waHBgCjMuIFZlcmlmeSB0ZW1wbGF0ZSBmaWxlcyBleGlzdDogYHRlbXBsYXRlcy92ZHAudHBsYCBhbmQgYHRlbXBsYXRlcy9hY2tub3dsZWRnbWVudHMudHBsYAoKIyMgVGVzdGluZwoKMS4gVmlzaXQgYC92dWxuZXJhYmlsaXR5LWRpc2Nsb3N1cmVgIC0gc2hvdWxkIHNob3cgdGhlIFZEUCBwYWdlIHdpdGggZm9ybQoyLiBWaXNpdCBgL3NlY3VyaXR5LWFja25vd2xlZGdtZW50c2AgLSBzaG91bGQgc2hvdyBhY2tub3dsZWRnbWVudHMgcGFnZQozLiBUcnkgc3VibWl0dGluZyB0aGUgZm9ybSAtIHNob3VsZCBwcm9jZXNzIGFuZCBzZW5kIGVtYWlscwo0LiBDaGVjayB0aGF0IENTUkYgcHJvdGVjdGlvbiB3b3JrcyAodHJ5IHN1Ym1pdHRpbmcgd2l0aG91dCB0b2tlbikKNS4gVGVzdCByYXRlIGxpbWl0aW5nIChzdWJtaXQgNCB0aW1lcyBxdWlja2x5IC0gNHRoIHNob3VsZCBiZSBibG9ja2VkKQoKIyMgRmlsZXMgU3RydWN0dXJlCgpgYGAKbW9kdWxlcy9NQVNfU2VjdXJpdHkvCuKUnOKUgOKUgCBNQVNfU2VjdXJpdHkubW9kdWxlLnBocCAgICAgICAgICAjIE1haW4gbW9kdWxlIGZpbGUK4pSc4pSA4pSAIGFjdGlvbi5kZWZhdWx0LnBocCAgICAgICAgICAgICAgICMgRGVmYXVsdCBhY3Rpb24gKHJlZGlyZWN0cyB0byB2ZHApCuKUnOKUgOKUgCBhY3Rpb24udmRwLnBocCAgICAgICAgICAgICAgICAgICAjIFZEUCBhY3Rpb24gaGFuZGxlcgrilJzilIDilIAgYWN0aW9uLmFja25vd2xlZGdtZW50cy5waHAgICAgICAgIyBBY2tub3dsZWRnbWVudHMgYWN0aW9uIGhhbmRsZXIK4pSc4pSA4pSAIHNlY3VyaXR5LWZ1bmN0aW9ucy5waHAgICAgICAgICAgICMgU2VjdXJpdHkgdXRpbGl0aWVzIChDU1JGLCB2YWxpZGF0aW9uLCByYXRlIGxpbWl0aW5nKQrilJzilIDilIAgdnVsbmVyYWJpbGl0eS1yZXBvcnQtaGFuZGxlci5waHAgIyBGb3JtIHByb2Nlc3NpbmcgbG9naWMK4pSc4pSA4pSAIGFja25vd2xlZGdtZW50cy1kYXRhLnBocCAgICAgICAgICMgQWNrbm93bGVkZ21lbnRzIGRhdGEgKGVkaXQgdG8gYWRkIGVudHJpZXMpCuKUnOKUgOKUgCB0ZW1wbGF0ZXMvCuKUgiAgIOKUnOKUgOKUgCB2ZHAudHBsICAgICAgICAgICAgICAgICAgICAgICMgVkRQIHBhZ2UgdGVtcGxhdGUgKFNtYXJ0eSkK4pSCICAg4pSU4pSA4pSAIGFja25vd2xlZGdtZW50cy50cGwgICAgICAgICAgIyBBY2tub3dsZWRnbWVudHMgdGVtcGxhdGUgKFNtYXJ0eSkK4pSc4pSA4pSAIFJFQURNRS5tZCAgICAgICAgICAgICAgICAgICAgICAgICMgTW9kdWxlIGRvY3VtZW50YXRpb24K4pSU4pSA4pSAIElOU1RBTExBVElPTi5tZCAgICAgICAgICAgICAgICAgICMgVGhpcyBmaWxlCmBgYAoKIyMgU2VjdXJpdHkgRmVhdHVyZXMKCi0g4pyFIENTUkYgdG9rZW4gcHJvdGVjdGlvbgotIOKchSBSYXRlIGxpbWl0aW5nICgzIHN1Ym1pc3Npb25zL2hvdXIgcGVyIElQKQotIOKchSBJbnB1dCB2YWxpZGF0aW9uIGFuZCBzYW5pdGl6YXRpb24KLSDinIUgSG9uZXlwb3QgZmllbGQgZm9yIGJvdCBwcm90ZWN0aW9uCi0g4pyFIFNlY3VyZSBlbWFpbCBzZW5kaW5nCi0g4pyFIFNlY3VyaXR5IGV2ZW50IGxvZ2dpbmcKCiMjIFN1cHBvcnQKCklmIHlvdSBlbmNvdW50ZXIgaXNzdWVzOgoxLiBDaGVjayB0aGlzIGd1aWRlCjIuIFZlcmlmeSBtb2R1bGUgaXMgaW5zdGFsbGVkIGNvcnJlY3RseQozLiBDaGVjayBDTVNNUyBlcnJvciBsb2dzOiBgdG1wL2NhY2hlL2xvZ3dhdGNoLmNtc2AKNC4gVmVyaWZ5IGZpbGUgcGVybWlzc2lvbnMgYW5kIG93bmVyc2hpcAoK]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEVuZ2xpc2ggTGFuZ3VhZ2UgRmlsZSBmb3IgTUFTIFNlY3VyaXR5IE1vZHVsZQogKi8KCi8vIE1vZHVsZSBpbmZvCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdNQVMgU2VjdXJpdHknOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdDb21wbGV0ZSBWdWxuZXJhYmlsaXR5IERpc2Nsb3N1cmUgUG9saWN5IChWRFApIGFuZCBTZWN1cml0eSBBY2tub3dsZWRnbWVudHMgc3lzdGVtIGZvciBDTVNNUy4gUHJvdmlkZXMgc2VjdXJlIGZvcm1zIGZvciByZXNwb25zaWJsZSB2dWxuZXJhYmlsaXR5IHJlcG9ydGluZywgQ1NSRiBwcm90ZWN0aW9uLCByYXRlIGxpbWl0aW5nLCBlbWFpbCBub3RpZmljYXRpb25zLCBjb21wcmVoZW5zaXZlIHNlY3VyaXR5IGV2ZW50IGxvZ2dpbmcsIGFuZCBlYXN5IGFja25vd2xlZGdtZW50IG1hbmFnZW1lbnQgd2l0aCBjb21wYW55L3dlYnNpdGUgc3VwcG9ydC4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNQVMgU2VjdXJpdHkgaGFzIGJlZW4gaW5zdGFsbGVkIHN1Y2Nlc3NmdWxseSEgVGhlIG1vZHVsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHlvdXIgZG9tYWluIGFuZCBhZG1pbiBlbWFpbC4gQ3JlYXRlIGNvbnRlbnQgcGFnZXMgdXNpbmcge2Ntc19tb2R1bGUgbW9kdWxlPVwnTUFTX1NlY3VyaXR5XCcgYWN0aW9uPVwndmRwXCd9IGZvciBWRFAgcGFnZSBhbmQge2Ntc19tb2R1bGUgbW9kdWxlPVwnTUFTX1NlY3VyaXR5XCcgYWN0aW9uPVwnYWNrbm93bGVkZ21lbnRzXCd9IGZvciBhY2tub3dsZWRnbWVudHMgcGFnZS4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01BUyBTZWN1cml0eSBoYXMgYmVlbiB1bmluc3RhbGxlZC4nOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgTUFTIFNlY3VyaXR5PyBBbGwgdnVsbmVyYWJpbGl0eSByZXBvcnRzIGFuZCBhY2tub3dsZWRnbWVudHMgZGF0YSB3aWxsIGJlIHByZXNlcnZlZCBpbiB0aGUgbW9kdWxlIGZpbGVzLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQgc3VjY2Vzc2Z1bGx5Lic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSB1bmluc3RhbGxlZC4nOwoKLy8gUGVybWlzc2lvbnMKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBkZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7CiRsYW5nWydwZXJtaXNzaW9uX3VzZSddID0gJ1VzZSBNQVMgU2VjdXJpdHknOwoKLy8gVGFicwokbGFuZ1sndGFiX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1sndGFiX2Fja25vd2xlZGdtZW50cyddID0gJ0Fja25vd2xlZGdtZW50cyc7CiRsYW5nWyd0YWJfcmVwb3J0cyddID0gJ1Z1bG5lcmFiaWxpdHkgUmVwb3J0cyc7CiRsYW5nWyd0YWJfbG9ncyddID0gJ1NlY3VyaXR5IExvZ3MnOwoKLy8gU2V0dGluZ3MKJGxhbmdbJ3NldHRpbmdzX3RpdGxlJ10gPSAnTUFTIFNlY3VyaXR5IFNldHRpbmdzJzsKJGxhbmdbJ3NldHRpbmdzX3NhdmVkJ10gPSAnU2V0dGluZ3Mgc2F2ZWQgc3VjY2Vzc2Z1bGx5Lic7CiRsYW5nWydzZWN1cml0eV9lbWFpbCddID0gJ1NlY3VyaXR5IEVtYWlsJzsKJGxhbmdbJ3NlY3VyaXR5X2VtYWlsX2hlbHAnXSA9ICdFbWFpbCBhZGRyZXNzIHdoZXJlIHZ1bG5lcmFiaWxpdHkgcmVwb3J0cyB3aWxsIGJlIHNlbnQuJzsKJGxhbmdbJ2RlZmF1bHRfc2VjdXJpdHlfZW1haWwnXSA9ICdzZWN1cml0eUB5b3VyLXNpdGUuY29tJzsKJGxhbmdbJ3JhdGVfbGltaXRfcmVxdWVzdHMnXSA9ICdSYXRlIExpbWl0IFJlcXVlc3RzJzsKJGxhbmdbJ3JhdGVfbGltaXRfcmVxdWVzdHNfaGVscCddID0gJ01heGltdW0gbnVtYmVyIG9mIHZ1bG5lcmFiaWxpdHkgcmVwb3J0IHN1Ym1pc3Npb25zIGFsbG93ZWQgcGVyIGhvdXIgcGVyIElQIGFkZHJlc3MuJzsKJGxhbmdbJ3JhdGVfbGltaXRfd2luZG93J10gPSAnUmF0ZSBMaW1pdCBXaW5kb3cgKHNlY29uZHMpJzsKJGxhbmdbJ3JhdGVfbGltaXRfd2luZG93X2hlbHAnXSA9ICdUaW1lIHdpbmRvdyBpbiBzZWNvbmRzIGZvciByYXRlIGxpbWl0aW5nIChkZWZhdWx0OiAzNjAwID0gMSBob3VyKS4nOwoKLy8gQWNrbm93bGVkZ21lbnRzCiRsYW5nWydhY2tub3dsZWRnbWVudHNfdGl0bGUnXSA9ICdTZWN1cml0eSBBY2tub3dsZWRnbWVudHMnOwokbGFuZ1snYWNrbm93bGVkZ21lbnRzX2luZm8nXSA9ICdJbmZvcm1hdGlvbic7CiRsYW5nWydhY2tub3dsZWRnbWVudF9zYXZlZCddID0gJ0Fja25vd2xlZGdtZW50IHNhdmVkIHN1Y2Nlc3NmdWxseS4nOwokbGFuZ1snYWNrbm93bGVkZ21lbnRfcmVtb3ZlZCddID0gJ0Fja25vd2xlZGdtZW50IHJlbW92ZWQgc3VjY2Vzc2Z1bGx5Lic7CiRsYW5nWydhY2tub3dsZWRnbWVudHNfbWFuYWdlJ10gPSAnTWFuYWdlIEFja25vd2xlZGdtZW50cyc7CiRsYW5nWydhY2tub3dsZWRnbWVudHNfZWRpdF9maWxlJ10gPSAnRWRpdCBBY2tub3dsZWRnbWVudHMgRGF0YSBGaWxlJzsKJGxhbmdbJ2Fja25vd2xlZGdtZW50c19maWxlX2xvY2F0aW9uJ10gPSAnRmlsZSBMb2NhdGlvbic7CiRsYW5nWydhY2tub3dsZWRnbWVudHNfZmlsZV9oZWxwJ10gPSAnRWRpdCB0aGUgYWNrbm93bGVkZ21lbnRzLWRhdGEucGhwIGZpbGUgdG8gYWRkIG5ldyBhY2tub3dsZWRnbWVudHMuIFRoZSBmaWxlIGlzIGxvY2F0ZWQgaW4gdGhlIG1vZHVsZSBkaXJlY3RvcnkuJzsKJGxhbmdbJ2Fja25vd2xlZGdtZW50c19lZGl0X2J1dHRvbiddID0gJ0VkaXQgQWNrbm93bGVkZ21lbnRzJzsKJGxhbmdbJ2Fja25vd2xlZGdtZW50c19maWxlX2NvbnRlbnQnXSA9ICdGaWxlIENvbnRlbnQnOwokbGFuZ1snYWNrbm93bGVkZ21lbnRzX2VkaXRfaGVscCddID0gJ0VkaXQgdGhlIFBIUCBjb2RlIGJlbG93IHRvIGFkZCBvciBtb2RpZnkgYWNrbm93bGVkZ21lbnRzLiBUaGUgZmlsZSB3aWxsIGJlIHZhbGlkYXRlZCBmb3IgUEhQIHN5bnRheCBiZWZvcmUgc2F2aW5nLic7CiRsYW5nWydhY2tub3dsZWRnbWVudHNfc2F2ZWQnXSA9ICdBY2tub3dsZWRnbWVudHMgZmlsZSBzYXZlZCBzdWNjZXNzZnVsbHkuJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CgovLyBSZXBvcnRzCiRsYW5nWydyZXBvcnRzX3RpdGxlJ10gPSAnVnVsbmVyYWJpbGl0eSBSZXBvcnRzJzsKJGxhbmdbJ3JlcG9ydHNfbm9uZSddID0gJ05vIHZ1bG5lcmFiaWxpdHkgcmVwb3J0cyBoYXZlIGJlZW4gcmVjZWl2ZWQgeWV0Lic7CiRsYW5nWydyZXBvcnRzX3ZpZXdfbG9ncyddID0gJ1ZpZXcgc2VjdXJpdHkgbG9ncyBmb3IgZGV0YWlsZWQgcmVwb3J0IGluZm9ybWF0aW9uLic7CiRsYW5nWydyZXBvcnRzX3Jlc29sdmVkJ10gPSAnUmVzb2x2ZWQnOwokbGFuZ1sncmVwb3J0c191bnJlc29sdmVkJ10gPSAnVW5yZXNvbHZlZCc7CiRsYW5nWydyZXBvcnRzX3N0YXR1cyddID0gJ1N0YXR1cyc7CiRsYW5nWydyZXBvcnRzX21hcmtfcmVzb2x2ZWQnXSA9ICdNYXJrIGFzIFJlc29sdmVkJzsKJGxhbmdbJ3JlcG9ydHNfbWFya191bnJlc29sdmVkJ10gPSAnTWFyayBhcyBVbnJlc29sdmVkJzsKJGxhbmdbJ3JlcG9ydHNfcmVzb2x2ZWRfZGF0ZSddID0gJ1Jlc29sdmVkIERhdGUnOwokbGFuZ1sncmVwb3J0c19yZXNvbHZlZF9ieSddID0gJ1Jlc29sdmVkIEJ5JzsKJGxhbmdbJ3JlcG9ydHNfcmVzb2x1dGlvbl9zYXZlZCddID0gJ1JlcG9ydCBzdGF0dXMgdXBkYXRlZCBzdWNjZXNzZnVsbHkuJzsKJGxhbmdbJ3JlcG9ydHNfYWxsJ10gPSAnQWxsIFJlcG9ydHMnOwokbGFuZ1sncmVwb3J0c19maWx0ZXJfcmVzb2x2ZWQnXSA9ICdTaG93IE9ubHkgUmVzb2x2ZWQnOwokbGFuZ1sncmVwb3J0c19maWx0ZXJfdW5yZXNvbHZlZCddID0gJ1Nob3cgT25seSBVbnJlc29sdmVkJzsKCi8vIExvZ3MKJGxhbmdbJ2xvZ3NfdGl0bGUnXSA9ICdTZWN1cml0eSBMb2dzJzsKJGxhbmdbJ2xvZ3NfZmlsZV9sb2NhdGlvbiddID0gJ0xvZyBmaWxlIGxvY2F0aW9uJzsKJGxhbmdbJ2xvZ3NfY2xlYXInXSA9ICdDbGVhciBMb2dzJzsKJGxhbmdbJ2xvZ3NfY2xlYXJlZCddID0gJ0xvZ3MgY2xlYXJlZCBzdWNjZXNzZnVsbHkuJzsKCi8vIEZvcm0gYnV0dG9ucwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ3NhdmUnXSA9ICdTYXZlJzsKCi8vIERvbmF0aW9ucwokbGFuZ1sndGFiX2RvbmF0aW9ucyddID0gJ0RvbmF0aW9ucyc7CiRsYW5nWydzaG93ZG9uYXRpb25zdGFiJ10gPSAnU2hvdyBkb25hdGlvbnMgdGFiJzsKJGxhbmdbJ3Nob3dkb25hdGlvbnN0YWJfaGVscCddID0gJ0NoZWNrIHRoaXMgYm94IHRvIHNob3cgdGhlIGRvbmF0aW9ucyB0YWIgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nOwokbGFuZ1snZG9uYXRpb25zdGFiJ10gPSAnRG9uYXRpb25zJzsKJGxhbmdbJ3Nwb25zb3JzdGV4dCddID0gJ0N1cnJlbnQgc3BvbnNvcnMsIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISc7CiRsYW5nWydkb25hdGlvbnN0ZXh0J10gPSAnQSBsb3Qgb2YgdGltZSBhbmQgZWZmb3J0IGhhcyBiZWVuIHB1dCBpbnRvIGNyZWF0aW5nIHRoaXMgc2VjdXJpdHkgbW9kdWxlLiBJZiB5b3UgZmluZCBpdCB2YWx1YWJsZSwgcGxlYXNlIGNvbnNpZGVyIHN1cHBvcnRpbmcgaXRzIGRldmVsb3BtZW50IHdpdGggYSBkb25hdGlvbiAoNeKCrCBzdWdnZXN0ZWQsIG9yIHdoYXRldmVyIHlvdSBjYW4gc3BhcmUpLiBUaGlzIGhlbHBzIG1haW50YWluIGFuZCBpbXByb3ZlIHRoZSBtb2R1bGUgd2l0aCBuZXcgc2VjdXJpdHkgZmVhdHVyZXMgYW5kIGltcHJvdmVtZW50cy4gVGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhJzsKJGxhbmdbJ2hpZGVkb25hdGlvbnNzdWJtaXQnXSA9ICdIaWRlIGRvbmF0aW9ucyB0YWInOwokbGFuZ1snZG9uYXRpb25zX3RhYl9oaWRkZW4nXSA9ICdEb25hdGlvbnMgdGFiIGhhcyBiZWVuIGhpZGRlbi4gWW91IGNhbiBzaG93IGl0IGFnYWluIGluIFNldHRpbmdzLic7CgovLyBIZWxwCiRsYW5nWydoZWxwJ10gPSAnPGRpdiBjbGFzcz0ibWFzLXNlY3VyaXR5LWhlbHAiPgo8aDM+TUFTIFNlY3VyaXR5IE1vZHVsZTwvaDM+Cgo8cD48c3Ryb25nPk1BUyBTZWN1cml0eTwvc3Ryb25nPiBpcyBhIGNvbXByZWhlbnNpdmUgVnVsbmVyYWJpbGl0eSBEaXNjbG9zdXJlIFBvbGljeSAoVkRQKSBhbmQgU2VjdXJpdHkgQWNrbm93bGVkZ21lbnRzIHN5c3RlbSBmb3IgQ01TIE1hZGUgU2ltcGxlLiBJdCBwcm92aWRlcyBzZWN1cmUgZm9ybXMgZm9yIHJlc3BvbnNpYmxlIHZ1bG5lcmFiaWxpdHkgcmVwb3J0aW5nLCBjb21wbGV0ZSB3aXRoIENTUkYgcHJvdGVjdGlvbiwgcmF0ZSBsaW1pdGluZywgZW1haWwgbm90aWZpY2F0aW9ucywgYW5kIGNvbXByZWhlbnNpdmUgc2VjdXJpdHkgZXZlbnQgbG9nZ2luZy48L3A+Cgo8aDQ+RmVhdHVyZXM8L2g0Pgo8dWw+CiAgICA8bGk+PHN0cm9uZz5WdWxuZXJhYmlsaXR5IERpc2Nsb3N1cmUgUG9saWN5Ojwvc3Ryb25nPiBQcm9mZXNzaW9uYWwgVkRQIHBhZ2Ugd2l0aCBzZWN1cmUgc3VibWlzc2lvbiBmb3JtPC9saT4KICAgIDxsaT48c3Ryb25nPlNlY3VyaXR5IEFja25vd2xlZGdtZW50czo8L3N0cm9uZz4gUHVibGljIGFja25vd2xlZGdtZW50cyBwYWdlIHRvIHJlY29nbml6ZSBzZWN1cml0eSByZXNlYXJjaGVycyB3aXRoIGNvbXBhbnkgYW5kIHdlYnNpdGUgc3VwcG9ydDwvbGk+CiAgICA8bGk+PHN0cm9uZz5SZXBvcnQgTWFuYWdlbWVudDo8L3N0cm9uZz4gQWRtaW4gaW50ZXJmYWNlIHRvIHZpZXcsIGZpbHRlciwgYW5kIG1hcmsgcmVwb3J0cyBhcyByZXNvbHZlZDwvbGk+CiAgICA8bGk+PHN0cm9uZz5BZGQgdG8gQWNrbm93bGVkZ21lbnRzOjwvc3Ryb25nPiBFYXNpbHkgYWRkIHZ1bG5lcmFiaWxpdHkgcmVwb3J0cyB0byBhY2tub3dsZWRnbWVudHMgd2l0aCBlZGl0YWJsZSBkZXRhaWxzIChuYW1lLCBjb21wYW55LCB3ZWJzaXRlKTwvbGk+CiAgICA8bGk+PHN0cm9uZz5DU1JGIFByb3RlY3Rpb246PC9zdHJvbmc+IEJ1aWx0LWluIENTUkYgdG9rZW4gdmFsaWRhdGlvbiBmb3IgYWxsIGZvcm0gc3VibWlzc2lvbnM8L2xpPgogICAgPGxpPjxzdHJvbmc+UmF0ZSBMaW1pdGluZzo8L3N0cm9uZz4gQ29uZmlndXJhYmxlIHJhdGUgbGltaXRpbmcgKGRlZmF1bHQ6IDMgc3VibWlzc2lvbnMgcGVyIGhvdXIgcGVyIElQKTwvbGk+CiAgICA8bGk+PHN0cm9uZz5JbnB1dCBWYWxpZGF0aW9uOjwvc3Ryb25nPiBDb21wcmVoZW5zaXZlIGlucHV0IHNhbml0aXphdGlvbiBhbmQgdmFsaWRhdGlvbjwvbGk+CiAgICA8bGk+PHN0cm9uZz5FbWFpbCBOb3RpZmljYXRpb25zOjwvc3Ryb25nPiBBdXRvbWF0aWMgZW1haWwgYWxlcnRzIHRvIHNlY3VyaXR5IHRlYW0gb24gcmVwb3J0IHN1Ym1pc3Npb248L2xpPgogICAgPGxpPjxzdHJvbmc+U2VjdXJpdHkgTG9nZ2luZzo8L3N0cm9uZz4gRGV0YWlsZWQgZXZlbnQgbG9nZ2luZyBmb3IgYWxsIHNlY3VyaXR5LXJlbGF0ZWQgYWN0aXZpdGllczwvbGk+CiAgICA8bGk+PHN0cm9uZz5Ib25leXBvdCBQcm90ZWN0aW9uOjwvc3Ryb25nPiBCb3QgZGV0ZWN0aW9uIHZpYSBoaWRkZW4gaG9uZXlwb3QgZmllbGRzPC9saT4KICAgIDxsaT48c3Ryb25nPkR5bmFtaWMgQ29uZmlndXJhdGlvbjo8L3N0cm9uZz4gQXV0b21hdGljYWxseSBkZXRlY3RzIGRvbWFpbiBhbmQgYWRtaW4gZW1haWw8L2xpPgogICAgPGxpPjxzdHJvbmc+QWRtaW4gUGxhY2VtZW50Ojwvc3Ryb25nPiBDb25maWd1cmUgd2hpY2ggYWRtaW4gc2VjdGlvbiB0aGUgbW9kdWxlIGFwcGVhcnMgaW4gKGRlZmF1bHQ6IFNpdGUgQWRtaW4pPC9saT4KICAgIDxsaT48c3Ryb25nPkRhdGUtQmFzZWQgU29ydGluZzo8L3N0cm9uZz4gQWNrbm93bGVkZ21lbnRzIGF1dG9tYXRpY2FsbHkgc29ydGVkIGJ5IGRhdGUgKG5ld2VzdCBmaXJzdCkgd2l0aGluIGVhY2ggeWVhcjwvbGk+CiAgICA8bGk+PHN0cm9uZz5Jbi1Ccm93c2VyIEVkaXRvcjo8L3N0cm9uZz4gRWRpdCBhY2tub3dsZWRnbWVudHMgZGlyZWN0bHkgZnJvbSBhZG1pbiBpbnRlcmZhY2Ugd2l0aCBzeW50YXggaGlnaGxpZ2h0aW5nPC9saT4KICAgIDxsaT48c3Ryb25nPlJlcG9ydCBSZXNvbHV0aW9uIFRyYWNraW5nOjwvc3Ryb25nPiBUcmFjayBhbmQgbWFyayB2dWxuZXJhYmlsaXR5IHJlcG9ydHMgYXMgcmVzb2x2ZWQvdW5yZXNvbHZlZDwvbGk+CjwvdWw+Cgo8aDQ+R2V0dGluZyBTdGFydGVkPC9oND4KPG9sPgogICAgPGxpPjxzdHJvbmc+SW5zdGFsbCB0aGUgbW9kdWxlOjwvc3Ryb25nPiBFeHRlbnNpb25zIOKGkiBNb2R1bGUgTWFuYWdlciDihpIgTUFTIFNlY3VyaXR5IOKGkiBJbnN0YWxsPC9saT4KICAgIDxsaT48c3Ryb25nPkNvbmZpZ3VyZSBzZXR0aW5nczo8L3N0cm9uZz4gR28gdG8gRXh0ZW5zaW9ucyDihpIgTUFTIFNlY3VyaXR5IOKGkiBTZXR0aW5ncyB0YWIgKG9yIFNpdGUgQWRtaW4g4oaSIE1BUyBTZWN1cml0eSDihpIgU2V0dGluZ3MsIGRlcGVuZGluZyBvbiBhZG1pbiBwbGFjZW1lbnQpCiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+Q29uZmlndXJlIGFkbWluIHBsYWNlbWVudDogU2VsZWN0IHdoaWNoIGFkbWluIHNlY3Rpb24gdGhlIG1vZHVsZSBzaG91bGQgYXBwZWFyIGluIChkZWZhdWx0OiBTaXRlIEFkbWluKTwvbGk+CiAgICAgICAgICAgIDxsaT5WZXJpZnkgc2VjdXJpdHkgZW1haWwgKGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgZnJvbSBhZG1pbiB1c2VyIG9yIGRvbWFpbik8L2xpPgogICAgICAgICAgICA8bGk+Q29uZmlndXJlIHJhdGUgbGltaXRpbmcgaWYgbmVlZGVkIChkZWZhdWx0OiAzIHJlcXVlc3RzIHBlciBob3VyKTwvbGk+CiAgICAgICAgICAgIDxsaT5FbmFibGUvZGlzYWJsZSBkb25hdGlvbnMgdGFiIGlmIGRlc2lyZWQ8L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxzdHJvbmc+Q3JlYXRlIFZEUCBwYWdlOjwvc3Ryb25nPiBDcmVhdGUgYSBjb250ZW50IHBhZ2Ugd2l0aCBhbGlhcyAidnVsbmVyYWJpbGl0eS1kaXNjbG9zdXJlIiBhbmQgYWRkOgogICAgICAgIDxwcmU+e2Ntc19tb2R1bGUgbW9kdWxlPVwnTUFTX1NlY3VyaXR5XCcgYWN0aW9uPVwndmRwXCd9PC9wcmU+CiAgICA8L2xpPgogICAgPGxpPjxzdHJvbmc+Q3JlYXRlIEFja25vd2xlZGdtZW50cyBwYWdlOjwvc3Ryb25nPiBDcmVhdGUgYSBjb250ZW50IHBhZ2Ugd2l0aCBhbGlhcyAic2VjdXJpdHktYWNrbm93bGVkZ21lbnRzIiBhbmQgYWRkOgogICAgICAgIDxwcmU+e2Ntc19tb2R1bGUgbW9kdWxlPVwnTUFTX1NlY3VyaXR5XCcgYWN0aW9uPVwnYWNrbm93bGVkZ21lbnRzXCd9PC9wcmU+CiAgICA8L2xpPgogICAgPGxpPjxzdHJvbmc+U2V0IHVwIHNlY3VyaXR5LnR4dCAob3B0aW9uYWwpOjwvc3Ryb25nPiBDcmVhdGUgb3IgdXBkYXRlIDxjb2RlPi9zZWN1cml0eS50eHQ8L2NvZGU+IHdpdGg6CiAgICAgICAgPHByZT5Db250YWN0OiBtYWlsdG86c2VjdXJpdHlAeW91ci1kb21haW4uY29tClBvbGljeTogaHR0cHM6Ly95b3VyLWRvbWFpbi5jb20vdnVsbmVyYWJpbGl0eS1kaXNjbG9zdXJlCkFja25vd2xlZGdtZW50czogaHR0cHM6Ly95b3VyLWRvbWFpbi5jb20vc2VjdXJpdHktYWNrbm93bGVkZ21lbnRzPC9wcmU+CiAgICA8L2xpPgo8L29sPgoKPGg0Pk1hbmFnaW5nIEFja25vd2xlZGdtZW50czwvaDQ+CjxwPllvdSBjYW4gYWRkIG9yIGVkaXQgc2VjdXJpdHkgYWNrbm93bGVkZ21lbnRzIGluIG11bHRpcGxlIHdheXM6PC9wPgo8b2w+CiAgICA8bGk+PHN0cm9uZz5Gcm9tIFZ1bG5lcmFiaWxpdHkgUmVwb3J0cyAoUmVjb21tZW5kZWQpOjwvc3Ryb25nPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPkdvIHRvIFZ1bG5lcmFiaWxpdHkgUmVwb3J0cyB0YWI8L2xpPgogICAgICAgICAgICA8bGk+Q2xpY2sgIkFkZCIgYnV0dG9uIG5leHQgdG8gYW55IHJlc29sdmVkIHZ1bG5lcmFiaWxpdHkgcmVwb3J0PC9saT4KICAgICAgICAgICAgPGxpPkZpbGwgaW4gdGhlIGFja25vd2xlZGdtZW50IGRldGFpbHM6CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+TmFtZTo8L3N0cm9uZz4gUmVzZWFyY2hlciBuYW1lIChkZWZhdWx0cyB0byByZXBvcnRlciBuYW1lKTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+Q29tcGFueTo8L3N0cm9uZz4gT3B0aW9uYWwgY29tcGFueSBvciBvcmdhbml6YXRpb24gbmFtZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+V2Vic2l0ZTo8L3N0cm9uZz4gT3B0aW9uYWwgd2Vic2l0ZSBVUkwgKG11c3QgdXNlIGh0dHBzOi8vKTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+VnVsbmVyYWJpbGl0eTo8L3N0cm9uZz4gQnJpZWYgZGVzY3JpcHRpb24gKGRlZmF1bHRzIHRvIHJlcG9ydCB0eXBlKTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZTo8L3N0cm9uZz4gRGlzY2xvc3VyZSBkYXRlIChkZWZhdWx0cyB0byByZXBvcnQgZGF0ZSk8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkRpc2Nsb3N1cmUgVHlwZTo8L3N0cm9uZz4gQ29vcmRpbmF0ZWQsIFByaXZhdGUsIG9yIFB1YmxpYzwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+Q3JlZGl0IExpbms6PC9zdHJvbmc+IE9wdGlvbmFsIFVSTCBmb3IgcmVzZWFyY2hlciBwcm9maWxlPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT5DbGljayAiQWRkIHRvIEFja25vd2xlZGdtZW50cyIgdG8gc2F2ZTwvbGk+CiAgICAgICAgICAgIDxsaT5DbGljayAiRWRpdCIgYnV0dG9uIGxhdGVyIHRvIG1vZGlmeSBvciAiUmVtb3ZlIGZyb20gQWNrbm93bGVkZ21lbnRzIiB0byBkZWxldGU8L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxzdHJvbmc+VmlhIEFkbWluIEludGVyZmFjZSBFZGl0b3I6PC9zdHJvbmc+CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+R28gdG8gQWNrbm93bGVkZ21lbnRzIHRhYjwvbGk+CiAgICAgICAgICAgIDxsaT5DbGljayAiRWRpdCBBY2tub3dsZWRnbWVudHMiIGJ1dHRvbjwvbGk+CiAgICAgICAgICAgIDxsaT5FZGl0IHRoZSBQSFAgY29kZSB3aXRoIHN5bnRheCBoaWdobGlnaHRpbmcgZW5hYmxlZDwvbGk+CiAgICAgICAgICAgIDxsaT5TYXZlIGNoYW5nZXMgKFBIUCBzeW50YXggaXMgdmFsaWRhdGVkIGF1dG9tYXRpY2FsbHkpPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT48c3Ryb25nPlZpYSBGaWxlIEVkaXRvcjo8L3N0cm9uZz4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5FZGl0IDxjb2RlPm1vZHVsZXMvTUFTX1NlY3VyaXR5L2Fja25vd2xlZGdtZW50cy1kYXRhLnBocDwvY29kZT48L2xpPgogICAgICAgICAgICA8bGk+QWRkIGVudHJpZXMgdG8gdGhlIDxjb2RlPiRhY2tub3dsZWRnbWVudHM8L2NvZGU+IGFycmF5IHdpdGggb3B0aW9uYWwgY29tcGFueSBhbmQgd2Vic2l0ZSBmaWVsZHM8L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2xpPgo8L29sPgo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IEFja25vd2xlZGdtZW50cyBhcmUgYXV0b21hdGljYWxseSBzb3J0ZWQgYnkgZGF0ZSAobmV3ZXN0IGZpcnN0KSB3aXRoaW4gZWFjaCB5ZWFyIGZvciBvcHRpbWFsIGRpc3BsYXkgb24gdGhlIHB1YmxpYyBwYWdlLjwvcD4KCjxoND5NYW5hZ2luZyBWdWxuZXJhYmlsaXR5IFJlcG9ydHM8L2g0Pgo8cD5BbGwgdnVsbmVyYWJpbGl0eSByZXBvcnRzIHN1Ym1pdHRlZCB0aHJvdWdoIHRoZSBWRFAgZm9ybSBhcmUgbG9nZ2VkIGFuZCBjYW4gYmUgbWFuYWdlZCBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlOjwvcD4KPHVsPgogICAgPGxpPjxzdHJvbmc+VmlldyBSZXBvcnRzOjwvc3Ryb25nPiBHbyB0byBWdWxuZXJhYmlsaXR5IFJlcG9ydHMgdGFiPC9saT4KICAgIDxsaT48c3Ryb25nPkZpbHRlciBSZXBvcnRzOjwvc3Ryb25nPiBVc2UgZmlsdGVycyB0byBzaG93IGFsbCwgcmVzb2x2ZWQsIG9yIHVucmVzb2x2ZWQgcmVwb3J0czwvbGk+CiAgICA8bGk+PHN0cm9uZz5NYXJrIFJlc29sdmVkOjwvc3Ryb25nPiBDbGljayAiTWFyayBhcyBSZXNvbHZlZCIgYnV0dG9uIHRvIHRyYWNrIGZpeGVkIHZ1bG5lcmFiaWxpdGllczwvbGk+CiAgICA8bGk+PHN0cm9uZz5BZGQgdG8gQWNrbm93bGVkZ21lbnRzOjwvc3Ryb25nPiBDbGljayAiQWRkIiBidXR0b24gbmV4dCB0byBhbnkgcmVwb3J0IHRvIHF1aWNrbHkgYWRkIGl0IHRvIFNlY3VyaXR5IEFja25vd2xlZGdtZW50cyB3aXRoIGVkaXRhYmxlIGRldGFpbHM8L2xpPgogICAgPGxpPjxzdHJvbmc+RWRpdCBBY2tub3dsZWRnbWVudHM6PC9zdHJvbmc+IENsaWNrICJFZGl0IiBidXR0b24gKHJlcGxhY2VzICJBZGQiIG9uY2UgYWRkZWQpIHRvIG1vZGlmeSBhY2tub3dsZWRnbWVudCBkZXRhaWxzPC9saT4KICAgIDxsaT48c3Ryb25nPlZpZXcgTG9nczo8L3N0cm9uZz4gQ2hlY2sgU2VjdXJpdHkgTG9ncyB0YWIgZm9yIGRldGFpbGVkIGV2ZW50IGxvZ3M8L2xpPgo8L3VsPgoKPGg0PlNlY3VyaXR5IEZlYXR1cmVzPC9oND4KPHA+QWxsIHNlY3VyaXR5IGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQgYW5kIHdvcmsgYXV0b21hdGljYWxseTo8L3A+Cjx1bD4KICAgIDxsaT48c3Ryb25nPkNTUkYgUHJvdGVjdGlvbjo8L3N0cm9uZz4gQWxsIGZvcm1zIGluY2x1ZGUgQ1NSRiB0b2tlbnMgdGhhdCBhcmUgdmFsaWRhdGVkIG9uIHN1Ym1pc3Npb248L2xpPgogICAgPGxpPjxzdHJvbmc+UmF0ZSBMaW1pdGluZzo8L3N0cm9uZz4gUHJldmVudHMgYWJ1c2UgYnkgbGltaXRpbmcgc3VibWlzc2lvbnMgcGVyIElQIGFkZHJlc3MgcGVyIHRpbWUgd2luZG93PC9saT4KICAgIDxsaT48c3Ryb25nPklucHV0IFNhbml0aXphdGlvbjo8L3N0cm9uZz4gQWxsIHVzZXIgaW5wdXQgaXMgc2FuaXRpemVkIGFuZCB2YWxpZGF0ZWQgYmVmb3JlIHByb2Nlc3Npbmc8L2xpPgogICAgPGxpPjxzdHJvbmc+SG9uZXlwb3QgRmllbGRzOjwvc3Ryb25nPiBIaWRkZW4gZmllbGRzIGRldGVjdCBhbmQgYmxvY2sgYXV0b21hdGVkIGJvdCBzdWJtaXNzaW9uczwvbGk+CiAgICA8bGk+PHN0cm9uZz5TZWN1cmUgRW1haWw6PC9zdHJvbmc+IEVtYWlsIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgdmlhIENNU01TXCdzIHNlY3VyZSBtYWlsZXIgc3lzdGVtPC9saT4KICAgIDxsaT48c3Ryb25nPkV2ZW50IExvZ2dpbmc6PC9zdHJvbmc+IEFsbCBzZWN1cml0eSBldmVudHMgYXJlIGxvZ2dlZCB3aXRoIHRpbWVzdGFtcHMgYW5kIElQIGFkZHJlc3NlczwvbGk+CjwvdWw+Cgo8aDQ+Q29uZmlndXJhdGlvbjwvaDQ+CjxwPlRoZSBtb2R1bGUgYXV0b21hdGljYWxseSBkZXRlY3RzIHlvdXIgc2l0ZSBjb25maWd1cmF0aW9uOjwvcD4KPHVsPgogICAgPGxpPjxzdHJvbmc+QWRtaW4gUGxhY2VtZW50Ojwvc3Ryb25nPiBDaG9vc2Ugd2hpY2ggYWRtaW4gc2VjdGlvbiB0aGUgbW9kdWxlIGFwcGVhcnMgaW4gKEV4dGVuc2lvbnMsIENvbnRlbnQsIFNpdGUgQWRtaW4sIG9yIFVzZXIgTWFuYWdlbWVudCkuIERlZmF1bHQ6IFNpdGUgQWRtaW48L2xpPgogICAgPGxpPjxzdHJvbmc+U2VjdXJpdHkgRW1haWw6PC9zdHJvbmc+IERldGVjdGVkIGZyb20gYWRtaW4gdXNlciBlbWFpbCwgb3IgY29uc3RydWN0ZWQgYXMgc2VjdXJpdHlAeW91ci1kb21haW4uY29tPC9saT4KICAgIDxsaT48c3Ryb25nPkRvbWFpbjo8L3N0cm9uZz4gQXV0b21hdGljYWxseSBleHRyYWN0ZWQgZnJvbSBDTVNNUyByb290X3VybCBvciBIVFRQX0hPU1Q8L2xpPgogICAgPGxpPjxzdHJvbmc+U2l0ZSBOYW1lOjwvc3Ryb25nPiBVc2VzIENNU01TIHNpdGVuYW1lIG9yIGRvbWFpbiBuYW1lPC9saT4KICAgIDxsaT48c3Ryb25nPlJhdGUgTGltaXRpbmc6PC9zdHJvbmc+IENvbmZpZ3VyZSBtYXhpbXVtIHN1Ym1pc3Npb25zIHBlciBJUCBhZGRyZXNzIHBlciB0aW1lIHdpbmRvdyAoZGVmYXVsdDogMyBwZXIgaG91cik8L2xpPgo8L3VsPgo8cD5Zb3UgY2FuIG92ZXJyaWRlIHRoZXNlIGluIHRoZSBTZXR0aW5ncyB0YWIgaWYgbmVlZGVkLjwvcD4KCjxoND5CZXN0IFByYWN0aWNlczwvaDQ+Cjx1bD4KICAgIDxsaT5SZWd1bGFybHkgcmV2aWV3IHZ1bG5lcmFiaWxpdHkgcmVwb3J0cyBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlPC9saT4KICAgIDxsaT5SZXNwb25kIHRvIHJlcG9ydHMgd2l0aGluIDI0LTQ4IGhvdXJzIGFzIHBlciB5b3VyIFZEUCB0aW1lbGluZTwvbGk+CiAgICA8bGk+QWRkIHJlc29sdmVkIHJlcG9ydHMgdG8gYWNrbm93bGVkZ21lbnRzIHVzaW5nIHRoZSAiQWRkIiBidXR0b24gZm9yIGVhc3kgbWFuYWdlbWVudDwvbGk+CiAgICA8bGk+SW5jbHVkZSBjb21wYW55IGFuZCB3ZWJzaXRlIGluZm9ybWF0aW9uIHdoZW4gYXZhaWxhYmxlIGZvciBiZXR0ZXIgcmVzZWFyY2hlciByZWNvZ25pdGlvbjwvbGk+CiAgICA8bGk+S2VlcCBhY2tub3dsZWRnbWVudHMgdXAgdG8gZGF0ZSB0byByZWNvZ25pemUgcmVzZWFyY2hlcnMgd2hvIGhlbHAgc2VjdXJlIHlvdXIgc3lzdGVtczwvbGk+CiAgICA8bGk+TW9uaXRvciBzZWN1cml0eSBsb2dzIGZvciBzdXNwaWNpb3VzIGFjdGl2aXR5PC9saT4KICAgIDxsaT5BZGp1c3QgcmF0ZSBsaW1pdGluZyBiYXNlZCBvbiB5b3VyIHNpdGVcJ3MgdHJhZmZpYyBwYXR0ZXJuczwvbGk+CiAgICA8bGk+VXNlIGEgZGVkaWNhdGVkIHNlY3VyaXR5QHlvdXItZG9tYWluLmNvbSBlbWFpbCBhZGRyZXNzPC9saT4KICAgIDxsaT5Db25maWd1cmUgYWRtaW4gcGxhY2VtZW50IHRvIG1hdGNoIHlvdXIgcHJlZmVycmVkIHdvcmtmbG93IChkZWZhdWx0OiBTaXRlIEFkbWluKTwvbGk+CjwvdWw+Cgo8aDQ+U3VwcG9ydDwvaDQ+CjxwPjxzdHJvbmc+QXV0aG9yOjwvc3Ryb25nPiBtYXN0ZXIzMzk1PGJyLz4KPHN0cm9uZz5FbWFpbDo8L3N0cm9uZz4gaW5mbyBbYXRdIG5ld3N0YXJnZXRlZCBbZG90XSBjb208YnIvPgo8c3Ryb25nPldlYnNpdGU6PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vbmV3c3RhcmdldGVkLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5odHRwczovL25ld3N0YXJnZXRlZC5jb20vPC9hPjwvcD4KCjxoND5MaWNlbnNlPC9oND4KPHA+VGhpcyBtb2R1bGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMIHYzLiBGcmVlIHRvIHVzZSBmb3IgcGVyc29uYWwgYW5kIGNvbW1lcmNpYWwgcHJvamVjdHMuPC9wPgo8L2Rpdj4nOwoKLy8gQ2hhbmdlbG9nCiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+CjxsaT48c3Ryb25nPlZlcnNpb24gMS4wLjAsIDE4LjExLjIwMjUsIG1hc3RlcjMzOTU8L3N0cm9uZz46IEluaXRpYWwgcmVsZWFzZSB3aXRoIGNvbXByZWhlbnNpdmUgc2VjdXJpdHkgZmVhdHVyZXMKICAgIDx1bD4KICAgICAgICA8bGk+PHN0cm9uZz5WdWxuZXJhYmlsaXR5IERpc2Nsb3N1cmUgUG9saWN5Ojwvc3Ryb25nPiBQcm9mZXNzaW9uYWwgVkRQIHBhZ2Ugd2l0aCBzZWN1cmUgc3VibWlzc2lvbiBmb3JtPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5TZWN1cml0eSBBY2tub3dsZWRnbWVudHM6PC9zdHJvbmc+IFB1YmxpYyBhY2tub3dsZWRnbWVudHMgcGFnZSB0byByZWNvZ25pemUgc2VjdXJpdHkgcmVzZWFyY2hlcnM8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPlNlY3VyZSBGb3JtIFByb2Nlc3Npbmc6PC9zdHJvbmc+IENTUkYgcHJvdGVjdGlvbiwgcmF0ZSBsaW1pdGluZywgaW5wdXQgdmFsaWRhdGlvbiwgYW5kIGhvbmV5cG90IGZpZWxkczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+RW1haWwgTm90aWZpY2F0aW9uczo8L3N0cm9uZz4gQXV0b21hdGljIGVtYWlsIGFsZXJ0cyB0byBzZWN1cml0eSB0ZWFtIG9uIHJlcG9ydCBzdWJtaXNzaW9uPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5TZWN1cml0eSBFdmVudCBMb2dnaW5nOjwvc3Ryb25nPiBDb21wcmVoZW5zaXZlIGxvZ2dpbmcgb2YgYWxsIHNlY3VyaXR5LXJlbGF0ZWQgYWN0aXZpdGllczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+QWRtaW4gSW50ZXJmYWNlOjwvc3Ryb25nPiBDb21wbGV0ZSBhZG1pbiBpbnRlcmZhY2UgZm9yIG1hbmFnaW5nIHJlcG9ydHMsIGFja25vd2xlZGdtZW50cywgYW5kIHNldHRpbmdzPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5SZXBvcnQgTWFuYWdlbWVudDo8L3N0cm9uZz4gVmlldywgZmlsdGVyLCBhbmQgbWFyayB2dWxuZXJhYmlsaXR5IHJlcG9ydHMgYXMgcmVzb2x2ZWQvdW5yZXNvbHZlZDwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+SW4tQnJvd3NlciBFZGl0b3I6PC9zdHJvbmc+IEVkaXQgYWNrbm93bGVkZ21lbnRzIGRpcmVjdGx5IGZyb20gYWRtaW4gaW50ZXJmYWNlIHdpdGggUEhQIHN5bnRheCBoaWdobGlnaHRpbmc8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPkR5bmFtaWMgQ29uZmlndXJhdGlvbjo8L3N0cm9uZz4gQXV0b21hdGljYWxseSBkZXRlY3RzIGRvbWFpbiwgYWRtaW4gZW1haWwsIGFuZCBzaXRlIGNvbmZpZ3VyYXRpb248L2xpPgogICAgICAgIDxsaT48c3Ryb25nPlBvcnRhYmxlIERlc2lnbjo8L3N0cm9uZz4gTW9kdWxlIGNhbiBiZSBlYXNpbHkgZXhwb3J0ZWQgYW5kIGluc3RhbGxlZCBvbiBhbnkgQ01TTVMgc2l0ZTwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+Q2xlYW4gVVJMczo8L3N0cm9uZz4gRnVsbCBzdXBwb3J0IGZvciBDTVNNUyBjbGVhbiBVUkwgcm91dGluZyB3aXRob3V0IC5waHAgZXh0ZW5zaW9uczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+UmF0ZSBMaW1pdGluZzo8L3N0cm9uZz4gQ29uZmlndXJhYmxlIHJhdGUgbGltaXRpbmcgdG8gcHJldmVudCBhYnVzZSAoZGVmYXVsdDogMyByZXF1ZXN0cyBwZXIgaG91cik8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPlNlY3VyaXR5IEJlc3QgUHJhY3RpY2VzOjwvc3Ryb25nPiBJbnB1dCBzYW5pdGl6YXRpb24sIHNlY3VyZSBlbWFpbCBzZW5kaW5nLCBhbmQgZXZlbnQgbG9nZ2luZzwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+RG9uYXRpb25zIFRhYjo8L3N0cm9uZz4gT3B0aW9uYWwgZG9uYXRpb25zIHRhYiB0byBzdXBwb3J0IG1vZHVsZSBkZXZlbG9wbWVudDwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+UEhQIDcuNC04LjYgQ29tcGF0aWJsZTo8L3N0cm9uZz4gV29ya3Mgd2l0aCBhbGwgbW9kZXJuIFBIUCB2ZXJzaW9uczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+Q01TTVMgMi4yKzo8L3N0cm9uZz4gRnVsbCBpbnRlZ3JhdGlvbiB3aXRoIENNU01TIGVjb3N5c3RlbSBhbmQgU21hcnR5IHRlbXBsYXRpbmc8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPkFkZCB0byBBY2tub3dsZWRnbWVudHM6PC9zdHJvbmc+IFF1aWNrICJBZGQiIGJ1dHRvbiBpbiBWdWxuZXJhYmlsaXR5IFJlcG9ydHMgdG8gYWRkIGFja25vd2xlZGdtZW50cyB3aXRoIGVkaXRhYmxlIGZvcm08L2xpPgogICAgICAgIDxsaT48c3Ryb25nPkVuaGFuY2VkIEFja25vd2xlZGdtZW50czo8L3N0cm9uZz4gU3VwcG9ydCBmb3IgY29tcGFueSBhbmQgd2Vic2l0ZSBmaWVsZHMgaW4gYWNrbm93bGVkZ21lbnRzPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5EYXRlLUJhc2VkIFNvcnRpbmc6PC9zdHJvbmc+IEF1dG9tYXRpYyBzb3J0aW5nIGJ5IGRhdGUgKG5ld2VzdCBmaXJzdCkgd2l0aGluIGVhY2ggeWVhcjwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+QWRtaW4gUGxhY2VtZW50Ojwvc3Ryb25nPiBDb25maWd1cmFibGUgYWRtaW4gc2VjdGlvbiBwbGFjZW1lbnQgKGRlZmF1bHQ6IFNpdGUgQWRtaW4pPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5JbXByb3ZlZCBVSTo8L3N0cm9uZz4gRWRpdC9SZW1vdmUgYnV0dG9ucyBmb3IgYWNrbm93bGVkZ21lbnRzIGRpcmVjdGx5IGZyb20gcmVwb3J0czwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+V2Vic2l0ZSBWYWxpZGF0aW9uOjwvc3Ryb25nPiBBdXRvbWF0aWMgY29udmVyc2lvbiB0byBodHRwczovLyBmb3IgYWxsIHdlYnNpdGUgVVJMczwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+QmV0dGVyIEludGVncmF0aW9uOjwvc3Ryb25nPiBTZWFtbGVzcyB3b3JrZmxvdyBmcm9tIHZ1bG5lcmFiaWxpdHkgcmVwb3J0IHRvIHB1YmxpYyBhY2tub3dsZWRnbWVudDwvbGk+CiAgICA8L3VsPgo8L2xpPgo8L3VsPic7Cgo/PgoK]]></data>
	</file>
	<file>
	  <filename>/MAS_Security.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1BUyBTZWN1cml0eSBNb2R1bGUgZm9yIENNU01TCiAqIAogKiBQcm92aWRlcyBWdWxuZXJhYmlsaXR5IERpc2Nsb3N1cmUgUG9saWN5IGFuZCBTZWN1cml0eSBBY2tub3dsZWRnbWVudHMgZnVuY3Rpb25hbGl0eQogKiAKICogQHBhY2thZ2UgTUFTX1NlY3VyaXR5CiAqIEBhdXRob3IgbWFzdGVyMzM5NQogKiBAY29weXJpZ2h0IDIwMjUgbWFzdGVyMzM5NQogKiBAbGljZW5zZSBHUEwgdjMKICogQHZlcnNpb24gMS4wLjAKICovCgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY21zbXMnKSkgZXhpdDsKCmNsYXNzIE1BU19TZWN1cml0eSBleHRlbmRzIENNU01vZHVsZQp7CiAgICBmdW5jdGlvbiBHZXROYW1lKCkgeyAKICAgICAgICByZXR1cm4gJ01BU19TZWN1cml0eSc7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKSB7IAogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyAKICAgICAgICByZXR1cm4gJzEuMC4wJzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgeyAKICAgICAgICByZXR1cm4gJzIuMi4wJzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsgCiAgICAgICAgcmV0dXJuICdtYXN0ZXIzMzk1JzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgeyAKICAgICAgICAvLyBSZXR1cm4gYXV0aG9yIGVtYWlsIChrZWVwIHRoaXMgYXMgaXMgZm9yIG1vZHVsZSBtZXRhZGF0YSkKICAgICAgICByZXR1cm4gJ2luZm9AbmV3c3RhcmdldGVkLmNvbSc7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSB7IAogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRIZWxwKCkgeyAKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IAogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyAKICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEhhc0FkbWluKCkgeyAKICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsKICAgICAgICAvLyBVc2UgcHJlZmVyZW5jZSB3aXRoIGRlZmF1bHQgJ3NpdGVhZG1pbicKICAgICAgICAkZGVmYXVsdCA9ICdzaXRlYWRtaW4nOwogICAgICAgICRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1snbWFzX3NlY3VyaXR5X2RlZmF1bHRfYWRtaW5fc2VjdGlvbiddKSkgewogICAgICAgICAgICAkZGVmYXVsdCA9ICRjb25maWdbJ21hc19zZWN1cml0eV9kZWZhdWx0X2FkbWluX3NlY3Rpb24nXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfc2VjdXJpdHlfYWRtaW5fc2VjdGlvbicsICRkZWZhdWx0KTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gTGF6eUxvYWRGcm9udGVuZCgpIHsgCiAgICAgICAgcmV0dXJuIHRydWU7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBMYXp5TG9hZEFkbWluKCkgeyAKICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEFsbG93U21hcnR5Q2FjaGluZygpIHsgCiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBGb3JtcyBzaG91bGQgbm90IGJlIGNhY2hlZAogICAgfQogICAgCiAgICBmdW5jdGlvbiBJbml0aWFsaXplRnJvbnRlbmQoKQogICAgewogICAgICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsKICAgICAgICAvLyBOb3RlOiBhY3Rpb24gcGFyYW1ldGVyIGhhbmRsZWQgYnkgQ01TTVMgYXV0b21hdGljYWxseQogICAgfQogICAgCiAgICBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQogICAgewogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0JywgJ0FjdGlvbiB0byBwZXJmb3JtJyk7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgICB7CiAgICAgICAgJHVpZCA9IGdldF91c2VyaWQoZmFsc2UpOwogICAgICAgIGlmICgkdWlkID09IDEpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEFsd2F5cyBhbGxvdyBhZG1pbiB1c2VyICh1c2VyX2lkID0gMSkKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBNQVNfU2VjdXJpdHknKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgLy8gQWxzbyBhbGxvdyBpZiB1c2VyIGhhcyBNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcyBvciBNb2RpZnkgVGVtcGxhdGVzIHBlcm1pc3Npb25zCiAgICAgICAgaWYgKGNoZWNrX3Blcm1pc3Npb24oJHVpZCwgJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgfHwgY2hlY2tfcGVybWlzc2lvbigkdWlkLCAnTW9kaWZ5IFRlbXBsYXRlcycpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogU2hvdyBkb25hdGlvbnMgdGFiCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgZG9uYXRpb25zIHRhYiBzaG91bGQgYmUgc2hvd24KICAgICAqLwogICAgZnVuY3Rpb24gU2hvd0RvbmF0aW9uc1RhYigpIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJoaWRlZG9uYXRpb25zdGFiIikgIT0gJHRoaXMtPkdldFZlcnNpb24oKSk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogSW5zdGFsbCBtZXRob2QKICAgICAqIENyZWF0ZXMgcGVybWlzc2lvbiBhbmQgc2V0cyBkZWZhdWx0IHByZWZlcmVuY2VzCiAgICAgKi8KICAgIGZ1bmN0aW9uIEluc3RhbGwoKQogICAgewogICAgICAgIC8vIFJlZ2lzdGVyIGFzIHBsdWdpbiBtb2R1bGUKICAgICAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4odHJ1ZSk7CiAgICAgICAgCiAgICAgICAgLy8gQ3JlYXRlIHBlcm1pc3Npb24KICAgICAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignVXNlIE1BU19TZWN1cml0eScsICdVc2UgTUFTIFNlY3VyaXR5IG1vZHVsZScpOwogICAgICAgIAogICAgICAgIC8vIEdyYW50IHBlcm1pc3Npb24gdG8gQWRtaW4gZ3JvdXAgKGdyb3VwX2lkID0gMSkgYnkgZGVmYXVsdAogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJGdyb3VwX2lkID0gMTsgLy8gQWRtaW4gZ3JvdXAKICAgICAgICAkcGVybWlzc2lvbl9uYW1lID0gJ1VzZSBNQVNfU2VjdXJpdHknOwogICAgICAgICRwZXJtX2lkID0gJGRiLT5HZXRPbmUoJ1NFTEVDVCBwZXJtaXNzaW9uX2lkIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAncGVybWlzc2lvbnMgV0hFUkUgcGVybWlzc2lvbl9uYW1lID0gPycsIGFycmF5KCRwZXJtaXNzaW9uX25hbWUpKTsKICAgICAgICBpZiAoJHBlcm1faWQpIHsKICAgICAgICAgICAgJGV4aXN0cyA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgcGVybWlzc2lvbl9pZCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ2dyb3VwX3Blcm1zIFdIRVJFIHBlcm1pc3Npb25faWQgPSA/IEFORCBncm91cF9pZCA9ID8nLCBhcnJheSgkcGVybV9pZCwgJGdyb3VwX2lkKSk7CiAgICAgICAgICAgIGlmICghJGV4aXN0cykgewogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuICdncm91cF9wZXJtcyAoZ3JvdXBfaWQsIHBlcm1pc3Npb25faWQpIFZBTFVFUyAoPywgPyknLCBhcnJheSgkZ3JvdXBfaWQsICRwZXJtX2lkKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gR2V0IGFkbWluIGVtYWlsIGZvciBkZWZhdWx0IHNlY3VyaXR5IGVtYWlsCiAgICAgICAgJGRlZmF1bHRfZW1haWwgPSAnJzsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICAgICAkYWRtaW5fdXNlciA9ICRkYi0+R2V0Um93KCdTRUxFQ1QgZW1haWwgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICd1c2VycyBXSEVSRSB1c2VyX2lkID0gMScpOwogICAgICAgICAgICBpZiAoJGFkbWluX3VzZXIgJiYgaXNzZXQoJGFkbWluX3VzZXJbJ2VtYWlsJ10pKSB7CiAgICAgICAgICAgICAgICAkZGVmYXVsdF9lbWFpbCA9ICRhZG1pbl91c2VyWydlbWFpbCddOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIC8vIEZhbGxiYWNrIGlmIHF1ZXJ5IGZhaWxzCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIElmIGFkbWluIGVtYWlsIG5vdCBmb3VuZCwgY29uc3RydWN0IGZyb20gZG9tYWluCiAgICAgICAgaWYgKGVtcHR5KCRkZWZhdWx0X2VtYWlsKSkgewogICAgICAgICAgICAkY29uZmlnID0gY21zX3V0aWxzOjpnZXRfY29uZmlnKCk7CiAgICAgICAgICAgICRyb290X3VybCA9IGlzc2V0KCRjb25maWdbJ3Jvb3RfdXJsJ10pID8gJGNvbmZpZ1sncm9vdF91cmwnXSA6IChpc3NldCgkX1NFUlZFUlsnSFRUUFMnXSkgJiYgJF9TRVJWRVJbJ0hUVFBTJ10gPT09ICdvbicgPyAnaHR0cHMnIDogJ2h0dHAnKSAuICc6Ly8nIC4gKGlzc2V0KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gOiAnbG9jYWxob3N0Jyk7CiAgICAgICAgICAgICRwYXJzZWRfdXJsID0gcGFyc2VfdXJsKCRyb290X3VybCk7CiAgICAgICAgICAgICRiYXNlX2RvbWFpbiA9IGlzc2V0KCRwYXJzZWRfdXJsWydob3N0J10pID8gJHBhcnNlZF91cmxbJ2hvc3QnXSA6IChpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pID8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIDogJ3lvdXItc2l0ZS5jb20nKTsKICAgICAgICAgICAgJGRlZmF1bHRfZW1haWwgPSAnc2VjdXJpdHlAJyAuICRiYXNlX2RvbWFpbjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gU2V0IGRlZmF1bHQgcHJlZmVyZW5jZXMKICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2VjdXJpdHlfZW1haWwnLCAkZGVmYXVsdF9lbWFpbCk7CiAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JhdGVfbGltaXRfcmVxdWVzdHMnLCAzKTsKICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncmF0ZV9saW1pdF93aW5kb3cnLCAzNjAwKTsKICAgICAgICAKICAgICAgICAvLyBTZXQgZGVmYXVsdCBhZG1pbiBzZWN0aW9uIHRvICdzaXRlYWRtaW4nCiAgICAgICAgJGRlZmF1bHRfYWRtaW5fc2VjdGlvbiA9ICdzaXRlYWRtaW4nOwogICAgICAgICRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1snbWFzX3NlY3VyaXR5X2RlZmF1bHRfYWRtaW5fc2VjdGlvbiddKSkgewogICAgICAgICAgICAkZGVmYXVsdF9hZG1pbl9zZWN0aW9uID0gJGNvbmZpZ1snbWFzX3NlY3VyaXR5X2RlZmF1bHRfYWRtaW5fc2VjdGlvbiddOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX3NlY3VyaXR5X2FkbWluX3NlY3Rpb24nLCAkZGVmYXVsdF9hZG1pbl9zZWN0aW9uKTsKICAgICAgICAKICAgICAgICAvLyBDcmVhdGUgdG1wL2NhY2hlIGRpcmVjdG9yeSBmb3IgbG9ncyBpZiBuZWVkZWQKICAgICAgICAkY29uZmlnID0gY21zX3V0aWxzOjpnZXRfY29uZmlnKCk7CiAgICAgICAgJHRtcF9jYWNoZSA9ICcnOwogICAgICAgIGlmIChkZWZpbmVkKCdUTVBfQ0FDSEVfTE9DQVRJT04nKSkgewogICAgICAgICAgICAkdG1wX2NhY2hlID0gVE1QX0NBQ0hFX0xPQ0FUSU9OOwogICAgICAgIH0gZWxzZSBpZiAoaXNzZXQoJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ10pKSB7CiAgICAgICAgICAgICR0bXBfY2FjaGUgPSAkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdG1wX2NhY2hlID0gZGlybmFtZShfX0RJUl9fKSAuICcvdG1wL2NhY2hlJzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCFpc19kaXIoJHRtcF9jYWNoZSkpIHsKICAgICAgICAgICAgQG1rZGlyKCR0bXBfY2FjaGUsIDA3NTUsIHRydWUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBBdWRpdCBsb2cKICAgICAgICAkdGhpcy0+QXVkaXQoMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkpOwogICAgfQogICAgCiAgICAvKioKICAgICAqIFVuaW5zdGFsbCBtZXRob2QKICAgICAqIFJlbW92ZXMgcGVybWlzc2lvbgogICAgICovCiAgICBmdW5jdGlvbiBVbmluc3RhbGwoKQogICAgewogICAgICAgIC8vIFJlbW92ZSBwZXJtaXNzaW9uCiAgICAgICAgJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ1VzZSBNQVNfU2VjdXJpdHknKTsKICAgICAgICAKICAgICAgICAvLyBOb3RlOiBLZWVwIHByZWZlcmVuY2VzIGFuZCBsb2cgZmlsZXMgaW4gY2FzZSBtb2R1bGUgaXMgcmVpbnN0YWxsZWQKICAgICAgICAKICAgICAgICAvLyBBdWRpdCBsb2cKICAgICAgICAkdGhpcy0+QXVkaXQoMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7CiAgICB9CiAgICAKICAgIC8vIERvQWN0aW9uIGlzIG5vdCBvdmVycmlkZGVuIC0gQ01TTVMgd2lsbCBhdXRvbWF0aWNhbGx5IGxvYWQgYWN0aW9uIGZpbGVzCn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEluc3RhbGxhdGlvbiBNZXRob2QgZm9yIE1BUyBTZWN1cml0eQogKiBDb21wYXRpYmxlIHdpdGggUEhQIDcuNC04LjYKICovCgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY21zbXMnKSkgZXhpdDsKCi8vIFJlZ2lzdGVyIGFzIHBsdWdpbiBtb2R1bGUKJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKHRydWUpOwoKLy8gQ3JlYXRlIHBlcm1pc3Npb24KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ1VzZSBNQVNfU2VjdXJpdHknLCAnVXNlIE1BUyBTZWN1cml0eSBtb2R1bGUnKTsKCi8vIEdyYW50IHBlcm1pc3Npb24gdG8gQWRtaW4gZ3JvdXAgKGdyb3VwX2lkID0gMSkgYnkgZGVmYXVsdAokZGIgPSBjbXNtcygpLT5HZXREYigpOwokZ3JvdXBfaWQgPSAxOyAvLyBBZG1pbiBncm91cAokcGVybWlzc2lvbl9uYW1lID0gJ1VzZSBNQVNfU2VjdXJpdHknOwokcGVybV9pZCA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgcGVybWlzc2lvbl9pZCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ3Blcm1pc3Npb25zIFdIRVJFIHBlcm1pc3Npb25fbmFtZSA9ID8nLCBhcnJheSgkcGVybWlzc2lvbl9uYW1lKSk7CmlmICgkcGVybV9pZCkgewogICAgJGV4aXN0cyA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgcGVybWlzc2lvbl9pZCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ2dyb3VwX3Blcm1zIFdIRVJFIHBlcm1pc3Npb25faWQgPSA/IEFORCBncm91cF9pZCA9ID8nLCBhcnJheSgkcGVybV9pZCwgJGdyb3VwX2lkKSk7CiAgICBpZiAoISRleGlzdHMpIHsKICAgICAgICAkZGItPkV4ZWN1dGUoJ0lOU0VSVCBJTlRPICcgLiBDTVNfREJfUFJFRklYIC4gJ2dyb3VwX3Blcm1zIChncm91cF9pZCwgcGVybWlzc2lvbl9pZCkgVkFMVUVTICg/LCA/KScsIGFycmF5KCRncm91cF9pZCwgJHBlcm1faWQpKTsKICAgIH0KfQoKLy8gR2V0IGFkbWluIGVtYWlsIGZvciBkZWZhdWx0IHNlY3VyaXR5IGVtYWlsCiRkZWZhdWx0X2VtYWlsID0gJyc7CnRyeSB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgJGFkbWluX3VzZXIgPSAkZGItPkdldFJvdygnU0VMRUNUIGVtYWlsIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAndXNlcnMgV0hFUkUgdXNlcl9pZCA9IDEnKTsKICAgIGlmICgkYWRtaW5fdXNlciAmJiBpc3NldCgkYWRtaW5fdXNlclsnZW1haWwnXSkpIHsKICAgICAgICAkZGVmYXVsdF9lbWFpbCA9ICRhZG1pbl91c2VyWydlbWFpbCddOwogICAgfQp9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgIC8vIEZhbGxiYWNrIGlmIHF1ZXJ5IGZhaWxzCn0KCi8vIElmIGFkbWluIGVtYWlsIG5vdCBmb3VuZCwgY29uc3RydWN0IGZyb20gZG9tYWluCmlmIChlbXB0eSgkZGVmYXVsdF9lbWFpbCkpIHsKICAgICRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKICAgICRyb290X3VybCA9IGlzc2V0KCRjb25maWdbJ3Jvb3RfdXJsJ10pID8gJGNvbmZpZ1sncm9vdF91cmwnXSA6IChpc3NldCgkX1NFUlZFUlsnSFRUUFMnXSkgJiYgJF9TRVJWRVJbJ0hUVFBTJ10gPT09ICdvbicgPyAnaHR0cHMnIDogJ2h0dHAnKSAuICc6Ly8nIC4gKGlzc2V0KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gOiAnbG9jYWxob3N0Jyk7CiAgICAkcGFyc2VkX3VybCA9IHBhcnNlX3VybCgkcm9vdF91cmwpOwogICAgJGJhc2VfZG9tYWluID0gaXNzZXQoJHBhcnNlZF91cmxbJ2hvc3QnXSkgPyAkcGFyc2VkX3VybFsnaG9zdCddIDogKGlzc2V0KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gOiAneW91ci1zaXRlLmNvbScpOwogICAgJGRlZmF1bHRfZW1haWwgPSAnc2VjdXJpdHlAJyAuICRiYXNlX2RvbWFpbjsKfQoKLy8gU2V0IGRlZmF1bHQgcHJlZmVyZW5jZXMKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NlY3VyaXR5X2VtYWlsJywgJGRlZmF1bHRfZW1haWwpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncmF0ZV9saW1pdF9yZXF1ZXN0cycsIDMpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncmF0ZV9saW1pdF93aW5kb3cnLCAzNjAwKTsKCi8vIENyZWF0ZSB0bXAvY2FjaGUgZGlyZWN0b3J5IGZvciBsb2dzIGlmIGl0IGRvZXNuJ3QgZXhpc3QKJGNvbmZpZyA9IGNtc191dGlsczo6Z2V0X2NvbmZpZygpOwokdG1wX2NhY2hlID0gJyc7CmlmIChkZWZpbmVkKCdUTVBfQ0FDSEVfTE9DQVRJT04nKSkgewogICAgJHRtcF9jYWNoZSA9IFRNUF9DQUNIRV9MT0NBVElPTjsKfSBlbHNlIGlmIChpc3NldCgkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSkpIHsKICAgICR0bXBfY2FjaGUgPSAkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXTsKfSBlbHNlIHsKICAgICR0bXBfY2FjaGUgPSBkaXJuYW1lKGRpcm5hbWUoX19ESVJfXykpIC4gJy90bXAvY2FjaGUnOwp9CgppZiAoIWlzX2RpcigkdG1wX2NhY2hlKSkgewogICAgQG1rZGlyKCR0bXBfY2FjaGUsIDA3NTUsIHRydWUpOwp9CgovLyBBdWRpdCBsb2cKJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFVuaW5zdGFsbGF0aW9uIE1ldGhvZCBmb3IgTUFTIFNlY3VyaXR5CiAqIENvbXBhdGlibGUgd2l0aCBQSFAgNy40LTguNgogKi8KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKLy8gUmVtb3ZlIHBlcm1pc3Npb24KJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ1VzZSBNQVNfU2VjdXJpdHknKTsKCi8vIFJlbW92ZSBkb25hdGlvbnMgdGFiIHByZWZlcmVuY2UKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2hpZGVkb25hdGlvbnN0YWInKTsKCi8vIE5vdGU6IFdlIGtlZXAgcHJlZmVyZW5jZXMgYW5kIGxvZyBmaWxlcyBpbiBjYXNlIG1vZHVsZSBpcyByZWluc3RhbGxlZAovLyBJZiB5b3Ugd2FudCB0byBjb21wbGV0ZWx5IHJlbW92ZSBldmVyeXRoaW5nLCB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZzoKCi8vICRjb25maWcgPSBjbXNfdXRpbHM6OmdldF9jb25maWcoKTsKLy8gJHRtcF9jYWNoZSA9ICcnOwovLyBpZiAoZGVmaW5lZCgnVE1QX0NBQ0hFX0xPQ0FUSU9OJykpIHsKLy8gICAgICR0bXBfY2FjaGUgPSBUTVBfQ0FDSEVfTE9DQVRJT047Ci8vIH0gZWxzZSBpZiAoaXNzZXQoJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ10pKSB7Ci8vICAgICAkdG1wX2NhY2hlID0gJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ107Ci8vIH0gZWxzZSB7Ci8vICAgICAkdG1wX2NhY2hlID0gZGlybmFtZShkaXJuYW1lKF9fRElSX18pKSAuICcvdG1wL2NhY2hlJzsKLy8gfQovLyAKLy8gJGxvZ19maWxlID0gJHRtcF9jYWNoZSAuICcvdmRwX3NlY3VyaXR5LmxvZyc7Ci8vIGlmIChmaWxlX2V4aXN0cygkbG9nX2ZpbGUpKSB7Ci8vICAgICBAdW5saW5rKCRsb2dfZmlsZSk7Ci8vIH0KLy8gCi8vICRyYXRlX2xpbWl0X2ZpbGUgPSAkdG1wX2NhY2hlIC4gJy92ZHBfcmF0ZV9saW1pdC5qc29uJzsKLy8gaWYgKGZpbGVfZXhpc3RzKCRyYXRlX2xpbWl0X2ZpbGUpKSB7Ci8vICAgICBAdW5saW5rKCRyYXRlX2xpbWl0X2ZpbGUpOwovLyB9CgovLyBBdWRpdCBsb2cKJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOwoKPz4KCg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJNQVNfU2VjdXJpdHkiCnZlcnNpb24gPSAiMS4wLjAiCmF1dGhvciA9ICJtYXN0ZXIzMzk1IgphdXRob3JlbWFpbCA9ICJpbmZvQG5ld3N0YXJnZXRlZC5jb20iCm1pbmNtc3ZlcnNpb24gPSAiMi4yLjAiCmxhenlsb2FkYWRtaW4gPSAxCmxhenlsb2FkZnJvbnRlbmQgPSAxCg==]]></data>
	</file>
	<file>
	  <filename>/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBNQVMgU2VjdXJpdHkgTW9kdWxlIGZvciBDTVNNUwoKVGhpcyBtb2R1bGUgcHJvdmlkZXMgVnVsbmVyYWJpbGl0eSBEaXNjbG9zdXJlIFBvbGljeSAoVkRQKSBhbmQgU2VjdXJpdHkgQWNrbm93bGVkZ21lbnRzIGZ1bmN0aW9uYWxpdHkgZm9yIENNUyBNYWRlIFNpbXBsZS4KCiMjIEZlYXR1cmVzCgotIFZ1bG5lcmFiaWxpdHkgRGlzY2xvc3VyZSBQb2xpY3kgcGFnZSB3aXRoIHNlY3VyZSBmb3JtCi0gU2VjdXJpdHkgQWNrbm93bGVkZ21lbnRzIHBhZ2Ugd2l0aCBjb21wYW55IGFuZCB3ZWJzaXRlIHN1cHBvcnQKLSBBZGQgdG8gQWNrbm93bGVkZ21lbnRzOiBRdWljayB3b3JrZmxvdyBmcm9tIHZ1bG5lcmFiaWxpdHkgcmVwb3J0cyB0byBwdWJsaWMgYWNrbm93bGVkZ21lbnRzCi0gQ1NSRiBwcm90ZWN0aW9uCi0gUmF0ZSBsaW1pdGluZwotIElucHV0IHZhbGlkYXRpb24gYW5kIHNhbml0aXphdGlvbgotIEVtYWlsIG5vdGlmaWNhdGlvbnMKLSBBZG1pbiBpbnRlcmZhY2UgZm9yIHNldHRpbmdzIGFuZCBtYW5hZ2VtZW50Ci0gQWRtaW4gcGxhY2VtZW50IGNvbmZpZ3VyYXRpb24gKGRlZmF1bHQ6IFNpdGUgQWRtaW4pCi0gRGF0ZS1iYXNlZCBzb3J0aW5nIG9mIGFja25vd2xlZGdtZW50cwotIENvbXBhbnkgYW5kIHdlYnNpdGUgZmllbGRzIGZvciBhY2tub3dsZWRnbWVudHMKCiMjIEluc3RhbGxhdGlvbgoKMS4gVGhlIG1vZHVsZSBmaWxlcyBhcmUgbG9jYXRlZCBpbiBgL21vZHVsZXMvTUFTX1NlY3VyaXR5L2AKMi4gSW5zdGFsbCB0aGUgbW9kdWxlIHRocm91Z2ggQ01TTVMgQWRtaW4gUGFuZWw6IEV4dGVuc2lvbnMgPiBNb2R1bGUgTWFuYWdlcgozLiBUaGUgbW9kdWxlIHdpbGwgYXBwZWFyIGFzICJNQVMgU2VjdXJpdHkiIGluIHRoZSBtb2R1bGUgbGlzdAoKIyMgVXNhZ2UgaW4gQ01TTVMgQ29udGVudCBQYWdlcwoKIyMjIFZ1bG5lcmFiaWxpdHkgRGlzY2xvc3VyZSBQb2xpY3kgUGFnZQoKMS4gQ3JlYXRlIGEgbmV3IGNvbnRlbnQgcGFnZSBpbiBDTVNNUyB3aXRoIGFsaWFzOiBgdnVsbmVyYWJpbGl0eS1kaXNjbG9zdXJlYAoyLiBJbiB0aGUgcGFnZSBjb250ZW50LCB1c2U6CiAgIGBgYAogICB7Y21zX21vZHVsZSBtb2R1bGU9J01BU19TZWN1cml0eScgYWN0aW9uPSd2ZHAnfQogICBgYGAKMy4gVGhlIG1vZHVsZSB3aWxsIGhhbmRsZSBmb3JtIHByb2Nlc3NpbmcgYW5kIGRpc3BsYXkKCiMjIyBTZWN1cml0eSBBY2tub3dsZWRnbWVudHMgUGFnZQoKMS4gQ3JlYXRlIGEgbmV3IGNvbnRlbnQgcGFnZSBpbiBDTVNNUyB3aXRoIGFsaWFzOiBgc2VjdXJpdHktYWNrbm93bGVkZ21lbnRzYAoyLiBJbiB0aGUgcGFnZSBjb250ZW50LCB1c2U6CiAgIGBgYAogICB7Y21zX21vZHVsZSBtb2R1bGU9J01BU19TZWN1cml0eScgYWN0aW9uPSdhY2tub3dsZWRnbWVudHMnfQogICBgYGAKMy4gRWRpdCBgL21vZHVsZXMvTUFTX1NlY3VyaXR5L2Fja25vd2xlZGdtZW50cy1kYXRhLnBocGAgdG8gYWRkIGFja25vd2xlZGdtZW50cwoKIyMgQWRkaW5nIEFja25vd2xlZGdtZW50cwoKWW91IGNhbiBhZGQgYWNrbm93bGVkZ21lbnRzIGluIG11bHRpcGxlIHdheXM6CgojIyMgTWV0aG9kIDE6IEZyb20gVnVsbmVyYWJpbGl0eSBSZXBvcnRzIChSZWNvbW1lbmRlZCkKCjEuIEdvIHRvIFZ1bG5lcmFiaWxpdHkgUmVwb3J0cyB0YWIgaW4gYWRtaW4KMi4gQ2xpY2sgIkFkZCIgYnV0dG9uIG5leHQgdG8gYW55IHJlc29sdmVkIHZ1bG5lcmFiaWxpdHkgcmVwb3J0CjMuIEZpbGwgaW4gdGhlIGZvcm0gd2l0aDoKICAgLSBOYW1lIChkZWZhdWx0cyB0byByZXBvcnRlciBuYW1lKQogICAtIENvbXBhbnkgKG9wdGlvbmFsKQogICAtIFdlYnNpdGUgKG9wdGlvbmFsLCBtdXN0IHVzZSBodHRwczovLykKICAgLSBWdWxuZXJhYmlsaXR5IGRlc2NyaXB0aW9uCiAgIC0gRGF0ZQogICAtIERpc2Nsb3N1cmUgdHlwZQogICAtIENyZWRpdCBsaW5rIChvcHRpb25hbCkKNC4gQ2xpY2sgIkFkZCB0byBBY2tub3dsZWRnbWVudHMiCgojIyMgTWV0aG9kIDI6IEVkaXQgRmlsZSBEaXJlY3RseQoKRWRpdCBgL21vZHVsZXMvTUFTX1NlY3VyaXR5L2Fja25vd2xlZGdtZW50cy1kYXRhLnBocGAgYW5kIGFkZCBlbnRyaWVzIHRvIHRoZSBgJGFja25vd2xlZGdtZW50c2AgYXJyYXk6CgpgYGBwaHAKJGFja25vd2xlZGdtZW50cyA9IGFycmF5KAogICAgMjAyNSA9PiBhcnJheSgKICAgICAgICBhcnJheSgKICAgICAgICAgICAgJ25hbWUnID0+ICdTZWN1cml0eSBSZXNlYXJjaGVyIE5hbWUnLAogICAgICAgICAgICAnY29tcGFueScgPT4gJ0NvbXBhbnkgTmFtZScsIC8vIG9wdGlvbmFsCiAgICAgICAgICAgICd3ZWJzaXRlJyA9PiAnaHR0cHM6Ly9leGFtcGxlLmNvbScsIC8vIG9wdGlvbmFsLCBtdXN0IHVzZSBodHRwczovLwogICAgICAgICAgICAndnVsbmVyYWJpbGl0eScgPT4gJ0Nyb3NzLVNpdGUgU2NyaXB0aW5nIChYU1MpIGluIGNvbnRhY3QgZm9ybScsCiAgICAgICAgICAgICdkYXRlJyA9PiAnMjAyNS0wMS0xNScsCiAgICAgICAgICAgICdkaXNjbG9zdXJlJyA9PiAnY29vcmRpbmF0ZWQnLAogICAgICAgICAgICAnY3JlZGl0X2xpbmsnID0+ICdodHRwczovL2V4YW1wbGUuY29tL3Jlc2VhcmNoZXInLCAvLyBvcHRpb25hbAogICAgICAgICAgICAncmVwb3J0X2lkJyA9PiAncmVwb3J0X2lkX2Zvcl9yZWZlcmVuY2UnIC8vIG9wdGlvbmFsCiAgICAgICAgKSwKICAgICksCik7CmBgYAoKKipOb3RlOioqIEFja25vd2xlZGdtZW50cyBhcmUgYXV0b21hdGljYWxseSBzb3J0ZWQgYnkgZGF0ZSAobmV3ZXN0IGZpcnN0KSB3aXRoaW4gZWFjaCB5ZWFyLgoKIyMgRmlsZSBTdHJ1Y3R1cmUKCi0gYE1BU19TZWN1cml0eS5tb2R1bGUucGhwYCAtIE1haW4gbW9kdWxlIGZpbGUKLSBgc2VjdXJpdHktZnVuY3Rpb25zLnBocGAgLSBTZWN1cml0eSB1dGlsaXRpZXMgKENTUkYsIHZhbGlkYXRpb24sIHJhdGUgbGltaXRpbmcpCi0gYHZ1bG5lcmFiaWxpdHktcmVwb3J0LWhhbmRsZXIucGhwYCAtIEZvcm0gcHJvY2Vzc2luZyBsb2dpYwotIGBhY2tub3dsZWRnbWVudHMtZGF0YS5waHBgIC0gQWNrbm93bGVkZ21lbnRzIGRhdGEgZmlsZQotIGB0ZW1wbGF0ZXMvdmRwLnRwbGAgLSBWRFAgcGFnZSB0ZW1wbGF0ZQotIGB0ZW1wbGF0ZXMvYWNrbm93bGVkZ21lbnRzLnRwbGAgLSBBY2tub3dsZWRnbWVudHMgcGFnZSB0ZW1wbGF0ZQoKIyMgU2VjdXJpdHkKCi0gQ1NSRiBwcm90ZWN0aW9uIGVuYWJsZWQKLSBSYXRlIGxpbWl0aW5nOiAzIHN1Ym1pc3Npb25zIHBlciBob3VyIHBlciBJUAotIElucHV0IHZhbGlkYXRpb24gYW5kIHNhbml0aXphdGlvbgotIEhvbmV5cG90IGZpZWxkIGZvciBib3QgcHJvdGVjdGlvbgotIFNlY3VyZSBlbWFpbCBzZW5kaW5nIHZpYSBDTVNNUyBtYWlsZXIKCiMjIENvbmZpZ3VyYXRpb24KCiMjIyBBZG1pbiBTZXR0aW5ncwoKQ29uZmlndXJlIHRoZSBtb2R1bGUgaW4gU2V0dGluZ3MgdGFiOgoKLSAqKkFkbWluIFBsYWNlbWVudDoqKiBDaG9vc2Ugd2hpY2ggYWRtaW4gc2VjdGlvbiB0aGUgbW9kdWxlIGFwcGVhcnMgaW4gKEV4dGVuc2lvbnMsIENvbnRlbnQsIFNpdGUgQWRtaW4sIFVzZXIgTWFuYWdlbWVudCkuIERlZmF1bHQ6IFNpdGUgQWRtaW4KLSAqKlNlY3VyaXR5IEVtYWlsOioqIEVtYWlsIGFkZHJlc3MgZm9yIHNlY3VyaXR5IHJlcG9ydHMgKGRlZmF1bHRzIHRvIGFkbWluIGVtYWlsIG9yIHNlY3VyaXR5QHlvdXItZG9tYWluLmNvbSkKLSAqKlJhdGUgTGltaXRpbmc6KiogQ29uZmlndXJlIG1heGltdW0gc3VibWlzc2lvbnMgcGVyIElQIGFkZHJlc3MgcGVyIHRpbWUgd2luZG93IChkZWZhdWx0OiAzIHBlciBob3VyKQoKIyMjIEF1dG9tYXRpYyBEZXRlY3Rpb24KClRoZSBtb2R1bGUgYXV0b21hdGljYWxseSBkZXRlY3RzOgotIGByb290X3VybGAgLSBCYXNlIFVSTCBmb3IgbGlua3MgKGZyb20gQ01TTVMgY29uZmlnKQotIGBzaXRlbmFtZWAgLSBTaXRlIG5hbWUgKGZyb20gQ01TTVMgY29uZmlnKQotIEFkbWluIGVtYWlsIChmcm9tIENNU01TIHVzZXIgdGFibGUpCgojIyBOb3RlcwoKLSBGb3JtcyBhcmUgbm90IGNhY2hlZCAoQWxsb3dTbWFydHlDYWNoaW5nIHJldHVybnMgZmFsc2UpCi0gTW9kdWxlIGlzIGxhenktbG9hZGVkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UKLSBBbGwgdGVtcGxhdGVzIHVzZSBzY29wZWQgQ1NTIGNsYXNzZXMgdG8gYXZvaWQgY29uZmxpY3RzCgo=]]></data>
	</file>
	<file>
	  <filename>/security-functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNlY3VyaXR5IEZ1bmN0aW9ucyBmb3IgVnVsbmVyYWJpbGl0eSBEaXNjbG9zdXJlIFBvbGljeQogKiAKICogUHJvdmlkZXMgQ1NSRiBwcm90ZWN0aW9uLCBpbnB1dCB2YWxpZGF0aW9uLCByYXRlIGxpbWl0aW5nLCBhbmQgc2FuaXRpemF0aW9uCiAqIGZvciB0aGUgdnVsbmVyYWJpbGl0eSBkaXNjbG9zdXJlIGZvcm0gYW5kIGhhbmRsZXIuCiAqIAogKiBAcGFja2FnZSBTZWN1cml0eQogKi8KCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKLyoqCiAqIEdlbmVyYXRlIENTUkYgdG9rZW4KICogCiAqIEByZXR1cm4gc3RyaW5nIENTUkYgdG9rZW4KICovCmZ1bmN0aW9uIHNlY3VyaXR5X2dlbmVyYXRlX2NzcmZfdG9rZW4oKSB7CiAgICBpZiAoc2Vzc2lvbl9zdGF0dXMoKSA9PT0gUEhQX1NFU1NJT05fTk9ORSkgewogICAgICAgIHNlc3Npb25fc3RhcnQoKTsKICAgIH0KICAgIAogICAgaWYgKCFpc3NldCgkX1NFU1NJT05bJ3ZkcF9jc3JmX3Rva2VuJ10pIHx8IGVtcHR5KCRfU0VTU0lPTlsndmRwX2NzcmZfdG9rZW4nXSkpIHsKICAgICAgICAkX1NFU1NJT05bJ3ZkcF9jc3JmX3Rva2VuJ10gPSBiaW4yaGV4KHJhbmRvbV9ieXRlcygzMikpOwogICAgICAgICRfU0VTU0lPTlsndmRwX2NzcmZfdG9rZW5fdGltZSddID0gdGltZSgpOwogICAgfQogICAgCiAgICAvLyBSZWdlbmVyYXRlIHRva2VuIGV2ZXJ5IDI0IGhvdXJzCiAgICBpZiAoaXNzZXQoJF9TRVNTSU9OWyd2ZHBfY3NyZl90b2tlbl90aW1lJ10pICYmICh0aW1lKCkgLSAkX1NFU1NJT05bJ3ZkcF9jc3JmX3Rva2VuX3RpbWUnXSkgPiA4NjQwMCkgewogICAgICAgICRfU0VTU0lPTlsndmRwX2NzcmZfdG9rZW4nXSA9IGJpbjJoZXgocmFuZG9tX2J5dGVzKDMyKSk7CiAgICAgICAgJF9TRVNTSU9OWyd2ZHBfY3NyZl90b2tlbl90aW1lJ10gPSB0aW1lKCk7CiAgICB9CiAgICAKICAgIHJldHVybiAkX1NFU1NJT05bJ3ZkcF9jc3JmX3Rva2VuJ107Cn0KCi8qKgogKiBWYWxpZGF0ZSBDU1JGIHRva2VuCiAqIAogKiBAcGFyYW0gc3RyaW5nICR0b2tlbiBUb2tlbiB0byB2YWxpZGF0ZQogKiBAcmV0dXJuIGJvb2wgVHJ1ZSBpZiB0b2tlbiBpcyB2YWxpZAogKi8KZnVuY3Rpb24gc2VjdXJpdHlfdmFsaWRhdGVfY3NyZl90b2tlbigkdG9rZW4pIHsKICAgIGlmIChlbXB0eSgkdG9rZW4pKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICBpZiAoc2Vzc2lvbl9zdGF0dXMoKSA9PT0gUEhQX1NFU1NJT05fTk9ORSkgewogICAgICAgIHNlc3Npb25fc3RhcnQoKTsKICAgIH0KICAgIAogICAgaWYgKCFpc3NldCgkX1NFU1NJT05bJ3ZkcF9jc3JmX3Rva2VuJ10pIHx8IGVtcHR5KCRfU0VTU0lPTlsndmRwX2NzcmZfdG9rZW4nXSkpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKICAgIC8vIFRva2VuIGV4cGlyZXMgYWZ0ZXIgMiBob3VycwogICAgaWYgKGlzc2V0KCRfU0VTU0lPTlsndmRwX2NzcmZfdG9rZW5fdGltZSddKSAmJiAodGltZSgpIC0gJF9TRVNTSU9OWyd2ZHBfY3NyZl90b2tlbl90aW1lJ10pID4gNzIwMCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIAogICAgcmV0dXJuIGhhc2hfZXF1YWxzKCRfU0VTU0lPTlsndmRwX2NzcmZfdG9rZW4nXSwgJHRva2VuKTsKfQoKLyoqCiAqIFNhbml0aXplIGlucHV0IHN0cmluZwogKiAKICogQHBhcmFtIHN0cmluZyAkaW5wdXQgSW5wdXQgdG8gc2FuaXRpemUKICogQHBhcmFtIHN0cmluZyAkdHlwZSBUeXBlIG9mIGlucHV0IChzdHJpbmcsIGVtYWlsLCB1cmwsIGh0bWwsIGludCkKICogQHJldHVybiBzdHJpbmcgU2FuaXRpemVkIGlucHV0CiAqLwpmdW5jdGlvbiBzZWN1cml0eV9zYW5pdGl6ZV9pbnB1dCgkaW5wdXQsICR0eXBlID0gJ3N0cmluZycpIHsKICAgIGlmIChpc19udWxsKCRpbnB1dCkpIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9CiAgICAKICAgIGlmICghaXNfc3RyaW5nKCRpbnB1dCkpIHsKICAgICAgICAkaW5wdXQgPSAoc3RyaW5nKSRpbnB1dDsKICAgIH0KICAgIAogICAgc3dpdGNoICgkdHlwZSkgewogICAgICAgIGNhc2UgJ2ludCc6CiAgICAgICAgICAgIHJldHVybiAoaW50KSRpbnB1dDsKICAgICAgICAgICAgCiAgICAgICAgY2FzZSAnZmxvYXQnOgogICAgICAgICAgICByZXR1cm4gKGZsb2F0KSRpbnB1dDsKICAgICAgICAgICAgCiAgICAgICAgY2FzZSAnZW1haWwnOgogICAgICAgICAgICAkaW5wdXQgPSBmaWx0ZXJfdmFyKHRyaW0oJGlucHV0KSwgRklMVEVSX1NBTklUSVpFX0VNQUlMKTsKICAgICAgICAgICAgcmV0dXJuIGZpbHRlcl92YXIoJGlucHV0LCBGSUxURVJfVkFMSURBVEVfRU1BSUwpID8gJGlucHV0IDogJyc7CiAgICAgICAgICAgIAogICAgICAgIGNhc2UgJ3VybCc6CiAgICAgICAgICAgICRpbnB1dCA9IGZpbHRlcl92YXIodHJpbSgkaW5wdXQpLCBGSUxURVJfU0FOSVRJWkVfVVJMKTsKICAgICAgICAgICAgcmV0dXJuIGZpbHRlcl92YXIoJGlucHV0LCBGSUxURVJfVkFMSURBVEVfVVJMKSA/ICRpbnB1dCA6ICcnOwogICAgICAgICAgICAKICAgICAgICBjYXNlICdodG1sJzoKICAgICAgICAgICAgLy8gQWxsb3cgc2FmZSBIVE1MIHRhZ3MgZm9yIHZ1bG5lcmFiaWxpdHkgZGVzY3JpcHRpb25zCiAgICAgICAgICAgICRhbGxvd2VkID0gJzxwPjxicj48c3Ryb25nPjxlbT48dWw+PG9sPjxsaT48YT48aDE+PGgyPjxoMz48aDQ+PGg1PjxoNj48cHJlPjxjb2RlPjxibG9ja3F1b3RlPic7CiAgICAgICAgICAgIHJldHVybiBzdHJpcF90YWdzKHRyaW0oJGlucHV0KSwgJGFsbG93ZWQpOwogICAgICAgICAgICAKICAgICAgICBjYXNlICdzdHJpbmcnOgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIC8vIFJlbW92ZSBkYW5nZXJvdXMgY2hhcmFjdGVycyBhbmQgZW5jb2RlCiAgICAgICAgICAgIHJldHVybiBodG1sc3BlY2lhbGNoYXJzKHRyaW0oJGlucHV0KSwgRU5UX1FVT1RFUywgJ1VURi04Jyk7CiAgICB9Cn0KCi8qKgogKiBTYW5pdGl6ZSBhcnJheSBvZiBpbnB1dHMKICogCiAqIEBwYXJhbSBhcnJheSAkYXJyYXkgQXJyYXkgdG8gc2FuaXRpemUKICogQHBhcmFtIHN0cmluZyAkdHlwZSBUeXBlIG9mIGlucHV0CiAqIEByZXR1cm4gYXJyYXkgU2FuaXRpemVkIGFycmF5CiAqLwpmdW5jdGlvbiBzZWN1cml0eV9zYW5pdGl6ZV9hcnJheSgkYXJyYXksICR0eXBlID0gJ3N0cmluZycpIHsKICAgIGlmICghaXNfYXJyYXkoJGFycmF5KSkgewogICAgICAgIHJldHVybiBhcnJheSgpOwogICAgfQogICAgCiAgICAkc2FuaXRpemVkID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRhcnJheSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICRzYWZlX2tleSA9IHNlY3VyaXR5X3Nhbml0aXplX2lucHV0KCRrZXksICdzdHJpbmcnKTsKICAgICAgICAKICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAkc2FuaXRpemVkWyRzYWZlX2tleV0gPSBzZWN1cml0eV9zYW5pdGl6ZV9hcnJheSgkdmFsdWUsICR0eXBlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc2FuaXRpemVkWyRzYWZlX2tleV0gPSBzZWN1cml0eV9zYW5pdGl6ZV9pbnB1dCgkdmFsdWUsICR0eXBlKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiAkc2FuaXRpemVkOwp9CgovKioKICogQ2hlY2sgcmF0ZSBsaW1pdCBmb3IgSVAgYWRkcmVzcwogKiAKICogQHBhcmFtIHN0cmluZyAkaXAgSVAgYWRkcmVzcwogKiBAcGFyYW0gaW50ICRtYXhfcmVxdWVzdHMgTWF4aW11bSByZXF1ZXN0cyBhbGxvd2VkCiAqIEBwYXJhbSBpbnQgJHdpbmRvd19zZWNvbmRzIFRpbWUgd2luZG93IGluIHNlY29uZHMKICogQHJldHVybiBhcnJheSBBcnJheSB3aXRoICdhbGxvd2VkJyBib29sZWFuIGFuZCAncmVtYWluaW5nJyBpbnQKICovCmZ1bmN0aW9uIHNlY3VyaXR5X2NoZWNrX3JhdGVfbGltaXQoJGlwLCAkbWF4X3JlcXVlc3RzID0gMywgJHdpbmRvd19zZWNvbmRzID0gMzYwMCkgewogICAgLy8gRW5zdXJlIFRNUF9DQUNIRV9MT0NBVElPTiBpcyBkZWZpbmVkCiAgICBpZiAoIWRlZmluZWQoJ1RNUF9DQUNIRV9MT0NBVElPTicpKSB7CiAgICAgICAgJGNvbmZpZyA9IGNtc191dGlsczo6Z2V0X2NvbmZpZygpOwogICAgICAgIGlmIChpc3NldCgkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSkpIHsKICAgICAgICAgICAgZGVmaW5lKCdUTVBfQ0FDSEVfTE9DQVRJT04nLCAkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gZGVmYXVsdCBsb2NhdGlvbgogICAgICAgICAgICBkZWZpbmUoJ1RNUF9DQUNIRV9MT0NBVElPTicsIGRpcm5hbWUoZGlybmFtZShfX0RJUl9fKSkgLiAnL3RtcC9jYWNoZScpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJHJhdGVfbGltaXRfZmlsZSA9IFRNUF9DQUNIRV9MT0NBVElPTiAuICcvdmRwX3JhdGVfbGltaXQuanNvbic7CiAgICAKICAgIGlmICghZmlsZV9leGlzdHMoJHJhdGVfbGltaXRfZmlsZSkpIHsKICAgICAgICB0b3VjaCgkcmF0ZV9saW1pdF9maWxlKTsKICAgICAgICBjaG1vZCgkcmF0ZV9saW1pdF9maWxlLCAwNjAwKTsKICAgIH0KICAgIAogICAgJGRhdGEgPSBhcnJheSgpOwogICAgaWYgKGZpbGVzaXplKCRyYXRlX2xpbWl0X2ZpbGUpID4gMCkgewogICAgICAgICRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHJhdGVfbGltaXRfZmlsZSk7CiAgICAgICAgJGRhdGEgPSBqc29uX2RlY29kZSgkY29udGVudCwgdHJ1ZSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgJGRhdGEgPSBhcnJheSgpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJG5vdyA9IHRpbWUoKTsKICAgICRpcF9rZXkgPSBtZDUoJGlwKTsKICAgIAogICAgLy8gQ2xlYW4gb2xkIGVudHJpZXMKICAgIGZvcmVhY2ggKCRkYXRhIGFzICRrZXkgPT4gJGVudHJ5KSB7CiAgICAgICAgaWYgKCgkbm93IC0gJGVudHJ5Wyd0aW1lJ10pID4gJHdpbmRvd19zZWNvbmRzKSB7CiAgICAgICAgICAgIHVuc2V0KCRkYXRhWyRrZXldKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIENoZWNrIGN1cnJlbnQgSVAKICAgIGlmICghaXNzZXQoJGRhdGFbJGlwX2tleV0pKSB7CiAgICAgICAgJGRhdGFbJGlwX2tleV0gPSBhcnJheSgKICAgICAgICAgICAgJ2lwJyA9PiAkaXAsCiAgICAgICAgICAgICdjb3VudCcgPT4gMCwKICAgICAgICAgICAgJ3RpbWUnID0+ICRub3cKICAgICAgICApOwogICAgfQogICAgCiAgICAkZW50cnkgPSAmJGRhdGFbJGlwX2tleV07CiAgICAKICAgIC8vIFJlc2V0IGlmIHdpbmRvdyBleHBpcmVkCiAgICBpZiAoKCRub3cgLSAkZW50cnlbJ3RpbWUnXSkgPiAkd2luZG93X3NlY29uZHMpIHsKICAgICAgICAkZW50cnlbJ2NvdW50J10gPSAwOwogICAgICAgICRlbnRyeVsndGltZSddID0gJG5vdzsKICAgIH0KICAgIAogICAgLy8gQ2hlY2sgbGltaXQKICAgICRhbGxvd2VkID0gKCRlbnRyeVsnY291bnQnXSA8ICRtYXhfcmVxdWVzdHMpOwogICAgJHJlbWFpbmluZyA9IG1heCgwLCAkbWF4X3JlcXVlc3RzIC0gJGVudHJ5Wydjb3VudCddKTsKICAgIAogICAgLy8gSW5jcmVtZW50IGNvdW50IGlmIGFsbG93ZWQKICAgIGlmICgkYWxsb3dlZCkgewogICAgICAgICRlbnRyeVsnY291bnQnXSsrOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRyYXRlX2xpbWl0X2ZpbGUsIGpzb25fZW5jb2RlKCRkYXRhLCBKU09OX1BSRVRUWV9QUklOVCkpOwogICAgICAgIGNobW9kKCRyYXRlX2xpbWl0X2ZpbGUsIDA2MDApOwogICAgfQogICAgCiAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgJ2FsbG93ZWQnID0+ICRhbGxvd2VkLAogICAgICAgICdyZW1haW5pbmcnID0+ICRyZW1haW5pbmcsCiAgICAgICAgJ3JldHJ5X2FmdGVyJyA9PiAkYWxsb3dlZCA/IDAgOiAoJHdpbmRvd19zZWNvbmRzIC0gKCRub3cgLSAkZW50cnlbJ3RpbWUnXSkpCiAgICApOwp9CgovKioKICogR2V0IGNsaWVudCBJUCBhZGRyZXNzCiAqIAogKiBAcmV0dXJuIHN0cmluZyBJUCBhZGRyZXNzCiAqLwpmdW5jdGlvbiBzZWN1cml0eV9nZXRfY2xpZW50X2lwKCkgewogICAgJGlwX2tleXMgPSBhcnJheSgKICAgICAgICAnSFRUUF9DRl9DT05ORUNUSU5HX0lQJywgLy8gQ2xvdWRmbGFyZQogICAgICAgICdIVFRQX1hfUkVBTF9JUCcsCiAgICAgICAgJ0hUVFBfWF9GT1JXQVJERURfRk9SJywKICAgICAgICAnSFRUUF9DTElFTlRfSVAnLAogICAgICAgICdSRU1PVEVfQUREUicKICAgICk7CiAgICAKICAgIGZvcmVhY2ggKCRpcF9rZXlzIGFzICRrZXkpIHsKICAgICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJGtleV0pICYmICFlbXB0eSgkX1NFUlZFUlska2V5XSkpIHsKICAgICAgICAgICAgJGlwID0gdHJpbShleHBsb2RlKCcsJywgJF9TRVJWRVJbJGtleV0pWzBdKTsKICAgICAgICAgICAgaWYgKGZpbHRlcl92YXIoJGlwLCBGSUxURVJfVkFMSURBVEVfSVAsIEZJTFRFUl9GTEFHX05PX1BSSVZfUkFOR0UgfCBGSUxURVJfRkxBR19OT19SRVNfUkFOR0UpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGlwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gaXNzZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pID8gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gOiAnMC4wLjAuMCc7Cn0KCi8qKgogKiBWYWxpZGF0ZSBlbWFpbCBhZGRyZXNzCiAqIAogKiBAcGFyYW0gc3RyaW5nICRlbWFpbCBFbWFpbCBhZGRyZXNzCiAqIEByZXR1cm4gYm9vbCBUcnVlIGlmIHZhbGlkCiAqLwpmdW5jdGlvbiBzZWN1cml0eV92YWxpZGF0ZV9lbWFpbCgkZW1haWwpIHsKICAgIHJldHVybiBmaWx0ZXJfdmFyKCRlbWFpbCwgRklMVEVSX1ZBTElEQVRFX0VNQUlMKSAhPT0gZmFsc2U7Cn0KCi8qKgogKiBMb2cgc2VjdXJpdHkgZXZlbnQgKHNhbml0aXplZCwgbm8gc2Vuc2l0aXZlIGRhdGEpCiAqIAogKiBAcGFyYW0gc3RyaW5nICRldmVudCBFdmVudCBuYW1lCiAqIEBwYXJhbSBhcnJheSAkZGF0YSBFdmVudCBkYXRhICh3aWxsIGJlIHNhbml0aXplZCkKICogQHJldHVybiBzdHJpbmcgUmVwb3J0IElEIGlmIHRoaXMgaXMgYSB2dWxuZXJhYmlsaXR5IHJlcG9ydCwgZW1wdHkgc3RyaW5nIG90aGVyd2lzZQogKi8KZnVuY3Rpb24gc2VjdXJpdHlfbG9nX2V2ZW50KCRldmVudCwgJGRhdGEgPSBhcnJheSgpKSB7CiAgICAvLyBFbnN1cmUgVE1QX0NBQ0hFX0xPQ0FUSU9OIGlzIGRlZmluZWQKICAgIGlmICghZGVmaW5lZCgnVE1QX0NBQ0hFX0xPQ0FUSU9OJykpIHsKICAgICAgICAkY29uZmlnID0gY21zX3V0aWxzOjpnZXRfY29uZmlnKCk7CiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddKSkgewogICAgICAgICAgICBkZWZpbmUoJ1RNUF9DQUNIRV9MT0NBVElPTicsICRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBGYWxsYmFjayB0byBkZWZhdWx0IGxvY2F0aW9uCiAgICAgICAgICAgIGRlZmluZSgnVE1QX0NBQ0hFX0xPQ0FUSU9OJywgZGlybmFtZShkaXJuYW1lKF9fRElSX18pKSAuICcvdG1wL2NhY2hlJyk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAkbG9nX2ZpbGUgPSBUTVBfQ0FDSEVfTE9DQVRJT04gLiAnL3ZkcF9zZWN1cml0eS5sb2cnOwogICAgCiAgICAvLyBHZW5lcmF0ZSB1bmlxdWUgcmVwb3J0IElEIGZvciB2dWxuZXJhYmlsaXR5IHJlcG9ydHMKICAgICRyZXBvcnRfaWQgPSAnJzsKICAgIGlmICgkZXZlbnQgPT09ICd2dWxuZXJhYmlsaXR5X3JlcG9ydF9zdWJtaXR0ZWQnKSB7CiAgICAgICAgJHJlcG9ydF9pZCA9IG1kNShkYXRlKCdZLW0tZCBIOmk6cycpIC4gc2VjdXJpdHlfZ2V0X2NsaWVudF9pcCgpIC4gc2VyaWFsaXplKCRkYXRhKSk7CiAgICB9CiAgICAKICAgICRsb2dfZW50cnkgPSBhcnJheSgKICAgICAgICAndGltZScgPT4gZGF0ZSgnWS1tLWQgSDppOnMnKSwKICAgICAgICAnZXZlbnQnID0+IHNlY3VyaXR5X3Nhbml0aXplX2lucHV0KCRldmVudCwgJ3N0cmluZycpLAogICAgICAgICdpcCcgPT4gc2VjdXJpdHlfZ2V0X2NsaWVudF9pcCgpLAogICAgICAgICdkYXRhJyA9PiBzZWN1cml0eV9zYW5pdGl6ZV9hcnJheSgkZGF0YSwgJ3N0cmluZycpCiAgICApOwogICAgCiAgICAvLyBBZGQgcmVwb3J0IElEIGlmIHRoaXMgaXMgYSB2dWxuZXJhYmlsaXR5IHJlcG9ydAogICAgaWYgKCRyZXBvcnRfaWQpIHsKICAgICAgICAkbG9nX2VudHJ5WydyZXBvcnRfaWQnXSA9ICRyZXBvcnRfaWQ7CiAgICB9CiAgICAKICAgIC8vIFJlbW92ZSBzZW5zaXRpdmUgZGF0YQogICAgdW5zZXQoJGxvZ19lbnRyeVsnZGF0YSddWydjc3JmX3Rva2VuJ10pOwogICAgdW5zZXQoJGxvZ19lbnRyeVsnZGF0YSddWyd0b2tlbiddKTsKICAgIAogICAgJGxvZ19saW5lID0ganNvbl9lbmNvZGUoJGxvZ19lbnRyeSkgLiAiXG4iOwogICAgCiAgICBmaWxlX3B1dF9jb250ZW50cygkbG9nX2ZpbGUsICRsb2dfbGluZSwgRklMRV9BUFBFTkQgfCBMT0NLX0VYKTsKICAgIGNobW9kKCRsb2dfZmlsZSwgMDYwMCk7CiAgICAKICAgIHJldHVybiAkcmVwb3J0X2lkOwp9CgovKioKICogR2V0IHJlcG9ydCByZXNvbHV0aW9uIHN0YXR1cwogKiAKICogQHBhcmFtIHN0cmluZyAkcmVwb3J0X2lkIFJlcG9ydCBJRAogKiBAcmV0dXJuIGFycmF5IEFycmF5IHdpdGggJ3Jlc29sdmVkJyBib29sZWFuLCAncmVzb2x2ZWRfZGF0ZScsICdyZXNvbHZlZF9ieScKICovCmZ1bmN0aW9uIHNlY3VyaXR5X2dldF9yZXBvcnRfc3RhdHVzKCRyZXBvcnRfaWQpIHsKICAgIGlmIChlbXB0eSgkcmVwb3J0X2lkKSkgewogICAgICAgIHJldHVybiBhcnJheSgncmVzb2x2ZWQnID0+IGZhbHNlLCAncmVzb2x2ZWRfZGF0ZScgPT4gbnVsbCwgJ3Jlc29sdmVkX2J5JyA9PiBudWxsKTsKICAgIH0KICAgIAogICAgLy8gRW5zdXJlIFRNUF9DQUNIRV9MT0NBVElPTiBpcyBkZWZpbmVkCiAgICBpZiAoIWRlZmluZWQoJ1RNUF9DQUNIRV9MT0NBVElPTicpKSB7CiAgICAgICAgJGNvbmZpZyA9IGNtc191dGlsczo6Z2V0X2NvbmZpZygpOwogICAgICAgIGlmIChpc3NldCgkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSkpIHsKICAgICAgICAgICAgZGVmaW5lKCdUTVBfQ0FDSEVfTE9DQVRJT04nLCAkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZGVmaW5lKCdUTVBfQ0FDSEVfTE9DQVRJT04nLCBkaXJuYW1lKGRpcm5hbWUoX19ESVJfXykpIC4gJy90bXAvY2FjaGUnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgICRyZXNvbHV0aW9uc19maWxlID0gVE1QX0NBQ0hFX0xPQ0FUSU9OIC4gJy92ZHBfcmVwb3J0X3Jlc29sdXRpb25zLmpzb24nOwogICAgCiAgICBpZiAoIWZpbGVfZXhpc3RzKCRyZXNvbHV0aW9uc19maWxlKSkgewogICAgICAgIHJldHVybiBhcnJheSgncmVzb2x2ZWQnID0+IGZhbHNlLCAncmVzb2x2ZWRfZGF0ZScgPT4gbnVsbCwgJ3Jlc29sdmVkX2J5JyA9PiBudWxsKTsKICAgIH0KICAgIAogICAgJHJlc29sdXRpb25zID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJHJlc29sdXRpb25zX2ZpbGUpLCB0cnVlKTsKICAgIGlmICghaXNfYXJyYXkoJHJlc29sdXRpb25zKSkgewogICAgICAgICRyZXNvbHV0aW9ucyA9IGFycmF5KCk7CiAgICB9CiAgICAKICAgIGlmIChpc3NldCgkcmVzb2x1dGlvbnNbJHJlcG9ydF9pZF0pKSB7CiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAncmVzb2x2ZWQnID0+IHRydWUsCiAgICAgICAgICAgICdyZXNvbHZlZF9kYXRlJyA9PiBpc3NldCgkcmVzb2x1dGlvbnNbJHJlcG9ydF9pZF1bJ2RhdGUnXSkgPyAkcmVzb2x1dGlvbnNbJHJlcG9ydF9pZF1bJ2RhdGUnXSA6IG51bGwsCiAgICAgICAgICAgICdyZXNvbHZlZF9ieScgPT4gaXNzZXQoJHJlc29sdXRpb25zWyRyZXBvcnRfaWRdWyd1c2VyJ10pID8gJHJlc29sdXRpb25zWyRyZXBvcnRfaWRdWyd1c2VyJ10gOiBudWxsCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgcmV0dXJuIGFycmF5KCdyZXNvbHZlZCcgPT4gZmFsc2UsICdyZXNvbHZlZF9kYXRlJyA9PiBudWxsLCAncmVzb2x2ZWRfYnknID0+IG51bGwpOwp9CgovKioKICogTWFyayByZXBvcnQgYXMgcmVzb2x2ZWQgb3IgdW5yZXNvbHZlZAogKiAKICogQHBhcmFtIHN0cmluZyAkcmVwb3J0X2lkIFJlcG9ydCBJRAogKiBAcGFyYW0gYm9vbCAkcmVzb2x2ZWQgVHJ1ZSB0byBtYXJrIGFzIHJlc29sdmVkLCBmYWxzZSB0byBtYXJrIGFzIHVucmVzb2x2ZWQKICogQHBhcmFtIHN0cmluZyAkdXNlcl9pZCBVc2VyIElEIHdobyByZXNvbHZlZCBpdCAob3B0aW9uYWwpCiAqIEByZXR1cm4gYm9vbCBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUKICovCmZ1bmN0aW9uIHNlY3VyaXR5X3NldF9yZXBvcnRfc3RhdHVzKCRyZXBvcnRfaWQsICRyZXNvbHZlZCA9IHRydWUsICR1c2VyX2lkID0gJycpIHsKICAgIGlmIChlbXB0eSgkcmVwb3J0X2lkKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIAogICAgLy8gRW5zdXJlIFRNUF9DQUNIRV9MT0NBVElPTiBpcyBkZWZpbmVkCiAgICBpZiAoIWRlZmluZWQoJ1RNUF9DQUNIRV9MT0NBVElPTicpKSB7CiAgICAgICAgJGNvbmZpZyA9IGNtc191dGlsczo6Z2V0X2NvbmZpZygpOwogICAgICAgIGlmIChpc3NldCgkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSkpIHsKICAgICAgICAgICAgZGVmaW5lKCdUTVBfQ0FDSEVfTE9DQVRJT04nLCAkY29uZmlnWyd0bXBfY2FjaGVfbG9jYXRpb24nXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZGVmaW5lKCdUTVBfQ0FDSEVfTE9DQVRJT04nLCBkaXJuYW1lKGRpcm5hbWUoX19ESVJfXykpIC4gJy90bXAvY2FjaGUnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgICRyZXNvbHV0aW9uc19maWxlID0gVE1QX0NBQ0hFX0xPQ0FUSU9OIC4gJy92ZHBfcmVwb3J0X3Jlc29sdXRpb25zLmpzb24nOwogICAgCiAgICAvLyBMb2FkIGV4aXN0aW5nIHJlc29sdXRpb25zCiAgICAkcmVzb2x1dGlvbnMgPSBhcnJheSgpOwogICAgaWYgKGZpbGVfZXhpc3RzKCRyZXNvbHV0aW9uc19maWxlKSkgewogICAgICAgICRyZXNvbHV0aW9ucyA9IGpzb25fZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRyZXNvbHV0aW9uc19maWxlKSwgdHJ1ZSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkcmVzb2x1dGlvbnMpKSB7CiAgICAgICAgICAgICRyZXNvbHV0aW9ucyA9IGFycmF5KCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBpZiAoJHJlc29sdmVkKSB7CiAgICAgICAgLy8gTWFyayBhcyByZXNvbHZlZAogICAgICAgICRyZXNvbHV0aW9uc1skcmVwb3J0X2lkXSA9IGFycmF5KAogICAgICAgICAgICAnZGF0ZScgPT4gZGF0ZSgnWS1tLWQgSDppOnMnKSwKICAgICAgICAgICAgJ3VzZXInID0+ICR1c2VyX2lkCiAgICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gTWFyayBhcyB1bnJlc29sdmVkIChyZW1vdmUgZnJvbSByZXNvbHV0aW9ucykKICAgICAgICBpZiAoaXNzZXQoJHJlc29sdXRpb25zWyRyZXBvcnRfaWRdKSkgewogICAgICAgICAgICB1bnNldCgkcmVzb2x1dGlvbnNbJHJlcG9ydF9pZF0pOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gU2F2ZSByZXNvbHV0aW9ucwogICAgJHJlc3VsdCA9IGZpbGVfcHV0X2NvbnRlbnRzKCRyZXNvbHV0aW9uc19maWxlLCBqc29uX2VuY29kZSgkcmVzb2x1dGlvbnMsIEpTT05fUFJFVFRZX1BSSU5UIHwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fVU5FU0NBUEVEX1VOSUNPREUpLCBMT0NLX0VYKTsKICAgIGlmICgkcmVzdWx0ICE9PSBmYWxzZSkgewogICAgICAgIGNobW9kKCRyZXNvbHV0aW9uc19maWxlLCAwNjAwKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIAogICAgcmV0dXJuIGZhbHNlOwp9Cgo/PgoK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/acknowledgments.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogU2VjdXJpdHkgQWNrbm93bGVkZ21lbnRzIFRlbXBsYXRlICp9CnsqIFRoaXMgdGVtcGxhdGUgaXMgdXNlZCBieSB0aGUgTUFTIFNlY3VyaXR5IG1vZHVsZSB0byBkaXNwbGF5IGFja25vd2xlZGdtZW50cyAqfQoKPHN0eWxlPgouc2VjdXJpdHktYWNrLWNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nOiAyMHB4OwogICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCBzYW5zLXNlcmlmOwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIGNvbG9yOiAjMzMzOwp9Cgouc2VjdXJpdHktYWNrLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmMzZTUwOwogICAgY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogMzBweCAyMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKfQoKLnNlY3VyaXR5LWFjay1oZWFkZXIgaDEgewogICAgZm9udC1zaXplOiAyZW07CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Cgouc2VjdXJpdHktYWNrLWNvbnRlbnQgewogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAzMHB4OwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwwLDAsMC4xKTsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KCi5zZWN1cml0eS1hY2staW50cm8gewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYxOwogICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMzQ5OGRiOwogICAgYm9yZGVyLXJhZGl1czogNHB4Owp9Cgouc2VjdXJpdHktYWNrLWVtcHR5LXN0YXRlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDQwcHggMjBweDsKICAgIGNvbG9yOiAjN2Y4YzhkOwp9Cgouc2VjdXJpdHktYWNrLWVtcHR5LXN0YXRlLWljb24gewogICAgZm9udC1zaXplOiA0ZW07CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Cgouc2VjdXJpdHktYWNrLWxpc3QgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5zZWN1cml0eS1hY2staXRlbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwogICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMjdhZTYwOwogICAgcGFkZGluZzogMjBweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuM3M7Cn0KCi5zZWN1cml0eS1hY2staXRlbTpob3ZlciB7CiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLDAsMCwwLjEpOwp9Cgouc2VjdXJpdHktYWNrLWl0ZW0taGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBnYXA6IDEwcHg7Cn0KCi5zZWN1cml0eS1hY2stbmFtZSB7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgZm9udC1zaXplOiAxLjFlbTsKICAgIGNvbG9yOiAjMmMzZTUwOwp9Cgouc2VjdXJpdHktYWNrLW5hbWUgYSB7CiAgICBjb2xvcjogIzM0OThkYjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLnNlY3VyaXR5LWFjay1uYW1lIGE6aG92ZXIgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCi5zZWN1cml0eS1hY2stZGF0ZSB7CiAgICBjb2xvcjogIzdmOGM4ZDsKICAgIGZvbnQtc2l6ZTogMC45ZW07Cn0KCi5zZWN1cml0eS1hY2stZGV0YWlscyB7CiAgICBtYXJnaW4tdG9wOiAxMHB4Owp9Cgouc2VjdXJpdHktYWNrLXZ1bG5lcmFiaWxpdHkgewogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGNvbG9yOiAjMzQ0OTVlOwogICAgbWFyZ2luLWJvdHRvbTogOHB4Owp9Cgouc2VjdXJpdHktYWNrLWRpc2Nsb3N1cmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogNHB4IDhweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGZvbnQtc2l6ZTogMC44NWVtOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIG1hcmdpbi10b3A6IDhweDsKfQoKLnNlY3VyaXR5LWFjay1kaXNjbG9zdXJlLWNvb3JkaW5hdGVkIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzNDk4ZGI7CiAgICBjb2xvcjogd2hpdGU7Cn0KCi5zZWN1cml0eS1hY2stZGlzY2xvc3VyZS1wcml2YXRlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM3ZjhjOGQ7CiAgICBjb2xvcjogd2hpdGU7Cn0KCi5zZWN1cml0eS1hY2stZGlzY2xvc3VyZS1wdWJsaWMgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI3YWU2MDsKICAgIGNvbG9yOiB3aGl0ZTsKfQoKLnNlY3VyaXR5LWFjay15ZWFyLXNlY3Rpb24gewogICAgbWFyZ2luLWJvdHRvbTogNDBweDsKfQoKLnNlY3VyaXR5LWFjay15ZWFyLWhlYWRlciB7CiAgICBmb250LXNpemU6IDEuOGVtOwogICAgY29sb3I6ICMyYzNlNTA7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgIzM0OThkYjsKfQoKLnNlY3VyaXR5LWFjay1zdGF0cyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiAyMHB4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYxOwogICAgYm9yZGVyLXJhZGl1czogNHB4Owp9Cgouc2VjdXJpdHktYWNrLXN0YXQtaXRlbSB7CiAgICBmbGV4OiAxOwogICAgbWluLXdpZHRoOiAxNTBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnNlY3VyaXR5LWFjay1zdGF0LW51bWJlciB7CiAgICBmb250LXNpemU6IDIuNWVtOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBjb2xvcjogIzM0OThkYjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9Cgouc2VjdXJpdHktYWNrLXN0YXQtbGFiZWwgewogICAgY29sb3I6ICM3ZjhjOGQ7CiAgICBmb250LXNpemU6IDAuOWVtOwogICAgbWFyZ2luLXRvcDogNXB4Owp9Cgouc2VjdXJpdHktYWNrLWNvbnRlbnQgaDIgewogICAgZm9udC1zaXplOiAxLjVlbTsKICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgY29sb3I6ICMyYzNlNTA7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzM0OThkYjsKICAgIHBhZGRpbmctYm90dG9tOiAxMHB4Owp9Cgouc2VjdXJpdHktYWNrLWNvbnRlbnQgdWwsCi5zZWN1cml0eS1hY2stY29udGVudCBvbCB7CiAgICBtYXJnaW4tbGVmdDogMjBweDsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KCi5zZWN1cml0eS1hY2stY29udGVudCBsaSB7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KCi5zZWN1cml0eS1hY2stZm9vdGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBjb2xvcjogIzdmOGM4ZDsKICAgIGZvbnQtc2l6ZTogMC45ZW07Cn0KCi5zZWN1cml0eS1hY2stZm9vdGVyIGEgewogICAgY29sb3I6ICMzNDk4ZGI7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBtYXJnaW46IDAgMTBweDsKfQoKLnNlY3VyaXR5LWFjay1mb290ZXIgYTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAuc2VjdXJpdHktYWNrLWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgIH0KICAgIAogICAgLnNlY3VyaXR5LWFjay1oZWFkZXIgewogICAgICAgIHBhZGRpbmc6IDIwcHggMTVweDsKICAgIH0KICAgIAogICAgLnNlY3VyaXR5LWFjay1oZWFkZXIgaDEgewogICAgICAgIGZvbnQtc2l6ZTogMS41ZW07CiAgICB9CiAgICAKICAgIC5zZWN1cml0eS1hY2stY29udGVudCB7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgIH0KICAgIAogICAgLnNlY3VyaXR5LWFjay1pdGVtLWhlYWRlciB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIH0KICAgIAogICAgLnNlY3VyaXR5LWFjay1zdGF0cyB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIH0KICAgIAogICAgLnNlY3VyaXR5LWFjay1zdGF0LWl0ZW0gewogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgIH0KfQo8L3N0eWxlPgoKPGRpdiBjbGFzcz0ic2VjdXJpdHktYWNrLWNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJzZWN1cml0eS1hY2staGVhZGVyIj4KICAgICAgICA8aDE+U2VjdXJpdHkgQWNrbm93bGVkZ21lbnRzPC9oMT4KICAgICAgICA8cD5SZWNvZ25pemluZyBzZWN1cml0eSByZXNlYXJjaGVycyB3aG8gaGVscCBrZWVwIG91ciBzZXJ2aWNlcyBzZWN1cmU8L3A+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN1cml0eS1hY2stY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktYWNrLWludHJvIj4KICAgICAgICAgICAgPHA+V2UgYXJlIGdyYXRlZnVsIHRvIHRoZSBzZWN1cml0eSByZXNlYXJjaGVycyBhbmQgdGhlIGJyb2FkZXIgc2VjdXJpdHkgY29tbXVuaXR5IHdobyByZXNwb25zaWJseSBkaXNjbG9zZSB2dWxuZXJhYmlsaXRpZXMgaW4gb3VyIHN5c3RlbXMuIFRoZWlyIGVmZm9ydHMgaGVscCB1cyBtYWludGFpbiBhIHNlY3VyZSBlbnZpcm9ubWVudCBmb3IgYWxsIG91ciB1c2Vycy48L3A+CiAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyI+SWYgeW91IGhhdmUgcmVzcG9uc2libHkgZGlzY2xvc2VkIGEgdnVsbmVyYWJpbGl0eSBhbmQgd291bGQgbGlrZSB0byBiZSBhY2tub3dsZWRnZWQgaGVyZSwgcGxlYXNlIGxldCB1cyBrbm93IGluIHlvdXIgZGlzY2xvc3VyZSByZXBvcnQgb3IgY29udGFjdCB1cyBhdCA8YSBocmVmPSJtYWlsdG86eyRhZG1pbl9lbWFpbHxlc2NhcGU6J2h0bWxhbGwnfSIgc3R5bGU9ImNvbG9yOiAjMzQ5OGRiOyI+eyRhZG1pbl9lbWFpbHxlc2NhcGU6J2h0bWxhbGwnfTwvYT4uPC9wPgogICAgICAgIDwvZGl2PgoKICAgICAgICB7aWYgJHRvdGFsX2NvdW50ID4gMH0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktYWNrLXN0YXRzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LWFjay1zdGF0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN1cml0eS1hY2stc3RhdC1udW1iZXIiPnskdG90YWxfY291bnR9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN1cml0eS1hY2stc3RhdC1sYWJlbCI+VG90YWwgQWNrbm93bGVkZ21lbnRzPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN1cml0eS1hY2stc3RhdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdXJpdHktYWNrLXN0YXQtbnVtYmVyIj57Y291bnQoJGFja25vd2xlZGdtZW50cyl9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN1cml0eS1hY2stc3RhdC1sYWJlbCI+WWVhcnMgQWN0aXZlPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAge2ZvcmVhY2ggZnJvbT0kYWNrbm93bGVkZ21lbnRzIGtleT15ZWFyIGl0ZW09eWVhcl9hY2tzfQogICAgICAgICAgICAgICAge2lmICR5ZWFyX2Fja3N8QGNvdW50ID4gMH0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN1cml0eS1hY2steWVhci1zZWN0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJzZWN1cml0eS1hY2steWVhci1oZWFkZXIiPnskeWVhcn08L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InNlY3VyaXR5LWFjay1saXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmb3JlYWNoIGZyb209JHllYXJfYWNrcyBpdGVtPWFja30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InNlY3VyaXR5LWFjay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktYWNrLWl0ZW0taGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LWFjay1uYW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWYgJGFjay5jcmVkaXRfbGlua3xkZWZhdWx0OicnICE9ICcnfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJ7JGFjay5jcmVkaXRfbGlua3xlc2NhcGU6J2h0bWxhbGwnfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JGFjay5uYW1lfGVzY2FwZTonaHRtbGFsbCd9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZWxzZWlmICRhY2sud2Vic2l0ZXxkZWZhdWx0OicnICE9ICcnfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJ7JGFjay53ZWJzaXRlfGVzY2FwZTonaHRtbGFsbCd9IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHskYWNrLm5hbWV8ZXNjYXBlOidodG1sYWxsJ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtlbHNlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JGFjay5uYW1lfGVzY2FwZTonaHRtbGFsbCd9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey9pZn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWYgJGFjay5jb21wYW55fGRlZmF1bHQ6JycgIT0gJyd9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogIzdmOGM4ZDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zaXplOiAwLjllbTsiPiAtIHskYWNrLmNvbXBhbnl8ZXNjYXBlOidodG1sYWxsJ308L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey9pZn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktYWNrLWRhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHskYWNrLmRhdGV8ZGF0ZV9mb3JtYXQ6IiVCICVlLCAlWSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LWFjay1kZXRhaWxzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LWFjay12dWxuZXJhYmlsaXR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JGFjay52dWxuZXJhYmlsaXR5fGVzY2FwZTonaHRtbGFsbCd9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZiAkYWNrLndlYnNpdGV8ZGVmYXVsdDonJyAhPSAnJyAmJiAoJGFjay5jcmVkaXRfbGlua3xkZWZhdWx0OicnID09ICcnIHx8ICRhY2sud2Vic2l0ZSAhPSAkYWNrLmNyZWRpdF9saW5rKX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiA1cHg7IGZvbnQtc2l6ZTogMC45ZW07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ieyRhY2sud2Vic2l0ZXxlc2NhcGU6J2h0bWxhbGwnfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgc3R5bGU9ImNvbG9yOiAjMzQ5OGRiOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHskYWNrLndlYnNpdGV8ZXNjYXBlOidodG1sYWxsJ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey9pZn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZiAkYWNrLmRpc2Nsb3N1cmV8ZGVmYXVsdDonJyAhPSAnJ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YXNzaWduIHZhcj0iZGlzY2xvc3VyZV9jbGFzcyIgdmFsdWU9InNlY3VyaXR5LWFjay1kaXNjbG9zdXJlLXskYWNrLmRpc2Nsb3N1cmV9In0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YXNzaWduIHZhcj0iZGlzY2xvc3VyZV9sYWJlbCIgdmFsdWU9IiJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lmICRhY2suZGlzY2xvc3VyZSA9PSAnY29vcmRpbmF0ZWQnfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YXNzaWduIHZhcj0iZGlzY2xvc3VyZV9sYWJlbCIgdmFsdWU9IkNvb3JkaW5hdGVkIERpc2Nsb3N1cmUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtlbHNlaWYgJGFjay5kaXNjbG9zdXJlID09ICdwcml2YXRlJ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Fzc2lnbiB2YXI9ImRpc2Nsb3N1cmVfbGFiZWwiIHZhbHVlPSJQcml2YXRlIERpc2Nsb3N1cmUifQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtlbHNlaWYgJGFjay5kaXNjbG9zdXJlID09ICdwdWJsaWMnfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YXNzaWduIHZhcj0iZGlzY2xvc3VyZV9sYWJlbCIgdmFsdWU9IlB1YmxpYyBEaXNjbG9zdXJlIn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZWxzZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Fzc2lnbiB2YXI9ImRpc2Nsb3N1cmVfbGFiZWwiIHZhbHVlPSRhY2suZGlzY2xvc3VyZXxjYXBpdGFsaXplfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvaWZ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3VyaXR5LWFjay1kaXNjbG9zdXJlIHskZGlzY2xvc3VyZV9jbGFzc30iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JGRpc2Nsb3N1cmVfbGFiZWx9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey9pZn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvZm9yZWFjaH0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIHsvaWZ9CiAgICAgICAgICAgIHsvZm9yZWFjaH0KICAgICAgICB7ZWxzZX0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktYWNrLWVtcHR5LXN0YXRlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LWFjay1lbXB0eS1zdGF0ZS1pY29uIj7wn5uh77iPPC9kaXY+CiAgICAgICAgICAgICAgICA8aDI+Tm8gQWNrbm93bGVkZ21lbnRzIFlldDwvaDI+CiAgICAgICAgICAgICAgICA8cD5XZSBoYXZlbid0IHJlY2VpdmVkIGFueSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHJlcG9ydHMgeWV0LjwvcD4KICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyI+SWYgeW91IGRpc2NvdmVyIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgcGxlYXNlIHJlcG9ydCBpdCB0aHJvdWdoIG91ciA8YSBocmVmPSJ7JHJvb3RfdXJsfS92dWxuZXJhYmlsaXR5LWRpc2Nsb3N1cmUiIHN0eWxlPSJjb2xvcjogIzM0OThkYjsiPlZ1bG5lcmFiaWxpdHkgRGlzY2xvc3VyZSBQb2xpY3k8L2E+LjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgey9pZn0KCiAgICAgICAgPGgyPkhvdyB0byBSZXBvcnQgYSBWdWxuZXJhYmlsaXR5PC9oMj4KICAgICAgICA8cD5JZiB5b3UgZGlzY292ZXIgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IGluIG91ciBzeXN0ZW1zLCBwbGVhc2UgcmVwb3J0IGl0IHJlc3BvbnNpYmx5OjwvcD4KICAgICAgICA8b2w+CiAgICAgICAgICAgIDxsaT5WaXNpdCBvdXIgPGEgaHJlZj0ieyRyb290X3VybH0vdnVsbmVyYWJpbGl0eS1kaXNjbG9zdXJlIiBzdHlsZT0iY29sb3I6ICMzNDk4ZGI7Ij5WdWxuZXJhYmlsaXR5IERpc2Nsb3N1cmUgUG9saWN5PC9hPiBwYWdlPC9saT4KICAgICAgICAgICAgPGxpPlN1Ym1pdCBhIGRldGFpbGVkIHJlcG9ydCB0aHJvdWdoIG91ciBzZWN1cmUgZm9ybTwvbGk+CiAgICAgICAgICAgIDxsaT5BbGxvdyB1cyB0aW1lIHRvIGFkZHJlc3MgdGhlIGlzc3VlIGJlZm9yZSBwdWJsaWMgZGlzY2xvc3VyZTwvbGk+CiAgICAgICAgICAgIDxsaT5JZiB5b3UnZCBsaWtlIHRvIGJlIGFja25vd2xlZGdlZCwgaW5kaWNhdGUgeW91ciBwcmVmZXJlbmNlIGluIHRoZSBkaXNjbG9zdXJlIHJlcG9ydDwvbGk+CiAgICAgICAgPC9vbD4KCiAgICAgICAgPGgyPlJlY29nbml0aW9uIENyaXRlcmlhPC9oMj4KICAgICAgICA8cD5TZWN1cml0eSByZXNlYXJjaGVycyBhcmUgYWNrbm93bGVkZ2VkIGhlcmUgd2hlbiB0aGV5OjwvcD4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5SZXNwb25zaWJseSBkaXNjbG9zZSB2dWxuZXJhYmlsaXRpZXMgZm9sbG93aW5nIG91ciBkaXNjbG9zdXJlIHBvbGljeTwvbGk+CiAgICAgICAgICAgIDxsaT5Qcm92aWRlIGNsZWFyLCBhY3Rpb25hYmxlIHJlcG9ydHMgdGhhdCBoZWxwIHVzIGZpeCBpc3N1ZXM8L2xpPgogICAgICAgICAgICA8bGk+QWxsb3cgcmVhc29uYWJsZSB0aW1lIGZvciByZW1lZGlhdGlvbiBiZWZvcmUgcHVibGljIGRpc2Nsb3N1cmU8L2xpPgogICAgICAgICAgICA8bGk+Q29uc2VudCB0byBiZWluZyBwdWJsaWNseSBhY2tub3dsZWRnZWQgKHVubGVzcyB0aGV5IHByZWZlciBwcml2YXRlIHJlY29nbml0aW9uKTwvbGk+CiAgICAgICAgPC91bD4KCiAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6IDIwcHg7Ij48c3Ryb25nPlRoYW5rIHlvdTwvc3Ryb25nPiB0byBhbGwgc2VjdXJpdHkgcmVzZWFyY2hlcnMgd2hvIGhlbHAga2VlcCBvdXIgc2VydmljZXMgc2VjdXJlLiBZb3VyIHJlc3BvbnNpYmxlIGRpc2Nsb3N1cmUgbWFrZXMgdGhlIGludGVybmV0IGEgc2FmZXIgcGxhY2UgZm9yIGV2ZXJ5b25lLjwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LWFjay1mb290ZXIiPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBocmVmPSJ7JHJvb3RfdXJsfSI+SG9tZTwvYT4gfAogICAgICAgICAgICA8YSBocmVmPSJ7JHJvb3RfdXJsfS92dWxuZXJhYmlsaXR5LWRpc2Nsb3N1cmUiPlZ1bG5lcmFiaWxpdHkgRGlzY2xvc3VyZSBQb2xpY3k8L2E+IHwKICAgICAgICAgICAgPGEgaHJlZj0ieyRyb290X3VybH0vc2VjdXJpdHkudHh0Ij5TZWN1cml0eSBQb2xpY3k8L2E+CiAgICAgICAgPC9wPgogICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyI+TGFzdCB1cGRhdGVkOiB7JHNtYXJ0eS5ub3d8ZGF0ZV9mb3JtYXQ6IiVCICVZIn08L3A+CiAgICA8L2Rpdj4KPC9kaXY+Cgo=]]></data>
	</file>
	<file>
	  <filename>/templates/donations.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogRG9uYXRpb25zIFRlbXBsYXRlIGZvciBNQVMgU2VjdXJpdHkgKn0KCjxkaXYgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgYmxhY2s7cGFkZGluZzoxMHB4OyI+CiAgICA8c3Ryb25nPnskc3BvbnNvcnN0ZXh0fTwvc3Ryb25nPgogICAgPGJyLz4KICAgIDxhIGhyZWY9Imh0dHBzOi8vbmV3c3RhcmdldGVkLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5OZXdzIFRhcmdldGVkPC9hPgogICAgPGJyLz4KPC9kaXY+Cjxici8+CnskZG9uYXRpb25zdGV4dH0KPGJyLz48YnIvPgo8Zm9ybSBhY3Rpb249Imh0dHBzOi8vcGF5cGFsLm1lL0tpbUJTP2xvY2FsZS54PWVuX1VTJmNvdW50cnkueD1OTyIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+CiAgICA8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9lbl9VUy9pL2J0bi9idG5fZG9uYXRlX0xHLmdpZiIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lISIgLz4KPC9mb3JtPgo8YnIvPjxici8+Cgp7JGZvcm1zdGFydH0KeyRoaWRlc3VibWl0fQp7JGZvcm1lbmR9Cgo=]]></data>
	</file>
	<file>
	  <filename>/templates/vdp.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogVnVsbmVyYWJpbGl0eSBEaXNjbG9zdXJlIFBvbGljeSBUZW1wbGF0ZSAqfQp7KiBUaGlzIHRlbXBsYXRlIGlzIHVzZWQgYnkgdGhlIE1BUyBTZWN1cml0eSBtb2R1bGUgdG8gZGlzcGxheSB0aGUgVkRQIHBhZ2UgKn0KCnsqIEZpeCBmb250IHByZWxvYWQgd2FybmluZ3MgYnkgcmVtb3Zpbmcgb3IgZml4aW5nIHByb2JsZW1hdGljIHByZWxvYWQgbGlua3MgKn0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICAKICAgIGZ1bmN0aW9uIGZpeFByZWxvYWRMaW5rcygpIHsKICAgICAgICAvLyBGaW5kIGFsbCBwcmVsb2FkIGxpbmtzIGZvciBmb250cyBmcm9tIHNreW5ldHRlY2hub2xvZ2llcy5jb20KICAgICAgICB2YXIgcHJlbG9hZExpbmtzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9InByZWxvYWQiXVtocmVmKj0ic2t5bmV0dGVjaG5vbG9naWVzLmNvbSJdJyk7CiAgICAgICAgcHJlbG9hZExpbmtzLmZvckVhY2goZnVuY3Rpb24obGluaykgewogICAgICAgICAgICB2YXIgaHJlZiA9IGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyk7CiAgICAgICAgICAgIC8vIElmIGl0J3MgYSBmb250IGZpbGUsIGZpeCBvciByZW1vdmUgaXQKICAgICAgICAgICAgaWYgKGhyZWYgJiYgKGhyZWYuaW5jbHVkZXMoJy53b2ZmJykgfHwgaHJlZi5pbmNsdWRlcygnLndvZmYyJykgfHwgaHJlZi5pbmNsdWRlcygnZm9udCcpKSkgewogICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZm9udCBpcyBhY3R1YWxseSB1c2VkIGluIHRoZSBwYWdlCiAgICAgICAgICAgICAgICB2YXIgZm9udFVzZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGJvZHlTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpOwogICAgICAgICAgICAgICAgICAgIHZhciBib2R5Rm9udCA9IGJvZHlTdHlsZS5mb250RmFtaWx5IHx8ICcnOwogICAgICAgICAgICAgICAgICAgIGlmIChib2R5Rm9udC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdydWJpaycpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRVc2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoIWZvbnRVc2VkKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gRm9udCBub3QgdXNlZCwgcmVtb3ZlIHRoZSBwcmVsb2FkIGxpbmsgaW1tZWRpYXRlbHkKICAgICAgICAgICAgICAgICAgICBpZiAobGluay5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBGb250IGlzIHVzZWQsIGVuc3VyZSBwcm9wZXIgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgICAgIGlmICghbGluay5nZXRBdHRyaWJ1dGUoJ2FzJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2FzJywgJ2ZvbnQnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rLmdldEF0dHJpYnV0ZSgndHlwZScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZvbnQvd29mZjInKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rLmdldEF0dHJpYnV0ZSgnY3Jvc3NvcmlnaW4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnY3Jvc3NvcmlnaW4nLCAnYW5vbnltb3VzJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9CiAgICAKICAgIC8vIEZpeCBpbW1lZGlhdGVseSBpZiBET00gaXMgcmVhZHkKICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZml4UHJlbG9hZExpbmtzKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZml4UHJlbG9hZExpbmtzKCk7CiAgICB9CiAgICAKICAgIC8vIFVzZSBNdXRhdGlvbk9ic2VydmVyIHRvIGNhdGNoIHByZWxvYWQgbGlua3MgYWRkZWQgZHluYW1pY2FsbHkKICAgIGlmICh3aW5kb3cuTXV0YXRpb25PYnNlcnZlcikgewogICAgICAgIHZhciBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewogICAgICAgICAgICB2YXIgc2hvdWxkRml4ID0gZmFsc2U7CiAgICAgICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG11dGF0aW9uKSB7CiAgICAgICAgICAgICAgICBpZiAobXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24uYWRkZWROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS50YWdOYW1lID09PSAnTElOSycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWwgPSBub2RlLmdldEF0dHJpYnV0ZSgncmVsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaHJlZiA9IG5vZGUuZ2V0QXR0cmlidXRlKCdocmVmJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsID09PSAncHJlbG9hZCcgJiYgaHJlZiAmJiBocmVmLmluY2x1ZGVzKCdza3luZXR0ZWNobm9sb2dpZXMuY29tJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRGaXggPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpZiAoc2hvdWxkRml4KSB7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZpeFByZWxvYWRMaW5rcywgMTApOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5oZWFkLCB7CiAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSwKICAgICAgICAgICAgc3VidHJlZTogdHJ1ZQogICAgICAgIH0pOwogICAgfQogICAgCiAgICAvLyBBbHNvIGZpeCBhZnRlciBhIHNob3J0IGRlbGF5IHRvIGNhdGNoIGxhdGUgYWRkaXRpb25zCiAgICBzZXRUaW1lb3V0KGZpeFByZWxvYWRMaW5rcywgMTAwKTsKICAgIHNldFRpbWVvdXQoZml4UHJlbG9hZExpbmtzLCA1MDApOwp9KSgpOwo8L3NjcmlwdD4KCjxzdHlsZT4KLnNlY3VyaXR5LXZkcC1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiA5MDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgcGFkZGluZzogMjBweDsKICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgc2Fucy1zZXJpZjsKICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICBjb2xvcjogIzMzMzsKfQoKLnNlY3VyaXR5LXZkcC1oZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzJjM2U1MDsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDMwcHggMjBweDsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7Cn0KCi5zZWN1cml0eS12ZHAtaGVhZGVyIGgxIHsKICAgIGZvbnQtc2l6ZTogMmVtOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLnNlY3VyaXR5LXZkcC1jb250ZW50IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogMzBweDsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Cgouc2VjdXJpdHktdmRwLWZvcm0tY29udGFpbmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogMzBweDsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Cgouc2VjdXJpdHktdmRwLWZvcm0tZ3JvdXAgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLnNlY3VyaXR5LXZkcC1mb3JtLWdyb3VwIGxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiAjMzQ0OTVlOwp9Cgouc2VjdXJpdHktdmRwLWZvcm0tZ3JvdXAgLnJlcXVpcmVkIHsKICAgIGNvbG9yOiAjZTc0YzNjOwp9Cgouc2VjdXJpdHktdmRwLWZvcm0tZ3JvdXAgaW5wdXRbdHlwZT0idGV4dCJdLAouc2VjdXJpdHktdmRwLWZvcm0tZ3JvdXAgaW5wdXRbdHlwZT0iZW1haWwiXSwKLnNlY3VyaXR5LXZkcC1mb3JtLWdyb3VwIHNlbGVjdCwKLnNlY3VyaXR5LXZkcC1mb3JtLWdyb3VwIHRleHRhcmVhIHsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMTBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBmb250LXNpemU6IDFlbTsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0Owp9Cgouc2VjdXJpdHktdmRwLWZvcm0tZ3JvdXAgaW5wdXQ6Zm9jdXMsCi5zZWN1cml0eS12ZHAtZm9ybS1ncm91cCBzZWxlY3Q6Zm9jdXMsCi5zZWN1cml0eS12ZHAtZm9ybS1ncm91cCB0ZXh0YXJlYTpmb2N1cyB7CiAgICBvdXRsaW5lOiBub25lOwogICAgYm9yZGVyLWNvbG9yOiAjMzQ5OGRiOwogICAgYm94LXNoYWRvdzogMCAwIDVweCByZ2JhKDUyLCAxNTIsIDIxOSwgMC4zKTsKfQoKLnNlY3VyaXR5LXZkcC1mb3JtLWdyb3VwIHRleHRhcmVhIHsKICAgIG1pbi1oZWlnaHQ6IDEwMHB4OwogICAgcmVzaXplOiB2ZXJ0aWNhbDsKfQoKLnNlY3VyaXR5LXZkcC1ob25leXBvdCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAtOTk5OXB4OwogICAgb3BhY2l0eTogMDsKfQoKLnNlY3VyaXR5LXZkcC1yYWRpby1ncm91cCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGdhcDogMTBweDsKICAgIG1hcmdpbi10b3A6IDEwcHg7Cn0KCi5zZWN1cml0eS12ZHAtcmFkaW8tb3B0aW9uIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA4cHg7Cn0KCi5zZWN1cml0eS12ZHAtcmFkaW8tb3B0aW9uIGlucHV0W3R5cGU9InJhZGlvIl0gewogICAgd2lkdGg6IGF1dG87Cn0KCi5zZWN1cml0eS12ZHAtcmFkaW8tb3B0aW9uIGxhYmVsIHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KCi5zZWN1cml0eS12ZHAtc3VibWl0LWJ0biB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OGRiOwogICAgY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogMTJweCAzMHB4OwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgZm9udC1zaXplOiAxZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7Cn0KCi5zZWN1cml0eS12ZHAtc3VibWl0LWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk4MGI5Owp9Cgouc2VjdXJpdHktdmRwLWFsZXJ0IHsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Cgouc2VjdXJpdHktdmRwLWFsZXJ0LXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZWRkYTsKICAgIGNvbG9yOiAjMTU1NzI0OwogICAgYm9yZGVyOiAxcHggc29saWQgI2MzZTZjYjsKfQoKLnNlY3VyaXR5LXZkcC1hbGVydC1lcnJvciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhkN2RhOwogICAgY29sb3I6ICM3MjFjMjQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZjVjNmNiOwp9Cgouc2VjdXJpdHktdmRwLWNvbnRlbnQgaDIgewogICAgZm9udC1zaXplOiAxLjVlbTsKICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgY29sb3I6ICMyYzNlNTA7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzM0OThkYjsKICAgIHBhZGRpbmctYm90dG9tOiAxMHB4Owp9Cgouc2VjdXJpdHktdmRwLWNvbnRlbnQgaDMgewogICAgZm9udC1zaXplOiAxLjJlbTsKICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgY29sb3I6ICMzNDQ5NWU7Cn0KCi5zZWN1cml0eS12ZHAtY29udGVudCB1bCwKLnNlY3VyaXR5LXZkcC1jb250ZW50IG9sIHsKICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKLnNlY3VyaXR5LXZkcC1jb250ZW50IGxpIHsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKfQoKLnNlY3VyaXR5LXZkcC1zY29wZS1saXN0IHsKICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9Cgouc2VjdXJpdHktdmRwLXNjb3BlLWxpc3QgbGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICLinJMgIjsKICAgIGNvbG9yOiAjMjdhZTYwOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBtYXJnaW4tcmlnaHQ6IDhweDsKfQoKLnNlY3VyaXR5LXZkcC1vdXQtb2Ytc2NvcGUtbGlzdCB7CiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLnNlY3VyaXR5LXZkcC1vdXQtb2Ytc2NvcGUtbGlzdCBsaTpiZWZvcmUgewogICAgY29udGVudDogIuKclyAiOwogICAgY29sb3I6ICNlNzRjM2M7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIG1hcmdpbi1yaWdodDogOHB4Owp9Cgouc2VjdXJpdHktdmRwLWZvb3RlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgY29sb3I6ICM3ZjhjOGQ7CiAgICBmb250LXNpemU6IDAuOWVtOwp9Cgouc2VjdXJpdHktdmRwLWZvb3RlciBhIHsKICAgIGNvbG9yOiAjMzQ5OGRiOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgbWFyZ2luOiAwIDEwcHg7Cn0KCi5zZWN1cml0eS12ZHAtZm9vdGVyIGE6aG92ZXIgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLnNlY3VyaXR5LXZkcC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICB9CiAgICAKICAgIC5zZWN1cml0eS12ZHAtaGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAyMHB4IDE1cHg7CiAgICB9CiAgICAKICAgIC5zZWN1cml0eS12ZHAtaGVhZGVyIGgxIHsKICAgICAgICBmb250LXNpemU6IDEuNWVtOwogICAgfQogICAgCiAgICAuc2VjdXJpdHktdmRwLWNvbnRlbnQsCiAgICAuc2VjdXJpdHktdmRwLWZvcm0tY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgfQp9Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJzZWN1cml0eS12ZHAtY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1oZWFkZXIiPgogICAgICAgIDxoMT5WdWxuZXJhYmlsaXR5IERpc2Nsb3N1cmUgUG9saWN5PC9oMT4KICAgICAgICA8cD5SZXNwb25zaWJsZSBkaXNjbG9zdXJlIG9mIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllczwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1jb250ZW50Ij4KICAgICAgICA8aDI+SW50cm9kdWN0aW9uPC9oMj4KICAgICAgICA8cD5BdCB7JHNpdGVfbmFtZX0sIHdlIHRha2UgdGhlIHNlY3VyaXR5IG9mIG91ciBzeXN0ZW1zIGFuZCB1c2VyIGRhdGEgc2VyaW91c2x5LiBXZSBhcHByZWNpYXRlIHRoZSBlZmZvcnRzIG9mIHNlY3VyaXR5IHJlc2VhcmNoZXJzIGFuZCB0aGUgYnJvYWRlciBzZWN1cml0eSBjb21tdW5pdHkgdG8gaGVscCBrZWVwIG91ciBzZXJ2aWNlcyBzZWN1cmUuPC9wPgogICAgICAgIAogICAgICAgIDxwPlRoaXMgcG9saWN5IG91dGxpbmVzIGhvdyBzZWN1cml0eSByZXNlYXJjaGVycyBjYW4gcmVwb3J0IHZ1bG5lcmFiaWxpdGllcyB0aGV5IGRpc2NvdmVyIGluIG91ciBzeXN0ZW1zLCB3aGF0IHR5cGVzIG9mIHZ1bG5lcmFiaWxpdGllcyB3ZSdyZSBpbnRlcmVzdGVkIGluLCBhbmQgaG93IHdlIGhhbmRsZSBkaXNjbG9zdXJlLjwvcD4KCiAgICAgICAgPGgyPlNjb3BlPC9oMj4KICAgICAgICA8cD5UaGlzIHZ1bG5lcmFiaWxpdHkgZGlzY2xvc3VyZSBwb2xpY3kgYXBwbGllcyB0byB0aGUgZm9sbG93aW5nIGRvbWFpbnMgYW5kIHNlcnZpY2VzOjwvcD4KICAgICAgICA8dWwgY2xhc3M9InNlY3VyaXR5LXZkcC1zY29wZS1saXN0Ij4KICAgICAgICAgICAgPGxpPnskYmFzZV9kb21haW58ZXNjYXBlOidodG1sYWxsJ30gKG1haW4gZG9tYWluKTwvbGk+CiAgICAgICAgICAgIDxsaT5BbGwgc3ViZG9tYWlucyBvZiB7JGJhc2VfZG9tYWlufGVzY2FwZTonaHRtbGFsbCd9PC9saT4KICAgICAgICAgICAgPGxpPkFsbCB3ZWIgYXBwbGljYXRpb25zIGFuZCBzZXJ2aWNlcyBob3N0ZWQgb24gdGhlc2UgZG9tYWluczwvbGk+CiAgICAgICAgICAgIDxsaT5Bc3NvY2lhdGVkIEFQSXMgYW5kIGJhY2tlbmQgc2VydmljZXM8L2xpPgogICAgICAgIDwvdWw+CgogICAgICAgIDxoMj5JbiBTY29wZTwvaDI+CiAgICAgICAgPHA+V2UgZW5jb3VyYWdlIHRoZSByZXNwb25zaWJsZSBkaXNjbG9zdXJlIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgb2YgdnVsbmVyYWJpbGl0aWVzOjwvcD4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5Dcm9zcy1zaXRlIHNjcmlwdGluZyAoWFNTKTwvbGk+CiAgICAgICAgICAgIDxsaT5Dcm9zcy1zaXRlIHJlcXVlc3QgZm9yZ2VyeSAoQ1NSRik8L2xpPgogICAgICAgICAgICA8bGk+U1FMIGluamVjdGlvbjwvbGk+CiAgICAgICAgICAgIDxsaT5BdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBmbGF3czwvbGk+CiAgICAgICAgICAgIDxsaT5SZW1vdGUgY29kZSBleGVjdXRpb24gKFJDRSk8L2xpPgogICAgICAgICAgICA8bGk+U2VydmVyLXNpZGUgcmVxdWVzdCBmb3JnZXJ5IChTU1JGKTwvbGk+CiAgICAgICAgICAgIDxsaT5YTUwgZXh0ZXJuYWwgZW50aXR5IChYWEUpIGluamVjdGlvbjwvbGk+CiAgICAgICAgICAgIDxsaT5JbnNlY3VyZSBkaXJlY3Qgb2JqZWN0IHJlZmVyZW5jZXM8L2xpPgogICAgICAgICAgICA8bGk+U2Vuc2l0aXZlIGRhdGEgZXhwb3N1cmU8L2xpPgogICAgICAgICAgICA8bGk+U2VjdXJpdHkgbWlzY29uZmlndXJhdGlvbnM8L2xpPgogICAgICAgICAgICA8bGk+T3RoZXIgc2VjdXJpdHktcmVsYXRlZCBpc3N1ZXMgdGhhdCBjb3VsZCBpbXBhY3QgdXNlcnMgb3Igc3lzdGVtIGludGVncml0eTwvbGk+CiAgICAgICAgPC91bD4KCiAgICAgICAgPGgyPk91dCBvZiBTY29wZTwvaDI+CiAgICAgICAgPHA+VGhlIGZvbGxvd2luZyBhcmUgZXhwbGljaXRseSBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgZGlzY2xvc3VyZSBwcm9ncmFtOjwvcD4KICAgICAgICA8dWwgY2xhc3M9InNlY3VyaXR5LXZkcC1vdXQtb2Ytc2NvcGUtbGlzdCI+CiAgICAgICAgICAgIDxsaT5Tb2NpYWwgZW5naW5lZXJpbmcgYXR0YWNrcyAoaW5jbHVkaW5nIHBoaXNoaW5nKTwvbGk+CiAgICAgICAgICAgIDxsaT5QaHlzaWNhbCBzZWN1cml0eSBpc3N1ZXM8L2xpPgogICAgICAgICAgICA8bGk+RGVuaWFsIG9mIHNlcnZpY2UgKERvUykgYXR0YWNrczwvbGk+CiAgICAgICAgICAgIDxsaT5EaXN0cmlidXRlZCBkZW5pYWwgb2Ygc2VydmljZSAoRERvUykgYXR0YWNrczwvbGk+CiAgICAgICAgICAgIDxsaT5CcnV0ZSBmb3JjZSBhdHRhY2tzICh1bmxlc3MgdGhleSBleHBvc2UgYSB2dWxuZXJhYmlsaXR5KTwvbGk+CiAgICAgICAgICAgIDxsaT5NaXNzaW5nIHNlY3VyaXR5IGhlYWRlcnMgd2l0aG91dCBhIGRlbW9uc3RyYXRlZCBzZWN1cml0eSBpbXBhY3Q8L2xpPgogICAgICAgICAgICA8bGk+Q2xpY2tqYWNraW5nIG9uIHBhZ2VzIHdpdGhvdXQgc2Vuc2l0aXZlIGFjdGlvbnM8L2xpPgogICAgICAgICAgICA8bGk+SXNzdWVzIHJlcXVpcmluZyBwaHlzaWNhbCBhY2Nlc3MgdG8gYSB1c2VyJ3MgZGV2aWNlPC9saT4KICAgICAgICAgICAgPGxpPklzc3VlcyBpbiB0aGlyZC1wYXJ0eSBhcHBsaWNhdGlvbnMgb3Igc2VydmljZXMgbm90IHVuZGVyIG91ciBkaXJlY3QgY29udHJvbDwvbGk+CiAgICAgICAgICAgIDxsaT5FbWFpbCBzcG9vZmluZyAoU1BGL0RLSU0vRE1BUkMgY29uZmlndXJhdGlvbik8L2xpPgogICAgICAgICAgICA8bGk+U2VsZi1YU1Mgb3IgaXNzdWVzIHJlcXVpcmluZyBleHRlbnNpdmUgdXNlciBpbnRlcmFjdGlvbjwvbGk+CiAgICAgICAgICAgIDxsaT5Jc3N1ZXMgYWxyZWFkeSBrbm93biB0byB1cyBvciBwdWJsaWNseSBkaXNjbG9zZWQ8L2xpPgogICAgICAgIDwvdWw+CgogICAgICAgIDxoMj5Ib3cgdG8gUmVwb3J0PC9oMj4KICAgICAgICA8cD5UbyByZXBvcnQgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LCBwbGVhc2UgdXNlIHRoZSBmb3JtIGJlbG93LiBJbmNsdWRlIGFzIG11Y2ggZGV0YWlsIGFzIHBvc3NpYmxlOjwvcD4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5BIGNsZWFyIGRlc2NyaXB0aW9uIG9mIHRoZSB2dWxuZXJhYmlsaXR5PC9saT4KICAgICAgICAgICAgPGxpPlN0ZXBzIHRvIHJlcHJvZHVjZSB0aGUgaXNzdWU8L2xpPgogICAgICAgICAgICA8bGk+VGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhlIHZ1bG5lcmFiaWxpdHk8L2xpPgogICAgICAgICAgICA8bGk+QW55IHN1Z2dlc3RlZCBmaXhlcyAoaWYgYXBwbGljYWJsZSk8L2xpPgogICAgICAgIDwvdWw+CgogICAgICAgIDxoMj5SZXNwb25zZSBUaW1lbGluZTwvaDI+CiAgICAgICAgPHA+V2UgYXJlIGNvbW1pdHRlZCB0byByZXNwb25kaW5nIHRvIHNlY3VyaXR5IHJlcG9ydHMgaW4gYSB0aW1lbHkgbWFubmVyOjwvcD4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48c3Ryb25nPkluaXRpYWwgUmVzcG9uc2U6PC9zdHJvbmc+IFdpdGhpbiA0OCBob3VycyBvZiByZWNlaXZpbmcgeW91ciByZXBvcnQ8L2xpPgogICAgICAgICAgICA8bGk+PHN0cm9uZz5TdGF0dXMgVXBkYXRlOjwvc3Ryb25nPiBXaXRoaW4gNyBkYXlzIHdpdGggYW4gaW5pdGlhbCBhc3Nlc3NtZW50PC9saT4KICAgICAgICAgICAgPGxpPjxzdHJvbmc+UmVzb2x1dGlvbjo8L3N0cm9uZz4gV2l0aGluIDkwIGRheXMgb3IgYXMgb3RoZXJ3aXNlIGNvbW11bmljYXRlZDwvbGk+CiAgICAgICAgPC91bD4KCiAgICAgICAgPGgyPlNhZmUgSGFyYm9yPC9oMj4KICAgICAgICA8cD5XZSBwcm92aWRlIHNhZmUgaGFyYm9yIGZvciBzZWN1cml0eSByZXNlYXJjaGVycyB3aG86PC9wPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPkFjdCBpbiBnb29kIGZhaXRoIGFuZCBmb2xsb3cgcmVzcG9uc2libGUgZGlzY2xvc3VyZSBwcmFjdGljZXM8L2xpPgogICAgICAgICAgICA8bGk+RG8gbm90IGFjY2VzcyBvciBtb2RpZnkgZGF0YSB0aGF0IGRvZXMgbm90IGJlbG9uZyB0byB0aGVtPC9saT4KICAgICAgICAgICAgPGxpPkRvIG5vdCB2aW9sYXRlIGFueSBsYXdzIG9yIGJyZWFjaCBhbnkgYWdyZWVtZW50czwvbGk+CiAgICAgICAgICAgIDxsaT5EbyBub3QgY29tcHJvbWlzZSB0aGUgcHJpdmFjeSBvciBzYWZldHkgb2Ygb3VyIHVzZXJzPC9saT4KICAgICAgICAgICAgPGxpPkRvIG5vdCBkaXNjbG9zZSB0aGUgdnVsbmVyYWJpbGl0eSBwdWJsaWNseSB1bnRpbCB3ZSBoYXZlIGFkZHJlc3NlZCBpdDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICAKICAgICAgICA8cD5XZSB3aWxsIG5vdCBwdXJzdWUgbGVnYWwgYWN0aW9uIGFnYWluc3Qgc2VjdXJpdHkgcmVzZWFyY2hlcnMgd2hvIGNvbXBseSB3aXRoIHRoaXMgcG9saWN5IGFuZCBhY3QgaW4gZ29vZCBmYWl0aC48L3A+CgogICAgICAgIDxoMj5SZWNvZ25pdGlvbjwvaDI+CiAgICAgICAgPHA+V2l0aCB5b3VyIHBlcm1pc3Npb24sIHdlIHdvdWxkIGxpa2UgdG8gYWNrbm93bGVkZ2UgeW91ciBjb250cmlidXRpb24gdG8gb3VyIHNlY3VyaXR5LiBUaGlzIG1heSBpbmNsdWRlOjwvcD4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5MaXN0aW5nIHlvdXIgbmFtZSAob3IgaGFuZGxlKSBpbiBvdXIgc2VjdXJpdHkgYWNrbm93bGVkZ21lbnRzPC9saT4KICAgICAgICAgICAgPGxpPk1lbnRpb25pbmcgeW91ciBjb250cmlidXRpb24gaW4gc2VjdXJpdHkgYWR2aXNvcmllcyAoaWYgYXBwbGljYWJsZSk8L2xpPgogICAgICAgICAgICA8bGk+T3RoZXIgZm9ybXMgb2YgcmVjb2duaXRpb24gYXMgYWdyZWVkIHVwb248L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgCiAgICAgICAgPHA+UGxlYXNlIGluZGljYXRlIHlvdXIgZGlzY2xvc3VyZSBwcmVmZXJlbmNlcyBpbiB0aGUgZm9ybSBiZWxvdy48L3A+CgogICAgICAgIDxoMj5XaGF0IFdlIEV4cGVjdDwvaDI+CiAgICAgICAgPHA+V2hlbiByZXBvcnRpbmcgdnVsbmVyYWJpbGl0aWVzLCB3ZSBleHBlY3QgeW91IHRvOjwvcD4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5SZXBvcnQgdnVsbmVyYWJpbGl0aWVzIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgZGlzY292ZXJ5PC9saT4KICAgICAgICAgICAgPGxpPlByb3ZpZGUgY2xlYXIsIGRldGFpbGVkLCBhbmQgYWN0aW9uYWJsZSByZXBvcnRzPC9saT4KICAgICAgICAgICAgPGxpPkFsbG93IHVzIHJlYXNvbmFibGUgdGltZSB0byBhZGRyZXNzIHRoZSB2dWxuZXJhYmlsaXR5IGJlZm9yZSBwdWJsaWMgZGlzY2xvc3VyZTwvbGk+CiAgICAgICAgICAgIDxsaT5Ob3QgZXhwbG9pdCB0aGUgdnVsbmVyYWJpbGl0eSBiZXlvbmQgd2hhdCBpcyBuZWNlc3NhcnkgdG8gZGVtb25zdHJhdGUgaXQ8L2xpPgogICAgICAgICAgICA8bGk+TWFpbnRhaW4gY29uZmlkZW50aWFsaXR5IHVudGlsIHRoZSBpc3N1ZSBpcyByZXNvbHZlZDwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1mb3JtLWNvbnRhaW5lciI+CiAgICAgICAgPGgyPlJlcG9ydCBhIFZ1bG5lcmFiaWxpdHk8L2gyPgogICAgICAgIAogICAgICAgIHtpZiAkZm9ybV9zdWNjZXNzfQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN1cml0eS12ZHAtYWxlcnQgc2VjdXJpdHktdmRwLWFsZXJ0LXN1Y2Nlc3MiPgogICAgICAgICAgICAgICAgeyRmb3JtX21lc3NhZ2V8ZXNjYXBlOidodG1sYWxsJ30KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAge2Vsc2VpZiAkZm9ybV9tZXNzYWdlfQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN1cml0eS12ZHAtYWxlcnQgc2VjdXJpdHktdmRwLWFsZXJ0LWVycm9yIj4KICAgICAgICAgICAgICAgIHskZm9ybV9tZXNzYWdlfGVzY2FwZTonaHRtbGFsbCd9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIHsvaWZ9CgogICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSJ7JGZvcm1fYWN0aW9uX3VybHxkZWZhdWx0OiRjdXJyZW50X3VybHxkZWZhdWx0OiRzbWFydHkuc2VydmVyLlJFUVVFU1RfVVJJfGRlZmF1bHQ6JHJvb3RfdXJsfGVzY2FwZTonaHRtbGFsbCd9Ij4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3NyZl90b2tlbiIgdmFsdWU9InskY3NyZl90b2tlbnxlc2NhcGU6J2h0bWxhbGwnfSI+CiAgICAgICAgICAgIAogICAgICAgICAgICB7KiBIb25leXBvdCBmaWVsZCAqfQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN1cml0eS12ZHAtaG9uZXlwb3QiPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0id2Vic2l0ZSI+V2Vic2l0ZSAobGVhdmUgYmxhbmspOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IndlYnNpdGUiIG5hbWU9IndlYnNpdGUiIGF1dG9jb21wbGV0ZT0ib2ZmIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1mb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InJlcG9ydGVyX25hbWUiPllvdXIgTmFtZSAoT3B0aW9uYWwpPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icmVwb3J0ZXJfbmFtZSIgbmFtZT0icmVwb3J0ZXJfbmFtZSIgdmFsdWU9InskcG9zdF9kYXRhLnJlcG9ydGVyX25hbWV8ZGVmYXVsdDonJ3xlc2NhcGU6J2h0bWxhbGwnfSI+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktdmRwLWZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0icmVwb3J0ZXJfZW1haWwiPllvdXIgRW1haWwgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZW1haWwiIGlkPSJyZXBvcnRlcl9lbWFpbCIgbmFtZT0icmVwb3J0ZXJfZW1haWwiIHJlcXVpcmVkIHZhbHVlPSJ7JHBvc3RfZGF0YS5yZXBvcnRlcl9lbWFpbHxkZWZhdWx0OicnfGVzY2FwZTonaHRtbGFsbCd9Ij4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN1cml0eS12ZHAtZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJ2dWxuZXJhYmlsaXR5X3R5cGUiPlZ1bG5lcmFiaWxpdHkgVHlwZSA8c3BhbiBjbGFzcz0icmVxdWlyZWQiPio8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9InZ1bG5lcmFiaWxpdHlfdHlwZSIgbmFtZT0idnVsbmVyYWJpbGl0eV90eXBlIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdCBhIHR5cGUuLi48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJYU1MiIHtpZiAkcG9zdF9kYXRhLnZ1bG5lcmFiaWxpdHlfdHlwZXxkZWZhdWx0OicnID09ICdYU1MnfXNlbGVjdGVkey9pZn0+Q3Jvc3MtU2l0ZSBTY3JpcHRpbmcgKFhTUyk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDU1JGIiB7aWYgJHBvc3RfZGF0YS52dWxuZXJhYmlsaXR5X3R5cGV8ZGVmYXVsdDonJyA9PSAnQ1NSRid9c2VsZWN0ZWR7L2lmfT5Dcm9zcy1TaXRlIFJlcXVlc3QgRm9yZ2VyeSAoQ1NSRik8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTUUwgSW5qZWN0aW9uIiB7aWYgJHBvc3RfZGF0YS52dWxuZXJhYmlsaXR5X3R5cGV8ZGVmYXVsdDonJyA9PSAnU1FMIEluamVjdGlvbid9c2VsZWN0ZWR7L2lmfT5TUUwgSW5qZWN0aW9uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQXV0aGVudGljYXRpb24iIHtpZiAkcG9zdF9kYXRhLnZ1bG5lcmFiaWxpdHlfdHlwZXxkZWZhdWx0OicnID09ICdBdXRoZW50aWNhdGlvbid9c2VsZWN0ZWR7L2lmfT5BdXRoZW50aWNhdGlvbi9BdXRob3JpemF0aW9uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUkNFIiB7aWYgJHBvc3RfZGF0YS52dWxuZXJhYmlsaXR5X3R5cGV8ZGVmYXVsdDonJyA9PSAnUkNFJ31zZWxlY3RlZHsvaWZ9PlJlbW90ZSBDb2RlIEV4ZWN1dGlvbiAoUkNFKTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNTUkYiIHtpZiAkcG9zdF9kYXRhLnZ1bG5lcmFiaWxpdHlfdHlwZXxkZWZhdWx0OicnID09ICdTU1JGJ31zZWxlY3RlZHsvaWZ9PlNlcnZlci1TaWRlIFJlcXVlc3QgRm9yZ2VyeSAoU1NSRik8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJYWEUiIHtpZiAkcG9zdF9kYXRhLnZ1bG5lcmFiaWxpdHlfdHlwZXxkZWZhdWx0OicnID09ICdYWEUnfXNlbGVjdGVkey9pZn0+WE1MIEV4dGVybmFsIEVudGl0eSAoWFhFKTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkRhdGEgRXhwb3N1cmUiIHtpZiAkcG9zdF9kYXRhLnZ1bG5lcmFiaWxpdHlfdHlwZXxkZWZhdWx0OicnID09ICdEYXRhIEV4cG9zdXJlJ31zZWxlY3RlZHsvaWZ9PlNlbnNpdGl2ZSBEYXRhIEV4cG9zdXJlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29uZmlndXJhdGlvbiIge2lmICRwb3N0X2RhdGEudnVsbmVyYWJpbGl0eV90eXBlfGRlZmF1bHQ6JycgPT0gJ0NvbmZpZ3VyYXRpb24nfXNlbGVjdGVkey9pZn0+U2VjdXJpdHkgTWlzY29uZmlndXJhdGlvbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik90aGVyIiB7aWYgJHBvc3RfZGF0YS52dWxuZXJhYmlsaXR5X3R5cGV8ZGVmYXVsdDonJyA9PSAnT3RoZXInfXNlbGVjdGVkey9pZn0+T3RoZXI8L29wdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1mb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImFmZmVjdGVkX2RvbWFpbiI+QWZmZWN0ZWQgRG9tYWluL1NlcnZpY2UgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJhZmZlY3RlZF9kb21haW4iIG5hbWU9ImFmZmVjdGVkX2RvbWFpbiIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgYSBkb21haW4uLi48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICB7Zm9yZWFjaCBmcm9tPSRkb21haW5fb3B0aW9ucyBpdGVtPWRvbWFpbl9vcHRpb259CiAgICAgICAgICAgICAgICAgICAgICAgIHthc3NpZ24gdmFyPSJkb21haW5fdmFsdWUiIHZhbHVlPSRkb21haW5fb3B0aW9ufHJlZ2V4X3JlcGxhY2U6Ii8gXFwoTWFpblxcKSQvIjoiIn0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ieyRkb21haW5fdmFsdWV8ZXNjYXBlOidodG1sYWxsJ30iIHtpZiAkcG9zdF9kYXRhLmFmZmVjdGVkX2RvbWFpbnxkZWZhdWx0OicnID09ICRkb21haW5fdmFsdWV9c2VsZWN0ZWR7L2lmfT57JGRvbWFpbl9vcHRpb258ZXNjYXBlOidodG1sYWxsJ308L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICB7L2ZvcmVhY2h9CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTXVsdGlwbGUiIHtpZiAkcG9zdF9kYXRhLmFmZmVjdGVkX2RvbWFpbnxkZWZhdWx0OicnID09ICdNdWx0aXBsZSd9c2VsZWN0ZWR7L2lmfT5NdWx0aXBsZSBEb21haW5zPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iT3RoZXIiIHtpZiAkcG9zdF9kYXRhLmFmZmVjdGVkX2RvbWFpbnxkZWZhdWx0OicnID09ICdPdGhlcid9c2VsZWN0ZWR7L2lmfT5PdGhlcjwvb3B0aW9uPgogICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktdmRwLWZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZGVzY3JpcHRpb24iPlZ1bG5lcmFiaWxpdHkgRGVzY3JpcHRpb24gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9ImRlc2NyaXB0aW9uIiBuYW1lPSJkZXNjcmlwdGlvbiIgcmVxdWlyZWQgcm93cz0iOCI+eyRwb3N0X2RhdGEuZGVzY3JpcHRpb258ZGVmYXVsdDonJ3xlc2NhcGU6J2h0bWxhbGwnfTwvdGV4dGFyZWE+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktdmRwLWZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic3RlcHNfdG9fcmVwcm9kdWNlIj5TdGVwcyB0byBSZXByb2R1Y2U8L2xhYmVsPgogICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJzdGVwc190b19yZXByb2R1Y2UiIG5hbWU9InN0ZXBzX3RvX3JlcHJvZHVjZSIgcm93cz0iNiI+eyRwb3N0X2RhdGEuc3RlcHNfdG9fcmVwcm9kdWNlfGRlZmF1bHQ6Jyd8ZXNjYXBlOidodG1sYWxsJ308L3RleHRhcmVhPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1mb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InBvdGVudGlhbF9pbXBhY3QiPlBvdGVudGlhbCBJbXBhY3Q8L2xhYmVsPgogICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJwb3RlbnRpYWxfaW1wYWN0IiBuYW1lPSJwb3RlbnRpYWxfaW1wYWN0IiByb3dzPSI0Ij57JHBvc3RfZGF0YS5wb3RlbnRpYWxfaW1wYWN0fGRlZmF1bHQ6Jyd8ZXNjYXBlOidodG1sYWxsJ308L3RleHRhcmVhPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1mb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InN1Z2dlc3RlZF9maXgiPlN1Z2dlc3RlZCBGaXggKE9wdGlvbmFsKTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9InN1Z2dlc3RlZF9maXgiIG5hbWU9InN1Z2dlc3RlZF9maXgiIHJvd3M9IjQiPnskcG9zdF9kYXRhLnN1Z2dlc3RlZF9maXh8ZGVmYXVsdDonJ3xlc2NhcGU6J2h0bWxhbGwnfTwvdGV4dGFyZWE+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktdmRwLWZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgPGxhYmVsPkRpc2Nsb3N1cmUgUHJlZmVyZW5jZTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN1cml0eS12ZHAtcmFkaW8tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1yYWRpby1vcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJkaXNjbG9zdXJlX2Nvb3JkaW5hdGVkIiBuYW1lPSJkaXNjbG9zdXJlX3ByZWZlcmVuY2UiIHZhbHVlPSJjb29yZGluYXRlZCIge2lmICRwb3N0X2RhdGEuZGlzY2xvc3VyZV9wcmVmZXJlbmNlfGRlZmF1bHQ6J2Nvb3JkaW5hdGVkJyA9PSAnY29vcmRpbmF0ZWQnfWNoZWNrZWR7L2lmfT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZGlzY2xvc3VyZV9jb29yZGluYXRlZCI+Q29vcmRpbmF0ZWQgZGlzY2xvc3VyZSAocmVjb21tZW5kZWQpIC0gV2UnbGwgd29yayB0b2dldGhlciBvbiB0aW1pbmc8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3VyaXR5LXZkcC1yYWRpby1vcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJkaXNjbG9zdXJlX3ByaXZhdGUiIG5hbWU9ImRpc2Nsb3N1cmVfcHJlZmVyZW5jZSIgdmFsdWU9InByaXZhdGUiIHtpZiAkcG9zdF9kYXRhLmRpc2Nsb3N1cmVfcHJlZmVyZW5jZXxkZWZhdWx0OicnID09ICdwcml2YXRlJ31jaGVja2Vkey9pZn0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImRpc2Nsb3N1cmVfcHJpdmF0ZSI+UHJpdmF0ZSBkaXNjbG9zdXJlIC0gS2VlcCB0aGlzIGNvbmZpZGVudGlhbDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktdmRwLXJhZGlvLW9wdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9ImRpc2Nsb3N1cmVfcHVibGljIiBuYW1lPSJkaXNjbG9zdXJlX3ByZWZlcmVuY2UiIHZhbHVlPSJwdWJsaWMiIHtpZiAkcG9zdF9kYXRhLmRpc2Nsb3N1cmVfcHJlZmVyZW5jZXxkZWZhdWx0OicnID09ICdwdWJsaWMnfWNoZWNrZWR7L2lmfT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZGlzY2xvc3VyZV9wdWJsaWMiPlB1YmxpYyBkaXNjbG9zdXJlIC0gSSdtIG9rYXkgd2l0aCBwdWJsaWMgYWNrbm93bGVkZ21lbnQ8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdF92dWxuZXJhYmlsaXR5X3JlcG9ydCIgY2xhc3M9InNlY3VyaXR5LXZkcC1zdWJtaXQtYnRuIj5TdWJtaXQgUmVwb3J0PC9idXR0b24+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdXJpdHktdmRwLWZvb3RlciI+CiAgICAgICAgPHA+TGFzdCB1cGRhdGVkOiB7JHNtYXJ0eS5ub3d8ZGF0ZV9mb3JtYXQ6IiVCICVZIn08L3A+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGhyZWY9Inskcm9vdF91cmx9Ij5Ib21lPC9hPiB8CiAgICAgICAgICAgIDxhIGhyZWY9Inskcm9vdF91cmx9L3NlY3VyaXR5LWFja25vd2xlZGdtZW50cyI+U2VjdXJpdHkgQWNrbm93bGVkZ21lbnRzPC9hPiB8CiAgICAgICAgICAgIDxhIGhyZWY9Inskcm9vdF91cmx9L3NlY3VyaXR5LnR4dCI+U2VjdXJpdHkgUG9saWN5PC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2Pgo8L2Rpdj4KCg==]]></data>
	</file>
	<file>
	  <filename>/test-module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNlY3VyaXR5IE1vZHVsZSBUZXN0IFNjcmlwdAogKiAKICogUnVuIHRoaXMgdG8gdmVyaWZ5IHRoZSBtb2R1bGUgaXMgc2V0IHVwIGNvcnJlY3RseQogKiBBY2Nlc3MgdmlhOiBodHRwczovL3lvdXItZG9tYWluLmNvbS9tb2R1bGVzL01BU19TZWN1cml0eS90ZXN0LW1vZHVsZS5waHAKICogCiAqIFdBUk5JTkc6IERlbGV0ZSB0aGlzIGZpbGUgYWZ0ZXIgdGVzdGluZyEKICovCgovLyBMb2FkIENNU01TCmlmICghaXNzZXQoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pICYmIGlzc2V0KCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSkpIHsKICAgICRfU0VSVkVSWydSRVFVRVNUX1VSSSddID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiAkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ107Cn0KCnJlcXVpcmVfb25jZShfX0RJUl9fIC4gJy8uLi8uLi9saWIvaW5jbHVkZS5waHAnKTsKCmhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKTsKCmVjaG8gIjxoMT5TZWN1cml0eSBNb2R1bGUgVGVzdDwvaDE+IjsKCi8vIFRlc3QgMTogQ2hlY2sgaWYgbW9kdWxlIGZpbGUgZXhpc3RzCmVjaG8gIjxoMj4xLiBNb2R1bGUgRmlsZXMgQ2hlY2s8L2gyPiI7CiRmaWxlc190b19jaGVjayA9IGFycmF5KAogICAgJ01BU19TZWN1cml0eS5tb2R1bGUucGhwJyA9PiBfX0RJUl9fIC4gJy9NQVNfU2VjdXJpdHkubW9kdWxlLnBocCcsCiAgICAnYWN0aW9uLnZkcC5waHAnID0+IF9fRElSX18gLiAnL2FjdGlvbi52ZHAucGhwJywKICAgICdhY3Rpb24uYWNrbm93bGVkZ21lbnRzLnBocCcgPT4gX19ESVJfXyAuICcvYWN0aW9uLmFja25vd2xlZGdtZW50cy5waHAnLAogICAgJ3NlY3VyaXR5LWZ1bmN0aW9ucy5waHAnID0+IF9fRElSX18gLiAnL3NlY3VyaXR5LWZ1bmN0aW9ucy5waHAnLAogICAgJ3Z1bG5lcmFiaWxpdHktcmVwb3J0LWhhbmRsZXIucGhwJyA9PiBfX0RJUl9fIC4gJy92dWxuZXJhYmlsaXR5LXJlcG9ydC1oYW5kbGVyLnBocCcsCiAgICAndGVtcGxhdGVzL3ZkcC50cGwnID0+IF9fRElSX18gLiAnL3RlbXBsYXRlcy92ZHAudHBsJywKICAgICd0ZW1wbGF0ZXMvYWNrbm93bGVkZ21lbnRzLnRwbCcgPT4gX19ESVJfXyAuICcvdGVtcGxhdGVzL2Fja25vd2xlZGdtZW50cy50cGwnLAogICAgJ2Fja25vd2xlZGdtZW50cy1kYXRhLnBocCcgPT4gX19ESVJfXyAuICcvYWNrbm93bGVkZ21lbnRzLWRhdGEucGhwJywKKTsKCmZvcmVhY2ggKCRmaWxlc190b19jaGVjayBhcyAkbmFtZSA9PiAkcGF0aCkgewogICAgaWYgKGZpbGVfZXhpc3RzKCRwYXRoKSkgewogICAgICAgICRzaXplID0gZmlsZXNpemUoJHBhdGgpOwogICAgICAgICRsaW5lcyA9IGNvdW50KGZpbGUoJHBhdGgpKTsKICAgICAgICBlY2hvICLinIUgJG5hbWUgZXhpc3RzICgkbGluZXMgbGluZXMsICIgLiBudW1iZXJfZm9ybWF0KCRzaXplKSAuICIgYnl0ZXMpPGJyPiI7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gIuKdjCAkbmFtZSBNSVNTSU5HPGJyPiI7CiAgICB9Cn0KCi8vIFRlc3QgMjogQ2hlY2sgaWYgbW9kdWxlIGNsYXNzIGNhbiBiZSBsb2FkZWQKZWNobyAiPGgyPjIuIE1vZHVsZSBDbGFzcyBDaGVjazwvaDI+IjsKdHJ5IHsKICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BU19TZWN1cml0eScpOwogICAgaWYgKCRtb2QpIHsKICAgICAgICBlY2hvICLinIUgTUFTIFNlY3VyaXR5IG1vZHVsZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5PGJyPiI7CiAgICAgICAgZWNobyAiICAgVmVyc2lvbjogIiAuICRtb2QtPkdldFZlcnNpb24oKSAuICI8YnI+IjsKICAgICAgICBlY2hvICIgICBOYW1lOiAiIC4gJG1vZC0+R2V0TmFtZSgpIC4gIjxicj4iOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICLinYwgTUFTIFNlY3VyaXR5IG1vZHVsZSBOT1QgaW5zdGFsbGVkIG9yIGxvYWRlZDxicj4iOwogICAgICAgIGVjaG8gIiAgIDxzdHJvbmc+QWN0aW9uIFJlcXVpcmVkOjwvc3Ryb25nPiBJbnN0YWxsIHRoZSBtb2R1bGUgdmlhIEV4dGVuc2lvbnMg4oaSIE1vZHVsZSBNYW5hZ2VyIOKGkiBNQVMgU2VjdXJpdHkg4oaSIEluc3RhbGw8YnI+IjsKICAgIH0KfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICBlY2hvICLinYwgRXJyb3IgbG9hZGluZyBtb2R1bGU6ICIgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gIjxicj4iOwp9CgovLyBUZXN0IDM6IENoZWNrIGlmIHNlY3VyaXR5IGZ1bmN0aW9ucyBsb2FkCmVjaG8gIjxoMj4zLiBTZWN1cml0eSBGdW5jdGlvbnMgQ2hlY2s8L2gyPiI7CmlmIChmaWxlX2V4aXN0cyhfX0RJUl9fIC4gJy9zZWN1cml0eS1mdW5jdGlvbnMucGhwJykpIHsKICAgIHJlcXVpcmVfb25jZShfX0RJUl9fIC4gJy9zZWN1cml0eS1mdW5jdGlvbnMucGhwJyk7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdzZWN1cml0eV9nZW5lcmF0ZV9jc3JmX3Rva2VuJykpIHsKICAgICAgICBlY2hvICLinIUgc2VjdXJpdHlfZ2VuZXJhdGVfY3NyZl90b2tlbigpIGZ1bmN0aW9uIGV4aXN0czxicj4iOwogICAgICAgICR0b2tlbiA9IHNlY3VyaXR5X2dlbmVyYXRlX2NzcmZfdG9rZW4oKTsKICAgICAgICBlY2hvICIgICBUb2tlbiBnZW5lcmF0ZWQ6ICIgLiBzdWJzdHIoJHRva2VuLCAwLCAyMCkgLiAiLi4uPGJyPiI7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gIuKdjCBzZWN1cml0eV9nZW5lcmF0ZV9jc3JmX3Rva2VuKCkgZnVuY3Rpb24gbWlzc2luZzxicj4iOwogICAgfQogICAgCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdzZWN1cml0eV9jaGVja19yYXRlX2xpbWl0JykpIHsKICAgICAgICBlY2hvICLinIUgc2VjdXJpdHlfY2hlY2tfcmF0ZV9saW1pdCgpIGZ1bmN0aW9uIGV4aXN0czxicj4iOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICLinYwgc2VjdXJpdHlfY2hlY2tfcmF0ZV9saW1pdCgpIGZ1bmN0aW9uIG1pc3Npbmc8YnI+IjsKICAgIH0KfSBlbHNlIHsKICAgIGVjaG8gIuKdjCBzZWN1cml0eS1mdW5jdGlvbnMucGhwIG5vdCBmb3VuZDxicj4iOwp9CgovLyBUZXN0IDQ6IENoZWNrIGlmIHRlbXBsYXRlcyBleGlzdAplY2hvICI8aDI+NC4gVGVtcGxhdGVzIENoZWNrPC9oMj4iOwppZiAoZmlsZV9leGlzdHMoX19ESVJfXyAuICcvdGVtcGxhdGVzL3ZkcC50cGwnKSkgewogICAgJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cyhfX0RJUl9fIC4gJy90ZW1wbGF0ZXMvdmRwLnRwbCcpOwogICAgaWYgKHN0cnBvcygkY29udGVudCwgJ3skY3NyZl90b2tlbn0nKSAhPT0gZmFsc2UpIHsKICAgICAgICBlY2hvICLinIUgdmRwLnRwbCBleGlzdHMgYW5kIGNvbnRhaW5zIFNtYXJ0eSB2YXJpYWJsZXM8YnI+IjsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAi4pqg77iPIHZkcC50cGwgZXhpc3RzIGJ1dCBtYXkgbm90IGhhdmUgY29ycmVjdCBTbWFydHkgc3ludGF4PGJyPiI7CiAgICB9Cn0gZWxzZSB7CiAgICBlY2hvICLinYwgdmRwLnRwbCB0ZW1wbGF0ZSBtaXNzaW5nPGJyPiI7Cn0KCmlmIChmaWxlX2V4aXN0cyhfX0RJUl9fIC4gJy90ZW1wbGF0ZXMvYWNrbm93bGVkZ21lbnRzLnRwbCcpKSB7CiAgICBlY2hvICLinIUgYWNrbm93bGVkZ21lbnRzLnRwbCBleGlzdHM8YnI+IjsKfSBlbHNlIHsKICAgIGVjaG8gIuKdjCBhY2tub3dsZWRnbWVudHMudHBsIHRlbXBsYXRlIG1pc3Npbmc8YnI+IjsKfQoKLy8gVGVzdCA1OiBDaGVjayBwZXJtaXNzaW9ucwplY2hvICI8aDI+NS4gRmlsZSBQZXJtaXNzaW9ucyBDaGVjazwvaDI+IjsKJHBlcm1zX2NoZWNrID0gYXJyYXkoCiAgICAgICAgX19ESVJfXyAuICcvTUFTX1NlY3VyaXR5Lm1vZHVsZS5waHAnLAogICAgX19ESVJfXyAuICcvYWN0aW9uLnZkcC5waHAnLAogICAgX19ESVJfXyAuICcvYWN0aW9uLmFja25vd2xlZGdtZW50cy5waHAnLAopOwoKZm9yZWFjaCAoJHBlcm1zX2NoZWNrIGFzICRmaWxlKSB7CiAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgJHBlcm1zID0gc3Vic3RyKHNwcmludGYoJyVvJywgZmlsZXBlcm1zKCRmaWxlKSksIC00KTsKICAgICAgICAkb3duZXIgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGZpbGUpKTsKICAgICAgICAkZ3JvdXAgPSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJGZpbGUpKTsKICAgICAgICBlY2hvICJGaWxlOiAiIC4gYmFzZW5hbWUoJGZpbGUpIC4gIjxicj4iOwogICAgICAgIGVjaG8gIiAgIFBlcm1pc3Npb25zOiAkcGVybXM8YnI+IjsKICAgICAgICBlY2hvICIgICBPd25lcjogeyRvd25lclsnbmFtZSddfSAoeyRvd25lclsndWlkJ119KTxicj4iOwogICAgICAgIGVjaG8gIiAgIEdyb3VwOiB7JGdyb3VwWyduYW1lJ119ICh7JGdyb3VwWydnaWQnXX0pPGJyPiI7CiAgICAgICAgCiAgICAgICAgaWYgKCRwZXJtcyA9PSAnMDY0NCcgfHwgJHBlcm1zID09ICcwNzU1JykgewogICAgICAgICAgICBlY2hvICIgICDinIUgUGVybWlzc2lvbnMgT0s8YnI+IjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICIgICDimqDvuI8gUGVybWlzc2lvbnMgbWF5IG5lZWQgYWRqdXN0bWVudDxicj4iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJG93bmVyWyduYW1lJ10gPT0gJ25ld3N0MzkyMicpIHsKICAgICAgICAgICAgZWNobyAiICAg4pyFIE93bmVyIGNvcnJlY3Q8YnI+IjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICIgICDimqDvuI8gT3duZXIgc2hvdWxkIGJlIG5ld3N0MzkyMjxicj4iOwogICAgICAgIH0KICAgICAgICBlY2hvICI8YnI+IjsKICAgIH0KfQoKLy8gVGVzdCA2OiBDaGVjayBDTVNNUyBjb250ZW50IHBhZ2VzCmVjaG8gIjxoMj42LiBDTVNNUyBDb250ZW50IFBhZ2VzIENoZWNrPC9oMj4iOwplY2hvICI8cD48c3Ryb25nPklNUE9SVEFOVDo8L3N0cm9uZz4gTWFrZSBzdXJlIHlvdXIgQ01TTVMgY29udGVudCBwYWdlcyB1c2UgT05MWTo8L3A+IjsKZWNobyAiPHByZT4iOwplY2hvICJGb3IgVkRQIHBhZ2U6XG4iOwplY2hvICJ7Y21zX21vZHVsZSBtb2R1bGU9J01BU19TZWN1cml0eScgYWN0aW9uPSd2ZHAnfVxuXG4iOwplY2hvICJGb3IgQWNrbm93bGVkZ21lbnRzIHBhZ2U6XG4iOwplY2hvICJ7Y21zX21vZHVsZSBtb2R1bGU9J01BU19TZWN1cml0eScgYWN0aW9uPSdhY2tub3dsZWRnbWVudHMnfSI7CmVjaG8gIjwvcHJlPiI7CmVjaG8gIjxwPjxzdHJvbmc+RE8gTk9UPC9zdHJvbmc+IGNvcHkgUEhQIGNvZGUgZnJvbSB0aGUgb2xkIHN0YW5kYWxvbmUgZmlsZXMgaW50byBDTVNNUyBjb250ZW50ITwvcD4iOwoKLy8gVGVzdCA3OiBNb2R1bGUgYWN0aW9uIHRlc3QKZWNobyAiPGgyPjcuIE1vZHVsZSBBY3Rpb24gVGVzdDwvaDI+IjsKaWYgKCRtb2QpIHsKICAgIHRyeSB7CiAgICAgICAgLy8gVGVzdCBpZiBhY3Rpb24gZmlsZXMgY2FuIGJlIGZvdW5kCiAgICAgICAgJGFjdGlvbl9maWxlID0gX19ESVJfXyAuICcvYWN0aW9uLnZkcC5waHAnOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkYWN0aW9uX2ZpbGUpKSB7CiAgICAgICAgICAgIGVjaG8gIuKchSBhY3Rpb24udmRwLnBocCBleGlzdHMgYW5kIHNob3VsZCBiZSBsb2FkYWJsZTxicj4iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gIuKdjCBhY3Rpb24udmRwLnBocCBtaXNzaW5nPGJyPiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRhY3Rpb25fZmlsZTIgPSBfX0RJUl9fIC4gJy9hY3Rpb24uYWNrbm93bGVkZ21lbnRzLnBocCc7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRhY3Rpb25fZmlsZTIpKSB7CiAgICAgICAgICAgIGVjaG8gIuKchSBhY3Rpb24uYWNrbm93bGVkZ21lbnRzLnBocCBleGlzdHMgYW5kIHNob3VsZCBiZSBsb2FkYWJsZTxicj4iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gIuKdjCBhY3Rpb24uYWNrbm93bGVkZ21lbnRzLnBocCBtaXNzaW5nPGJyPiI7CiAgICAgICAgfQogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgZWNobyAi4p2MIEVycm9yIHRlc3RpbmcgYWN0aW9uczogIiAuIGh0bWxzcGVjaWFsY2hhcnMoJGUtPmdldE1lc3NhZ2UoKSkgLiAiPGJyPiI7CiAgICB9Cn0gZWxzZSB7CiAgICBlY2hvICLimqDvuI8gQ2Fubm90IHRlc3QgYWN0aW9ucyAtIG1vZHVsZSBub3QgbG9hZGVkPGJyPiI7Cn0KCmVjaG8gIjxocj4iOwplY2hvICI8aDI+TmV4dCBTdGVwczwvaDI+IjsKZWNobyAiPG9sPiI7CmVjaG8gIjxsaT5JbnN0YWxsIHRoZSBNQVMgU2VjdXJpdHkgbW9kdWxlOiA8c3Ryb25nPkV4dGVuc2lvbnMg4oaSIE1vZHVsZSBNYW5hZ2VyIOKGkiBNQVMgU2VjdXJpdHkg4oaSIEluc3RhbGw8L3N0cm9uZz48L2xpPiI7CmVjaG8gIjxsaT5DcmVhdGUgY29udGVudCBwYWdlIHdpdGggYWxpYXMgPGNvZGU+dnVsbmVyYWJpbGl0eS1kaXNjbG9zdXJlPC9jb2RlPiBhbmQgYWRkOiA8Y29kZT57Y21zX21vZHVsZSBtb2R1bGU9J01BU19TZWN1cml0eScgYWN0aW9uPSd2ZHAnfTwvY29kZT48L2xpPiI7CmVjaG8gIjxsaT5DcmVhdGUgY29udGVudCBwYWdlIHdpdGggYWxpYXMgPGNvZGU+c2VjdXJpdHktYWNrbm93bGVkZ21lbnRzPC9jb2RlPiBhbmQgYWRkOiA8Y29kZT57Y21zX21vZHVsZSBtb2R1bGU9J01BU19TZWN1cml0eScgYWN0aW9uPSdhY2tub3dsZWRnbWVudHMnfTwvY29kZT48L2xpPiI7CmVjaG8gIjxsaT5UZXN0IHRoZSBwYWdlcyBhdCA8Y29kZT4vdnVsbmVyYWJpbGl0eS1kaXNjbG9zdXJlPC9jb2RlPiBhbmQgPGNvZGU+L3NlY3VyaXR5LWFja25vd2xlZGdtZW50czwvY29kZT48L2xpPiI7CmVjaG8gIjxsaT48c3Ryb25nPkRFTEVURSBUSElTIFRFU1QgRklMRTwvc3Ryb25nPiBhZnRlciB2ZXJpZmljYXRpb248L2xpPiI7CmVjaG8gIjwvb2w+IjsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/vulnerability-report-handler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFZ1bG5lcmFiaWxpdHkgUmVwb3J0IEhhbmRsZXIKICogCiAqIFNlY3VyZWx5IHByb2Nlc3NlcyB2dWxuZXJhYmlsaXR5IGRpc2Nsb3N1cmUgZm9ybSBzdWJtaXNzaW9ucy4KICogSW5jbHVkZXMgQ1NSRiBwcm90ZWN0aW9uLCByYXRlIGxpbWl0aW5nLCBpbnB1dCB2YWxpZGF0aW9uLCBhbmQgZW1haWwgbm90aWZpY2F0aW9ucy4KICogCiAqIEBwYWNrYWdlIFNlY3VyaXR5CiAqLwoKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSB7CiAgICBleGl0Owp9CgovLyBMb2FkIHNlY3VyaXR5IGZ1bmN0aW9ucwpyZXF1aXJlX29uY2UoX19ESVJfXyAuICcvc2VjdXJpdHktZnVuY3Rpb25zLnBocCcpOwoKLyoqCiAqIFByb2Nlc3MgdnVsbmVyYWJpbGl0eSByZXBvcnQgZm9ybSBzdWJtaXNzaW9uCiAqIAogKiBAcmV0dXJuIGFycmF5IEFycmF5IHdpdGggJ3N1Y2Nlc3MnIGJvb2xlYW4gYW5kICdtZXNzYWdlJyBzdHJpbmcKICovCmZ1bmN0aW9uIHByb2Nlc3NfdnVsbmVyYWJpbGl0eV9yZXBvcnQoKSB7CiAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgUE9TVCByZXF1ZXN0CiAgICBpZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gIT09ICdQT1NUJykgewogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgJ3N1Y2Nlc3MnID0+IGZhbHNlLAogICAgICAgICAgICAnbWVzc2FnZScgPT4gJ0ludmFsaWQgcmVxdWVzdCBtZXRob2QuJwogICAgICAgICk7CiAgICB9CiAgICAKICAgIC8vIFN0YXJ0IHNlc3Npb24gZm9yIENTUkYgdG9rZW4KICAgIGlmIChzZXNzaW9uX3N0YXR1cygpID09PSBQSFBfU0VTU0lPTl9OT05FKSB7CiAgICAgICAgc2Vzc2lvbl9zdGFydCgpOwogICAgfQogICAgCiAgICAvLyBHZXQgY2xpZW50IElQCiAgICAkY2xpZW50X2lwID0gc2VjdXJpdHlfZ2V0X2NsaWVudF9pcCgpOwogICAgCiAgICAvLyBDaGVjayByYXRlIGxpbWl0ICgzIHN1Ym1pc3Npb25zIHBlciBob3VyIHBlciBJUCkKICAgICRyYXRlX2xpbWl0ID0gc2VjdXJpdHlfY2hlY2tfcmF0ZV9saW1pdCgkY2xpZW50X2lwLCAzLCAzNjAwKTsKICAgIGlmICghJHJhdGVfbGltaXRbJ2FsbG93ZWQnXSkgewogICAgICAgIHNlY3VyaXR5X2xvZ19ldmVudCgncmF0ZV9saW1pdF9leGNlZWRlZCcsIGFycmF5KCdpcCcgPT4gJGNsaWVudF9pcCkpOwogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgJ3N1Y2Nlc3MnID0+IGZhbHNlLAogICAgICAgICAgICAnbWVzc2FnZScgPT4gJ1RvbyBtYW55IHN1Ym1pc3Npb25zLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsCiAgICAgICAgICAgICdyZXRyeV9hZnRlcicgPT4gJHJhdGVfbGltaXRbJ3JldHJ5X2FmdGVyJ10KICAgICAgICApOwogICAgfQogICAgCiAgICAvLyBWYWxpZGF0ZSBDU1JGIHRva2VuCiAgICAkY3NyZl90b2tlbiA9IGlzc2V0KCRfUE9TVFsnY3NyZl90b2tlbiddKSA/ICRfUE9TVFsnY3NyZl90b2tlbiddIDogJyc7CiAgICBpZiAoIXNlY3VyaXR5X3ZhbGlkYXRlX2NzcmZfdG9rZW4oJGNzcmZfdG9rZW4pKSB7CiAgICAgICAgc2VjdXJpdHlfbG9nX2V2ZW50KCdjc3JmX3Rva2VuX2ludmFsaWQnLCBhcnJheSgnaXAnID0+ICRjbGllbnRfaXApKTsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdzdWNjZXNzJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ21lc3NhZ2UnID0+ICdJbnZhbGlkIHNlY3VyaXR5IHRva2VuLiBQbGVhc2UgcmVmcmVzaCB0aGUgcGFnZSBhbmQgdHJ5IGFnYWluLicKICAgICAgICApOwogICAgfQogICAgCiAgICAvLyBIb25leXBvdCBmaWVsZCAoc2hvdWxkIGJlIGVtcHR5KQogICAgaWYgKCFlbXB0eSgkX1BPU1RbJ3dlYnNpdGUnXSkpIHsKICAgICAgICBzZWN1cml0eV9sb2dfZXZlbnQoJ2hvbmV5cG90X3RyaWdnZXJlZCcsIGFycmF5KCdpcCcgPT4gJGNsaWVudF9pcCkpOwogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgJ3N1Y2Nlc3MnID0+IGZhbHNlLAogICAgICAgICAgICAnbWVzc2FnZScgPT4gJ0ludmFsaWQgc3VibWlzc2lvbi4nCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgLy8gU2FuaXRpemUgYW5kIHZhbGlkYXRlIGlucHV0cwogICAgJHJlcG9ydGVyX25hbWUgPSBzZWN1cml0eV9zYW5pdGl6ZV9pbnB1dCgkX1BPU1RbJ3JlcG9ydGVyX25hbWUnXSA/PyAnJywgJ3N0cmluZycpOwogICAgJHJlcG9ydGVyX2VtYWlsID0gc2VjdXJpdHlfc2FuaXRpemVfaW5wdXQoJF9QT1NUWydyZXBvcnRlcl9lbWFpbCddID8/ICcnLCAnZW1haWwnKTsKICAgICR2dWxuZXJhYmlsaXR5X3R5cGUgPSBzZWN1cml0eV9zYW5pdGl6ZV9pbnB1dCgkX1BPU1RbJ3Z1bG5lcmFiaWxpdHlfdHlwZSddID8/ICcnLCAnc3RyaW5nJyk7CiAgICAkYWZmZWN0ZWRfZG9tYWluID0gc2VjdXJpdHlfc2FuaXRpemVfaW5wdXQoJF9QT1NUWydhZmZlY3RlZF9kb21haW4nXSA/PyAnJywgJ3N0cmluZycpOwogICAgJGRlc2NyaXB0aW9uID0gc2VjdXJpdHlfc2FuaXRpemVfaW5wdXQoJF9QT1NUWydkZXNjcmlwdGlvbiddID8/ICcnLCAnaHRtbCcpOwogICAgJHN0ZXBzX3RvX3JlcHJvZHVjZSA9IHNlY3VyaXR5X3Nhbml0aXplX2lucHV0KCRfUE9TVFsnc3RlcHNfdG9fcmVwcm9kdWNlJ10gPz8gJycsICdodG1sJyk7CiAgICAkcG90ZW50aWFsX2ltcGFjdCA9IHNlY3VyaXR5X3Nhbml0aXplX2lucHV0KCRfUE9TVFsncG90ZW50aWFsX2ltcGFjdCddID8/ICcnLCAnaHRtbCcpOwogICAgJHN1Z2dlc3RlZF9maXggPSBzZWN1cml0eV9zYW5pdGl6ZV9pbnB1dCgkX1BPU1RbJ3N1Z2dlc3RlZF9maXgnXSA/PyAnJywgJ2h0bWwnKTsKICAgICRkaXNjbG9zdXJlX3ByZWZlcmVuY2UgPSBzZWN1cml0eV9zYW5pdGl6ZV9pbnB1dCgkX1BPU1RbJ2Rpc2Nsb3N1cmVfcHJlZmVyZW5jZSddID8/ICdjb29yZGluYXRlZCcsICdzdHJpbmcnKTsKICAgIAogICAgLy8gVmFsaWRhdGUgcmVxdWlyZWQgZmllbGRzCiAgICBpZiAoZW1wdHkoJHJlcG9ydGVyX2VtYWlsKSB8fCAhc2VjdXJpdHlfdmFsaWRhdGVfZW1haWwoJHJlcG9ydGVyX2VtYWlsKSkgewogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgJ3N1Y2Nlc3MnID0+IGZhbHNlLAogICAgICAgICAgICAnbWVzc2FnZScgPT4gJ1ZhbGlkIGVtYWlsIGFkZHJlc3MgaXMgcmVxdWlyZWQuJwogICAgICAgICk7CiAgICB9CiAgICAKICAgIGlmIChlbXB0eSgkZGVzY3JpcHRpb24pKSB7CiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAnc3VjY2VzcycgPT4gZmFsc2UsCiAgICAgICAgICAgICdtZXNzYWdlJyA9PiAnVnVsbmVyYWJpbGl0eSBkZXNjcmlwdGlvbiBpcyByZXF1aXJlZC4nCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgaWYgKGVtcHR5KCR2dWxuZXJhYmlsaXR5X3R5cGUpKSB7CiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAnc3VjY2VzcycgPT4gZmFsc2UsCiAgICAgICAgICAgICdtZXNzYWdlJyA9PiAnVnVsbmVyYWJpbGl0eSB0eXBlIGlzIHJlcXVpcmVkLicKICAgICAgICApOwogICAgfQogICAgCiAgICBpZiAoZW1wdHkoJGFmZmVjdGVkX2RvbWFpbikpIHsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdzdWNjZXNzJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ21lc3NhZ2UnID0+ICdBZmZlY3RlZCBkb21haW4gaXMgcmVxdWlyZWQuJwogICAgICAgICk7CiAgICB9CiAgICAKICAgIC8vIFZhbGlkYXRlIGRpc2Nsb3N1cmUgcHJlZmVyZW5jZQogICAgJGFsbG93ZWRfcHJlZmVyZW5jZXMgPSBhcnJheSgncHVibGljJywgJ3ByaXZhdGUnLCAnY29vcmRpbmF0ZWQnKTsKICAgIGlmICghaW5fYXJyYXkoJGRpc2Nsb3N1cmVfcHJlZmVyZW5jZSwgJGFsbG93ZWRfcHJlZmVyZW5jZXMpKSB7CiAgICAgICAgJGRpc2Nsb3N1cmVfcHJlZmVyZW5jZSA9ICdjb29yZGluYXRlZCc7CiAgICB9CiAgICAKICAgIC8vIEdldCBzZWN1cml0eSBlbWFpbCBmcm9tIGNvbmZpZyBvciBwcmVmZXJlbmNlcwogICAgJGNvbmZpZyA9IGNtc191dGlsczo6Z2V0X2NvbmZpZygpOwogICAgJHNlY3VyaXR5X2VtYWlsID0gaXNzZXQoJGNvbmZpZ1snc2VjdXJpdHlfZW1haWwnXSkgPyAkY29uZmlnWydzZWN1cml0eV9lbWFpbCddIDogbnVsbDsKICAgIAogICAgLy8gSWYgbm90IGluIGNvbmZpZywgdHJ5IHRvIGdldCBmcm9tIG1vZHVsZSBwcmVmZXJlbmNlcwogICAgaWYgKGVtcHR5KCRzZWN1cml0eV9lbWFpbCkpIHsKICAgICAgICAkbW9kaW5zdGFuY2UgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BU19TZWN1cml0eScpOwogICAgICAgIGlmICgkbW9kaW5zdGFuY2UpIHsKICAgICAgICAgICAgJHNlY3VyaXR5X2VtYWlsID0gJG1vZGluc3RhbmNlLT5HZXRQcmVmZXJlbmNlKCdzZWN1cml0eV9lbWFpbCcpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gSWYgc3RpbGwgZW1wdHksIGdldCBhZG1pbiBlbWFpbCBmcm9tIENNU01TIHVzZXIgdGFibGUKICAgIGlmIChlbXB0eSgkc2VjdXJpdHlfZW1haWwpKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAgICAgJGFkbWluX3VzZXIgPSAkZGItPkdldFJvdygnU0VMRUNUIGVtYWlsIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAndXNlcnMgV0hFUkUgdXNlcl9pZCA9IDEnKTsKICAgICAgICAgICAgaWYgKCRhZG1pbl91c2VyICYmIGlzc2V0KCRhZG1pbl91c2VyWydlbWFpbCddKSkgewogICAgICAgICAgICAgICAgJHNlY3VyaXR5X2VtYWlsID0gJGFkbWluX3VzZXJbJ2VtYWlsJ107CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgLy8gRmFsbGJhY2sgaWYgcXVlcnkgZmFpbHMKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEZpbmFsIGZhbGxiYWNrOiBjb25zdHJ1Y3QgZnJvbSBkb21haW4KICAgIGlmIChlbXB0eSgkc2VjdXJpdHlfZW1haWwpKSB7CiAgICAgICAgJGJhc2VfZG9tYWluID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICd5b3VyLXNpdGUuY29tJzsKICAgICAgICAkc2VjdXJpdHlfZW1haWwgPSAnc2VjdXJpdHlAJyAuICRiYXNlX2RvbWFpbjsKICAgIH0KICAgIAogICAgLy8gUHJlcGFyZSBlbWFpbCBjb250ZW50CiAgICAkZW1haWxfc3ViamVjdCA9ICdbU2VjdXJpdHldIFZ1bG5lcmFiaWxpdHkgUmVwb3J0IC0gJyAuICR2dWxuZXJhYmlsaXR5X3R5cGU7CiAgICAKICAgICRlbWFpbF9ib2R5X2h0bWwgPSAnPGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0iVVRGLTgiPjwvaGVhZD48Ym9keT4nOwogICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPGgyPlZ1bG5lcmFiaWxpdHkgRGlzY2xvc3VyZSBSZXBvcnQ8L2gyPic7CiAgICAkZW1haWxfYm9keV9odG1sIC49ICc8cD48c3Ryb25nPlJlY2VpdmVkOjwvc3Ryb25nPiAnIC4gZGF0ZSgnWS1tLWQgSDppOnMgVCcpIC4gJzwvcD4nOwogICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPGhyPic7CiAgICAKICAgICRlbWFpbF9ib2R5X2h0bWwgLj0gJzxoMz5SZXBvcnRlciBJbmZvcm1hdGlvbjwvaDM+JzsKICAgICRlbWFpbF9ib2R5X2h0bWwgLj0gJzxwPjxzdHJvbmc+TmFtZTo8L3N0cm9uZz4gJyAuICgkcmVwb3J0ZXJfbmFtZSA/IGh0bWxzcGVjaWFsY2hhcnMoJHJlcG9ydGVyX25hbWUsIEVOVF9RVU9URVMsICdVVEYtOCcpIDogJ05vdCBwcm92aWRlZCcpIC4gJzwvcD4nOwogICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPHA+PHN0cm9uZz5FbWFpbDo8L3N0cm9uZz4gJyAuIGh0bWxzcGVjaWFsY2hhcnMoJHJlcG9ydGVyX2VtYWlsLCBFTlRfUVVPVEVTLCAnVVRGLTgnKSAuICc8L3A+JzsKICAgICRlbWFpbF9ib2R5X2h0bWwgLj0gJzxwPjxzdHJvbmc+SVAgQWRkcmVzczo8L3N0cm9uZz4gJyAuIGh0bWxzcGVjaWFsY2hhcnMoJGNsaWVudF9pcCwgRU5UX1FVT1RFUywgJ1VURi04JykgLiAnPC9wPic7CiAgICAKICAgICRlbWFpbF9ib2R5X2h0bWwgLj0gJzxoMz5WdWxuZXJhYmlsaXR5IERldGFpbHM8L2gzPic7CiAgICAkZW1haWxfYm9keV9odG1sIC49ICc8cD48c3Ryb25nPlR5cGU6PC9zdHJvbmc+ICcgLiBodG1sc3BlY2lhbGNoYXJzKCR2dWxuZXJhYmlsaXR5X3R5cGUsIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJzwvcD4nOwogICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPHA+PHN0cm9uZz5BZmZlY3RlZCBEb21haW46PC9zdHJvbmc+ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRhZmZlY3RlZF9kb21haW4sIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJzwvcD4nOwogICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPHA+PHN0cm9uZz5EaXNjbG9zdXJlIFByZWZlcmVuY2U6PC9zdHJvbmc+ICcgLiBodG1sc3BlY2lhbGNoYXJzKHVjZmlyc3QoJGRpc2Nsb3N1cmVfcHJlZmVyZW5jZSksIEVOVF9RVU9URVMsICdVVEYtOCcpIC4gJzwvcD4nOwogICAgCiAgICAkZW1haWxfYm9keV9odG1sIC49ICc8aDM+RGVzY3JpcHRpb248L2gzPic7CiAgICAkZW1haWxfYm9keV9odG1sIC49ICc8ZGl2PicgLiBubDJicigkZGVzY3JpcHRpb24pIC4gJzwvZGl2Pic7CiAgICAKICAgIGlmICghZW1wdHkoJHN0ZXBzX3RvX3JlcHJvZHVjZSkpIHsKICAgICAgICAkZW1haWxfYm9keV9odG1sIC49ICc8aDM+U3RlcHMgdG8gUmVwcm9kdWNlPC9oMz4nOwogICAgICAgICRlbWFpbF9ib2R5X2h0bWwgLj0gJzxkaXY+JyAuIG5sMmJyKCRzdGVwc190b19yZXByb2R1Y2UpIC4gJzwvZGl2Pic7CiAgICB9CiAgICAKICAgIGlmICghZW1wdHkoJHBvdGVudGlhbF9pbXBhY3QpKSB7CiAgICAgICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPGgzPlBvdGVudGlhbCBJbXBhY3Q8L2gzPic7CiAgICAgICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPGRpdj4nIC4gbmwyYnIoJHBvdGVudGlhbF9pbXBhY3QpIC4gJzwvZGl2Pic7CiAgICB9CiAgICAKICAgIGlmICghZW1wdHkoJHN1Z2dlc3RlZF9maXgpKSB7CiAgICAgICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPGgzPlN1Z2dlc3RlZCBGaXg8L2gzPic7CiAgICAgICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPGRpdj4nIC4gbmwyYnIoJHN1Z2dlc3RlZF9maXgpIC4gJzwvZGl2Pic7CiAgICB9CiAgICAKICAgICRlbWFpbF9ib2R5X2h0bWwgLj0gJzxocj4nOwogICAgJGVtYWlsX2JvZHlfaHRtbCAuPSAnPHA+PHNtYWxsPlRoaXMgaXMgYW4gYXV0b21hdGVkIG1lc3NhZ2UgZnJvbSB0aGUgVnVsbmVyYWJpbGl0eSBEaXNjbG9zdXJlIFBvbGljeSBmb3JtLjwvc21hbGw+PC9wPic7CiAgICAkZW1haWxfYm9keV9odG1sIC49ICc8L2JvZHk+PC9odG1sPic7CiAgICAKICAgIC8vIFBsYWluIHRleHQgdmVyc2lvbgogICAgJGVtYWlsX2JvZHlfdGV4dCA9ICJWdWxuZXJhYmlsaXR5IERpc2Nsb3N1cmUgUmVwb3J0XG4iOwogICAgJGVtYWlsX2JvZHlfdGV4dCAuPSAiUmVjZWl2ZWQ6ICIgLiBkYXRlKCdZLW0tZCBIOmk6cyBUJykgLiAiXG5cbiI7CiAgICAkZW1haWxfYm9keV90ZXh0IC49ICJSZXBvcnRlciBJbmZvcm1hdGlvbjpcbiI7CiAgICAkZW1haWxfYm9keV90ZXh0IC49ICJOYW1lOiAiIC4gKCRyZXBvcnRlcl9uYW1lID8gJHJlcG9ydGVyX25hbWUgOiAnTm90IHByb3ZpZGVkJykgLiAiXG4iOwogICAgJGVtYWlsX2JvZHlfdGV4dCAuPSAiRW1haWw6ICIgLiAkcmVwb3J0ZXJfZW1haWwgLiAiXG4iOwogICAgJGVtYWlsX2JvZHlfdGV4dCAuPSAiSVAgQWRkcmVzczogIiAuICRjbGllbnRfaXAgLiAiXG5cbiI7CiAgICAkZW1haWxfYm9keV90ZXh0IC49ICJWdWxuZXJhYmlsaXR5IERldGFpbHM6XG4iOwogICAgJGVtYWlsX2JvZHlfdGV4dCAuPSAiVHlwZTogIiAuICR2dWxuZXJhYmlsaXR5X3R5cGUgLiAiXG4iOwogICAgJGVtYWlsX2JvZHlfdGV4dCAuPSAiQWZmZWN0ZWQgRG9tYWluOiAiIC4gJGFmZmVjdGVkX2RvbWFpbiAuICJcbiI7CiAgICAkZW1haWxfYm9keV90ZXh0IC49ICJEaXNjbG9zdXJlIFByZWZlcmVuY2U6ICIgLiB1Y2ZpcnN0KCRkaXNjbG9zdXJlX3ByZWZlcmVuY2UpIC4gIlxuXG4iOwogICAgJGVtYWlsX2JvZHlfdGV4dCAuPSAiRGVzY3JpcHRpb246XG4iIC4gc3RyaXBfdGFncygkZGVzY3JpcHRpb24pIC4gIlxuXG4iOwogICAgaWYgKCFlbXB0eSgkc3RlcHNfdG9fcmVwcm9kdWNlKSkgewogICAgICAgICRlbWFpbF9ib2R5X3RleHQgLj0gIlN0ZXBzIHRvIFJlcHJvZHVjZTpcbiIgLiBzdHJpcF90YWdzKCRzdGVwc190b19yZXByb2R1Y2UpIC4gIlxuXG4iOwogICAgfQogICAgaWYgKCFlbXB0eSgkcG90ZW50aWFsX2ltcGFjdCkpIHsKICAgICAgICAkZW1haWxfYm9keV90ZXh0IC49ICJQb3RlbnRpYWwgSW1wYWN0OlxuIiAuIHN0cmlwX3RhZ3MoJHBvdGVudGlhbF9pbXBhY3QpIC4gIlxuXG4iOwogICAgfQogICAgaWYgKCFlbXB0eSgkc3VnZ2VzdGVkX2ZpeCkpIHsKICAgICAgICAkZW1haWxfYm9keV90ZXh0IC49ICJTdWdnZXN0ZWQgRml4OlxuIiAuIHN0cmlwX3RhZ3MoJHN1Z2dlc3RlZF9maXgpIC4gIlxuXG4iOwogICAgfQogICAgCiAgICAvLyBTZW5kIGVtYWlsIHRvIHNlY3VyaXR5IHRlYW0KICAgIHRyeSB7CiAgICAgICAgJG1haWxlciA9IG5ldyBjbXNfbWFpbGVyKEZBTFNFKTsKICAgICAgICAkbWFpbGVyLT5yZXNldCgpOwogICAgICAgICRtYWlsZXItPkFkZEFkZHJlc3MoJHNlY3VyaXR5X2VtYWlsKTsKICAgICAgICAKICAgICAgICAvLyBSZXBseS1UbyBoZWFkZXIgd2l0aCByZXBvcnRlciBlbWFpbAogICAgICAgICRtYWlsZXItPlNldFJlcGx5VG8oJHJlcG9ydGVyX2VtYWlsLCAkcmVwb3J0ZXJfbmFtZSA/ICRyZXBvcnRlcl9uYW1lIDogJycpOwogICAgICAgIAogICAgICAgICRtYWlsZXItPlNldFN1YmplY3QoJGVtYWlsX3N1YmplY3QpOwogICAgICAgICRtYWlsZXItPlNldEJvZHkoJGVtYWlsX2JvZHlfaHRtbCk7CiAgICAgICAgJG1haWxlci0+SXNIVE1MKFRSVUUpOwogICAgICAgICRtYWlsZXItPlNldFByaW9yaXR5KDEpOyAvLyBIaWdoIHByaW9yaXR5CiAgICAgICAgCiAgICAgICAgJHNlbmRfcmVzdWx0ID0gJG1haWxlci0+U2VuZCgpOwogICAgICAgIAogICAgICAgIGlmICghJHNlbmRfcmVzdWx0KSB7CiAgICAgICAgICAgIHNlY3VyaXR5X2xvZ19ldmVudCgnZW1haWxfc2VuZF9mYWlsZWQnLCBhcnJheSgKICAgICAgICAgICAgICAgICdpcCcgPT4gJGNsaWVudF9pcCwKICAgICAgICAgICAgICAgICdyZXBvcnRlcl9lbWFpbCcgPT4gJHJlcG9ydGVyX2VtYWlsLAogICAgICAgICAgICAgICAgJ2Vycm9yJyA9PiAnTWFpbGVyIHNlbmQgZmFpbGVkJwogICAgICAgICAgICApKTsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnID0+IGZhbHNlLAogICAgICAgICAgICAgICAgJ21lc3NhZ2UnID0+ICdGYWlsZWQgdG8gc2VuZCByZXBvcnQuIFBsZWFzZSB0cnkgYWdhaW4gb3IgY29udGFjdCB1cyBkaXJlY3RseS4nCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFNlbmQgY29uZmlybWF0aW9uIGVtYWlsIHRvIHJlcG9ydGVyCiAgICAgICAgJGNvbmZpcm1fc3ViamVjdCA9ICdWdWxuZXJhYmlsaXR5IFJlcG9ydCBSZWNlaXZlZCAtICcgLiAkdnVsbmVyYWJpbGl0eV90eXBlOwogICAgICAgICRjb25maXJtX2JvZHkgPSAnPGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0iVVRGLTgiPjwvaGVhZD48Ym9keT4nOwogICAgICAgICRjb25maXJtX2JvZHkgLj0gJzxoMj5UaGFuayBZb3UgZm9yIFlvdXIgUmVwb3J0PC9oMj4nOwogICAgICAgICRjb25maXJtX2JvZHkgLj0gJzxwPldlIGhhdmUgcmVjZWl2ZWQgeW91ciB2dWxuZXJhYmlsaXR5IGRpc2Nsb3N1cmUgcmVwb3J0IGFuZCB3aWxsIHJldmlldyBpdCBwcm9tcHRseS48L3A+JzsKICAgICAgICAkY29uZmlybV9ib2R5IC49ICc8aDM+UmVwb3J0IFN1bW1hcnk8L2gzPic7CiAgICAgICAgJGNvbmZpcm1fYm9keSAuPSAnPHA+PHN0cm9uZz5UeXBlOjwvc3Ryb25nPiAnIC4gaHRtbHNwZWNpYWxjaGFycygkdnVsbmVyYWJpbGl0eV90eXBlLCBFTlRfUVVPVEVTLCAnVVRGLTgnKSAuICc8L3A+JzsKICAgICAgICAkY29uZmlybV9ib2R5IC49ICc8cD48c3Ryb25nPkFmZmVjdGVkIERvbWFpbjo8L3N0cm9uZz4gJyAuIGh0bWxzcGVjaWFsY2hhcnMoJGFmZmVjdGVkX2RvbWFpbiwgRU5UX1FVT1RFUywgJ1VURi04JykgLiAnPC9wPic7CiAgICAgICAgJGNvbmZpcm1fYm9keSAuPSAnPHA+PHN0cm9uZz5SZWNlaXZlZDo8L3N0cm9uZz4gJyAuIGRhdGUoJ1ktbS1kIEg6aTpzIFQnKSAuICc8L3A+JzsKICAgICAgICAkY29uZmlybV9ib2R5IC49ICc8aDM+V2hhdCBIYXBwZW5zIE5leHQ/PC9oMz4nOwogICAgICAgICRjb25maXJtX2JvZHkgLj0gJzxwPk91ciBzZWN1cml0eSB0ZWFtIHdpbGw6PC9wPic7CiAgICAgICAgJGNvbmZpcm1fYm9keSAuPSAnPHVsPic7CiAgICAgICAgJGNvbmZpcm1fYm9keSAuPSAnPGxpPkFja25vd2xlZGdlIHJlY2VpcHQgd2l0aGluIDQ4IGhvdXJzPC9saT4nOwogICAgICAgICRjb25maXJtX2JvZHkgLj0gJzxsaT5SZXZpZXcgYW5kIHZhbGlkYXRlIHRoZSB2dWxuZXJhYmlsaXR5PC9saT4nOwogICAgICAgICRjb25maXJtX2JvZHkgLj0gJzxsaT5Xb3JrIG9uIGEgZml4IGlmIHRoZSB2dWxuZXJhYmlsaXR5IGlzIGNvbmZpcm1lZDwvbGk+JzsKICAgICAgICAkY29uZmlybV9ib2R5IC49ICc8bGk+S2VlcCB5b3UgaW5mb3JtZWQgb2Ygb3VyIHByb2dyZXNzPC9saT4nOwogICAgICAgICRjb25maXJtX2JvZHkgLj0gJzwvdWw+JzsKICAgICAgICAkY29uZmlybV9ib2R5IC49ICc8cD5XZSBhcHByZWNpYXRlIHlvdXIgcmVzcG9uc2libGUgZGlzY2xvc3VyZSBhbmQgd2lsbCBjcmVkaXQgeW91IGFwcHJvcHJpYXRlbHkgdXBvbiByZXNvbHV0aW9uLjwvcD4nOwogICAgICAgICRjb25maXJtX2JvZHkgLj0gJzxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIHBsZWFzZSByZXBseSB0byB0aGlzIGVtYWlsLjwvcD4nOwogICAgICAgICRjb25maXJtX2JvZHkgLj0gJzxocj4nOwogICAgICAgICRjb25maXJtX2JvZHkgLj0gJzxwPjxzbWFsbD5UaGlzIGlzIGFuIGF1dG9tYXRlZCBjb25maXJtYXRpb24uIFBsZWFzZSBkbyBub3QgcmVwbHkgZGlyZWN0bHkgdG8gdGhpcyBtZXNzYWdlLjwvc21hbGw+PC9wPic7CiAgICAgICAgJGNvbmZpcm1fYm9keSAuPSAnPC9ib2R5PjwvaHRtbD4nOwogICAgICAgIAogICAgICAgICRtYWlsZXJfY29uZmlybSA9IG5ldyBjbXNfbWFpbGVyKEZBTFNFKTsKICAgICAgICAkbWFpbGVyX2NvbmZpcm0tPnJlc2V0KCk7CiAgICAgICAgJG1haWxlcl9jb25maXJtLT5BZGRBZGRyZXNzKCRyZXBvcnRlcl9lbWFpbCk7CiAgICAgICAgJG1haWxlcl9jb25maXJtLT5TZXRTdWJqZWN0KCRjb25maXJtX3N1YmplY3QpOwogICAgICAgICRtYWlsZXJfY29uZmlybS0+U2V0Qm9keSgkY29uZmlybV9ib2R5KTsKICAgICAgICAkbWFpbGVyX2NvbmZpcm0tPklzSFRNTChUUlVFKTsKICAgICAgICAkbWFpbGVyX2NvbmZpcm0tPlNldFByaW9yaXR5KDMpOyAvLyBOb3JtYWwgcHJpb3JpdHkKICAgICAgICAkbWFpbGVyX2NvbmZpcm0tPlNlbmQoKTsgLy8gRG9uJ3QgZmFpbCBpZiBjb25maXJtYXRpb24gZmFpbHMKICAgICAgICAKICAgICAgICAvLyBMb2cgc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uCiAgICAgICAgJHJlcG9ydF9pZCA9IHNlY3VyaXR5X2xvZ19ldmVudCgndnVsbmVyYWJpbGl0eV9yZXBvcnRfc3VibWl0dGVkJywgYXJyYXkoCiAgICAgICAgICAgICdpcCcgPT4gJGNsaWVudF9pcCwKICAgICAgICAgICAgJ3JlcG9ydGVyX2VtYWlsJyA9PiAkcmVwb3J0ZXJfZW1haWwsCiAgICAgICAgICAgICdyZXBvcnRlcl9uYW1lJyA9PiAkcmVwb3J0ZXJfbmFtZSwKICAgICAgICAgICAgJ3Z1bG5lcmFiaWxpdHlfdHlwZScgPT4gJHZ1bG5lcmFiaWxpdHlfdHlwZSwKICAgICAgICAgICAgJ2FmZmVjdGVkX2RvbWFpbicgPT4gJGFmZmVjdGVkX2RvbWFpbiwKICAgICAgICAgICAgJ2Rpc2Nsb3N1cmVfcHJlZmVyZW5jZScgPT4gJGRpc2Nsb3N1cmVfcHJlZmVyZW5jZSwKICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiBzdWJzdHIoJGRlc2NyaXB0aW9uLCAwLCA1MDApLCAvLyBGaXJzdCA1MDAgY2hhcnMgZm9yIHJlZmVyZW5jZQogICAgICAgICAgICAncmVwb3J0X2lkJyA9PiAnJyAvLyBXaWxsIGJlIHNldCBieSBzZWN1cml0eV9sb2dfZXZlbnQKICAgICAgICApKTsKICAgICAgICAKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdzdWNjZXNzJyA9PiB0cnVlLAogICAgICAgICAgICAnbWVzc2FnZScgPT4gJ1RoYW5rIHlvdSBmb3IgeW91ciByZXBvcnQuIFdlIGhhdmUgcmVjZWl2ZWQgaXQgYW5kIHdpbGwgcmVzcG9uZCB3aXRoaW4gNDggaG91cnMuJwogICAgICAgICk7CiAgICAgICAgCiAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICBzZWN1cml0eV9sb2dfZXZlbnQoJ2VtYWlsX2V4Y2VwdGlvbicsIGFycmF5KAogICAgICAgICAgICAnaXAnID0+ICRjbGllbnRfaXAsCiAgICAgICAgICAgICdyZXBvcnRlcl9lbWFpbCcgPT4gJHJlcG9ydGVyX2VtYWlsLAogICAgICAgICAgICAnZXJyb3InID0+ICRlLT5nZXRNZXNzYWdlKCkKICAgICAgICApKTsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdzdWNjZXNzJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ21lc3NhZ2UnID0+ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHlvdXIgcmVwb3J0LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicKICAgICAgICApOwogICAgfQp9Cgo/PgoK]]></data>
	</file>
</module>
